Function at 0x180187690
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 r10, qword [rcx + 0x18]
mov rax, r10
inc rax
je 0x1801880f5
mov r15, rdx
mov rbx, rcx
mov r11, qword [rcx + 8]
lea r8, [r11 + 1]
mov rcx, r8
shr rcx, 3
mov r9, r8
and r9, 0xfffffffffffffff8
sub r9, rcx
cmp r11, 8
mov rcx, r9
cmovb rcx, r11
movabs rdi, 0x7ffffffffffffff0
mov rdx, rcx
shr rdx, 1
cmp rax, rdx
mov qword [rsp + 0x28], r11
mov qword [rsp + 0x48], r10
jbe 0x18018772b
inc rcx
cmp rax, rcx
cmova rcx, rax
cmp rcx, 8
mov qword [rsp + 0x30], r8
jae 0x1801877b2
xor eax, eax
cmp rcx, 4
setae al
lea r14, [rax*4 + 4]
jmp 0x180187802
mov qword [rsp + 0x70], r9
mov rsi, qword [rbx]
test r8, r8
je 0x18018787a
pxor xmm0, xmm0
pcmpgtb xmm0, xmmword [rsi]
por xmm0, xmmword [0x18018c840]
movdqa xmmword [rsi], xmm0
cmp r8, 0x11
jb 0x18018778d
mov eax, 0x10
movdqa xmm0, xmmword [0x18018c840]
nop word cs:[rax + rax]
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [rsi + rax]
por xmm1, xmm0
movdqa xmmword [rsi + rax], xmm1
add rax, 0x10
jb 0x18018778d
cmp rax, r8
jb 0x180187770
cmp r8, 0x10
mov qword [rsp + 0x38], rbx
jae 0x180187a71
lea rcx, [rsi + 0x10]
mov rdx, rsi
call fcn.180171d20
mov r11, qword [rsp + 0x28]
jmp 0x180187a7b
mov rax, rcx
shr rax, 0x3d
jne 0x1801880f5
shl rcx, 3
mov r14d, 1
cmp rcx, 0xe
jb 0x180187802
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 r14, 0xffffffffffffffff
shr r14, cl
inc r14
mov ecx, 0x88
mov rax, r14
mul rcx
jo 0x1801880f5
mov rsi, rax
add rsi, 0xf
and rsi, 0xfffffffffffffff0
lea rbp, [r14 + 0x10]
mov r13, rsi
add r13, rbp
jb 0x1801880f5
cmp r13, rdi
ja 0x1801880f5
test r13, r13
je 0x18018788d
mov rcx, qword [0x18021a960]
test rcx, rcx
jne 0x18018785d
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x180187870
mov rcx, rax
mov qword [0x18021a960], rax
xor edx, edx
mov r8, r13
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov r12, rax
test rax, rax
jne 0x180187893
mov rcx, r13
call fcn.18004ca00
ud2
lea rcx, [rsi + 0x10]
mov rdx, rsi
call fcn.180171d20
xor eax, eax
jmp 0x1801880d1
mov r12d, 0x10
mov rdi, r15
mov r15, r14
dec r14
mov rax, r15
shr rax, 3
and r15, 0xfffffffffffffff8
sub r15, rax
cmp r14, 8
cmovb r15, r14
add r12, rsi
mov rcx, r12
mov dl, 0xff
mov r8, rbp
call fcn.1801723c0
sub r15, qword [rsp + 0x48]
mov r13, qword [rbx]
mov rax, qword [rsp + 0x30]
test rax, rax
je 0x180187a20
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x38], rbx
lea rsi, [r13 - 0x88]
mov rbp, qword [rdi]
mov r15, qword [rdi + 8]
xor ebx, ebx
mov r8, qword [rsp + 0x28]
jmp 0x180187958
shr rax, 0x39
lea rcx, [r8 - 0x10]
and rcx, r14
mov byte [r12 + r8], al
mov byte [rcx + r12 + 0x10], al
imul rax, rbx, 0xffffffffffffff78
lea rdx, [rax + r13]
add rdx, 0xffffffffffffff78
imul rax, r8, 0xffffffffffffff78
lea rcx, [rax + r12]
add rcx, 0xffffffffffffff78
mov r8d, 0x88
call fcn.180171d20
mov r8, qword [rsp + 0x28]
lea rax, [rbx + 1]
cmp rbx, r8
mov rbx, rax
je 0x1801879f2
cmp byte [r13 + rbx], 0
js 0x180187948
mov rax, rbx
neg rax
lea rcx, [rbx*8]
shl rax, 7
sub rax, rcx
mov r8, qword [rsi + rax]
mov r9, qword [rsi + rax + 0x10]
mov rcx, rbp
mov rdx, r15
call fcn.18007ad30
mov rcx, rax
and rcx, r14
movdqu xmm0, xmmword [r12 + rcx]
pmovmskb edx, xmm0
test edx, edx
jne 0x1801879c8
mov r8d, 0x10
nop word cs:[rax + rax]
add rcx, r8
and rcx, r14
movdqu xmm0, xmmword [r12 + rcx]
pmovmskb edx, xmm0
add r8, 0x10
test edx, edx
je 0x1801879b0
tzcnt r8d, edx
add r8, rcx
and r8, r14
cmp byte [r12 + r8], 0
js 0x180187900
movdqa xmm0, xmmword [r12]
pmovmskb ecx, xmm0
tzcnt r8d, ecx
jmp 0x180187900
mov rax, qword [rsp + 0x38]
mov qword [rax], r12
mov qword [rax + 8], r14
mov rcx, qword [rsp + 0x40]
mov qword [rax + 0x10], rcx
test r8, r8
movabs rdi, 0x7ffffffffffffff0
mov rax, qword [rsp + 0x30]
jne 0x180187a3a
jmp 0x1801880da
mov qword [rbx], r12
mov qword [rbx + 8], r14
mov qword [rbx + 0x10], r15
movabs rdi, 0x7ffffffffffffff0
mov r8, qword [rsp + 0x28]
mov ecx, 0x88
mul rcx
add rax, 0xf
and rax, 0xfffffffffffffff0
add r8, rax
cmp r8, 0xffffffffffffffef
je 0x1801880da
sub r13, rax
mov rcx, qword [0x18021a960]
xor edx, edx
mov r8, r13
call qword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x1801880da
movdqu xmm0, xmmword [rsi]
movdqu xmmword [rsi + r8], xmm0
mov rax, qword [r15]
mov rcx, qword [r15 + 8]
movabs rdx, 0x736f6d6570736575
xor rdx, rax
mov qword [rsp + 0x68], 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
jmp 0x180187b09
shr rax, 0x39
lea rcx, [rdi - 0x10]
and rcx, r11
mov byte [rsi + rdi], al
mov byte [rcx + rsi + 0x10], al
lea rax, [rdi + 1]
add rbx, 0xffffffffffffff78
cmp rdi, r11
mov rdi, rax
je 0x1801880b5
cmp byte [rsi + rdi], 0x80
jne 0x180187af2
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 + 0x30], rdi
lea rcx, [rdi*8]
shl rax, 7
sub rax, rcx
add rax, rsi
add rax, 0xffffffffffffff78
mov qword [rsp + 0x40], rax
jmp 0x180187c1c
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 + 0x40]
mov r9, qword [rax]
mov r14, qword [rax + 0x10]
mov r8d, r14d
and r8d, 7
mov rax, r14
and rax, 0xfffffffffffffff8
je 0x180187cb0
mov r11, qword [rsp + 0x58]
mov r15, qword [rsp + 0x60]
mov r13, qword [rsp + 0x50]
xor ebp, ebp
mov r12, qword [rsp + 0x68]
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 0x180187c50
cmp r8d, 3
jbe 0x180187ccc
mov r10d, dword [r9 + rbp]
mov eax, 4
mov rcx, rax
or rcx, 1
cmp rcx, r8
jb 0x180187cdd
jmp 0x180187cf7
mov r13, qword [rsp + 0x50]
mov r15, qword [rsp + 0x60]
mov r11, qword [rsp + 0x58]
mov r12, qword [rsp + 0x68]
xor ebp, ebp
cmp r8d, 3
ja 0x180187c99
xor r10d, r10d
xor eax, eax
mov rcx, rax
or rcx, 1
cmp rcx, r8
jae 0x180187cf7
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 0x180187d20
add rbp, rax
movzx r9d, byte [r9 + rbp]
shl eax, 3
mov ecx, eax
shl r9, cl
or r10, r9
jmp 0x180187d25
test r8, r8
je 0x180187d83
lea ecx, [r8*8]
mov r9d, 0xff
shl r9, cl
or r9, r10
cmp r8, 7
jne 0x180187e82
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 0x180187d85
xor ecx, ecx
mov r8d, 1
sub r8, rcx
mov eax, r8d
and eax, 7
and r8, 0xfffffffffffffff8
cmp rcx, r8
jae 0x180187e30
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 0x180187db0
xor r8d, r8d
cmp rax, 4
setae r8b
cmp eax, 4
mov r9d, 0
mov ecx, 0xff
cmovae r9, rcx
shl r8, 2
jmp 0x180187e36
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 r11, qword [rsp + 0x28]
mov rcx, r11
and rcx, rax
movdqu xmm0, xmmword [rsi + rcx]
pmovmskb r8d, xmm0
mov r9, rcx
test r8d, r8d
mov rdi, qword [rsp + 0x30]
jne 0x180187faa
mov r10d, 0x10
mov r9, rcx
nop dword [rax]
add r9, r10
and r9, r11
movdqu xmm0, xmmword [rsi + r9]
pmovmskb r8d, xmm0
add r10, 0x10
test r8d, r8d
je 0x180187f90
tzcnt r8d, r8d
add r8, r9
and r8, r11
cmp byte [rsi + r8], 0
js 0x180187fca
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, r11
cmp r10, 0x10
jb 0x180187ae0
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, r11
mov byte [rsi + r8], al
mov byte [r10 + rsi + 0x10], al
cmp r9b, 0xff
je 0x180188090
imul rax, r8, 0xffffffffffffff78
add rax, rsi
cmp qword [rsp + 0x80], rax
jae 0x180187b80
cmp rcx, qword [rsp + 0x78]
jae 0x180187b80
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 0x180188050
jmp 0x180187c1c
lea rax, [rdi - 0x10]
and rax, r11
mov byte [rsi + rdi], 0xff
mov byte [rax + rsi + 0x10], 0xff
mov r8d, 0x88
call fcn.180171d20
mov r11, qword [rsp + 0x28]
jmp 0x180187af2
cmp r11, 8
mov rax, qword [rsp + 0x70]
cmovb rax, r11
movabs rdi, 0x7ffffffffffffff0
mov rbx, qword [rsp + 0x38]
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