Function at 0x1800513c0
Capabilities:
Log keystrokes via polling

Disassembly:
mov r11, rsp
mov qword [r11 + 0x10], rbx
mov qword [r11 + 0x20], rsi
push rdi
sub rsp, 0xc0
mov rax, qword [0x18010d3c0]
xor rax, rsp
mov qword [rsp + 0x68], rax
movaps xmmword [r11 - 0x18], xmm6
mov rdi, r8
movaps xmmword [r11 - 0x28], xmm7
mov rbx, rcx
movaps xmmword [r11 - 0x38], xmm8
movaps xmmword [r11 - 0x48], xmm9
movaps xmmword [r11 - 0x58], xmm10
call fcn.180050d70
mov edx, dword [rbx + 0x1b7]
mov r8d, dword [rbx + 0x1af]
mov ecx, dword [rbx + 0x1b3]
cmp edx, r8d
jg 0x180051578
cmp ecx, r8d
jg 0x180051578
cmp byte [rdi], 0
lea rdx, [rsp + 0x60]
movss xmm10, dword [rbx + 0x116]
mov ecx, 0x12a
mov eax, 0x11a
cmove eax, ecx
lea rcx, [rsp + 0x64]
movups xmm7, xmmword [rax + rbx]
call fcn.18004f1b0
movd xmm0, dword [rsp + 0x64]
lea rdx, [rsp + 0x64]
movd xmm9, dword [rsp + 0x60]
lea rcx, [rsp + 0x60]
movss xmm6, dword [rbx + 0x116]
cvtdq2ps xmm9, xmm9
cvtdq2ps xmm0, xmm0
divss xmm9, xmm0
mulss xmm9, xmm10
call fcn.18004f1b0
movd xmm1, dword [rsp + 0x64]
lea rcx, str.commonmenu
movd xmm0, dword [rsp + 0x60]
movss xmm8, dword [rbx + 0x15]
divss xmm8, dword [rbx + 0x1d]
cvtdq2ps xmm1, xmm1
addss xmm8, dword [0x1800fff80]
cvtdq2ps xmm0, xmm0
addss xmm8, dword [rbx + 1]
divss xmm1, xmm0
mulss xmm1, xmm6
movss xmm6, dword [rbx + 0xba]
mulss xmm6, dword [0x1800fffd8]
divss xmm1, dword [0x180100058]
addss xmm6, dword [rbx + 9]
subss xmm8, xmm1
call fcn.18001c360
lea rcx, str.commonmenu
test eax, eax
je 0x1800516d3
movss xmm2, dword [rbx + 0x11]
lea rdx, str.common_medal
movaps xmm5, xmm2
movaps xmm4, xmm2
movaps xmm3, xmm2
mulss xmm5, xmm10
movdqa xmm0, xmm7
mulss xmm4, xmm9
psrldq xmm0, 0xc
movdqa xmm1, xmm7
movd dword [rsp + 0x50], xmm0
movdqa xmm0, xmm7
psrldq xmm0, 4
psrldq xmm1, 8
movd dword [rsp + 0x48], xmm1
movd dword [rsp + 0x40], xmm0
xorps xmm0, xmm0
movd dword [rsp + 0x38], xmm7
movss dword [rsp + 0x30], xmm0
movss dword [rsp + 0x28], xmm5
mulss xmm3, xmm6
mulss xmm2, xmm8
movss dword [rsp + 0x20], xmm4
call fcn.18001c3a0
jmp 0x1800516d8
mov eax, edx
sub eax, r8d
cmp ecx, eax
jle 0x1800516d8
cmp ecx, edx
jg 0x1800516d8
cmp byte [rdi], 0
lea rax, [rbx + 0x11a]
jne 0x1800515a0
lea rax, [rbx + 0x12a]
movups xmm9, xmmword [rax]
lea rdx, [rsp + 0x64]
movss xmm10, dword [rbx + 0x116]
lea rcx, [rsp + 0x60]
call fcn.18004f1b0
movd xmm0, dword [rsp + 0x60]
lea rdx, [rsp + 0x64]
movd xmm7, dword [rsp + 0x64]
lea rcx, [rsp + 0x60]
movss xmm6, dword [rbx + 0x116]
cvtdq2ps xmm7, xmm7
cvtdq2ps xmm0, xmm0
divss xmm7, xmm0
mulss xmm7, xmm10
call fcn.18004f1b0
movd xmm1, dword [rsp + 0x64]
lea rcx, str.commonmenu
movd xmm0, dword [rsp + 0x60]
movss xmm8, dword [rbx + 0x15]
divss xmm8, dword [rbx + 0x1d]
cvtdq2ps xmm1, xmm1
addss xmm8, dword [0x1800fff80]
cvtdq2ps xmm0, xmm0
addss xmm8, dword [rbx + 1]
divss xmm1, xmm0
mulss xmm1, xmm6
movss xmm6, dword [rbx + 0xba]
mulss xmm6, dword [0x1800fffd8]
divss xmm1, dword [0x180100058]
addss xmm6, dword [rbx + 0xd]
subss xmm8, xmm1
call fcn.18001c360
lea rcx, str.commonmenu
test eax, eax
je 0x1800516d3
movss xmm2, dword [rbx + 0x11]
lea rdx, str.common_medal
movaps xmm4, xmm2
mulss xmm7, xmm2
movaps xmm3, xmm2
mulss xmm4, xmm10
movdqa xmm0, xmm9
mulss xmm3, xmm6
psrldq xmm0, 0xc
movdqa xmm1, xmm9
movd dword [rsp + 0x50], xmm0
movdqa xmm0, xmm9
psrldq xmm0, 4
psrldq xmm1, 8
movd dword [rsp + 0x48], xmm1
movd dword [rsp + 0x40], xmm0
xorps xmm0, xmm0
movd dword [rsp + 0x38], xmm9
movss dword [rsp + 0x30], xmm0
movss dword [rsp + 0x28], xmm4
mulss xmm2, xmm8
movss dword [rsp + 0x20], xmm7
call fcn.18001c3a0
jmp 0x1800516d8
call fcn.18001c310
mov eax, dword [rbx + 0x1b3]
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]
cmp eax, dword [rbx + 0x1af]
jg 0x180051720
movss xmm0, dword [rbx + 0xba]
addss xmm0, dword [rbx + 9]
movss dword [rbx + 9], xmm0
cmp dword [rbx + 0x1b7], eax
jne 0x18005180e
cmp byte [rbx + 0x4ffc], 0
je 0x1800517f9
xor r9d, r9d
mov dword [rsp + 0x60], r9d
mov ecx, r9d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov r9d, dword [rsp + 0x60]
test ax, ax
jns 0x18005175a
cmp r9d, 0x48
jne 0x180051770
inc r9d
mov dword [rsp + 0x60], r9d
cmp r9d, 0x100
jl 0x180051741
jmp 0x1800517f9
mov rax, qword [rbx + 0x106]
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
jne 0x1800517e5
cmp dword [rax + 0x20], r9d
je 0x1800517f9
mov rcx, qword [rax + 0x10]
cmp byte [rcx + 0x19], 0
je 0x1800517b8
mov rcx, qword [rax + 8]
cmp byte [rcx + 0x19], 0
jne 0x1800517b3
nop word [rax + rax]
cmp rax, qword [rcx + 0x10]
jne 0x1800517b3
mov rax, rcx
mov rcx, qword [rcx + 8]
cmp byte [rcx + 0x19], 0
je 0x1800517a0
mov rax, rcx
jmp 0x1800517df
mov r8, qword [rcx]
mov rax, rcx
cmp byte [r8 + 0x19], 0
jne 0x1800517df
nop word [rax + rax]
mov rdx, qword [r8]
mov rax, r8
mov r8, rdx
cmp byte [rdx + 0x19], 0
je 0x1800517d0
cmp byte [rax + 0x19], 0
je 0x180051780
lea rdx, [rsp + 0x60]
lea rcx, [rbx + 0x106]
call fcn.180054980
mov qword [rax], rdi
cmp byte [rbx + 0x4ffd], 0
je 0x18005180e
cmp byte [rdi], 0
sete al
mov byte [rdi], al
mov al, 1
jmp 0x180051810
xor al, al
mov rcx, qword [rsp + 0x68]
xor rcx, rsp
call fcn.180059b80
lea r11, [rsp + 0xc0]
mov rbx, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x28]
mov rsp, r11
pop rdi
ret