Function at 0x180048da0
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rcx
push rdi
sub rsp, 0xb0
mov rax, qword [0x180090da8]
mov rcx, qword [rax + 0x10]
mov rax, qword [0x180090c90]
mov rdi, qword [rcx]
cmp byte [rax + 0x127], 0
je 0x180048de0
test rdi, rdi
je 0x180048de0
mov rax, qword [rdi + 8]
test rax, rax
je 0x180048de0
mov byte [rax + 0x189], 1
mov rax, qword [0x180090c90]
mov qword [rsp + 0xc8], rbx
lea rbx, [rdi + 8]
cmp byte [rax + 0x12c], 0
je 0x180048e2b
test rdi, rdi
je 0x180048e61
mov rdx, qword [rbx]
test rdx, rdx
je 0x180048e61
mov rcx, qword [0x180090d98]
mov rax, qword [rcx + 0x38]
mov r8, qword [rdx + rax]
test r8, r8
je 0x180048e68
mov rax, qword [rcx + 8]
mov dword [r8 + rax], 0x41700000
jmp 0x180048e61
test rdi, rdi
je 0x180048e61
mov r8, qword [rdi + 8]
test r8, r8
je 0x180048e61
mov rcx, qword [0x180090d98]
lea rbx, [rdi + 8]
mov rax, qword [rcx + 0x38]
mov r9, qword [r8 + rax]
test r9, r9
je 0x180048e68
mov rax, qword [rcx + 8]
lea rbx, [rdi + 8]
mov dword [r9 + rax], 0x3f800000
mov rcx, qword [0x180090d98]
mov rax, qword [0x180090c90]
cmp byte [rax + 0x129], 0
je 0x180048ea5
test rdi, rdi
je 0x180048ea5
mov rdx, qword [rbx]
test rdx, rdx
je 0x180048ea5
mov rax, qword [rcx + 0x38]
mov r8, qword [rdx + rax]
test r8, r8
je 0x180048ea5
mov rax, qword [rcx + 0x30]
mov dword [r8 + rax], 0x2c000
mov rcx, qword [0x180090d98]
mov rax, qword [0x180090c90]
cmp byte [rax + 0x126], 0
je 0x180048ee2
test rdi, rdi
je 0x180048ee2
mov rdx, qword [rbx]
test rdx, rdx
je 0x180048ee2
mov rax, qword [rcx + 0x38]
mov r8, qword [rdx + rax]
test r8, r8
je 0x180048ee2
mov rax, qword [rcx + 0x30]
mov dword [r8 + rax], 0x16000
mov rcx, qword [0x180090d98]
mov rax, qword [0x180090c90]
cmp byte [rax + 0x17c], 0
je 0x180048f1f
test rdi, rdi
je 0x180048f1f
mov rdx, qword [rbx]
test rdx, rdx
je 0x180048f1f
mov rax, qword [rcx + 0x38]
mov r8, qword [rdx + rax]
test r8, r8
je 0x180048f1f
mov rax, qword [rcx + 0x30]
mov dword [r8 + rax], 0x5800
mov rcx, qword [0x180090d98]
mov rax, qword [0x180090c90]
cmp byte [rax + 0x17d], 0
je 0x180048f5c
test rdi, rdi
je 0x180048f5c
mov rdx, qword [rbx]
test rdx, rdx
je 0x180048f5c
mov rax, qword [rcx + 0x38]
mov r8, qword [rdx + rax]
test r8, r8
je 0x180048f5c
mov rax, qword [rcx + 0x30]
mov dword [r8 + rax], 0xb000
mov rcx, qword [0x180090d98]
mov rax, qword [0x180090c90]
cmp byte [rax + 0x125], 0
je 0x180048f92
test rdi, rdi
je 0x180048f92
mov rdx, qword [rbx]
test rdx, rdx
je 0x180048f92
mov rax, qword [rcx + 0x38]
mov r8, qword [rdx + rax]
test r8, r8
je 0x180048f92
mov rax, qword [rcx + 0x30]
mov dword [r8 + rax], 2
mov rax, qword [0x180090c90]
cmp byte [rax + 0x128], 0
je 0x180048fe4
test rdi, rdi
je 0x180049024
mov rax, qword [rbx]
test rax, rax
je 0x180049024
mov rax, qword [rax + 0x30]
test rax, rax
je 0x180049024
mov rax, qword [rax + 0x10]
test rax, rax
je 0x180049024
mov rcx, qword [rax + 0x20]
test rcx, rcx
je 0x180049024
mov rax, qword [rcx + 0x70]
test rax, rax
je 0x180049024
mov rax, qword [rax]
test rax, rax
je 0x180049024
mov dword [rax + 0x2c], 0xbf800000
jmp 0x180049024
test rdi, rdi
je 0x180049024
mov rax, qword [rbx]
test rax, rax
je 0x180049024
mov rax, qword [rax + 0x30]
test rax, rax
je 0x180049024
mov rax, qword [rax + 0x10]
test rax, rax
je 0x180049024
mov rcx, qword [rax + 0x20]
test rcx, rcx
je 0x180049024
mov rax, qword [rcx + 0x70]
test rax, rax
je 0x180049024
mov rax, qword [rax]
test rax, rax
je 0x180049024
mov dword [rax + 0x2c], 0x3e800000
mov rax, qword [0x180090c90]
cmp byte [rax + 0x124], 0
je 0x180049082
mov rax, qword [0x180090da8]
mov rax, qword [rax + 0x30]
test rax, rax
je 0x180049049
mov rax, qword [rax]
jmp 0x180049051
mov rax, qword [rsp + 0xc0]
test rax, rax
je 0x180049082
test rdi, rdi
je 0x180049082
mov rcx, qword [rbx]
test rcx, rcx
je 0x180049082
mov rcx, qword [rcx + 0x30]
test rcx, rcx
je 0x180049082
movsd xmm0, qword [rax + 0x3d0]
movsd qword [rcx + 0x30], xmm0
mov eax, dword [rax + 0x3d8]
mov dword [rcx + 0x38], eax
mov rax, qword [0x180090c90]
mov qword [rsp + 0xd8], rsi
cmp byte [rax + 0x12a], 0
je 0x1800490d6
cmp byte [0x180090bf1], 0
jne 0x1800490d6
mov rcx, qword [0x180090da8]
mov rax, qword [rcx + 0x10]
mov rsi, qword [rcx + 0x88]
mov rdx, qword [rax]
mov rax, qword [rcx + 0x60]
test rdx, rdx
jne 0x1800490c5
xor ecx, ecx
jmp 0x1800490c9
mov rcx, qword [rdx + 8]
call rax
mov ecx, eax
call rsi
mov byte [0x180090bf1], 1
mov rax, qword [0x180090c90]
cmp byte [rax + 0x12b], 0
je 0x180049471
mov ecx, dword [rax + 0x120]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x18004910c
cmp byte [0x180090bf2], 0
sete al
mov byte [0x180090bf2], al
jmp 0x180049113
movzx eax, byte [0x180090bf2]
test al, al
je 0x18004948a
mov rax, qword [0x180090da8]
mov rcx, qword [rax + 0x30]
test rcx, rcx
je 0x180049130
mov r8, qword [rcx]
jmp 0x180049138
mov r8, qword [rsp + 0xc0]
test r8, r8
je 0x180049471
mov qword [rsp + 0xd0], rbp
movaps xmmword [rsp + 0xa0], xmm6
xorps xmm6, xmm6
movaps xmmword [rsp + 0x60], xmm10
movaps xmmword [rsp + 0x50], xmm11
movaps xmmword [rsp + 0x40], xmm12
movaps xmmword [rsp + 0x90], xmm7
movaps xmmword [rsp + 0x80], xmm8
movaps xmmword [rsp + 0x70], xmm9
test rdi, rdi
je 0x180049245
mov rax, qword [rbx]
test rax, rax
je 0x18004919e
mov rcx, qword [rax + 0x30]
xorps xmm0, xmm0
test rcx, rcx
je 0x18004919e
movups xmmword [rcx + 0x30], xmm0
mov rcx, qword [rbx]
test rcx, rcx
je 0x1800491c3
mov rdx, qword [0x180090d98]
mov rax, qword [rdx + 0x38]
mov rcx, qword [rcx + rax]
mov rax, qword [rdx + 0x10]
mov qword [rcx + rax], 2
jmp 0x1800491da
mov rax, qword [0x180090d98]
mov rcx, qword [rax + 0x10]
mov qword [rcx], 2
test rdi, rdi
je 0x180049257
mov rcx, qword [rbx]
test rcx, rcx
je 0x1800491e9
mov byte [rcx + 0x2c], 0x25
mov rcx, qword [rbx]
mov qword [rsp + 0x20], 0
mov dword [rsp + 0x28], 0
test rcx, rcx
je 0x180049217
movsd xmm0, qword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
movsd qword [rcx + 0x320], xmm0
mov dword [rcx + 0x328], eax
test rdi, rdi
je 0x180049257
mov rax, qword [rbx]
test rax, rax
je 0x180049257
movsd xmm7, qword [rax + 0x90]
mov esi, dword [rax + 0x98]
movaps xmm9, xmm7
shufps xmm9, xmm9, 0x55
movaps xmm8, xmm7
movd xmm6, esi
jmp 0x18004926a
mov rax, qword [0x180090d98]
mov rcx, qword [rax + 0x10]
mov qword [rcx], 2
xorps xmm9, xmm9
movd esi, xmm6
xorps xmm7, xmm7
xorps xmm8, xmm8
unpcklps xmm7, xmm9
movsd xmm0, qword [r8 + 0x3d0]
mov ecx, 0x10
mov eax, dword [r8 + 0x3d8]
movsd qword [rsp + 0x30], xmm0
movsd qword [rsp + 0x20], xmm7
mov dword [rsp + 0x38], eax
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1800492a4
movss xmm0, dword [0x1800859c8]
jmp 0x1800492ac
movss xmm0, dword [0x180085940]
mov ecx, 0x57
movss dword [0x180090038], xmm0
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
movss xmm11, dword [rsp + 0x38]
movss xmm12, dword [rsp + 0x34]
movss xmm10, dword [rsp + 0x30]
jae 0x18004931e
movss xmm2, dword [0x180090038]
movaps xmm1, xmm12
mulss xmm1, xmm2
movaps xmm0, xmm2
mulss xmm0, xmm10
addss xmm9, xmm1
addss xmm8, xmm0
movaps xmm0, xmm11
mulss xmm0, xmm2
addss xmm6, xmm0
movaps xmm1, xmm8
unpcklps xmm1, xmm9
movaps xmm7, xmm1
movsd qword [rsp + 0x20], xmm1
movd esi, xmm6
mov ecx, 0x53
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18004936e
movss xmm1, dword [0x180090038]
movaps xmm0, xmm1
mulss xmm12, xmm1
mulss xmm0, xmm10
mulss xmm11, xmm1
subss xmm9, xmm12
subss xmm8, xmm0
subss xmm6, xmm11
movaps xmm0, xmm8
unpcklps xmm0, xmm9
movaps xmm7, xmm0
movsd qword [rsp + 0x20], xmm0
movd esi, xmm6
mov ecx, 0x44
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
movaps xmm12, xmmword [rsp + 0x40]
movaps xmm11, xmmword [rsp + 0x50]
movaps xmm9, xmmword [rsp + 0x70]
jae 0x1800493b4
movsd xmm0, qword [rsp + 0x20]
subss xmm10, dword [0x180090038]
addss xmm8, xmm10
movss xmm0, xmm8
movsd qword [rsp + 0x20], xmm0
movaps xmm7, xmm0
mov ecx, 0x41
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
movaps xmm10, xmmword [rsp + 0x60]
jae 0x1800493e0
subss xmm8, dword [0x180090038]
movsd xmm7, qword [rsp + 0x20]
movss xmm7, xmm8
mov ecx, 0x20
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
movaps xmm8, xmmword [rsp + 0x80]
jae 0x180049407
addss xmm6, dword [0x180090038]
movd esi, xmm6
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
mov rbp, qword [rsp + 0xd0]
jae 0x18004942d
subss xmm6, dword [0x180090038]
movd esi, xmm6
movaps xmm6, xmmword [rsp + 0xa0]
test rdi, rdi
je 0x180049469
mov rax, qword [rbx]
test rax, rax
je 0x180049469
movsd qword [rax + 0x90], xmm7
mov dword [rax + 0x98], esi
mov rax, qword [rbx]
test rax, rax
je 0x180049469
mov rcx, qword [rax + 0x30]
test rcx, rcx
je 0x180049469
movsd qword [rcx + 0x50], xmm7
mov dword [rcx + 0x58], esi
movaps xmm7, xmmword [rsp + 0x90]
mov rsi, qword [rsp + 0xd8]
mov rbx, qword [rsp + 0xc8]
add rsp, 0xb0
pop rdi
ret
mov rdx, qword [0x180090d98]
test rdi, rdi
je 0x1800494b4
mov rcx, qword [rbx]
test rcx, rcx
je 0x1800494b4
mov rax, qword [rdx + 0x38]
mov rcx, qword [rcx + rax]
mov rax, qword [rdx + 0x10]
mov qword [rcx + rax], 0
jmp 0x180049471
mov rax, qword [rdx + 0x10]
xor ecx, ecx
mov qword [rcx + rax], rcx
jmp 0x180049471