Function at 0x4a421d
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], 0x52bda0
mov dword [ebp - 0x160], 0x52c98a
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x4a58c9
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004be4b0
call fcn.004bdf00
mov dword [0x690760], 0
mov dword [0x690764], 0
mov dword [0x690768], 0xffffffff
mov dword [0x69076c], 0xffffffff
mov dword [0x690770], 0
mov dword [0x690774], 0xffffffff
mov dword [0x690778], 0xffffffff
mov dword [0x69077c], 0xffffffff
mov dword [0xa27958], 0
jmp 0x4a4360
mov eax, dword [0xa27958]
shl eax, 5
add eax, 0x6906e0
mov dword [eax], 1
mov eax, dword [0xa27958]
shl eax, 5
add eax, 0x6906e0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa27958]
shl eax, 5
add eax, 0x6906f0
mov dword [eax], 0
mov eax, dword [0xa27958]
shl eax, 5
add eax, 0x6906f0
mov dword [eax + 4], 0
mov eax, dword [0xa27958]
shl eax, 5
add eax, 0x6906f0
mov dword [eax + 8], 0
mov eax, dword [0xa27958]
shl eax, 5
add eax, 0x6906f0
mov dword [eax + 0xc], 0
mov eax, dword [0xa27958]
add eax, 1
mov dword [0xa27958], eax
mov eax, dword [0xa27958]
cmp eax, 2
setle al
test al, al
jne 0x4a42d6
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x6906d0]
test eax, eax
je 0x4a4395
mov dword [0x52f06c], 0
mov eax, dword [0x6906cc]
test eax, eax
je 0x4a43a8
mov eax, dword [0x6906cc]
mov dword [0x6906ac], eax
mov dword [esp], 0x1c
call fcn.0044ae13
mov dword [0x6aaed4], eax
mov dword [esp], 8
call fcn.0044ae13
mov dword [0x690750], eax
mov dword [esp], 0x14
call fcn.0044ae13
mov dword [0x690754], eax
mov dword [esp], 0x14
call fcn.0044ae13
mov dword [0xa26cf4], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.0044aea5
mov dword [0x690784], eax
mov dword [esp], 0x70
call fcn.0044ae13
mov dword [0x690798], eax
mov eax, dword [0x6aaed4]
mov dword [esp], eax
call fcn.0044aede
mov dword [0x6aaed8], eax
mov eax, dword [0x6aaed8]
mov dword [0x6aaedc], eax
mov edx, dword [0x6aaedc]
mov eax, dword [0x6aaed4]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0044b38c
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 [0x68bb4c]
test eax, eax
jne 0x4a448f
call fcn.0047954f
mov eax, dword [0x68bd18]
test eax, eax
je 0x4a44a2
mov dword [0x690844], 1
mov eax, dword [0x68bd14]
test eax, eax
je 0x4a44f0
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 0x4a44f0
mov dword [0x690840], 1
mov eax, dword [0x68bd3c]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x68bd3c]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x68bd3c]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x68bd3c]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x68bd3c]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x68bd3c]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x68bd3c]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x68bd3c]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x68bd3c]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x68bd3c]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x68bd3c]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x68bd3c]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x68bd3c]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x68bd3c]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x68bd3c]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x68bd3c]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x68bd3c]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x68bd3c]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x68bd3c]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x68bd3c]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x68bd4c]
mov byte [eax], 1
mov eax, dword [0x68bd4c]
mov dword [eax + 4], 0
mov eax, dword [0x68bd4c]
mov byte [eax + 0x11], 0
mov eax, dword [0x68bd4c]
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 0x4a466e
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 [0xa26b54], eax
mov eax, dword [0x690854]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x690854]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x690854]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x690850]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x690850]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x690850]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x690858]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x690858]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x690858]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x690854]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x690854]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x690854]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x690850]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x690850]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x690850]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x690858]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x690858]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x690858]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6a1204]
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.0044d414
mov dword [0xa2795c], eax
mov edx, dword [0x6a1204]
mov eax, dword [0xa2795c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.0044d414
mov dword [0xa2795c], eax
mov edx, dword [0x6a1204]
mov eax, dword [0xa2795c]
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], 0x6aaee0
call sub.msvcrt.dll_memset
mov dword [0x6aaf40], 0x6aaee0
mov dword [0x6aaf44], 0x6aaee8
mov dword [0x6aaf48], 0x6aaeec
mov dword [0x6aaf4c], 0x6aaee4
mov dword [0x6aaf50], 0x6aaee1
mov dword [0x6aaf54], 0x6aaee9
mov dword [0x6aaf58], 0x6aaeed
mov dword [0x6aaf5c], 0x6aaee5
mov dword [0x6aaf60], 0x6aaee0
mov dword [0x6aaf64], 0x6aaee8
mov dword [0x6aaf68], 0x6aaeec
mov dword [0x6aaf6c], 0x6aaee4
mov dword [0x6aaf70], 0x6aaefc
mov dword [0x6aaf74], 0x6aaef8
mov dword [0x6aaf78], 0x6aaef0
mov dword [0x6aaf7c], 0x6aaef4
mov dword [0x6aaf80], 0x6aaee0
mov dword [0x6aaf84], 0x6aaee8
mov dword [0x6aaf88], 0x6aaeec
mov dword [0x6aaf8c], 0x6aaee4
mov dword [0x6aaf90], 0x6aaefc
mov dword [0x6aaf94], 0x6aaef8
mov dword [0x6aaf98], 0x6aaef0
mov dword [0x6aaf9c], 0x6aaef4
mov dword [0x6aafa0], 0x6aaf06
mov dword [0x6aafa4], 0x6aaf00
mov dword [0x6aafa8], 0x6aaf02
mov dword [0x6aafac], 0x6aaf04
mov dword [0x6aafb0], 0x6aaf08
mov dword [0x6aafb4], 0x6aaf0a
mov dword [0xa27958], 0
jmp 0x4a496a
mov eax, dword [0xa27958]
mov byte [eax + 0xa26080], 0x20
mov eax, dword [0xa27958]
add eax, 1
mov dword [0xa27958], eax
mov eax, dword [0xa27958]
cmp eax, 0x1f
setle al
test al, al
jne 0x4a4951
mov byte [0xa26200], 0x81
mov dword [0x6ab020], 0x100000
mov eax, dword [0x6ab020]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [0x68b294], eax
mov eax, dword [0x68b294]
mov dword [0x68b298], eax
mov edx, dword [0x68b294]
mov eax, dword [0x6ab020]
add eax, edx
mov dword [0x68b29c], eax
mov dword [esp + 8], 0x10fff3
mov dword [esp + 4], 0
mov dword [esp], 0x57b2a0
call sub.msvcrt.dll_memset
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0xa09260
call sub.msvcrt.dll_memset
mov eax, 0x57b2a0
add eax, 0x500
mov dword [0x57b264], eax
mov eax, dword [0x52f00c]
sub eax, 8
mov dword [0x52f00c], eax
mov eax, dword [0x57b264]
mov edx, eax
mov eax, dword [0x52f00c]
add eax, edx
mov dword [0x57b274], eax
mov eax, dword [0x57b274]
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.00457a10
mov dword [0x57b290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.00457a10
mov dword [0xa19260], eax
mov eax, dword [0xa19260]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00457dba
mov dword [0xa26d34], eax
call fcn.004a3287
mov edx, eax
mov eax, dword [0xa26d34]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00457f21
mov eax, 0xa276c8
movzx eax, byte [eax]
test al, al
jne 0x4a4ae6
mov dword [esp], 0xa276c8
call fcn.0052b960
test eax, eax
setne al
test al, al
je 0x4a4ae6
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa27960], eax
mov dword [esp], 0xa276c8
call fcn.0052bb00
mov eax, dword [0xa27960]
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 [0xa27960]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa27958], eax
mov eax, dword [0xa27958]
sub eax, 1
mov dword [0xa27964], eax
jmp 0x4a4ba7
mov edx, dword [0xa27960]
mov eax, dword [0xa27964]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa2795c], eax
mov eax, dword [0xa2795c]
cmp eax, 0x5c
je 0x4a4b69
mov eax, dword [0xa2795c]
cmp eax, 0x2f
je 0x4a4b69
mov eax, dword [0xa2795c]
cmp eax, 0x3a
jne 0x4a4b9a
mov eax, dword [0xa2795c]
cmp eax, 0x3a
jne 0x4a4b88
mov eax, dword [0xa27960]
mov edx, dword [0xa27964]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x4a4bb9
mov edx, dword [0xa27960]
mov eax, dword [0xa27964]
add eax, edx
mov byte [eax], 0
jmp 0x4a4bb9
mov eax, dword [0xa27964]
sub eax, 1
mov dword [0xa27964], eax
mov eax, dword [0xa27964]
not eax
shr eax, 0x1f
test al, al
jne 0x4a4b33
mov eax, dword [0xa27960]
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.00457dba
mov dword [0xa26d38], eax
call fcn.004a3287
mov edx, eax
mov eax, dword [0xa26d38]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00457f21
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00457dba
mov dword [0x6a08bc], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.00457c37
mov edx, eax
mov eax, dword [0x6a08bc]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00457f21
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa27958], eax
mov eax, dword [0xa27958]
cmp eax, 1
jle 0x4a4df3
mov dword [0xa27964], 0
mov dword [0xa27958], 1
jmp 0x4a4cc4
mov eax, dword [0xa27958]
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 [0xa27964]
add eax, edx
mov dword [0xa27964], eax
mov eax, dword [0xa27958]
cmp eax, 1
je 0x4a4cb7
mov eax, dword [0xa27964]
add eax, 1
mov dword [0xa27964], eax
mov eax, dword [0xa27958]
add eax, 1
mov dword [0xa27958], eax
mov edx, dword [0xa27958]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4a4c72
mov eax, dword [0xa27964]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.00457dba
mov dword [0xa26304], eax
mov dword [0xa27968], 0
mov dword [0xa27958], 1
jmp 0x4a4dd6
mov eax, dword [0xa27958]
cmp eax, 1
je 0x4a4d40
mov eax, dword [0xa26304]
mov edx, dword [eax]
mov eax, dword [0xa27968]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa27968]
add eax, 1
mov dword [0xa27968], eax
mov eax, dword [0xa27958]
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 [0xa27958]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa26304]
mov ebx, dword [ecx]
mov ecx, dword [0xa27968]
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 [0xa27958]
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 [0xa27968]
add eax, edx
mov dword [0xa27968], eax
mov eax, dword [0xa27958]
add eax, 1
mov dword [0xa27958], eax
mov edx, dword [0xa27958]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4a4d18
jmp 0x4a4e16
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.00457dba
mov dword [0xa26304], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa2630c], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa26308], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.004bffb0
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x4a4e60
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004bffb0
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x4a4e44
jmp 0x4a4e67
mov dword [ebp - 0x3c], 0
call fcn.0044bfef
mov dword [0x6ab004], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004bffc0
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4a4ec5
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 [0x6ab000], eax
mov eax, dword [0x6ab000]
imul eax, eax, 0x3e8
mov dword [0x6ab000], eax
jmp 0x4a4ecf
mov dword [0x6ab000], 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 0x4a4f03
mov dword [esp], 0x30d4b
call fcn.0044c58b
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 0x4a4f3c
mov dword [0x6a0868], 0x12e
mov dword [esp], 0x187ce
call fcn.0044c89a
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 0x4a4f75
mov dword [0x6a0868], 0x130
mov dword [esp], 0x187d0
call fcn.0044c89a
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 0x4a4fae
mov dword [0x6a0868], 0x12f
mov dword [esp], 0x187cf
call fcn.0044c89a
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 0x4a4fe7
mov dword [0x6a0868], 0x132
mov dword [esp], 0x187d2
call fcn.0044c89a
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 0x4a5020
mov dword [0x6a0868], 0x131
mov dword [esp], 0x187d1
call fcn.0044c89a
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 0x4a5059
mov dword [0x6a0868], 0x134
mov dword [esp], 0x187d4
call fcn.0044c89a
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 0x4a5092
mov dword [0x6a0868], 0x133
mov dword [esp], 0x187d3
call fcn.0044c89a
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 0x4a50d0
mov dword [0x6a0868], 0x12d
mov dword [esp], 0x187cd
call fcn.0044c89a
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 0x4a510e
mov dword [0x6a0868], 0x12c
mov dword [esp], 0x187cc
call fcn.0044c89a
mov dword [ebp - 0x178], 1
call fcn.004a81f7
mov eax, dword [0x6a0860]
mov dword [0x6a0864], eax
mov byte [0x57b6ba], 0x1e
mov byte [0x57b6bb], 0
mov byte [0x57b6bc], 0x1e
mov byte [0x57b6bd], 0
lea eax, [ebp - 0x13c]
mov ecx, eax
call fcn.00512260
mov eax, dword [0x52f520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x55e520
mov dword [esp], 0x6a0d00
call sub.msvcrt.dll_memcpy
mov dword [0xa27958], 0
jmp 0x4a51a5
mov eax, dword [0xa27958]
mov edx, dword [0xa27958]
mov edx, dword [edx*4 + 0x6a0d00]
or edx, 0xff000000
mov dword [eax*4 + 0x6a0d00], edx
mov eax, dword [0xa27958]
add eax, 1
mov dword [0xa27958], eax
mov eax, dword [0xa27958]
cmp eax, 0xff
setle al
test al, al
jne 0x4a5179
mov eax, dword [0x52f524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x55e920
mov dword [esp], 0x6a1100
call sub.msvcrt.dll_memcpy
mov dword [0xa27958], 0
jmp 0x4a520b
mov eax, dword [0xa27958]
mov edx, dword [0xa27958]
mov edx, dword [edx*4 + 0x6a1100]
or edx, 0xff000000
mov dword [eax*4 + 0x6a1100], edx
mov eax, dword [0xa27958]
add eax, 1
mov dword [0xa27958], eax
mov eax, dword [0xa27958]
cmp eax, 0x3f
setle al
test al, al
jne 0x4a51df
mov dword [0xa197a0], 0
mov dword [0xa197a4], 0
mov dword [0xa197a8], 0
mov dword [0xa197ac], 0x808080
mov dword [0xa197b0], 0x808080
mov dword [0xa197b4], 0x808080
mov dword [0xa197b8], 0xffffff
mov dword [0xa197bc], 0xffffff
mov dword [0xa197c0], 0xffffff
mov dword [0xa197c4], 0
mov dword [0xa197c8], 0x808080
mov dword [0xa197cc], 0xffffff
mov dword [0xa197d0], 0
mov dword [0xa197d4], 0x808080
mov dword [0xa197d8], 0xffffff
mov dword [0xa197dc], 0
mov dword [0xa197e0], 0x808080
mov dword [0xa197e4], 0xffffff
mov eax, dword [0x52f518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x552520
mov dword [esp], 0xa19800
call sub.msvcrt.dll_memcpy
mov eax, dword [0x52f51c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x556520
mov dword [esp], 0xa1d800
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.0045c6a3
mov dword [0x52f52c], 1
mov eax, dword [0x68bd14]
test eax, eax
je 0x4a53a5
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.0047ed09
mov dword [0x52f2e0], eax
mov eax, dword [0x52f2e0]
neg eax
mov dword [0xa27958], eax
mov edx, dword [0x6a1204]
mov eax, dword [0xa27958]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x12], 1
mov edx, dword [0x52f07c]
mov eax, dword [0x52f078]
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.0047ed09
mov dword [0xa2756c], eax
mov edx, dword [0x52f078]
mov eax, dword [0x52f07c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6a1204]
mov eax, dword [0xa2756c]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x54bd60
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x52f084]
mov eax, dword [0x52f080]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0047ed09
mov dword [0xa27570], eax
mov edx, dword [0x52f080]
mov eax, dword [0x52f084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6a1204]
mov eax, dword [0xa27570]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x54c160
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa27958], 0
mov eax, dword [0xa27958]
add eax, 1
mov dword [0xa27958], eax
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403497
mov eax, dword [0xa27958]
add eax, 1
mov dword [0xa27958], eax
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x68bd2c]
mov eax, dword [0xa27958]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403497
mov eax, dword [0xa27958]
mov dword [0x68bd28], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x40580e
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], 0x4046c2
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 [0x6aaff8], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4a5917
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 [0x690844]
test eax, eax
jne 0x4a56d6
mov dword [0x690698], 1
jmp 0x4a56d6
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x4a56d7
nop
mov eax, dword [0x690698]
test eax, eax
sete al
test al, al
jne 0x4a56b9
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.0041c3fc
mov dword [esp], 0x12
call fcn.004ab970
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.004ab940
mov dword [esp], 0x190
call fcn.004b0460
test eax, eax
sete al
test al, al
je 0x4a574b
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x6906a0]
test eax, eax
jne 0x4a576c
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.0041c41e
jmp 0x4a5783
mov eax, dword [0x6906a0]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.0041c41e
mov dword [0x690694], 1
mov dword [ebp - 0x178], 2
call fcn.00441db5
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4a57bb
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.00441d65
sub esp, 4
mov dword [esp], eax
call fcn.0044ca73
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.00441dd5
sub esp, 4
test al, al
setne al
test al, al
je 0x4a57dd
mov dword [0x690668], 1
mov dword [esp], 0x4a0df3
mov dword [ebp - 0x178], 2
call fcn.004af4a0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x49e077
mov dword [esp], 8
call fcn.004af5f0
mov dword [esp], 0x49de0f
call fcn.004af540
mov dword [esp], 0x49de31
call fcn.004af6c0
mov dword [esp], 0x49e041
call fcn.004af580
mov dword [esp], 0x49e05c
call fcn.004af700
mov dword [esp], 0x4a2a77
call fcn.004af800
mov dword [esp], fcn.004a2ac3
call fcn.004af880
mov dword [esp], 0x4a305b
call fcn.004af8c0
mov dword [esp], 0x49e31e
call fcn.004af500
mov dword [esp], 0x4a3075
call fcn.004af840
call fcn.004b1270
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.00512960
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x4a58f7
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004be570
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret