Function at 0x4f8831
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], 0x5803e0
mov dword [ebp - 0x160], 0x580fca
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x4f9edd
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.00512ac0
call fcn.00512510
mov dword [0x6e55a0], 0
mov dword [0x6e55a4], 0
mov dword [0x6e55a8], 0xffffffff
mov dword [0x6e55ac], 0xffffffff
mov dword [0x6e55b0], 0
mov dword [0x6e55b4], 0xffffffff
mov dword [0x6e55b8], 0xffffffff
mov dword [0x6e55bc], 0xffffffff
mov dword [0xa7c798], 0
jmp 0x4f8974
mov eax, dword [0xa7c798]
shl eax, 5
add eax, 0x6e5520
mov dword [eax], 1
mov eax, dword [0xa7c798]
shl eax, 5
add eax, 0x6e5520
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa7c798]
shl eax, 5
add eax, 0x6e5530
mov dword [eax], 0
mov eax, dword [0xa7c798]
shl eax, 5
add eax, 0x6e5530
mov dword [eax + 4], 0
mov eax, dword [0xa7c798]
shl eax, 5
add eax, 0x6e5530
mov dword [eax + 8], 0
mov eax, dword [0xa7c798]
shl eax, 5
add eax, 0x6e5530
mov dword [eax + 0xc], 0
mov eax, dword [0xa7c798]
add eax, 1
mov dword [0xa7c798], eax
mov eax, dword [0xa7c798]
cmp eax, 2
setle al
test al, al
jne 0x4f88ea
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x6e5510]
test eax, eax
je 0x4f89a9
mov dword [0x58306c], 0
mov eax, dword [0x6e550c]
test eax, eax
je 0x4f89bc
mov eax, dword [0x6e550c]
mov dword [0x6e54ec], eax
mov dword [esp], 0x1c
call fcn.0049f427
mov dword [0x6ffd14], eax
mov dword [esp], 8
call fcn.0049f427
mov dword [0x6e5590], eax
mov dword [esp], 0x14
call fcn.0049f427
mov dword [0x6e5594], eax
mov dword [esp], 0x14
call fcn.0049f427
mov dword [0xa7bb34], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.0049f4b9
mov dword [0x6e55c4], eax
mov dword [esp], 0x70
call fcn.0049f427
mov dword [0x6e55d8], eax
mov eax, dword [0x6ffd14]
mov dword [esp], eax
call fcn.0049f4f2
mov dword [0x6ffd18], eax
mov eax, dword [0x6ffd18]
mov dword [0x6ffd1c], eax
mov edx, dword [0x6ffd1c]
mov eax, dword [0x6ffd14]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0049f9a0
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 [0x6dfb4c]
test eax, eax
jne 0x4f8aa3
call fcn.004cdb63
mov eax, dword [0x6dfda4]
test eax, eax
je 0x4f8ab6
mov dword [0x6e5684], 1
mov eax, dword [0x6dfda0]
test eax, eax
je 0x4f8b04
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 0x4f8b04
mov dword [0x6e5680], 1
mov eax, dword [0x6dfdc8]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x6dfdc8]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x6dfdc8]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x6dfdc8]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x6dfdc8]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x6dfdc8]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x6dfdc8]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x6dfdc8]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x6dfdc8]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x6dfdc8]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x6dfdc8]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x6dfdc8]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x6dfdc8]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x6dfdc8]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x6dfdc8]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x6dfdc8]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x6dfdc8]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x6dfdc8]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x6dfdc8]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x6dfdc8]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x6dfdd8]
mov byte [eax], 1
mov eax, dword [0x6dfdd8]
mov dword [eax + 4], 0
mov eax, dword [0x6dfdd8]
mov byte [eax + 0x11], 0
mov eax, dword [0x6dfdd8]
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 0x4f8c82
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 [0xa7b994], eax
mov eax, dword [0x6e5694]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x6e5694]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x6e5694]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x6e5690]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x6e5690]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x6e5690]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x6e5698]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x6e5698]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x6e5698]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x6e5694]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x6e5694]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x6e5694]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6e5690]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x6e5690]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x6e5690]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6e5698]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x6e5698]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x6e5698]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6f6044]
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.004a1a28
mov dword [0xa7c79c], eax
mov edx, dword [0x6f6044]
mov eax, dword [0xa7c79c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.004a1a28
mov dword [0xa7c79c], eax
mov edx, dword [0x6f6044]
mov eax, dword [0xa7c79c]
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], 0x6ffd20
call sub.msvcrt.dll_memset
mov dword [0x6ffd80], 0x6ffd20
mov dword [0x6ffd84], 0x6ffd28
mov dword [0x6ffd88], 0x6ffd2c
mov dword [0x6ffd8c], 0x6ffd24
mov dword [0x6ffd90], 0x6ffd21
mov dword [0x6ffd94], 0x6ffd29
mov dword [0x6ffd98], 0x6ffd2d
mov dword [0x6ffd9c], 0x6ffd25
mov dword [0x6ffda0], 0x6ffd20
mov dword [0x6ffda4], 0x6ffd28
mov dword [0x6ffda8], 0x6ffd2c
mov dword [0x6ffdac], 0x6ffd24
mov dword [0x6ffdb0], 0x6ffd3c
mov dword [0x6ffdb4], 0x6ffd38
mov dword [0x6ffdb8], 0x6ffd30
mov dword [0x6ffdbc], 0x6ffd34
mov dword [0x6ffdc0], 0x6ffd20
mov dword [0x6ffdc4], 0x6ffd28
mov dword [0x6ffdc8], 0x6ffd2c
mov dword [0x6ffdcc], 0x6ffd24
mov dword [0x6ffdd0], 0x6ffd3c
mov dword [0x6ffdd4], 0x6ffd38
mov dword [0x6ffdd8], 0x6ffd30
mov dword [0x6ffddc], 0x6ffd34
mov dword [0x6ffde0], 0x6ffd46
mov dword [0x6ffde4], 0x6ffd40
mov dword [0x6ffde8], 0x6ffd42
mov dword [0x6ffdec], 0x6ffd44
mov dword [0x6ffdf0], 0x6ffd48
mov dword [0x6ffdf4], 0x6ffd4a
mov dword [0xa7c798], 0
jmp 0x4f8f7e
mov eax, dword [0xa7c798]
mov byte [eax + 0xa7aec0], 0x20
mov eax, dword [0xa7c798]
add eax, 1
mov dword [0xa7c798], eax
mov eax, dword [0xa7c798]
cmp eax, 0x1f
setle al
test al, al
jne 0x4f8f65
mov byte [0xa7b040], 0x81
mov dword [0x6ffe60], 0x100000
mov eax, dword [0x6ffe60]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [0x6df294], eax
mov eax, dword [0x6df294]
mov dword [0x6df298], eax
mov edx, dword [0x6df294]
mov eax, dword [0x6ffe60]
add eax, edx
mov dword [0x6df29c], eax
mov dword [esp + 8], 0x10fff3
mov dword [esp + 4], 0
mov dword [esp], 0x5cf2a0
call sub.msvcrt.dll_memset
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0xa5e0a0
call sub.msvcrt.dll_memset
mov eax, 0x5cf2a0
add eax, 0x500
mov dword [0x5cf264], eax
mov eax, dword [0x58300c]
sub eax, 8
mov dword [0x58300c], eax
mov eax, dword [0x5cf264]
mov edx, eax
mov eax, dword [0x58300c]
add eax, edx
mov dword [0x5cf274], eax
mov eax, dword [0x5cf274]
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.004ac024
mov dword [0x5cf290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.004ac024
mov dword [0xa6e0a0], eax
mov eax, dword [0xa6e0a0]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004ac3ce
mov dword [0xa7bb74], eax
call fcn.004f789b
mov edx, eax
mov eax, dword [0xa7bb74]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004ac535
mov eax, 0xa7c508
movzx eax, byte [eax]
test al, al
jne 0x4f90fa
mov dword [esp], 0xa7c508
call fcn.0057ffa0
test eax, eax
setne al
test al, al
je 0x4f90fa
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa7c7a0], eax
mov dword [esp], 0xa7c508
call fcn.00580140
mov eax, dword [0xa7c7a0]
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 [0xa7c7a0]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa7c798], eax
mov eax, dword [0xa7c798]
sub eax, 1
mov dword [0xa7c7a4], eax
jmp 0x4f91bb
mov edx, dword [0xa7c7a0]
mov eax, dword [0xa7c7a4]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa7c79c], eax
mov eax, dword [0xa7c79c]
cmp eax, 0x5c
je 0x4f917d
mov eax, dword [0xa7c79c]
cmp eax, 0x2f
je 0x4f917d
mov eax, dword [0xa7c79c]
cmp eax, 0x3a
jne 0x4f91ae
mov eax, dword [0xa7c79c]
cmp eax, 0x3a
jne 0x4f919c
mov eax, dword [0xa7c7a0]
mov edx, dword [0xa7c7a4]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x4f91cd
mov edx, dword [0xa7c7a0]
mov eax, dword [0xa7c7a4]
add eax, edx
mov byte [eax], 0
jmp 0x4f91cd
mov eax, dword [0xa7c7a4]
sub eax, 1
mov dword [0xa7c7a4], eax
mov eax, dword [0xa7c7a4]
not eax
shr eax, 0x1f
test al, al
jne 0x4f9147
mov eax, dword [0xa7c7a0]
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.004ac3ce
mov dword [0xa7bb78], eax
call fcn.004f789b
mov edx, eax
mov eax, dword [0xa7bb78]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004ac535
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.004ac3ce
mov dword [0x6f56fc], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.004ac24b
mov edx, eax
mov eax, dword [0x6f56fc]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004ac535
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa7c798], eax
mov eax, dword [0xa7c798]
cmp eax, 1
jle 0x4f9407
mov dword [0xa7c7a4], 0
mov dword [0xa7c798], 1
jmp 0x4f92d8
mov eax, dword [0xa7c798]
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 [0xa7c7a4]
add eax, edx
mov dword [0xa7c7a4], eax
mov eax, dword [0xa7c798]
cmp eax, 1
je 0x4f92cb
mov eax, dword [0xa7c7a4]
add eax, 1
mov dword [0xa7c7a4], eax
mov eax, dword [0xa7c798]
add eax, 1
mov dword [0xa7c798], eax
mov edx, dword [0xa7c798]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4f9286
mov eax, dword [0xa7c7a4]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.004ac3ce
mov dword [0xa7b144], eax
mov dword [0xa7c7a8], 0
mov dword [0xa7c798], 1
jmp 0x4f93ea
mov eax, dword [0xa7c798]
cmp eax, 1
je 0x4f9354
mov eax, dword [0xa7b144]
mov edx, dword [eax]
mov eax, dword [0xa7c7a8]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa7c7a8]
add eax, 1
mov dword [0xa7c7a8], eax
mov eax, dword [0xa7c798]
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 [0xa7c798]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa7b144]
mov ebx, dword [ecx]
mov ecx, dword [0xa7c7a8]
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 [0xa7c798]
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 [0xa7c7a8]
add eax, edx
mov dword [0xa7c7a8], eax
mov eax, dword [0xa7c798]
add eax, 1
mov dword [0xa7c798], eax
mov edx, dword [0xa7c798]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4f932c
jmp 0x4f942a
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.004ac3ce
mov dword [0xa7b144], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa7b14c], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa7b148], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.005145e0
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x4f9474
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.005145e0
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x4f9458
jmp 0x4f947b
mov dword [ebp - 0x3c], 0
call fcn.004a0603
mov dword [0x6ffe44], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.005145f0
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4f94d9
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 [0x6ffe40], eax
mov eax, dword [0x6ffe40]
imul eax, eax, 0x3e8
mov dword [0x6ffe40], eax
jmp 0x4f94e3
mov dword [0x6ffe40], 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 0x4f9517
mov dword [esp], 0x30d4b
call fcn.004a0b9f
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 0x4f9550
mov dword [0x6f56a8], 0x12e
mov dword [esp], 0x187ce
call fcn.004a0eae
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 0x4f9589
mov dword [0x6f56a8], 0x130
mov dword [esp], 0x187d0
call fcn.004a0eae
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 0x4f95c2
mov dword [0x6f56a8], 0x12f
mov dword [esp], 0x187cf
call fcn.004a0eae
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 0x4f95fb
mov dword [0x6f56a8], 0x132
mov dword [esp], 0x187d2
call fcn.004a0eae
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 0x4f9634
mov dword [0x6f56a8], 0x131
mov dword [esp], 0x187d1
call fcn.004a0eae
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 0x4f966d
mov dword [0x6f56a8], 0x134
mov dword [esp], 0x187d4
call fcn.004a0eae
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 0x4f96a6
mov dword [0x6f56a8], 0x133
mov dword [esp], 0x187d3
call fcn.004a0eae
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 0x4f96e4
mov dword [0x6f56a8], 0x12d
mov dword [esp], 0x187cd
call fcn.004a0eae
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 0x4f9722
mov dword [0x6f56a8], 0x12c
mov dword [esp], 0x187cc
call fcn.004a0eae
mov dword [ebp - 0x178], 1
call fcn.004fc80b
mov eax, dword [0x6f56a0]
mov dword [0x6f56a4], eax
mov byte [0x5cf6ba], 0x1e
mov byte [0x5cf6bb], 0
mov byte [0x5cf6bc], 0x1e
mov byte [0x5cf6bd], 0
lea eax, [ebp - 0x13c]
mov ecx, eax
call fcn.00566890
mov eax, dword [0x583520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5b28a0
mov dword [esp], 0x6f5b40
call sub.msvcrt.dll_memcpy
mov dword [0xa7c798], 0
jmp 0x4f97b9
mov eax, dword [0xa7c798]
mov edx, dword [0xa7c798]
mov edx, dword [edx*4 + 0x6f5b40]
or edx, 0xff000000
mov dword [eax*4 + 0x6f5b40], edx
mov eax, dword [0xa7c798]
add eax, 1
mov dword [0xa7c798], eax
mov eax, dword [0xa7c798]
cmp eax, 0xff
setle al
test al, al
jne 0x4f978d
mov eax, dword [0x583524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5b2ca0
mov dword [esp], 0x6f5f40
call sub.msvcrt.dll_memcpy
mov dword [0xa7c798], 0
jmp 0x4f981f
mov eax, dword [0xa7c798]
mov edx, dword [0xa7c798]
mov edx, dword [edx*4 + 0x6f5f40]
or edx, 0xff000000
mov dword [eax*4 + 0x6f5f40], edx
mov eax, dword [0xa7c798]
add eax, 1
mov dword [0xa7c798], eax
mov eax, dword [0xa7c798]
cmp eax, 0x3f
setle al
test al, al
jne 0x4f97f3
mov dword [0xa6e5e0], 0
mov dword [0xa6e5e4], 0
mov dword [0xa6e5e8], 0
mov dword [0xa6e5ec], 0x808080
mov dword [0xa6e5f0], 0x808080
mov dword [0xa6e5f4], 0x808080
mov dword [0xa6e5f8], 0xffffff
mov dword [0xa6e5fc], 0xffffff
mov dword [0xa6e600], 0xffffff
mov dword [0xa6e604], 0
mov dword [0xa6e608], 0x808080
mov dword [0xa6e60c], 0xffffff
mov dword [0xa6e610], 0
mov dword [0xa6e614], 0x808080
mov dword [0xa6e618], 0xffffff
mov dword [0xa6e61c], 0
mov dword [0xa6e620], 0x808080
mov dword [0xa6e624], 0xffffff
mov eax, dword [0x583518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5a68a0
mov dword [esp], 0xa6e640
call sub.msvcrt.dll_memcpy
mov eax, dword [0x58351c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5aa8a0
mov dword [esp], 0xa72640
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.004b0cb7
mov dword [0x58352c], 1
mov eax, dword [0x6dfda0]
test eax, eax
je 0x4f99b9
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.004d331d
mov dword [0x5832e0], eax
mov eax, dword [0x5832e0]
neg eax
mov dword [0xa7c798], eax
mov edx, dword [0x6f6044]
mov eax, dword [0xa7c798]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x12], 1
mov edx, dword [0x58307c]
mov eax, dword [0x583078]
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.004d331d
mov dword [0xa7c3ac], eax
mov edx, dword [0x583078]
mov eax, dword [0x58307c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6f6044]
mov eax, dword [0xa7c3ac]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x5a00e0
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x583084]
mov eax, dword [0x583080]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004d331d
mov dword [0xa7c3b0], eax
mov edx, dword [0x583080]
mov eax, dword [0x583084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6f6044]
mov eax, dword [0xa7c3b0]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x5a04e0
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa7c798], 0
mov eax, dword [0xa7c798]
add eax, 1
mov dword [0xa7c798], eax
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403807
mov eax, dword [0xa7c798]
add eax, 1
mov dword [0xa7c798], eax
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x6dfdb8]
mov eax, dword [0xa7c798]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.00403807
mov eax, dword [0xa7c798]
mov dword [0x6dfdb4], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x405b7e
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], 0x404a32
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 [0x6ffe38], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4f9f2b
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 [0x6e5684]
test eax, eax
jne 0x4f9cea
mov dword [0x6e54d8], 1
jmp 0x4f9cea
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x4f9ceb
nop
mov eax, dword [0x6e54d8]
test eax, eax
sete al
test al, al
jne 0x4f9ccd
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.00470a10
mov dword [esp], 0x12
call fcn.004fff80
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.004fff50
mov dword [esp], 0x190
call fcn.00504a70
test eax, eax
sete al
test al, al
je 0x4f9d5f
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x6e54e0]
test eax, eax
jne 0x4f9d80
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.00470a32
jmp 0x4f9d97
mov eax, dword [0x6e54e0]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.00470a32
mov dword [0x6e54d4], 1
mov dword [ebp - 0x178], 2
call fcn.004963c9
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4f9dcf
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.00496379
sub esp, 4
mov dword [esp], eax
call fcn.004a1087
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.004963e9
sub esp, 4
test al, al
setne al
test al, al
je 0x4f9df1
mov dword [0x6e54a8], 1
mov dword [esp], 0x4f5407
mov dword [ebp - 0x178], 2
call fcn.00503ab0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x4f268b
mov dword [esp], 8
call fcn.00503c00
mov dword [esp], 0x4f2423
call fcn.00503b50
mov dword [esp], 0x4f2445
call fcn.00503cd0
mov dword [esp], 0x4f2655
call fcn.00503b90
mov dword [esp], 0x4f2670
call fcn.00503d10
mov dword [esp], 0x4f708b
call fcn.00503e10
mov dword [esp], fcn.004f70d7
call fcn.00503e90
mov dword [esp], 0x4f766f
call fcn.00503ed0
mov dword [esp], 0x4f2932
call fcn.00503b10
mov dword [esp], 0x4f7689
call fcn.00503e50
call fcn.00505880
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.00566f90
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x4f9f0b
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.00512b80
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret