Function at 0x4f4ad0
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 + 0xc0]
mov ebx, dword [rax + 4]
mov r15d, dword [rax]
mov rbp, rdx
mov eax, r8d
mov edx, dword [rsp + 0xc8]
mov rdi, rcx
sub eax, 8
mov dword [rsp + 0xb0], r8d
mov r13, r9
bswap ebx
mov dword [rsp + 0x30], eax
test edx, edx
je 0x4f4c20
mov ecx, r15d
bswap ecx
test eax, eax
js 0x4f4f00
shr eax, 3
lea rsi, [rsp + 0x48]
lea r15d, [rax + 1]
mov r14d, eax
lea rax, [r15*8]
mov r15, rbp
mov qword [rsp + 0x28], rax
lea r12, [rdi + rax]
nop word [rax + rax]
mov edx, dword [rdi]
mov eax, dword [rdi + 4]
add r15, 8
add rdi, 8
bswap edx
xor ecx, edx
bswap eax
mov rdx, r13
xor ebx, eax
mov dword [rsp + 0x48], ecx
mov rcx, rsi
mov dword [rsp + 0x4c], ebx
call sym.CAST_encrypt
mov ecx, dword [rsp + 0x48]
mov ebx, dword [rsp + 0x4c]
mov eax, ecx
mov byte [r15 - 5], cl
shr eax, 0x18
mov byte [r15 - 8], al
mov eax, ecx
shr eax, 0x10
mov byte [r15 - 7], al
movzx eax, ch
mov byte [r15 - 6], al
mov eax, ebx
shr eax, 0x18
mov byte [r15 - 4], al
mov eax, ebx
shr eax, 0x10
mov byte [r15 - 3], al
movzx eax, bh
mov byte [r15 - 2], al
mov byte [r15 - 1], bl
cmp r12, rdi
jne 0x4f4b50
mov eax, dword [rsp + 0xb0]
neg r14d
add rbp, qword [rsp + 0x28]
shl r14d, 3
lea r8d, [rax + r14 - 0x10]
add r14d, dword [rsp + 0x30]
mov dword [rsp + 0xb0], r14d
cmp r8d, 0xfffffff8
je 0x4f4f20
movsxd r8, dword [rsp + 0xb0]
cmp dword [rsp + 0xb0], 7
lea r10, [rdi + r8]
ja case.0x4f4c1d.0
mov edi, dword [rsp + 0xb0]
lea r9, [0x00797830]
movsxd r8, dword [r9 + rdi*4]
add r8, r9
jmp r8
bswap r15d
test eax, eax
js 0x4f4f10
shr eax, 3
lea rsi, [rsp + 0x48]
mov qword [rsp + 0xa0], rcx
mov edi, ebx
lea r14d, [rax + 1]
mov dword [rsp + 0x34], eax
lea rax, [r14*8]
mov qword [rsp + 0x38], rax
add rax, rbp
mov qword [rsp + 0x28], rax
mov rax, rsi
mov rsi, rcx
mov r14, rax
nop dword [rax + rax]
mov r8d, dword [rsi + 4]
mov ebx, r15d
mov r15d, dword [rsi]
mov r12d, edi
mov rdx, r13
mov rcx, r14
add rbp, 8
add rsi, 8
mov edi, r8d
bswap r15d
mov dword [rsp + 0x48], r15d
bswap edi
mov dword [rsp + 0x4c], edi
call sym.CAST_decrypt
mov eax, dword [rsp + 0x4c]
xor ebx, dword [rsp + 0x48]
mov ecx, ebx
mov byte [rbp - 6], bh
xor eax, r12d
shr ecx, 0x18
mov byte [rbp - 5], bl
mov edx, eax
mov byte [rbp - 8], cl
mov ecx, ebx
shr edx, 0x18
mov byte [rbp - 2], ah
shr ecx, 0x10
mov byte [rbp - 4], dl
mov edx, eax
mov byte [rbp - 7], cl
shr edx, 0x10
mov byte [rbp - 3], dl
mov byte [rbp - 1], al
cmp qword [rsp + 0x28], rbp
jne 0x4f4c68
mov ecx, dword [rsp + 0x34]
mov eax, dword [rsp + 0xb0]
mov ebx, edi
mov rdi, qword [rsp + 0xa0]
add rdi, qword [rsp + 0x38]
neg ecx
shl ecx, 3
lea r8d, [rax + rcx - 0x10]
add ecx, dword [rsp + 0x30]
mov dword [rsp + 0xb0], ecx
cmp r8d, 0xfffffff8
je 0x4f4db5
mov esi, dword [rdi]
mov r12d, dword [rdi + 4]
mov rdx, r13
lea rcx, [rsp + 0x48]
bswap esi
bswap r12d
mov dword [rsp + 0x48], esi
mov dword [rsp + 0x4c], r12d
call sym.CAST_decrypt
xor r15d, dword [rsp + 0x48]
xor ebx, dword [rsp + 0x4c]
movsxd rdx, dword [rsp + 0xb0]
cmp dword [rsp + 0xb0], 7
lea rax, [rbp + rdx]
ja case.0x4f4d6a.0
mov edi, dword [rsp + 0xb0]
lea rcx, [0x00797850]
movsxd rdx, dword [rcx + rdi*4]
add rdx, rcx
jmp rdx
mov byte [rax - 1], bh
sub rax, 1
mov edx, ebx
sub rax, 1
shr edx, 0x10
mov byte [rax], dl
shr ebx, 0x18
lea rdx, [rax - 1]
mov byte [rax - 1], bl
mov byte [rdx - 1], r15b
lea rax, [rdx - 1]
mov ecx, r15d
lea rdx, [rax - 1]
mov byte [rax - 1], ch
mov ecx, r15d
lea rax, [rdx - 1]
shr ecx, 0x10
mov byte [rdx - 1], cl
shr r15d, 0x18
mov ebx, r12d
mov byte [rax - 1], r15b
mov r15d, esi
mov rax, qword [rsp + 0xc0]
bswap r15d
bswap ebx
mov dword [rax], r15d
mov dword [rax + 4], ebx
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 [r10 - 1]
sub r10, 1
shl r8d, 0x10
or r9d, r8d
movzx r8d, byte [r10 - 1]
lea r11, [r10 - 1]
shl r8d, 0x18
or r8d, r9d
xor ebx, r8d
movzx r8d, byte [r11 - 1]
lea r10, [r11 - 1]
movzx r9d, byte [r10 - 1]
lea r11, [r10 - 1]
shl r9d, 8
or r9d, r8d
movzx r8d, byte [r11 - 1]
lea r10, [r11 - 1]
shl r8d, 0x10
or r9d, r8d
movzx r8d, byte [r10 - 1]
shl r8d, 0x18
or r8d, r9d
xor ecx, r8d
movd xmm1, ebx
movd xmm0, ecx
lea rcx, [rsp + 0x48]
mov rdx, r13
punpckldq xmm0, xmm1
movq qword [rsp + 0x48], xmm0
call sym.CAST_encrypt
mov ecx, dword [rsp + 0x48]
mov ebx, dword [rsp + 0x4c]
mov eax, ecx
mov edi, ebx
mov edx, ecx
mov r11d, ecx
shr eax, 0x18
shr edx, 0x10
bswap edi
mov dword [rbp + 4], edi
mov r8d, eax
movzx eax, ch
mov r9d, edx
mov edx, ebx
mov r10d, eax
mov eax, ebx
bswap r11d
shr edx, 0x10
shr eax, 0x18
mov dword [rbp], r11d
movzx esi, bh
mov r11d, eax
movzx ebx, bl
movzx eax, sil
movzx r15d, cl
movzx ecx, r10b
shl rbx, 8
or rbx, rax
movzx eax, dl
movzx edx, r9b
shl rbx, 8
or rbx, rax
movzx eax, r11b
shl rbx, 8
or rbx, rax
movzx eax, r8b
shl rbx, 8
or rbx, r15
shl rbx, 8
or rbx, rcx
shl rbx, 8
or rbx, rdx
shl rbx, 8
or rbx, rax
mov rax, qword [rsp + 0xc0]
mov qword [rax], rbx
jmp 0x4f4dc8
mov r8d, eax
jmp 0x4f4be4
mov r8d, eax
jmp 0x4f4d06
mov eax, ecx
mov edx, ecx
movzx esi, bh
shr eax, 0x18
shr edx, 0x10
mov r8d, eax
movzx eax, ch
mov r9d, edx
mov r10d, eax
mov eax, ebx
shr eax, 0x18
mov r11d, eax
mov eax, ebx
shr eax, 0x10
mov edx, eax
jmp 0x4f4e9c
xor r9d, r9d
jmp 0x4f4e2f
mov r11, r10
xor r9d, r9d
jmp 0x4f4e1f
xor r8d, r8d
jmp 0x4f4e0f
mov r11, r10
jmp 0x4f4e06
xor r9d, r9d
jmp 0x4f4df3
movzx r9d, byte [r10 - 1]
sub r10, 1
shl r9d, 8
jmp 0x4f4de3
mov rdx, rax
jmp 0x4f4d88
mov rdx, rax
jmp 0x4f4d9a
mov ebx, r12d
mov r15d, esi
jmp 0x4f4db5