Function at 0x66e130
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rdi, qword [rsp + 0xc0]
mov r14d, dword [rdi]
mov r13d, dword [rdi + 4]
mov rbx, rdx
mov eax, r8d
mov edx, dword [rsp + 0xc8]
mov qword [rsp + 0xa0], rcx
sub eax, 8
mov dword [rsp + 0xb0], r8d
mov rbp, r9
mov dword [rsp + 0x38], eax
test edx, edx
je 0x66e290
test eax, eax
js 0x66e520
shr eax, 3
mov r15, rcx
mov edx, r13d
mov ecx, eax
lea rax, [rcx*8 + 8]
mov rsi, rcx
lea rcx, [rsp + 0x48]
mov qword [rsp + 0x28], rax
lea r12, [rbx + rax]
mov eax, r14d
mov r14, rcx
mov r8d, dword [r15 + 4]
mov r9d, dword [r15]
mov rcx, r14
add rbx, 8
add r15, 8
xor edx, r8d
xor eax, r9d
mov r8d, 1
mov dword [rsp + 0x4c], edx
mov rdx, rbp
mov dword [rsp + 0x48], eax
call sym.DES_encrypt1
mov eax, dword [rsp + 0x48]
mov edx, eax
mov byte [rbx - 8], al
shr edx, 0x10
mov byte [rbx - 7], ah
mov byte [rbx - 6], dl
mov edx, eax
shr edx, 0x18
mov byte [rbx - 5], dl
mov edx, dword [rsp + 0x4c]
mov r8d, edx
mov byte [rbx - 4], dl
shr r8d, 0x10
mov byte [rbx - 3], dh
mov byte [rbx - 2], r8b
mov r8d, edx
shr r8d, 0x18
mov byte [rbx - 1], r8b
cmp r12, rbx
jne 0x66e1b0
mov r14d, eax
mov rax, qword [rsp + 0x28]
add qword [rsp + 0xa0], rax
mov eax, esi
neg eax
mov esi, dword [rsp + 0xb0]
mov r13d, edx
shl eax, 3
lea ecx, [rsi + rax - 0x10]
add eax, dword [rsp + 0x38]
mov dword [rsp + 0xb0], eax
cmp ecx, 0xfffffff8
je 0x66e540
mov rax, qword [rsp + 0xa0]
movsxd rcx, ecx
cmp dword [rsp + 0xb0], 7
lea rcx, [rax + rcx + 8]
ja case.0x66e289.0
mov esi, dword [rsp + 0xb0]
lea r9, [0x009699e0]
movsxd r8, dword [r9 + rsi*4]
add r8, r9
jmp r8
test eax, eax
js 0x66e530
shr eax, 3
mov r12, rcx
mov qword [rsp + 0xc0], rdi
mov ecx, eax
mov dword [rsp + 0x3c], eax
lea rax, [rcx*8 + 8]
lea rcx, [rsp + 0x48]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x30], rax
add rax, rbx
mov r15, rax
nop dword [rax]
mov edi, r14d
mov esi, r13d
mov r14d, dword [r12]
mov r13d, dword [r12 + 4]
mov rcx, qword [rsp + 0x28]
xor r8d, r8d
mov rdx, rbp
add rbx, 8
mov dword [rsp + 0x48], r14d
add r12, 8
mov dword [rsp + 0x4c], r13d
call sym.DES_encrypt1
xor edi, dword [rsp + 0x48]
mov eax, dword [rsp + 0x4c]
mov edx, edi
mov byte [rbx - 8], dil
mov r8d, edi
xor eax, esi
mov byte [rbx - 7], dh
shr edx, 0x18
mov byte [rbx - 5], dl
mov edx, eax
shr r8d, 0x10
mov byte [rbx - 4], al
shr edx, 0x10
mov byte [rbx - 3], ah
shr eax, 0x18
mov byte [rbx - 6], r8b
mov byte [rbx - 2], dl
mov byte [rbx - 1], al
cmp r15, rbx
jne 0x66e2d0
mov ecx, dword [rsp + 0x3c]
mov rax, qword [rsp + 0x30]
add qword [rsp + 0xa0], rax
mov eax, dword [rsp + 0xb0]
neg ecx
mov rdi, qword [rsp + 0xc0]
shl ecx, 3
lea r12d, [rax + rcx - 0x10]
add ecx, dword [rsp + 0x38]
mov dword [rsp + 0xb0], ecx
cmp r12d, 0xfffffff8
je 0x66e432
xor r8d, r8d
mov rdx, rbp
lea rcx, [rsp + 0x48]
movsxd r12, r12d
mov rax, qword [rsp + 0xa0]
mov r15d, dword [rax]
mov eax, dword [rax + 4]
mov dword [rsp + 0x48], r15d
mov dword [rsp + 0x4c], eax
mov dword [rsp + 0x28], eax
call sym.DES_encrypt1
xor r14d, dword [rsp + 0x48]
xor r13d, dword [rsp + 0x4c]
lea rdx, [rbx + r12 + 8]
cmp dword [rsp + 0xb0], 7
mov eax, dword [rsp + 0x28]
ja case.0x66e3e1.0
mov esi, dword [rsp + 0xb0]
lea r8, [0x00969a00]
movsxd rcx, dword [r8 + rsi*4]
add rcx, r8
jmp rcx
mov ecx, r13d
sub rdx, 1
shr ecx, 0x10
mov byte [rdx], cl
mov ecx, r13d
sub rdx, 1
mov byte [rdx], ch
mov byte [rdx - 1], r13b
lea rcx, [rdx - 1]
mov r8d, r14d
lea rdx, [rcx - 1]
shr r8d, 0x18
mov byte [rcx - 1], r8b
mov r8d, r14d
lea rcx, [rdx - 1]
shr r8d, 0x10
mov byte [rdx - 1], r8b
mov ebx, r14d
lea rdx, [rcx - 1]
mov byte [rcx - 1], bh
mov byte [rdx - 1], r14b
mov r13d, eax
mov r14d, r15d
mov dword [rdi], r14d
mov dword [rdi + 4], r13d
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor r9d, r9d
movzx r8d, byte [rcx - 1]
sub rcx, 1
shl r8d, 8
or r8d, r9d
lea r9, [rcx - 1]
movzx ecx, byte [rcx - 1]
or r8d, ecx
xor r13d, r8d
lea rcx, [r9 - 1]
movzx r9d, byte [r9 - 1]
shl r9d, 0x18
movzx r8d, byte [rcx - 1]
lea r11, [rcx - 1]
shl r8d, 0x10
or r9d, r8d
movzx r8d, byte [r11 - 1]
lea rcx, [r11 - 1]
shl r8d, 8
or r8d, r9d
movzx ecx, byte [rcx - 1]
or r8d, ecx
xor r14d, r8d
mov rdx, rbp
lea rcx, [rsp + 0x48]
mov r8d, 1
mov dword [rsp + 0x48], r14d
mov dword [rsp + 0x4c], r13d
call sym.DES_encrypt1
mov eax, dword [rsp + 0x48]
mov edx, dword [rsp + 0x4c]
mov r10, qword [rsp + 0x48]
movzx ecx, ah
mov r8d, eax
mov esi, eax
mov ebp, edx
mov qword [rbx], r10
shr r8d, 0x10
mov r11d, ecx
movzx ecx, dh
mov r9d, ecx
mov ecx, edx
shr eax, 0x18
shr ecx, 0x10
shr edx, 0x18
mov byte [rdi], sil
mov byte [rdi + 1], r11b
mov byte [rdi + 2], r8b
mov byte [rdi + 3], al
mov byte [rdi + 4], bpl
mov byte [rdi + 5], r9b
mov byte [rdi + 6], cl
mov byte [rdi + 7], dl
jmp 0x66e439
mov ecx, eax
jmp 0x66e24d
mov r12d, eax
jmp 0x66e373
mov ecx, r13d
mov eax, r14d
mov r8d, r14d
mov esi, r14d
movzx ecx, ch
movzx eax, ah
shr r14d, 0x18
mov ebp, r13d
mov r9d, ecx
mov ecx, r13d
shr r13d, 0x18
mov r11d, eax
shr r8d, 0x10
mov eax, r14d
shr ecx, 0x10
mov edx, r13d
jmp 0x66e4f7
xor r8d, r8d
jmp 0x66e49e
mov r11, rcx
xor r9d, r9d
jmp 0x66e48e
xor r9d, r9d
jmp 0x66e47e
mov r9, rcx
jmp 0x66e471
xor r8d, r8d
jmp 0x66e463
movzx r8d, byte [rcx - 1]
sub rcx, 1
mov r9d, r8d
shl r9d, 0x10
jmp 0x66e453
mov rcx, rdx
jmp 0x66e400
mov rcx, rdx
jmp 0x66e41e
mov r13d, eax
mov r14d, r15d
jmp 0x66e432