Function at 0x14001ae80
Capabilities:
Get thread local storage value

Disassembly:
sub rsp, 0x148
mov qword [rsp + 0x118], rdx
mov qword [rsp + 0x120], rcx
mov ecx, dword [0x1402d10b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov qword [rsp + 0x128], rax
mov ecx, dword [0x1402d10b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, rax
mov rax, qword [rsp + 0x128]
add rcx, 0x60
mov qword [rsp + 0x130], rcx
mov rcx, rax
add rcx, 0x20
mov qword [rsp + 0x138], rcx
mov r8, qword [rax + 0x20]
mov rcx, 0xffffffffffffffff
xor rcx, 0xffffffffffffffff
movabs rax, 0x72d442cad89c364b
movabs rdx, 0x72d442cad89c364b
xor rax, rdx
movabs rdx, 0x207adfce87958d0a
movabs r9, 0x207adfce87958d0b
xor rdx, r9
sub rax, rdx
sub rcx, rax
mov rax, r8
sub rax, rcx
mov qword [rsp + 0x140], rax
mov rcx, rax
or rcx, rcx
xor rcx, 0xffffffffffffffff
mov rdx, r8
or rdx, rdx
movabs r9, 0x82542adf7d6013c0
movabs r10, 0x7dabd520829fec3f
xor r9, r10
xor rdx, r9
xor rcx, 0xffffffffffffffff
xor rdx, 0xffffffffffffffff
and rcx, rdx
mov rdx, rax
or rdx, r8
movabs r8, 0x5b2f12409767a98d
movabs r9, 0xa4d0edbf68985672
xor r8, r9
xor rdx, r8
xor rcx, 0xffffffffffffffff
movabs r8, 0x85b6dd44f9e6e519
movabs r9, 0x7a4922bb06191ae6
xor r8, r9
xor rdx, r8
and rcx, rdx
movabs rdx, 0xac2103bffaf4c6d0
movabs r8, 0xac2103bffaf4c6d0
xor rdx, r8
cmp rcx, rdx
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 0x14001b004
mov rax, qword [rsp + 0x140]
mov rcx, qword [rsp + 0x128]
add rcx, 0x30
mov qword [rsp + 0x108], rcx
mov qword [rsp + 0x110], rax
jmp 0x14001b14e
mov eax, dword [0x1402a8ba8]
mov ecx, 0x8c524b3f
xor ecx, 0xf0613f50
xor eax, ecx
xor eax, dword [0x1402a8bac]
mov r8d, 0xffffffff
xor r8d, 0x3ff19777
mov edx, eax
and edx, r8d
mov ecx, eax
or ecx, r8d
xor ecx, 0xffffffff
imul ecx, edx
mov edx, eax
and edx, 0x3ff19777
or eax, 0x3ff19777
imul eax, edx
add eax, ecx
mov ecx, 0xb8ccfbf7
xor edx, edx
div ecx
sub eax, 0xce3cc242
mov ecx, 0x6b2704b1
xor ecx, 0x3b867da2
cmp eax, ecx
ja 0x14001bb4e
mov eax, dword [0x1402a8bb0]
mov ecx, 0xb03c39e2
xor ecx, 0x89ded5d1
xor eax, ecx
mov edx, dword [0x1402a8bb4]
mov ecx, eax
or ecx, edx
mov r8d, 0x4c5e11a9
xor r8d, 0xb3a1ee56
xor ecx, r8d
or eax, edx
xor eax, 0xffffffff
or ecx, eax
xor ecx, 0xffffffff
mov edx, 0xffffffff
xor edx, 0xd7e1d6ec
mov eax, ecx
xor eax, edx
and eax, ecx
mov ecx, eax
xor ecx, 0xffffffff
and ecx, 0xf5c1cd9
mov edx, 0xffffffff
xor edx, 0xf5c1cd9
and eax, edx
sub eax, ecx
mov ecx, 0x98ded770
xor ecx, 0x6721288f
mov edx, eax
xor edx, ecx
and edx, 0xa5e5ca09
mov r8d, 0xffffffff
xor r8d, 0xa5e5ca09
mov ecx, eax
and ecx, r8d
imul ecx, edx
mov edx, eax
and edx, 0xa5e5ca09
mov r8d, 0x2e383c0d
xor r8d, 0x8bddf604
or eax, r8d
imul eax, edx
add eax, ecx
mov dword [rsp + 0x104], eax
mov eax, 0xfbd27506
xor eax, 0x8895a01b
mov dword [rsp + 0x100], eax
call fcn.14000ee80
mov ecx, dword [rsp + 0x100]
mov eax, dword [rsp + 0x104]
cmp eax, ecx
jbe 0x14001bb4e
jmp 0x14001bb46
mov rcx, qword [rsp + 0x118]
mov rax, qword [rsp + 0x110]
mov qword [rsp + 0xf8], rax
cmp rax, rcx
jl 0x14001b22a
mov r8, qword [rsp + 0x120]
mov rdx, qword [rsp + 0xf8]
mov rax, qword [rsp + 0x108]
mov rax, qword [rax]
mov r9, rdx
shl r9, 4
mov rcx, rax
add rcx, r9
mov rcx, qword [rcx]
shl rdx, 4
add rax, rdx
add rax, 8
mov rdx, qword [rax]
call fcn.1400187d0
mov rax, qword [rsp + 0x130]
cmp byte [rax], 0
jne 0x14001bb46
mov r8, qword [rsp + 0xf8]
xor eax, eax
mov ecx, eax
sub rcx, r8
xor eax, eax
sub rax, 0xffffffffffffffff
add rcx, rax
xor eax, eax
sub rax, rcx
mov rdx, rax
and rdx, r8
shl rdx, 1
mov rcx, rax
add rcx, r8
sub rcx, rdx
cmp rcx, 0
setl r8b
cmp rax, 0xffffffffffffffff
setg cl
mov dl, cl
xor dl, r8b
xor dl, 0xff
or cl, r8b
and cl, dl
test cl, 1
mov qword [rsp + 0x110], rax
jne 0x14001b220
jmp 0x14001b14e
call fcn.14000ee80
jmp 0x14001bb46
mov eax, dword [0x1402a8bb8]
mov ecx, dword [0x1402a8bbc]
sub eax, 0x4fbbf07e
sub eax, ecx
add eax, 0x4fbbf07e
mov ecx, 0xb0ab9d7c
xor ecx, 0xf34f8cdc
imul eax, ecx
imul eax, eax, 0xa14ca044
add eax, 0x644eb65a
sub eax, 0x2e4deb5d
sub eax, 0x644eb65a
mov ecx, 0x85e835e7
xor ecx, 0x55711aaf
cmp eax, ecx
je 0x14001bb57
mov rdx, qword [rsp + 0x120]
mov eax, dword [0x1402a8bc0]
mov r9d, dword [0x1402a8bc4]
mov ecx, eax
xor ecx, 0xffffffff
mov r8d, r9d
and r8d, ecx
mov r10d, r9d
xor r10d, 0xffffffff
mov ecx, eax
and ecx, r10d
imul ecx, r8d
mov r8d, eax
and r8d, r9d
or eax, r9d
imul eax, r8d
add eax, ecx
or eax, 0x43d5216d
mov r9d, 0x11c85915
xor r9d, 0x6d131eec
mov ecx, 0x330f2e
xor ecx, 0xffccf0d1
xor r9d, ecx
mov r8d, eax
and r8d, r9d
mov ecx, eax
or ecx, r9d
mov r9d, 0x65edd046
xor r9d, 0x9a122fb9
xor ecx, r9d
imul ecx, r8d
mov r8d, eax
and r8d, 0x7cdb47f9
mov r9d, 0x697a8d96
xor r9d, 0x15a1ca6f
or eax, r9d
imul eax, r8d
add eax, ecx
mov ecx, 0x8be18a21
xor ecx, 0xed9fd2c9
or eax, ecx
mov rcx, qword [rdx + 0x48]
cmp rcx, qword [rdx + 0x40]
sete cl
mov byte [rsp + 0xf7], cl
cmp eax, 0xac18618
jb 0x14001bb57
mov rax, qword [rsp + 0x140]
mov cl, byte [rsp + 0xf7]
test cl, 1
mov qword [rsp + 0xe8], rax
jne 0x14001b365
jmp 0x14001b383
mov rax, qword [rsp + 0x120]
mov byte [rax + 0x50], 1
mov eax, 1
mov qword [rsp + 0xe0], rax
jmp 0x14001b591
mov rdx, qword [rsp + 0x118]
mov rcx, qword [rsp + 0xe8]
mov qword [rsp + 0xd8], rcx
mov eax, 2
cmp rcx, rdx
mov qword [rsp + 0xe0], rax
jl 0x14001b591
mov eax, dword [0x1402a8bc8]
and eax, dword [0x1402a8bcc]
imul ecx, eax, 0x6522a29f
mov eax, ecx
xor eax, 0xffffffff
mov edx, ecx
xor edx, 0xffffffff
or eax, edx
mov edx, 0x5bb54302
xor edx, 0x697c7338
and eax, edx
xor eax, 0xffffffff
mov edx, 0x8ba7aeaf
xor edx, 0xb96e9e95
mov r8d, 0x173fd6c6
xor r8d, 0xe8c02939
xor edx, r8d
mov r8d, 0xffffffff
xor r8d, 0x32c9303a
or edx, r8d
and ecx, edx
mov edx, 0x8a723d21
xor edx, 0x758dc2de
xor ecx, edx
xor eax, 0xffffffff
xor ecx, 0xffffffff
or eax, ecx
mov ecx, 0xcc7de9e1
xor edx, edx
div ecx
cmp eax, 0xf02b43cb
jae 0x14001bb60
mov r8, qword [rsp + 0x120]
mov eax, dword [0x1402a8bd0]
xor edx, edx
div dword [0x1402a8bd4]
mov ecx, 0x4291d6f1
xor edx, edx
div ecx
mov rdx, qword [rsp + 0xd8]
mov r9d, eax
mov rax, qword [rsp + 0x108]
mov ecx, r9d
xor ecx, 0xffffffff
mov r10d, r9d
xor r10d, 0xffffffff
and ecx, r10d
mov r10d, 0x5dc26154
or r10d, 0x5dc26154
xor r10d, 0xffffffff
or ecx, r10d
xor ecx, 0xffffffff
or r9d, 0x5dc26154
xor r9d, 0xffffffff
or ecx, r9d
xor ecx, 0xffffffff
mov r9d, 0xe09e7a0
xor r9d, 0x29d36c41
or ecx, r9d
mov dword [rsp + 0xd0], ecx
mov rax, qword [rax]
mov r9, rdx
shl r9, 4
mov rcx, rax
add rcx, r9
mov rcx, qword [rcx]
shl rdx, 4
add rax, rdx
add rax, 8
mov rdx, qword [rax]
call fcn.140019ce5
mov rcx, qword [rsp + 0x130]
mov eax, dword [rsp + 0xd0]
mov cl, byte [rcx]
mov dl, 0x4e
xor dl, 0x4e
cmp cl, dl
sete cl
mov byte [rsp + 0xd7], cl
cmp eax, 0x4a71482c
je 0x14001b435
mov al, byte [rsp + 0xd7]
test al, 1
jne 0x14001b51d
jmp 0x14001bb46
mov rdx, qword [rsp + 0xd8]
mov rax, rdx
add rax, 0xffffffffffffffff
mov rcx, rax
xor rcx, rdx
cmp rcx, 0
setl r8b
movabs rcx, 0xbeb144df1360929d
movabs rdx, 0x414ebb20ec9f6d62
xor rcx, rdx
cmp rax, rcx
setg dl
mov cl, dl
and cl, r8b
xor cl, 0xff
xor dl, 0xff
xor r8b, 0xff
or dl, r8b
xor cl, 0xff
xor dl, 0xff
or cl, dl
test cl, 1
mov qword [rsp + 0xe8], rax
jne 0x14001b587
jmp 0x14001b383
call fcn.14000ee80
jmp 0x14001bb46
mov rax, qword [rsp + 0x120]
mov rcx, qword [rsp + 0xe0]
mov qword [rsp + 0xa8], rcx
mov rcx, rax
add rcx, 0x18
mov qword [rsp + 0xb0], rcx
mov qword [rax + 0x18], 0
mov rcx, rax
add rcx, 0x20
mov qword [rsp + 0xb8], rcx
mov qword [rax + 0x20], 0x400
mov ecx, dword [0x1402d10b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, rax
add rcx, 0x68
mov edx, 0x4000
call fcn.140013e80
mov rcx, qword [rsp + 0x120]
mov rdx, rax
mov rax, qword [rsp + 0x138]
mov r8, rcx
add r8, 0x28
mov qword [rsp + 0xc0], r8
mov qword [rcx + 0x28], rdx
mov rcx, qword [rax]
movabs rdx, 0x7cb2ab55d3400cf1
movabs rax, 0x7cb2ab55d3400cf1
xor rdx, rax
xor eax, eax
cmp rcx, rdx
mov qword [rsp + 0xc8], rax
jg 0x14001b69d
jmp 0x14001b671
mov rcx, qword [rsp + 0x138]
mov rax, qword [rsp + 0xa0]
add rax, 1
cmp rax, qword [rcx]
mov qword [rsp + 0xc8], rax
jl 0x14001b69d
mov rax, qword [rsp + 0xb0]
mov rax, qword [rax]
xor ecx, ecx
cmp rax, 0
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0x98], rax
jg 0x14001b722
jmp 0x14001b822
mov r9, qword [rsp + 0x120]
mov r8, qword [rsp + 0xa8]
mov rax, qword [rsp + 0x108]
mov rdx, qword [rsp + 0xc8]
mov qword [rsp + 0xa0], rdx
mov rax, qword [rax]
mov r10, rdx
shl r10, 4
mov rcx, rax
add rcx, r10
mov rcx, qword [rcx]
movabs r10, 0xe7a8d8a29c7e17f0
movabs r11, 0xe7a8d8a29c7e17f0
xor r10, r11
mov qword [rcx + 8], r10
shl rdx, 4
add rax, rdx
add rax, 8
mov rdx, qword [rax]
call fcn.14001a040
mov rax, qword [rsp + 0x130]
mov al, byte [rax]
mov cl, 0x7f
xor cl, 0x7f
cmp al, cl
je 0x14001b64c
jmp 0x14001bb46
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0x90]
mov qword [rsp + 0x60], rcx
mov rax, qword [rax]
mov r8, rcx
shl r8, 4
mov rdx, rax
add rdx, r8
mov rdx, qword [rdx]
mov qword [rsp + 0x68], rdx
shl rcx, 4
add rax, rcx
add rax, 8
mov rax, qword [rax]
mov qword [rsp + 0x70], rax
mov ecx, dword [0x1402d10b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rsp + 0x68]
mov rdx, rax
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x78], rdx
xor edx, edx
sub rdx, 0x10
sub rcx, rdx
mov qword [rsp + 0x80], rcx
mov rax, qword [rax]
mov qword [rsp + 0x88], rax
cmp rax, 0
je 0x14001b7c7
mov rax, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x80]
call rax
mov rax, qword [rsp + 0x78]
cmp byte [rax + 0x60], 0
jne 0x14001b7f5
mov rax, qword [rsp + 0x70]
movsx rdx, word [rax + 0x10]
mov qword [rsp + 0x58], rdx
mov ecx, 0x10
call fcn.14000eb10
mov rcx, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x58]
sub rcx, rax
call fcn.14001a8c0
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0x60]
add rcx, 1
mov rax, qword [rax]
cmp rcx, rax
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0x98], rax
jl 0x14001b722
mov rax, qword [rsp + 0x98]
mov qword [rsp + 0x50], rax
mov ecx, dword [0x1402a8bd8]
mov edx, dword [0x1402a8bdc]
mov eax, ecx
and eax, edx
xor eax, 0xffffffff
and ecx, edx
xor ecx, 0xffffffff
and eax, ecx
xor eax, 0xffffffff
sub eax, 0xa56207ca
mov edx, 0x6f3fd052
xor edx, 0x6f3fd053
mov ecx, eax
add ecx, edx
xor eax, 0xffffffff
or eax, 0x6dc67a95
add eax, ecx
and eax, eax
xor eax, 0xffffffff
mov ecx, 0xffffffff
xor ecx, 0xee566142
mov edx, 0xffffffff
xor edx, 0xee566142
or ecx, edx
and eax, ecx
mov ecx, 0xf99a46f
xor ecx, 0xf0665b90
xor eax, ecx
mov ecx, 0xffe195c3
xor ecx, 0xc3af6f47
cmp eax, ecx
je 0x14001bb69
mov r9, qword [rsp + 0x50]
mov rcx, qword [rsp + 0x120]
mov eax, dword [0x1402a8be0]
sub eax, dword [0x1402a8be4]
or eax, 0x8a773ab1
mov r8d, eax
xor r8d, 0xffffffff
and r8d, 0x4a2ab5f
mov r10d, 0xffffffff
xor r10d, 0x4a2ab5f
mov edx, eax
and edx, r10d
imul edx, r8d
mov r8d, eax
and r8d, 0x4a2ab5f
mov r10d, 0xde042945
xor r10d, 0xdaa6821a
or eax, r10d
imul eax, r8d
add eax, edx
mov r10d, 0xe79edc6
xor r10d, 0x2b5e7959
mov edx, 0x2155d449
xor edx, 0xdeaa2bb6
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, 0x2527949f
or eax, 0x2527949f
imul eax, r8d
add eax, edx
mov rdx, rcx
add rdx, 0x30
mov qword [rsp + 0x38], rdx
mov rdx, qword [rcx + 0x30]
mov r8, rdx
add r8, r9
mov qword [rsp + 0x40], r8
mov rcx, r8
xor rcx, rdx
mov r10, r8
and r10, r9
movabs rdx, 0xdec79fb7c2441c72
movabs r11, 0xdec79fb7c2441c70
xor rdx, r11
imul rdx, r10
add r8, r9
sub r8, rdx
xor rcx, 0xffffffffffffffff
xor r8, 0xffffffffffffffff
mov rdx, 0xffffffffffffffff
movabs r9, 0xc1a2b5bc4a0dc9b9
xor rdx, r9
or rcx, r8
movabs r8, 0xc1a2b5bc4a0dc9b9
or rdx, r8
xor rcx, 0xffffffffffffffff
and rcx, rdx
cmp rcx, 0
setl cl
mov byte [rsp + 0x4f], cl
cmp eax, 0xa979c694
je 0x14001bb69
mov al, byte [rsp + 0x4f]
test al, 1
jne 0x14001b9ef
jmp 0x14001b9f9
call fcn.14000ee80
jmp 0x14001bb46
mov eax, dword [0x1402a8be8]
mov edx, dword [0x1402a8bec]
mov ecx, 0x89c6dcb2
xor ecx, 0x3d8e0dac
xor edx, ecx
mov ecx, eax
and ecx, edx
shl ecx, 1
add eax, edx
sub eax, ecx
xor eax, 0xaeaccafd
mov ecx, 0x3d1079e2
xor edx, edx
div ecx
mov ecx, eax
xor ecx, 0x903e6d32
xor ecx, 0xffffffff
or eax, 0x903e6d32
and eax, ecx
mov ecx, 0x2a4740b
xor ecx, 0x51a37ada
cmp eax, ecx
je 0x14001bb72
mov rdx, qword [rsp + 0xc0]
mov r8, qword [rsp + 0x38]
mov r9, qword [rsp + 0x40]
mov eax, dword [0x1402a8bf0]
mov ecx, dword [0x1402a8bf4]
xor ecx, 0x6c769b1d
xor eax, ecx
sub eax, 0xf10edbd1
add eax, 0xc892bace
mov r10d, eax
xor r10d, 0xffffffff
and r10d, 0x69b932e4
mov r11d, 0xffffffff
xor r11d, 0x69b932e4
mov ecx, eax
and ecx, r11d
imul ecx, r10d
mov r11d, 0xf2c99687
xor r11d, 0x9b70a463
mov r10d, eax
and r10d, r11d
or eax, 0x69b932e4
imul eax, r10d
add eax, ecx
mov ecx, 0x55d63415
xor ecx, 0x174b9ac8
mov qword [r8], r9
mov rdx, qword [rdx]
mov qword [rsp + 0x28], rdx
cmp rdx, 0
sete dl
mov byte [rsp + 0x37], dl
cmp eax, ecx
je 0x14001ba50
mov al, byte [rsp + 0x37]
test al, 1
jne 0x14001bb28
jmp 0x14001bafc
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 rax, qword [rsp + 0xc0]
mov qword [rax], 0
mov rax, qword [rsp + 0xb8]
mov rcx, qword [rsp + 0xb0]
mov qword [rcx], 0
mov qword [rax], 0
add rsp, 0x148
ret
invalid
and bl, ah
sbb byte [rdi - 0x8e717], al
call qword [rdi]
cmp al, byte [rcx]
cmp ch, cl
int3
invalid
xchg ebp, eax
cmp ecx, dword [rdi]
jg 0x14001bb57
invalid
mov bl, 0xd
outsd dx, dword [rsi]
add cl, ch
invalid