Function at 0x14002f9d0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
xchg rbp, r10
mov qword [rsp + 0x18], r10
xchg r10, rbp
nop
mov qword [rsp - 8], rdi
sub rsp, 8
sub rsp, 0x20
mov rdi, qword gs:[0x30]
xchg rcx, r12
mov rbp, r12
xchg rcx, r12
xchg rdx, rax
mov rdx, qword [rdi + 0x2d8]
add byte [rax - 0x6e], cl
mov qword [rcx + 0xf8], rax
mov rax, qword [rdi + 0x2e0]
mov qword [rcx + 0x98], rax
mov rax, qword [rcx + 0xc8]
mov qword [rcx + 0x80], rax
cmp byte [rdi + 0x2ec], 0
jne 0x14002fd09
cmp qword [0x140216fe0], 0
je 0x14002fd09
mov byte [rdi + 0x2ec], 0x1b
add byte [rdi + 0x2ec], 0x3d
sub byte [rdi + 0x2ec], 0x10
xor byte [rdi + 0x2ec], 0x62
add byte [rdi + 0x2ec], 0x11
add byte [rdi + 0x2ec], 0x3d
sub byte [rdi + 0x2ec], 0x66
add byte [rdi + 0x2ec], 0x3c
sub byte [rdi + 0x2ec], 0x4d
mov rax, qword [0x140216fe0]
mov rcx, qword [rax + 0x30]
cmp qword [rdi + 0x2d8], rcx
jne 0x14002fcd8
mov qword [rsp + 0x30], rbx
xchg r10, rbx
mov r10, qword [rbp + 0x98]
xchg rbx, r10
cmp dword [rbx + 0x4f0], 0x80000003
jne 0x14002fbd3
mov rcx, qword [rax + 0x18]
mov qword [rsp + 0x38], rsi
cmp qword [rbx + 0x500], rcx
jne 0x14002fb24
lea rax, [0x14002dbb0]
mov byte [rdi + 0x2ec], 0x7d
sub byte [rdi + 0x2ec], 0x31
xor byte [rdi + 0x2ec], 5
xor byte [rdi + 0x2ec], 0x56
add byte [rdi + 0x2ec], 4
add byte [rdi + 0x2ec], 0x3a
sub byte [rdi + 0x2ec], 0x5d
xor edx, edx
mov qword [rbx + 0xf8], rax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_RtlRestoreContext]
mov rax, qword [0x140216fe0]
mov ecx, dword [rax + 0xc]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp rax, 4
mov rax, qword [0x140216fe0]
jne 0x14002fbc8
mov ecx, dword [rax + 0xc]
mov edx, 0x2a9b90b2
add edx, 0x33bff9a1
add edx, 0x1e887063
add edx, 0x97c021
xor edx, 0x5888b767
xor edx, 0x25f30db5
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov byte [rdi + 0x2ec], 0x4b
xor byte [rdi + 0x2ec], 0x55
add byte [rdi + 0x2ec], 0x2f
xor byte [rdi + 0x2ec], 0x6f
xor byte [rdi + 0x2ec], 0x28
add byte [rdi + 0x2ec], 0x2a
sub byte [rdi + 0x2ec], 0x2f
add byte [rdi + 0x2ec], 0x55
sub byte [rdi + 0x2ec], 0x5a
xor edx, edx
inc qword [rbx + 0xf8]
xchg rbx, rcx
mov rbx, rcx
xchg rcx, rbx
call qword [sym.imp.KERNEL32.dll_RtlRestoreContext]
mov rax, qword [0x140216fe0]
xchg r14, rsi
mov r14, qword [rsp + 0x38]
xchg rsi, r14
cmp byte [rax + 6], 0
jne 0x14002fc87
mov ecx, dword [rbx + 0x4f0]
cmp ecx, 1
je 0x14002fc64
cmp ecx, 0x80000001
je 0x14002fc47
cmp ecx, 0x80000003
je 0x14002fc2a
cmp ecx, 0x80000004
jne 0x14002fc87
mov byte [rax], 0x62
sub byte [rax], 0x46
xor byte [rax], 0x10
sub byte [rax], 1
add byte [rax], 0x5e
xor byte [rax], 0x6c
xor byte [rax], 4
jmp 0x14002fc80
mov byte [rax + 2], 0x24
add byte [rax + 2], 0x13
add byte [rax + 2], 0x31
sub byte [rax + 2], 0x50
add byte [rax + 2], 0x5e
sub byte [rax + 2], 0x75
jmp 0x14002fc80
mov byte [rax + 4], 0x3e
xor byte [rax + 4], 0x72
sub byte [rax + 4], 0x30
xor byte [rax + 4], 8
add byte [rax + 4], 0x5e
sub byte [rax + 4], 0x71
jmp 0x14002fc80
mov byte [rax + 3], 0x5b
add byte [rax + 3], 6
add byte [rax + 3], 0x14
sub byte [rax + 3], 0x6b
add byte [rax + 3], 3
xor byte [rax + 3], 0x4e
sub byte [rax + 3], 0x42
mov rax, qword [0x140216fe0]
cmp qword [rbx + 0x48], 0
jne 0x14002fcb3
cmp qword [rbx + 0x50], 0
jne 0x14002fcb3
cmp qword [rbx + 0x58], 0
jne 0x14002fcb3
cmp qword [rbx + 0x60], 0
je 0x14002fcd3
mov byte [rax + 1], 0x60
add byte [rax + 1], 4
xor byte [rax + 1], 0x78
add byte [rax + 1], 0xc
add byte [rax + 1], 0xb
xor byte [rax + 1], 0x2a
sub byte [rax + 1], 0x10
xor byte [rax + 1], 8
mov rbx, qword [rsp + 0x30]
mov byte [rdi + 0x2ec], 0x2f
xor byte [rdi + 0x2ec], 0x39
add byte [rdi + 0x2ec], 0x4e
sub byte [rdi + 0x2ec], 0x35
add byte [rdi + 0x2ec], 0x18
sub byte [rdi + 0x2ec], 0x23
xor byte [rdi + 0x2ec], 0x24
xor edx, edx
xchg r8, rbp
mov rcx, r8
xchg r8, rbp
mov rbp, qword [rsp + 0x40]
add rsp, 0x20
nop
xchg qword [rsp], rdi
add rsp, 8
jmp qword [sym.imp.KERNEL32.dll_RtlRestoreContext]