// File: medvedevgroup[P]varmatch/src/wholegenome.cpp
// Function: WholeGenome::ConstructMatchRecordNoGenotype(SequencePath&, std::vector<DiploidVariant, std::allocator<DiploidVariant>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, int, int, int, int, int)
void WholeGenome::ConstructMatchRecordNoGenotype(SequencePath & best_path,
                                                 vector<DiploidVariant> & variant_list,
                                                 string & subsequence,
                                                 int offset,
                                                 int thread_index,
                                                 int chr_id,
                                                 int mode_index,
                                                 int threshold_index){
    int truth_num = 0;
    int predict_num = 0;

    int truth_edit_distance = 0;
    int predict_edit_distance = 0;

    bool need_match_record = false;
    if(threshold_index == 0) need_match_record = true;

    bool multiple_match = false;
    string parsimonious_ref = subsequence;
    string parsimonious_alt0 = best_path.donor_sequences[0];
    string parsimonious_alt1 = best_path.donor_sequences[0];

    int parsimonious_pos = offset;

//    NormalizeVariantSequence(offset,
//                             parsimonious_ref,
//                             parsimonious_alt0,
//                             parsimonious_alt1,
//                             chr_id);

    string match_record = chrname_by_chrid[chr_id] + "\t" + to_string(parsimonious_pos+1) + "\t" + parsimonious_ref + "\t" + parsimonious_alt0;
    //if(multiple_match) match_record += "/" + parsimonious_alt1;

    string vcf_record[2];
    string phasing_record[2];

    for (int i = 0; i < 2; i++) {
        for (int var_index = 0; var_index < variant_list.size(); var_index++) {
            DiploidVariant variant = variant_list[var_index];
            if(variant.flag != i) continue;
            //The exact wording from the C++ standard is (§4.7/4): "If the source type is bool,
            // the value false is converted to zero and the value true is converted to one."
            int phasing = best_path.choice_vector[var_index];
            if(phasing <= NOT_USE) continue;
            int edit_distance = CalculateEditDistance(variant, phasing, 1);
            if(i == 0){
                truth_num ++;
                truth_edit_distance += edit_distance;
            }else{
                predict_num ++;
                predict_edit_distance += edit_distance;
            }

            if(need_match_record){
                string alt_string = variant.alts[0];
                if(variant.multi_alts){
                    alt_string += "/" + variant.alts[1];
                }
                string phasing_string = "";
                if(phasing == 0){
                    phasing_string += "1|1";
                }else if(phasing == 1){
                    phasing_string += "2|2";
                }
                string variant_record = to_string(variant.pos+1) + "," + variant.ref + "," + alt_string;
                vcf_record[i] += variant_record;
                phasing_record[i] += phasing_string;
                vcf_record[i] += ";";
                phasing_record[i] += ";";
            }
        }
        if(need_match_record){
            vcf_record[i] = vcf_record[i].substr(0, vcf_record[i].size()-1);
            phasing_record[i] = phasing_record[i].substr(0, phasing_record[i].size()-1);
        }

    }

    if(need_match_record){
       match_record += "\t" + vcf_record[0] + "\t" + vcf_record[1];
        match_record += "\t" + phasing_record[0] + "\t" + phasing_record[1];
       match_record += "\t" + to_string(best_path.score) + "\n";
       //complex_match_records[thread_index]->push_back(match_record);
       // this line should be recovered
       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) += truth_num;
    query_total_match_num[thread_index][threshold_index]->at(mode_index) += predict_num;

    baseline_total_edit_distance[thread_index][threshold_index]->at(mode_index) += truth_edit_distance;
    query_total_edit_distance[thread_index][threshold_index]->at(mode_index) += predict_edit_distance;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x610, %rsp            # imm = 0x610
movl 0x20(%rbp), %eax
movl 0x18(%rbp), %eax
movl 0x10(%rbp), %eax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movl %r9d, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x500(%rbp)
movl $0x0, -0x2c(%rbp)
movl $0x0, -0x30(%rbp)
movl $0x0, -0x34(%rbp)
movl $0x0, -0x38(%rbp)
movb $0x0, -0x39(%rbp)
cmpl $0x0, 0x20(%rbp)
jne 0x297a1
movb $0x1, -0x39(%rbp)
movb $0x0, -0x3a(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x61b0
movq -0x10(%rbp), %rsi
addq $0xd0, %rsi
leaq -0x80(%rbp), %rdi
callq 0x61b0
jmp 0x297c8
movq -0x10(%rbp), %rsi
addq $0xd0, %rsi
leaq -0xb0(%rbp), %rdi
callq 0x61b0
jmp 0x297e1
movq -0x500(%rbp), %rdi
movl -0x24(%rbp), %eax
movl %eax, -0xb4(%rbp)
addq $0xb8, %rdi
leaq 0x10(%rbp), %rsi
callq 0x32770
movq %rax, -0x508(%rbp)
jmp 0x2980a
movq -0x508(%rbp), %rsi
leaq 0x2bd85(%rip), %rdx     # 0x5559d
leaq -0x178(%rbp), %rdi
callq 0xe200
jmp 0x29826
movl -0xb4(%rbp), %esi
incl %esi
leaq -0x198(%rbp), %rdi
callq 0xb190
jmp 0x2983c
leaq -0x158(%rbp), %rdi
leaq -0x178(%rbp), %rsi
leaq -0x198(%rbp), %rdx
callq 0xde60
jmp 0x29858
leaq 0x2bd3e(%rip), %rdx     # 0x5559d
leaq -0x138(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xb0f0
jmp 0x29874
leaq -0x118(%rbp), %rdi
leaq -0x138(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0xe1b0
jmp 0x2988d
leaq 0x2bd09(%rip), %rdx     # 0x5559d
leaq -0xf8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0xb0f0
jmp 0x298a9
leaq -0xd8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
leaq -0x80(%rbp), %rdx
callq 0xe1b0
jmp 0x298c2
leaq -0xf8(%rbp), %rdi
callq 0x6828
leaq -0x118(%rbp), %rdi
callq 0x6828
leaq -0x138(%rbp), %rdi
callq 0x6828
leaq -0x158(%rbp), %rdi
callq 0x6828
leaq -0x198(%rbp), %rdi
callq 0x6828
leaq -0x178(%rbp), %rdi
callq 0x6828
leaq -0x1e0(%rbp), %rax
movq %rax, %rcx
addq $0x40, %rcx
movq %rcx, -0x518(%rbp)
movq %rax, -0x510(%rbp)
movq -0x510(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x65e0
movq -0x520(%rbp), %rax
movq -0x518(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x510(%rbp)
jne 0x29926
leaq -0x220(%rbp), %rax
movq %rax, %rcx
addq $0x40, %rcx
movq %rcx, -0x530(%rbp)
movq %rax, -0x528(%rbp)
movq -0x528(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x65e0
movq -0x538(%rbp), %rax
movq -0x530(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x528(%rbp)
jne 0x29973
movl $0x0, -0x224(%rbp)
cmpl $0x2, -0x224(%rbp)
jge 0x2a0e3
movl $0x0, -0x228(%rbp)
movslq -0x228(%rbp), %rax
movq %rax, -0x540(%rbp)
movq -0x18(%rbp), %rdi
callq 0x335b0
movq %rax, %rcx
movq -0x540(%rbp), %rax
cmpq %rcx, %rax
jae 0x29fe8
movq -0x18(%rbp), %rdi
movslq -0x228(%rbp), %rsi
callq 0x33de0
movq %rax, %rsi
leaq -0x280(%rbp), %rdi
callq 0x340a0
jmp 0x29a10
movb -0x234(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl -0x224(%rbp), %eax
je 0x29b58
movl $0x7, -0x284(%rbp)
jmp 0x29fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2a694
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2a68b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2a67f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29b30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29b24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29b18
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29b0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29b00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x6828
leaq -0x118(%rbp), %rdi
callq 0x6828
leaq -0x138(%rbp), %rdi
callq 0x6828
leaq -0x158(%rbp), %rdi
callq 0x6828
leaq -0x198(%rbp), %rdi
callq 0x6828
leaq -0x178(%rbp), %rdi
callq 0x6828
jmp 0x2a67f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2a5df
movq -0x10(%rbp), %rdi
addq $0x168, %rdi            # imm = 0x168
movslq -0x228(%rbp), %rsi
callq 0x19a60
movl (%rax), %eax
movl %eax, -0x288(%rbp)
cmpl $-0x9, -0x288(%rbp)
jg 0x29b8f
movl $0x7, -0x284(%rbp)
jmp 0x29fa7
movq -0x500(%rbp), %rdi
movl -0x288(%rbp), %edx
leaq -0x280(%rbp), %rsi
movl $0x1, %ecx
callq 0x20ac0
movl %eax, -0x544(%rbp)
jmp 0x29bb5
movl -0x544(%rbp), %eax
movl %eax, -0x28c(%rbp)
cmpl $0x0, -0x224(%rbp)
jne 0x29bf8
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
movl -0x28c(%rbp), %eax
addl -0x34(%rbp), %eax
movl %eax, -0x34(%rbp)
jmp 0x29c0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29fd7
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
movl -0x28c(%rbp), %eax
addl -0x38(%rbp), %eax
movl %eax, -0x38(%rbp)
testb $0x1, -0x39(%rbp)
je 0x29f9d
leaq -0x258(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9080
movq %rax, %rsi
leaq -0x2b0(%rbp), %rdi
callq 0x61b0
jmp 0x29c38
testb $0x1, -0x23f(%rbp)
je 0x29ccb
leaq -0x258(%rbp), %rdi
movl $0x1, %esi
callq 0x9080
movq %rax, %rdx
leaq 0x2b93f(%rip), %rsi     # 0x5559f
leaq -0x2d0(%rbp), %rdi
callq 0x10610
jmp 0x29c6e
leaq -0x2b0(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x6560
jmp 0x29c83
leaq -0x2d0(%rbp), %rdi
callq 0x6828
jmp 0x29ccb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29f8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x6828
jmp 0x29f8f
leaq -0x2f1(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x6760
movq -0x550(%rbp), %rdx
leaq 0x2b8b2(%rip), %rsi     # 0x5559e
leaq -0x2f0(%rbp), %rdi
callq 0x9680
jmp 0x29cfa
leaq -0x2f1(%rbp), %rdi
callq 0x64b0
cmpl $0x0, -0x288(%rbp)
jne 0x29d60
leaq 0x2bb23(%rip), %rsi     # 0x55839
leaq -0x2f0(%rbp), %rdi
callq 0x6410
jmp 0x29d24
jmp 0x29d82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2f1(%rbp), %rdi
callq 0x64b0
jmp 0x29f8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29f83
cmpl $0x1, -0x288(%rbp)
jne 0x29d80
leaq 0x2bacd(%rip), %rsi     # 0x5583d
leaq -0x2f0(%rbp), %rdi
callq 0x6410
jmp 0x29d7e
jmp 0x29d80
jmp 0x29d82
movl -0x280(%rbp), %esi
incl %esi
leaq -0x398(%rbp), %rdi
callq 0xb190
jmp 0x29d98
leaq 0x2b79e(%rip), %rdx     # 0x5553d
leaq -0x378(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0xb0f0
jmp 0x29db4
leaq -0x278(%rbp), %rdx
leaq -0x358(%rbp), %rdi
leaq -0x378(%rbp), %rsi
callq 0xe1b0
jmp 0x29dd0
leaq 0x2b766(%rip), %rdx     # 0x5553d
leaq -0x338(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0xb0f0
jmp 0x29dec
leaq -0x318(%rbp), %rdi
leaq -0x338(%rbp), %rsi
leaq -0x2b0(%rbp), %rdx
callq 0xe1b0
jmp 0x29e08
leaq -0x338(%rbp), %rdi
callq 0x6828
leaq -0x358(%rbp), %rdi
callq 0x6828
leaq -0x378(%rbp), %rdi
callq 0x6828
leaq -0x398(%rbp), %rdi
callq 0x6828
movslq -0x224(%rbp), %rax
shlq $0x5, %rax
leaq -0x1e0(%rbp,%rax), %rdi
leaq -0x318(%rbp), %rsi
callq 0x6560
jmp 0x29e59
movslq -0x224(%rbp), %rax
shlq $0x5, %rax
leaq -0x220(%rbp,%rax), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x6560
jmp 0x29e7a
movslq -0x224(%rbp), %rax
shlq $0x5, %rax
leaq -0x1e0(%rbp,%rax), %rdi
leaq 0x2b9a3(%rip), %rsi     # 0x55837
callq 0x6410
jmp 0x29e9b
movslq -0x224(%rbp), %rax
shlq $0x5, %rax
leaq -0x220(%rbp,%rax), %rdi
leaq 0x2b982(%rip), %rsi     # 0x55837
callq 0x6410
jmp 0x29ebc
leaq -0x318(%rbp), %rdi
callq 0x6828
leaq -0x2f0(%rbp), %rdi
callq 0x6828
leaq -0x2b0(%rbp), %rdi
callq 0x6828
jmp 0x29f9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29f57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29f4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x29f3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x6828
leaq -0x358(%rbp), %rdi
callq 0x6828
leaq -0x378(%rbp), %rdi
callq 0x6828
leaq -0x398(%rbp), %rdi
callq 0x6828
jmp 0x29f83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x6828
leaq -0x2f0(%rbp), %rdi
callq 0x6828
leaq -0x2b0(%rbp), %rdi
callq 0x6828
jmp 0x29fd7
movl $0x0, -0x284(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x32c60
movl -0x284(%rbp), %eax
testl %eax, %eax
je 0x29fc1
jmp 0x29fbf
jmp 0x29fc3
jmp 0x29fc3
movl -0x228(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x228(%rbp)
jmp 0x299c5
leaq -0x280(%rbp), %rdi
callq 0x32c60
jmp 0x2a5df
testb $0x1, -0x39(%rbp)
je 0x2a0cd
movslq -0x224(%rbp), %rax
shlq $0x5, %rax
leaq -0x1e0(%rbp,%rax), %rdi
movq %rdi, -0x558(%rbp)
callq 0x6320
movq -0x558(%rbp), %rsi
movq %rax, %rcx
decq %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x3b8(%rbp), %rdi
callq 0x6460
jmp 0x2a030
movslq -0x224(%rbp), %rax
shlq $0x5, %rax
leaq -0x1e0(%rbp,%rax), %rdi
leaq -0x3b8(%rbp), %rsi
movq %rsi, -0x568(%rbp)
callq 0x6530
movq -0x568(%rbp), %rdi
callq 0x6828
movslq -0x224(%rbp), %rax
shlq $0x5, %rax
leaq -0x220(%rbp,%rax), %rdi
movq %rdi, -0x560(%rbp)
callq 0x6320
movq -0x560(%rbp), %rsi
movq %rax, %rcx
decq %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x3d8(%rbp), %rdi
callq 0x6460
jmp 0x2a0a0
movslq -0x224(%rbp), %rax
leaq -0x220(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x6530
leaq -0x3d8(%rbp), %rdi
callq 0x6828
jmp 0x2a0cf
movl -0x224(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x224(%rbp)
jmp 0x299ae
testb $0x1, -0x39(%rbp)
je 0x2a3ea
leaq 0x2b4a9(%rip), %rsi     # 0x5559d
leaq -0x438(%rbp), %rdi
leaq -0x1e0(%rbp), %rdx
callq 0x10610
jmp 0x2a109
leaq 0x2b48d(%rip), %rdx     # 0x5559d
leaq -0x418(%rbp), %rdi
leaq -0x438(%rbp), %rsi
callq 0xb0f0
jmp 0x2a125
leaq -0x1c0(%rbp), %rdx
leaq -0x3f8(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0xe1b0
jmp 0x2a141
leaq -0xd8(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x6560
jmp 0x2a156
leaq -0x3f8(%rbp), %rdi
callq 0x6828
leaq -0x418(%rbp), %rdi
callq 0x6828
leaq -0x438(%rbp), %rdi
callq 0x6828
leaq 0x2b41c(%rip), %rsi     # 0x5559d
leaq -0x498(%rbp), %rdi
leaq -0x220(%rbp), %rdx
callq 0x10610
jmp 0x2a196
leaq 0x2b400(%rip), %rdx     # 0x5559d
leaq -0x478(%rbp), %rdi
leaq -0x498(%rbp), %rsi
callq 0xb0f0
jmp 0x2a1b2
leaq -0x200(%rbp), %rdx
leaq -0x458(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0xe1b0
jmp 0x2a1ce
leaq -0xd8(%rbp), %rdi
leaq -0x458(%rbp), %rsi
callq 0x6560
jmp 0x2a1e3
leaq -0x458(%rbp), %rdi
callq 0x6828
leaq -0x478(%rbp), %rdi
callq 0x6828
leaq -0x498(%rbp), %rdi
callq 0x6828
movq -0x10(%rbp), %rax
movl 0x158(%rax), %esi
leaq -0x4f8(%rbp), %rdi
callq 0xb190
jmp 0x2a21f
leaq 0x2b377(%rip), %rsi     # 0x5559d
leaq -0x4d8(%rbp), %rdi
leaq -0x4f8(%rbp), %rdx
callq 0xb140
jmp 0x2a23b
leaq 0x29e4a(%rip), %rdx     # 0x5408c
leaq -0x4b8(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0xb0f0
jmp 0x2a257
leaq -0xd8(%rbp), %rdi
leaq -0x4b8(%rbp), %rsi
callq 0x6560
jmp 0x2a26c
leaq -0x4b8(%rbp), %rdi
callq 0x6828
leaq -0x4d8(%rbp), %rdi
callq 0x6828
leaq -0x4f8(%rbp), %rdi
callq 0x6828
movq -0x500(%rbp), %rax
movq 0x178(%rax), %rax
movslq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x17750
jmp 0x2a2bc
jmp 0x2a3ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2a313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2a307
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x6828
leaq -0x418(%rbp), %rdi
callq 0x6828
leaq -0x438(%rbp), %rdi
callq 0x6828
jmp 0x2a5df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2a376
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2a36a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x458(%rbp), %rdi
callq 0x6828
leaq -0x478(%rbp), %rdi
callq 0x6828
leaq -0x498(%rbp), %rdi
callq 0x6828
jmp 0x2a5df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2a3d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2a3cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0x6828
leaq -0x4d8(%rbp), %rdi
callq 0x6828
leaq -0x4f8(%rbp), %rdi
callq 0x6828
jmp 0x2a5df
movq -0x500(%rbp), %rax
movl -0x2c(%rbp), %ecx
movl %ecx, -0x574(%rbp)
movq 0x180(%rax), %rax
movslq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movslq 0x18(%rbp), %rsi
callq 0x34130
movq %rax, -0x570(%rbp)
jmp 0x2a423
movq -0x500(%rbp), %rax
movq -0x570(%rbp), %rcx
movl -0x574(%rbp), %esi
movl (%rcx), %edx
addl %esi, %edx
movl %edx, (%rcx)
movl -0x30(%rbp), %ecx
movl %ecx, -0x584(%rbp)
movq 0x188(%rax), %rax
movslq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movslq 0x18(%rbp), %rsi
callq 0x34130
movq %rax, -0x580(%rbp)
jmp 0x2a46f
movq -0x500(%rbp), %rax
movq -0x580(%rbp), %rcx
movl -0x584(%rbp), %esi
movl (%rcx), %edx
addl %esi, %edx
movl %edx, (%rcx)
movl -0x34(%rbp), %ecx
movl %ecx, -0x594(%rbp)
movq 0x190(%rax), %rax
movslq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movslq 0x18(%rbp), %rsi
callq 0x34130
movq %rax, -0x590(%rbp)
jmp 0x2a4bb
movq -0x500(%rbp), %rax
movq -0x590(%rbp), %rcx
movl -0x594(%rbp), %esi
movl (%rcx), %edx
addl %esi, %edx
movl %edx, (%rcx)
movl -0x38(%rbp), %ecx
movl %ecx, -0x5a4(%rbp)
movq 0x198(%rax), %rax
movslq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movslq 0x18(%rbp), %rsi
callq 0x34130
movq %rax, -0x5a0(%rbp)
jmp 0x2a507
movq -0x5a0(%rbp), %rax
movl -0x5a4(%rbp), %ecx
addl (%rax), %ecx
movl %ecx, (%rax)
leaq -0x220(%rbp), %rax
movq %rax, -0x5b8(%rbp)
addq $0x40, %rax
movq %rax, -0x5b0(%rbp)
movq -0x5b0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x6828
movq -0x5b8(%rbp), %rcx
movq -0x5c0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5b0(%rbp)
jne 0x2a531
leaq -0x1e0(%rbp), %rax
movq %rax, -0x5d0(%rbp)
addq $0x40, %rax
movq %rax, -0x5c8(%rbp)
movq -0x5c8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5d8(%rbp)
callq 0x6828
movq -0x5d0(%rbp), %rcx
movq -0x5d8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5c8(%rbp)
jne 0x2a57b
leaq -0xd8(%rbp), %rdi
callq 0x6828
leaq -0xb0(%rbp), %rdi
callq 0x6828
leaq -0x80(%rbp), %rdi
callq 0x6828
leaq -0x60(%rbp), %rdi
callq 0x6828
addq $0x610, %rsp            # imm = 0x610
popq %rbp
retq
leaq -0x220(%rbp), %rax
movq %rax, -0x5e8(%rbp)
addq $0x40, %rax
movq %rax, -0x5e0(%rbp)
movq -0x5e0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x5f0(%rbp)
callq 0x6828
movq -0x5e8(%rbp), %rcx
movq -0x5f0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5e0(%rbp)
jne 0x2a5f8
leaq -0x1e0(%rbp), %rax
movq %rax, -0x600(%rbp)
addq $0x40, %rax
movq %rax, -0x5f8(%rbp)
movq -0x5f8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x608(%rbp)
callq 0x6828
movq -0x600(%rbp), %rcx
movq -0x608(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5f8(%rbp)
jne 0x2a642
leaq -0xd8(%rbp), %rdi
callq 0x6828
leaq -0xb0(%rbp), %rdi
callq 0x6828
leaq -0x80(%rbp), %rdi
callq 0x6828
leaq -0x60(%rbp), %rdi
callq 0x6828
movq -0x88(%rbp), %rdi
callq 0x6750
nopl (%rax)