Function at 0x180109420
Capabilities:
Get 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
sub rsp, 0x70
mov rax, qword [rcx]
movaps xmmword [rsp + 0x60], xmm6
mov rsi, rcx
mov r14, qword [rax + 0x40]
test r14, r14
je 0x1801096fc
mov r15, qword [rsp + 0xb0]
nop dword [rax]
mov rdi, qword [r14 + 0x18]
xor r12d, r12d
xor ebx, ebx
nop dword [rax]
mov rdx, qword [r14 + 0x18]
mov rcx, rdi
call sub.msvcrt.dll__stricmp
test eax, eax
jne 0x180109513
mov r11, qword [r14 + 0x10]
xor r10d, r10d
lea r9, [0x1800014b0]
mov r8, qword [r9]
mov rax, r11
sub r8, r11
nop dword [rax + rax]
movzx edx, byte [rax]
movzx ecx, byte [rax + r8]
sub edx, ecx
jne 0x1801094b3
inc rax
test ecx, ecx
jne 0x1801094a0
test edx, edx
je 0x1801094c6
inc r10d
add r9, 0x18
cmp r10d, 0x46
jb 0x180109492
jmp 0x180109506
mov rax, qword [r9]
lea rcx, [rsp + 0x40]
mov qword [rcx], rax
mov rax, qword [r9 + 8]
mov qword [rcx + 8], rax
mov rax, qword [r9 + 0x10]
mov qword [rcx + 0x10], rax
mov eax, dword [rsi + 0x20]
mov ecx, dword [rsp + 0x48]
cmp eax, ecx
jne 0x1801094f6
test r12, r12
jne 0x180109506
mov r12, r14
jmp 0x180109506
and eax, 0xffff0000
cmp eax, ecx
jne 0x180109506
test rbx, rbx
cmove rbx, r14
mov r14, qword [r14 + 0x40]
test r14, r14
jne 0x180109470
test r12, r12
jne 0x180109524
mov r12, rbx
test rbx, rbx
je 0x1801096f3
mov r8, qword [r12 + 0x18]
mov rcx, qword [rsi + 0x10]
mov dword [rsp + 0x30], 4
lea rdx, [rsp + 0xb8]
mov r9d, 0xb51
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x20], 0xffffffffffffffff
call fcn.18019ee90
test eax, eax
js 0x1801096fe
mov r13, qword [rsp + 0xb8]
xor ebp, ebp
add r12, 0x20
nop
mov ecx, dword [0x18025e63c]
movsd xmm6, qword [r12]
mov rdi, qword [rsi + 0x10]
test ecx, ecx
jns 0x18010958b
xor esi, esi
mov rcx, rsi
jmp 0x180109596
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
xor esi, esi
mov rcx, rax
cmp qword [rcx + 0x18], 0
je 0x1801095ca
mov rbx, qword [rcx + 0x18]
test rbx, rbx
jne 0x1801095ab
mov rbx, rsi
jmp 0x1801095e1
mov rax, qword [rbx]
mov qword [rcx + 0x18], rax
test rax, rax
jne 0x1801095bb
mov qword [rcx + 0x20], rsi
movabs rax, 0xfefefefefefefefe
mov qword [rbx], rax
jmp 0x1801095e1
mov rcx, qword [rcx + 0x10]
mov edx, 0x188
mov r8d, 0x10
call fcn.180243b70
mov rbx, rax
test rbx, rbx
je 0x1801096cc
xor r9d, r9d
xor r8d, r8d
mov rdx, r13
mov rcx, rbx
mov qword [rbx], rsi
mov qword [rbx + 8], rsi
mov qword [rbx + 0x78], rsi
mov qword [rbx + 0x80], rsi
mov qword [rbx + 0x88], rsi
mov qword [rbx + 0x90], rsi
mov dword [rbx + 0xa0], 0xffffffff
mov qword [rbx + 0xa8], 0xffffffffffffffff
mov qword [rbx + 0x40], rsi
call fcn.1801992b0
mov esi, eax
test eax, eax
js 0x180109677
movapd xmm2, xmm6
mov r9d, 4
mov rdx, rdi
mov dword [rbx + 0xa4], 4
call fcn.18019a200
mov esi, eax
test eax, eax
js 0x180109677
mov r8b, 1
mov rdx, rbx
mov rcx, rdi
call fcn.18019ec70
mov esi, eax
test eax, eax
js 0x180109677
xor esi, esi
mov r15, rbx
jmp 0x1801096d1
mov rcx, rbx
call fcn.1801991c0
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x18010968d
xor edi, edi
jmp 0x180109696
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdi, rax
mov edx, 0xfe
mov r8d, 0x188
mov rcx, rbx
call fcn.18024adb8
mov qword [rbx], 0
mov rax, qword [rdi + 0x20]
test rax, rax
je 0x1801096c2
mov qword [rax], rbx
mov qword [rdi + 0x20], rbx
jmp 0x1801096d1
mov qword [rdi + 0x18], rbx
mov qword [rdi + 0x20], rbx
jmp 0x1801096d1
mov esi, 0x8007000e
test esi, esi
js 0x18010971b
mov rsi, qword [rsp + 0xb0]
mov dword [r15 + 0xcc], ebp
inc ebp
add r12, 8
cmp ebp, 4
jb 0x180109570
test r14, r14
jne 0x180109460
xor eax, eax
mov rbx, qword [rsp + 0xc0]
movaps xmm6, xmmword [rsp + 0x60]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov eax, esi
jmp 0x1801096fe