Function at 0x4d0019
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], 0x557ba0
mov dword [ebp - 0x160], 0x55878a
lea eax, [ebp - 0x15c]
lea edx, [ebp - 0x18]
mov dword [eax], edx
mov edx, 0x4d16c5
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004ea2b0
call fcn.004e9d00
mov dword [0x6bc080], 0
mov dword [0x6bc084], 0
mov dword [0x6bc088], 0xffffffff
mov dword [0x6bc08c], 0xffffffff
mov dword [0x6bc090], 0
mov dword [0x6bc094], 0xffffffff
mov dword [0x6bc098], 0xffffffff
mov dword [0x6bc09c], 0xffffffff
mov dword [0xa53278], 0
jmp 0x4d015c
mov eax, dword [0xa53278]
shl eax, 5
add eax, 0x6bc000
mov dword [eax], 1
mov eax, dword [0xa53278]
shl eax, 5
add eax, 0x6bc000
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov eax, dword [0xa53278]
shl eax, 5
add eax, 0x6bc010
mov dword [eax], 0
mov eax, dword [0xa53278]
shl eax, 5
add eax, 0x6bc010
mov dword [eax + 4], 0
mov eax, dword [0xa53278]
shl eax, 5
add eax, 0x6bc010
mov dword [eax + 8], 0
mov eax, dword [0xa53278]
shl eax, 5
add eax, 0x6bc010
mov dword [eax + 0xc], 0
mov eax, dword [0xa53278]
add eax, 1
mov dword [0xa53278], eax
mov eax, dword [0xa53278]
cmp eax, 2
setle al
test al, al
jne 0x4d00d2
mov dword [ebp - 0x178], 1
call fcn.00401713
mov eax, dword [0x6bbff0]
test eax, eax
je 0x4d0191
mov dword [0x55a06c], 0
mov eax, dword [0x6bbfec]
test eax, eax
je 0x4d01a4
mov eax, dword [0x6bbfec]
mov dword [0x6bbfcc], eax
mov dword [esp], 0x1c
call fcn.00476c0f
mov dword [0x6d67f4], eax
mov dword [esp], 8
call fcn.00476c0f
mov dword [0x6bc070], eax
mov dword [esp], 0x14
call fcn.00476c0f
mov dword [0x6bc074], eax
mov dword [esp], 0x14
call fcn.00476c0f
mov dword [0xa52614], eax
mov dword [esp], 0x48
mov dword [ebp - 0x178], 1
call fcn.00476ca1
mov dword [0x6bc0a4], eax
mov dword [esp], 0x70
call fcn.00476c0f
mov dword [0x6bc0b8], eax
mov eax, dword [0x6d67f4]
mov dword [esp], eax
call fcn.00476cda
mov dword [0x6d67f8], eax
mov eax, dword [0x6d67f8]
mov dword [0x6d67fc], eax
mov edx, dword [0x6d67fc]
mov eax, dword [0x6d67f4]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00477188
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 [0x6b6b4c]
test eax, eax
jne 0x4d028b
call fcn.004a534b
mov eax, dword [0x6b6ccc]
test eax, eax
je 0x4d029e
mov dword [0x6bc164], 1
mov eax, dword [0x6b6cc8]
test eax, eax
je 0x4d02ec
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 0x4d02ec
mov dword [0x6bc160], 1
mov eax, dword [0x6b6cf0]
add eax, 0x28
mov dword [eax + 0x14], 0x3b00
mov eax, dword [0x6b6cf0]
add eax, 0x50
mov dword [eax + 0x14], 0x3c00
mov eax, dword [0x6b6cf0]
add eax, 0x78
mov dword [eax + 0x14], 0x3d00
mov eax, dword [0x6b6cf0]
add eax, 0xa0
mov dword [eax + 0x14], 0x3e00
mov eax, dword [0x6b6cf0]
add eax, 0xc8
mov dword [eax + 0x14], 0x3f00
mov eax, dword [0x6b6cf0]
add eax, 0xf0
mov dword [eax + 0x14], 0x4000
mov eax, dword [0x6b6cf0]
add eax, 0x118
mov dword [eax + 0x14], 0x4100
mov eax, dword [0x6b6cf0]
add eax, 0x140
mov dword [eax + 0x14], 0x4200
mov eax, dword [0x6b6cf0]
add eax, 0x168
mov dword [eax + 0x14], 0x4300
mov eax, dword [0x6b6cf0]
add eax, 0x190
mov dword [eax + 0x14], 0x4400
mov eax, dword [0x6b6cf0]
add eax, 0x1b8
mov dword [eax + 0x14], 0x4800
mov eax, dword [0x6b6cf0]
add eax, 0x1b8
mov dword [eax + 0x18], 0x187a8
mov eax, dword [0x6b6cf0]
add eax, 0x1e0
mov dword [eax + 0x14], 0x4b00
mov eax, dword [0x6b6cf0]
add eax, 0x1e0
mov dword [eax + 0x18], 0x187a4
mov eax, dword [0x6b6cf0]
add eax, 0x208
mov dword [eax + 0x14], 0x4d00
mov eax, dword [0x6b6cf0]
add eax, 0x208
mov dword [eax + 0x18], 0x187a6
mov eax, dword [0x6b6cf0]
add eax, 0x230
mov dword [eax + 0x14], 0x5000
mov eax, dword [0x6b6cf0]
add eax, 0x230
mov dword [eax + 0x18], 0x187a2
mov eax, dword [0x6b6cf0]
add eax, 0x4b0
mov dword [eax + 0x14], 0x8500
mov eax, dword [0x6b6cf0]
add eax, 0x4d8
mov dword [eax + 0x14], 0x8600
mov eax, dword [0x6b6d00]
mov byte [eax], 1
mov eax, dword [0x6b6d00]
mov dword [eax + 4], 0
mov eax, dword [0x6b6d00]
mov byte [eax + 0x11], 0
mov eax, dword [0x6b6d00]
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 0x4d046a
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 [0xa52474], eax
mov eax, dword [0x6bc174]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x6bc174]
add eax, 0x38
mov dword [eax], 8
mov eax, dword [0x6bc174]
add eax, 0x40
mov dword [eax], 8
mov eax, dword [0x6bc170]
add eax, 0x20
mov dword [eax], 8
mov eax, dword [0x6bc170]
add eax, 0x38
mov dword [eax], 0xe
mov eax, dword [0x6bc170]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x6bc178]
add eax, 0x20
mov dword [eax], 0x10
mov eax, dword [0x6bc178]
add eax, 0x38
mov dword [eax], 0x10
mov eax, dword [0x6bc178]
add eax, 0x40
mov dword [eax], 0x10
mov eax, dword [0x6bc174]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x6bc174]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x6bc174]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6bc170]
add eax, 0x24
mov dword [eax], 8
mov eax, dword [0x6bc170]
add eax, 0x3c
mov dword [eax], 0xe
mov eax, dword [0x6bc170]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6bc178]
add eax, 0x24
mov dword [eax], 0x10
mov eax, dword [0x6bc178]
add eax, 0x3c
mov dword [eax], 0x10
mov eax, dword [0x6bc178]
add eax, 0x44
mov dword [eax], 0x10
mov eax, dword [0x6ccb24]
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.00479210
mov dword [0xa5327c], eax
mov edx, dword [0x6ccb24]
mov eax, dword [0xa5327c]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x10], 0
call fcn.00479210
mov dword [0xa5327c], eax
mov edx, dword [0x6ccb24]
mov eax, dword [0xa5327c]
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], 0x6d6800
call sub.msvcrt.dll_memset
mov dword [0x6d6860], 0x6d6800
mov dword [0x6d6864], 0x6d6808
mov dword [0x6d6868], 0x6d680c
mov dword [0x6d686c], 0x6d6804
mov dword [0x6d6870], 0x6d6801
mov dword [0x6d6874], 0x6d6809
mov dword [0x6d6878], 0x6d680d
mov dword [0x6d687c], 0x6d6805
mov dword [0x6d6880], 0x6d6800
mov dword [0x6d6884], 0x6d6808
mov dword [0x6d6888], 0x6d680c
mov dword [0x6d688c], 0x6d6804
mov dword [0x6d6890], 0x6d681c
mov dword [0x6d6894], 0x6d6818
mov dword [0x6d6898], 0x6d6810
mov dword [0x6d689c], 0x6d6814
mov dword [0x6d68a0], 0x6d6800
mov dword [0x6d68a4], 0x6d6808
mov dword [0x6d68a8], 0x6d680c
mov dword [0x6d68ac], 0x6d6804
mov dword [0x6d68b0], 0x6d681c
mov dword [0x6d68b4], 0x6d6818
mov dword [0x6d68b8], 0x6d6810
mov dword [0x6d68bc], 0x6d6814
mov dword [0x6d68c0], 0x6d6826
mov dword [0x6d68c4], 0x6d6820
mov dword [0x6d68c8], 0x6d6822
mov dword [0x6d68cc], 0x6d6824
mov dword [0x6d68d0], 0x6d6828
mov dword [0x6d68d4], 0x6d682a
mov dword [0xa53278], 0
jmp 0x4d0766
mov eax, dword [0xa53278]
mov byte [eax + 0xa519a0], 0x20
mov eax, dword [0xa53278]
add eax, 1
mov dword [0xa53278], eax
mov eax, dword [0xa53278]
cmp eax, 0x1f
setle al
test al, al
jne 0x4d074d
mov byte [0xa51b20], 0x81
mov dword [0x6d6940], 0x100000
mov eax, dword [0x6d6940]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [0x6b6294], eax
mov eax, dword [0x6b6294]
mov dword [0x6b6298], eax
mov edx, dword [0x6b6294]
mov eax, dword [0x6d6940]
add eax, edx
mov dword [0x6b629c], eax
mov dword [esp + 8], 0x10fff3
mov dword [esp + 4], 0
mov dword [esp], 0x5a62a0
call sub.msvcrt.dll_memset
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0xa34b80
call sub.msvcrt.dll_memset
mov eax, 0x5a62a0
add eax, 0x500
mov dword [0x5a6264], eax
mov eax, dword [0x55a00c]
sub eax, 8
mov dword [0x55a00c], eax
mov eax, dword [0x5a6264]
mov edx, eax
mov eax, dword [0x55a00c]
add eax, edx
mov dword [0x5a6274], eax
mov eax, dword [0x5a6274]
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.0048380c
mov dword [0x5a6290], eax
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.0048380c
mov dword [0xa44b80], eax
mov eax, dword [0xa44b80]
mov eax, dword [eax]
mov byte [eax], 0x20
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00483bb6
mov dword [0xa52654], eax
call fcn.004cf083
mov edx, eax
mov eax, dword [0xa52654]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00483d1d
mov eax, 0xa52fe8
movzx eax, byte [eax]
test al, al
jne 0x4d08e2
mov dword [esp], 0xa52fe8
call fcn.00557760
test eax, eax
setne al
test al, al
je 0x4d08e2
mov dword [esp], 0x10000
call sub.msvcrt.dll_malloc
mov dword [0xa53280], eax
mov dword [esp], 0xa52fe8
call fcn.00557900
mov eax, dword [0xa53280]
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 [0xa53280]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [0xa53278], eax
mov eax, dword [0xa53278]
sub eax, 1
mov dword [0xa53284], eax
jmp 0x4d09a3
mov edx, dword [0xa53280]
mov eax, dword [0xa53284]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [0xa5327c], eax
mov eax, dword [0xa5327c]
cmp eax, 0x5c
je 0x4d0965
mov eax, dword [0xa5327c]
cmp eax, 0x2f
je 0x4d0965
mov eax, dword [0xa5327c]
cmp eax, 0x3a
jne 0x4d0996
mov eax, dword [0xa5327c]
cmp eax, 0x3a
jne 0x4d0984
mov eax, dword [0xa53280]
mov edx, dword [0xa53284]
add edx, 1
add eax, edx
mov byte [eax], 0
jmp 0x4d09b5
mov edx, dword [0xa53280]
mov eax, dword [0xa53284]
add eax, edx
mov byte [eax], 0
jmp 0x4d09b5
mov eax, dword [0xa53284]
sub eax, 1
mov dword [0xa53284], eax
mov eax, dword [0xa53284]
not eax
shr eax, 0x1f
test al, al
jne 0x4d092f
mov eax, dword [0xa53280]
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.00483bb6
mov dword [0xa52658], eax
call fcn.004cf083
mov edx, eax
mov eax, dword [0xa52658]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00483d1d
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00483bb6
mov dword [0x6cc1dc], eax
mov dword [esp + 4], 0x14
mov dword [esp], str.Unknown_Opcode_____
call fcn.00483a33
mov edx, eax
mov eax, dword [0x6cc1dc]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00483d1d
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa53278], eax
mov eax, dword [0xa53278]
cmp eax, 1
jle 0x4d0bef
mov dword [0xa53284], 0
mov dword [0xa53278], 1
jmp 0x4d0ac0
mov eax, dword [0xa53278]
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 [0xa53284]
add eax, edx
mov dword [0xa53284], eax
mov eax, dword [0xa53278]
cmp eax, 1
je 0x4d0ab3
mov eax, dword [0xa53284]
add eax, 1
mov dword [0xa53284], eax
mov eax, dword [0xa53278]
add eax, 1
mov dword [0xa53278], eax
mov edx, dword [0xa53278]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4d0a6e
mov eax, dword [0xa53284]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [ebp - 0x178], 1
call fcn.00483bb6
mov dword [0xa51c24], eax
mov dword [0xa53288], 0
mov dword [0xa53278], 1
jmp 0x4d0bd2
mov eax, dword [0xa53278]
cmp eax, 1
je 0x4d0b3c
mov eax, dword [0xa51c24]
mov edx, dword [eax]
mov eax, dword [0xa53288]
add eax, edx
mov byte [eax], 0x20
mov eax, dword [0xa53288]
add eax, 1
mov dword [0xa53288], eax
mov eax, dword [0xa53278]
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 [0xa53278]
lea ecx, [edx*4]
mov ebx, dword [ebp - 0x188]
mov edx, dword [ebx + 4]
add edx, ecx
mov edx, dword [edx]
mov ecx, dword [0xa51c24]
mov ebx, dword [ecx]
mov ecx, dword [0xa53288]
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 [0xa53278]
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 [0xa53288]
add eax, edx
mov dword [0xa53288], eax
mov eax, dword [0xa53278]
add eax, 1
mov dword [0xa53278], eax
mov edx, dword [0xa53278]
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
cmp edx, eax
setl al
test al, al
jne 0x4d0b14
jmp 0x4d0c12
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x178], 1
call fcn.00483bb6
mov dword [0xa51c24], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx]
mov dword [0xa51c2c], eax
mov ecx, dword [ebp - 0x188]
mov eax, dword [ecx + 4]
mov dword [0xa51c28], eax
lea eax, [ebp - 0x40]
mov dword [esp], eax
call fcn.004ebdb0
mov eax, dword [ebp - 0x40]
cmp eax, 0xffffffff
je 0x4d0c5c
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004ebdb0
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
cmp edx, eax
sete al
test al, al
jne 0x4d0c40
jmp 0x4d0c63
mov dword [ebp - 0x3c], 0
call fcn.00477deb
mov dword [0x6d6924], eax
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call fcn.004ebdc0
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4d0cc1
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 [0x6d6920], eax
mov eax, dword [0x6d6920]
imul eax, eax, 0x3e8
mov dword [0x6d6920], eax
jmp 0x4d0ccb
mov dword [0x6d6920], 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 0x4d0cff
mov dword [esp], 0x30d4b
call fcn.00478387
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 0x4d0d38
mov dword [0x6cc188], 0x12e
mov dword [esp], 0x187ce
call fcn.00478696
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 0x4d0d71
mov dword [0x6cc188], 0x130
mov dword [esp], 0x187d0
call fcn.00478696
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 0x4d0daa
mov dword [0x6cc188], 0x12f
mov dword [esp], 0x187cf
call fcn.00478696
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 0x4d0de3
mov dword [0x6cc188], 0x132
mov dword [esp], 0x187d2
call fcn.00478696
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 0x4d0e1c
mov dword [0x6cc188], 0x131
mov dword [esp], 0x187d1
call fcn.00478696
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 0x4d0e55
mov dword [0x6cc188], 0x134
mov dword [esp], 0x187d4
call fcn.00478696
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 0x4d0e8e
mov dword [0x6cc188], 0x133
mov dword [esp], 0x187d3
call fcn.00478696
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 0x4d0ecc
mov dword [0x6cc188], 0x12d
mov dword [esp], 0x187cd
call fcn.00478696
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 0x4d0f0a
mov dword [0x6cc188], 0x12c
mov dword [esp], 0x187cc
call fcn.00478696
mov dword [ebp - 0x178], 1
call fcn.004d3ff3
mov eax, dword [0x6cc180]
mov dword [0x6cc184], eax
mov byte [0x5a66ba], 0x1e
mov byte [0x5a66bb], 0
mov byte [0x5a66bc], 0x1e
mov byte [0x5a66bd], 0
lea eax, [ebp - 0x13c]
mov ecx, eax
call fcn.0053e060
mov eax, dword [0x55a520]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5895a0
mov dword [esp], 0x6cc620
call sub.msvcrt.dll_memcpy
mov dword [0xa53278], 0
jmp 0x4d0fa1
mov eax, dword [0xa53278]
mov edx, dword [0xa53278]
mov edx, dword [edx*4 + 0x6cc620]
or edx, 0xff000000
mov dword [eax*4 + 0x6cc620], edx
mov eax, dword [0xa53278]
add eax, 1
mov dword [0xa53278], eax
mov eax, dword [0xa53278]
cmp eax, 0xff
setle al
test al, al
jne 0x4d0f75
mov eax, dword [0x55a524]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5899a0
mov dword [esp], 0x6cca20
call sub.msvcrt.dll_memcpy
mov dword [0xa53278], 0
jmp 0x4d1007
mov eax, dword [0xa53278]
mov edx, dword [0xa53278]
mov edx, dword [edx*4 + 0x6cca20]
or edx, 0xff000000
mov dword [eax*4 + 0x6cca20], edx
mov eax, dword [0xa53278]
add eax, 1
mov dword [0xa53278], eax
mov eax, dword [0xa53278]
cmp eax, 0x3f
setle al
test al, al
jne 0x4d0fdb
mov dword [0xa450c0], 0
mov dword [0xa450c4], 0
mov dword [0xa450c8], 0
mov dword [0xa450cc], 0x808080
mov dword [0xa450d0], 0x808080
mov dword [0xa450d4], 0x808080
mov dword [0xa450d8], 0xffffff
mov dword [0xa450dc], 0xffffff
mov dword [0xa450e0], 0xffffff
mov dword [0xa450e4], 0
mov dword [0xa450e8], 0x808080
mov dword [0xa450ec], 0xffffff
mov dword [0xa450f0], 0
mov dword [0xa450f4], 0x808080
mov dword [0xa450f8], 0xffffff
mov dword [0xa450fc], 0
mov dword [0xa45100], 0x808080
mov dword [0xa45104], 0xffffff
mov eax, dword [0x55a518]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x57d5a0
mov dword [esp], 0xa45120
call sub.msvcrt.dll_memcpy
mov eax, dword [0x55a51c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x5815a0
mov dword [esp], 0xa49120
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.0048849f
mov dword [0x55a52c], 1
mov eax, dword [0x6b6cc8]
test eax, eax
je 0x4d11a1
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x19
mov dword [esp], 0x50
call fcn.004aab05
mov dword [0x55a2e0], eax
mov eax, dword [0x55a2e0]
neg eax
mov dword [0xa53278], eax
mov edx, dword [0x6ccb24]
mov eax, dword [0xa53278]
imul eax, eax, 0xb0
add eax, edx
mov byte [eax + 0x12], 1
mov edx, dword [0x55a07c]
mov eax, dword [0x55a078]
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.004aab05
mov dword [0xa52e8c], eax
mov edx, dword [0x55a078]
mov eax, dword [0x55a07c]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6ccb24]
mov eax, dword [0xa52e8c]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x576de0
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x55a084]
mov eax, dword [0x55a080]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x20
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004aab05
mov dword [0xa52e90], eax
mov edx, dword [0x55a080]
mov eax, dword [0x55a084]
imul eax, edx
shl eax, 2
mov edx, eax
mov ecx, dword [0x6ccb24]
mov eax, dword [0xa52e90]
imul eax, eax, 0xffffff50
add eax, ecx
mov eax, dword [eax + 0x40]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x5771e0
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov dword [0xa53278], 0
mov eax, dword [0xa53278]
add eax, 1
mov dword [0xa53278], eax
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 2
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._KEYBOARD__BUTTON_
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 0x200
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Keyboard
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.0040346f
mov eax, dword [0xa53278]
add eax, 1
mov dword [0xa53278], eax
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 4], 3
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 8], str._MOUSE__BUTTON__AXIS__WHEEL_
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x10], 3
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x14], 2
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x18], 3
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [eax + 0x138], str.Mouse
mov edx, dword [0x6b6ce0]
mov eax, dword [0xa53278]
imul eax, eax, 0x160
add eax, edx
mov dword [esp], eax
call fcn.0040346f
mov eax, dword [0xa53278]
mov dword [0x6b6cdc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4057e6
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], 0x40469a
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 [0x6d6918], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x4d1713
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 [0x6bc164]
test eax, eax
jne 0x4d14d2
mov dword [0x6bbfb8], 1
jmp 0x4d14d2
mov dword [esp], 0x64
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x178], 2
call eax
sub esp, 4
jmp 0x4d14d3
nop
mov eax, dword [0x6bbfb8]
test eax, eax
sete al
test al, al
jne 0x4d14b5
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.004481f8
mov dword [esp], 0x12
call fcn.004d7770
mov dword [esp + 4], 0x190
mov dword [esp], 0x280
call fcn.004d7740
mov dword [esp], 0x190
call fcn.004dc260
test eax, eax
sete al
test al, al
je 0x4d1547
mov dword [esp], 1
call sub.msvcrt.dll_exit
mov eax, dword [0x6bbfc0]
test eax, eax
jne 0x4d1568
mov dword [esp], str.Untitled
mov dword [ebp - 0x178], 2
call fcn.0044821a
jmp 0x4d157f
mov eax, dword [0x6bbfc0]
mov dword [esp], eax
mov dword [ebp - 0x178], 2
call fcn.0044821a
mov dword [0x6bbfb4], 1
mov dword [ebp - 0x178], 2
call fcn.0046dbb1
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4d15b7
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
call fcn.0046db61
sub esp, 4
mov dword [esp], eax
call fcn.0047886f
mov dword [esp], str.GL_EXT_framebuffer_object
call fcn.0046dbd1
sub esp, 4
test al, al
setne al
test al, al
je 0x4d15d9
mov dword [0x6bbf88], 1
mov dword [esp], 0x4ccbef
mov dword [ebp - 0x178], 2
call fcn.004db2a0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x4c9e73
mov dword [esp], 8
call fcn.004db3f0
mov dword [esp], 0x4c9c0b
call fcn.004db340
mov dword [esp], 0x4c9c2d
call fcn.004db4c0
mov dword [esp], 0x4c9e3d
call fcn.004db380
mov dword [esp], 0x4c9e58
call fcn.004db500
mov dword [esp], 0x4ce873
call fcn.004db600
mov dword [esp], fcn.004ce8bf
call fcn.004db680
mov dword [esp], 0x4cee57
call fcn.004db6c0
mov dword [esp], 0x4ca11a
call fcn.004db300
mov dword [esp], 0x4cee71
call fcn.004db640
call fcn.004dd070
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x178], 1
mov ecx, eax
call fcn.0053e760
mov eax, 0
mov dword [ebp - 0x180], eax
jmp 0x4d16f3
lea eax, [ebp - 0x17c]
mov dword [esp], eax
call fcn.004ea370
mov eax, dword [ebp - 0x180]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret