Function at 0x496e56
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, [0x00586080]
mov qword [rbp - 0x20], rax
lea rax, [0x005edcf4]
mov qword [rbp - 0x18], rax
lea rax, [rbp - 0x10]
lea rbx, [rbp + 0x250]
mov qword [rax], rbx
lea rdx, [0x004987bb]
mov qword [rax + 8], rdx
mov qword [rax + 0x10], rsp
lea rax, [rbp - 0x50]
mov rcx, rax
call fcn.004b4b80
call fcn.004b3080
mov qword [0x00712f60], 0
mov qword [0x00712f68], 0
mov dword [0x00712f70], 0xffffffff
mov dword [0x00712f74], 0xffffffff
mov dword [0x00712f78], 0
mov dword [0x00712f7c], 0xffffffff
mov dword [0x00712f80], 0xffffffff
mov dword [0x00712f84], 0xffffffff
mov dword [0x00c872b0], 0
mov eax, dword [0x00c872b0]
cmp eax, 2
jg 0x497081
mov eax, dword [0x00c872b0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712ec0]
mov dword [rdx + rax], 1
mov eax, dword [0x00c872b0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712ec8]
mov qword [rdx + rax], 0
mov eax, dword [0x00c872b0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712ed0]
mov qword [rdx + rax], 0
mov eax, dword [0x00c872b0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712ed8]
mov dword [rdx + rax], 0
mov eax, dword [0x00c872b0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712edc]
mov dword [rdx + rax], 0
mov eax, dword [0x00c872b0]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712ee0]
mov dword [rdx + rax], 0
mov eax, dword [0x00c872b0]
add eax, 1
mov dword [0x00c872b0], eax
jmp 0x496f6c
mov dword [rbp - 0x48], 0xffffffff
call 0x4018f9
mov eax, dword [0x00712ea0]
test eax, eax
je 0x4970a1
mov dword [0x005870f4], 0
mov eax, dword [0x00712e9c]
test eax, eax
je 0x4970b7
mov eax, dword [0x00712e9c]
mov dword [0x00712e74], eax
mov ecx, 0x20
call fcn.00437440
mov qword [0x0072d718], rax
mov ecx, 0x10
call fcn.00437440
mov qword [0x00712f48], rax
mov ecx, 0x28
call fcn.00437440
mov qword [0x00712f50], rax
mov ecx, 0x28
call fcn.00437440
mov qword [0x00c58b80], rax
mov dword [rbp - 0x48], 0xffffffff
mov ecx, 0x50
call fcn.004374eb
mov qword [0x00712f90], rax
mov ecx, 0x70
call fcn.00437440
mov qword [0x00712fa8], rax
mov rax, qword [0x0072d718]
mov rcx, rax
call fcn.00437534
mov dword [0x0072d720], eax
mov eax, dword [0x0072d720]
mov dword [0x0072d724], eax
mov eax, dword [0x0072d724]
cdqe
mov rcx, qword [0x0072d718]
mov rdx, rax
call fcn.00437af2
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 0x46babb
mov rax, qword [0x005d2ba0]
mov eax, dword [rax]
test eax, eax
je 0x4971c4
mov dword [0x0071302c], 1
mov rax, qword [0x005d27f0]
mov eax, dword [rax]
test eax, eax
je 0x497215
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 0x497215
mov dword [0x00713028], 1
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x28
mov dword [rax + 0x14], 0x3b00
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x50
mov dword [rax + 0x14], 0x3c00
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x78
mov dword [rax + 0x14], 0x3d00
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0xa0
mov dword [rax + 0x14], 0x3e00
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0xc8
mov dword [rax + 0x14], 0x3f00
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0xf0
mov dword [rax + 0x14], 0x4000
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x118
mov dword [rax + 0x14], 0x4100
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x140
mov dword [rax + 0x14], 0x4200
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x168
mov dword [rax + 0x14], 0x4300
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x190
mov dword [rax + 0x14], 0x4400
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x1b8
mov dword [rax + 0x14], 0x4800
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x1b8
mov dword [rax + 0x18], 0x187a8
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x1e0
mov dword [rax + 0x14], 0x4b00
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x1e0
mov dword [rax + 0x18], 0x187a4
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x208
mov dword [rax + 0x14], 0x4d00
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x208
mov dword [rax + 0x18], 0x187a6
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x230
mov dword [rax + 0x14], 0x5000
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x230
mov dword [rax + 0x18], 0x187a2
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x4b0
mov dword [rax + 0x14], 0x8500
mov rax, qword [0x005d2ae0]
mov rax, qword [rax]
add rax, 0x4d8
mov dword [rax + 0x14], 0x8600
mov rax, qword [0x005d2b00]
mov rax, qword [rax]
mov byte [rax], 1
mov rax, qword [0x005d2b00]
mov rax, qword [rax]
mov dword [rax + 4], 0
mov rax, qword [0x005d2b00]
mov rax, qword [rax]
mov byte [rax + 0x11], 0
mov rax, qword [0x005d2b00]
mov rax, qword [rax]
mov byte [rax + 0x10], 0
mov rax, qword [0x00713048]
add rax, 0x20
mov dword [rax], 8
mov rax, qword [0x00713048]
add rax, 0x38
mov dword [rax], 8
mov rax, qword [0x00713048]
add rax, 0x40
mov dword [rax], 8
mov rax, qword [0x00713040]
add rax, 0x20
mov dword [rax], 8
mov rax, qword [0x00713040]
add rax, 0x38
mov dword [rax], 0xe
mov rax, qword [0x00713040]
add rax, 0x40
mov dword [rax], 0x10
mov rax, qword [0x00713050]
add rax, 0x20
mov dword [rax], 0x10
mov rax, qword [0x00713050]
add rax, 0x38
mov dword [rax], 0x10
mov rax, qword [0x00713050]
add rax, 0x40
mov dword [rax], 0x10
mov rax, qword [0x00713048]
add rax, 0x24
mov dword [rax], 0x10
mov rax, qword [0x00713048]
add rax, 0x3c
mov dword [rax], 0x10
mov rax, qword [0x00713048]
add rax, 0x44
mov dword [rax], 0x10
mov rax, qword [0x00713040]
add rax, 0x24
mov dword [rax], 8
mov rax, qword [0x00713040]
add rax, 0x3c
mov dword [rax], 0xe
mov rax, qword [0x00713040]
add rax, 0x44
mov dword [rax], 0x10
mov rax, qword [0x00713050]
add rax, 0x24
mov dword [rax], 0x10
mov rax, qword [0x00713050]
add rax, 0x3c
mov dword [rax], 0x10
mov rax, qword [0x00713050]
add rax, 0x44
mov dword [rax], 0x10
mov rax, qword [0x00723a28]
mov r8d, 0xc0000
mov edx, 0
mov rcx, rax
call sub.msvcrt.dll_memset
mov dword [rbp - 0x48], 0xffffffff
call fcn.00439b2e
mov dword [0x00c872c4], eax
mov rcx, qword [0x00723a28]
mov eax, dword [0x00c872c4]
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.00439b2e
mov dword [0x00c872c4], eax
mov rcx, qword [0x00723a28]
mov eax, dword [0x00c872c4]
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, [0x0072d740]
call sub.msvcrt.dll_memset
lea rax, [0x0072d740]
mov qword [0x0072d7a0], rax
lea rax, [0x0072d748]
mov qword [0x0072d7a8], rax
lea rax, [0x0072d74c]
mov qword [0x0072d7b0], rax
lea rax, [0x0072d744]
mov qword [0x0072d7b8], rax
lea rax, [0x0072d741]
mov qword [0x0072d7c0], rax
lea rax, [0x0072d749]
mov qword [0x0072d7c8], rax
lea rax, [0x0072d74d]
mov qword [0x0072d7d0], rax
lea rax, [0x0072d745]
mov qword [0x0072d7d8], rax
lea rax, [0x0072d740]
mov qword [0x0072d7e0], rax
lea rax, [0x0072d748]
mov qword [0x0072d7e8], rax
lea rax, [0x0072d74c]
mov qword [0x0072d7f0], rax
lea rax, [0x0072d744]
mov qword [0x0072d7f8], rax
lea rax, [0x0072d75c]
mov qword [0x0072d800], rax
lea rax, [0x0072d758]
mov qword [0x0072d808], rax
lea rax, [0x0072d750]
mov qword [0x0072d810], rax
lea rax, [0x0072d754]
mov qword [0x0072d818], rax
lea rax, [0x0072d740]
mov qword [0x0072d820], rax
lea rax, [0x0072d748]
mov qword [0x0072d828], rax
lea rax, [0x0072d74c]
mov qword [0x0072d830], rax
lea rax, [0x0072d744]
mov qword [0x0072d838], rax
lea rax, [0x0072d75c]
mov qword [0x0072d840], rax
lea rax, [0x0072d758]
mov qword [0x0072d848], rax
lea rax, [0x0072d750]
mov qword [0x0072d850], rax
lea rax, [0x0072d754]
mov qword [0x0072d858], rax
lea rax, [0x0072d766]
mov qword [0x0072d860], rax
lea rax, [0x0072d760]
mov qword [0x0072d868], rax
lea rax, [0x0072d762]
mov qword [0x0072d870], rax
lea rax, [0x0072d764]
mov qword [0x0072d878], rax
lea rax, [0x0072d768]
mov qword [0x0072d880], rax
lea rax, [0x0072d76a]
mov qword [0x0072d888], rax
mov dword [0x00c872b0], 0
mov eax, dword [0x00c872b0]
cmp eax, 0x1f
jg 0x4977ba
mov eax, dword [0x00c872b0]
cdqe
lea rdx, [0x00c57f00]
mov byte [rax + rdx], 0x20
mov eax, dword [0x00c872b0]
add eax, 1
mov dword [0x00c872b0], eax
jmp 0x49778b
mov byte [0x00c58080], 0x81
mov dword [0x0072d91c], 0x100000
mov eax, dword [0x0072d91c]
mov eax, eax
mov rcx, rax
call sub.msvcrt.dll_malloc
mov rdx, rax
mov rax, qword [0x005d2a30]
mov qword [rax], rdx
mov rax, qword [0x005d2a30]
mov rdx, qword [rax]
mov rax, qword [0x005d2a50]
mov qword [rax], rdx
mov rax, qword [0x005d2a30]
mov rax, qword [rax]
mov edx, dword [0x0072d91c]
mov edx, edx
add rdx, rax
mov rax, qword [0x005d2a40]
mov qword [rax], rdx
mov r8d, 0x10fff3
mov edx, 0
mov rcx, qword [0x005d27b0]
call sub.msvcrt.dll_memset
mov r8d, 0x10000
mov edx, 0
lea rcx, [0x00c3ac60]
call sub.msvcrt.dll_memset
mov rax, qword [0x005d27b0]
lea rdx, [rax + 0x500]
mov rax, qword [0x005d2800]
mov qword [rax], rdx
mov rax, qword [0x005d27d0]
mov eax, dword [rax]
lea edx, [rax - 8]
mov rax, qword [0x005d27d0]
mov dword [rax], edx
mov rax, qword [0x005d27d0]
mov eax, dword [rax]
mov edx, eax
mov rax, qword [0x005d2800]
mov rax, qword [rax]
add rax, rdx
mov rdx, rax
mov rax, qword [0x005d2ad0]
mov qword [rax], rdx
mov rax, qword [0x005d2ad0]
mov rax, qword [rax]
mov qword [rax], 0
mov dword [rbp - 0x48], 0xffffffff
mov edx, 0
mov ecx, 0
call fcn.00445ec3
mov rdx, rax
mov rax, qword [0x005d2ac0]
mov qword [rax], rdx
mov edx, 0
mov ecx, 1
call fcn.00445ec3
mov qword [0x00c4ac60], rax
mov rax, qword [0x00c4ac60]
mov rax, qword [rax]
mov byte [rax], 0x20
mov edx, 0
mov ecx, 0
call fcn.004463c2
mov qword [0x00c58be0], rax
call fcn.00495e74
mov rdx, rax
mov rax, qword [0x00c58be0]
mov rcx, rax
call fcn.00446590
movzx eax, byte [0x00c87330]
test al, al
sete al
test al, al
je 0x497961
lea rcx, [0x00c87330]
call fcn.00585af0
test eax, eax
setne al
test al, al
je 0x497961
mov ecx, 0x10000
call sub.msvcrt.dll_malloc
mov qword [0x00c87328], rax
lea rcx, [0x00c87330]
call fcn.00585cf0
mov rax, qword [0x00c87328]
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 [0x00c87328]
mov rcx, rax
call sub.msvcrt.dll_strlen
mov dword [0x00c872b0], eax
mov eax, dword [0x00c872b0]
sub eax, 1
mov dword [0x00c872b4], eax
mov eax, dword [0x00c872b4]
test eax, eax
js 0x497a48
mov rdx, qword [0x00c87328]
mov eax, dword [0x00c872b4]
cdqe
add rax, rdx
movzx eax, byte [rax]
movsx eax, al
mov dword [0x00c872c4], eax
mov eax, dword [0x00c872c4]
cmp eax, 0x5c
je 0x4979f7
mov eax, dword [0x00c872c4]
cmp eax, 0x2f
je 0x4979f7
mov eax, dword [0x00c872c4]
cmp eax, 0x3a
jne 0x497a34
mov eax, dword [0x00c872c4]
cmp eax, 0x3a
jne 0x497a1d
mov rdx, qword [0x00c87328]
mov eax, dword [0x00c872b4]
cdqe
add rax, 1
add rax, rdx
mov byte [rax], 0
jmp 0x497a48
mov rdx, qword [0x00c87328]
mov eax, dword [0x00c872b4]
cdqe
add rax, rdx
mov byte [rax], 0
jmp 0x497a48
mov eax, dword [0x00c872b4]
sub eax, 1
mov dword [0x00c872b4], eax
jmp 0x4979aa
mov rax, qword [0x00c87328]
mov dword [rbp - 0x48], 0xffffffff
mov rcx, rax
call sub.msvcrt.dll__chdir
mov edx, 0
mov ecx, 0
call fcn.004463c2
mov qword [0x00c58be8], rax
call fcn.00495e74
mov rdx, rax
mov rax, qword [0x00c58be8]
mov rcx, rax
call fcn.00446590
mov edx, 0
mov ecx, 0
call fcn.004463c2
mov qword [0x007230e8], rax
mov edx, 0x14
lea rcx, str.Unknown_Opcode_____
call fcn.00446199
mov rdx, rax
mov rax, qword [0x007230e8]
mov rcx, rax
call fcn.00446590
mov eax, dword [rbp + 0x340]
mov dword [0x00c872b0], eax
mov eax, dword [0x00c872b0]
cmp eax, 1
jle 0x497c88
mov dword [0x00c872b4], 0
mov dword [0x00c872b0], 1
mov edx, dword [0x00c872b0]
mov eax, dword [rbp + 0x340]
cmp edx, eax
jge 0x497b63
mov eax, dword [0x00c872b0]
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 [0x00c872b4]
add eax, edx
mov dword [0x00c872b4], eax
mov eax, dword [0x00c872b0]
cmp eax, 1
je 0x497b52
mov eax, dword [0x00c872b4]
add eax, 1
mov dword [0x00c872b4], eax
mov eax, dword [0x00c872b0]
add eax, 1
mov dword [0x00c872b0], eax
jmp 0x497af3
mov eax, dword [0x00c872b4]
mov dword [rbp - 0x48], 0xffffffff
mov edx, 0
mov ecx, eax
call fcn.004463c2
mov qword [0x00c58188], rax
mov dword [0x00c872b8], 0
mov dword [0x00c872b0], 1
mov edx, dword [0x00c872b0]
mov eax, dword [rbp + 0x340]
cmp edx, eax
jge 0x497ca5
mov eax, dword [0x00c872b0]
cmp eax, 1
je 0x497bdd
mov rax, qword [0x00c58188]
mov rdx, qword [rax]
mov eax, dword [0x00c872b8]
cdqe
add rax, rdx
mov byte [rax], 0x20
mov eax, dword [0x00c872b8]
add eax, 1
mov dword [0x00c872b8], eax
mov eax, dword [0x00c872b0]
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 [0x00c872b0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x348]
add rax, rdx
mov rdx, qword [rax]
mov rax, qword [0x00c58188]
mov rcx, qword [rax]
mov eax, dword [0x00c872b8]
cdqe
add rax, rcx
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov eax, dword [0x00c872b0]
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 [0x00c872b8]
add eax, edx
mov dword [0x00c872b8], eax
mov eax, dword [0x00c872b0]
add eax, 1
mov dword [0x00c872b0], eax
jmp 0x497b97
mov dword [rbp - 0x48], 0xffffffff
mov edx, 0
mov ecx, 0
call fcn.004463c2
mov qword [0x00c58188], rax
mov eax, dword [rbp + 0x340]
mov dword [0x00c58198], eax
mov rax, qword [rbp + 0x348]
mov qword [0x00c58190], rax
lea rax, [rbp + 0x208]
mov rcx, rax
call sub.msvcrt.dll__time64
mov rax, qword [rbp + 0x208]
cmp rax, 0xffffffffffffffff
je 0x497cff
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 0x497d0a
jmp 0x497cdb
mov qword [rbp + 0x210], 0
call fcn.00438678
mov dword [0x0072d904], eax
lea rax, [rbp + 0x210]
mov rcx, rax
call sub.msvcrt.dll_localtime
mov qword [rbp + 0x238], rax
cmp qword [rbp + 0x238], 0
je 0x497d79
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 [0x0072d900], eax
mov eax, dword [0x0072d900]
imul eax, eax, 0x3e8
mov dword [0x0072d900], eax
jmp 0x497d83
mov dword [0x0072d900], 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 0x497daf
mov ecx, 0x30d4b
call fcn.00438c60
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 0x497de0
mov dword [0x00723068], 0x12e
mov ecx, 0x187ce
call fcn.00438fc3
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 0x497e11
mov dword [0x00723068], 0x130
mov ecx, 0x187d0
call fcn.00438fc3
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 0x497e42
mov dword [0x00723068], 0x12f
mov ecx, 0x187cf
call fcn.00438fc3
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 0x497e73
mov dword [0x00723068], 0x132
mov ecx, 0x187d2
call fcn.00438fc3
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 0x497ea4
mov dword [0x00723068], 0x131
mov ecx, 0x187d1
call fcn.00438fc3
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 0x497ed5
mov dword [0x00723068], 0x134
mov ecx, 0x187d4
call fcn.00438fc3
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 0x497f06
mov dword [0x00723068], 0x133
mov ecx, 0x187d3
call fcn.00438fc3
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 0x497f3c
mov dword [0x00723068], 0x12d
mov ecx, 0x187cd
call fcn.00438fc3
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 0x497f72
mov dword [0x00723068], 0x12c
mov ecx, 0x187cc
call fcn.00438fc3
mov dword [rbp - 0x48], 0xffffffff
call fcn.0049b12b
mov eax, dword [0x00723060]
mov dword [0x00723064], eax
mov rax, qword [0x005d27b0]
mov byte [rax + 0x41a], 0x1e
mov rax, qword [0x005d27b0]
mov byte [rax + 0x41b], 0
mov rax, qword [0x005d27b0]
mov byte [rax + 0x41c], 0x1e
mov rax, qword [0x005d27b0]
mov byte [rax + 0x41d], 0
lea rax, [rbp + 0x20]
mov rcx, rax
call fcn.0054f9b0
mov eax, dword [0x005875c0]
cdqe
mov r8, rax
lea rdx, [0x005b3660]
lea rcx, [0x00723520]
call sub.msvcrt.dll_memcpy
mov dword [0x00c872b0], 0
mov eax, dword [0x00c872b0]
cmp eax, 0xff
jg 0x498050
mov eax, dword [0x00c872b0]
cdqe
lea rdx, [rax*4]
lea rax, [0x00723520]
mov edx, dword [rdx + rax]
mov eax, dword [0x00c872b0]
mov ecx, edx
or ecx, 0xff000000
cdqe
lea rdx, [rax*4]
lea rax, [0x00723520]
mov dword [rdx + rax], ecx
mov eax, dword [0x00c872b0]
add eax, 1
mov dword [0x00c872b0], eax
jmp 0x497ff6
mov eax, dword [0x005875c4]
cdqe
mov r8, rax
lea rdx, [0x005b3a60]
lea rcx, [0x00723920]
call sub.msvcrt.dll_memcpy
mov dword [0x00c872b0], 0
mov eax, dword [0x00c872b0]
cmp eax, 0x3f
jg 0x4980d0
mov eax, dword [0x00c872b0]
cdqe
lea rdx, [rax*4]
lea rax, [0x00723920]
mov edx, dword [rdx + rax]
mov eax, dword [0x00c872b0]
mov ecx, edx
or ecx, 0xff000000
cdqe
lea rdx, [rax*4]
lea rax, [0x00723920]
mov dword [rdx + rax], ecx
mov eax, dword [0x00c872b0]
add eax, 1
mov dword [0x00c872b0], eax
jmp 0x498078
mov dword [0x00c4b200], 0
mov dword [0x00c4b204], 0
mov dword [0x00c4b208], 0
mov dword [0x00c4b20c], 0x808080
mov dword [0x00c4b210], 0x808080
mov dword [0x00c4b214], 0x808080
mov dword [0x00c4b218], 0xffffff
mov dword [0x00c4b21c], 0xffffff
mov dword [0x00c4b220], 0xffffff
mov dword [0x00c4b224], 0
mov dword [0x00c4b228], 0x808080
mov dword [0x00c4b22c], 0xffffff
mov dword [0x00c4b230], 0
mov dword [0x00c4b234], 0x808080
mov dword [0x00c4b238], 0xffffff
mov dword [0x00c4b23c], 0
mov dword [0x00c4b240], 0x808080
mov dword [0x00c4b244], 0xffffff
mov eax, dword [0x005875b8]
cdqe
mov r8, rax
lea rdx, [0x005a7660]
lea rcx, [0x00c4b260]
call sub.msvcrt.dll_memcpy
mov eax, dword [0x005875bc]
cdqe
mov r8, rax
lea rdx, [0x005ab660]
lea rcx, [0x00c4f260]
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.0044ba68
mov dword [0x005875cc], 1
mov rax, qword [0x005d27f0]
mov eax, dword [rax]
test eax, eax
je 0x49825c
mov r9d, 0
mov r8d, 0
mov edx, 0x19
mov ecx, 0x50
call fcn.004713a9
mov dword [0x00587380], eax
mov eax, dword [0x00587380]
neg eax
mov dword [0x00c872b0], eax
mov rcx, qword [0x00723a28]
mov eax, dword [0x00c872b0]
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 [0x00587104]
mov eax, dword [0x00587100]
mov dword [rbp - 0x48], 1
mov r9d, 1
mov r8d, 0x20
mov ecx, eax
call fcn.004713a9
mov dword [0x00c59428], eax
mov edx, dword [0x00587100]
mov eax, dword [0x00587104]
imul eax, edx
shl eax, 2
movsxd rcx, eax
mov r8, qword [0x00723a28]
mov eax, dword [0x00c59428]
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, [0x005a0e20]
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov edx, dword [0x0058710c]
mov eax, dword [0x00587108]
mov r9d, 1
mov r8d, 0x20
mov ecx, eax
call fcn.004713a9
mov dword [0x00c5942c], eax
mov edx, dword [0x00587108]
mov eax, dword [0x0058710c]
imul eax, edx
shl eax, 2
movsxd rcx, eax
mov r8, qword [0x00723a28]
mov eax, dword [0x00c5942c]
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, [0x005a1220]
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov dword [0x00c872b0], 0
mov eax, dword [0x00c872b0]
add eax, 1
mov dword [0x00c872b0], eax
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 4], 2
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
lea rdx, str._KEYBOARD__BUTTON_
mov qword [rax + 8], rdx
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x14], 0x200
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
lea rdx, str.Keyboard
mov qword [rax + 0x148], rdx
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov rcx, rax
call fcn.00403164
mov eax, dword [0x00c872b0]
add eax, 1
mov dword [0x00c872b0], eax
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 4], 3
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
lea rdx, str._MOUSE__BUTTON__AXIS__WHEEL_
mov qword [rax + 8], rdx
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x14], 3
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x18], 2
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x1c], 3
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
lea rdx, str.Mouse
mov qword [rax + 0x148], rdx
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c872b0]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov rcx, rax
call fcn.00403164
mov edx, dword [0x00c872b0]
mov rax, qword [0x005d2820]
mov dword [rax], edx
mov r8d, 0
mov edx, 0
mov rcx, qword [0x005d1aa0]
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 [0x005d1ab0]
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 [0x0072d8f8], 1
mov r8d, 0
mov edx, 0
lea rcx, [0x0049885a]
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 [0x0071302c]
test eax, eax
jne 0x498606
mov dword [0x00712e54], 1
mov eax, dword [0x00712e54]
test eax, eax
jne 0x498627
mov ecx, 0x64
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
mov dword [rbp - 0x48], 1
call rax
jmp 0x498606
mov rax, qword [rbp + 0x348]
mov dword [rbp - 0x48], 1
mov rdx, rax
lea rcx, [rbp + 0x340]
call fcn.00406140
mov ecx, 0x92
call fcn.004a03f0
mov edx, 0x190
mov ecx, 0x280
call fcn.004a03d0
mov ecx, 0x190
call fcn.004a4d80
test eax, eax
sete al
test al, al
je 0x49867a
mov ecx, 1
call sub.msvcrt.dll_exit
mov rax, qword [0x00712e60]
test rax, rax
jne 0x49869b
mov dword [rbp - 0x48], 1
lea rcx, str.Untitled
call fcn.0040616e
jmp 0x4986b1
mov rax, qword [0x00712e60]
mov dword [rbp - 0x48], 1
mov rcx, rax
call fcn.0040616e
mov dword [0x00712e50], 1
mov dword [rbp - 0x48], 1
call fcn.0042ec16
mov dword [rbp + 0x21c], eax
cmp dword [rbp + 0x21c], 0
je 0x4986eb
mov eax, dword [rbp + 0x21c]
mov ecx, eax
call fcn.0042eb9c
mov rcx, rax
call fcn.0043914a
lea rcx, str.GL_EXT_framebuffer_object
call fcn.0042ec3d
test al, al
setne al
test al, al
je 0x49870a
mov dword [0x00712e24], 1
mov dword [rbp - 0x48], 1
lea rcx, [0x00493506]
call fcn.0049e3a0
mov r8d, 0
lea rdx, [0x0049049f]
mov ecx, 8
call fcn.0049e560
lea rcx, [0x00490201]
call fcn.0049e460
lea rcx, [0x0049022c]
call fcn.0049e610
lea rcx, [0x00490453]
call fcn.0049e4c0
lea rcx, [0x00490479]
call fcn.0049e670
lea rcx, [0x00495389]
call fcn.0049e7a0
lea rcx, [fcn.004953de]
call fcn.0049e860
lea rcx, [0x00495a05]
call fcn.0049e8c0
lea rcx, [0x0049074d]
call fcn.0049e410
lea rcx, [0x00495a27]
call fcn.0049e800
call fcn.004a1f10
lea rax, [rbp + 0x20]
mov rcx, rax
call fcn.005504b0
mov eax, 0
mov dword [rbp + 0x18], eax
jmp 0x4987e9
lea rax, [rbp - 0x50]
mov rcx, rax
call fcn.004b4c10
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