Function at 0x180004dc0
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r14
push rbp
lea rbp, [rax - 0x18]
sub rsp, 0x110
movaps xmmword [rax - 0x18], xmm6
movaps xmmword [rax - 0x28], xmm7
movaps xmmword [rax - 0x38], xmm8
movaps xmmword [rax - 0x48], xmm9
movaps xmmword [rax - 0x58], xmm10
movaps xmmword [rax - 0x68], xmm12
mov rax, qword [0x180059040]
xor rax, rsp
mov qword [rbp - 0x60], rax
xor r14d, r14d
cmp qword [0x180059ff8], r14
je 0x180005327
mov eax, dword [0x1800590f0]
lea ecx, [r14 + 0x2e]
cmp eax, 1
lea ebx, [r14 + 0x30]
lea r9d, [r14 + 0x2f]
cmove ebx, r9d
lea r10d, [r14 + 6]
cmp eax, 2
cmove ebx, ecx
cmp eax, 3
lea ecx, [r14 + 0x14]
cmove ebx, ecx
cmp eax, 4
cmove ebx, r10d
cmp eax, 5
jne 0x180004ed8
call fcn.18001ca94
mov r8d, eax
mov eax, 0x38e38e39
mul r8d
shr edx, 1
lea ecx, [rdx + rdx*8]
sub r8d, ecx
je 0x180004ed5
sub r8d, 1
je 0x180004ed0
sub r8d, 1
je 0x180004ec9
sub r8d, 1
je 0x180004ec2
sub r8d, 1
je 0x180004ebb
sub r8d, 1
je 0x180004eb4
sub r8d, 1
je 0x180004ead
sub r8d, 1
je 0x180004ea6
cmp r8d, 1
jne 0x180004ed8
lea ebx, [r14 + 0x16]
jmp 0x180004ed8
mov ebx, 2
jmp 0x180004ed8
mov ebx, 0x37
jmp 0x180004ed8
mov ebx, 0x1a
jmp 0x180004ed8
mov ebx, 0x12
jmp 0x180004ed8
mov ebx, 0xf
jmp 0x180004ed8
mov ebx, 0xd
jmp 0x180004ed8
mov ebx, r10d
jmp 0x180004ed8
mov ebx, r9d
mov rcx, qword [0x180059660]
test rcx, rcx
je 0x180005327
call fcn.180016468
test al, al
je 0x180005327
mov rdx, qword [0x180059660]
mov eax, dword [rdx + 0x8c8]
shr eax, 4
test al, 1
je 0x180004f12
cmp byte [0x180059102], r14b
jne 0x180004f2b
mov rcx, qword [0x180059ff8]
mov eax, dword [rcx + 0x598]
test eax, eax
je 0x180004f37
cmp dword [rdx + 0x598], eax
jne 0x180004f37
mov qword [0x180059660], r14
jmp 0x180005327
call fcn.180018954
mov rdi, rax
test rax, rax
je 0x180005327
mov rcx, qword [0x180059ff8]
call fcn.180018954
mov rsi, qword [rax + 0xb0]
test rsi, rsi
je 0x180005327
mov rcx, rdi
call fcn.180013438
mov r8, qword [rax]
test r8, r8
jne 0x180004f79
mov r8d, r14d
jmp 0x180004f7d
mov r8d, dword [r8 + 0x18]
lea rdx, [rsp + 0x40]
mov rcx, rsi
call fcn.1800130e4
cmp byte [0x1800590c2], r14b
je 0x180005327
mov ecx, dword [0x18005910c]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180005327
mov rax, qword [0x180059ff8]
lea rdx, [rbp - 0x70]
mov rcx, qword [rax + 0xb8]
mov rcx, qword [rcx + 0x48]
mov rcx, qword [rcx + 0x1a0]
call fcn.180014134
cmp byte [0x1800590c0], r14b
je 0x180005033
mov rax, qword [0x180059ff8]
lea rdx, [rsp + 0x74]
mov rcx, qword [rax + 0xb8]
mov rcx, qword [rcx + 0x48]
mov rcx, qword [rcx + 0x1a0]
call fcn.180014134
movss xmm0, dword [rsp + 0x48]
lea rcx, [rbp - 0x80]
movss xmm1, dword [rsp + 0x44]
mov r9d, ebx
mov rdx, qword [0x180059660]
movss dword [rsp + 0x30], xmm0
movss xmm0, dword [rsp + 0x40]
movss dword [rsp + 0x28], xmm1
movss dword [rsp + 0x20], xmm0
call fcn.180004a74
jmp 0x18000505d
mov rax, qword [0x180059660]
mov rdx, qword [rax + 0xb8]
lea eax, [rbx*8]
movsxd rcx, eax
mov rax, qword [rdx + 0x48]
lea rdx, [rbp - 0x80]
mov rcx, qword [rax + rcx + 0x20]
call fcn.180014134
movsd xmm0, qword [rax]
mov rbx, qword [0x180059ff8]
mov eax, dword [rax + 8]
mov dword [rsp + 0x48], eax
movsd qword [rsp + 0x40], xmm0
cmp qword [rbx + 0x698], r14
je 0x180005327
lea r8, [rsp + 0x40]
lea rdx, [rbp - 0x70]
lea rcx, [rbp - 0x80]
call fcn.1800049b0
movss xmm6, dword [0x1800543c4]
movss xmm4, dword [0x1800543ec]
movss xmm5, dword [0x18005445c]
movss xmm0, dword [rax]
comiss xmm0, xmm6
jbe 0x1800050bb
subss xmm0, xmm4
jmp 0x1800050c4
comiss xmm5, xmm0
jbe 0x1800050c8
addss xmm0, xmm4
movss dword [rax], xmm0
movss xmm0, dword [rax + 4]
comiss xmm0, xmm6
jbe 0x1800050d8
subss xmm0, xmm4
jmp 0x1800050e1
comiss xmm5, xmm0
jbe 0x1800050e6
addss xmm0, xmm4
movss dword [rax + 4], xmm0
movss xmm12, dword [0x180054450]
lea rcx, [rsp + 0x64]
mov dword [rax + 8], r14d
xorps xmm10, xmm10
movsd xmm0, qword [rax]
lea rax, [rsp + 0x58]
movsd qword [rsp + 0x58], xmm0
movss xmm0, dword [rsp + 0x58]
comiss xmm12, xmm0
mov dword [rsp + 0x60], r14d
mov dword [rsp + 0x68], 0x42b20000
mov dword [rsp + 0x64], 0xc2b20000
mov dword [rsp + 0x70], 0x43340000
mov dword [rsp + 0x6c], 0xc3340000
movss dword [rsp + 0x48], xmm10
cmovbe rcx, rax
lea rax, [rsp + 0x68]
comiss xmm0, dword [0x180054388]
movss xmm0, dword [rsp + 0x5c]
cmovbe rax, rcx
lea rcx, [rsp + 0x6c]
comiss xmm5, xmm0
movss xmm2, dword [rax]
lea rax, [rsp + 0x5c]
movss dword [rsp + 0x58], xmm2
cmovbe rcx, rax
lea rax, [rsp + 0x70]
comiss xmm0, xmm6
movaps xmm0, xmm2
cmovbe rax, rcx
ucomiss xmm2, xmm10
movss xmm1, dword [rax]
unpcklps xmm0, xmm1
movaps xmm7, xmm0
movsd qword [rsp + 0x40], xmm0
jp 0x1800051a9
jne 0x1800051a9
ucomiss xmm1, xmm10
jp 0x1800051a9
je 0x180005327
mov rdx, qword [rbx + 0x698]
movaps xmm8, xmm2
movss xmm3, dword [0x180059104]
movaps xmm9, xmm2
comiss xmm10, xmm3
mov eax, dword [rdx + 0x44]
movsd xmm0, qword [rdx + 0x3c]
movsd qword [rsp + 0x74], xmm0
movaps xmm0, xmm2
jae 0x180005244
movsd xmm0, qword [rdx + 0x3c]
movsd qword [rsp + 0x40], xmm0
subss xmm2, dword [rsp + 0x40]
subss xmm1, dword [rsp + 0x44]
mov dword [rsp + 0x48], eax
comiss xmm2, xmm6
jbe 0x1800051fd
subss xmm2, xmm4
jmp 0x180005206
comiss xmm5, xmm2
jbe 0x180005206
addss xmm2, xmm4
comiss xmm1, xmm6
jbe 0x180005211
subss xmm1, xmm4
jmp 0x18000521a
comiss xmm5, xmm1
jbe 0x18000521a
addss xmm1, xmm4
divss xmm2, xmm3
divss xmm1, xmm3
addss xmm2, dword [rsp + 0x74]
addss xmm1, dword [rsp + 0x78]
movaps xmm7, xmm2
movaps xmm3, xmm2
unpcklps xmm7, xmm1
movaps xmm0, xmm2
movaps xmm8, xmm2
movaps xmm9, xmm2
jmp 0x180005250
movss xmm1, dword [rsp + 0x44]
movss xmm3, dword [rsp + 0x40]
comiss xmm2, xmm6
jbe 0x18000525e
movaps xmm3, xmm0
subss xmm3, xmm4
jmp 0x18000526c
comiss xmm5, xmm8
jbe 0x180005275
movaps xmm3, xmm9
addss xmm3, xmm4
movaps xmm7, xmm3
unpcklps xmm7, xmm1
movaps xmm7, xmm7
comiss xmm1, xmm6
jbe 0x180005284
addss xmm1, dword [0x180054460]
jmp 0x18000528d
comiss xmm5, xmm1
jbe 0x180005296
addss xmm1, xmm4
movaps xmm7, xmm3
unpcklps xmm7, xmm1
movaps xmm7, xmm7
comiss xmm12, xmm3
lea rax, [rsp + 0x40]
mov dword [rsp + 0x54], 0x42b20000
lea rcx, [rsp + 0x50]
mov dword [rsp + 0x50], 0xc2b20000
movsd qword [rsp + 0x40], xmm7
movss xmm0, dword [rsp + 0x44]
cmovbe rcx, rax
movss dword [rsp + 0x48], xmm10
comiss xmm3, dword [0x180054388]
lea rax, [rsp + 0x54]
cmovbe rax, rcx
lea rcx, [rsp + 0x54]
comiss xmm5, xmm0
movss xmm2, dword [rax]
lea rax, [rsp + 0x44]
movss dword [rsp + 0x40], xmm2
cmovbe rcx, rax
mov dword [rsp + 0x50], 0x43340000
comiss xmm0, xmm6
lea rax, [rsp + 0x50]
mov dword [rsp + 0x54], 0xc3340000
movaps xmm0, xmm2
cmovbe rax, rcx
movss xmm1, dword [rax]
unpcklps xmm0, xmm1
movsd qword [rdx + 0x3c], xmm0
movss dword [rdx + 0x44], xmm10
mov rcx, qword [rbp - 0x60]
xor rcx, rsp
call fcn.18004c1f0
lea r11, [rsp + 0x110]
mov rbx, qword [r11 + 0x10]
mov rsi, qword [r11 + 0x18]
mov rdi, qword [r11 + 0x20]
mov r14, qword [r11 + 0x28]
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 xmm12, xmmword [r11 - 0x60]
mov rsp, r11
pop rbp
ret