Function at 0x4c8380
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x18
test rdx, rdx
mov rdi, rdx
sete dl
test r8, r8
sete al
or dl, al
jne 0x4c893c
test rcx, rcx
je 0x4c893c
mov r12d, dword [r8 + 0x110]
mov eax, r12d
and eax, 0xfffffffd
cmp eax, 0xc
je 0x4c83cc
cmp r12d, 0x10
jne 0x4c893c
movzx eax, byte [rcx]
movzx ebp, byte [rcx + 3]
lea r10, [0x00792f20]
lea rbx, [0x00792720]
xor ebp, dword [r8]
movzx esi, byte [rcx + 7]
shl eax, 0x18
xor esi, dword [r8 + 4]
movzx edx, byte [rcx + 8]
xor ebp, eax
movzx eax, byte [rcx + 1]
movzx r9d, byte [rcx + 0xc]
shl edx, 0x18
shl eax, 0x10
shl r9d, 0x18
xor ebp, eax
movzx eax, byte [rcx + 2]
shl eax, 8
xor ebp, eax
movzx eax, byte [rcx + 4]
movzx r11d, bpl
shl eax, 0x18
xor esi, eax
movzx eax, byte [rcx + 5]
shl eax, 0x10
xor esi, eax
movzx eax, byte [rcx + 6]
shl eax, 8
xor esi, eax
movzx eax, byte [rcx + 0xb]
xor eax, dword [r8 + 8]
xor eax, edx
movzx edx, byte [rcx + 9]
movzx r14d, sil
shl edx, 0x10
xor eax, edx
movzx edx, byte [rcx + 0xa]
shl edx, 8
xor eax, edx
movzx edx, byte [rcx + 0xf]
xor edx, dword [r8 + 0xc]
xor edx, r9d
movzx r9d, byte [rcx + 0xd]
movzx ecx, byte [rcx + 0xe]
movzx r15d, al
shl r9d, 0x10
shl ecx, 8
xor edx, r9d
lea r9, [0x00792320]
xor edx, ecx
mov ecx, ebp
movzx ecx, ch
mov r13, rcx
mov ecx, ebp
shr ebp, 0x10
shr ecx, 0x18
movzx ebp, bpl
mov ecx, dword [r10 + rcx*4]
xor ecx, dword [r9 + r11*4]
lea r11, [0x00792b20]
xor ecx, dword [r11 + rbp*4]
xor ecx, dword [rbx + r13*4]
mov ebp, esi
mov dword [rsp + 0xc], ecx
mov ecx, esi
shr esi, 0x10
shr ebp, 0x18
movzx esi, sil
movzx ecx, ch
mov ebp, dword [r10 + rbp*4]
xor ebp, dword [r9 + r14*4]
xor ebp, dword [r11 + rsi*4]
movzx esi, ah
xor ebp, dword [rbx + rcx*4]
mov r13, rsi
mov esi, eax
shr eax, 0x10
shr esi, 0x18
mov r14d, dword [r10 + rsi*4]
movzx esi, al
xor r14d, dword [r9 + r15*4]
mov eax, dword [r11 + rsi*4]
movzx esi, dh
xor eax, r14d
movzx r14d, dl
xor eax, dword [rbx + r13*4]
mov r13, rsi
mov esi, edx
shr edx, 0x10
mov ecx, dword [rsp + 0xc]
xor ebp, eax
shr esi, 0x18
movzx edx, dl
mov esi, dword [r10 + rsi*4]
xor esi, dword [r9 + r14*4]
xor ecx, ebp
xor esi, dword [r11 + rdx*4]
xor esi, dword [rbx + r13*4]
xor eax, esi
xor esi, ebp
mov edx, eax
mov r13d, esi
xor edx, ecx
shr r13d, 0x18
xor ebp, edx
rol edx, 0x10
mov eax, ebp
shr ebp, 8
shl eax, 8
and ebp, 0xff00ff
and eax, 0xff00ff00
or eax, ebp
mov ebp, esi
shl ebp, 0x18
xor ebp, r13d
mov r13d, esi
shl r13d, 8
and r13d, 0xff0000
shr esi, 8
xor eax, edx
xor ebp, r13d
and esi, 0xff00
mov r13d, dword [r8 + 0x14]
xor ecx, eax
xor esi, ebp
lea rbp, [r8 + 0x20]
xor edx, esi
xor r13d, eax
xor esi, dword [r8 + 0x1c]
xor edx, ecx
xor eax, esi
xor ecx, dword [r8 + 0x10]
xor r13d, edx
xor edx, dword [r8 + 0x18]
cmp r12d, 2
je 0x4c880c
sub r12d, 4
mov qword [rsp + 0x68], rdi
shr r12d, 1
lea esi, [r12 + 2]
mov dword [rsp + 0xc], r12d
shl rsi, 5
add rsi, r8
mov r8, rbp
nop dword [rax + rax]
mov r14d, ecx
movzx edi, ch
movzx r15d, cl
shr ecx, 0x10
shr r14d, 0x18
movzx ecx, cl
mov r12d, r13d
mov r14d, dword [rbx + r14*4]
xor r14d, dword [r11 + r15*4]
shr r12d, 0x18
mov r15d, r14d
movzx r14d, r13b
xor r15d, dword [r9 + rcx*4]
mov ecx, r13d
shr r13d, 0x10
movzx ecx, ch
xor r15d, dword [r10 + rdi*4]
mov r12d, dword [rbx + r12*4]
movzx r13d, r13b
xor r12d, dword [r11 + r14*4]
movzx edi, dh
movzx r14d, dl
xor r12d, dword [r9 + r13*4]
xor r12d, dword [r10 + rcx*4]
mov ecx, edx
shr edx, 0x10
shr ecx, 0x18
movzx edx, dl
mov ecx, dword [rbx + rcx*4]
xor ecx, dword [r11 + r14*4]
movzx r14d, al
xor ecx, dword [r9 + rdx*4]
mov edx, dword [r10 + rdi*4]
movzx edi, ah
xor edx, ecx
mov ecx, eax
shr eax, 0x10
shr ecx, 0x18
movzx eax, al
xor r12d, edx
mov ecx, dword [rbx + rcx*4]
xor ecx, dword [r11 + r14*4]
xor ecx, dword [r9 + rax*4]
mov eax, edx
xor ecx, dword [r10 + rdi*4]
mov edx, r15d
xor eax, ecx
xor ecx, r12d
xor edx, r12d
mov r14d, ecx
xor eax, edx
shr ecx, 8
shl r14d, 8
xor r12d, eax
and ecx, 0xff00ff
rol edx, 0x10
and r14d, 0xff00ff00
mov r13d, r12d
mov r15d, r12d
or ecx, r14d
mov r14d, r12d
shr r14d, 8
shr r15d, 0x18
shl r13d, 0x18
shl r12d, 8
and r14d, 0xff00
xor r13d, r15d
and r12d, 0xff0000
xor r13d, eax
xor eax, ecx
xor ecx, dword [r8 + 0xc]
xor r12d, r13d
xor r14d, r12d
mov r12d, dword [r8 + 4]
xor edx, r14d
xor eax, edx
xor edx, dword [r8]
xor r12d, r14d
xor r14d, ecx
movzx edi, dh
movzx r15d, dl
mov ecx, edx
shr edx, 0x10
xor r12d, eax
shr ecx, 0x18
movzx edx, dl
xor eax, dword [r8 + 8]
mov ecx, dword [r10 + rcx*4]
mov r13d, r12d
xor ecx, dword [r9 + r15*4]
movzx r15d, r12b
xor ecx, dword [r11 + rdx*4]
mov edx, r12d
shr r12d, 0x10
xor ecx, dword [rbx + rdi*4]
movzx edx, dh
shr r13d, 0x18
movzx r12d, r12b
movzx edi, ah
mov r13d, dword [r10 + r13*4]
xor r13d, dword [r9 + r15*4]
movzx r15d, al
xor r13d, dword [r11 + r12*4]
xor r13d, dword [rbx + rdx*4]
mov edx, eax
shr eax, 0x10
shr edx, 0x18
movzx eax, al
mov r12d, r14d
mov edx, dword [r10 + rdx*4]
xor edx, dword [r9 + r15*4]
movzx r15d, r14b
xor edx, dword [r11 + rax*4]
mov eax, r14d
shr r14d, 0x10
xor edx, dword [rbx + rdi*4]
movzx eax, ah
shr r12d, 0x18
movzx r14d, r14b
mov r12d, dword [r10 + r12*4]
xor r12d, dword [r9 + r15*4]
xor r12d, dword [r11 + r14*4]
xor r12d, dword [rbx + rax*4]
mov eax, r13d
xor eax, edx
xor edx, r12d
xor ecx, eax
xor r12d, eax
xor edx, ecx
mov r14d, r12d
xor eax, edx
shr r14d, 0x18
mov r13d, eax
shr eax, 8
shl r13d, 8
and eax, 0xff00ff
rol edx, 0x10
and r13d, 0xff00ff00
or eax, r13d
mov r13d, r12d
shl r13d, 0x18
xor eax, edx
xor r13d, r14d
mov r14d, r12d
shr r12d, 8
xor ecx, eax
shl r14d, 8
and r12d, 0xff00
and r14d, 0xff0000
xor r13d, r14d
xor r12d, r13d
mov r13d, dword [r8 + 0x14]
xor edx, r12d
xor edx, ecx
xor ecx, dword [r8 + 0x10]
xor r13d, eax
xor r12d, dword [r8 + 0x1c]
xor r13d, edx
add r8, 0x20
xor edx, dword [r8 - 8]
xor eax, r12d
cmp rsi, r8
jne 0x4c85c0
mov esi, dword [rsp + 0xc]
mov rdi, qword [rsp + 0x68]
lea r8d, [rsi + 1]
shl r8, 5
add rbp, r8
mov r8d, ecx
movzx r12d, dl
shr r8d, 0x18
movzx r12d, byte [r11 + r12*4]
mov esi, dword [rbx + r8*4]
movzx r8d, cl
movzx r8d, byte [r11 + r8*4]
shl esi, 0x18
or esi, r8d
mov r15d, esi
movzx esi, ch
shr ecx, 0x10
mov r8d, dword [r10 + rsi*4]
mov esi, r15d
shl r8d, 8
movzx r8d, r8w
or esi, r8d
movzx r8d, cl
mov ecx, dword [r9 + r8*4]
mov r8d, r13d
shr r8d, 0x18
shl ecx, 8
mov r8d, dword [rbx + r8*4]
and ecx, 0xff0000
or ecx, esi
movzx esi, r13b
shl r8d, 0x18
movzx esi, byte [r11 + rsi*4]
mov r15d, ecx
mov ecx, r13d
shr r13d, 0x10
movzx r13d, r13b
or r8d, esi
movzx esi, ch
movzx ecx, dh
mov esi, dword [r10 + rsi*4]
shl esi, 8
movzx esi, si
or r8d, esi
mov esi, dword [r9 + r13*4]
shl esi, 8
and esi, 0xff0000
or r8d, esi
mov esi, edx
shr edx, 0x10
xor r8d, dword [rbp + 4]
shr esi, 0x18
movzx edx, dl
bswap r8d
mov esi, dword [rbx + rsi*4]
mov edx, dword [r9 + rdx*4]
shl esi, 0x18
shl edx, 8
or esi, r12d
mov r12d, dword [r10 + rcx*4]
and edx, 0xff0000
mov ecx, dword [rbp]
shl r12d, 8
movzx r12d, r12w
or esi, r12d
or esi, edx
mov edx, eax
xor esi, dword [rbp + 8]
shr edx, 0x18
bswap esi
mov edx, dword [rbx + rdx*4]
movzx ebx, al
movzx r11d, byte [r11 + rbx*4]
movzx ebx, ah
mov r10d, dword [r10 + rbx*4]
shl edx, 0x18
or edx, r11d
shl r10d, 8
shr eax, 0x10
xor ecx, r15d
movzx eax, al
movzx r10d, r10w
bswap ecx
mov eax, dword [r9 + rax*4]
or edx, r10d
shl eax, 8
and eax, 0xff0000
or eax, edx
xor eax, dword [rbp + 0xc]
mov dword [rdi], ecx
bswap eax
mov dword [rdi + 4], r8d
mov dword [rdi + 8], esi
mov dword [rdi + 0xc], eax
add rsp, 0x18
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret