Function at 0x502a10
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 rax, qword [rsp + 0xd0]
mov r12, qword [rsp + 0xc8]
mov ebx, dword [rax]
mov r13d, dword [rax + 4]
mov dword [rsp + 0xb0], r8d
mov eax, dword [rsp + 0xb0]
mov rdi, rcx
mov rbp, r9
mov ecx, dword [rsp + 0xd8]
mov qword [rsp + 0xa8], rdx
sub eax, 8
mov r8, qword [rsp + 0xc0]
mov dword [rsp + 0x30], eax
test ecx, ecx
je 0x502ba8
test eax, eax
js 0x502ea8
shr eax, 3
lea rsi, [rsp + 0x48]
lea r15d, [rax + 1]
mov dword [rsp + 0x20], eax
lea rax, [r15*8]
mov r15, rdx
lea r14, [rdi + rax]
mov qword [rsp + 0x28], rax
mov eax, r13d
mov r13, rdi
mov rdi, rsi
mov rsi, r8
nop dword [rax]
movq xmm1, qword [r13]
movd xmm2, eax
mov rdx, rbp
mov rcx, rdi
movd xmm0, ebx
mov r9, r12
mov r8, rsi
add r15, 8
punpckldq xmm0, xmm2
add r13, 8
pxor xmm0, xmm1
movq qword [rsp + 0x48], xmm0
call sym.DES_encrypt3
mov ebx, dword [rsp + 0x48]
mov eax, dword [rsp + 0x4c]
mov edx, ebx
movzx ecx, bh
mov byte [r15 - 8], bl
shr edx, 0x10
mov byte [r15 - 7], cl
movzx ecx, ah
mov byte [r15 - 6], dl
mov edx, ebx
shr edx, 0x18
mov byte [r15 - 4], al
mov byte [r15 - 5], dl
mov edx, eax
shr edx, 0x10
mov byte [r15 - 3], cl
mov byte [r15 - 2], dl
mov edx, eax
shr edx, 0x18
mov byte [r15 - 1], dl
cmp r14, r13
jne 0x502ab0
mov r14d, dword [rsp + 0x20]
mov rdi, r13
mov r13d, eax
mov rax, qword [rsp + 0x28]
add qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0xb0]
mov r8, rsi
neg r14d
shl r14d, 3
lea ecx, [rax + r14 - 0x10]
add r14d, dword [rsp + 0x30]
mov dword [rsp + 0xb0], r14d
cmp ecx, 0xfffffff8
je 0x502ec0
movsxd rcx, dword [rsp + 0xb0]
cmp dword [rsp + 0xb0], 7
lea r10, [rdi + rcx]
ja case.0x502b9f.0
mov eax, dword [rsp + 0xb0]
lea r11, [0x00799fe0]
movsxd rcx, dword [r11 + rax*4]
add rcx, r11
jmp rcx
test eax, eax
js 0x502eb0
shr eax, 3
mov qword [rsp + 0xc8], r12
lea rsi, [rsp + 0x48]
mov r12d, r13d
lea ecx, [rax + 1]
mov dword [rsp + 0x34], eax
mov r13, qword [rsp + 0xc8]
mov r14, rdx
lea rax, [rcx*8]
mov qword [rsp + 0x28], rsi
mov esi, ebx
mov qword [rsp + 0x38], rax
add rax, rdi
mov qword [rsp + 0x20], rax
nop dword [rax]
mov rdx, qword [rdi]
mov rcx, qword [rsp + 0x28]
mov r9, r13
mov ebx, esi
mov r15d, r12d
mov esi, dword [rdi]
mov r12d, dword [rdi + 4]
add r14, 8
mov qword [rsp + 0x48], rdx
mov rdx, rbp
add rdi, 8
mov qword [rsp + 0xc0], r8
call sym.DES_decrypt3
xor ebx, dword [rsp + 0x48]
mov eax, dword [rsp + 0x4c]
mov edx, ebx
mov byte [r14 - 8], bl
movzx ebx, bh
mov r8, qword [rsp + 0xc0]
xor eax, r15d
mov ecx, edx
shr edx, 0x18
mov byte [r14 - 7], bl
mov byte [r14 - 5], dl
mov edx, eax
shr ecx, 0x10
movzx ebx, ah
mov byte [r14 - 4], al
shr edx, 0x10
shr eax, 0x18
mov byte [r14 - 6], cl
mov byte [r14 - 3], bl
mov byte [r14 - 2], dl
cmp qword [rsp + 0x20], rdi
mov byte [r14 - 1], al
jne 0x502bf8
mov ecx, dword [rsp + 0x34]
mov rax, qword [rsp + 0x38]
mov qword [rsp + 0xc8], r13
mov r13d, r12d
add qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0xb0]
mov ebx, esi
neg ecx
mov r12, qword [rsp + 0xc8]
shl ecx, 3
lea r11d, [rax + rcx - 0x10]
add ecx, dword [rsp + 0x30]
mov dword [rsp + 0xb0], ecx
cmp r11d, 0xfffffff8
je 0x502d72
mov rcx, qword [rdi]
mov rdx, rbp
mov r9, r12
mov esi, dword [rdi]
mov r14d, dword [rdi + 4]
mov qword [rsp + 0x48], rcx
lea rcx, [rsp + 0x48]
call sym.DES_decrypt3
xor ebx, dword [rsp + 0x48]
xor r13d, dword [rsp + 0x4c]
movsxd rdx, dword [rsp + 0xb0]
add rdx, qword [rsp + 0xa8]
cmp dword [rsp + 0xb0], 7
mov rbp, rdx
ja case.0x502d2a.0
mov edi, dword [rsp + 0xb0]
lea rcx, [0x0079a000]
movsxd rdx, dword [rcx + rdi*4]
add rdx, rcx
jmp rdx
mov edx, r13d
sub rbp, 1
shr edx, 0x10
mov byte [rbp], dl
mov eax, r13d
sub rbp, 1
mov byte [rbp], ah
mov byte [rbp - 1], r13b
lea rdx, [rbp - 1]
mov eax, ebx
lea rbp, [rdx - 1]
shr eax, 0x18
mov byte [rdx - 1], al
mov edx, ebx
lea rax, [rbp - 1]
shr edx, 0x10
mov byte [rbp - 1], dl
mov byte [rax - 1], bh
lea rbp, [rax - 1]
mov byte [rbp - 1], bl
mov r13d, r14d
mov ebx, esi
mov rax, qword [rsp + 0xd0]
mov dword [rax], ebx
mov dword [rax + 4], r13d
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor r11d, r11d
movzx ecx, byte [r10 - 1]
sub r10, 1
shl ecx, 8
or ecx, r11d
lea r11, [r10 - 1]
movzx r10d, byte [r10 - 1]
or ecx, r10d
xor r13d, ecx
lea r10, [r11 - 1]
movzx r11d, byte [r11 - 1]
shl r11d, 0x18
movzx ecx, byte [r10 - 1]
lea rsi, [r10 - 1]
shl ecx, 0x10
or r11d, ecx
movzx ecx, byte [rsi - 1]
lea r10, [rsi - 1]
shl ecx, 8
or ecx, r11d
movzx r10d, byte [r10 - 1]
or ecx, r10d
xor ebx, ecx
movd xmm0, ebx
movd xmm3, r13d
mov r9, r12
mov rdx, rbp
lea rcx, [rsp + 0x48]
punpckldq xmm0, xmm3
movq qword [rsp + 0x48], xmm0
call sym.DES_encrypt3
mov ebx, dword [rsp + 0x48]
mov eax, dword [rsp + 0x4c]
mov rdi, qword [rsp + 0xa8]
movzx esi, bh
mov ecx, ebx
mov edx, eax
movzx r8d, bl
shr ecx, 0x10
mov r9d, esi
movzx esi, ah
movzx r10d, al
shr ebx, 0x18
mov r11d, esi
mov rsi, qword [rsp + 0x48]
shr edx, 0x10
shr eax, 0x18
mov qword [rdi], rsi
movzx eax, al
movzx edx, dl
movzx r11d, r11b
movzx ebx, bl
shl rax, 8
movzx ecx, cl
movzx r9d, r9b
mov rsi, qword [rsp + 0xd0]
or rax, rdx
shl rax, 8
or rax, r11
shl rax, 8
or rax, r10
shl rax, 8
or rax, rbx
shl rax, 8
or rax, rcx
shl rax, 8
or rax, r9
shl rax, 8
or rax, r8
mov qword [rsi], rax
jmp 0x502d80
mov ecx, eax
jmp 0x502b67
mov r11d, eax
jmp 0x502cc3
movzx eax, bh
mov ecx, ebx
mov edx, r13d
movzx r10d, r13b
shr ecx, 0x10
mov r9d, eax
mov eax, r13d
shr r13d, 0x18
movzx eax, ah
movzx r8d, bl
shr edx, 0x10
mov r11d, eax
shr ebx, 0x18
mov eax, r13d
jmp 0x502e4c
xor ecx, ecx
jmp 0x502de3
mov rsi, r10
xor r11d, r11d
jmp 0x502dd5
xor r11d, r11d
jmp 0x502dc6
mov r11, r10
jmp 0x502db9
xor ecx, ecx
jmp 0x502daa
movzx ecx, byte [r10 - 1]
sub r10, 1
shl ecx, 0x10
mov r11d, ecx
jmp 0x502d9b
mov rdx, rbp
jmp 0x502d4b
mov rax, rbp
jmp 0x502d63
mov r13d, r14d
mov ebx, esi
jmp 0x502d72