Function at 0x14003c7c0
Capabilities:
Encode data using xor
Get thread local storage value

Disassembly:
sub rsp, 0x88
mov qword [rsp + 0x78], rcx
mov ecx, dword [0x1402980b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, qword [rsp + 0x78]
add rax, 0x60
mov qword [rsp + 0x80], rax
cmp qword [rcx], 0
jle 0x14003caca
mov rax, qword [rsp + 0x78]
add rax, 8
mov qword [rsp + 0x68], rax
xor eax, eax
mov qword [rsp + 0x70], rax
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x60], rax
mov r11d, dword [0x140273d78]
xor r11d, dword [0x140273d7c]
mov ecx, r11d
xor ecx, 0xffffffff
mov r8d, 0xef99a041
xor r8d, 0xb857d9ba
mov eax, 0xb197ce32
xor eax, 0x4e6831cd
xor r8d, eax
mov edx, 0xffffffff
xor edx, 0x77d4b7a3
mov eax, ecx
and eax, 0x77d4b7a3
and r11d, edx
mov r10d, 0x3d390e6e
xor r10d, 0x4aedb9cd
mov r9d, r8d
and r9d, r10d
mov r10d, 0xa0b44e76
xor r10d, 0xf77a378d
and r10d, edx
or eax, r11d
or r9d, r10d
xor eax, r9d
or ecx, r8d
xor ecx, 0xffffffff
or edx, 0x77d4b7a3
and ecx, edx
or eax, ecx
xor eax, 0x6f3db255
mov ecx, 0xd6f975bc
xor ecx, 0x359cca03
xor edx, edx
div ecx
mov ecx, 0x918874f7
xor ecx, 0x1642670e
cmp eax, ecx
ja 0x14003cd6b
mov rcx, qword [rsp + 0x68]
mov eax, dword [0x140273d80]
xor eax, 0x2aa290c4
mov edx, dword [0x140273d84]
mov r8d, 0x80fa481e
xor r8d, 0x606de9c2
xor edx, r8d
sub eax, edx
sub eax, 0xc8d3d6b6
sub eax, 0x48a88473
mov edx, 0x5a0432ab
xor edx, 0x92d7e41d
add eax, edx
mov r8d, 0x557c8e90
xor r8d, 0x40489a6b
xor edx, edx
div r8d
mov rdx, qword [rsp + 0x60]
sub eax, 0xa2524e
mov rcx, qword [rcx]
mov rcx, qword [rcx + rdx*8 + 8]
mov qword [rsp + 0x50], rcx
cmp rcx, 0
sete cl
mov byte [rsp + 0x5f], cl
cmp eax, 0x1efce86c
je 0x14003c8b8
mov al, byte [rsp + 0x5f]
test al, 1
jne 0x14003ca98
jmp 0x14003c947
mov rax, qword [rsp + 0x50]
mov rcx, rax
add rcx, 0xfffffffffffffff0
mov qword [rsp + 0x40], rcx
mov rax, qword [rax - 0x10]
mov qword [rsp + 0x48], rax
movabs rcx, 0x71f3e037216219f8
movabs rdx, 0x71f3e037216219e8
xor rcx, rdx
cmp rax, rcx
jb 0x14003ca45
mov r8, qword [rsp + 0x48]
movabs rcx, 0x72360c1fe40f614a
movabs rax, 0x72360c1fe40f614a
xor rcx, rax
movabs rax, 0x6e43f76b2e25d7b8
movabs rdx, 0x91bc0894d1da2848
xor rax, rdx
sub rcx, rax
mov rax, r8
sub rax, rcx
mov qword [rsp + 0x38], rax
movabs rcx, 0x117b8c82506b553c
movabs rdx, 0xee84737daf94aac3
xor rcx, rdx
mov rdx, rax
xor rdx, rcx
mov rcx, r8
and rcx, rdx
xor r8, 0xffffffffffffffff
mov rdx, rax
and rdx, r8
or rcx, rdx
cmp rcx, 0
setl cl
cmp rax, 0xffffffffffffffff
setg al
xor edx, edx
xor dl, 1
xor al, dl
xor cl, 0xff
mov dl, 1
xor dl, 1
or al, cl
xor ecx, ecx
xor cl, 1
or cl, dl
xor al, 0xff
and al, cl
test al, 1
jne 0x14003ca29
jmp 0x14003ca33
call fcn.14000f24b
jmp 0x14003ca98
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
mov qword [rax], rcx
jmp 0x14003ca98
mov rcx, qword [rsp + 0x50]
call fcn.1401355b0
mov rax, qword [rsp + 0x80]
cmp byte [rax], 0
jne 0x14003cc47
mov rcx, qword [rsp + 0x60]
mov rax, qword [rsp + 0x68]
mov rax, qword [rax]
mov rax, qword [rax + rcx*8 + 8]
add rax, 0xfffffffffffffff0
mov qword [rsp + 0x30], rax
mov ecx, dword [0x1402980b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdx, qword [rsp + 0x30]
mov rcx, rax
add rcx, 0x68
call fcn.1400190f0
mov rcx, qword [rsp + 0x78]
mov rax, qword [rsp + 0x60]
movabs rdx, 0xd04b2f44dff46a94
movabs r8, 0xd04b2f44dff46a95
xor rdx, r8
add rax, rdx
cmp rax, qword [rcx]
mov qword [rsp + 0x70], rax
jl 0x14003c808
mov eax, dword [0x140273d88]
mov edx, dword [0x140273d8c]
mov ecx, eax
and ecx, edx
shl ecx, 1
add eax, edx
sub eax, ecx
mov ecx, 0x375a5434
xor edx, edx
div ecx
mov r11d, eax
mov eax, 0x6df47d83
xor eax, 0xee5ac124
add r11d, eax
sub r11d, 0x8ccb1e5e
mov eax, 0x7146d81d
xor eax, 0xf2e864ba
sub r11d, eax
mov ecx, r11d
xor ecx, 0xffffffff
mov r8d, 0xffffffff
xor r8d, 0xfd841e8b
mov edx, 0xffffffff
xor edx, 0x9f65c290
mov eax, ecx
and eax, 0x9f65c290
and r11d, edx
mov r9d, r8d
and r9d, 0x9f65c290
mov r10d, 0x2498c7ea
xor r10d, 0xd91cd961
and r10d, edx
or eax, r11d
or r9d, r10d
xor eax, r9d
or ecx, r8d
xor ecx, 0xffffffff
or edx, 0x9f65c290
and ecx, edx
or eax, ecx
mov ecx, 0x85e47e6b
xor ecx, 0x333e54
cmp eax, ecx
jbe 0x14003cd74
mov ecx, dword [0x140273d90]
mov edx, dword [0x140273d94]
xor edx, 0xf71d0a76
mov eax, 0x4bc90d81
xor eax, 0xb436f27e
mov r8d, ecx
xor r8d, eax
mov eax, edx
and eax, r8d
mov r8d, 0x7922edaf
xor r8d, 0x86dd1250
xor edx, r8d
and ecx, edx
or eax, ecx
mov ecx, eax
xor ecx, 0xf0506c3c
xor ecx, 0xffffffff
mov edx, 0xf8153d63
xor edx, 0x845515f
or eax, edx
and eax, ecx
mov ecx, 0x985d16ea
xor ecx, 0x90fdac2c
xor edx, edx
div ecx
mov rdx, qword [rsp + 0x78]
mov ecx, 0xad0c87a3
xor ecx, 0xb0c1471a
xor eax, ecx
mov ecx, 0xb2ecf55f
xor ecx, 0xff4d49db
mov rdx, qword [rdx + 8]
mov qword [rsp + 0x20], rdx
cmp rdx, 0
sete dl
mov byte [rsp + 0x2f], dl
cmp eax, ecx
ja 0x14003cd74
mov al, byte [rsp + 0x2f]
test al, 1
jne 0x14003cc47
jmp 0x14003cc2a
mov ecx, dword [0x1402980b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdx, qword [rsp + 0x20]
mov rcx, rax
add rcx, 0x68
call fcn.1400190f0
mov ecx, dword [0x140273d98]
xor ecx, 0xdd474a8f
mov edx, dword [0x140273d9c]
xor edx, 0xffffffff
mov eax, ecx
xor eax, edx
and eax, ecx
mov ecx, eax
or ecx, 0x44be382
mov edx, 0x38fdc573
xor edx, 0xc7023a8c
xor ecx, edx
xor eax, 0xffffffff
mov edx, 0x865663d9
xor edx, 0x821d805b
mov r8d, 0xd7d8811f
xor r8d, 0x28277ee0
xor edx, r8d
and eax, edx
or ecx, eax
xor ecx, 0xffffffff
xor ecx, 0x640293fa
mov eax, ecx
xor eax, 0xffffffff
and eax, 0x554ebcde
mov edx, 0x9c8bbbee
xor edx, 0xc9c50730
mov r8d, 0x3dbc36f9
xor r8d, 0xc243c906
xor edx, r8d
and ecx, edx
or eax, ecx
cmp eax, 0xd47e1de4
je 0x14003cd7d
mov eax, dword [0x140273da0]
mov edx, dword [0x140273da4]
xor edx, 0x87d6d4c8
mov ecx, eax
and ecx, edx
shl ecx, 1
add eax, edx
sub eax, ecx
mov ecx, eax
and ecx, 0xa86399ad
shl ecx, 1
xor eax, 0xa86399ad
add eax, ecx
mov ecx, 0xf0151805
xor edx, edx
div ecx
mov edx, eax
xor edx, 0xffffffff
and edx, 0x7ac91d07
mov r8d, 0xfaac5097
xor r8d, 0x80654d90
mov ecx, 0xf05f934c
xor ecx, 0xfa06cb3
xor r8d, ecx
mov ecx, eax
and ecx, r8d
imul ecx, edx
mov r8d, 0x5c039ed9
xor r8d, 0x26ca83de
mov edx, eax
and edx, r8d
or eax, 0x7ac91d07
imul eax, edx
add eax, ecx
cmp eax, 0xb4b92d23
je 0x14003ccd6
add rsp, 0x88
ret
adc edi, dword [rbp + 0x44e9e6ba]
sti
invalid
invalid
loopne 0x14003cde5
sbb dword [rdi - 0x17], 0x50
invalid
mov rax, qword [rsp + 0x80]
mov eax, dword [rsp + 0x80]
mov qword [rsp + 0x70], rax
mov ecx, dword [0x140273da8]
mov eax, dword [0x140273dac]
add ecx, 0x4b00a3d4
sub ecx, eax
sub ecx, 0x4b00a3d4
mov eax, ecx
xor eax, 0xffffffff
mov edx, 0xe0c4c414
xor edx, 0x8a4a099c
and eax, edx
mov edx, 0xffffffff
xor edx, 0x6a8ecd88
and ecx, edx
sub ecx, eax
sub ecx, 0xdc63d025
mov edx, 0xd8ea5869
xor edx, 0x2715a796
mov eax, ecx
xor eax, edx
and eax, 0x13be9f8d
mov edx, 0xffffffff
xor edx, 0x13be9f8d
and ecx, edx
or eax, ecx
mov ecx, 0xa95d1dff
xor ecx, 0xff305b3d
cmp eax, ecx
je 0x14003d2ab
mov rdx, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x78]
mov eax, dword [0x140273db0]
and eax, dword [0x140273db4]
xor eax, 0xc7cee994
imul r8d, eax, 0x76001c68
mov r9d, 0xffffffff
xor r9d, 0x8be8ff35
mov eax, r8d
xor eax, r9d
and eax, r8d
mov rcx, qword [rcx]
mov rcx, qword [rcx + rdx*8 + 8]
mov qword [rsp + 0x60], rcx
cmp rcx, 0
sete cl
mov byte [rsp + 0x6f], cl
cmp eax, 0x45cf48d3
je 0x14003d2ab
mov al, byte [rsp + 0x6f]
test al, 1
jne 0x14003d12f
jmp 0x14003ced4
mov rax, qword [rsp + 0x60]
mov rcx, rax
and rcx, 0xfffffffffffffff0
movabs rdx, 0x9e815f7f0613fa68
movabs r8, 0x9e815f7f0613fa6a
xor rdx, r8
imul rcx, rdx
movabs rdx, 0x4850770a81cfa96
movabs r8, 0xfb7af88f57e30566
xor rdx, r8
xor rax, rdx
add rax, rcx
mov qword [rsp + 0x50], rax
mov rax, qword [rax]
mov qword [rsp + 0x58], rax
cmp rax, 0x10
jb 0x14003d0d6
mov rdx, qword [rsp + 0x58]
movabs rcx, 0x783c70ae5c6e2391
mov rax, rdx
add rax, rcx
add rax, 0xfffffffffffffff0
movabs rcx, 0x60afb6946f6b6ff2
movabs r8, 0x1893c63a33054c63
xor rcx, r8
sub rax, rcx
mov qword [rsp + 0x48], rax
mov rcx, rax
xor rcx, rdx
movabs rdx, 0x584dbca681521435
movabs r8, 0x584dbca681521435
xor rdx, r8
cmp rcx, rdx
setl dl
movabs rcx, 0x36b76909b0a93264
movabs r8, 0xc94896f64f56cd9b
xor rcx, r8
cmp rax, rcx
setg cl
mov al, cl
xor al, 0xff
mov r8b, dl
xor r8b, 0xff
or al, r8b
xor cl, 0xff
xor dl, 0xff
or cl, dl
xor al, 0xff
xor cl, 0xff
or al, cl
test al, 1
jne 0x14003cfd1
jmp 0x14003cfdb
call fcn.14000f24b
jmp 0x14003d12f
mov r8d, dword [0x140273db8]
mov edx, dword [0x140273dbc]
mov eax, r8d
xor eax, 0xffffffff
and eax, 0x6093075
mov r9d, 0xffffffff
xor r9d, 0x6093075
and r8d, r9d
mov ecx, edx
xor ecx, 0xffffffff
mov r10d, 0x73af8ced
xor r10d, 0x75a6bc98
and ecx, r10d
and edx, r9d
or eax, r8d
or ecx, edx
xor eax, ecx
add eax, 0x16356564
sub eax, 0xa671b8dd
and eax, 0xf4cca06b
mov ecx, 0xde9767fe
xor ecx, 0x645fac9c
cmp eax, ecx
ja 0x14003d2b4
mov rcx, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x48]
mov r8d, dword [0x140273dc0]
add r8d, dword [0x140273dc4]
add r8d, 0xa05fde0b
mov eax, r8d
xor eax, 0xffffffff
mov r9d, 0xffffffff
xor r9d, 0x9cfe6de8
or eax, r9d
mov r9d, 0x7dbb88be
xor r9d, 0x82447741
xor r8d, r9d
mov r9d, 0x593d5d23
xor r9d, 0xc5c330cb
mov r10d, 0x73b1af99
xor r10d, 0x8c4e5066
xor r9d, r10d
or r8d, r9d
xor eax, 0xffffffff
xor r8d, 0xffffffff
or eax, r8d
mov r8d, 0x2b17d3f4
xor r8d, 0xf3922249
or eax, r8d
mov qword [rcx], rdx
cmp eax, 0x680997b4
je 0x14003d044
jmp 0x14003d12f
mov rcx, qword [rsp + 0x60]
call fcn.140136ec0
mov rax, qword [rsp + 0x90]
mov al, byte [rax]
mov cl, 0x18
xor cl, 0x18
cmp al, cl
jne 0x14003d2a2
mov rcx, qword [rsp + 0x70]
mov rax, qword [rsp + 0x78]
mov rax, qword [rax]
mov rax, qword [rax + rcx*8 + 8]
add rax, 0xfffffffffffffff0
mov qword [rsp + 0x40], rax
mov ecx, dword [0x1402980b0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rdx, qword [rsp + 0x40]
mov rcx, rax
add rcx, 0x68
call fcn.1400190f0
mov eax, dword [0x140273dc8]
xor eax, 0xf5026cbf
mov edx, dword [0x140273dcc]
mov ecx, eax
and ecx, edx
xor eax, edx
or ecx, eax
mov eax, ecx
and eax, eax
mov edx, 0xfc99bd7a
xor edx, 0x3664285
xor eax, edx
mov edx, 0xdcc0c34c
xor edx, 0x233f3cb3
xor eax, edx
mov edx, 0xffffffff
xor edx, 0x8a25e818
or eax, edx
mov edx, 0xca9c8275
xor edx, 0x40b96a6d
mov r8d, 0xcfe736c8
xor r8d, 0x3018c937
xor edx, r8d
mov r8d, 0xffffffff
xor r8d, 0x8a25e818
or edx, r8d
and ecx, edx
xor ecx, 0xffffffff
and eax, ecx
xor eax, 0xffffffff
mov ecx, 0x3aaf2848
xor edx, edx
div ecx
mov ecx, eax
mov edx, 0xffffffff
xor edx, 0xba484c3e
mov eax, ecx
xor eax, edx
and eax, ecx
cmp eax, 0x4d688b62
jae 0x14003d2bd
mov r8, qword [rsp + 0x88]
mov eax, dword [0x140273dd0]
add eax, dword [0x140273dd4]
mov ecx, 0x6b2dd4df
xor ecx, 0xafc76b5d
and eax, ecx
mov ecx, 0x42ae8862
xor edx, edx
div ecx
mov rdx, qword [rsp + 0x70]
mov ecx, 0x9b5a67ff
xor ecx, 0xda4f1443
or eax, ecx
mov ecx, 0x36ac20ea
xor ecx, 0x130cfe9f
movabs r9, 0x8d670282d488af77
add rdx, r9
add rdx, 1
movabs r9, 0x8d670282d488af77
sub rdx, r9
mov qword [rsp + 0x30], rdx
cmp rdx, qword [r8]
setl dl
mov byte [rsp + 0x3f], dl
cmp eax, ecx
jbe 0x14003d2bd
mov rax, qword [rsp + 0x30]
mov cl, byte [rsp + 0x3f]
test cl, 1
mov qword [rsp + 0x80], rax
xor byte [rdx - 0x9c0dbb4], cl
rol dword [rcx], 0x48
mov dword [rsp + 0x80], eax
jne 0x14003cde4
jmp 0x14003d26a
mov rax, qword [rsp + 0x88]
mov rax, qword [rax + 8]
mov qword [rsp + 0x28], rax
cmp rax, 0
je 0x14003d2a2
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, 0x98
ret
insb byte [rdi], dx
add al, 0xc1
sbb ch, cl
mov ah, 0xfb
invalid
je 0x14003d24f
mov bh, 0x1e
jmp 0x14003d044
push rsi
adc dword [rsi - 0x17], edi
or edi, edi
invalid