Function at 0x1800a17e0
Capabilities:
Get thread local storage value

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x228
mov edi, dword [rsp + 0x278]
xor esi, esi
mov rbp, rdx
mov rbx, r8
mov byte [rax - 0x19f], 1
lea edx, [rsi + 1]
mov qword [rax - 0x1b8], rsi
mov qword [rax - 0x1b0], rsi
mov qword [rax - 0x1a8], rsi
mov byte [rax - 0x1a0], sil
test r8, r8
je 0x1800a1854
test edi, edi
jne 0x1800a1854
mov eax, dword [rsp + 0x270]
movzx ecx, dl
mov byte [rsp + 0x278], dl
test al, 8
cmove edi, edx
jmp 0x1800a1876
xor cl, cl
mov byte [rsp + 0x278], cl
test edi, edi
jne 0x1800a186f
mov eax, dword [rsp + 0x270]
test al, 8
cmove edi, edx
jmp 0x1800a1876
mov eax, dword [rsp + 0x270]
cmp dword [rsp + 0x280], 0x11
je 0x1800a1973
test dl, al
jne 0x1800a1973
mov byte [rsp + 0x278], sil
mov rax, qword [r9]
lea r8, [rsp + 0xd0]
mov edx, 3
mov rcx, r9
call qword [rax + 0x60]
test al, al
je case.default.0x1800a1971
mov edx, dword [rsp + 0xd0]
mov r10, qword [rsp + 0x250]
mov r8d, 7
mov r11d, esi
mov dword [rsp + 0x7c], esi
cmp edx, r8d
je 0x1800a1951
cmp dword [r10 + 0x30], 0x24
jb 0x1800a1951
mov rcx, qword [rsp + 0x268]
mov rax, rcx
cmp qword [rcx + 0x10], rsi
jne 0x1800a1905
nop dword [rax + rax]
test rax, rax
je 0x1800a1951
cmp dword [rax + 8], 0xa
jne 0x1800a1951
mov rax, qword [rax + 0x38]
cmp qword [rax + 0x10], rsi
je 0x1800a18f0
mov rcx, qword [rax + 0x10]
test rcx, rcx
je 0x1800a1951
mov rdx, qword [rcx + 0x18]
lea rax, [rsp + 0x7c]
mov r9d, r8d
or r8d, 0xffffffff
mov rcx, rbp
mov qword [rsp + 0x20], rax
call fcn.18007e4f0
mov ebx, eax
test eax, eax
js 0x1800a2346
mov edx, dword [rsp + 0xd0]
mov rbx, qword [rsp + 0x260]
mov r10, qword [rsp + 0x250]
mov r11d, dword [rsp + 0x7c]
lea eax, [rdx - 2]
cmp eax, 7
ja case.default.0x1800a1971
lea r8, [0x180000000]
cdqe
mov ecx, dword [r8 + rax*4 + 0xa2354]
add rcx, r8
jmp rcx
test cl, cl
je 0x1800a1894
mov eax, dword [r9 + 0x28]
cmp rax, qword [r8 + 0x10]
jae 0x1800a1894
shl rax, 4
add rax, qword [r8]
cmp qword [rax], r9
jne 0x1800a1894
mov ecx, dword [rax + 8]
mov rax, qword [rsp + 0x288]
mov dword [rax], ecx
xor eax, eax
add rsp, 0x228
pop rdi
pop rsi
pop rbp
pop rbx
ret
xor eax, eax
sub edx, 2
mov word [rsp + 0x50], si
mov qword [rsp + 0x52], rax
mov qword [rsp + 0x5a], rax
mov qword [rsp + 0x62], rax
mov qword [rsp + 0x6a], rax
mov word [rsp + 0x72], ax
je 0x1800a1a29
sub edx, 4
je 0x1800a1a0f
sub edx, 2
je 0x1800a19f1
cmp edx, 1
jne 0x1800a1a2e
mov eax, edx
mov word [rsp + 0x50], ax
jmp 0x1800a1a2e
mov rax, qword [rsp + 0x100]
shr rax, 0xa
not ax
and ax, 1
or ax, 2
mov word [rsp + 0x50], ax
jmp 0x1800a1a2e
mov eax, 4
mov word [rsp + 0x50], ax
mov eax, dword [rsp + 0xd8]
mov dword [rsp + 0xd4], eax
jmp 0x1800a1a2e
mov word [rsp + 0x50], si
mov r8d, dword [rsp + 0x280]
mov edx, dword [rsp + 0x270]
mov ecx, dword [rsp + 0xd4]
call fcn.18011a190
mov rbp, qword [rsp + 0x288]
mov r8d, dword [r10 + 0x30]
mov rcx, qword [rsp + 0x258]
mov word [rsp + 0x52], ax
movzx eax, word [rsp + 0x108]
mov word [rsp + 0x54], ax
movzx eax, word [rsp + 0x10c]
lea rdx, [rsp + 0x50]
mov r9d, 0x12
mov word [rsp + 0x58], di
mov dword [rsp + 0x70], r11d
mov word [rsp + 0x56], ax
mov qword [rsp + 0x20], rbp
call fcn.18007e4f0
jmp 0x1800a2250
mov rbp, qword [rsp + 0xe0]
xor eax, eax
mov qword [rsp + 0x52], rax
mov qword [rsp + 0x5a], rax
mov qword [rsp + 0x62], rax
mov qword [rsp + 0x6a], rax
mov word [rsp + 0x72], ax
mov eax, 6
cmp edx, 4
je 0x1800a1ad2
mov eax, 5
mov word [rsp + 0x50], ax
mov eax, 1
mov word [rsp + 0x52], si
mov word [rsp + 0x54], ax
mov rax, qword [rbp]
mov rcx, rbp
call qword [rax + 8]
mov word [rsp + 0x58], di
mov word [rsp + 0x56], ax
mov rcx, qword [rbp + 0x40]
test rcx, rcx
je 0x1800a1c1c
mov eax, dword [rsp + 0x68]
nop dword [rax + rax]
inc eax
mov dword [rsp + 0x68], eax
mov rcx, qword [rcx + 8]
test rcx, rcx
jne 0x1800a1b10
mov edi, eax
test eax, eax
je 0x1800a1b45
lea rcx, [rsp + 0x90]
mov rdx, rdi
call fcn.1800c4930
mov ebx, eax
test eax, eax
je 0x1800a1b45
mov rsi, qword [rsp + 0x260]
jmp 0x1800a1b57
mov rsi, qword [rsp + 0x90]
mov qword [rsp + 0xa0], rdi
xor ebx, ebx
test ebx, ebx
js 0x1800a2332
mov rdi, qword [rbp + 0x40]
test rdi, rdi
je 0x1800a1bd7
nop dword [rax + rax]
mov rax, qword [rsp + 0x290]
mov r9, qword [rdi]
mov r8, qword [rsp + 0x260]
mov rdx, qword [rsp + 0x258]
mov rcx, qword [rsp + 0x250]
mov qword [rsp + 0x40], rax
mov eax, dword [rsp + 0x280]
mov qword [rsp + 0x38], rsi
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x270]
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], eax
call fcn.1800a17e0
mov ebx, eax
test eax, eax
js 0x1800a1d89
mov rdi, qword [rdi + 8]
add rsi, 4
test rdi, rdi
jne 0x1800a1b70
mov r8d, dword [rsp + 0xa0]
mov rsi, qword [rsp + 0x90]
mov rdi, qword [rsp + 0x258]
lea rax, [rsp + 0x6c]
shl r8d, 2
mov rdx, rsi
mov rcx, rdi
mov r9d, 2
mov qword [rsp + 0x20], rax
call fcn.18007e4f0
mov ebx, eax
test eax, eax
js 0x1800a233a
xor esi, esi
jmp 0x1800a1c24
mov rdi, qword [rsp + 0x258]
mov r9, qword [rbp + 0x38]
test r9, r9
je 0x1800a1c9a
mov rcx, qword [rsp + 0x290]
mov rax, rsi
test rcx, rcx
je 0x1800a1c45
mov rax, qword [rcx + 0x10]
mov rax, qword [rax + 0x18]
mov r8, qword [rsp + 0x260]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x64]
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x280]
mov rdx, rdi
mov rdi, qword [rsp + 0x250]
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x270]
mov rcx, rdi
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x20], eax
call fcn.1800a17e0
mov ebx, eax
test eax, eax
js 0x1800a1d89
inc word [rsp + 0x5a]
jmp 0x1800a1ca2
mov rdi, qword [rsp + 0x250]
mov rbx, qword [rbp + 0x10]
test rbx, rbx
je 0x1800a1cb1
mov rbx, qword [rbx + 0x70]
jmp 0x1800a1cb4
mov rbx, rsi
test rbx, rbx
je 0x1800a1cf1
nop dword [rax]
test byte [rbx + 0x98], 4
je 0x1800a1ce5
mov rcx, qword [rbx + 0x60]
lea rdx, [rsp + 0x80]
mov rax, qword [rcx]
call qword [rax + 0x58]
test byte [rax], 8
jne 0x1800a1ce5
inc word [rsp + 0x5a]
mov rbx, qword [rbx + 0x80]
test rbx, rbx
jne 0x1800a1cc0
movzx ebx, word [rsp + 0x5a]
mov ecx, dword [0x18025e63c]
imul ebx, dword [rdi + 0x34]
mov dword [rsp + 0x80], ebx
test ecx, ecx
js 0x1800a1d1e
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x1800a1d1e
mov rax, qword [rax]
test rax, rax
jne 0x1800a1d24
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8d, ebx
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rbx, rax
mov qword [rsp + 0x88], rax
test rax, rax
jne 0x1800a1dd6
mov ebx, 0x8007000e
mov rdi, qword [rsp + 0x88]
test rdi, rdi
je 0x1800a1d89
mov ecx, dword [0x18025e63c]
test ecx, ecx
js 0x1800a1d75
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x1800a1d75
mov rax, qword [rax]
test rax, rax
jne 0x1800a1d7b
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor eax, eax
mov rsi, qword [rsp + 0x90]
cmp byte [rsp + 0xa8], 0
je 0x1800a2346
test rsi, rsi
je 0x1800a2346
mov ecx, dword [0x18025e63c]
test ecx, ecx
js 0x1800a1dba
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rax]
mov r8, rsi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, ebx
add rsp, 0x228
pop rdi
pop rsi
pop rbp
pop rbx
ret
cmp qword [rbp + 0x38], 0
mov dword [rsp + 0x78], esi
je 0x1800a1e52
mov rcx, qword [rsp + 0x258]
lea rdx, [0x180038394]
mov r9d, 7
or r8d, 0xffffffff
mov qword [rsp + 0x20], rax
call fcn.18007e4f0
mov ebx, eax
test eax, eax
js 0x1800a1d4b
mov eax, dword [rsp + 0x64]
mov rbx, qword [rsp + 0x88]
lea r8, [rsp + 0x140]
mov dword [rbx + 4], eax
mov dword [rbx + 8], esi
mov rcx, qword [rbp + 0x38]
mov rax, qword [rcx]
mov edx, 0x13
call qword [rax + 0x60]
test al, al
jne 0x1800a1e45
mov ebx, 0x80004005
jmp 0x1800a1d4b
mov eax, 1
mov ecx, eax
mov dword [rsp + 0x78], eax
jmp 0x1800a1e67
xor edx, edx
lea rcx, [rsp + 0x140]
lea r8d, [rdx + 0x68]
call fcn.18024adb8
mov ecx, esi
mov rdi, qword [rbp + 0x10]
test rdi, rdi
je 0x1800a1e76
mov rdi, qword [rdi + 0x70]
jmp 0x1800a1e79
mov rdi, rsi
movsxd rax, ecx
test rdi, rdi
je 0x1800a205d
lea rsi, [rax + rax*4]
shl rsi, 3
xor ebp, ebp
nop
test byte [rdi + 0x98], 4
je 0x1800a204d
mov rcx, qword [rdi + 0x60]
lea rdx, [rsp + 0xc0]
mov rax, qword [rcx]
call qword [rax + 0x58]
test byte [rax], 8
jne 0x1800a204d
mov rax, qword [rsp + 0x250]
cmp dword [rax + 0x34], 8
je 0x1800a1f62
mov rdx, qword [rsp + 0x290]
test rdx, rdx
je 0x1800a1ee6
mov rax, qword [rdx + 0x10]
mov ecx, dword [rax + rsi]
sub ecx, dword [rdx + 0x18]
shl ecx, 2
jmp 0x1800a1f5b
mov rcx, qword [rdi + 0x60]
lea r8, [rsp + 0x1b0]
mov edx, 0x13
mov rax, qword [rcx]
call qword [rax + 0x60]
test al, al
je 0x1800a1e3b
mov eax, dword [rsp + 0x190]
mov edx, dword [rsp + 0x200]
mov r8d, dword [rsp + 0x20c]
cmp edx, eax
cmova eax, edx
mov dword [rsp + 0x190], eax
test r8d, r8d
je 0x1800a1f54
cmp dword [rsp + 0x204], ebp
je 0x1800a1f54
mov eax, dword [rsp + 0x19c]
lea ecx, [rax + rdx - 1]
lea eax, [rdx - 1]
not eax
and ecx, eax
lea eax, [r8 + rcx]
mov dword [rsp + 0x19c], eax
jmp 0x1800a1f5b
mov ecx, dword [rsp + 0x19c]
mov dword [rsp + 0xb8], ecx
mov rdx, qword [rdi + 0x10]
mov rcx, qword [rsp + 0x258]
lea rax, [rsp + 0xb0]
mov r9d, 7
or r8d, 0xffffffff
mov qword [rsp + 0x20], rax
call fcn.18007e4f0
mov ebx, eax
test eax, eax
js 0x1800a1d4b
mov rax, qword [rsp + 0x290]
mov r10, qword [rsp + 0x250]
test rax, rax
je 0x1800a1fbb
cmp dword [r10 + 0x34], 8
je 0x1800a1fbb
mov rax, qword [rax + 0x10]
mov rcx, qword [rax + rsi + 0x18]
jmp 0x1800a1fbe
mov rcx, rbp
mov r9, qword [rdi + 0x60]
mov r8, qword [rsp + 0x260]
mov rdx, qword [rsp + 0x258]
mov qword [rsp + 0x40], rcx
lea rax, [rsp + 0xb4]
mov rcx, r10
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x280]
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x270]
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], eax
call fcn.1800a17e0
mov ebx, eax
test eax, eax
js 0x1800a1d4b
mov rax, qword [rsp + 0x250]
mov rbx, qword [rsp + 0x88]
lea rdx, [rsp + 0xb0]
mov ecx, dword [rax + 0x34]
mov eax, dword [rsp + 0x78]
mov r8, rcx
imul eax, ecx
mov ecx, eax
add rcx, rbx
call sub.msvcrt.dll_memcpy
mov ecx, dword [rsp + 0x78]
inc ecx
add rsi, 0x28
mov dword [rsp + 0x78], ecx
mov rdi, qword [rdi + 0x80]
test rdi, rdi
jne 0x1800a1e90
mov rsi, qword [rsp + 0x258]
mov r8d, dword [rsp + 0x80]
lea rax, [rsp + 0x5c]
mov rcx, rsi
mov r9d, 2
mov rdx, rbx
mov qword [rsp + 0x20], rax
call fcn.18007e4f0
mov ebx, eax
test eax, eax
js 0x1800a1d4b
mov ecx, dword [0x18025e63c]
test ecx, ecx
js 0x1800a20af
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
je 0x1800a20af
mov rax, qword [rax]
test rax, rax
jne 0x1800a20b5
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, qword [rsp + 0x88]
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rax, qword [rsp + 0x250]
mov r11d, dword [rsp + 0x7c]
mov rbp, qword [rsp + 0x288]
mov r8d, dword [rax + 0x30]
lea rdx, [rsp + 0x50]
mov r9d, 0x12
mov rcx, rsi
mov dword [rsp + 0x70], r11d
mov qword [rsp + 0x20], rbp
call fcn.18007e4f0
mov ebx, eax
test eax, eax
js 0x1800a1d89
jmp 0x1800a225a
mov r9, qword [rsp + 0xe8]
xor eax, eax
mov r8, rbx
mov qword [rsp + 0x52], rax
mov qword [rsp + 0x5a], rax
mov qword [rsp + 0x62], rax
mov qword [rsp + 0x6a], rax
mov word [rsp + 0x72], ax
mov rax, qword [rsp + 0x290]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x60]
mov rdx, rbp
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x280]
mov rcx, r10
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x270]
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x20], eax
mov word [rsp + 0x50], si
call fcn.1800a17e0
mov ebx, eax
test eax, eax
js 0x1800a2346
mov r11d, dword [rsp + 0x7c]
mov rbp, qword [rsp + 0x288]
mov rcx, qword [rsp + 0x258]
mov eax, 7
lea rdx, [rsp + 0x50]
mov r9d, 0x12
mov word [rsp + 0x50], ax
mov eax, 0x25
mov word [rsp + 0x58], di
mov word [rsp + 0x52], ax
movzx eax, word [rsp + 0x108]
mov dword [rsp + 0x70], r11d
mov word [rsp + 0x54], ax
movzx eax, word [rsp + 0x10c]
mov qword [rsp + 0x20], rbp
mov word [rsp + 0x56], ax
mov rax, qword [rsp + 0x250]
mov r8d, dword [rax + 0x30]
call fcn.18007e4f0
jmp 0x1800a2250
mov r9, qword [rsp + 0xe0]
mov rbp, qword [rsp + 0x288]
mov rdx, qword [rsp + 0x258]
test edi, edi
mov eax, 1
mov r8, rbx
cmove edi, eax
mov rax, qword [rsp + 0x290]
mov rcx, r10
mov qword [rsp + 0x40], rax
mov eax, dword [rsp + 0x280]
mov qword [rsp + 0x38], rbp
imul edi, dword [r9 + 0x38]
mov r9, qword [r9 + 0x30]
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x270]
mov dword [rsp + 0x28], edi
mov dword [rsp + 0x20], eax
call fcn.1800a17e0
mov ebx, eax
test eax, eax
js 0x1800a2346
cmp byte [rsp + 0x278], 0
je 0x1800a2329
mov r8, qword [rsp + 0x260]
mov rdi, qword [r8 + 0x10]
cmp rdi, 0xfffffffffffffffe
jbe 0x1800a2289
mov rdi, qword [rsp + 0x260]
mov ebx, 0x80070216
jmp 0x1800a22d9
lea rsi, [rdi + 1]
cmp rsi, qword [r8 + 8]
jbe 0x1800a22cc
cmp byte [r8 + 0x19], 0
jne 0x1800a22a9
mov rdi, qword [rsp + 0x260]
mov ebx, 0x8007000e
jmp 0x1800a22d9
mov rdx, rsi
mov rcx, r8
call fcn.1800c4aa0
mov r8, qword [rsp + 0x260]
mov ebx, eax
test eax, eax
je 0x1800a22cc
mov rdi, qword [rsp + 0x260]
jmp 0x1800a22d9
shl rdi, 4
mov qword [r8 + 0x10], rsi
add rdi, qword [r8]
xor ebx, ebx
test ebx, ebx
js 0x1800a1d89
mov rdx, qword [rsp + 0x268]
mov qword [rdi], rdx
mov eax, dword [rbp]
mov dword [rdi + 8], eax
mov rcx, qword [r8]
test rcx, rcx
je 0x1800a2322
cmp rdi, rcx
jb 0x1800a2322
mov rax, qword [r8 + 8]
shl rax, 4
add rax, rcx
cmp rdi, rax
jae 0x1800a2322
sub rdi, rcx
sar rdi, 4
xor eax, eax
mov ebx, eax
mov dword [rdx + 0x28], edi
jmp 0x1800a1d8b
or rdi, 0xffffffffffffffff
mov dword [rdx + 0x28], edi
xor eax, eax
mov ebx, eax
jmp 0x1800a1d8b
mov rsi, qword [rsp + 0x90]
xor eax, eax
jmp 0x1800a1d93
mov ebx, 0x80004005
mov eax, ebx
add rsp, 0x228
pop rdi
pop rsi
pop rbp
pop rbx
ret