Function at 0x4ab169
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], 0x532cd0
mov dword [ebp - 0x160], 0x5338ba
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x4ac815
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c5400
call fcn.004c4e50
mov dword [0x696ba0], 0
mov dword [0x696ba4], 0
mov dword [0x696ba8], 0xffffffff
mov dword [0x696bac], 0xffffffff
mov dword [0x696bb0], 0
mov dword [0x696bb4], 0xffffffff
mov dword [0x696bb8], 0xffffffff
mov dword [0x696bbc], 0xffffffff
mov dword [0xa2dd98], 0
jmp 0x4ab2ac
mov eax, dword [0xa2dd98]
shl eax, 5
add eax, 0x696b20
mov dword [eax], 1
mov eax, dword [0xa2dd98]
shl eax, 5
add eax, 0x696b20
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa2dd98]
shl eax, 5
add eax, 0x696b30
mov dword [eax], 0
mov eax, dword [0xa2dd98]
shl eax, 5
add eax, 0x696b30
mov dword [eax + 4], 0
mov eax, dword [0xa2dd98]
shl eax, 5
add eax, 0x696b30
mov dword [eax + 8], 0
mov eax, dword [0xa2dd98]
shl eax, 5
add eax, 0x696b30
mov dword [eax + 0xc], 0
mov eax, dword [0xa2dd98]
add eax, 1
mov dword [0xa2dd98], eax
mov eax, dword [0xa2dd98]
cmp eax, 2
setle al
test al, al
jne 0x4ab222
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x696b10]
test eax, eax
je 0x4ab2e1
mov dword [0x53506c], 0
mov eax, dword [0x696b0c]
test eax, eax
je 0x4ab2f4
mov eax, dword [0x696b0c]
mov dword [0x696aec], eax
mov dword [esp], 0x1c
call fcn.00451d5f
mov dword [0x6b1314], eax
mov dword [esp], 8
call fcn.00451d5f
mov dword [0x696b90], eax
mov dword [esp], 0x14
call fcn.00451d5f
mov dword [0x696b94], eax
mov dword [esp], 0x14
call fcn.00451d5f
mov dword [0xa2d134], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.00451df1
mov dword [0x696bc4], eax
mov dword [esp], 0x70
call fcn.00451d5f
mov dword [0x696bd8], eax
mov eax, dword [0x6b1314]
mov dword [esp], eax
call fcn.00451e2a
mov dword [0x6b1318], eax
mov eax, dword [0x6b1318]
mov dword [0x6b131c], eax
mov edx, dword [0x6b131c]
mov eax, dword [0x6b1314]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004522d8
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 [0x691b4c]
test eax, eax
jne 0x4ab3db
call fcn.0048049b
mov eax, dword [0x691c58]
test eax, eax
je 0x4ab3ee
mov dword [0x696c84], 1
mov eax, dword [0x691c54]
test eax, eax
je 0x4ab43c
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 0x4ab43c
mov dword [0x696c80], 1
mov eax, dword [0x691c7c]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x691c7c]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x691c7c]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x691c7c]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x691c7c]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x691c7c]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x691c7c]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x691c7c]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x691c7c]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x691c7c]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x691c7c]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x691c7c]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x691c7c]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x691c7c]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x691c7c]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x691c7c]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x691c7c]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x691c7c]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x691c7c]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x691c7c]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x691c8c]
mov byte [eax], 1
mov eax, dword [0x691c8c]
mov dword [eax + 4], 0
mov eax, dword [0x691c8c]
mov byte [eax + 0x11], 0
mov eax, dword [0x691c8c]
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 0x4ab5ba
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 [0xa2cf94], eax
mov eax, dword [0x696c94]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x696c94]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x696c94]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x696c90]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x696c90]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x696c90]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x696c98]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x696c98]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x696c98]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x696c94]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x696c94]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x696c94]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x696c90]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x696c90]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x696c90]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x696c98]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x696c98]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x696c98]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6a7644]
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.00454360
mov dword [0xa2dd9c], eax
mov edx, dword [0x6a7644]
mov eax, dword [0xa2dd9c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.00454360
mov dword [0xa2dd9c], eax
mov edx, dword [0x6a7644]
mov eax, dword [0xa2dd9c]
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], 0x6b1320
call sub.msvcrt.dll_memset
mov dword [0x6b1380], 0x6b1320
mov dword [0x6b1384], 0x6b1328
mov dword [0x6b1388], 0x6b132c
mov dword [0x6b138c], 0x6b1324
mov dword [0x6b1390], 0x6b1321
mov dword [0x6b1394], 0x6b1329
mov dword [0x6b1398], 0x6b132d
mov dword [0x6b139c], 0x6b1325
mov dword [0x6b13a0], 0x6b1320
mov dword [0x6b13a4], 0x6b1328
mov dword [0x6b13a8], 0x6b132c
mov dword [0x6b13ac], 0x6b1324
mov dword [0x6b13b0], 0x6b133c
mov dword [0x6b13b4], 0x6b1338
mov dword [0x6b13b8], 0x6b1330
mov dword [0x6b13bc], 0x6b1334
mov dword [0x6b13c0], 0x6b1320
mov dword [0x6b13c4], 0x6b1328
mov dword [0x6b13c8], 0x6b132c
mov dword [0x6b13cc], 0x6b1324
mov dword [0x6b13d0], 0x6b133c
mov dword [0x6b13d4], 0x6b1338
mov dword [0x6b13d8], 0x6b1330
mov dword [0x6b13dc], 0x6b1334
mov dword [0x6b13e0], 0x6b1346
mov dword [0x6b13e4], 0x6b1340
mov dword [0x6b13e8], 0x6b1342
mov dword [0x6b13ec], 0x6b1344
mov dword [0x6b13f0], 0x6b1348
mov dword [0x6b13f4], 0x6b134a
mov dword [0xa2dd98], 0
jmp 0x4ab8b6
mov eax, dword [0xa2dd98]
mov byte [eax + 0xa2c4c0], 0x20
mov eax, dword [0xa2dd98]
add eax, 1
mov dword [0xa2dd98], eax
mov eax, dword [0xa2dd98]
cmp eax, 0x1f
setle al
test al, al
jne 0x4ab89d
mov byte [0xa2c640], 0x81
mov dword [0x6b1460], 0x100000
mov eax, dword [0x6b1460]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [0x691294], eax
mov eax, dword [0x691294]
mov dword [0x691298], eax
mov edx, dword [0x691294]
mov eax, dword [0x6b1460]
add eax, edx
mov dword [0x69129c], eax
mov dword [esp + 8], 0x10fff3
mov dword [esp + 4], 0
mov dword [esp], 0x5812a0
call sub.msvcrt.dll_memset
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0xa0f6a0
call sub.msvcrt.dll_memset
mov eax, 0x5812a0
add eax, 0x500
mov dword [0x581264], eax
mov eax, dword [0x53500c]
sub eax, 8
mov dword [0x53500c], eax
mov eax, dword [0x581264]
mov edx, eax
mov eax, dword [0x53500c]
add eax, edx
mov dword [0x581274], eax
mov eax, dword [0x581274]
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.0045e95c
mov dword [0x581290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.0045e95c
mov dword [0xa1f6a0], eax
mov eax, dword [0xa1f6a0]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0045ed06
mov dword [0xa2d174], eax
call fcn.004aa1d3
mov edx, eax
mov eax, dword [0xa2d174]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045ee6d
mov eax, 0xa2db08
movzx eax, byte [eax]
test al, al
jne 0x4aba32
mov dword [esp], 0xa2db08
call fcn.00532890
test eax, eax
setne al
test al, al
je 0x4aba32
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa2dda0], eax
mov dword [esp], 0xa2db08
call fcn.00532a30
mov eax, dword [0xa2dda0]
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 [0xa2dda0]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa2dd98], eax
mov eax, dword [0xa2dd98]
sub eax, 1
mov dword [0xa2dda4], eax
jmp 0x4abaf3
mov edx, dword [0xa2dda0]
mov eax, dword [0xa2dda4]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa2dd9c], eax
mov eax, dword [0xa2dd9c]
cmp eax, 0x5c
je 0x4abab5
mov eax, dword [0xa2dd9c]
cmp eax, 0x2f
je 0x4abab5
mov eax, dword [0xa2dd9c]
cmp eax, 0x3a
jne 0x4abae6
mov eax, dword [0xa2dd9c]
cmp eax, 0x3a
jne 0x4abad4
mov eax, dword [0xa2dda0]
mov edx, dword [0xa2dda4]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x4abb05
mov edx, dword [0xa2dda0]
mov eax, dword [0xa2dda4]
add eax, edx
mov byte [eax], 0
jmp 0x4abb05
mov eax, dword [0xa2dda4]
sub eax, 1
mov dword [0xa2dda4], eax
mov eax, dword [0xa2dda4]
not eax
shr eax, 0x1f
test al, al
jne 0x4aba7f
mov eax, dword [0xa2dda0]
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.0045ed06
mov dword [0xa2d178], eax
call fcn.004aa1d3
mov edx, eax
mov eax, dword [0xa2d178]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045ee6d
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0045ed06
mov dword [0x6a6cfc], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.0045eb83
mov edx, eax
mov eax, dword [0x6a6cfc]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0045ee6d
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa2dd98], eax
mov eax, dword [0xa2dd98]
cmp eax, 1
jle 0x4abd3f
mov dword [0xa2dda4], 0
mov dword [0xa2dd98], 1
jmp 0x4abc10
mov eax, dword [0xa2dd98]
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 [0xa2dda4]
add eax, edx
mov dword [0xa2dda4], eax
mov eax, dword [0xa2dd98]
cmp eax, 1
je 0x4abc03
mov eax, dword [0xa2dda4]
add eax, 1
mov dword [0xa2dda4], eax
mov eax, dword [0xa2dd98]
add eax, 1
mov dword [0xa2dd98], eax
mov edx, dword [0xa2dd98]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4abbbe
mov eax, dword [0xa2dda4]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.0045ed06
mov dword [0xa2c744], eax
mov dword [0xa2dda8], 0
mov dword [0xa2dd98], 1
jmp 0x4abd22
mov eax, dword [0xa2dd98]
cmp eax, 1
je 0x4abc8c
mov eax, dword [0xa2c744]
mov edx, dword [eax]
mov eax, dword [0xa2dda8]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa2dda8]
add eax, 1
mov dword [0xa2dda8], eax
mov eax, dword [0xa2dd98]
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 [0xa2dd98]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa2c744]
mov ebx, dword [ecx]
mov ecx, dword [0xa2dda8]
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 [0xa2dd98]
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 [0xa2dda8]
add eax, edx
mov dword [0xa2dda8], eax
mov eax, dword [0xa2dd98]
add eax, 1
mov dword [0xa2dd98], eax
mov edx, dword [0xa2dd98]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4abc64
jmp 0x4abd62
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.0045ed06
mov dword [0xa2c744], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa2c74c], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa2c748], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.004c6f00
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x4abdac
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004c6f00
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x4abd90
jmp 0x4abdb3
mov dword [ebp - 0x3c], 0
call fcn.00452f3b
mov dword [0x6b1444], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004c6f10
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4abe11
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 [0x6b1440], eax
mov eax, dword [0x6b1440]
imul eax, eax, 0x3e8
mov dword [0x6b1440], eax
jmp 0x4abe1b
mov dword [0x6b1440], 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 0x4abe4f
mov dword [esp], 0x30d4b
call fcn.004534d7
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 0x4abe88
mov dword [0x6a6ca8], 0x12e
mov dword [esp], 0x187ce
call fcn.004537e6
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 0x4abec1
mov dword [0x6a6ca8], 0x130
mov dword [esp], 0x187d0
call fcn.004537e6
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 0x4abefa
mov dword [0x6a6ca8], 0x12f
mov dword [esp], 0x187cf
call fcn.004537e6
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 0x4abf33
mov dword [0x6a6ca8], 0x132
mov dword [esp], 0x187d2
call fcn.004537e6
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 0x4abf6c
mov dword [0x6a6ca8], 0x131
mov dword [esp], 0x187d1
call fcn.004537e6
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 0x4abfa5
mov dword [0x6a6ca8], 0x134
mov dword [esp], 0x187d4
call fcn.004537e6
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 0x4abfde
mov dword [0x6a6ca8], 0x133
mov dword [esp], 0x187d3
call fcn.004537e6
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 0x4ac01c
mov dword [0x6a6ca8], 0x12d
mov dword [esp], 0x187cd
call fcn.004537e6
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 0x4ac05a
mov dword [0x6a6ca8], 0x12c
mov dword [esp], 0x187cc
call fcn.004537e6
mov dword [ebp - 0x178], 1
call fcn.004af143
mov eax, dword [0x6a6ca0]
mov dword [0x6a6ca4], eax
mov byte [0x5816ba], 0x1e
mov byte [0x5816bb], 0
mov byte [0x5816bc], 0x1e
mov byte [0x5816bd], 0
lea eax, [ebp - 0x13c]
mov ecx, eax
call fcn.005191a0
mov eax, dword [0x535520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x564600
mov dword [esp], 0x6a7140
call sub.msvcrt.dll_memcpy
mov dword [0xa2dd98], 0
jmp 0x4ac0f1
mov eax, dword [0xa2dd98]
mov edx, dword [0xa2dd98]
mov edx, dword [edx*4 + 0x6a7140]
or edx, 0xff000000
mov dword [eax*4 + 0x6a7140], edx
mov eax, dword [0xa2dd98]
add eax, 1
mov dword [0xa2dd98], eax
mov eax, dword [0xa2dd98]
cmp eax, 0xff
setle al
test al, al
jne 0x4ac0c5
mov eax, dword [0x535524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x564a00
mov dword [esp], 0x6a7540
call sub.msvcrt.dll_memcpy
mov dword [0xa2dd98], 0
jmp 0x4ac157
mov eax, dword [0xa2dd98]
mov edx, dword [0xa2dd98]
mov edx, dword [edx*4 + 0x6a7540]
or edx, 0xff000000
mov dword [eax*4 + 0x6a7540], edx
mov eax, dword [0xa2dd98]
add eax, 1
mov dword [0xa2dd98], eax
mov eax, dword [0xa2dd98]
cmp eax, 0x3f
setle al
test al, al
jne 0x4ac12b
mov dword [0xa1fbe0], 0
mov dword [0xa1fbe4], 0
mov dword [0xa1fbe8], 0
mov dword [0xa1fbec], 0x808080
mov dword [0xa1fbf0], 0x808080
mov dword [0xa1fbf4], 0x808080
mov dword [0xa1fbf8], 0xffffff
mov dword [0xa1fbfc], 0xffffff
mov dword [0xa1fc00], 0xffffff
mov dword [0xa1fc04], 0
mov dword [0xa1fc08], 0x808080
mov dword [0xa1fc0c], 0xffffff
mov dword [0xa1fc10], 0
mov dword [0xa1fc14], 0x808080
mov dword [0xa1fc18], 0xffffff
mov dword [0xa1fc1c], 0
mov dword [0xa1fc20], 0x808080
mov dword [0xa1fc24], 0xffffff
mov eax, dword [0x535518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x558600
mov dword [esp], 0xa1fc40
call sub.msvcrt.dll_memcpy
mov eax, dword [0x53551c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x55c600
mov dword [esp], 0xa23c40
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.004635ef
mov dword [0x53552c], 1
mov eax, dword [0x691c54]
test eax, eax
je 0x4ac2f1
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.00485c55
mov dword [0x5352e0], eax
mov eax, dword [0x5352e0]
neg eax
mov dword [0xa2dd98], eax
mov edx, dword [0x6a7644]
mov eax, dword [0xa2dd98]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x12], 1
mov edx, dword [0x53507c]
mov eax, dword [0x535078]
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.00485c55
mov dword [0xa2d9ac], eax
mov edx, dword [0x535078]
mov eax, dword [0x53507c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6a7644]
mov eax, dword [0xa2d9ac]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x551e40
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x535084]
mov eax, dword [0x535080]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00485c55
mov dword [0xa2d9b0], eax
mov edx, dword [0x535080]
mov eax, dword [0x535084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6a7644]
mov eax, dword [0xa2d9b0]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x552240
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa2dd98], 0
mov eax, dword [0xa2dd98]
add eax, 1
mov dword [0xa2dd98], eax
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403425
mov eax, dword [0xa2dd98]
add eax, 1
mov dword [0xa2dd98], eax
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x691c6c]
mov eax, dword [0xa2dd98]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403425
mov eax, dword [0xa2dd98]
mov dword [0x691c68], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x40579c
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], 0x404650
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 [0x6b1438], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4ac863
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 [0x696c84]
test eax, eax
jne 0x4ac622
mov dword [0x696ad8], 1
jmp 0x4ac622
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x4ac623
nop
mov eax, dword [0x696ad8]
test eax, eax
sete al
test al, al
jne 0x4ac605
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.00423348
mov dword [esp], 0x12
call fcn.004b28c0
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.004b2890
mov dword [esp], 0x190
call fcn.004b73b0
test eax, eax
sete al
test al, al
je 0x4ac697
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x696ae0]
test eax, eax
jne 0x4ac6b8
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.0042336a
jmp 0x4ac6cf
mov eax, dword [0x696ae0]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.0042336a
mov dword [0x696ad4], 1
mov dword [ebp - 0x178], 2
call fcn.00448d01
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4ac707
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.00448cb1
sub esp, 4
mov dword [esp], eax
call fcn.004539bf
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.00448d21
sub esp, 4
test al, al
setne al
test al, al
je 0x4ac729
mov dword [0x696aa8], 1
mov dword [esp], 0x4a7d3f
mov dword [ebp - 0x178], 2
call fcn.004b63f0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x4a4fc3
mov dword [esp], 8
call fcn.004b6540
mov dword [esp], 0x4a4d5b
call fcn.004b6490
mov dword [esp], 0x4a4d7d
call fcn.004b6610
mov dword [esp], 0x4a4f8d
call fcn.004b64d0
mov dword [esp], 0x4a4fa8
call fcn.004b6650
mov dword [esp], 0x4a99c3
call fcn.004b6750
mov dword [esp], fcn.004a9a0f
call fcn.004b67d0
mov dword [esp], 0x4a9fa7
call fcn.004b6810
mov dword [esp], 0x4a526a
call fcn.004b6450
mov dword [esp], 0x4a9fc1
call fcn.004b6790
call fcn.004b81c0
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.005198a0
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x4ac843
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004c54c0
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret