Function at 0x4aee15
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], 0x536980
mov dword [ebp - 0x160], 0x53756a
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x4b04c1
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c90b0
call fcn.004c8b00
mov dword [0x69ada0], 0
mov dword [0x69ada4], 0
mov dword [0x69ada8], 0xffffffff
mov dword [0x69adac], 0xffffffff
mov dword [0x69adb0], 0
mov dword [0x69adb4], 0xffffffff
mov dword [0x69adb8], 0xffffffff
mov dword [0x69adbc], 0xffffffff
mov dword [0xa31f98], 0
jmp 0x4aef58
mov eax, dword [0xa31f98]
shl eax, 5
add eax, 0x69ad20
mov dword [eax], 1
mov eax, dword [0xa31f98]
shl eax, 5
add eax, 0x69ad20
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa31f98]
shl eax, 5
add eax, 0x69ad30
mov dword [eax], 0
mov eax, dword [0xa31f98]
shl eax, 5
add eax, 0x69ad30
mov dword [eax + 4], 0
mov eax, dword [0xa31f98]
shl eax, 5
add eax, 0x69ad30
mov dword [eax + 8], 0
mov eax, dword [0xa31f98]
shl eax, 5
add eax, 0x69ad30
mov dword [eax + 0xc], 0
mov eax, dword [0xa31f98]
add eax, 1
mov dword [0xa31f98], eax
mov eax, dword [0xa31f98]
cmp eax, 2
setle al
test al, al
jne 0x4aeece
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x69ad10]
test eax, eax
je 0x4aef8d
mov dword [0x53906c], 0
mov eax, dword [0x69ad0c]
test eax, eax
je 0x4aefa0
mov eax, dword [0x69ad0c]
mov dword [0x69acec], eax
mov dword [esp], 0x1c
call fcn.00455a0b
mov dword [0x6b5514], eax
mov dword [esp], 8
call fcn.00455a0b
mov dword [0x69ad90], eax
mov dword [esp], 0x14
call fcn.00455a0b
mov dword [0x69ad94], eax
mov dword [esp], 0x14
call fcn.00455a0b
mov dword [0xa31334], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.00455a9d
mov dword [0x69adc4], eax
mov dword [esp], 0x70
call fcn.00455a0b
mov dword [0x69add8], eax
mov eax, dword [0x6b5514]
mov dword [esp], eax
call fcn.00455ad6
mov dword [0x6b5518], eax
mov eax, dword [0x6b5518]
mov dword [0x6b551c], eax
mov edx, dword [0x6b551c]
mov eax, dword [0x6b5514]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00455f84
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 0x4af087
call fcn.00484147
mov eax, dword [0x695c5c]
test eax, eax
je 0x4af09a
mov dword [0x69ae84], 1
mov eax, dword [0x695c58]
test eax, eax
je 0x4af0e8
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 0x4af0e8
mov dword [0x69ae80], 1
mov eax, dword [0x695c80]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x695c80]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x695c80]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x695c80]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x695c80]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x695c80]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x695c80]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x695c80]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x695c80]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x695c80]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x695c80]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x695c80]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x695c80]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x695c80]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x695c80]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x695c80]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x695c80]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x695c80]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x695c80]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x695c80]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x695c90]
mov byte [eax], 1
mov eax, dword [0x695c90]
mov dword [eax + 4], 0
mov eax, dword [0x695c90]
mov byte [eax + 0x11], 0
mov eax, dword [0x695c90]
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 0x4af266
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 [0xa31194], eax
mov eax, dword [0x69ae94]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x69ae94]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x69ae94]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x69ae90]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x69ae90]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x69ae90]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x69ae98]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x69ae98]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x69ae98]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x69ae94]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x69ae94]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x69ae94]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x69ae90]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x69ae90]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x69ae90]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x69ae98]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x69ae98]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x69ae98]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6ab844]
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.0045800c
mov dword [0xa31f9c], eax
mov edx, dword [0x6ab844]
mov eax, dword [0xa31f9c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.0045800c
mov dword [0xa31f9c], eax
mov edx, dword [0x6ab844]
mov eax, dword [0xa31f9c]
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], 0x6b5520
call sub.msvcrt.dll_memset
mov dword [0x6b5580], 0x6b5520
mov dword [0x6b5584], 0x6b5528
mov dword [0x6b5588], 0x6b552c
mov dword [0x6b558c], 0x6b5524
mov dword [0x6b5590], 0x6b5521
mov dword [0x6b5594], 0x6b5529
mov dword [0x6b5598], 0x6b552d
mov dword [0x6b559c], 0x6b5525
mov dword [0x6b55a0], 0x6b5520
mov dword [0x6b55a4], 0x6b5528
mov dword [0x6b55a8], 0x6b552c
mov dword [0x6b55ac], 0x6b5524
mov dword [0x6b55b0], 0x6b553c
mov dword [0x6b55b4], 0x6b5538
mov dword [0x6b55b8], 0x6b5530
mov dword [0x6b55bc], 0x6b5534
mov dword [0x6b55c0], 0x6b5520
mov dword [0x6b55c4], 0x6b5528
mov dword [0x6b55c8], 0x6b552c
mov dword [0x6b55cc], 0x6b5524
mov dword [0x6b55d0], 0x6b553c
mov dword [0x6b55d4], 0x6b5538
mov dword [0x6b55d8], 0x6b5530
mov dword [0x6b55dc], 0x6b5534
mov dword [0x6b55e0], 0x6b5546
mov dword [0x6b55e4], 0x6b5540
mov dword [0x6b55e8], 0x6b5542
mov dword [0x6b55ec], 0x6b5544
mov dword [0x6b55f0], 0x6b5548
mov dword [0x6b55f4], 0x6b554a
mov dword [0xa31f98], 0
jmp 0x4af562
mov eax, dword [0xa31f98]
mov byte [eax + 0xa306c0], 0x20
mov eax, dword [0xa31f98]
add eax, 1
mov dword [0xa31f98], eax
mov eax, dword [0xa31f98]
cmp eax, 0x1f
setle al
test al, al
jne 0x4af549
mov byte [0xa30840], 0x81
mov dword [0x6b5660], 0x100000
mov eax, dword [0x6b5660]
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 [0x6b5660]
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], 0xa138a0
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.00462608
mov dword [0x585290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.00462608
mov dword [0xa238a0], eax
mov eax, dword [0xa238a0]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004629b2
mov dword [0xa31374], eax
call fcn.004ade7f
mov edx, eax
mov eax, dword [0xa31374]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00462b19
mov eax, 0xa31d08
movzx eax, byte [eax]
test al, al
jne 0x4af6de
mov dword [esp], 0xa31d08
call fcn.00536540
test eax, eax
setne al
test al, al
je 0x4af6de
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa31fa0], eax
mov dword [esp], 0xa31d08
call fcn.005366e0
mov eax, dword [0xa31fa0]
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 [0xa31fa0]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa31f98], eax
mov eax, dword [0xa31f98]
sub eax, 1
mov dword [0xa31fa4], eax
jmp 0x4af79f
mov edx, dword [0xa31fa0]
mov eax, dword [0xa31fa4]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa31f9c], eax
mov eax, dword [0xa31f9c]
cmp eax, 0x5c
je 0x4af761
mov eax, dword [0xa31f9c]
cmp eax, 0x2f
je 0x4af761
mov eax, dword [0xa31f9c]
cmp eax, 0x3a
jne 0x4af792
mov eax, dword [0xa31f9c]
cmp eax, 0x3a
jne 0x4af780
mov eax, dword [0xa31fa0]
mov edx, dword [0xa31fa4]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x4af7b1
mov edx, dword [0xa31fa0]
mov eax, dword [0xa31fa4]
add eax, edx
mov byte [eax], 0
jmp 0x4af7b1
mov eax, dword [0xa31fa4]
sub eax, 1
mov dword [0xa31fa4], eax
mov eax, dword [0xa31fa4]
not eax
shr eax, 0x1f
test al, al
jne 0x4af72b
mov eax, dword [0xa31fa0]
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.004629b2
mov dword [0xa31378], eax
call fcn.004ade7f
mov edx, eax
mov eax, dword [0xa31378]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00462b19
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004629b2
mov dword [0x6aaefc], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.0046282f
mov edx, eax
mov eax, dword [0x6aaefc]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00462b19
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa31f98], eax
mov eax, dword [0xa31f98]
cmp eax, 1
jle 0x4af9eb
mov dword [0xa31fa4], 0
mov dword [0xa31f98], 1
jmp 0x4af8bc
mov eax, dword [0xa31f98]
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 [0xa31fa4]
add eax, edx
mov dword [0xa31fa4], eax
mov eax, dword [0xa31f98]
cmp eax, 1
je 0x4af8af
mov eax, dword [0xa31fa4]
add eax, 1
mov dword [0xa31fa4], eax
mov eax, dword [0xa31f98]
add eax, 1
mov dword [0xa31f98], eax
mov edx, dword [0xa31f98]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4af86a
mov eax, dword [0xa31fa4]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.004629b2
mov dword [0xa30944], eax
mov dword [0xa31fa8], 0
mov dword [0xa31f98], 1
jmp 0x4af9ce
mov eax, dword [0xa31f98]
cmp eax, 1
je 0x4af938
mov eax, dword [0xa30944]
mov edx, dword [eax]
mov eax, dword [0xa31fa8]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa31fa8]
add eax, 1
mov dword [0xa31fa8], eax
mov eax, dword [0xa31f98]
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 [0xa31f98]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa30944]
mov ebx, dword [ecx]
mov ecx, dword [0xa31fa8]
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 [0xa31f98]
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 [0xa31fa8]
add eax, edx
mov dword [0xa31fa8], eax
mov eax, dword [0xa31f98]
add eax, 1
mov dword [0xa31f98], eax
mov edx, dword [0xa31f98]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4af910
jmp 0x4afa0e
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.004629b2
mov dword [0xa30944], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa3094c], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa30948], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.004cabb0
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x4afa58
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004cabb0
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x4afa3c
jmp 0x4afa5f
mov dword [ebp - 0x3c], 0
call fcn.00456be7
mov dword [0x6b5644], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004cabc0
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4afabd
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 [0x6b5640], eax
mov eax, dword [0x6b5640]
imul eax, eax, 0x3e8
mov dword [0x6b5640], eax
jmp 0x4afac7
mov dword [0x6b5640], 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 0x4afafb
mov dword [esp], 0x30d4b
call fcn.00457183
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 0x4afb34
mov dword [0x6aaea8], 0x12e
mov dword [esp], 0x187ce
call fcn.00457492
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 0x4afb6d
mov dword [0x6aaea8], 0x130
mov dword [esp], 0x187d0
call fcn.00457492
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 0x4afba6
mov dword [0x6aaea8], 0x12f
mov dword [esp], 0x187cf
call fcn.00457492
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 0x4afbdf
mov dword [0x6aaea8], 0x132
mov dword [esp], 0x187d2
call fcn.00457492
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 0x4afc18
mov dword [0x6aaea8], 0x131
mov dword [esp], 0x187d1
call fcn.00457492
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 0x4afc51
mov dword [0x6aaea8], 0x134
mov dword [esp], 0x187d4
call fcn.00457492
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 0x4afc8a
mov dword [0x6aaea8], 0x133
mov dword [esp], 0x187d3
call fcn.00457492
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 0x4afcc8
mov dword [0x6aaea8], 0x12d
mov dword [esp], 0x187cd
call fcn.00457492
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 0x4afd06
mov dword [0x6aaea8], 0x12c
mov dword [esp], 0x187cc
call fcn.00457492
mov dword [ebp - 0x178], 1
call fcn.004b2def
mov eax, dword [0x6aaea0]
mov dword [0x6aaea4], 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.0051ce50
mov eax, dword [0x539520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x568600
mov dword [esp], 0x6ab340
call sub.msvcrt.dll_memcpy
mov dword [0xa31f98], 0
jmp 0x4afd9d
mov eax, dword [0xa31f98]
mov edx, dword [0xa31f98]
mov edx, dword [edx*4 + 0x6ab340]
or edx, 0xff000000
mov dword [eax*4 + 0x6ab340], edx
mov eax, dword [0xa31f98]
add eax, 1
mov dword [0xa31f98], eax
mov eax, dword [0xa31f98]
cmp eax, 0xff
setle al
test al, al
jne 0x4afd71
mov eax, dword [0x539524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x568a00
mov dword [esp], 0x6ab740
call sub.msvcrt.dll_memcpy
mov dword [0xa31f98], 0
jmp 0x4afe03
mov eax, dword [0xa31f98]
mov edx, dword [0xa31f98]
mov edx, dword [edx*4 + 0x6ab740]
or edx, 0xff000000
mov dword [eax*4 + 0x6ab740], edx
mov eax, dword [0xa31f98]
add eax, 1
mov dword [0xa31f98], eax
mov eax, dword [0xa31f98]
cmp eax, 0x3f
setle al
test al, al
jne 0x4afdd7
mov dword [0xa23de0], 0
mov dword [0xa23de4], 0
mov dword [0xa23de8], 0
mov dword [0xa23dec], 0x808080
mov dword [0xa23df0], 0x808080
mov dword [0xa23df4], 0x808080
mov dword [0xa23df8], 0xffffff
mov dword [0xa23dfc], 0xffffff
mov dword [0xa23e00], 0xffffff
mov dword [0xa23e04], 0
mov dword [0xa23e08], 0x808080
mov dword [0xa23e0c], 0xffffff
mov dword [0xa23e10], 0
mov dword [0xa23e14], 0x808080
mov dword [0xa23e18], 0xffffff
mov dword [0xa23e1c], 0
mov dword [0xa23e20], 0x808080
mov dword [0xa23e24], 0xffffff
mov eax, dword [0x539518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x55c600
mov dword [esp], 0xa23e40
call sub.msvcrt.dll_memcpy
mov eax, dword [0x53951c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x560600
mov dword [esp], 0xa27e40
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.0046729b
mov dword [0x53952c], 1
mov eax, dword [0x695c58]
test eax, eax
je 0x4aff9d
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.00489901
mov dword [0x5392e0], eax
mov eax, dword [0x5392e0]
neg eax
mov dword [0xa31f98], eax
mov edx, dword [0x6ab844]
mov eax, dword [0xa31f98]
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.00489901
mov dword [0xa31bac], eax
mov edx, dword [0x539078]
mov eax, dword [0x53907c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6ab844]
mov eax, dword [0xa31bac]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x555e40
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.00489901
mov dword [0xa31bb0], eax
mov edx, dword [0x539080]
mov eax, dword [0x539084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6ab844]
mov eax, dword [0xa31bb0]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x556240
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa31f98], 0
mov eax, dword [0xa31f98]
add eax, 1
mov dword [0xa31f98], eax
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403432
mov eax, dword [0xa31f98]
add eax, 1
mov dword [0xa31f98], eax
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x695c70]
mov eax, dword [0xa31f98]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403432
mov eax, dword [0xa31f98]
mov dword [0x695c6c], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4057a9
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], 0x40465d
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 [0x6b5638], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4b050f
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 [0x69ae84]
test eax, eax
jne 0x4b02ce
mov dword [0x69acd8], 1
jmp 0x4b02ce
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x4b02cf
nop
mov eax, dword [0x69acd8]
test eax, eax
sete al
test al, al
jne 0x4b02b1
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.00426ff4
mov dword [esp], 0x12
call fcn.004b6570
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.004b6540
mov dword [esp], 0x190
call fcn.004bb060
test eax, eax
sete al
test al, al
je 0x4b0343
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x69ace0]
test eax, eax
jne 0x4b0364
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.00427016
jmp 0x4b037b
mov eax, dword [0x69ace0]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.00427016
mov dword [0x69acd4], 1
mov dword [ebp - 0x178], 2
call fcn.0044c9ad
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4b03b3
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.0044c95d
sub esp, 4
mov dword [esp], eax
call fcn.0045766b
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.0044c9cd
sub esp, 4
test al, al
setne al
test al, al
je 0x4b03d5
mov dword [0x69aca8], 1
mov dword [esp], 0x4ab9eb
mov dword [ebp - 0x178], 2
call fcn.004ba0a0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x4a8c6f
mov dword [esp], 8
call fcn.004ba1f0
mov dword [esp], 0x4a8a07
call fcn.004ba140
mov dword [esp], 0x4a8a29
call fcn.004ba2c0
mov dword [esp], 0x4a8c39
call fcn.004ba180
mov dword [esp], 0x4a8c54
call fcn.004ba300
mov dword [esp], 0x4ad66f
call fcn.004ba400
mov dword [esp], fcn.004ad6bb
call fcn.004ba480
mov dword [esp], 0x4adc53
call fcn.004ba4c0
mov dword [esp], 0x4a8f16
call fcn.004ba100
mov dword [esp], 0x4adc6d
call fcn.004ba440
call fcn.004bbe70
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.0051d550
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x4b04ef
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c9170
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret