Function at 0x140070df0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
mov r12, r9
mov rdi, r8
mov r14, rdx
mov rbx, rcx
mov r13, qword [rsp + 0xb0]
cmp byte [r13 + 0x28], 0
mov qword [rsp + 0x30], rcx
jne 0x140070e90
mov rcx, qword [r13 + 0x10]
mov rsi, qword [r13 + 0x20]
cmp rcx, qword [r13 + 0x18]
jne 0x140070e84
lea rax, [rcx + rcx*2]
shr rax, 1
test rcx, rcx
mov ebx, 0x20
cmovne rbx, rax
cmp rbx, rcx
jbe 0x140071631
mov rax, rbx
shr rax, 0x3d
jne 0x140071631
lea rdx, [rbx*8]
mov rcx, qword [r13 + 8]
call fcn.140090510
test rax, rax
je 0x140071631
mov qword [r13 + 8], rax
mov qword [r13 + 0x18], rbx
mov rcx, qword [r13 + 0x10]
mov rbx, qword [rsp + 0x30]
jmp 0x140070e88
mov rax, qword [r13 + 8]
mov qword [rax + rcx*8], rsi
inc qword [r13 + 0x10]
mov rcx, r13
call fcn.140066cc0
xor ebp, ebp
test rax, rax
je 0x1400715fa
mov r15, rax
lea r9, [r12 + 0x18]
mov r8, qword [rbx + 8]
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r13
mov rcx, rax
mov rdx, rdi
call fcn.140069be0
test eax, eax
je 0x1400715fa
mov qword [rsp + 0x20], r13
mov rcx, r15
mov rdx, r15
mov r8, r12
mov r9, r12
call fcn.140068f30
test eax, eax
je 0x1400715fa
mov r8, qword [rbx + 0x10]
movsxd r11, dword [r15 + 8]
movsxd r9, dword [r8 + 8]
cmp r11d, r9d
jge 0x140070f1d
mov rbx, qword [r8]
mov edx, r9d
sub edx, r11d
mov rax, r11
not rax
add rax, r9
and edx, 7
cmp rax, 7
jae 0x140070f21
xor eax, eax
mov rcx, r11
jmp 0x140070f64
xor eax, eax
jmp 0x140070f7b
mov rbp, r9
sub rbp, r11
and rbp, 0xfffffffffffffff8
neg rbp
xor eax, eax
mov rcx, r11
or rax, qword [rbx + rcx*8]
or rax, qword [rbx + rcx*8 + 8]
or rax, qword [rbx + rcx*8 + 0x10]
or rax, qword [rbx + rcx*8 + 0x18]
or rax, qword [rbx + rcx*8 + 0x20]
or rax, qword [rbx + rcx*8 + 0x28]
or rax, qword [rbx + rcx*8 + 0x30]
or rax, qword [rbx + rcx*8 + 0x38]
add rcx, 8
add rbp, 8
jne 0x140070f33
test rdx, rdx
je 0x140070f7b
lea rcx, [rbx + rcx*8]
xor ebp, ebp
or rax, qword [rcx + rbp*8]
inc rbp
cmp rdx, rbp
jne 0x140070f6f
cmp r9d, r11d
jge 0x140070fdd
mov rdx, qword [r15]
mov ebp, r11d
sub ebp, r9d
mov rcx, r9
not rcx
add rcx, r11
mov rdi, r9
and rbp, 7
je 0x140070fa7
or rax, qword [rdx + rdi*8]
inc rdi
dec rbp
jne 0x140070f9b
cmp rcx, 7
jb 0x140070fdd
or rax, qword [rdx + rdi*8]
or rax, qword [rdx + rdi*8 + 8]
or rax, qword [rdx + rdi*8 + 0x10]
or rax, qword [rdx + rdi*8 + 0x18]
or rax, qword [rdx + rdi*8 + 0x20]
or rax, qword [rdx + rdi*8 + 0x28]
or rax, qword [rdx + rdi*8 + 0x30]
or rax, qword [rdx + rdi*8 + 0x38]
add rdi, 8
cmp r11, rdi
jne 0x140070fad
cmp r11d, r9d
cmovl r9d, r11d
test r9d, r9d
jle 0x14007106e
mov rbx, qword [r15]
mov rsi, qword [r8]
mov r10d, r9d
lea rcx, [r10 - 1]
mov r9d, r10d
and r9d, 3
cmp rcx, 3
jae 0x14007100b
xor ebp, ebp
jmp 0x14007104c
and r10d, 0xfffffffc
xor ebp, ebp
mov rcx, qword [rsi + rbp*8]
mov rdi, qword [rsi + rbp*8 + 8]
xor rcx, qword [rbx + rbp*8]
xor rdi, qword [rbx + rbp*8 + 8]
or rcx, rax
mov rdx, qword [rsi + rbp*8 + 0x10]
xor rdx, qword [rbx + rbp*8 + 0x10]
or rdx, rdi
mov rax, qword [rsi + rbp*8 + 0x18]
xor rax, qword [rbx + rbp*8 + 0x18]
or rdx, rcx
or rax, rdx
add rbp, 4
cmp r10, rbp
jne 0x140071011
test r9, r9
je 0x14007106e
lea rcx, [rsi + rbp*8]
lea rdx, [rbx + rbp*8]
xor ebp, ebp
mov rbx, qword [rcx + rbp*8]
xor rbx, qword [rdx + rbp*8]
or rax, rbx
inc rbp
cmp r9, rbp
jne 0x14007105b
mov r9d, dword [r15 + 0x10]
mov ebp, dword [r8 + 0x10]
xor ebp, r9d
mov rcx, qword [rsp + 0x30]
mov r8, qword [rcx + 0x18]
movsxd r10, dword [r8 + 8]
cmp r11d, r10d
jge 0x1400710ad
mov rbx, qword [r8]
mov esi, r10d
sub esi, r11d
mov rcx, r11
not rcx
add rcx, r10
and esi, 7
cmp rcx, 7
jae 0x1400710b1
xor edi, edi
mov rcx, r11
jmp 0x1400710f4
xor edi, edi
jmp 0x14007110b
mov rdx, r10
sub rdx, r11
and rdx, 0xfffffffffffffff8
neg rdx
xor edi, edi
mov rcx, r11
or rdi, qword [rbx + rcx*8]
or rdi, qword [rbx + rcx*8 + 8]
or rdi, qword [rbx + rcx*8 + 0x10]
or rdi, qword [rbx + rcx*8 + 0x18]
or rdi, qword [rbx + rcx*8 + 0x20]
or rdi, qword [rbx + rcx*8 + 0x28]
or rdi, qword [rbx + rcx*8 + 0x30]
or rdi, qword [rbx + rcx*8 + 0x38]
add rcx, 8
add rdx, 8
jne 0x1400710c3
test rsi, rsi
je 0x14007110b
lea rcx, [rbx + rcx*8]
xor edx, edx
or rdi, qword [rcx + rdx*8]
inc rdx
cmp rsi, rdx
jne 0x1400710ff
movsxd rbp, ebp
cmp r10d, r11d
jge 0x140071170
mov rbx, qword [r15]
mov esi, r11d
sub esi, r10d
mov rcx, r10
not rcx
add rcx, r11
mov rdx, r10
and rsi, 7
je 0x14007113a
or rdi, qword [rbx + rdx*8]
inc rdx
dec rsi
jne 0x14007112e
cmp rcx, 7
jb 0x140071170
or rdi, qword [rbx + rdx*8]
or rdi, qword [rbx + rdx*8 + 8]
or rdi, qword [rbx + rdx*8 + 0x10]
or rdi, qword [rbx + rdx*8 + 0x18]
or rdi, qword [rbx + rdx*8 + 0x20]
or rdi, qword [rbx + rdx*8 + 0x28]
or rdi, qword [rbx + rdx*8 + 0x30]
or rdi, qword [rbx + rdx*8 + 0x38]
add rdx, 8
cmp r11, rdx
jne 0x140071140
mov qword [rsp + 0x38], r14
or rax, rbp
cmp r11d, r10d
cmovl r10d, r11d
test r10d, r10d
jle 0x140071209
mov r14, qword [r15]
mov rbx, qword [r8]
mov r11d, r10d
lea rdx, [r11 - 1]
mov r10d, r11d
and r10d, 3
cmp rdx, 3
jae 0x1400711a6
xor edx, edx
jmp 0x1400711e7
and r11d, 0xfffffffc
xor edx, edx
mov rsi, qword [rbx + rdx*8]
mov rcx, qword [rbx + rdx*8 + 8]
xor rsi, qword [r14 + rdx*8]
xor rcx, qword [r14 + rdx*8 + 8]
or rsi, rdi
mov rbp, qword [rbx + rdx*8 + 0x10]
xor rbp, qword [r14 + rdx*8 + 0x10]
or rbp, rcx
mov rdi, qword [rbx + rdx*8 + 0x18]
xor rdi, qword [r14 + rdx*8 + 0x18]
or rbp, rsi
or rdi, rbp
add rdx, 4
cmp r11, rdx
jne 0x1400711ac
test r10, r10
je 0x140071209
lea rcx, [rbx + rdx*8]
lea rdx, [r14 + rdx*8]
xor ebp, ebp
mov rbx, qword [rcx + rbp*8]
xor rbx, qword [rdx + rbp*8]
or rdi, rbx
inc rbp
cmp r10, rbp
jne 0x1400711f6
test rax, rax
sete al
xor r9d, dword [r8 + 0x10]
movsxd rcx, r9d
or rcx, rdi
sete cl
or cl, al
movzx r14d, cl
neg r14
mov rsi, qword [rsp + 0x30]
cmp dword [rsi + 0x20], 2
jl 0x1400715e9
mov qword [rsp + 0x40], r12
mov r12d, 1
mov eax, dword [rsi + 0x24]
xor eax, r12d
cdqe
mov rcx, rax
not rcx
dec rax
and rax, rcx
sar rax, 0x3f
mov rcx, r14
not rcx
test rax, rcx
jne 0x1400715e9
mov qword [rsp + 0x20], r13
mov rcx, r15
mov rdx, r15
mov r8, r15
mov r9, qword [rsp + 0x40]
call fcn.140068f30
test eax, eax
je 0x14007162d
mov r8, qword [rsi + 0x18]
movsxd r9, dword [r15 + 8]
movsxd r10, dword [r8 + 8]
cmp r9d, r10d
jge 0x1400712b9
mov rbx, qword [r8]
mov ecx, r10d
sub ecx, r9d
mov rax, r9
not rax
add rax, r10
and ecx, 7
cmp rax, 7
jae 0x1400712bd
mov rax, r9
xor esi, esi
jmp 0x140071300
xor esi, esi
jmp 0x140071317
mov rdx, r10
sub rdx, r9
and rdx, 0xfffffffffffffff8
neg rdx
mov rax, r9
xor esi, esi
or rsi, qword [rbx + rax*8]
or rsi, qword [rbx + rax*8 + 8]
or rsi, qword [rbx + rax*8 + 0x10]
or rsi, qword [rbx + rax*8 + 0x18]
or rsi, qword [rbx + rax*8 + 0x20]
or rsi, qword [rbx + rax*8 + 0x28]
or rsi, qword [rbx + rax*8 + 0x30]
or rsi, qword [rbx + rax*8 + 0x38]
add rax, 8
add rdx, 8
jne 0x1400712cf
test rcx, rcx
je 0x140071317
lea rax, [rbx + rax*8]
xor edx, edx
or rsi, qword [rax + rdx*8]
inc rdx
cmp rcx, rdx
jne 0x14007130b
cmp r10d, r9d
jge 0x140071379
mov rcx, qword [r15]
mov edx, r9d
sub edx, r10d
mov rax, r10
not rax
add rax, r9
mov rdi, r10
and rdx, 7
je 0x140071343
or rsi, qword [rcx + rdi*8]
inc rdi
dec rdx
jne 0x140071337
cmp rax, 7
jb 0x140071379
or rsi, qword [rcx + rdi*8]
or rsi, qword [rcx + rdi*8 + 8]
or rsi, qword [rcx + rdi*8 + 0x10]
or rsi, qword [rcx + rdi*8 + 0x18]
or rsi, qword [rcx + rdi*8 + 0x20]
or rsi, qword [rcx + rdi*8 + 0x28]
or rsi, qword [rcx + rdi*8 + 0x30]
or rsi, qword [rcx + rdi*8 + 0x38]
add rdi, 8
cmp r9, rdi
jne 0x140071349
cmp r9d, r10d
cmovl r10d, r9d
test r10d, r10d
jle 0x140071412
mov rbp, qword [r15]
mov rbx, qword [r8]
mov r11d, r10d
lea rax, [r11 - 1]
mov r10d, r11d
and r10d, 3
cmp rax, 3
jae 0x1400713a7
xor edi, edi
jmp 0x1400713e9
and r11d, 0xfffffffc
xor edi, edi
mov rax, qword [rbx + rdi*8]
mov rcx, qword [rbx + rdi*8 + 8]
xor rax, qword [rbp + rdi*8]
xor rcx, qword [rbp + rdi*8 + 8]
or rax, rsi
mov rdx, qword [rbx + rdi*8 + 0x10]
xor rdx, qword [rbp + rdi*8 + 0x10]
or rdx, rcx
mov rsi, qword [rbx + rdi*8 + 0x18]
xor rsi, qword [rbp + rdi*8 + 0x18]
or rdx, rax
or rsi, rdx
add rdi, 4
cmp r11, rdi
jne 0x1400713ad
test r10, r10
je 0x140071412
lea rax, [rbx + rdi*8]
lea rdx, [rdi*8]
add rdx, rbp
xor ebp, ebp
mov rcx, qword [rax + rbp*8]
xor rcx, qword [rdx + rbp*8]
or rsi, rcx
inc rbp
cmp r10, rbp
jne 0x1400713ff
mov r10d, dword [r15 + 0x10]
mov eax, dword [r8 + 0x10]
xor eax, r10d
cdqe
or rax, rsi
mov rax, 0xffffffffffffffff
cmove r14, rax
mov rax, qword [rsp + 0x30]
mov r8, qword [rax + 0x10]
movsxd rcx, dword [r8 + 8]
cmp r9d, ecx
jge 0x140071460
mov rbp, qword [r8]
mov edi, ecx
sub edi, r9d
mov rax, r9
not rax
add rax, rcx
and edi, 7
cmp rax, 7
jae 0x140071464
mov rax, r9
xor esi, esi
jmp 0x1400714a8
xor esi, esi
jmp 0x1400714c6
mov rdx, rcx
sub rdx, r9
and rdx, 0xfffffffffffffff8
neg rdx
mov rax, r9
xor esi, esi
or rsi, qword [rbp + rax*8]
or rsi, qword [rbp + rax*8 + 8]
or rsi, qword [rbp + rax*8 + 0x10]
or rsi, qword [rbp + rax*8 + 0x18]
or rsi, qword [rbp + rax*8 + 0x20]
or rsi, qword [rbp + rax*8 + 0x28]
or rsi, qword [rbp + rax*8 + 0x30]
or rsi, qword [rbp + rax*8 + 0x38]
add rax, 8
add rdx, 8
jne 0x140071476
test rdi, rdi
je 0x1400714c6
lea rax, [rax*8]
add rax, rbp
xor edx, edx
or rsi, qword [rax + rdx*8]
inc rdx
cmp rdi, rdx
jne 0x1400714ba
cmp ecx, r9d
jge 0x140071527
mov rdi, qword [r15]
mov edx, r9d
sub edx, ecx
mov rax, rcx
not rax
add rax, r9
mov rbx, rcx
and rdx, 7
je 0x1400714f1
or rsi, qword [rdi + rbx*8]
inc rbx
dec rdx
jne 0x1400714e5
cmp rax, 7
jb 0x140071527
or rsi, qword [rdi + rbx*8]
or rsi, qword [rdi + rbx*8 + 8]
or rsi, qword [rdi + rbx*8 + 0x10]
or rsi, qword [rdi + rbx*8 + 0x18]
or rsi, qword [rdi + rbx*8 + 0x20]
or rsi, qword [rdi + rbx*8 + 0x28]
or rsi, qword [rdi + rbx*8 + 0x30]
or rsi, qword [rdi + rbx*8 + 0x38]
add rbx, 8
cmp r9, rbx
jne 0x1400714f7
cmp r9d, ecx
cmovl ecx, r9d
test ecx, ecx
jle 0x1400715bf
mov rbp, qword [r15]
mov rdi, qword [r8]
mov r11d, ecx
lea rcx, [r11 - 1]
mov r9d, r11d
and r9d, 3
cmp rcx, 3
jae 0x140071554
xor ebx, ebx
jmp 0x140071596
and r11d, 0xfffffffc
xor ebx, ebx
mov rcx, qword [rdi + rbx*8]
mov rax, qword [rdi + rbx*8 + 8]
xor rcx, qword [rbp + rbx*8]
xor rax, qword [rbp + rbx*8 + 8]
or rcx, rsi
mov rdx, qword [rdi + rbx*8 + 0x10]
xor rdx, qword [rbp + rbx*8 + 0x10]
or rdx, rax
mov rsi, qword [rdi + rbx*8 + 0x18]
xor rsi, qword [rbp + rbx*8 + 0x18]
or rdx, rcx
or rsi, rdx
add rbx, 4
cmp r11, rbx
jne 0x14007155a
test r9, r9
je 0x1400715bf
lea rcx, [rdi + rbx*8]
lea rdx, [rbx*8]
add rdx, rbp
xor ebp, ebp
mov rax, qword [rcx + rbp*8]
xor rax, qword [rdx + rbp*8]
or rsi, rax
inc rbp
cmp r9, rbp
jne 0x1400715ac
xor r10d, dword [r8 + 0x10]
movsxd rax, r10d
xor ecx, ecx
or rax, rsi
sete cl
mov eax, r14d
not eax
test ecx, eax
jne 0x1400715e9
inc r12d
mov rsi, qword [rsp + 0x30]
cmp r12d, dword [rsi + 0x20]
jl 0x14007123f
and r14d, 1
mov rax, qword [rsp + 0x38]
mov dword [rax], r14d
mov ebp, 1
cmp byte [r13 + 0x28], 0
jne 0x14007161a
mov rax, qword [r13 + 8]
mov rcx, qword [r13 + 0x10]
lea rdx, [rcx - 1]
mov qword [r13 + 0x10], rdx
mov rax, qword [rax + rcx*8 - 8]
mov qword [r13 + 0x20], rax
mov eax, ebp
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
xor ebp, ebp
jmp 0x1400715fa
mov word [r13 + 0x28], 0x101
mov rbx, qword [rsp + 0x30]
jmp 0x140070e90