Function at 0x140020250
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x4a8]
sub rsp, 0x570
movaps xmmword [rax - 0x48], xmm6
movaps xmmword [rax - 0x58], xmm7
movaps xmmword [rax - 0x68], xmm8
movaps xmmword [rax - 0x78], xmm9
movaps xmmword [rax - 0x88], xmm10
movaps xmmword [rax - 0x98], xmm11
movaps xmmword [rax - 0xa8], xmm12
movaps xmmword [rax - 0xb8], xmm13
movaps xmmword [rax - 0xc8], xmm14
movaps xmmword [rax - 0xd8], xmm15
mov rax, qword [0x140166100]
xor rax, rsp
mov qword [rbp + 0x3c0], rax
mov rsi, r8
mov r13, rdx
mov rdi, rcx
xor r12d, r12d
mov r14d, 4
mov rax, qword gs:[0x58]
mov r15, qword [rax]
lea rbx, [0x14018bd70]
mov eax, dword [r14 + r15]
cmp dword [0x14018bbd0], eax
jle 0x14002033e
lea rcx, [0x14018bbd0]
call fcn.1400cfc58
cmp dword [0x14018bbd0], 0xffffffff
jne 0x14002033e
xor edx, edx
mov r8d, 0xc0
mov rcx, rbx
call fcn.140102e10
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.1400037f0
lea rcx, [0x140109b00]
call fcn.1400cfb64
lea rcx, [0x14018bbd0]
call fcn.1400cfbec
mov eax, dword [r14 + r15]
cmp dword [0x14018bd40], eax
jle 0x140020379
lea rcx, [0x14018bd40]
call fcn.1400cfc58
cmp dword [0x14018bd40], 0xffffffff
jne 0x140020379
mov rax, qword [0x14018b358]
mov qword [0x14018bce0], rax
lea rcx, [0x14018bd40]
call fcn.1400cfbec
xorps xmm6, xmm6
cmp qword [0x14018bce0], r12
jne 0x14002039c
xorps xmm13, xmm13
xorps xmm7, xmm7
movss dword [rsp + 0x58], xmm7
movss dword [rbp + 0x94], xmm7
jmp 0x1400203e3
lea rcx, [rbp + 0x90]
call qword [sym.imp.USER32.dll_GetCursorPos]
lea rdx, [rbp + 0x90]
mov rcx, qword [0x14018bce0]
call qword [sym.imp.USER32.dll_ScreenToClient]
movd xmm0, dword [rbp + 0x94]
cvtdq2ps xmm0, xmm0
movss dword [rsp + 0x58], xmm0
movd xmm13, dword [rbp + 0x90]
cvtdq2ps xmm13, xmm13
movss dword [rbp + 0x94], xmm0
movss dword [rbp + 0x90], xmm13
xor edx, edx
mov r8d, 0xc0
lea rcx, [rbp + 0x240]
call fcn.140102e10
movaps xmm0, xmmword [rsi]
movaps xmmword [rbp - 0x80], xmm0
movaps xmm1, xmmword [rsi + 0x10]
movaps xmmword [rbp - 0x70], xmm1
movaps xmm0, xmmword [rsi + 0x20]
movaps xmmword [rbp - 0x60], xmm0
movaps xmm1, xmmword [rsi + 0x30]
movaps xmmword [rbp - 0x50], xmm1
movsd xmm0, qword [rsi + 0x40]
movsd qword [rbp - 0x40], xmm0
mov eax, dword [rdi + 0x140]
mov dword [rsp + 0x20], eax
lea r9, [rbp - 0x80]
mov r8, rdi
lea rdx, [rbp + 0x240]
call fcn.1400479b0
mov rdx, qword [rbp + 0x248]
test rdx, rdx
jne 0x14002045e
cmp byte [rdi + 0x48], r12b
je 0x14002116d
jmp 0x140020468
cmp byte [rdi + 0x48], r12b
je 0x14002063b
cmp qword [0x14018bd78], r12
jne 0x1400204ee
lea rax, [rbp + 0x240]
movups xmm0, xmmword [rax]
movups xmmword [rbx], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbx + 0x10], xmm1
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rbx + 0x20], xmm0
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rbx + 0x30], xmm1
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rbx + 0x40], xmm0
movups xmm1, xmmword [rax + 0x50]
movups xmmword [rbx + 0x50], xmm1
movups xmm0, xmmword [rax + 0x60]
movups xmmword [rbx + 0x60], xmm0
movups xmm1, xmmword [rax + 0x70]
movups xmmword [rbx + 0x70], xmm1
movups xmm0, xmmword [rax + 0x80]
movups xmmword [rbx + 0x80], xmm0
movups xmm1, xmmword [rax + 0x90]
movups xmmword [rbx + 0x90], xmm1
movups xmm0, xmmword [rax + 0xa0]
movups xmmword [rbx + 0xa0], xmm0
movups xmm1, xmmword [rax + 0xb0]
movups xmmword [rbx + 0xb0], xmm1
cmp byte [rdi + 0x48], r12b
je 0x14002063b
cmp byte [rdi + 0x44], r12b
je 0x1400205ad
cmp byte [0x14018b337], r12b
jne 0x1400205ad
xor r8d, r8d
xor edx, edx
lea rcx, [rbp + 0x180]
call fcn.1400037f0
movups xmm0, xmmword [rax]
movups xmmword [rbx], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbx + 0x10], xmm1
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rbx + 0x20], xmm0
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rbx + 0x30], xmm1
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rbx + 0x40], xmm0
movups xmm1, xmmword [rax + 0x50]
movups xmmword [rbx + 0x50], xmm1
movups xmm0, xmmword [rax + 0x60]
movups xmmword [rbx + 0x60], xmm0
movups xmm1, xmmword [rax + 0x70]
movups xmmword [rbx + 0x70], xmm1
movups xmm0, xmmword [rax + 0x80]
movups xmmword [rbx + 0x80], xmm0
movups xmm1, xmmword [rax + 0x90]
movups xmmword [rbx + 0x90], xmm1
movups xmm0, xmmword [rax + 0xa0]
movups xmmword [rbx + 0xa0], xmm0
movups xmm1, xmmword [rax + 0xb0]
movups xmmword [rbx + 0xb0], xmm1
mov dword [0x14018b524], edx
mov dword [0x14018b528], edx
mov dword [0x14018b520], edx
jmp 0x14002116d
cmp byte [rdi + 0x49], r12b
jne 0x14002050f
lea rax, [rbp + 0x240]
movups xmm0, xmmword [rbx]
movups xmmword [rax], xmm0
movups xmm1, xmmword [rbx + 0x10]
movups xmmword [rax + 0x10], xmm1
movups xmm0, xmmword [rbx + 0x20]
movups xmmword [rax + 0x20], xmm0
movups xmm1, xmmword [rbx + 0x30]
movups xmmword [rax + 0x30], xmm1
movups xmm0, xmmword [rbx + 0x40]
movups xmmword [rax + 0x40], xmm0
movups xmm1, xmmword [rbx + 0x50]
movups xmmword [rax + 0x50], xmm1
movups xmm0, xmmword [rbx + 0x60]
movups xmmword [rax + 0x60], xmm0
movups xmm1, xmmword [rbx + 0x70]
movups xmmword [rax + 0x70], xmm1
movups xmm0, xmmword [rbx + 0x80]
movups xmmword [rax + 0x80], xmm0
movups xmm1, xmmword [rbx + 0x90]
movups xmmword [rax + 0x90], xmm1
movups xmm0, xmmword [rbx + 0xa0]
movups xmmword [rax + 0xa0], xmm0
movups xmm1, xmmword [rbx + 0xb0]
movups xmmword [rax + 0xb0], xmm1
mov rdx, qword [rbp + 0x248]
test rdx, rdx
jne 0x14002065a
mov dword [0x14018b524], r12d
mov dword [0x14018b528], r12d
mov dword [0x14018b520], r12d
jmp 0x14002116d
xor edx, edx
mov r8d, 0xc0
lea rcx, [rbp + 0xc0]
call fcn.140102e10
xor r8d, r8d
xor edx, edx
lea rcx, [rbp + 0xc0]
call fcn.1400037f0
xorps xmm15, xmm15
xorps xmm10, xmm10
xorps xmm14, xmm14
xorps xmm0, xmm0
movups xmmword [rbp - 0x80], xmm0
xorps xmm1, xmm1
movdqa xmmword [rbp - 0x70], xmm1
mov r8d, 4
lea rdx, str.Head
lea rcx, [rbp - 0x80]
call fcn.140005b00
nop
xorps xmm0, xmm0
movups xmmword [rbp - 0x60], xmm0
xorps xmm1, xmm1
movdqa xmmword [rbp - 0x50], xmm1
mov r8d, 5
lea rdx, str.Torso
lea rcx, [rbp - 0x60]
call fcn.140005b00
nop
lea rdx, [rbp - 0x80]
lea rcx, [rdi + 0x168]
mov r8d, 2
call fcn.140021af0
nop
lea r9, [fcn.140004b60]
mov edx, 0x20
mov r8d, 2
lea rcx, [rbp - 0x80]
call fcn.1400cfcd0
xor edx, edx
mov r8d, 0xc0
lea rcx, [rbp + 0x300]
call fcn.140102e10
lea rcx, [rbp + 0x300]
call fcn.14001a660
xor edx, edx
mov r8d, 0xc0
lea rcx, [rbp + 0x180]
call fcn.140102e10
lea rcx, [rbp + 0x180]
call fcn.14001a660
lea rdx, [rbp + 0xa0]
lea rcx, [rbp + 0x240]
call fcn.140041f60
nop
mov rbx, qword [rbp + 0xa0]
mov r14, qword [rbp + 0xa8]
cmp rbx, r14
je 0x140020898
nop dword [rax]
nop dword [rax + rax]
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x78], r12
mov r8d, 5
lea rdx, str.Decal
lea rcx, [rsp + 0x60]
call fcn.140005b00
lea r8, [rsp + 0x60]
lea rdx, [rbp - 0x30]
mov rcx, rbx
call fcn.140042430
cmp qword [rax + 8], 0
je 0x1400207ca
lea rcx, [rbp + 0x180]
jmp 0x140020812
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x78], r12
mov r8d, 9
lea rdx, str.SpotLight
lea rcx, [rsp + 0x60]
call fcn.140005b00
lea r8, [rsp + 0x60]
lea rdx, [rbp - 0x30]
mov rcx, rbx
call fcn.140042430
cmp qword [rax + 8], 0
je 0x140020888
lea rcx, [rbp + 0x300]
movups xmm0, xmmword [rbx]
movups xmmword [rcx], xmm0
movups xmm1, xmmword [rbx + 0x10]
movups xmmword [rcx + 0x10], xmm1
movups xmm0, xmmword [rbx + 0x20]
movups xmmword [rcx + 0x20], xmm0
movups xmm1, xmmword [rbx + 0x30]
movups xmmword [rcx + 0x30], xmm1
movups xmm0, xmmword [rbx + 0x40]
movups xmmword [rcx + 0x40], xmm0
movups xmm1, xmmword [rbx + 0x50]
movups xmmword [rcx + 0x50], xmm1
movups xmm0, xmmword [rbx + 0x60]
movups xmmword [rcx + 0x60], xmm0
movups xmm1, xmmword [rbx + 0x70]
movups xmmword [rcx + 0x70], xmm1
movups xmm0, xmmword [rbx + 0x80]
movups xmmword [rcx + 0x80], xmm0
movups xmm1, xmmword [rbx + 0x90]
movups xmmword [rcx + 0x90], xmm1
movups xmm0, xmmword [rbx + 0xa0]
movups xmmword [rcx + 0xa0], xmm0
movups xmm1, xmmword [rbx + 0xb0]
movups xmmword [rcx + 0xb0], xmm1
add rbx, 0xc0
cmp rbx, r14
jne 0x140020780
lea rcx, [rbp + 0xa0]
call fcn.1400214c0
mov ecx, dword [rdi + 0x180]
test ecx, ecx
je 0x140020962
cmp ecx, 1
jne 0x140020a58
lea rcx, [rbp + 0xc0]
lea rax, [rbp + 0x300]
movups xmm0, xmmword [rax]
movups xmmword [rcx], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rcx + 0x10], xmm1
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rcx + 0x20], xmm0
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rcx + 0x30], xmm1
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rcx + 0x40], xmm0
movups xmm1, xmmword [rax + 0x50]
movups xmmword [rcx + 0x50], xmm1
movups xmm0, xmmword [rax + 0x60]
movups xmmword [rcx + 0x60], xmm0
movups xmm1, xmmword [rax + 0x70]
movups xmmword [rcx + 0x70], xmm1
movups xmm0, xmmword [rax + 0x80]
movups xmmword [rcx + 0x80], xmm0
movups xmm1, xmmword [rax + 0x90]
movups xmmword [rcx + 0x90], xmm1
movups xmm0, xmmword [rax + 0xa0]
movups xmmword [rcx + 0xa0], xmm0
movups xmm1, xmmword [rax + 0xb0]
movups xmmword [rcx + 0xb0], xmm1
mov rax, qword [rbp + 0x308]
test rax, rax
je 0x14002116d
mov rdx, qword [rbp + 0x318]
mov rcx, qword [rbp + 0x300]
jmp 0x140020a04
lea rcx, [rbp + 0xc0]
lea rax, [rbp + 0x180]
movups xmm0, xmmword [rax]
movups xmmword [rcx], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rcx + 0x10], xmm1
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rcx + 0x20], xmm0
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rcx + 0x30], xmm1
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rcx + 0x40], xmm0
movups xmm1, xmmword [rax + 0x50]
movups xmmword [rcx + 0x50], xmm1
movups xmm0, xmmword [rax + 0x60]
movups xmmword [rcx + 0x60], xmm0
movups xmm1, xmmword [rax + 0x70]
movups xmmword [rcx + 0x70], xmm1
movups xmm0, xmmword [rax + 0x80]
movups xmmword [rcx + 0x80], xmm0
movups xmm1, xmmword [rax + 0x90]
movups xmmword [rcx + 0x90], xmm1
movups xmm0, xmmword [rax + 0xa0]
movups xmmword [rcx + 0xa0], xmm0
movups xmm1, xmmword [rax + 0xb0]
movups xmmword [rcx + 0xb0], xmm1
mov rax, qword [rbp + 0x188]
test rax, rax
je 0x14002116d
mov rdx, qword [rbp + 0x198]
mov rcx, qword [rbp + 0x180]
shr rdx, 0x20
mov r8b, 1
add rdx, rax
call fcn.1400054a0
mov r8d, dword [rbp + 0xe0]
add r8, rax
mov rdx, qword [rbp + 0xc0]
lea rcx, [rbp - 0x80]
call fcn.1400418b0
movss xmm1, dword [rbp - 0x74]
movss xmm0, dword [rbp - 0x78]
unpcklps xmm0, xmm1
movaps xmm3, xmm0
movsd qword [rsp + 0x38], xmm0
shufps xmm0, xmm0, 0x55
movss xmm15, dword [rsp + 0x38]
movaps xmm10, xmm0
movd xmm14, dword [rbp - 0x70]
mov rax, qword [rbp + 0xc8]
test rax, rax
je 0x140020f8a
cmp byte [rdi + 0x3c], 0
je 0x140020afb
mov edx, dword [rbp + 0xdc]
add rdx, rax
mov r8b, 1
mov rcx, qword [rbp + 0xc0]
call fcn.1400054a0
test rax, rax
jne 0x140020a9a
movaps xmm1, xmm6
movaps xmm0, xmm6
movaps xmm2, xmm6
jmp 0x140020ac7
mov r8d, dword [rbp + 0x108]
add r8, rax
lea rdx, [rsp + 0x38]
mov rcx, qword [rbp + 0xc0]
call fcn.140048c90
movss xmm2, dword [rsp + 0x40]
movss xmm0, dword [rsp + 0x3c]
movss xmm1, dword [rsp + 0x38]
movss xmm3, dword [rdi + 0x8c]
divss xmm1, xmm3
addss xmm15, xmm1
cmp byte [rdi + 0x3d], 0
je 0x140020af2
divss xmm0, xmm3
cmp byte [rdi + 0x4c], 0
je 0x140020aed
comiss xmm0, xmm6
jbe 0x140020af2
addss xmm10, xmm0
divss xmm2, xmm3
addss xmm14, xmm2
movsd xmm11, qword [0x140145e20]
cmp byte [rdi + 0x4d], 0
je 0x140020d98
mov rax, qword gs:[0x58]
mov r14, qword [rax]
mov ebx, 4
mov ecx, dword [rbx + r14]
cmp dword [0x14018bbec], ecx
jle 0x140020b58
lea rcx, [0x14018bbec]
call fcn.1400cfc58
cmp dword [0x14018bbec], 0xffffffff
jne 0x140020b58
lea rcx, [0x14018bcd8]
call fcn.1400197b0
lea rcx, [0x14018bbec]
call fcn.1400cfbec
mov eax, ebx
mov rbx, qword [rbp + 0x90]
mov eax, dword [rax + r14]
cmp dword [0x14018bd28], eax
jle 0x140020bf6
lea rcx, [0x14018bd28]
call fcn.1400cfc58
cmp dword [0x14018bd28], 0xffffffff
jne 0x140020bf6
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x40], 0
movaps xmm0, xmmword [rsi]
movaps xmmword [rbp - 0x80], xmm0
movaps xmm1, xmmword [rsi + 0x10]
movaps xmmword [rbp - 0x70], xmm1
movaps xmm0, xmmword [rsi + 0x20]
movaps xmmword [rbp - 0x60], xmm0
movaps xmm1, xmmword [rsi + 0x30]
movaps xmmword [rbp - 0x50], xmm1
movsd xmm0, qword [rsi + 0x40]
movsd qword [rbp - 0x40], xmm0
lea rax, [rsp + 0x38]
mov qword [rsp + 0x28], rax
mov byte [rsp + 0x20], 0
mov r9, rbx
lea r8, [rbp - 0x80]
lea rdx, [0x14018bcb0]
lea rcx, [rbp + 0xc0]
call fcn.140045fc0
nop
lea rcx, [0x14018bd28]
call fcn.1400cfbec
lea rcx, [rsp + 0x48]
call fcn.1400197b0
mov rcx, qword [rax]
sub rcx, qword [0x14018bcd8]
movabs rax, 0x431bde82d7b634db
imul rcx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
movsxd rax, dword [rdi + 0x7c]
cmp rdx, rax
jl 0x140020cd7
movss dword [rsp + 0x38], xmm15
movss dword [rsp + 0x3c], xmm10
movss dword [rsp + 0x40], xmm14
movzx eax, byte [rdi + 0x3c]
movaps xmm0, xmmword [rsi]
movaps xmmword [rbp - 0x80], xmm0
movaps xmm1, xmmword [rsi + 0x10]
movaps xmmword [rbp - 0x70], xmm1
movaps xmm0, xmmword [rsi + 0x20]
movaps xmmword [rbp - 0x60], xmm0
movaps xmm1, xmmword [rsi + 0x30]
movaps xmmword [rbp - 0x50], xmm1
movsd xmm0, qword [rsi + 0x40]
movsd qword [rbp - 0x40], xmm0
lea rcx, [rsp + 0x38]
mov qword [rsp + 0x28], rcx
mov byte [rsp + 0x20], al
mov r9, rbx
lea r8, [rbp - 0x80]
lea rdx, [rsp + 0x48]
lea rcx, [rbp + 0xc0]
call fcn.140045fc0
movsd xmm0, qword [rax]
movsd qword [0x14018bcb0], xmm0
mov eax, dword [rax + 8]
mov dword [0x14018bcb8], eax
mov dword [0x14018b528], 0x3dcccccd
mov dword [0x14018b520], 0x3dcccccd
lea rcx, [rsp + 0x48]
call fcn.1400197b0
mov rcx, qword [rax]
mov qword [0x14018bcd8], rcx
movss xmm8, dword [0x14018bcb8]
movss xmm9, dword [0x14018bcb4]
movss xmm12, dword [0x14018bcb0]
ucomiss xmm12, xmm6
jp 0x140020d0e
jne 0x140020d0e
ucomiss xmm9, xmm6
jp 0x140020d0e
jne 0x140020d0e
ucomiss xmm8, xmm6
jp 0x140020d0e
je 0x140020d98
movaps xmm0, xmm10
subss xmm0, xmm9
cvtss2sd xmm0, xmm0
movaps xmm1, xmm11
call fcn.1400febe0
movaps xmm7, xmm0
movaps xmm0, xmm15
subss xmm0, xmm12
cvtss2sd xmm0, xmm0
movaps xmm1, xmm11
call fcn.1400febe0
addsd xmm7, xmm0
movaps xmm1, xmm14
subss xmm1, xmm8
xorps xmm0, xmm0
cvtss2sd xmm0, xmm1
movaps xmm1, xmm11
call fcn.1400febe0
addsd xmm7, xmm0
xorps xmm1, xmm1
ucomisd xmm1, xmm7
ja 0x140020d70
xorps xmm0, xmm0
sqrtsd xmm0, xmm7
jmp 0x140020d78
movaps xmm0, xmm7
call fcn.140100b70
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [0x140145f08]
comiss xmm0, xmm1
jb 0x140020d98
movaps xmm15, xmm12
movaps xmm10, xmm9
movaps xmm14, xmm8
movss dword [rsp + 0x38], xmm15
movss dword [rsp + 0x3c], xmm10
movss dword [rsp + 0x40], xmm14
lea r8, [rsp + 0x38]
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.140041200
movss xmm0, dword [rsp + 0x58]
movss xmm7, dword [rsp + 0x34]
subss xmm0, xmm7
cvtps2pd xmm0, xmm0
movaps xmm1, xmm11
call fcn.1400febe0
movaps xmm9, xmm0
movaps xmm0, xmm13
movss xmm8, dword [rsp + 0x30]
subss xmm0, xmm8
cvtss2sd xmm0, xmm0
movaps xmm1, xmm11
call fcn.1400febe0
addsd xmm9, xmm0
xorps xmm1, xmm1
ucomisd xmm1, xmm9
ja 0x140020e15
xorps xmm0, xmm0
sqrtsd xmm0, xmm9
jmp 0x140020e1e
movaps xmm0, xmm9
call fcn.140100b70
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movd xmm0, dword [rdi + 0x5c]
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
jae 0x140020f84
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x78], r12
mov r8d, 9
lea rdx, str.Workspace
lea rcx, [rsp + 0x60]
call fcn.140005b00
lea r8, [rsp + 0x60]
lea rdx, [rbp - 0x30]
lea rcx, [0x140183450]
call fcn.140042430
mov rbx, rax
xorps xmm0, xmm0
movups xmmword [rbp + 0xa0], xmm0
mov qword [rbp + 0xb0], r12
mov qword [rbp + 0xb8], r12
mov r8d, 6
lea rdx, str.Camera
lea rcx, [rbp + 0xa0]
call fcn.140005b00
lea r8, [rbp + 0xa0]
lea rdx, [rbp + 0x180]
mov rcx, rbx
call fcn.140042430
test rax, rax
je 0x140020ef6
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x140020ef6
mov r8d, dword [rax + 0x30]
add rdx, 0xffffffffffffffdc
add r8, rdx
lea rdx, [rbp - 0x80]
mov rcx, qword [rax]
call fcn.140049db0
movss xmm12, dword [rbp - 0x54]
movss xmm0, dword [rbp - 0x58]
movss xmm13, dword [rbp - 0x5c]
jmp 0x140020f10
call fcn.1400198f0
call fcn.140041350
movss xmm13, dword [rax]
movss xmm0, dword [rax + 4]
movss xmm12, dword [rax + 8]
subss xmm0, xmm10
cvtps2pd xmm0, xmm0
movaps xmm1, xmm11
call fcn.1400febe0
movaps xmm9, xmm0
subss xmm13, xmm15
cvtps2pd xmm0, xmm13
movaps xmm1, xmm11
call fcn.1400febe0
addsd xmm9, xmm0
subss xmm12, xmm14
cvtps2pd xmm0, xmm12
movaps xmm1, xmm11
call fcn.1400febe0
addsd xmm9, xmm0
xorps xmm1, xmm1
ucomisd xmm1, xmm9
ja 0x140020f67
xorps xmm0, xmm0
sqrtsd xmm0, xmm9
jmp 0x140020f70
movaps xmm0, xmm9
call fcn.140100b70
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movd xmm0, dword [rdi + 0x58]
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
jbe 0x140020fad
cmp byte [rdi + 0x48], 0
jne 0x140020fad
mov dword [0x14018b524], 0
mov dword [0x14018b528], 0
mov dword [0x14018b520], 0
jmp 0x14002116d
ucomiss xmm8, xmm6
jp 0x140020fb5
je 0x140020f8a
ucomiss xmm7, xmm6
jp 0x140020fbc
je 0x140020f8a
cmp byte [rdi + 0x50], 0
je 0x140021086
movdqa xmm0, xmmword [0x1401467d0]
movss dword [rsp + 0x48], xmm15
movss dword [rsp + 0x4c], xmm10
movss dword [rsp + 0x50], xmm14
movdqa xmmword [rbp + 0xa0], xmm0
lea r8, [rsp + 0x48]
lea rdx, [rsp + 0x38]
mov rcx, rsi
call fcn.140041200
mov rcx, qword [rax]
mov qword [rsp + 0x30], rcx
mov r8, qword [0x14018b338]
mov rax, qword [r8 + 0x3ed0]
mov byte [rax + 0xb8], 1
movss xmm0, dword [rsp + 0x30]
movss dword [rsp + 0x48], xmm0
movss xmm1, dword [rsp + 0x34]
movss dword [rsp + 0x4c], xmm1
movss xmm0, dword [rbp + 0x90]
movss dword [rsp + 0x30], xmm0
movss xmm0, dword [rsp + 0x58]
movss dword [rsp + 0x34], xmm0
lea rcx, [rbp + 0xa0]
call fcn.14004cdb0
mov r9d, eax
mov rcx, qword [r8 + 0x3ed0]
movss xmm0, dword [0x140145d70]
movss dword [rsp + 0x20], xmm0
lea r8, [rsp + 0x48]
lea rdx, [rsp + 0x30]
mov rcx, qword [rcx + 0x298]
call fcn.14006f740
cmp byte [rdi + 0x44], 0
je 0x14002116d
mov ecx, dword [rdi + 0x160]
test ecx, ecx
je 0x140021114
cmp ecx, 1
jne 0x14002116d
mov ecx, dword [r13 + 0xf0]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x14002116d
mov eax, dword [rsi + 4]
xorps xmm0, xmm0
cvtsi2ss xmm0, rax
movss dword [rsp + 0x48], xmm0
mov eax, dword [rsi]
xorps xmm1, xmm1
cvtsi2ss xmm1, rax
movss dword [rsp + 0x4c], xmm1
movd xmm0, dword [rdi + 0x60]
cvtdq2ps xmm0, xmm0
subss xmm8, xmm0
movss dword [rsp + 0x30], xmm8
movd xmm1, dword [rdi + 0x64]
cvtdq2ps xmm1, xmm1
subss xmm7, xmm1
movss dword [rsp + 0x34], xmm7
mov r8, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x30]
mov rcx, rdi
call fcn.14001ad90
jmp 0x14002116d
mov eax, dword [rsi + 4]
xorps xmm0, xmm0
cvtsi2ss xmm0, rax
movss dword [rsp + 0x48], xmm0
mov eax, dword [rsi]
xorps xmm1, xmm1
cvtsi2ss xmm1, rax
movss dword [rsp + 0x4c], xmm1
movd xmm0, dword [rdi + 0x60]
cvtdq2ps xmm0, xmm0
subss xmm8, xmm0
movss dword [rsp + 0x30], xmm8
movd xmm1, dword [rdi + 0x64]
cvtdq2ps xmm1, xmm1
subss xmm7, xmm1
movss dword [rsp + 0x34], xmm7
mov r8, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x30]
mov rcx, rdi
call fcn.14001a7d0
mov rcx, qword [rbp + 0x3c0]
xor rcx, rsp
call fcn.1400cf8e0
lea r11, [rsp + 0x570]
mov rbx, qword [r11 + 0x58]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
movaps xmm10, xmmword [r11 - 0x50]
movaps xmm11, xmmword [r11 - 0x60]
movaps xmm12, xmmword [r11 - 0x70]
movaps xmm13, xmmword [r11 - 0x80]
movaps xmm14, xmmword [r11 - 0x90]
movaps xmm15, xmmword [r11 - 0xa0]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret