Function at 0x1801891f0
Capabilities:
Get thread local storage value

Disassembly:
mov byte [rsp + 0x18], r8b
mov qword [rsp + 0x10], rdx
push rbx
push rbp
push rsi
push r14
sub rsp, 0x168
mov ebp, dword [rsp + 0x1b0]
mov esi, dword [rdx + 0x78]
mov rax, rdx
movzx eax, byte [r9 + 0x1a]
and esi, 0xfffff
shl rbp, 4
add rbp, qword [r9 + 0x10]
movzx r10d, r8b
mov r14, rcx
mov dword [rsp + 0x1b0], esi
mov r8d, esi
mov dword [rsp + 0x1a8], esi
mov dword [rsp + 0x80], esi
test al, al
je 0x180189255
movzx r8d, al
mov dword [rsp + 0x1a8], r8d
movzx ecx, byte [r9 + 0x1b]
test cl, cl
je 0x18018927c
movzx edx, cl
mov dword [rsp + 0x80], edx
cmp edx, esi
ja 0x180189275
test al, al
je 0x18018927c
cmp esi, r8d
jbe 0x18018927c
mov dword [rsp + 0x1b0], edx
mov eax, dword [rbp]
mov qword [rsp + 0x190], rdi
mov qword [rsp + 0x160], r12
mov dword [rsp + 0x88], eax
and eax, 0x1fe00000
xor edx, edx
mov qword [rsp + 0x158], r13
mov qword [rsp + 0x150], r15
cmp eax, 0x1fe00000
jne 0x180189765
mov eax, dword [rbp]
lea rcx, [rsp + 0x70]
mov r13d, edx
mov dword [rcx], eax
mov eax, dword [rbp + 4]
lea r11, [0x180000000]
mov dword [rcx + 4], eax
mov eax, dword [rbp + 8]
mov dword [rcx + 8], eax
mov eax, dword [rbp + 0xc]
mov dword [rcx + 0xc], eax
cmp byte [rbp + 5], dl
jbe 0x1801893f0
nop word [rax + rax]
mov rax, qword [r14 + 0xd040]
mov r9d, edx
mov dword [rsp + 0x84], edx
test byte [rax + 0x10], 0x40
je 0x180189313
mov r9d, dword [rax + 0x18]
mov dword [rsp + 0x84], r9d
mov edi, edx
test esi, esi
je 0x1801893e0
mov r15, rdx
test r10b, r10b
lea r12d, [r13*4]
cmovne r15, qword [rsp + 0x1d0]
nop word [rax + rax]
movzx eax, word [rbp + 6]
lea r8, [rsp + r12*8 + 0x90]
mov rcx, r14
mov qword [rsp + 0x60], r8
mov r8, qword [rsp + 0x1c8]
mov dword [rsp + 0x58], edi
mov dword [rsp + 0x50], r9d
add eax, r13d
xor r9d, r9d
movzx edx, word [r11 + rax*2 + 0x12e90]
mov rax, qword [r14 + 0xd040]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x1c0]
mov dword [rsp + 0x40], esi
mov dword [rsp + 0x38], 4
mov qword [rsp + 0x30], r15
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x1b8]
mov qword [rsp + 0x20], rax
call fcn.180187c00
mov ebx, eax
test eax, eax
js 0x180189a12
mov r9d, dword [rsp + 0x84]
inc edi
inc r12d
lea r11, [0x180000000]
cmp edi, esi
jb 0x180189340
mov r10b, byte [rsp + 0x1a0]
xor edx, edx
movzx eax, byte [rbp + 5]
inc r13d
cmp r13d, eax
jb 0x1801892f0
mov eax, dword [rsp + 0x88]
add eax, 0xe01fffbd
cmp eax, 9
ja case.default.0x18018940e
cdqe
mov ecx, dword [r11 + rax*4 + 0x189a44]
add rcx, r11
jmp rcx
cmp byte [rbp + 5], 2
je 0x180189420
mov ebx, 0x80004005
jmp 0x180189a12
mov r9, qword [rsp + 0x1c0]
lea r8, [rsp + 0x70]
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x90]
add r9, 0x7e0
mov qword [rsp + 0x28], r14
mov dword [rsp + 0x20], esi
call fcn.1801ed6f0
mov ebx, eax
test eax, eax
js 0x180189a12
jmp 0x18018975e
cmp byte [rbp + 5], 1
jne case.default.0x18018940e
mov r8, qword [rsp + 0x1c0]
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0x90]
mov r9d, esi
add r8, 0x7e0
mov qword [rsp + 0x20], r14
call fcn.1801ed890
mov ebx, eax
test eax, eax
js 0x180189a12
jmp 0x18018975e
cmp byte [rbp + 5], 6
jne case.default.0x18018940e
mov rax, qword [rsp + 0x1c0]
mov qword [rsp + 0x48], r14
mov dword [rsp + 0x40], esi
add rax, 0x7e0
lea r9, [rsp + 0xf0]
lea r8, [rsp + 0xd0]
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x70]
lea rdx, [rsp + 0xb0]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x130]
lea rcx, [rsp + 0x90]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x110]
mov qword [rsp + 0x20], rax
call fcn.1801edc80
mov ebx, eax
test eax, eax
js 0x180189a12
jmp 0x18018975e
cmp byte [rbp + 5], 1
jne case.default.0x18018940e
mov r8, qword [rsp + 0x1c0]
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0x90]
mov r9d, esi
add r8, 0x7e0
mov qword [rsp + 0x20], r14
call fcn.1801ee420
mov ebx, eax
test eax, eax
js 0x180189a12
jmp 0x18018975e
cmp byte [rbp + 5], 2
jne case.default.0x18018940e
mov r9, qword [rsp + 0x1c0]
lea r8, [rsp + 0x70]
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x90]
add r9, 0x7e0
mov qword [rsp + 0x28], r14
mov dword [rsp + 0x20], esi
call fcn.1801ee6f0
mov ebx, eax
test eax, eax
js 0x180189a12
jmp 0x18018975e
cmp byte [rbp + 5], 2
jne case.default.0x18018940e
mov r9, qword [rsp + 0x1c0]
lea r8, [rsp + 0x70]
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x90]
add r9, 0x7e0
mov qword [rsp + 0x28], r14
mov dword [rsp + 0x20], esi
call fcn.1801ee560
mov ebx, eax
test eax, eax
js 0x180189a12
jmp 0x18018975e
cmp byte [rbp + 5], 4
jne case.default.0x18018940e
mov rax, qword [rsp + 0x1c0]
mov qword [rsp + 0x38], r14
mov dword [rsp + 0x30], esi
add rax, 0x7e0
lea r9, [rsp + 0xf0]
lea r8, [rsp + 0xd0]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x70]
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x90]
mov qword [rsp + 0x20], rax
call fcn.1801ed9d0
mov ebx, eax
test eax, eax
js 0x180189a12
jmp 0x18018975e
cmp byte [rbp + 5], 4
jne case.default.0x18018940e
mov rax, qword [rsp + 0x1c0]
mov qword [rsp + 0x38], r14
mov dword [rsp + 0x30], esi
add rax, 0x7e0
lea r9, [rsp + 0xf0]
lea r8, [rsp + 0xd0]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x70]
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x90]
mov qword [rsp + 0x20], rax
call fcn.1801ee0c0
mov ebx, eax
test eax, eax
js 0x180189a12
jmp 0x18018975e
cmp byte [rbp + 5], 2
jne case.default.0x18018940e
mov r9, qword [rsp + 0x1c0]
lea r8, [rsp + 0x70]
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x90]
add r9, 0x7e0
mov qword [rsp + 0x28], r14
mov dword [rsp + 0x20], esi
call fcn.1801ed5b0
mov ebx, eax
test eax, eax
js 0x180189a12
jmp 0x18018975e
cmp byte [rbp + 5], 1
jne case.default.0x18018940e
cmp esi, 1
je 0x18018971b
mov ebx, 0x80004005
jmp 0x180189756
mov rcx, qword [rsp + 0x90]
mov rax, qword [r14 + 0xd078]
cmp qword [rcx + 0xa8], rax
je 0x18018974c
mov rax, qword [rsp + 0x1c0]
mov dword [rsp + 0x70], 0x1fe00001
mov qword [rax + 0x7e0], rcx
jmp 0x180189754
mov dword [rsp + 0x70], 0x10000001
mov ebx, edx
test ebx, ebx
js 0x180189a12
lea rbp, [rsp + 0x70]
xor edx, edx
cmp dword [rbp], 0x1fe00001
movzx ebx, byte [rbp + 5]
jne 0x1801897dc
cmp ebx, 1
jne case.default.0x18018940e
movzx eax, word [rbp + 8]
mov ecx, 0x4000
cmp ax, cx
jb case.default.0x18018940e
movzx ecx, ax
lea eax, [rcx - 0x4000]
cmp eax, 0x40
jge case.default.0x18018940e
mov r12, qword [rsp + 0x1c0]
mov r13, qword [rsp + 0x1b8]
lea ecx, [rcx*4 - 0x10000]
mov rax, qword [r12 + 0x7e0]
mov dword [rsp + 0x70], edx
mov ebx, edx
mov dword [rsp + 0x1b0], edx
mov r15d, edx
mov dword [rsp + 0x1a8], edx
mov qword [r13 + rcx*8], rax
jmp 0x1801897f4
mov r12, qword [rsp + 0x1c0]
mov r13, qword [rsp + 0x1b8]
mov r15d, dword [rsp + 0x80]
mov ecx, 0x80
call fcn.180197940
mov rdi, rax
test rax, rax
je 0x180189a0d
mov r8, qword [rsp + 0x1d0]
mov qword [rsp + 0x50], rdi
mov qword [rax], 0xffffffffffffffff
mov qword [rax + 8], 0xffffffffffffffff
xor eax, eax
mov r9, r13
mov dword [rdi + 0x10], eax
mov dword [rdi + 0x20], eax
mov dword [rdi + 0x78], eax
mov qword [rdi + 0x18], rax
mov word [rdi + 0x7c], ax
mov qword [rdi + 0x28], rax
mov word [rdi + 0x7e], ax
mov dword [rdi + 0x38], eax
mov dword [rdi + 0x3c], eax
mov dword [rdi + 0x40], eax
mov dword [rdi + 0x50], eax
mov dword [rdi + 0x68], eax
mov qword [rdi + 0x70], rax
mov rax, qword [rsp + 0x198]
mov rdx, rbp
mov qword [rsp + 0x48], rax
mov eax, dword [rsp + 0x1b0]
mov rcx, r14
mov dword [rsp + 0x40], eax
mov eax, dword [rsp + 0x1a8]
mov dword [rdi + 0x30], 0xffffffff
mov dword [rsp + 0x38], eax
mov dword [rsp + 0x30], ebx
mov dword [rsp + 0x28], r15d
mov dword [rsp + 0x20], 4
mov qword [rdi + 0x48], 0xffffffffffffffff
call fcn.1801882f0
mov ebx, eax
test eax, eax
js 0x180189915
mov rax, qword [r14 + 0xd040]
mov r8, qword [rsp + 0x1c8]
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x48], rax
xor ecx, ecx
mov dword [rsp + 0x40], esi
cmp byte [rsp + 0x1a0], cl
mov dword [rsp + 0x38], r15d
mov dword [rsp + 0x30], 4
cmovne rcx, qword [rsp + 0x1d0]
mov r9, r13
mov rdx, rbp
mov qword [rsp + 0x28], rcx
mov rcx, r14
mov qword [rsp + 0x20], r12
call fcn.180188020
mov ebx, eax
test eax, eax
js 0x180189915
mov rax, qword [rsp + 0x1d8]
mov qword [rax], rdi
jmp 0x180189a12
cmp word [rdi + 0x7c], 0
je 0x18018996f
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x18018992d
xor ebp, ebp
mov rax, rbp
jmp 0x180189935
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
xor ebp, ebp
movzx ecx, word [rdi + 0x7c]
cmp ecx, dword [rax + 0x250]
ja 0x180189965
mov r8, qword [rdi + 0x18]
dec ecx
movsxd rdx, ecx
shl rdx, 5
add rdx, qword [rax + 0x248]
test r8, r8
je 0x180189965
mov rax, qword [rdx + 8]
mov qword [r8], rax
mov qword [rdx + 8], r8
mov word [rdi + 0x7c], bp
mov qword [rdi + 0x18], rbp
jmp 0x180189971
xor ebp, ebp
cmp word [rdi + 0x7e], 0
je 0x1801899c5
mov ecx, dword [0x18025e63c]
test ecx, ecx
jns 0x180189987
mov rax, rbp
jmp 0x18018998d
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
movzx ecx, word [rdi + 0x7e]
cmp ecx, dword [rax + 0x250]
ja 0x1801899bd
mov r8, qword [rdi + 0x28]
dec ecx
movsxd rdx, ecx
shl rdx, 5
add rdx, qword [rax + 0x248]
test r8, r8
je 0x1801899bd
mov rax, qword [rdx + 8]
mov qword [r8], rax
mov qword [rdx + 8], r8
mov word [rdi + 0x7e], bp
mov qword [rdi + 0x28], rbp
mov ecx, dword [0x18025e63c]
test ecx, ecx
js 0x180189a12
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rsi, rax
test rax, rax
je 0x180189a12
mov edx, 0xfe
mov rcx, rdi
lea r8d, [rdx - 0x7e]
call fcn.18024adb8
mov qword [rdi], rbp
mov rax, qword [rsi + 0x38]
test rax, rax
je 0x180189a03
mov qword [rax], rdi
mov qword [rsi + 0x38], rdi
jmp 0x180189a12
mov qword [rsi + 0x30], rdi
mov qword [rsi + 0x38], rdi
jmp 0x180189a12
mov ebx, 0x8007000e
mov r15, qword [rsp + 0x150]
mov r13, qword [rsp + 0x158]
mov r12, qword [rsp + 0x160]
mov rdi, qword [rsp + 0x190]
mov eax, ebx
add rsp, 0x168
pop r14
pop rsi
pop rbp
pop rbx
ret