Function at 0x1400866f0
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rdi, r8
test rdx, rdx
je 0x1400866de
mov rsi, rdx
mov r10d, ecx
cmp rdi, 0x40
jb 0x140085f15
cmp dword [0x14018bcc8], 0
jne 0x14008668b
not r10d
cmp rdi, 0x2f
jb 0x1400865b4
test sil, 7
je 0x140085f64
lea rax, [rsi + 1]
lea rcx, [0x140153880]
mov rdx, rdi
dec rdi
mov r8d, r10d
shr r8d, 8
xor r10b, byte [rsi]
inc rsi
movzx r9d, r10b
mov r10d, r8d
xor r10d, dword [rcx + r9*4]
cmp rdx, 1
je 0x140085f64
mov edx, eax
and edx, 7
inc rax
test rdx, rdx
jne 0x140085f33
movabs rcx, 0xcccccccccccccccd
mov qword [rsp + 0x40], rdi
mov rax, rdi
mul rcx
shr rdx, 5
lea rax, [rdx*8]
lea rax, [rax + rax*4]
mov qword [rsp + 0x38], rax
mov r9, rdx
dec r9
je 0x1400866ce
lea rcx, [rdx + rdx*4]
lea rax, [rcx*8 - 0x28]
mov qword [rsp + 0x28], rax
lea r8, [0x140153c80]
xor edi, edi
xor ecx, ecx
xor ebx, ebx
mov qword [rsp + 0x30], rsi
mov r11, rsi
mov rax, r10
xor edx, edx
nop word cs:[rax + rax]
mov qword [rsp + 0x60], r9
mov r9, qword [r11]
mov qword [rsp + 0x58], r9
xor eax, r9d
movzx r9d, al
movzx esi, ah
mov ebp, dword [r8 + rsi*4 + 0x400]
xor ebp, dword [r8 + r9*4]
mov r9d, eax
shr r9d, 0xe
and r9d, 0x3fc
xor ebp, dword [r9 + r8 + 0x800]
shr eax, 0x18
xor ebp, dword [r8 + rax*4 + 0xc00]
mov rax, qword [r11 + 8]
mov qword [rsp + 0x48], rax
xor ebx, eax
movzx r9d, bl
movzx esi, bh
mov r13d, dword [r8 + rsi*4 + 0x400]
xor r13d, dword [r8 + r9*4]
mov r9d, ebx
shr r9d, 0xe
and r9d, 0x3fc
xor r13d, dword [r9 + r8 + 0x800]
shr ebx, 0x18
xor r13d, dword [r8 + rbx*4 + 0xc00]
mov r14, qword [r11 + 0x10]
xor ecx, r14d
mov r12, qword [r11 + 0x18]
mov rax, rdi
xor eax, r12d
mov r9, qword [r11 + 0x20]
mov qword [rsp + 0x50], r9
xor edx, r9d
movzx esi, cl
movzx ebx, al
mov r10, r11
movzx r11d, dl
movzx edi, ch
mov r9d, dword [r8 + rdi*4 + 0x400]
xor r9d, dword [r8 + rsi*4]
movzx esi, ah
mov r15d, dword [r8 + rsi*4 + 0x400]
xor r15d, dword [r8 + rbx*4]
movzx esi, dh
mov esi, dword [r8 + rsi*4 + 0x400]
xor esi, dword [r8 + r11*4]
mov r11d, ecx
shr r11d, 0xe
and r11d, 0x3fc
xor r9d, dword [r11 + r8 + 0x800]
mov r11d, eax
shr r11d, 0xe
and r11d, 0x3fc
xor r15d, dword [r11 + r8 + 0x800]
mov r11d, edx
shr r11d, 0xe
and r11d, 0x3fc
xor esi, dword [r11 + r8 + 0x800]
mov r11, r10
shr ecx, 0x18
xor r9d, dword [r8 + rcx*4 + 0xc00]
shr eax, 0x18
xor r15d, dword [r8 + rax*4 + 0xc00]
shr edx, 0x18
xor esi, dword [r8 + rdx*4 + 0xc00]
mov rcx, qword [rsp + 0x58]
mov rax, rcx
shr rax, 0x20
movzx eax, al
xor ebp, dword [r8 + rax*4 + 0x1000]
mov rdx, qword [rsp + 0x48]
mov rax, rdx
shr rax, 0x20
movzx eax, al
xor r13d, dword [r8 + rax*4 + 0x1000]
mov rax, r14
shr rax, 0x20
movzx eax, al
xor r9d, dword [r8 + rax*4 + 0x1000]
mov rax, r12
shr rax, 0x20
movzx eax, al
xor r15d, dword [r8 + rax*4 + 0x1000]
mov r10, qword [rsp + 0x50]
mov rax, r10
shr rax, 0x20
movzx eax, al
xor esi, dword [r8 + rax*4 + 0x1000]
mov rax, rcx
shr rax, 0x28
movzx eax, al
xor ebp, dword [r8 + rax*4 + 0x1400]
mov rax, rdx
shr rax, 0x28
movzx eax, al
xor r13d, dword [r8 + rax*4 + 0x1400]
mov rax, r14
shr rax, 0x28
movzx eax, al
xor r9d, dword [r8 + rax*4 + 0x1400]
mov rax, r12
shr rax, 0x28
movzx eax, al
xor r15d, dword [r8 + rax*4 + 0x1400]
mov rax, r10
shr rax, 0x28
movzx eax, al
xor esi, dword [r8 + rax*4 + 0x1400]
mov rax, rcx
shr rax, 0x30
movzx eax, al
xor ebp, dword [r8 + rax*4 + 0x1800]
mov rax, rdx
shr rax, 0x30
movzx eax, al
xor r13d, dword [r8 + rax*4 + 0x1800]
mov rax, r14
shr rax, 0x30
movzx eax, al
xor r9d, dword [r8 + rax*4 + 0x1800]
mov rax, r12
shr rax, 0x30
movzx eax, al
xor r15d, dword [r8 + rax*4 + 0x1800]
mov rax, r10
shr rax, 0x30
movzx eax, al
xor esi, dword [r8 + rax*4 + 0x1800]
shr rcx, 0x38
mov eax, ebp
xor eax, dword [r8 + rcx*4 + 0x1c00]
shr rdx, 0x38
mov ebx, r13d
xor ebx, dword [r8 + rdx*4 + 0x1c00]
shr r14, 0x38
mov ecx, r9d
mov r9, qword [rsp + 0x60]
xor ecx, dword [r8 + r14*4 + 0x1c00]
shr r12, 0x38
mov edi, r15d
xor edi, dword [r8 + r12*4 + 0x1c00]
shr r10, 0x38
mov edx, esi
xor edx, dword [r8 + r10*4 + 0x1c00]
add r11, 0x28
dec r9
jne 0x140085fd0
mov r10, rax
mov rsi, qword [rsp + 0x30]
add rsi, qword [rsp + 0x28]
mov r9d, edx
mov eax, ebx
mov r11d, ecx
mov r8d, edi
mov edx, r10d
xor rdx, qword [rsi]
mov r10, rdx
shr r10, 8
and edx, 0xff
lea rcx, [0x140153880]
mov edx, dword [rcx + rdx*4]
xor rdx, r10
mov r10, rdx
shr r10, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, r10
mov r10, rdx
shr r10, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, r10
mov r10, rdx
shr r10, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, r10
mov r10, rdx
shr r10, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, r10
mov r10, rdx
shr r10, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, r10
mov r10, rdx
shr r10, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, r10
mov r10, rdx
shr r10, 8
and edx, 0xff
xor r10d, dword [rcx + rdx*4]
xor r10, rax
xor r10, qword [rsi + 8]
mov rax, r10
shr rax, 8
and r10d, 0xff
mov edx, dword [rcx + r10*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
xor eax, dword [rcx + rdx*4]
xor rax, r11
xor rax, qword [rsi + 0x10]
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
xor edx, dword [rcx + rax*4]
mov rdi, qword [rsp + 0x40]
sub rdi, qword [rsp + 0x38]
xor rdx, r8
xor rdx, qword [rsi + 0x18]
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
xor eax, dword [rcx + rdx*4]
xor rax, r9
xor rax, qword [rsi + 0x20]
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov r10, rax
shr r10, 8
and eax, 0xff
xor r10d, dword [rcx + rax*4]
add rsi, 0x28
cmp rdi, 8
jb 0x14008664c
lea rax, [0x140153880]
mov ecx, r10d
xor r10b, byte [rsi]
shr ecx, 8
movzx edx, r10b
xor ecx, dword [rax + rdx*4]
mov edx, ecx
xor cl, byte [rsi + 1]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
xor dl, byte [rsi + 2]
shr ecx, 8
movzx edx, dl
xor ecx, dword [rax + rdx*4]
mov edx, ecx
xor cl, byte [rsi + 3]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
xor dl, byte [rsi + 4]
shr ecx, 8
movzx edx, dl
xor ecx, dword [rax + rdx*4]
add rdi, 0xfffffffffffffff8
mov edx, ecx
xor cl, byte [rsi + 5]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
shr ecx, 8
xor dl, byte [rsi + 6]
movzx edx, dl
xor ecx, dword [rax + rdx*4]
mov r10d, ecx
shr r10d, 8
xor cl, byte [rsi + 7]
add rsi, 8
movzx ecx, cl
xor r10d, dword [rax + rcx*4]
cmp rdi, 7
ja 0x1400865c5
test rdi, rdi
je 0x1400866c9
xor eax, eax
lea rcx, [0x140153880]
mov ebp, r10d
xor r10b, byte [rsi + rax]
shr ebp, 8
movzx edx, r10b
xor ebp, dword [rcx + rdx*4]
inc rax
mov r10d, ebp
cmp rdi, rax
jne 0x14008665a
not ebp
mov eax, ebp
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov r14, rdi
and r14, 0xfffffffffffffff0
not r10d
mov rcx, rsi
mov rdx, r14
mov r8d, r10d
call fcn.140078100
mov r10d, eax
xor eax, eax
mov rcx, rdi
and rcx, 0xf
cmovne rax, r14
and rdi, 0xf
je 0x1400866c1
add rsi, rax
jmp 0x1400865b4
not r10d
mov ebp, r10d
jmp 0x140086678
mov ebp, r10d
jmp 0x140086676
xor r11d, r11d
xor r8d, r8d
xor r9d, r9d
xor eax, eax
jmp 0x1400862a0
xor ebp, ebp
test rdi, rdi
jne 0x140086678
call fcn.140045c00
jmp 0x140086678
sub rsp, 0x28
test rdx, rdx
je 0x140086705
mov r8d, r8d
add rsp, 0x28
jmp 0x140085ee0
test r8d, r8d
jne 0x14008670f
call fcn.140045c00
xor eax, eax
add rsp, 0x28
ret