// File: chhylp123[P]hifiasm/ecovlp.cpp
// Function: worker_hap_ec(void*, long, int)
static void worker_hap_ec(void *data, long i, int tid)
{
	ec_ovec_buf_t0 *b = &(((ec_ovec_buf_t*)data)->a[tid]);
    uint32_t high_occ = asm_opt.hom_cov * (2.0 - HA_KMER_GOOD_RATIO);
    uint32_t low_occ = asm_opt.hom_cov * HA_KMER_GOOD_RATIO;
    overlap_region *aux_o = NULL; asg64_v buf0; uint32_t qlen = 0;

    /**
    if((i != 1129685) && (i != 1137865) && (i != 1137917) && (i != 1140647) && (i != 1144740) && (i != 1148936) && (i != 1149134) && (i != 1151224) && (i != 1151386) && (i != 1152960) && (i != 1154846) && (i != 1154881) && (i != 1155112) && 
        (i != 1156823) && (i != 1157099) && (i != 1157393) && (i != 1158300) && (i != 1158368) && (i != 1160411) && (i != 1160659) && (i != 1161458) && (i != 1163595) && (i != 1164084) && (i != 1164230) && (i != 1165050) && (i != 1168249) && 
        (i != 1168304) && (i != 1168514) && (i != 1170447) && (i != 1171377) && (i != 1171387) && (i != 1172376) && (i != 1173566) && (i != 1174275) && (i != 1174434) && (i != 1174511) && (i != 1174860) && (i != 1175306) && (i != 1175314) && 
        (i != 1177101) && (i != 1178196) && (i != 1178470) && (i != 1179327) && (i != 1179626) && (i != 1180357) && (i != 1181347) && (i != 1181422) && (i != 1181725) && (i != 1183135) && (i != 1183734) && (i != 1185569) && (i != 1185604) && 
        (i != 1186192) && (i != 1188441) && (i != 1188487) && (i != 1189865) && (i != 1189943) && (i != 1192819) && (i != 1193133) && (i != 1196908) && (i != 1197590) && (i != 1200549) && (i != 1200757) && (i != 1205500)) return;

    fprintf(stderr, "%ld\t+++\n", i);
    **/
    // if(i < 1100000 || i > 1400000) return;
    // if(i % 100000 == 0) fprintf(stderr, "-a-[M::%s-beg] rid->%ld\n", __func__, i);
    // if (memcmp("c42804f3-0e13-43a0-8a71-b91b40accf9a", Get_NAME((R_INF), i), Get_NAME_LENGTH((R_INF),i)) == 0) {
    // if (memcmp("b2e68ecf-381a-439c-b676-c1e6831d6acf", Get_NAME((R_INF), i), Get_NAME_LENGTH((R_INF),i)) == 0) {
    // if (memcmp("e3f3f43a-e200-4cac-8acd-3f85428f3811", Get_NAME((R_INF), i), Get_NAME_LENGTH((R_INF),i)) == 0) {
    // if (memcmp("b4bd5ccb-2fe3-447e-b7b8-7a7b26fa0f7a", Get_NAME((R_INF), i), Get_NAME_LENGTH((R_INF),i)) == 0) {
    //     fprintf(stderr, "-a-[M::%s-beg] rid->%ld\n", __func__, i);
    // } else {
    //     return;
    // }

    // if(i != 4080965) return;
    // if(i != 4325346) return;
    // if(i != 4378784) return;
    ///for debug indel
    // if(i != 1238) return;
    // if(i != 2410) return;
    // if(i != 4198005) return;
    // if(i != 682) return;

    // debug_retrive_bqual(D, &b->v8t, i, 256); return;

    recover_UC_Read(&b->self_read, &R_INF, i); qlen = b->self_read.length; 

    h_ec_lchain(b->ab, i, b->self_read.seq, b->self_read.length, asm_opt.mz_win, asm_opt.k_mer_length, &R_INF, &b->olist, &b->clist, ((asm_opt.is_ont)?(0.05):(0.02)), asm_opt.max_n_chain, 1, NULL, NULL, &(b->sp), &high_occ, &low_occ, 1, 1, 3, 0.7, 2, 32, COV_W);///ONT high error

    // b->num_read_base += b->olist.length;
    b->cnt[0] += b->self_read.length;

    aux_o = fetch_aux_ovlp(&b->olist);///must be here

    // stderr_phase_ovlp(&b->olist);

    ///debug for memory
    // snprintf(NULL, 0, "dwn::%u\tdcn::%u", (uint32_t)aux_o->w_list.n, (uint32_t)aux_o->w_list.c.n);
    ///mz1_ha_sketch(rs, rl, mz_w, mz_k, 0, !(asm_opt.flag & HA_F_NO_HPC), &ab->mz, ha_flt_tab, asm_opt.mz_sample_dist, k_flag, dbg_ct, NULL, -1, asm_opt.dp_min_len, -1, sp, asm_opt.mz_rewin, 0, NULL);
    // if((asm_opt.is_ont) && (b->olist.length)) get_mz1(qu->seq, qu->length, RES_W, RES_K, 0, !(asm_opt.flag & HA_F_NO_HPC), b->ab, NULL, NULL, asm_opt.mz_sample_dist, NULL, NULL, NULL, -1, asm_opt.dp_min_len, -1, &(b->sp), asm_opt.mz_rewin, 0, NULL, 0);

    gen_hc_r_alin_ea(&b->olist, &b->clist, &R_INF, &b->self_read, &b->ovlp_read, &b->exz, aux_o, asm_opt.max_ov_diff_ec, (asm_opt.is_ont)?(WINDOW_OHC):(WINDOW_HC), i, E_KHIT/**asm_opt.k_mer_length**/, 1, &b->v16, &b->v64, &(R_INF.paf[i]), asm_opt.is_ont, (asm_opt.is_ont)?(0.006):(-1), (asm_opt.is_ont)?(64):(-1));
    ///for debug indel
    // prt_ovlp_sam(&b->olist, &b->ovlp_read, b->self_read.seq, b->self_read.length);


    // fprintf(stderr, "\n[M::%s] rid::%ld\t%.*s\tlen::%lld\tocc::%lu\n", __func__, i, (int)Get_NAME_LENGTH(R_INF, i), Get_NAME(R_INF, i), b->self_read.length, b->olist.length);

    // fprintf(stderr, "[M::%s] rid::%ld\n", __func__, i);
    // debug_mm_exact_cigar(&b->olist, i, &b->self_read, &b->ovlp_read);

    // b->num_correct_base += b->olist.length;

    copy_asg_arr(buf0, b->sp); 
    rphase_hc(&b->olist, &R_INF, &b->hap, &b->self_read, &b->ovlp_read, &b->pidx, &b->v64, &buf0, 0, WINDOW_MAX_SIZE, b->self_read.length, 1/**, 0**/, i, (asm_opt.is_ont)?HPC_PL:0, asm_opt.is_ont, ((asm_opt.is_ont)?&(b->clist.chainDP):NULL), ((asm_opt.is_sc)?&(b->v8q):NULL), ((asm_opt.is_sc)?&(b->v8t):NULL), (asm_opt.is_ont)?1:0);
    copy_asg_arr(b->sp, buf0);
    ///for debug indel
    // stderr_phase_ovlp(&b->olist);

    dedup_chains(&b->olist);

    copy_asg_arr(buf0, b->sp);
    b->cnt[1] += wcns_gen(&b->olist, &R_INF, &b->self_read, &b->ovlp_read, &b->exz, &b->pidx, &b->v64, &buf0, 0, 512, b->self_read.length, 3, 0.500001, aux_o, &b->v32, &b->cns, 256, i);
    copy_asg_arr(b->sp, buf0);

    push_nec_re(aux_o, &(scc.a[i]));
    push_nec_re(aux_o, &(scb.a[i]));

    // if((asm_opt.is_ont) && is_chemical_r_qual(&b->olist, &b->v64, qlen, 1, 16, &(b->v8q), i)/**(is_uncorrected_read(&b->olist, &b->v64, qlen, 1600))**/) {
    //     // b->olist.length = 0;
    //     fprintf(stderr, "[M::%s] rid::%ld\t%.*s\n\n", __func__, i, (int)Get_NAME_LENGTH(R_INF, i), Get_NAME(R_INF, i));
    // }

    push_ne_ovlp(&(R_INF.paf[i]), &b->olist, 1, &R_INF, &(scc.a[i])/**, i, &b->self_read, &b->ovlp_read**/);
    push_ne_ovlp(&(R_INF.reverse_paf[i]), &b->olist, 2, &R_INF, NULL/**, i, NULL, NULL**/);


    check_well_cal(&(scc.a[i]), &b->v64, &(R_INF.paf[i].is_fully_corrected), &(R_INF.paf[i].is_abnormal), qlen, (MIN_COVERAGE_THRESHOLD*2), &(R_INF.paf[i]));
    R_INF.trio_flag[i] = AMBIGU;

    // uint32_t k;
    // for (k = 0; k < b->olist.length; k++) {
    //     if(b->olist.list[k].is_match == 1) b->num_recorrect_base++;
    // }
    ///for debug indel
    // exit(1);
    
    

    // prt_chain(&b->olist);

    // ul_map_lchain(b->abl, (uint32_t)-1, s->seq[i], s->len[i], s->opt->w, s->opt->k, s->uu, &b->olist, &b->clist, s->opt->bw_thres, 
    //         s->opt->max_n_chain, 1, NULL, &(b->tmp_region), NULL, &(b->sp), &high_occ, NULL, 0, 1, 0.2/**0.75**/, 2, 3);

    /**
	int fully_cov, abnormal;
    // if(i != 12578) return;
    // fprintf(stderr, "[M::%s-beg] rid->%ld\n", __func__, i);
    // if (memcmp("7897e875-76e5-42c8-bc37-94b370c4cc8d", Get_NAME((R_INF), i), Get_NAME_LENGTH((R_INF),i)) == 0) {
    //     fprintf(stderr, "[M::%s-beg] rid->%ld\n", __func__, i);
    // } else {
    //     return;
    // }

    ha_get_candidates_interface(b->ab, i, &b->self_read, &b->olist, &b->olist_hp, &b->clist, 
    0.02, asm_opt.max_n_chain, 1, NULL, &b->r_buf, &(R_INF.paf[i]), &(R_INF.reverse_paf[i]), &(b->tmp_region), NULL, &(b->sp));

	clear_Cigar_record(&b->cigar1);
	clear_Round2_alignment(&b->round2);

	correct_overlap(&b->olist, &R_INF, &b->self_read, &b->correct, &b->ovlp_read, &b->POA_Graph, &b->DAGCon,
			&b->cigar1, &b->hap, &b->round2, &b->r_buf, &(b->tmp_region.w_list), 0, 1, &fully_cov, &abnormal);

	b->num_read_base += b->self_read.length;
	b->num_correct_base += b->correct.corrected_base;
	b->num_recorrect_base += b->round2.dumy.corrected_base;

	push_cigar(R_INF.cigars, i, &b->cigar1);
	push_cigar(R_INF.second_round_cigar, i, &b->round2.cigar);

	R_INF.paf[i].is_fully_corrected = 0;
	if (fully_cov) {
		if (get_cigar_errors(&b->cigar1) == 0 && get_cigar_errors(&b->round2.cigar) == 0)
			R_INF.paf[i].is_fully_corrected = 1;
	}
	R_INF.paf[i].is_abnormal = abnormal;

    R_INF.trio_flag[i] = AMBIGU;
    
    ///need to be fixed in r305
    // if(ha_idx_hp == NULL)
    // {
    //     R_INF.trio_flag[i] += collect_hp_regions(&b->olist, &R_INF, &(b->k_flag), RESEED_HP_RATE, Get_READ_LENGTH(R_INF, i), NULL);
    // }

    if (R_INF.trio_flag[i] != AMBIGU || b->save_ov) {
		int is_rev = (asm_opt.number_of_round % 2 == 0);
		push_overlaps(&(R_INF.paf[i]), &b->olist, 1, &R_INF, is_rev);
		push_overlaps(&(R_INF.reverse_paf[i]), &b->olist, 2, &R_INF, is_rev);
	}

    if(het_cnt) het_cnt[i] = get_het_cnt(&b->hap);
    // fprintf(stderr, "[M::%s-end] rid->%ld\n", __func__, i);
    **/
    // exit(1);
    refresh_ec_ovec_buf_t0(b, REFRESH_N);

    /**
    fprintf(stderr, "%ld\t---\n", i);
    **/
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x218, %rsp            # imm = 0x218
movq %rdi, -0x30(%rbp)
movq %rsi, -0x38(%rbp)
movl %edx, -0x3c(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movslq -0x3c(%rbp), %rcx
imulq $0x5c0, %rcx, %rcx      # imm = 0x5C0
addq %rcx, %rax
movq %rax, -0x48(%rbp)
leaq 0x15da69(%rip), %rax    # 0x3c47f8
cvtsi2sdl 0xd0(%rax), %xmm0
movsd 0x124a81(%rip), %xmm1   # 0x38b820
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movl %ecx, -0x4c(%rbp)
cvtsi2sdl 0xd0(%rax), %xmm0
movsd 0x1234fd(%rip), %xmm1   # 0x38a2b8
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %rax
movl %eax, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
movl $0x0, -0x74(%rbp)
movq -0x48(%rbp), %rdi
movq -0x38(%rbp), %rdx
leaq 0x15e4eb(%rip), %rsi    # 0x3c52d0
callq 0xa380
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rax
movl %eax, -0x74(%rbp)
movq -0x48(%rbp), %rax
movq 0xb8(%rax), %rax
movq %rax, -0xc8(%rbp)
movq -0x38(%rbp), %rax
movl %eax, -0xbc(%rbp)
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xb0(%rbp)
leaq 0x15d9c3(%rip), %rax    # 0x3c47f8
movslq 0x94(%rax), %rax
movq %rax, -0xa8(%rbp)
leaq 0x15d9ae(%rip), %rax    # 0x3c47f8
movslq 0x80(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x48(%rbp), %rax
addq $0x98, %rax
movq %rax, -0x98(%rbp)
movq -0x48(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x90(%rbp)
leaq 0x15d979(%rip), %rax    # 0x3c47f8
movq 0x2a8(%rax), %rax
movsd 0x11b3b2(%rip), %xmm0   # 0x382240
movsd 0x1181b2(%rip), %xmm1   # 0x37f048
movsd %xmm1, -0x88(%rbp)
cmpq $0x0, %rax
movsd %xmm0, -0x80(%rbp)
jne 0x266eb6
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movq -0x90(%rbp), %r14
movq -0x98(%rbp), %r15
movq -0xa0(%rbp), %r9
movq -0xa8(%rbp), %r8
movq -0xb0(%rbp), %rcx
movq -0xb8(%rbp), %rdx
movl -0xbc(%rbp), %esi
movq -0xc8(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
leaq 0x15d8ff(%rip), %rax    # 0x3c47f8
movl 0xe8(%rax), %ebx
movq -0x48(%rbp), %r11
addq $0x568, %r11            # imm = 0x568
leaq 0x15e3bf(%rip), %r12    # 0x3c52d0
xorl %eax, %eax
leaq -0x4c(%rbp), %r10
leaq -0x50(%rbp), %rax
movsd 0x11b305(%rip), %xmm1   # 0x382228
movq %r12, (%rsp)
movq %r15, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movl %ebx, 0x18(%rsp)
movl $0x1, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
movq $0x0, 0x30(%rsp)
movq %r11, 0x38(%rsp)
movq %r10, 0x40(%rsp)
movq %rax, 0x48(%rsp)
movl $0x1, 0x50(%rsp)
movl $0x1, 0x58(%rsp)
movq $0x3, 0x60(%rsp)
movl $0x2, 0x68(%rsp)
movl $0x20, 0x70(%rsp)
movq $0xc00, 0x78(%rsp)      # imm = 0xC00
callq 0x1acda0
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x48(%rbp), %rax
addq 0xc0(%rax), %rcx
movq %rcx, 0xc0(%rax)
movq -0x48(%rbp), %rdi
addq $0x98, %rdi
callq 0x24b330
movq %rax, -0x58(%rbp)
movq -0x48(%rbp), %rax
addq $0x98, %rax
movq %rax, -0x140(%rbp)
movq -0x48(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x138(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x48(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x128(%rbp)
movq -0x48(%rbp), %rax
addq $0x3e0, %rax            # imm = 0x3E0
movq %rax, -0x120(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x118(%rbp)
leaq 0x15d7d8(%rip), %rax    # 0x3c47f8
movsd 0xc0(%rax), %xmm0
movsd %xmm0, -0x110(%rbp)
leaq 0x15d7c1(%rip), %rax    # 0x3c47f8
movq 0x2a8(%rax), %rdx
movl $0x307, %eax            # imm = 0x307
movl $0x177, %ecx            # imm = 0x177
cmpq $0x0, %rdx
cmovnel %ecx, %eax
cltq
movq %rax, -0x108(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x100(%rbp)
movq -0x48(%rbp), %rax
addq $0x500, %rax            # imm = 0x500
movq %rax, -0xf8(%rbp)
movq -0x48(%rbp), %rax
addq $0x4d0, %rax            # imm = 0x4D0
movq %rax, -0xf0(%rbp)
leaq 0x15e244(%rip), %rax    # 0x3c52d0
movq 0x78(%rax), %rax
imulq $0x18, -0x38(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xe8(%rbp)
leaq 0x15d752(%rip), %rax    # 0x3c47f8
movq 0x2a8(%rax), %rax
movb %al, -0xd9(%rbp)
leaq 0x15d73e(%rip), %rax    # 0x3c47f8
movq 0x2a8(%rax), %rax
movsd 0x127adf(%rip), %xmm0   # 0x38eba8
movsd 0x11b1a7(%rip), %xmm1   # 0x382278
movsd %xmm1, -0xd8(%rbp)
cmpq $0x0, %rax
movsd %xmm0, -0xd0(%rbp)
jne 0x2670f7
movsd -0xd8(%rbp), %xmm0
movsd %xmm0, -0xd0(%rbp)
movb -0xd9(%rbp), %r10b
movq -0xe8(%rbp), %r11
movq -0xf0(%rbp), %rbx
movq -0xf8(%rbp), %r14
movq -0x100(%rbp), %r15
movq -0x108(%rbp), %r12
movsd -0x110(%rbp), %xmm0
movq -0x118(%rbp), %r13
movq -0x120(%rbp), %r9
movq -0x128(%rbp), %r8
movq -0x138(%rbp), %rsi
movq -0x140(%rbp), %rdi
movsd -0xd0(%rbp), %xmm1
leaq 0x15d69d(%rip), %rax    # 0x3c47f8
movq 0x2a8(%rax), %rcx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl $0x40, %edx
cmpq $0x0, %rcx
movq -0x130(%rbp), %rcx
cmovnel %edx, %eax
cltq
leaq 0x15e14d(%rip), %rdx    # 0x3c52d0
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq $0x1f, 0x18(%rsp)
movq $0x1, 0x20(%rsp)
movq %r14, 0x28(%rsp)
movq %rbx, 0x30(%rsp)
movq %r11, 0x38(%rsp)
movzbl %r10b, %r10d
movl %r10d, 0x40(%rsp)
movq %rax, 0x48(%rsp)
callq 0x257380
movq -0x48(%rbp), %rax
movq 0x578(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x48(%rbp), %rax
movq 0x568(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x48(%rbp), %rax
movq 0x570(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rax
addq $0x98, %rax
movq %rax, -0x190(%rbp)
movq -0x48(%rbp), %rax
addq $0xf8, %rax
movq %rax, -0x188(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x180(%rbp)
movq -0x48(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x178(%rbp)
movq -0x48(%rbp), %rax
addq $0x4b8, %rax            # imm = 0x4B8
movq %rax, -0x170(%rbp)
movq -0x48(%rbp), %rax
addq $0x4d0, %rax            # imm = 0x4D0
movq %rax, -0x168(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x160(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x158(%rbp)
leaq 0x15d587(%rip), %rax    # 0x3c47f8
movq 0x2a8(%rax), %rdx
xorl %eax, %eax
movl $0xc, %ecx
cmpq $0x0, %rdx
cmovnel %ecx, %eax
cltq
movq %rax, -0x150(%rbp)
leaq 0x15d562(%rip), %rax    # 0x3c47f8
movq 0x2a8(%rax), %rax
movq %rax, -0x148(%rbp)
leaq 0x15d54d(%rip), %rax    # 0x3c47f8
cmpq $0x0, 0x2a8(%rax)
je 0x2672ca
movq -0x48(%rbp), %rax
addq $0x40, %rax
addq $0x18, %rax
movq %rax, -0x198(%rbp)
jmp 0x2672d5
xorl %eax, %eax
movq %rax, -0x198(%rbp)
jmp 0x2672d5
movq -0x198(%rbp), %rax
movq %rax, -0x1a0(%rbp)
leaq 0x15d50e(%rip), %rax    # 0x3c47f8
cmpq $0x0, 0x2b0(%rax)
je 0x267307
movq -0x48(%rbp), %rax
addq $0x518, %rax            # imm = 0x518
movq %rax, -0x1a8(%rbp)
jmp 0x267312
xorl %eax, %eax
movq %rax, -0x1a8(%rbp)
jmp 0x267312
movq -0x1a8(%rbp), %rax
movq %rax, -0x1b0(%rbp)
leaq 0x15d4d1(%rip), %rax    # 0x3c47f8
cmpq $0x0, 0x2b0(%rax)
je 0x267344
movq -0x48(%rbp), %rax
addq $0x530, %rax            # imm = 0x530
movq %rax, -0x1b8(%rbp)
jmp 0x26734f
xorl %eax, %eax
movq %rax, -0x1b8(%rbp)
jmp 0x26734f
movq -0x148(%rbp), %r14
movq -0x150(%rbp), %r15
movq -0x158(%rbp), %r12
movq -0x160(%rbp), %r13
movq -0x168(%rbp), %rbx
movq -0x170(%rbp), %r9
movq -0x178(%rbp), %r8
movq -0x188(%rbp), %rdx
movq -0x190(%rbp), %rdi
movq -0x1b8(%rbp), %r10
leaq 0x15d45c(%rip), %rax    # 0x3c47f8
movq 0x2a8(%rax), %rsi
xorl %eax, %eax
movl $0x1, %ecx
cmpq $0x0, %rsi
cmovnel %ecx, %eax
leaq 0x15df18(%rip), %rsi    # 0x3c52d0
leaq -0x70(%rbp), %r11
xorl %ecx, %ecx
movq -0x180(%rbp), %rcx
movq %rbx, (%rsp)
movq -0x1a0(%rbp), %rbx
movq %r11, 0x8(%rsp)
movq -0x1b0(%rbp), %r11
movq $0x0, 0x10(%rsp)
movq $0x1ac, 0x18(%rsp)      # imm = 0x1AC
movq %r13, 0x20(%rsp)
movl $0x1, 0x28(%rsp)
movq %r12, 0x30(%rsp)
movq %r15, 0x38(%rsp)
movq %r14, 0x40(%rsp)
movq %rbx, 0x48(%rsp)
movq %r11, 0x50(%rsp)
movq %r10, 0x58(%rsp)
movzbl %al, %eax
movl %eax, 0x60(%rsp)
callq 0x79740
movq -0x60(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x578(%rax)
movq -0x70(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x568(%rax)
movq -0x68(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x570(%rax)
movq -0x48(%rbp), %rdi
addq $0x98, %rdi
callq 0x258610
movq -0x48(%rbp), %rax
movq 0x578(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x48(%rbp), %rax
movq 0x568(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x48(%rbp), %rax
movq 0x570(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
addq $0x98, %rdi
movq -0x48(%rbp), %rdx
movq -0x48(%rbp), %rcx
addq $0x20, %rcx
movq -0x48(%rbp), %r8
addq $0x3e0, %r8             # imm = 0x3E0
movq -0x48(%rbp), %r9
addq $0x4b8, %r9             # imm = 0x4B8
movq -0x48(%rbp), %r12
addq $0x4d0, %r12            # imm = 0x4D0
movq -0x48(%rbp), %rax
movq 0x8(%rax), %r14
movq -0x58(%rbp), %rbx
movq -0x48(%rbp), %r11
addq $0x4e8, %r11            # imm = 0x4E8
movq -0x48(%rbp), %r10
addq $0x580, %r10            # imm = 0x580
movq -0x38(%rbp), %rax
leaq 0x15dddc(%rip), %rsi    # 0x3c52d0
leaq -0x70(%rbp), %r15
xorl %r13d, %r13d
movsd 0x11adcd(%rip), %xmm0   # 0x3822d0
movq %r12, (%rsp)
movq %r15, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movq $0x200, 0x18(%rsp)      # imm = 0x200
movq %r14, 0x20(%rsp)
movq $0x3, 0x28(%rsp)
movq %rbx, 0x30(%rsp)
movq %r11, 0x38(%rsp)
movq %r10, 0x40(%rsp)
movq $0x100, 0x48(%rsp)      # imm = 0x100
movl %eax, 0x50(%rsp)
callq 0x2548c0
movq %rax, %rcx
movq -0x48(%rbp), %rax
addq 0xc8(%rax), %rcx
movq %rcx, 0xc8(%rax)
movq -0x60(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x578(%rax)
movq -0x70(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x568(%rax)
movq -0x68(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x570(%rax)
movq -0x58(%rbp), %rdi
movq 0x15e04e(%rip), %rsi    # 0x3c55e8
imulq $0x18, -0x38(%rbp), %rax
addq %rax, %rsi
callq 0x255a90
movq -0x58(%rbp), %rdi
movq 0x15e056(%rip), %rsi    # 0x3c5608
imulq $0x18, -0x38(%rbp), %rax
addq %rax, %rsi
callq 0x255a90
leaq 0x15dd0a(%rip), %rax    # 0x3c52d0
movq 0x78(%rax), %rdi
imulq $0x18, -0x38(%rbp), %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
addq $0x98, %rsi
movq 0x15e004(%rip), %r8     # 0x3c55e8
imulq $0x18, -0x38(%rbp), %rax
addq %rax, %r8
movl $0x1, %edx
leaq 0x15dcd8(%rip), %rcx    # 0x3c52d0
callq 0x2564c0
leaq 0x15dccc(%rip), %rax    # 0x3c52d0
movq 0x80(%rax), %rdi
imulq $0x18, -0x38(%rbp), %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
addq $0x98, %rsi
movl $0x2, %edx
leaq 0x15dca6(%rip), %rcx    # 0x3c52d0
xorl %eax, %eax
movl %eax, %r8d
callq 0x2564c0
movq 0x15dfad(%rip), %rdi    # 0x3c55e8
imulq $0x18, -0x38(%rbp), %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
addq $0x4d0, %rsi            # imm = 0x4D0
leaq 0x15dc7b(%rip), %rax    # 0x3c52d0
movq 0x78(%rax), %rdx
imulq $0x18, -0x38(%rbp), %rax
addq %rax, %rdx
addq $0x10, %rdx
leaq 0x15dc64(%rip), %rax    # 0x3c52d0
movq 0x78(%rax), %rcx
imulq $0x18, -0x38(%rbp), %rax
addq %rax, %rcx
addq $0x11, %rcx
movl -0x74(%rbp), %eax
movl %eax, %r8d
leaq 0x15dc47(%rip), %rax    # 0x3c52d0
movq 0x78(%rax), %rax
imulq $0x18, -0x38(%rbp), %r9
addq %r9, %rax
movl $0x6, %r9d
movq %rax, (%rsp)
callq 0x256fc0
leaq 0x15dc25(%rip), %rax    # 0x3c52d0
movq 0x28(%rax), %rax
movq -0x38(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x48(%rbp), %rdi
movl $0x80, %esi
callq 0x26e2d0
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw (%rax,%rax)