Function at 0x22dc14930
Capabilities:
Get thread local storage value
Log keystrokes via polling
Set thread local storage value

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
call fcn.22dc00800
mov rbx, qword [0x22ddac700]
mov rax, qword [0x22dd95008]
lea rdi, [rbx + 0x2b4]
mov rdx, qword [rbx + 0xac]
mov qword [rbx + 0x5f0], rax
lea rax, [rbx + 0x2ac]
and rdi, 0xfffffffffffffff8
lea rsi, [rbx + 0xac]
mov dword [rbx + 0x4ec], 0
sub rax, rdi
mov qword [rbx + 0x2ac], rdx
mov rdx, qword [rbx + 0x2a4]
mov dword [rbx + 0x530], 0
sub rsi, rax
add eax, 0x200
shr eax, 3
mov qword [rbx + 0x4a4], rdx
mov ecx, eax
rep movsq qword [rdi], qword [rsi]
xor esi, esi
mov rax, qword [rbx + 0x55a]
mov qword [rbx + 0x562], rax
mov rax, qword [rbx + 0x56c]
mov qword [rbx + 0x56c], 0
mov qword [rbx + 0x574], rax
mov rax, qword [rbx + 0x544]
mov qword [rbx + 0x54c], rax
mov rax, qword [rbx + 0x5e0]
mov qword [rbx + 0x5e8], rax
mov ecx, esi
call fcn.22dad9a80
test eax, eax
setne byte [rbx + rsi + 0x5f8]
add rsi, 1
cmp rsi, 4
jne 0x22dc149f3
mov rsi, rbx
xor edi, edi
lea rbp, [rsp + 0x20]
cmp byte [rbx + rdi + 0x5f8], 0
mov ecx, edi
jne 0x22dc14a68
add rdi, 1
add rsi, 0x20
cmp rdi, 4
jne 0x22dc14a18
mov rax, qword [0x22ddae300]
cmp byte [rbx + 0x18], 0
mov byte [rbx + 0x17], 0
mov eax, dword [rax]
je 0x22dc14cd0
test eax, eax
je 0x22dc14cd8
call qword [sym.imp.USER32.dll_WaitMessage]
nop
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
jmp fcn.22dae3020
movdqu xmm2, xmmword [rsi + 0x6fc]
mov rdx, rbp
movdqu xmm3, xmmword [rsi + 0x70c]
mov qword [rsp + 0x20], 0
mov qword [rsp + 0x28], 0
movups xmmword [rsi + 0x77c], xmm2
movups xmmword [rsi + 0x78c], xmm3
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x40], 0
call fcn.22dada6b0
xor eax, eax
cmp byte [rsp + 0x20], 1
jne 0x22dc14ad3
mov dword [rbx + 0x5f0], 7
mov eax, 1
mov byte [rsi + 0x703], al
xor eax, eax
cmp byte [rsp + 0x21], 1
jne 0x22dc14af1
mov dword [rbx + 0x5f0], 6
mov eax, 1
mov byte [rsi + 0x702], al
xor eax, eax
cmp byte [rsp + 0x22], 1
jne 0x22dc14b0f
mov dword [rbx + 0x5f0], 8
mov eax, 1
mov byte [rsi + 0x704], al
xor eax, eax
cmp byte [rsp + 0x23], 1
jne 0x22dc14b2d
mov dword [rbx + 0x5f0], 5
mov eax, 1
mov byte [rsi + 0x701], al
xor eax, eax
cmp byte [rsp + 0x24], 1
jne 0x22dc14b4b
mov dword [rbx + 0x5f0], 9
mov eax, 1
mov byte [rsi + 0x705], al
xor eax, eax
cmp byte [rsp + 0x25], 1
jne 0x22dc14b69
mov dword [rbx + 0x5f0], 0xb
mov eax, 1
mov byte [rsi + 0x707], al
xor eax, eax
cmp byte [rsp + 0x26], 1
jne 0x22dc14b87
mov dword [rbx + 0x5f0], 0xd
mov eax, 1
mov byte [rsi + 0x709], al
xor eax, eax
cmp byte [rsp + 0x27], 1
jne 0x22dc14ba5
mov dword [rbx + 0x5f0], 0xf
mov eax, 1
mov byte [rsi + 0x70b], al
xor eax, eax
cmp byte [rsp + 0x28], 1
jne 0x22dc14bc3
mov dword [rbx + 0x5f0], 0xe
mov eax, 1
mov byte [rsi + 0x70a], al
xor eax, eax
cmp byte [rsp + 0x29], 1
jne 0x22dc14be1
mov dword [rbx + 0x5f0], 0x10
mov eax, 1
mov byte [rsi + 0x70c], al
xor eax, eax
cmp byte [rsp + 0x2a], 1
jne 0x22dc14bff
mov dword [rbx + 0x5f0], 0x11
mov eax, 1
mov byte [rsi + 0x70d], al
xor eax, eax
cmp byte [rsp + 0x2b], 1
jne 0x22dc14c1d
mov dword [rbx + 0x5f0], 1
mov eax, 1
mov byte [rsi + 0x6fd], al
xor eax, eax
cmp byte [rsp + 0x2c], 1
jne 0x22dc14c3b
mov dword [rbx + 0x5f0], 2
mov eax, 1
mov byte [rsi + 0x6fe], al
xor eax, eax
cmp byte [rsp + 0x2d], 1
jne 0x22dc14c59
mov dword [rbx + 0x5f0], 3
mov eax, 1
mov byte [rsi + 0x6ff], al
xor eax, eax
cmp byte [rsp + 0x2e], 1
jne 0x22dc14c77
mov dword [rbx + 0x5f0], 4
mov eax, 1
movss xmm1, dword [rsp + 0x40]
comiss xmm1, dword [0x22dd94f50]
mov byte [rsi + 0x700], al
movss xmm0, dword [rsp + 0x44]
movaps xmm4, xmmword [rsp + 0x30]
movss dword [rsi + 0x80c], xmm1
seta byte [rsi + 0x706]
comiss xmm0, dword [0x22dd94f50]
movups xmmword [rsi + 0x7fc], xmm4
movss dword [rsi + 0x810], xmm0
seta byte [rsi + 0x708]
mov dword [rbx + 0x5f4], 6
jmp 0x22dc14a24
test eax, eax
jne 0x22dc14a58
xor edx, edx
mov ecx, 0x10001
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
jmp fcn.22dad20f0