Function at 0x4a8001
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], 0x52fb60
mov dword [ebp - 0x160], 0x53074a
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x4a96ad
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c2290
call fcn.004c1ce0
mov dword [0x693b40], 0
mov dword [0x693b44], 0
mov dword [0x693b48], 0xffffffff
mov dword [0x693b4c], 0xffffffff
mov dword [0x693b50], 0
mov dword [0x693b54], 0xffffffff
mov dword [0x693b58], 0xffffffff
mov dword [0x693b5c], 0xffffffff
mov dword [0xa2ad38], 0
jmp 0x4a8144
mov eax, dword [0xa2ad38]
shl eax, 5
add eax, 0x693ac0
mov dword [eax], 1
mov eax, dword [0xa2ad38]
shl eax, 5
add eax, 0x693ac0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa2ad38]
shl eax, 5
add eax, 0x693ad0
mov dword [eax], 0
mov eax, dword [0xa2ad38]
shl eax, 5
add eax, 0x693ad0
mov dword [eax + 4], 0
mov eax, dword [0xa2ad38]
shl eax, 5
add eax, 0x693ad0
mov dword [eax + 8], 0
mov eax, dword [0xa2ad38]
shl eax, 5
add eax, 0x693ad0
mov dword [eax + 0xc], 0
mov eax, dword [0xa2ad38]
add eax, 1
mov dword [0xa2ad38], eax
mov eax, dword [0xa2ad38]
cmp eax, 2
setle al
test al, al
jne 0x4a80ba
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x693ab0]
test eax, eax
je 0x4a8179
mov dword [0x53206c], 0
mov eax, dword [0x693aac]
test eax, eax
je 0x4a818c
mov eax, dword [0x693aac]
mov dword [0x693a8c], eax
mov dword [esp], 0x1c
call fcn.0044ebf7
mov dword [0x6ae2b4], eax
mov dword [esp], 8
call fcn.0044ebf7
mov dword [0x693b30], eax
mov dword [esp], 0x14
call fcn.0044ebf7
mov dword [0x693b34], eax
mov dword [esp], 0x14
call fcn.0044ebf7
mov dword [0xa2a0d4], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.0044ec89
mov dword [0x693b64], eax
mov dword [esp], 0x70
call fcn.0044ebf7
mov dword [0x693b78], eax
mov eax, dword [0x6ae2b4]
mov dword [esp], eax
call fcn.0044ecc2
mov dword [0x6ae2b8], eax
mov eax, dword [0x6ae2b8]
mov dword [0x6ae2bc], eax
mov edx, dword [0x6ae2bc]
mov eax, dword [0x6ae2b4]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0044f170
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 [0x68eb4c]
test eax, eax
jne 0x4a8273
call fcn.0047d333
mov eax, dword [0x68ec48]
test eax, eax
je 0x4a8286
mov dword [0x693c24], 1
mov eax, dword [0x68ec44]
test eax, eax
je 0x4a82d4
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 0x4a82d4
mov dword [0x693c20], 1
mov eax, dword [0x68ec6c]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x68ec6c]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x68ec6c]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x68ec6c]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x68ec6c]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x68ec6c]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x68ec6c]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x68ec6c]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x68ec6c]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x68ec6c]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x68ec6c]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x68ec6c]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x68ec6c]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x68ec6c]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x68ec6c]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x68ec6c]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x68ec6c]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x68ec6c]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x68ec6c]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x68ec6c]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x68ec7c]
mov byte [eax], 1
mov eax, dword [0x68ec7c]
mov dword [eax + 4], 0
mov eax, dword [0x68ec7c]
mov byte [eax + 0x11], 0
mov eax, dword [0x68ec7c]
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 0x4a8452
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 [0xa29f34], eax
mov eax, dword [0x693c34]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x693c34]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x693c34]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x693c30]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x693c30]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x693c30]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x693c38]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x693c38]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x693c38]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x693c34]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x693c34]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x693c34]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x693c30]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x693c30]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x693c30]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x693c38]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x693c38]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x693c38]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6a45e4]
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.004511f8
mov dword [0xa2ad3c], eax
mov edx, dword [0x6a45e4]
mov eax, dword [0xa2ad3c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.004511f8
mov dword [0xa2ad3c], eax
mov edx, dword [0x6a45e4]
mov eax, dword [0xa2ad3c]
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], 0x6ae2c0
call sub.msvcrt.dll_memset
mov dword [0x6ae320], 0x6ae2c0
mov dword [0x6ae324], 0x6ae2c8
mov dword [0x6ae328], 0x6ae2cc
mov dword [0x6ae32c], 0x6ae2c4
mov dword [0x6ae330], 0x6ae2c1
mov dword [0x6ae334], 0x6ae2c9
mov dword [0x6ae338], 0x6ae2cd
mov dword [0x6ae33c], 0x6ae2c5
mov dword [0x6ae340], 0x6ae2c0
mov dword [0x6ae344], 0x6ae2c8
mov dword [0x6ae348], 0x6ae2cc
mov dword [0x6ae34c], 0x6ae2c4
mov dword [0x6ae350], 0x6ae2dc
mov dword [0x6ae354], 0x6ae2d8
mov dword [0x6ae358], 0x6ae2d0
mov dword [0x6ae35c], 0x6ae2d4
mov dword [0x6ae360], 0x6ae2c0
mov dword [0x6ae364], 0x6ae2c8
mov dword [0x6ae368], 0x6ae2cc
mov dword [0x6ae36c], 0x6ae2c4
mov dword [0x6ae370], 0x6ae2dc
mov dword [0x6ae374], 0x6ae2d8
mov dword [0x6ae378], 0x6ae2d0
mov dword [0x6ae37c], 0x6ae2d4
mov dword [0x6ae380], 0x6ae2e6
mov dword [0x6ae384], 0x6ae2e0
mov dword [0x6ae388], 0x6ae2e2
mov dword [0x6ae38c], 0x6ae2e4
mov dword [0x6ae390], 0x6ae2e8
mov dword [0x6ae394], 0x6ae2ea
mov dword [0xa2ad38], 0
jmp 0x4a874e
mov eax, dword [0xa2ad38]
mov byte [eax + 0xa29460], 0x20
mov eax, dword [0xa2ad38]
add eax, 1
mov dword [0xa2ad38], eax
mov eax, dword [0xa2ad38]
cmp eax, 0x1f
setle al
test al, al
jne 0x4a8735
mov byte [0xa295e0], 0x81
mov dword [0x6ae400], 0x100000
mov eax, dword [0x6ae400]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [0x68e294], eax
mov eax, dword [0x68e294]
mov dword [0x68e298], eax
mov edx, dword [0x68e294]
mov eax, dword [0x6ae400]
add eax, edx
mov dword [0x68e29c], eax
mov dword [esp + 8], 0x10fff3
mov dword [esp + 4], 0
mov dword [esp], 0x57e2a0
call sub.msvcrt.dll_memset
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0xa0c640
call sub.msvcrt.dll_memset
mov eax, 0x57e2a0
add eax, 0x500
mov dword [0x57e264], eax
mov eax, dword [0x53200c]
sub eax, 8
mov dword [0x53200c], eax
mov eax, dword [0x57e264]
mov edx, eax
mov eax, dword [0x53200c]
add eax, edx
mov dword [0x57e274], eax
mov eax, dword [0x57e274]
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.0045b7f4
mov dword [0x57e290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.0045b7f4
mov dword [0xa1c640], eax
mov eax, dword [0xa1c640]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0045bb9e
mov dword [0xa2a114], eax
call fcn.004a706b
mov edx, eax
mov eax, dword [0xa2a114]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045bd05
mov eax, 0xa2aaa8
movzx eax, byte [eax]
test al, al
jne 0x4a88ca
mov dword [esp], 0xa2aaa8
call fcn.0052f720
test eax, eax
setne al
test al, al
je 0x4a88ca
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa2ad40], eax
mov dword [esp], 0xa2aaa8
call fcn.0052f8c0
mov eax, dword [0xa2ad40]
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 [0xa2ad40]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa2ad38], eax
mov eax, dword [0xa2ad38]
sub eax, 1
mov dword [0xa2ad44], eax
jmp 0x4a898b
mov edx, dword [0xa2ad40]
mov eax, dword [0xa2ad44]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa2ad3c], eax
mov eax, dword [0xa2ad3c]
cmp eax, 0x5c
je 0x4a894d
mov eax, dword [0xa2ad3c]
cmp eax, 0x2f
je 0x4a894d
mov eax, dword [0xa2ad3c]
cmp eax, 0x3a
jne 0x4a897e
mov eax, dword [0xa2ad3c]
cmp eax, 0x3a
jne 0x4a896c
mov eax, dword [0xa2ad40]
mov edx, dword [0xa2ad44]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x4a899d
mov edx, dword [0xa2ad40]
mov eax, dword [0xa2ad44]
add eax, edx
mov byte [eax], 0
jmp 0x4a899d
mov eax, dword [0xa2ad44]
sub eax, 1
mov dword [0xa2ad44], eax
mov eax, dword [0xa2ad44]
not eax
shr eax, 0x1f
test al, al
jne 0x4a8917
mov eax, dword [0xa2ad40]
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.0045bb9e
mov dword [0xa2a118], eax
call fcn.004a706b
mov edx, eax
mov eax, dword [0xa2a118]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045bd05
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0045bb9e
mov dword [0x6a3c9c], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.0045ba1b
mov edx, eax
mov eax, dword [0x6a3c9c]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045bd05
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa2ad38], eax
mov eax, dword [0xa2ad38]
cmp eax, 1
jle 0x4a8bd7
mov dword [0xa2ad44], 0
mov dword [0xa2ad38], 1
jmp 0x4a8aa8
mov eax, dword [0xa2ad38]
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 [0xa2ad44]
add eax, edx
mov dword [0xa2ad44], eax
mov eax, dword [0xa2ad38]
cmp eax, 1
je 0x4a8a9b
mov eax, dword [0xa2ad44]
add eax, 1
mov dword [0xa2ad44], eax
mov eax, dword [0xa2ad38]
add eax, 1
mov dword [0xa2ad38], eax
mov edx, dword [0xa2ad38]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4a8a56
mov eax, dword [0xa2ad44]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.0045bb9e
mov dword [0xa296e4], eax
mov dword [0xa2ad48], 0
mov dword [0xa2ad38], 1
jmp 0x4a8bba
mov eax, dword [0xa2ad38]
cmp eax, 1
je 0x4a8b24
mov eax, dword [0xa296e4]
mov edx, dword [eax]
mov eax, dword [0xa2ad48]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa2ad48]
add eax, 1
mov dword [0xa2ad48], eax
mov eax, dword [0xa2ad38]
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 [0xa2ad38]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa296e4]
mov ebx, dword [ecx]
mov ecx, dword [0xa2ad48]
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 [0xa2ad38]
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 [0xa2ad48]
add eax, edx
mov dword [0xa2ad48], eax
mov eax, dword [0xa2ad38]
add eax, 1
mov dword [0xa2ad38], eax
mov edx, dword [0xa2ad38]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4a8afc
jmp 0x4a8bfa
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.0045bb9e
mov dword [0xa296e4], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa296ec], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa296e8], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.004c3d90
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x4a8c44
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004c3d90
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x4a8c28
jmp 0x4a8c4b
mov dword [ebp - 0x3c], 0
call fcn.0044fdd3
mov dword [0x6ae3e4], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004c3da0
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4a8ca9
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 [0x6ae3e0], eax
mov eax, dword [0x6ae3e0]
imul eax, eax, 0x3e8
mov dword [0x6ae3e0], eax
jmp 0x4a8cb3
mov dword [0x6ae3e0], 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 0x4a8ce7
mov dword [esp], 0x30d4b
call fcn.0045036f
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 0x4a8d20
mov dword [0x6a3c48], 0x12e
mov dword [esp], 0x187ce
call fcn.0045067e
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 0x4a8d59
mov dword [0x6a3c48], 0x130
mov dword [esp], 0x187d0
call fcn.0045067e
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 0x4a8d92
mov dword [0x6a3c48], 0x12f
mov dword [esp], 0x187cf
call fcn.0045067e
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 0x4a8dcb
mov dword [0x6a3c48], 0x132
mov dword [esp], 0x187d2
call fcn.0045067e
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 0x4a8e04
mov dword [0x6a3c48], 0x131
mov dword [esp], 0x187d1
call fcn.0045067e
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 0x4a8e3d
mov dword [0x6a3c48], 0x134
mov dword [esp], 0x187d4
call fcn.0045067e
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 0x4a8e76
mov dword [0x6a3c48], 0x133
mov dword [esp], 0x187d3
call fcn.0045067e
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 0x4a8eb4
mov dword [0x6a3c48], 0x12d
mov dword [esp], 0x187cd
call fcn.0045067e
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 0x4a8ef2
mov dword [0x6a3c48], 0x12c
mov dword [esp], 0x187cc
call fcn.0045067e
mov dword [ebp - 0x178], 1
call fcn.004abfdb
mov eax, dword [0x6a3c40]
mov dword [0x6a3c44], eax
mov byte [0x57e6ba], 0x1e
mov byte [0x57e6bb], 0
mov byte [0x57e6bc], 0x1e
mov byte [0x57e6bd], 0
lea eax, [ebp - 0x13c]
mov ecx, eax
call fcn.00516030
mov eax, dword [0x532520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5615c0
mov dword [esp], 0x6a40e0
call sub.msvcrt.dll_memcpy
mov dword [0xa2ad38], 0
jmp 0x4a8f89
mov eax, dword [0xa2ad38]
mov edx, dword [0xa2ad38]
mov edx, dword [edx*4 + 0x6a40e0]
or edx, 0xff000000
mov dword [eax*4 + 0x6a40e0], edx
mov eax, dword [0xa2ad38]
add eax, 1
mov dword [0xa2ad38], eax
mov eax, dword [0xa2ad38]
cmp eax, 0xff
setle al
test al, al
jne 0x4a8f5d
mov eax, dword [0x532524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5619c0
mov dword [esp], 0x6a44e0
call sub.msvcrt.dll_memcpy
mov dword [0xa2ad38], 0
jmp 0x4a8fef
mov eax, dword [0xa2ad38]
mov edx, dword [0xa2ad38]
mov edx, dword [edx*4 + 0x6a44e0]
or edx, 0xff000000
mov dword [eax*4 + 0x6a44e0], edx
mov eax, dword [0xa2ad38]
add eax, 1
mov dword [0xa2ad38], eax
mov eax, dword [0xa2ad38]
cmp eax, 0x3f
setle al
test al, al
jne 0x4a8fc3
mov dword [0xa1cb80], 0
mov dword [0xa1cb84], 0
mov dword [0xa1cb88], 0
mov dword [0xa1cb8c], 0x808080
mov dword [0xa1cb90], 0x808080
mov dword [0xa1cb94], 0x808080
mov dword [0xa1cb98], 0xffffff
mov dword [0xa1cb9c], 0xffffff
mov dword [0xa1cba0], 0xffffff
mov dword [0xa1cba4], 0
mov dword [0xa1cba8], 0x808080
mov dword [0xa1cbac], 0xffffff
mov dword [0xa1cbb0], 0
mov dword [0xa1cbb4], 0x808080
mov dword [0xa1cbb8], 0xffffff
mov dword [0xa1cbbc], 0
mov dword [0xa1cbc0], 0x808080
mov dword [0xa1cbc4], 0xffffff
mov eax, dword [0x532518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5555c0
mov dword [esp], 0xa1cbe0
call sub.msvcrt.dll_memcpy
mov eax, dword [0x53251c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5595c0
mov dword [esp], 0xa20be0
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.00460487
mov dword [0x53252c], 1
mov eax, dword [0x68ec44]
test eax, eax
je 0x4a9189
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.00482aed
mov dword [0x5322e0], eax
mov eax, dword [0x5322e0]
neg eax
mov dword [0xa2ad38], eax
mov edx, dword [0x6a45e4]
mov eax, dword [0xa2ad38]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x12], 1
mov edx, dword [0x53207c]
mov eax, dword [0x532078]
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.00482aed
mov dword [0xa2a94c], eax
mov edx, dword [0x532078]
mov eax, dword [0x53207c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6a45e4]
mov eax, dword [0xa2a94c]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x54ee00
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x532084]
mov eax, dword [0x532080]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00482aed
mov dword [0xa2a950], eax
mov edx, dword [0x532080]
mov eax, dword [0x532084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6a45e4]
mov eax, dword [0xa2a950]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x54f200
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa2ad38], 0
mov eax, dword [0xa2ad38]
add eax, 1
mov dword [0xa2ad38], eax
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.004033f2
mov eax, dword [0xa2ad38]
add eax, 1
mov dword [0xa2ad38], eax
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x68ec5c]
mov eax, dword [0xa2ad38]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.004033f2
mov eax, dword [0xa2ad38]
mov dword [0x68ec58], 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 [0x6ae3d8], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4a96fb
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 [0x693c24]
test eax, eax
jne 0x4a94ba
mov dword [0x693a78], 1
jmp 0x4a94ba
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x4a94bb
nop
mov eax, dword [0x693a78]
test eax, eax
sete al
test al, al
jne 0x4a949d
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.004201e0
mov dword [esp], 0x12
call fcn.004af750
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.004af720
mov dword [esp], 0x190
call fcn.004b4240
test eax, eax
sete al
test al, al
je 0x4a952f
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x693a80]
test eax, eax
jne 0x4a9550
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.00420202
jmp 0x4a9567
mov eax, dword [0x693a80]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.00420202
mov dword [0x693a74], 1
mov dword [ebp - 0x178], 2
call fcn.00445b99
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4a959f
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.00445b49
sub esp, 4
mov dword [esp], eax
call fcn.00450857
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.00445bb9
sub esp, 4
test al, al
setne al
test al, al
je 0x4a95c1
mov dword [0x693a48], 1
mov dword [esp], 0x4a4bd7
mov dword [ebp - 0x178], 2
call fcn.004b3280
mov dword [esp + 8], 0
mov dword [esp + 4], 0x4a1e5b
mov dword [esp], 8
call fcn.004b33d0
mov dword [esp], 0x4a1bf3
call fcn.004b3320
mov dword [esp], 0x4a1c15
call fcn.004b34a0
mov dword [esp], 0x4a1e25
call fcn.004b3360
mov dword [esp], 0x4a1e40
call fcn.004b34e0
mov dword [esp], 0x4a685b
call fcn.004b35e0
mov dword [esp], fcn.004a68a7
call fcn.004b3660
mov dword [esp], 0x4a6e3f
call fcn.004b36a0
mov dword [esp], 0x4a2102
call fcn.004b32e0
mov dword [esp], 0x4a6e59
call fcn.004b3620
call fcn.004b5050
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.00516730
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x4a96db
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c2350
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret