Function at 0x4a8de1
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], 0x530940
mov dword [ebp - 0x160], 0x53152a
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x4aa48d
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c3070
call fcn.004c2ac0
mov dword [0x694b60], 0
mov dword [0x694b64], 0
mov dword [0x694b68], 0xffffffff
mov dword [0x694b6c], 0xffffffff
mov dword [0x694b70], 0
mov dword [0x694b74], 0xffffffff
mov dword [0x694b78], 0xffffffff
mov dword [0x694b7c], 0xffffffff
mov dword [0xa2bd58], 0
jmp 0x4a8f24
mov eax, dword [0xa2bd58]
shl eax, 5
add eax, 0x694ae0
mov dword [eax], 1
mov eax, dword [0xa2bd58]
shl eax, 5
add eax, 0x694ae0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa2bd58]
shl eax, 5
add eax, 0x694af0
mov dword [eax], 0
mov eax, dword [0xa2bd58]
shl eax, 5
add eax, 0x694af0
mov dword [eax + 4], 0
mov eax, dword [0xa2bd58]
shl eax, 5
add eax, 0x694af0
mov dword [eax + 8], 0
mov eax, dword [0xa2bd58]
shl eax, 5
add eax, 0x694af0
mov dword [eax + 0xc], 0
mov eax, dword [0xa2bd58]
add eax, 1
mov dword [0xa2bd58], eax
mov eax, dword [0xa2bd58]
cmp eax, 2
setle al
test al, al
jne 0x4a8e9a
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x694ad0]
test eax, eax
je 0x4a8f59
mov dword [0x53306c], 0
mov eax, dword [0x694acc]
test eax, eax
je 0x4a8f6c
mov eax, dword [0x694acc]
mov dword [0x694aac], eax
mov dword [esp], 0x1c
call fcn.0044f9d7
mov dword [0x6af2d4], eax
mov dword [esp], 8
call fcn.0044f9d7
mov dword [0x694b50], eax
mov dword [esp], 0x14
call fcn.0044f9d7
mov dword [0x694b54], eax
mov dword [esp], 0x14
call fcn.0044f9d7
mov dword [0xa2b0f4], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.0044fa69
mov dword [0x694b84], eax
mov dword [esp], 0x70
call fcn.0044f9d7
mov dword [0x694b98], eax
mov eax, dword [0x6af2d4]
mov dword [esp], eax
call fcn.0044faa2
mov dword [0x6af2d8], eax
mov eax, dword [0x6af2d8]
mov dword [0x6af2dc], eax
mov edx, dword [0x6af2dc]
mov eax, dword [0x6af2d4]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0044ff50
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 [0x68fb4c]
test eax, eax
jne 0x4a9053
call fcn.0047e113
mov eax, dword [0x68fc48]
test eax, eax
je 0x4a9066
mov dword [0x694c44], 1
mov eax, dword [0x68fc44]
test eax, eax
je 0x4a90b4
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 0x4a90b4
mov dword [0x694c40], 1
mov eax, dword [0x68fc6c]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x68fc6c]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x68fc6c]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x68fc6c]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x68fc6c]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x68fc6c]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x68fc6c]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x68fc6c]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x68fc6c]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x68fc6c]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x68fc6c]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x68fc6c]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x68fc6c]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x68fc6c]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x68fc6c]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x68fc6c]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x68fc6c]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x68fc6c]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x68fc6c]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x68fc6c]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x68fc7c]
mov byte [eax], 1
mov eax, dword [0x68fc7c]
mov dword [eax + 4], 0
mov eax, dword [0x68fc7c]
mov byte [eax + 0x11], 0
mov eax, dword [0x68fc7c]
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 0x4a9232
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 [0xa2af54], eax
mov eax, dword [0x694c54]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x694c54]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x694c54]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x694c50]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x694c50]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x694c50]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x694c58]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x694c58]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x694c58]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x694c54]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x694c54]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x694c54]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x694c50]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x694c50]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x694c50]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x694c58]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x694c58]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x694c58]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6a5604]
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.00451fd8
mov dword [0xa2bd5c], eax
mov edx, dword [0x6a5604]
mov eax, dword [0xa2bd5c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.00451fd8
mov dword [0xa2bd5c], eax
mov edx, dword [0x6a5604]
mov eax, dword [0xa2bd5c]
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], 0x6af2e0
call sub.msvcrt.dll_memset
mov dword [0x6af340], 0x6af2e0
mov dword [0x6af344], 0x6af2e8
mov dword [0x6af348], 0x6af2ec
mov dword [0x6af34c], 0x6af2e4
mov dword [0x6af350], 0x6af2e1
mov dword [0x6af354], 0x6af2e9
mov dword [0x6af358], 0x6af2ed
mov dword [0x6af35c], 0x6af2e5
mov dword [0x6af360], 0x6af2e0
mov dword [0x6af364], 0x6af2e8
mov dword [0x6af368], 0x6af2ec
mov dword [0x6af36c], 0x6af2e4
mov dword [0x6af370], 0x6af2fc
mov dword [0x6af374], 0x6af2f8
mov dword [0x6af378], 0x6af2f0
mov dword [0x6af37c], 0x6af2f4
mov dword [0x6af380], 0x6af2e0
mov dword [0x6af384], 0x6af2e8
mov dword [0x6af388], 0x6af2ec
mov dword [0x6af38c], 0x6af2e4
mov dword [0x6af390], 0x6af2fc
mov dword [0x6af394], 0x6af2f8
mov dword [0x6af398], 0x6af2f0
mov dword [0x6af39c], 0x6af2f4
mov dword [0x6af3a0], 0x6af306
mov dword [0x6af3a4], 0x6af300
mov dword [0x6af3a8], 0x6af302
mov dword [0x6af3ac], 0x6af304
mov dword [0x6af3b0], 0x6af308
mov dword [0x6af3b4], 0x6af30a
mov dword [0xa2bd58], 0
jmp 0x4a952e
mov eax, dword [0xa2bd58]
mov byte [eax + 0xa2a480], 0x20
mov eax, dword [0xa2bd58]
add eax, 1
mov dword [0xa2bd58], eax
mov eax, dword [0xa2bd58]
cmp eax, 0x1f
setle al
test al, al
jne 0x4a9515
mov byte [0xa2a600], 0x81
mov dword [0x6af420], 0x100000
mov eax, dword [0x6af420]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [0x68f294], eax
mov eax, dword [0x68f294]
mov dword [0x68f298], eax
mov edx, dword [0x68f294]
mov eax, dword [0x6af420]
add eax, edx
mov dword [0x68f29c], eax
mov dword [esp + 8], 0x10fff3
mov dword [esp + 4], 0
mov dword [esp], 0x57f2a0
call sub.msvcrt.dll_memset
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0xa0d660
call sub.msvcrt.dll_memset
mov eax, 0x57f2a0
add eax, 0x500
mov dword [0x57f264], eax
mov eax, dword [0x53300c]
sub eax, 8
mov dword [0x53300c], eax
mov eax, dword [0x57f264]
mov edx, eax
mov eax, dword [0x53300c]
add eax, edx
mov dword [0x57f274], eax
mov eax, dword [0x57f274]
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.0045c5d4
mov dword [0x57f290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.0045c5d4
mov dword [0xa1d660], eax
mov eax, dword [0xa1d660]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0045c97e
mov dword [0xa2b134], eax
call fcn.004a7e4b
mov edx, eax
mov eax, dword [0xa2b134]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045cae5
mov eax, 0xa2bac8
movzx eax, byte [eax]
test al, al
jne 0x4a96aa
mov dword [esp], 0xa2bac8
call fcn.00530500
test eax, eax
setne al
test al, al
je 0x4a96aa
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa2bd60], eax
mov dword [esp], 0xa2bac8
call fcn.005306a0
mov eax, dword [0xa2bd60]
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 [0xa2bd60]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa2bd58], eax
mov eax, dword [0xa2bd58]
sub eax, 1
mov dword [0xa2bd64], eax
jmp 0x4a976b
mov edx, dword [0xa2bd60]
mov eax, dword [0xa2bd64]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa2bd5c], eax
mov eax, dword [0xa2bd5c]
cmp eax, 0x5c
je 0x4a972d
mov eax, dword [0xa2bd5c]
cmp eax, 0x2f
je 0x4a972d
mov eax, dword [0xa2bd5c]
cmp eax, 0x3a
jne 0x4a975e
mov eax, dword [0xa2bd5c]
cmp eax, 0x3a
jne 0x4a974c
mov eax, dword [0xa2bd60]
mov edx, dword [0xa2bd64]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x4a977d
mov edx, dword [0xa2bd60]
mov eax, dword [0xa2bd64]
add eax, edx
mov byte [eax], 0
jmp 0x4a977d
mov eax, dword [0xa2bd64]
sub eax, 1
mov dword [0xa2bd64], eax
mov eax, dword [0xa2bd64]
not eax
shr eax, 0x1f
test al, al
jne 0x4a96f7
mov eax, dword [0xa2bd60]
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.0045c97e
mov dword [0xa2b138], eax
call fcn.004a7e4b
mov edx, eax
mov eax, dword [0xa2b138]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045cae5
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0045c97e
mov dword [0x6a4cbc], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.0045c7fb
mov edx, eax
mov eax, dword [0x6a4cbc]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045cae5
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa2bd58], eax
mov eax, dword [0xa2bd58]
cmp eax, 1
jle 0x4a99b7
mov dword [0xa2bd64], 0
mov dword [0xa2bd58], 1
jmp 0x4a9888
mov eax, dword [0xa2bd58]
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 [0xa2bd64]
add eax, edx
mov dword [0xa2bd64], eax
mov eax, dword [0xa2bd58]
cmp eax, 1
je 0x4a987b
mov eax, dword [0xa2bd64]
add eax, 1
mov dword [0xa2bd64], eax
mov eax, dword [0xa2bd58]
add eax, 1
mov dword [0xa2bd58], eax
mov edx, dword [0xa2bd58]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4a9836
mov eax, dword [0xa2bd64]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.0045c97e
mov dword [0xa2a704], eax
mov dword [0xa2bd68], 0
mov dword [0xa2bd58], 1
jmp 0x4a999a
mov eax, dword [0xa2bd58]
cmp eax, 1
je 0x4a9904
mov eax, dword [0xa2a704]
mov edx, dword [eax]
mov eax, dword [0xa2bd68]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa2bd68]
add eax, 1
mov dword [0xa2bd68], eax
mov eax, dword [0xa2bd58]
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 [0xa2bd58]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa2a704]
mov ebx, dword [ecx]
mov ecx, dword [0xa2bd68]
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 [0xa2bd58]
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 [0xa2bd68]
add eax, edx
mov dword [0xa2bd68], eax
mov eax, dword [0xa2bd58]
add eax, 1
mov dword [0xa2bd58], eax
mov edx, dword [0xa2bd58]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4a98dc
jmp 0x4a99da
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.0045c97e
mov dword [0xa2a704], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa2a70c], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa2a708], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.004c4b70
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x4a9a24
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004c4b70
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x4a9a08
jmp 0x4a9a2b
mov dword [ebp - 0x3c], 0
call fcn.00450bb3
mov dword [0x6af404], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004c4b80
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4a9a89
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 [0x6af400], eax
mov eax, dword [0x6af400]
imul eax, eax, 0x3e8
mov dword [0x6af400], eax
jmp 0x4a9a93
mov dword [0x6af400], 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 0x4a9ac7
mov dword [esp], 0x30d4b
call fcn.0045114f
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 0x4a9b00
mov dword [0x6a4c68], 0x12e
mov dword [esp], 0x187ce
call fcn.0045145e
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 0x4a9b39
mov dword [0x6a4c68], 0x130
mov dword [esp], 0x187d0
call fcn.0045145e
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 0x4a9b72
mov dword [0x6a4c68], 0x12f
mov dword [esp], 0x187cf
call fcn.0045145e
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 0x4a9bab
mov dword [0x6a4c68], 0x132
mov dword [esp], 0x187d2
call fcn.0045145e
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 0x4a9be4
mov dword [0x6a4c68], 0x131
mov dword [esp], 0x187d1
call fcn.0045145e
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 0x4a9c1d
mov dword [0x6a4c68], 0x134
mov dword [esp], 0x187d4
call fcn.0045145e
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 0x4a9c56
mov dword [0x6a4c68], 0x133
mov dword [esp], 0x187d3
call fcn.0045145e
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 0x4a9c94
mov dword [0x6a4c68], 0x12d
mov dword [esp], 0x187cd
call fcn.0045145e
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 0x4a9cd2
mov dword [0x6a4c68], 0x12c
mov dword [esp], 0x187cc
call fcn.0045145e
mov dword [ebp - 0x178], 1
call fcn.004acdbb
mov eax, dword [0x6a4c60]
mov dword [0x6a4c64], eax
mov byte [0x57f6ba], 0x1e
mov byte [0x57f6bb], 0
mov byte [0x57f6bc], 0x1e
mov byte [0x57f6bd], 0
lea eax, [ebp - 0x13c]
mov ecx, eax
call fcn.00516e10
mov eax, dword [0x533520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5625e0
mov dword [esp], 0x6a5100
call sub.msvcrt.dll_memcpy
mov dword [0xa2bd58], 0
jmp 0x4a9d69
mov eax, dword [0xa2bd58]
mov edx, dword [0xa2bd58]
mov edx, dword [edx*4 + 0x6a5100]
or edx, 0xff000000
mov dword [eax*4 + 0x6a5100], edx
mov eax, dword [0xa2bd58]
add eax, 1
mov dword [0xa2bd58], eax
mov eax, dword [0xa2bd58]
cmp eax, 0xff
setle al
test al, al
jne 0x4a9d3d
mov eax, dword [0x533524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5629e0
mov dword [esp], 0x6a5500
call sub.msvcrt.dll_memcpy
mov dword [0xa2bd58], 0
jmp 0x4a9dcf
mov eax, dword [0xa2bd58]
mov edx, dword [0xa2bd58]
mov edx, dword [edx*4 + 0x6a5500]
or edx, 0xff000000
mov dword [eax*4 + 0x6a5500], edx
mov eax, dword [0xa2bd58]
add eax, 1
mov dword [0xa2bd58], eax
mov eax, dword [0xa2bd58]
cmp eax, 0x3f
setle al
test al, al
jne 0x4a9da3
mov dword [0xa1dba0], 0
mov dword [0xa1dba4], 0
mov dword [0xa1dba8], 0
mov dword [0xa1dbac], 0x808080
mov dword [0xa1dbb0], 0x808080
mov dword [0xa1dbb4], 0x808080
mov dword [0xa1dbb8], 0xffffff
mov dword [0xa1dbbc], 0xffffff
mov dword [0xa1dbc0], 0xffffff
mov dword [0xa1dbc4], 0
mov dword [0xa1dbc8], 0x808080
mov dword [0xa1dbcc], 0xffffff
mov dword [0xa1dbd0], 0
mov dword [0xa1dbd4], 0x808080
mov dword [0xa1dbd8], 0xffffff
mov dword [0xa1dbdc], 0
mov dword [0xa1dbe0], 0x808080
mov dword [0xa1dbe4], 0xffffff
mov eax, dword [0x533518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5565e0
mov dword [esp], 0xa1dc00
call sub.msvcrt.dll_memcpy
mov eax, dword [0x53351c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x55a5e0
mov dword [esp], 0xa21c00
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.00461267
mov dword [0x53352c], 1
mov eax, dword [0x68fc44]
test eax, eax
je 0x4a9f69
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.004838cd
mov dword [0x5332e0], eax
mov eax, dword [0x5332e0]
neg eax
mov dword [0xa2bd58], eax
mov edx, dword [0x6a5604]
mov eax, dword [0xa2bd58]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x12], 1
mov edx, dword [0x53307c]
mov eax, dword [0x533078]
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.004838cd
mov dword [0xa2b96c], eax
mov edx, dword [0x533078]
mov eax, dword [0x53307c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6a5604]
mov eax, dword [0xa2b96c]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x54fe20
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x533084]
mov eax, dword [0x533080]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004838cd
mov dword [0xa2b970], eax
mov edx, dword [0x533080]
mov eax, dword [0x533084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6a5604]
mov eax, dword [0xa2b970]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x550220
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa2bd58], 0
mov eax, dword [0xa2bd58]
add eax, 1
mov dword [0xa2bd58], eax
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.004033f2
mov eax, dword [0xa2bd58]
add eax, 1
mov dword [0xa2bd58], eax
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x68fc5c]
mov eax, dword [0xa2bd58]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.004033f2
mov eax, dword [0xa2bd58]
mov dword [0x68fc58], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x405769
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], 0x40461d
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 [0x6af3f8], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4aa4db
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 [0x694c44]
test eax, eax
jne 0x4aa29a
mov dword [0x694a98], 1
jmp 0x4aa29a
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x4aa29b
nop
mov eax, dword [0x694a98]
test eax, eax
sete al
test al, al
jne 0x4aa27d
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.00420fc0
mov dword [esp], 0x12
call fcn.004b0530
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.004b0500
mov dword [esp], 0x190
call fcn.004b5020
test eax, eax
sete al
test al, al
je 0x4aa30f
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x694aa0]
test eax, eax
jne 0x4aa330
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.00420fe2
jmp 0x4aa347
mov eax, dword [0x694aa0]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.00420fe2
mov dword [0x694a94], 1
mov dword [ebp - 0x178], 2
call fcn.00446979
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4aa37f
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.00446929
sub esp, 4
mov dword [esp], eax
call fcn.00451637
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.00446999
sub esp, 4
test al, al
setne al
test al, al
je 0x4aa3a1
mov dword [0x694a68], 1
mov dword [esp], 0x4a59b7
mov dword [ebp - 0x178], 2
call fcn.004b4060
mov dword [esp + 8], 0
mov dword [esp + 4], 0x4a2c3b
mov dword [esp], 8
call fcn.004b41b0
mov dword [esp], 0x4a29d3
call fcn.004b4100
mov dword [esp], 0x4a29f5
call fcn.004b4280
mov dword [esp], 0x4a2c05
call fcn.004b4140
mov dword [esp], 0x4a2c20
call fcn.004b42c0
mov dword [esp], 0x4a763b
call fcn.004b43c0
mov dword [esp], fcn.004a7687
call fcn.004b4440
mov dword [esp], 0x4a7c1f
call fcn.004b4480
mov dword [esp], 0x4a2ee2
call fcn.004b40c0
mov dword [esp], 0x4a7c39
call fcn.004b4400
call fcn.004b5e30
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.00517510
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x4aa4bb
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c3130
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret