// File: chhylp123[P]hifiasm/CommandLines.cpp
// Function: CommandLine_process(int, char**, hifiasm_opt_t*)
int CommandLine_process(int argc, char *argv[], hifiasm_opt_t* asm_opt)
{
    ketopt_t opt = KETOPT_INIT;

    int c;

    while ((c = ketopt(&opt, argc, argv, 1, "hvt:o:k:w:m:n:r:a:b:z:x:y:p:c:d:M:P:if:D:FN:1:2:3:4:5:l:s:O:eu:", long_options)) >= 0) {
        if (c == 'h')
        {
            Print_H(asm_opt);
            return 0;
        } 
        else if (c == 'v' || c == 300)
        {
			puts(HA_VERSION);
            return 0;
        }
		else if (c == 'f') asm_opt->bf_shift = atoi(opt.arg);
        else if (c == 't') asm_opt->thread_num = atoi(opt.arg); 
        else if (c == 'o') asm_opt->output_file_name = opt.arg;
        else if (c == 'r') asm_opt->number_of_round = atoi(opt.arg);
        else if (c == 'k') asm_opt->k_mer_length = atoi(opt.arg);
        else if (c == 'i') asm_opt->load_index_from_disk = 0; 
        else if (c == 'w') asm_opt->mz_win = atoi(opt.arg);
		else if (c == 'D') asm_opt->high_factor = atof(opt.arg);
		else if (c == 'F') asm_opt->flag |= HA_F_NO_KMER_FLT;
		else if (c == 'N') asm_opt->max_n_chain = atoi(opt.arg);
        else if (c == 'a') asm_opt->clean_round = atoi(opt.arg); 
        else if (c == 'z') asm_opt->adapterLen = atoi(opt.arg);
        else if (c == 'b') asm_opt->required_read_name = opt.arg;
        else if (c == 'c') asm_opt->min_cnt = atoi(opt.arg);
        else if (c == 'd') asm_opt->mid_cnt = atoi(opt.arg);
        else if (c == '1' || c == 'P') asm_opt->fn_bin_yak[0] = opt.arg; // -P/-M reserved for backward compatibility
        else if (c == '2' || c == 'M') asm_opt->fn_bin_yak[1] = opt.arg;
        else if (c == '3') asm_opt->fn_bin_list[0] = opt.arg;
        else if (c == '4') asm_opt->fn_bin_list[1] = opt.arg;
        else if (c == '5') asm_opt->fn_bin_poy = opt.arg;
        else if (c == 'x') asm_opt->max_drop_rate = atof(opt.arg);
        else if (c == 'y') asm_opt->min_drop_rate = atof(opt.arg);
        else if (c == 'p') asm_opt->small_pop_bubble_size = atoll(opt.arg);
        else if (c == 'm') asm_opt->large_pop_bubble_size = atoll(opt.arg);
        else if (c == 'n') asm_opt->max_short_tip = atoll(opt.arg);
        else if (c == 'e') asm_opt->flag |= HA_F_BAN_ASSEMBLY;
        else if (c == 'u') {
            if(atoll(opt.arg)) {
                asm_opt->hifi_pst_join = asm_opt->ul_pst_join = 1;
            } else {
                asm_opt->hifi_pst_join = asm_opt->ul_pst_join = 0;
            }
        }
        else if (c == 301) asm_opt->flag |= HA_F_VERBOSE_GFA;
		else if (c == 302) asm_opt->flag |= HA_F_WRITE_PAF;
		else if (c == 303) asm_opt->flag |= HA_F_WRITE_EC;
		else if (c == 304) asm_opt->flag |= HA_F_SKIP_TRIOBIN;
		else if (c == 305) asm_opt->max_ov_diff_ec = atof(opt.arg);
		else if (c == 306) asm_opt->max_ov_diff_final = atof(opt.arg);
		else if (c == 307) asm_opt->extract_list = opt.arg;
		else if (c == 308) asm_opt->extract_iter = atoi(opt.arg);
        else if (c == 309)
        {
            asm_opt->hom_global_coverage = atoi(opt.arg);
            asm_opt->hom_global_coverage_set = 1;
        } 
        else if (c == 310)
        {
            char* s = NULL;
            asm_opt->recover_atg_cov_min = strtol(opt.arg, &s, 10);
			if (*s == ',') asm_opt->recover_atg_cov_max = strtol(s + 1, &s, 10);
            if(asm_opt->recover_atg_cov_min == -1 || asm_opt->recover_atg_cov_max == -1)
            {
                asm_opt->recover_atg_cov_min = asm_opt->recover_atg_cov_max = -1;
            }
        }
        ///else if (c == 311) asm_opt->flag |= HA_F_HIGH_HET;
        else if (c == 312) asm_opt->bed_inconsist_rate = atoi(opt.arg);
        else if (c == 313) asm_opt->min_hist_kmer_cnt = atoi(opt.arg);
        else if (c == 314) get_hic_enzymes(opt.arg, &(asm_opt->hic_reads[0]), 0);
        else if (c == 315) get_hic_enzymes(opt.arg, &(asm_opt->hic_reads[1]), 0);
        else if (c == 316) get_hic_enzymes(opt.arg, &(asm_opt->hic_enzymes), 1);
        else if (c == 317) asm_opt->b_low_cov = atoi(opt.arg);
        else if (c == 318) asm_opt->b_high_cov = atoi(opt.arg);
        else if (c == 319) asm_opt->m_rate = atof(opt.arg);
        else if (c == 320) asm_opt->flag -= HA_F_PARTITION, asm_opt->is_alt = 1;
        else if (c == 321) asm_opt->trio_flag_occ_thres = atoi(opt.arg);
        else if (c == 322) asm_opt->seed = atol(opt.arg);
        else if (c == 323) asm_opt->n_perturb = atoi(opt.arg);
        else if (c == 324) asm_opt->f_perturb = atof(opt.arg);
        else if (c == 325) asm_opt->polyploidy = atoi(opt.arg);
        else if (c == 326) asm_opt->n_weight = atoi(opt.arg);
        else if (c == 327) asm_opt->misjoin_len = atol(opt.arg);
        else if (c == 328) asm_opt->pur_global_coverage = atoi(opt.arg);
        else if (c == 329) asm_opt->flag |= HA_F_FAST;
        else if (c == 330) asm_opt->dp_e = atof(opt.arg);
        else if (c == 331) asm_opt->max_kmer_cnt = atol(opt.arg);
        else if (c == 332) asm_opt->hg_size = inter_gsize(opt.arg);      
        else if (c == 333) get_hic_enzymes(opt.arg, &(asm_opt->ar), 0);
        else if (c == 334) asm_opt->flag |= HA_F_USKEW;
        else if (c == 335) asm_opt->kpt_rate = atof(opt.arg);
        else if (c == 336) asm_opt->ul_error_rate = atof(opt.arg);
        else if (c == 337) asm_opt->is_dbg_het_cnt = 1;
        else if (c == 338) asm_opt->max_short_ul_tip = atol(opt.arg);
        else if (c == 339) asm_opt->is_low_het_ul = 1;
        else if (c == 340) {
            asm_opt->trans_base_rate_sec = atof(opt.arg);
            if(asm_opt->trans_base_rate_sec < 0) asm_opt->is_base_trans = 0;
        } 
        else if (c == 341) asm_opt->bin_only = 1;
        else if (c == 342) asm_opt->ul_clean_round = atol(opt.arg);
        else if (c == 343) asm_opt->prt_dbg_gfa = 1;
        else if (c == 344) asm_opt->integer_correct_round = atol(opt.arg);
        else if (c == 345) asm_opt->dbg_ovec_cal = 1;
        else if (c == 346) asm_opt->max_path_drop_rate = atof(opt.arg);
        else if (c == 347) asm_opt->min_path_drop_rate = atof(opt.arg);
        else if (c == 348) asm_opt->trio_cov_het_ovlp = 1;
        else if (c == 349) asm_opt->ul_min_base = atol(opt.arg);
        else if (c == 350) asm_opt->self_scaf = 1;
        else if (c == 351) asm_opt->self_scaf_gap_max = atol(opt.arg);
        else if (c == 352) get_hic_enzymes(opt.arg, &(asm_opt->sec_in), 0);
        else if (c == 353) asm_opt->somatic_cov = atol(opt.arg);
        else if (c == 354) asm_opt->telo_motif = opt.arg;
        else if (c == 355) asm_opt->telo_pen = atol(opt.arg);
        else if (c == 356) asm_opt->telo_drop = atol(opt.arg);
        else if (c == 357) asm_opt->telo_mic_sc = atol(opt.arg);
        else if (c == 358) asm_opt->max_contig_tip = atol(opt.arg);
        else if (c == 359) {
            asm_opt->is_ont = 1; asm_opt->max_ov_diff_ec = 0.07; asm_opt->is_sc = 1; ///asm_opt->mz_win = 37; asm_opt->k_mer_length = 37;
        } /**else if (c == 360) {
            asm_opt->is_sc = 1; 
        }**/ else if (c == 361) {
            asm_opt->chemical_cov = atol(opt.arg);
        } else if (c == 362) {
            asm_opt->chemical_flank = atol(opt.arg);
        ///pending for integration
        /**        
        } else if (c == 363) {
            asm_opt->ul_mod = atol(opt.arg); 
        **/
        } else if (c == 364) {
            asm_opt->rl_cut = atol(opt.arg);
        } else if (c == 365) {
            asm_opt->sc_cut = atol(opt.arg);
        } else if (c == 'l') {   ///0: disable purge_dup; 1: purge containment; 2: purge overlap
            asm_opt->purge_level_primary = asm_opt->purge_level_trio = atoi(opt.arg);
        }
        else if (c == 's') asm_opt->purge_simi_rate_l2 = asm_opt->purge_simi_rate_l3 = atof(opt.arg);
        else if (c == 'O') asm_opt->purge_overlap_len = atoll(opt.arg);
        else if (c == ':') 
        {
			fprintf(stderr, "[ERROR] missing option argument in \"%s\"\n", argv[opt.i - 1]);
			return 1;
		} 
        else if (c == '?') 
        {
			fprintf(stderr, "[ERROR] unknown option in \"%s\"\n", argv[opt.i - 1]);
			return 1;
		}
    }
    
    if(asm_opt->purge_level_primary > 2) asm_opt->purge_simi_thres = asm_opt->purge_simi_rate_l3;
    else asm_opt->purge_simi_thres = asm_opt->purge_simi_rate_l2;
    
    if (argc == opt.ind)
    {
        Print_H(asm_opt);
        return 0;
    }

    get_queries(argc, argv, &opt, asm_opt);

    c = ((asm_opt->ar)?(asm_opt->ul_pst_join):(asm_opt->hifi_pst_join));
    if(c) {
        if((asm_opt->flag&HA_F_BAN_POST_JOIN)) asm_opt->flag-=HA_F_BAN_POST_JOIN;
    } else {
        asm_opt->flag |= HA_F_BAN_POST_JOIN;
    }

    // fprintf(stderr, "[M::%s::] post join::%u\n", __func__, (uint32_t)(!(asm_opt->flag & HA_F_BAN_POST_JOIN)));
    // exit(1);
    if(!(asm_opt->is_ont)) {
        asm_opt->rl_cut = -1; asm_opt->sc_cut = 1;
    }

    return check_option(asm_opt);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq 0x3beb36(%rip), %rax    # 0x3c4220
movq %rax, -0x38(%rbp)
movq 0x3beb33(%rip), %rax    # 0x3c4228
movq %rax, -0x30(%rbp)
movq 0x3beb30(%rip), %rax    # 0x3c4230
movq %rax, -0x28(%rbp)
movq 0x3beb2d(%rip), %rax    # 0x3c4238
movq %rax, -0x20(%rbp)
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0x38(%rbp), %rdi
movl $0x1, %ecx
leaq 0x37b953(%rip), %r8     # 0x381079
leaq 0x3beb13(%rip), %r9     # 0x3c4240
callq 0x6670
movl %eax, -0x3c(%rbp)
cmpl $0x0, %eax
jl 0x6558
cmpl $0x68, -0x3c(%rbp)
jne 0x5759
movq -0x18(%rbp), %rdi
callq 0x2550
movl $0x0, -0x4(%rbp)
jmp 0x6664
cmpl $0x76, -0x3c(%rbp)
je 0x5768
cmpl $0x12c, -0x3c(%rbp)     # imm = 0x12C
jne 0x5780
leaq 0x37b94a(%rip), %rdi    # 0x3810b9
callq 0x2300
movl $0x0, -0x4(%rbp)
jmp 0x6664
cmpl $0x66, -0x3c(%rbp)
jne 0x57a0
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xac(%rax)
jmp 0x654f
cmpl $0x74, -0x3c(%rbp)
jne 0x57bd
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x7c(%rax)
jmp 0x654d
cmpl $0x6f, -0x3c(%rbp)
jne 0x57d4
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x654b
cmpl $0x72, -0x3c(%rbp)
jne 0x57f4
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xf8(%rax)
jmp 0x6549
cmpl $0x6b, -0x3c(%rbp)
jne 0x5814
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x80(%rax)
jmp 0x6547
cmpl $0x69, -0x3c(%rbp)
jne 0x582d
movq -0x18(%rbp), %rax
movl $0x0, 0xf0(%rax)
jmp 0x6545
cmpl $0x77, -0x3c(%rbp)
jne 0x584d
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x94(%rax)
jmp 0x6543
cmpl $0x44, -0x3c(%rbp)
jne 0x586d
movq -0x30(%rbp), %rdi
callq 0x2250
movq -0x18(%rbp), %rax
movsd %xmm0, 0xb8(%rax)
jmp 0x6541
cmpl $0x46, -0x3c(%rbp)
jne 0x5883
movq -0x18(%rbp), %rax
movl (%rax), %ecx
orl $0x2, %ecx
movl %ecx, (%rax)
jmp 0x653f
cmpl $0x4e, -0x3c(%rbp)
jne 0x58a3
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xe8(%rax)
jmp 0x653d
cmpl $0x61, -0x3c(%rbp)
jne 0x58c3
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x104(%rax)
jmp 0x653b
cmpl $0x7a, -0x3c(%rbp)
jne 0x58e3
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x100(%rax)
jmp 0x6539
cmpl $0x62, -0x3c(%rbp)
jne 0x58fa
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x18(%rax)
jmp 0x6537
cmpl $0x63, -0x3c(%rbp)
jne 0x591a
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x128(%rax)
jmp 0x6535
cmpl $0x64, -0x3c(%rbp)
jne 0x593a
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x12c(%rax)
jmp 0x6533
cmpl $0x31, -0x3c(%rbp)
je 0x5946
cmpl $0x50, -0x3c(%rbp)
jne 0x5957
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x6531
cmpl $0x32, -0x3c(%rbp)
je 0x5963
cmpl $0x4d, -0x3c(%rbp)
jne 0x5974
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x28(%rax)
jmp 0x652f
cmpl $0x33, -0x3c(%rbp)
jne 0x598b
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x30(%rax)
jmp 0x652d
cmpl $0x34, -0x3c(%rbp)
jne 0x59a2
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x38(%rax)
jmp 0x652b
cmpl $0x35, -0x3c(%rbp)
jne 0x59b9
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x40(%rax)
jmp 0x6529
cmpl $0x78, -0x3c(%rbp)
jne 0x59dd
movq -0x30(%rbp), %rdi
callq 0x2250
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x160(%rax)
jmp 0x6527
cmpl $0x79, -0x3c(%rbp)
jne 0x5a01
movq -0x30(%rbp), %rdi
callq 0x2250
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x15c(%rax)
jmp 0x6525
cmpl $0x70, -0x3c(%rbp)
jne 0x5a23
movq -0x30(%rbp), %rdi
callq 0x2160
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x180(%rax)
jmp 0x6523
cmpl $0x6d, -0x3c(%rbp)
jne 0x5a45
movq -0x30(%rbp), %rdi
callq 0x2160
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x188(%rax)
jmp 0x6521
cmpl $0x6e, -0x3c(%rbp)
jne 0x5a65
movq -0x30(%rbp), %rdi
callq 0x2160
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x11c(%rax)
jmp 0x651f
cmpl $0x65, -0x3c(%rbp)
jne 0x5a7e
movq -0x18(%rbp), %rax
movl (%rax), %ecx
orl $0x200, %ecx            # imm = 0x200
movl %ecx, (%rax)
jmp 0x651d
cmpl $0x75, -0x3c(%rbp)
jne 0x5ac6
movq -0x30(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
je 0x5aab
movq -0x18(%rbp), %rax
movb $0x1, 0x25e(%rax)
movq -0x18(%rbp), %rax
movb $0x1, 0x25d(%rax)
jmp 0x5ac1
movq -0x18(%rbp), %rax
movb $0x0, 0x25e(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x25d(%rax)
jmp 0x651b
cmpl $0x12d, -0x3c(%rbp)     # imm = 0x12D
jne 0x5adf
movq -0x18(%rbp), %rax
movl (%rax), %ecx
orl $0x4, %ecx
movl %ecx, (%rax)
jmp 0x6519
cmpl $0x12e, -0x3c(%rbp)     # imm = 0x12E
jne 0x5af8
movq -0x18(%rbp), %rax
movl (%rax), %ecx
orl $0x10, %ecx
movl %ecx, (%rax)
jmp 0x6517
cmpl $0x12f, -0x3c(%rbp)     # imm = 0x12F
jne 0x5b11
movq -0x18(%rbp), %rax
movl (%rax), %ecx
orl $0x8, %ecx
movl %ecx, (%rax)
jmp 0x6515
cmpl $0x130, -0x3c(%rbp)     # imm = 0x130
jne 0x5b2a
movq -0x18(%rbp), %rax
movl (%rax), %ecx
orl $0x20, %ecx
movl %ecx, (%rax)
jmp 0x6513
cmpl $0x131, -0x3c(%rbp)     # imm = 0x131
jne 0x5b4d
movq -0x30(%rbp), %rdi
callq 0x2250
movq -0x18(%rbp), %rax
movsd %xmm0, 0xc0(%rax)
jmp 0x6511
cmpl $0x132, -0x3c(%rbp)     # imm = 0x132
jne 0x5b70
movq -0x30(%rbp), %rdi
callq 0x2250
movq -0x18(%rbp), %rax
movsd %xmm0, 0xc8(%rax)
jmp 0x650f
cmpl $0x133, -0x3c(%rbp)     # imm = 0x133
jne 0x5b8a
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x48(%rax)
jmp 0x650d
cmpl $0x134, -0x3c(%rbp)     # imm = 0x134
jne 0x5baa
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x78(%rax)
jmp 0x650b
cmpl $0x135, -0x3c(%rbp)     # imm = 0x135
jne 0x5bdb
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x144(%rax)
movq -0x18(%rbp), %rax
movl $0x1, 0x148(%rax)
jmp 0x6509
cmpl $0x136, -0x3c(%rbp)     # imm = 0x136
jne 0x5c77
movq $0x0, -0x48(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x48(%rbp), %rsi
movl $0xa, %edx
callq 0x2290
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x13c(%rax)
movq -0x48(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2c, %eax
jne 0x5c3c
movq -0x48(%rbp), %rdi
addq $0x1, %rdi
leaq -0x48(%rbp), %rsi
movl $0xa, %edx
callq 0x2290
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x140(%rax)
movq -0x18(%rbp), %rax
cmpl $-0x1, 0x13c(%rax)
je 0x5c56
movq -0x18(%rbp), %rax
cmpl $-0x1, 0x140(%rax)
jne 0x5c72
movq -0x18(%rbp), %rax
movl $0xffffffff, 0x140(%rax) # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl $0xffffffff, 0x13c(%rax) # imm = 0xFFFFFFFF
jmp 0x6507
cmpl $0x138, -0x3c(%rbp)     # imm = 0x138
jne 0x5c9a
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x150(%rax)
jmp 0x6505
cmpl $0x139, -0x3c(%rbp)     # imm = 0x139
jne 0x5cbd
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xec(%rax)
jmp 0x6503
cmpl $0x13a, -0x3c(%rbp)     # imm = 0x13A
jne 0x5cde
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x50, %rsi
xorl %edx, %edx
callq 0x51b0
jmp 0x6501
cmpl $0x13b, -0x3c(%rbp)     # imm = 0x13B
jne 0x5d03
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x50, %rsi
addq $0x8, %rsi
xorl %edx, %edx
callq 0x51b0
jmp 0x64ff
cmpl $0x13c, -0x3c(%rbp)     # imm = 0x13C
jne 0x5d27
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x60, %rsi
movl $0x1, %edx
callq 0x51b0
jmp 0x64fd
cmpl $0x13d, -0x3c(%rbp)     # imm = 0x13D
jne 0x5d4a
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xd8(%rax)
jmp 0x64fb
cmpl $0x13e, -0x3c(%rbp)     # imm = 0x13E
jne 0x5d6d
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xdc(%rax)
jmp 0x64f9
cmpl $0x13f, -0x3c(%rbp)     # imm = 0x13F
jne 0x5d90
movq -0x30(%rbp), %rdi
callq 0x2250
movq -0x18(%rbp), %rax
movsd %xmm0, 0xe0(%rax)
jmp 0x64f7
cmpl $0x140, -0x3c(%rbp)     # imm = 0x140
jne 0x5dba
movq -0x18(%rbp), %rax
movl (%rax), %ecx
subl $0x800, %ecx            # imm = 0x800
movl %ecx, (%rax)
movq -0x18(%rbp), %rax
movl $0x1, 0x1e4(%rax)
jmp 0x64f5
cmpl $0x141, -0x3c(%rbp)     # imm = 0x141
jne 0x5ddd
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x1c0(%rax)
jmp 0x64f3
cmpl $0x142, -0x3c(%rbp)     # imm = 0x142
jne 0x5e02
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x1c8(%rax)
jmp 0x64f1
cmpl $0x143, -0x3c(%rbp)     # imm = 0x143
jne 0x5e25
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x1d0(%rax)
jmp 0x64ef
cmpl $0x144, -0x3c(%rbp)     # imm = 0x144
jne 0x5e48
movq -0x30(%rbp), %rdi
callq 0x2250
movq -0x18(%rbp), %rax
movsd %xmm0, 0x1d8(%rax)
jmp 0x64ed
cmpl $0x145, -0x3c(%rbp)     # imm = 0x145
jne 0x5e6b
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x1bc(%rax)
jmp 0x64eb
cmpl $0x146, -0x3c(%rbp)     # imm = 0x146
jne 0x5e8e
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x1e0(%rax)
jmp 0x64e9
cmpl $0x147, -0x3c(%rbp)     # imm = 0x147
jne 0x5eb3
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x1e8(%rax)
jmp 0x64e7
cmpl $0x148, -0x3c(%rbp)     # imm = 0x148
jne 0x5ed6
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x14c(%rax)
jmp 0x64e5
cmpl $0x149, -0x3c(%rbp)     # imm = 0x149
jne 0x5ef2
movq -0x18(%rbp), %rax
movl (%rax), %ecx
orl $0x1000, %ecx           # imm = 0x1000
movl %ecx, (%rax)
jmp 0x64e3
cmpl $0x14a, -0x3c(%rbp)     # imm = 0x14A
jne 0x5f19
movq -0x30(%rbp), %rdi
callq 0x2250
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x1fc(%rax)
jmp 0x64e1
cmpl $0x14b, -0x3c(%rbp)     # imm = 0x14B
jne 0x5f3c
movq -0x30(%rbp), %rdi
callq 0x2220
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xb0(%rax)
jmp 0x64df
cmpl $0x14c, -0x3c(%rbp)     # imm = 0x14C
jne 0x5f61
movq -0x30(%rbp), %rdi
callq 0x5570
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x200(%rax)
jmp 0x64dd
cmpl $0x14d, -0x3c(%rbp)     # imm = 0x14D
jne 0x5f82
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x68, %rsi
xorl %edx, %edx
callq 0x51b0
jmp 0x64db
cmpl $0x14e, -0x3c(%rbp)     # imm = 0x14E
jne 0x5f9e
movq -0x18(%rbp), %rax
movl (%rax), %ecx
orl $0x2000, %ecx           # imm = 0x2000
movl %ecx, (%rax)
jmp 0x64d9
cmpl $0x14f, -0x3c(%rbp)     # imm = 0x14F
jne 0x5fc5
movq -0x30(%rbp), %rdi
callq 0x2250
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x208(%rax)
jmp 0x64d7
cmpl $0x150, -0x3c(%rbp)     # imm = 0x150
jne 0x5fe8
movq -0x30(%rbp), %rdi
callq 0x2250
movq -0x18(%rbp), %rax
movsd %xmm0, 0x228(%rax)
jmp 0x64d5
cmpl $0x151, -0x3c(%rbp)     # imm = 0x151
jne 0x6001
movq -0x18(%rbp), %rax
movb $0x1, 0x248(%rax)
jmp 0x64d3
cmpl $0x152, -0x3c(%rbp)     # imm = 0x152
jne 0x6024
movq -0x30(%rbp), %rdi
callq 0x2220
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x120(%rax)
jmp 0x64d1
cmpl $0x153, -0x3c(%rbp)     # imm = 0x153
jne 0x603d
movq -0x18(%rbp), %rax
movb $0x1, 0x249(%rax)
jmp 0x64cf
cmpl $0x154, -0x3c(%rbp)     # imm = 0x154
jne 0x607f
movq -0x30(%rbp), %rdi
callq 0x2250
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x174(%rax)
movq -0x18(%rbp), %rax
xorps %xmm0, %xmm0
ucomiss 0x174(%rax), %xmm0
jbe 0x607a
movq -0x18(%rbp), %rax
movb $0x0, 0x24a(%rax)
jmp 0x64cd
cmpl $0x155, -0x3c(%rbp)     # imm = 0x155
jne 0x6098
movq -0x18(%rbp), %rax
movb $0x1, 0x24e(%rax)
jmp 0x64cb
cmpl $0x156, -0x3c(%rbp)     # imm = 0x156
jne 0x60bb
movq -0x30(%rbp), %rdi
callq 0x2220
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x250(%rax)
jmp 0x64c9
cmpl $0x157, -0x3c(%rbp)     # imm = 0x157
jne 0x60d7
movq -0x18(%rbp), %rax
movl $0x1, 0x254(%rax)
jmp 0x64c7
cmpl $0x158, -0x3c(%rbp)     # imm = 0x158
jne 0x60fa
movq -0x30(%rbp), %rdi
callq 0x2220
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x258(%rax)
jmp 0x64c5
cmpl $0x159, -0x3c(%rbp)     # imm = 0x159
jne 0x6113
movq -0x18(%rbp), %rax
movb $0x1, 0x25c(%rax)
jmp 0x64c3
cmpl $0x15a, -0x3c(%rbp)     # imm = 0x15A
jne 0x613a
movq -0x30(%rbp), %rdi
callq 0x2250
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x17c(%rax)
jmp 0x64c1
cmpl $0x15b, -0x3c(%rbp)     # imm = 0x15B
jne 0x6161
movq -0x30(%rbp), %rdi
callq 0x2250
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x178(%rax)
jmp 0x64bf
cmpl $0x15c, -0x3c(%rbp)     # imm = 0x15C
jne 0x617e
movq -0x18(%rbp), %rax
movq $0x1, 0x220(%rax)
jmp 0x64bd
cmpl $0x15d, -0x3c(%rbp)     # imm = 0x15D
jne 0x61a1
movq -0x30(%rbp), %rdi
callq 0x2220
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x260(%rax)
jmp 0x64bb
cmpl $0x15e, -0x3c(%rbp)     # imm = 0x15E
jne 0x61ba
movq -0x18(%rbp), %rax
movb $0x1, 0x264(%rax)
jmp 0x64b9
cmpl $0x15f, -0x3c(%rbp)     # imm = 0x15F
jne 0x61df
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x278(%rax)
jmp 0x64b7
cmpl $0x160, -0x3c(%rbp)     # imm = 0x160
jne 0x6200
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x70, %rsi
xorl %edx, %edx
callq 0x51b0
jmp 0x64b5
cmpl $0x161, -0x3c(%rbp)     # imm = 0x161
jne 0x6225
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x280(%rax)
jmp 0x64b3
cmpl $0x162, -0x3c(%rbp)     # imm = 0x162
jne 0x6242
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x288(%rax)
jmp 0x64b1
cmpl $0x163, -0x3c(%rbp)     # imm = 0x163
jne 0x6267
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x290(%rax)
jmp 0x64af
cmpl $0x164, -0x3c(%rbp)     # imm = 0x164
jne 0x628c
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x298(%rax)
jmp 0x64ad
cmpl $0x165, -0x3c(%rbp)     # imm = 0x165
jne 0x62b1
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x2a0(%rax)
jmp 0x64ab
cmpl $0x166, -0x3c(%rbp)     # imm = 0x166
jne 0x62d4
movq -0x30(%rbp), %rdi
callq 0x2220
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x124(%rax)
jmp 0x64a9
cmpl $0x167, -0x3c(%rbp)     # imm = 0x167
jne 0x6314
movq -0x18(%rbp), %rax
movq $0x1, 0x2a8(%rax)
movq -0x18(%rbp), %rax
movsd 0x378d68(%rip), %xmm0   # 0x37f060
movsd %xmm0, 0xc0(%rax)
movq -0x18(%rbp), %rax
movq $0x1, 0x2b0(%rax)
jmp 0x64a7
cmpl $0x169, -0x3c(%rbp)     # imm = 0x169
jne 0x6339
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x2b8(%rax)
jmp 0x64a5
cmpl $0x16a, -0x3c(%rbp)     # imm = 0x16A
jne 0x635e
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x2c0(%rax)
jmp 0x64a3
cmpl $0x16c, -0x3c(%rbp)     # imm = 0x16C
jne 0x6383
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x2c8(%rax)
jmp 0x64a1
cmpl $0x16d, -0x3c(%rbp)     # imm = 0x16D
jne 0x63a8
movq -0x30(%rbp), %rdi
callq 0x2220
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x2d0(%rax)
jmp 0x649f
cmpl $0x6c, -0x3c(%rbp)
jne 0x63d2
movq -0x30(%rbp), %rdi
callq 0x2320
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x134(%rax)
movq -0x18(%rbp), %rax
movl %ecx, 0x130(%rax)
jmp 0x649d
cmpl $0x73, -0x3c(%rbp)
jne 0x6402
movq -0x30(%rbp), %rdi
callq 0x2250
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x168(%rax)
movq -0x18(%rbp), %rax
movss %xmm0, 0x164(%rax)
jmp 0x649b
cmpl $0x4f, -0x3c(%rbp)
jne 0x641f
movq -0x30(%rbp), %rdi
callq 0x2160
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x138(%rax)
jmp 0x6499
cmpl $0x3a, -0x3c(%rbp)
jne 0x645a
movq 0x3bdbb4(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdx
leaq 0x37ac7e(%rip), %rsi    # 0x3810c5
movb $0x0, %al
callq 0x22a0
movl $0x1, -0x4(%rbp)
jmp 0x6664
cmpl $0x3f, -0x3c(%rbp)
jne 0x6495
movq 0x3bdb79(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdx
leaq 0x37ac6c(%rip), %rsi    # 0x3810ee
movb $0x0, %al
callq 0x22a0
movl $0x1, -0x4(%rbp)
jmp 0x6664
jmp 0x6497
jmp 0x6499
jmp 0x649b
jmp 0x649d
jmp 0x649f
jmp 0x64a1
jmp 0x64a3
jmp 0x64a5
jmp 0x64a7
jmp 0x64a9
jmp 0x64ab
jmp 0x64ad
jmp 0x64af
jmp 0x64b1
jmp 0x64b3
jmp 0x64b5
jmp 0x64b7
jmp 0x64b9
jmp 0x64bb
jmp 0x64bd
jmp 0x64bf
jmp 0x64c1
jmp 0x64c3
jmp 0x64c5
jmp 0x64c7
jmp 0x64c9
jmp 0x64cb
jmp 0x64cd
jmp 0x64cf
jmp 0x64d1
jmp 0x64d3
jmp 0x64d5
jmp 0x64d7
jmp 0x64d9
jmp 0x64db
jmp 0x64dd
jmp 0x64df
jmp 0x64e1
jmp 0x64e3
jmp 0x64e5
jmp 0x64e7
jmp 0x64e9
jmp 0x64eb
jmp 0x64ed
jmp 0x64ef
jmp 0x64f1
jmp 0x64f3
jmp 0x64f5
jmp 0x64f7
jmp 0x64f9
jmp 0x64fb
jmp 0x64fd
jmp 0x64ff
jmp 0x6501
jmp 0x6503
jmp 0x6505
jmp 0x6507
jmp 0x6509
jmp 0x650b
jmp 0x650d
jmp 0x650f
jmp 0x6511
jmp 0x6513
jmp 0x6515
jmp 0x6517
jmp 0x6519
jmp 0x651b
jmp 0x651d
jmp 0x651f
jmp 0x6521
jmp 0x6523
jmp 0x6525
jmp 0x6527
jmp 0x6529
jmp 0x652b
jmp 0x652d
jmp 0x652f
jmp 0x6531
jmp 0x6533
jmp 0x6535
jmp 0x6537
jmp 0x6539
jmp 0x653b
jmp 0x653d
jmp 0x653f
jmp 0x6541
jmp 0x6543
jmp 0x6545
jmp 0x6547
jmp 0x6549
jmp 0x654b
jmp 0x654d
jmp 0x654f
jmp 0x6551
jmp 0x6553
jmp 0x570f
movq -0x18(%rbp), %rax
cmpl $0x2, 0x130(%rax)
jle 0x657f
movq -0x18(%rbp), %rax
movss 0x168(%rax), %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x16c(%rax)
jmp 0x6597
movq -0x18(%rbp), %rax
movss 0x164(%rax), %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x16c(%rax)
movl -0x8(%rbp), %eax
cmpl -0x38(%rbp), %eax
jne 0x65b4
movq -0x18(%rbp), %rdi
callq 0x2550
movl $0x0, -0x4(%rbp)
jmp 0x6664
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rcx
leaq -0x38(%rbp), %rdx
callq 0x4b60
movq -0x18(%rbp), %rax
cmpq $0x0, 0x68(%rax)
je 0x65e2
movq -0x18(%rbp), %rax
movb 0x25e(%rax), %al
movb %al, -0x49(%rbp)
jmp 0x65ef
movq -0x18(%rbp), %rax
movb 0x25d(%rax), %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %al
movzbl %al, %eax
movl %eax, -0x3c(%rbp)
cmpl $0x0, -0x3c(%rbp)
je 0x661e
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
je 0x661c
movq -0x18(%rbp), %rax
movl (%rax), %ecx
subl $0x100, %ecx            # imm = 0x100
movl %ecx, (%rax)
jmp 0x662c
movq -0x18(%rbp), %rax
movl (%rax), %ecx
orl $0x100, %ecx            # imm = 0x100
movl %ecx, (%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x2a8(%rax)
jne 0x6658
movq -0x18(%rbp), %rax
movq $-0x1, 0x2c8(%rax)
movq -0x18(%rbp), %rax
movq $0x1, 0x2d0(%rax)
movq -0x18(%rbp), %rdi
callq 0x3c90
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)