Function at 0x1000fe2b0
Capabilities:
Get thread local storage value

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x70
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rsp + 0xb8], rbx
mov rdi, rdx
mov r15, rcx
call fcn.100068a00
mov rsi, rax
mov r8, qword gs:[0x30]
lea rbx, [r8 + rax]
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x1000fe303
mov ecx, esi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
test rbx, rbx
je 0x1000fe319
mov rbp, qword [rbx + 0xd8]
mov qword [rsp + 0x30], rbp
test rbp, rbp
jne 0x1000fe356
call fcn.100063d30
call fcn.100068a00
mov rbx, rax
mov rcx, qword gs:[0x30]
lea rsi, [rcx + rax]
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x1000fe34a
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rsi, rax
mov rbp, qword [rsi + 0xd8]
mov qword [rsp + 0x30], rbp
lock inc dword [r15 + 8]
lock dec dword [r15]
xor ebx, ebx
call fcn.10006bba0
lea esi, [rbx + 1]
test eax, eax
je 0x1000fe379
call qword [0x10023f478]
test rax, rax
cmove ebx, esi
movsxd r14, ebx
mov qword [rsp + 0x38], r14
mov rax, r14
shl rax, 4
lea rsi, [r15 + 0x18]
add rsi, rax
mov qword [rsp + 0x28], rsi
lea r12, [r15 + 0x50]
xor ebx, ebx
nop word [rax + rax]
mov r13d, ebx
call fcn.100064800
mov edx, eax
xor eax, eax
lock cmpxchg dword [r12], edx
mov ecx, ebx
sete cl
test ecx, ecx
jne 0x1000fe3c3
mov rcx, r12
call fcn.1000d2e10
mov rbx, qword [rsi + 8]
cmp rbx, rsi
jne 0x1000fe3d0
xor ebx, ebx
jmp 0x1000fe3f6
test rbx, rbx
je 0x1000fe478
mov rcx, qword [rbx + 8]
mov rax, qword [rbx]
mov qword [rax + 8], rcx
mov qword [rcx], rax
mov qword [rbx + 8], 0
mov qword [rbx], 0
test rbx, rbx
je 0x1000fe478
mov dword [r12], 0
mov qword [rbx + 0x228], rdi
mov qword [rdi + 0xd8], rbx
mov rdx, qword [rbx + 0x38]
test rdx, rdx
je 0x1000fe43e
mov rax, qword [rbx + 0x30]
test rax, rax
je 0x1000fe43e
mov r8d, 0x10
cmp rax, r8
cmovl r8, rax
shl r8, 3
mov rcx, rdi
call sub.MSVCR100.dll_memcpy
jmp 0x1000fe44e
xor edx, edx
mov r8d, 0x80
mov rcx, rdi
call sub.MSVCR100.dll_memset
mov eax, dword [rdi + 0xe0]
mov ecx, eax
xor ecx, 1
and ecx, eax
mov eax, ecx
xor eax, 2
and eax, ecx
mov dword [rdi + 0xe0], eax
mov edx, dword [rbx + 0x7c]
mov rcx, rdi
call fcn.100089910
jmp 0x1000fe62e
cmp r14, 1
jne 0x1000fe491
xor ebx, ebx
mov dword [r12], ebx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x1000fe3a0
mov rax, qword [r15 + 0x48]
mov rcx, qword [rax + 0x128]
test byte [rcx + 0x590], 8
je 0x1000fe4af
lea rax, [r15 + 0x38]
cmp qword [rax + 8], rax
jne 0x1000fe4bb
mov ecx, dword [r15 + 0x54]
mov eax, dword [r15 + 4]
cmp eax, ecx
jl 0x1000fe506
xor esi, esi
mov dword [rsp + 0xb0], esi
mov rax, qword [0x1002470c8]
test rax, rax
je 0x1000fe4f7
lea rdx, [rsp + 0xb0]
mov rcx, qword [rdi + 0x100]
call rax
test eax, eax
jne 0x1000fe4ee
mov dword [rsp + 0xb0], esi
jmp 0x1000fe4f7
cmp dword [rsp + 0xb0], esi
jne 0x1000fe508
call fcn.10006bba0
test eax, eax
je 0x1000fe8e2
jmp 0x1000fe508
xor esi, esi
lea rbx, [r15 + 0x38]
lea rcx, [rdi + 0x80]
mov rax, qword [rbx + 8]
mov qword [rcx + 8], rax
mov rax, qword [rbx + 8]
mov qword [rax], rcx
mov qword [rbx + 8], rcx
mov qword [rcx], rbx
lock inc dword [r15 + 4]
mov dword [r12], esi
call fcn.10006af90
mov edx, eax
mov rcx, rdi
call fcn.1000646f0
mov r13d, eax
test eax, eax
je 0x1000fe614
mov qword [rsp + 0x58], r12
mov dword [rsp + 0x60], esi
call fcn.100064800
mov edx, eax
xor eax, eax
lock cmpxchg dword [r12], edx
mov r8d, 0
mov ecx, r8d
sete cl
mov rsi, qword [rsp + 0x58]
test ecx, ecx
jne 0x1000fe584
mov rcx, rsi
call fcn.1000d2e10
xor r8d, r8d
mov dword [rsp + 0x60], 1
mov rax, qword [rbx + 8]
cmp rax, rbx
je 0x1000fe5a0
test rax, rax
je 0x1000fe5a0
add rax, 0xffffffffffffff80
jmp 0x1000fe5a3
mov rax, r8
test rax, rax
je 0x1000fe5f6
cmp rax, rdi
je 0x1000fe5ce
mov rax, qword [rax + 0x88]
cmp rax, rbx
je 0x1000fe5c4
test rax, rax
je 0x1000fe5c4
add rax, 0xffffffffffffff80
jmp 0x1000fe5c7
mov rax, r8
test rax, rax
jne 0x1000fe5a8
jmp 0x1000fe5f6
test rax, rax
je 0x1000fe5f6
mov rdx, qword [rax + 0x88]
mov rcx, qword [rax + 0x80]
mov qword [rcx + 8], rdx
mov qword [rdx], rcx
mov qword [rax + 0x88], r8
mov qword [rax + 0x80], r8
mov ecx, r8d
test rax, rax
sete cl
test rsi, rsi
je 0x1000fe607
mov dword [rsi], r8d
test ecx, ecx
mov esi, 0
jne 0x1000fe532
mov rbx, qword [rdi + 0xd8]
lock dec dword [r15 + 4]
mov rsi, qword [rsp + 0x28]
test r13d, r13d
jne 0x1000fe84c
test rbx, rbx
je 0x1000fe84c
mov rcx, r15
call fcn.1000fe960
mov rdx, rbx
mov rcx, rdi
call fcn.100101120
mov r13d, eax
call fcn.100068a00
mov rsi, rax
mov rbx, qword gs:[0x30]
add rbx, rax
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x1000fe678
mov ecx, esi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
test rbx, rbx
je 0x1000fe689
mov rbx, qword [rbx + 0xd8]
test rbx, rbx
jne 0x1000fe6c0
call fcn.100063d30
call fcn.100068a00
mov rsi, rax
mov rbx, qword gs:[0x30]
add rbx, rax
mov rcx, rax
call fcn.10006c530
test eax, eax
jne 0x1000fe6b9
mov ecx, esi
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbx, rax
mov rbx, qword [rbx + 0xd8]
mov rdx, rbp
mov rcx, rdi
call fcn.1000668b0
mov r11, qword [rbx + 0x218]
mov edx, dword [rdi + 0x120]
test dl, 4
je 0x1000fe7ac
mov rdx, qword [rsp + 0x30]
mov rbp, qword [rdx + 0x388]
mov rsi, qword [rdx + 0x218]
mov r14, qword [rdx + 0x390]
mov rcx, qword [r11 + 0xac0]
mov rax, qword [rbx + 0x388]
mov qword [rdx + 0x388], rax
mov qword [rdx + 0x218], r11
mov qword [rdx + 0x390], rcx
mov eax, dword [r11 + 0xa98]
mov dword [rdx + 0x7c], eax
lea rcx, [rbx + 0x10]
or eax, 0xffffffff
lock xadd dword [rcx + 0x10], eax
dec eax
jne 0x1000fe74f
cmp qword [rcx + 8], 0
je 0x1000fe746
call fcn.100101210
jmp 0x1000fe74f
add rcx, 0xfffffffffffffff0
call fcn.100065c90
call fcn.10006b8f0
mov r11d, dword [0x100278934]
test r11d, r11d
jle 0x1000fe767
lock dec dword [0x100278934]
mov eax, dword [rdi + 0x120]
mov ecx, eax
xor ecx, 4
and ecx, eax
mov dword [rdi + 0x120], ecx
mov rax, qword [rsp + 0x30]
mov qword [rax + 0x388], rbp
mov rbp, rax
mov qword [rax + 0x218], rsi
mov qword [rax + 0x390], r14
mov r14, qword [rsp + 0x38]
test rsi, rsi
je 0x1000fe7e0
mov eax, dword [rsi + 0xa98]
mov dword [rbp + 0x7c], eax
jmp 0x1000fe7e0
test dl, 1
je 0x1000fe7e0
shr edx, 1
not edx
and edx, 1
xor r8d, r8d
mov rcx, rbx
call fcn.1000d5520
mov r11d, dword [rdi + 0x120]
mov ecx, r11d
xor ecx, 1
and ecx, r11d
mov eax, ecx
xor eax, 2
and eax, ecx
mov dword [rdi + 0x120], eax
test byte [rdi + 0xe0], 8
mov rsi, qword [rsp + 0x28]
mov ebx, 0
je 0x1000fe3a0
mov dword [rsp + 0xc0], ebx
mov rax, qword [0x1002470c8]
test rax, rax
je 0x1000fe835
lea rdx, [rsp + 0xc0]
mov rcx, qword [rdi + 0x100]
call rax
test eax, eax
jne 0x1000fe828
mov dword [rsp + 0xc0], ebx
jmp 0x1000fe835
cmp dword [rsp + 0xc0], ebx
jne 0x1000fe3a0
call fcn.10006bba0
test eax, eax
je 0x1000fe8e8
mov rsi, qword [rsp + 0x28]
jmp 0x1000fe3a0
mov qword [rsp + 0x48], r12
xor ebx, ebx
mov dword [rsp + 0x50], ebx
call fcn.100064800
mov edx, eax
xor eax, eax
lock cmpxchg dword [r12], edx
mov ecx, ebx
sete cl
test ecx, ecx
jne 0x1000fe879
mov rcx, qword [rsp + 0x48]
call fcn.1000d2e10
mov dword [rsp + 0x50], 1
mov eax, dword [r15 + 4]
test eax, eax
je 0x1000fe8cd
mov dword [rsp + 0xc8], ebx
mov rax, qword [0x1002470c8]
test rax, rax
je 0x1000fe8c4
lea rdx, [rsp + 0xc8]
mov rcx, qword [rdi + 0x100]
call rax
test eax, eax
jne 0x1000fe8ba
mov dword [rsp + 0xc8], ebx
jmp 0x1000fe8c4
cmp dword [rsp + 0xc8], 0
jne 0x1000fe8cd
call fcn.10006bba0
test eax, eax
je 0x1000fe8fc
mov rax, qword [rsp + 0x48]
test rax, rax
je 0x1000fe3a0
mov dword [rax], ebx
jmp 0x1000fe3a0
mov dword [r12], esi
jmp 0x1000fe908
lock dec dword [r15 + 8]
mov rcx, r15
call fcn.1000fe960
lock inc dword [r15 + 8]
jmp 0x1000fe908
mov rax, qword [rsp + 0x48]
test rax, rax
je 0x1000fe908
mov dword [rax], ebx
lock dec dword [r15 + 8]
mov eax, r13d
mov rbx, qword [rsp + 0xb8]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret