Function at 0x180038740
Capabilities:
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rsi
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x37]
sub rsp, 0x90
mov rsi, rcx
call fcn.18000cfd0
xorps xmm0, xmm0
mov rdi, rax
lea rdx, [rax + 0x88]
movups xmmword [rdx], xmm0
mov ecx, dword [rax + 0x98]
call qword [sym.imp.XINPUT9_1_0.dll_XInputGetState]
movzx r15d, word [rdi + 0x9c]
test eax, eax
movzx r14d, word [rdi + 0x8c]
sete cl
mov byte [rdi + 0x9e], cl
cmp r15w, r14w
je 0x18003880c
xor r14w, r15w
mov ebx, 1
mov r12d, 0x8000
test r14b, 1
je 0x1800387f9
test r15b, 1
je 0x1800387e0
cmp qword [rdi + 0x80], 0
je 0x1800387f9
mov rcx, qword [rdi + 0x80]
movzx eax, bx
mov dword [rbp + 0x6f], eax
test rcx, rcx
je 0x180038f5f
jmp 0x1800387ef
mov rcx, qword [rdi + 0x40]
test rcx, rcx
je 0x1800387f9
movzx eax, bx
mov dword [rbp + 0x6f], eax
mov rax, qword [rcx]
lea rdx, [rbp + 0x6f]
call qword [rax + 0x10]
cmp bx, r12w
je 0x18003880c
shr r14w, 1
shr r15w, 1
add bx, bx
jmp 0x1800387b2
movzx eax, word [rdi + 0x8c]
mov ecx, 0xa4
mov word [rdi + 0x9c], ax
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
jne 0x180038843
mov ecx, 0xa5
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
jne 0x180038843
xor r15b, r15b
jmp 0x180038846
mov r15b, 1
mov ecx, 0xa3
call qword [sym.imp.USER32.dll_GetKeyState]
movzx r14d, ax
mov ecx, 0xa2
shr r14d, 0xf
and r14b, 1
call qword [sym.imp.USER32.dll_GetKeyState]
movzx ebx, ax
mov ecx, 0x2d
shr ebx, 0xf
and bl, 1
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x1800388aa
test bl, bl
jne 0x18003888c
test r14b, r14b
je 0x1800388aa
cmp byte [0x18009671d], 0
mov ecx, 0x15e
sete byte [0x18009671d]
call qword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x180038f43
cmp byte [rsi + 0x2d], 0
je 0x180038f43
cmp byte [0x18009671d], 0
je 0x1800388cf
call fcn.18000cfd0
cmp byte [rax + 0xd0], 0
je 0x180038f43
mov ecx, 0x2d
call qword [sym.imp.USER32.dll_GetKeyState]
xor r12d, r12d
shr eax, 0xf
lea rdi, str.Camera_movement_is_unlocked
lea rbx, [r12 - 1]
test al, 1
je 0x180038b3d
cmp byte [0x180092ed8], r12b
je 0x180038a11
mov rcx, qword [0x180092ed0]
test rcx, rcx
je 0x180038952
movsd xmm0, qword [0x180096710]
movss xmm1, dword [0x18009672c]
movsd qword [rcx + 0x100], xmm0
mov eax, dword [0x180096718]
mov dword [rcx + 0x108], eax
mov rax, qword [0x180092ed0]
movups xmm0, xmmword [0x1800966f0]
movups xmmword [rax + 0xf0], xmm0
mov rax, qword [0x180092ed0]
movss dword [rax + 0xc], xmm1
mov rcx, qword [0x180092ec8]
test rcx, rcx
je 0x1800389a3
movsd xmm0, qword [0x180096720]
movss xmm1, dword [0x180096730]
movsd qword [rcx + 0x130], xmm0
mov eax, dword [0x180096728]
mov dword [rcx + 0x138], eax
mov rax, qword [0x180092ec8]
movups xmm0, xmmword [0x180096700]
movups xmmword [rax + 0x120], xmm0
mov rax, qword [0x180092ec8]
movss dword [rax + 0x3c], xmm1
mov rcx, qword [0x180092ea8]
test rcx, rcx
je 0x1800389b8
mov eax, dword [0x18008ff88]
mov dword [rcx + 0x4c], eax
mov ecx, dword [0x180096734]
mov edx, ecx
movss xmm2, dword [0x18008ff8c]
call fcn.180001fb0
cmp byte [rsi + 0x2c], r12b
je 0x180038a01
xorps xmm0, xmm0
mov byte [rsi + 0x2c], r12b
mov r8d, 0x1b
mov qword [rbp - 0x29], r12
mov rdx, rdi
mov qword [rbp - 0x21], r12
lea rcx, [rbp - 0x39]
movups xmmword [rbp - 0x39], xmm0
call fcn.18000b400
lea rcx, [rbp - 0x39]
call fcn.180011090
lea rcx, [rsi + 0x30]
mov dl, 1
call fcn.18000fe10
jmp 0x180038ae1
lea rcx, [rsi + 0x30]
xor edx, edx
call fcn.18000fe10
mov rcx, qword [0x180092ed0]
test rcx, rcx
je 0x180038a5f
movsd xmm0, qword [rcx + 0x100]
movsd qword [0x180096710], xmm0
mov eax, dword [rcx + 0x108]
mov dword [0x180096718], eax
movups xmm0, xmmword [rcx + 0xf0]
movups xmmword [0x1800966f0], xmm0
movss xmm1, dword [rcx + 0xc]
movss dword [0x18009672c], xmm1
mov rcx, qword [0x180092ec8]
test rcx, rcx
je 0x180038aa2
movsd xmm0, qword [rcx + 0x130]
movsd qword [0x180096720], xmm0
mov eax, dword [rcx + 0x138]
mov dword [0x180096728], eax
movups xmm0, xmmword [rcx + 0x120]
movups xmmword [0x180096700], xmm0
movss xmm1, dword [rcx + 0x3c]
movss dword [0x180096730], xmm1
mov rax, qword [0x180092ea8]
test rax, rax
je 0x180038ab7
mov eax, dword [rax + 0x4c]
mov dword [0x18008ff88], eax
mov rcx, qword [0x180092ea0]
test rcx, rcx
je 0x180038ad9
movss xmm0, dword [rcx + 0x20]
mov eax, dword [rcx + 0x10]
movss dword [0x18008ff8c], xmm0
mov dword [0x180096734], eax
mov qword [rsi + 0x10], r12
mov dword [rsi + 0xc], r12d
cmp byte [0x180092ed8], r12b
lea rcx, str.Camera_enabled
lea rdx, str.Camera_disabled
mov qword [rbp - 0x29], r12
sete al
mov qword [rbp - 0x21], r12
test al, al
mov byte [0x180092ed8], al
xorps xmm0, xmm0
mov r8, rbx
cmovne rdx, rcx
movups xmmword [rbp - 0x39], xmm0
inc r8
cmp byte [rdx + r8], r12b
jne 0x180038b17
lea rcx, [rbp - 0x39]
call fcn.18000b400
lea rcx, [rbp - 0x39]
call fcn.180011090
mov ecx, 0x15e
call qword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, 0x6a
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x180038b92
call fcn.18000cfd0
test dword [rax + 0xcc], 0xfffffffd
jne 0x180038b92
mov rax, qword [0x180092ed0]
test rax, rax
je 0x180038b79
movss xmm0, dword [0x18009672c]
movss dword [rax + 0xc], xmm0
mov rax, qword [0x180092ec8]
test rax, rax
je 0x180038b92
movss xmm0, dword [0x180096730]
movss dword [rax + 0x3c], xmm0
mov ecx, 0x6d
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x180038bfd
call fcn.18000cfd0
test dword [rax + 0xcc], 0xfffffffd
jne 0x180038bfd
call fcn.18000cfd0
movss xmm1, dword [rax + 0xc8]
mov rax, qword [0x180092ed0]
xorps xmm1, xmmword [0x1800839e0]
test rax, rax
je 0x180038be3
movss xmm0, dword [rax + 0xc]
subss xmm0, xmm1
movss dword [rax + 0xc], xmm0
mov rax, qword [0x180092ec8]
test rax, rax
je 0x180038bfd
movss xmm0, dword [rax + 0x3c]
subss xmm0, xmm1
movss dword [rax + 0x3c], xmm0
mov ecx, 0x6b
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x180038c61
call fcn.18000cfd0
test dword [rax + 0xcc], 0xfffffffd
jne 0x180038c61
call fcn.18000cfd0
movss xmm1, dword [rax + 0xc8]
mov rax, qword [0x180092ed0]
test rax, rax
je 0x180038c47
movss xmm0, dword [rax + 0xc]
subss xmm0, xmm1
movss dword [rax + 0xc], xmm0
mov rax, qword [0x180092ec8]
test rax, rax
je 0x180038c61
movss xmm0, dword [rax + 0x3c]
subss xmm0, xmm1
movss dword [rax + 0x3c], xmm0
mov ecx, 0x60
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x180038d16
mov rcx, qword [0x180092ec0]
test rcx, rcx
je 0x180038d0b
movzx eax, byte [rcx + 0x38]
mov byte [rcx + 0x38], 1
test al, al
jne 0x180038d0b
xorps xmm0, xmm0
mov qword [rbp - 0x29], r12
mov ecx, 0x40
mov qword [rbp - 0x21], 0xf
movups xmmword [rbp - 0x39], xmm0
call fcn.180040d70
movups xmm0, xmmword [str.Game_paused._Unpause_with_the_menu_by_pressing_ESC_twice.]
mov qword [rbp - 0x39], rax
mov rcx, rax
mov qword [rbp - 0x29], 0x39
mov qword [rbp - 0x21], 0x3f
movups xmmword [rax], xmm0
movups xmm1, xmmword [0x1800832b8]
movups xmmword [rax + 0x10], xmm1
movups xmm0, xmmword [0x1800832c8]
movups xmmword [rax + 0x20], xmm0
movsd xmm0, qword [0x1800832d8]
movsd qword [rax + 0x30], xmm0
movzx eax, byte [0x1800832e0]
mov byte [rcx + 0x38], al
mov byte [rcx + 0x39], r12b
lea rcx, [rbp - 0x39]
call fcn.180011090
mov ecx, 0x15e
call qword [sym.imp.KERNEL32.dll_Sleep]
cmp byte [0x180092ed8], r12b
je 0x180038f43
movaps xmmword [rsp + 0x40], xmm10
mov byte [rsi + 0x18], r12b
mov qword [rsi], r12
mov dword [rsi + 8], r12d
call fcn.18000cfd0
test r15b, r15b
je 0x180038d49
movss xmm10, dword [rax + 0xb4]
jmp 0x180038d62
test r14b, r14b
je 0x180038d59
movss xmm10, dword [rax + 0xb8]
jmp 0x180038d62
movss xmm10, dword [0x180083584]
mov ecx, 0x24
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
test al, 1
je 0x180038dcc
movzx eax, byte [rsi + 0x2c]
test al, al
sete cl
cmp al, cl
je 0x180038dc1
mov byte [rsi + 0x2c], cl
test al, al
lea rcx, str.Camera_movement_is_locked
mov qword [rbp - 0x29], r12
xorps xmm0, xmm0
mov qword [rbp - 0x21], r12
cmove rdi, rcx
movups xmmword [rbp - 0x39], xmm0
inc rbx
cmp byte [rdi + rbx], r12b
jne 0x180038da0
mov r8, rbx
lea rcx, [rbp - 0x39]
mov rdx, rdi
call fcn.18000b400
lea rcx, [rbp - 0x39]
call fcn.180011090
mov ecx, 0x15e
call qword [sym.imp.KERNEL32.dll_Sleep]
cmp byte [rsi + 0x2c], r12b
jne 0x180038f3d
movaps xmm1, xmm10
mov rcx, rsi
call fcn.180039560
call fcn.18000cfd0
test dword [rax + 0xcc], 0xfffffffd
jne 0x180038f31
mov edi, dword [0x180096738]
mov ebx, dword [0x18009673c]
mov eax, ebx
movaps xmmword [rsp + 0x80], xmm6
neg eax
movss xmm6, dword [0x1800835c0]
movaps xmmword [rsp + 0x70], xmm7
cmovs eax, ebx
movaps xmmword [rsp + 0x60], xmm8
xorps xmm7, xmm7
movss xmm8, dword [0x180083644]
cmp eax, 1
jle 0x180038ebe
movaps xmmword [rsp + 0x50], xmm9
movss xmm9, dword [rsi + 0x1c]
call fcn.18000cfd0
cmp byte [rax + 0xb0], r12b
je 0x180038e5c
xorps xmm9, xmmword [0x1800839e0]
call fcn.18000cfd0
xorps xmm0, xmm0
cvtsi2ss xmm0, ebx
mulss xmm0, dword [0x18008354c]
mulss xmm0, xmm10
xorps xmm0, xmmword [0x1800839e0]
mulss xmm0, dword [rax + 0xc4]
mulss xmm0, xmm9
movaps xmm9, xmmword [rsp + 0x50]
addss xmm0, dword [rsi + 0x10]
comiss xmm0, xmm6
movss dword [rsi + 0x10], xmm0
jbe 0x180038eaa
nop
addss xmm0, xmm8
comiss xmm0, xmm6
ja 0x180038ea0
comiss xmm7, xmm0
jbe 0x180038eb9
nop
addss xmm0, xmm6
comiss xmm7, xmm0
ja 0x180038eb0
movss dword [rsi + 0x10], xmm0
mov eax, edi
neg eax
cmovs eax, edi
cmp eax, 1
jle 0x180038f1e
call fcn.18000cfd0
movd xmm0, edi
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x18008354c]
mulss xmm0, xmm10
mulss xmm0, dword [rax + 0xc4]
addss xmm0, dword [rsi + 0xc]
comiss xmm0, xmm6
movss dword [rsi + 0xc], xmm0
jbe 0x180038f0a
nop word [rax + rax]
addss xmm0, xmm8
comiss xmm0, xmm6
ja 0x180038f00
comiss xmm7, xmm0
jbe 0x180038f19
nop
addss xmm0, xmm6
comiss xmm7, xmm0
ja 0x180038f10
movss dword [rsi + 0xc], xmm0
movaps xmm8, xmmword [rsp + 0x60]
movaps xmm7, xmmword [rsp + 0x70]
movaps xmm6, xmmword [rsp + 0x80]
movaps xmm1, xmm10
mov rcx, rsi
call fcn.180038f70
movaps xmm10, xmmword [rsp + 0x40]
lea r11, [rsp + 0x90]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret
call fcn.18003d250
int3