// File: chhylp123[P]hifiasm/Overlaps.cpp
// Function: ma_ug_print2(ma_ug_t const*, All_reads*, asg_t*, ma_sub_t const*, ma_hit_t_alloc*, R_to_U*, int, char const*, _IO_FILE*)
void ma_ug_print2(const ma_ug_t *ug, All_reads *RNF, asg_t* read_g, const ma_sub_t *coverage_cut, 
ma_hit_t_alloc* sources, R_to_U* ruIndex, int print_seq, const char* prefix, FILE *fp)
{
    uint8_t* primary_flag = read_g?(uint8_t*)calloc(read_g->n_seq, sizeof(uint8_t)):NULL;
	uint32_t i, j, l, pc = read_g && coverage_cut && sources && ruIndex?1:0, co;
	char name[32];
	for (i = 0; i < ug->u.n; ++i) { // the Segment lines in GFA
		ma_utg_t *p = &ug->u.a[i];
        if(p->m == 0) continue;
        sprintf(name, "%s%.6d%c", prefix, i + 1, "lc"[p->circ]);
		if (print_seq) fprintf(fp, "S\t%s\t%s\tLN:i:%d\trd:i:%u\n", name, p->s? p->s : "*", p->len, 
        pc?get_ug_coverage(p, read_g, coverage_cut, sources, ruIndex, primary_flag, NULL, NULL):0);
		else fprintf(fp, "S\t%s\t*\tLN:i:%d\trd:i:%u\n", name, p->len, 
        pc?get_ug_coverage(p, read_g, coverage_cut, sources, ruIndex, primary_flag, NULL, NULL):0);
        
		for (j = l = 0; j < p->n; j++) {
            if(p->a[j] != (uint64_t)-1)
            {
                uint32_t x = p->a[j]>>33;
                if(x<RNF->total_reads)
                {

                    fprintf(fp, "A\t%s\t%d\t%c\t%.*s\t%d\t%d\tid:i:%d\tHG:A:%c\n", name, l, "+-"[p->a[j]>>32&1],
                    (int)Get_NAME_LENGTH((*RNF), x), Get_NAME((*RNF), x), 
                    coverage_cut?coverage_cut[x].s:0, coverage_cut?coverage_cut[x].e:(int)Get_READ_LENGTH((*RNF), x), x, 
                    "apmaaa"[((RNF->trio_flag[x]!=FATHER && RNF->trio_flag[x]!=MOTHER)?AMBIGU:RNF->trio_flag[x])]);
                }
                else
                {
                    fprintf(fp, "A\t%s\t%d\t%c\t%s\t%d\t%d\tid:i:%d\tHG:A:%c\n", name, l, "+-"[p->a[j]>>32&1],
                        "FAKE", coverage_cut?coverage_cut[x].s:0, coverage_cut?coverage_cut[x].e:(int)Get_READ_LENGTH((*RNF), x), x, '*');
                }
            }
            else
            {
                fprintf(fp, "A\t%s\t%d\t*\t*\t*\t*\tid:i:*\tHG:A:*\n", name, l);
            }
            l += (uint32_t)p->a[j];
        }
	}
	// for (i = 0; i < ug->g->n_arc; ++i) { // the Link lines in GFA
	// 	uint32_t u = ug->g->arc[i].ul>>32, v = ug->g->arc[i].v;
	// 	fprintf(fp, "L\t%s%.6d%c\t%c\t%s%.6d%c\t%c\t%dM\tL1:i:%d\n", 
    //     prefix, (u>>1)+1, "lc"[ug->u.a[u>>1].circ], "+-"[u&1],
	// 	prefix,	(v>>1)+1, "lc"[ug->u.a[v>>1].circ], "+-"[v&1], ug->g->arc[i].ol, asg_arc_len(ug->g->arc[i]));
	// }
    if(ug->g)
    {
        asg_arc_t* au = NULL;
        uint32_t nu, u, v;
        for (i = 0; i < ug->u.n; ++i) {
            if(ug->u.a[i].m == 0) continue;
            if(ug->u.a[i].circ) {
                co = cal_circle_ov(ug, i, 0, read_g);
                fprintf(fp, "L\t%s%.6dc\t+\t%s%.6dc\t+\t%dM\tL1:i:%d\tL2:i:%u\n", 
                prefix, i+1, prefix, i+1, co, ((ug->u.a[i].len>=co)?(ug->u.a[i].len-co):0), 0);
                co = cal_circle_ov(ug, i, 1, read_g);
                fprintf(fp, "L\t%s%.6dc\t-\t%s%.6dc\t-\t%dM\tL1:i:%d\tL2:i:%u\n", 
                prefix, i+1, prefix, i+1, co, ((ug->u.a[i].len>=co)?(ug->u.a[i].len-co):0), 0);
            } else {
                u = i<<1;
                au = asg_arc_a(ug->g, u);
                nu = asg_arc_n(ug->g, u);
                for (j = 0; j < nu; j++)
                {
                    if(au[j].del) continue;
                    v = au[j].v;
                    fprintf(fp, "L\t%s%.6d%c\t%c\t%s%.6d%c\t%c\t%dM\tL1:i:%d\tL2:i:%u\n", 
                    prefix, (u>>1)+1, "lc"[ug->u.a[u>>1].circ], "+-"[u&1],
                    prefix,	(v>>1)+1, "lc"[ug->u.a[v>>1].circ], "+-"[v&1], au[j].ol, asg_arc_len(au[j]), 0/**au[j].ou**/);
                }


                u = (i<<1) + 1;
                au = asg_arc_a(ug->g, u);
                nu = asg_arc_n(ug->g, u);
                for (j = 0; j < nu; j++)
                {
                    if(au[j].del) continue;
                    v = au[j].v;
                    fprintf(fp, "L\t%s%.6d%c\t%c\t%s%.6d%c\t%c\t%dM\tL1:i:%d\tL2:i:%u\n", 
                    prefix, (u>>1)+1, "lc"[ug->u.a[u>>1].circ], "+-"[u&1],
                    prefix,	(v>>1)+1, "lc"[ug->u.a[v>>1].circ], "+-"[v&1], au[j].ol, asg_arc_len(au[j]), 0/**au[j].ou**/);
                }
            } 
        }
    }
    free(primary_flag);    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1f0, %rsp            # imm = 0x1F0
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movl 0x10(%rbp), %eax
movq %rdi, -0x28(%rbp)
movq %rsi, -0x30(%rbp)
movq %rdx, -0x38(%rbp)
movq %rcx, -0x40(%rbp)
movq %r8, -0x48(%rbp)
movq %r9, -0x50(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0xeeddf
movq -0x38(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movl %eax, %edi
movl $0x1, %esi
callq 0x2140
movq %rax, -0xc0(%rbp)
jmp 0xeedea
xorl %eax, %eax
movq %rax, -0xc0(%rbp)
jmp 0xeedea
movq -0xc0(%rbp), %rax
movq %rax, -0x58(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x38(%rbp)
movb %al, -0xc1(%rbp)
je 0xeee30
xorl %eax, %eax
cmpq $0x0, -0x40(%rbp)
movb %al, -0xc1(%rbp)
je 0xeee30
xorl %eax, %eax
cmpq $0x0, -0x48(%rbp)
movb %al, -0xc1(%rbp)
je 0xeee30
cmpq $0x0, -0x50(%rbp)
setne %al
movb %al, -0xc1(%rbp)
movb -0xc1(%rbp), %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, -0x68(%rbp)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpq (%rcx), %rax
jae 0xef42f
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x5c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jne 0xeee88
jmp 0xef421
leaq -0x90(%rbp), %rdi
movq 0x18(%rbp), %rdx
movl -0x5c(%rbp), %ecx
addl $0x1, %ecx
movq -0x98(%rbp), %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x296453(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r8d
leaq 0x297f4a(%rip), %rsi    # 0x386e06
movb $0x0, %al
callq 0x2050
cmpl $0x0, 0x10(%rbp)
je 0xeefbb
movq 0x20(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x98(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0xeef08
movq -0x98(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0xe0(%rbp)
jmp 0xeef18
leaq 0x297f19(%rip), %rax    # 0x386e28
movq %rax, -0xe0(%rbp)
jmp 0xeef18
movq -0xe0(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x98(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, -0xe4(%rbp)
cmpl $0x0, -0x68(%rbp)
je 0xeef7b
movq -0x98(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x48(%rbp), %rcx
movq -0x50(%rbp), %r8
movq -0x58(%rbp), %r9
xorl %eax, %eax
movq $0x0, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0xee3e0
movl %eax, -0xf4(%rbp)
jmp 0xeef85
xorl %eax, %eax
movl %eax, -0xf4(%rbp)
jmp 0xeef85
movl -0xe4(%rbp), %r8d
movq -0xf0(%rbp), %rcx
movq -0xd0(%rbp), %rdx
movq -0xd8(%rbp), %rdi
movl -0xf4(%rbp), %r9d
leaq 0x297e60(%rip), %rsi    # 0x386e0f
movb $0x0, %al
callq 0x22a0
jmp 0xef05c
movq 0x20(%rbp), %rax
movq %rax, -0x108(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0x100(%rbp)
movq -0x98(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, -0xf8(%rbp)
cmpl $0x0, -0x68(%rbp)
je 0xef029
movq -0x98(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x48(%rbp), %rcx
movq -0x50(%rbp), %r8
movq -0x58(%rbp), %r9
xorl %eax, %eax
movq $0x0, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0xee3e0
movl %eax, -0x10c(%rbp)
jmp 0xef033
xorl %eax, %eax
movl %eax, -0x10c(%rbp)
jmp 0xef033
movl -0xf8(%rbp), %ecx
movq -0x100(%rbp), %rdx
movq -0x108(%rbp), %rdi
movl -0x10c(%rbp), %r8d
leaq 0x297dd5(%rip), %rsi    # 0x386e2a
movb $0x0, %al
callq 0x22a0
movl $0x0, -0x64(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
movq -0x98(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0xef41f
movq -0x98(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x60(%rbp), %ecx
cmpq $-0x1, (%rax,%rcx,8)
je 0xef3dd
movq -0x98(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x60(%rbp), %ecx
movq (%rax,%rcx,8), %rax
shrq $0x21, %rax
movl %eax, -0x9c(%rbp)
movl -0x9c(%rbp), %eax
movq -0x30(%rbp), %rcx
cmpq 0x50(%rcx), %rax
jae 0xef2bd
movq 0x20(%rbp), %rax
movq %rax, -0x138(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0x130(%rbp)
movl -0x64(%rbp), %eax
movl %eax, -0x124(%rbp)
movq -0x98(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x60(%rbp), %ecx
movq (%rax,%rcx,8), %rcx
shrq $0x20, %rcx
andq $0x1, %rcx
leaq 0x293d92(%rip), %rax    # 0x382e9b
movsbl (%rax,%rcx), %eax
movl %eax, -0x120(%rbp)
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rax
movl -0x9c(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
movq -0x30(%rbp), %rcx
movq 0x40(%rcx), %rcx
movl -0x9c(%rbp), %edx
subq (%rcx,%rdx,8), %rax
movl %eax, -0x11c(%rbp)
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x30(%rbp), %rcx
movq 0x40(%rcx), %rcx
movl -0x9c(%rbp), %edx
addq (%rcx,%rdx,8), %rax
movq %rax, -0x118(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0xef18a
movq -0x40(%rbp), %rax
movl -0x9c(%rbp), %ecx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, -0x13c(%rbp)
jmp 0xef194
xorl %eax, %eax
movl %eax, -0x13c(%rbp)
jmp 0xef194
movl -0x13c(%rbp), %eax
movl %eax, -0x140(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0xef1c3
movq -0x40(%rbp), %rax
movl -0x9c(%rbp), %ecx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movl %eax, -0x144(%rbp)
jmp 0xef1db
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x9c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x144(%rbp)
movl -0x144(%rbp), %eax
movl %eax, -0x14c(%rbp)
movl -0x9c(%rbp), %eax
movl %eax, -0x148(%rbp)
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x9c(%rbp), %ecx
movzbl (%rax,%rcx), %eax
cmpl $0x1, %eax
je 0xef22b
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x9c(%rbp), %ecx
movzbl (%rax,%rcx), %eax
cmpl $0x2, %eax
je 0xef22b
xorl %eax, %eax
movl %eax, -0x150(%rbp)
jmp 0xef243
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x9c(%rbp), %ecx
movzbl (%rax,%rcx), %eax
movl %eax, -0x150(%rbp)
movl -0x148(%rbp), %r10d
movl -0x14c(%rbp), %r11d
movl -0x140(%rbp), %ebx
movq -0x118(%rbp), %r14
movl -0x11c(%rbp), %r9d
movl -0x120(%rbp), %r8d
movl -0x124(%rbp), %ecx
movq -0x130(%rbp), %rdx
movq -0x138(%rbp), %rdi
movl -0x150(%rbp), %eax
movslq %eax, %rsi
leaq 0x297bd9(%rip), %rax    # 0x386e69
movsbl (%rax,%rsi), %eax
leaq 0x297ba7(%rip), %rsi    # 0x386e42
movq %r14, (%rsp)
movl %ebx, 0x8(%rsp)
movl %r11d, 0x10(%rsp)
movl %r10d, 0x18(%rsp)
movl %eax, 0x20(%rsp)
movb $0x0, %al
callq 0x22a0
jmp 0xef3db
movq 0x20(%rbp), %rax
movq %rax, -0x168(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0x160(%rbp)
movl -0x64(%rbp), %eax
movl %eax, -0x158(%rbp)
movq -0x98(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x60(%rbp), %ecx
movq (%rax,%rcx,8), %rcx
shrq $0x20, %rcx
andq $0x1, %rcx
leaq 0x293b9b(%rip), %rax    # 0x382e9b
movsbl (%rax,%rcx), %eax
movl %eax, -0x154(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0xef331
movq -0x40(%rbp), %rax
movl -0x9c(%rbp), %ecx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, -0x16c(%rbp)
jmp 0xef33b
xorl %eax, %eax
movl %eax, -0x16c(%rbp)
jmp 0xef33b
movl -0x16c(%rbp), %eax
movl %eax, -0x170(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0xef36a
movq -0x40(%rbp), %rax
movl -0x9c(%rbp), %ecx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movl %eax, -0x174(%rbp)
jmp 0xef382
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x9c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x174(%rbp)
movl -0x170(%rbp), %r11d
movl -0x154(%rbp), %r8d
movl -0x158(%rbp), %ecx
movq -0x160(%rbp), %rdx
movq -0x168(%rbp), %rdi
movl -0x174(%rbp), %r10d
movl -0x9c(%rbp), %eax
leaq 0x297ab8(%rip), %rsi    # 0x386e70
leaq 0x297ad6(%rip), %r9     # 0x386e95
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movl $0x2a, 0x18(%rsp)
movb $0x0, %al
callq 0x22a0
jmp 0xef3f9
movq 0x20(%rbp), %rdi
leaq -0x90(%rbp), %rdx
movl -0x64(%rbp), %ecx
leaq 0x297aa8(%rip), %rsi    # 0x386e9a
movb $0x0, %al
callq 0x22a0
movq -0x98(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x60(%rbp), %ecx
movq (%rax,%rcx,8), %rax
addl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0xef06a
jmp 0xef421
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xeee4d
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xefa42
movq $0x0, -0xa8(%rbp)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpq (%rcx), %rax
jae 0xefa40
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x5c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0xc(%rax)
jne 0xef47d
jmp 0xefa32
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x5c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0xef68b
movq -0x28(%rbp), %rdi
movl -0x5c(%rbp), %esi
movq -0x38(%rbp), %rcx
xorl %edx, %edx
callq 0xeeba0
movl %eax, -0x6c(%rbp)
movq 0x20(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq 0x18(%rbp), %rax
movq %rax, -0x198(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18c(%rbp)
movq 0x18(%rbp), %rax
movq %rax, -0x188(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x17c(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x178(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x5c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
cmpl -0x6c(%rbp), %eax
jb 0xef536
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x5c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
subl -0x6c(%rbp), %eax
movl %eax, -0x1a4(%rbp)
jmp 0xef540
xorl %eax, %eax
movl %eax, -0x1a4(%rbp)
jmp 0xef540
movl -0x178(%rbp), %r10d
movl -0x17c(%rbp), %r9d
movq -0x188(%rbp), %r8
movl -0x18c(%rbp), %ecx
movq -0x198(%rbp), %rdx
movq -0x1a0(%rbp), %rdi
movl -0x1a4(%rbp), %eax
leaq 0x297943(%rip), %rsi    # 0x386eb9
xorl %r11d, %r11d
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movl $0x0, 0x10(%rsp)
movb $0x0, %al
callq 0x22a0
movq -0x28(%rbp), %rdi
movl -0x5c(%rbp), %esi
movq -0x38(%rbp), %rcx
movl $0x1, %edx
callq 0xeeba0
movl %eax, -0x6c(%rbp)
movq 0x20(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq 0x18(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1bc(%rbp)
movq 0x18(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1ac(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x1a8(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x5c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
cmpl -0x6c(%rbp), %eax
jb 0xef62c
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x5c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
subl -0x6c(%rbp), %eax
movl %eax, -0x1d4(%rbp)
jmp 0xef636
xorl %eax, %eax
movl %eax, -0x1d4(%rbp)
jmp 0xef636
movl -0x1a8(%rbp), %r10d
movl -0x1ac(%rbp), %r9d
movq -0x1b8(%rbp), %r8
movl -0x1bc(%rbp), %ecx
movq -0x1c8(%rbp), %rdx
movq -0x1d0(%rbp), %rdi
movl -0x1d4(%rbp), %eax
leaq 0x297878(%rip), %rsi    # 0x386ee4
xorl %r11d, %r11d
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movl $0x0, 0x10(%rsp)
movb $0x0, %al
callq 0x22a0
jmp 0xefa30
movl -0x5c(%rbp), %eax
shll %eax
movl %eax, -0xb0(%rbp)
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0xb0(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa8(%rbp)
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0xb0(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0xac(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0xac(%rbp), %eax
jae 0xef85b
movq -0xa8(%rbp), %rax
movl -0x60(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0xef71d
jmp 0xef84d
movq -0xa8(%rbp), %rax
movl -0x60(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0xb4(%rbp)
movq 0x20(%rbp), %rdi
movq 0x18(%rbp), %rdx
movl -0xb0(%rbp), %ecx
shrl %ecx
addl $0x1, %ecx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xb0(%rbp), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x295b90(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r8d
movl -0xb0(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x29370f(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %r9d
movq 0x18(%rbp), %r15
movl -0xb4(%rbp), %r14d
shrl %r14d
addl $0x1, %r14d
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xb4(%rbp), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x295b37(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %ebx
movl -0xb4(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x2936b7(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %r11d
movq -0xa8(%rbp), %rax
movl -0x60(%rbp), %esi
imulq $0x18, %rsi, %rsi
addq %rsi, %rax
movl 0xc(%rax), %r10d
andl $0x7fffffff, %r10d      # imm = 0x7FFFFFFF
movq -0xa8(%rbp), %rax
movl -0x60(%rbp), %esi
imulq $0x18, %rsi, %rsi
addq %rsi, %rax
movq (%rax), %rax
leaq 0x2976ef(%rip), %rsi    # 0x386f0f
xorl %r12d, %r12d
movq %r15, (%rsp)
movl %r14d, 0x8(%rsp)
movl %ebx, 0x10(%rsp)
movl %r11d, 0x18(%rsp)
movl %r10d, 0x20(%rsp)
movl %eax, 0x28(%rsp)
movl $0x0, 0x30(%rsp)
movb $0x0, %al
callq 0x22a0
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0xef6ed
movl -0x5c(%rbp), %eax
shll %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x28(%rcx), %rcx
movl -0xb0(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa8(%rbp)
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0xb0(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0xac(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0xac(%rbp), %eax
jae 0xefa2e
movq -0xa8(%rbp), %rax
movl -0x60(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0xef8f0
jmp 0xefa20
movq -0xa8(%rbp), %rax
movl -0x60(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0xb4(%rbp)
movq 0x20(%rbp), %rdi
movq 0x18(%rbp), %rdx
movl -0xb0(%rbp), %ecx
shrl %ecx
addl $0x1, %ecx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xb0(%rbp), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x2959bd(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %r8d
movl -0xb0(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x29353c(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %r9d
movq 0x18(%rbp), %r15
movl -0xb4(%rbp), %r14d
shrl %r14d
addl $0x1, %r14d
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xb4(%rbp), %esi
shrl %esi
movl %esi, %esi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x295964(%rip), %rax    # 0x385303
movsbl (%rax,%rsi), %ebx
movl -0xb4(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq 0x2934e4(%rip), %rax    # 0x382e9b
movsbl (%rax,%rsi), %r11d
movq -0xa8(%rbp), %rax
movl -0x60(%rbp), %esi
imulq $0x18, %rsi, %rsi
addq %rsi, %rax
movl 0xc(%rax), %r10d
andl $0x7fffffff, %r10d      # imm = 0x7FFFFFFF
movq -0xa8(%rbp), %rax
movl -0x60(%rbp), %esi
imulq $0x18, %rsi, %rsi
addq %rsi, %rax
movq (%rax), %rax
leaq 0x29751c(%rip), %rsi    # 0x386f0f
xorl %r12d, %r12d
movq %r15, (%rsp)
movl %r14d, 0x8(%rsp)
movl %ebx, 0x10(%rsp)
movl %r11d, 0x18(%rsp)
movl %r10d, 0x20(%rsp)
movl %eax, 0x28(%rsp)
movl $0x0, 0x30(%rsp)
movb $0x0, %al
callq 0x22a0
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0xef8c0
jmp 0xefa30
jmp 0xefa32
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xef450
jmp 0xefa42
movq -0x58(%rbp), %rdi
callq 0x2210
addq $0x1f0, %rsp            # imm = 0x1F0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax,%rax)