Function at 0x4975b6
Capabilities:
Create thread
Log keystrokes via polling

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x378
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0x250], xmm6
movaps xmmword [rbp + 0x260], xmm7
movaps xmmword [rbp + 0x270], xmm8
movaps xmmword [rbp + 0x280], xmm9
movaps xmmword [rbp + 0x290], xmm10
movaps xmmword [rbp + 0x2a0], xmm11
movaps xmmword [rbp + 0x2b0], xmm12
movaps xmmword [rbp + 0x2c0], xmm13
movaps xmmword [rbp + 0x2d0], xmm14
movaps xmmword [rbp + 0x2e0], xmm15
mov dword [rbp + 0x340], ecx
mov qword [rbp + 0x348], rdx
lea rax, [0x005867e0]
mov qword [rbp - 0x20], rax
lea rax, [0x005eecf4]
mov qword [rbp - 0x18], rax
lea rax, [rbp - 0x10]
lea rbx, [rbp + 0x250]
mov qword [rax], rbx
lea rdx, [0x00498f1b]
mov qword [rax + 8], rdx
mov qword [rax + 0x10], rsp
lea rax, [rbp - 0x50]
mov rcx, rax
call fcn.004b52e0
call fcn.004b37e0
mov qword [0x00713f80], 0
mov qword [0x00713f88], 0
mov dword [0x00713f90], 0xffffffff
mov dword [0x00713f94], 0xffffffff
mov dword [0x00713f98], 0
mov dword [0x00713f9c], 0xffffffff
mov dword [0x00713fa0], 0xffffffff
mov dword [0x00713fa4], 0xffffffff
mov dword [0x00c882d0], 0
mov eax, dword [0x00c882d0]
cmp eax, 2
jg 0x4977e1
mov eax, dword [0x00c882d0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00713ee0]
mov dword [rdx + rax], 1
mov eax, dword [0x00c882d0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00713ee8]
mov qword [rdx + rax], 0
mov eax, dword [0x00c882d0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00713ef0]
mov qword [rdx + rax], 0
mov eax, dword [0x00c882d0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00713ef8]
mov dword [rdx + rax], 0
mov eax, dword [0x00c882d0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00713efc]
mov dword [rdx + rax], 0
mov eax, dword [0x00c882d0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00713f00]
mov dword [rdx + rax], 0
mov eax, dword [0x00c882d0]
add eax, 1
mov dword [0x00c882d0], eax
jmp 0x4976cc
mov dword [rbp - 0x48], 0xffffffff
call 0x4018f9
mov eax, dword [0x00713ec0]
test eax, eax
je 0x497801
mov dword [0x005880f4], 0
mov eax, dword [0x00713ebc]
test eax, eax
je 0x497817
mov eax, dword [0x00713ebc]
mov dword [0x00713e94], eax
mov ecx, 0x20
call fcn.00437ba0
mov qword [0x0072e738], rax
mov ecx, 0x10
call fcn.00437ba0
mov qword [0x00713f68], rax
mov ecx, 0x28
call fcn.00437ba0
mov qword [0x00713f70], rax
mov ecx, 0x28
call fcn.00437ba0
mov qword [0x00c59ba0], rax
mov dword [rbp - 0x48], 0xffffffff
mov ecx, 0x50
call fcn.00437c4b
mov qword [0x00713fb0], rax
mov ecx, 0x70
call fcn.00437ba0
mov qword [0x00713fc8], rax
mov rax, qword [0x0072e738]
mov rcx, rax
call fcn.00437c94
mov dword [0x0072e740], eax
mov eax, dword [0x0072e740]
mov dword [0x0072e744], eax
mov eax, dword [0x0072e744]
cdqe
mov rcx, qword [0x0072e738]
mov rdx, rax
call fcn.00438252
mov qword [rbp + 0x248], rax
mov rax, qword [rbp + 0x248]
mov dword [rax + 8], 0xffff
mov rax, qword [rbp + 0x248]
mov eax, dword [rax + 8]
add eax, 1
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 2
mov rdx, rax
mov ecx, 1
call sub.msvcrt.dll_calloc
mov rdx, rax
mov rax, qword [rbp + 0x248]
mov qword [rax], rdx
call 0x46c21b
mov rax, qword [0x005d3c80]
mov eax, dword [rax]
test eax, eax
je 0x497924
mov dword [0x0071404c], 1
mov rax, qword [0x005d38d0]
mov eax, dword [rax]
test eax, eax
je 0x497975
mov ecx, 0x3e8
call sub.msvcrt.dll_malloc
mov qword [rbp + 0x240], rax
mov rax, qword [rbp + 0x240]
mov edx, 0x100
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetConsoleProcessList]
mov dword [rbp - 0x48], 0xffffffff
call rax
cmp eax, 1
sete al
test al, al
je 0x497975
mov dword [0x00714048], 1
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x28
mov dword [rax + 0x14], 0x3b00
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x50
mov dword [rax + 0x14], 0x3c00
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x78
mov dword [rax + 0x14], 0x3d00
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0xa0
mov dword [rax + 0x14], 0x3e00
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0xc8
mov dword [rax + 0x14], 0x3f00
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0xf0
mov dword [rax + 0x14], 0x4000
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x118
mov dword [rax + 0x14], 0x4100
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x140
mov dword [rax + 0x14], 0x4200
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x168
mov dword [rax + 0x14], 0x4300
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x190
mov dword [rax + 0x14], 0x4400
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x1b8
mov dword [rax + 0x14], 0x4800
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x1b8
mov dword [rax + 0x18], 0x187a8
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x1e0
mov dword [rax + 0x14], 0x4b00
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x1e0
mov dword [rax + 0x18], 0x187a4
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x208
mov dword [rax + 0x14], 0x4d00
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x208
mov dword [rax + 0x18], 0x187a6
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x230
mov dword [rax + 0x14], 0x5000
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x230
mov dword [rax + 0x18], 0x187a2
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x4b0
mov dword [rax + 0x14], 0x8500
mov rax, qword [0x005d3bc0]
mov rax, qword [rax]
add rax, 0x4d8
mov dword [rax + 0x14], 0x8600
mov rax, qword [0x005d3be0]
mov rax, qword [rax]
mov byte [rax], 1
mov rax, qword [0x005d3be0]
mov rax, qword [rax]
mov dword [rax + 4], 0
mov rax, qword [0x005d3be0]
mov rax, qword [rax]
mov byte [rax + 0x11], 0
mov rax, qword [0x005d3be0]
mov rax, qword [rax]
mov byte [rax + 0x10], 0
mov rax, qword [0x00714068]
add rax, 0x20
mov dword [rax], 8
mov rax, qword [0x00714068]
add rax, 0x38
mov dword [rax], 8
mov rax, qword [0x00714068]
add rax, 0x40
mov dword [rax], 8
mov rax, qword [0x00714060]
add rax, 0x20
mov dword [rax], 8
mov rax, qword [0x00714060]
add rax, 0x38
mov dword [rax], 0xe
mov rax, qword [0x00714060]
add rax, 0x40
mov dword [rax], 0x10
mov rax, qword [0x00714070]
add rax, 0x20
mov dword [rax], 0x10
mov rax, qword [0x00714070]
add rax, 0x38
mov dword [rax], 0x10
mov rax, qword [0x00714070]
add rax, 0x40
mov dword [rax], 0x10
mov rax, qword [0x00714068]
add rax, 0x24
mov dword [rax], 0x10
mov rax, qword [0x00714068]
add rax, 0x3c
mov dword [rax], 0x10
mov rax, qword [0x00714068]
add rax, 0x44
mov dword [rax], 0x10
mov rax, qword [0x00714060]
add rax, 0x24
mov dword [rax], 8
mov rax, qword [0x00714060]
add rax, 0x3c
mov dword [rax], 0xe
mov rax, qword [0x00714060]
add rax, 0x44
mov dword [rax], 0x10
mov rax, qword [0x00714070]
add rax, 0x24
mov dword [rax], 0x10
mov rax, qword [0x00714070]
add rax, 0x3c
mov dword [rax], 0x10
mov rax, qword [0x00714070]
add rax, 0x44
mov dword [rax], 0x10
mov rax, qword [0x00724a48]
mov r8d, 0xc0000
mov edx, 0
mov rcx, rax
call sub.msvcrt.dll_memset
mov dword [rbp - 0x48], 0xffffffff
call fcn.0043a28e
mov dword [0x00c882e4], eax
mov rcx, qword [0x00724a48]
mov eax, dword [0x00c882e4]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 6
add rax, rcx
mov byte [rax + 0x10], 0
call fcn.0043a28e
mov dword [0x00c882e4], eax
mov rcx, qword [0x00724a48]
mov eax, dword [0x00c882e4]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 6
add rax, rcx
mov byte [rax + 0x10], 0
mov r8d, 0x3c
mov edx, 0
lea rcx, [0x0072e760]
call sub.msvcrt.dll_memset
lea rax, [0x0072e760]
mov qword [0x0072e7c0], rax
lea rax, [0x0072e768]
mov qword [0x0072e7c8], rax
lea rax, [0x0072e76c]
mov qword [0x0072e7d0], rax
lea rax, [0x0072e764]
mov qword [0x0072e7d8], rax
lea rax, [0x0072e761]
mov qword [0x0072e7e0], rax
lea rax, [0x0072e769]
mov qword [0x0072e7e8], rax
lea rax, [0x0072e76d]
mov qword [0x0072e7f0], rax
lea rax, [0x0072e765]
mov qword [0x0072e7f8], rax
lea rax, [0x0072e760]
mov qword [0x0072e800], rax
lea rax, [0x0072e768]
mov qword [0x0072e808], rax
lea rax, [0x0072e76c]
mov qword [0x0072e810], rax
lea rax, [0x0072e764]
mov qword [0x0072e818], rax
lea rax, [0x0072e77c]
mov qword [0x0072e820], rax
lea rax, [0x0072e778]
mov qword [0x0072e828], rax
lea rax, [0x0072e770]
mov qword [0x0072e830], rax
lea rax, [0x0072e774]
mov qword [0x0072e838], rax
lea rax, [0x0072e760]
mov qword [0x0072e840], rax
lea rax, [0x0072e768]
mov qword [0x0072e848], rax
lea rax, [0x0072e76c]
mov qword [0x0072e850], rax
lea rax, [0x0072e764]
mov qword [0x0072e858], rax
lea rax, [0x0072e77c]
mov qword [0x0072e860], rax
lea rax, [0x0072e778]
mov qword [0x0072e868], rax
lea rax, [0x0072e770]
mov qword [0x0072e870], rax
lea rax, [0x0072e774]
mov qword [0x0072e878], rax
lea rax, [0x0072e786]
mov qword [0x0072e880], rax
lea rax, [0x0072e780]
mov qword [0x0072e888], rax
lea rax, [0x0072e782]
mov qword [0x0072e890], rax
lea rax, [0x0072e784]
mov qword [0x0072e898], rax
lea rax, [0x0072e788]
mov qword [0x0072e8a0], rax
lea rax, [0x0072e78a]
mov qword [0x0072e8a8], rax
mov dword [0x00c882d0], 0
mov eax, dword [0x00c882d0]
cmp eax, 0x1f
jg 0x497f1a
mov eax, dword [0x00c882d0]
cdqe
lea rdx, [0x00c58f20]
mov byte [rax + rdx], 0x20
mov eax, dword [0x00c882d0]
add eax, 1
mov dword [0x00c882d0], eax
jmp 0x497eeb
mov byte [0x00c590a0], 0x81
mov dword [0x0072e93c], 0x100000
mov eax, dword [0x0072e93c]
mov eax, eax
mov rcx, rax
call sub.msvcrt.dll_malloc
mov rdx, rax
mov rax, qword [0x005d3b10]
mov qword [rax], rdx
mov rax, qword [0x005d3b10]
mov rdx, qword [rax]
mov rax, qword [0x005d3b30]
mov qword [rax], rdx
mov rax, qword [0x005d3b10]
mov rax, qword [rax]
mov edx, dword [0x0072e93c]
mov edx, edx
add rdx, rax
mov rax, qword [0x005d3b20]
mov qword [rax], rdx
mov r8d, 0x10fff3
mov edx, 0
mov rcx, qword [0x005d3890]
call sub.msvcrt.dll_memset
mov r8d, 0x10000
mov edx, 0
lea rcx, [0x00c3bc80]
call sub.msvcrt.dll_memset
mov rax, qword [0x005d3890]
lea rdx, [rax + 0x500]
mov rax, qword [0x005d38e0]
mov qword [rax], rdx
mov rax, qword [0x005d38b0]
mov eax, dword [rax]
lea edx, [rax - 8]
mov rax, qword [0x005d38b0]
mov dword [rax], edx
mov rax, qword [0x005d38b0]
mov eax, dword [rax]
mov edx, eax
mov rax, qword [0x005d38e0]
mov rax, qword [rax]
add rax, rdx
mov rdx, rax
mov rax, qword [0x005d3bb0]
mov qword [rax], rdx
mov rax, qword [0x005d3bb0]
mov rax, qword [rax]
mov qword [rax], 0
mov dword [rbp - 0x48], 0xffffffff
mov edx, 0
mov ecx, 0
call fcn.00446623
mov rdx, rax
mov rax, qword [0x005d3ba0]
mov qword [rax], rdx
mov edx, 0
mov ecx, 1
call fcn.00446623
mov qword [0x00c4bc80], rax
mov rax, qword [0x00c4bc80]
mov rax, qword [rax]
mov byte [rax], 0x20
mov edx, 0
mov ecx, 0
call fcn.00446b22
mov qword [0x00c59c00], rax
call fcn.004965d4
mov rdx, rax
mov rax, qword [0x00c59c00]
mov rcx, rax
call fcn.00446cf0
movzx eax, byte [0x00c88350]
test al, al
sete al
test al, al
je 0x4980c1
lea rcx, [0x00c88350]
call fcn.00586250
test eax, eax
setne al
test al, al
je 0x4980c1
mov ecx, 0x10000
call sub.msvcrt.dll_malloc
mov qword [0x00c88348], rax
lea rcx, [0x00c88350]
call fcn.00586450
mov rax, qword [0x00c88348]
mov r8d, 0x10000
mov rdx, rax
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov dword [rbp - 0x48], 0xffffffff
call rax
mov rax, qword [0x00c88348]
mov rcx, rax
call sub.msvcrt.dll_strlen
mov dword [0x00c882d0], eax
mov eax, dword [0x00c882d0]
sub eax, 1
mov dword [0x00c882d4], eax
mov eax, dword [0x00c882d4]
test eax, eax
js 0x4981a8
mov rdx, qword [0x00c88348]
mov eax, dword [0x00c882d4]
cdqe
add rax, rdx
movzx eax, byte [rax]
movsx eax, al
mov dword [0x00c882e4], eax
mov eax, dword [0x00c882e4]
cmp eax, 0x5c
je 0x498157
mov eax, dword [0x00c882e4]
cmp eax, 0x2f
je 0x498157
mov eax, dword [0x00c882e4]
cmp eax, 0x3a
jne 0x498194
mov eax, dword [0x00c882e4]
cmp eax, 0x3a
jne 0x49817d
mov rdx, qword [0x00c88348]
mov eax, dword [0x00c882d4]
cdqe
add rax, 1
add rax, rdx
mov byte [rax], 0
jmp 0x4981a8
mov rdx, qword [0x00c88348]
mov eax, dword [0x00c882d4]
cdqe
add rax, rdx
mov byte [rax], 0
jmp 0x4981a8
mov eax, dword [0x00c882d4]
sub eax, 1
mov dword [0x00c882d4], eax
jmp 0x49810a
mov rax, qword [0x00c88348]
mov dword [rbp - 0x48], 0xffffffff
mov rcx, rax
call sub.msvcrt.dll__chdir
mov edx, 0
mov ecx, 0
call fcn.00446b22
mov qword [0x00c59c08], rax
call fcn.004965d4
mov rdx, rax
mov rax, qword [0x00c59c08]
mov rcx, rax
call fcn.00446cf0
mov edx, 0
mov ecx, 0
call fcn.00446b22
mov qword [0x00724108], rax
mov edx, 0x14
lea rcx, str.Unknown_Opcode_____
call fcn.004468f9
mov rdx, rax
mov rax, qword [0x00724108]
mov rcx, rax
call fcn.00446cf0
mov eax, dword [rbp + 0x340]
mov dword [0x00c882d0], eax
mov eax, dword [0x00c882d0]
cmp eax, 1
jle 0x4983e8
mov dword [0x00c882d4], 0
mov dword [0x00c882d0], 1
mov edx, dword [0x00c882d0]
mov eax, dword [rbp + 0x340]
cmp edx, eax
jge 0x4982c3
mov eax, dword [0x00c882d0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x348]
add rax, rdx
mov rax, qword [rax]
mov rcx, rax
call sub.msvcrt.dll_strlen
mov edx, eax
mov eax, dword [0x00c882d4]
add eax, edx
mov dword [0x00c882d4], eax
mov eax, dword [0x00c882d0]
cmp eax, 1
je 0x4982b2
mov eax, dword [0x00c882d4]
add eax, 1
mov dword [0x00c882d4], eax
mov eax, dword [0x00c882d0]
add eax, 1
mov dword [0x00c882d0], eax
jmp 0x498253
mov eax, dword [0x00c882d4]
mov dword [rbp - 0x48], 0xffffffff
mov edx, 0
mov ecx, eax
call fcn.00446b22
mov qword [0x00c591a8], rax
mov dword [0x00c882d8], 0
mov dword [0x00c882d0], 1
mov edx, dword [0x00c882d0]
mov eax, dword [rbp + 0x340]
cmp edx, eax
jge 0x498405
mov eax, dword [0x00c882d0]
cmp eax, 1
je 0x49833d
mov rax, qword [0x00c591a8]
mov rdx, qword [rax]
mov eax, dword [0x00c882d8]
cdqe
add rax, rdx
mov byte [rax], 0x20
mov eax, dword [0x00c882d8]
add eax, 1
mov dword [0x00c882d8], eax
mov eax, dword [0x00c882d0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x348]
add rax, rdx
mov rax, qword [rax]
mov rcx, rax
call sub.msvcrt.dll_strlen
mov r8, rax
mov eax, dword [0x00c882d0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x348]
add rax, rdx
mov rdx, qword [rax]
mov rax, qword [0x00c591a8]
mov rcx, qword [rax]
mov eax, dword [0x00c882d8]
cdqe
add rax, rcx
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov eax, dword [0x00c882d0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x348]
add rax, rdx
mov rax, qword [rax]
mov rcx, rax
call sub.msvcrt.dll_strlen
mov edx, eax
mov eax, dword [0x00c882d8]
add eax, edx
mov dword [0x00c882d8], eax
mov eax, dword [0x00c882d0]
add eax, 1
mov dword [0x00c882d0], eax
jmp 0x4982f7
mov dword [rbp - 0x48], 0xffffffff
mov edx, 0
mov ecx, 0
call fcn.00446b22
mov qword [0x00c591a8], rax
mov eax, dword [rbp + 0x340]
mov dword [0x00c591b8], eax
mov rax, qword [rbp + 0x348]
mov qword [0x00c591b0], rax
lea rax, [rbp + 0x208]
mov rcx, rax
call sub.msvcrt.dll__time64
mov rax, qword [rbp + 0x208]
cmp rax, 0xffffffffffffffff
je 0x49845f
lea rax, [rbp + 0x210]
mov rcx, rax
call sub.msvcrt.dll__time64
mov rdx, qword [rbp + 0x210]
mov rax, qword [rbp + 0x208]
cmp rdx, rax
jne 0x49846a
jmp 0x49843b
mov qword [rbp + 0x210], 0
call fcn.00438dd8
mov dword [0x0072e924], eax
lea rax, [rbp + 0x210]
mov rcx, rax
call sub.msvcrt.dll_localtime
mov qword [rbp + 0x238], rax
cmp qword [rbp + 0x238], 0
je 0x4984d9
mov rax, qword [rbp + 0x238]
mov eax, dword [rax + 8]
imul edx, eax, 0xe10
mov rax, qword [rbp + 0x238]
mov eax, dword [rax + 4]
imul eax, eax, 0x3c
add edx, eax
mov rax, qword [rbp + 0x238]
mov eax, dword [rax]
add eax, edx
mov dword [0x0072e920], eax
mov eax, dword [0x0072e920]
imul eax, eax, 0x3e8
mov dword [0x0072e920], eax
jmp 0x4984e3
mov dword [0x0072e920], 0
mov ecx, 0x91
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
mov dword [rbp - 0x48], 0xffffffff
call rax
cwde
and eax, 1
test eax, eax
setne al
test al, al
je 0x49850f
mov ecx, 0x30d4b
call fcn.004393c0
mov ecx, 0x91
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
mov dword [rbp - 0x48], 0xffffffff
call rax
shr ax, 0xf
test al, al
je 0x498540
mov dword [0x00724088], 0x12e
mov ecx, 0x187ce
call fcn.00439723
mov ecx, 0xa0
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
mov dword [rbp - 0x48], 0xffffffff
call rax
shr ax, 0xf
test al, al
je 0x498571
mov dword [0x00724088], 0x130
mov ecx, 0x187d0
call fcn.00439723
mov ecx, 0xa1
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
mov dword [rbp - 0x48], 0xffffffff
call rax
shr ax, 0xf
test al, al
je 0x4985a2
mov dword [0x00724088], 0x12f
mov ecx, 0x187cf
call fcn.00439723
mov ecx, 0xa2
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
mov dword [rbp - 0x48], 0xffffffff
call rax
shr ax, 0xf
test al, al
je 0x4985d3
mov dword [0x00724088], 0x132
mov ecx, 0x187d2
call fcn.00439723
mov ecx, 0xa3
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
mov dword [rbp - 0x48], 0xffffffff
call rax
shr ax, 0xf
test al, al
je 0x498604
mov dword [0x00724088], 0x131
mov ecx, 0x187d1
call fcn.00439723
mov ecx, 0xa4
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
mov dword [rbp - 0x48], 0xffffffff
call rax
shr ax, 0xf
test al, al
je 0x498635
mov dword [0x00724088], 0x134
mov ecx, 0x187d4
call fcn.00439723
mov ecx, 0xa5
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
mov dword [rbp - 0x48], 0xffffffff
call rax
shr ax, 0xf
test al, al
je 0x498666
mov dword [0x00724088], 0x133
mov ecx, 0x187d3
call fcn.00439723
mov ecx, 0x14
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
mov dword [rbp - 0x48], 0xffffffff
call rax
cwde
and eax, 1
test eax, eax
setne al
test al, al
je 0x49869c
mov dword [0x00724088], 0x12d
mov ecx, 0x187cd
call fcn.00439723
mov ecx, 0x90
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
mov dword [rbp - 0x48], 0xffffffff
call rax
cwde
and eax, 1
test eax, eax
setne al
test al, al
je 0x4986d2
mov dword [0x00724088], 0x12c
mov ecx, 0x187cc
call fcn.00439723
mov dword [rbp - 0x48], 0xffffffff
call fcn.0049b88b
mov eax, dword [0x00724080]
mov dword [0x00724084], eax
mov rax, qword [0x005d3890]
mov byte [rax + 0x41a], 0x1e
mov rax, qword [0x005d3890]
mov byte [rax + 0x41b], 0
mov rax, qword [0x005d3890]
mov byte [rax + 0x41c], 0x1e
mov rax, qword [0x005d3890]
mov byte [rax + 0x41d], 0
lea rax, [rbp + 0x20]
mov rcx, rax
call fcn.00550110
mov eax, dword [0x005885c0]
cdqe
mov r8, rax
lea rdx, [0x005b4740]
lea rcx, [0x00724540]
call sub.msvcrt.dll_memcpy
mov dword [0x00c882d0], 0
mov eax, dword [0x00c882d0]
cmp eax, 0xff
jg 0x4987b0
mov eax, dword [0x00c882d0]
cdqe
lea rdx, [rax*4]
lea rax, [0x00724540]
mov edx, dword [rdx + rax]
mov eax, dword [0x00c882d0]
mov ecx, edx
or ecx, 0xff000000
cdqe
lea rdx, [rax*4]
lea rax, [0x00724540]
mov dword [rdx + rax], ecx
mov eax, dword [0x00c882d0]
add eax, 1
mov dword [0x00c882d0], eax
jmp 0x498756
mov eax, dword [0x005885c4]
cdqe
mov r8, rax
lea rdx, [0x005b4b40]
lea rcx, [0x00724940]
call sub.msvcrt.dll_memcpy
mov dword [0x00c882d0], 0
mov eax, dword [0x00c882d0]
cmp eax, 0x3f
jg 0x498830
mov eax, dword [0x00c882d0]
cdqe
lea rdx, [rax*4]
lea rax, [0x00724940]
mov edx, dword [rdx + rax]
mov eax, dword [0x00c882d0]
mov ecx, edx
or ecx, 0xff000000
cdqe
lea rdx, [rax*4]
lea rax, [0x00724940]
mov dword [rdx + rax], ecx
mov eax, dword [0x00c882d0]
add eax, 1
mov dword [0x00c882d0], eax
jmp 0x4987d8
mov dword [0x00c4c220], 0
mov dword [0x00c4c224], 0
mov dword [0x00c4c228], 0
mov dword [0x00c4c22c], 0x808080
mov dword [0x00c4c230], 0x808080
mov dword [0x00c4c234], 0x808080
mov dword [0x00c4c238], 0xffffff
mov dword [0x00c4c23c], 0xffffff
mov dword [0x00c4c240], 0xffffff
mov dword [0x00c4c244], 0
mov dword [0x00c4c248], 0x808080
mov dword [0x00c4c24c], 0xffffff
mov dword [0x00c4c250], 0
mov dword [0x00c4c254], 0x808080
mov dword [0x00c4c258], 0xffffff
mov dword [0x00c4c25c], 0
mov dword [0x00c4c260], 0x808080
mov dword [0x00c4c264], 0xffffff
mov eax, dword [0x005885b8]
cdqe
mov r8, rax
lea rdx, [0x005a8740]
lea rcx, [0x00c4c280]
call sub.msvcrt.dll_memcpy
mov eax, dword [0x005885bc]
cdqe
mov r8, rax
lea rdx, [0x005ac740]
lea rcx, [0x00c50280]
call sub.msvcrt.dll_memcpy
mov dword [rsp + 0x28], 1
mov dword [rsp + 0x20], 0
mov dword [rbp - 0x48], 1
mov r9d, 0
mov r8d, 0
mov edx, 0
mov ecx, 0
call fcn.0044c1c8
mov dword [0x005885cc], 1
mov rax, qword [0x005d38d0]
mov eax, dword [rax]
test eax, eax
je 0x4989bc
mov r9d, 0
mov r8d, 0
mov edx, 0x19
mov ecx, 0x50
call fcn.00471b09
mov dword [0x00588380], eax
mov eax, dword [0x00588380]
neg eax
mov dword [0x00c882d0], eax
mov rcx, qword [0x00724a48]
mov eax, dword [0x00c882d0]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 6
add rax, rcx
mov byte [rax + 0x12], 1
mov edx, dword [0x00588104]
mov eax, dword [0x00588100]
mov dword [rbp - 0x48], 1
mov r9d, 1
mov r8d, 0x20
mov ecx, eax
call fcn.00471b09
mov dword [0x00c5a448], eax
mov edx, dword [0x00588100]
mov eax, dword [0x00588104]
imul eax, edx
shl eax, 2
movsxd rcx, eax
mov r8, qword [0x00724a48]
mov eax, dword [0x00c5a448]
neg eax
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 6
add rax, r8
mov rax, qword [rax + 0x40]
mov r8, rcx
lea rdx, [0x005a1f00]
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x0058810c]
mov eax, dword [0x00588108]
mov r9d, 1
mov r8d, 0x20
mov ecx, eax
call fcn.00471b09
mov dword [0x00c5a44c], eax
mov edx, dword [0x00588108]
mov eax, dword [0x0058810c]
imul eax, edx
shl eax, 2
movsxd rcx, eax
mov r8, qword [0x00724a48]
mov eax, dword [0x00c5a44c]
neg eax
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 6
add rax, r8
mov rax, qword [rax + 0x40]
mov r8, rcx
lea rdx, [0x005a2300]
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov dword [0x00c882d0], 0
mov eax, dword [0x00c882d0]
add eax, 1
mov dword [0x00c882d0], eax
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 4], 2
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
lea rdx, str._KEYBOARD__BUTTON_
mov qword [rax + 8], rdx
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x14], 0x200
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
lea rdx, str.Keyboard
mov qword [rax + 0x148], rdx
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov rcx, rax
call fcn.00403164
mov eax, dword [0x00c882d0]
add eax, 1
mov dword [0x00c882d0], eax
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 4], 3
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
lea rdx, str._MOUSE__BUTTON__AXIS__WHEEL_
mov qword [rax + 8], rdx
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x14], 3
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x18], 2
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x1c], 3
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
lea rdx, str.Mouse
mov qword [rax + 0x148], rdx
mov rax, qword [0x005d3910]
mov rdx, qword [rax]
mov eax, dword [0x00c882d0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov rcx, rax
call fcn.00403164
mov edx, dword [0x00c882d0]
mov rax, qword [0x005d3900]
mov dword [rax], edx
mov r8d, 0
mov edx, 0
mov rcx, qword [0x005d2b80]
mov rax, qword [sym.imp.msvcrt.dll__beginthread]
call rax
mov qword [rbp + 0x230], rax
mov rax, qword [rbp + 0x230]
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_SetThreadPriority]
call rax
mov r8d, 0
mov edx, 0
mov rcx, qword [0x005d2b90]
mov rax, qword [sym.imp.msvcrt.dll__beginthread]
call rax
mov qword [rbp + 0x228], rax
mov rax, qword [rbp + 0x228]
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_SetThreadPriority]
call rax
mov dword [0x0072e918], 1
mov r8d, 0
mov edx, 0
lea rcx, [0x00498fba]
mov rax, qword [sym.imp.msvcrt.dll__beginthread]
call rax
mov qword [rbp + 0x220], rax
mov rax, qword [rbp + 0x220]
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_SetThreadPriority]
call rax
mov eax, dword [0x0071404c]
test eax, eax
jne 0x498d66
mov dword [0x00713e74], 1
mov eax, dword [0x00713e74]
test eax, eax
jne 0x498d87
mov ecx, 0x64
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
mov dword [rbp - 0x48], 1
call rax
jmp 0x498d66
mov rax, qword [rbp + 0x348]
mov dword [rbp - 0x48], 1
mov rdx, rax
lea rcx, [rbp + 0x340]
call fcn.004068a0
mov ecx, 0x92
call fcn.004a0b50
mov edx, 0x190
mov ecx, 0x280
call fcn.004a0b30
mov ecx, 0x190
call fcn.004a54e0
test eax, eax
sete al
test al, al
je 0x498dda
mov ecx, 1
call sub.msvcrt.dll_exit
mov rax, qword [0x00713e80]
test rax, rax
jne 0x498dfb
mov dword [rbp - 0x48], 1
lea rcx, str.Untitled
call fcn.004068ce
jmp 0x498e11
mov rax, qword [0x00713e80]
mov dword [rbp - 0x48], 1
mov rcx, rax
call fcn.004068ce
mov dword [0x00713e70], 1
mov dword [rbp - 0x48], 1
call fcn.0042f376
mov dword [rbp + 0x21c], eax
cmp dword [rbp + 0x21c], 0
je 0x498e4b
mov eax, dword [rbp + 0x21c]
mov ecx, eax
call fcn.0042f2fc
mov rcx, rax
call fcn.004398aa
lea rcx, str.GL_EXT_framebuffer_object
call fcn.0042f39d
test al, al
setne al
test al, al
je 0x498e6a
mov dword [0x00713e44], 1
mov dword [rbp - 0x48], 1
lea rcx, [0x00493c66]
call fcn.0049eb00
mov r8d, 0
lea rdx, [0x00490bff]
mov ecx, 8
call fcn.0049ecc0
lea rcx, [0x00490961]
call fcn.0049ebc0
lea rcx, [0x0049098c]
call fcn.0049ed70
lea rcx, [0x00490bb3]
call fcn.0049ec20
lea rcx, [0x00490bd9]
call fcn.0049edd0
lea rcx, [0x00495ae9]
call fcn.0049ef00
lea rcx, [fcn.00495b3e]
call fcn.0049efc0
lea rcx, [0x00496165]
call fcn.0049f020
lea rcx, [0x00490ead]
call fcn.0049eb70
lea rcx, [0x00496187]
call fcn.0049ef60
call fcn.004a2670
lea rax, [rbp + 0x20]
mov rcx, rax
call fcn.00550c10
mov eax, 0
mov dword [rbp + 0x18], eax
jmp 0x498f49
lea rax, [rbp - 0x50]
mov rcx, rax
call fcn.004b5370
mov eax, dword [rbp + 0x18]
movaps xmm6, xmmword [rbp + 0x250]
movaps xmm7, xmmword [rbp + 0x260]
movaps xmm8, xmmword [rbp + 0x270]
movaps xmm9, xmmword [rbp + 0x280]
movaps xmm10, xmmword [rbp + 0x290]
movaps xmm11, xmmword [rbp + 0x2a0]
movaps xmm12, xmmword [rbp + 0x2b0]
movaps xmm13, xmmword [rbp + 0x2c0]
movaps xmm14, xmmword [rbp + 0x2d0]
movaps xmm15, xmmword [rbp + 0x2e0]
add rsp, 0x378
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret