// File: /workspace/github_cpp_makefile_star2_O1/medvedevgroup[P]varmatch/src/wholegenome.cpp
// Function: WholeGenome::MatchingSingleClusterDirectly(int, int, int, int, int, std::vector<DiploidVariant, std::allocator<DiploidVariant>>&)
bool WholeGenome::MatchingSingleClusterDirectly(int cluster_index, 
    int thread_index, 
    int mode_index, 
    int threshold_index, 
    int chr_id,
    vector<DiploidVariant> & variant_list){
    //cout << "direct match : " << variant_list.size() << endl;
    map<int, vector<DiploidVariant>> separate_var_list_map[2];
    for (int i = 0; i < variant_list.size(); i++) {
        int flag = 0;
        if (variant_list[i].flag) flag = 1; // flag indicate if the variant is from ref set(0) or query set(1)
        int pos = variant_list[i].pos;

        if(separate_var_list_map[flag].find(pos) == separate_var_list_map[flag].end()){
            separate_var_list_map[flag][pos] = vector<DiploidVariant>({variant_list[i]});
        }else{
            separate_var_list_map[flag][pos].push_back(variant_list[i]);
        }
    }

    //int match_mode = GetMatchmodeFromModeIndex(mode_index);

    for(auto baseline_it = separate_var_list_map[0].begin(); baseline_it != separate_var_list_map[0].end(); ++baseline_it){
        int pos = baseline_it->first;
        if(separate_var_list_map[1].find(pos) != separate_var_list_map[1].end()){
            vector<DiploidVariant> baseline_var_list = baseline_it->second;
            vector<DiploidVariant> query_var_list = separate_var_list_map[1][pos];
            for(auto baseline_var : baseline_var_list){
                for(auto query_var : query_var_list){
                    if(baseline_var == query_var){
                        DiploidVariant tv = baseline_var;
                        string match_record = chrname_by_chrid[chr_id] + "\t" + to_string(tv.pos+1) + "\t" + tv.ref + "\t" + tv.alts[0];
                        if(tv.multi_alts) match_record += "/" + tv.alts[1];
                        match_record += "\t.\t.\t.\t.\t.\n";
                        int edit_distance = CalculateEditDistance(tv, 0, 0);
                        match_records_by_mode_by_thread[thread_index][mode_index]->push_back(match_record);
                        baseline_total_match_num[thread_index][threshold_index]->at(mode_index)++;
                        query_total_match_num[thread_index][threshold_index]->at(mode_index)++;

                        baseline_total_edit_distance[thread_index][threshold_index]->at(mode_index) += edit_distance;
                        query_total_edit_distance[thread_index][threshold_index]->at(mode_index) += edit_distance;
                        break;
                    }
                }
            }
        }
    } 
    return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2d8, %rsp            # imm = 0x2D8
movl %r8d, 0x30(%rsp)
movl %ecx, 0x8(%rsp)
movl %edx, 0x98(%rsp)
movq %rdi, 0x120(%rsp)
movq 0x310(%rsp), %r15
movl %r9d, 0xc4(%rsp)
leaq 0x248(%rsp), %rsi
xorl %eax, %eax
xorl %ecx, %ecx
leaq (%rsi,%rcx), %rdx
movl $0x0, 0x248(%rsp,%rcx)
movq %rax, 0x250(%rsp,%rcx)
movq %rdx, 0x258(%rsp,%rcx)
movq %rdx, 0x260(%rsp,%rcx)
movq %rax, 0x268(%rsp,%rcx)
addq $0x30, %rcx
cmpq $0x60, %rcx
jne 0x1b9ef
movq (%r15), %rbp
cmpq %rbp, 0x8(%r15)
je 0x1bc5d
leaq 0xd0(%rsp), %r14
xorl %ebx, %ebx
imulq $0x58, %rbx, %r13
cmpb $0x0, 0x4c(%rbp,%r13)
movl (%rbp,%r13), %eax
movl %eax, 0x78(%rsp)
leaq 0x240(%rsp), %r12
leaq 0x270(%rsp), %rcx
cmovneq %rcx, %r12
leaq 0x250(%rsp), %rcx
leaq 0x280(%rsp), %rdx
cmovneq %rdx, %rcx
movq (%rcx), %rsi
leaq 0x248(%rsp), %rcx
leaq 0x278(%rsp), %rdx
cmovneq %rdx, %rcx
movq %rcx, %rdx
testq %rsi, %rsi
je 0x1bab3
movq %rcx, %rdx
xorl %edi, %edi
cmpl %eax, 0x20(%rsi)
setl %dil
cmovgeq %rsi, %rdx
movq 0x10(%rsi,%rdi,8), %rsi
testq %rsi, %rsi
jne 0x1ba9c
movq %rcx, %rsi
cmpq %rcx, %rdx
je 0x1bac5
cmpl 0x20(%rdx), %eax
cmovlq %rcx, %rdx
movq %rdx, %rsi
cmpq %rcx, %rsi
je 0x1baea
movq %r12, %rdi
leaq 0x78(%rsp), %rsi
callq 0x2988a
addq (%r15), %r13
movq %rax, %rdi
movq %r13, %rsi
callq 0x28b1a
jmp 0x1bc35
addq %r13, %rbp
movl (%rbp), %eax
movl %eax, 0xc8(%rsp)
leaq 0xe0(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x112ce
leaq 0x28(%rbp), %rsi
leaq 0xf0(%rsp), %rdi
callq 0x289ec
movq 0x50(%rbp), %rax
movq %rax, 0x48(%r14)
movups 0x40(%rbp), %xmm0
movups %xmm0, 0x38(%r14)
movl $0x1, %edx
leaq 0x168(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
leaq 0x10(%rsp), %rcx
callq 0x29842
movq %r12, %rdi
leaq 0x78(%rsp), %rsi
callq 0x2988a
xorps %xmm0, %xmm0
movaps %xmm0, 0x1c0(%rsp)
movq $0x0, 0x1d0(%rsp)
movq (%rax), %rcx
movups 0x8(%rax), %xmm0
movq 0x168(%rsp), %rdx
movq %rdx, (%rax)
movq 0x170(%rsp), %rdx
movq %rdx, 0x8(%rax)
movq 0x178(%rsp), %rdx
movq %rdx, 0x10(%rax)
movq 0x1c0(%rsp), %rax
movq 0x1c8(%rsp), %rdx
movq 0x1d0(%rsp), %rsi
movq %rcx, 0x1c0(%rsp)
movups %xmm0, 0x1c8(%rsp)
movq %rax, 0x168(%rsp)
movq %rdx, 0x170(%rsp)
movq %rsi, 0x178(%rsp)
leaq 0x1c0(%rsp), %rdi
callq 0x28958
leaq 0x168(%rsp), %rdi
callq 0x28958
leaq 0xf0(%rsp), %rdi
callq 0xe7ca
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x1bc35
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x5340
incq %rbx
movq (%r15), %rbp
movq 0x8(%r15), %rax
subq %rbp, %rax
sarq $0x3, %rax
movabsq $0x2e8ba2e8ba2e8ba3, %rcx # imm = 0x2E8BA2E8BA2E8BA3
imulq %rcx, %rax
cmpq %rbx, %rax
ja 0x1ba3f
movq 0x258(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
movq 0x120(%rsp), %rax
je 0x1c5ce
leaq 0x278(%rsp), %r8
leaq 0x1c8(%rsp), %r12
leaq 0x170(%rsp), %rbp
addq $0xb8, %rax
movq %rax, 0x238(%rsp)
movslq 0x98(%rsp), %r13
movslq 0x8(%rsp), %rax
movq %rax, 0x8(%rsp)
movslq 0x30(%rsp), %r14
movq %r13, 0x98(%rsp)
movq %r14, 0x230(%rsp)
movl 0x20(%rdi), %eax
movl %eax, 0xc0(%rsp)
movq 0x280(%rsp), %rdx
movq %r8, %rcx
testq %rdx, %rdx
je 0x1bcff
movq %r8, %rcx
xorl %esi, %esi
cmpl %eax, 0x20(%rdx)
setl %sil
cmovgeq %rdx, %rcx
movq 0x10(%rdx,%rsi,8), %rdx
testq %rdx, %rdx
jne 0x1bce8
movq %r8, %rdx
cmpq %r8, %rcx
je 0x1bd11
cmpl 0x20(%rcx), %eax
cmovlq %r8, %rcx
movq %rcx, %rdx
cmpq %r8, %rdx
je 0x1c5ad
movq %rdi, 0x218(%rsp)
leaq 0x28(%rdi), %rsi
leaq 0x2c0(%rsp), %rdi
callq 0x298ee
leaq 0x270(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x2988a
leaq 0x2a8(%rsp), %rdi
movq %rax, %rsi
callq 0x298ee
movq 0x2c0(%rsp), %r15
movq 0x2c8(%rsp), %rax
movq %rax, 0x220(%rsp)
cmpq %rax, %r15
je 0x1c58b
movl (%r15), %eax
movl %eax, 0xc8(%rsp)
leaq 0xe0(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0x8(%r15), %rsi
movq 0x10(%r15), %rdx
addq %rsi, %rdx
leaq 0xd0(%rsp), %rdi
callq 0x112ce
leaq 0x28(%r15), %rsi
leaq 0xf0(%rsp), %rdi
callq 0x289ec
movq 0x50(%r15), %rax
leaq 0xd0(%rsp), %rcx
movq %rax, 0x48(%rcx)
movq %r15, 0x228(%rsp)
movups 0x40(%r15), %xmm0
movups %xmm0, 0x38(%rcx)
movq 0x2a8(%rsp), %r15
movq 0x2b0(%rsp), %rax
movq %rax, 0x30(%rsp)
cmpq %rax, %r15
je 0x1c53f
movl (%r15), %eax
movl %eax, 0x1c0(%rsp)
leaq 0x1d8(%rsp), %rax
movq %rax, 0x1c8(%rsp)
movq 0x8(%r15), %rsi
movq 0x10(%r15), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x112ce
leaq 0x28(%r15), %rsi
leaq 0x1e8(%rsp), %rdi
callq 0x289ec
movq 0x50(%r15), %rax
movq %rax, 0x48(%r12)
movups 0x40(%r15), %xmm0
movups %xmm0, 0x38(%r12)
leaq 0xc8(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x28f46
testb %al, %al
je 0x1bf76
movl %eax, %ebx
movl 0xc8(%rsp), %eax
movl %eax, 0x168(%rsp)
leaq 0x180(%rsp), %rax
movq %rax, 0x170(%rsp)
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0x112ce
leaq 0x190(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x289ec
leaq 0xd0(%rsp), %rcx
movq 0x48(%rcx), %rax
movq %rax, 0x48(%rbp)
movups 0x38(%rcx), %xmm0
movups %xmm0, 0x38(%rbp)
movq 0x238(%rsp), %rdi
leaq 0xc4(%rsp), %rsi
callq 0x28988
leaq 0x38(%rsp), %r12
leaq 0x48(%rsp), %rcx
movq %rcx, 0x38(%rsp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x112ce
movq %r12, %rdi
leaq 0x156af(%rip), %rsi     # 0x315c1
callq 0x5630
movl 0x168(%rsp), %r13d
incl %r13d
movl %r13d, %r14d
negl %r14d
cmovsl %r13d, %r14d
movl $0x1, %ebp
cmpl $0xa, %r14d
movl $0xd1b71759, %edx       # imm = 0xD1B71759
jb 0x1bfc3
movl $0x4, %ebp
movl %r14d, %eax
cmpl $0x63, %eax
jbe 0x1bfbc
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x1bfc1
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x1bfc3
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebp
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x1bf48
addl $-0x3, %ebp
jmp 0x1bfc3
leaq 0x1e8(%rsp), %rdi
callq 0xe7ca
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0x1bfa8
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x5340
addq $0x58, %r15
cmpq 0x30(%rsp), %r15
jne 0x1bdfb
jmp 0x1c53f
addl $-0x2, %ebp
jmp 0x1bfc3
decl %ebp
shrl $0x1f, %r13d
leal (%rbp,%r13), %esi
leaq 0xb0(%rsp), %rax
movq %rax, 0xa0(%rsp)
leaq 0xa0(%rsp), %rdi
movl $0x2d, %edx
callq 0x53b0
movl %r13d, %edi
addq 0xa0(%rsp), %rdi
movl %ebp, %esi
movl %r14d, %edx
callq 0xe3b6
movq 0x38(%rsp), %rcx
movl $0xf, %esi
leaq 0x48(%rsp), %rax
cmpq %rax, %rcx
je 0x1c01c
movq 0x48(%rsp), %rsi
movq 0x40(%rsp), %r8
movq 0xa8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x1c056
movl $0xf, %esi
leaq 0xb0(%rsp), %rdi
cmpq %rdi, 0xa0(%rsp)
je 0x1c051
movq 0xb0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x1c06a
movq 0xa0(%rsp), %rsi
leaq 0x38(%rsp), %rdi
callq 0x50f0
jmp 0x1c07b
leaq 0xa0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5380
leaq 0x68(%rsp), %rsi
movq %rsi, 0x58(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x1c0a0
movq %rdx, 0x58(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x68(%rsp)
jmp 0x1c0a6
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x60(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x58(%rsp), %rdi
leaq 0x154f2(%rip), %rsi     # 0x315c1
callq 0x5630
leaq 0x138(%rsp), %rsi
movq %rsi, 0x128(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1c108
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x1c10e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x130(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
leaq 0x128(%rsp), %rdi
callq 0x50f0
leaq 0x158(%rsp), %rsi
movq %rsi, 0x148(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1c17a
movq %rdx, 0x148(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x158(%rsp)
jmp 0x1c180
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x150(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x148(%rsp), %rdi
leaq 0x15417(%rip), %rsi     # 0x315c1
callq 0x5630
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1c1d7
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x1c1dd
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x190(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x10(%rsp), %rdi
callq 0x50f0
leaq 0x88(%rsp), %rsi
movq %rsi, 0x78(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1c23c
movq %rdx, 0x78(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x88(%rsp)
jmp 0x1c242
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x80(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1c279
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x1c29e
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x1c2c3
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x1c2df
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x1c304
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x1c320
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x5340
cmpb $0x1, 0x1a9(%rsp)
jne 0x1c377
movq 0x190(%rsp), %rdx
addq $0x20, %rdx
leaq 0x10(%rsp), %rdi
leaq 0x15281(%rip), %rsi     # 0x315c3
callq 0xce96
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x78(%rsp), %rdi
callq 0x50f0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1c377
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x78(%rsp), %rdi
leaq 0x15242(%rip), %rsi     # 0x315c5
callq 0x5630
movq 0x120(%rsp), %r12
movq %r12, %rdi
leaq 0x168(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x164bc
movq 0x8(%rsp), %r13
movq 0x98(%rsp), %r14
movl %eax, %ebp
movq 0x178(%r12), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%r13,8), %rdi
leaq 0x78(%rsp), %rsi
callq 0x10ca6
movq 0x180(%r12), %rax
movq (%rax,%r14,8), %rax
movq 0x230(%rsp), %rdi
movq (%rax,%rdi,8), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %r13, %rdx
movq %r13, %rsi
jbe 0x1c601
movq %r14, %r13
movq %rdi, %r14
incl (%rax,%rsi,4)
movq 0x188(%r12), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%rdi,8), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
movq 0x8(%rsp), %rsi
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rsi, %rdx
jbe 0x1c601
incl (%rax,%rsi,4)
movq 0x190(%r12), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r14,8), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
movq 0x8(%rsp), %rsi
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rsi, %rdx
jbe 0x1c601
addl %ebp, (%rax,%rsi,4)
movq 0x198(%r12), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r14,8), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
movq 0x8(%rsp), %rsi
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rsi, %rdx
jbe 0x1c601
addl %ebp, (%rax,%rsi,4)
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x1c4b7
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x190(%rsp), %rdi
callq 0xe7ca
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
leaq 0x1c8(%rsp), %r12
leaq 0x170(%rsp), %rbp
je 0x1c4f9
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x1e8(%rsp), %rdi
callq 0xe7ca
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0x1c52b
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x5340
addq $0x58, %r15
cmpq 0x30(%rsp), %r15
sete %al
orb %al, %bl
je 0x1bdfb
leaq 0xf0(%rsp), %rdi
callq 0xe7ca
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x1c571
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x228(%rsp), %r15
addq $0x58, %r15
cmpq 0x220(%rsp), %r15
jne 0x1bd79
leaq 0x2a8(%rsp), %rdi
callq 0x28958
leaq 0x2c0(%rsp), %rdi
callq 0x28958
movq 0x218(%rsp), %rdi
callq 0x5250
movq %rax, %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
leaq 0x278(%rsp), %r8
jne 0x1bccb
movl $0x30, %ebx
leaq (%rsp,%rbx), %rdi
addq $0x240, %rdi            # imm = 0x240
callq 0x2aedc
addq $-0x30, %rbx
cmpq $-0x30, %rbx
jne 0x1c5d3
movb $0x1, %al
addq $0x2d8, %rsp            # imm = 0x2D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x154bc(%rip), %rdi     # 0x31ac4
xorl %eax, %eax
callq 0x5490
movq %rax, %r15
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x1c894
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x1c894
jmp 0x1c673
movq %rax, %r15
leaq 0x168(%rsp), %rdi
callq 0x28958
jmp 0x1c657
movq %rax, %r15
leaq 0xc8(%rsp), %rdi
callq 0x28b44
jmp 0x1c894
jmp 0x1c673
movq %rax, %r15
jmp 0x1c887
movq %rax, %r15
jmp 0x1c894
movq %rax, %r15
jmp 0x1c87a
movq %rax, %r15
jmp 0x1c855
movq %rax, %r15
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1c7c2
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x1c7c2
jmp 0x1c7bf
movq %rax, %r15
jmp 0x1c74a
movq %rax, %r15
jmp 0x1c7f1
movq %rax, %r15
jmp 0x1c6f6
jmp 0x1c6cf
movq %rax, %r15
jmp 0x1c790
movq %rax, %r15
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1c6f6
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x1c725
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x1c725
jmp 0x1c7bf
movq %rax, %r15
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x1c74a
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x1c76b
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x1c76b
movq %rax, %r15
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x1c790
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x1c7e4
movq 0x48(%rsp), %rsi
jmp 0x1c7dc
movq %rax, %r15
jmp 0x1c816
movq %rax, %r15
jmp 0x1c823
movq %rax, %r15
jmp 0x1c848
jmp 0x1c7bf
movq %rax, %r15
jmp 0x1c7e4
movq %rax, %r15
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x1c7e4
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x190(%rsp), %rdi
callq 0xe7ca
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0x1c816
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x1e8(%rsp), %rdi
callq 0xe7ca
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0x1c848
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0xf0(%rsp), %rdi
callq 0xe7ca
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x1c87a
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x2a8(%rsp), %rdi
callq 0x28958
leaq 0x2c0(%rsp), %rdi
callq 0x28958
movl $0x30, %r14d
leaq (%rsp,%r14), %rdi
addq $0x240, %rdi            # imm = 0x240
callq 0x2aedc
addq $-0x30, %r14
cmpq $-0x30, %r14
jne 0x1c89a
movq %r15, %rdi
callq 0x55c0