// File: /workspace/github_cpp_makefile_star2_O2/jkom-cloud[P]mmseg/src/Mmseg.h
// Function: mmsegSpace::MMSeg::Chunk::Chunk(std::vector<std::pair<__gnu_cxx::__normal_iterator<char16_t const*, std::__cxx11::basic_string<char16_t, std::char_traits<char16_t>, std::allocator<char16_t>>>, __gnu_cxx::__normal_iterator<char16_t const*, std::__cxx11::basic_string<char16_t, std::char_traits<char16_t>, std::allocator<char16_t>>>>, std::allocator<std::pair<__gnu_cxx::__normal_iterator<char16_t const*, std::__cxx11::basic_string<char16_t, std::char_traits<char16_t>, std::allocator<char16_t>>>, __gnu_cxx::__normal_iterator<char16_t const*, std::__cxx11::basic_string<char16_t, std::char_traits<char16_t>, std::allocator<char16_t>>>>>>, std::vector<int, std::allocator<int>>, std::unordered_map<char16_t, int, std::hash<char16_t>, std::equal_to<char16_t>, std::allocator<std::pair<char16_t const, int>>> const&)
Chunk(std::vector<StringP> words, std::vector<int> inDict, const std::unordered_map<Char, int>& chars) : inDict_(std::move(inDict)),words_(std::move(words)) {
          length_ = std::accumulate(words_.begin(), words_.end(), size_t(0), [&](size_t n, const StringP& w) { return n + length(w); });
          mean_ = float(length_) / words_.size();
          var_ = - std::accumulate(words_.begin(), words_.end(), float(0), [&](size_t n, const StringP& w) { return  n + (length(w) - mean_) * (length(w) - mean_); }) / words_.size();

          // sum of degree of morphemic freedom of one-character words
          for (auto& w: words_) {
            if (length(w) != 1) continue;
            auto it = chars.find(*w.first);
            if (it != chars.end())
              degree_ += log(float(it->second));
          }
        }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
vmovups (%rdx), %xmm0
movq %rdi, %rbx
movq %rcx, %r14
vmovups %xmm0, (%rdi)
vxorps %xmm0, %xmm0, %xmm0
movq 0x10(%rdx), %rax
movq %rax, 0x10(%rdi)
vmovups %xmm0, (%rdx)
andq $0x0, 0x10(%rdx)
vmovups (%rsi), %xmm1
vmovups %xmm1, 0x18(%rdi)
movq 0x10(%rsi), %rax
movq %rax, 0x28(%rdi)
vmovups %xmm0, (%rsi)
andq $0x0, 0x10(%rsi)
vmovups %xmm0, 0x30(%rdi)
andl $0x0, 0x40(%rdi)
movq 0x18(%rdi), %rdi
movq 0x20(%rbx), %rsi
xorl %edx, %edx
callq 0x4479
movq %rax, 0x30(%rbx)
vcvtusi2ss %rax, %xmm2, %xmm0
movq 0x20(%rbx), %rsi
movq 0x18(%rbx), %rdi
movq %rsi, %rax
subq %rdi, %rax
sarq $0x4, %rax
vcvtusi2ss %rax, %xmm2, %xmm1
vdivss %xmm1, %xmm0, %xmm0
vmovss %xmm0, 0x38(%rbx)
vxorps %xmm0, %xmm0, %xmm0
movq %rbx, %rdx
callq 0x4495
vxorps 0x1d26(%rip){1to4}, %xmm0, %xmm0 # 0x6118
movq 0x20(%rbx), %r12
movq 0x18(%rbx), %r15
movq %r12, %rax
subq %r15, %rax
sarq $0x4, %rax
vcvtusi2ss %rax, %xmm2, %xmm1
vdivss %xmm1, %xmm0, %xmm0
vmovss %xmm0, 0x3c(%rbx)
cmpq %r12, %r15
je 0x444f
movq (%r15), %rsi
movq 0x8(%r15), %rax
subq %rsi, %rax
cmpq $0x2, %rax
jne 0x4449
movq %r14, %rdi
callq 0x44f6
testq %rax, %rax
je 0x4449
vcvtsi2ssl 0xc(%rax), %xmm2, %xmm0
callq 0x2380
vaddss 0x40(%rbx), %xmm0, %xmm0
vmovss %xmm0, 0x40(%rbx)
addq $0x10, %r15
jmp 0x4413
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0x445d
leaq 0x18(%rbx), %rdi
movq %rax, %r14
callq 0x3ef2
movq %rbx, %rdi
callq 0x3f00
movq %r14, %rdi
callq 0x2350