Explore
/
Sign In
/
Unknown
Unknown
Fork
Star
Artifacts
binary
binary_decompiled.c
0 lines
|
377.45 KB
#include "types-and-globals.h" #include "helpers.h" _ABI(SystemV_x86_64) void function_0x401000_Code_x86_64(void) { if (segment_3.got.offset_16) { ((cabifunction_210 *) segment_3.got.offset_16)(); } } _ABI(SystemV_x86_64) int32_t puts_2(const int8_t *str) { int32_t var_0; var_0 = puts(str); return var_0; } _ABI(SystemV_x86_64) int32_t fclose_2(FILE_6 *fp) { int32_t var_0; var_0 = fclose(fp); return var_0; } _ABI(SystemV_x86_64) void setbuf_2(FILE_4 *fp, int8_t *buf) { setbuf(fp, buf); } _ABI(SystemV_x86_64) int32_t printf_2(const int8_t *format) { int32_t var_0; var_0 = printf(format); return var_0; } _ABI(raw_x86_64) artificial_struct_returned_by_rawfunction_30 strcspn_2(pointer_or_number64_t register_rcx _REG(rcx_x86_64), pointer_or_number64_t register_rdx _REG(rdx_x86_64), pointer_or_number64_t register_rsi _REG(rsi_x86_64), pointer_or_number64_t register_rdi _REG(rdi_x86_64), pointer_or_number64_t register_r8 _REG(r8_x86_64), pointer_or_number64_t register_r9 _REG(r9_x86_64)) { pointer_or_number64_t var_0; pointer_or_number64_t var_1; artificial_struct_returned_by_rawfunction_30 var_2; var_2 = strcspn(register_rcx, register_rdx, register_rsi, register_rdi, register_r8, register_r9); var_1 = var_2.register_rax; var_0 = var_2.register_rdx; return (artificial_struct_returned_by_rawfunction_30) { var_1, var_0 }; } _ABI(SystemV_x86_64) void srand_2(uint32_t x) { srand(x); } _ABI(SystemV_x86_64) int8_t *fgets_2(int8_t *buf, int32_t n, FILE_4 *fp) { int8_t *var_0; var_0 = fgets(buf, n, fp); return var_0; } _ABI(SystemV_x86_64) int64_t strtol_2(const int8_t *nptr, int8_t **endptr, int32_t base) { int64_t var_0; var_0 = strtol(nptr, endptr, base); return var_0; } _ABI(raw_x86_64) artificial_struct_returned_by_rawfunction_30 time_2(pointer_or_number64_t register_rcx _REG(rcx_x86_64), pointer_or_number64_t register_rdx _REG(rdx_x86_64), pointer_or_number64_t register_rsi _REG(rsi_x86_64), pointer_or_number64_t register_rdi _REG(rdi_x86_64), pointer_or_number64_t register_r8 _REG(r8_x86_64), pointer_or_number64_t register_r9 _REG(r9_x86_64)) { pointer_or_number64_t var_0; pointer_or_number64_t var_1; artificial_struct_returned_by_rawfunction_30 var_2; var_2 = time(register_rcx, register_rdx, register_rsi, register_rdi, register_r8, register_r9); var_1 = var_2.register_rax; var_0 = var_2.register_rdx; return (artificial_struct_returned_by_rawfunction_30) { var_1, var_0 }; } _ABI(SystemV_x86_64) FILE_4 *fopen_2(const int8_t *filename, const int8_t *mode) { FILE_4 *var_0; var_0 = fopen(filename, mode); return var_0; } _ABI(SystemV_x86_64) int32_t rand_2(void) { int32_t var_0; var_0 = rand(); return var_0; } _ABI(SystemV_x86_64) uint16_t **__ctype_b_loc_2(void) { uint16_t **var_0; var_0 = __ctype_b_loc(); return var_0; } _ABI(SystemV_x86_64) generic64_t main_(void) { struct_182 stack; uint64_t loop_state_var; int32_t var_0; pointer_or_number64_t var_1; pointer_or_number64_t var_2; generic64_t var_3; generic64_t var_4; generic64_t var_5; artificial_struct_returned_by_rawfunction_30 var_6; setbuf_2((FILE_4 *) segment_3.bss.stdout, (int8_t *) NULL); setbuf_2((FILE_4 *) segment_3.bss.stdin, (int8_t *) NULL); var_6 = time_2(undef(generic64_t), undef(generic64_t), 0, 0, undef(generic64_t), undef(generic64_t)); var_2 = var_6.register_rax; var_1 = var_6.register_rdx; srand_2((number32_t) var_2); var_0 = rand_2(); var_5 = (((uint32_t) var_0 >> 31) + (number32_t) ((int64_t) ((number64_t) var_0 * 274877907) >> 38)) * (number32_t) -1000 + (pointer_or_number32_t) var_0 + 31000; var_3 = 2; var_4 = 1; loop_state_var = 0; uint16_t **var_7; generic64_t var_8; generic64_t var_9; while (true) { generic8_t var_10; generic64_t var_11; generic64_t var_12; generic32_t var_13; generic64_t var_14; generic64_t var_15; generic64_t var_16; generic64_t var_17; generic64_t var_18; generic64_t var_19; if (!(loop_state_var)) { generic64_t var_20; var_20 = !(var_5 & 0x80000000) ? 0 : 18446744069414584320U; if (!((int64_t) ((var_5 & 0xFFFFFFFF) | var_20) / (int64_t) ((int64_t) ((number64_t) var_3 << 32) >> 32) < 2147483648 || (int64_t) ((var_5 & 0xFFFFFFFF) | var_20) / (int64_t) ((int64_t) ((number64_t) var_3 << 32) >> 32) > (uint64_t) -2147483649)) { raise_exception_ra(NULL, 0, llvm_returnaddress(0)); } var_18 = var_5; var_19 = var_3; if (!(((int64_t) ((var_5 & 0xFFFFFFFF) | var_20) % (int64_t) ((int64_t) ((number64_t) var_3 << 32) >> 32)) & 0xFFFFFFFF)) { var_17 = var_18; while (true) { if (!(number32_t) var_19) { raise_exception_ra(NULL, 0, llvm_returnaddress(0)); } else { var_12 = !(var_17 & 0x80000000) ? 0 : 18446744069414584320U; if ((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32) < 2147483648 || (int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32) > (uint64_t) -2147483649) { var_11 = !(((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0x80000000) ? 0 : 18446744069414584320U; if ((int64_t) ((((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0xFFFFFFFF) | var_11) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32) < 2147483648 || (int64_t) ((((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0xFFFFFFFF) | var_11) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32) > (uint64_t) -2147483649) { var_10 = !(((int64_t) ((((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0xFFFFFFFF) | var_11) % (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0xFFFFFFFF); var_17 = ((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0xFFFFFFFF; if (var_10) { continue; } break; } raise_exception_ra(NULL, 0, llvm_returnaddress(0)); } else { raise_exception_ra(NULL, 0, llvm_returnaddress(0)); } } } var_15 = var_19 & 0xFFFFFFFF; var_13 = (number32_t) var_19; var_14 = var_17; var_16 = var_19; } else { var_13 = (number32_t) var_3; var_14 = var_5; var_15 = var_4; var_16 = var_3; } } else { var_17 = var_18; while (true) { if (!(number32_t) var_19) { raise_exception_ra(NULL, 0, llvm_returnaddress(0)); } else { var_12 = !(var_17 & 0x80000000) ? 0 : 18446744069414584320U; if ((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32) < 2147483648 || (int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32) > (uint64_t) -2147483649) { var_11 = !(((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0x80000000) ? 0 : 18446744069414584320U; if ((int64_t) ((((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0xFFFFFFFF) | var_11) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32) < 2147483648 || (int64_t) ((((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0xFFFFFFFF) | var_11) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32) > (uint64_t) -2147483649) { var_10 = !(((int64_t) ((((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0xFFFFFFFF) | var_11) % (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0xFFFFFFFF); var_17 = ((int64_t) ((var_17 & 0xFFFFFFFF) | var_12) / (int64_t) ((int64_t) ((number64_t) var_19 << 32) >> 32)) & 0xFFFFFFFF; if (var_10) { continue; } break; } raise_exception_ra(NULL, 0, llvm_returnaddress(0)); } else { raise_exception_ra(NULL, 0, llvm_returnaddress(0)); } } } var_15 = var_19 & 0xFFFFFFFF; var_13 = (number32_t) var_19; var_14 = var_17; var_16 = var_19; } generic64_t var_21; var_21 = var_16; if (var_13 == 2) { if ((int32_t) (number32_t) var_14 > (int32_t) 8) { var_21 = 3; var_19 = 3; if (!(((var_14 * 2863311531 + 715827882) & 0xFFFFFFFF) > 1431655764)) { loop_state_var = 1; continue; } if (!((int64_t) ((number64_t) ((var_21 + 2) * (var_21 + 2)) << 32) > (int64_t) ((number64_t) var_14 << 32))) { var_3 = (var_21 + 2) & 0xFFFFFFFF; if (var_3) { loop_state_var = 0; continue; } raise_exception_ra(NULL, 0, llvm_returnaddress(0)); } } } else { if (!((int64_t) ((number64_t) ((var_21 + 2) * (var_21 + 2)) << 32) > (int64_t) ((number64_t) var_14 << 32))) { var_3 = (var_21 + 2) & 0xFFFFFFFF; if (var_3) { loop_state_var = 0; continue; } raise_exception_ra(NULL, 0, llvm_returnaddress(0)); } } int8_t *var_22; int32_t var_23; var_23 = printf_2((const int8_t *) "If x = %d, then n = ? "); var_22 = fgets_2((int8_t *) &stack.offset_0, (int32_t) 100, (FILE_4 *) segment_3.bss.stdin); if (!var_22) { int32_t var_24; var_24 = puts_2((const int8_t *) "ERR :("); var_8 = 1; break; } pointer_or_number64_t var_25; pointer_or_number64_t var_26; generic64_t var_27; artificial_struct_returned_by_rawfunction_30 var_28; var_27 = (int32_t) (number32_t) var_14 > (int32_t) 1 ? var_14 : var_15; var_28 = strcspn_2(var_27 & 0xFFFFFFFF, segment_3.bss.stdin, (pointer_or_number64_t) "\n", (pointer_or_number64_t) &stack, undef(generic64_t), undef(generic64_t)); var_26 = var_28.register_rax; var_25 = var_28.register_rdx; *(generic8_t *) (var_26 + (pointer_or_number64_t) &stack) = '\000'; if (!stack.offset_0) { loop_state_var = 1; } else { var_7 = __ctype_b_loc_2(); if ((*(generic8_t *) ((pointer_or_number64_t) &(*var_7)[(number64_t) stack.offset_0] + 1) & 0x8)) { var_9 = 0; loop_state_var = 2; break; } loop_state_var = 1; } break; } int32_t var_29; if (loop_state_var == 1) { var_29 = puts_2((const int8_t *) "Invalid input! Please enter a valid input!"); var_8 = 1; } else { FILE_4 *var_30; while (true) { if (*(generic8_t *) ((pointer_or_number64_t) &stack.offset_1 + var_9 * 1)) { generic8_t var_31; var_31 = !(*(generic8_t *) ((pointer_or_number64_t) &(*var_7)[(number64_t) *(generic8_t *) ((pointer_or_number64_t) &stack.offset_1 + var_9 * 1)] + 1) & 0x8); var_9 = var_9 + 1; if (!(var_31)) { continue; } var_29 = puts_2((const int8_t *) "Invalid input! Please enter a valid input!"); var_8 = 1; break; } int64_t var_32; var_32 = strtol_2((const int8_t *) &stack.offset_0, (int8_t **) NULL, (int32_t) 10); if ((((uint32_t) var_0 >> 31) + (number32_t) ((int64_t) ((number64_t) var_0 * 274877907) >> 38)) * (number32_t) -1000 + (pointer_or_number32_t) var_0 + 31000 == (number32_t) var_32) { var_30 = fopen_2((const int8_t *) "flag.txt", (const int8_t *) "r"); if (var_30) { int8_t *var_33; int32_t var_34; var_34 = printf_2((const int8_t *) "Congratz! You got the flag: "); var_33 = fgets_2((int8_t *) ((pointer_or_number64_t) &stack.offset_1 + 111), (int32_t) 256, var_30); if (!var_33) { break; } loop_state_var = 1; break; } int32_t var_35; var_35 = puts_2((const int8_t *) "ERR: Could not open flag.txt"); var_8 = 0; } else { int32_t var_36; var_36 = puts_2((const int8_t *) "Your input is NOT correct! Bye!!"); var_8 = 0; } break; } switch (loop_state_var) { case 0: case 1: { if (loop_state_var == 1) { int8_t *var_37; int32_t var_38; do { var_38 = printf_2((const int8_t *) "%s"); var_37 = fgets_2((int8_t *) ((pointer_or_number64_t) &stack.offset_1 + 111), (int32_t) 256, var_30); } while (var_37); } int32_t var_39; var_39 = fclose_2((FILE_6 *) var_30); var_8 = 0; } break; } } return var_8; } _ABI(SystemV_x86_64) _Noreturn void function_0x401340_Code_x86_64(generic64_t argument_0, generic64_t argument_1, struct_183 *argument_2) { int32_t var_0; var_0 = __libc_start_main((cabifunction_34 *) main_, (int32_t) (number32_t) *(generic64_t *) revng_undefined_local_sp(), (int8_t **) (revng_undefined_local_sp() + 8), (cabifunction_34 *) NULL, (cabifunction_33 *) NULL, (cabifunction_33 *) argument_2, (void *) revng_undefined_local_sp()); // The previous function call does not return } _ABI(SystemV_x86_64) void function_0x401534_Code_x86_64(void) { }
Loading...