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

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x80
mov r14, rcx
mov r13, r8
mov ecx, dword [0x14003d17c]
mov r15, rdx
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
or ebx, 0xffffffff
mov rsi, rax
test rax, rax
jne 0x140029deb
mov ebx, dword [0x14003d17c]
lea rdx, [rbp + 0x58]
and dword [rbp + 0x58], eax
lea rsi, [rbp + 0x58]
mov ecx, ebx
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsSetValue]
inc dword [rsi]
mov r10, qword [0x14003d048]
lea rax, [0x14003d048]
lea rdx, [0x140035650]
mov r12d, 0x1df
cmp r10, rax
je 0x140029e50
test byte [r10 + 0x1c], 1
je 0x140029e50
mov eax, dword [rsi]
lea ecx, [rax + rax*4]
cmp ecx, 0x1e1
ja 0x140029e2b
mov eax, ecx
mov ecx, r12d
sub rcx, rax
jmp 0x140029e2d
xor ecx, ecx
lea r9, [rcx + rdx]
mov qword [rsp + 0x28], r15
mov rcx, qword [r10 + 0x10]
lea r8, [0x140036f48]
mov edx, 0x25
mov qword [rsp + 0x20], r14
call fcn.14001abac
xor eax, eax
mov edi, eax
test r15, r15
je 0x140029e5e
test r13, r13
jne 0x140029e63
mov edi, 0x80070057
mov dword [rbp - 0x20], eax
mov qword [rbp - 0x18], rax
mov dword [rbp - 0x10], eax
test edi, edi
js 0x140029fb4
mov byte [r13], al
mov rdx, r15
mov rax, qword [r14]
mov rcx, r14
mov rax, qword [rax + 0x28]
call qword [0x140034e68]
mov edi, eax
test eax, eax
js 0x140029fb4
mov rax, qword [r14 + 8]
mov ecx, 0x8007139f
test rax, rax
cmove edi, ecx
test edi, edi
js 0x140029fb4
mov edx, dword [rax + 4]
lea r8, [rax + 0x207]
lea rcx, [rbp - 0x20]
call fcn.140028564
mov edi, eax
test eax, eax
js 0x140029fb4
lea r8, [rbp + 0x40]
mov byte [rbp + 0x40], 0
mov edx, 1
lea rcx, [rbp - 0x20]
call fcn.140028848
mov edi, eax
test eax, eax
js 0x140029fb4
mov dl, byte [rbp + 0x40]
mov r15b, dl
shr r15b, 4
and dl, 0xf
mov rcx, qword [0x14003d048]
lea rax, [0x14003d048]
cmp rcx, rax
je 0x140029f5f
test byte [rcx + 0x1c], 4
je 0x140029f5f
mov eax, dword [rsi]
inc eax
lea r8d, [rax + rax*4]
cmp r8d, 0x1e1
ja 0x140029f2c
mov eax, r8d
mov r8, r12
sub r8, rax
jmp 0x140029f2f
xor r8d, r8d
mov rcx, qword [rcx + 0x10]
lea r9, [0x140035650]
movzx eax, dl
add r9, r8
movzx edx, r15b
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edx
call fcn.140028048
mov rcx, qword [0x14003d048]
lea rax, [0x14003d048]
cmp r15b, 1
je 0x140029fb4
mov edi, 0x80070032
cmp rcx, rax
je 0x140029fb4
test byte [rcx + 0x1c], 0x10
je 0x140029fb4
mov eax, dword [rsi]
inc eax
lea edx, [rax + rax*4]
cmp edx, 0x1e1
ja 0x140029f8e
mov eax, edx
mov rdx, r12
sub rdx, rax
jmp 0x140029f90
xor edx, edx
mov rcx, qword [rcx + 0x10]
lea r9, [0x140035650]
add r9, rdx
movzx eax, r15b
mov edx, 0x27
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x20], eax
call fcn.14002821c
mov r15d, 0x40000
lea rdx, [0x140035918]
mov ecx, r15d
call fcn.140030598
mov qword [r14 + 0x18], rax
test rax, rax
jne 0x140029fd9
mov edi, 0x8007000e
jmp 0x140029fe6
mov r8, r15
xor edx, edx
mov rcx, rax
call sub.msvcrt.dll_memset
and dword [r14 + 0x20], 0
mov r15b, 1
mov byte [rbp + 0x40], 0
test edi, edi
js 0x14002a1e2
cmp byte [rbp + 0x40], 0
lea rax, [0x140033af8]
jne 0x14002a16e
cmp dword [r14 + 0x20], 0x400
jae 0x14002a16e
and qword [rbp - 0x30], 0
lea r8, [rbp - 0x40]
and dword [rbp - 0x28], 0
lea rdx, [rbp + 0x48]
and dword [rbp - 0x24], 0
lea rcx, [rbp - 0x20]
and qword [rbp - 0x40], 0
and dword [rbp + 0x48], 0
mov qword [rbp - 0x38], rax
call fcn.140028b34
mov edx, dword [rbp + 0x48]
mov edi, eax
test eax, eax
js 0x14002a055
test edx, edx
je 0x14002a15a
and dword [rbp + 0x48], 0
test eax, eax
js 0x14002a141
mov r8, qword [rbp - 0x40]
lea rax, [rbp + 0x40]
xor r9d, r9d
mov qword [rsp + 0x20], rax
lea rcx, [rbp - 0x38]
call fcn.140029380
mov edi, eax
test eax, eax
js 0x14002a141
mov r8d, dword [r14 + 0x20]
lea rcx, [rbp - 0x38]
shl r8, 8
mov dl, r15b
add r8, qword [r14 + 0x18]
lea r9, [r8 + 1]
call fcn.140029b1c
mov edi, eax
test eax, eax
js 0x14002a141
mov r10, qword [0x14003d048]
lea rax, [0x14003d048]
cmp r10, rax
je 0x14002a114
test byte [r10 + 0x1c], 4
je 0x14002a114
mov eax, dword [rsi]
inc eax
lea ecx, [rax + rax*4]
cmp ecx, 0x1e1
ja 0x14002a0dd
mov eax, ecx
mov rcx, r12
sub rcx, rax
jmp 0x14002a0df
xor ecx, ecx
mov rax, qword [r14 + 0x18]
lea r9, [0x140035650]
mov r8d, dword [r14 + 0x20]
add r9, rcx
mov rcx, qword [r10 + 0x10]
shl r8, 8
lea rdx, [rax + 1]
add rdx, r8
mov qword [rsp + 0x28], rdx
movzx r8d, byte [r8 + rax]
mov dword [rsp + 0x20], r8d
call fcn.140028348
xor r15b, r15b
cmp edi, 1
je 0x14002a120
inc dword [r14 + 0x20]
lea rdx, [rbp + 0x48]
lea rcx, [rbp - 0x38]
call fcn.140029050
mov edi, eax
test eax, eax
js 0x14002a141
mov edx, dword [rbp + 0x48]
lea rcx, [rbp - 0x20]
call fcn.1400289cc
mov edi, eax
lea rax, [0x140033af8]
lea rcx, [rbp - 0x38]
mov qword [rbp - 0x38], rax
call fcn.140028ce0
jmp 0x140029ff2
lea rax, [0x140033af8]
lea rcx, [rbp - 0x38]
mov qword [rbp - 0x38], rax
call fcn.140028ce0
test edi, edi
js 0x14002a1e2
mov rcx, qword [0x14003d048]
lea rax, [0x14003d048]
cmp rcx, rax
je 0x14002a1d4
test byte [rcx + 0x1c], 4
je 0x14002a1d4
mov eax, dword [rsi]
inc eax
lea edx, [rax + rax*4]
cmp edx, 0x1e1
ja 0x14002a1a4
mov eax, edx
mov rdx, r12
sub rdx, rax
jmp 0x14002a1a6
xor edx, edx
mov eax, dword [r14 + 0x20]
lea r9, [0x140035650]
mov rcx, qword [rcx + 0x10]
lea r8, [0x140036f48]
add r9, rdx
mov dword [rsp + 0x20], eax
mov edx, 0x29
call fcn.140001304
mov rcx, qword [0x14003d048]
cmp dword [r14 + 0x20], 0
seta al
mov byte [r13], al
jmp 0x14002a1e9
mov rcx, qword [0x14003d048]
lea rax, [0x14003d048]
cmp rcx, rax
je 0x14002a23a
test byte [rcx + 0x1c], 1
je 0x14002a23a
mov eax, dword [rsi]
lea edx, [rax + rax*4]
cmp edx, 0x1e1
ja 0x14002a20f
mov eax, edx
sub r12, rax
jmp 0x14002a212
xor r12d, r12d
mov rcx, qword [rcx + 0x10]
lea r9, [0x140035650]
add r9, r12
mov dword [rsp + 0x28], edi
mov edx, 0x2a
mov qword [rsp + 0x20], r14
lea r8, [0x140036f48]
call fcn.140001730
or eax, 0xffffffff
add dword [rsi], eax
cmp ebx, eax
je 0x14002a25a
mov ecx, ebx
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
test rax, rax
je 0x14002a25a
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 + 0xd0]
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret