// File: /workspace/github_c_makefile_star2_O0/perdisci[P]LSH/minhash.cpp
// Function: rp::MinHash::minhash_xor(std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<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&)
vector<uint32_t> MinHash::minhash_xor(const set<string>& s_set) {
    
    static boost::hash<std::string> boost_hash_fn;
    
    static std::default_random_engine rand_eng(seed);
    static std::uniform_int_distribution<uint32_t> srandom;
        
    static vector<uint32_t> rn;
        
    vector<uint32_t> mh_sig(sig_len,std::numeric_limits<uint32_t>::max());
    for(string s : s_set) {
        std::size_t boosth = boost_hash_fn(s);
        for(int i=0; i<sig_len; i++) {
            if(rn.size()<sig_len)
                rn.push_back(srandom(rand_eng));
            uint32_t h = boosth^rn[i];
            if(h < mh_sig[i]) {
                mh_sig[i] = h;
            }
        }
    }
        
    return mh_sig;
}

// Assembly:
subq $0xc8, %rsp
movq %rdi, 0x30(%rsp)
movq %rdi, %rax
movq %rax, 0x38(%rsp)
movq %rdi, 0xc0(%rsp)
movq %rsi, 0xb8(%rsp)
movq %rdx, 0xb0(%rsp)
movq 0xb8(%rsp), %rax
movq %rax, 0x40(%rsp)
cmpb $0x0, 0x2c418(%rip)     # 0x454f8
jne 0x19117
leaq 0x2c40f(%rip), %rdi     # 0x454f8
callq 0x8860
cmpl $0x0, %eax
je 0x19117
movq 0x40(%rsp), %rax
movl 0x54(%rax), %eax
movl %eax, %esi
leaq 0x2c3ec(%rip), %rdi     # 0x454f0
callq 0x19890
jmp 0x1910b
leaq 0x2c3e6(%rip), %rdi     # 0x454f8
callq 0x82c0
cmpb $0x0, 0x2c3ea(%rip)     # 0x45508
jne 0x1914b
leaq 0x2c3e1(%rip), %rdi     # 0x45508
callq 0x8860
cmpl $0x0, %eax
je 0x1914b
leaq 0x2c3c8(%rip), %rdi     # 0x45500
callq 0x194d0
jmp 0x1913f
leaq 0x2c3c2(%rip), %rdi     # 0x45508
callq 0x82c0
cmpb $0x0, 0x2c3d6(%rip)     # 0x45528
jne 0x19197
leaq 0x2c3cd(%rip), %rdi     # 0x45528
callq 0x8860
cmpl $0x0, %eax
je 0x19197
leaq 0x2c3a4(%rip), %rdi     # 0x45510
callq 0x19550
leaq -0xd308(%rip), %rdi     # 0xbe70
leaq 0x2c391(%rip), %rsi     # 0x45510
leaq 0x2c312(%rip), %rdx     # 0x45498
callq 0x8420
leaq 0x2c396(%rip), %rdi     # 0x45528
callq 0x82c0
movq 0x40(%rsp), %rax
movb $0x0, 0xa3(%rsp)
movl 0x50(%rax), %eax
movq %rax, 0x20(%rsp)
callq 0xe2b0
movl %eax, 0x9c(%rsp)
leaq 0x9b(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x196d0
movq 0x30(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rcx
leaq 0x9c(%rsp), %rdx
callq 0x196e0
jmp 0x191e8
leaq 0x9b(%rsp), %rdi
callq 0xb7c0
movq 0xb0(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rdi
callq 0x19760
movq %rax, 0x88(%rsp)
movq 0x90(%rsp), %rdi
callq 0x19790
movq %rax, 0x80(%rsp)
leaq 0x88(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x197c0
testb $0x1, %al
jne 0x1924d
jmp 0x19440
leaq 0x88(%rsp), %rdi
callq 0x197e0
movq %rax, %rsi
leaq 0x60(%rsp), %rdi
callq 0x81a0
jmp 0x19269
leaq 0x2c279(%rip), %rdi     # 0x454e9
leaq 0x60(%rsp), %rsi
callq 0x198c0
movq %rax, 0x18(%rsp)
jmp 0x19281
movq 0x18(%rsp), %rax
movq %rax, 0x58(%rsp)
movl $0x0, 0x54(%rsp)
movq 0x40(%rsp), %rcx
movl 0x54(%rsp), %eax
cmpl 0x50(%rcx), %eax
jae 0x19424
leaq 0x2c264(%rip), %rdi     # 0x45510
callq 0xb700
movq 0x40(%rsp), %rcx
movl 0x50(%rcx), %ecx
cmpq %rcx, %rax
jae 0x193a7
leaq 0x2c237(%rip), %rdi     # 0x45500
leaq 0x2c220(%rip), %rsi     # 0x454f0
callq 0x19610
movl %eax, 0x14(%rsp)
jmp 0x192db
movl 0x14(%rsp), %eax
movl %eax, 0x50(%rsp)
leaq 0x2c226(%rip), %rdi     # 0x45510
leaq 0x50(%rsp), %rsi
callq 0x19560
jmp 0x192f6
jmp 0x193a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
leaq 0x2c1e2(%rip), %rdi     # 0x454f8
callq 0x82b0
jmp 0x19473
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
leaq 0x2c1cd(%rip), %rdi     # 0x45508
callq 0x82b0
jmp 0x19473
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
leaq 0x9b(%rsp), %rdi
callq 0xb7c0
jmp 0x19473
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
jmp 0x19469
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
leaq 0x60(%rsp), %rdi
callq 0x8928
jmp 0x19469
movq 0x58(%rsp), %rax
movq %rax, 0x8(%rsp)
movslq 0x54(%rsp), %rsi
leaq 0x2c153(%rip), %rdi     # 0x45510
callq 0x19810
movq 0x30(%rsp), %rdi
movq %rax, %rcx
movq 0x8(%rsp), %rax
movl (%rcx), %ecx
xorq %rcx, %rax
movl %eax, 0x4c(%rsp)
movl 0x4c(%rsp), %eax
movl %eax, 0x10(%rsp)
movslq 0x54(%rsp), %rsi
callq 0x19810
movq %rax, %rcx
movl 0x10(%rsp), %eax
cmpl (%rcx), %eax
jae 0x19412
movq 0x30(%rsp), %rdi
movl 0x4c(%rsp), %eax
movl %eax, 0x4(%rsp)
movslq 0x54(%rsp), %rsi
callq 0x19810
movl 0x4(%rsp), %ecx
movl %ecx, (%rax)
jmp 0x19414
movl 0x54(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x54(%rsp)
jmp 0x19293
leaq 0x60(%rsp), %rdi
callq 0x8928
leaq 0x88(%rsp), %rdi
callq 0x19830
jmp 0x1922f
movb $0x1, 0xa3(%rsp)
testb $0x1, 0xa3(%rsp)
jne 0x1945c
movq 0x30(%rsp), %rdi
callq 0xbe70
movq 0x38(%rsp), %rax
addq $0xc8, %rsp
retq
movq 0x30(%rsp), %rdi
callq 0xbe70
movq 0xa8(%rsp), %rdi
callq 0x8820