Function at 0x18018afe0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
mov r8, qword [rcx + 0x18]
mov rax, r8
inc rax
je 0x18018ba40
mov r15, rdx
mov rbx, rcx
mov r12, qword [rcx + 8]
lea r14, [r12 + 1]
mov rcx, r14
shr rcx, 3
mov r9, r14
and r9, 0xfffffffffffffff8
sub r9, rcx
cmp r12, 8
mov rcx, r9
cmovb rcx, r12
movabs rdi, 0x7ffffffffffffff0
mov rdx, rcx
shr rdx, 1
cmp rax, rdx
mov qword [rsp + 0x48], r8
jbe 0x18018b077
inc rcx
cmp rax, rcx
cmova rcx, rax
cmp rcx, 8
mov qword [rsp + 0x28], r15
jae 0x18018b0f0
xor eax, eax
cmp rcx, 4
setae al
lea rax, [rax*4 + 4]
jmp 0x18018b13f
mov qword [rsp + 0x70], r9
mov rsi, qword [rbx]
test r14, r14
je 0x18018b1c6
pxor xmm0, xmm0
pcmpgtb xmm0, xmmword [rsi]
por xmm0, xmmword [0x180190840]
movdqa xmmword [rsi], xmm0
cmp r14, 0x11
jb 0x18018b0cd
mov eax, 0x10
movdqa xmm0, xmmword [0x180190840]
nop
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [rsi + rax]
por xmm1, xmm0
movdqa xmmword [rsi + rax], xmm1
add rax, 0x10
jb 0x18018b0cd
cmp rax, r14
jb 0x18018b0b0
cmp r14, 0x10
mov qword [rsp + 0x68], rbx
jae 0x18018b3bf
lea rcx, [rsi + 0x10]
mov rdx, rsi
mov r8, r14
call fcn.180181ff0
jmp 0x18018b3c9
mov rax, rcx
shr rax, 0x3d
jne 0x18018ba40
shl rcx, 3
mov eax, 1
cmp rcx, 0xe
jb 0x18018b13f
movabs rdx, 0x2492492492492493
mov rax, rcx
mul rdx
sub rcx, rdx
shr rcx, 1
add rcx, rdx
shr rcx, 2
dec rcx
bsr rcx, rcx
not ecx
mov rax, 0xffffffffffffffff
shr rax, cl
inc rax
mov ecx, 0x88
mov r15, rax
mul rcx
jo 0x18018ba40
mov rsi, rax
add rsi, 0xf
and rsi, 0xfffffffffffffff0
lea rbp, [r15 + 0x10]
mov r13, rsi
add r13, rbp
jb 0x18018ba40
cmp r13, rdi
ja 0x18018ba40
test r13, r13
mov qword [rsp + 0x38], r12
mov rdi, rbx
je 0x18018b1dc
movzx eax, byte [0x180221a30]
mov rcx, qword [0x1802219b8]
test rcx, rcx
jne 0x18018b1a9
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x18018b1bc
mov rcx, rax
mov qword [0x1802219b8], rax
xor edx, edx
mov r8, r13
call qword [sym.imp.kernel32.dll_HeapAlloc]
mov r12, rax
test rax, rax
jne 0x18018b1e2
mov rcx, r13
call fcn.18004d180
ud2
lea rcx, [rsi + 0x10]
mov rdx, rsi
mov r8, r14
call fcn.180181ff0
xor eax, eax
jmp 0x18018ba1c
mov r12d, 0x10
lea rbx, [r15 - 1]
mov rax, r15
shr rax, 3
and r15, 0xfffffffffffffff8
sub r15, rax
cmp rbx, 8
cmovb r15, rbx
add r12, rsi
mov rcx, r12
mov dl, 0xff
mov r8, rbp
call fcn.180182690
sub r15, qword [rsp + 0x48]
mov r13, qword [rdi]
test r14, r14
je 0x18018b36b
mov qword [rsp + 0x30], r15
lea rsi, [r13 - 0x88]
mov rax, qword [rsp + 0x28]
mov rcx, qword [rax]
mov qword [rsp + 0x40], rcx
mov rax, qword [rax + 8]
mov qword [rsp + 0x28], rax
mov r15d, 1
xor ebp, ebp
jmp 0x18018b2a6
shr rax, 0x39
lea rcx, [r8 - 0x10]
and rcx, rbx
mov byte [r12 + r8], al
mov byte [rcx + r12 + 0x10], al
imul rax, rbp, 0xffffffffffffff78
lea rdx, [rax + r13]
add rdx, 0xffffffffffffff78
imul rax, r8, 0xffffffffffffff78
lea rcx, [rax + r12]
add rcx, 0xffffffffffffff78
mov r8d, 0x88
call fcn.180181ff0
mov rbp, r15
lea rax, [r15 + 1]
cmp r15, r14
mov r15, rax
je 0x18018b342
cmp byte [r13 + rbp], 0
js 0x18018b293
mov rax, rbp
neg rax
lea rcx, [rbp*8]
shl rax, 7
sub rax, rcx
mov r8, qword [rsi + rax]
mov r9, qword [rsi + rax + 0x10]
mov rcx, qword [rsp + 0x40]
mov rdx, qword [rsp + 0x28]
call fcn.18007d080
mov rcx, rax
and rcx, rbx
movdqu xmm0, xmmword [r12 + rcx]
pmovmskb edx, xmm0
test edx, edx
jne 0x18018b318
mov r8d, 0x10
nop word cs:[rax + rax]
add rcx, r8
and rcx, rbx
movdqu xmm0, xmmword [r12 + rcx]
pmovmskb edx, xmm0
add r8, 0x10
test edx, edx
je 0x18018b300
tzcnt r8d, edx
add r8, rcx
and r8, rbx
cmp byte [r12 + r8], 0
js 0x18018b250
movdqa xmm0, xmmword [r12]
pmovmskb ecx, xmm0
tzcnt r8d, ecx
jmp 0x18018b250
mov qword [rdi], r12
mov qword [rdi + 8], rbx
mov rax, qword [rsp + 0x30]
mov qword [rdi + 0x10], rax
mov r8, qword [rsp + 0x38]
test r8, r8
movabs rdi, 0x7ffffffffffffff0
jne 0x18018b385
jmp 0x18018ba25
mov qword [rdi], r12
mov qword [rdi + 8], rbx
mov qword [rdi + 0x10], r15
movabs rdi, 0x7ffffffffffffff0
mov r8, qword [rsp + 0x38]
mov ecx, 0x88
mov rax, r14
mul rcx
add rax, 0xf
and rax, 0xfffffffffffffff0
add r8, rax
cmp r8, 0xffffffffffffffef
je 0x18018ba25
sub r13, rax
mov rcx, qword [0x1802219b8]
xor edx, edx
mov r8, r13
call qword [sym.imp.kernel32.dll_HeapFree]
jmp 0x18018ba25
movdqu xmm0, xmmword [rsi]
movdqu xmmword [rsi + r14], xmm0
mov rax, qword [r15]
mov rcx, qword [r15 + 8]
movabs rdx, 0x736f6d6570736575
xor rdx, rax
mov qword [rsp + 0x30], rdx
movabs rdx, 0x646f72616e646f6d
xor rdx, rcx
mov qword [rsp + 0x60], rdx
movabs rdx, 0x6c7967656e657261
xor rdx, rax
mov qword [rsp + 0x58], rdx
movabs rax, 0x7465646279746573
xor rax, rcx
mov qword [rsp + 0x50], rax
mov rbx, rsi
xor edi, edi
mov qword [rsp + 0x38], r12
jmp 0x18018b459
shr rax, 0x39
lea rcx, [rdi - 0x10]
and rcx, r12
mov byte [rsi + rdi], al
mov byte [rcx + rsi + 0x10], al
lea rax, [rdi + 1]
add rbx, 0xffffffffffffff78
cmp rdi, r12
mov rdi, rax
je 0x18018ba00
cmp byte [rsi + rdi], 0x80
jne 0x18018b442
imul rax, rdi, 0xffffffffffffff78
lea rcx, [rsi + rax]
add rcx, 0xffffffffffffff78
mov qword [rsp + 0x80], rcx
add rax, rsi
mov qword [rsp + 0x78], rax
mov rax, rdi
not rax
mov rcx, rax
shl rcx, 7
lea rdx, [rcx + rax*8]
add rdx, rsi
mov rax, rdi
neg rax
mov qword [rsp + 0x40], rdi
lea rcx, [rdi*8]
shl rax, 7
sub rax, rcx
add rax, rsi
add rax, 0xffffffffffffff78
mov qword [rsp + 0x28], rax
jmp 0x18018b56c
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
movups xmm2, xmmword [rcx]
movups xmm3, xmmword [rcx + 0x10]
movups xmmword [rdx], xmm2
movups xmmword [rdx + 0x10], xmm3
movups xmmword [rcx], xmm0
movups xmmword [rcx + 0x10], xmm1
movups xmm0, xmmword [rdx + 0x20]
movups xmm1, xmmword [rdx + 0x30]
movups xmm2, xmmword [rcx + 0x20]
movups xmm3, xmmword [rcx + 0x30]
movups xmmword [rdx + 0x20], xmm2
movups xmmword [rdx + 0x30], xmm3
movups xmmword [rcx + 0x20], xmm0
movups xmmword [rcx + 0x30], xmm1
movups xmm0, xmmword [rdx + 0x40]
movups xmm1, xmmword [rdx + 0x50]
movups xmm2, xmmword [rcx + 0x40]
movups xmm3, xmmword [rcx + 0x50]
movups xmmword [rdx + 0x40], xmm2
movups xmmword [rdx + 0x50], xmm3
movups xmmword [rcx + 0x40], xmm0
movups xmmword [rcx + 0x50], xmm1
movdqu xmm0, xmmword [rdx + 0x60]
movdqu xmm1, xmmword [rdx + 0x70]
movups xmm2, xmmword [rcx + 0x60]
movups xmm3, xmmword [rcx + 0x70]
movups xmmword [rdx + 0x60], xmm2
movups xmmword [rdx + 0x70], xmm3
movdqu xmmword [rcx + 0x60], xmm0
movdqu xmmword [rcx + 0x70], xmm1
mov rax, qword [rdx + 0x80]
mov r8, qword [rcx + 0x80]
mov qword [rdx + 0x80], r8
mov qword [rcx + 0x80], rax
mov rax, qword [rsp + 0x28]
mov r9, qword [rax]
mov r14, qword [rax + 0x10]
mov r8d, r14d
and r8d, 7
mov rax, r14
and rax, 0xfffffffffffffff8
je 0x18018b600
mov r11, qword [rsp + 0x58]
mov r15, qword [rsp + 0x60]
mov r13, qword [rsp + 0x50]
xor ebp, ebp
mov r12, qword [rsp + 0x30]
nop
add r12, r15
rol r15, 0xd
mov rcx, qword [r9 + rbp]
xor r15, r12
rol r12, 0x20
xor r13, rcx
add r11, r13
rol r13, 0x10
xor r13, r11
add r12, r13
rol r13, 0x15
add r11, r15
rol r15, 0x11
xor r15, r11
rol r11, 0x20
xor r13, r12
xor r12, rcx
add rbp, 8
cmp rbp, rax
jb 0x18018b5a0
cmp r8d, 3
jbe 0x18018b61c
mov r10d, dword [r9 + rbp]
mov eax, 4
mov rcx, rax
or rcx, 1
cmp rcx, r8
jb 0x18018b62d
jmp 0x18018b647
mov r13, qword [rsp + 0x50]
mov r15, qword [rsp + 0x60]
mov r11, qword [rsp + 0x58]
mov r12, qword [rsp + 0x30]
xor ebp, ebp
cmp r8d, 3
ja 0x18018b5e9
xor r10d, r10d
xor eax, eax
mov rcx, rax
or rcx, 1
cmp rcx, r8
jae 0x18018b647
lea rcx, [rax + rbp]
movzx edi, word [r9 + rcx]
lea ecx, [rax*8]
shl rdi, cl
or r10, rdi
or rax, 2
cmp rax, r8
jae 0x18018b670
add rbp, rax
movzx r9d, byte [r9 + rbp]
shl eax, 3
mov ecx, eax
shl r9, cl
or r10, r9
jmp 0x18018b675
test r8, r8
je 0x18018b6d3
lea ecx, [r8*8]
mov r9d, 0xff
shl r9, cl
or r9, r10
cmp r8, 7
jne 0x18018b7d2
mov ecx, 8
add r12, r15
rol r15, 0xd
sub rcx, r8
xor r15, r12
rol r12, 0x20
xor r13, r9
add r11, r13
rol r13, 0x10
xor r13, r11
add r12, r13
rol r13, 0x15
xor r13, r12
add r11, r15
rol r15, 0x11
xor r15, r11
rol r11, 0x20
xor r12, r9
jmp 0x18018b6d5
xor ecx, ecx
mov r8d, 1
sub r8, rcx
mov eax, r8d
and eax, 7
and r8, 0xfffffffffffffff8
cmp rcx, r8
jae 0x18018b780
nop word cs:[rax + rax]
add r12, r15
rol r15, 0xd
mov r9, r13
xor r15, r12
rol r12, 0x20
xor r9, 0xff
add r11, r9
shld r9, r13, 0x10
xor r9, r11
add r12, r9
rol r9, 0x15
add r11, r15
rol r15, 0x11
mov r13, r9
xor r15, r11
rol r11, 0x20
xor r13, r12
xor r12, 0xff
add rcx, 8
cmp rcx, r8
jb 0x18018b700
xor r8d, r8d
cmp rax, 4
setae r8b
cmp eax, 4
mov r9d, 0
mov ecx, 0xff
cmovae r9, rcx
shl r8, 2
jmp 0x18018b786
xor r9d, r9d
xor r8d, r8d
mov r10, r8
lea ecx, [r8*8]
mov edi, 0xff
shl rdi, cl
or r10, 1
mov rbp, r8
or rbp, 2
cmp r10, rax
mov r10d, 0
cmovae rdi, r10
cmovae rbp, r8
or rdi, r9
lea ecx, [rbp*8]
mov r9d, 0xff
shl r9, cl
cmp rbp, rax
cmovae r9, r10
or r9, rdi
shl r14, 0x38
movabs rax, 0x100000000000000
add r14, rax
add r12, r15
rol r15, 0xd
or r14, r9
xor r15, r12
rol r12, 0x20
xor r13, r14
add r11, r13
rol r13, 0x10
xor r13, r11
add r12, r13
rol r13, 0x15
add r11, r15
rol r15, 0x11
xor r13, r12
xor r15, r11
rol r11, 0x20
xor r12, r14
add r12, r15
rol r15, 0xd
xor r15, r12
rol r12, 0x20
xor r11, 0xff
add r11, r13
rol r13, 0x10
xor r13, r11
add r12, r13
rol r13, 0x15
add r11, r15
rol r15, 0x11
xor r15, r11
rol r11, 0x20
xor r13, r12
add r12, r15
rol r15, 0xd
xor r15, r12
rol r12, 0x20
add r11, r13
rol r13, 0x10
xor r13, r11
add r12, r13
rol r13, 0x15
add r11, r15
rol r15, 0x11
xor r15, r11
rol r11, 0x20
xor r13, r12
add r12, r15
rol r15, 0xd
add r11, r13
rol r13, 0x10
xor r13, r11
rol r13, 0x15
xor r15, r12
add r11, r15
rol r15, 0x11
mov rax, r11
rol rax, 0x20
xor rax, r15
xor rax, r13
xor rax, r11
mov r12, qword [rsp + 0x38]
mov rcx, r12
and rcx, rax
movdqu xmm0, xmmword [rsi + rcx]
pmovmskb r8d, xmm0
mov r9, rcx
test r8d, r8d
mov rdi, qword [rsp + 0x40]
jne 0x18018b8fa
mov r10d, 0x10
mov r9, rcx
nop dword [rax]
add r9, r10
and r9, r12
movdqu xmm0, xmmword [rsi + r9]
pmovmskb r8d, xmm0
add r10, 0x10
test r8d, r8d
je 0x18018b8e0
tzcnt r8d, r8d
add r8, r9
and r8, r12
cmp byte [rsi + r8], 0
js 0x18018b91a
movdqa xmm0, xmmword [rsi]
pmovmskb r8d, xmm0
tzcnt r8d, r8d
mov r9, rdi
sub r9, rcx
mov r10, r8
sub r10, rcx
xor r10, r9
and r10, r12
cmp r10, 0x10
jb 0x18018b430
mov rcx, r8
not rcx
mov r9, rcx
shl r9, 7
lea rcx, [r9 + rcx*8]
add rcx, rsi
movzx r9d, byte [rsi + r8]
shr rax, 0x39
lea r10, [r8 - 0x10]
and r10, r12
mov byte [rsi + r8], al
mov byte [r10 + rsi + 0x10], al
cmp r9b, 0xff
je 0x18018b9e0
imul rax, r8, 0xffffffffffffff78
add rax, rsi
cmp qword [rsp + 0x80], rax
jae 0x18018b4d0
cmp rcx, qword [rsp + 0x78]
jae 0x18018b4d0
mov rcx, 0xffffffffffffff78
nop word cs:[rax + rax]
movzx r8d, byte [rbx + rcx]
movzx r9d, byte [rax + rcx]
mov byte [rbx + rcx], r9b
mov byte [rax + rcx], r8b
movzx r8d, byte [rbx + rcx + 1]
movzx r9d, byte [rax + rcx + 1]
mov byte [rbx + rcx + 1], r9b
mov byte [rax + rcx + 1], r8b
add rcx, 2
jne 0x18018b9a0
jmp 0x18018b56c
lea rax, [rdi - 0x10]
and rax, r12
mov byte [rsi + rdi], 0xff
mov byte [rax + rsi + 0x10], 0xff
mov r8d, 0x88
call fcn.180181ff0
jmp 0x18018b442
cmp r12, 8
mov rax, qword [rsp + 0x70]
cmovb rax, r12
movabs rdi, 0x7ffffffffffffff0
mov rbx, qword [rsp + 0x68]
sub rax, qword [rsp + 0x48]
mov qword [rbx + 0x10], rax
add rdi, 0x11
mov rax, rdi
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2