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

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x70
mov rdi, rcx
mov r13, r9
mov ecx, dword [0x14003d17c]
mov r12, r8
mov r14, rdx
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
xor edx, edx
or ebx, 0xffffffff
mov rsi, rax
test rax, rax
jne 0x14002a78c
mov ebx, dword [0x14003d17c]
lea rsi, [rbp - 0x28]
mov dword [rbp - 0x28], edx
mov ecx, ebx
lea rdx, [rbp - 0x28]
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsSetValue]
xor edx, edx
mov eax, 1
add dword [rsi], eax
mov r10, qword [0x14003d048]
lea rcx, [0x14003d048]
lea r8, [0x140035650]
mov r15d, 0x1df
cmp r10, rcx
je 0x14002a7fd
test byte [r10 + 0x1c], al
je 0x14002a7fd
mov eax, dword [rsi]
lea ecx, [rax + rax*4]
cmp ecx, 0x1e1
ja 0x14002a7d0
mov eax, ecx
mov ecx, r15d
sub rcx, rax
jmp 0x14002a7d3
mov rcx, rdx
lea r9, [rcx + r8]
mov qword [rsp + 0x28], r14
mov rcx, qword [r10 + 0x10]
lea r8, [0x140036f48]
mov edx, 0x2f
mov qword [rsp + 0x20], rdi
call fcn.14001abac
mov r10, qword [0x14003d048]
xor edx, edx
mov edi, edx
test r14, r14
je 0x14002a810
test r12, r12
je 0x14002a810
test r13, r13
jne 0x14002a815
mov edi, 0x80070057
mov byte [rbp - 0x30], dl
mov dword [rbp - 0x18], edx
mov qword [rbp - 0x10], rdx
mov dword [rbp - 8], edx
test edi, edi
js 0x14002aab4
mov rcx, qword [rbp + 0x40]
mov rdx, r14
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
call qword [0x140034e68]
xor edx, edx
mov edi, eax
test eax, eax
js 0x14002aaad
mov rax, qword [rbp + 0x40]
mov ecx, 0x8007139f
mov rax, qword [rax + 8]
test rax, rax
cmove edi, ecx
test edi, edi
js 0x14002aaad
mov edx, dword [rax + 4]
lea r8, [rax + 0x207]
lea rcx, [rbp - 0x18]
call fcn.140028564
xor edx, edx
mov edi, eax
test eax, eax
js 0x14002aaad
mov word [rbp + 0x48], dx
lea r8, [rbp + 0x48]
mov edx, 2
lea rcx, [rbp - 0x18]
call fcn.140028848
xor edx, edx
mov edi, eax
test eax, eax
js 0x14002aaad
movzx ecx, word [rbp + 0x48]
call qword [sym.imp.WS2_32.dll_ntohs]
movzx r14d, ax
mov r10, qword [0x14003d048]
lea rdx, [0x14003d048]
cmp r10, rdx
je 0x14002a911
test byte [r10 + 0x1c], 4
je 0x14002a911
mov ecx, dword [rsi]
inc ecx
lea eax, [rcx + rcx*4]
cmp eax, 0x1e1
ja 0x14002a8e4
mov rcx, r15
sub rcx, rax
jmp 0x14002a8e8
xor eax, eax
mov ecx, eax
movzx eax, r14w
lea r9, [0x140035650]
add r9, rcx
mov dword [rsp + 0x20], eax
mov rcx, qword [r10 + 0x10]
call fcn.140027fbc
mov r10, qword [0x14003d048]
lea rdx, [0x14003d048]
mov ecx, 1
cmp r14w, cx
je 0x14002a97d
mov edi, 0x80070032
cmp r10, rdx
je 0x14002abfe
test byte [r10 + 0x1c], 0x10
je 0x14002abc5
mov eax, dword [rsi]
add eax, ecx
lea ecx, [rax + rax*4]
cmp ecx, 0x1e1
ja 0x14002a94e
mov eax, ecx
mov rcx, r15
sub rcx, rax
jmp 0x14002a952
xor eax, eax
mov ecx, eax
movzx eax, r14w
lea r9, [0x140035650]
add r9, rcx
mov dword [rsp + 0x30], edi
mov rcx, qword [r10 + 0x10]
mov edx, 0x31
mov dword [rsp + 0x20], eax
call fcn.14002821c
mov r10, qword [0x14003d048]
xor edx, edx
test edi, edi
js 0x14002aab4
mov word [rbp + 0x48], dx
lea r8, [rbp + 0x48]
mov edx, 2
lea rcx, [rbp - 0x18]
call fcn.140028848
xor edx, edx
mov edi, eax
test eax, eax
js 0x14002aaad
movzx ecx, word [rbp + 0x48]
call qword [sym.imp.WS2_32.dll_ntohs]
xor eax, eax
lea r8, [rbp + 0x48]
lea rcx, [rbp - 0x18]
mov byte [rbp + 0x48], al
lea r14d, [rax + 1]
mov edx, r14d
call fcn.140028848
xor edx, edx
mov edi, eax
test eax, eax
js 0x14002aaad
mov dil, byte [rbp + 0x48]
mov r10, qword [0x14003d048]
cmp dil, 2
jb 0x14002a9fa
mov edi, 0x80070057
lea r13, [0x14003d048]
jmp 0x14002aac1
lea rax, [0x14003d048]
cmp r10, rax
je 0x14002aa53
test byte [r10 + 0x1c], 4
je 0x14002aa53
mov eax, dword [rsi]
add eax, r14d
lea ecx, [rax + rax*4]
cmp ecx, 0x1e1
ja 0x14002aa27
mov eax, ecx
mov rcx, r15
sub rcx, rax
jmp 0x14002aa2a
mov rcx, rdx
movzx eax, dil
lea r9, [0x140035650]
add r9, rcx
mov dword [rsp + 0x20], eax
mov rcx, qword [r10 + 0x10]
lea r8, [0x140036f48]
mov edx, 0x32
call fcn.140001304
xor edx, edx
movzx eax, dil
lea r8, [rbp - 0x30]
mov dword [r13], eax
lea rcx, [rbp - 0x18]
mov word [r12], dx
mov edx, r14d
call fcn.140028848
xor edx, edx
mov edi, eax
test eax, eax
js 0x14002aaad
mov r14b, byte [rbp - 0x30]
test r14b, r14b
je 0x14002aaad
mov qword [rbp - 0x20], rdx
lea r8, [rbp - 0x20]
mov dword [rbp + 0x48], edx
lea rcx, [rbp - 0x18]
lea rdx, [rbp + 0x48]
call fcn.140028b34
xor edx, edx
test eax, eax
js 0x14002aaef
movzx eax, r14b
cmp dword [rbp + 0x48], eax
jae 0x14002aaef
mov edi, 0x8007000d
mov r10, qword [0x14003d048]
lea r13, [0x14003d048]
mov r14d, 1
cmp r10, r13
je 0x14002abfe
test byte [r10 + 0x1c], r14b
je 0x14002abfe
mov eax, dword [rsi]
lea ecx, [rax + rax*4]
cmp ecx, 0x1e1
ja 0x14002abcf
mov eax, ecx
sub r15, rax
jmp 0x14002abd2
mov r8, qword [rbp - 0x20]
mov edx, 8
movzx r9d, r14b
mov ecx, 0xfde9
mov dword [rsp + 0x28], 0xff
mov qword [rsp + 0x20], r12
call qword [sym.imp.api_ms_win_core_string_l1_1_0.dll_MultiByteToWideChar]
xor edx, edx
mov r14d, eax
test eax, eax
je 0x14002ab21
mov edi, edx
jmp 0x14002ab49
call qword [sym.imp.api_ms_win_core_errorhandling_l1_1_0.dll_GetLastError]
xor edx, edx
movzx edi, ax
or edi, 0x80070000
test eax, eax
cmovle edi, eax
mov eax, 0x80004005
test edi, edi
cmovns edi, eax
test edi, edi
js 0x14002aaad
mov word [r12 + r14*2], dx
mov r10, qword [0x14003d048]
lea r13, [0x14003d048]
cmp r10, r13
je 0x14002abfe
test byte [r10 + 0x1c], 4
je 0x14002aabb
mov eax, dword [rsi]
mov r14d, 1
add eax, r14d
lea ecx, [rax + rax*4]
cmp ecx, 0x1e1
ja 0x14002ab90
mov eax, ecx
mov rcx, r15
sub rcx, rax
jmp 0x14002ab93
mov rcx, rdx
lea r9, [0x140035650]
mov qword [rsp + 0x20], r12
add r9, rcx
lea r8, [0x140036f48]
mov rcx, qword [r10 + 0x10]
mov edx, 0x33
call fcn.140004a7c
mov r10, qword [0x14003d048]
xor edx, edx
jmp 0x14002aac1
xor edx, edx
mov r14d, ecx
jmp 0x14002a9ee
mov r15, rdx
mov rax, qword [rbp + 0x40]
lea r9, [0x140035650]
mov rcx, qword [r10 + 0x10]
lea r8, [0x140036f48]
add r9, r15
mov dword [rsp + 0x28], edi
mov edx, 0x34
mov qword [rsp + 0x20], rax
call fcn.140001730
or eax, 0xffffffff
add dword [rsi], eax
cmp ebx, eax
je 0x14002ac1e
mov ecx, ebx
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
test rax, rax
je 0x14002ac1e
xor edx, edx
mov ecx, ebx
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsSetValue]
mov eax, edi
mov rbx, qword [rsp + 0xc0]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret