Function at 0x18020f890
Capabilities:
Get thread local storage value

Disassembly:
mov rax, rsp
push rbx
push r13
sub rsp, 0xc8
mov qword [rax + 0x18], rbp
xor ebp, ebp
mov qword [rax - 0x18], rsi
mov qword [rax - 0x28], r12
mov qword [rax - 0x38], r15
mov qword [rsp + 0x20], rbp
mov qword [rsp + 0x28], rbp
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x38], rbp
mov r15, rbp
mov esi, ebp
mov dword [rsp + 0xe0], ebp
mov r12, rcx
call fcn.18019ffa0
lea r13d, [rbp + 1]
mov ebx, eax
test eax, eax
js 0x180210132
lea rdx, [rsp + 0x30]
mov rcx, r12
mov qword [rsp + 0xb8], rdi
call fcn.1802105f0
mov ebx, eax
test eax, eax
js 0x1802100d1
mov rax, qword [r12 + 0x18]
test rax, rax
je 0x18020f91b
nop
mov dword [rax + 0x50], ebp
mov rax, qword [rax]
test rax, rax
jne 0x18020f910
lea rdx, [rsp + 0x20]
mov rcx, r12
call fcn.1802107b0
mov ebx, eax
test eax, eax
js 0x18021005b
movzx eax, byte [r12 + 0xcef7]
test al, 0x40
jne 0x18020f947
test al, al
jns 0x18020f9df
mov rax, qword [r12 + 0x18]
test rax, rax
je 0x18020f95c
mov dword [rax + 0x40], ebp
mov rax, qword [rax]
test rax, rax
jne 0x18020f951
mov rdx, qword [r12 + 0x20]
test rdx, rdx
je 0x18020f9df
nop word [rax + rax]
mov eax, dword [rdx + 0x78]
mov ecx, eax
and ecx, 0xfff00000
je 0x18020f9d6
mov r10d, dword [rdx + 0x40]
and eax, 0xf0000000
cmp eax, 0x60000000
je 0x18020f995
cmp ecx, 0x50400000
jne 0x18020f9a0
lea eax, [r10 + 1]
add r10d, 2
mov dword [rdx + 0x40], eax
mov rax, qword [rdx + 0x58]
mov r8d, ebp
cmp dword [rax + 0x10], esi
jbe 0x18020f9d6
mov r9, rbp
nop
mov rax, qword [rdx + 0x58]
mov rcx, qword [rax]
mov rax, qword [r9 + rcx]
cmp dword [rax + 0x40], r10d
jae 0x18020f9c5
mov dword [rax + 0x40], r10d
mov rax, qword [rdx + 0x58]
inc r8d
add r9, 8
cmp r8d, dword [rax + 0x10]
jb 0x18020f9b0
mov rdx, qword [rdx + 8]
test rdx, rdx
jne 0x18020f970
mov rdx, qword [r12 + 0x18]
xor r9b, r9b
test rdx, rdx
je 0x18020fa89
mov ecx, dword [rdx + 0x78]
and ecx, 0xfff00000
je 0x18020fa7d
mov rax, qword [rdx + 0x28]
mov r8, qword [rax]
mov rax, qword [r8 + 0xa8]
test byte [rax + 0x10], 8
je 0x18020fa19
mov qword [rdx + 0x48], r8
jmp 0x18020fa70
cmp ecx, 0x23300000
je 0x18020fa5e
cmp ecx, 0x12900000
je 0x18020fa5e
cmp ecx, 0x23600000
je 0x18020fa5e
cmp ecx, 0x23700000
je 0x18020fa5e
cmp ecx, 0x30300000
je 0x18020fa5e
cmp ecx, 0x23f00000
je 0x18020fa5e
cmp ecx, 0x23900000
je 0x18020fa5e
mov rax, qword [r8 + 0xd0]
mov qword [rdx + 0x48], rax
jmp 0x18020fa70
mov rax, qword [rdx + 0x18]
mov rcx, qword [rax]
mov rax, qword [rcx + 0xd0]
mov qword [rdx + 0x48], rax
cmp qword [rdx + 0x48], 0xffffffffffffffff
movzx r9d, r9b
cmovne r9d, r13d
mov rdx, qword [rdx]
test rdx, rdx
jne 0x18020f9f0
test byte [r12 + 0xd218], 4
je 0x18020fa9c
mov ebx, r13d
jmp 0x18021005b
mov qword [rsp + 0xa8], r14
test r9b, r9b
je 0x18020fe0f
mov rcx, r12
mov rdi, rbp
call fcn.1801b3770
mov ebx, eax
test eax, eax
js 0x180210053
mov eax, dword [r12 + 0x14]
cmp eax, 0x1ffffffe
jbe 0x18020fad5
mov ebx, 0x80070216
jmp 0x18020fb41
mov rcx, qword [r12 + 0xd2c8]
lea esi, [rax*8]
mov eax, 8
test esi, esi
cmove esi, eax
test esi, esi
mov ebx, esi
cmove rbx, r13
test rcx, rcx
je 0x18020fb08
mov rax, qword [rcx + 0x10]
sub rax, qword [rcx + 8]
cmp rbx, rax
jbe 0x18020fb1c
lea rcx, [r12 + 0xd2c8]
mov rdx, rbx
call fcn.1800c57b0
test eax, eax
jne 0x18020fb36
mov rcx, qword [r12 + 0xd2c8]
test rcx, rcx
je 0x18020fb32
mov rax, qword [rcx + 8]
lea rdi, [rax + rcx + 0x18]
add qword [rcx + 8], rbx
mov ebx, 0x8007000e
test rdi, rdi
cmovne ebx, ebp
test ebx, ebx
jns 0x18020fb80
mov eax, esi
lea rcx, [r12 + 0xd2c8]
test rdi, rdi
je 0x180210053
mov rdx, qword [rcx]
test esi, esi
cmove rax, r13
cmp rax, qword [rdx + 8]
jae 0x18020fb70
sub qword [rdx + 8], rax
jmp 0x180210053
mov rax, qword [rdx]
mov qword [rcx], rax
call fcn.1800c56f0
jmp 0x180210053
mov rcx, qword [r12 + 0x18]
mov r8d, dword [r12 + 0x14]
mov rdx, rdi
test rcx, rcx
je 0x18020fbab
mov eax, r8d
dec r8d
test eax, eax
je 0x18020fbab
mov qword [rdx], rcx
mov rcx, qword [rcx]
add rdx, 8
test rcx, rcx
jne 0x18020fb92
mov r8d, dword [r12 + 0x14]
lea rcx, [0x18020f520]
xor r9d, r9d
mov rdx, rdi
call fcn.1801a7da0
mov r8d, dword [r12 + 0x14]
mov rdx, rdi
mov rcx, r12
call fcn.1801a0080
mov ebx, eax
test eax, eax
jns 0x18020fc13
mov eax, esi
lea rcx, [r12 + 0xd2c8]
test rdi, rdi
je 0x180210053
mov rdx, qword [rcx]
test esi, esi
cmove rax, r13
cmp rax, qword [rdx + 8]
jae 0x18020fc03
sub qword [rdx + 8], rax
jmp 0x180210053
mov rax, qword [rdx]
mov qword [rcx], rax
call fcn.1800c56f0
jmp 0x180210053
mov rax, qword [r12 + 0x18]
mov ecx, ebp
test rax, rax
je 0x18020fc2d
nop
mov dword [rax + 0x30], ecx
mov rax, qword [rax]
inc ecx
test rax, rax
jne 0x18020fc20
mov rbx, qword [rsp + 0x20]
and dword [r12 + 0x28], 0xfffffffe
test rbx, rbx
je 0x18020fc60
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x18020fc4c
mov rax, rbp
jmp 0x18020fc52
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rax]
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rbx, qword [rsp + 0x28]
test rbx, rbx
je 0x18020fc8d
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x18020fc79
mov rax, rbp
jmp 0x18020fc7f
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rax]
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor eax, eax
lea rdx, [rsp + 0x20]
mov rcx, r12
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], rax
call fcn.1802107b0
mov ebx, eax
test eax, eax
jns 0x18020fce7
mov eax, esi
lea rcx, [r12 + 0xd2c8]
test rdi, rdi
je 0x180210053
mov rdx, qword [rcx]
test esi, esi
cmove rax, r13
cmp rax, qword [rdx + 8]
jae 0x18020fcd7
sub qword [rdx + 8], rax
jmp 0x180210053
mov rax, qword [rdx]
mov qword [rcx], rax
call fcn.1800c56f0
jmp 0x180210053
inc dword [r12 + 0x514]
mov eax, dword [r12 + 0x51c]
inc dword [r12 + 0x518]
and eax, 0xff000000
mov qword [rsp + 0xe8], 0xffffffffffffffff
cmp eax, 0xb000000
jne 0x18020fd67
mov eax, dword [r12 + 0xd228]
test al, al
jns 0x18020fdd4
bt eax, 8
jb 0x18020fd38
movzx eax, byte [r12 + 0x510]
jmp 0x18020fd6f
mov edx, ebp
lea rcx, [rsp + 0xe8]
mov rax, qword [rcx]
cmp rax, 0xffffffffffffffff
je 0x18020fdd4
mov eax, dword [rax + 0x98]
bt rax, 0xf
jb 0x18020fdd4
inc edx
add rcx, 8
cmp edx, r13d
jb 0x18020fd42
mov al, byte [r12 + 0x510]
test al, al
je 0x18020fdd4
lea rax, [0x180059030]
lea rcx, [rsp + 0x40]
movzx edx, r13b
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], r12
call qword [0x180059038]
mov ebx, eax
test eax, eax
jns 0x18020fdd4
mov eax, esi
lea rcx, [r12 + 0xd2c8]
test rdi, rdi
je 0x180210053
mov rdx, qword [rcx]
test esi, esi
cmove rax, r13
cmp rax, qword [rdx + 8]
jae 0x18020fdc4
sub qword [rdx + 8], rax
jmp 0x180210053
mov rax, qword [rdx]
mov qword [rcx], rax
call fcn.1800c56f0
jmp 0x180210053
mov eax, esi
lea rcx, [r12 + 0xd2c8]
test rdi, rdi
je 0x180210051
mov rdx, qword [rcx]
test esi, esi
cmove rax, r13
cmp rax, qword [rdx + 8]
jae 0x18020fdff
sub qword [rdx + 8], rax
jmp 0x180210051
mov rax, qword [rdx]
mov qword [rcx], rax
call fcn.1800c56f0
jmp 0x180210051
mov eax, dword [r12 + 0x14]
mov r14d, ebp
add eax, eax
cmp eax, 0x1ffffffe
jbe 0x18020fe27
mov ebx, 0x80070216
jmp 0x18020fe9a
mov rcx, qword [r12 + 0xd2c8]
lea esi, [rax*8]
mov eax, 8
test esi, esi
cmove esi, eax
test esi, esi
mov ebx, esi
mov dword [rsp + 0xe0], esi
cmove rbx, r13
test rcx, rcx
je 0x18020fe61
mov rax, qword [rcx + 0x10]
sub rax, qword [rcx + 8]
cmp rbx, rax
jbe 0x18020fe75
lea rcx, [r12 + 0xd2c8]
mov rdx, rbx
call fcn.1800c57b0
test eax, eax
jne 0x18020fe8f
mov rcx, qword [r12 + 0xd2c8]
test rcx, rcx
je 0x18020fe8b
mov rax, qword [rcx + 8]
lea r15, [rax + rcx + 0x18]
add qword [rcx + 8], rbx
mov ebx, 0x8007000e
test r15, r15
cmovne ebx, ebp
test ebx, ebx
js 0x180210053
mov eax, dword [r12 + 0x14]
mov rdx, qword [r12 + 0x18]
lea r13, [r15 + rax*8]
test rdx, rdx
je 0x18020ff1c
test dword [rdx + 0x78], 0xfff00000
je 0x18020ff14
mov r10, qword [rdx + 0x58]
mov dword [rdx + 0x38], ebp
mov dword [rdx + 0x50], ebp
mov r9d, ebp
cmp dword [r10 + 0x10], ebp
jbe 0x18020ff01
mov r8, rbp
nop word [rax + rax]
mov rax, qword [r10]
mov rcx, qword [r8 + rax]
mov eax, dword [rcx + 0x50]
inc eax
cmp dword [rdx + 0x50], eax
jae 0x18020fef4
mov dword [rdx + 0x50], eax
inc r9d
add r8, 8
cmp r9d, dword [r10 + 0x10]
jb 0x18020fee0
cmp dword [rdx + 0x50], 0x80
jbe 0x18020ff14
mov dword [rdx + 0x38], 1
mov dword [rdx + 0x50], ebp
mov rdx, qword [rdx]
test rdx, rdx
jne 0x18020feb5
mov rdx, qword [r12 + 0x18]
test rdx, rdx
je 0x18020ff87
mov r8, r15
movabs r9, 0x18044210008
nop word [rax + rax]
test dword [rdx + 0x78], 0xfff00000
mov dword [rdx + 0x50], 0xffffffff
je 0x18020ff7f
mov rax, qword [rdx + 0x58]
cmp dword [rax + 0x14], ebp
je 0x18020ff72
cmp dword [rdx + 0x38], ebp
jne 0x18020ff72
mov rax, qword [rdx + 0x28]
mov rcx, qword [rax]
mov rax, qword [rcx + 0xa8]
test qword [rax + 0x10], r9
je 0x18020ff7c
mov qword [r8], rdx
inc r14d
add r8, 8
mov dword [rdx + 0x38], ebp
mov rdx, qword [rdx]
test rdx, rdx
jne 0x18020ff40
mov dword [rsp + 0xe8], ebp
mov edi, ebp
test r14d, r14d
je 0x18020ffcb
mov rsi, r15
nop dword [rax + rax]
mov rdx, qword [rsi]
lea r9, [rsp + 0xe8]
mov r8, r13
mov rcx, r12
call fcn.180210340
mov ebx, eax
test eax, eax
js 0x180210053
inc edi
add rsi, 8
cmp edi, r14d
jb 0x18020ffa0
mov r8d, dword [r12 + 0x14]
test r8d, r8d
je 0x180210001
mov rcx, r13
mov rdx, r8
nop dword [rax + rax]
mov rax, qword [rcx]
test rax, rax
je 0x18020fff7
mov qword [rax], 0xffffffffffffffff
mov qword [rax + 8], 0xffffffffffffffff
add rcx, 8
sub rdx, 1
jne 0x18020ffe0
mov qword [r12 + 0x18], rbp
mov qword [r12 + 0x20], rbp
test r8d, r8d
je 0x18021004b
mov rdx, r8
mov rcx, qword [r13]
test rcx, rcx
je 0x180210041
mov rax, qword [r12 + 0x20]
mov qword [rcx + 8], rax
mov rax, qword [r12 + 0x20]
test rax, rax
je 0x180210034
mov qword [rax], rcx
jmp 0x180210039
mov qword [r12 + 0x18], rcx
mov qword [rcx], rbp
mov qword [r12 + 0x20], rcx
add r13, 8
sub rdx, 1
jne 0x180210013
or dword [r12 + 0x28], 7
mov ebx, ebp
mov r14, qword [rsp + 0xa8]
mov rdi, qword [rsp + 0x20]
test rdi, rdi
je 0x180210088
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x180210074
mov rax, rbp
jmp 0x18021007a
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rax]
mov r8, rdi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rdi, qword [rsp + 0x28]
test rdi, rdi
je 0x1802100c4
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x1802100a1
mov rax, rbp
jmp 0x1802100a7
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rax]
mov r8, rdi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov esi, dword [rsp + 0xe0]
mov r13d, 1
jmp 0x1802100d1
mov esi, dword [rsp + 0xe0]
mov r13d, 1
mov rdi, qword [rsp + 0x30]
test rdi, rdi
je 0x1802100fe
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x1802100ea
mov rax, rbp
jmp 0x1802100f0
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rax]
mov r8, rdi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rdi, qword [rsp + 0x38]
test rdi, rdi
je 0x18021012a
mov ecx, dword [0x18025e63c]
test ecx, ecx
js 0x18021011b
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 rdi, qword [rsp + 0xb8]
mov rbp, qword [rsp + 0xf0]
mov eax, esi
mov rsi, qword [rsp + 0xc0]
lea rcx, [r12 + 0xd2c8]
mov r12, qword [rsp + 0xb0]
test r15, r15
mov r15, qword [rsp + 0xa0]
je 0x18021018d
mov rdx, qword [rcx]
test rax, rax
cmove rax, r13
cmp rax, qword [rdx + 8]
jae 0x180210182
sub qword [rdx + 8], rax
mov eax, ebx
add rsp, 0xc8
pop r13
pop rbx
ret
mov rax, qword [rdx]
mov qword [rcx], rax
call fcn.1800c56f0
mov eax, ebx
add rsp, 0xc8
pop r13
pop rbx
ret