Function at 0x5dd800
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
sete r9b
test r8, r8
sete al
or r9b, al
jne 0x5dddf5
test rcx, rcx
je 0x5dddf5
mov r10d, dword [r8 + 0x110]
mov eax, r10d
and eax, 0xfffffffd
cmp eax, 0xc
je 0x5dd84b
cmp r10d, 0x10
jne 0x5dddf5
movzx eax, byte [rcx]
movzx ebx, byte [rcx + 0xc]
lea rbp, [0x008d93c0]
movzx r12d, byte [rcx + 3]
xor r12d, dword [r8]
shl eax, 0x18
movzx r9d, byte [rcx + 7]
xor r9d, dword [r8 + 4]
shl ebx, 0x18
xor r12d, eax
movzx eax, byte [rcx + 1]
movzx r11d, byte [rcx + 8]
shl eax, 0x10
shl r11d, 0x18
xor r12d, eax
movzx eax, byte [rcx + 2]
shl eax, 8
xor r12d, eax
movzx eax, byte [rcx + 4]
movzx edi, r12b
shl eax, 0x18
xor r9d, eax
movzx eax, byte [rcx + 5]
shl eax, 0x10
xor r9d, eax
movzx eax, byte [rcx + 6]
shl eax, 8
xor r9d, eax
movzx eax, byte [rcx + 0xb]
xor eax, dword [r8 + 8]
xor eax, r11d
movzx r11d, byte [rcx + 9]
movzx r14d, r9b
shl r11d, 0x10
xor eax, r11d
movzx r11d, byte [rcx + 0xa]
shl r11d, 8
xor eax, r11d
movzx r11d, byte [rcx + 0xf]
xor r11d, dword [r8 + 0xc]
xor r11d, ebx
movzx ebx, byte [rcx + 0xd]
movzx ecx, byte [rcx + 0xe]
movzx r15d, al
shl ebx, 0x10
shl ecx, 8
xor r11d, ebx
mov ebx, r12d
shr r12d, 0x10
movzx esi, bh
xor ecx, r11d
shr ebx, 0x18
lea r11, [0x008d8fc0]
mov r13, rsi
lea rsi, [0x008d9bc0]
movzx r12d, r12b
mov ebx, dword [rsi + rbx*4]
xor ebx, dword [r11 + rdi*4]
lea rdi, [0x008d97c0]
xor ebx, dword [rdi + r12*4]
xor ebx, dword [rbp + r13*4]
mov r12d, r9d
mov dword [rsp + 8], ebx
mov ebx, r9d
shr r9d, 0x10
shr r12d, 0x18
movzx r9d, r9b
movzx ebx, bh
mov r12d, dword [rsi + r12*4]
xor r12d, dword [r11 + r14*4]
xor r12d, dword [rdi + r9*4]
mov r9d, eax
xor r12d, dword [rbp + rbx*4]
movzx ebx, ah
shr r9d, 0x18
shr eax, 0x10
mov r14d, dword [rsi + r9*4]
movzx r9d, al
xor r14d, dword [r11 + r15*4]
mov eax, dword [rdi + r9*4]
mov r9d, ecx
shr r9d, 0x18
xor eax, r14d
movzx r14d, cl
xor eax, dword [rbp + rbx*4]
movzx ebx, ch
shr ecx, 0x10
mov r9d, dword [rsi + r9*4]
xor r9d, dword [r11 + r14*4]
xor r12d, eax
movzx ecx, cl
xor r9d, dword [rdi + rcx*4]
xor r9d, dword [rbp + rbx*4]
mov ebx, dword [rsp + 8]
xor eax, r9d
xor r9d, r12d
mov ecx, eax
mov r13d, r9d
xor ebx, r12d
shr r13d, 0x18
xor ecx, ebx
xor r12d, ecx
rol ecx, 0x10
mov eax, r12d
shr r12d, 8
shl eax, 8
and r12d, 0xff00ff
and eax, 0xff00ff00
or eax, r12d
mov r12d, r9d
shl r12d, 0x18
xor r12d, r13d
mov r13d, r9d
shl r13d, 8
and r13d, 0xff0000
shr r9d, 8
xor eax, ecx
xor r12d, r13d
and r9d, 0xff00
mov r13d, dword [r8 + 0x14]
xor ebx, eax
xor r9d, r12d
lea r12, [r8 + 0x20]
xor ecx, r9d
xor r9d, dword [r8 + 0x1c]
xor r13d, eax
xor ecx, ebx
xor eax, r9d
xor ebx, dword [r8 + 0x10]
xor r13d, ecx
mov r15d, eax
xor ecx, dword [r8 + 0x18]
cmp r10d, 2
je 0x5ddcbd
sub r10d, 4
mov qword [rsp + 0x68], rdx
shr r10d, 1
mov eax, r10d
mov r10, r12
lea r9, [rax + 2]
mov qword [rsp + 8], rax
mov eax, r15d
shl r9, 5
add r8, r9
mov r14d, ebx
movzx edx, bh
movzx r15d, bl
shr ebx, 0x10
shr r14d, 0x18
movzx ebx, bl
mov r9d, ecx
mov r14d, dword [rbp + r14*4]
xor r14d, dword [rdi + r15*4]
shr r9d, 0x18
mov r15d, r14d
movzx r14d, r13b
xor r15d, dword [r11 + rbx*4]
mov ebx, r13d
xor r15d, dword [rsi + rdx*4]
mov edx, r13d
shr r13d, 0x10
mov r9d, dword [rbp + r9*4]
movzx edx, dh
shr ebx, 0x18
movzx r13d, r13b
mov ebx, dword [rbp + rbx*4]
xor ebx, dword [rdi + r14*4]
movzx r14d, cl
xor ebx, dword [r11 + r13*4]
xor ebx, dword [rsi + rdx*4]
movzx edx, ch
shr ecx, 0x10
movzx ecx, cl
xor r9d, dword [rdi + r14*4]
movzx r14d, al
xor r9d, dword [r11 + rcx*4]
mov ecx, dword [rsi + rdx*4]
movzx edx, ah
xor ecx, r9d
mov r9d, eax
shr eax, 0x10
shr r9d, 0x18
movzx eax, al
xor ebx, ecx
mov r9d, dword [rbp + r9*4]
xor r9d, dword [rdi + r14*4]
xor r9d, dword [r11 + rax*4]
mov eax, ecx
xor r9d, dword [rsi + rdx*4]
mov ecx, r15d
xor eax, r9d
xor r9d, ebx
xor ecx, ebx
mov r14d, r9d
xor eax, ecx
shr r9d, 8
shl r14d, 8
xor ebx, eax
and r9d, 0xff00ff
rol ecx, 0x10
and r14d, 0xff00ff00
mov r13d, ebx
mov r15d, ebx
or r9d, r14d
mov r14d, ebx
shr r14d, 8
shr r15d, 0x18
shl r13d, 0x18
shl ebx, 8
and r14d, 0xff00
xor r13d, r15d
and ebx, 0xff0000
mov r15d, dword [r10 + 4]
xor r13d, eax
xor eax, r9d
xor r9d, dword [r10 + 0xc]
xor ebx, r13d
xor r14d, ebx
xor ecx, r14d
xor r15d, r14d
xor r14d, r9d
xor eax, ecx
xor ecx, dword [r10]
xor r15d, eax
movzx edx, ch
movzx r13d, cl
mov ebx, ecx
shr ecx, 0x10
shr ebx, 0x18
mov r9d, r15d
xor eax, dword [r10 + 8]
movzx ecx, cl
mov ebx, dword [rsi + rbx*4]
shr r9d, 0x18
xor ebx, dword [r11 + r13*4]
movzx r13d, r15b
xor ebx, dword [rdi + rcx*4]
xor ebx, dword [rbp + rdx*4]
mov edx, r15d
shr r15d, 0x10
movzx ecx, dh
mov r9d, dword [rsi + r9*4]
xor r9d, dword [r11 + r13*4]
movzx r15d, r15b
mov r13d, r9d
movzx edx, ah
mov r9d, r14d
xor r13d, dword [rdi + r15*4]
movzx r15d, al
xor r13d, dword [rbp + rcx*4]
mov ecx, eax
shr eax, 0x10
shr ecx, 0x18
movzx eax, al
mov ecx, dword [rsi + rcx*4]
xor ecx, dword [r11 + r15*4]
movzx r15d, r14b
xor ecx, dword [rdi + rax*4]
mov eax, r14d
shr r14d, 0x10
xor ecx, dword [rbp + rdx*4]
movzx eax, ah
shr r9d, 0x18
movzx r14d, r14b
mov r9d, dword [rsi + r9*4]
xor r9d, dword [r11 + r15*4]
xor r9d, dword [rdi + r14*4]
xor r9d, dword [rbp + rax*4]
mov eax, r13d
xor eax, ecx
xor ecx, r9d
xor ebx, eax
xor r9d, eax
xor ecx, ebx
mov r14d, r9d
xor eax, ecx
shr r14d, 0x18
mov r13d, eax
shr eax, 8
shl r13d, 8
and eax, 0xff00ff
rol ecx, 0x10
and r13d, 0xff00ff00
or eax, r13d
mov r13d, r9d
shl r13d, 0x18
xor eax, ecx
xor r13d, r14d
mov r14d, r9d
shr r9d, 8
xor ebx, eax
shl r14d, 8
and r9d, 0xff00
and r14d, 0xff0000
xor r13d, r14d
xor r9d, r13d
mov r13d, dword [r10 + 0x14]
xor ecx, r9d
xor ecx, ebx
xor ebx, dword [r10 + 0x10]
xor r13d, eax
xor r9d, dword [r10 + 0x1c]
xor r13d, ecx
add r10, 0x20
xor ecx, dword [r10 - 8]
xor eax, r9d
cmp r10, r8
jne 0x5dda64
mov r8, qword [rsp + 8]
mov rdx, qword [rsp + 0x68]
mov r15d, eax
add r8, 1
shl r8, 5
add r12, r8
mov r8d, ebx
movzx r9d, bl
movzx eax, bh
shr ebx, 0x10
shr r8d, 0x18
movzx r9d, byte [rdi + r9*4]
movzx ebx, bl
movzx r10d, r13b
mov r8d, dword [rbp + r8*4]
movzx r10d, byte [rdi + r10*4]
shl r8d, 0x18
or r8d, r9d
mov r9d, dword [rsi + rax*4]
mov eax, r15d
shl r9d, 8
movzx r9d, r9w
or r8d, r9d
mov r9d, dword [r11 + rbx*4]
mov ebx, r13d
movzx ebx, bh
shl r9d, 8
and r9d, 0xff0000
or r8d, r9d
mov r9d, r13d
shr r13d, 0x10
shr r9d, 0x18
movzx r13d, r13b
mov r9d, dword [rbp + r9*4]
shl r9d, 0x18
or r9d, r10d
mov r10d, dword [rsi + rbx*4]
movzx ebx, cl
movzx ebx, byte [rdi + rbx*4]
shl r10d, 8
movzx r10d, r10w
or r9d, r10d
mov r10d, dword [r11 + r13*4]
shl r10d, 8
and r10d, 0xff0000
or r9d, r10d
mov r10d, ecx
xor r9d, dword [r12 + 4]
shr r10d, 0x18
bswap r9d
mov r10d, dword [rbp + r10*4]
shl r10d, 0x18
or r10d, ebx
movzx ebx, ch
shr ecx, 0x10
mov ebx, dword [rsi + rbx*4]
movzx ecx, cl
mov ecx, dword [r11 + rcx*4]
shl ebx, 8
movzx ebx, bx
shl ecx, 8
or r10d, ebx
and ecx, 0xff0000
movzx ebx, r15b
or r10d, ecx
mov ecx, r15d
movzx ebx, byte [rdi + rbx*4]
xor r10d, dword [r12 + 8]
shr ecx, 0x18
bswap r10d
mov ecx, dword [rbp + rcx*4]
shl ecx, 0x18
or ecx, ebx
movzx ebx, ah
mov ebx, dword [rsi + rbx*4]
shl ebx, 8
shr eax, 0x10
xor r8d, dword [r12]
movzx eax, al
movzx ebx, bx
bswap r8d
mov eax, dword [r11 + rax*4]
or ecx, ebx
shl eax, 8
and eax, 0xff0000
or eax, ecx
xor eax, dword [r12 + 0xc]
mov dword [rdx], r8d
bswap eax
mov dword [rdx + 4], r9d
mov dword [rdx + 8], r10d
mov dword [rdx + 0xc], eax
add rsp, 0x18
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret