Function at 0x57c340
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 rsi, qword [rsp + 0xc0]
mov ebx, dword [rax + 4]
mov r11d, dword [rsi]
mov rbp, rdx
mov eax, r8d
bswap r11d
mov r14, rcx
mov edx, dword [rsp + 0xc8]
sub eax, 8
mov rdi, r9
mov r13d, r11d
mov dword [rsp + 0xb0], r8d
bswap ebx
mov dword [rsp + 0x2c], eax
test edx, edx
je 0x57c4a8
test eax, eax
js 0x57c788
shr eax, 3
lea rsi, [rsp + 0x48]
lea r15d, [rax + 1]
mov dword [rsp + 0x20], eax
lea rax, [r15*8]
mov r15, rbp
mov qword [rsp + 0x30], rax
lea r12, [rcx + rax]
mov eax, r11d
nop word [rax + rax]
mov ecx, dword [r14]
mov edx, dword [r14 + 4]
add r15, 8
add r14, 8
bswap ecx
bswap edx
xor eax, ecx
xor ebx, edx
mov rcx, rsi
mov rdx, rdi
mov dword [rsp + 0x48], eax
mov dword [rsp + 0x4c], ebx
call fcn.0057b940
mov eax, dword [rsp + 0x48]
mov ebx, dword [rsp + 0x4c]
mov edx, eax
movzx ecx, ah
mov byte [r15 - 5], al
shr edx, 0x18
mov byte [r15 - 6], cl
movzx ecx, bh
mov byte [r15 - 8], dl
mov edx, eax
shr edx, 0x10
mov byte [r15 - 2], cl
mov byte [r15 - 7], dl
mov edx, ebx
shr edx, 0x18
mov byte [r15 - 4], dl
mov edx, ebx
shr edx, 0x10
mov byte [r15 - 3], dl
mov byte [r15 - 1], bl
cmp r12, r14
jne 0x57c3d0
mov r13d, eax
mov eax, dword [rsp + 0x20]
mov esi, dword [rsp + 0xb0]
add rbp, qword [rsp + 0x30]
neg eax
shl eax, 3
lea ecx, [rsi + rax - 0x10]
add eax, dword [rsp + 0x2c]
mov dword [rsp + 0xb0], eax
cmp ecx, 0xfffffff8
je 0x57c7a0
movsxd rcx, dword [rsp + 0xb0]
cmp dword [rsp + 0xb0], 7
lea r10, [r14 + rcx]
ja case.0x57c4a0.0
mov eax, dword [rsp + 0xb0]
lea r9, [0x008fdc80]
movsxd rcx, dword [r9 + rax*4]
add rcx, r9
jmp rcx
test eax, eax
js 0x57c790
shr eax, 3
lea rsi, [rsp + 0x48]
mov qword [rsp + 0xa0], rcx
mov r14d, ebx
mov dword [rsp + 0x30], eax
add eax, 1
shl rax, 3
mov qword [rsp + 0x38], rax
add rax, rbp
mov qword [rsp + 0x20], rax
mov rax, rsi
mov rsi, rcx
mov r12, rax
nop dword [rax]
mov r8d, dword [rsi + 4]
mov ebx, r13d
mov r13d, dword [rsi]
mov rdx, rdi
mov rcx, r12
mov r15d, r14d
add rbp, 8
add rsi, 8
bswap r8d
bswap r13d
mov dword [rsp + 0x4c], r8d
mov r14d, r8d
mov dword [rsp + 0x48], r13d
call fcn.0057b940
mov eax, dword [rsp + 0x4c]
xor ebx, dword [rsp + 0x48]
mov ecx, ebx
mov byte [rbp - 6], bh
xor eax, r15d
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 + 0x20], rbp
jne 0x57c4e8
mov ecx, dword [rsp + 0x30]
mov eax, dword [rsp + 0xb0]
mov ebx, r14d
mov r14, qword [rsp + 0xa0]
add r14, qword [rsp + 0x38]
neg ecx
shl ecx, 3
lea r8d, [rax + rcx - 0x10]
add ecx, dword [rsp + 0x2c]
mov dword [rsp + 0xb0], ecx
cmp r8d, 0xfffffff8
je 0x57c63c
mov esi, dword [r14]
mov r12d, dword [r14 + 4]
mov rdx, rdi
lea rcx, [rsp + 0x48]
bswap esi
bswap r12d
mov dword [rsp + 0x48], esi
mov dword [rsp + 0x4c], r12d
call fcn.0057b940
xor r13d, dword [rsp + 0x48]
xor ebx, dword [rsp + 0x4c]
movsxd rdx, dword [rsp + 0xb0]
cmp dword [rsp + 0xb0], 7
lea rax, [rbp + rdx]
ja case.0x57c5ee.0
mov edi, dword [rsp + 0xb0]
lea rcx, [0x008fdca0]
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], r13b
lea rax, [rdx - 1]
mov ecx, r13d
lea rdx, [rax - 1]
mov byte [rax - 1], ch
mov ecx, r13d
lea rax, [rdx - 1]
shr ecx, 0x10
mov byte [rdx - 1], cl
mov r11d, r13d
mov ebx, r12d
mov r13d, esi
shr r11d, 0x18
mov byte [rax - 1], r11b
mov rax, qword [rsp + 0xc0]
mov r11d, r13d
bswap ebx
bswap r11d
mov dword [rax + 4], ebx
mov dword [rax], r11d
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor r8d, r8d
movzx ecx, byte [r10 - 1]
sub r10, 1
shl ecx, 0x10
or r8d, ecx
movzx ecx, byte [r10 - 1]
lea r9, [r10 - 1]
shl ecx, 0x18
or ecx, r8d
xor ebx, ecx
movzx ecx, byte [r9 - 1]
lea r10, [r9 - 1]
movzx r8d, byte [r10 - 1]
lea r9, [r10 - 1]
shl r8d, 8
or r8d, ecx
movzx ecx, byte [r9 - 1]
lea r10, [r9 - 1]
shl ecx, 0x10
or r8d, ecx
movzx ecx, byte [r10 - 1]
shl ecx, 0x18
or ecx, r8d
xor r13d, ecx
movd xmm1, ebx
movd xmm0, r13d
mov rdx, rdi
lea rcx, [rsp + 0x48]
punpckldq xmm0, xmm1
movq qword [rsp + 0x48], xmm0
call fcn.0057b940
mov r11d, dword [rsp + 0x48]
mov ebx, dword [rsp + 0x4c]
mov eax, r11d
mov edx, r11d
mov edi, ebx
mov r10d, r11d
shr eax, 0x18
shr edx, 0x10
bswap edi
mov dword [rbp + 4], edi
mov r8d, eax
mov eax, r11d
mov r9d, edx
mov edx, ebx
movzx ecx, ah
mov eax, ebx
bswap r10d
shr edx, 0x10
shr eax, 0x18
mov dword [rbp], r10d
movzx esi, bh
mov r10d, eax
movzx ebx, bl
movzx eax, sil
movzx r11d, r11b
movzx ecx, cl
shl rbx, 8
or rbx, rax
movzx eax, dl
movzx edx, r9b
shl rbx, 8
or rbx, rax
movzx eax, r10b
shl rbx, 8
or rbx, rax
movzx eax, r8b
shl rbx, 8
or rbx, r11
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 0x57c652
mov ecx, eax
jmp 0x57c468
mov r8d, eax
jmp 0x57c589
mov eax, r13d
mov edx, r13d
mov r11d, r13d
movzx esi, bh
shr eax, 0x18
shr edx, 0x10
mov r8d, eax
mov eax, r13d
mov r9d, edx
movzx ecx, ah
mov eax, ebx
shr eax, 0x18
mov r10d, eax
mov eax, ebx
shr eax, 0x10
mov edx, eax
jmp 0x57c723
xor r8d, r8d
jmp 0x57c6b3
mov r9, r10
xor r8d, r8d
jmp 0x57c6a4
xor ecx, ecx
jmp 0x57c694
mov r9, r10
jmp 0x57c68b
xor r8d, r8d
jmp 0x57c67a
movzx r8d, byte [r10 - 1]
sub r10, 1
shl r8d, 8
jmp 0x57c66b
mov rdx, rax
jmp 0x57c60c
mov rdx, rax
jmp 0x57c61e
mov ebx, r12d
mov r13d, esi
jmp 0x57c63c