Function at 0x180031910
Capabilities:
Log keystrokes via polling

Disassembly:
mov r11, rsp
push rbx
sub rsp, 0xc0
mov rax, qword [0x18019d440]
xor rax, rsp
mov qword [rsp + 0x68], rax
movaps xmmword [r11 - 0x18], xmm6
lea rcx, [0x1801de9d0]
movaps xmmword [r11 - 0x28], xmm7
mov rbx, r8
movaps xmmword [r11 - 0x38], xmm8
movaps xmmword [r11 - 0x48], xmm9
movaps xmmword [r11 - 0x58], xmm10
call fcn.180077fb0
lea rdx, [0x18012083e]
call fcn.180029710
mov eax, dword [0x1801df853]
cmp dword [0x1801df85b], eax
mov ecx, dword [0x1801df857]
jg 0x180031adc
cmp ecx, eax
jg 0x180031adc
cmp byte [rbx], 0
lea rcx, [0x1801df7be]
movss xmm10, dword [0x1801df7aa]
lea rax, [0x1801df7ae]
cmove rax, rcx
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x64]
movups xmm8, xmmword [rax]
call fcn.180076e00
movd xmm0, dword [rsp + 0x64]
lea rdx, [rsp + 0x64]
movd xmm7, dword [rsp + 0x60]
lea rcx, [rsp + 0x60]
movss xmm6, dword [0x1801df7aa]
cvtdq2ps xmm7, xmm7
cvtdq2ps xmm0, xmm0
divss xmm7, xmm0
mulss xmm7, xmm10
call fcn.180076e00
movd xmm1, dword [rsp + 0x64]
movd xmm0, dword [rsp + 0x60]
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
mulss xmm1, xmm6
movss xmm6, dword [0x1801df74e]
mulss xmm6, dword [0x180189690]
addss xmm6, dword [0x1801de9d9]
movss xmm9, dword [0x1801de9e5]
lea rcx, str.commonmenu
divss xmm9, dword [0x1801de9ed]
divss xmm1, dword [0x180189720]
addss xmm9, dword [0x180189600]
addss xmm9, dword [0x1801de9d1]
subss xmm9, xmm1
call fcn.180039a40
lea rcx, str.commonmenu
test eax, eax
je 0x180031b94
movss xmm2, dword [0x1801de9e1]
lea rdx, str.common_medal
movaps xmm4, xmm2
mulss xmm7, xmm2
movaps xmm3, xmm2
mulss xmm4, xmm10
movdqa xmm0, xmm8
mulss xmm3, xmm6
psrldq xmm0, 0xc
movdqa xmm1, xmm8
movd dword [rsp + 0x50], xmm0
movdqa xmm0, xmm8
psrldq xmm0, 4
psrldq xmm1, 8
movd dword [rsp + 0x48], xmm1
movd dword [rsp + 0x40], xmm0
xorps xmm0, xmm0
movd dword [rsp + 0x38], xmm8
movss dword [rsp + 0x30], xmm0
movss dword [rsp + 0x28], xmm4
mulss xmm2, xmm9
movss dword [rsp + 0x20], xmm7
call fcn.180039bb0
jmp 0x180031b99
mov edx, dword [0x1801df85b]
mov eax, edx
sub eax, dword [0x1801df853]
cmp ecx, eax
jle 0x180031b9f
cmp ecx, edx
jg 0x180031b9f
cmp byte [rbx], 0
lea rcx, [0x1801df7be]
movss xmm10, dword [0x1801df7aa]
lea rax, [0x1801df7ae]
cmove rax, rcx
lea rdx, [rsp + 0x64]
lea rcx, [rsp + 0x60]
movups xmm8, xmmword [rax]
call fcn.180076e00
movd xmm0, dword [rsp + 0x60]
lea rdx, [rsp + 0x64]
movd xmm7, dword [rsp + 0x64]
lea rcx, [rsp + 0x60]
movss xmm6, dword [0x1801df7aa]
cvtdq2ps xmm7, xmm7
cvtdq2ps xmm0, xmm0
divss xmm7, xmm0
mulss xmm7, xmm10
call fcn.180076e00
movd xmm1, dword [rsp + 0x64]
movd xmm0, dword [rsp + 0x60]
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
mulss xmm1, xmm6
movss xmm6, dword [0x1801df74e]
mulss xmm6, dword [0x180189690]
addss xmm6, dword [0x1801de9dd]
jmp 0x180031a13
call fcn.1800399f0
mov ecx, dword [0x1801df857]
cmp ecx, dword [0x1801df853]
movaps xmm10, xmmword [rsp + 0x70]
movaps xmm9, xmmword [rsp + 0x80]
movaps xmm8, xmmword [rsp + 0x90]
movaps xmm7, xmmword [rsp + 0xa0]
movaps xmm6, xmmword [rsp + 0xb0]
jg 0x180031be7
movss xmm0, dword [0x1801de9d9]
addss xmm0, dword [0x1801df74e]
movss dword [0x1801de9d9], xmm0
cmp dword [0x1801df85b], ecx
jne 0x180031cde
cmp byte [0x1801e46a4], 0
je 0x180031cc9
xor r8d, r8d
mov dword [rsp + 0x60], r8d
nop dword [rax + rax]
mov ecx, r8d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov r8d, dword [rsp + 0x60]
test ax, ax
jns 0x180031c29
cmp r8d, 0x48
jne 0x180031c3f
inc r8d
mov dword [rsp + 0x60], r8d
cmp r8d, 0x100
jl 0x180031c10
jmp 0x180031cc9
mov rax, qword [0x1801df79a]
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
jne 0x180031cb5
nop
cmp dword [rax + 0x20], r8d
je 0x180031cc9
mov rcx, qword [rax + 0x10]
cmp byte [rcx + 0x19], 0
je 0x180031c88
mov rcx, qword [rax + 8]
cmp byte [rcx + 0x19], 0
jne 0x180031c83
nop word [rax + rax]
cmp rax, qword [rcx + 0x10]
jne 0x180031c83
mov rax, rcx
mov rcx, qword [rcx + 8]
cmp byte [rcx + 0x19], 0
je 0x180031c70
mov rax, rcx
jmp 0x180031caf
mov rdx, qword [rcx]
mov rax, rcx
cmp byte [rdx + 0x19], 0
jne 0x180031caf
nop dword [rax]
nop dword [rax + rax]
mov rcx, qword [rdx]
mov rax, rdx
mov rdx, rcx
cmp byte [rcx + 0x19], 0
je 0x180031ca0
cmp byte [rax + 0x19], 0
je 0x180031c50
lea rdx, [rsp + 0x60]
lea rcx, [0x1801df79a]
call fcn.180032f40
mov qword [rax], rbx
cmp byte [0x1801e46a5], 0
je 0x180031cde
cmp byte [rbx], 0
sete al
mov byte [rbx], al
mov al, 1
jmp 0x180031ce0
xor al, al
mov rcx, qword [rsp + 0x68]
xor rcx, rsp
call fcn.1800d0330
add rsp, 0xc0
pop rbx
ret