Function at 0x18002ca80
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
push rbp
push r14
push r15
lea rbp, [rsp - 0x80]
sub rsp, 0x180
movss xmm0, dword [0x1803a36ec]
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov esi, dword [0x1803a3130]
mov qword [rax - 0x28], r12
movaps xmmword [rax - 0x38], xmm6
xorps xmm6, xmm6
ucomiss xmm0, xmm6
mov r12d, 4
jne 0x18002cb2c
call fcn.18001b230
mov rbx, rax
test rax, rax
je 0x18002cb24
mov rax, qword gs:[0x58]
mov rcx, qword [rax + rsi*8]
mov eax, dword [r12 + rcx]
cmp dword [0x1803da408], eax
jle 0x18002cb18
lea rcx, [0x1803da408]
call fcn.1801144a8
cmp dword [0x1803da408], 0xffffffff
jne 0x18002cb18
mov ecx, 0xc566d10
call fcn.180015350
lea rcx, [0x1803da408]
mov qword [0x1803da220], rax
call fcn.18011443c
mov rax, qword [0x1803da220]
movss xmm6, dword [rax + rbx]
movss dword [0x1803a36ec], xmm6
call fcn.18001b230
mov rcx, rax
call fcn.18001ae20
mov rcx, rax
mov rbx, rax
call fcn.1800197d0
xor r15d, r15d
movabs r14, 0x7fffffff0000
cmp eax, 0x40547fde
je 0x18002cb6b
mov rcx, rbx
call fcn.1800197d0
cmp eax, 0x847b9bf0
jne 0x18002cd71
cmp byte [0x1803a3621], r15b
je 0x18002cd71
mov qword [rsp + 0x178], rdi
call fcn.18001b230
mov rdi, rax
test rax, rax
je 0x18002cbf1
mov rcx, qword gs:[0x58]
mov rdx, qword [rcx + rsi*8]
mov ecx, dword [r12 + rdx]
cmp dword [0x1803dae40], ecx
jle 0x18002cbd8
lea rcx, [0x1803dae40]
call fcn.1801144a8
cmp dword [0x1803dae40], 0xffffffff
jne 0x18002cbd8
mov ecx, 0x43f29029
call fcn.180015350
lea rcx, [0x1803dae40]
mov qword [0x1803da938], rax
call fcn.18011443c
mov rax, qword [0x1803da938]
movss xmm0, dword [rax + rdi]
comiss xmm0, dword [0x1801b9548]
jae 0x18002cd69
lea rcx, [rbx + 0xb0]
cmp rcx, 0x40000
jbe 0x18002cd5c
lea rax, [rcx + 8]
cmp rax, r14
jae 0x18002cd5c
mov rdi, qword [rcx]
lea rbx, [rdi + 0x1a0]
cmp rbx, 0x40000
jbe 0x18002cd5c
lea rax, [rbx + 1]
cmp rax, r14
jae 0x18002cd5c
movzx ebx, byte [rbx]
call fcn.18001b230
mov rcx, rax
call fcn.18001a250
movss xmm6, dword [rax]
test bl, bl
je 0x18002cd69
movss xmm0, dword [0x1803a36ec]
addss xmm0, dword [0x1801b9010]
comiss xmm6, xmm0
jbe 0x18002cd69
mov dword [rsp + 0x30], 7
lea r8, str.UseSelf
mov edx, r15d
mov rcx, r15
movzx eax, word [rcx + r8]
inc edx
mov word [rsp + rcx + 0x34], ax
lea rcx, [rcx + 2]
movsxd rax, dword [rsp + 0x30]
cmp edx, eax
jl 0x18002cc80
mov word [rsp + rax*2 + 0x34], r15w
mov rax, qword gs:[0x58]
mov rcx, qword [rax + rsi*8]
mov eax, dword [r12 + rcx]
cmp dword [0x1803da094], eax
jle 0x18002cced
lea rcx, [0x1803da094]
call fcn.1801144a8
cmp dword [0x1803da094], 0xffffffff
jne 0x18002cced
mov ecx, 0x581a2701
call fcn.1800124d0
lea rcx, [0x1803da094]
mov rdx, qword [rax]
mov qword [0x1803da608], rdx
call fcn.18011443c
movups xmm0, xmmword [rsp + 0x20]
lea rdx, [rbp - 0x40]
mov rcx, rdi
movups xmm1, xmmword [rsp + 0x30]
movaps xmmword [rbp - 0x40], xmm0
movups xmm0, xmmword [rsp + 0x40]
movaps xmmword [rbp - 0x30], xmm1
movups xmm1, xmmword [rsp + 0x50]
movaps xmmword [rbp - 0x20], xmm0
movups xmm0, xmmword [rsp + 0x60]
movaps xmmword [rbp - 0x10], xmm1
movups xmm1, xmmword [rsp + 0x70]
movaps xmmword [rbp], xmm0
movups xmm0, xmmword [rbp - 0x80]
movaps xmmword [rbp + 0x10], xmm1
movups xmm1, xmmword [rbp - 0x70]
movaps xmmword [rbp + 0x20], xmm0
movups xmm0, xmmword [rbp - 0x60]
movaps xmmword [rbp + 0x30], xmm1
movsd xmm1, qword [rbp - 0x50]
movaps xmmword [rbp + 0x40], xmm0
movsd qword [rbp + 0x50], xmm1
call qword [0x1803da608]
movss dword [0x1803a36ec], xmm6
jmp 0x18002cd69
call fcn.18001b230
mov rcx, rax
call fcn.18001a250
mov rdi, qword [rsp + 0x178]
cmp byte [0x1803a3630], r15b
je 0x18002ce17
mov ecx, dword [0x1803a3694]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18002cdd7
call fcn.18001b230
lea rcx, [rax + 0x6b8]
cmp rcx, 0x40000
jbe 0x18002ce17
lea rax, [rcx + 8]
cmp rax, r14
jae 0x18002ce17
mov rcx, qword [rcx]
add rcx, 0x84
cmp rcx, 0x40000
jbe 0x18002ce17
lea rax, [rcx + 4]
cmp rax, r14
jae 0x18002ce17
movss xmm0, dword [0x1803a35e8]
movss dword [rcx], xmm0
jmp 0x18002ce17
call fcn.18001b230
lea rcx, [rax + 0x6b8]
cmp rcx, 0x40000
jbe 0x18002ce17
lea rax, [rcx + 8]
cmp rax, r14
jae 0x18002ce17
mov rcx, qword [rcx]
add rcx, 0x84
cmp rcx, 0x40000
jbe 0x18002ce17
lea rax, [rcx + 4]
cmp rax, r14
jae 0x18002ce17
mov dword [rcx], 0x40200000
cmp byte [0x1803a359b], r15b
movss xmm6, dword [0x180278f24]
je 0x18002ce48
mov ecx, dword [0x1803a3674]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18002ce48
call fcn.180016d30
movss xmm6, dword [0x1801b9498]
jmp 0x18002ce4d
call fcn.180016d30
subss xmm6, dword [rax]
mulss xmm6, dword [0x1801b8f38]
addss xmm6, dword [rax]
call fcn.180016d30
movss dword [rax], xmm6
cmp byte [0x1803a3619], r15b
je 0x18002ce8e
call qword [0x1803c4940]
movss xmm1, dword [0x180278f30]
mov rcx, rax
mulss xmm1, dword [0x1801b8e6c]
call qword [0x1803c4948]
cmp byte [0x1803a362b], r15b
je 0x18002cef1
call fcn.18001b230
add rax, 0x6b8
cmp rax, 0x40000
jbe 0x18002cef1
lea rcx, [rax + 8]
cmp rcx, r14
jae 0x18002cef1
mov rcx, qword [rax]
mov rdx, rcx
lea r8, [rcx + 0xc4]
cmp r8, 0x40000
jbe 0x18002ced5
lea rax, [r8 + 4]
cmp rax, r14
jae 0x18002ced5
mov dword [r8], r15d
lea rcx, [rdx + 0xc8]
cmp rcx, 0x40000
jbe 0x18002cef1
lea rax, [rcx + 4]
cmp rax, r14
jae 0x18002cef1
mov dword [rcx], r15d
cmp byte [0x1803a362d], r15b
je 0x18002cf6f
call fcn.18001b230
mov rbx, rax
test rax, rax
jne 0x18002cf13
lea rcx, [rbp + 0xa0]
mov eax, r15d
jmp 0x18002cf6a
mov rax, qword gs:[0x58]
mov rcx, qword [rax + rsi*8]
mov eax, dword [r12 + rcx]
cmp dword [0x1803da690], eax
jle 0x18002cf5e
lea rcx, [0x1803da690]
call fcn.1801144a8
cmp dword [0x1803da690], 0xffffffff
jne 0x18002cf5e
mov ecx, 0x63abe7d3
call fcn.180015350
lea rcx, [0x1803da690]
mov qword [0x1803dada0], rax
call fcn.18011443c
mov rcx, qword [0x1803dada0]
add rcx, rbx
mov eax, dword [rcx]
or eax, 4
mov dword [rcx], eax
cmp byte [0x1803a3604], r15b
mov rbx, qword [rsp + 0x1a8]
je 0x18002cfd5
call fcn.18001b230
test rax, rax
je 0x18002cfd5
mov rax, qword gs:[0x58]
mov rdx, qword [rax + rsi*8]
mov eax, dword [r12 + rdx]
cmp dword [0x1803da690], eax
jle 0x18002cfd5
lea rcx, [0x1803da690]
call fcn.1801144a8
cmp dword [0x1803da690], 0xffffffff
jne 0x18002cfd5
mov ecx, 0x63abe7d3
call fcn.180015350
lea rcx, [0x1803da690]
mov qword [0x1803dada0], rax
call fcn.18011443c
cmp byte [0x1803a3620], r15b
mov r12, qword [rsp + 0x170]
mov rsi, qword [rsp + 0x1b0]
je 0x18002d055
call fcn.18001b230
mov eax, dword [0x1803a3608]
test eax, eax
jne 0x18002d014
movss xmm6, dword [0x180278dcc]
call fcn.180016db0
movss dword [rax], xmm6
mov eax, dword [0x1803a3608]
cmp eax, 1
jne 0x18002d055
movss xmm6, dword [0x1803d9564]
addss xmm6, dword [0x180278ddc]
comiss xmm6, dword [0x1801b94d0]
movss dword [0x1803d9564], xmm6
jbe 0x18002d04c
movss xmm6, dword [0x1801b8f0c]
mov dword [0x1803d9564], 0x3dcccccd
call fcn.180016db0
movss dword [rax], xmm6
cmp byte [0x1803a3646], r15b
movaps xmm6, xmmword [rsp + 0x160]
je 0x18002d0b7
mov ecx, dword [0x1803a3688]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18002d0b7
call fcn.18001b230
add rax, 0x8f8
cmp rax, 0x40000
jbe 0x18002d0b7
lea rcx, [rax + 8]
cmp rcx, r14
jae 0x18002d0b7
mov rcx, qword [rax]
add rcx, 0x38
cmp rcx, 0x40000
jbe 0x18002d0b7
lea rax, [rcx + 0xc]
cmp rax, r14
jae 0x18002d0b7
mov dword [rcx], r15d
mov qword [rcx + 4], 0x3fc00000
add rsp, 0x180
pop r15
pop r14
pop rbp
ret