Function at 0x427260
Capabilities:
Manipulate console buffer

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov eax, dword [0x47700c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
xor eax, eax
mov ebx, ecx
mov byte [ebp - 0x21], 0
push edi
mov dword [ebp - 0x20], ebx
mov edi, eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x30], eax
nop dword [eax]
push 0x457fc0
push str.TrainingSW_Info.drb
call esi
push 0x457fc0
push str.TrainingSession.drb
mov dword [ebp - 0x38], eax
call esi
add esp, 0x10
mov dword [ebp - 0x3c], eax
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov esi, eax
cmp esi, 0xffffffff
je 0x427313
lea eax, [ebp - 0x1c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x427313
movsx eax, word [ebp - 0x1c]
movsx ebx, word [ebp - 0x1a]
imul ebx, eax
lea eax, [ebp - 0x40]
push eax
push edi
push ebx
push 0x20
push esi
call dword [sym.imp.KERNEL32.dll_FillConsoleOutputCharacterW]
test eax, eax
je 0x427310
lea eax, [ebp - 0x40]
push eax
push edi
push ebx
push dword [ebp - 0x14]
push esi
call dword [sym.imp.KERNEL32.dll_FillConsoleOutputAttribute]
test eax, eax
je 0x427310
push edi
push esi
mov esi, dword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
call esi
mov ebx, dword [ebp - 0x20]
jmp 0x427319
mov ebx, dword [ebp - 0x20]
mov esi, dword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
cmp eax, 0xffffffff
je 0x42732c
push dword [ebp - 0x30]
push eax
call esi
push str.________________________________________________________n
call fcn.00401070
mov al, byte [ebx + 0x215c]
add esp, 4
cmp dword [ebp - 0x38], 0
je 0x4273d9
lea esi, [ebx + 0x215d]
add ebx, 0x2199
test al, al
je 0x42738b
mov ecx, dword [ebp - 0x20]
call fcn.00427b90
push ebx
push esi
push str.Welcome___s__s._n_n
call fcn.00401070
add esp, 0xc
mov dword [ebp - 0x28], 1
mov esi, str.option_below._n
mov ebx, str.used_and_updated_during_your_session_unless_you_choose_the__Be_a_Guest__n
mov eax, str.You_have_a_user_profile_file_in_this_directory.__This_file_will_be_n
jmp 0x42741f
mov eax, dword [str.Guest]
mov dword [esi], eax
mov ax, word [0x463550]
mov word [esi + 4], ax
mov eax, dword [str.User]
push ebx
mov dword [ebx], eax
mov al, byte [0x463558]
push esi
push str.Welcome___s__s_n_n
mov byte [ebx + 4], al
call fcn.00401070
push str.You_have_a_user_profile_file_in_this_directory__but_have_chosen_not_n
call fcn.00401070
mov dword [ebp - 0x28], 2
mov esi, str.please_select_the__Use_Profile__option_below._n
mov ebx, str.be_used_or_updated.__If_you_would_like_to_use_your_profile_Info_file__n
mov eax, str.to_use_it_for_the_current_session.__The_profile_in_that_file_will_not_n
jmp 0x42741c
test al, al
je 0x4273e4
mov byte [ebx + 0x215c], 0
lea eax, [ebx + 0x2199]
push eax
lea eax, [ebx + 0x215d]
push eax
push str.Welcome___s__s_n_n
call fcn.00401070
push str.You_currently_do_not_have_a_user_profile_Info_file_in_this_directory._n
call fcn.00401070
mov dword [ebp - 0x28], 3
mov esi, str._Profile__option_below._n
mov ebx, str.you_wish_to_create_a_User_Profile__please_choose_the__Create_User_n
mov eax, str.Your_session_will_not_affect_a_permanent_profile_of_your_progress.__If_n
add esp, 0x10
push eax
call fcn.00401070
push ebx
call fcn.00401070
push esi
call fcn.00401070
push str.________________________________________________________n
call fcn.00401070
mov eax, dword [ebp - 0x20]
add esp, 0x10
cmp dword [ebp - 0x3c], 0
mov bl, byte [eax + 0x2390]
mov byte [ebp - 0x29], bl
je 0x4274a9
test bl, bl
je 0x42745d
mov ecx, eax
call fcn.00429fc0
jmp 0x42746a
push str.You_have_a_Training_Session_File_in_this_directory__but_have_chosen_n
call fcn.00401070
add esp, 4
test bl, bl
mov ecx, str.You_have_a_Training_Session_File_in_this_directory_that_will_be_used_n
mov eax, str.not_to_use_it_for_the_current_session.__If_you_wish_to_use_that_file__n
cmovne eax, ecx
push eax
call fcn.00401070
add esp, 4
mov eax, str.choose_option__No_Training_File__below.
test bl, bl
mov esi, str.from_the_various_training_options._n
mov ecx, str.for_the_current_session.__If_you_do_not_wish_to_use_that_file__please_n
cmovne esi, eax
mov eax, str.please_choose_option__Use_Training_File__below.__Otherwise__choose_n
cmovne eax, ecx
xor ebx, ebx
cmp byte [ebp - 0x29], bl
sete bl
inc ebx
jmp 0x4274c3
test bl, bl
je 0x4274b4
mov byte [eax + 0x2390], 0
mov ebx, 3
mov esi, str.Please_choose_from_the_various_training_options._n
mov eax, str.You_currently_do_not_have_a_Training_Session_file_in_this_directory._n
push eax
call fcn.00401070
push esi
call fcn.00401070
push 0x457ec0
call fcn.00401070
push str.Current_training_plan:_n
call fcn.00401070
mov eax, dword [ebp - 0x20]
add esp, 0x10
cmp ebx, 1
jne 0x4274f6
mov eax, dword [eax + 0x2394]
jmp 0x4274fc
mov eax, dword [eax + 0x23a4]
push eax
mov ecx, str._nFollow_the_Training_Session_File:__d_problems_n
mov eax, str.Random_assortment_of_problems:__d_problems_n
cmove eax, ecx
push eax
call fcn.00401070
push str.________________________________________________________n
call fcn.00401070
mov esi, dword [ebp - 0x28]
add esp, 0xc
mov eax, esi
sub eax, 1
je 0x42753f
sub eax, 1
je 0x427538
sub eax, 1
jne 0x42754c
push str._t_a__Create_User_Profile_n
jmp 0x427544
push str._t_a__Use_Profile_n
jmp 0x427544
push str._t_a__Be_a_Guest_n
call fcn.00401070
add esp, 4
mov eax, ebx
sub eax, 1
je 0x42755f
sub eax, 1
jne 0x42756c
push str._t_b__Use_Training_File_n
jmp 0x427564
push str._t_b__No_Training_File_n
call fcn.00401070
add esp, 4
push 0x457ec0
call fcn.00401070
push str._t_c__Random_problem_selection_n
call fcn.00401070
push str._t_g___GO_____n
call fcn.00401070
add esp, 0xc
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll__kbhit]
test eax, eax
jne 0x4275b5
nop word [eax + eax]
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll__kbhit]
test eax, eax
je 0x4275a0
call dword [sym.imp.api_ms_win_crt_conio_l1_1_0.dll__getch]
movsx eax, al
sub eax, 0x61
je 0x4276ba
sub eax, 1
je 0x427698
sub eax, 5
jne 0x427649
push 0xfffffffffffffff5
mov dword [ebp - 0x34], eax
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x427638
lea eax, [ebp - 0x1c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetConsoleScreenBufferInfo]
test eax, eax
je 0x427638
movsx eax, word [ebp - 0x1c]
movsx ecx, word [ebp - 0x1a]
mov esi, dword [ebp - 0x34]
imul ecx, eax
lea eax, [ebp - 0x44]
push eax
push esi
push ecx
push 0x20
push ebx
mov dword [ebp - 0x28], ecx
call dword [sym.imp.KERNEL32.dll_FillConsoleOutputCharacterW]
test eax, eax
je 0x427638
lea eax, [ebp - 0x44]
push eax
push esi
push dword [ebp - 0x28]
push dword [ebp - 0x14]
push ebx
call dword [sym.imp.KERNEL32.dll_FillConsoleOutputAttribute]
test eax, eax
je 0x427638
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
push str._n_tGet_ready...
call fcn.00401070
add esp, 4
mov byte [ebp - 0x21], 1
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x38]
mov esi, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
test eax, eax
je 0x42765f
push eax
call esi
add esp, 4
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x42766c
push eax
call esi
add esp, 4
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp byte [ebp - 0x21], 0
mov esi, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
je 0x427290
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0043574b
mov esp, ebp
pop ebp
ret
sub ebx, 1
je 0x4276ae
sub ebx, 1
mov ebx, dword [ebp - 0x20]
jne 0x42764c
mov byte [ebx + 0x2390], 1
jmp 0x42764c
mov ebx, dword [ebp - 0x20]
mov byte [ebx + 0x2390], 0
jmp 0x42764c
sub esi, 1
je 0x4276d8
sub esi, 1
je 0x4276c9
sub esi, 1
jmp 0x427649
mov ebx, dword [ebp - 0x20]
mov byte [ebx + 0x215c], 1
jmp 0x42764c
mov ebx, dword [ebp - 0x20]
mov byte [ebx + 0x215c], 0
jmp 0x42764c