Function at 0x140009060
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 r12, rcx
mov rax, qword [0x140163028]
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.140009940
mov rdi, rax
test rax, rax
je 0x1400091c9
mov ebx, dword [r12 + 0x10]
mov rax, qword [rdi]
mov rdx, qword [rax + 0x18]
xor eax, eax
lea rcx, [fcn.1400224f0]
cmp rdx, rcx
je 0x140009109
mov eax, 1
lea rcx, [method.std::__1::codecvt_char__char__struct__Mbstatet_.virtual_40]
cmp rdx, rcx
jne 0x1400093c6
cmp ebx, eax
jne 0x140009788
mov r9d, dword [r12 + 0x1c]
test r9d, r9d
je 0x140009189
mov edx, dword [r12 + 0x14]
mov r8d, dword [r12 + 0x18]
mov rax, qword [rdi]
mov rbp, qword [rax + 0x20]
lea rax, [0x1401013f0]
cmp rbp, rax
jne 0x14000976b
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 0x140009788
sar rbp, 2
lea rcx, [rbp - 1]
cmp rcx, 1
jbe 0x14000977a
cmp dword [rax + 4], edx
jne 0x140009788
mov eax, dword [rax + rbp*4 - 8]
cmp eax, r8d
jne 0x140009788
mov rcx, qword [rsp + 0xd8]
xor rcx, rsp
call fcn.140107cc0
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 [r12 + 8]
movzx ebx, byte [rdi + 0x17]
test bl, bl
jns 0x1400091dd
mov rbx, qword [rdi + 8]
mov rdi, qword [rdi]
movaps xmm0, xmmword [0x140141df0]
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 [0x14014cc10]
movapd xmmword [rsp + 0x70], xmm0
test rbx, rbx
je 0x14000926a
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 0x140009525
mov r8, rbx
mov dword [rsp + 0xc8], ebx
lea rcx, [rsp + 0x88]
mov rdx, rdi
call fcn.14010a000
lea rcx, [rsp + 0x60]
lea rdx, [rsp + 0x70]
call fcn.14000e8d0
mov rcx, qword [rsp + 0x60]
call fcn.140105074
mov rcx, rax
call fcn.140009fa0
test al, al
je 0x14000984e
mov rax, qword [r12]
mov rax, qword [rax]
lea rcx, [fcn.14000a8e0]
cmp rax, rcx
jne 0x1400093d0
mov rcx, r12
call fcn.14000a8e0
mov r15, rax
mov rcx, r15
call fcn.14000a0d0
mov rdi, rax
cmp dword [r12 + 0x1c], 0
je 0x140009710
mov dword [rsp + 0x4c], 0
mov r14, qword [0x14016c020]
test r14, r14
je 0x140009376
mov eax, dword [r12 + 0x20]
mov ecx, dword [r12 + 0x18]
mov edx, dword [r12 + 0x14]
mov r9, qword [r12 + 8]
mov r8d, dword [r12 + 0x10]
lea rbp, [rsp + 0x4c]
mov qword [rsp + 0x40], rbp
mov dword [rsp + 0x38], eax
mov qword [rsp + 0x30], rdi
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], edx
lea rbx, [rsp + 0x70]
mov rcx, r14
mov rdx, rbx
call fcn.14000bce0
mov rbx, qword [rbx]
test rbx, rbx
je 0x140009376
mov rax, qword [r12]
mov rax, qword [rax + 0x10]
lea rcx, [fcn.14000ab20]
cmp rax, rcx
jne 0x14000954e
mov rcx, rbx
call fcn.14000ac90
mov rdi, rax
mov edx, dword [rsp + 0x4c]
test edx, edx
je 0x1400090da
mov rcx, qword [r14 + 8]
cmp rdi, rbx
jne 0x140009753
call fcn.14001ad90
jmp 0x1400090da
and byte [r12 + 0x20], 0xbf
mov rax, qword [r12]
mov rax, qword [rax + 8]
lea rcx, [0x1400b0dc0]
cmp rax, rcx
jne 0x140009624
mov ecx, 0x28
call fcn.140105030
mov rbx, rax
mov rcx, qword [r12 + 8]
call fcn.14000a510
mov rcx, rbx
mov rdx, rax
mov r8, rdi
call fcn.14000a680
mov eax, dword [r12 + 0x20]
or dword [rbx + 0x10], eax
jmp 0x140009330
mov rcx, rdi
call rdx
jmp 0x140009109
lea rcx, [0x1400b0e10]
cmp rax, rcx
jne 0x1400096df
mov ecx, 0x20
call fcn.140105030
mov r15, rax
mov ebp, dword [r12 + 0x1c]
xorpd xmm0, xmm0
movupd xmmword [rax], xmm0
mov qword [rax + 0x10], 0
inc ebp
je 0x1400098f3
lea r14, [rbp*4]
mov rcx, r14
call fcn.140105030
mov rbx, rax
mov qword [r15], rax
lea rbp, [rax + rbp*4]
mov qword [r15 + 0x10], rbp
test r14, r14
je 0x14000974b
mov rcx, rbx
xor edx, edx
mov r8, r14
call fcn.14010a410
mov qword [r15 + 8], rbp
mov qword [r15 + 0x18], 0
sub rbp, rbx
sar rbp, 2
lea rax, [rbp - 1]
cmp rax, 2
jb 0x1400095f1
xorps xmm0, xmm0
cvtsi2sd xmm0, dword [r12 + 0x14]
cvtsi2sd xmm1, dword [r12 + 0x18]
add rbp, 0xfffffffffffffffd
movq xmm3, rbp
punpckldq xmm3, xmmword [0x1401494c0]
subpd xmm3, xmmword [0x1401494d0]
movapd xmm2, xmm3
unpckhpd xmm2, xmm3
addsd xmm2, xmm3
add rax, 0xfffffffffffffffe
xor ecx, ecx
movdqa xmm3, xmmword [0x1401494c0]
movapd xmm4, xmmword [0x1401494d0]
movsd xmm8, qword [0x1401367e0]
nop word cs:[rax + rax]
nop
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 [rbx + rcx*4 + 4], edx
test rax, rax
je 0x1400095e0
mov rbx, qword [r15]
add rax, 0xffffffffffffffff
add rcx, 1
jmp 0x1400094c0
lea rcx, [rsp + 0x70]
mov rdx, rdi
call fcn.1400eb480
mov r8, rbx
and r8, 0x3f
je 0x14000926a
and rbx, 0xffffffffffffffc0
add rdi, rbx
mov ebx, r8d
jmp 0x140009253
lea rcx, [0x1400b1450]
cmp rax, rcx
jne 0x1400098fc
mov rax, qword [rbx]
mov rax, qword [rax + 0x18]
lea rcx, [method.std::__1::codecvt_char__char__struct__Mbstatet_.virtual_40]
cmp rax, rcx
jne 0x140009909
mov r8, qword [r12 + 0x28]
test r8, r8
je 0x140009348
mov rdi, qword [r8 + 8]
test rdi, rdi
je 0x140009348
xor ebp, ebp
lea r15, [rbx + 0x28]
lea rsi, [rsp + 0x70]
lea r13, [rsp + 0x60]
add r8, rbp
mov qword [rsp + 0x60], r8
mov rcx, r15
mov rdx, rsi
mov r9, r13
call fcn.1400af940
mov rcx, qword [rsp + 0x70]
add rcx, 0x28
mov rdx, rdi
call fcn.140014d26
mov r8, qword [r12 + 0x28]
mov rdi, qword [r8 + rbp + 0x18]
add rbp, 0x10
test rdi, rdi
je 0x140009348
jmp 0x1400095a0
mov rbx, qword [r15]
mov rax, qword [r15 + 8]
sub rax, rbx
sar rax, 2
dec rax
mov dword [rbx + rax*4], 0x7fffffff
mov rdi, qword [r15]
mov rdx, qword [r15 + 8]
mov r8, rdx
sub r8, rdi
je 0x14000991c
mov rax, r8
shr rax, 2
mov rcx, rdi
not rcx
add rcx, rdx
jne 0x140009679
xor ebx, ebx
jmp 0x1400096ba
lea rcx, [0x1400b13f0]
cmp rax, rcx
jne 0x1400096f8
mov ecx, 0x40
call fcn.140105030
mov rbx, rax
mov rcx, qword [r12 + 8]
call fcn.14000a510
mov rcx, rbx
mov rdx, rax
mov r8, rdi
call fcn.14000a680
lea rax, [0x140141478]
mov qword [rbx], rax
lea rax, [rbx + 0x30]
xorpd xmm0, xmm0
movupd xmmword [rbx + 0x30], xmm0
mov qword [rbx + 0x28], rax
jmp 0x1400093b9
mov rdx, r8
and rdx, 0xfffffffffffffffe
xor ebx, ebx
lea rbp, [0x1401551e0]
nop dword [rax]
movzx ecx, al
movzx esi, byte [rdi + rbx]
xor esi, ecx
shr eax, 8
xor eax, dword [rbp + rsi*4]
movzx ecx, al
movzx esi, byte [rdi + rbx + 1]
xor esi, ecx
shr eax, 8
xor eax, dword [rbp + rsi*4]
add rbx, 2
cmp rdx, rbx
jne 0x140009690
test r8b, 1
je 0x1400096d6
movzx ecx, al
movzx edx, byte [rdi + rbx]
xor edx, ecx
lea rcx, [0x1401551e0]
shr eax, 8
xor eax, dword [rcx + rdx*4]
mov dword [r15 + 0x18], eax
jmp 0x1400092b5
lea rcx, [fcn.14000ca40]
cmp rax, rcx
jne 0x140009741
mov rcx, r12
call fcn.14000ca40
jmp 0x1400092b2
lea rbx, [rsp + 0x70]
mov rcx, r12
mov rdx, rbx
mov r8, rdi
call rax
mov rbx, qword [rbx]
jmp 0x1400093b9
mov rax, qword [rdi + 8]
sub rax, qword [rdi]
shr rax, 2
lea ecx, [rax - 1]
mov dword [r12 + 0x1c], ecx
mov rcx, qword [rdi]
mov ecx, dword [rcx + 4]
mov dword [r12 + 0x14], ecx
add eax, 0xfffffffe
mov rcx, qword [rdi]
mov eax, dword [rcx + rax*4]
mov dword [r12 + 0x18], eax
jmp 0x1400092cc
mov rcx, r12
call rax
jmp 0x1400092b2
mov rbp, rbx
jmp 0x14000943e
mov byte [rsp + 0x20], 0
xor r8d, r8d
mov r9d, 0xf1645913
call fcn.14001aea0
jmp 0x1400090da
mov rcx, rdi
call rbp
test al, al
jne 0x140009189
jmp 0x140009788
mov eax, 0xffffffff
cmp edx, 0xffffffff
je 0x140009180
mov rsi, qword [r12 + 8]
movzx edi, byte [rsi + 0x17]
test dil, dil
jns 0x14000979d
mov rdi, qword [rsi + 8]
mov rsi, qword [rsi]
movaps xmm0, xmmword [0x140141df0]
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 [0x14014cc10]
movapd xmmword [rsp + 0x70], xmm0
test rdi, rdi
je 0x140009826
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 0x1400098ca
mov r8, rdi
lea rcx, [rsp + 0x88]
mov dword [rcx + 0x40], edi
mov rdx, rsi
call fcn.14010a000
lea rsi, [rsp + 0x60]
lea rdx, [rsp + 0x70]
mov rcx, rsi
call fcn.14000e8d0
mov rcx, qword [rsi]
call fcn.140105074
lea rcx, str.Histogram.MismatchedConstructionArguments
mov edx, eax
call fcn.14000db10
mov eax, dword [0x14016c018]
mov ecx, dword [0x1401666f4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
lea rdi, [0x14016c000]
cmp eax, dword [rcx + 4]
jle 0x140009189
lea rcx, [0x14016c018]
call fcn.1401050e8
cmp dword [0x14016c018], 0xffffffff
jne 0x140009189
lea rax, str.dummy_histogram
mov qword [0x14016c008], rax
mov dword [0x14016c010], 0
lea rax, method.std::__1::locale::facet.virtual_0
mov qword [0x14016c000], rax
lea rcx, [0x14016c018]
call fcn.1401052d4
jmp 0x140009189
lea rcx, [rsp + 0x70]
mov rdx, rsi
call fcn.1400eb480
mov r8, rdi
and r8, 0x3f
je 0x140009826
and rdi, 0xffffffffffffffc0
add rsi, rdi
mov edi, r8d
jmp 0x140009813
xor ebx, ebx
xor ebp, ebp
jmp 0x140009442
mov rcx, r12
mov rdx, rbx
call rax
jmp 0x140009348
mov rcx, rbx
call rax
cmp eax, 5
je 0x140009348
jmp 0x140009575
xor eax, eax
jmp 0x1400096d6