Function at 0x14001c090
Capabilities:
Get thread local storage value

Disassembly:
push rsi
sub rsp, 0xa0
mov qword [rsp + 0x78], r8
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0x88], rcx
mov ecx, dword [0x1402980b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rsp + 0x88]
add rax, 0x60
mov qword [rsp + 0x90], rax
mov rax, qword [rcx]
mov qword [rsp + 0x98], rax
and rax, 3
cmp rax, 1
jne 0x14001c5df
mov eax, dword [0x140272dd8]
add eax, dword [0x140272ddc]
mov edx, 0xf6be37d4
xor edx, 0xf484be2
mov ecx, eax
and ecx, edx
shl ecx, 1
add eax, 0xf9f67c36
sub eax, ecx
mov ecx, 0xffd81216
xor ecx, 0xef1ace99
imul eax, ecx
imul eax, eax, 0x6f9cc9c5
cmp eax, 0xdab80bd5
je 0x14001c6c5
mov rcx, qword [rsp + 0x98]
mov eax, dword [0x140272de0]
xor eax, 0xe559886a
mov r9d, dword [0x140272de4]
mov edx, 0x5b431505
xor edx, 0xa4bceafa
mov r10d, r9d
xor r10d, edx
mov r8d, eax
and r8d, r10d
mov edx, eax
or edx, r10d
xor edx, 0xffffffff
imul edx, r8d
mov r8d, eax
and r8d, r9d
or eax, r9d
imul eax, r8d
add eax, edx
mov edx, 0xa9ab69d1
xor edx, 0xdb4adc9b
imul eax, edx
mov r8d, 0xec931191
xor r8d, 0x136cee6e
mov edx, eax
xor edx, r8d
xor eax, 0xffffffff
and edx, eax
mov eax, 0x7d5d7ad1
or eax, 0x7d5d7ad1
xor eax, 0xffffffff
xor edx, 0xffffffff
mov r8d, 0x313869c7
xor r8d, 0xcec79638
xor eax, r8d
and edx, eax
mov eax, edx
and eax, 0xb8725d85
xor edx, 0xb8725d85
or eax, edx
movabs rdx, 0xa47a351aa25528de
movabs r8, 0x5b85cae55daad721
xor rdx, r8
cmp rcx, rdx
setg cl
mov byte [rsp + 0x77], cl
cmp eax, 0x126fe920
jbe 0x14001c6c5
mov al, byte [rsp + 0x77]
test al, 1
jne 0x14001c209
jmp 0x14001c2e0
mov eax, dword [0x140272de8]
xor edx, edx
div dword [0x140272dec]
and eax, 0x90b55d23
mov ecx, eax
xor ecx, 0x6efe7033
xor ecx, 0xffffffff
or eax, 0x6efe7033
and eax, ecx
add eax, 0xbdff1802
mov ecx, 0x9e7791b5
xor ecx, 0xb6727b13
cmp eax, ecx
jbe 0x14001c6ce
mov r8, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x88]
mov edx, dword [0x140272df0]
xor edx, 0x9c73336e
mov r9d, dword [0x140272df4]
xor r9d, 0xffffffff
mov eax, edx
xor eax, r9d
and eax, edx
mov edx, eax
xor edx, 0xffffffff
and edx, 0xa16e3c3b
mov r9d, 0x9a54eb20
xor r9d, 0x3b3ad71b
mov r10d, 0xf8f1c9a0
xor r10d, 0x70e365f
xor r9d, r10d
and eax, r9d
sub eax, edx
mov r9d, 0x1be17abc
xor r9d, 0x54b3bcd0
xor edx, edx
div r9d
mov r9d, 0xaec254d7
xor edx, edx
div r9d
mov rdx, qword [rsp + 0x80]
mov dword [rsp + 0x70], eax
call fcn.14001baf0
mov eax, dword [rsp + 0x70]
cmp eax, 0x89ef46ec
je 0x14001c246
jmp 0x14001c5df
mov rax, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x98]
movabs rdx, 0x59417912766d3698
movabs r8, 0xa6be86ed8992c964
xor rdx, r8
movabs r8, 0x82391c01436406d9
movabs r9, 0x7dc6e3febc9bf926
xor r8, r9
xor rdx, r8
mov rsi, rcx
xor rsi, rdx
and rsi, rcx
mov rdx, rsi
xor rdx, 0xffffffffffffffff
mov r9, 0xffffffffffffffff
xor r9, 2
mov r8, 0xffffffffffffffff
movabs rcx, 0xfff26587bbb83258
xor r8, rcx
movabs r10, 0xba8721772480b803
movabs rcx, 0x457544f09f388a5b
xor r10, rcx
mov rcx, rdx
and rcx, r10
and rsi, r8
movabs r11, 0xfff26587bbb83258
mov r10, r9
and r10, r11
mov r11, r8
and r11, 2
or rcx, rsi
or r10, r11
xor rcx, r10
or rdx, r9
movabs r9, 0x499839915fbdfd32
movabs r10, 0xb667c66ea04202cd
xor r9, r10
xor rdx, r9
movabs r9, 0xfff26587bbb83258
or r8, r9
and rdx, r8
or rcx, rdx
mov qword [rax], rcx
mov ecx, dword [0x1402980b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rax, qword [rsp + 0x80]
mov rax, qword [rax + 0x20]
mov qword [rsp + 0x68], rax
cmp rax, 0
je 0x14001c440
mov rax, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x88]
mov r8, 0xffffffffffffffff
xor r8, 0x10
movabs r9, 0x94615555075ee056
movabs r10, 0x94615555075ee056
xor r9, r10
movabs r10, 0xee88f3756929190
movabs r11, 0xee88f3756929191
xor r10, r11
sub r9, r10
sub r8, r9
sub rcx, r8
call rax
mov rax, qword [rsp + 0x90]
cmp byte [rax], 0
jne 0x14001c5df
mov rax, qword [rsp + 0x78]
mov rax, qword [rax]
mov qword [rsp + 0x60], rax
cmp rax, 0
jle 0x14001c5df
mov rax, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x78]
add rcx, 0x10
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x58], rax
mov rcx, qword [rsp + 0x78]
mov rax, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffff
mov r8, rdx
shl r8, 4
add r8, qword [rax]
mov rax, qword [r8]
mov r8, qword [r8 + 8]
mov qword [rsp + 0x30], r8
mov qword [rcx], rdx
mov rax, qword [rax]
mov qword [rsp + 0x38], rax
movabs rcx, 0x3702a92f7e7881db
add rax, rcx
add rax, 0xfffffffffffffff0
movabs rcx, 0x5ab5e6be5527934a
movabs rdx, 0x6db74f912b5f1291
xor rcx, rdx
sub rax, rcx
mov qword [rsp + 0x40], rax
mov rax, qword [rax]
mov qword [rsp + 0x48], rax
mov rcx, rax
xor rcx, 3
xor rcx, 0xffffffffffffffff
movabs rdx, 0x6c754b0409da9200
movabs r8, 0x6c754b0409da9203
xor rdx, r8
or rax, rdx
and rax, rcx
movabs rcx, 0x6ec2963006073536
movabs rdx, 0x6ec2963006073537
xor rcx, rdx
cmp rax, rcx
jne 0x14001c5c8
mov rax, qword [rsp + 0x48]
cmp rax, 0xffffffffffffffff
jle 0x14001c56d
mov r8, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x40]
call fcn.14001baf0
mov rax, qword [rsp + 0x90]
cmp byte [rax], 0
je 0x14001c5c8
jmp 0x14001c5df
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x48]
and rcx, 0xfffffffffffffffc
or rcx, 2
mov qword [rax], rcx
mov ecx, dword [0x1402980b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rax, qword [rsp + 0x30]
mov rax, qword [rax + 0x20]
mov qword [rsp + 0x28], rax
cmp rax, 0
je 0x14001c5b7
mov rax, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x38]
call rax
mov rax, qword [rsp + 0x90]
cmp byte [rax], 0
jne 0x14001c5df
mov rax, qword [rsp + 0x78]
mov rax, qword [rax]
cmp rax, 0
mov qword [rsp + 0x58], rax
jg 0x14001c480
mov eax, dword [0x140272df8]
mov r8d, dword [0x140272dfc]
mov ecx, eax
xor ecx, 0xffffffff
mov edx, r8d
and edx, ecx
mov r9d, r8d
xor r9d, 0xffffffff
mov ecx, eax
and ecx, r9d
imul ecx, edx
mov edx, eax
and edx, r8d
or eax, r8d
imul eax, edx
add eax, ecx
mov ecx, 0x2561cce6
xor ecx, 0x854bf6fa
add eax, ecx
sub eax, 0xb280c9c5
mov edx, 0x7e72c49e
xor edx, 0xefcb7ac4
mov ecx, eax
and ecx, edx
shl ecx, 1
add eax, 0x91b9be5a
sub eax, ecx
cmp eax, 0x942da5f2
jae 0x14001c6d7
mov eax, dword [0x140272e00]
xor eax, dword [0x140272e04]
mov r8d, 0xffffffff
xor r8d, 0x1cd8d50c
mov edx, eax
and edx, r8d
mov ecx, eax
or ecx, r8d
mov r8d, 0x2f2eb205
xor r8d, 0xd0d14dfa
xor ecx, r8d
imul ecx, edx
mov r8d, 0x2b5d2bb7
xor r8d, 0x3785febb
mov edx, eax
and edx, r8d
or eax, 0x1cd8d50c
imul eax, edx
add eax, ecx
imul eax, eax, 0xd4fc88d6
mov ecx, 0xfe6f419a
xor edx, edx
div ecx
mov ecx, 0x83ea0e11
xor ecx, 0x6399164e
cmp eax, ecx
je 0x14001c648
add rsp, 0xa0
pop rsi
ret
invalid
invalid
mov byte [r8 - 0x41], sil
jmp 0x14001c648