Function at 0x4c81c5
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], 0x54fd30
mov dword [ebp - 0x160], 0x55091a
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x4c9871
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004e2460
call fcn.004e1eb0
mov dword [0x6b61a0], 0
mov dword [0x6b61a4], 0
mov dword [0x6b61a8], 0xffffffff
mov dword [0x6b61ac], 0xffffffff
mov dword [0x6b61b0], 0
mov dword [0x6b61b4], 0xffffffff
mov dword [0x6b61b8], 0xffffffff
mov dword [0x6b61bc], 0xffffffff
mov dword [0xa4d398], 0
jmp 0x4c8308
mov eax, dword [0xa4d398]
shl eax, 5
add eax, 0x6b6120
mov dword [eax], 1
mov eax, dword [0xa4d398]
shl eax, 5
add eax, 0x6b6120
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa4d398]
shl eax, 5
add eax, 0x6b6130
mov dword [eax], 0
mov eax, dword [0xa4d398]
shl eax, 5
add eax, 0x6b6130
mov dword [eax + 4], 0
mov eax, dword [0xa4d398]
shl eax, 5
add eax, 0x6b6130
mov dword [eax + 8], 0
mov eax, dword [0xa4d398]
shl eax, 5
add eax, 0x6b6130
mov dword [eax + 0xc], 0
mov eax, dword [0xa4d398]
add eax, 1
mov dword [0xa4d398], eax
mov eax, dword [0xa4d398]
cmp eax, 2
setle al
test al, al
jne 0x4c827e
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x6b6110]
test eax, eax
je 0x4c833d
mov dword [0x55306c], 0
mov eax, dword [0x6b610c]
test eax, eax
je 0x4c8350
mov eax, dword [0x6b610c]
mov dword [0x6b60ec], eax
mov dword [esp], 0x1c
call fcn.0046edbb
mov dword [0x6d0914], eax
mov dword [esp], 8
call fcn.0046edbb
mov dword [0x6b6190], eax
mov dword [esp], 0x14
call fcn.0046edbb
mov dword [0x6b6194], eax
mov dword [esp], 0x14
call fcn.0046edbb
mov dword [0xa4c734], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.0046ee4d
mov dword [0x6b61c4], eax
mov dword [esp], 0x70
call fcn.0046edbb
mov dword [0x6b61d8], eax
mov eax, dword [0x6d0914]
mov dword [esp], eax
call fcn.0046ee86
mov dword [0x6d0918], eax
mov eax, dword [0x6d0918]
mov dword [0x6d091c], eax
mov edx, dword [0x6d091c]
mov eax, dword [0x6d0914]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0046f334
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 [0x6b0b4c]
test eax, eax
jne 0x4c8437
call fcn.0049d4f7
mov eax, dword [0x6b0c8c]
test eax, eax
je 0x4c844a
mov dword [0x6b6284], 1
mov eax, dword [0x6b0c88]
test eax, eax
je 0x4c8498
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 0x4c8498
mov dword [0x6b6280], 1
mov eax, dword [0x6b0cb0]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x6b0cb0]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x6b0cb0]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x6b0cb0]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x6b0cb0]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x6b0cb0]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x6b0cb0]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x6b0cb0]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x6b0cb0]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x6b0cb0]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x6b0cb0]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x6b0cb0]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x6b0cb0]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x6b0cb0]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x6b0cb0]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x6b0cb0]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x6b0cb0]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x6b0cb0]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x6b0cb0]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x6b0cb0]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x6b0cc0]
mov byte [eax], 1
mov eax, dword [0x6b0cc0]
mov dword [eax + 4], 0
mov eax, dword [0x6b0cc0]
mov byte [eax + 0x11], 0
mov eax, dword [0x6b0cc0]
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 0x4c8616
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 [0xa4c594], eax
mov eax, dword [0x6b6294]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x6b6294]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x6b6294]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x6b6290]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x6b6290]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x6b6290]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x6b6298]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x6b6298]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x6b6298]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x6b6294]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x6b6294]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x6b6294]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6b6290]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x6b6290]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x6b6290]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6b6298]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x6b6298]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x6b6298]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6c6c44]
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.004713bc
mov dword [0xa4d39c], eax
mov edx, dword [0x6c6c44]
mov eax, dword [0xa4d39c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.004713bc
mov dword [0xa4d39c], eax
mov edx, dword [0x6c6c44]
mov eax, dword [0xa4d39c]
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], 0x6d0920
call sub.msvcrt.dll_memset
mov dword [0x6d0980], 0x6d0920
mov dword [0x6d0984], 0x6d0928
mov dword [0x6d0988], 0x6d092c
mov dword [0x6d098c], 0x6d0924
mov dword [0x6d0990], 0x6d0921
mov dword [0x6d0994], 0x6d0929
mov dword [0x6d0998], 0x6d092d
mov dword [0x6d099c], 0x6d0925
mov dword [0x6d09a0], 0x6d0920
mov dword [0x6d09a4], 0x6d0928
mov dword [0x6d09a8], 0x6d092c
mov dword [0x6d09ac], 0x6d0924
mov dword [0x6d09b0], 0x6d093c
mov dword [0x6d09b4], 0x6d0938
mov dword [0x6d09b8], 0x6d0930
mov dword [0x6d09bc], 0x6d0934
mov dword [0x6d09c0], 0x6d0920
mov dword [0x6d09c4], 0x6d0928
mov dword [0x6d09c8], 0x6d092c
mov dword [0x6d09cc], 0x6d0924
mov dword [0x6d09d0], 0x6d093c
mov dword [0x6d09d4], 0x6d0938
mov dword [0x6d09d8], 0x6d0930
mov dword [0x6d09dc], 0x6d0934
mov dword [0x6d09e0], 0x6d0946
mov dword [0x6d09e4], 0x6d0940
mov dword [0x6d09e8], 0x6d0942
mov dword [0x6d09ec], 0x6d0944
mov dword [0x6d09f0], 0x6d0948
mov dword [0x6d09f4], 0x6d094a
mov dword [0xa4d398], 0
jmp 0x4c8912
mov eax, dword [0xa4d398]
mov byte [eax + 0xa4bac0], 0x20
mov eax, dword [0xa4d398]
add eax, 1
mov dword [0xa4d398], eax
mov eax, dword [0xa4d398]
cmp eax, 0x1f
setle al
test al, al
jne 0x4c88f9
mov byte [0xa4bc40], 0x81
mov dword [0x6d0a60], 0x100000
mov eax, dword [0x6d0a60]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [0x6b0294], eax
mov eax, dword [0x6b0294]
mov dword [0x6b0298], eax
mov edx, dword [0x6b0294]
mov eax, dword [0x6d0a60]
add eax, edx
mov dword [0x6b029c], eax
mov dword [esp + 8], 0x10fff3
mov dword [esp + 4], 0
mov dword [esp], 0x5a02a0
call sub.msvcrt.dll_memset
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0xa2eca0
call sub.msvcrt.dll_memset
mov eax, 0x5a02a0
add eax, 0x500
mov dword [0x5a0264], eax
mov eax, dword [0x55300c]
sub eax, 8
mov dword [0x55300c], eax
mov eax, dword [0x5a0264]
mov edx, eax
mov eax, dword [0x55300c]
add eax, edx
mov dword [0x5a0274], eax
mov eax, dword [0x5a0274]
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.0047b9b8
mov dword [0x5a0290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.0047b9b8
mov dword [0xa3eca0], eax
mov eax, dword [0xa3eca0]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0047bd62
mov dword [0xa4c774], eax
call fcn.004c722f
mov edx, eax
mov eax, dword [0xa4c774]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0047bec9
mov eax, 0xa4d108
movzx eax, byte [eax]
test al, al
jne 0x4c8a8e
mov dword [esp], 0xa4d108
call fcn.0054f8f0
test eax, eax
setne al
test al, al
je 0x4c8a8e
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa4d3a0], eax
mov dword [esp], 0xa4d108
call fcn.0054fa90
mov eax, dword [0xa4d3a0]
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 [0xa4d3a0]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa4d398], eax
mov eax, dword [0xa4d398]
sub eax, 1
mov dword [0xa4d3a4], eax
jmp 0x4c8b4f
mov edx, dword [0xa4d3a0]
mov eax, dword [0xa4d3a4]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa4d39c], eax
mov eax, dword [0xa4d39c]
cmp eax, 0x5c
je 0x4c8b11
mov eax, dword [0xa4d39c]
cmp eax, 0x2f
je 0x4c8b11
mov eax, dword [0xa4d39c]
cmp eax, 0x3a
jne 0x4c8b42
mov eax, dword [0xa4d39c]
cmp eax, 0x3a
jne 0x4c8b30
mov eax, dword [0xa4d3a0]
mov edx, dword [0xa4d3a4]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x4c8b61
mov edx, dword [0xa4d3a0]
mov eax, dword [0xa4d3a4]
add eax, edx
mov byte [eax], 0
jmp 0x4c8b61
mov eax, dword [0xa4d3a4]
sub eax, 1
mov dword [0xa4d3a4], eax
mov eax, dword [0xa4d3a4]
not eax
shr eax, 0x1f
test al, al
jne 0x4c8adb
mov eax, dword [0xa4d3a0]
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.0047bd62
mov dword [0xa4c778], eax
call fcn.004c722f
mov edx, eax
mov eax, dword [0xa4c778]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0047bec9
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0047bd62
mov dword [0x6c62fc], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.0047bbdf
mov edx, eax
mov eax, dword [0x6c62fc]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0047bec9
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa4d398], eax
mov eax, dword [0xa4d398]
cmp eax, 1
jle 0x4c8d9b
mov dword [0xa4d3a4], 0
mov dword [0xa4d398], 1
jmp 0x4c8c6c
mov eax, dword [0xa4d398]
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 [0xa4d3a4]
add eax, edx
mov dword [0xa4d3a4], eax
mov eax, dword [0xa4d398]
cmp eax, 1
je 0x4c8c5f
mov eax, dword [0xa4d3a4]
add eax, 1
mov dword [0xa4d3a4], eax
mov eax, dword [0xa4d398]
add eax, 1
mov dword [0xa4d398], eax
mov edx, dword [0xa4d398]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4c8c1a
mov eax, dword [0xa4d3a4]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.0047bd62
mov dword [0xa4bd44], eax
mov dword [0xa4d3a8], 0
mov dword [0xa4d398], 1
jmp 0x4c8d7e
mov eax, dword [0xa4d398]
cmp eax, 1
je 0x4c8ce8
mov eax, dword [0xa4bd44]
mov edx, dword [eax]
mov eax, dword [0xa4d3a8]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa4d3a8]
add eax, 1
mov dword [0xa4d3a8], eax
mov eax, dword [0xa4d398]
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 [0xa4d398]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa4bd44]
mov ebx, dword [ecx]
mov ecx, dword [0xa4d3a8]
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 [0xa4d398]
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 [0xa4d3a8]
add eax, edx
mov dword [0xa4d3a8], eax
mov eax, dword [0xa4d398]
add eax, 1
mov dword [0xa4d398], eax
mov edx, dword [0xa4d398]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4c8cc0
jmp 0x4c8dbe
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.0047bd62
mov dword [0xa4bd44], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa4bd4c], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa4bd48], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.004e3f60
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x4c8e08
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004e3f60
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x4c8dec
jmp 0x4c8e0f
mov dword [ebp - 0x3c], 0
call fcn.0046ff97
mov dword [0x6d0a44], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004e3f70
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4c8e6d
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 [0x6d0a40], eax
mov eax, dword [0x6d0a40]
imul eax, eax, 0x3e8
mov dword [0x6d0a40], eax
jmp 0x4c8e77
mov dword [0x6d0a40], 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 0x4c8eab
mov dword [esp], 0x30d4b
call fcn.00470533
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 0x4c8ee4
mov dword [0x6c62a8], 0x12e
mov dword [esp], 0x187ce
call fcn.00470842
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 0x4c8f1d
mov dword [0x6c62a8], 0x130
mov dword [esp], 0x187d0
call fcn.00470842
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 0x4c8f56
mov dword [0x6c62a8], 0x12f
mov dword [esp], 0x187cf
call fcn.00470842
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 0x4c8f8f
mov dword [0x6c62a8], 0x132
mov dword [esp], 0x187d2
call fcn.00470842
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 0x4c8fc8
mov dword [0x6c62a8], 0x131
mov dword [esp], 0x187d1
call fcn.00470842
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 0x4c9001
mov dword [0x6c62a8], 0x134
mov dword [esp], 0x187d4
call fcn.00470842
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 0x4c903a
mov dword [0x6c62a8], 0x133
mov dword [esp], 0x187d3
call fcn.00470842
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 0x4c9078
mov dword [0x6c62a8], 0x12d
mov dword [esp], 0x187cd
call fcn.00470842
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 0x4c90b6
mov dword [0x6c62a8], 0x12c
mov dword [esp], 0x187cc
call fcn.00470842
mov dword [ebp - 0x178], 1
call fcn.004cc19f
mov eax, dword [0x6c62a0]
mov dword [0x6c62a4], eax
mov byte [0x5a06ba], 0x1e
mov byte [0x5a06bb], 0
mov byte [0x5a06bc], 0x1e
mov byte [0x5a06bd], 0
lea eax, [ebp - 0x13c]
mov ecx, eax
call fcn.00536200
mov eax, dword [0x553520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5829e0
mov dword [esp], 0x6c6740
call sub.msvcrt.dll_memcpy
mov dword [0xa4d398], 0
jmp 0x4c914d
mov eax, dword [0xa4d398]
mov edx, dword [0xa4d398]
mov edx, dword [edx*4 + 0x6c6740]
or edx, 0xff000000
mov dword [eax*4 + 0x6c6740], edx
mov eax, dword [0xa4d398]
add eax, 1
mov dword [0xa4d398], eax
mov eax, dword [0xa4d398]
cmp eax, 0xff
setle al
test al, al
jne 0x4c9121
mov eax, dword [0x553524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x582de0
mov dword [esp], 0x6c6b40
call sub.msvcrt.dll_memcpy
mov dword [0xa4d398], 0
jmp 0x4c91b3
mov eax, dword [0xa4d398]
mov edx, dword [0xa4d398]
mov edx, dword [edx*4 + 0x6c6b40]
or edx, 0xff000000
mov dword [eax*4 + 0x6c6b40], edx
mov eax, dword [0xa4d398]
add eax, 1
mov dword [0xa4d398], eax
mov eax, dword [0xa4d398]
cmp eax, 0x3f
setle al
test al, al
jne 0x4c9187
mov dword [0xa3f1e0], 0
mov dword [0xa3f1e4], 0
mov dword [0xa3f1e8], 0
mov dword [0xa3f1ec], 0x808080
mov dword [0xa3f1f0], 0x808080
mov dword [0xa3f1f4], 0x808080
mov dword [0xa3f1f8], 0xffffff
mov dword [0xa3f1fc], 0xffffff
mov dword [0xa3f200], 0xffffff
mov dword [0xa3f204], 0
mov dword [0xa3f208], 0x808080
mov dword [0xa3f20c], 0xffffff
mov dword [0xa3f210], 0
mov dword [0xa3f214], 0x808080
mov dword [0xa3f218], 0xffffff
mov dword [0xa3f21c], 0
mov dword [0xa3f220], 0x808080
mov dword [0xa3f224], 0xffffff
mov eax, dword [0x553518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5769e0
mov dword [esp], 0xa3f240
call sub.msvcrt.dll_memcpy
mov eax, dword [0x55351c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x57a9e0
mov dword [esp], 0xa43240
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.0048064b
mov dword [0x55352c], 1
mov eax, dword [0x6b0c88]
test eax, eax
je 0x4c934d
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.004a2cb1
mov dword [0x5532e0], eax
mov eax, dword [0x5532e0]
neg eax
mov dword [0xa4d398], eax
mov edx, dword [0x6c6c44]
mov eax, dword [0xa4d398]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x12], 1
mov edx, dword [0x55307c]
mov eax, dword [0x553078]
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.004a2cb1
mov dword [0xa4cfac], eax
mov edx, dword [0x553078]
mov eax, dword [0x55307c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6c6c44]
mov eax, dword [0xa4cfac]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x570220
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x553084]
mov eax, dword [0x553080]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004a2cb1
mov dword [0xa4cfb0], eax
mov edx, dword [0x553080]
mov eax, dword [0x553084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6c6c44]
mov eax, dword [0xa4cfb0]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x570620
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa4d398], 0
mov eax, dword [0xa4d398]
add eax, 1
mov dword [0xa4d398], eax
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.004034c3
mov eax, dword [0xa4d398]
add eax, 1
mov dword [0xa4d398], eax
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x6b0ca0]
mov eax, dword [0xa4d398]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.004034c3
mov eax, dword [0xa4d398]
mov dword [0x6b0c9c], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x40583a
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], 0x4046ee
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 [0x6d0a38], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4c98bf
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 [0x6b6284]
test eax, eax
jne 0x4c967e
mov dword [0x6b60d8], 1
jmp 0x4c967e
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x4c967f
nop
mov eax, dword [0x6b60d8]
test eax, eax
sete al
test al, al
jne 0x4c9661
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.004403a4
mov dword [esp], 0x12
call fcn.004cf920
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.004cf8f0
mov dword [esp], 0x190
call fcn.004d4410
test eax, eax
sete al
test al, al
je 0x4c96f3
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x6b60e0]
test eax, eax
jne 0x4c9714
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.004403c6
jmp 0x4c972b
mov eax, dword [0x6b60e0]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.004403c6
mov dword [0x6b60d4], 1
mov dword [ebp - 0x178], 2
call fcn.00465d5d
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4c9763
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.00465d0d
sub esp, 4
mov dword [esp], eax
call fcn.00470a1b
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.00465d7d
sub esp, 4
test al, al
setne al
test al, al
je 0x4c9785
mov dword [0x6b60a8], 1
mov dword [esp], 0x4c4d9b
mov dword [ebp - 0x178], 2
call fcn.004d3450
mov dword [esp + 8], 0
mov dword [esp + 4], 0x4c201f
mov dword [esp], 8
call fcn.004d35a0
mov dword [esp], 0x4c1db7
call fcn.004d34f0
mov dword [esp], 0x4c1dd9
call fcn.004d3670
mov dword [esp], 0x4c1fe9
call fcn.004d3530
mov dword [esp], 0x4c2004
call fcn.004d36b0
mov dword [esp], 0x4c6a1f
call fcn.004d37b0
mov dword [esp], fcn.004c6a6b
call fcn.004d3830
mov dword [esp], 0x4c7003
call fcn.004d3870
mov dword [esp], 0x4c22c6
call fcn.004d34b0
mov dword [esp], 0x4c701d
call fcn.004d37f0
call fcn.004d5220
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.00536900
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x4c989f
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004e2520
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret