Function at 0x180049c30
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
push rdi
lea rbp, [rsp - 0x4f]
sub rsp, 0xf8
movaps xmmword [rsp + 0xa0], xmm10
mov rax, qword [0x180090010]
xor rax, rsp
mov qword [rbp - 0x49], rax
mov rax, qword [0x180090d60]
mov rdx, qword [0x180090c78]
mov rcx, qword [rax + 0x10]
cmp byte [rdx + 0x168], 0
mov rdi, qword [rcx]
je 0x180049cd0
test rdi, rdi
je 0x180049cd0
mov r8, qword [rdi + 8]
test r8, r8
je 0x180049cd0
mov rax, qword [0x180090d50]
mov rcx, qword [rax + 0x68]
mov rax, qword [r8 + rcx]
test rax, rax
je 0x180049cd0
mov rax, qword [rax + 0x30]
test rax, rax
je 0x180049cd0
mov rax, qword [rax + 0x10]
test rax, rax
je 0x180049cd0
mov rcx, qword [rax + 0x20]
test rcx, rcx
je 0x180049cd0
mov rax, qword [rcx + 0x70]
test rax, rax
je 0x180049cd0
mov rax, qword [rax]
test rax, rax
je 0x180049cd0
mov dword [rax + 0x2c], 0xbf800000
mov rdx, qword [0x180090c78]
cmp byte [rdx + 0x170], 0
mov qword [rsp + 0x110], rbx
mov qword [rsp + 0x118], rsi
movaps xmmword [rsp + 0xe0], xmm6
movaps xmmword [rsp + 0xd0], xmm7
movaps xmmword [rsp + 0xc0], xmm8
je 0x180049e08
call fcn.180049980
mov rsi, rax
test rax, rax
je 0x180049e01
mov rcx, qword [0x180090c78]
mov ecx, dword [rcx + 0x164]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180049e01
mov rdx, qword [0x180090d60]
mov rax, qword [rdx + 0x30]
test rax, rax
je 0x180049d48
mov rcx, qword [rax]
jmp 0x180049d4c
mov rcx, qword [rbp - 0x59]
movsd xmm0, qword [rcx + 0x3d0]
movsd xmm2, qword [rcx + 0x60]
movaps xmm6, xmm0
movss xmm1, dword [0x180085bc4]
movaps xmm7, xmm0
movss xmm8, dword [rcx + 0x3d8]
mov rax, qword [rdx + 0x60]
mov rbx, qword [rdx + 0x50]
movsd qword [rbp - 0x69], xmm0
movaps xmm0, xmm2
shufps xmm6, xmm6, 0x55
mulss xmm6, xmm1
mulss xmm7, xmm1
mulss xmm8, xmm1
shufps xmm0, xmm0, 0x55
addss xmm7, xmm2
addss xmm6, xmm0
movsd qword [rbp - 0x69], xmm2
addss xmm8, dword [rcx + 0x68]
mov rcx, rsi
movss dword [rbp - 0x59], xmm7
movss dword [rbp - 0x55], xmm6
movss dword [rbp - 0x51], xmm8
call rax
mov ecx, eax
call rbx
mov rax, qword [rsi + 0x30]
xorps xmm0, xmm0
test rax, rax
je 0x180049dd1
movups xmmword [rax + 0x30], xmm0
mov rcx, qword [rsi + 0x30]
movaps xmm0, xmm7
unpcklps xmm0, xmm6
movsd qword [rsi + 0x90], xmm0
movss dword [rsi + 0x98], xmm8
test rcx, rcx
je 0x180049e01
movsd xmm0, qword [rbp - 0x59]
mov eax, dword [rbp - 0x51]
movsd qword [rcx + 0x50], xmm0
mov dword [rcx + 0x58], eax
mov rdx, qword [0x180090c78]
cmp byte [rdx + 0x169], 0
je 0x180049e57
test rdi, rdi
je 0x180049e57
mov rcx, qword [rdi + 8]
test rcx, rcx
je 0x180049e57
mov r8, qword [0x180090d50]
mov rax, qword [r8 + 0x68]
mov rcx, qword [rcx + rax]
test rcx, rcx
je 0x180049e57
mov rax, qword [r8 + 0x20]
mov rcx, qword [rcx + rax]
test rcx, rcx
je 0x180049e57
movd xmm0, dword [rdx + 0x174]
cvtdq2ps xmm0, xmm0
movss dword [rcx + 0x4c], xmm0
mov rdx, qword [0x180090c78]
cmp byte [rdx + 0x16a], 0
je 0x180049e9c
test rdi, rdi
je 0x180049e9c
mov r8, qword [rdi + 8]
test r8, r8
je 0x180049e9c
mov rax, qword [0x180090d50]
mov rcx, qword [rax + 0x68]
mov rax, qword [r8 + rcx]
test rax, rax
je 0x180049e9c
movd xmm0, dword [rdx + 0x174]
cvtdq2ps xmm0, xmm0
movss dword [rax + 0xc3c], xmm0
mov rdx, qword [0x180090c78]
cmp byte [rdx + 0x171], 0
xorps xmm10, xmm10
je 0x18004a1fa
mov ecx, dword [rdx + 0x120]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x180049ecf
cmp byte [0x180090bd3], 0
sete al
mov byte [0x180090bd3], al
jmp 0x180049ed6
movzx eax, byte [0x180090bd3]
mov qword [rsp + 0x120], r14
test al, al
je 0x18004a1ae
mov rax, qword [0x180090d60]
mov rdx, qword [rax + 0x30]
test rdx, rdx
je 0x180049efb
mov rdx, qword [rdx]
jmp 0x180049eff
mov rdx, qword [rbp - 0x59]
test rdx, rdx
je 0x18004a1eb
mov rcx, qword [0x180090d50]
lea rsi, [rdi + 8]
mov qword [rsp + 0xf0], r15
movaps xmmword [rsp + 0xb0], xmm9
movaps xmmword [rsp + 0x90], xmm11
movaps xmmword [rsp + 0x80], xmm12
movaps xmmword [rsp + 0x70], xmm13
test rdi, rdi
je 0x180049fdc
mov r8, qword [rsi]
test r8, r8
je 0x180049f6e
mov rax, qword [rcx + 0x68]
mov r9, qword [r8 + rax]
test r9, r9
je 0x180049f6e
mov dword [r9 + 0xc3c], 0
mov rcx, qword [0x180090d50]
jmp 0x180049f73
test rdi, rdi
je 0x180049fdc
mov r8, qword [rsi]
test r8, r8
je 0x180049f9f
mov rax, qword [rcx + 0x68]
mov r9, qword [r8 + rax]
test r9, r9
je 0x180049f9f
mov rax, qword [r9 + 0x30]
xorps xmm0, xmm0
test rax, rax
je 0x180049f9f
movups xmmword [rax + 0x30], xmm0
mov rcx, qword [0x180090d50]
test rdi, rdi
je 0x180049fdc
mov r8, qword [rsi]
test r8, r8
je 0x180049fdc
mov rax, qword [rcx + 0x68]
mov rcx, qword [r8 + rax]
test rcx, rcx
je 0x180049fdc
movsd xmm6, qword [rcx + 0x90]
mov r14d, dword [rcx + 0x98]
movaps xmm9, xmm6
shufps xmm9, xmm9, 0x55
movaps xmm8, xmm6
movd xmm7, r14d
jmp 0x180049ff3
xorps xmm9, xmm9
xorps xmm7, xmm7
xorps xmm6, xmm6
movd r14d, xmm7
unpcklps xmm6, xmm9
xorps xmm8, xmm8
movsd xmm12, qword [rdx + 0x3d0]
mov ecx, 0x57
mov ebx, dword [rdx + 0x3d8]
movsd qword [rbp - 0x59], xmm6
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
movaps xmm11, xmm12
movd xmm13, ebx
bt ax, 0xf
shufps xmm11, xmm11, 0x55
movsd qword [rbp - 0x69], xmm12
jae 0x18004a051
addss xmm8, xmm12
addss xmm9, xmm11
addss xmm7, xmm13
movaps xmm0, xmm8
unpcklps xmm0, xmm9
movaps xmm6, xmm0
movsd qword [rbp - 0x59], xmm0
movd r14d, xmm7
mov ecx, 0x53
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18004a087
subss xmm8, xmm12
subss xmm9, xmm11
subss xmm7, xmm13
movaps xmm0, xmm8
unpcklps xmm0, xmm9
movaps xmm6, xmm0
movsd qword [rbp - 0x59], xmm0
movd r14d, xmm7
mov ecx, 0x44
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
movaps xmm13, xmmword [rsp + 0x70]
movaps xmm12, xmmword [rsp + 0x80]
movaps xmm11, xmmword [rsp + 0x90]
jae 0x18004a0cc
movsd xmm0, qword [rbp - 0x59]
addss xmm8, dword [0x180085af8]
movss xmm0, xmm8
movsd qword [rbp - 0x59], xmm0
movaps xmm6, xmm0
mov ecx, 0x41
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
movss xmm9, dword [0x180085c88]
jae 0x18004a0fe
movsd xmm0, qword [rbp - 0x59]
addss xmm8, xmm9
movss xmm0, xmm8
movsd qword [rbp - 0x59], xmm0
movaps xmm6, xmm0
mov ecx, 0x20
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18004a11d
addss xmm7, dword [0x180085af8]
movd r14d, xmm7
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
mov r15, qword [rsp + 0xf0]
jae 0x18004a141
addss xmm7, xmm9
movd r14d, xmm7
movaps xmm9, xmmword [rsp + 0xb0]
test rdi, rdi
je 0x18004a1eb
mov rdx, qword [rsi]
test rdx, rdx
je 0x18004a17e
mov rax, qword [0x180090d50]
mov rcx, qword [rax + 0x68]
mov rax, qword [rdx + rcx]
test rax, rax
je 0x18004a17e
movsd qword [rax + 0x90], xmm6
mov dword [rax + 0x98], r14d
mov rdx, qword [rsi]
test rdx, rdx
je 0x18004a1eb
mov rax, qword [0x180090d50]
mov rcx, qword [rax + 0x68]
mov rax, qword [rdx + rcx]
test rax, rax
je 0x18004a1eb
mov rax, qword [rax + 0x30]
test rax, rax
je 0x18004a1eb
movsd qword [rax + 0x50], xmm6
mov dword [rax + 0x58], r14d
jmp 0x18004a1eb
test rdi, rdi
je 0x18004a1eb
mov rdx, qword [rdi + 8]
test rdx, rdx
je 0x18004a1eb
mov rax, qword [0x180090d50]
mov rcx, qword [rax + 0x68]
mov r8, qword [rdx + rcx]
test r8, r8
je 0x18004a1eb
mov rax, qword [0x180090c78]
movd xmm0, dword [rax + 0x174]
cvtdq2ps xmm0, xmm0
movss dword [r8 + 0xc3c], xmm0
mov rdx, qword [0x180090c78]
mov r14, qword [rsp + 0x120]
cmp byte [rdx + 0x172], 0
movaps xmm8, xmmword [rsp + 0xc0]
movaps xmm7, xmmword [rsp + 0xd0]
je 0x18004a2fe
call fcn.180049980
test rax, rax
jne 0x18004a230
xorps xmm6, xmm6
movd esi, xmm10
unpcklps xmm6, xmm10
jmp 0x18004a23e
movsd xmm6, qword [rax + 0x90]
mov esi, dword [rax + 0x98]
mov rax, qword [0x180090d60]
lea r8, [rbp - 0x55]
mov rbx, qword [0x180090b60]
lea rdx, [rbp - 0x59]
lea rcx, [rbp - 0x69]
movsd qword [rbp - 0x69], xmm6
mov dword [rbp - 0x61], esi
mov qword [rbp - 0x59], 0
call qword [rax + 0x38]
movss xmm1, dword [rbp - 0x59]
lea rax, [rbp - 0x69]
mulss xmm1, dword [rbx + 0x10]
mov dword [rsp + 0x30], 0
movss xmm2, dword [rbp - 0x55]
movaps xmm0, xmmword [0x180085fa0]
movss xmm3, dword [0x180085b7c]
movss dword [rbp - 0x59], xmm1
mulss xmm2, dword [rbx + 0x14]
mov qword [rsp + 0x28], rax
movss dword [rsp + 0x20], xmm3
movaps xmmword [rbp - 0x69], xmm0
movss dword [rbp - 0x55], xmm2
call fcn.180050850
mov ecx, 5
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18004a2fe
test rdi, rdi
je 0x18004a2fe
mov rax, qword [rdi + 8]
test rax, rax
je 0x18004a2fe
movsd qword [rax + 0x90], xmm6
mov dword [rax + 0x98], esi
mov rax, qword [rdi + 8]
test rax, rax
je 0x18004a2fe
mov rcx, qword [rax + 0x30]
test rcx, rcx
je 0x18004a2fe
movsd qword [rcx + 0x50], xmm6
mov dword [rcx + 0x58], esi
movaps xmm6, xmmword [rsp + 0xe0]
mov rsi, qword [rsp + 0x118]
mov rbx, qword [rsp + 0x110]
mov rcx, qword [rbp - 0x49]
xor rcx, rsp
call fcn.18005c260
movaps xmm10, xmmword [rsp + 0xa0]
add rsp, 0xf8
pop rdi
pop rbp
ret