Function at 0x14003c5d0
Capabilities:
Get thread local storage value

Disassembly:
sub rsp, 0x68
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x58], rcx
mov r8, qword [rcx]
movabs rcx, 0x1cf29fb301253305
movabs rax, 0xe30d604cfedaccfa
xor rcx, rax
mov rax, r8
add rax, rcx
mov qword [rsp + 0x60], rax
mov rdx, rax
xor rdx, 0xffffffffffffffff
mov rcx, r8
and rcx, rdx
xor r8, 0xffffffffffffffff
mov rdx, rax
and rdx, r8
or rcx, rdx
cmp rcx, 0
setl dl
cmp rax, 0xffffffffffffffff
setg cl
xor dl, 0xff
mov al, cl
xor al, dl
and al, cl
test al, 1
jne 0x14003c31c
mov eax, dword [0x1402a9958]
and eax, dword [0x1402a995c]
xor eax, 0x998f5383
and eax, 0xed082568
xor eax, 0xffffffff
mov ecx, 0xffffffff
xor ecx, 0xff3e2a59
mov edx, 0x62ce17d6
xor edx, 0xa48079fa
mov r8d, 0xd0cabaf1
xor r8d, 0x2f35450e
xor edx, r8d
or eax, ecx
mov ecx, 0xa3785e8f
xor ecx, 0x653630a3
or ecx, edx
xor eax, 0xffffffff
and eax, ecx
mov ecx, 0xc16d7fa6
xor ecx, 0x18017b49
cmp eax, ecx
ja 0x14003c5b3
mov rdx, qword [rsp + 0x58]
mov eax, dword [0x1402a9960]
xor eax, 0xc490c31f
imul eax, dword [0x1402a9964]
mov ecx, 0xbfa6591b
xor ecx, 0x4059a6e4
xor eax, ecx
mov r8d, 0xc1996a4f
xor r8d, 0xb537d575
mov ecx, 0xc7435046
xor ecx, 0x38bcafb9
xor r8d, ecx
mov ecx, 0xa243f54d
xor ecx, 0x70fa09d7
mov r9d, 0xa37fd9bb
xor r9d, 0x5c802644
xor ecx, r9d
or eax, r8d
or ecx, 0xd2b9fc9a
mov r8d, 0xb3c62f35
xor r8d, 0x4c39d0ca
xor eax, r8d
and eax, ecx
add eax, 0xd948e2f8
sub eax, 0x9df71261
mov ecx, 0x63710e42
xor ecx, 0x884ce850
add rdx, 8
mov qword [rsp + 0x48], rdx
cmp eax, ecx
ja 0x14003c5b3
mov rax, qword [rsp + 0x60]
mov qword [rsp + 0x40], rax
jmp 0x14003c326
call fcn.14000ee80
jmp 0x14003c5ae
mov rcx, qword [rsp + 0x50]
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x38], rax
cmp rax, rcx
jl 0x14003c5a1
mov rax, qword [rsp + 0x38]
cmp rax, 0
jl 0x14003c360
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x58]
cmp rax, qword [rcx]
jl 0x14003c36d
mov rcx, rdx
call fcn.140025e55
jmp 0x14003c5ae
mov eax, dword [0x1402a9968]
mov ecx, dword [0x1402a996c]
sub eax, 0x7bd715bd
add eax, ecx
add eax, 0x7bd715bd
mov ecx, 0xdd119d39
xor edx, edx
div ecx
mov edx, eax
xor edx, 0xc48fb0b4
xor edx, 0xffffffff
mov ecx, 0xc136db2e
xor ecx, 0x5b96b9a
and ecx, edx
shl ecx, 1
sub ecx, 0xc48fb0b4
sub eax, ecx
xor eax, 0x60621587
cmp eax, 0x496fce70
je 0x14003c5bc
mov rcx, qword [rsp + 0x48]
mov eax, dword [0x1402a9970]
mov r8d, dword [0x1402a9974]
xor r8d, 0x139cb880
xor edx, edx
div r8d
mov edx, eax
mov rax, qword [rsp + 0x38]
mov r8d, 0x45dcd08a
xor r8d, 0x6d699121
sub edx, r8d
and edx, edx
xor edx, 0xffffffff
mov r8d, 0x6dc57dcd
and r8d, 0x6dc57dcd
xor r8d, 0xffffffff
xor edx, 0xffffffff
mov r9d, 0xa9a45e11
xor r9d, 0x565ba1ee
xor r8d, r9d
or edx, r8d
mov r10d, 0xffffffff
xor r10d, 0x24fba28e
mov r9d, edx
and r9d, r10d
mov r8d, edx
or r8d, r10d
xor r8d, 0xffffffff
imul r8d, r9d
mov r10d, 0xcaac9b15
xor r10d, 0xee57399b
mov r9d, edx
and r9d, r10d
or edx, 0x24fba28e
imul edx, r9d
add edx, r8d
mov dword [rsp + 0x24], edx
mov rcx, qword [rcx]
add rcx, 8
shl rax, 5
add rcx, rax
call fcn.14003c142
mov rcx, qword [rsp + 0x38]
mov eax, dword [rsp + 0x24]
mov r8, rcx
and r8, 0xffffffffffffffff
movabs r9, 0xbb8b4daa3bef1c4
movabs rdx, 0xf4474b255c410e3b
xor r9, rdx
mov rdx, rcx
or rdx, r9
add r8, rdx
mov qword [rsp + 0x28], r8
mov rdx, r8
xor rdx, 0xffffffffffffffff
mov r9, r8
xor r9, 0xffffffffffffffff
and rdx, r9
mov r9, rcx
xor r9, 0xffffffffffffffff
mov r10, rcx
xor r10, 0xffffffffffffffff
and r9, r10
movabs r10, 0x7738acc15d827068
movabs r11, 0x88c7533ea27d8f97
xor r10, r11
xor rdx, r10
movabs r10, 0x3ee1386bae0a017b
movabs r11, 0xc11ec79451f5fe84
xor r10, r11
xor r9, r10
and rdx, r9
or r8, rcx
movabs r9, 0x38856c2c4add6eb2
movabs r10, 0xc77a93d3b522914d
xor r9, r10
xor r8, r9
movabs r9, 0x39a1bee6b02181db
movabs r10, 0xc65e41194fde7e24
xor r9, r10
xor rdx, r9
xor r8, 0xffffffffffffffff
and rdx, r8
movabs r8, 0x35c0a42ff411b2f6
movabs r9, 0x35c0a42ff411b2f6
xor r8, r9
cmp rdx, r8
setl dl
cmp rcx, 0
setne cl
and cl, dl
mov byte [rsp + 0x37], cl
cmp eax, 0x42b343ac
jbe 0x14003c5bc
mov rax, qword [rsp + 0x28]
mov cl, byte [rsp + 0x37]
test cl, 1
mov qword [rsp + 0x40], rax
jne 0x14003c597
jmp 0x14003c326
call fcn.14000ee80
jmp 0x14003c5ae
mov rax, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x50]
mov qword [rax], rcx
add rsp, 0x68
ret
invalid
jg 0x14003c5ca
pop rsi
cli
jmp 0x14003c3c1
test byte [rax], al
add byte [rax], al
add byte [rax], al
push rbp
push rsi
push rdi
push rbx
sub rsp, 0x78
lea rbp, [rsp + 0x70]
mov qword [rbp - 0x10], rdx
mov qword [rbp - 0x18], rcx
mov eax, 0x20
call fcn.1402a7dd0
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x20], rax
mov ecx, dword [0x1402d10b0]
sub rsp, 0x20
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rbp - 0x18]
mov rdx, qword [rbp - 0x10]
add rsp, 0x20
add rax, 0x60
mov qword [rbp - 8], rax
mov rax, qword [rcx]
mov qword [rbp], rax
cmp rax, rdx
jle 0x14003c647
mov rdx, qword [rbp - 0x10]
mov rcx, qword [rbp - 0x18]
sub rsp, 0x20
call fcn.14003c1a0
add rsp, 0x20
jmp 0x14003cb71
mov rax, qword [rbp]
mov rcx, qword [rbp - 0x10]
cmp rax, rcx
jge 0x14003cb71
mov rax, qword [rbp - 0x18]
mov rcx, rax
add rcx, 8
mov qword [rbp - 0x30], rcx
mov rax, qword [rax + 8]
mov qword [rbp - 0x28], rax
cmp rax, 0
je 0x14003c71a
mov rcx, qword [rbp - 0x10]
mov rax, qword [rbp - 0x28]
mov rdx, qword [rax]
movabs r8, 0x83636028caa43570
movabs rax, 0x7c9c9fd7355bca8f
xor r8, rax
mov rax, rdx
xor rax, r8
xor rdx, 0xffffffffffffffff
and rax, rdx
movabs rdx, 0x8dc07759dbc5d944
movabs r8, 0x323f88a6243a26bb
xor rdx, r8
movabs r8, 0xef8ddb4663853ba0
movabs r9, 0x107224b99c7ac45f
xor r8, r9
xor rdx, r8
mov r8, 0xffffffffffffffff
movabs r9, 0xbfffffffffffffff
xor r8, r9
and rdx, r8
xor rax, 0xffffffffffffffff
movabs r8, 0x735da456f31e9897
movabs r9, 0x8ca25ba90ce16768
xor r8, r9
xor rdx, r8
and rax, rdx
cmp rax, rcx
jge 0x14003c910
mov rdx, qword [rbp]
mov r8, qword [rbp - 0x10]
mov rcx, r8
sub rcx, rdx
mov qword [rbp - 0x38], rcx
mov rax, rcx
xor rax, r8
cmp rax, 0
setl al
xor rcx, rdx
movabs rdx, 0x51cfc4a8d4967490
movabs r8, 0xae303b572b698b6f
xor rdx, r8
cmp rcx, rdx
setg dl
xor al, 0xff
xor dl, 0xff
mov cl, 1
xor cl, 1
or al, dl
or cl, 1
xor al, 0xff
and al, cl
test al, 1
jne 0x14003c8fe
mov eax, dword [0x1402a9978]
mov r8d, dword [0x1402a997c]
mov ecx, 0x3cbe66a
xor ecx, 0x3de98a87
xor r8d, ecx
mov ecx, 0x1a66e783
xor ecx, 0xe599187c
mov r9d, r8d
xor r9d, ecx
mov edx, eax
and edx, r9d
mov ecx, eax
or ecx, r9d
mov r9d, 0x676da911
xor r9d, 0x989256ee
xor ecx, r9d
imul ecx, edx
mov edx, eax
and edx, r8d
or eax, r8d
imul eax, edx
add eax, ecx
imul eax, eax, 0x6f235012
mov ecx, 0x7791286f
xor ecx, 0x1319bdbd
imul eax, ecx
or eax, 0xd27286e3
cmp eax, 0xc58d18d8
je 0x14003cc2a
mov r8, qword [rbp - 0x38]
mov rdx, qword [rbp - 0x28]
mov rcx, qword [rbp]
mov ebx, dword [0x1402a9980]
mov edi, dword [0x1402a9984]
xor edi, 0xd5f25336
mov eax, ebx
xor eax, 0xffffffff
mov r10d, edi
xor r10d, 0xffffffff
mov r11d, 0xffffffff
xor r11d, 0x4c0b1ba8
mov esi, 0xae927aa8
xor esi, 0xe2996100
mov r9d, eax
and r9d, esi
and ebx, r11d
mov esi, r10d
and esi, 0x4c0b1ba8
and edi, r11d
or r9d, ebx
or esi, edi
xor r9d, esi
or eax, r10d
xor eax, 0xffffffff
mov r10d, 0xf997fe85
xor r10d, 0xb59ce52d
or r10d, r11d
and eax, r10d
or r9d, eax
mov eax, r9d
and eax, 0x7865e9d7
mov r10d, 0x5af3293c
xor r10d, 0xa50cd6c3
xor eax, r10d
and r9d, 0x7865e9d7
xor r9d, 0xffffffff
and eax, r9d
xor eax, 0xffffffff
mov r9d, eax
and r9d, 0xabf13b49
shl r9d, 1
add eax, 0xabf13b49
sub eax, r9d
add eax, 0x8e5c8ec
mov r9d, 0x52f34ba
xor r9d, 0x6cc350be
sub eax, r9d
sub eax, 0x8e5c8ec
mov dword [rbp - 0x3c], eax
mov r9d, 0x20
sub rsp, 0x30
mov qword [rsp + 0x20], 8
call fcn.140023a90
mov rcx, qword [rbp - 0x30]
add rsp, 0x30
mov rdx, rax
mov eax, dword [rbp - 0x3c]
mov qword [rcx], rdx
cmp eax, 0xfd6e7116
je 0x14003cc2a
jmp 0x14003c910
sub rsp, 0x20
call fcn.14000ee80
add rsp, 0x20
jmp 0x14003cb71
mov rax, qword [rbp]
mov rcx, qword [rbp - 0x20]
mov rdx, qword [rbp - 0x18]
mov r8, qword [rbp - 0x10]
mov qword [rdx], r8
add rcx, 0x10
mov qword [rbp - 0x50], rcx
mov qword [rbp - 0x48], rax
mov rax, qword [rbp - 0x48]
mov qword [rbp - 0x58], rax
mov ecx, dword [0x1402d10b0]
sub rsp, 0x20
mov rax, qword [sym.imp.KERNEL32.dll_TlsGetValue]
call rax
mov r8, qword [rbp - 0x50]
mov rcx, qword [rbp - 0x30]
mov rdx, qword [rbp - 0x20]
add rsp, 0x20
mov rax, qword [rbp - 0x58]
xorps xmm0, xmm0
movaps xmmword [rdx], xmm0
movaps xmmword [r8], xmm0
mov rcx, qword [rcx]
add rcx, 8
shl rax, 5
add rcx, rax
sub rsp, 0x20
call fcn.140070c10
mov rax, qword [rbp - 8]
add rsp, 0x20
cmp byte [rax], 0
jne 0x14003ca8f
mov rcx, qword [rbp - 0x58]
mov rax, rcx
add rax, 1
mov qword [rbp - 0x60], rax
xor rcx, 0xffffffffffffffff
and rax, rcx
movabs rcx, 0x476acecfc46b8278
movabs rdx, 0x476acecfc46b8278
xor rcx, rdx
cmp rax, rcx
jge 0x14003cb57
mov eax, dword [0x1402a9988]
xor eax, 0xcb9b47ad
mov ecx, dword [0x1402a998c]
mov edx, 0xe910507e
xor edx, 0xf86d8e46
xor ecx, edx
add eax, ecx
mov ecx, 0xc437da54
xor ecx, 0x804dcd01
add eax, ecx
mov edx, eax
xor edx, 0x46188d85
xor edx, 0xffffffff
and edx, 0x46188d85
mov ecx, 0xdefe663f
xor ecx, 0xdefe663d
imul ecx, edx
sub ecx, 0x46188d85
sub eax, ecx
add eax, 0x5d56aa1
mov ecx, 0xbc0fe22d
xor ecx, 0x1418e6c8
cmp eax, ecx
jae 0x14003cc33
mov eax, dword [0x1402a9990]
imul eax, dword [0x1402a9994]
mov edx, 0xffffffff
xor edx, 0xf064fa37
mov ecx, eax
and ecx, edx
mov edx, eax
xor edx, 0xf064fa37
add eax, edx
sub eax, ecx
mov ecx, 0x32f7bace
xor edx, edx
div ecx
mov ecx, 0x5ea55d47
xor edx, edx
div ecx
mov dword [rbp - 0x64], eax
sub rsp, 0x20
call fcn.14000ee80
mov eax, dword [rbp - 0x64]
add rsp, 0x20
cmp eax, 0xbbe5134
jae 0x14003ca32
jmp 0x14003ca8f
mov eax, dword [0x1402a9998]
sub eax, dword [0x1402a999c]
mov ecx, 0x4bc5d9c0
xor edx, edx
div ecx
mov ecx, 0x9b139533
xor ecx, 0x9b139533
sub ecx, eax
mov eax, 0x56670a27
xor eax, 0x56670a27
mov edx, 0xab708a6c
xor edx, 0xec1da419
sub eax, edx
add ecx, eax
xor eax, eax
sub eax, ecx
mov ecx, 0x21e0eb15
xor edx, edx
div ecx
cmp eax, 0xa816f17b
jae 0x14003cc3c
mov edx, dword [0x1402a99a0]
mov ecx, dword [0x1402a99a4]
mov r8d, 0xa329e369
xor r8d, 0x5cd61c96
mov eax, edx
xor eax, r8d
xor edx, 0xffffffff
or eax, edx
and ecx, ecx
xor ecx, 0xffffffff
xor eax, 0xffffffff
xor ecx, 0xffffffff
or eax, ecx
mov ecx, 0xfa965437
xor ecx, 0xa034cdef
add eax, ecx
mov ecx, 0x19d833bf
xor edx, edx
div ecx
add eax, 0x64f9f92d
add eax, 0xe22a798e
mov ecx, 0x9042404c
xor ecx, 0xf4bbb961
sub eax, ecx
mov ecx, 0xa5c9f3aa
xor ecx, 0xd86e5a79
cmp eax, ecx
je 0x14003cae2
jmp 0x14003cb71
mov rax, qword [rbp - 0x60]
mov rcx, qword [rbp - 0x10]
cmp rax, rcx
mov qword [rbp - 0x48], rax
je 0x14003ca8f
jmp 0x14003c92f
mov ecx, dword [0x1402a99a8]
add ecx, dword [0x1402a99ac]
mov eax, ecx
and eax, 0xfd287470
or ecx, 0xfd287470
add eax, ecx
sub eax, 0xf0152549
mov ecx, eax
xor ecx, 0x8a6244ca
xor ecx, 0xffffffff
and ecx, 0x8a6244ca
shl ecx, 1
mov edx, 0x1230f139
xor edx, 0x9852b5f3
sub ecx, edx
sub eax, ecx
cmp eax, 0x2073f818
jbe 0x14003cc45
mov eax, dword [0x1402a99b0]
mov ecx, dword [0x1402a99b4]
or eax, eax
xor eax, 0xffffffff
or ecx, ecx
xor ecx, 0xffffffff
or eax, ecx
mov ecx, 0x967a1d7d
xor ecx, 0x6985e282
xor eax, ecx
mov ecx, 0xca3d6868
xor edx, edx
div ecx
mov ecx, eax
xor ecx, 0xdae446a8
mov edx, 0xffffffff
xor edx, 0xdae446a8
and eax, edx
shl eax, 1
sub eax, ecx
mov ecx, 0xd7604603
xor ecx, 0x5043b9c5
xor edx, edx
div ecx
cmp eax, 0xb8f30177
jae 0x14003cc45
lea rsp, [rbp + 8]
pop rbx
pop rdi
pop rsi
pop rbp
ret
fidiv dword [rdi + rsi - 0x4441676]
invalid
imul esi, dword [rbx - 0x2e], 0x3c
jmp 0x14003ca32
xor ebp, dword [rsi + 0x4c]
xor eax, 0xfffe9de9
call qword [rsi]
jge 0x14003ccc6
invalid
cmpsd dword [rsi], dword [rdi]
jmp 0x14003cbbf
or byte [rax - 0x77], cl
and al, 0x58
xor eax, eax
mov qword [rsp + 0x60], rax
mov rax, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x60]
mov qword [rsp + 0x48], rcx
mov rax, qword [rax]
mov rax, qword [rax + rcx*8 + 8]
mov qword [rsp + 0x50], rax
cmp rax, 0
je 0x14003ce2a
mov rax, qword [rsp + 0x50]
mov rcx, rax
and rcx, 0xfffffffffffffff0
movabs rdx, 0x601e7dedd54bf679
movabs r8, 0x601e7dedd54bf67b
xor rdx, r8
imul rcx, rdx
movabs rdx, 0x81c820f2af758e3a
movabs r8, 0x7e37df0d508a71ca
xor rdx, r8
xor rax, rdx
add rax, rcx
mov qword [rsp + 0x38], rax
mov rax, qword [rax]
mov qword [rsp + 0x40], rax
cmp rax, 0x10
jb 0x14003cdc0
mov rdx, qword [rsp + 0x40]
mov rcx, 0xffffffffffffffff
xor rcx, 0xfffffffffffffff0
xor eax, eax
sub rax, 1
sub rcx, rax
mov rax, rdx
sub rax, rcx
mov qword [rsp + 0x30], rax
mov rcx, rax
xor rcx, rdx
cmp rcx, 0
setl dl
cmp rax, 0xffffffffffffffff
setg al
mov cl, al
xor cl, dl
xor cl, 0xff
or al, dl
and al, cl
test al, 1
jne 0x14003cda4
jmp 0x14003cdae
call fcn.14000ee80
jmp 0x14003ce2a
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x30]
mov qword [rax], rcx
jmp 0x14003ce2a
mov rcx, qword [rsp + 0x50]
call fcn.1401ce840
mov rax, qword [rsp + 0x70]
cmp byte [rax], 0
jne 0x14003ce8f
mov rcx, qword [rsp + 0x48]
mov rax, qword [rsp + 0x58]
mov rax, qword [rax]
mov rax, qword [rax + rcx*8 + 8]
movabs rcx, 0x98653ff5bfa9ded8
add rax, rcx
add rax, 0xfffffffffffffff0
movabs rcx, 0x98653ff5bfa9ded8
sub rax, rcx
mov qword [rsp + 0x28], rax
mov ecx, dword [0x1402d10b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdx, qword [rsp + 0x28]
mov rcx, rax
add rcx, 0x68
call fcn.140017ba0
mov rcx, qword [rsp + 0x68]
mov rax, qword [rsp + 0x48]
mov rdx, 0xffffffffffffffff
xor rdx, 1
xor r8d, r8d
sub r8, 1
sub rdx, r8
sub rax, rdx
cmp rax, qword [rcx]
mov qword [rsp + 0x60], rax
jl 0x14003ccd3
mov rax, qword [rsp + 0x68]
mov rax, qword [rax + 8]
mov qword [rsp + 0x20], rax
cmp rax, 0
je 0x14003ce8f
mov ecx, dword [0x1402d10b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdx, qword [rsp + 0x20]
mov rcx, rax
add rcx, 0x68
call fcn.140017ba0
nop
add rsp, 0x78
ret