Function at 0x403420
Capabilities:
Execute command

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x407632
mov eax, dword fs:[0]
push eax
sub esp, 0x2f8
mov eax, dword [0x40c040]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
push 0xb8
lea eax, [ebp - 0x250]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 4
lea ecx, [ebp - 0x250]
push 1
push str.._files_venit.pg
call fcn.004048d0
lea edi, [esi + 4]
mov dword [ebp - 4], 0
push edi
lea ecx, [ebp - 0x250]
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______thiscall_std::basic_istream_char__struct_std::char_traits_char__::operator___int__]
lea ecx, [ebp - 0x240]
call fcn.00405960
test eax, eax
jne 0x4034b5
push eax
mov eax, dword [ebp - 0x250]
lea ecx, [ebp - 0x250]
push 2
add ecx, dword [eax + 4]
call dword [sym.imp.MSVCP140.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool_]
push 0xb8
lea eax, [ebp - 0x198]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 4
lea ecx, [ebp - 0x198]
push 1
push str.._files_buget.pg
call fcn.004048d0
push esi
lea ecx, [ebp - 0x198]
mov byte [ebp - 4], 1
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______thiscall_std::basic_istream_char__struct_std::char_traits_char__::operator___int__]
lea ecx, [ebp - 0x188]
call fcn.00405960
test eax, eax
jne 0x403515
push eax
mov eax, dword [ebp - 0x198]
lea ecx, [ebp - 0x198]
push 2
add ecx, dword [eax + 4]
call dword [sym.imp.MSVCP140.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool_]
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.e_33m
call fcn.00405c30
push dword [edi]
mov edx, str.Money:
push ecx
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.00405c30
add esp, 4
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___int_]
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.e_34m
call fcn.00405c30
push dword [esi]
mov edx, str.______Budget:
push ecx
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.00405c30
add esp, 4
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___int_]
mov ecx, eax
call fcn.00405e50
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.e_31m
call fcn.00405c30
mov ecx, dword [edi]
mov eax, dword [esi]
cmp ecx, eax
jl 0x403597
mov edx, str.All_good__n
jmp 0x4035bf
cdq
sub eax, edx
sar eax, 1
cmp ecx, eax
jg 0x4035ab
test ecx, ecx
jle 0x4035ad
mov edx, str.Your_income_is_kind_of_low__n
jmp 0x4035bf
test ecx, ecx
jne 0x4035b6
mov edx, str.Youre_on_the_verge_of_bankruptcy_n
jmp 0x4035bf
test ecx, ecx
jns 0x4035ca
mov edx, str.Youre_in_debt__n
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.e_37m
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.00405e50
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, 0x408bf8
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.e_32m
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
lea eax, [ebp - 0x30]
push 0
push 0x15
push eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______thiscall_std::basic_istream_char__struct_std::char_traits_char__::getline_char___long_long___int64__]
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.e_37m
call fcn.00405c30
mov edi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
lea eax, [ebp - 0x30]
push 6
push str.income
push eax
call edi
add esp, 0xc
test eax, eax
jne 0x40364f
mov ecx, esi
call fcn.00401240
jmp 0x403b44
push 7
lea eax, [ebp - 0x30]
push str.expense
push eax
call edi
add esp, 0xc
test eax, eax
jne 0x40366f
mov ecx, esi
call fcn.00401540
jmp 0x403b44
mov edi, dword [sym.imp.VCRUNTIME140.dll_strstr]
lea eax, [ebp - 0x30]
push str.setbudget
push eax
call edi
add esp, 8
test eax, eax
je 0x403721
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.__________________Set_Budget___________________n_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.Enter_budget:
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
push esi
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______thiscall_std::basic_istream_char__struct_std::char_traits_char__::operator___int__]
cmp dword [esi], 0
jge 0x4036e2
nop dword [eax]
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.Enter_correct_budget:
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
push esi
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______thiscall_std::basic_istream_char__struct_std::char_traits_char__::operator___int__]
cmp dword [esi], 0
jl 0x4036c0
push 0xb0
lea eax, [ebp - 0xe0]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 4
lea ecx, [ebp - 0xe0]
push 0x10
push str.._files_buget.pg
call fcn.004054f0
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xe0]
push dword [esi]
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___int_]
jmp 0x40388e
lea eax, [ebp - 0x30]
push 0x408c20
push eax
call edi
add esp, 8
test eax, eax
je 0x403764
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.All_transactions_were_saved_automatically._n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.Press_any_key_to_continue_._._.
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
call dword [sym.imp.MSVCP140.dll_public:_int___thiscall_std::basic_istream_char__struct_std::char_traits_char__::get_void_]
jmp 0x403b59
lea eax, [ebp - 0x30]
push str.showincome
push eax
call edi
add esp, 8
test eax, eax
je 0x403780
call fcn.00401860
jmp 0x403b28
lea eax, [ebp - 0x30]
push str.showexpense
push eax
call edi
add esp, 8
test eax, eax
je 0x40379c
call fcn.00401b30
jmp 0x403b28
lea eax, [ebp - 0x30]
push str.resetincome
push eax
call edi
add esp, 8
test eax, eax
je 0x403814
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.Are_you_sure_to_delete_all_your_incomes:
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
lea eax, [ebp - 0x18]
push eax
call fcn.004062c0
add esp, 4
lea eax, [ebp - 0x18]
push 0x40886c
push eax
call edi
add esp, 8
test eax, eax
je 0x403b44
push 0xb0
lea eax, [ebp - 0xe0]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 4
lea ecx, [ebp - 0xe0]
push 0x10
push str.._files_income.pg
call fcn.004054f0
mov byte [ebp - 4], 3
jmp 0x40388e
lea eax, [ebp - 0x30]
push str.resetexpense
push eax
call edi
add esp, 8
test eax, eax
je 0x4038c9
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.Are_you_sure_to_delete_all_your_expenses:
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
lea eax, [ebp - 0x18]
push eax
call fcn.004062c0
add esp, 4
lea eax, [ebp - 0x18]
push 0x40886c
push eax
call edi
add esp, 8
test eax, eax
je 0x403b44
push 0xb0
lea eax, [ebp - 0xe0]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 4
lea ecx, [ebp - 0xe0]
push 0x10
push str.._files_expense.pg
call fcn.004054f0
mov byte [ebp - 4], 4
lea ecx, [ebp - 0xdc]
call fcn.00405960
test eax, eax
jne 0x4038b5
push eax
mov eax, dword [ebp - 0xe0]
lea ecx, [ebp - 0xe0]
push 2
add ecx, dword [eax + 4]
call dword [sym.imp.MSVCP140.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool_]
lea ecx, [ebp - 0xe0]
mov byte [ebp - 4], 1
call fcn.00403b90
jmp 0x403b44
lea eax, [ebp - 0x30]
push str.resetsavings
push eax
call edi
add esp, 8
test eax, eax
je 0x4039dc
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.Are_you_sure_to_delete_all_your_savings:
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
lea eax, [ebp - 0x18]
push eax
call fcn.004062c0
add esp, 4
lea eax, [ebp - 0x18]
push 0x40886c
push eax
call edi
add esp, 8
test eax, eax
je 0x403b44
push 0xb0
lea eax, [ebp - 0x300]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 4
lea ecx, [ebp - 0x300]
push 0x10
push str.._files_savings.pg
call fcn.004054f0
lea ecx, [ebp - 0x2fc]
mov byte [ebp - 4], 5
call fcn.00405960
test eax, eax
jne 0x40396a
push eax
mov eax, dword [ebp - 0x300]
lea ecx, [ebp - 0x300]
push 2
add ecx, dword [eax + 4]
call dword [sym.imp.MSVCP140.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool_]
push 0xb0
lea eax, [ebp - 0xe0]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 4
lea ecx, [ebp - 0xe0]
push 0x10
push str.._files_istoricsavings.pg
call fcn.004054f0
lea ecx, [ebp - 0xdc]
mov byte [ebp - 4], 6
call fcn.00405960
test eax, eax
jne 0x4039bd
push eax
mov eax, dword [ebp - 0xe0]
lea ecx, [ebp - 0xe0]
push 2
add ecx, dword [eax + 4]
call dword [sym.imp.MSVCP140.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool_]
lea ecx, [ebp - 0xe0]
call fcn.00403b90
lea ecx, [ebp - 0x300]
mov byte [ebp - 4], 1
call fcn.00403b90
jmp 0x403b44
lea eax, [ebp - 0x30]
push str.reset
push eax
call edi
add esp, 8
test eax, eax
je 0x4039f8
call fcn.00403040
jmp 0x403b59
lea eax, [ebp - 0x30]
push str.savings
push eax
call edi
add esp, 8
test eax, eax
je 0x403a16
mov ecx, esi
call fcn.00402d50
jmp 0x403b44
lea eax, [ebp - 0x30]
push str.report
push eax
call edi
add esp, 8
test eax, eax
je 0x403a32
call fcn.00401e10
jmp 0x403b28
lea eax, [ebp - 0x30]
push str.help
push eax
call edi
add esp, 8
test eax, eax
je 0x403b44
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.__________________Help___________________n_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.income____add_new_income_entry_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.expense____add_new_expense_entry_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.showincome____show_a_list_of_all_incomes_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.showexpense____show_a_list_of_all_expenses_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.setbudget____sets_budget_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.exit____exit_the_software_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.help____show_help_menu_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.savings____manage_savings_account_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.report____generates_a_report_with_all_incomes_and_expenses_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.resetincome____delete_all_records_of_income_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.resetexpense____delete_all_records_of_expenses_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.resetsavings____reset_all_records_of_savings_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.reset____reset_all_the_data_in_the_program_n_n
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.Press_any_key_to_continue_._._.
call fcn.00405c30
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
call dword [sym.imp.MSVCP140.dll_public:_int___thiscall_std::basic_istream_char__struct_std::char_traits_char__::get_void_]
push 0x408770
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_system]
add esp, 4
mov ecx, esi
call fcn.00403420
lea ecx, [ebp - 0x198]
call fcn.00403c50
lea ecx, [ebp - 0x250]
call fcn.00403c50
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004064fe
mov esp, ebp
pop ebp
ret