Function at 0x2e3d75cf0
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.2e3d61b90
mov rbx, qword [0x2e3f09580]
mov rax, qword [0x2e3ef2168]
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.2e3c399e0
test eax, eax
setne byte [rbx + rsi + 0x5f8]
add rsi, 1
cmp rsi, 4
jne 0x2e3d75db3
mov rsi, rbx
xor edi, edi
lea rbp, [rsp + 0x20]
cmp byte [rbx + rdi + 0x5f8], 0
mov ecx, edi
jne 0x2e3d75e28
add rdi, 1
add rsi, 0x20
cmp rdi, 4
jne 0x2e3d75dd8
mov rax, qword [0x2e3f0b050]
cmp byte [rbx + 0x18], 0
mov byte [rbx + 0x17], 0
mov eax, dword [rax]
je 0x2e3d76090
test eax, eax
je 0x2e3d76098
call qword [sym.imp.USER32.dll_WaitMessage]
nop
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
jmp fcn.2e3c43000
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.2e3c3a610
xor eax, eax
cmp byte [rsp + 0x20], 1
jne 0x2e3d75e93
mov dword [rbx + 0x5f0], 7
mov eax, 1
mov byte [rsi + 0x703], al
xor eax, eax
cmp byte [rsp + 0x21], 1
jne 0x2e3d75eb1
mov dword [rbx + 0x5f0], 6
mov eax, 1
mov byte [rsi + 0x702], al
xor eax, eax
cmp byte [rsp + 0x22], 1
jne 0x2e3d75ecf
mov dword [rbx + 0x5f0], 8
mov eax, 1
mov byte [rsi + 0x704], al
xor eax, eax
cmp byte [rsp + 0x23], 1
jne 0x2e3d75eed
mov dword [rbx + 0x5f0], 5
mov eax, 1
mov byte [rsi + 0x701], al
xor eax, eax
cmp byte [rsp + 0x24], 1
jne 0x2e3d75f0b
mov dword [rbx + 0x5f0], 9
mov eax, 1
mov byte [rsi + 0x705], al
xor eax, eax
cmp byte [rsp + 0x25], 1
jne 0x2e3d75f29
mov dword [rbx + 0x5f0], 0xb
mov eax, 1
mov byte [rsi + 0x707], al
xor eax, eax
cmp byte [rsp + 0x26], 1
jne 0x2e3d75f47
mov dword [rbx + 0x5f0], 0xd
mov eax, 1
mov byte [rsi + 0x709], al
xor eax, eax
cmp byte [rsp + 0x27], 1
jne 0x2e3d75f65
mov dword [rbx + 0x5f0], 0xf
mov eax, 1
mov byte [rsi + 0x70b], al
xor eax, eax
cmp byte [rsp + 0x28], 1
jne 0x2e3d75f83
mov dword [rbx + 0x5f0], 0xe
mov eax, 1
mov byte [rsi + 0x70a], al
xor eax, eax
cmp byte [rsp + 0x29], 1
jne 0x2e3d75fa1
mov dword [rbx + 0x5f0], 0x10
mov eax, 1
mov byte [rsi + 0x70c], al
xor eax, eax
cmp byte [rsp + 0x2a], 1
jne 0x2e3d75fbf
mov dword [rbx + 0x5f0], 0x11
mov eax, 1
mov byte [rsi + 0x70d], al
xor eax, eax
cmp byte [rsp + 0x2b], 1
jne 0x2e3d75fdd
mov dword [rbx + 0x5f0], 1
mov eax, 1
mov byte [rsi + 0x6fd], al
xor eax, eax
cmp byte [rsp + 0x2c], 1
jne 0x2e3d75ffb
mov dword [rbx + 0x5f0], 2
mov eax, 1
mov byte [rsi + 0x6fe], al
xor eax, eax
cmp byte [rsp + 0x2d], 1
jne 0x2e3d76019
mov dword [rbx + 0x5f0], 3
mov eax, 1
mov byte [rsi + 0x6ff], al
xor eax, eax
cmp byte [rsp + 0x2e], 1
jne 0x2e3d76037
mov dword [rbx + 0x5f0], 4
mov eax, 1
movss xmm1, dword [rsp + 0x40]
comiss xmm1, dword [0x2e3ef20b0]
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 [0x2e3ef20b0]
movups xmmword [rsi + 0x7fc], xmm4
movss dword [rsi + 0x810], xmm0
seta byte [rsi + 0x708]
mov dword [rbx + 0x5f4], 6
jmp 0x2e3d75de4
test eax, eax
jne 0x2e3d75e18
xor edx, edx
mov ecx, 0x10001
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
jmp fcn.2e3c320f0