Function at 0x180072690
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r14
sub rsp, 0x98
cmp dword [rcx], 0
mov rdi, r9
mov r14d, r8d
mov rbx, rdx
mov rsi, rcx
je 0x1800726c0
mov eax, 0xfffffffb
add rsp, 0x98
pop r14
pop rdi
pop rsi
pop rbx
ret
cmp dword [rcx + 8], 0
je 0x1800726d8
mov eax, 0xfffffffa
add rsp, 0x98
pop r14
pop rdi
pop rsi
pop rbx
ret
test rbx, rbx
je 0x180072b15
test r14d, r14d
jle 0x180072b15
mov ecx, dword [rcx + 4]
shr r14d, 7
mov qword [rsp + 0xc8], rbp
mov dword [rsp + 0xd0], r14d
test ecx, ecx
je 0x180072ae2
sub ecx, 1
je 0x180072a42
cmp ecx, 1
je 0x180072731
mov eax, 0xffffffff
mov rbp, qword [rsp + 0xc8]
add rsp, 0x98
pop r14
pop rdi
pop rsi
pop rbx
ret
mov eax, dword [rsi + 0xc]
mov dword [rsp + 0x50], eax
mov eax, dword [rsi + 0x10]
mov dword [rsp + 0x54], eax
mov eax, dword [rsi + 0x14]
mov dword [rsp + 0x58], eax
mov eax, dword [rsi + 0x18]
mov dword [rsp + 0x5c], eax
mov dword [rsp + 0x70], r14d
test r14d, r14d
je 0x180072b09
movzx ecx, byte [rsp + 0x5a]
movzx r14d, al
movzx eax, byte [rsp + 0x5b]
mov byte [rsp + 0x44], al
movzx eax, byte [rsp + 0x59]
mov byte [rsp + 0x40], al
movzx eax, byte [rsp + 0x57]
mov byte [rsp + 0x30], al
movzx eax, byte [rsp + 0x55]
mov byte [rsp + 0x42], cl
movzx ecx, byte [rsp + 0x58]
mov byte [rsp + 0x2c], al
movzx eax, byte [rsp + 0x53]
mov byte [rsp + 0x38], cl
movzx ecx, byte [rsp + 0x56]
mov qword [rsp + 0x90], r12
movzx r12d, byte [rsp + 0x5e]
mov byte [rsp + 0x24], al
movzx eax, byte [rsp + 0x51]
mov byte [rsp + 0x2e], cl
movzx ecx, byte [rsp + 0x54]
mov qword [rsp + 0x88], r13
movzx r13d, byte [rsp + 0x5d]
mov byte [rsp + 0x20], al
movzx eax, byte [rsp + 0x50]
mov byte [rsp + 0x28], cl
movzx ecx, byte [rsp + 0x52]
mov qword [rsp + 0x80], r15
movzx r15d, byte [rsp + 0x5f]
mov byte [rsp + 0xc0], al
mov byte [rsp + 0x22], cl
nop dword [rax + rax]
movzx ebx, byte [rsp + 0x44]
xor ebp, ebp
nop word [rax + rax]
movaps xmm0, xmmword [rsp + 0x50]
lea r8, [rsp + 0x60]
lea rdx, [rsp + 0x60]
movdqa xmmword [rsp + 0x60], xmm0
mov rcx, rsi
call fcn.180072f50
movzx eax, byte [rsp + 0x60]
movzx r9d, bpl
movzx r11d, byte [rsp + 0x40]
and al, 0x80
movzx r10d, byte [rsp + 0x42]
and r9b, 7
movzx ecx, r9b
mov edx, ebp
shr al, cl
movzx ecx, byte [rsp + 0x20]
shr cl, 7
shr rdx, 3
shr r11b, 7
xor byte [rdx + rdi], al
movzx eax, byte [rsp + 0xc0]
movzx r8d, byte [rdx + rdi]
add al, al
or cl, al
movzx eax, byte [rsp + 0x20]
mov byte [rsp + 0xc0], cl
add al, al
mov byte [rsp + 0x50], cl
movzx ecx, byte [rsp + 0x22]
shr cl, 7
or cl, al
movzx eax, byte [rsp + 0x22]
mov byte [rsp + 0x20], cl
add al, al
mov byte [rsp + 0x51], cl
movzx ecx, byte [rsp + 0x24]
shr cl, 7
or cl, al
movzx eax, byte [rsp + 0x24]
mov byte [rsp + 0x22], cl
add al, al
mov byte [rsp + 0x52], cl
movzx ecx, byte [rsp + 0x28]
shr cl, 7
or cl, al
movzx eax, byte [rsp + 0x28]
mov byte [rsp + 0x24], cl
add al, al
mov byte [rsp + 0x53], cl
movzx ecx, byte [rsp + 0x2c]
shr cl, 7
or cl, al
movzx eax, byte [rsp + 0x2c]
mov byte [rsp + 0x28], cl
add al, al
mov byte [rsp + 0x54], cl
movzx ecx, byte [rsp + 0x2e]
shr cl, 7
or cl, al
movzx eax, byte [rsp + 0x2e]
mov byte [rsp + 0x2c], cl
add al, al
mov byte [rsp + 0x55], cl
movzx ecx, byte [rsp + 0x30]
shr cl, 7
or cl, al
movzx eax, byte [rsp + 0x30]
add al, al
mov byte [rsp + 0x2e], cl
mov byte [rsp + 0x56], cl
movzx ecx, byte [rsp + 0x38]
shr cl, 7
or cl, al
movzx eax, byte [rsp + 0x38]
add al, al
mov byte [rsp + 0x30], cl
or r11b, al
mov byte [rsp + 0x57], cl
mov byte [rsp + 0x38], r11b
mov byte [rsp + 0x58], r11b
shr r10b, 7
movzx eax, byte [rsp + 0x40]
movzx ecx, r14b
add al, al
shr cl, 7
or r10b, al
movzx edx, bl
movzx eax, byte [rsp + 0x42]
inc ebp
add al, al
shr dl, 7
or dl, al
mov byte [rsp + 0x40], r10b
movzx eax, bl
mov byte [rsp + 0x59], r10b
add al, al
mov byte [rsp + 0x42], dl
movzx ebx, cl
mov byte [rsp + 0x5a], dl
or bl, al
movzx ecx, r13b
shr cl, 7
movzx eax, r14b
add al, al
mov byte [rsp + 0x5b], bl
movzx r14d, cl
movzx ecx, r12b
or r14b, al
shr cl, 7
movzx eax, r13b
mov byte [rsp + 0x5c], r14b
add al, al
movzx r13d, cl
or r13b, al
movzx ecx, r15b
shr cl, 7
movzx eax, r12b
add al, al
mov byte [rsp + 0x5d], r13b
movzx r12d, cl
mov ecx, 7
or r12b, al
sub cl, r9b
movzx eax, r15b
shr r8b, cl
and r8b, 1
mov byte [rsp + 0x5e], r12b
add al, al
movzx r15d, r8b
or r15b, al
mov byte [rsp + 0x5f], r15b
cmp ebp, 0x80
jl 0x180072810
mov byte [rsp + 0x44], bl
mov ebx, dword [rsp + 0x70]
dec ebx
mov dword [rsp + 0x70], ebx
test ebx, ebx
jg 0x180072800
mov r14d, dword [rsp + 0xd0]
mov r15, qword [rsp + 0x80]
mov r13, qword [rsp + 0x88]
mov r12, qword [rsp + 0x90]
shl r14d, 7
mov eax, r14d
jmp 0x18007271c
mov eax, dword [rsi + 0xc]
mov r8, rdi
xor eax, dword [rdx]
mov rcx, rsi
mov dword [rsp + 0x60], eax
mov eax, dword [rsi + 0x10]
xor eax, dword [rdx + 4]
mov dword [rsp + 0x64], eax
mov eax, dword [rsi + 0x14]
xor eax, dword [rdx + 8]
mov dword [rsp + 0x68], eax
mov eax, dword [rsi + 0x18]
xor eax, dword [rdx + 0xc]
lea rdx, [rsp + 0x60]
mov dword [rsp + 0x6c], eax
call fcn.180072f50
add rbx, 0x10
lea ebp, [r14 - 1]
test ebp, ebp
jle 0x180072b09
add rdi, 8
nop dword [rax]
mov eax, dword [rdi - 8]
lea rdi, [rdi + 0x10]
xor eax, dword [rbx]
lea r8, [rdi - 8]
mov dword [rsp + 0x60], eax
lea rdx, [rsp + 0x60]
mov eax, dword [rdi - 0x14]
mov rcx, rsi
xor eax, dword [rbx + 4]
mov dword [rsp + 0x64], eax
mov eax, dword [rbx + 8]
xor eax, dword [rdi - 0x10]
mov dword [rsp + 0x68], eax
mov eax, dword [rdi - 0xc]
xor eax, dword [rbx + 0xc]
mov dword [rsp + 0x6c], eax
call fcn.180072f50
dec ebp
lea rbx, [rbx + 0x10]
test ebp, ebp
jg 0x180072a90
shl r14d, 7
mov eax, r14d
jmp 0x18007271c
mov ebp, r14d
test r14d, r14d
je 0x180072b09
sub rbx, rdi
nop dword [rax]
lea rdx, [rbx + rdi]
mov r8, rdi
mov rcx, rsi
call fcn.180072f50
add rdi, 0x10
dec ebp
test ebp, ebp
jg 0x180072af0
shl r14d, 7
mov eax, r14d
jmp 0x18007271c
xor eax, eax
add rsp, 0x98
pop r14
pop rdi
pop rsi
pop rbx
ret