Function at 0x18018a0d0
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 0x18018ab30
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 0x18018a167
inc rcx
cmp rax, rcx
cmova rcx, rax
cmp rcx, 8
mov qword [rsp + 0x28], r15
jae 0x18018a1e0
xor eax, eax
cmp rcx, 4
setae al
lea rax, [rax*4 + 4]
jmp 0x18018a22f
mov qword [rsp + 0x70], r9
mov rsi, qword [rbx]
test r14, r14
je 0x18018a2b6
pxor xmm0, xmm0
pcmpgtb xmm0, xmmword [rsi]
por xmm0, xmmword [0x180190840]
movdqa xmmword [rsi], xmm0
cmp r14, 0x11
jb 0x18018a1bd
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 0x18018a1bd
cmp rax, r14
jb 0x18018a1a0
cmp r14, 0x10
mov qword [rsp + 0x68], rbx
jae 0x18018a4af
lea rcx, [rsi + 0x10]
mov rdx, rsi
mov r8, r14
call fcn.180180980
jmp 0x18018a4b9
mov rax, rcx
shr rax, 0x3d
jne 0x18018ab30
shl rcx, 3
mov eax, 1
cmp rcx, 0xe
jb 0x18018a22f
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 0x18018ab30
mov rsi, rax
add rsi, 0xf
and rsi, 0xfffffffffffffff0
lea rbp, [r15 + 0x10]
mov r13, rsi
add r13, rbp
jb 0x18018ab30
cmp r13, rdi
ja 0x18018ab30
test r13, r13
mov qword [rsp + 0x38], r12
mov rdi, rbx
je 0x18018a2cc
movzx eax, byte [0x18021ea38]
mov rcx, qword [0x18021e9c0]
test rcx, rcx
jne 0x18018a299
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x18018a2ac
mov rcx, rax
mov qword [0x18021e9c0], rax
xor edx, edx
mov r8, r13
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov r12, rax
test rax, rax
jne 0x18018a2d2
mov rcx, r13
call fcn.18004ccc0
ud2
lea rcx, [rsi + 0x10]
mov rdx, rsi
mov r8, r14
call fcn.180180980
xor eax, eax
jmp 0x18018ab0c
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.180181020
sub r15, qword [rsp + 0x48]
mov r13, qword [rdi]
test r14, r14
je 0x18018a45b
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 0x18018a396
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.180180980
mov rbp, r15
lea rax, [r15 + 1]
cmp r15, r14
mov r15, rax
je 0x18018a432
cmp byte [r13 + rbp], 0
js 0x18018a383
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.18007c990
mov rcx, rax
and rcx, rbx
movdqu xmm0, xmmword [r12 + rcx]
pmovmskb edx, xmm0
test edx, edx
jne 0x18018a408
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 0x18018a3f0
tzcnt r8d, edx
add r8, rcx
and r8, rbx
cmp byte [r12 + r8], 0
js 0x18018a340
movdqa xmm0, xmmword [r12]
pmovmskb ecx, xmm0
tzcnt r8d, ecx
jmp 0x18018a340
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 0x18018a475
jmp 0x18018ab15
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 0x18018ab15
sub r13, rax
mov rcx, qword [0x18021e9c0]
xor edx, edx
mov r8, r13
call qword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x18018ab15
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 0x18018a549
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 0x18018aaf0
cmp byte [rsi + rdi], 0x80
jne 0x18018a532
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 0x18018a65c
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 0x18018a6f0
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 0x18018a690
cmp r8d, 3
jbe 0x18018a70c
mov r10d, dword [r9 + rbp]
mov eax, 4
mov rcx, rax
or rcx, 1
cmp rcx, r8
jb 0x18018a71d
jmp 0x18018a737
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 0x18018a6d9
xor r10d, r10d
xor eax, eax
mov rcx, rax
or rcx, 1
cmp rcx, r8
jae 0x18018a737
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 0x18018a760
add rbp, rax
movzx r9d, byte [r9 + rbp]
shl eax, 3
mov ecx, eax
shl r9, cl
or r10, r9
jmp 0x18018a765
test r8, r8
je 0x18018a7c3
lea ecx, [r8*8]
mov r9d, 0xff
shl r9, cl
or r9, r10
cmp r8, 7
jne 0x18018a8c2
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 0x18018a7c5
xor ecx, ecx
mov r8d, 1
sub r8, rcx
mov eax, r8d
and eax, 7
and r8, 0xfffffffffffffff8
cmp rcx, r8
jae 0x18018a870
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 0x18018a7f0
xor r8d, r8d
cmp rax, 4
setae r8b
cmp eax, 4
mov r9d, 0
mov ecx, 0xff
cmovae r9, rcx
shl r8, 2
jmp 0x18018a876
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 0x18018a9ea
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 0x18018a9d0
tzcnt r8d, r8d
add r8, r9
and r8, r12
cmp byte [rsi + r8], 0
js 0x18018aa0a
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 0x18018a520
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 0x18018aad0
imul rax, r8, 0xffffffffffffff78
add rax, rsi
cmp qword [rsp + 0x80], rax
jae 0x18018a5c0
cmp rcx, qword [rsp + 0x78]
jae 0x18018a5c0
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 0x18018aa90
jmp 0x18018a65c
lea rax, [rdi - 0x10]
and rax, r12
mov byte [rsi + rdi], 0xff
mov byte [rax + rsi + 0x10], 0xff
mov r8d, 0x88
call fcn.180180980
jmp 0x18018a532
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