Function at 0x140049b00
Capabilities:
Get thread local storage value

Disassembly:
sub rsp, 0x78
mov qword [rsp + 0x70], rcx
cmp qword [rcx], 0
jle 0x140049e08
mov rax, qword [rsp + 0x70]
add rax, 8
mov qword [rsp + 0x60], rax
xor eax, eax
mov qword [rsp + 0x68], rax
mov rax, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x68]
mov qword [rsp + 0x50], rcx
mov rax, qword [rax]
mov rax, qword [rax + rcx*8 + 8]
mov qword [rsp + 0x58], rax
mov ecx, dword [0x1402980b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rax, qword [rsp + 0x58]
cmp rax, 0
je 0x140049dec
mov rax, qword [rsp + 0x58]
xor ecx, ecx
sub rcx, rax
xor eax, eax
sub rax, 0xfffffffffffffff0
add rcx, rax
xor eax, eax
sub rax, rcx
mov qword [rsp + 0x40], rax
mov rax, qword [rax]
mov qword [rsp + 0x48], rax
cmp rax, 0x10
jb 0x140049cfd
mov r8, qword [rsp + 0x48]
mov rcx, 0xffffffffffffffff
xor rcx, 0xfffffffffffffff0
xor eax, eax
sub rax, 1
sub rcx, rax
mov rax, r8
sub rax, rcx
mov qword [rsp + 0x38], rax
mov rdx, rax
xor rdx, 0xffffffffffffffff
mov rcx, r8
and rcx, rdx
movabs rdx, 0x6e43a94454e7cbbd
movabs r9, 0x91bc56bbab183442
xor rdx, r9
xor r8, rdx
mov rdx, rax
and rdx, r8
or rcx, rdx
cmp rcx, 0
setl dl
movabs rcx, 0x42d0b79c90232ee
movabs r8, 0xfbd2f48636fdcd11
xor rcx, r8
cmp rax, rcx
setg cl
xor dl, 0xff
mov al, cl
xor al, dl
and al, cl
test al, 1
jne 0x140049c1c
jmp 0x140049c26
call fcn.14000f24b
jmp 0x140049dec
mov ecx, dword [0x1402744d8]
xor ecx, 0xb7e7d439
mov edx, dword [0x1402744dc]
mov eax, ecx
xor eax, edx
mov r8d, 0x17a61bd5
xor r8d, 0xe859e42a
xor edx, r8d
and ecx, edx
shl ecx, 1
sub ecx, eax
mov edx, 0xffffffff
xor edx, 0x76b2652d
mov eax, ecx
xor eax, edx
and eax, ecx
and eax, 0x62db011
mov ecx, 0x3edff8c4
xor ecx, 0xd9fb0948
add eax, ecx
mov ecx, 0x88be7555
xor ecx, 0x13a3b382
cmp eax, ecx
jbe 0x140049e43
mov rcx, qword [rsp + 0x38]
mov eax, dword [0x1402744e0]
xor eax, 0xbacc5a2e
mov edx, dword [0x1402744e4]
xor edx, 0x68225b2e
imul eax, edx
mov r8d, 0xc462d4a7
xor edx, edx
div r8d
mov rdx, qword [rsp + 0x40]
mov r8d, eax
mov rax, qword [rsp + 0x58]
xor r8d, 0x288e7fdb
mov r9d, 0x73cefaa4
xor r9d, 0xba6c11a2
add r8d, r9d
mov dword [rsp + 0x34], r8d
mov qword [rdx], rcx
mov r8, qword [rax]
xor ecx, ecx
call fcn.1400200e0
mov eax, dword [rsp + 0x34]
cmp eax, 0x7bc3aa4f
je 0x140049e43
jmp 0x140049dec
mov ecx, dword [0x1402744e8]
mov edx, dword [0x1402744ec]
mov eax, ecx
and eax, edx
xor ecx, edx
or eax, ecx
xor eax, 0x5eedfd65
mov ecx, 0x9bea7f60
xor ecx, 0x6245043f
or eax, ecx
mov r8d, 0xffffffff
xor r8d, 0x6de5d86e
mov edx, eax
and edx, r8d
mov ecx, eax
or ecx, r8d
xor ecx, 0xffffffff
imul ecx, edx
mov edx, eax
and edx, 0x6de5d86e
or eax, 0x6de5d86e
imul eax, edx
add eax, ecx
cmp eax, 0x40e18b32
je 0x140049e4c
mov eax, dword [0x1402744f0]
xor edx, edx
div dword [0x1402744f4]
mov rdx, qword [rsp + 0x40]
mov ecx, eax
mov rax, qword [rsp + 0x58]
xor r8d, r8d
sub r8d, 0xb2d0ecf4
sub ecx, r8d
mov r8d, 0xb01c4e0a
xor r8d, 0x61a783b1
sub ecx, r8d
mov r8d, 0xce4626f0
xor r8d, 0x77e681ac
sub ecx, r8d
add ecx, 0xd1bbcdbb
imul ecx, ecx, 0x21fdd26f
mov dword [rsp + 0x30], ecx
mov r8, qword [rax]
mov ecx, 1
call fcn.1400200e0
mov rax, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x50]
mov rax, qword [rax]
mov rcx, qword [rax + rcx*8 + 8]
call fcn.140020296
mov eax, dword [rsp + 0x30]
cmp eax, 0x1d4942e9
jae 0x140049e4c
jmp 0x140049dec
mov rcx, qword [rsp + 0x70]
mov rax, qword [rsp + 0x50]
add rax, 1
cmp rax, qword [rcx]
mov qword [rsp + 0x68], rax
jl 0x140049b28
mov rax, qword [rsp + 0x70]
mov rax, qword [rax + 8]
mov qword [rsp + 0x28], rax
cmp rax, 0
je 0x140049e3d
mov ecx, dword [0x1402980b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdx, qword [rsp + 0x28]
mov rcx, rax
add rcx, 0x68
call fcn.1400190f0
nop
add rsp, 0x78
ret
and r10d, r14d
xor ecx, ebp
cmp eax, 0x43fffffe
iretd
iretd