Function at 0x1800fb270
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x18], r8
push rbx
push rsi
sub rsp, 0xb8
xor bl, bl
mov rsi, rcx
mov byte [rsp + 0xd0], bl
call qword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, eax
mov dword [rsp + 0x2c], eax
mov eax, dword [0x180421b48]
cmp ecx, eax
jae 0x1800fb2a9
add eax, 0xfffffc18
cmp ecx, eax
jae 0x1800fb2af
mov dword [0x180421b48], ecx
mov eax, dword [rsi + 0x60]
dec eax
movsxd rcx, eax
mov qword [rsp + 0x38], rcx
js 0x1800fb722
mov qword [rsp + 0xd8], rbp
mov qword [rsp + 0xb0], rdi
mov qword [rsp + 0xa8], r12
mov ebp, 0xdd
mov qword [rsp + 0xa0], r13
mov qword [rsp + 0x98], r14
mov qword [rsp + 0x90], r15
mov r9d, 0x5b
lea r10d, [rbp - 2]
lea r11d, [rbp - 0x80]
nop word [rax + rax]
mov rax, qword [rsi + 0x50]
mov r8, qword [rax + rcx*8]
mov qword [rsp + 0x78], r8
cmp byte [r8 + 0x20], 0
je 0x1800fb6e4
mov eax, dword [r8 + 0x18]
dec eax
movsxd rdx, eax
mov qword [rsp + 0x30], rdx
js 0x1800fb6e4
lea rcx, [rdx + rdx*2]
shl rcx, 2
mov qword [rsp + 0x40], rcx
nop dword [rax]
mov rax, qword [r8 + 8]
mov ebx, dword [rcx + rax]
mov r15d, dword [rcx + rax + 4]
mov edi, dword [rcx + rax + 8]
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x80], ebx
mov dword [rsp + 0x20], r15d
mov dword [rsp + 0x24], edi
movzx r13d, bx
movzx ecx, bx
bt ebx, 0x10
jb 0x1800fb3d6
lea eax, [r13 - 0x61]
cmp ax, 0x19
ja 0x1800fb38f
lea ecx, [r13 - 0x20]
movdqa xmm0, xmmword [0x180393ad0]
movdqa xmm1, xmmword [0x180393ae0]
mov dword [rsp + 0x68], 0xdb005b
mov dword [rsp + 0x6c], 0xdd005d
xor eax, eax
movdqu xmmword [rsp + 0x48], xmm0
movdqu xmmword [rsp + 0x58], xmm1
nop dword [rax]
cmp cx, word [rsp + rax*2 + 0x48]
jne 0x1800fb3cc
movzx ecx, word [rsp + rax*2 + 0x4a]
add rax, 2
cmp rax, 0x14
jl 0x1800fb3c0
movsx ecx, cx
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [rsp + 0x20]
shr eax, 0xf
test al, 1
je 0x1800fb3fe
mov eax, ecx
mov byte [rsp + 0xe8], 1
xor eax, dword [0x1804235cc]
test al, 7
je 0x1800fb406
mov byte [rsp + 0xe8], 0
mov r14d, dword [rsi + 0x78]
xor r12d, r12d
xor r15b, r15b
dec r14d
js 0x1800fb488
movsxd rbp, r14d
nop dword [rax + rax]
mov rax, qword [rsi + 0x68]
mov rdi, qword [rax + rbp*8]
cmp ecx, dword [rdi + 4]
jne 0x1800fb47c
mov eax, dword [rdi + 8]
mov ecx, dword [rsp + 0x24]
cmp ecx, eax
je 0x1800fb440
test ecx, ecx
je 0x1800fb440
test eax, eax
jne 0x1800fb478
mov eax, dword [rdi]
cmp ebx, eax
je 0x1800fb4cb
cmp ebx, 0x100
jge 0x1800fb478
cmp eax, 0x100
jge 0x1800fb478
movzx ecx, r13w
call fcn.1800a14dc
movzx ecx, word [rdi]
movzx ebx, ax
call fcn.1800a14dc
movzx eax, ax
cmp ebx, eax
je 0x1800fb4cb
mov ebx, dword [rsp + 0x28]
mov ecx, dword [rsp + 0x20]
dec r14d
dec rbp
jns 0x1800fb420
mov edi, dword [rsp + 0x24]
movzx ebx, byte [rsp + 0xd0]
movzx r13d, byte [rsp + 0xe8]
cmp r13b, r15b
je 0x1800fb6a3
xor r14d, r14d
mov ebp, r14d
test r13b, r13b
je 0x1800fb57b
lea ecx, [r14 + 0x10]
call fcn.1800a103c
mov rbx, rax
test rax, rax
je 0x1800fb4e2
mov qword [rax], r14
mov dword [rax + 8], r14d
jmp 0x1800fb4e5
mov edi, dword [rsp + 0x24]
mov r15b, 1
mov r12d, r14d
movzx ebx, r15b
mov byte [rsp + 0xd0], bl
jmp 0x1800fb490
mov rbx, r14
mov r14d, dword [rsp + 0x28]
mov r15d, dword [rsp + 0x20]
mov eax, dword [rsp + 0x2c]
mov dword [rbx], r14d
mov dword [rbx + 4], r15d
mov dword [rbx + 8], edi
mov dword [rbx + 0xc], eax
mov ecx, dword [rsi + 0x78]
mov r8d, dword [rsi + 0x70]
inc ecx
cmp ecx, r8d
jle 0x1800fb564
mov eax, ecx
lea edi, [rcx + 8]
cdq
sub eax, edx
sar eax, 1
add edi, eax
and edi, 0xfffffff8
cmp r8d, edi
je 0x1800fb564
mov rcx, qword [rsi + 0x68]
test edi, edi
jle 0x1800fb558
movsxd rdx, edi
test rcx, rcx
jne 0x1800fb545
lea rcx, [rdx*8]
call fcn.1800a0a4c
mov qword [rsi + 0x68], rax
jmp 0x1800fb561
lea rdx, [rdx*8]
call fcn.1800a0f0c
mov qword [rsi + 0x68], rax
jmp 0x1800fb561
call fcn.1800a09c8
mov qword [rsi + 0x68], rbp
mov dword [rsi + 0x70], edi
movsxd rcx, dword [rsi + 0x78]
lea eax, [rcx + 1]
mov dword [rsi + 0x78], eax
mov rax, qword [rsi + 0x68]
mov qword [rax + rcx*8], rbx
jmp 0x1800fb646
movsxd rax, r12d
lea rdx, [rax*8]
mov rax, qword [rsi + 0x68]
mov rcx, qword [rdx + rax]
mov eax, dword [rcx + 0xc]
mov ecx, dword [rsp + 0x2c]
cmp ecx, eax
jbe 0x1800fb59d
mov ebp, ecx
sub ebp, eax
mov rbx, r14
cmp r12d, dword [rsi + 0x78]
jae 0x1800fb5df
mov rdi, qword [rsi + 0x68]
add rdi, rdx
mov rax, qword [rdi]
test rax, rax
je 0x1800fb5bf
xor ecx, ecx
mov rbx, rax
call fcn.1800a0ca0
dec dword [rsi + 0x78]
mov eax, dword [rsi + 0x78]
sub eax, r12d
test eax, eax
jle 0x1800fb5df
movsxd r8, eax
lea rdx, [rdi + 8]
mov rcx, rdi
shl r8, 3
call fcn.1800a0460
movsxd rdi, dword [rsi + 0x78]
mov ecx, dword [rsi + 0x70]
lea eax, [rdi + rdi]
cmp eax, ecx
jge 0x1800fb634
cmp edi, ecx
jge 0x1800fb634
cmp ecx, edi
je 0x1800fb634
mov rcx, qword [rsi + 0x68]
test edi, edi
jle 0x1800fb628
test rcx, rcx
jne 0x1800fb615
lea rcx, [rdi*8]
call fcn.1800a0a4c
mov qword [rsi + 0x68], rax
jmp 0x1800fb631
lea rdx, [rdi*8]
call fcn.1800a0f0c
mov qword [rsi + 0x68], rax
jmp 0x1800fb631
call fcn.1800a09c8
mov qword [rsi + 0x68], r14
mov dword [rsi + 0x70], edi
mov rcx, rbx
call fcn.1800a0ca0
mov r14d, dword [rsp + 0x28]
mov r15d, dword [rsp + 0x20]
mov rax, qword [rsp + 0x78]
mov rcx, qword [rsi + 0x48]
lea rdx, [rsp + 0x48]
mov eax, dword [rax]
xor r8d, r8d
mov dword [rsp + 0x4c], 0
mov dword [rsp + 0x48], eax
mov eax, dword [rsp + 0x24]
mov dword [rsp + 0x50], 1
mov dword [rsp + 0x68], eax
mov rax, qword [rsp + 0xe0]
mov byte [rsp + 0x6c], r13b
mov dword [rsp + 0x60], r14d
mov dword [rsp + 0x64], r15d
mov dword [rsp + 0x70], ebp
mov qword [rsp + 0x58], rax
call fcn.1800fd650
mov bl, 1
mov byte [rsp + 0xd0], bl
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x40]
mov r8, qword [rsp + 0x78]
dec rdx
sub rcx, 0xc
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x40], rcx
test rdx, rdx
jns 0x1800fb350
mov rcx, qword [rsp + 0x38]
mov ebp, 0xdd
mov r9d, 0x5b
lea r10d, [rbp - 2]
lea r11d, [rbp - 0x80]
dec rcx
mov qword [rsp + 0x38], rcx
jns 0x1800fb310
mov r15, qword [rsp + 0x90]
mov r14, qword [rsp + 0x98]
mov r13, qword [rsp + 0xa0]
mov r12, qword [rsp + 0xa8]
mov rdi, qword [rsp + 0xb0]
mov rbp, qword [rsp + 0xd8]
movzx eax, bl
add rsp, 0xb8
pop rsi
pop rbx
ret