Function at 0x14003d1d0
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, 0x118
movapd xmmword [rsp + 0x100], xmm8
movapd xmmword [rsp + 0xf0], xmm7
movapd xmmword [rsp + 0xe0], xmm6
mov r13, rcx
mov rax, qword [0x14016e028]
xor rax, rsp
mov qword [rsp + 0xd8], rax
mov rax, qword [rcx + 8]
movzx ecx, byte [rax + 0x17]
test cl, cl
mov rdx, qword [rax]
cmovns rdx, rax
mov qword [rsp + 0x50], rdx
cmovs rcx, qword [rax + 8]
mov qword [rsp + 0x58], rcx
lea rcx, [rsp + 0x50]
call fcn.14003dd10
mov rdi, rax
test rax, rax
je 0x14003d324
mov ebx, dword [r13 + 0x10]
mov rax, qword [rdi]
mov rdx, qword [rax + 0x18]
xor eax, eax
lea rcx, [fcn.140070460]
cmp rdx, rcx
jne 0x14003d5c3
cmp ebx, eax
jne 0x14003da52
mov r9d, dword [r13 + 0x1c]
test r9d, r9d
je 0x14003d2e4
mov edx, dword [r13 + 0x14]
mov r8d, dword [r13 + 0x18]
mov rax, qword [rdi]
mov rbp, qword [rax + 0x20]
lea rax, [0x14007a3b0]
cmp rbp, rax
jne 0x14003da35
mov rax, qword [rdi + 0x18]
mov rcx, qword [rax + 0x18]
mov rax, qword [rcx]
mov rbp, qword [rcx + 8]
sub rbp, rax
mov rcx, rbp
shr rcx, 2
add ecx, 0xffffffff
cmp ecx, r9d
jne 0x14003da52
sar rbp, 2
lea rcx, [rbp - 1]
cmp rcx, 1
jbe 0x14003da44
cmp dword [rax + 4], edx
jne 0x14003da52
mov eax, dword [rax + rbp*4 - 8]
cmp eax, r8d
jne 0x14003da52
mov rcx, qword [rsp + 0xd8]
xor rcx, rsp
call fcn.14007d5a0
mov rax, rdi
movaps xmm6, xmmword [rsp + 0xe0]
movaps xmm7, xmmword [rsp + 0xf0]
movaps xmm8, xmmword [rsp + 0x100]
add rsp, 0x118
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rdi, qword [r13 + 8]
movzx ebx, byte [rdi + 0x17]
test bl, bl
jns 0x14003d337
mov rbx, qword [rdi + 8]
mov rdi, qword [rdi]
movapd xmm6, xmmword [0x140147b90]
movapd xmmword [rsp + 0x60], xmm6
xorpd xmm0, xmm0
movupd xmmword [rsp + 0xbc], xmm0
movapd xmmword [rsp + 0xb0], xmm0
movapd xmmword [rsp + 0xa0], xmm0
movapd xmmword [rsp + 0x90], xmm0
movapd xmmword [rsp + 0x80], xmm0
movapd xmm7, xmmword [0x140156300]
movapd xmmword [rsp + 0x70], xmm7
test rbx, rbx
je 0x14003d3cc
lea eax, [rbx*8]
mov rcx, rbx
shr rcx, 0x1d
mov dword [rsp + 0x84], ecx
mov dword [rsp + 0x80], eax
mov r8, rbx
shr r8, 6
jne 0x14003d7ae
mov r8, rbx
mov dword [rsp + 0xc8], ebx
lea rcx, [rsp + 0x88]
mov rdx, rdi
call fcn.14007f530
lea rcx, [rsp + 0x60]
lea rdx, [rsp + 0x70]
call fcn.14003af30
mov rcx, qword [rsp + 0x60]
bswap rcx
call fcn.14003dbe0
mov ebx, eax
mov rdi, qword [r13 + 8]
movzx r14d, byte [rdi + 0x17]
mov rbp, rdi
test r14b, r14b
jns 0x14003d402
mov rbp, qword [rdi]
mov r14, qword [rdi + 8]
mov esi, dword [r13 + 0x20]
mov eax, dword [r13 + 0x10]
mov dword [rsp + 0x48], eax
mov r15d, dword [r13 + 0x18]
mov eax, dword [r13 + 0x14]
mov dword [rsp + 0x4c], eax
mov r12d, dword [r13 + 0x1c]
movapd xmmword [rsp + 0x60], xmm6
xorpd xmm0, xmm0
movupd xmmword [rsp + 0xbc], xmm0
movapd xmmword [rsp + 0xb0], xmm0
movapd xmmword [rsp + 0xa0], xmm0
movapd xmmword [rsp + 0x90], xmm0
movapd xmmword [rsp + 0x80], xmm0
movapd xmmword [rsp + 0x70], xmm7
test r14, r14
je 0x14003d4a5
lea eax, [r14*8]
mov rcx, r14
shr rcx, 0x1d
mov dword [rsp + 0x84], ecx
mov dword [rsp + 0x80], eax
mov r8, r14
shr r8, 6
jne 0x14003d7d7
mov r8, r14
mov dword [rsp + 0xc8], r14d
lea rcx, [rsp + 0x88]
mov rdx, rbp
call fcn.14007f530
lea r14, [rsp + 0x60]
lea rdx, [rsp + 0x70]
mov rcx, r14
call fcn.14003af30
mov rcx, qword [rsp + 0x60]
bswap rcx
mov byte [rsp + 0x38], bl
mov dword [rsp + 0x30], esi
mov eax, dword [rsp + 0x48]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], r15d
mov rdx, rdi
mov r8d, r12d
mov r9d, dword [rsp + 0x4c]
call fcn.14003e280
test bl, bl
je 0x14003db13
mov rax, qword [r13]
mov rax, qword [rax]
lea rcx, [fcn.14003ed00]
cmp rax, rcx
jne 0x14003d644
mov rcx, r13
call fcn.14003ed00
mov r15, rax
mov rcx, r15
call fcn.14003e560
mov rdi, rax
cmp dword [r13 + 0x1c], 0
je 0x14003d9e5
mov dword [rsp + 0x60], 0
mov r15, qword [0x140179c68]
test r15, r15
je 0x14003d5f7
mov eax, dword [r13 + 0x20]
mov ecx, dword [r13 + 0x18]
mov edx, dword [r13 + 0x14]
mov r9, qword [r13 + 8]
mov r8d, dword [r13 + 0x10]
mov qword [rsp + 0x40], r14
mov dword [rsp + 0x38], eax
mov qword [rsp + 0x30], rdi
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], edx
lea rdx, [rsp + 0x70]
mov rcx, r15
call fcn.14003ef50
mov rbx, qword [rsp + 0x70]
test rbx, rbx
je 0x14003d5f7
mov rax, qword [r13]
mov rax, qword [rax + 0x10]
lea rcx, [fcn.14003ef40]
cmp rax, rcx
jne 0x14003d78e
mov rcx, rbx
call fcn.14003f370
mov rdi, rax
mov edx, dword [rsp + 0x60]
test edx, edx
je 0x14003d24a
mov rcx, qword [r15 + 8]
cmp rdi, rbx
jne 0x14003da1d
call fcn.1400449c0
jmp 0x14003d24a
mov eax, 1
lea rcx, [0x14007a430]
cmp rdx, rcx
je 0x14003d267
mov eax, 2
lea rcx, [0x14007a440]
cmp rdx, rcx
je 0x14003d267
mov rcx, rdi
call rdx
jmp 0x14003d267
and byte [r13 + 0x20], 0xbf
mov rax, qword [r13]
mov rax, qword [rax + 8]
lea rcx, [0x140077770]
cmp rax, rcx
jne 0x14003d8aa
mov ecx, 0x28
call fcn.14007a994
mov rbx, rax
mov rcx, qword [r13 + 8]
call fcn.14003e410
mov rcx, rbx
mov rdx, rax
mov r8, rdi
call fcn.14003eaa0
mov eax, dword [r13 + 0x20]
or dword [rbx + 0x10], eax
jmp 0x14003d57d
lea rcx, [0x1400777c0]
cmp rax, rcx
jne 0x14003d8fe
mov rsi, r14
mov ecx, 0x20
call fcn.14007a994
mov r15, rax
mov ebp, dword [r13 + 0x1c]
xorpd xmm0, xmm0
movupd xmmword [rax], xmm0
mov qword [rax + 0x10], 0
inc ebp
je 0x14003dbbf
lea r14, [rbp*4]
mov rcx, r14
call fcn.14007a994
mov rdi, rax
mov qword [r15], rax
lea rax, [rax + rbp*4]
mov qword [r15 + 0x10], rax
mov rcx, rdi
test r14, r14
je 0x14003d6b6
xor edx, edx
mov r8, r14
call fcn.14007f940
mov rcx, rdi
add rcx, r14
mov qword [r15 + 8], rcx
mov r14, rsi
mov qword [r15 + 0x18], 0
sub rcx, rdi
sar rcx, 2
lea rax, [rcx - 1]
cmp rax, 2
jb 0x14003d811
xorps xmm0, xmm0
cvtsi2sd xmm0, dword [r13 + 0x14]
cvtsi2sd xmm1, dword [r13 + 0x18]
add rcx, 0xfffffffffffffffd
movq xmm3, rcx
punpckldq xmm3, xmmword [0x140147b70]
subpd xmm3, xmmword [0x140147b80]
movapd xmm2, xmm3
unpckhpd xmm2, xmm3
addsd xmm2, xmm3
add rax, 0xfffffffffffffffe
xor ecx, ecx
movdqa xmm3, xmmword [0x140147b70]
movapd xmm4, xmmword [0x140147b80]
movsd xmm8, qword [0x14013e8c0]
nop dword [rax]
movq xmm6, rax
punpckldq xmm6, xmm3
subpd xmm6, xmm4
movapd xmm7, xmm6
unpckhpd xmm7, xmm6
addsd xmm7, xmm6
mulsd xmm7, xmm0
movq xmm5, rcx
punpckldq xmm5, xmm3
subpd xmm5, xmm4
movapd xmm6, xmm5
unpckhpd xmm6, xmm5
addsd xmm6, xmm5
mulsd xmm6, xmm1
addsd xmm6, xmm7
divsd xmm6, xmm2
addsd xmm6, xmm8
cvttsd2si edx, xmm6
mov dword [rdi + rcx*4 + 4], edx
sub rax, 1
jb 0x14003d800
mov rdi, qword [r15]
add rcx, 1
jmp 0x14003d730
lea rcx, [fcn.14003e9e0]
cmp rax, rcx
jne 0x14003dbc8
mov rcx, r13
mov rdx, rbx
call fcn.14003e9e0
jmp 0x14003d595
lea rcx, [rsp + 0x70]
mov rdx, rdi
call fcn.140019f40
mov r8, rbx
and r8, 0x3f
je 0x14003d3cc
and rbx, 0xffffffffffffffc0
add rdi, rbx
mov ebx, r8d
jmp 0x14003d3b5
lea rcx, [rsp + 0x70]
mov rdx, rbp
call fcn.140019f40
mov r8, r14
and r8, 0x3f
je 0x14003d4a5
and r14, 0xffffffffffffffc0
add rbp, r14
mov r14d, r8d
jmp 0x14003d48d
mov rdi, qword [r15]
mov rax, qword [r15 + 8]
sub rax, rdi
sar rax, 2
dec rax
mov dword [rdi + rax*4], 0x7fffffff
mov rbx, qword [r15]
mov rdx, qword [r15 + 8]
mov r8, rdx
sub r8, rbx
je 0x14003dbb8
mov rax, r8
shr rax, 2
mov rcx, rbx
not rcx
add rcx, rdx
jne 0x14003d864
xor ebp, ebp
test r8b, 1
je 0x14003d85b
movzx ecx, al
movzx edx, byte [rbx + rbp]
xor edx, ecx
lea rcx, [0x14015e560]
shr eax, 8
xor eax, dword [rcx + rdx*4]
mov dword [r15 + 0x18], eax
jmp 0x14003d50e
mov rdx, r8
and rdx, 0xfffffffffffffffe
xor ebp, ebp
lea rdi, [0x14015e560]
nop word cs:[rax + rax]
nop
movzx ecx, al
movzx esi, byte [rbx + rbp]
xor esi, ecx
shr eax, 8
xor eax, dword [rdi + rsi*4]
movzx ecx, al
movzx esi, byte [rbx + rbp + 1]
xor esi, ecx
shr eax, 8
xor eax, dword [rdi + rsi*4]
add rbp, 2
cmp rdx, rbp
jne 0x14003d880
jmp 0x14003d83f
lea rcx, [0x140077a00]
cmp rax, rcx
jne 0x14003d9cd
mov ecx, 0x40
call fcn.14007a994
mov rbx, rax
mov rcx, qword [r13 + 8]
call fcn.14003e410
mov rcx, rbx
mov rdx, rax
mov r8, rdi
call fcn.14003eaa0
lea rax, [0x14014a428]
mov qword [rbx], rax
lea rax, [rbx + 0x30]
xorpd xmm0, xmm0
movupd xmmword [rbx + 0x30], xmm0
mov qword [rbx + 0x28], rax
jmp 0x14003d638
lea rcx, [0x140077a60]
cmp rax, rcx
jne 0x14003da13
mov ecx, 0x20
call fcn.14007a994
mov r15, rax
mov ecx, 0x10
call fcn.14007a994
mov qword [r15], rax
lea rcx, [rax + 0x10]
mov qword [r15 + 0x10], rcx
xorpd xmm0, xmm0
movupd xmmword [rax], xmm0
mov qword [r15 + 8], rcx
mov qword [r15 + 0x18], 0
mov dword [rax + 4], 1
mov rax, qword [r15]
mov dword [rax + 8], 2
mov rax, qword [r15 + 8]
mov dword [rax - 4], 0x7fffffff
mov rbx, qword [r15]
mov rdx, qword [r15 + 8]
mov r8, rdx
sub r8, rbx
je 0x14003dbb8
mov rax, r8
shr rax, 2
mov rcx, rbx
not rcx
add rcx, rdx
je 0x14003d83d
mov rdx, r8
and rdx, 0xfffffffffffffffe
xor ebp, ebp
lea rdi, [0x14015e560]
nop dword [rax]
movzx ecx, al
movzx esi, byte [rbx + rbp]
xor esi, ecx
shr eax, 8
xor eax, dword [rdi + rsi*4]
movzx ecx, al
movzx esi, byte [rbx + rbp + 1]
xor esi, ecx
shr eax, 8
xor eax, dword [rdi + rsi*4]
add rbp, 2
cmp rdx, rbp
jne 0x14003d9a0
jmp 0x14003d83f
lea rbx, [rsp + 0x70]
mov rcx, r13
mov rdx, rbx
mov r8, rdi
call rax
mov rbx, qword [rbx]
jmp 0x14003d638
mov rax, qword [rdi + 8]
sub rax, qword [rdi]
shr rax, 2
lea ecx, [rax - 1]
mov dword [r13 + 0x1c], ecx
mov rcx, qword [rdi]
mov ecx, dword [rcx + 4]
mov dword [r13 + 0x14], ecx
add eax, 0xfffffffe
mov rcx, qword [rdi]
mov eax, dword [rcx + rax*4]
mov dword [r13 + 0x18], eax
jmp 0x14003d524
mov rcx, r13
call rax
jmp 0x14003d50b
mov byte [rsp + 0x20], 0
xor r8d, r8d
mov r9d, 0xf1645913
call fcn.1400ab020
jmp 0x14003d24a
mov rcx, rdi
call rbp
test al, al
jne 0x14003d2e4
jmp 0x14003da52
mov eax, 0xffffffff
cmp edx, 0xffffffff
je 0x14003d2db
mov rsi, qword [r13 + 8]
movzx edi, byte [rsi + 0x17]
test dil, dil
jns 0x14003da66
mov rdi, qword [rsi + 8]
mov rsi, qword [rsi]
movaps xmm0, xmmword [0x140147b90]
movaps xmmword [rsp + 0x60], xmm0
xorps xmm0, xmm0
movups xmmword [rsp + 0xbc], xmm0
movaps xmmword [rsp + 0xb0], xmm0
movaps xmmword [rsp + 0xa0], xmm0
movaps xmmword [rsp + 0x90], xmm0
movaps xmmword [rsp + 0x80], xmm0
movapd xmm0, xmmword [0x140156300]
movapd xmmword [rsp + 0x70], xmm0
test rdi, rdi
je 0x14003daef
lea eax, [rdi*8]
mov rcx, rdi
shr rcx, 0x1d
mov dword [rsp + 0x84], ecx
mov dword [rsp + 0x80], eax
mov r8, rdi
shr r8, 6
jne 0x14003db8f
mov r8, rdi
lea rcx, [rsp + 0x88]
mov dword [rcx + 0x40], edi
mov rdx, rsi
call fcn.14007f530
lea rsi, [rsp + 0x60]
lea rdx, [rsp + 0x70]
mov rcx, rsi
call fcn.14003af30
mov rdx, qword [rsi]
bswap rdx
lea rcx, [0x140156320]
call fcn.1400410d0
mov eax, dword [0x140179c60]
mov ecx, dword [0x1401719a0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
lea rdi, [0x140179c48]
cmp eax, dword [rcx + 4]
jle 0x14003d2e4
lea rcx, [0x140179c60]
call fcn.14007b4e8
cmp dword [0x140179c60], 0xffffffff
jne 0x14003d2e4
lea rax, str.dummy_histogram
mov qword [0x140179c50], rax
mov dword [0x140179c58], 0
lea rax, [0x14014a7a0]
mov qword [0x140179c48], rax
lea rcx, [0x140179c60]
call fcn.14007ac34
jmp 0x14003d2e4
lea rcx, [rsp + 0x70]
mov rdx, rsi
call fcn.140019f40
mov r8, rdi
and r8, 0x3f
je 0x14003daef
and rdi, 0xffffffffffffffc0
add rsi, rdi
mov edi, r8d
jmp 0x14003dadc
xor eax, eax
jmp 0x14003d85b
xor edi, edi
xor ecx, ecx
jmp 0x14003d6ba
mov rcx, r13
mov rdx, rbx
call rax
jmp 0x14003d595