// File: chhylp123[P]hifiasm/Overlaps.cpp
// Function: dbg_asys_gfa1(void*, long, int)
static void dbg_asys_gfa1(void *data, long i, int tid) // callback for kt_for()
{
	asg_t *g = (asg_t *)data; asg_arc_t *av, *ra; 
    uint64_t rn, ri, v, w, an, k;
    v = i<<1; av = asg_arc_a(g, v); an = asg_arc_n(g, v);
    for (k = 0; k < an; k++) {
        if(av[k].del) continue;
        ra = asg_arc_a(g, (av[k].v^1)); rn = asg_arc_n(g, (av[k].v^1));
        for (ri = 0; ri < rn; ri++) {
            if(ra[ri].del) continue;
            if(ra[ri].v == ((av[k].ul>>32)^1)) break;
        }
        if(ri >= rn) {
            w = av[k].v;
            fprintf(stderr, "[M::%s] v::utg%.6lul(%c)\tw::utg%.6lul(%c)\n", __func__, (v>>1) + 1, "+-"[(v&1)], (w>>1) + 1, "+-"[(w&1)]);
            exit(1);
        }

    }

    v = (i<<1) + 1; av = asg_arc_a(g, v); an = asg_arc_n(g, v);
    for (k = 0; k < an; k++) {
        if(av[k].del) continue;
        ra = asg_arc_a(g, (av[k].v^1)); rn = asg_arc_n(g, (av[k].v^1));
        for (ri = 0; ri < rn; ri++) {
            if(ra[ri].del) continue;
            if(ra[ri].v == ((av[k].ul>>32)^1)) break;
        }
        if(ri >= rn) {
            w = av[k].v;
            fprintf(stderr, "[M::%s] v::utg%.6lul(%c)\tw::utg%.6lul(%c)\n", __func__, (v>>1) + 1, "+-"[(v&1)], (w>>1) + 1, "+-"[(w&1)]);
            exit(1);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
shlq %rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x20(%rbp), %rcx
movq 0x28(%rcx), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x58(%rbp)
movq $0x0, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpq -0x58(%rbp), %rax
jae 0x11c073
movq -0x28(%rbp), %rax
imulq $0x18, -0x60(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x11bf15
jmp 0x11c062
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x20(%rbp), %rcx
movq 0x28(%rcx), %rcx
movq -0x28(%rbp), %rdx
imulq $0x18, -0x60(%rbp), %rsi
addq %rsi, %rdx
movl 0x8(%rdx), %edx
xorl $0x1, %edx
movl %edx, %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x28(%rbp), %rcx
imulq $0x18, -0x60(%rbp), %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
xorl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jae 0x11bfda
movq -0x30(%rbp), %rax
imulq $0x18, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x11bf9d
jmp 0x11bfcc
movq -0x30(%rbp), %rax
imulq $0x18, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x28(%rbp), %rcx
imulq $0x18, -0x60(%rbp), %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
shrq $0x20, %rcx
xorq $0x1, %rcx
cmpq %rcx, %rax
jne 0x11bfca
jmp 0x11bfda
jmp 0x11bfcc
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x11bf7a
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jb 0x11c060
movq -0x28(%rbp), %rax
imulq $0x18, -0x60(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq %rax, -0x50(%rbp)
movq 0x2a7fe2(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x48(%rbp), %rcx
shrq %rcx
addq $0x1, %rcx
movq -0x48(%rbp), %rdx
andq $0x1, %rdx
leaq 0x266e80(%rip), %rax    # 0x382e9b
movsbl (%rax,%rdx), %r8d
movq -0x50(%rbp), %r9
shrq %r9
addq $0x1, %r9
movq -0x50(%rbp), %rdx
andq $0x1, %rdx
leaq 0x266e61(%rip), %rax    # 0x382e9b
movsbl (%rax,%rdx), %eax
leaq 0x26ddb5(%rip), %rsi    # 0x389dfa
leaq 0x26dde7(%rip), %rdx    # 0x389e33
movl %eax, (%rsp)
movb $0x0, %al
callq 0x22a0
movl $0x1, %edi
callq 0x2240
jmp 0x11c062
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0x11beeb
movq -0x10(%rbp), %rax
shlq %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x20(%rbp), %rcx
movq 0x28(%rcx), %rcx
movq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x58(%rbp)
movq $0x0, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpq -0x58(%rbp), %rax
jae 0x11c24f
movq -0x28(%rbp), %rax
imulq $0x18, -0x60(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x11c0f1
jmp 0x11c23e
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x20(%rbp), %rcx
movq 0x28(%rcx), %rcx
movq -0x28(%rbp), %rdx
imulq $0x18, -0x60(%rbp), %rsi
addq %rsi, %rdx
movl 0x8(%rdx), %edx
xorl $0x1, %edx
movl %edx, %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x28(%rbp), %rcx
imulq $0x18, -0x60(%rbp), %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
xorl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jae 0x11c1b6
movq -0x30(%rbp), %rax
imulq $0x18, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x11c179
jmp 0x11c1a8
movq -0x30(%rbp), %rax
imulq $0x18, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x28(%rbp), %rcx
imulq $0x18, -0x60(%rbp), %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
shrq $0x20, %rcx
xorq $0x1, %rcx
cmpq %rcx, %rax
jne 0x11c1a6
jmp 0x11c1b6
jmp 0x11c1a8
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x11c156
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jb 0x11c23c
movq -0x28(%rbp), %rax
imulq $0x18, -0x60(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq %rax, -0x50(%rbp)
movq 0x2a7e06(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x48(%rbp), %rcx
shrq %rcx
addq $0x1, %rcx
movq -0x48(%rbp), %rdx
andq $0x1, %rdx
leaq 0x266ca4(%rip), %rax    # 0x382e9b
movsbl (%rax,%rdx), %r8d
movq -0x50(%rbp), %r9
shrq %r9
addq $0x1, %r9
movq -0x50(%rbp), %rdx
andq $0x1, %rdx
leaq 0x266c85(%rip), %rax    # 0x382e9b
movsbl (%rax,%rdx), %eax
leaq 0x26dbd9(%rip), %rsi    # 0x389dfa
leaq 0x26dc0b(%rip), %rdx    # 0x389e33
movl %eax, (%rsp)
movb $0x0, %al
callq 0x22a0
movl $0x1, %edi
callq 0x2240
jmp 0x11c23e
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0x11c0c7
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)