Function at 0x4a95b5
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], 0x531120
mov dword [ebp - 0x160], 0x531d0a
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x4aac61
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c3850
call fcn.004c32a0
mov dword [0x695b80], 0
mov dword [0x695b84], 0
mov dword [0x695b88], 0xffffffff
mov dword [0x695b8c], 0xffffffff
mov dword [0x695b90], 0
mov dword [0x695b94], 0xffffffff
mov dword [0x695b98], 0xffffffff
mov dword [0x695b9c], 0xffffffff
mov dword [0xa2cd78], 0
jmp 0x4a96f8
mov eax, dword [0xa2cd78]
shl eax, 5
add eax, 0x695b00
mov dword [eax], 1
mov eax, dword [0xa2cd78]
shl eax, 5
add eax, 0x695b00
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa2cd78]
shl eax, 5
add eax, 0x695b10
mov dword [eax], 0
mov eax, dword [0xa2cd78]
shl eax, 5
add eax, 0x695b10
mov dword [eax + 4], 0
mov eax, dword [0xa2cd78]
shl eax, 5
add eax, 0x695b10
mov dword [eax + 8], 0
mov eax, dword [0xa2cd78]
shl eax, 5
add eax, 0x695b10
mov dword [eax + 0xc], 0
mov eax, dword [0xa2cd78]
add eax, 1
mov dword [0xa2cd78], eax
mov eax, dword [0xa2cd78]
cmp eax, 2
setle al
test al, al
jne 0x4a966e
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x695af0]
test eax, eax
je 0x4a972d
mov dword [0x53406c], 0
mov eax, dword [0x695aec]
test eax, eax
je 0x4a9740
mov eax, dword [0x695aec]
mov dword [0x695acc], eax
mov dword [esp], 0x1c
call fcn.004501ab
mov dword [0x6b02f4], eax
mov dword [esp], 8
call fcn.004501ab
mov dword [0x695b70], eax
mov dword [esp], 0x14
call fcn.004501ab
mov dword [0x695b74], eax
mov dword [esp], 0x14
call fcn.004501ab
mov dword [0xa2c114], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.0045023d
mov dword [0x695ba4], eax
mov dword [esp], 0x70
call fcn.004501ab
mov dword [0x695bb8], eax
mov eax, dword [0x6b02f4]
mov dword [esp], eax
call fcn.00450276
mov dword [0x6b02f8], eax
mov eax, dword [0x6b02f8]
mov dword [0x6b02fc], eax
mov edx, dword [0x6b02fc]
mov eax, dword [0x6b02f4]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00450724
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 [0x690b4c]
test eax, eax
jne 0x4a9827
call fcn.0047e8e7
mov eax, dword [0x690c50]
test eax, eax
je 0x4a983a
mov dword [0x695c64], 1
mov eax, dword [0x690c4c]
test eax, eax
je 0x4a9888
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 0x4a9888
mov dword [0x695c60], 1
mov eax, dword [0x690c74]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x690c74]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x690c74]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x690c74]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x690c74]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x690c74]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x690c74]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x690c74]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x690c74]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x690c74]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x690c74]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x690c74]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x690c74]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x690c74]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x690c74]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x690c74]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x690c74]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x690c74]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x690c74]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x690c74]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x690c84]
mov byte [eax], 1
mov eax, dword [0x690c84]
mov dword [eax + 4], 0
mov eax, dword [0x690c84]
mov byte [eax + 0x11], 0
mov eax, dword [0x690c84]
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 0x4a9a06
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 [0xa2bf74], eax
mov eax, dword [0x695c74]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x695c74]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x695c74]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x695c70]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x695c70]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x695c70]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x695c78]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x695c78]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x695c78]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x695c74]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x695c74]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x695c74]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x695c70]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x695c70]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x695c70]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x695c78]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x695c78]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x695c78]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6a6624]
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.004527ac
mov dword [0xa2cd7c], eax
mov edx, dword [0x6a6624]
mov eax, dword [0xa2cd7c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.004527ac
mov dword [0xa2cd7c], eax
mov edx, dword [0x6a6624]
mov eax, dword [0xa2cd7c]
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], 0x6b0300
call sub.msvcrt.dll_memset
mov dword [0x6b0360], 0x6b0300
mov dword [0x6b0364], 0x6b0308
mov dword [0x6b0368], 0x6b030c
mov dword [0x6b036c], 0x6b0304
mov dword [0x6b0370], 0x6b0301
mov dword [0x6b0374], 0x6b0309
mov dword [0x6b0378], 0x6b030d
mov dword [0x6b037c], 0x6b0305
mov dword [0x6b0380], 0x6b0300
mov dword [0x6b0384], 0x6b0308
mov dword [0x6b0388], 0x6b030c
mov dword [0x6b038c], 0x6b0304
mov dword [0x6b0390], 0x6b031c
mov dword [0x6b0394], 0x6b0318
mov dword [0x6b0398], 0x6b0310
mov dword [0x6b039c], 0x6b0314
mov dword [0x6b03a0], 0x6b0300
mov dword [0x6b03a4], 0x6b0308
mov dword [0x6b03a8], 0x6b030c
mov dword [0x6b03ac], 0x6b0304
mov dword [0x6b03b0], 0x6b031c
mov dword [0x6b03b4], 0x6b0318
mov dword [0x6b03b8], 0x6b0310
mov dword [0x6b03bc], 0x6b0314
mov dword [0x6b03c0], 0x6b0326
mov dword [0x6b03c4], 0x6b0320
mov dword [0x6b03c8], 0x6b0322
mov dword [0x6b03cc], 0x6b0324
mov dword [0x6b03d0], 0x6b0328
mov dword [0x6b03d4], 0x6b032a
mov dword [0xa2cd78], 0
jmp 0x4a9d02
mov eax, dword [0xa2cd78]
mov byte [eax + 0xa2b4a0], 0x20
mov eax, dword [0xa2cd78]
add eax, 1
mov dword [0xa2cd78], eax
mov eax, dword [0xa2cd78]
cmp eax, 0x1f
setle al
test al, al
jne 0x4a9ce9
mov byte [0xa2b620], 0x81
mov dword [0x6b0440], 0x100000
mov eax, dword [0x6b0440]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [0x690294], eax
mov eax, dword [0x690294]
mov dword [0x690298], eax
mov edx, dword [0x690294]
mov eax, dword [0x6b0440]
add eax, edx
mov dword [0x69029c], eax
mov dword [esp + 8], 0x10fff3
mov dword [esp + 4], 0
mov dword [esp], 0x5802a0
call sub.msvcrt.dll_memset
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0xa0e680
call sub.msvcrt.dll_memset
mov eax, 0x5802a0
add eax, 0x500
mov dword [0x580264], eax
mov eax, dword [0x53400c]
sub eax, 8
mov dword [0x53400c], eax
mov eax, dword [0x580264]
mov edx, eax
mov eax, dword [0x53400c]
add eax, edx
mov dword [0x580274], eax
mov eax, dword [0x580274]
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.0045cda8
mov dword [0x580290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.0045cda8
mov dword [0xa1e680], eax
mov eax, dword [0xa1e680]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0045d152
mov dword [0xa2c154], eax
call fcn.004a861f
mov edx, eax
mov eax, dword [0xa2c154]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045d2b9
mov eax, 0xa2cae8
movzx eax, byte [eax]
test al, al
jne 0x4a9e7e
mov dword [esp], 0xa2cae8
call fcn.00530ce0
test eax, eax
setne al
test al, al
je 0x4a9e7e
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa2cd80], eax
mov dword [esp], 0xa2cae8
call fcn.00530e80
mov eax, dword [0xa2cd80]
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 [0xa2cd80]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa2cd78], eax
mov eax, dword [0xa2cd78]
sub eax, 1
mov dword [0xa2cd84], eax
jmp 0x4a9f3f
mov edx, dword [0xa2cd80]
mov eax, dword [0xa2cd84]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa2cd7c], eax
mov eax, dword [0xa2cd7c]
cmp eax, 0x5c
je 0x4a9f01
mov eax, dword [0xa2cd7c]
cmp eax, 0x2f
je 0x4a9f01
mov eax, dword [0xa2cd7c]
cmp eax, 0x3a
jne 0x4a9f32
mov eax, dword [0xa2cd7c]
cmp eax, 0x3a
jne 0x4a9f20
mov eax, dword [0xa2cd80]
mov edx, dword [0xa2cd84]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x4a9f51
mov edx, dword [0xa2cd80]
mov eax, dword [0xa2cd84]
add eax, edx
mov byte [eax], 0
jmp 0x4a9f51
mov eax, dword [0xa2cd84]
sub eax, 1
mov dword [0xa2cd84], eax
mov eax, dword [0xa2cd84]
not eax
shr eax, 0x1f
test al, al
jne 0x4a9ecb
mov eax, dword [0xa2cd80]
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.0045d152
mov dword [0xa2c158], eax
call fcn.004a861f
mov edx, eax
mov eax, dword [0xa2c158]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045d2b9
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0045d152
mov dword [0x6a5cdc], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.0045cfcf
mov edx, eax
mov eax, dword [0x6a5cdc]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045d2b9
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa2cd78], eax
mov eax, dword [0xa2cd78]
cmp eax, 1
jle 0x4aa18b
mov dword [0xa2cd84], 0
mov dword [0xa2cd78], 1
jmp 0x4aa05c
mov eax, dword [0xa2cd78]
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 [0xa2cd84]
add eax, edx
mov dword [0xa2cd84], eax
mov eax, dword [0xa2cd78]
cmp eax, 1
je 0x4aa04f
mov eax, dword [0xa2cd84]
add eax, 1
mov dword [0xa2cd84], eax
mov eax, dword [0xa2cd78]
add eax, 1
mov dword [0xa2cd78], eax
mov edx, dword [0xa2cd78]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4aa00a
mov eax, dword [0xa2cd84]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.0045d152
mov dword [0xa2b724], eax
mov dword [0xa2cd88], 0
mov dword [0xa2cd78], 1
jmp 0x4aa16e
mov eax, dword [0xa2cd78]
cmp eax, 1
je 0x4aa0d8
mov eax, dword [0xa2b724]
mov edx, dword [eax]
mov eax, dword [0xa2cd88]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa2cd88]
add eax, 1
mov dword [0xa2cd88], eax
mov eax, dword [0xa2cd78]
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 [0xa2cd78]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa2b724]
mov ebx, dword [ecx]
mov ecx, dword [0xa2cd88]
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 [0xa2cd78]
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 [0xa2cd88]
add eax, edx
mov dword [0xa2cd88], eax
mov eax, dword [0xa2cd78]
add eax, 1
mov dword [0xa2cd78], eax
mov edx, dword [0xa2cd78]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4aa0b0
jmp 0x4aa1ae
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.0045d152
mov dword [0xa2b724], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa2b72c], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa2b728], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.004c5350
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x4aa1f8
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004c5350
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x4aa1dc
jmp 0x4aa1ff
mov dword [ebp - 0x3c], 0
call fcn.00451387
mov dword [0x6b0424], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004c5360
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4aa25d
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 [0x6b0420], eax
mov eax, dword [0x6b0420]
imul eax, eax, 0x3e8
mov dword [0x6b0420], eax
jmp 0x4aa267
mov dword [0x6b0420], 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 0x4aa29b
mov dword [esp], 0x30d4b
call fcn.00451923
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 0x4aa2d4
mov dword [0x6a5c88], 0x12e
mov dword [esp], 0x187ce
call fcn.00451c32
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 0x4aa30d
mov dword [0x6a5c88], 0x130
mov dword [esp], 0x187d0
call fcn.00451c32
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 0x4aa346
mov dword [0x6a5c88], 0x12f
mov dword [esp], 0x187cf
call fcn.00451c32
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 0x4aa37f
mov dword [0x6a5c88], 0x132
mov dword [esp], 0x187d2
call fcn.00451c32
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 0x4aa3b8
mov dword [0x6a5c88], 0x131
mov dword [esp], 0x187d1
call fcn.00451c32
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 0x4aa3f1
mov dword [0x6a5c88], 0x134
mov dword [esp], 0x187d4
call fcn.00451c32
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 0x4aa42a
mov dword [0x6a5c88], 0x133
mov dword [esp], 0x187d3
call fcn.00451c32
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 0x4aa468
mov dword [0x6a5c88], 0x12d
mov dword [esp], 0x187cd
call fcn.00451c32
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 0x4aa4a6
mov dword [0x6a5c88], 0x12c
mov dword [esp], 0x187cc
call fcn.00451c32
mov dword [ebp - 0x178], 1
call fcn.004ad58f
mov eax, dword [0x6a5c80]
mov dword [0x6a5c84], eax
mov byte [0x5806ba], 0x1e
mov byte [0x5806bb], 0
mov byte [0x5806bc], 0x1e
mov byte [0x5806bd], 0
lea eax, [ebp - 0x13c]
mov ecx, eax
call fcn.005175f0
mov eax, dword [0x534520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5635e0
mov dword [esp], 0x6a6120
call sub.msvcrt.dll_memcpy
mov dword [0xa2cd78], 0
jmp 0x4aa53d
mov eax, dword [0xa2cd78]
mov edx, dword [0xa2cd78]
mov edx, dword [edx*4 + 0x6a6120]
or edx, 0xff000000
mov dword [eax*4 + 0x6a6120], edx
mov eax, dword [0xa2cd78]
add eax, 1
mov dword [0xa2cd78], eax
mov eax, dword [0xa2cd78]
cmp eax, 0xff
setle al
test al, al
jne 0x4aa511
mov eax, dword [0x534524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5639e0
mov dword [esp], 0x6a6520
call sub.msvcrt.dll_memcpy
mov dword [0xa2cd78], 0
jmp 0x4aa5a3
mov eax, dword [0xa2cd78]
mov edx, dword [0xa2cd78]
mov edx, dword [edx*4 + 0x6a6520]
or edx, 0xff000000
mov dword [eax*4 + 0x6a6520], edx
mov eax, dword [0xa2cd78]
add eax, 1
mov dword [0xa2cd78], eax
mov eax, dword [0xa2cd78]
cmp eax, 0x3f
setle al
test al, al
jne 0x4aa577
mov dword [0xa1ebc0], 0
mov dword [0xa1ebc4], 0
mov dword [0xa1ebc8], 0
mov dword [0xa1ebcc], 0x808080
mov dword [0xa1ebd0], 0x808080
mov dword [0xa1ebd4], 0x808080
mov dword [0xa1ebd8], 0xffffff
mov dword [0xa1ebdc], 0xffffff
mov dword [0xa1ebe0], 0xffffff
mov dword [0xa1ebe4], 0
mov dword [0xa1ebe8], 0x808080
mov dword [0xa1ebec], 0xffffff
mov dword [0xa1ebf0], 0
mov dword [0xa1ebf4], 0x808080
mov dword [0xa1ebf8], 0xffffff
mov dword [0xa1ebfc], 0
mov dword [0xa1ec00], 0x808080
mov dword [0xa1ec04], 0xffffff
mov eax, dword [0x534518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5575e0
mov dword [esp], 0xa1ec20
call sub.msvcrt.dll_memcpy
mov eax, dword [0x53451c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x55b5e0
mov dword [esp], 0xa22c20
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.00461a3b
mov dword [0x53452c], 1
mov eax, dword [0x690c4c]
test eax, eax
je 0x4aa73d
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.004840a1
mov dword [0x5342e0], eax
mov eax, dword [0x5342e0]
neg eax
mov dword [0xa2cd78], eax
mov edx, dword [0x6a6624]
mov eax, dword [0xa2cd78]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x12], 1
mov edx, dword [0x53407c]
mov eax, dword [0x534078]
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.004840a1
mov dword [0xa2c98c], eax
mov edx, dword [0x534078]
mov eax, dword [0x53407c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6a6624]
mov eax, dword [0xa2c98c]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x550e20
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x534084]
mov eax, dword [0x534080]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004840a1
mov dword [0xa2c990], eax
mov edx, dword [0x534080]
mov eax, dword [0x534084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6a6624]
mov eax, dword [0xa2c990]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x551220
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa2cd78], 0
mov eax, dword [0xa2cd78]
add eax, 1
mov dword [0xa2cd78], eax
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.0040340c
mov eax, dword [0xa2cd78]
add eax, 1
mov dword [0xa2cd78], eax
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x690c64]
mov eax, dword [0xa2cd78]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.0040340c
mov eax, dword [0xa2cd78]
mov dword [0x690c60], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x405783
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], 0x404637
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 [0x6b0418], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4aacaf
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 [0x695c64]
test eax, eax
jne 0x4aaa6e
mov dword [0x695ab8], 1
jmp 0x4aaa6e
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x4aaa6f
nop
mov eax, dword [0x695ab8]
test eax, eax
sete al
test al, al
jne 0x4aaa51
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.00421794
mov dword [esp], 0x12
call fcn.004b0d10
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.004b0ce0
mov dword [esp], 0x190
call fcn.004b5800
test eax, eax
sete al
test al, al
je 0x4aaae3
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x695ac0]
test eax, eax
jne 0x4aab04
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.004217b6
jmp 0x4aab1b
mov eax, dword [0x695ac0]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.004217b6
mov dword [0x695ab4], 1
mov dword [ebp - 0x178], 2
call fcn.0044714d
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4aab53
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.004470fd
sub esp, 4
mov dword [esp], eax
call fcn.00451e0b
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.0044716d
sub esp, 4
test al, al
setne al
test al, al
je 0x4aab75
mov dword [0x695a88], 1
mov dword [esp], 0x4a618b
mov dword [ebp - 0x178], 2
call fcn.004b4840
mov dword [esp + 8], 0
mov dword [esp + 4], 0x4a340f
mov dword [esp], 8
call fcn.004b4990
mov dword [esp], 0x4a31a7
call fcn.004b48e0
mov dword [esp], 0x4a31c9
call fcn.004b4a60
mov dword [esp], 0x4a33d9
call fcn.004b4920
mov dword [esp], 0x4a33f4
call fcn.004b4aa0
mov dword [esp], 0x4a7e0f
call fcn.004b4ba0
mov dword [esp], fcn.004a7e5b
call fcn.004b4c20
mov dword [esp], 0x4a83f3
call fcn.004b4c60
mov dword [esp], 0x4a36b6
call fcn.004b48a0
mov dword [esp], 0x4a840d
call fcn.004b4be0
call fcn.004b6610
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.00517cf0
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x4aac8f
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c3910
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret