Function at 0x49817d
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], 0x51fce0
mov dword [ebp - 0x160], 0x5208ca
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x499829
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004b2410
call fcn.004b1e60
mov dword [0x6835c0], 0
mov dword [0x6835c4], 0
mov dword [0x6835c8], 0xffffffff
mov dword [0x6835cc], 0xffffffff
mov dword [0x6835d0], 0
mov dword [0x6835d4], 0xffffffff
mov dword [0x6835d8], 0xffffffff
mov dword [0x6835dc], 0xffffffff
mov dword [0xa1a7b8], 0
jmp 0x4982c0
mov eax, dword [0xa1a7b8]
shl eax, 5
add eax, 0x683540
mov dword [eax], 1
mov eax, dword [0xa1a7b8]
shl eax, 5
add eax, 0x683540
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa1a7b8]
shl eax, 5
add eax, 0x683550
mov dword [eax], 0
mov eax, dword [0xa1a7b8]
shl eax, 5
add eax, 0x683550
mov dword [eax + 4], 0
mov eax, dword [0xa1a7b8]
shl eax, 5
add eax, 0x683550
mov dword [eax + 8], 0
mov eax, dword [0xa1a7b8]
shl eax, 5
add eax, 0x683550
mov dword [eax + 0xc], 0
mov eax, dword [0xa1a7b8]
add eax, 1
mov dword [0xa1a7b8], eax
mov eax, dword [0xa1a7b8]
cmp eax, 2
setle al
test al, al
jne 0x498236
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x683530]
test eax, eax
je 0x4982f5
mov dword [0x52206c], 0
mov eax, dword [0x68352c]
test eax, eax
je 0x498308
mov eax, dword [0x68352c]
mov dword [0x68350c], eax
mov dword [esp], 0x1c
call fcn.0043ed73
mov dword [0x69dd34], eax
mov dword [esp], 8
call fcn.0043ed73
mov dword [0x6835b0], eax
mov dword [esp], 0x14
call fcn.0043ed73
mov dword [0x6835b4], eax
mov dword [esp], 0x14
call fcn.0043ed73
mov dword [0xa19b54], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.0043ee05
mov dword [0x6835e4], eax
mov dword [esp], 0x70
call fcn.0043ed73
mov dword [0x6835f8], eax
mov eax, dword [0x69dd34]
mov dword [esp], eax
call fcn.0043ee3e
mov dword [0x69dd38], eax
mov eax, dword [0x69dd38]
mov dword [0x69dd3c], eax
mov edx, dword [0x69dd3c]
mov eax, dword [0x69dd34]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0043f2ec
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 [0x67eb4c]
test eax, eax
jne 0x4983ef
call fcn.0046d4af
mov eax, dword [0x67ebbc]
test eax, eax
je 0x498402
mov dword [0x6836a4], 1
mov eax, dword [0x67ebb8]
test eax, eax
je 0x498450
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 0x498450
mov dword [0x6836a0], 1
mov eax, dword [0x67ebe0]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x67ebe0]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x67ebe0]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x67ebe0]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x67ebe0]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x67ebe0]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x67ebe0]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x67ebe0]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x67ebe0]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x67ebe0]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x67ebe0]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x67ebe0]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x67ebe0]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x67ebe0]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x67ebe0]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x67ebe0]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x67ebe0]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x67ebe0]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x67ebe0]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x67ebe0]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x67ebf0]
mov byte [eax], 1
mov eax, dword [0x67ebf0]
mov dword [eax + 4], 0
mov eax, dword [0x67ebf0]
mov byte [eax + 0x11], 0
mov eax, dword [0x67ebf0]
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 0x4985ce
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 [0xa199b4], eax
mov eax, dword [0x6836b4]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x6836b4]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x6836b4]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x6836b0]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x6836b0]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x6836b0]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x6836b8]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x6836b8]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x6836b8]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x6836b4]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x6836b4]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x6836b4]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6836b0]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x6836b0]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x6836b0]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6836b8]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x6836b8]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x6836b8]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x694064]
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.00441374
mov dword [0xa1a7bc], eax
mov edx, dword [0x694064]
mov eax, dword [0xa1a7bc]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.00441374
mov dword [0xa1a7bc], eax
mov edx, dword [0x694064]
mov eax, dword [0xa1a7bc]
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], 0x69dd40
call sub.msvcrt.dll_memset
mov dword [0x69dda0], 0x69dd40
mov dword [0x69dda4], 0x69dd48
mov dword [0x69dda8], 0x69dd4c
mov dword [0x69ddac], 0x69dd44
mov dword [0x69ddb0], 0x69dd41
mov dword [0x69ddb4], 0x69dd49
mov dword [0x69ddb8], 0x69dd4d
mov dword [0x69ddbc], 0x69dd45
mov dword [0x69ddc0], 0x69dd40
mov dword [0x69ddc4], 0x69dd48
mov dword [0x69ddc8], 0x69dd4c
mov dword [0x69ddcc], 0x69dd44
mov dword [0x69ddd0], 0x69dd5c
mov dword [0x69ddd4], 0x69dd58
mov dword [0x69ddd8], 0x69dd50
mov dword [0x69dddc], 0x69dd54
mov dword [0x69dde0], 0x69dd40
mov dword [0x69dde4], 0x69dd48
mov dword [0x69dde8], 0x69dd4c
mov dword [0x69ddec], 0x69dd44
mov dword [0x69ddf0], 0x69dd5c
mov dword [0x69ddf4], 0x69dd58
mov dword [0x69ddf8], 0x69dd50
mov dword [0x69ddfc], 0x69dd54
mov dword [0x69de00], 0x69dd66
mov dword [0x69de04], 0x69dd60
mov dword [0x69de08], 0x69dd62
mov dword [0x69de0c], 0x69dd64
mov dword [0x69de10], 0x69dd68
mov dword [0x69de14], 0x69dd6a
mov dword [0xa1a7b8], 0
jmp 0x4988ca
mov eax, dword [0xa1a7b8]
mov byte [eax + 0xa18ee0], 0x20
mov eax, dword [0xa1a7b8]
add eax, 1
mov dword [0xa1a7b8], eax
mov eax, dword [0xa1a7b8]
cmp eax, 0x1f
setle al
test al, al
jne 0x4988b1
mov byte [0xa19060], 0x81
mov dword [0x69de80], 0x100000
mov eax, dword [0x69de80]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [0x67e294], eax
mov eax, dword [0x67e294]
mov dword [0x67e298], eax
mov edx, dword [0x67e294]
mov eax, dword [0x69de80]
add eax, edx
mov dword [0x67e29c], eax
mov dword [esp + 8], 0x10fff3
mov dword [esp + 4], 0
mov dword [esp], 0x56e2a0
call sub.msvcrt.dll_memset
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0x9fc0c0
call sub.msvcrt.dll_memset
mov eax, 0x56e2a0
add eax, 0x500
mov dword [0x56e264], eax
mov eax, dword [0x52200c]
sub eax, 8
mov dword [0x52200c], eax
mov eax, dword [0x56e264]
mov edx, eax
mov eax, dword [0x52200c]
add eax, edx
mov dword [0x56e274], eax
mov eax, dword [0x56e274]
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.0044b970
mov dword [0x56e290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.0044b970
mov dword [0xa0c0c0], eax
mov eax, dword [0xa0c0c0]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0044bd1a
mov dword [0xa19b94], eax
call fcn.004971e7
mov edx, eax
mov eax, dword [0xa19b94]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0044be81
mov eax, 0xa1a528
movzx eax, byte [eax]
test al, al
jne 0x498a46
mov dword [esp], 0xa1a528
call fcn.0051f8a0
test eax, eax
setne al
test al, al
je 0x498a46
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa1a7c0], eax
mov dword [esp], 0xa1a528
call fcn.0051fa40
mov eax, dword [0xa1a7c0]
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 [0xa1a7c0]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa1a7b8], eax
mov eax, dword [0xa1a7b8]
sub eax, 1
mov dword [0xa1a7c4], eax
jmp 0x498b07
mov edx, dword [0xa1a7c0]
mov eax, dword [0xa1a7c4]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa1a7bc], eax
mov eax, dword [0xa1a7bc]
cmp eax, 0x5c
je 0x498ac9
mov eax, dword [0xa1a7bc]
cmp eax, 0x2f
je 0x498ac9
mov eax, dword [0xa1a7bc]
cmp eax, 0x3a
jne 0x498afa
mov eax, dword [0xa1a7bc]
cmp eax, 0x3a
jne 0x498ae8
mov eax, dword [0xa1a7c0]
mov edx, dword [0xa1a7c4]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x498b19
mov edx, dword [0xa1a7c0]
mov eax, dword [0xa1a7c4]
add eax, edx
mov byte [eax], 0
jmp 0x498b19
mov eax, dword [0xa1a7c4]
sub eax, 1
mov dword [0xa1a7c4], eax
mov eax, dword [0xa1a7c4]
not eax
shr eax, 0x1f
test al, al
jne 0x498a93
mov eax, dword [0xa1a7c0]
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.0044bd1a
mov dword [0xa19b98], eax
call fcn.004971e7
mov edx, eax
mov eax, dword [0xa19b98]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0044be81
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0044bd1a
mov dword [0x69371c], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.0044bb97
mov edx, eax
mov eax, dword [0x69371c]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0044be81
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa1a7b8], eax
mov eax, dword [0xa1a7b8]
cmp eax, 1
jle 0x498d53
mov dword [0xa1a7c4], 0
mov dword [0xa1a7b8], 1
jmp 0x498c24
mov eax, dword [0xa1a7b8]
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 [0xa1a7c4]
add eax, edx
mov dword [0xa1a7c4], eax
mov eax, dword [0xa1a7b8]
cmp eax, 1
je 0x498c17
mov eax, dword [0xa1a7c4]
add eax, 1
mov dword [0xa1a7c4], eax
mov eax, dword [0xa1a7b8]
add eax, 1
mov dword [0xa1a7b8], eax
mov edx, dword [0xa1a7b8]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x498bd2
mov eax, dword [0xa1a7c4]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.0044bd1a
mov dword [0xa19164], eax
mov dword [0xa1a7c8], 0
mov dword [0xa1a7b8], 1
jmp 0x498d36
mov eax, dword [0xa1a7b8]
cmp eax, 1
je 0x498ca0
mov eax, dword [0xa19164]
mov edx, dword [eax]
mov eax, dword [0xa1a7c8]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa1a7c8]
add eax, 1
mov dword [0xa1a7c8], eax
mov eax, dword [0xa1a7b8]
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 [0xa1a7b8]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa19164]
mov ebx, dword [ecx]
mov ecx, dword [0xa1a7c8]
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 [0xa1a7b8]
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 [0xa1a7c8]
add eax, edx
mov dword [0xa1a7c8], eax
mov eax, dword [0xa1a7b8]
add eax, 1
mov dword [0xa1a7b8], eax
mov edx, dword [0xa1a7b8]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x498c78
jmp 0x498d76
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.0044bd1a
mov dword [0xa19164], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa1916c], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa19168], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.004b3f10
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x498dc0
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004b3f10
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x498da4
jmp 0x498dc7
mov dword [ebp - 0x3c], 0
call fcn.0043ff4f
mov dword [0x69de64], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004b3f20
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x498e25
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 [0x69de60], eax
mov eax, dword [0x69de60]
imul eax, eax, 0x3e8
mov dword [0x69de60], eax
jmp 0x498e2f
mov dword [0x69de60], 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 0x498e63
mov dword [esp], 0x30d4b
call fcn.004404eb
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 0x498e9c
mov dword [0x6936c8], 0x12e
mov dword [esp], 0x187ce
call fcn.004407fa
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 0x498ed5
mov dword [0x6936c8], 0x130
mov dword [esp], 0x187d0
call fcn.004407fa
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 0x498f0e
mov dword [0x6936c8], 0x12f
mov dword [esp], 0x187cf
call fcn.004407fa
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 0x498f47
mov dword [0x6936c8], 0x132
mov dword [esp], 0x187d2
call fcn.004407fa
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 0x498f80
mov dword [0x6936c8], 0x131
mov dword [esp], 0x187d1
call fcn.004407fa
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 0x498fb9
mov dword [0x6936c8], 0x134
mov dword [esp], 0x187d4
call fcn.004407fa
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 0x498ff2
mov dword [0x6936c8], 0x133
mov dword [esp], 0x187d3
call fcn.004407fa
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 0x499030
mov dword [0x6936c8], 0x12d
mov dword [esp], 0x187cd
call fcn.004407fa
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 0x49906e
mov dword [0x6936c8], 0x12c
mov dword [esp], 0x187cc
call fcn.004407fa
mov dword [ebp - 0x178], 1
call fcn.0049c157
mov eax, dword [0x6936c0]
mov dword [0x6936c4], eax
mov byte [0x56e6ba], 0x1e
mov byte [0x56e6bb], 0
mov byte [0x56e6bc], 0x1e
mov byte [0x56e6bd], 0
lea eax, [ebp - 0x13c]
mov ecx, eax
call fcn.005061b0
mov eax, dword [0x522520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x551060
mov dword [esp], 0x693b60
call sub.msvcrt.dll_memcpy
mov dword [0xa1a7b8], 0
jmp 0x499105
mov eax, dword [0xa1a7b8]
mov edx, dword [0xa1a7b8]
mov edx, dword [edx*4 + 0x693b60]
or edx, 0xff000000
mov dword [eax*4 + 0x693b60], edx
mov eax, dword [0xa1a7b8]
add eax, 1
mov dword [0xa1a7b8], eax
mov eax, dword [0xa1a7b8]
cmp eax, 0xff
setle al
test al, al
jne 0x4990d9
mov eax, dword [0x522524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x551460
mov dword [esp], 0x693f60
call sub.msvcrt.dll_memcpy
mov dword [0xa1a7b8], 0
jmp 0x49916b
mov eax, dword [0xa1a7b8]
mov edx, dword [0xa1a7b8]
mov edx, dword [edx*4 + 0x693f60]
or edx, 0xff000000
mov dword [eax*4 + 0x693f60], edx
mov eax, dword [0xa1a7b8]
add eax, 1
mov dword [0xa1a7b8], eax
mov eax, dword [0xa1a7b8]
cmp eax, 0x3f
setle al
test al, al
jne 0x49913f
mov dword [0xa0c600], 0
mov dword [0xa0c604], 0
mov dword [0xa0c608], 0
mov dword [0xa0c60c], 0x808080
mov dword [0xa0c610], 0x808080
mov dword [0xa0c614], 0x808080
mov dword [0xa0c618], 0xffffff
mov dword [0xa0c61c], 0xffffff
mov dword [0xa0c620], 0xffffff
mov dword [0xa0c624], 0
mov dword [0xa0c628], 0x808080
mov dword [0xa0c62c], 0xffffff
mov dword [0xa0c630], 0
mov dword [0xa0c634], 0x808080
mov dword [0xa0c638], 0xffffff
mov dword [0xa0c63c], 0
mov dword [0xa0c640], 0x808080
mov dword [0xa0c644], 0xffffff
mov eax, dword [0x522518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x545060
mov dword [esp], 0xa0c660
call sub.msvcrt.dll_memcpy
mov eax, dword [0x52251c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x549060
mov dword [esp], 0xa10660
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.00450603
mov dword [0x52252c], 1
mov eax, dword [0x67ebb8]
test eax, eax
je 0x499305
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.00472c69
mov dword [0x5222e0], eax
mov eax, dword [0x5222e0]
neg eax
mov dword [0xa1a7b8], eax
mov edx, dword [0x694064]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x12], 1
mov edx, dword [0x52207c]
mov eax, dword [0x522078]
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.00472c69
mov dword [0xa1a3cc], eax
mov edx, dword [0x522078]
mov eax, dword [0x52207c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x694064]
mov eax, dword [0xa1a3cc]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x53e8a0
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x522084]
mov eax, dword [0x522080]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00472c69
mov dword [0xa1a3d0], eax
mov edx, dword [0x522080]
mov eax, dword [0x522084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x694064]
mov eax, dword [0xa1a3d0]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x53eca0
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa1a7b8], 0
mov eax, dword [0xa1a7b8]
add eax, 1
mov dword [0xa1a7b8], eax
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403237
mov eax, dword [0xa1a7b8]
add eax, 1
mov dword [0xa1a7b8], eax
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x67ebd0]
mov eax, dword [0xa1a7b8]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403237
mov eax, dword [0xa1a7b8]
mov dword [0x67ebcc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4055ae
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], 0x404462
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 [0x69de58], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x499877
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 [0x6836a4]
test eax, eax
jne 0x499636
mov dword [0x6834f8], 1
jmp 0x499636
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x499637
nop
mov eax, dword [0x6834f8]
test eax, eax
sete al
test al, al
jne 0x499619
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.0041035c
mov dword [esp], 0x12
call fcn.0049f8d0
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.0049f8a0
mov dword [esp], 0x190
call fcn.004a43c0
test eax, eax
sete al
test al, al
je 0x4996ab
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x683500]
test eax, eax
jne 0x4996cc
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.0041037e
jmp 0x4996e3
mov eax, dword [0x683500]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.0041037e
mov dword [0x6834f4], 1
mov dword [ebp - 0x178], 2
call fcn.00435d15
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x49971b
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.00435cc5
sub esp, 4
mov dword [esp], eax
call fcn.004409d3
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.00435d35
sub esp, 4
test al, al
setne al
test al, al
je 0x49973d
mov dword [0x6834c8], 1
mov dword [esp], 0x494d53
mov dword [ebp - 0x178], 2
call fcn.004a3400
mov dword [esp + 8], 0
mov dword [esp + 4], 0x491fd7
mov dword [esp], 8
call fcn.004a3550
mov dword [esp], 0x491d6f
call fcn.004a34a0
mov dword [esp], 0x491d91
call fcn.004a3620
mov dword [esp], 0x491fa1
call fcn.004a34e0
mov dword [esp], 0x491fbc
call fcn.004a3660
mov dword [esp], 0x4969d7
call fcn.004a3760
mov dword [esp], fcn.00496a23
call fcn.004a37e0
mov dword [esp], 0x496fbb
call fcn.004a3820
mov dword [esp], 0x49227e
call fcn.004a3460
mov dword [esp], 0x496fd5
call fcn.004a37a0
call fcn.004a51d0
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.005068b0
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x499857
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004b24d0
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret