// File: chhylp123[P]hifiasm/CommandLines.cpp
// Function: Print_H(hifiasm_opt_t*)
void Print_H(hifiasm_opt_t* asm_opt)
{
    fprintf(stderr, "Usage: hifiasm [options] <in_1.fq> <in_2.fq> <...>\n");
    fprintf(stderr, "Options:\n");
	fprintf(stderr, "  Input/Output:\n");
    fprintf(stderr, "    -o STR       prefix of output files [%s]\n", asm_opt->output_file_name);
    fprintf(stderr, "    -t INT       number of threads [%d]\n", asm_opt->thread_num);
    fprintf(stderr, "    -h           show help information\n");
    fprintf(stderr, "    --version    show version number\n");
    fprintf(stderr, "  Preset options:\n");
    fprintf(stderr, "    --ont        assemble Oxford Nanopore reads\n");
	fprintf(stderr, "  Overlap/Error correction:\n");
    fprintf(stderr, "    -k INT       k-mer length (must be <64) [%d]\n", asm_opt->k_mer_length);
	fprintf(stderr, "    -w INT       minimizer window size [%d]\n", asm_opt->mz_win);
	fprintf(stderr, "    -f INT       number of bits for bloom filter; 0 to disable [%d]\n", asm_opt->bf_shift);
	fprintf(stderr, "    -D FLOAT     drop k-mers occurring >FLOAT*coverage times [%.1f]\n", asm_opt->high_factor);
	fprintf(stderr, "    -N INT       consider up to max(-D*coverage,-N) overlaps for each oriented read [%d]\n", asm_opt->max_n_chain);
    fprintf(stderr, "    -r INT       round of correction [%d]\n", asm_opt->number_of_round);
    fprintf(stderr, "    -z INT       length of adapters that should be removed [%d]\n", asm_opt->adapterLen);
    fprintf(stderr, "    --max-kocc   INT\n");
    fprintf(stderr, "                 employ k-mers occurring <INT times to rescue repetitive overlaps [%d]\n", asm_opt->max_kmer_cnt);
    fprintf(stderr, "    --hg-size    INT(k, m or g)\n");
    fprintf(stderr, "                 estimated haploid genome size used for inferring read coverage [auto]\n");
    fprintf(stderr, "  Assembly:\n");
    fprintf(stderr, "    -a INT       round of assembly cleaning [%d]\n", asm_opt->clean_round);
    fprintf(stderr, "    -m INT       pop bubbles of <INT in size in contig graphs [%lld]\n", asm_opt->large_pop_bubble_size);
    fprintf(stderr, "    -p INT       pop bubbles of <INT in size in unitig graphs [%lld]\n", asm_opt->small_pop_bubble_size);
    fprintf(stderr, "    -n INT       remove tip unitigs composed of <=INT reads [%d]\n", asm_opt->max_short_tip);
    fprintf(stderr, "    -x FLOAT     max overlap drop ratio [%.2g]\n", asm_opt->max_drop_rate);
    fprintf(stderr, "    -y FLOAT     min overlap drop ratio [%.2g]\n", asm_opt->min_drop_rate);
    fprintf(stderr, "    -i           ignore saved read correction and overlaps\n");
    fprintf(stderr, "    -u           post-join step for contigs which may improve N50; 0 to disable; 1 to enable\n");
    fprintf(stderr, "                 [%u] and [%u] in default for the UL+HiFi assembly and the HiFi assembly, respectively\n",
                                      asm_opt->ul_pst_join, asm_opt->hifi_pst_join);
    fprintf(stderr, "    --hom-cov    INT\n");
    fprintf(stderr, "                 homozygous read coverage [auto]\n");
    fprintf(stderr, "    --lowQ       INT\n");
    fprintf(stderr, "                 output contig regions with >=INT%% inconsistency in BED format; 0 to disable [%d]\n", asm_opt->bed_inconsist_rate);
    fprintf(stderr, "    --b-cov      INT\n");
    fprintf(stderr, "                 break contigs at positions with <INT-fold coverage; work with '--m-rate'; 0 to disable [%d]\n", asm_opt->b_low_cov);
    fprintf(stderr, "    --h-cov      INT\n");
    fprintf(stderr, "                 break contigs at positions with >INT-fold coverage; work with '--m-rate'; -1 to disable [%d]\n", asm_opt->b_high_cov);
    fprintf(stderr, "    --m-rate     FLOAT\n");
    fprintf(stderr, "                 break contigs at positions with <=FLOAT*coverage exact overlaps;\n");
    fprintf(stderr, "                 only work with '--b-cov' or '--h-cov'[%.2f]\n", asm_opt->m_rate);
    fprintf(stderr, "    --primary    output a primary assembly and an alternate assembly\n");
    fprintf(stderr, "    --ctg-n      INT\n");
    fprintf(stderr, "                 remove tip contigs composed of <=INT reads [%d]\n", asm_opt->max_contig_tip);
    
    
//	fprintf(stderr, "    --pri-range INT1[,INT2]\n");
//	fprintf(stderr, "                keep contigs with coverage in this range in p_ctg.gfa; -1 to disable [auto,inf]\n");

    fprintf(stderr, "  Trio-partition:\n");
    fprintf(stderr, "    -1 FILE      hap1/paternal k-mer dump generated by \"yak count\" []\n");
    fprintf(stderr, "    -2 FILE      hap2/maternal k-mer dump generated by \"yak count\" []\n");
    fprintf(stderr, "    -3 FILE      list of hap1/paternal read names []\n");
	fprintf(stderr, "    -4 FILE      list of hap2/maternal read names []\n");
    fprintf(stderr, "    -c INT       lower bound of the binned k-mer's frequency [%d]\n", asm_opt->min_cnt);
    fprintf(stderr, "    -d INT       upper bound of the binned k-mer's frequency [%d]\n", asm_opt->mid_cnt);
    fprintf(stderr, "    --t-occ      INT\n");
    fprintf(stderr, "                 forcedly remove unitigs with >INT unexpected haplotype-specific reads;\n");
    fprintf(stderr, "                 ignore graph topology; [%d]\n", asm_opt->trio_flag_occ_thres);
    fprintf(stderr, "    --trio-dual  utilize homology information to correct trio phasing errors\n");


    fprintf(stderr, "  Purge-dups:\n");
    fprintf(stderr, "    -l INT       purge level. 0: no purging; 1: light; 2/3: aggressive [0 for trio; 3 for unzip]\n");
    fprintf(stderr, "    -s FLOAT     similarity threshold for duplicate haplotigs in read-level [%g for -l1/-l2, %g for -l3]\n", 
                                      asm_opt->purge_simi_rate_l2, asm_opt->purge_simi_rate_l3);
    fprintf(stderr, "    -O INT       min number of overlapped reads for duplicate haplotigs [%d]\n", 
                                      asm_opt->purge_overlap_len);
    fprintf(stderr, "    --purge-max  INT\n");
    fprintf(stderr, "                 coverage upper bound of Purge-dups [auto]\n");
    fprintf(stderr, "    --n-hap      INT\n");
    fprintf(stderr, "                 number of haplotypes [%d]\n", asm_opt->polyploidy);
    
    // fprintf(stderr, "  Hi-C-partition [experimental, not stable]:\n");
    fprintf(stderr, "  Hi-C-partition:\n");
    fprintf(stderr, "    --h1 FILEs   file names of Hi-C R1  [r1_1.fq,r1_2.fq,...]\n");
    fprintf(stderr, "    --h2 FILEs   file names of Hi-C R2  [r2_1.fq,r2_2.fq,...]\n");
    fprintf(stderr, "    --seed INT   RNG seed [%lu]\n", asm_opt->seed);
    fprintf(stderr, "    --s-base     FLOAT\n");
	fprintf(stderr, "                 similarity threshold for homology detection in base-level;\n"); 
    fprintf(stderr, "                 -1 to disable [%.3g]; -s for read-level (see <Purge-dups>)\n", asm_opt->trans_base_rate_sec);
    
    fprintf(stderr, "    --n-weight   INT\n");
    fprintf(stderr, "                 rounds of reweighting Hi-C links [%d]\n", asm_opt->n_weight);
	fprintf(stderr, "    --n-perturb  INT\n");
    fprintf(stderr, "                 rounds of perturbation [%d]\n", asm_opt->n_perturb);
    fprintf(stderr, "    --f-perturb  FLOAT\n");
	fprintf(stderr, "                 fraction to flip for perturbation [%.3g]\n", asm_opt->f_perturb);
    fprintf(stderr, "    --l-msjoin   INT\n");
    fprintf(stderr, "                 detect misjoined unitigs of >=INT in size; 0 to disable [%lu]\n", asm_opt->misjoin_len);

    fprintf(stderr, "  Ultra-Long-integration:\n");
    fprintf(stderr, "    --ul FILEs   file names of Ultra-Long reads [r1.fq,r2.fq,...]\n");
    ///pending for integration
    /**
    fprintf(stderr, "    --ul-m       INT\n");
    fprintf(stderr, "                 hybrid assembly mode. 0: fast and memory efficent; 1: may produce better assembly with ONT R10 [%d]\n", asm_opt->ul_mod);
    **/
    fprintf(stderr, "    --ul-rate    FLOAT\n");
    fprintf(stderr, "                 error rate of Ultra-Long reads [%.3g]\n", asm_opt->ul_error_rate);
    fprintf(stderr, "    --ul-tip     INT\n");
    fprintf(stderr, "                 remove tip unitigs composed of <=INT reads for the UL assembly [%d]\n", asm_opt->max_short_ul_tip);
    fprintf(stderr, "    --path-max   FLOAT\n");
    fprintf(stderr, "                 max path drop ratio [%.2g]; higher number may make the assembly cleaner\n", asm_opt->max_path_drop_rate);
    fprintf(stderr, "                 but may lead to more misassemblies\n");
    fprintf(stderr, "    --path-min   FLOAT\n");
    fprintf(stderr, "                 min path drop ratio [%.2g]; higher number may make the assembly cleaner\n", asm_opt->min_path_drop_rate);
    fprintf(stderr, "                 but may lead to more misassemblies\n");
    fprintf(stderr, "    --ul-cut     INT\n");
    fprintf(stderr, "                 filter out <INT UL reads during the UL assembly [%d]\n", asm_opt->ul_min_base);
    // fprintf(stderr, "    --low-het    enable it for genomes with very low het heterozygosity rate (<0.0001%%)\n");

    fprintf(stderr, "  Dual-Scaffolding:\n");
    fprintf(stderr, "    --dual-scaf  output scaffolding\n");
    fprintf(stderr, "    --scaf-gap   INT\n");
    fprintf(stderr, "                 max gap size for scaffolding [%ld]\n", asm_opt->self_scaf_gap_max);

    fprintf(stderr, "  Telomere-identification:\n");
    fprintf(stderr, "    --telo-m     STR\n");
    fprintf(stderr, "                 telomere motif at 5'-end; CCCTAA for human [%s]\n", ((asm_opt->telo_motif)?(asm_opt->telo_motif):("NULL")));///5'-end, check CCCTAA
    fprintf(stderr, "    --telo-p     INT\n");
    fprintf(stderr, "                 non-telomeric penalty [%ld]\n", asm_opt->telo_pen);
    fprintf(stderr, "    --telo-d     INT\n");
    fprintf(stderr, "                 max drop [%ld]\n", asm_opt->telo_drop);
    fprintf(stderr, "    --telo-s     INT\n");
    fprintf(stderr, "                 min score for telomere reads [%ld]\n", asm_opt->telo_mic_sc);

    fprintf(stderr, "  ONT simplex assembly (beta):\n");
    fprintf(stderr, "    --ont        assemble ONT simplex reads in fastq format\n");
    // fprintf(stderr, "    --sc-n       consider base qual value for assembly\n");
    fprintf(stderr, "    --chem-c     INT\n");
    fprintf(stderr, "                 detect chimeric reads with <=INT other reads support [%lu]\n", asm_opt->chemical_cov);
    fprintf(stderr, "    --chem-f     INT\n");
    fprintf(stderr, "                 length of flanking regions for chimeric read detection [%lu]\n", asm_opt->chemical_flank);
    fprintf(stderr, "    --rl-cut     INT\n");
    fprintf(stderr, "                 filter out ONT simplex reads shorter than <INT> for assembly [%ld]\n", asm_opt->rl_cut);
    fprintf(stderr, "    --sc-cut     INT\n");
    fprintf(stderr, "                 filter out ONT simplex reads with a mean base quality score below <INT> [%ld]\n", asm_opt->sc_cut);


    fprintf(stderr, "Example: ./hifiasm -o NA12878.asm -t 32 NA12878.fq.gz\n");
    fprintf(stderr, "See `https://hifiasm.readthedocs.io/en/latest/' or `man ./hifiasm.1' for complete documentation.\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq 0x3c1a7d(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cb23(%rip), %rsi    # 0x37f090
movb $0x0, %al
callq 0x22a0
movq 0x3c1a65(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cb3f(%rip), %rsi    # 0x37f0c4
movb $0x0, %al
callq 0x22a0
movq 0x3c1a4d(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cb31(%rip), %rsi    # 0x37f0ce
movb $0x0, %al
callq 0x22a0
movq 0x3c1a35(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x37cb22(%rip), %rsi    # 0x37f0df
movb $0x0, %al
callq 0x22a0
movq 0x3c1a15(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x7c(%rax), %edx
leaq 0x37cb31(%rip), %rsi    # 0x37f10d
movb $0x0, %al
callq 0x22a0
movq 0x3c19f6(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cb42(%rip), %rsi    # 0x37f136
movb $0x0, %al
callq 0x22a0
movq 0x3c19de(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cb52(%rip), %rsi    # 0x37f15e
movb $0x0, %al
callq 0x22a0
movq 0x3c19c6(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cb60(%rip), %rsi    # 0x37f184
movb $0x0, %al
callq 0x22a0
movq 0x3c19ae(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cb5b(%rip), %rsi    # 0x37f197
movb $0x0, %al
callq 0x22a0
movq 0x3c1996(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cb74(%rip), %rsi    # 0x37f1c8
movb $0x0, %al
callq 0x22a0
movq 0x3c197e(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x80(%rax), %edx
leaq 0x37cb6f(%rip), %rsi    # 0x37f1e5
movb $0x0, %al
callq 0x22a0
movq 0x3c195c(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x94(%rax), %edx
leaq 0x37cb7f(%rip), %rsi    # 0x37f217
movb $0x0, %al
callq 0x22a0
movq 0x3c193a(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0xac(%rax), %edx
leaq 0x37cb8a(%rip), %rsi    # 0x37f244
movb $0x0, %al
callq 0x22a0
movq 0x3c1918(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movsd 0xb8(%rax), %xmm0
leaq 0x37cbab(%rip), %rsi    # 0x37f289
movb $0x1, %al
callq 0x22a0
movq 0x3c18f4(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0xe8(%rax), %edx
leaq 0x37cbce(%rip), %rsi    # 0x37f2ce
movb $0x0, %al
callq 0x22a0
movq 0x3c18d2(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0xf8(%rax), %edx
leaq 0x37cc06(%rip), %rsi    # 0x37f328
movb $0x0, %al
callq 0x22a0
movq 0x3c18b0(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x100(%rax), %edx
leaq 0x37cc0f(%rip), %rsi    # 0x37f353
movb $0x0, %al
callq 0x22a0
movq 0x3c188e(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cc38(%rip), %rsi    # 0x37f394
movb $0x0, %al
callq 0x22a0
movq 0x3c1876(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0xb0(%rax), %edx
leaq 0x37cc2c(%rip), %rsi    # 0x37f3aa
movb $0x0, %al
callq 0x22a0
movq 0x3c1854(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cc6c(%rip), %rsi    # 0x37f402
movb $0x0, %al
callq 0x22a0
movq 0x3c183c(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cc75(%rip), %rsi    # 0x37f423
movb $0x0, %al
callq 0x22a0
movq 0x3c1824(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37ccb5(%rip), %rsi    # 0x37f47b
movb $0x0, %al
callq 0x22a0
movq 0x3c180c(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x104(%rax), %edx
leaq 0x37cca0(%rip), %rsi    # 0x37f488
movb $0x0, %al
callq 0x22a0
movq 0x3c17ea(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x188(%rax), %rdx
leaq 0x37ccaf(%rip), %rsi    # 0x37f4ba
movb $0x0, %al
callq 0x22a0
movq 0x3c17c7(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x180(%rax), %rdx
leaq 0x37ccd2(%rip), %rsi    # 0x37f500
movb $0x0, %al
callq 0x22a0
movq 0x3c17a4(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x11c(%rax), %edx
leaq 0x37ccf6(%rip), %rsi    # 0x37f546
movb $0x0, %al
callq 0x22a0
movq 0x3c1782(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movss 0x160(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x37cd10(%rip), %rsi    # 0x37f588
movb $0x1, %al
callq 0x22a0
movq 0x3c175a(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movss 0x15c(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x37cd18(%rip), %rsi    # 0x37f5b8
movb $0x1, %al
callq 0x22a0
movq 0x3c1732(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cd30(%rip), %rsi    # 0x37f5e8
movb $0x0, %al
callq 0x22a0
movq 0x3c171a(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cd54(%rip), %rsi    # 0x37f624
movb $0x0, %al
callq 0x22a0
movq 0x3c1702(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movzbl 0x25e(%rax), %edx
movq -0x8(%rbp), %rax
movzbl 0x25d(%rax), %ecx
leaq 0x37cd84(%rip), %rsi    # 0x37f682
movb $0x0, %al
callq 0x22a0
movq 0x3c16d4(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cdd4(%rip), %rsi    # 0x37f6ea
movb $0x0, %al
callq 0x22a0
movq 0x3c16bc(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cdd2(%rip), %rsi    # 0x37f700
movb $0x0, %al
callq 0x22a0
movq 0x3c16a4(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cdec(%rip), %rsi    # 0x37f732
movb $0x0, %al
callq 0x22a0
movq 0x3c168c(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x150(%rax), %edx
leaq 0x37cde0(%rip), %rsi    # 0x37f748
movb $0x0, %al
callq 0x22a0
movq 0x3c166a(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37ce2c(%rip), %rsi    # 0x37f7ac
movb $0x0, %al
callq 0x22a0
movq 0x3c1652(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0xd8(%rax), %edx
leaq 0x37ce20(%rip), %rsi    # 0x37f7c2
movb $0x0, %al
callq 0x22a0
movq 0x3c1630(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37ce76(%rip), %rsi    # 0x37f830
movb $0x0, %al
callq 0x22a0
movq 0x3c1618(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0xdc(%rax), %edx
leaq 0x37ce6a(%rip), %rsi    # 0x37f846
movb $0x0, %al
callq 0x22a0
movq 0x3c15f6(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cec1(%rip), %rsi    # 0x37f8b5
movb $0x0, %al
callq 0x22a0
movq 0x3c15de(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cec1(%rip), %rsi    # 0x37f8cd
movb $0x0, %al
callq 0x22a0
movq 0x3c15c6(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movsd 0xe0(%rax), %xmm0
leaq 0x37cef0(%rip), %rsi    # 0x37f920
movb $0x1, %al
callq 0x22a0
movq 0x3c15a2(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cf16(%rip), %rsi    # 0x37f95e
movb $0x0, %al
callq 0x22a0
movq 0x3c158a(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cf44(%rip), %rsi    # 0x37f9a4
movb $0x0, %al
callq 0x22a0
movq 0x3c1572(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x124(%rax), %edx
leaq 0x37cf38(%rip), %rsi    # 0x37f9ba
movb $0x0, %al
callq 0x22a0
movq 0x3c1550(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cf62(%rip), %rsi    # 0x37f9fc
movb $0x0, %al
callq 0x22a0
movq 0x3c1538(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cf5d(%rip), %rsi    # 0x37fa0f
movb $0x0, %al
callq 0x22a0
movq 0x3c1520(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cf8c(%rip), %rsi    # 0x37fa56
movb $0x0, %al
callq 0x22a0
movq 0x3c1508(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cfbb(%rip), %rsi    # 0x37fa9d
movb $0x0, %al
callq 0x22a0
movq 0x3c14f0(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37cfd9(%rip), %rsi    # 0x37fad3
movb $0x0, %al
callq 0x22a0
movq 0x3c14d8(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x128(%rax), %edx
leaq 0x37cfed(%rip), %rsi    # 0x37fb09
movb $0x0, %al
callq 0x22a0
movq 0x3c14b6(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x12c(%rax), %edx
leaq 0x37d00e(%rip), %rsi    # 0x37fb4c
movb $0x0, %al
callq 0x22a0
movq 0x3c1494(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d039(%rip), %rsi    # 0x37fb8f
movb $0x0, %al
callq 0x22a0
movq 0x3c147c(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d037(%rip), %rsi    # 0x37fba5
movb $0x0, %al
callq 0x22a0
movq 0x3c1464(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x1c0(%rax), %edx
leaq 0x37d06e(%rip), %rsi    # 0x37fbfe
movb $0x0, %al
callq 0x22a0
movq 0x3c1442(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d084(%rip), %rsi    # 0x37fc2c
movb $0x0, %al
callq 0x22a0
movq 0x3c142a(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d0ba(%rip), %rsi    # 0x37fc7a
movb $0x0, %al
callq 0x22a0
movq 0x3c1412(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d0b1(%rip), %rsi    # 0x37fc89
movb $0x0, %al
callq 0x22a0
movq 0x3c13fa(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movss 0x164(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x8(%rbp), %rax
movss 0x168(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x37d0db(%rip), %rsi    # 0x37fceb
movb $0x2, %al
callq 0x22a0
movq 0x3c13c2(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x138(%rax), %edx
leaq 0x37d123(%rip), %rsi    # 0x37fd55
movb $0x0, %al
callq 0x22a0
movq 0x3c13a0(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d159(%rip), %rsi    # 0x37fda3
movb $0x0, %al
callq 0x22a0
movq 0x3c1388(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d157(%rip), %rsi    # 0x37fdb9
movb $0x0, %al
callq 0x22a0
movq 0x3c1370(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d17b(%rip), %rsi    # 0x37fdf5
movb $0x0, %al
callq 0x22a0
movq 0x3c1358(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x1bc(%rax), %edx
leaq 0x37d16f(%rip), %rsi    # 0x37fe0b
movb $0x0, %al
callq 0x22a0
movq 0x3c1336(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d183(%rip), %rsi    # 0x37fe37
movb $0x0, %al
callq 0x22a0
movq 0x3c131e(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d17e(%rip), %rsi    # 0x37fe4a
movb $0x0, %al
callq 0x22a0
movq 0x3c1306(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d1a5(%rip), %rsi    # 0x37fe89
movb $0x0, %al
callq 0x22a0
movq 0x3c12ee(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x1c8(%rax), %rdx
leaq 0x37d1c1(%rip), %rsi    # 0x37fec8
movb $0x0, %al
callq 0x22a0
movq 0x3c12cb(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d1ca(%rip), %rsi    # 0x37fee9
movb $0x0, %al
callq 0x22a0
movq 0x3c12b3(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d1ca(%rip), %rsi    # 0x37ff01
movb $0x0, %al
callq 0x22a0
movq 0x3c129b(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movss 0x174(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x37d1ef(%rip), %rsi    # 0x37ff4e
movb $0x1, %al
callq 0x22a0
movq 0x3c1273(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d224(%rip), %rsi    # 0x37ff9b
movb $0x0, %al
callq 0x22a0
movq 0x3c125b(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x1e0(%rax), %edx
leaq 0x37d218(%rip), %rsi    # 0x37ffb1
movb $0x0, %al
callq 0x22a0
movq 0x3c1239(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d238(%rip), %rsi    # 0x37ffe9
movb $0x0, %al
callq 0x22a0
movq 0x3c1221(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x1d0(%rax), %edx
leaq 0x37d22c(%rip), %rsi    # 0x37ffff
movb $0x0, %al
callq 0x22a0
movq 0x3c11ff(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d242(%rip), %rsi    # 0x38002d
movb $0x0, %al
callq 0x22a0
movq 0x3c11e7(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movsd 0x1d8(%rax), %xmm0
leaq 0x37d236(%rip), %rsi    # 0x380045
movb $0x1, %al
callq 0x22a0
movq 0x3c11c3(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d259(%rip), %rsi    # 0x380080
movb $0x0, %al
callq 0x22a0
movq 0x3c11ab(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x1e8(%rax), %rdx
leaq 0x37d24c(%rip), %rsi    # 0x380096
movb $0x0, %al
callq 0x22a0
movq 0x3c1188(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d284(%rip), %rsi    # 0x3800e6
movb $0x0, %al
callq 0x22a0
movq 0x3c1170(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d287(%rip), %rsi    # 0x380101
movb $0x0, %al
callq 0x22a0
movq 0x3c1158(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d2b2(%rip), %rsi    # 0x380144
movb $0x0, %al
callq 0x22a0
movq 0x3c1140(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movsd 0x228(%rax), %xmm0
leaq 0x37d2a6(%rip), %rsi    # 0x38015c
movb $0x1, %al
callq 0x22a0
movq 0x3c111c(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d2c6(%rip), %rsi    # 0x380194
movb $0x0, %al
callq 0x22a0
movq 0x3c1104(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x120(%rax), %edx
leaq 0x37d2ba(%rip), %rsi    # 0x3801aa
movb $0x0, %al
callq 0x22a0
movq 0x3c10e2(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d2f8(%rip), %rsi    # 0x380200
movb $0x0, %al
callq 0x22a0
movq 0x3c10ca(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movss 0x17c(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x37d2e8(%rip), %rsi    # 0x380218
movb $0x1, %al
callq 0x22a0
movq 0x3c10a2(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d32a(%rip), %rsi    # 0x380272
movb $0x0, %al
callq 0x22a0
movq 0x3c108a(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d347(%rip), %rsi    # 0x3802a7
movb $0x0, %al
callq 0x22a0
movq 0x3c1072(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movss 0x178(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x37d337(%rip), %rsi    # 0x3802bf
movb $0x1, %al
callq 0x22a0
movq 0x3c104a(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d2d2(%rip), %rsi    # 0x380272
movb $0x0, %al
callq 0x22a0
movq 0x3c1032(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d361(%rip), %rsi    # 0x380319
movb $0x0, %al
callq 0x22a0
movq 0x3c101a(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x260(%rax), %edx
leaq 0x37d355(%rip), %rsi    # 0x38032f
movb $0x0, %al
callq 0x22a0
movq 0x3c0ff8(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d384(%rip), %rsi    # 0x380376
movb $0x0, %al
callq 0x22a0
movq 0x3c0fe0(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d381(%rip), %rsi    # 0x38038b
movb $0x0, %al
callq 0x22a0
movq 0x3c0fc8(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d38e(%rip), %rsi    # 0x3803b0
movb $0x0, %al
callq 0x22a0
movq 0x3c0fb0(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x278(%rax), %rdx
leaq 0x37d381(%rip), %rsi    # 0x3803c6
movb $0x0, %al
callq 0x22a0
movq 0x3c0f8d(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d39e(%rip), %rsi    # 0x3803fb
movb $0x0, %al
callq 0x22a0
movq 0x3c0f75(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d3a2(%rip), %rsi    # 0x380417
movb $0x0, %al
callq 0x22a0
movq 0x3c0f5d(%rip), %rax    # 0x3c3fe0
movq (%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x288(%rax)
je 0x30a9
movq -0x8(%rbp), %rax
movq 0x288(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x30b6
leaq 0x37d3bf(%rip), %rax    # 0x38046f
movq %rax, -0x18(%rbp)
jmp 0x30b6
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x37d368(%rip), %rsi    # 0x38042d
movb $0x0, %al
callq 0x22a0
movq 0x3c0f0d(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d397(%rip), %rsi    # 0x380474
movb $0x0, %al
callq 0x22a0
movq 0x3c0ef5(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x290(%rax), %rdx
leaq 0x37d38a(%rip), %rsi    # 0x38048a
movb $0x0, %al
callq 0x22a0
movq 0x3c0ed2(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d3a0(%rip), %rsi    # 0x3804b8
movb $0x0, %al
callq 0x22a0
movq 0x3c0eba(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x298(%rax), %rdx
leaq 0x37d393(%rip), %rsi    # 0x3804ce
movb $0x0, %al
callq 0x22a0
movq 0x3c0e97(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d39c(%rip), %rsi    # 0x3804ef
movb $0x0, %al
callq 0x22a0
movq 0x3c0e7f(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x2a0(%rax), %rdx
leaq 0x37d38f(%rip), %rsi    # 0x380505
movb $0x0, %al
callq 0x22a0
movq 0x3c0e5c(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d3ac(%rip), %rsi    # 0x38053a
movb $0x0, %al
callq 0x22a0
movq 0x3c0e44(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d3b4(%rip), %rsi    # 0x38055a
movb $0x0, %al
callq 0x22a0
movq 0x3c0e2c(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d3d9(%rip), %rsi    # 0x380597
movb $0x0, %al
callq 0x22a0
movq 0x3c0e14(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x2b8(%rax), %rdx
leaq 0x37d3cc(%rip), %rsi    # 0x3805ad
movb $0x0, %al
callq 0x22a0
movq 0x3c0df1(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d401(%rip), %rsi    # 0x3805fa
movb $0x0, %al
callq 0x22a0
movq 0x3c0dd9(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x2c0(%rax), %rdx
leaq 0x37d3f4(%rip), %rsi    # 0x380610
movb $0x0, %al
callq 0x22a0
movq 0x3c0db6(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d42b(%rip), %rsi    # 0x38065f
movb $0x0, %al
callq 0x22a0
movq 0x3c0d9e(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x2c8(%rax), %rdx
leaq 0x37d41e(%rip), %rsi    # 0x380675
movb $0x0, %al
callq 0x22a0
movq 0x3c0d7b(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d45b(%rip), %rsi    # 0x3806ca
movb $0x0, %al
callq 0x22a0
movq 0x3c0d63(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x2d0(%rax), %rdx
leaq 0x37d44e(%rip), %rsi    # 0x3806e0
movb $0x0, %al
callq 0x22a0
movq 0x3c0d40(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d496(%rip), %rsi    # 0x380740
movb $0x0, %al
callq 0x22a0
movq 0x3c0d28(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x37d4b5(%rip), %rsi    # 0x380777
movb $0x0, %al
callq 0x22a0
addq $0x20, %rsp
popq %rbp
retq
nop