Function at 0x14005d7c0
Capabilities:
Encode data using xor
Hash data using tiger

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x58
mov rbp, qword [rcx]
lea rbx, [0x140180de0]
mov r15, qword [rdx]
lea rsi, [rdx + 8]
mov r12, qword [rsi]
mov rdi, rcx
mov r14, rdx
mov qword [rsp + 0xa8], rbp
mov r9, r15
mov r10, rbp
xor r9, qword [rcx + 0x10]
lea rbp, [0x140180de0]
mov rax, r9
mov r13d, 2
shr rax, 0x30
movzx edx, al
mov rax, r9
shr rax, 0x20
movzx ecx, al
mov rax, r9
shr rax, 0x10
mov r8, qword [rbx + rdx*8 + 0x1800]
xor r8, qword [rbx + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, r9b
xor r8, qword [rbx + rcx*8 + 0x800]
xor r8, qword [rbx + rax*8]
mov rax, r9
shr rax, 0x28
sub r10, r8
movzx edx, al
xor r10, r12
mov rax, r9
shr rax, 0x18
movzx ecx, al
mov rax, r9
mov r8, qword [rbx + rdx*8 + 0x800]
shr rax, 8
xor r8, qword [rbx + rcx*8 + 0x1000]
movzx ecx, al
mov rax, r9
shr rax, 0x38
xor r8, qword [rbx + rcx*8 + 0x1800]
xor r8, qword [rbx + rax*8]
mov rax, r10
add r8, qword [rdi + 8]
shr rax, 0x30
movzx edx, al
mov rax, r10
shr rax, 0x20
movzx ecx, al
lea r11, [r8 + r8*4]
mov rax, r10
mov r8, qword [rbx + rdx*8 + 0x1800]
shr rax, 0x10
xor r8, qword [rbx + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, r10b
xor r8, qword [rbx + rcx*8 + 0x800]
xor r8, qword [rbx + rax*8]
mov rax, r10
shr rax, 0x28
sub r11, r8
movzx edx, al
mov rax, r10
shr rax, 0x18
movzx ecx, al
mov rax, r10
shr rax, 8
mov r8, qword [rbx + rdx*8 + 0x800]
xor r8, qword [rbx + rcx*8 + 0x1000]
movzx ecx, al
mov rax, r10
shr rax, 0x38
xor r8, qword [rbx + rcx*8 + 0x1800]
xor r8, qword [rbx + rax*8]
add r8, r9
mov r9d, r13d
lea rbx, [r8 + r8*4]
nop dword [rax]
nop word [rax + rax]
xor r11, qword [rsi + 8]
lea rsi, [rsi + 0x18]
mov rax, r11
shr rax, 0x30
movzx edx, al
mov rax, r11
shr rax, 0x20
movzx ecx, al
mov rax, r11
shr rax, 0x10
mov r8, qword [rbp + rdx*8 + 0x1800]
xor r8, qword [rbp + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, r11b
xor r8, qword [rbp + rcx*8 + 0x800]
xor r8, qword [rbp + rax*8]
mov rax, r11
shr rax, 0x28
sub rbx, r8
xor rbx, qword [rsi - 8]
movzx edx, al
mov rax, r11
shr rax, 0x18
movzx ecx, al
mov rax, r11
shr rax, 8
mov r8, qword [rbp + rdx*8 + 0x800]
xor r8, qword [rbp + rcx*8 + 0x1000]
movzx ecx, al
mov rax, r11
shr rax, 0x38
xor r8, qword [rbp + rcx*8 + 0x1800]
xor r8, qword [rbp + rax*8]
mov rax, rbx
shr rax, 0x30
add r8, r10
movzx edx, al
mov rax, rbx
shr rax, 0x20
movzx ecx, al
mov rax, rbx
shr rax, 0x10
lea r10, [r8 + r8*4]
mov r8, qword [rbp + rdx*8 + 0x1800]
xor r8, qword [rbp + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, bl
xor r8, qword [rbp + rcx*8 + 0x800]
xor r8, qword [rbp + rax*8]
mov rax, rbx
shr rax, 0x28
sub r10, r8
xor r10, qword [rsi]
movzx edx, al
mov rax, rbx
shr rax, 0x18
movzx ecx, al
mov rax, rbx
shr rax, 8
mov r8, qword [rbp + rdx*8 + 0x800]
xor r8, qword [rbp + rcx*8 + 0x1000]
movzx ecx, al
mov rax, rbx
shr rax, 0x38
xor r8, qword [rbp + rcx*8 + 0x1800]
xor r8, qword [rbp + rax*8]
mov rax, r10
shr rax, 0x30
add r8, r11
movzx edx, al
mov rax, r10
shr rax, 0x20
movzx ecx, al
mov rax, r10
lea r11, [r8 + r8*4]
shr rax, 0x10
mov r8, qword [rbp + rdx*8 + 0x1800]
xor r8, qword [rbp + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, r10b
xor r8, qword [rbp + rcx*8 + 0x800]
xor r8, qword [rbp + rax*8]
mov rax, r10
shr rax, 0x28
sub r11, r8
movzx edx, al
mov rax, r10
shr rax, 0x18
movzx ecx, al
mov rax, r10
shr rax, 8
mov r8, qword [rbp + rdx*8 + 0x800]
xor r8, qword [rbp + rcx*8 + 0x1000]
movzx ecx, al
mov rax, r10
shr rax, 0x38
xor r8, qword [rbp + rcx*8 + 0x1800]
xor r8, qword [rbp + rax*8]
add r8, rbx
lea rbx, [r8 + r8*4]
sub r9, 1
jne 0x14005d930
mov rcx, qword [r14 + 0x38]
movabs rdx, 0xa5a5a5a5a5a5a5a5
mov rsi, qword [r14 + 0x10]
mov rax, rcx
xor rax, rdx
mov rdx, qword [r14 + 0x28]
sub r15, rax
mov r9, r15
xor r9, r12
mov r12, qword [r14 + 0x18]
add rsi, r9
mov rax, r9
not rax
shl rax, 0x13
xor rax, rsi
sub r12, rax
mov r8, r12
xor r8, qword [r14 + 0x20]
mov r14, qword [r14 + 0x30]
add rdx, r8
mov qword [rsp + 0xa0], rdx
mov rax, r8
not rax
shr rax, 0x17
xor rax, rdx
sub r14, rax
mov rdx, r14
xor rdx, rcx
movabs rcx, 0x123456789abcdef
add r15, rdx
mov rax, rdx
not rax
mov qword [rsp + 0x10], r15
shl rax, 0x13
xor r11, r15
xor rax, r15
sub r9, rax
xor rsi, r9
mov qword [rsp + 0xb8], r9
add r12, rsi
mov qword [rsp + 0x18], r9
mov rax, rsi
mov qword [rsp], rsi
not rax
mov qword [rsp + 0x20], rsi
shr rax, 0x17
xor rax, r12
mov qword [rsp + 0x28], r12
sub r8, rax
mov rax, qword [rsp + 0xa0]
xor rax, r8
mov qword [rsp + 8], r8
add r14, rax
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0x38], rax
mov rax, r14
xor rax, rcx
mov qword [rsp + 0x30], r8
sub rdx, rax
mov qword [rsp + 0x40], r14
mov qword [rsp + 0xb0], rdx
mov rax, r11
shr rax, 0x30
mov qword [rsp + 0x48], rdx
movzx edx, al
mov rax, r11
shr rax, 0x20
movzx ecx, al
mov rax, r11
shr rax, 0x10
mov r8, qword [rbp + rdx*8 + 0x1800]
xor r8, qword [rbp + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, r11b
xor r8, qword [rbp + rcx*8 + 0x800]
xor r8, qword [rbp + rax*8]
mov rax, r11
sub rbx, r8
xor rbx, r9
shr rax, 0x28
movzx edx, al
mov r8, qword [rbp + rdx*8 + 0x800]
lea r9, [rsp + 0x18]
mov rax, r11
shr rax, 0x18
movzx ecx, al
mov rax, r11
shr rax, 8
xor r8, qword [rbp + rcx*8 + 0x1000]
movzx ecx, al
mov rax, r11
shr rax, 0x38
xor r8, qword [rbp + rcx*8 + 0x1800]
xor r8, qword [rbp + rax*8]
mov rax, rbx
mov rbp, qword [rsp + 0xa8]
add r8, r10
shr rax, 0x30
lea r10, [0x140180de0]
movzx edx, al
mov rax, rbx
shr rax, 0x20
movzx ecx, al
mov rax, rbx
imul rsi, r8, 7
mov r8, qword [r10 + rdx*8 + 0x1800]
xor r8, qword [r10 + rcx*8 + 0x1000]
shr rax, 0x10
movzx ecx, al
movzx eax, bl
xor r8, qword [r10 + rcx*8 + 0x800]
xor r8, qword [r10 + rax*8]
mov rax, rbx
shr rax, 0x28
sub rsi, r8
movzx edx, al
mov rax, rbx
shr rax, 0x18
movzx ecx, al
mov rax, rbx
shr rax, 8
mov r8, qword [r10 + rdx*8 + 0x800]
xor r8, qword [r10 + rcx*8 + 0x1000]
movzx ecx, al
mov rax, rbx
shr rax, 0x38
xor r8, qword [r10 + rcx*8 + 0x1800]
xor r8, qword [r10 + rax*8]
add r8, r11
imul r11, r8, 7
xor rsi, qword [r9 + 8]
lea r9, [r9 + 0x18]
mov rax, rsi
shr rax, 0x30
movzx edx, al
mov rax, rsi
shr rax, 0x20
movzx ecx, al
mov rax, rsi
shr rax, 0x10
mov r8, qword [r10 + rdx*8 + 0x1800]
xor r8, qword [r10 + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, sil
xor r8, qword [r10 + rcx*8 + 0x800]
xor r8, qword [r10 + rax*8]
mov rax, rsi
shr rax, 0x28
sub r11, r8
xor r11, qword [r9 - 8]
movzx edx, al
mov rax, rsi
shr rax, 0x18
movzx ecx, al
mov rax, rsi
shr rax, 8
mov r8, qword [r10 + rdx*8 + 0x800]
xor r8, qword [r10 + rcx*8 + 0x1000]
movzx ecx, al
mov rax, rsi
shr rax, 0x38
xor r8, qword [r10 + rcx*8 + 0x1800]
xor r8, qword [r10 + rax*8]
mov rax, r11
shr rax, 0x30
add r8, rbx
movzx edx, al
mov rax, r11
shr rax, 0x20
movzx ecx, al
mov rax, r11
shr rax, 0x10
imul rbx, r8, 7
mov r8, qword [r10 + rdx*8 + 0x1800]
xor r8, qword [r10 + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, r11b
xor r8, qword [r10 + rcx*8 + 0x800]
xor r8, qword [r10 + rax*8]
mov rax, r11
shr rax, 0x28
sub rbx, r8
xor rbx, qword [r9]
movzx edx, al
mov rax, r11
shr rax, 0x18
movzx ecx, al
mov rax, r11
shr rax, 8
mov r8, qword [r10 + rdx*8 + 0x800]
xor r8, qword [r10 + rcx*8 + 0x1000]
movzx ecx, al
mov rax, r11
shr rax, 0x38
xor r8, qword [r10 + rcx*8 + 0x1800]
xor r8, qword [r10 + rax*8]
mov rax, rbx
shr rax, 0x30
add r8, rsi
movzx edx, al
mov rax, rbx
shr rax, 0x20
movzx ecx, al
mov rax, rbx
imul rsi, r8, 7
mov r8, qword [r10 + rdx*8 + 0x1800]
xor r8, qword [r10 + rcx*8 + 0x1000]
shr rax, 0x10
movzx ecx, al
movzx eax, bl
xor r8, qword [r10 + rcx*8 + 0x800]
xor r8, qword [r10 + rax*8]
mov rax, rbx
shr rax, 0x28
sub rsi, r8
movzx edx, al
mov rax, rbx
shr rax, 0x18
movzx ecx, al
mov rax, rbx
shr rax, 8
mov r8, qword [r10 + rdx*8 + 0x800]
xor r8, qword [r10 + rcx*8 + 0x1000]
movzx ecx, al
mov rax, rbx
shr rax, 0x38
xor r8, qword [r10 + rcx*8 + 0x1800]
xor r8, qword [r10 + rax*8]
add r8, r11
imul r11, r8, 7
sub r13, 1
jne 0x14005dd11
mov rax, qword [rsp + 0xb0]
movabs rcx, 0xa5a5a5a5a5a5a5a5
xor rax, rcx
mov r9, qword [rsp]
mov rdx, qword [rsp + 0xa0]
sub r15, rax
mov r10, r15
xor r10, qword [rsp + 0xb8]
add r9, r10
mov rax, r10
not rax
shl rax, 0x13
xor rax, r9
sub r12, rax
mov r8, r12
xor r8, qword [rsp + 8]
add rdx, r8
mov rax, r8
not rax
shr rax, 0x17
xor rax, rdx
sub r14, rax
mov rcx, r14
xor rcx, qword [rsp + 0xb0]
add r15, rcx
mov rax, rcx
not rax
mov qword [rsp + 0x10], r15
shl rax, 0x13
xor rsi, r15
xor rax, r15
sub r10, rax
movabs rax, 0x123456789abcdef
xor r9, r10
mov qword [rsp + 0x18], r10
add r12, r9
mov qword [rsp + 0x20], r9
not r9
mov qword [rsp + 0x28], r12
shr r9, 0x17
xor r9, r12
sub r8, r9
xor rdx, r8
mov qword [rsp + 0x30], r8
add r14, rdx
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x40], r14
xor r14, rax
sub rcx, r14
mov rax, rsi
shr rax, 0x30
lea r14, [0x140180de0]
movzx edx, al
mov rax, rsi
shr rax, 0x20
mov qword [rsp + 0x48], rcx
movzx ecx, al
mov rax, rsi
mov r8, qword [r14 + rdx*8 + 0x1800]
shr rax, 0x10
xor r8, qword [r14 + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, sil
xor r8, qword [r14 + rcx*8 + 0x800]
xor r8, qword [r14 + rax*8]
mov rax, rsi
shr rax, 0x28
sub r11, r8
movzx edx, al
xor r11, r10
mov rax, rsi
shr rax, 0x18
movzx ecx, al
mov rax, rsi
mov r8, qword [r14 + rdx*8 + 0x800]
shr rax, 8
xor r8, qword [r14 + rcx*8 + 0x1000]
movzx ecx, al
mov rax, rsi
xor r8, qword [r14 + rcx*8 + 0x1800]
shr rax, 0x38
xor r8, qword [r14 + rax*8]
mov rax, r11
shr rax, 0x30
add r8, rbx
movzx edx, al
mov rax, r11
shr rax, 0x20
movzx ecx, al
mov rax, r11
shr rax, 0x10
lea r9, [r8 + r8*8]
mov r8, qword [r14 + rdx*8 + 0x1800]
xor r8, qword [r14 + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, r11b
xor r8, qword [r14 + rcx*8 + 0x800]
xor r8, qword [r14 + rax*8]
mov rax, r11
shr rax, 0x28
sub r9, r8
movzx edx, al
mov rax, r11
shr rax, 0x18
movzx ecx, al
mov rax, r11
shr rax, 8
mov r8, qword [r14 + rdx*8 + 0x800]
xor r8, qword [r14 + rcx*8 + 0x1000]
movzx ecx, al
mov rax, r11
shr rax, 0x38
xor r8, qword [r14 + rcx*8 + 0x1800]
xor r8, qword [r14 + rax*8]
add r8, rsi
xor ebx, ebx
lea r10, [r8 + r8*8]
nop dword [rax]
nop word [rax + rax]
xor r9, qword [rsp + rbx*8 + 0x20]
add rbx, 3
mov rax, r9
shr rax, 0x30
movzx edx, al
mov rax, r9
shr rax, 0x20
movzx ecx, al
mov rax, r9
shr rax, 0x10
mov r8, qword [r14 + rdx*8 + 0x1800]
xor r8, qword [r14 + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, r9b
xor r8, qword [r14 + rcx*8 + 0x800]
xor r8, qword [r14 + rax*8]
mov rax, r9
shr rax, 0x28
sub r10, r8
xor r10, qword [rsp + rbx*8 + 0x10]
movzx edx, al
mov rax, r9
shr rax, 0x18
movzx ecx, al
mov rax, r9
shr rax, 8
mov r8, qword [r14 + rdx*8 + 0x800]
xor r8, qword [r14 + rcx*8 + 0x1000]
movzx ecx, al
mov rax, r9
shr rax, 0x38
xor r8, qword [r14 + rcx*8 + 0x1800]
xor r8, qword [r14 + rax*8]
mov rax, r10
shr rax, 0x30
add r8, r11
movzx edx, al
mov rax, r10
shr rax, 0x20
movzx ecx, al
mov rax, r10
shr rax, 0x10
lea r11, [r8 + r8*8]
mov r8, qword [r14 + rdx*8 + 0x1800]
xor r8, qword [r14 + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, r10b
xor r8, qword [r14 + rcx*8 + 0x800]
xor r8, qword [r14 + rax*8]
mov rax, r10
shr rax, 0x28
sub r11, r8
xor r11, qword [rsp + rbx*8 + 0x18]
movzx edx, al
mov rax, r10
shr rax, 0x18
movzx ecx, al
mov rax, r10
shr rax, 8
mov r8, qword [r14 + rdx*8 + 0x800]
xor r8, qword [r14 + rcx*8 + 0x1000]
movzx ecx, al
mov rax, r10
shr rax, 0x38
xor r8, qword [r14 + rcx*8 + 0x1800]
xor r8, qword [r14 + rax*8]
mov rax, r11
shr rax, 0x30
add r8, r9
movzx edx, al
mov rax, r11
shr rax, 0x20
movzx ecx, al
mov rax, r11
lea r9, [r8 + r8*8]
shr rax, 0x10
mov r8, qword [r14 + rdx*8 + 0x1800]
xor r8, qword [r14 + rcx*8 + 0x1000]
movzx ecx, al
movzx eax, r11b
xor r8, qword [r14 + rcx*8 + 0x800]
xor r8, qword [r14 + rax*8]
mov rax, r11
shr rax, 0x28
sub r9, r8
movzx edx, al
mov rax, r11
shr rax, 0x18
movzx ecx, al
mov rax, r11
shr rax, 8
mov r8, qword [r14 + rdx*8 + 0x800]
xor r8, qword [r14 + rcx*8 + 0x1000]
movzx ecx, al
mov rax, r11
shr rax, 0x38
xor r8, qword [r14 + rcx*8 + 0x1800]
xor r8, qword [r14 + rax*8]
add r8, r10
lea r10, [r8 + r8*8]
cmp rbx, 6
jne 0x14005e0c0
sub r11, qword [rdi + 8]
xor rbp, r10
add qword [rdi + 0x10], r9
mov qword [rdi], rbp
mov qword [rdi + 8], r11
add rsp, 0x58
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret