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

Disassembly:
mov rax, rsp
push rsi
push rdi
push r14
sub rsp, 0x30
mov qword [rax - 0x28], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbp
mov rdi, rcx
lea rbx, [rcx - 0x10]
mov r9, qword [rbx]
mov r8, qword [r9]
lea rdx, [rax + 8]
mov rcx, rbx
call fcn.140032550
mov rcx, qword [rbx]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rcx, qword [rdi - 0x18]
xor esi, esi
test rcx, rcx
je 0x1400319b6
mov qword [rdi - 0x18], rsi
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ee2b6.0]
nop
mov rcx, qword [rdi - 0x20]
test rcx, rcx
je 0x1400319d1
mov qword [rdi - 0x20], rsi
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ee2b6.0]
nop
mov rcx, qword [rdi - 0x28]
test rcx, rcx
je 0x1400319ec
mov qword [rdi - 0x28], rsi
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ee2b6.0]
nop
mov ecx, dword [rdi - 0x30]
cmp byte [rdi - 0x2c], sil
je 0x140031a00
call qword [sym.imp.KERNEL32.dll_FlsGetValue]
jmp 0x140031a07
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
nop
mov rbx, rax
mov r14d, 7
test rax, rax
je 0x140031a49
mov rcx, rax
call fcn.14003277c
mov rcx, rbx
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xor edx, edx
mov ecx, dword [rdi - 0x30]
cmp byte [rdi - 0x2c], sil
je 0x140031a39
call qword [sym.imp.KERNEL32.dll_FlsSetValue]
jmp 0x140031a40
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
nop
test eax, eax
jne 0x140031a49
mov rcx, r14
int 0x29
mov ecx, dword [rdi - 0x30]
cmp byte [rdi - 0x2c], sil
je 0x140031a5a
call qword [sym.imp.KERNEL32.dll_FlsFree]
jmp 0x140031a61
call qword [sym.imp.KERNEL32.dll_TlsFree]
nop
mov rcx, qword [rdi - 0x38]
test rcx, rcx
je 0x140031a80
mov rax, qword [rcx]
mov edx, 1
mov rax, qword [rax]
call qword [case.0x1400ee2b6.0]
nop
nop dword [rax]
mov rbx, qword [rdi - 0x40]
or ebp, 0xffffffff
test rbx, rbx
je 0x140031ac2
mov eax, ebp
lock xadd dword [rbx + 8], eax
add eax, ebp
jne 0x140031ac2
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax]
call qword [case.0x1400ee2b6.0]
mov eax, ebp
lock xadd dword [rbx + 0xc], eax
add eax, ebp
jne 0x140031ac2
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x1400ee2b6.0]
nop
mov rbx, qword [rdi - 0x50]
test rbx, rbx
je 0x140031b01
mov eax, ebp
lock xadd dword [rbx + 8], eax
add eax, ebp
jne 0x140031b01
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax]
call qword [case.0x1400ee2b6.0]
mov eax, ebp
lock xadd dword [rbx + 0xc], eax
add eax, ebp
jne 0x140031b01
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x1400ee2b6.0]
nop
mov rbx, qword [rdi - 0x60]
test rbx, rbx
je 0x140031b40
mov eax, ebp
lock xadd dword [rbx + 8], eax
add eax, ebp
jne 0x140031b40
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax]
call qword [case.0x1400ee2b6.0]
mov eax, ebp
lock xadd dword [rbx + 0xc], eax
add eax, ebp
jne 0x140031b40
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x1400ee2b6.0]
nop
mov rbx, qword [rdi - 0x70]
test rbx, rbx
je 0x140031b7f
mov eax, ebp
lock xadd dword [rbx + 8], eax
add eax, ebp
jne 0x140031b7f
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax]
call qword [case.0x1400ee2b6.0]
mov eax, ebp
lock xadd dword [rbx + 0xc], eax
add eax, ebp
jne 0x140031b7f
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x1400ee2b6.0]
nop
mov rbx, qword [rdi - 0x80]
test rbx, rbx
je 0x140031bbe
mov eax, ebp
lock xadd dword [rbx + 8], eax
add eax, ebp
jne 0x140031bbe
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax]
call qword [case.0x1400ee2b6.0]
mov eax, ebp
lock xadd dword [rbx + 0xc], eax
add eax, ebp
jne 0x140031bbe
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x1400ee2b6.0]
nop
mov rax, qword [rdi - 0x90]
cmp rax, 8
jb 0x140031bfd
mov rcx, qword [rdi - 0xa8]
lea rax, [rax*2 + 2]
cmp rax, 0x1000
jb 0x140031bf6
mov rdx, qword [rcx - 8]
sub rcx, rdx
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140031c25
mov rcx, rdx
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
nop
mov qword [rdi - 0x98], rsi
mov qword [rdi - 0x90], r14
mov word [rdi - 0xa8], si
mov rbx, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
add rsp, 0x30
pop r14
pop rdi
pop rsi
ret
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
nop
nop
nop
nop
mov rax, rsp
push rbp
push rdi
push r14
mov rbp, rsp
sub rsp, 0x80
mov qword [rbp - 0x50], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov rax, qword [0x1401cd010]
xor rax, rsp
mov qword [rbp - 8], rax
mov rdi, rcx
mov edx, dword [rcx + 0x10]
or r14d, 0xffffffff
cmp edx, r14d
je 0x140031e7a
lea rcx, [rbp - 0x28]
call 0x140031e94
mov rdx, rax
lea rcx, [rdi + 0x18]
call fcn.140009df0
mov rax, qword [rbp - 0x10]
cmp rax, 8
jb 0x140031cc7
lea rax, [rax*2 + 2]
mov rcx, qword [rbp - 0x28]
mov rdx, rcx
cmp rax, 0x1000
jb 0x140031cc0
mov rcx, qword [rcx - 8]
sub rdx, rcx
lea rax, [rdx - 8]
cmp rax, 0x1f
jbe 0x140031cc0
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
nop
mov rcx, qword [rdi + 0xa0]
test rcx, rcx
je 0x140031e6a
mov rax, qword [rcx]
mov r8, rdi
lea rdx, [rbp - 0x60]
mov rax, qword [rax + 0x18]
call qword [case.0x1400ee2b6.0]
mov rax, qword [rbp - 0x60]
mov rcx, qword [rbp - 0x58]
and qword [rbp - 0x60], 0
xor ebx, ebx
mov qword [rbp - 0x58], rbx
mov qword [rdi + 0x38], rax
mov qword [rbp - 0x48], rcx
mov rsi, qword [rdi + 0x40]
mov qword [rdi + 0x40], rcx
test rsi, rsi
je 0x140031d55
mov eax, r14d
lock xadd dword [rsi + 8], eax
add eax, r14d
jne 0x140031d51
mov rax, qword [rsi]
mov rcx, rsi
mov rax, qword [rax]
call qword [case.0x1400ee2b6.0]
mov eax, r14d
lock xadd dword [rsi + 0xc], eax
add eax, r14d
jne 0x140031d51
nop dword [rax]
mov rax, qword [rsi]
mov rcx, rsi
mov rax, qword [rax + 8]
call qword [case.0x1400ee2b6.0]
nop
mov rbx, qword [rbp - 0x58]
test rbx, rbx
je 0x140031d94
mov eax, r14d
lock xadd dword [rbx + 8], eax
add eax, r14d
jne 0x140031d94
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax]
call qword [case.0x1400ee2b6.0]
mov eax, r14d
lock xadd dword [rbx + 0xc], eax
add eax, r14d
jne 0x140031d94
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x1400ee2b6.0]
nop
mov rdx, rdi
lea rcx, [rbp - 0x38]
call fcn.140032a04
mov rcx, qword [rax]
mov rdx, qword [rax + 8]
and qword [rax], 0
and qword [rax + 8], 0
mov qword [rdi + 0x48], rcx
mov qword [rbp - 0x40], rdx
mov rbx, qword [rdi + 0x50]
mov qword [rdi + 0x50], rdx
test rbx, rbx
je 0x140031dff
mov eax, r14d
lock xadd dword [rbx + 8], eax
add eax, r14d
jne 0x140031dff
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax]
call qword [case.0x1400ee2b6.0]
mov eax, r14d
lock xadd dword [rbx + 0xc], eax
add eax, r14d
jne 0x140031dff
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x1400ee2b6.0]
nop
mov rbx, qword [rbp - 0x30]
test rbx, rbx
je 0x140031e42
mov eax, r14d
lock xadd dword [rbx + 8], eax
add eax, r14d
jne 0x140031e42
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax]
call qword [case.0x1400ee2b6.0]
mov eax, r14d
lock xadd dword [rbx + 0xc], eax
add eax, r14d
jne 0x140031e42
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x1400ee2b6.0]
nop
mov byte [rdi + 0x14], 1
mov rcx, qword [rbp - 8]
xor rcx, rsp
call fcn.14012aa20
lea r11, [rsp + 0x80]
mov rbx, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rsp, r11
pop r14
pop rdi
pop rbp
ret
xor edx, edx
mov ecx, 0x285f310
call fcn.14000ad28
nop
jmp 0x140031e79
nop
xor edx, edx
mov ecx, 0x285f30f
call fcn.14000ad28
nop
jmp 0x140031e90
nop
nop
nop
nop
push rdi
sub rsp, 0x40
mov qword [rsp + 0x30], 0xfffffffffffffffe
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x60], rsi
movsxd rdi, edx
mov rbx, rcx
xor esi, esi
mov qword [rcx + 0x10], rsi
mov qword [rcx + 0x18], 7
mov word [rcx], si
lea rdx, str.Unknown_App
call fcn.140007920
cmp edi, 0x44
ja 0x140031ee6
lea rcx, [rdi + rdi*4]
lea rax, [0x14014abf0]
lea rdx, [rax + rcx*8]
jmp 0x140031ee9
mov rdx, rsi
test rdx, rdx
je 0x140031ef4
mov rdx, qword [rdx + 8]
jmp 0x140031f17
lea r9, str.Utils.cpp___GetAppName___Could_not_get_current_appinfo.
mov edx, 0x43b
mov ecx, 0x28496d9
mov r8d, 0x32
call fcn.140122aa8
lea rdx, str.Unknown_App
mov rcx, rbx
call fcn.140007920
mov r9, rbx
cmp qword [rbx + 0x18], 8
jb 0x140031f2c
mov r9, qword [rbx]
mov rcx, rbx
jb 0x140031f34
mov rcx, qword [rbx]
mov rax, qword [rbx + 0x10]
lea r8, [rcx + rax*2]
mov rdx, rbx
jb 0x140031f44
mov rdx, qword [rbx]
mov rax, qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_tolower]
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0x50]
call fcn.140007e48
mov rax, rbx
mov rbx, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
add rsp, 0x40
pop rdi
ret