Function at 0x4af161
Capabilities:
Create thread
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x198
mov dword [ebp - 0x188], ecx
mov dword [ebp - 0x164], 0x536ce0
mov dword [ebp - 0x160], 0x5378ca
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x4b080d
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c93f0
call fcn.004c8e40
mov dword [0x69aca0], 0
mov dword [0x69aca4], 0
mov dword [0x69aca8], 0xffffffff
mov dword [0x69acac], 0xffffffff
mov dword [0x69acb0], 0
mov dword [0x69acb4], 0xffffffff
mov dword [0x69acb8], 0xffffffff
mov dword [0x69acbc], 0xffffffff
mov dword [0xa31e98], 0
jmp 0x4af2a4
mov eax, dword [0xa31e98]
shl eax, 5
add eax, 0x69ac20
mov dword [eax], 1
mov eax, dword [0xa31e98]
shl eax, 5
add eax, 0x69ac20
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa31e98]
shl eax, 5
add eax, 0x69ac30
mov dword [eax], 0
mov eax, dword [0xa31e98]
shl eax, 5
add eax, 0x69ac30
mov dword [eax + 4], 0
mov eax, dword [0xa31e98]
shl eax, 5
add eax, 0x69ac30
mov dword [eax + 8], 0
mov eax, dword [0xa31e98]
shl eax, 5
add eax, 0x69ac30
mov dword [eax + 0xc], 0
mov eax, dword [0xa31e98]
add eax, 1
mov dword [0xa31e98], eax
mov eax, dword [0xa31e98]
cmp eax, 2
setle al
test al, al
jne 0x4af21a
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x69ac10]
test eax, eax
je 0x4af2d9
mov dword [0x53906c], 0
mov eax, dword [0x69ac0c]
test eax, eax
je 0x4af2ec
mov eax, dword [0x69ac0c]
mov dword [0x69abec], eax
mov dword [esp], 0x1c
call fcn.00455d57
mov dword [0x6b5414], eax
mov dword [esp], 8
call fcn.00455d57
mov dword [0x69ac90], eax
mov dword [esp], 0x14
call fcn.00455d57
mov dword [0x69ac94], eax
mov dword [esp], 0x14
call fcn.00455d57
mov dword [0xa31234], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.00455de9
mov dword [0x69acc4], eax
mov dword [esp], 0x70
call fcn.00455d57
mov dword [0x69acd8], eax
mov eax, dword [0x6b5414]
mov dword [esp], eax
call fcn.00455e22
mov dword [0x6b5418], eax
mov eax, dword [0x6b5418]
mov dword [0x6b541c], eax
mov edx, dword [0x6b541c]
mov eax, dword [0x6b5414]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004562d0
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
mov dword [eax + 4], 0xffff
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 4]
lea edx, [eax + 1]
mov eax, edx
add eax, eax
add eax, edx
shl eax, 2
mov dword [esp + 4], eax
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov edx, eax
mov eax, dword [ebp - 0x20]
mov dword [eax], edx
mov eax, dword [0x695b4c]
test eax, eax
jne 0x4af3d3
call fcn.00484493
mov eax, dword [0x695c18]
test eax, eax
je 0x4af3e6
mov dword [0x69ad84], 1
mov eax, dword [0x695c14]
test eax, eax
je 0x4af434
mov dword [esp], 0x3e8
call sub.msvcrt.dll_malloc
mov dword [ebp - 0x24], eax
mov dword [esp + 4], 0x100
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetConsoleProcessList]
mov dword [ebp - 0x178], 1
call eax
sub esp, 8
cmp eax, 1
sete al
test al, al
je 0x4af434
mov dword [0x69ad80], 1
mov eax, dword [0x695c3c]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x695c3c]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x695c3c]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x695c3c]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x695c3c]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x695c3c]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x695c3c]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x695c3c]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x695c3c]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x695c3c]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x695c3c]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x695c3c]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x695c3c]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x695c3c]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x695c3c]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x695c3c]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x695c3c]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x695c3c]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x695c3c]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x695c3c]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x695c4c]
mov byte [eax], 1
mov eax, dword [0x695c4c]
mov dword [eax + 4], 0
mov eax, dword [0x695c4c]
mov byte [eax + 0x11], 0
mov eax, dword [0x695c4c]
mov byte [eax + 0x10], 0
mov eax, dword [sym.imp.msvcrt.dll__environ]
mov eax, dword [eax]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax]
test eax, eax
setne al
add dword [ebp - 0x1c], 4
test al, al
jne 0x4af5b2
mov edx, dword [ebp - 0x1c]
mov eax, dword [sym.imp.msvcrt.dll__environ]
mov eax, dword [eax]
mov ecx, edx
sub ecx, eax
mov eax, ecx
sar eax, 2
mov dword [0xa31094], eax
mov eax, dword [0x69ad94]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x69ad94]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x69ad94]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x69ad90]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x69ad90]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x69ad90]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x69ad98]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x69ad98]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x69ad98]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x69ad94]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x69ad94]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x69ad94]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x69ad90]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x69ad90]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x69ad90]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x69ad98]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x69ad98]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x69ad98]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6ab744]
mov dword [esp + 8], 0xb0000
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msvcrt.dll_memset
mov dword [ebp - 0x178], 1
call fcn.00458358
mov dword [0xa31e9c], eax
mov edx, dword [0x6ab744]
mov eax, dword [0xa31e9c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.00458358
mov dword [0xa31e9c], eax
mov edx, dword [0x6ab744]
mov eax, dword [0xa31e9c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
mov dword [esp + 8], 0x3c
mov dword [esp + 4], 0
mov dword [esp], 0x6b5420
call sub.msvcrt.dll_memset
mov dword [0x6b5480], 0x6b5420
mov dword [0x6b5484], 0x6b5428
mov dword [0x6b5488], 0x6b542c
mov dword [0x6b548c], 0x6b5424
mov dword [0x6b5490], 0x6b5421
mov dword [0x6b5494], 0x6b5429
mov dword [0x6b5498], 0x6b542d
mov dword [0x6b549c], 0x6b5425
mov dword [0x6b54a0], 0x6b5420
mov dword [0x6b54a4], 0x6b5428
mov dword [0x6b54a8], 0x6b542c
mov dword [0x6b54ac], 0x6b5424
mov dword [0x6b54b0], 0x6b543c
mov dword [0x6b54b4], 0x6b5438
mov dword [0x6b54b8], 0x6b5430
mov dword [0x6b54bc], 0x6b5434
mov dword [0x6b54c0], 0x6b5420
mov dword [0x6b54c4], 0x6b5428
mov dword [0x6b54c8], 0x6b542c
mov dword [0x6b54cc], 0x6b5424
mov dword [0x6b54d0], 0x6b543c
mov dword [0x6b54d4], 0x6b5438
mov dword [0x6b54d8], 0x6b5430
mov dword [0x6b54dc], 0x6b5434
mov dword [0x6b54e0], 0x6b5446
mov dword [0x6b54e4], 0x6b5440
mov dword [0x6b54e8], 0x6b5442
mov dword [0x6b54ec], 0x6b5444
mov dword [0x6b54f0], 0x6b5448
mov dword [0x6b54f4], 0x6b544a
mov dword [0xa31e98], 0
jmp 0x4af8ae
mov eax, dword [0xa31e98]
mov byte [eax + 0xa305c0], 0x20
mov eax, dword [0xa31e98]
add eax, 1
mov dword [0xa31e98], eax
mov eax, dword [0xa31e98]
cmp eax, 0x1f
setle al
test al, al
jne 0x4af895
mov byte [0xa30740], 0x81
mov dword [0x6b5560], 0x100000
mov eax, dword [0x6b5560]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [0x695294], eax
mov eax, dword [0x695294]
mov dword [0x695298], eax
mov edx, dword [0x695294]
mov eax, dword [0x6b5560]
add eax, edx
mov dword [0x69529c], eax
mov dword [esp + 8], 0x10fff3
mov dword [esp + 4], 0
mov dword [esp], 0x5852a0
call sub.msvcrt.dll_memset
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0xa137a0
call sub.msvcrt.dll_memset
mov eax, 0x5852a0
add eax, 0x500
mov dword [0x585264], eax
mov eax, dword [0x53900c]
sub eax, 8
mov dword [0x53900c], eax
mov eax, dword [0x585264]
mov edx, eax
mov eax, dword [0x53900c]
add eax, edx
mov dword [0x585274], eax
mov eax, dword [0x585274]
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.00462954
mov dword [0x585290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.00462954
mov dword [0xa237a0], eax
mov eax, dword [0xa237a0]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00462cfe
mov dword [0xa31274], eax
call fcn.004ae1cb
mov edx, eax
mov eax, dword [0xa31274]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00462e65
mov eax, 0xa31c08
movzx eax, byte [eax]
test al, al
jne 0x4afa2a
mov dword [esp], 0xa31c08
call fcn.005368a0
test eax, eax
setne al
test al, al
je 0x4afa2a
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa31ea0], eax
mov dword [esp], 0xa31c08
call fcn.00536a40
mov eax, dword [0xa31ea0]
mov dword [esp + 8], 0x10000
mov dword [esp + 4], eax
mov dword [esp], 0
mov eax, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov dword [ebp - 0x178], 1
call eax
sub esp, 0xc
mov eax, dword [0xa31ea0]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa31e98], eax
mov eax, dword [0xa31e98]
sub eax, 1
mov dword [0xa31ea4], eax
jmp 0x4afaeb
mov edx, dword [0xa31ea0]
mov eax, dword [0xa31ea4]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa31e9c], eax
mov eax, dword [0xa31e9c]
cmp eax, 0x5c
je 0x4afaad
mov eax, dword [0xa31e9c]
cmp eax, 0x2f
je 0x4afaad
mov eax, dword [0xa31e9c]
cmp eax, 0x3a
jne 0x4afade
mov eax, dword [0xa31e9c]
cmp eax, 0x3a
jne 0x4afacc
mov eax, dword [0xa31ea0]
mov edx, dword [0xa31ea4]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x4afafd
mov edx, dword [0xa31ea0]
mov eax, dword [0xa31ea4]
add eax, edx
mov byte [eax], 0
jmp 0x4afafd
mov eax, dword [0xa31ea4]
sub eax, 1
mov dword [0xa31ea4], eax
mov eax, dword [0xa31ea4]
not eax
shr eax, 0x1f
test al, al
jne 0x4afa77
mov eax, dword [0xa31ea0]
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call sub.msvcrt.dll__chdir
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00462cfe
mov dword [0xa31278], eax
call fcn.004ae1cb
mov edx, eax
mov eax, dword [0xa31278]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00462e65
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00462cfe
mov dword [0x6aadfc], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.00462b7b
mov edx, eax
mov eax, dword [0x6aadfc]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00462e65
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa31e98], eax
mov eax, dword [0xa31e98]
cmp eax, 1
jle 0x4afd37
mov dword [0xa31ea4], 0
mov dword [0xa31e98], 1
jmp 0x4afc08
mov eax, dword [0xa31e98]
lea edx, [eax*4]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
add eax, edx
mov eax, dword [eax]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov edx, dword [0xa31ea4]
add eax, edx
mov dword [0xa31ea4], eax
mov eax, dword [0xa31e98]
cmp eax, 1
je 0x4afbfb
mov eax, dword [0xa31ea4]
add eax, 1
mov dword [0xa31ea4], eax
mov eax, dword [0xa31e98]
add eax, 1
mov dword [0xa31e98], eax
mov edx, dword [0xa31e98]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4afbb6
mov eax, dword [0xa31ea4]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.00462cfe
mov dword [0xa30844], eax
mov dword [0xa31ea8], 0
mov dword [0xa31e98], 1
jmp 0x4afd1a
mov eax, dword [0xa31e98]
cmp eax, 1
je 0x4afc84
mov eax, dword [0xa30844]
mov edx, dword [eax]
mov eax, dword [0xa31ea8]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa31ea8]
add eax, 1
mov dword [0xa31ea8], eax
mov eax, dword [0xa31e98]
lea edx, [eax*4]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
add eax, edx
mov eax, dword [eax]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov edx, dword [0xa31e98]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa30844]
mov ebx, dword [ecx]
mov ecx, dword [0xa31ea8]
add ecx, ebx
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
call sub.msvcrt.dll_memcpy
mov eax, dword [0xa31e98]
lea edx, [eax*4]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
add eax, edx
mov eax, dword [eax]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov edx, dword [0xa31ea8]
add eax, edx
mov dword [0xa31ea8], eax
mov eax, dword [0xa31e98]
add eax, 1
mov dword [0xa31e98], eax
mov edx, dword [0xa31e98]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4afc5c
jmp 0x4afd5a
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.00462cfe
mov dword [0xa30844], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa3084c], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa30848], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.004caef0
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x4afda4
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004caef0
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x4afd88
jmp 0x4afdab
mov dword [ebp - 0x3c], 0
call fcn.00456f33
mov dword [0x6b5544], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004caf00
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4afe09
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 8]
imul edx, eax, 0xe10
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 4]
shl eax, 2
mov ecx, eax
shl ecx, 4
mov ebx, ecx
sub ebx, eax
mov eax, ebx
add edx, eax
mov eax, dword [ebp - 0x28]
mov eax, dword [eax]
add eax, edx
mov dword [0x6b5540], eax
mov eax, dword [0x6b5540]
imul eax, eax, 0x3e8
mov dword [0x6b5540], eax
jmp 0x4afe13
mov dword [0x6b5540], 0
mov dword [esp], 0x91
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x178], 1
call eax
sub esp, 4
cwde
and eax, 1
test eax, eax
setne al
test al, al
je 0x4afe47
mov dword [esp], 0x30d4b
call fcn.004574cf
mov dword [esp], 0x91
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x178], 1
call eax
sub esp, 4
shr ax, 0xf
test al, al
je 0x4afe80
mov dword [0x6aada8], 0x12e
mov dword [esp], 0x187ce
call fcn.004577de
mov dword [esp], 0xa0
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x178], 1
call eax
sub esp, 4
shr ax, 0xf
test al, al
je 0x4afeb9
mov dword [0x6aada8], 0x130
mov dword [esp], 0x187d0
call fcn.004577de
mov dword [esp], 0xa1
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x178], 1
call eax
sub esp, 4
shr ax, 0xf
test al, al
je 0x4afef2
mov dword [0x6aada8], 0x12f
mov dword [esp], 0x187cf
call fcn.004577de
mov dword [esp], 0xa2
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x178], 1
call eax
sub esp, 4
shr ax, 0xf
test al, al
je 0x4aff2b
mov dword [0x6aada8], 0x132
mov dword [esp], 0x187d2
call fcn.004577de
mov dword [esp], 0xa3
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x178], 1
call eax
sub esp, 4
shr ax, 0xf
test al, al
je 0x4aff64
mov dword [0x6aada8], 0x131
mov dword [esp], 0x187d1
call fcn.004577de
mov dword [esp], 0xa4
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x178], 1
call eax
sub esp, 4
shr ax, 0xf
test al, al
je 0x4aff9d
mov dword [0x6aada8], 0x134
mov dword [esp], 0x187d4
call fcn.004577de
mov dword [esp], 0xa5
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x178], 1
call eax
sub esp, 4
shr ax, 0xf
test al, al
je 0x4affd6
mov dword [0x6aada8], 0x133
mov dword [esp], 0x187d3
call fcn.004577de
mov dword [esp], 0x14
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x178], 1
call eax
sub esp, 4
cwde
and eax, 1
test eax, eax
setne al
test al, al
je 0x4b0014
mov dword [0x6aada8], 0x12d
mov dword [esp], 0x187cd
call fcn.004577de
mov dword [esp], 0x90
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x178], 1
call eax
sub esp, 4
cwde
and eax, 1
test eax, eax
setne al
test al, al
je 0x4b0052
mov dword [0x6aada8], 0x12c
mov dword [esp], 0x187cc
call fcn.004577de
mov dword [ebp - 0x178], 1
call fcn.004b313b
mov eax, dword [0x6aada0]
mov dword [0x6aada4], eax
mov byte [0x5856ba], 0x1e
mov byte [0x5856bb], 0
mov byte [0x5856bc], 0x1e
mov byte [0x5856bd], 0
lea eax, [ebp - 0x13c]
mov ecx, eax
call fcn.0051d1a0
mov eax, dword [0x539520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5681a0
mov dword [esp], 0x6ab240
call sub.msvcrt.dll_memcpy
mov dword [0xa31e98], 0
jmp 0x4b00e9
mov eax, dword [0xa31e98]
mov edx, dword [0xa31e98]
mov edx, dword [edx*4 + 0x6ab240]
or edx, 0xff000000
mov dword [eax*4 + 0x6ab240], edx
mov eax, dword [0xa31e98]
add eax, 1
mov dword [0xa31e98], eax
mov eax, dword [0xa31e98]
cmp eax, 0xff
setle al
test al, al
jne 0x4b00bd
mov eax, dword [0x539524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5685a0
mov dword [esp], 0x6ab640
call sub.msvcrt.dll_memcpy
mov dword [0xa31e98], 0
jmp 0x4b014f
mov eax, dword [0xa31e98]
mov edx, dword [0xa31e98]
mov edx, dword [edx*4 + 0x6ab640]
or edx, 0xff000000
mov dword [eax*4 + 0x6ab640], edx
mov eax, dword [0xa31e98]
add eax, 1
mov dword [0xa31e98], eax
mov eax, dword [0xa31e98]
cmp eax, 0x3f
setle al
test al, al
jne 0x4b0123
mov dword [0xa23ce0], 0
mov dword [0xa23ce4], 0
mov dword [0xa23ce8], 0
mov dword [0xa23cec], 0x808080
mov dword [0xa23cf0], 0x808080
mov dword [0xa23cf4], 0x808080
mov dword [0xa23cf8], 0xffffff
mov dword [0xa23cfc], 0xffffff
mov dword [0xa23d00], 0xffffff
mov dword [0xa23d04], 0
mov dword [0xa23d08], 0x808080
mov dword [0xa23d0c], 0xffffff
mov dword [0xa23d10], 0
mov dword [0xa23d14], 0x808080
mov dword [0xa23d18], 0xffffff
mov dword [0xa23d1c], 0
mov dword [0xa23d20], 0x808080
mov dword [0xa23d24], 0xffffff
mov eax, dword [0x539518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x55c1a0
mov dword [esp], 0xa23d40
call sub.msvcrt.dll_memcpy
mov eax, dword [0x53951c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5601a0
mov dword [esp], 0xa27d40
call sub.msvcrt.dll_memcpy
mov dword [esp + 0x14], 1
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 2
call fcn.004675e7
mov dword [0x53952c], 1
mov eax, dword [0x695c14]
test eax, eax
je 0x4b02e9
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.00489c4d
mov dword [0x5392e0], eax
mov eax, dword [0x5392e0]
neg eax
mov dword [0xa31e98], eax
mov edx, dword [0x6ab744]
mov eax, dword [0xa31e98]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x12], 1
mov edx, dword [0x53907c]
mov eax, dword [0x539078]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.00489c4d
mov dword [0xa31aac], eax
mov edx, dword [0x539078]
mov eax, dword [0x53907c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6ab744]
mov eax, dword [0xa31aac]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x5559e0
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x539084]
mov eax, dword [0x539080]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00489c4d
mov dword [0xa31ab0], eax
mov edx, dword [0x539080]
mov eax, dword [0x539084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6ab744]
mov eax, dword [0xa31ab0]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x555de0
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa31e98], 0
mov eax, dword [0xa31e98]
add eax, 1
mov dword [0xa31e98], eax
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403339
mov eax, dword [0xa31e98]
add eax, 1
mov dword [0xa31e98], eax
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x695c2c]
mov eax, dword [0xa31e98]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403339
mov eax, dword [0xa31e98]
mov dword [0x695c28], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4056b0
mov eax, dword [sym.imp.msvcrt.dll__beginthread]
call eax
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_SetThreadPriority]
call eax
sub esp, 8
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x404564
mov eax, dword [sym.imp.msvcrt.dll__beginthread]
call eax
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x30]
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_SetThreadPriority]
call eax
sub esp, 8
mov dword [0x6b5538], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4b085b
mov eax, dword [sym.imp.msvcrt.dll__beginthread]
call eax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_SetThreadPriority]
call eax
sub esp, 8
mov eax, dword [0x69ad84]
test eax, eax
jne 0x4b061a
mov dword [0x69abd8], 1
jmp 0x4b061a
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x4b061b
nop
mov eax, dword [0x69abd8]
test eax, eax
sete al
test al, al
jne 0x4b05fd
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [esp + 4], eax
mov ecx, dword [ebp - 0x188]
mov dword [esp], ecx
mov dword [ebp - 0x178], 2
call fcn.00427340
mov dword [esp], 0x12
call fcn.004b68b0
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.004b6880
mov dword [esp], 0x190
call fcn.004bb3a0
test eax, eax
sete al
test al, al
je 0x4b068f
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x69abe0]
test eax, eax
jne 0x4b06b0
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.00427362
jmp 0x4b06c7
mov eax, dword [0x69abe0]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.00427362
mov dword [0x69abd4], 1
mov dword [ebp - 0x178], 2
call fcn.0044ccf9
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4b06ff
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.0044cca9
sub esp, 4
mov dword [esp], eax
call fcn.004579b7
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.0044cd19
sub esp, 4
test al, al
setne al
test al, al
je 0x4b0721
mov dword [0x69aba8], 1
mov dword [esp], 0x4abd37
mov dword [ebp - 0x178], 2
call fcn.004ba3e0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x4a8fbb
mov dword [esp], 8
call fcn.004ba530
mov dword [esp], 0x4a8d53
call fcn.004ba480
mov dword [esp], 0x4a8d75
call fcn.004ba600
mov dword [esp], 0x4a8f85
call fcn.004ba4c0
mov dword [esp], 0x4a8fa0
call fcn.004ba640
mov dword [esp], 0x4ad9bb
call fcn.004ba740
mov dword [esp], fcn.004ada07
call fcn.004ba7c0
mov dword [esp], 0x4adf9f
call fcn.004ba800
mov dword [esp], 0x4a9262
call fcn.004ba440
mov dword [esp], 0x4adfb9
call fcn.004ba780
call fcn.004bc1b0
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.0051d8a0
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x4b083b
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c94b0
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret