Function at 0x140085f01
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x48
lea rbp, [rsp + 0x40]
mov qword [rbp - 0x38], r8
mov qword [rbp - 0x30], rdx
mov rdi, rcx
mov eax, 0x20
call fcn.140074a70
sub rsp, rax
mov r15, rsp
mov eax, 0x40
call fcn.140074a70
sub rsp, rax
mov r13, rsp
mov rbx, qword [rcx + 0x18]
cmp rbx, 0xffffffffffffffff
je 0x1400866b4
mov r12, qword [rdi + 8]
movabs rax, 0x93a0c300a297c851
lea rcx, [rax + 8]
xor rcx, rax
movabs rax, 0x3df33935f4665de4
lea r8, [rax + 1]
xor r8, rax
add r8, r12
mov rax, r8
shr rax, 3
movabs rdx, 0x19605232248f9b8a
lea rsi, [rdx + 3]
xor rsi, rdx
imul rsi, rax
cmp r12, rcx
cmovb rsi, r12
mov rax, rsi
shr rax, 1
cmp rbx, rax
jae 0x140086038
mov rcx, r8
shr rcx, 4
xor eax, eax
test r8b, 0xf
setne al
mov r15, qword [rdi]
add rax, rcx
je 0x140085ff9
movabs r9, 0x29617b4f9777d2a0
xor ecx, ecx
lea rdx, [r9 + 0x10]
xor rdx, r9
movdqa xmm0, xmmword [0x14008b650]
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [r15 + rcx]
por xmm1, xmm0
movdqa xmmword [r15 + rcx], xmm1
add rcx, rdx
dec rax
jne 0x140085fdd
movabs rax, 0xbe76580d09f2262a
lea rcx, [rax + 0x10]
xor rcx, rax
cmp r8, rcx
jae 0x1400860c0
lea rcx, [r15 + 0x10]
sub rsp, 0x20
mov rdx, r15
call fcn.140084cc0
add rsp, 0x20
cmp r12, 0xffffffffffffffff
jne 0x1400860cb
xor eax, eax
jmp 0x140086322
movabs rax, 0xc86d4881a771e336
lea rcx, [rax + 1]
xor rcx, rax
add rcx, rbx
movabs rax, 0x19bcfc6a95b2a894
lea rdx, [rax + 1]
xor rdx, rax
add rsi, rdx
cmp rcx, rsi
cmova rsi, rcx
movabs rax, 0x94356dc0ed1953b3
lea rcx, [rax + 8]
xor rcx, rax
cmp rsi, rcx
jae 0x140086338
movabs rax, 0x833f8d1d45a18b6a
lea rcx, [rax + 4]
xor rcx, rax
movabs rax, 0x87b9713c86e26fea
lea rdx, [rax + 4]
xor rdx, rax
movabs rax, 0x4855789b63631ba1
lea r8, [rax + 8]
xor r8, rax
cmp rsi, rcx
cmovb r8, rdx
jmp 0x140086389
movdqu xmm0, xmmword [r15]
movdqu xmmword [r15 + r8], xmm0
mov qword [rbp - 0x18], rsi
mov qword [rbp - 0x20], rbx
mov qword [rbp - 0x28], rdi
movabs r13, 0xd2739e932743590d
movabs rax, 0x78f9480cc7d59284
movabs rbx, 0x2bcda24fddb47fc6
movabs r14, 0x24bf0a38c91c63be
movabs rcx, 0xcb6c00e04203d84
lea rdx, [rcx + 1]
xor rdx, rcx
lea rcx, [rax + 0x38]
xor rcx, rax
mov qword [rbp - 8], rcx
xor r10d, r10d
mov qword [rbp - 0x10], rdx
cmp byte [r15 + r10], 0x80
jne 0x140086306
mov rsi, r10
not rsi
imul rsi, qword [rbp - 8]
add rsi, r15
mov qword [rbp], r10
mov rax, r10
neg rax
imul rdi, rax, 0x38
add rdi, r15
mov r8, qword [rdi - 0x30]
mov r9, qword [rdi - 0x28]
sub rsp, 0x20
mov rcx, qword [rbp - 0x30]
mov rdx, qword [rbp - 0x38]
call fcn.140003af3
add rsp, 0x20
mov rcx, r12
and rcx, rax
movdqu xmm0, xmmword [r15 + rcx]
pmovmskb r8d, xmm0
mov rdx, rcx
test r8d, r8d
jne 0x1400861a8
mov rdx, rcx
xor r9d, r9d
lea r8, [r13 + 0x10]
xor r8, r13
add r9, r8
add rdx, r9
and rdx, r12
movdqu xmm0, xmmword [r15 + rdx]
pmovmskb r8d, xmm0
test r8d, r8d
je 0x140086188
bsf r8d, r8d
add r8, rdx
and r8, r12
cmp byte [r15 + r8], 0
mov r10, qword [rbp]
js 0x1400861ca
movdqa xmm0, xmmword [r15]
pmovmskb edx, xmm0
bsf r8d, edx
mov rdx, r10
sub rdx, rcx
mov r9, r8
sub r9, rcx
xor r9, rdx
and r9, r12
movabs rdx, 0xc9cce695bc48cb62
lea rcx, [rdx + 0x10]
xor rcx, rdx
cmp r9, rcx
jb 0x140086280
mov rcx, r8
not rcx
movabs r9, 0x1e28cc2a1a98c749
lea rdx, [r9 + 0x28]
xor rdx, r9
imul rdx, rcx
add rdx, r15
mov r9b, byte [r15 + r8]
movabs r10, 0xa40953d96d916d0f
lea ecx, [r10 + 0x27]
xor ecx, r10d
shr rax, cl
lea rcx, [r8 - 0x10]
and rcx, r12
movabs r11, 0x48df16aeefc45e20
lea r10, [r11 + 0x10]
xor r10, r11
add r10, rcx
mov byte [r15 + r8], al
mov byte [r15 + r10], al
cmp r9b, 0xff
je 0x1400862b7
xor eax, eax
mov cl, byte [rsi + rax]
mov r8b, byte [rdx + rax]
mov byte [rsi + rax], r8b
mov byte [rdx + rax], cl
lea rcx, [r14 + 1]
xor rcx, r14
add rax, rcx
lea rcx, [rbx + 0x38]
xor rcx, rbx
cmp rax, rcx
jne 0x140086257
jmp 0x14008614c
movabs rdx, 0xa4380a119bae51ce
lea ecx, [rdx + 0x29]
xor ecx, edx
shr rax, cl
lea rcx, [r10 - 0x10]
and rcx, r12
movabs r8, 0x1fd734815342d0ef
lea rdx, [r8 + 0x10]
xor rdx, r8
add rdx, rcx
mov byte [r15 + r10], al
mov byte [r15 + rdx], al
jmp 0x140086302
mov r10, qword [rbp]
lea rax, [r10 - 0x10]
and rax, r12
movabs r8, 0xc6ff07ed6079b664
lea rcx, [r8 + 0x10]
xor rcx, r8
add rcx, rax
mov al, 0xff
mov byte [r15 + r10], al
mov byte [r15 + rcx], al
mov rax, qword [rsi + 0x30]
mov qword [rdx + 0x30], rax
movdqu xmm0, xmmword [rsi]
movdqu xmm1, xmmword [rsi + 0x10]
movups xmm2, xmmword [rsi + 0x20]
movups xmmword [rdx + 0x20], xmm2
movdqu xmmword [rdx + 0x10], xmm1
movdqu xmmword [rdx], xmm0
mov rdx, qword [rbp - 0x10]
lea rax, [r10 + rdx]
cmp r10, r12
mov r10, rax
jne 0x140086122
mov rdi, qword [rbp - 0x28]
mov rbx, qword [rbp - 0x20]
mov rax, qword [rbp - 0x18]
movabs r15, 0x8000000000000001
sub rax, rbx
mov qword [rdi + 0x10], rax
jmp 0x1400866a0
mov rax, rsi
shr rax, 0x3d
jne 0x1400866b4
shl rsi, 3
movabs rax, 0xae2404d9d5e6be19
lea rcx, [rax + 5]
xor rcx, rax
mov rax, rsi
xor edx, edx
div rcx
dec rax
bsr rcx, rax
not ecx
mov rax, 0xffffffffffffffff
shr rax, cl
movabs rcx, 0x918412851c554710
lea r8, [rcx + 1]
xor r8, rcx
add r8, rax
movabs rax, 0x97fb9933e7e28ec3
lea rdx, [rax + 0x38]
xor rdx, rax
sub rsp, 0x20
mov rcx, r15
call fcn.14003da45
add rsp, 0x20
mov r14, qword [r15]
mov rax, r15
mov r15, qword [r15 + 8]
test r14, r14
je 0x1400866a0
mov r12, qword [rax + 0x10]
mov rsi, qword [rax + 0x18]
movabs rax, 0x598abfd3ef96482c
lea r8, [rax + 0x11]
xor r8, rax
add r8, r15
sub rsp, 0x20
mov rcx, r14
mov dl, 0xff
call fcn.140085360
add rsp, 0x20
movabs rax, 0x44fbb4df1ecac982
lea rcx, [rax + 0x10]
xor rcx, rax
mov qword [r13 + 0x10], rcx
mov qword [r13 + 0x18], r14
mov qword [r13 + 0x20], r15
mov qword [r13 + 0x28], r12
mov qword [r13 + 0x30], rsi
test rbx, rbx
jne 0x14008641c
xor eax, eax
jmp 0x1400865d9
mov qword [rbp - 0x40], r12
mov qword [rbp - 0x18], r13
movabs rsi, 0xeeddccbba98881eb
mov rax, rbx
movabs rbx, 0x982f2859572ccf68
mov qword [rbp - 0x28], rdi
mov r10, qword [rdi]
movdqa xmm0, xmmword [r10]
pmovmskb r13d, xmm0
not r13d
xor r12d, r12d
mov qword [rbp - 0x20], rax
mov r11, rax
mov rdi, r10
mov qword [rbp - 8], r10
mov qword [rbp], r11
test r13w, r13w
jne 0x14008648e
movdqa xmm0, xmmword [rdi + 0x10]
add rdi, 0x10
pmovmskb r13d, xmm0
lea rax, [rbx + 0x10]
xor rax, rbx
add r12, rax
cmp r13d, 0xffff
je 0x14008646a
not r13d
bsf eax, r13d
add rax, r12
mov qword [rbp - 0x10], rax
neg rax
imul rax, rax, 0x38
mov r8, qword [r10 + rax - 0x30]
mov r9, qword [r10 + rax - 0x28]
sub rsp, 0x20
mov rcx, qword [rbp - 0x30]
mov rdx, qword [rbp - 0x38]
call fcn.140003af3
add rsp, 0x20
mov rcx, rax
and rcx, r15
movdqu xmm0, xmmword [r14 + rcx]
pmovmskb edx, xmm0
test edx, edx
jne 0x1400864f4
xor r8d, r8d
lea rdx, [rsi + 0x10]
xor rdx, rsi
add r8, rdx
add rcx, r8
and rcx, r15
movdqu xmm0, xmmword [r14 + rcx]
pmovmskb edx, xmm0
test edx, edx
je 0x1400864d6
mov r10, qword [rbp - 8]
mov r11, qword [rbp]
bsf edx, edx
add rdx, rcx
and rdx, r15
cmp byte [r14 + rdx], 0
js 0x140086518
movdqa xmm0, xmmword [r14]
pmovmskb ecx, xmm0
bsf edx, ecx
movabs r8, 0xe461adfe64431c59
lea ecx, [r8 + 7]
xor ecx, r8d
shr rax, cl
lea rcx, [rdx - 0x10]
and rcx, r15
movabs r9, 0xed6eeb29cdd1c06
lea r8, [r9 + 0x10]
xor r8, r9
add r8, rcx
mov byte [r14 + rdx], al
mov byte [r14 + r8], al
lea eax, [r13 - 1]
and eax, r13d
mov r9, qword [rbp - 0x10]
not r9
movabs r8, 0x33c5f1abfc1cb644
lea rcx, [r8 + 0x38]
xor rcx, r8
imul rcx, r9
not rdx
movabs r9, 0x6f81503cebeb404b
lea r8, [r9 + 0x28]
xor r8, r9
imul r8, rdx
mov rdx, qword [r10 + rcx + 0x30]
mov qword [r14 + r8 + 0x30], rdx
movdqu xmm0, xmmword [r10 + rcx]
movdqu xmm1, xmmword [r10 + rcx + 0x10]
movups xmm2, xmmword [r10 + rcx + 0x20]
movups xmmword [r14 + r8 + 0x20], xmm2
movdqu xmmword [r14 + r8 + 0x10], xmm1
movdqu xmmword [r14 + r8], xmm0
dec r11
mov r13d, eax
test r11, r11
jne 0x140086460
mov rdi, qword [rbp - 0x28]
mov rax, qword [rbp - 0x20]
mov r13, qword [rbp - 0x18]
mov r12, qword [rbp - 0x40]
movabs r8, 0xccb50e4d0dd728a1
movabs rdx, 0xbe29f4454d39e3fe
sub r12, rax
mov qword [r13 + 0x28], r12
mov qword [r13 + 0x30], rax
xor eax, eax
lea rcx, [rdx + 1]
xor rcx, rdx
lea rdx, [r8 + 4]
xor rdx, r8
mov r8, qword [rdi + rax*8]
mov r9, qword [r13 + rax*8 + 0x18]
mov qword [rdi + rax*8], r9
mov qword [r13 + rax*8 + 0x18], r8
add rax, rcx
cmp rax, rdx
jne 0x140086608
mov rcx, qword [r13 + 0x20]
test rcx, rcx
je 0x140086696
movabs rdx, 0x975fde2b4280a3ac
lea rax, [rdx + 1]
xor rax, rdx
add rax, rcx
mov edx, 0x38
mul rdx
movabs r8, 0xf6c48dc50e0f4422
lea rdx, [r8 + 0xb]
xor rdx, r8
add rdx, rax
and rdx, 0xfffffffffffffff0
movabs rax, 0x1cba29fd233b6ac5
lea r8, [rax + 0xf]
xor r8, rax
add r8, rcx
add r8, rdx
je 0x140086696
mov r8, qword [r13 + 0x18]
sub r8, rdx
mov rcx, qword [0x1400a5b60]
sub rsp, 0x20
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapFree]
add rsp, 0x20
movabs r15, 0x8000000000000001
mov rax, r15
lea rsp, [rbp + 8]
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
ud2