Function at 0x1400403d0
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, 0xb8
mov rbp, rdx
mov rax, qword [0x14016e028]
xor rax, rsp
mov qword [rsp + 0xb0], rax
test r8, r8
je 0x1400407ca
mov r13, r8
mov r15, rcx
mov eax, dword [r8]
cmp eax, 4
je 0x140040924
mov dword [rsp + 0x54], eax
mov qword [rsp + 0x48], rbp
mov eax, dword [r13 + 4]
mov dword [rsp + 0x58], eax
mov r14d, dword [r13 + 0x10]
mov eax, dword [r13 + 0x14]
xor ebp, ebp
mov ecx, dword [r13 + 0x18]
mov dword [rsp + 0x5c], ecx
cmp rax, 0x40
jb 0x1400409a8
mov ecx, eax
mov edi, 0
and ecx, 7
jne 0x140040500
mov rcx, qword [r15 + 8]
lea ebp, [rax + 0x14]
mov edx, dword [rcx + 0x14]
cmp ebp, edx
ja 0x1400409bb
mov rbx, qword [rcx + 8]
mov ebp, dword [rbx + rax + 4]
cmp ebp, 0xc8799269
jne 0x1400409bb
add rbx, rax
mov ebp, dword [rbx]
cmp ebp, 0x14
jb 0x1400409bb
mov ebp, dword [rbx]
add ebp, eax
cmp ebp, edx
ja 0x1400409bb
mov ebp, dword [rbx + 8]
cmp ebp, 0xbcea225b
jne 0x1400409bb
lea rbp, [rbx + 0x10]
test rbx, rbx
cmove rbp, rbx
lea ebx, [rax + 0x10]
cmp ebx, edx
ja 0x1400409a8
mov rbx, qword [rcx + 8]
mov edi, dword [rbx + rax + 4]
cmp edi, 0xc8799269
jne 0x1400409a8
add rbx, rax
mov edi, dword [rbx]
cmp edi, 0x10
jb 0x1400409a8
mov esi, dword [rbx]
add esi, eax
xor edi, edi
test rbx, rbx
je 0x140040500
cmp esi, edx
ja 0x140040500
mov edi, dword [rbx]
cmp rdi, 0x11
jb 0x1400409a3
add eax, edi
cmp eax, edx
ja 0x1400409a3
add rdi, 0xfffffffffffffff0
mov qword [rsp + 0x60], r15
lea eax, [r14 - 2]
cmp eax, 0x3ffffffc
ja 0x1400407c5
test rbp, rbp
je 0x1400407c5
lea r12d, [r14 + 1]
lea rbx, [r12*4]
cmp rdi, rbx
jb 0x1400407c5
mov ecx, 0x20
call fcn.14007a994
mov r15, rax
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov qword [rax + 0x10], 0
test r12d, r12d
je 0x1400409c2
mov rcx, rbx
call fcn.14007a994
mov rdi, rax
mov qword [r15], rax
lea rax, [rax + r12*4]
mov qword [r15 + 0x10], rax
test rbx, rbx
je 0x140040581
mov rcx, rdi
xor edx, edx
mov r8, rbx
call fcn.14007f940
add rdi, rbx
mov qword [r15 + 8], rdi
lea r8, [r15 + 0x18]
mov qword [r15 + 0x18], 0
xor eax, eax
nop word cs:[rax + rax]
nop dword [rax]
test rax, rax
je 0x1400405c4
mov ecx, dword [rbp + rax*4]
cmp ecx, dword [rbp + rax*4 - 4]
jle 0x1400407bc
mov rdx, qword [r15]
mov dword [rdx + rax*4], ecx
add rax, 1
cmp r12, rax
jne 0x1400405a0
jmp 0x1400405c9
mov ecx, dword [rbp]
jmp 0x1400405b3
mov rdi, qword [r15]
mov rax, qword [r15 + 8]
mov r9, rax
sub r9, rdi
je 0x1400409d7
mov rdx, r9
shr rdx, 2
mov rcx, rdi
not rcx
add rcx, rax
jne 0x1400405f2
xor ebx, ebx
jmp 0x140040638
mov rbp, r9
and rbp, 0xfffffffffffffffe
xor ebx, ebx
lea rax, [0x14015e560]
nop word cs:[rax + rax]
nop dword [rax]
movzx ecx, dl
movzx esi, byte [rdi + rbx]
xor esi, ecx
shr edx, 8
xor edx, dword [rax + rsi*4]
movzx ecx, dl
movzx esi, byte [rdi + rbx + 1]
xor esi, ecx
shr edx, 8
xor edx, dword [rax + rsi*4]
add rbx, 2
cmp rbp, rbx
jne 0x140040610
test r9b, 1
je 0x140040654
movzx eax, dl
movzx ecx, byte [rdi + rbx]
xor ecx, eax
lea rax, [0x14015e560]
shr edx, 8
xor edx, dword [rax + rcx*4]
mov dword [r8], edx
cmp edx, dword [rsp + 0x5c]
jne 0x1400407bc
test r15, r15
je 0x1400407c5
mov rcx, r15
call fcn.14003e560
mov r15, rax
mov eax, dword [r13 + 0x1c]
test r14d, r14d
mov r12, qword [rsp + 0x60]
je 0x1400407c5
lea rsi, [r14*8]
test eax, eax
jne 0x140040866
lea rax, [r13 + 0x1c]
movabs rcx, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0xa0], rcx
movaps xmm0, xmmword [0x140147b90]
movaps xmmword [rsp + 0x90], xmm0
mov rbp, qword [r12 + 8]
mov qword [rsp + 0x90], rbp
mov dword [rsp + 0x98], 0x53215531
cmp r14d, 0x1fffffff
ja 0x1400409f3
mov ebx, esi
lea edx, [r14*4]
mov dword [rsp + 0x9c], ebx
mov dword [rsp + 0xa0], 0
mov byte [rsp + 0xa4], 0
mov qword [rsp + 0xa8], rax
movaps xmmword [rsp + 0x70], xmm0
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x70], rbp
mov dword [rsp + 0x78], 0x53215531
cmp r14d, 0x1fffffff
ja 0x140040a00
mov dword [rsp + 0x7c], esi
mov rbp, qword [rsp + 0x48]
mov ecx, dword [rsp + 0x54]
mov dword [rsp + 0x80], edx
mov byte [rsp + 0x84], 0
mov qword [rsp + 0x88], rax
lea rsi, [r13 + 0x50]
test ecx, ecx
jne 0x1400407f9
lea rdi, [r13 + 0x38]
add r13, 0x20
mov ecx, 0x28
call fcn.14007a994
mov rbx, rax
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x38], r13
lea rax, [rsp + 0x70]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x90]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r15
mov rcx, rbx
mov rdx, rsi
call fcn.140042290
test rbx, rbx
je 0x1400407b6
mov eax, dword [rsp + 0x58]
or dword [rbx + 0x10], eax
mov qword [rbp], rbx
jmp 0x1400407d2
test r15, r15
jne 0x1400409de
mov rbp, qword [rsp + 0x48]
mov qword [rbp], 0
mov rcx, qword [rsp + 0xb0]
xor rcx, rsp
call fcn.14007d5a0
mov rax, rbp
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp ecx, 1
jne 0x1400408e0
lea rdi, [r13 + 0x38]
add r13, 0x20
mov ecx, 0x40
call fcn.14007a994
mov rbx, rax
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x38], r13
lea rax, [rsp + 0x70]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x90]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r15
mov rcx, rbx
mov rdx, rsi
call fcn.140042290
lea rax, [0x14014a428]
mov qword [rbx], rax
lea rax, [rbx + 0x30]
xorps xmm0, xmm0
movups xmmword [rbx + 0x30], xmm0
mov qword [rbx + 0x28], rax
jmp 0x1400407aa
xor edx, edx
cmp eax, 0x40
jb 0x1400408d2
mov ecx, eax
and ecx, 7
jne 0x1400408d2
mov rcx, qword [r12 + 8]
lea edx, [rax + 0x10]
mov ebp, dword [rcx + 0x14]
cmp edx, ebp
ja 0x1400409b4
mov rbx, qword [rcx + 8]
mov edx, dword [rbx + rax + 4]
cmp edx, 0xc8799269
jne 0x1400409b4
add rbx, rax
mov edx, dword [rbx]
cmp edx, 0x10
jb 0x1400409b4
mov edi, dword [rbx]
add edi, eax
xor edx, edx
test rbx, rbx
je 0x1400408d2
cmp edi, ebp
ja 0x1400408d2
mov edx, dword [rbx]
cmp rdx, 0x11
jb 0x1400409af
add eax, edx
cmp eax, ebp
ja 0x1400409af
add rdx, 0xfffffffffffffff0
cmp rdx, rsi
jae 0x140040697
jmp 0x1400407c5
cmp ecx, 2
jne 0x14004095e
lea rax, [r13 + 0x38]
add r13, 0x20
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], r13
lea rax, [rsp + 0x70]
mov qword [rsp + 0x20], rax
lea rbx, [rsp + 0x68]
lea r9, [rsp + 0x90]
mov rcx, rbx
mov rdx, rsi
mov r8, r15
call fcn.140040a30
mov rbx, qword [rbx]
jmp 0x1400407aa
movabs rax, 0xaaaaaaaaaaaaaaaa
mov qword [rbp], rax
lea rax, [r13 + 0x38]
lea r9, [r13 + 0x20]
lea r8, [r13 + 0x50]
mov qword [rsp + 0x20], rax
mov rcx, rbp
mov rdx, r15
call fcn.1400a99e0
mov rax, qword [rbp]
mov ecx, dword [r13 + 4]
or dword [rax + 0x10], ecx
jmp 0x1400407d2
cmp ecx, 3
jne 0x140040a27
lea rax, [r13 + 0x38]
add r13, 0x20
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], r13
lea rax, [rsp + 0x70]
mov qword [rsp + 0x20], rax
lea rbx, [rsp + 0x68]
lea r9, [rsp + 0x90]
mov rcx, rbx
mov rdx, rsi
mov r8, r15
call fcn.1400a9fc0
jmp 0x14004091c
call fcn.1400acfa0
xor edi, edi
jmp 0x140040500
call fcn.1400acfa0
xor edx, edx
jmp 0x1400408d2
xor ebx, ebx
jmp 0x14004049f
lea r8, [r15 + 0x18]
mov qword [r15 + 0x18], 0
xor edi, edi
xor eax, eax
jmp 0x1400405d0
xor edx, edx
jmp 0x140040654
mov rcx, r15
call fcn.140075700
mov rcx, r15
call fcn.14007a98c
jmp 0x1400407c5
int3
int3
xor ebx, ebx
jmp 0x1400407b6