Function at 0x496d76
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, [0x00585fa0]
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, [0x004986db]
mov qword [rax + 8], rdx
mov qword [rax + 0x10], rsp
lea rax, [rbp - 0x50]
mov rcx, rax
call fcn.004b4aa0
call fcn.004b2fa0
mov qword [0x00712f40], 0
mov qword [0x00712f48], 0
mov dword [0x00712f50], 0xffffffff
mov dword [0x00712f54], 0xffffffff
mov dword [0x00712f58], 0
mov dword [0x00712f5c], 0xffffffff
mov dword [0x00712f60], 0xffffffff
mov dword [0x00712f64], 0xffffffff
mov dword [0x00c87290], 0
mov eax, dword [0x00c87290]
cmp eax, 2
jg 0x496fa1
mov eax, dword [0x00c87290]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712ea0]
mov dword [rdx + rax], 1
mov eax, dword [0x00c87290]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712ea8]
mov qword [rdx + rax], 0
mov eax, dword [0x00c87290]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712eb0]
mov qword [rdx + rax], 0
mov eax, dword [0x00c87290]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712eb8]
mov dword [rdx + rax], 0
mov eax, dword [0x00c87290]
movsxd rdx, eax
mov rax, rdx
shl rax, 2
add rax, rdx
shl rax, 3
mov rdx, rax
lea rax, [0x00712ebc]
mov dword [rdx + rax], 0
mov eax, dword [0x00c87290]
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], 0
mov eax, dword [0x00c87290]
add eax, 1
mov dword [0x00c87290], eax
jmp 0x496e8c
mov dword [rbp - 0x48], 0xffffffff
call 0x4018f9
mov eax, dword [0x00712e80]
test eax, eax
je 0x496fc1
mov dword [0x005870f4], 0
mov eax, dword [0x00712e7c]
test eax, eax
je 0x496fd7
mov eax, dword [0x00712e7c]
mov dword [0x00712e54], eax
mov ecx, 0x20
call fcn.00437360
mov qword [0x0072d6f8], rax
mov ecx, 0x10
call fcn.00437360
mov qword [0x00712f28], rax
mov ecx, 0x28
call fcn.00437360
mov qword [0x00712f30], rax
mov ecx, 0x28
call fcn.00437360
mov qword [0x00c58b60], rax
mov dword [rbp - 0x48], 0xffffffff
mov ecx, 0x50
call fcn.0043740b
mov qword [0x00712f70], rax
mov ecx, 0x70
call fcn.00437360
mov qword [0x00712f88], rax
mov rax, qword [0x0072d6f8]
mov rcx, rax
call fcn.00437454
mov dword [0x0072d700], eax
mov eax, dword [0x0072d700]
mov dword [0x0072d704], eax
mov eax, dword [0x0072d704]
cdqe
mov rcx, qword [0x0072d6f8]
mov rdx, rax
call fcn.00437a12
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 0x46b9db
mov rax, qword [0x005d2ba0]
mov eax, dword [rax]
test eax, eax
je 0x4970e4
mov dword [0x0071300c], 1
mov rax, qword [0x005d27f0]
mov eax, dword [rax]
test eax, eax
je 0x497135
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 0x497135
mov dword [0x00713008], 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 [0x00713028]
add rax, 0x20
mov dword [rax], 8
mov rax, qword [0x00713028]
add rax, 0x38
mov dword [rax], 8
mov rax, qword [0x00713028]
add rax, 0x40
mov dword [rax], 8
mov rax, qword [0x00713020]
add rax, 0x20
mov dword [rax], 8
mov rax, qword [0x00713020]
add rax, 0x38
mov dword [rax], 0xe
mov rax, qword [0x00713020]
add rax, 0x40
mov dword [rax], 0x10
mov rax, qword [0x00713030]
add rax, 0x20
mov dword [rax], 0x10
mov rax, qword [0x00713030]
add rax, 0x38
mov dword [rax], 0x10
mov rax, qword [0x00713030]
add rax, 0x40
mov dword [rax], 0x10
mov rax, qword [0x00713028]
add rax, 0x24
mov dword [rax], 0x10
mov rax, qword [0x00713028]
add rax, 0x3c
mov dword [rax], 0x10
mov rax, qword [0x00713028]
add rax, 0x44
mov dword [rax], 0x10
mov rax, qword [0x00713020]
add rax, 0x24
mov dword [rax], 8
mov rax, qword [0x00713020]
add rax, 0x3c
mov dword [rax], 0xe
mov rax, qword [0x00713020]
add rax, 0x44
mov dword [rax], 0x10
mov rax, qword [0x00713030]
add rax, 0x24
mov dword [rax], 0x10
mov rax, qword [0x00713030]
add rax, 0x3c
mov dword [rax], 0x10
mov rax, qword [0x00713030]
add rax, 0x44
mov dword [rax], 0x10
mov rax, qword [0x00723a08]
mov r8d, 0xc0000
mov edx, 0
mov rcx, rax
call sub.msvcrt.dll_memset
mov dword [rbp - 0x48], 0xffffffff
call fcn.00439a4e
mov dword [0x00c872a4], eax
mov rcx, qword [0x00723a08]
mov eax, dword [0x00c872a4]
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.00439a4e
mov dword [0x00c872a4], eax
mov rcx, qword [0x00723a08]
mov eax, dword [0x00c872a4]
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, [0x0072d720]
call sub.msvcrt.dll_memset
lea rax, [0x0072d720]
mov qword [0x0072d780], rax
lea rax, [0x0072d728]
mov qword [0x0072d788], rax
lea rax, [0x0072d72c]
mov qword [0x0072d790], rax
lea rax, [0x0072d724]
mov qword [0x0072d798], rax
lea rax, [0x0072d721]
mov qword [0x0072d7a0], rax
lea rax, [0x0072d729]
mov qword [0x0072d7a8], rax
lea rax, [0x0072d72d]
mov qword [0x0072d7b0], rax
lea rax, [0x0072d725]
mov qword [0x0072d7b8], rax
lea rax, [0x0072d720]
mov qword [0x0072d7c0], rax
lea rax, [0x0072d728]
mov qword [0x0072d7c8], rax
lea rax, [0x0072d72c]
mov qword [0x0072d7d0], rax
lea rax, [0x0072d724]
mov qword [0x0072d7d8], rax
lea rax, [0x0072d73c]
mov qword [0x0072d7e0], rax
lea rax, [0x0072d738]
mov qword [0x0072d7e8], rax
lea rax, [0x0072d730]
mov qword [0x0072d7f0], rax
lea rax, [0x0072d734]
mov qword [0x0072d7f8], rax
lea rax, [0x0072d720]
mov qword [0x0072d800], rax
lea rax, [0x0072d728]
mov qword [0x0072d808], rax
lea rax, [0x0072d72c]
mov qword [0x0072d810], rax
lea rax, [0x0072d724]
mov qword [0x0072d818], rax
lea rax, [0x0072d73c]
mov qword [0x0072d820], rax
lea rax, [0x0072d738]
mov qword [0x0072d828], rax
lea rax, [0x0072d730]
mov qword [0x0072d830], rax
lea rax, [0x0072d734]
mov qword [0x0072d838], rax
lea rax, [0x0072d746]
mov qword [0x0072d840], rax
lea rax, [0x0072d740]
mov qword [0x0072d848], rax
lea rax, [0x0072d742]
mov qword [0x0072d850], rax
lea rax, [0x0072d744]
mov qword [0x0072d858], rax
lea rax, [0x0072d748]
mov qword [0x0072d860], rax
lea rax, [0x0072d74a]
mov qword [0x0072d868], rax
mov dword [0x00c87290], 0
mov eax, dword [0x00c87290]
cmp eax, 0x1f
jg 0x4976da
mov eax, dword [0x00c87290]
cdqe
lea rdx, [0x00c57ee0]
mov byte [rax + rdx], 0x20
mov eax, dword [0x00c87290]
add eax, 1
mov dword [0x00c87290], eax
jmp 0x4976ab
mov byte [0x00c58060], 0x81
mov dword [0x0072d8fc], 0x100000
mov eax, dword [0x0072d8fc]
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 [0x0072d8fc]
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, [0x00c3ac40]
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.00445de3
mov rdx, rax
mov rax, qword [0x005d2ac0]
mov qword [rax], rdx
mov edx, 0
mov ecx, 1
call fcn.00445de3
mov qword [0x00c4ac40], rax
mov rax, qword [0x00c4ac40]
mov rax, qword [rax]
mov byte [rax], 0x20
mov edx, 0
mov ecx, 0
call fcn.004462e2
mov qword [0x00c58bc0], rax
call fcn.00495d94
mov rdx, rax
mov rax, qword [0x00c58bc0]
mov rcx, rax
call fcn.004464b0
movzx eax, byte [0x00c87310]
test al, al
sete al
test al, al
je 0x497881
lea rcx, [0x00c87310]
call fcn.00585a10
test eax, eax
setne al
test al, al
je 0x497881
mov ecx, 0x10000
call sub.msvcrt.dll_malloc
mov qword [0x00c87308], rax
lea rcx, [0x00c87310]
call fcn.00585c10
mov rax, qword [0x00c87308]
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 [0x00c87308]
mov rcx, rax
call sub.msvcrt.dll_strlen
mov dword [0x00c87290], eax
mov eax, dword [0x00c87290]
sub eax, 1
mov dword [0x00c87294], eax
mov eax, dword [0x00c87294]
test eax, eax
js 0x497968
mov rdx, qword [0x00c87308]
mov eax, dword [0x00c87294]
cdqe
add rax, rdx
movzx eax, byte [rax]
movsx eax, al
mov dword [0x00c872a4], eax
mov eax, dword [0x00c872a4]
cmp eax, 0x5c
je 0x497917
mov eax, dword [0x00c872a4]
cmp eax, 0x2f
je 0x497917
mov eax, dword [0x00c872a4]
cmp eax, 0x3a
jne 0x497954
mov eax, dword [0x00c872a4]
cmp eax, 0x3a
jne 0x49793d
mov rdx, qword [0x00c87308]
mov eax, dword [0x00c87294]
cdqe
add rax, 1
add rax, rdx
mov byte [rax], 0
jmp 0x497968
mov rdx, qword [0x00c87308]
mov eax, dword [0x00c87294]
cdqe
add rax, rdx
mov byte [rax], 0
jmp 0x497968
mov eax, dword [0x00c87294]
sub eax, 1
mov dword [0x00c87294], eax
jmp 0x4978ca
mov rax, qword [0x00c87308]
mov dword [rbp - 0x48], 0xffffffff
mov rcx, rax
call sub.msvcrt.dll__chdir
mov edx, 0
mov ecx, 0
call fcn.004462e2
mov qword [0x00c58bc8], rax
call fcn.00495d94
mov rdx, rax
mov rax, qword [0x00c58bc8]
mov rcx, rax
call fcn.004464b0
mov edx, 0
mov ecx, 0
call fcn.004462e2
mov qword [0x007230c8], rax
mov edx, 0x14
lea rcx, str.Unknown_Opcode_____
call fcn.004460b9
mov rdx, rax
mov rax, qword [0x007230c8]
mov rcx, rax
call fcn.004464b0
mov eax, dword [rbp + 0x340]
mov dword [0x00c87290], eax
mov eax, dword [0x00c87290]
cmp eax, 1
jle 0x497ba8
mov dword [0x00c87294], 0
mov dword [0x00c87290], 1
mov edx, dword [0x00c87290]
mov eax, dword [rbp + 0x340]
cmp edx, eax
jge 0x497a83
mov eax, dword [0x00c87290]
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 [0x00c87294]
add eax, edx
mov dword [0x00c87294], eax
mov eax, dword [0x00c87290]
cmp eax, 1
je 0x497a72
mov eax, dword [0x00c87294]
add eax, 1
mov dword [0x00c87294], eax
mov eax, dword [0x00c87290]
add eax, 1
mov dword [0x00c87290], eax
jmp 0x497a13
mov eax, dword [0x00c87294]
mov dword [rbp - 0x48], 0xffffffff
mov edx, 0
mov ecx, eax
call fcn.004462e2
mov qword [0x00c58168], rax
mov dword [0x00c87298], 0
mov dword [0x00c87290], 1
mov edx, dword [0x00c87290]
mov eax, dword [rbp + 0x340]
cmp edx, eax
jge 0x497bc5
mov eax, dword [0x00c87290]
cmp eax, 1
je 0x497afd
mov rax, qword [0x00c58168]
mov rdx, qword [rax]
mov eax, dword [0x00c87298]
cdqe
add rax, rdx
mov byte [rax], 0x20
mov eax, dword [0x00c87298]
add eax, 1
mov dword [0x00c87298], eax
mov eax, dword [0x00c87290]
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 [0x00c87290]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x348]
add rax, rdx
mov rdx, qword [rax]
mov rax, qword [0x00c58168]
mov rcx, qword [rax]
mov eax, dword [0x00c87298]
cdqe
add rax, rcx
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov eax, dword [0x00c87290]
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 [0x00c87298]
add eax, edx
mov dword [0x00c87298], eax
mov eax, dword [0x00c87290]
add eax, 1
mov dword [0x00c87290], eax
jmp 0x497ab7
mov dword [rbp - 0x48], 0xffffffff
mov edx, 0
mov ecx, 0
call fcn.004462e2
mov qword [0x00c58168], rax
mov eax, dword [rbp + 0x340]
mov dword [0x00c58178], eax
mov rax, qword [rbp + 0x348]
mov qword [0x00c58170], rax
lea rax, [rbp + 0x208]
mov rcx, rax
call sub.msvcrt.dll__time64
mov rax, qword [rbp + 0x208]
cmp rax, 0xffffffffffffffff
je 0x497c1f
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 0x497c2a
jmp 0x497bfb
mov qword [rbp + 0x210], 0
call fcn.00438598
mov dword [0x0072d8e4], eax
lea rax, [rbp + 0x210]
mov rcx, rax
call sub.msvcrt.dll_localtime
mov qword [rbp + 0x238], rax
cmp qword [rbp + 0x238], 0
je 0x497c99
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 [0x0072d8e0], eax
mov eax, dword [0x0072d8e0]
imul eax, eax, 0x3e8
mov dword [0x0072d8e0], eax
jmp 0x497ca3
mov dword [0x0072d8e0], 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 0x497ccf
mov ecx, 0x30d4b
call fcn.00438b80
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 0x497d00
mov dword [0x00723048], 0x12e
mov ecx, 0x187ce
call fcn.00438ee3
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 0x497d31
mov dword [0x00723048], 0x130
mov ecx, 0x187d0
call fcn.00438ee3
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 0x497d62
mov dword [0x00723048], 0x12f
mov ecx, 0x187cf
call fcn.00438ee3
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 0x497d93
mov dword [0x00723048], 0x132
mov ecx, 0x187d2
call fcn.00438ee3
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 0x497dc4
mov dword [0x00723048], 0x131
mov ecx, 0x187d1
call fcn.00438ee3
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 0x497df5
mov dword [0x00723048], 0x134
mov ecx, 0x187d4
call fcn.00438ee3
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 0x497e26
mov dword [0x00723048], 0x133
mov ecx, 0x187d3
call fcn.00438ee3
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 0x497e5c
mov dword [0x00723048], 0x12d
mov ecx, 0x187cd
call fcn.00438ee3
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 0x497e92
mov dword [0x00723048], 0x12c
mov ecx, 0x187cc
call fcn.00438ee3
mov dword [rbp - 0x48], 0xffffffff
call fcn.0049b04b
mov eax, dword [0x00723040]
mov dword [0x00723044], 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.0054f8d0
mov eax, dword [0x005875c0]
cdqe
mov r8, rax
lea rdx, [0x005b3660]
lea rcx, [0x00723500]
call sub.msvcrt.dll_memcpy
mov dword [0x00c87290], 0
mov eax, dword [0x00c87290]
cmp eax, 0xff
jg 0x497f70
mov eax, dword [0x00c87290]
cdqe
lea rdx, [rax*4]
lea rax, [0x00723500]
mov edx, dword [rdx + rax]
mov eax, dword [0x00c87290]
mov ecx, edx
or ecx, 0xff000000
cdqe
lea rdx, [rax*4]
lea rax, [0x00723500]
mov dword [rdx + rax], ecx
mov eax, dword [0x00c87290]
add eax, 1
mov dword [0x00c87290], eax
jmp 0x497f16
mov eax, dword [0x005875c4]
cdqe
mov r8, rax
lea rdx, [0x005b3a60]
lea rcx, [0x00723900]
call sub.msvcrt.dll_memcpy
mov dword [0x00c87290], 0
mov eax, dword [0x00c87290]
cmp eax, 0x3f
jg 0x497ff0
mov eax, dword [0x00c87290]
cdqe
lea rdx, [rax*4]
lea rax, [0x00723900]
mov edx, dword [rdx + rax]
mov eax, dword [0x00c87290]
mov ecx, edx
or ecx, 0xff000000
cdqe
lea rdx, [rax*4]
lea rax, [0x00723900]
mov dword [rdx + rax], ecx
mov eax, dword [0x00c87290]
add eax, 1
mov dword [0x00c87290], eax
jmp 0x497f98
mov dword [0x00c4b1e0], 0
mov dword [0x00c4b1e4], 0
mov dword [0x00c4b1e8], 0
mov dword [0x00c4b1ec], 0x808080
mov dword [0x00c4b1f0], 0x808080
mov dword [0x00c4b1f4], 0x808080
mov dword [0x00c4b1f8], 0xffffff
mov dword [0x00c4b1fc], 0xffffff
mov dword [0x00c4b200], 0xffffff
mov dword [0x00c4b204], 0
mov dword [0x00c4b208], 0x808080
mov dword [0x00c4b20c], 0xffffff
mov dword [0x00c4b210], 0
mov dword [0x00c4b214], 0x808080
mov dword [0x00c4b218], 0xffffff
mov dword [0x00c4b21c], 0
mov dword [0x00c4b220], 0x808080
mov dword [0x00c4b224], 0xffffff
mov eax, dword [0x005875b8]
cdqe
mov r8, rax
lea rdx, [0x005a7660]
lea rcx, [0x00c4b240]
call sub.msvcrt.dll_memcpy
mov eax, dword [0x005875bc]
cdqe
mov r8, rax
lea rdx, [0x005ab660]
lea rcx, [0x00c4f240]
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.0044b988
mov dword [0x005875cc], 1
mov rax, qword [0x005d27f0]
mov eax, dword [rax]
test eax, eax
je 0x49817c
mov r9d, 0
mov r8d, 0
mov edx, 0x19
mov ecx, 0x50
call fcn.004712c9
mov dword [0x00587380], eax
mov eax, dword [0x00587380]
neg eax
mov dword [0x00c87290], eax
mov rcx, qword [0x00723a08]
mov eax, dword [0x00c87290]
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.004712c9
mov dword [0x00c59408], eax
mov edx, dword [0x00587100]
mov eax, dword [0x00587104]
imul eax, edx
shl eax, 2
movsxd rcx, eax
mov r8, qword [0x00723a08]
mov eax, dword [0x00c59408]
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.004712c9
mov dword [0x00c5940c], eax
mov edx, dword [0x00587108]
mov eax, dword [0x0058710c]
imul eax, edx
shl eax, 2
movsxd rcx, eax
mov r8, qword [0x00723a08]
mov eax, dword [0x00c5940c]
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 [0x00c87290], 0
mov eax, dword [0x00c87290]
add eax, 1
mov dword [0x00c87290], eax
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c87290]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 4], 2
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c87290]
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 [0x00c87290]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x14], 0x200
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c87290]
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 [0x00c87290]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov rcx, rax
call fcn.00403155
mov eax, dword [0x00c87290]
add eax, 1
mov dword [0x00c87290], eax
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c87290]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 4], 3
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c87290]
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 [0x00c87290]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x14], 3
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c87290]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x18], 2
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c87290]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov dword [rax + 0x1c], 3
mov rax, qword [0x005d2830]
mov rdx, qword [rax]
mov eax, dword [0x00c87290]
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 [0x00c87290]
cdqe
imul rax, rax, 0x170
add rax, rdx
mov rcx, rax
call fcn.00403155
mov edx, dword [0x00c87290]
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 [0x0072d8d8], 1
mov r8d, 0
mov edx, 0
lea rcx, [0x0049877a]
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 [0x0071300c]
test eax, eax
jne 0x498526
mov dword [0x00712e34], 1
mov eax, dword [0x00712e34]
test eax, eax
jne 0x498547
mov ecx, 0x64
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
mov dword [rbp - 0x48], 1
call rax
jmp 0x498526
mov rax, qword [rbp + 0x348]
mov dword [rbp - 0x48], 1
mov rdx, rax
lea rcx, [rbp + 0x340]
call fcn.00406060
mov ecx, 0x92
call fcn.004a0310
mov edx, 0x190
mov ecx, 0x280
call fcn.004a02f0
mov ecx, 0x190
call fcn.004a4ca0
test eax, eax
sete al
test al, al
je 0x49859a
mov ecx, 1
call sub.msvcrt.dll_exit
mov rax, qword [0x00712e40]
test rax, rax
jne 0x4985bb
mov dword [rbp - 0x48], 1
lea rcx, str.Untitled
call fcn.0040608e
jmp 0x4985d1
mov rax, qword [0x00712e40]
mov dword [rbp - 0x48], 1
mov rcx, rax
call fcn.0040608e
mov dword [0x00712e30], 1
mov dword [rbp - 0x48], 1
call fcn.0042eb36
mov dword [rbp + 0x21c], eax
cmp dword [rbp + 0x21c], 0
je 0x49860b
mov eax, dword [rbp + 0x21c]
mov ecx, eax
call fcn.0042eabc
mov rcx, rax
call fcn.0043906a
lea rcx, str.GL_EXT_framebuffer_object
call fcn.0042eb5d
test al, al
setne al
test al, al
je 0x49862a
mov dword [0x00712e04], 1
mov dword [rbp - 0x48], 1
lea rcx, [0x00493426]
call fcn.0049e2c0
mov r8d, 0
lea rdx, [0x004903bf]
mov ecx, 8
call fcn.0049e480
lea rcx, [0x00490121]
call fcn.0049e380
lea rcx, [0x0049014c]
call fcn.0049e530
lea rcx, [0x00490373]
call fcn.0049e3e0
lea rcx, [0x00490399]
call fcn.0049e590
lea rcx, [0x004952a9]
call fcn.0049e6c0
lea rcx, [fcn.004952fe]
call fcn.0049e780
lea rcx, [0x00495925]
call fcn.0049e7e0
lea rcx, [0x0049066d]
call fcn.0049e330
lea rcx, [0x00495947]
call fcn.0049e720
call fcn.004a1e30
lea rax, [rbp + 0x20]
mov rcx, rax
call fcn.005503d0
mov eax, 0
mov dword [rbp + 0x18], eax
jmp 0x498709
lea rax, [rbp - 0x50]
mov rcx, rax
call fcn.004b4b30
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