Function at 0x140037e80
Capabilities:
Log keystrokes via polling

Disassembly:
push rsi
push rdi
sub rsp, 0x1e8
movdqa xmmword [rsp + 0x1d0], xmm15
movdqa xmmword [rsp + 0x1c0], xmm14
movdqa xmmword [rsp + 0x1b0], xmm13
movdqa xmmword [rsp + 0x1a0], xmm12
movdqa xmmword [rsp + 0x190], xmm11
movdqa xmmword [rsp + 0x180], xmm10
movdqa xmmword [rsp + 0x170], xmm9
movdqa xmmword [rsp + 0x160], xmm8
movdqa xmmword [rsp + 0x150], xmm7
movdqa xmmword [rsp + 0x140], xmm6
mov rsi, rcx
mov rax, qword [0x1400c0e18]
xor rax, rsp
mov qword [rsp + 0x138], rax
cmp qword [rcx], 0
jne 0x140037f36
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov qword [rsp + 0x20], 0
lea r8, [0x14007c190]
mov rcx, rax
mov edx, 0x800
mov r9, rsi
call sub.DINPUT8.dll_DirectInput8Create
test eax, eax
js 0x140038529
mov rcx, qword [rsi + 8]
test rcx, rcx
je 0x1400384e6
mov rax, qword [rcx]
lea r8, [rsp + 0x30]
mov edx, 0x100
call qword [rax + 0x48]
test eax, eax
js 0x14003853c
movdqu xmm1, xmmword [rsp + 0x31]
movdqu xmm2, xmmword [rsp + 0x6b]
movdqu xmm0, xmmword [rsp + 0x6d]
movdqu xmm3, xmmword [rsp + 0x87]
movdqa xmm11, xmmword [0x14005b640]
movdqa xmm4, xmm11
pandn xmm4, xmm1
pslld xmm2, 8
por xmm2, xmm4
movdqa xmm10, xmmword [0x14005b650]
movdqa xmm1, xmm10
pandn xmm1, xmm2
pslldq xmm0, 3
por xmm0, xmm1
pslldq xmm3, 0xb
movdqa xmm7, xmmword [0x14005b660]
movdqa xmm1, xmm7
pandn xmm1, xmm3
pand xmm0, xmm7
por xmm0, xmm1
movdqa xmm6, xmmword [0x14005b670]
pand xmm0, xmm6
movzx eax, byte [rsp + 0x59]
movd xmm1, eax
pslldq xmm1, 0xd
por xmm1, xmm0
pand xmm1, xmmword [0x14005b680]
movdqu xmm0, xmmword [rsp + 0x32]
pslldq xmm0, 0xe
por xmm0, xmm1
pxor xmm8, xmm8
pcmpeqb xmm0, xmm8
movdqa xmm9, xmmword [0x14005b370]
pandn xmm0, xmm9
movdqu xmmword [rsi + 0x10], xmm0
movdqu xmm0, xmmword [rsp + 0x34]
pcmpeqb xmm0, xmm8
pandn xmm0, xmm9
movdqu xmmword [rsi + 0x20], xmm0
movd xmm0, dword [rsp + 0x54]
pcmpeqb xmm0, xmm8
pandn xmm0, xmmword [0x14005b690]
movd dword [rsi + 0x40], xmm0
cmp byte [rsp + 0x58], 0
setne byte [rsi + 0x44]
cmp byte [rsp + 0x5b], 0
setne byte [rsi + 0x45]
movdqu xmm1, xmmword [rsp + 0x44]
movdqu xmm0, xmmword [rsp + 0x45]
movdqu xmm2, xmmword [rsp + 0x4e]
movdqa xmm3, xmm11
pandn xmm3, xmm1
pslldq xmm0, 1
por xmm0, xmm3
movzx eax, byte [rsp + 0x6a]
movd xmm1, eax
pslldq xmm1, 9
movdqa xmm13, xmmword [0x14005b6a0]
movdqa xmm3, xmm13
pandn xmm3, xmm1
movdqa xmm1, xmm0
pand xmm1, xmm13
por xmm1, xmm3
movdqa xmm3, xmmword [0x14005b6b0]
pand xmm1, xmm3
pslldq xmm2, 0xa
pandn xmm3, xmm2
por xmm3, xmm1
shufps xmm3, xmmword [rsp + 0x50], 2
shufps xmm0, xmm3, 0x84
pcmpeqb xmm0, xmm8
pandn xmm0, xmm9
movdqu xmmword [rsi + 0x30], xmm0
cmp byte [rsp + 0x5a], 0
setne byte [rsi + 0x46]
movdqu xmm2, xmmword [rsp + 0x5c]
movdqu xmm3, xmmword [rsp + 0x5d]
movdqu xmm1, xmmword [rsp + 0x5f]
movdqu xmm0, xmmword [rsp + 0x68]
movdqa xmm4, xmm11
pandn xmm4, xmm2
pslld xmm3, 8
por xmm3, xmm4
movdqa xmm2, xmm10
pandn xmm2, xmm3
pslldq xmm1, 3
por xmm1, xmm2
movzx eax, byte [rsp + 0x4d]
movd xmm2, eax
pslldq xmm2, 0xb
movdqa xmm15, xmmword [0x14005b6c0]
movdqa xmm3, xmm15
pandn xmm3, xmm2
pand xmm1, xmm15
por xmm1, xmm3
movdqa xmm14, xmmword [0x14005b6d0]
pand xmm1, xmm14
movzx eax, byte [rsp + 0x10b]
movd xmm2, eax
pshufd xmm2, xmm2, 0
movdqa xmm3, xmm14
pandn xmm3, xmm2
por xmm3, xmm1
pand xmm3, xmmword [0x14005b6e0]
pslldq xmm0, 0xd
por xmm0, xmm3
movdqa xmm12, xmmword [0x14005b6f0]
pand xmm0, xmm12
movd xmm1, dword [rsp + 0xe8]
pslldq xmm1, 0xf
por xmm1, xmm0
pcmpeqb xmm1, xmm8
pandn xmm1, xmm9
movdqu xmmword [rsi + 0x48], xmm1
cmp byte [rsp + 0x10c], 0
setne byte [rsi + 0x58]
cmp byte [rsp + 0xcd], 0
setne byte [rsi + 0x5b]
mov ecx, 0x2c
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
movzx eax, ax
shr eax, 0xf
mov byte [rsi + 0x5c], al
movdqu xmm0, xmmword [rsp + 0xf5]
movdqa xmm1, xmmword [0x14005b700]
pand xmm0, xmm1
movzx eax, byte [rsp + 0x76]
movd xmm2, eax
psllw xmm2, 8
pandn xmm1, xmm2
por xmm1, xmm0
movdqa xmm0, xmmword [0x14005b710]
pand xmm1, xmm0
movzx eax, byte [rsp + 0x102]
movd xmm2, eax
pslld xmm2, 0x10
pandn xmm0, xmm2
por xmm0, xmm1
movdqa xmm1, xmmword [0x14005b720]
pand xmm0, xmm1
movzx eax, byte [rsp + 0xf7]
movd xmm2, eax
pslld xmm2, 0x18
pandn xmm1, xmm2
por xmm1, xmm0
movdqa xmm0, xmmword [0x14005b730]
pand xmm1, xmm0
movzx eax, byte [rsp + 0xf9]
movd xmm2, eax
pshufd xmm2, xmm2, 0x50
pandn xmm0, xmm2
por xmm0, xmm1
movdqa xmm1, xmmword [0x14005b740]
pand xmm0, xmm1
movzx eax, byte [rsp + 0x103]
movd xmm2, eax
psllq xmm2, 0x28
pandn xmm1, xmm2
por xmm1, xmm0
movdqa xmm2, xmmword [0x14005b750]
pand xmm1, xmm2
movzx eax, byte [rsp + 0xff]
movd xmm0, eax
psllq xmm0, 0x30
pandn xmm2, xmm0
por xmm2, xmm1
movdqa xmm0, xmmword [0x14005b760]
pand xmm2, xmm0
movzx eax, byte [rsp + 0x101]
movd xmm1, eax
psllq xmm1, 0x38
movdqa xmm3, xmm0
pandn xmm3, xmm1
por xmm3, xmm2
movdqa xmm1, xmmword [0x14005b770]
pand xmm3, xmm1
movd xmm2, dword [rsp + 0xf8]
pshufd xmm2, xmm2, 0x44
pandn xmm1, xmm2
por xmm1, xmm3
pand xmm1, xmm13
movzx eax, byte [rsp + 0xfb]
movd xmm2, eax
pslldq xmm2, 9
pandn xmm13, xmm2
por xmm13, xmm1
movdqa xmm1, xmmword [0x14005b780]
pand xmm13, xmm1
movd xmm2, dword [rsp + 0x100]
pslldq xmm2, 0xa
movdqa xmm3, xmm1
pandn xmm3, xmm2
por xmm3, xmm13
pand xmm3, xmm15
movzx eax, byte [rsp + 0xfd]
movd xmm2, eax
pslldq xmm2, 0xb
pandn xmm15, xmm2
por xmm15, xmm3
pand xmm15, xmm14
movzx eax, byte [rsp + 0x75]
movd xmm2, eax
pshufd xmm2, xmm2, 0
pandn xmm14, xmm2
por xmm14, xmm15
pand xmm14, xmm6
movzx eax, byte [rsp + 0xe5]
movd xmm2, eax
pslldq xmm2, 0xd
movdqa xmm3, xmm6
pandn xmm3, xmm2
por xmm3, xmm14
movdqa xmm2, xmmword [0x14005b790]
pand xmm3, xmm2
movzx eax, byte [rsp + 0x67]
movd xmm4, eax
pslldq xmm4, 0xe
por xmm4, xmm3
pand xmm4, xmm12
movzx eax, byte [rsp + 0x7a]
movd xmm3, eax
pslldq xmm3, 0xf
por xmm3, xmm4
pcmpeqb xmm3, xmm8
pandn xmm3, xmm9
movdqu xmmword [rsi + 0x5d], xmm3
movd xmm3, dword [rsp + 0x7b]
movdqu xmm4, xmmword [rsp + 0x77]
movdqu xmm5, xmmword [rsp + 0x78]
pandn xmm11, xmm4
pslld xmm5, 8
por xmm5, xmm11
pshufd xmm3, xmm3, 0x50
pand xmm3, xmm10
pandn xmm10, xmm5
por xmm10, xmm3
pand xmm10, xmm0
movzx eax, byte [rsp + 0x7f]
movd xmm0, eax
psllq xmm0, 0x38
por xmm0, xmm10
punpcklqdq xmm0, xmmword [rsp + 0x80]
movdqu xmm3, xmmword [rsp + 0x82]
pand xmm0, xmm1
movd xmm4, dword [rsp + 0xcc]
pslldq xmm4, 0xa
pandn xmm1, xmm4
por xmm1, xmm0
pand xmm1, xmm7
pslldq xmm3, 0xb
pandn xmm7, xmm3
por xmm7, xmm1
pand xmm7, xmm6
movd xmm0, dword [rsp + 0xc0]
pslldq xmm0, 0xd
pandn xmm6, xmm0
por xmm6, xmm7
pand xmm6, xmm2
movzx eax, byte [rsp + 0xd2]
movd xmm0, eax
pslldq xmm0, 0xe
por xmm0, xmm6
pand xmm0, xmm12
movzx eax, byte [rsp + 0xc9]
movd xmm1, eax
pslldq xmm1, 0xf
por xmm1, xmm0
pcmpeqb xmm1, xmm8
pandn xmm1, xmm9
movdqu xmmword [rsi + 0x6d], xmm1
jmp 0x14003853c
lea rdi, [rsi + 8]
mov rcx, qword [rsi]
mov rax, qword [rcx]
lea rdx, [0x14007c1b0]
mov r8, rdi
xor r9d, r9d
call qword [rax + 0x18]
test eax, eax
js 0x14003853c
mov rcx, qword [rdi]
mov rax, qword [rcx]
lea rdx, [0x14007c170]
call qword [rax + 0x58]
mov rcx, qword [rdi]
mov rdx, qword [rcx]
test eax, eax
js 0x140038532
call qword [rdx + 0x38]
mov rcx, qword [rdi]
jmp 0x140037f43
mov qword [rsi], 0
jmp 0x14003853c
call qword [rdx + reloc.WS2_32.dll_recv]
mov qword [rdi], 0
mov rcx, qword [rsp + 0x138]
xor rcx, rsp
call fcn.1400556d0
movaps xmm6, xmmword [rsp + 0x140]
movaps xmm7, xmmword [rsp + 0x150]
movaps xmm8, xmmword [rsp + 0x160]
movaps xmm9, xmmword [rsp + 0x170]
movaps xmm10, xmmword [rsp + 0x180]
movaps xmm11, xmmword [rsp + 0x190]
movaps xmm12, xmmword [rsp + 0x1a0]
movaps xmm13, xmmword [rsp + 0x1b0]
movaps xmm14, xmmword [rsp + 0x1c0]
movaps xmm15, xmmword [rsp + 0x1d0]
add rsp, 0x1e8
pop rdi
pop rsi
ret