Function at 0x56ba20
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 ebp, dword [rdi]
mov r13, rdx
mov eax, r8d
mov edx, dword [rsp + 0xc8]
mov rbx, r9
sub eax, 8
mov qword [rsp + 0xa0], rcx
mov r9d, dword [rdi + 4]
mov dword [rsp + 0xb0], r8d
mov dword [rsp + 0x30], eax
test edx, edx
je 0x56bb80
test eax, eax
js 0x56be01
shr eax, 3
mov r14, rcx
lea rsi, [rsp + 0x48]
mov edx, eax
mov dword [rsp + 0x28], eax
mov eax, ebp
lea r15, [rdx*8 + 8]
mov edx, r9d
lea r12, [r13 + r15]
nop dword [rax + rax]
mov ecx, dword [r14 + 4]
mov r8d, dword [r14]
add r13, 8
add r14, 8
xor edx, ecx
xor eax, r8d
mov rcx, rsi
mov dword [rsp + 0x4c], edx
mov rdx, rbx
mov dword [rsp + 0x48], eax
call fcn.0056b780
mov eax, dword [rsp + 0x48]
mov edx, eax
movzx ecx, ah
mov byte [r13 - 8], al
shr edx, 0x10
mov byte [r13 - 7], cl
mov byte [r13 - 6], dl
mov edx, eax
shr edx, 0x18
mov byte [r13 - 5], dl
mov edx, dword [rsp + 0x4c]
movzx ecx, dh
mov byte [r13 - 4], dl
mov byte [r13 - 3], cl
mov ecx, edx
shr ecx, 0x10
mov byte [r13 - 2], cl
mov ecx, edx
shr ecx, 0x18
mov byte [r13 - 1], cl
cmp r12, r13
jne 0x56baa0
mov r14d, dword [rsp + 0x28]
mov ebp, eax
mov eax, dword [rsp + 0xb0]
mov r9d, edx
add qword [rsp + 0xa0], r15
neg r14d
shl r14d, 3
lea edx, [rax + r14 - 0x10]
add r14d, dword [rsp + 0x30]
mov dword [rsp + 0xb0], r14d
cmp edx, 0xfffffff8
je 0x56be20
mov rax, qword [rsp + 0xa0]
movsxd rdx, edx
cmp dword [rsp + 0xb0], 7
lea rdx, [rax + rdx + 8]
ja case.0x56bb7c.0
mov eax, dword [rsp + 0xb0]
lea r10, [0x008d06b0]
movsxd rcx, dword [r10 + rax*4]
add rcx, r10
jmp rcx
test eax, eax
js 0x56be10
shr eax, 3
mov qword [rsp + 0xc0], rdi
lea rsi, [rsp + 0x48]
mov r15, rcx
mov edx, eax
mov dword [rsp + 0x34], eax
mov r14, rsi
mov esi, r9d
lea rax, [rdx*8 + 8]
mov qword [rsp + 0x38], rax
add rax, r13
mov qword [rsp + 0x28], rax
nop dword [rax]
mov edi, dword [r15]
mov r12d, dword [r15 + 4]
mov rdx, rbx
mov rcx, r14
add r13, 8
add r15, 8
mov dword [rsp + 0x48], edi
mov dword [rsp + 0x4c], r12d
call fcn.0056b8d0
mov edx, dword [rsp + 0x48]
mov eax, dword [rsp + 0x4c]
xor edx, ebp
xor eax, esi
mov ebp, edi
mov esi, r12d
movzx ecx, dh
mov byte [r13 - 8], dl
mov byte [r13 - 7], cl
mov ecx, edx
shr edx, 0x18
mov byte [r13 - 5], dl
shr ecx, 0x10
mov edx, eax
mov byte [r13 - 6], cl
shr edx, 0x10
movzx ecx, ah
mov byte [r13 - 4], al
shr eax, 0x18
mov byte [r13 - 3], cl
mov byte [r13 - 2], dl
mov byte [r13 - 1], al
cmp qword [rsp + 0x28], r13
jne 0x56bbc0
mov edx, dword [rsp + 0x34]
mov rax, qword [rsp + 0x38]
mov r15d, edi
add qword [rsp + 0xa0], rax
mov eax, dword [rsp + 0xb0]
neg edx
mov rdi, qword [rsp + 0xc0]
shl edx, 3
lea esi, [rax + rdx - 0x10]
add edx, dword [rsp + 0x30]
mov dword [rsp + 0xb0], edx
cmp esi, 0xfffffff8
je 0x56bd24
mov rax, qword [rsp + 0xa0]
lea rcx, [rsp + 0x48]
mov rdx, rbx
movsxd rsi, esi
mov r8d, dword [rax + 4]
mov r14d, dword [rax]
mov dword [rsp + 0x4c], r8d
mov dword [rsp + 0x28], r8d
mov dword [rsp + 0x48], r14d
call fcn.0056b8d0
xor r15d, dword [rsp + 0x48]
xor r12d, dword [rsp + 0x4c]
lea rax, [r13 + rsi + 8]
cmp dword [rsp + 0xb0], 7
mov r8d, dword [rsp + 0x28]
ja case.0x56bcd6.0
mov ebp, dword [rsp + 0xb0]
lea rcx, [0x008d06d0]
movsxd rdx, dword [rcx + rbp*4]
add rdx, rcx
jmp rdx
mov edx, r12d
sub rax, 1
shr edx, 0x10
mov byte [rax], dl
mov ebx, r12d
lea rdx, [rax - 1]
mov byte [rax - 1], bh
mov byte [rdx - 1], r12b
lea rax, [rdx - 1]
mov edx, r15d
lea rcx, [rax - 1]
shr edx, 0x18
mov byte [rax - 1], dl
mov eax, r15d
lea rdx, [rcx - 1]
shr eax, 0x10
mov byte [rcx - 1], al
mov ebx, r15d
lea rax, [rdx - 1]
mov byte [rdx - 1], bh
mov byte [rax - 1], r15b
mov r12d, r8d
mov r15d, r14d
mov dword [rdi], r15d
mov dword [rdi + 4], r12d
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx ecx, byte [rdx - 1]
sub rdx, 1
shl ecx, 0x10
mov r11d, ecx
movzx ecx, byte [rdx - 1]
lea r10, [rdx - 1]
shl ecx, 8
or ecx, r11d
lea rdx, [r10 - 1]
movzx r10d, byte [r10 - 1]
or ecx, r10d
xor r9d, ecx
movzx r10d, byte [rdx - 1]
lea rcx, [rdx - 1]
shl r10d, 0x18
lea r11, [rcx - 1]
movzx ecx, byte [rcx - 1]
shl ecx, 0x10
or r10d, ecx
movzx ecx, byte [r11 - 1]
lea rdx, [r11 - 1]
shl ecx, 8
or ecx, r10d
movzx edx, byte [rdx - 1]
or ecx, edx
xor ebp, ecx
mov rdx, rbx
lea rcx, [rsp + 0x48]
mov dword [rsp + 0x48], ebp
mov dword [rsp + 0x4c], r9d
call fcn.0056b780
mov edx, dword [rsp + 0x48]
mov r9, qword [rsp + 0x48]
mov r10d, edx
mov r11d, edx
movzx esi, dh
shr edx, 0x18
mov r8d, edx
mov edx, dword [rsp + 0x4c]
mov qword [r13], r9
shr r10d, 0x10
mov ecx, edx
mov ebp, edx
movzx ebx, dh
shr edx, 0x18
shr ecx, 0x10
mov byte [rdi], r11b
mov byte [rdi + 1], sil
mov byte [rdi + 2], r10b
mov byte [rdi + 3], r8b
mov byte [rdi + 4], bpl
mov byte [rdi + 5], bl
mov byte [rdi + 6], cl
mov byte [rdi + 7], dl
jmp 0x56bd2b
mov edx, eax
jmp 0x56bb40
mov esi, eax
mov r12d, r9d
mov r15d, ebp
jmp 0x56bc68
mov eax, ebp
mov r10d, ebp
mov r11d, ebp
shr ebp, 0x18
mov ecx, r9d
movzx esi, ah
mov r8d, ebp
mov eax, r9d
shr r10d, 0x10
mov ebp, r9d
shr r9d, 0x18
movzx ebx, ah
shr ecx, 0x10
mov edx, r9d
jmp 0x56bde0
xor r11d, r11d
jmp 0x56bd4a
xor ecx, ecx
jmp 0x56bd91
mov r11, rdx
xor r10d, r10d
jmp 0x56bd82
mov rcx, rdx
xor r10d, r10d
jmp 0x56bd74
mov r10, rdx
xor ecx, ecx
jmp 0x56bd58
mov rdx, rax
jmp 0x56bd10
mov rcx, rax
jmp 0x56bd03
mov rdx, rax
jmp 0x56bcee
mov r12d, r8d
mov r15d, r14d
jmp 0x56bd24