Function at 0x1801a01f0
Capabilities:
Get thread local storage value

Disassembly:
push rbx
sub rsp, 0x60
mov rbx, rcx
call fcn.1801fe3e0
test eax, eax
js 0x1801a0b7c
xor edx, edx
mov rcx, rbx
call fcn.1801a3240
test eax, eax
je 0x1801a021c
test eax, eax
js 0x1801a0b7c
mov rcx, rbx
call fcn.18019ffa0
test eax, eax
je 0x1801a0230
test eax, eax
js 0x1801a0b7c
mov rcx, rbx
call fcn.1801a6ac0
test eax, eax
je 0x1801a0244
test eax, eax
js 0x1801a0b7c
mov rcx, qword [rbx + 0x18]
test rcx, rcx
je 0x1801a0276
nop dword [rax]
mov eax, dword [rcx + 0x78]
and eax, 0xfff00000
cmp eax, 0x10600000
jne 0x1801a026e
mov eax, dword [rcx + 0x20]
and eax, 0xfffff
bts eax, 0x1c
mov dword [rcx + 0x78], eax
mov rcx, qword [rcx]
test rcx, rcx
jne 0x1801a0250
test byte [rbx + 0xd218], 4
je 0x1801a029c
or dword [rbx + 0xd228], 2
xor edx, edx
mov rcx, rbx
call fcn.1801a3240
test eax, eax
je 0x1801a029c
test eax, eax
js 0x1801a0b7c
mov rcx, rbx
call fcn.1801a9700
test eax, eax
je 0x1801a02b0
test eax, eax
js 0x1801a0b7c
mov qword [rsp + 0x70], rbp
xor ebp, ebp
test byte [rbx + 0xd218], 4
mov qword [rsp + 0x80], rsi
mov qword [rsp + 0x88], rdi
je 0x1801a039c
mov rcx, rbx
call fcn.1801a1590
test eax, eax
je 0x1801a02e8
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801a75d0
test eax, eax
je 0x1801a02fc
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1802019b0
test eax, eax
je 0x1801a0310
test eax, eax
js 0x1801a0b67
mov rax, qword [rbx]
mov edx, 1
mov rcx, rbx
call qword [rax + 0x38]
test eax, eax
je 0x1801a032a
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801a1590
test eax, eax
je 0x1801a033e
test eax, eax
js 0x1801a0b67
mov edx, 0x1f
mov rcx, rbx
call fcn.1801dddc0
test eax, eax
je 0x1801a0357
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801de700
test eax, eax
je 0x1801a036b
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.180202ae0
test eax, eax
je 0x1801a037f
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801a5bc0
test eax, eax
je 0x1801a09d2
test eax, eax
jns 0x1801a09d2
jmp 0x1801a0b67
mov edx, 0x1f
mov rcx, rbx
call fcn.1801dddc0
test eax, eax
je 0x1801a03b5
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801a7700
test eax, eax
je 0x1801a03c9
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1802019b0
test eax, eax
je 0x1801a03dd
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801a0b90
test eax, eax
je 0x1801a03f1
test eax, eax
js 0x1801a0b67
mov esi, ebp
mov dword [rsp + 0x78], ebp
mov rcx, rbx
call fcn.1801df1f0
test eax, eax
jne 0x1801a0407
mov eax, ebp
jmp 0x1801a040f
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete dil
call fcn.1801dead0
test eax, eax
jne 0x1801a0425
mov eax, ebp
jmp 0x1801a042d
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1801e46b0
test eax, eax
jne 0x1801a0445
mov eax, ebp
jmp 0x1801a044d
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1801de700
test eax, eax
jne 0x1801a0465
mov eax, ebp
jmp 0x1801a046d
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1801de470
test eax, eax
jne 0x1801a0485
mov eax, ebp
jmp 0x1801a048d
test eax, eax
js 0x1801a0b67
test eax, eax
sete al
or dil, al
test byte [rbx + 0xcefc], 4
je 0x1801a04de
mov rcx, rbx
call fcn.1801d0290
test eax, eax
jne 0x1801a04ae
mov eax, ebp
jmp 0x1801a04b6
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1801a5170
test eax, eax
jne 0x1801a04ce
mov eax, ebp
jmp 0x1801a04d6
test eax, eax
js 0x1801a0b67
test eax, eax
sete al
or dil, al
mov edx, 0x1f
mov rcx, rbx
call fcn.1801dddc0
test eax, eax
jne 0x1801a04f3
mov eax, ebp
jmp 0x1801a04fb
test eax, eax
js 0x1801a0b67
cmp dword [rsp + 0x78], ebp
jne 0x1801a050f
test eax, eax
movzx edi, dil
mov eax, 1
cmove edi, eax
mov rcx, rbx
call fcn.1801a1590
test eax, eax
jne 0x1801a051f
mov eax, ebp
jmp 0x1801a0527
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1801a3880
test eax, eax
jne 0x1801a053f
mov eax, ebp
jmp 0x1801a0547
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
xor edx, edx
or dil, al
call fcn.1801a3f50
test eax, eax
jne 0x1801a0561
mov eax, ebp
jmp 0x1801a0569
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1801a44f0
test eax, eax
jne 0x1801a0581
mov eax, ebp
jmp 0x1801a0589
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1802032a0
test eax, eax
jne 0x1801a05a1
mov eax, ebp
jmp 0x1801a05a9
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.180203b60
test eax, eax
jne 0x1801a05c1
mov eax, ebp
jmp 0x1801a05c9
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1802042e0
test eax, eax
jne 0x1801a05e1
mov eax, ebp
jmp 0x1801a05e9
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.180202ae0
test eax, eax
jne 0x1801a0601
mov eax, ebp
jmp 0x1801a0609
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1801a75d0
test eax, eax
jne 0x1801a0621
mov eax, ebp
jmp 0x1801a0629
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1802049a0
test eax, eax
jne 0x1801a0641
mov eax, ebp
jmp 0x1801a0649
test eax, eax
js 0x1801a0b67
test eax, eax
sete al
or dil, al
jne 0x1801a0663
mov ecx, 1
cmp esi, ecx
mov eax, ecx
cmova eax, esi
mov esi, eax
jmp 0x1801a0668
mov ecx, 1
cmp esi, 1
jb 0x1801a06e6
mov eax, ecx
cmp esi, 1
mov edx, ecx
cmova eax, esi
mov rcx, rbx
mov esi, eax
mov rax, qword [rbx]
call qword [rax + 0x38]
test eax, eax
jne 0x1801a068a
mov eax, ebp
jmp 0x1801a0692
test eax, eax
js 0x1801a0b67
test eax, eax
mov edx, 1
mov rcx, rbx
sete al
or dil, al
mov rax, qword [rbx]
call qword [rax + 0x48]
test eax, eax
jne 0x1801a06b0
mov eax, ebp
jmp 0x1801a06b8
test eax, eax
js 0x1801a0b67
test eax, eax
mov edx, 1
mov rcx, rbx
sete al
or dil, al
mov rax, qword [rbx]
call qword [rax + 0x40]
test eax, eax
jne 0x1801a06d6
mov eax, ebp
jmp 0x1801a06de
test eax, eax
js 0x1801a0b67
test eax, eax
sete al
or dil, al
test dil, dil
jne 0x1801a06f7
mov eax, 2
cmp esi, eax
cmova eax, esi
mov esi, eax
cmp esi, 2
jb 0x1801a075c
mov rcx, rbx
call fcn.1801e48c0
test eax, eax
jne 0x1801a070c
mov eax, ebp
jmp 0x1801a0714
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1801e7510
test eax, eax
jne 0x1801a072c
mov eax, ebp
jmp 0x1801a0734
test eax, eax
js 0x1801a0b67
test eax, eax
mov rcx, rbx
sete al
or dil, al
call fcn.1801de9c0
test eax, eax
jne 0x1801a074c
mov eax, ebp
jmp 0x1801a0754
test eax, eax
js 0x1801a0b67
test eax, eax
sete al
or dil, al
test dil, dil
je 0x1801a0792
mov edx, 0x1f
mov rcx, rbx
call fcn.1801dddc0
test eax, eax
je 0x1801a077a
test eax, eax
js 0x1801a0b67
mov edi, dword [rsp + 0x78]
inc edi
mov dword [rsp + 0x78], edi
cmp edi, 0x100
jb 0x1801a03f7
jmp 0x1801a0796
mov edi, dword [rsp + 0x78]
cmp edi, 0x100
jne 0x1801a07b2
lea r9, [0x180047e18]
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.18019df60
test byte [rbx + 0xcef9], 0x80
je 0x1801a07d8
test byte [rbx + 0xcefa], 1
jne 0x1801a07d8
mov rcx, rbx
call fcn.1802094f0
test eax, eax
je 0x1801a07d8
test eax, eax
js 0x1801a0b67
mov r8d, dword [rbx + 0xc]
or edx, 0xffffffff
nop
inc edx
cmp edx, r8d
jae 0x1801a0903
mov rax, qword [rbx + 0xce58]
mov rcx, qword [rax + rdx*8]
cmp qword [rcx + 0x30], rbp
je 0x1801a07e0
mov rax, qword [rcx + 0x10]
bt rax, 8
jae 0x1801a07e0
test rax, 0xc00
jne 0x1801a07e0
mov rcx, qword [rcx + 0x30]
mov r11, qword [rcx]
nop word [rax + rax]
mov r8, qword [rbx + 0xd040]
mov r9, qword [rcx + 0xa8]
cmp r9, r8
je 0x1801a08a3
test r9, r9
je 0x1801a0870
cmp r9, 0xffffffffffffffff
je 0x1801a0870
mov r10, qword [rcx + 8]
test r10, r10
je 0x1801a084f
mov rax, qword [rcx]
mov qword [r10], rax
jmp 0x1801a0856
mov rax, qword [rcx]
mov qword [r9 + 0x30], rax
mov r10, qword [rcx]
test r10, r10
je 0x1801a0868
mov rax, qword [rcx + 8]
mov qword [r10 + 8], rax
jmp 0x1801a0870
mov rax, qword [rcx + 8]
mov qword [r9 + 0x38], rax
test r8, r8
je 0x1801a089c
cmp r8, 0xffffffffffffffff
je 0x1801a089c
mov rax, qword [r8 + 0x38]
mov qword [rcx + 8], rax
mov rax, qword [r8 + 0x38]
test rax, rax
je 0x1801a0891
mov qword [rax], rcx
jmp 0x1801a0895
mov qword [r8 + 0x30], rcx
mov qword [rcx], rbp
mov qword [r8 + 0x38], rcx
mov qword [rcx + 0xa8], r8
mov dword [rcx + 0xc8], 0xffffffff
mov dword [rcx + 0xcc], 0xffffffff
test r11, r11
je 0x1801a08c4
mov rcx, r11
mov r11, qword [r11]
jmp 0x1801a08fa
mov r8d, dword [rbx + 0xc]
inc edx
cmp edx, r8d
jae 0x1801a0903
mov rax, qword [rbx + 0xce58]
mov rcx, qword [rax + rdx*8]
cmp qword [rcx + 0x30], rbp
je 0x1801a08c8
mov rax, qword [rcx + 0x10]
bt rax, 8
jae 0x1801a08c8
test rax, 0xc00
jne 0x1801a08c8
mov rcx, qword [rcx + 0x30]
mov r11, qword [rcx]
test rcx, rcx
jne 0x1801a0820
mov rcx, rbx
call fcn.1801a0b90
test eax, eax
je 0x1801a0917
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801cead0
test eax, eax
je 0x1801a092b
test eax, eax
js 0x1801a0b67
test byte [rbx + 0xcef9], 0x80
je 0x1801a0951
test byte [rbx + 0xcefa], 1
je 0x1801a0951
mov rcx, rbx
call fcn.180209020
test eax, eax
je 0x1801a0951
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801df1f0
test eax, eax
je 0x1801a0965
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801ac0f0
test eax, eax
je 0x1801a0979
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801a5bc0
test eax, eax
je 0x1801a098d
test eax, eax
js 0x1801a0b67
xor edx, edx
mov rcx, rbx
call fcn.1801a3240
test eax, eax
je 0x1801a09a3
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.18019ffa0
test eax, eax
je 0x1801a09b7
test eax, eax
js 0x1801a0b67
mov rcx, rbx
call fcn.1801a6ac0
test eax, eax
je 0x1801a09cb
test eax, eax
js 0x1801a0b67
or dword [rbx + 0xd228], 2
mov rdi, qword [rbx + 0xd240]
test rdi, rdi
je 0x1801a0b65
cmp byte [rbx + 0xcf5a], bpl
jne 0x1801a0b65
mov rbx, rbp
lea rax, [rsp + 0x40]
mov qword [rsp + 0x28], 4
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x30], rbx
mov byte [rsp + 0x38], bl
mov byte [rsp + 0x39], 1
or rax, 0xffffffffffffffff
sub rax, rbx
cmp rax, 1
jb 0x1801a0a5d
lea rsi, [rbx + 1]
cmp rsi, qword [rsp + 0x28]
jbe 0x1801a0a4a
cmp byte [rsp + 0x39], bpl
je 0x1801a0a5d
lea rcx, [rsp + 0x20]
mov rdx, rsi
call fcn.1800c4d70
test eax, eax
je 0x1801a0a4a
mov rbx, qword [rsp + 0x30]
jmp 0x1801a0a5d
mov rax, qword [rsp + 0x20]
mov qword [rsp + 0x30], rsi
mov qword [rax + rbx*8], rdi
mov rbx, qword [rsp + 0x30]
mov rdi, qword [rdi + 0xd240]
test rdi, rdi
jne 0x1801a0a13
mov esi, dword [rsp + 0x30]
test esi, esi
je 0x1801a0b2d
dec esi
mov ecx, esi
cmp rcx, rbx
jae 0x1801a0a89
mov rax, qword [rsp + 0x20]
lea rdi, [rax + rsi*8]
jmp 0x1801a0a8c
mov rdi, rbp
mov rdi, qword [rdi]
mov rcx, rdi
and dword [rdi + 0xd228], 0xffffff89
call fcn.180193970
mov ebx, eax
test eax, eax
je 0x1801a0aa8
test eax, eax
js 0x1801a0ade
mov rcx, rdi
call fcn.1801a1590
mov ebx, eax
test eax, eax
je 0x1801a0aba
test eax, eax
js 0x1801a0ade
mov rcx, rdi
call fcn.1801a01f0
mov ebx, eax
test eax, eax
je 0x1801a0acc
test eax, eax
js 0x1801a0ade
mov rcx, rdi
call fcn.1801a82f0
mov ebx, eax
test eax, eax
je 0x1801a0ae6
test eax, eax
jns 0x1801a0ae6
test ebx, ebx
je 0x1801a0ae6
test ebx, ebx
js 0x1801a0af1
test esi, esi
je 0x1801a0b2d
mov rbx, qword [rsp + 0x30]
jmp 0x1801a0a75
mov qword [rsp + 0x30], rbp
cmp byte [rsp + 0x38], bpl
je 0x1801a0b29
mov rdi, qword [rsp + 0x20]
test rdi, rdi
je 0x1801a0b29
mov ecx, dword [0x18025e63c]
test ecx, ecx
js 0x1801a0b1a
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbp, rax
mov rcx, qword [rbp]
mov r8, rdi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, ebx
jmp 0x1801a0b67
mov qword [rsp + 0x30], rbp
cmp byte [rsp + 0x38], bpl
je 0x1801a0b65
mov rbx, qword [rsp + 0x20]
test rbx, rbx
je 0x1801a0b65
mov ecx, dword [0x18025e63c]
test ecx, ecx
js 0x1801a0b56
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rbp, rax
mov rcx, qword [rbp]
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor eax, eax
mov rsi, qword [rsp + 0x80]
mov rbp, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x88]
add rsp, 0x60
pop rbx
ret