Function at 0x140031390
Capabilities:
Get thread local storage value

Disassembly:
sub rsp, 0x48
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x40], rcx
movabs rax, 0x8b10c819bda9dea
movabs rcx, 0x8b10c819bda9deb
xor rax, rcx
cmp rdx, rax
jge 0x14003106c
mov rax, qword [rsp + 0x38]
mov qword [rax], 0
mov qword [rax + 8], 0
jmp 0x140031367
mov eax, dword [0x1402a94c8]
add eax, dword [0x1402a94cc]
mov ecx, 0xf3f6479c
xor ecx, 0xee869803
and eax, ecx
xor eax, 0x5779d890
mov ecx, eax
xor ecx, 0xffffffff
and ecx, 0x69dcaa0
mov edx, 0xffffffff
xor edx, 0x69dcaa0
and eax, edx
sub eax, ecx
mov ecx, 0xf6c5c195
xor ecx, 0xa2d43ad2
cmp eax, ecx
jae 0x140031371
mov rdx, qword [rsp + 0x30]
mov eax, dword [0x1402a94d0]
mov r8d, dword [0x1402a94d4]
mov ecx, eax
xor ecx, r8d
xor ecx, 0xffffffff
or eax, r8d
and eax, ecx
imul eax, eax, 0x183a1bbd
add eax, 0xb5918836
xor eax, 0xffffffff
mov ecx, 0xe2ff3a73
xor ecx, 0x6d83a45c
mov r8d, 0x400e03e4
xor r8d, 0xbff1fc1b
xor ecx, r8d
mov r8d, 0xb2f20dc8
xor r8d, 0xa682ab67
mov r9d, 0x895b3a92
xor r9d, 0x76a4c56d
xor r8d, r9d
or eax, ecx
mov ecx, 0x9e856f2f
xor ecx, 0x8af5c980
or ecx, r8d
xor eax, 0xffffffff
and eax, ecx
movabs r8, 0xb86f8976d2a88a51
mov rcx, rdx
add rcx, r8
add rcx, 1
movabs r8, 0x8ab863c8ac0cda09
movabs r9, 0x32d7eabe7ea45058
xor r8, r9
sub rcx, r8
movabs r8, 0xfbbefd3d3c78741
movabs r9, 0xf044102c2c3878be
xor r8, r9
xor rdx, r8
and rcx, rdx
cmp rcx, 0
setl cl
mov byte [rsp + 0x2f], cl
cmp eax, 0xb720cdc0
je 0x140031371
mov al, byte [rsp + 0x2f]
test al, 1
jne 0x1400311a3
jmp 0x1400311ad
call fcn.14000ee80
jmp 0x140031367
mov eax, dword [0x1402a94d8]
mov ecx, 0x4357c0
xor ecx, 0x14f333dc
xor eax, ecx
mov ecx, dword [0x1402a94dc]
xor ecx, 0x292a698a
xor edx, edx
div ecx
or eax, 0x630619aa
mov ecx, 0x3d863b2a
xor ecx, 0xc4599e3c
xor edx, edx
div ecx
mov ecx, 0x2a1baf3e
xor ecx, 0xf3a61860
xor edx, edx
div ecx
cmp eax, 0x2eb35ddb
ja 0x14003137a
mov rdx, qword [rsp + 0x30]
mov ecx, dword [0x1402a94e0]
xor ecx, dword [0x1402a94e4]
xor ecx, 0xffffffff
mov r8d, 0x5505d48
xor r8d, 0xe19fee0
mov eax, 0x4ae4ffa2
xor eax, 0xb51b005d
xor r8d, eax
mov eax, 0x2a05f4e6
xor eax, 0x934bea33
mov r9d, 0xbe4984ef
xor r9d, 0x41b67b10
xor eax, r9d
or ecx, r8d
or eax, 0xb94e1ed5
mov r8d, 0x27c4bed
xor r8d, 0xfd83b412
xor ecx, r8d
and ecx, eax
or ecx, 0xf6393caa
mov r8d, 0xdeb6925b
xor r8d, 0x3dc825a6
mov eax, 0x8e7426fe
xor eax, 0x718bd901
xor r8d, eax
mov eax, ecx
xor eax, r8d
and eax, ecx
movabs r8, 0x2131954af2b2aa28
movabs rcx, 0x2131954af2b2aa21
xor r8, rcx
mov rcx, rdx
add rcx, r8
mov qword [rsp + 0x20], rcx
movabs r8, 0xd8eb65db481fc249
movabs r9, 0x27149a24b7e03db7
xor r8, r9
sub r8, rdx
xor rcx, 0xffffffffffffffff
xor r8, 0xffffffffffffffff
mov rdx, 0xffffffffffffffff
movabs r9, 0xb87407c3ac97131f
xor rdx, r9
or rcx, r8
movabs r8, 0xb87407c3ac97131f
or rdx, r8
xor rcx, 0xffffffffffffffff
and rcx, rdx
cmp rcx, 0
setl cl
mov byte [rsp + 0x2e], cl
cmp eax, 0xa230ce34
je 0x1400311fe
mov al, byte [rsp + 0x2e]
test al, 1
jne 0x14003131d
jmp 0x140031327
call fcn.14000ee80
jmp 0x140031367
mov rax, qword [rsp + 0x20]
cmp rax, 0
jge 0x140031346
mov rcx, r8
mov rdx, r8
call fcn.140018506
jmp 0x140031367
mov rcx, qword [rsp + 0x20]
call fcn.1400149e0
mov rdx, qword [rsp + 0x30]
mov rcx, rax
mov rax, qword [rsp + 0x38]
mov qword [rcx], rdx
mov qword [rax], rdx
mov qword [rax + 8], rcx
mov rax, qword [rsp + 0x40]
add rsp, 0x48
ret
sbb al, 0x84
invalid
or dword [rax + 0x7be99f76], 0x66fffffe
nop word cs:[rax + rax]
push rbp
sub rsp, 0x70
lea rbp, [rsp + 0x70]
mov qword [rbp - 0x20], rcx
mov eax, 0x10
call fcn.1402a7dd0
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x18], rax
mov rax, rcx
add rax, 8
mov qword [rbp - 0x10], rax
mov rax, qword [rcx + 8]
mov qword [rbp - 8], rax
mov ecx, dword [0x1402d10b0]
sub rsp, 0x20
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
add rsp, 0x20
mov rax, qword [rbp - 8]
cmp rax, 0
je 0x1400314f4
mov rax, qword [rbp - 8]
movabs rcx, 0x78025ced1b884033
sub rax, rcx
add rax, 0xfffffffffffffff0
movabs rcx, 0x78025ced1b884033
add rax, rcx
mov qword [rbp - 0x30], rax
mov rax, qword [rax]
mov qword [rbp - 0x28], rax
cmp rax, 0x10
jb 0x1400314c3
mov rdx, qword [rbp - 0x28]
mov rax, rdx
add rax, 0xfffffffffffffff0
mov qword [rbp - 0x38], rax
mov rcx, rax
xor rcx, rdx
cmp rcx, 0
setl dl
movabs rcx, 0x171bb658fa03729d
movabs r8, 0xe8e449a705fc8d62
xor rcx, r8
cmp rax, rcx
setg al
or al, al
xor al, 0xff
mov cl, dl
xor cl, 0xff
xor r8d, r8d
xor r8b, 1
xor dl, r8b
and cl, dl
mov dl, 1
xor dl, 0
xor al, dl
xor cl, 0xff
and al, cl
test al, 1
jne 0x140031485
jmp 0x140031497
sub rsp, 0x20
call fcn.14000ee80
add rsp, 0x20
jmp 0x1400314f4
mov rdx, qword [rbp - 0x30]
mov rax, qword [rbp - 8]
mov rcx, qword [rbp - 0x38]
mov qword [rdx], rcx
mov r8, qword [rax]
mov cl, 1
xor cl, 1
and cl, 1
sub rsp, 0x20
call fcn.14001d8a6
add rsp, 0x20
jmp 0x1400314f4
mov rdx, qword [rbp - 0x30]
mov rax, qword [rbp - 8]
mov r8, qword [rax]
mov ecx, 1
sub rsp, 0x20
call fcn.14001d8a6
mov rax, qword [rbp - 0x10]
add rsp, 0x20
mov rcx, qword [rax]
sub rsp, 0x20
call fcn.14001d970
add rsp, 0x20
mov rax, qword [rbp - 0x20]
mov rax, qword [rax + 0x20]
mov qword [rbp - 0x40], rax
cmp rax, 0
je 0x140031561
mov rax, qword [rbp - 0x40]
mov rax, qword [rax]
movabs rcx, 0xd0cbbc47d4465f2d
movabs rdx, 0x90cbbc47d4465f2d
xor rcx, rdx
and rax, rcx
cmp rax, 0
jne 0x140031561
mov ecx, dword [0x1402d10b0]
sub rsp, 0x20
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdx, qword [rbp - 0x40]
add rsp, 0x20
mov rcx, rax
add rcx, 0x68
sub rsp, 0x20
call fcn.140017ba0
add rsp, 0x20
mov rax, qword [rbp - 0x20]
mov rcx, qword [rbp - 0x18]
mov rdx, qword [rax + 0x28]
mov qword [rcx], rdx
mov rax, qword [rax + 0x30]
mov qword [rcx + 8], rax
sub rsp, 0x20
call fcn.14001dd77
mov rax, qword [rbp - 0x20]
add rsp, 0x20
mov rcx, rax
add rcx, 0x38
mov qword [rbp - 0x50], rcx
mov rax, qword [rax + 0x38]
mov qword [rbp - 0x48], rax
mov ecx, dword [0x1402d10b0]
sub rsp, 0x20
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
add rsp, 0x20
mov rax, qword [rbp - 0x48]
cmp rax, 0
je 0x14003177c
mov eax, dword [0x1402a94e8]
or eax, dword [0x1402a94ec]
xor eax, 0xa9061103
add eax, 0x9f99073d
or eax, 0xe29daf8a
cmp eax, 0xebe6c572
jb 0x140031781
mov rcx, qword [rbp - 0x48]
mov eax, dword [str.e2_W]
mov edx, dword [0x1402a94f4]
add eax, 0xb80b6d31
sub eax, edx
sub eax, 0xb80b6d31
mov r8d, 0x308bef4e
xor r8d, 0xaf4ce09c
xor edx, edx
div r8d
or eax, eax
mov edx, 0x364191b
xor edx, 0xfc9be6e4
xor eax, edx
mov edx, 0xffffffff
xor edx, 0x1e99c761
mov r8d, 0xffffffff
xor r8d, 0x1e99c761
and edx, r8d
xor eax, 0xffffffff
xor edx, 0xffffffff
and eax, edx
and eax, eax
xor eax, 0xffffffff
mov edx, 0xb3aa9a68
and edx, 0xb3aa9a68
xor edx, 0xffffffff
xor eax, 0xffffffff
mov r8d, 0x3a1761fb
xor r8d, 0xc5e89e04
xor edx, r8d
or eax, edx
movabs rdx, 0xf105e9ce78581fca
movabs r8, 0xf105e9ce78581fca
xor rdx, r8
sub rdx, rcx
xor ecx, ecx
sub rcx, 0xfffffffffffffff0
add rdx, rcx
movabs rcx, 0xbedd162a40e69f9b
movabs r8, 0xbedd162a40e69f9b
xor rcx, r8
sub rcx, rdx
mov qword [rbp - 0x68], rcx
mov rcx, qword [rcx]
mov qword [rbp - 0x60], rcx
cmp rcx, 0x10
setb cl
mov byte [rbp - 0x51], cl
cmp eax, 0xbcb6d8a6
jae 0x140031781
mov al, byte [rbp - 0x51]
test al, 1
jne 0x14003174b
jmp 0x1400316d9
mov rdx, qword [rbp - 0x60]
mov rax, rdx
add rax, 0xfffffffffffffff0
mov qword [rbp - 0x70], rax
mov rcx, rax
xor rcx, rdx
cmp rcx, 0
setl cl
cmp rax, 0xffffffffffffffff
setg al
and al, cl
test al, 1
jne 0x14003170b
jmp 0x14003171d
sub rsp, 0x20
call fcn.14000ee80
add rsp, 0x20
jmp 0x14003177c
mov rdx, qword [rbp - 0x68]
mov rax, qword [rbp - 0x48]
mov rcx, qword [rbp - 0x70]
mov qword [rdx], rcx
mov r8, qword [rax]
xor eax, eax
mov cl, al
xor cl, 0
and cl, 1
sub rsp, 0x20
call fcn.14001d8a6
add rsp, 0x20
jmp 0x14003177c
mov rdx, qword [rbp - 0x68]
mov rax, qword [rbp - 0x48]
mov r8, qword [rax]
mov ecx, 1
sub rsp, 0x20
call fcn.14001d8a6
mov rax, qword [rbp - 0x50]
add rsp, 0x20
mov rcx, qword [rax]
sub rsp, 0x20
call fcn.14001d970
add rsp, 0x20
mov rsp, rbp
pop rbp
ret
xor al, 0x72
invalid