// File: /workspace/github_cpp_makefile_star2_O2/fei3189[P]PLSI/./plsi.hpp
// Function: PLSI::_preprocess(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&)
void _preprocess(const vector<string> &docs, int k, const vector<string> &_w_stop) {
        set<string> w_stop;
        n_wd.resize(docs.size());
        vector<vector<int> > _tmp_n_wd;
        for (int i = 0; i < _w_stop.size(); ++i) {
            w_stop.insert(_w_stop[i]);
        }
        for (int i = 0; i < docs.size(); ++i) {
            vector<string> tokens;
            _split(tokens, docs[i]);
            map<int, int> id2freq;
            for (int j = 0; j < tokens.size(); ++j) {
                if (w_stop.find(tokens[j]) != w_stop.end()) {
                    continue;
                }
                if (word2id.find(tokens[j]) == word2id.end()) {
                    int size = word2id.size();
                    word2id[tokens[j]] = size;
                    id2word[size] = tokens[j];
                }
                int id = word2id[tokens[j]];
                id2freq[id]++;
                _all_words++;
            }
            for (map<int, int>::iterator it = id2freq.begin(); it != id2freq.end(); ++it)
                n_wd[i].push_back(Index(it->first, it->second));
        }

        c_doc = docs.size();
        c_word = word2id.size();
        k_z = k;
        _resize1d(p_z, k);
        _resize2d(p_wz, c_word, k);
        _resize2d(p_dz, c_doc, k);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rcx, %rbx
leaq 0xa0(%rsp), %rax
andl $0x0, (%rax)
movl %edx, 0xc(%rsp)
andq $0x0, 0x8(%rax)
movq %rsi, %rcx
movq %rdi, %rbp
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x48(%rdi), %r12
movq 0x8(%rsi), %rsi
movq %rcx, 0x38(%rsp)
subq (%rcx), %rsi
sarq $0x5, %rsi
movq %r12, %rdi
callq 0x34d6
xorps %xmm0, %xmm0
andq $0x0, 0x90(%rsp)
movaps %xmm0, 0x80(%rsp)
xorl %r14d, %r14d
leaq 0x98(%rsp), %r15
xorl %r13d, %r13d
movq (%rbx), %rsi
movq 0x8(%rbx), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %r13, %rax
jbe 0x2f96
addq %r14, %rsi
movq %r15, %rdi
callq 0x3a5a
incq %r13
addq $0x20, %r14
jmp 0x2f6f
leaq 0x58(%rsp), %r14
leaq 0x70(%rbp), %r13
leaq 0x78(%rbp), %rax
movq %rax, 0x48(%rsp)
leaq 0xa0(%rbp), %rax
movq %rax, 0x40(%rsp)
xorl %ecx, %ecx
leaq 0x10(%rsp), %rbx
movq %rsp, %r15
movq %rbp, 0x30(%rsp)
movq 0x38(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rax
subq %rdx, %rax
sarq $0x5, %rax
cmpq %rcx, %rax
jbe 0x3151
andq $0x0, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq %rcx, 0x28(%rsp)
movq %rcx, %rax
shlq $0x5, %rax
addq %rax, %rdx
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x350c
andl $0x0, 0x58(%rsp)
andq $0x0, 0x60(%rsp)
movq %r14, 0x68(%rsp)
movq %r14, 0x70(%rsp)
andq $0x0, 0x78(%rsp)
xorl %ebx, %ebx
xorl %r14d, %r14d
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %r14, %rax
jbe 0x30ef
addq %rbx, %rsi
leaq 0x98(%rsp), %rdi
callq 0x3c4c
leaq 0xa0(%rsp), %rcx
cmpq %rcx, %rax
jne 0x30e3
movq 0x10(%rsp), %rsi
addq %rbx, %rsi
movq %r13, %rdi
callq 0x3cc2
cmpq 0x48(%rsp), %rax
jne 0x30b9
movl 0x98(%rbp), %ebp
movl %ebp, (%rsp)
movq 0x10(%rsp), %rsi
addq %rbx, %rsi
movq %r13, %rdi
callq 0x35a6
movl %ebp, (%rax)
movq 0x10(%rsp), %rbp
movq 0x40(%rsp), %rdi
movq %r15, %rsi
callq 0x360c
addq %rbx, %rbp
movq %rax, %rdi
movq %rbp, %rsi
callq 0x2100
movq 0x30(%rsp), %rbp
movq 0x10(%rsp), %rsi
addq %rbx, %rsi
movq %r13, %rdi
callq 0x35a6
movl (%rax), %eax
movl %eax, (%rsp)
leaq 0x50(%rsp), %rdi
movq %r15, %rsi
callq 0x365a
incl (%rax)
incl 0xd0(%rbp)
incq %r14
addq $0x20, %rbx
jmp 0x3027
movq 0x68(%rsp), %rbp
imulq $0x18, 0x28(%rsp), %rbx
leaq 0x58(%rsp), %r14
cmpq %r14, %rbp
je 0x3128
movq (%r12), %rdi
addq %rbx, %rdi
movq 0x20(%rbp), %rax
movq %rax, (%rsp)
movq %r15, %rsi
callq 0x45c0
movq %rbp, %rdi
callq 0x2130
movq %rax, %rbp
jmp 0x30ff
leaq 0x50(%rsp), %rdi
callq 0x473e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x288c
movq 0x28(%rsp), %rcx
incq %rcx
movq 0x30(%rsp), %rbp
jmp 0x2fc3
movl %eax, 0x64(%rbp)
movl 0x98(%rbp), %eax
movl %eax, 0x60(%rbp)
movl 0xc(%rsp), %ebx
movl %ebx, 0x68(%rbp)
leaq 0x30(%rbp), %rsi
movq %rbp, %rdi
movl %ebx, %edx
callq 0x36a8
movl 0x60(%rbp), %edx
movq %rbp, %rdi
movq %rbp, %rsi
movl %ebx, %ecx
callq 0x3736
leaq 0x18(%rbp), %rsi
movl 0x64(%rbp), %edx
movq %rbp, %rdi
movl %ebx, %ecx
callq 0x3736
leaq 0x80(%rsp), %rdi
callq 0x3788
leaq 0x98(%rsp), %rdi
callq 0x4d38
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x31fc
jmp 0x31cb
movq %rax, %rbx
jmp 0x31e5
movq %rax, %rbx
jmp 0x31ef
jmp 0x31d8
jmp 0x31d8
jmp 0x31d8
jmp 0x31d8
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x473e
leaq 0x10(%rsp), %rdi
callq 0x288c
leaq 0x80(%rsp), %rdi
callq 0x3788
leaq 0x98(%rsp), %rdi
callq 0x4d38
movq %rbx, %rdi
callq 0x22b0
nop