Explore
/
Sign In
/
Unknown
Unknown
Fork
Star
Artifacts
function
main
decompiled.c
0 lines
|
648.67 KB
_ABI(SystemV_x86_64) _Noreturn void main(struct_210 argument_0) { struct_212 stack; uint64_t loop_state_var; generic64_t var_0; stack.offset_34056 = (pointer_or_number64_t) &segment_2.rodata.offset_624 + 32; var_0 = (pointer_or_number64_t) &stack.offset_34016 + 16; generic8_t var_1; do { var_1 = var_0 == (pointer_or_number64_t) &stack.offset_704 + 4656; var_0 = var_0 - 4096; } while (!(var_1)); FILE_4 *var_2; pointer_or_number64_t var_3; pointer_or_number64_t var_4; generic32_t *var_5; generic64_t var_6; generic64_t var_7; generic64_t var_8; artificial_struct_returned_by_rawfunction_32 var_9; stack.offset_34016 = *(generic64_t *) 40; stack.offset_24 = &stack.offset_40; var_9 = memset_2(undef(generic64_t), 33864, 0, (pointer_or_number64_t) &stack.offset_40, undef(generic64_t), undef(generic64_t)); var_4 = var_9.register_rax; var_3 = var_9.register_rdx; stack.offset_32 = &stack.offset_33644; stack.offset_33644 = 7017785192508321646; stack.offset_33652 = 116; var_2 = fopen_2((const int8_t *) &stack.offset_33644, (const int8_t *) "rb"); if (!var_2) { perror_2((const int8_t *) "Error opening file for reading"); var_5 = &stack.offset_33640; var_7 = var_3; var_8 = "rb"; } else { size_t var_10; var_10 = fread_2(&stack.offset_33640, 4, 1, var_2); if (var_10 == 1) { if (stack.offset_33640 > 100) { int32_t var_11; int32_t var_12; var_6 = stack.offset_33640; var_12 = __fprintf_chk_2((FILE_4 *) segment_3.bss.offset_32, (int32_t) 2, (const int8_t *) "Corrupted file: invalid count %d\n"); var_11 = fclose_2((FILE_6 *) var_2); var_5 = &stack.offset_33640; var_7 = "Corrupted file: invalid count %d\n"; var_8 = 2; } else { size_t var_13; var_13 = fread_2(stack.offset_24, 336, (size_t) stack.offset_33640, var_2); if (var_13 == (pointer_or_number64_t) stack.offset_33640) { int32_t var_14; int32_t var_15; var_15 = fclose_2((FILE_6 *) var_2); var_7 = stack.offset_33640; var_6 = stack.offset_32; var_14 = __printf_chk_2((int32_t) 2, (const int8_t *) "Loaded %d notes from %s\n"); var_5 = &stack.offset_33640; var_8 = "Loaded %d notes from %s\n"; } else { int32_t var_16; perror_2((const int8_t *) "Error reading notes"); var_16 = fclose_2((FILE_6 *) var_2); var_5 = &stack.offset_33640; var_6 = var_2; var_7 = var_13; var_8 = 336; } } } else { int32_t var_17; perror_2((const int8_t *) "Error reading count"); var_17 = fclose_2((FILE_6 *) var_2); var_5 = &stack.offset_33640; var_6 = var_2; var_7 = 1; var_8 = 4; } } generic64_t var_18; generic64_t var_19; generic64_t var_20; var_18 = var_6; var_19 = var_7; var_20 = var_8; while (true) { int32_t var_21; struct_275 var_22; int32_t var_23; int32_t var_24; int32_t var_25; int32_t var_26; int32_t var_27; int32_t var_28; generic64_t var_29; generic64_t var_30; generic64_t var_31; generic64_t var_32; generic64_t var_33; generic64_t var_34; generic64_t var_35; var_28 = puts_2((const int8_t *) "\n=== Notebook ==="); var_27 = puts_2((const int8_t *) "1. Add note"); var_26 = puts_2((const int8_t *) "2. List notes"); var_25 = puts_2((const int8_t *) "3. Delete note"); var_24 = puts_2((const int8_t *) "4. Search notes"); var_23 = puts_2((const int8_t *) "5. Quit"); var_22 = get_int_input((generic64_t) "Choice: ", var_20, var_19, var_18, var_34, var_35); if ((var_22.offset_0 & 0xFFFFFFFE) > 5) { var_21 = puts_2((const int8_t *) "Invalid choice."); var_29 = var_34; var_30 = var_35; var_31 = var_18; var_32 = var_22.offset_8; var_33 = var_20; continue; } switch ((number64_t) *(generic32_t *) ((pointer_or_number64_t) &segment_2.rodata.offset_624 + 32 + ((var_22.offset_0 << 2) & 0x3FFFFFFFC) * 1)) { case 18446744073709548144U: { FILE_4 *var_36; var_36 = fopen_2((const int8_t *) stack.offset_32, (const int8_t *) "wb"); if (!var_36) { perror_2((const int8_t *) "Error opening file for writing"); } else { size_t var_37; var_37 = fwrite_2(var_5, 4, 1, var_36); if (var_37 == 1) { size_t var_38; var_38 = fwrite_2(stack.offset_24, 336, (size_t) *var_5, var_36); if (var_38 == (pointer_or_number64_t) *var_5) { int32_t var_39; var_39 = fclose_2((FILE_6 *) var_36); if (!var_39) { int32_t var_40; var_40 = __printf_chk_2((int32_t) 2, (const int8_t *) "Saved %d notes to %s\n"); } else { perror_2((const int8_t *) "Error closing file"); } } else { int32_t var_41; perror_2((const int8_t *) "Error writing notes"); var_41 = fclose_2((FILE_6 *) var_36); } } else { int32_t var_42; perror_2((const int8_t *) "Error writing count"); var_42 = fclose_2((FILE_6 *) var_36); } } int32_t var_43; var_43 = puts_2((const int8_t *) "Goodbye."); if (stack.offset_34016 != *(generic64_t *) 40) { __stack_chk_fail_2(); } revng_abort("A longjmp was taken"); } break; case 18446744073709548360U: case 18446744073709548640U: case 18446744073709548800U: case 18446744073709549168U: case 18446744073709549327U: { switch ((number64_t) *(generic32_t *) ((pointer_or_number64_t) &segment_2.rodata.offset_624 + 32 + ((var_22.offset_0 << 2) & 0x3FFFFFFFC) * 1)) { case 18446744073709549327U: { var_21 = puts_2((const int8_t *) "Invalid choice."); var_29 = var_34; var_30 = var_35; var_31 = var_18; var_32 = var_22.offset_8; var_33 = var_20; } break; case 18446744073709548360U: { int8_t *var_44; int32_t var_45; var_45 = __printf_chk_2((int32_t) 2, (const int8_t *) "Search: "); var_32 = segment_3.bss.offset_0; var_44 = fgets_2((int8_t *) ((pointer_or_number64_t) &stack.offset_33652 + 292), (int32_t) 64, (FILE_4 *) var_32); var_29 = var_34; var_30 = var_35; var_31 = var_18; var_33 = 64; if (var_44) { pointer_or_number64_t var_46; pointer_or_number64_t var_47; artificial_struct_returned_by_rawfunction_32 var_48; var_48 = strlen_2(var_18, segment_3.bss.offset_0, 64, (pointer_or_number64_t) &stack.offset_33652 + 292, var_34, var_35); var_47 = var_48.register_rax; var_46 = var_48.register_rdx; if (var_47) { if (*(generic8_t *) ((pointer_or_number64_t) &stack.offset_33652 + 292 + var_47 * 1 - 1) == '\n') { *(generic8_t *) ((pointer_or_number64_t) &stack.offset_33652 + 292 + var_47 * 1 - 1) = '\000'; } } generic64_t var_49; generic64_t var_50; generic8_t var_51; generic64_t var_52; generic64_t var_53; generic64_t var_54; stack.offset_20 = 0; var_51 = bit_parity((number8_t) *var_5); var_50 = !*var_5 ? 64 : 0; var_49 = lshift((uint64_t) *var_5, 4294967272); var_52 = var_34; var_53 = var_35; var_54 = var_18; if ((var_50 | var_51 | (var_49 & 0x80)) < 64) { generic64_t var_55; generic64_t var_56; generic64_t var_57; generic64_t var_58; generic64_t var_59; generic64_t var_60; pointer_or_number64_t var_61; var_56 = (pointer_or_number64_t) &stack.offset_40 + 4; var_55 = 0; var_57 = var_34; var_58 = var_35; var_59 = 0; var_60 = var_18; var_61 = var_46; generic64_t var_62; generic64_t var_63; generic64_t var_64; generic64_t var_65; generic64_t var_66; while (true) { pointer_or_number64_t var_67; pointer_or_number64_t var_68; artificial_struct_returned_by_rawfunction_32 var_69; var_69 = strstr_2(var_60, var_61, (pointer_or_number64_t) &stack.offset_33652 + 292, var_56, var_57, var_58); var_68 = var_69.register_rax; var_67 = var_69.register_rdx; if (!var_68) { pointer_or_number64_t var_70; pointer_or_number64_t var_71; artificial_struct_returned_by_rawfunction_32 var_72; var_72 = strstr_2(var_60, var_67, (pointer_or_number64_t) &stack.offset_33652 + 292, (pointer_or_number64_t) &stack.offset_40 + 68 + var_55 * 336, var_57, var_58); var_71 = var_72.register_rax; var_70 = var_72.register_rdx; var_65 = var_70; var_66 = (pointer_or_number64_t) &stack.offset_33652 + 292; var_62 = var_57; var_63 = var_58; var_64 = var_60; if (!var_71) { if (!((int64_t) ((number64_t) (var_59 + 1) << 32) < (int64_t) ((number64_t) *var_5 << 32))) { break; } var_56 = var_56 + 336; var_59 = (var_59 + 1) & 0xFFFFFFFF; var_55 = var_55 + 1; continue; } } int32_t var_73; size_t var_74; tm *var_75; var_75 = localtime_2((const time_t *) ((pointer_or_number64_t) &stack.offset_40.offset_328 + var_55 * 336)); var_74 = strftime_2((int8_t *) ((pointer_or_number64_t) &stack.offset_33652 + 260), 32, (const int8_t *) "%Y-%m-%d %H:%M", var_75); *(generic64_t *) ((pointer_or_number64_t) &stack - 8) = (pointer_or_number64_t) &stack.offset_40 + 68 + var_55 * 336; var_62 = *(generic32_t *) ((pointer_or_number64_t) &stack.offset_40.offset_324 + var_55 * 336); var_73 = __printf_chk_2((int32_t) 2, (const int8_t *) "[%d] %s (prio %d, %s)\n %s\n"); var_65 = *(generic64_t *) ((pointer_or_number64_t) &stack - 8); var_64 = stack.offset_0; stack.offset_20 = 1; var_63 = (pointer_or_number64_t) &stack.offset_33652 + 260; var_66 = "[%d] %s (prio %d, %s)\n %s\n"; if (!((int64_t) ((number64_t) (var_59 + 1) << 32) < (int64_t) ((number64_t) *var_5 << 32))) { break; } var_56 = var_56 + 336; var_59 = (var_59 + 1) & 0xFFFFFFFF; var_55 = var_55 + 1; } var_29 = var_62; var_30 = var_63; var_31 = var_64; var_32 = var_65; var_33 = var_66; var_52 = var_62; var_53 = var_63; var_54 = var_64; if (stack.offset_20) { continue; } } int32_t var_76; var_29 = var_52; var_30 = var_53; var_31 = var_54; var_76 = __printf_chk_2((int32_t) 2, (const int8_t *) "No matches for '%s'\n"); var_32 = (pointer_or_number64_t) &stack.offset_33652 + 292; var_33 = "No matches for '%s'\n"; } } break; case 18446744073709548640U: { int32_t var_77; generic64_t var_78; generic64_t var_79; generic8_t var_80; struct_275 var_81; var_81 = get_int_input((generic64_t) "Note id to delete: ", var_20, var_22.offset_8, var_18, var_34, var_35); var_80 = bit_parity((number8_t) *var_5); var_79 = !*var_5 ? 64 : 0; var_78 = lshift(*var_5, 4294967272); if ((var_79 | var_80 | (var_78 & 0x80)) < 64) { generic64_t var_82; var_82 = 0; if (stack.offset_24->offset_0 != (number32_t) var_81.offset_0) { generic64_t var_83; var_83 = 0; while (true) { if ((number32_t) var_83 + 1 != *var_5) { generic8_t var_84; var_84 = *(generic32_t *) ((pointer_or_number64_t) &stack.offset_24->offset_336 + var_83 * 336) == (number32_t) var_81.offset_0; var_83 = var_83 + 1; if (!(var_84)) { continue; } break; } loop_state_var = 0; break; } if (!(loop_state_var)) { var_77 = __fprintf_chk_2((FILE_4 *) segment_3.bss.offset_32, (int32_t) 2, (const int8_t *) "Note with id %d not found\n"); var_31 = var_81.offset_0 & 0xFFFFFFFF; var_29 = var_34; var_30 = var_35; var_32 = "Note with id %d not found\n"; var_33 = 2; continue; } var_82 = var_83 & 0xFFFFFFFF; } if ((int64_t) ((number64_t) (*var_5 + 4294967295) << 32) > (int64_t) ((number64_t) var_82 << 32)) { pointer_or_number64_t var_85; pointer_or_number64_t var_86; artificial_struct_returned_by_rawfunction_32 var_87; var_87 = memmove_2(*var_5, (*var_5 - 2 - (number32_t) var_82) * 336 + 336, (pointer_or_number64_t) &stack.offset_24->offset_336 + ((int64_t) ((number64_t) var_82 << 32) >> 32) * 336, ((int64_t) ((number64_t) var_82 << 32) >> 32) * 336 + (pointer_or_number64_t) stack.offset_24, var_34, var_35); var_86 = var_87.register_rax; var_85 = var_87.register_rdx; } int32_t var_88; *var_5 = (number32_t) (*var_5 + 4294967295); var_88 = __printf_chk_2((int32_t) 2, (const int8_t *) "Deleted note %d\n"); var_32 = var_81.offset_0 & 0xFFFFFFFF; var_29 = var_34; var_30 = var_35; var_31 = *var_5; var_33 = "Deleted note %d\n"; } else { var_77 = __fprintf_chk_2((FILE_4 *) segment_3.bss.offset_32, (int32_t) 2, (const int8_t *) "Note with id %d not found\n"); var_31 = var_81.offset_0 & 0xFFFFFFFF; var_29 = var_34; var_30 = var_35; var_32 = "Note with id %d not found\n"; var_33 = 2; } } break; case 18446744073709548800U: { if ((int32_t) *var_5 > (int32_t) 99) { size_t var_89; var_31 = segment_3.bss.offset_32; var_89 = fwrite_2("Error: notebook is full\n", 1, 24, (FILE_4 *) var_31); var_29 = var_34; var_30 = var_35; var_32 = 24; var_33 = 1; } else { int8_t *var_90; int32_t var_91; *(generic32_t *) ((pointer_or_number64_t) &stack.offset_40 + (number64_t) *var_5 * 336) = *var_5 + 1; var_91 = __printf_chk_2((int32_t) 2, (const int8_t *) "Title: "); var_31 = segment_3.bss.offset_0; var_33 = llvm_umin_i64(llvm_umax_i64(((number64_t) *var_5 * 336) | 0x4, 33864) - (number64_t) *var_5 * 336 - 4, 64); var_90 = __fgets_chk_2((int8_t *) ((((number64_t) *var_5 * 336) | 0x4) + (pointer_or_number64_t) stack.offset_24), var_33, (int32_t) 64, (FILE_4 *) var_31); var_29 = var_34; var_30 = var_35; var_32 = 64; if (var_90) { pointer_or_number64_t var_92; pointer_or_number64_t var_93; artificial_struct_returned_by_rawfunction_32 var_94; var_94 = strlen_2(segment_3.bss.offset_0, 64, llvm_umin_i64(llvm_umax_i64(((number64_t) *var_5 * 336) | 0x4, 33864) - (number64_t) *var_5 * 336 - 4, 64), (((number64_t) *var_5 * 336) | 0x4) + (pointer_or_number64_t) stack.offset_24, var_34, var_35); var_93 = var_94.register_rax; var_92 = var_94.register_rdx; if (var_93) { if (*(generic8_t *) (var_93 + ((((number64_t) *var_5 * 336) | 0x4) + (pointer_or_number64_t) stack.offset_24) - 1) == '\n') { *(generic8_t *) (var_93 + ((((number64_t) *var_5 * 336) | 0x4) + (pointer_or_number64_t) stack.offset_24) - 1) = '\000'; } } int8_t *var_95; int32_t var_96; var_96 = __printf_chk_2((int32_t) 2, (const int8_t *) "Content: "); var_31 = segment_3.bss.offset_0; var_33 = llvm_umin_i64(llvm_umax_i64((number64_t) *var_5 * 336 + 68, 33864) - (number64_t) *var_5 * 336 - 68, 256); var_95 = __fgets_chk_2((int8_t *) ((number64_t) *var_5 * 336 + 68 + (pointer_or_number64_t) stack.offset_24), var_33, (int32_t) 256, (FILE_4 *) var_31); var_29 = var_34; var_30 = var_35; var_32 = 256; if (var_95) { pointer_or_number64_t var_97; pointer_or_number64_t var_98; artificial_struct_returned_by_rawfunction_32 var_99; var_99 = strlen_2(segment_3.bss.offset_0, 256, llvm_umin_i64(llvm_umax_i64((number64_t) *var_5 * 336 + 68, 33864) - (number64_t) *var_5 * 336 - 68, 256), (number64_t) *var_5 * 336 + 68 + (pointer_or_number64_t) stack.offset_24, var_34, var_35); var_98 = var_99.register_rax; var_97 = var_99.register_rdx; if (var_98) { if (*(generic8_t *) (var_98 + ((number64_t) *var_5 * 336 + 68 + (pointer_or_number64_t) stack.offset_24) - 1) == '\n') { *(generic8_t *) (var_98 + ((number64_t) *var_5 * 336 + 68 + (pointer_or_number64_t) stack.offset_24) - 1) = '\000'; } } struct_275 var_100; generic64_t var_101; generic64_t var_102; generic64_t var_103; var_100 = get_int_input((generic64_t) "Priority (1-5): ", llvm_umin_i64(llvm_umax_i64((number64_t) *var_5 * 336 + 68, 33864) - (number64_t) *var_5 * 336 - 68, 256), var_97, segment_3.bss.offset_0, var_34, var_35); var_102 = var_100.offset_8; *(generic32_t *) ((pointer_or_number64_t) &stack.offset_40.offset_324 + (number64_t) *var_5 * 336) = (number32_t) var_100.offset_0; var_101 = segment_3.bss.offset_0; var_103 = llvm_umin_i64(llvm_umax_i64((number64_t) *var_5 * 336 + 68, 33864) - (number64_t) *var_5 * 336 - 68, 256); if (((var_100.offset_0 + 4294967295) & 0xFFFFFFFF) > 4) { size_t var_104; var_101 = segment_3.bss.offset_32; var_104 = fwrite_2("Invalid priority, setting to 1\n", 1, 31, (FILE_4 *) var_101); *(generic32_t *) ((pointer_or_number64_t) &stack.offset_40.offset_324 + (number64_t) *var_5 * 336) = 1; var_102 = 31; var_103 = 1; } int32_t var_105; pointer_or_number64_t var_106; pointer_or_number64_t var_107; artificial_struct_returned_by_rawfunction_32 var_108; var_31 = var_101; var_108 = time_2(var_31, var_102, var_103, 0, var_34, var_35); var_107 = var_108.register_rax; var_106 = var_108.register_rdx; *var_5 = *var_5 + 1; *(pointer_or_number64_t *) ((pointer_or_number64_t) &stack.offset_40.offset_328 + (number64_t) *var_5 * 336) = var_107; var_32 = *(generic32_t *) ((pointer_or_number64_t) &stack.offset_40 + (number64_t) *var_5 * 336); var_105 = __printf_chk_2((int32_t) 2, (const int8_t *) "Note added with id %d\n"); var_29 = var_34; var_30 = var_35; var_33 = "Note added with id %d\n"; } } } } break; case 18446744073709549168U: { if (!*var_5) { int32_t var_109; var_109 = puts_2((const int8_t *) "No notes."); var_29 = var_34; var_30 = *var_5; var_31 = var_18; var_32 = var_22.offset_8; var_33 = var_20; } else { generic64_t var_110; generic8_t var_111; var_111 = bit_parity((number8_t) *var_5); var_110 = lshift(*var_5, 4294967272); var_29 = var_34; var_30 = *var_5; var_31 = var_18; var_32 = var_22.offset_8; var_33 = var_20; if (!((var_110 & 0x80) | (var_111 & 0xC0))) { generic64_t var_112; generic64_t var_113; generic64_t var_114; var_114 = &stack.offset_40.offset_328; var_112 = 0; var_113 = 0; int32_t var_115; size_t var_116; tm *var_117; var_117 = localtime_2((const time_t *) var_114); var_116 = strftime_2((int8_t *) ((pointer_or_number64_t) &stack.offset_33652 + 292), 32, (const int8_t *) "%Y-%m-%d %H:%M", var_117); *(generic64_t *) ((pointer_or_number64_t) &stack - 8) = (pointer_or_number64_t) &stack.offset_40 + 68 + var_112 * 336; var_115 = __printf_chk_2((int32_t) 2, (const int8_t *) "[%d] %s (prio %d, %s)\n %s\n"); while ((int64_t) ((number64_t) (var_113 + 1) << 32) < (int64_t) ((number64_t) *var_5 << 32)) { var_114 = var_114 + 336; var_113 = (var_113 + 1) & 0xFFFFFFFF; var_112 = var_112 + 1; var_117 = localtime_2((const time_t *) var_114); var_116 = strftime_2((int8_t *) ((pointer_or_number64_t) &stack.offset_33652 + 292), 32, (const int8_t *) "%Y-%m-%d %H:%M", var_117); *(generic64_t *) ((pointer_or_number64_t) &stack - 8) = (pointer_or_number64_t) &stack.offset_40 + 68 + var_112 * 336; var_115 = __printf_chk_2((int32_t) 2, (const int8_t *) "[%d] %s (prio %d, %s)\n %s\n"); } var_32 = *(generic32_t *) ((pointer_or_number64_t) &stack.offset_40 + var_112 * 336); var_31 = var_114 - 324; var_29 = stack.offset_0; var_30 = (pointer_or_number64_t) &stack.offset_33652 + 292; var_33 = "[%d] %s (prio %d, %s)\n %s\n"; } } } break; } continue; } break; default: { } break; } } }
Loading...