// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rdx, %r13
movq %rsi, %r15
movl %edi, %r12d
movabsq $0x100000000, %rsi      # imm = 0x100000000
movups 0x1de156(%rip), %xmm0   # 0x1e2608
movaps %xmm0, 0x50(%rsp)
movups 0x1de13a(%rip), %xmm0   # 0x1e25f8
movaps %xmm0, 0x40(%rsp)
movslq %edi, %r8
leal -0x1(%r8), %eax
movl %eax, 0x60(%rsp)
leaq 0x70(%rdx), %rax
movq %rax, 0xa8(%rsp)
leaq 0x68(%rdx), %rax
movq %rax, 0xa0(%rsp)
leaq 0x60(%rdx), %rax
movq %rax, 0x98(%rsp)
leaq 0x58(%rdx), %rax
movq %rax, 0x90(%rsp)
leaq 0x50(%rdx), %rax
movq %rax, 0x88(%rsp)
movl 0x54(%rsp), %ebp
movl 0x58(%rsp), %eax
movl %eax, 0x38(%rsp)
movl 0x5c(%rsp), %eax
movq %rax, 0x30(%rsp)
movq %r8, (%rsp)
movq %rbp, 0x18(%rsp)
movslq %ebp, %rax
movq %rax, %r14
shlq $0x20, %r14
leaq (%r15,%rax,8), %rcx
xorl %ebx, %ebx
movq %rax, %rbp
leaq (%rax,%rbx), %rdx
cmpq %r8, %rdx
jge 0x5383
movq (%rcx,%rbx,8), %rdx
cmpb $0x2d, (%rdx)
jne 0x4557
cmpb $0x0, 0x1(%rdx)
jne 0x4562
incq %rbp
incq %rbx
addq %rsi, %r14
jmp 0x453b
movl %r12d, 0xc(%rsp)
movl 0x18(%rsp), %r12d
addq %rbx, %r12
movl %r12d, 0x54(%rsp)
movl 0x30(%rsp), %eax
addq %rbx, %rax
movq %rax, 0x68(%rsp)
movl %eax, 0x5c(%rsp)
andq $0x0, 0x48(%rsp)
orl $-0x1, 0x50(%rsp)
sarq $0x1d, %r14
movq (%r15,%r14), %rcx
cmpb $0x2d, (%rcx)
jne 0x546b
movzbl 0x1(%rcx), %eax
cmpl $0x2d, %eax
movq %r13, 0x28(%rsp)
movq %r15, 0x20(%rsp)
je 0x463b
testl %eax, %eax
je 0x546b
movl 0x38(%rsp), %eax
cmpl $0x1, %eax
adcl $0x0, %eax
movl %eax, %ebp
cltq
leaq 0x1(%rax), %r13
movl %r13d, 0x58(%rsp)
movq %rcx, %r15
movsbl (%rcx,%rax), %esi
movl %esi, 0x44(%rsp)
leaq 0x1ddc85(%rip), %rdi    # 0x1e226d
movl %esi, 0x10(%rsp)
pushq $0x40
popq %rdx
callq 0x21c0
pushq $0x3f
popq %rcx
testq %rax, %rax
je 0x47ab
cmpb $0x3a, 0x1(%rax)
jne 0x47a5
cmpb $0x0, (%r15,%r13)
je 0x483c
addq %r13, %r15
movq %r15, %rdi
movl %r12d, %r14d
movq 0x28(%rsp), %r13
movq 0x20(%rsp), %r15
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq (%rsp), %r8
jmp 0x486e
cmpb $0x0, 0x2(%rcx)
je 0x5492
andl $0x0, 0x44(%rsp)
leaq 0x2(%rcx), %rax
movq %rax, 0x38(%rsp)
addq $0x3, %rcx
xorl %r15d, %r15d
movzbl -0x1(%rcx), %eax
testl %eax, %eax
je 0x466f
cmpl $0x3d, %eax
je 0x466f
incq %rcx
addq %rsi, %r15
jmp 0x465a
movq %rcx, 0x80(%rsp)
sarq $0x20, %r15
movq $0x0, 0x10(%rsp)
leaq 0x24eb95(%rip), %r13    # 0x253220
movl $0x0, 0x64(%rsp)
movq $0x0, 0x70(%rsp)
movq $0x0, 0x78(%rsp)
movq (%r13), %r14
testq %r14, %r14
je 0x46f9
movq 0x38(%rsp), %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x20a0
testl %eax, %eax
jne 0x46e5
cmpb $0x0, (%r14,%r15)
je 0x46d4
incl 0x64(%rsp)
movq %r13, 0x78(%rsp)
jmp 0x46e5
movq 0x10(%rsp), %rax
incl %eax
movq %rax, 0x10(%rsp)
movq %r13, 0x70(%rsp)
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq (%rsp), %r8
addq $0x10, %r13
jmp 0x46a5
movq 0x10(%rsp), %rdi
cmpl $0x2, %edi
jge 0x54d1
testl %edi, %edi
sete %al
movl 0x64(%rsp), %r9d
cmpl $0x2, %r9d
setge %cl
testb %cl, %al
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rdx
jne 0x54dd
cmpl $0x1, %r9d
movl $0x0, %eax
movq 0x78(%rsp), %r9
cmovneq %rax, %r9
cmpl $0x1, %edi
cmoveq 0x70(%rsp), %r9
testq %r9, %r9
je 0x478f
movl 0xc(%r9), %eax
movl %eax, 0x10(%rsp)
movl %eax, 0x44(%rsp)
movq %r9, %rax
leaq 0x24eac0(%rip), %rcx    # 0x253220
subq %rcx, %rax
shrq $0x4, %rax
movl %eax, 0x50(%rsp)
movq 0x80(%rsp), %rax
cmpb $0x3d, -0x1(%rax)
movq 0x28(%rsp), %r13
jne 0x480f
movq %rax, 0x48(%rsp)
movq %rax, %rdi
jmp 0x4811
xorl %edi, %edi
pushq $0x3f
popq %rbp
movl %ebp, 0x10(%rsp)
movl %r12d, %r14d
movq 0x28(%rsp), %r13
jmp 0x4881
movl 0x10(%rsp), %eax
movl %eax, %ecx
cmpl $-0x2, %ebp
jg 0x47d6
xorl %edi, %edi
movl %ecx, 0x10(%rsp)
movl %r12d, %r14d
movq 0x28(%rsp), %r13
movq 0x20(%rsp), %r15
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq (%rsp), %r8
jmp 0x4881
movq 0x20(%rsp), %rax
movq (%rax,%r14), %rax
movl %r13d, %edx
cmpb $0x0, (%rax,%rdx)
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq (%rsp), %r8
je 0x4827
movl %r13d, 0x38(%rsp)
movl %r12d, %ebp
xorl %edi, %edi
movq 0x28(%rsp), %r13
movq 0x20(%rsp), %r15
jmp 0x48eb
xorl %edi, %edi
cmpl $0x1, 0x8(%r9)
jne 0x487e
cmpb $0x0, -0x1(%rax)
jne 0x487e
cmpl %r12d, 0x60(%rsp)
jg 0x4860
jmp 0x4877
xorl %edi, %edi
movl %ecx, 0x10(%rsp)
movl %r12d, %r14d
movq 0x28(%rsp), %r13
movq 0x20(%rsp), %r15
jmp 0x4881
cmpl %r12d, 0x60(%rsp)
movq 0x28(%rsp), %r13
movq 0x20(%rsp), %r15
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq (%rsp), %r8
movq 0x18(%rsp), %rdx
jle 0x4875
leal (%rdx,%rbx), %r14d
incl %r14d
movslq %r14d, %rax
movq (%r15,%rax,8), %rdi
movq %rdi, 0x48(%rsp)
jmp 0x4881
xorl %edi, %edi
pushq $0x3a
popq %rbp
movl %ebp, 0x10(%rsp)
movl %r12d, %r14d
leal 0x1(%r14), %ebp
movl %ebp, 0x54(%rsp)
andl $0x0, 0x58(%rsp)
cmpl $0x0, 0x68(%rsp)
jle 0x48da
movq %rdi, 0x18(%rsp)
movl $0x0, 0x38(%rsp)
cmpl %r14d, %r12d
jg 0x48bc
movq %r15, %rdi
movl %r12d, %esi
movq 0x68(%rsp), %rdx
callq 0x580f
incl %r12d
jmp 0x48a2
movl %ebp, %r12d
movl 0x10(%rsp), %eax
movl %eax, %ecx
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq (%rsp), %r8
movq 0x18(%rsp), %rdi
jmp 0x48eb
movl $0x0, 0x38(%rsp)
movl %ebp, %r12d
movl 0x10(%rsp), %eax
movl %eax, %ecx
subl 0x30(%rsp), %r12d
movl %r12d, %eax
subl %ebx, %eax
movl %eax, 0x40(%rsp)
testl %ecx, %ecx
js 0x5482
leal -0x61(%rcx), %eax
cmpl $0x19, %eax
ja 0x493d
leaq 0x1db7c4(%rip), %rdx    # 0x1e00d4
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
movl 0xc(%rsp), %r12d
jmpq *%rax
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x104(%r13)
jmp 0x4aec
cmpl $0x31, %ecx
movl 0xc(%rsp), %r12d
je 0x49aa
cmpl $0x44, %ecx
je 0x4ac9
cmpl $0x46, %ecx
je 0x4ad9
cmpl $0x4e, %ecx
je 0x4abb
cmpl $0x50, %ecx
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq (%rsp), %r8
je 0x49aa
cmpl $0x12c, %ecx            # imm = 0x12C
je 0x54c0
leal -0x12d(%rcx), %eax
cmpl $0x34, %eax
ja 0x4afb
leaq 0x1db7e9(%rip), %rdx    # 0x1e0180
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
orb $0x4, (%r13)
jmp 0x4aec
movq %rdi, 0x20(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x94(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0xac(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x7c(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x128(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0xf8(%r13)
jmp 0x4aec
andl $0x0, 0xf0(%r13)
jmp 0x4aec
movq %rdi, 0x18(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x12c(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x80(%r13)
jmp 0x4aec
movq %rdi, 0x10(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x100(%r13)
jmp 0x4aec
callq 0x2330
movl %eax, 0xe8(%r13)
jmp 0x4ade
callq 0x2260
movsd %xmm0, 0xb8(%r13)
jmp 0x4ade
orb $0x2, (%r13)
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq (%rsp), %r8
movq 0x68(%rsp), %rax
movq %rax, 0x30(%rsp)
jmp 0x4523
leal -0x6d(%rcx), %eax
cmpl $0xc, %eax
ja 0x4b2f
leaq 0x1db642(%rip), %rdx    # 0x1e014c
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
callq 0x2140
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x188(%r13)
jmp 0x4aec
leal -0x32(%rcx), %eax
cmpl $0x3, %eax
ja 0x4b4d
leaq 0x1db5fe(%rip), %rcx    # 0x1e013c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rdi, 0x30(%r13)
jmp 0x4aec
cmpl $0x65, %ecx
je 0x51b9
cmpl $0x4d, %ecx
jne 0x4b61
movq %rdi, 0x28(%r13)
jmp 0x4aec
leal -0x162(%rcx), %eax
cmpl $0xb, %eax
ja 0x51d1
leaq 0x1db6dd(%rip), %rcx    # 0x1e0254
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rdi, 0x288(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x15c(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x160(%r13)
jmp 0x4aec
callq 0x2140
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x11c(%r13)
jmp 0x4aec
callq 0x2140
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x180(%r13)
jmp 0x4aec
callq 0x2140
testq %rax, %rax
je 0x51c3
movw $0x101, 0x25d(%r13)     # imm = 0x101
jmp 0x4ade
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x250(%r13)
jmp 0x4aec
movb $0x1, 0x248(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x178(%r13)
jmp 0x4aec
movb $0x1, 0x25c(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x14c(%r13)
jmp 0x4aec
movb $0x1, 0x24e(%r13)
jmp 0x4aec
movb $0x1, 0x264(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x17c(%r13)
jmp 0x4aec
movq 0xa8(%rsp), %rsi
jmp 0x50d3
callq 0x43a9
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x200(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movsd %xmm0, 0x228(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x1d0(%r13)
jmp 0x4aec
movb $0x1, 0x249(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movsd %xmm0, 0x1d8(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x208(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x1e8(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x174(%r13)
xorps %xmm1, %xmm1
ucomiss %xmm0, %xmm1
jbe 0x4aec
movb $0x0, 0x24a(%r13)
jmp 0x4aec
leaq 0xb0(%rsp), %r14
andq $0x0, (%r14)
pushq $0xa
popq %rdx
movq %r14, %rsi
callq 0x22a0
movl %eax, 0x13c(%r13)
movq (%r14), %rdi
cmpb $0x2c, (%rdi)
jne 0x4e4b
incq %rdi
leaq 0xb0(%rsp), %rsi
pushq $0xa
popq %rdx
callq 0x22a0
movl %eax, 0x140(%r13)
movl 0x13c(%r13), %eax
cmpl $-0x1, %eax
je 0x4e5e
cmpl $-0x1, 0x140(%r13)
jne 0x4ade
orq $-0x1, 0x13c(%r13)
jmp 0x4ade
movq 0x88(%rsp), %rsi
jmp 0x50d3
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x144(%r13)
movl $0x1, 0x148(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0xdc(%r13)
jmp 0x4aec
movq $0x1, 0x220(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movsd %xmm0, 0xe0(%r13)
jmp 0x4aec
orb $0x10, 0x1(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x78(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x280(%r13)
jmp 0x4aec
addl $0xfffff800, (%r13)     # imm = 0xFFFFF800
movl $0x1, 0x1e4(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x150(%r13)
jmp 0x4aec
orb $0x20, (%r13)
jmp 0x4aec
pushq $0x1
popq %rdx
movq 0x98(%rsp), %rsi
jmp 0x50d5
orb $0x10, (%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x1c8(%r13)
jmp 0x4aec
orb $0x8, (%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x1c0(%r13)
jmp 0x4aec
movq %rdi, 0x48(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movsd %xmm0, 0xc8(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movsd %xmm0, 0xc0(%r13)
jmp 0x4aec
callq 0x2260
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x1fc(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0xd8(%r13)
jmp 0x4aec
orb $0x20, 0x1(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0xec(%r13)
jmp 0x4aec
movq 0xa0(%rsp), %rsi
jmp 0x50d3
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x1bc(%r13)
jmp 0x4aec
movl $0x1, 0x254(%r13)
jmp 0x4aec
movq 0x90(%rsp), %rsi
xorl %edx, %edx
callq 0x41ea
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0xb0(%r13)
jmp 0x4aec
callq 0x2330
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x1e0(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x260(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x278(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x120(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x258(%r13)
jmp 0x4aec
movq %rdi, 0x38(%r13)
jmp 0x4aec
movq %rdi, 0x40(%r13)
jmp 0x4aec
orb $0x2, 0x1(%r13)
jmp 0x4aec
andw $0x0, 0x25d(%r13)
jmp 0x4ade
cmpl $0x4f, %ecx
je 0x535a
cmpl $0x6c, %ecx
je 0x536b
cmpl $0x73, %ecx
je 0x5335
cmpl $0x3a, %ecx
je 0x5505
cmpl $0x3f, %ecx
movl 0xc(%rsp), %r12d
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq (%rsp), %r8
jne 0x4aec
jmp 0x5520
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x2c0(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movl %eax, 0x124(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x298(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x2d0(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x290(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x2a0(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x2c8(%r13)
jmp 0x4aec
callq 0x2230
movq (%rsp), %r8
movabsq $0x100000000, %rsi      # imm = 0x100000000
movq %rax, 0x2b8(%r13)
jmp 0x4aec
pushq $0x1
popq %rax
movq %rax, 0x2a8(%r13)
movabsq $0x3fb1eb851eb851ec, %rcx # imm = 0x3FB1EB851EB851EC
movq %rcx, 0xc0(%r13)
movq %rax, 0x2b0(%r13)
jmp 0x4aec
callq 0x2260
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x168(%r13)
movss %xmm0, 0x164(%r13)
movl 0xc(%rsp), %r12d
jmp 0x4ade
callq 0x2140
movl %eax, 0x138(%r13)
jmp 0x4ade
callq 0x2330
movl %eax, 0x134(%r13)
movl %eax, 0x130(%r13)
jmp 0x4ade
movq 0x18(%rsp), %r14
addl %ebx, %r14d
movl %r14d, 0x54(%rsp)
movq 0x30(%rsp), %rbp
leal (%rbx,%rbp), %eax
movl %eax, 0x5c(%rsp)
andq $0x0, 0x48(%rsp)
orl $-0x1, 0x50(%rsp)
subl %ebp, %r14d
subl %ebx, %r14d
movl %r14d, 0x40(%rsp)
xorl %eax, %eax
cmpl $0x3, 0x130(%r13)
setge %al
movss 0x164(%r13,%rax,4), %xmm0
movss %xmm0, 0x16c(%r13)
cmpl %r12d, %r14d
jne 0x53f3
movq %r13, %rdi
callq 0x254b
xorl %eax, %eax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x40(%rsp), %rdx
movl %r12d, %edi
movq %r15, %rsi
movq %r13, %rcx
callq 0x3e4a
cmpq $0x1, 0x68(%r13)
movq %r13, %rax
sbbq $0x0, %rax
cmpb $0x0, 0x25e(%rax)
movl (%r13), %eax
je 0x542c
btl $0x8, %eax
jae 0x5435
addl $0xffffff00, %eax       # imm = 0xFFFFFF00
jmp 0x5431
orl $0x100, %eax            # imm = 0x100
movl %eax, (%r13)
cmpq $0x0, 0x2a8(%r13)
jne 0x5452
orq $-0x1, 0x2c8(%r13)
movq $0x1, 0x2d0(%r13)
movq %r13, %rdi
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x34c7
movq 0x18(%rsp), %r14
addl %ebx, %r14d
movl 0xc(%rsp), %r12d
movq 0x30(%rsp), %rbp
jmp 0x53a7
subl %ebx, %r12d
movl %r12d, %r14d
movl 0xc(%rsp), %r12d
jmp 0x53b2
movq 0x30(%rsp), %rbp
leal (%rbx,%rbp), %edx
movq 0x18(%rsp), %r14
leal (%r14,%rbx), %esi
movq %r15, %rdi
callq 0x580f
addl %ebx, %r14d
incl %r14d
movl %r14d, 0x54(%rsp)
movl 0xc(%rsp), %r12d
jmp 0x53a7
leaq 0x1dcde6(%rip), %rdi    # 0x1e22ad
callq 0x2310
jmp 0x53df
movq 0x18(%rsp), %rbp
addl %ebx, %ebp
movq 0x20(%rsp), %r15
movq 0x24dafc(%rip), %rax    # 0x252fe0
movq (%rax), %rdi
movslq %ebp, %rax
movq -0x8(%r15,%rax,8), %rdx
leaq 0x1dcdec(%rip), %rsi    # 0x1e22e2
xorl %eax, %eax
callq 0x22b0
pushq $0x1
popq %rax
jmp 0x53e1
movq 0x24dad4(%rip), %rax    # 0x252fe0
movq (%rax), %rdi
movslq %ebp, %rax
movq -0x8(%r15,%rax,8), %rdx
leaq 0x1dcd9b(%rip), %rsi    # 0x1e22b9
jmp 0x54f6
jmp 0x54dd