Function at 0x506dc0
Capabilities:
Encode data using xor
Hash data using whirlpool

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x160
lea rax, [rsp + 0x58]
lea r9, [rsp + 0x98]
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x50], rax
mov rcx, rax
nop dword [rax]
movzx eax, byte [rdx]
movzx r8d, byte [rdx + 1]
add rcx, 8
add rdx, 8
shl r8, 0x30
shl rax, 0x38
or rax, r8
movzx r8d, byte [rdx - 1]
or rax, r8
movzx r8d, byte [rdx - 6]
shl r8, 0x28
or rax, r8
movzx r8d, byte [rdx - 5]
shl r8, 0x20
or rax, r8
movzx r8d, byte [rdx - 4]
shl r8, 0x18
or rax, r8
movzx r8d, byte [rdx - 3]
shl r8, 0x10
or rax, r8
movzx r8d, byte [rdx - 2]
shl r8, 8
or rax, r8
mov qword [rcx - 8], rax
cmp rcx, r9
jne 0x506df0
mov rcx, qword [rsp + 0x48]
lea r12, [rsp + 0x98]
xor eax, eax
nop word [rax + rax]
mov rdx, qword [rcx + rax]
mov qword [r12 + rax], rdx
add rax, 8
cmp rax, 0x40
jne 0x506e70
mov rcx, qword [rsp + 0x48]
lea r14, [rsp + 0xd8]
xor al, al
mov rdx, qword [rcx + rax]
mov qword [r14 + rax], rdx
add rax, 8
cmp rax, 0x40
jne 0x506e91
mov rcx, qword [rsp + 0x50]
xor al, al
nop word [rax + rax]
mov rdx, qword [rcx + rax]
xor qword [r14 + rax], rdx
add rax, 8
cmp rax, 0x40
jne 0x506eb0
mov rsi, qword [rsp + 0xc0]
lea rbp, [0x00778460]
lea r10, [0x0077b460]
mov rdi, qword [rsp + 0xb8]
mov rax, qword [rsp + 0x98]
lea r9, [0x0077ac60]
mov r15, qword [rsp + 0xd0]
lea r8, [0x0077a460]
lea rcx, [0x00779c60]
mov qword [rsp + 0x18], rsi
mov rsi, qword [rsp + 0xb0]
lea r13, [0x00778c60]
mov rdx, rdi
mov rdi, qword [rsp + 0xa8]
mov qword [rsp + 0x20], rax
mov rax, qword [rsp + 0xc8]
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x10], rsi
mov rsi, qword [rsp + 0xa0]
mov qword [rsp + 8], rdi
lea rdi, [0x0077c460]
mov qword [rsp + 0x38], r14
mov r11, rax
mov qword [rsp], rdx
mov rax, r15
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], rdi
lea rsi, [0x00779460]
lea rdi, [0x0077bc60]
nop word cs:[rax + rax]
mov rdx, qword [rsp + 0x28]
mov r12, qword [rsp + 0x20]
mov rbx, qword [rsp + 0x30]
movzx r14d, dl
shr r12, 0x38
mov r15, qword [rbp + r14*8]
xor r15, qword [rdi + r12*8]
mov r14, rdx
xor r15, qword [rbx]
mov rbx, rax
shr r14, 0x38
shr rbx, 0x30
movzx r12d, bl
mov rbx, r11
shr rbx, 0x28
xor r15, qword [r10 + r12*8]
movzx r12d, bl
mov rbx, qword [rsp]
xor r15, qword [r9 + r12*8]
mov r12, qword [rsp + 0x18]
shr rbx, 0x18
shr r12, 0x20
movzx r12d, r12b
xor r15, qword [r8 + r12*8]
movzx r12d, bl
mov rbx, qword [rsp + 0x10]
xor r15, qword [rcx + r12*8]
shr rbx, 0x10
movzx r12d, bl
mov rbx, qword [rsp + 8]
xor r15, qword [rsi + r12*8]
movzx r12d, byte [rsp + 8]
movzx ebx, bh
xor r15, qword [r13 + rbx*8]
mov rbx, qword [rsp + 0x10]
mov r12, qword [rbp + r12*8]
xor r12, qword [rdi + r14*8]
mov r14, qword [rsp + 0x20]
movzx ebx, bh
mov qword [rsp + 0x118], r15
shr r14, 0x30
movzx r14d, r14b
xor r12, qword [r10 + r14*8]
mov r14, rax
shr r14, 0x28
movzx r14d, r14b
xor r12, qword [r9 + r14*8]
mov r14, r11
shr r14, 0x20
movzx r14d, r14b
xor r12, qword [r8 + r14*8]
mov r14, qword [rsp + 0x18]
shr r14, 0x18
movzx r14d, r14b
xor r12, qword [rcx + r14*8]
mov r14, qword [rsp]
shr r14, 0x10
movzx r14d, r14b
xor r12, qword [rsi + r14*8]
mov r14, rdx
xor r12, qword [r13 + rbx*8]
mov rbx, qword [rsp + 8]
shr r14, 0x30
movzx r14d, r14b
shr rbx, 0x38
mov qword [rsp + 0x120], r12
movzx r12d, byte [rsp + 0x10]
mov r12, qword [rbp + r12*8]
xor r12, qword [rdi + rbx*8]
mov rbx, rax
xor r12, qword [r10 + r14*8]
mov r14, qword [rsp + 0x20]
shr r14, 0x28
movzx r14d, r14b
xor r12, qword [r9 + r14*8]
shr rbx, 0x20
movzx r14d, bl
mov rbx, r11
shr rbx, 0x18
xor r12, qword [r8 + r14*8]
movzx r14d, bl
mov rbx, qword [rsp]
xor r12, qword [rcx + r14*8]
mov r14, qword [rsp + 0x18]
movzx ebx, bh
shr r14, 0x10
movzx r14d, r14b
xor r12, qword [rsi + r14*8]
xor r12, qword [r13 + rbx*8]
mov qword [rsp + 0x128], r12
movzx r12d, byte [rsp]
mov r14, qword [rsp + 0x10]
mov rbx, qword [rsp + 8]
shr r14, 0x38
shr rbx, 0x30
mov r12, qword [rbp + r12*8]
xor r12, qword [rdi + r14*8]
movzx r14d, bl
mov rbx, rax
xor r12, qword [r10 + r14*8]
mov r14, rdx
shr rbx, 0x18
shr r14, 0x28
movzx r14d, r14b
xor r12, qword [r9 + r14*8]
mov r14, qword [rsp + 0x20]
shr r14, 0x20
movzx r14d, r14b
xor r12, qword [r8 + r14*8]
movzx r14d, bl
mov rbx, r11
shr rbx, 0x10
xor r12, qword [rcx + r14*8]
movzx r14d, bl
mov rbx, qword [rsp + 0x18]
xor r12, qword [rsi + r14*8]
mov r14, qword [rsp]
movzx ebx, bh
xor r12, qword [r13 + rbx*8]
shr r14, 0x38
mov rbx, qword [rsp + 8]
shr rbx, 0x28
mov qword [rsp + 0x130], r12
movzx r12d, byte [rsp + 0x18]
mov r12, qword [rbp + r12*8]
xor r12, qword [rdi + r14*8]
mov r14, qword [rsp + 0x10]
shr r14, 0x30
movzx r14d, r14b
xor r12, qword [r10 + r14*8]
movzx r14d, bl
mov rbx, r11
xor r12, qword [r9 + r14*8]
mov r14, rdx
movzx ebx, bh
shr r14, 0x20
movzx r14d, r14b
xor r12, qword [r8 + r14*8]
mov r14, qword [rsp + 0x20]
shr r14, 0x18
movzx r14d, r14b
xor r12, qword [rcx + r14*8]
mov r14, rax
shr r14, 0x10
movzx r14d, r14b
xor r12, qword [rsi + r14*8]
mov r14, qword [rsp]
xor r12, qword [r13 + rbx*8]
mov rbx, qword [rsp + 0x18]
shr rbx, 0x38
shr r14, 0x30
mov qword [rsp + 0x138], r12
movzx r12d, r11b
movzx r14d, r14b
mov r12, qword [rbp + r12*8]
xor r12, qword [rdi + rbx*8]
xor r12, qword [r10 + r14*8]
mov r14, qword [rsp + 0x10]
mov rbx, qword [rsp + 8]
shr r14, 0x28
shr rbx, 0x20
movzx r14d, r14b
xor r12, qword [r9 + r14*8]
movzx r14d, bl
movzx ebx, ah
xor r12, qword [r8 + r14*8]
mov r14, rdx
shr r14, 0x18
movzx r14d, r14b
xor r12, qword [rcx + r14*8]
mov r14, qword [rsp + 0x20]
shr r14, 0x10
movzx r14d, r14b
xor r12, qword [rsi + r14*8]
mov r14, r11
shr r11, 0x30
xor r12, qword [r13 + rbx*8]
shr r14, 0x38
movzx r11d, r11b
mov qword [rsp + 0x140], r12
mov rbx, qword [rsp + 0x18]
movzx r12d, al
mov r12, qword [rbp + r12*8]
xor r12, qword [rdi + r14*8]
shr rax, 0x38
shr rbx, 0x30
movzx r14d, bl
xor r12, qword [r10 + r14*8]
mov r14, qword [rsp]
shr r14, 0x28
movzx r14d, r14b
xor r12, qword [r9 + r14*8]
mov r14, qword [rsp + 0x10]
shr r14, 0x20
movzx r14d, r14b
xor r12, qword [r8 + r14*8]
mov r14, qword [rsp + 8]
shr r14, 0x18
movzx r14d, r14b
xor r12, qword [rcx + r14*8]
mov r14, rdx
mov rdx, qword [rsp + 0x20]
shr r14, 0x10
movzx r14d, r14b
movzx ebx, dh
xor r12, qword [rsi + r14*8]
xor r12, qword [r13 + rbx*8]
mov rbx, qword [rsp + 0x18]
shr rbx, 0x28
mov qword [rsp + 0x148], r12
movzx r12d, dl
mov rdx, qword [rsp]
mov r12, qword [rbp + r12*8]
xor r12, qword [rdi + rax*8]
movzx ebx, bl
xor r12, qword [r10 + r11*8]
xor r12, qword [r9 + rbx*8]
mov rbx, qword [rsp + 0x10]
shr rdx, 0x20
movzx edx, dl
xor r12, qword [r8 + rdx*8]
mov rdx, qword [rsp + 0x40]
shr rbx, 0x18
movzx eax, bl
xor r12, qword [rcx + rax*8]
mov rax, qword [rsp + 8]
shr rax, 0x10
movzx eax, al
xor r12, qword [rsi + rax*8]
mov rax, qword [rsp + 0x28]
movzx eax, ah
xor r12, qword [r13 + rax*8]
xor eax, eax
mov qword [rsp + 0x150], r12
jmp 0x507369
mov r15, qword [rsp + rax + 0x118]
mov qword [rdx + rax], r15
add rax, 8
cmp rax, 0x40
jne 0x507361
mov rax, qword [rsp + 0x98]
mov r12, qword [rsp + 0xd8]
mov r14, qword [rsp + 0x110]
mov r15, rax
mov qword [rsp + 0x20], rax
movzx eax, byte [rsp + 0xe0]
mov rdx, r12
shr rdx, 0x38
mov rbx, qword [rdi + rdx*8]
movzx edx, byte [rsp + 0xe8]
xor rbx, qword [rbp + rax*8]
mov rax, r14
shr rax, 0x30
movzx eax, al
xor rbx, r15
xor rbx, qword [r10 + rax*8]
mov rax, qword [rsp + 0x108]
shr rax, 0x28
movzx eax, al
xor rbx, qword [r9 + rax*8]
mov rax, qword [rsp + 0x100]
shr rax, 0x20
movzx eax, al
xor rbx, qword [r8 + rax*8]
mov rax, qword [rsp + 0xf8]
shr rax, 0x18
movzx eax, al
xor rbx, qword [rcx + rax*8]
mov rax, qword [rsp + 0xf0]
shr rax, 0x10
movzx eax, al
xor rbx, qword [rsi + rax*8]
mov rax, qword [rsp + 0xe8]
movzx eax, ah
xor rbx, qword [r13 + rax*8]
mov rax, qword [rsp + 0xa0]
mov r15, rax
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0xe0]
mov qword [rsp + 0x118], rbx
shr rax, 0x38
mov rax, qword [rdi + rax*8]
xor rax, qword [rbp + rdx*8]
mov rdx, r12
shr rdx, 0x30
movzx edx, dl
xor rax, r15
xor rax, qword [r10 + rdx*8]
mov rdx, r14
shr rdx, 0x28
movzx edx, dl
xor rax, qword [r9 + rdx*8]
mov rdx, qword [rsp + 0x108]
shr rdx, 0x20
movzx edx, dl
xor rax, qword [r8 + rdx*8]
mov rdx, qword [rsp + 0x100]
shr rdx, 0x18
movzx edx, dl
xor rax, qword [rcx + rdx*8]
mov rdx, qword [rsp + 0xf8]
shr rdx, 0x10
movzx edx, dl
xor rax, qword [rsi + rdx*8]
mov rdx, qword [rsp + 0xf0]
movzx edx, dh
xor rax, qword [r13 + rdx*8]
mov qword [rsp + 0x120], rax
mov rax, qword [rsp + 0xa8]
movzx edx, byte [rsp + 0xf0]
mov r15, rax
mov qword [rsp + 8], rax
mov rax, qword [rsp + 0xe8]
shr rax, 0x38
mov rax, qword [rdi + rax*8]
xor rax, qword [rbp + rdx*8]
mov rdx, qword [rsp + 0xe0]
shr rdx, 0x30
xor rax, r15
movzx edx, dl
xor rax, qword [r10 + rdx*8]
mov rdx, r12
shr rdx, 0x28
movzx edx, dl
xor rax, qword [r9 + rdx*8]
mov rdx, r14
shr rdx, 0x20
movzx edx, dl
xor rax, qword [r8 + rdx*8]
mov rdx, qword [rsp + 0x108]
shr rdx, 0x18
movzx edx, dl
xor rax, qword [rcx + rdx*8]
mov rdx, qword [rsp + 0x100]
shr rdx, 0x10
movzx edx, dl
xor rax, qword [rsi + rdx*8]
mov rdx, qword [rsp + 0xf8]
movzx edx, dh
xor rax, qword [r13 + rdx*8]
movzx edx, byte [rsp + 0xf8]
mov qword [rsp + 0x128], rax
mov rax, qword [rsp + 0xb0]
mov r15, rax
mov qword [rsp + 0x10], rax
mov rax, qword [rsp + 0xf0]
shr rax, 0x38
mov rax, qword [rdi + rax*8]
xor rax, qword [rbp + rdx*8]
mov rdx, qword [rsp + 0xe8]
shr rdx, 0x30
xor rax, r15
movzx r15d, r14b
movzx edx, dl
xor rax, qword [r10 + rdx*8]
mov rdx, qword [rsp + 0xe0]
shr rdx, 0x28
movzx edx, dl
xor rax, qword [r9 + rdx*8]
mov rdx, r12
shr rdx, 0x20
movzx edx, dl
xor rax, qword [r8 + rdx*8]
mov rdx, r14
shr rdx, 0x18
movzx edx, dl
xor rax, qword [rcx + rdx*8]
mov rdx, qword [rsp + 0x108]
shr rdx, 0x10
movzx edx, dl
xor rax, qword [rsi + rdx*8]
mov rdx, qword [rsp + 0x100]
movzx edx, dh
xor rax, qword [r13 + rdx*8]
mov qword [rsp + 0x130], rax
mov rax, qword [rsp + 0xb8]
movzx r11d, byte [rsp + 0x100]
mov rdx, rax
mov rax, qword [rsp + 0xf8]
mov qword [rsp], rdx
shr rax, 0x38
mov rax, qword [rdi + rax*8]
xor rax, qword [rbp + r11*8]
mov r11, qword [rsp + 0xf0]
shr r11, 0x30
xor rax, rdx
mov rdx, qword [rsp + 0x108]
movzx r11d, r11b
xor rax, qword [r10 + r11*8]
mov r11, qword [rsp + 0xe8]
movzx edx, dh
shr r11, 0x28
movzx r11d, r11b
xor rax, qword [r9 + r11*8]
mov r11, qword [rsp + 0xe0]
shr r11, 0x20
movzx r11d, r11b
xor rax, qword [r8 + r11*8]
mov r11, r12
shr r11, 0x18
movzx r11d, r11b
xor rax, qword [rcx + r11*8]
mov r11, r14
shr r11, 0x10
movzx r11d, r11b
xor rax, qword [rsi + r11*8]
movzx r11d, byte [rsp + 0x108]
xor rax, qword [r13 + rdx*8]
mov qword [rsp + 0x138], rax
mov rax, qword [rsp + 0xc0]
mov rdx, rax
mov qword [rsp + 0x18], rax
mov rax, qword [rsp + 0x100]
shr rax, 0x38
mov rax, qword [rdi + rax*8]
xor rax, qword [rbp + r11*8]
mov r11, qword [rsp + 0xf8]
shr r11, 0x30
xor rax, rdx
mov rdx, r14
movzx r11d, r11b
movzx edx, dh
shr r14, 0x38
xor rax, qword [r10 + r11*8]
mov r11, qword [rsp + 0xf0]
shr r11, 0x28
movzx r11d, r11b
xor rax, qword [r9 + r11*8]
mov r11, qword [rsp + 0xe8]
shr r11, 0x20
movzx r11d, r11b
xor rax, qword [r8 + r11*8]
mov r11, qword [rsp + 0xe0]
shr r11, 0x18
movzx r11d, r11b
xor rax, qword [rcx + r11*8]
mov r11, r12
shr r11, 0x10
movzx r11d, r11b
xor rax, qword [rsi + r11*8]
xor rax, qword [r13 + rdx*8]
mov rdx, r12
movzx r12d, r12b
movzx edx, dh
mov qword [rsp + 0x140], rax
mov rax, qword [rsp + 0x108]
mov r11, qword [rsp + 0xc8]
mov r14, qword [rdi + r14*8]
shr rax, 0x38
mov rax, qword [rdi + rax*8]
xor rax, qword [rbp + r15*8]
mov r15, qword [rsp + 0x100]
shr r15, 0x30
xor rax, r11
movzx r15d, r15b
xor rax, qword [r10 + r15*8]
mov r15, qword [rsp + 0xf8]
shr r15, 0x28
movzx r15d, r15b
xor rax, qword [r9 + r15*8]
mov r15, qword [rsp + 0xf0]
shr r15, 0x20
movzx r15d, r15b
xor rax, qword [r8 + r15*8]
mov r15, qword [rsp + 0xe8]
shr r15, 0x18
movzx r15d, r15b
xor rax, qword [rcx + r15*8]
mov r15, qword [rsp + 0xe0]
shr r15, 0x10
movzx r15d, r15b
xor rax, qword [rsi + r15*8]
xor rax, qword [r13 + rdx*8]
xor r14, qword [rbp + r12*8]
mov r12, qword [rsp + 0x108]
mov rdx, qword [rsp + 0xe0]
mov qword [rsp + 0x148], rax
mov rax, qword [rsp + 0xd0]
shr r12, 0x30
movzx r12d, r12b
movzx edx, dh
xor r14, rax
xor r14, qword [r10 + r12*8]
mov r12, qword [rsp + 0x100]
shr r12, 0x28
movzx r12d, r12b
xor r14, qword [r9 + r12*8]
mov r12, qword [rsp + 0xf8]
shr r12, 0x20
movzx r12d, r12b
xor r14, qword [r8 + r12*8]
mov r12, qword [rsp + 0xf0]
shr r12, 0x18
movzx r12d, r12b
xor r14, qword [rcx + r12*8]
mov r12, qword [rsp + 0xe8]
shr r12, 0x10
movzx r12d, r12b
xor r14, qword [rsi + r12*8]
xor r12d, r12d
xor r14, qword [r13 + rdx*8]
mov rdx, qword [rsp]
mov qword [rsp + 0x150], r14
mov r14, rbx
mov rbx, qword [rsp + 0x38]
jmp 0x50788c
mov r14, qword [rsp + r12 + 0x118]
mov qword [rbx + r12], r14
add r12, 8
cmp r12, 0x40
jne 0x507884
add qword [rsp + 0x30], 8
lea rbx, [0x0077c4b0]
mov qword [rsp], rdx
cmp qword [rsp + 0x30], rbx
jne 0x506f80
mov r14, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x48]
xor eax, eax
mov r8, qword [rsp + 0x50]
nop word [rax + rax]
mov rcx, qword [r8 + rax]
xor qword [rdx + rax], rcx
add rax, 8
cmp rax, 0x40
jne 0x5078d0
mov rdx, qword [rsp + 0x48]
xor al, al
nop dword [rax]
mov rcx, qword [r14 + rax]
xor qword [rdx + rax], rcx
add rax, 8
cmp rax, 0x40
jne 0x5078f0
add rsp, 0x160
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret