// File: chhylp123[P]hifiasm/gfa_ut.cpp
// Function: prt_specfic_sge(asg_t*, unsigned int, unsigned int, char const*)
void prt_specfic_sge(asg_t *g, uint32_t src, uint32_t dst, const char* cmd)
{
    uint32_t k, v, w, nv; asg_arc_t *av;
    fprintf(stderr, "[M::%s::%s] src::%.*s(id::%u), dst::%.*s(id::%u)\n", __func__, cmd, 
    (int)Get_NAME_LENGTH(R_INF, src), Get_NAME(R_INF, src), src, 
    (int)Get_NAME_LENGTH(R_INF, dst), Get_NAME(R_INF, dst), dst);
    v = src<<1; 
    nv = asg_arc_n(g, v); av = asg_arc_a(g, v);
    for (k = 0; k < nv; ++k) {
        if ((av[k].v>>1) == dst) {
            w = av[k].v;
            fprintf(stderr, "[M::%s::]\t%.*s(%c)\t%.*s(%c)\tou::%u\n", __func__,
					(int)Get_NAME_LENGTH(R_INF, (v>>1)), Get_NAME(R_INF, (v>>1)), "+-"[v&1],
					(int)Get_NAME_LENGTH(R_INF, (w>>1)), Get_NAME(R_INF, (w>>1)), "+-"[w&1], av[k].ou);
        }
    }

    v = (src<<1)+1; 
    nv = asg_arc_n(g, v); av = asg_arc_a(g, v);
    for (k = 0; k < nv; ++k) {
        if ((av[k].v>>1) == dst) {
            w = av[k].v;
            fprintf(stderr, "[M::%s::]\t%.*s(%c)\t%.*s(%c)\tou::%u\n", __func__,
					(int)Get_NAME_LENGTH(R_INF, (v>>1)), Get_NAME(R_INF, (v>>1)), "+-"[v&1],
					(int)Get_NAME_LENGTH(R_INF, (w>>1)), Get_NAME(R_INF, (w>>1)), "+-"[w&1], av[k].ou);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x58, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq 0xa3e72(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
movq -0x20(%rbp), %rcx
leaq 0xa5154(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x14(%rbp), %edx
addl $0x1, %edx
movl %edx, %edx
movq (%rax,%rdx,8), %rax
leaq 0xa513d(%rip), %rdx     # 0x3c52d0
movq 0x40(%rdx), %rdx
movl -0x14(%rbp), %esi
subq (%rdx,%rsi,8), %rax
movl %eax, %r8d
leaq 0xa5128(%rip), %rax     # 0x3c52d0
movq 0x8(%rax), %r9
leaq 0xa511d(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x14(%rbp), %edx
addq (%rax,%rdx,8), %r9
movl -0x14(%rbp), %ebx
leaq 0xa5108(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x18(%rbp), %edx
addl $0x1, %edx
movl %edx, %edx
movq (%rax,%rdx,8), %rax
leaq 0xa50f1(%rip), %rdx     # 0x3c52d0
movq 0x40(%rdx), %rdx
movl -0x18(%rbp), %esi
subq (%rdx,%rsi,8), %rax
movl %eax, %r11d
leaq 0xa50dc(%rip), %rax     # 0x3c52d0
movq 0x8(%rax), %r10
leaq 0xa50d1(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x18(%rbp), %edx
addq (%rax,%rdx,8), %r10
movl -0x18(%rbp), %eax
leaq 0x7667b(%rip), %rsi     # 0x39688f
leaq 0x766a6(%rip), %rdx     # 0x3968c1
movl %ebx, (%rsp)
movl %r11d, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movl %eax, 0x18(%rsp)
movb $0x0, %al
callq 0x22a0
movl -0x14(%rbp), %eax
shll %eax
movl %eax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x28(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x28(%rcx), %rcx
movl -0x28(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x30(%rbp), %eax
jae 0x3203df
movq -0x38(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
shrl %eax
cmpl -0x18(%rbp), %eax
jne 0x3203cf
movq -0x38(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0x2c(%rbp)
movq 0xa3d23(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
leaq 0xa5009(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x28(%rbp), %ecx
shrl %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
leaq 0xa4ff0(%rip), %rcx     # 0x3c52d0
movq 0x40(%rcx), %rcx
movl -0x28(%rbp), %edx
shrl %edx
movl %edx, %edx
subq (%rcx,%rdx,8), %rax
movl %eax, %ecx
leaq 0xa4fd8(%rip), %rax     # 0x3c52d0
movq 0x8(%rax), %r8
leaq 0xa4fcd(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x28(%rbp), %edx
shrl %edx
movl %edx, %edx
addq (%rax,%rdx,8), %r8
movl -0x28(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %edx
leaq 0x62b78(%rip), %rax     # 0x382e9b
movsbl (%rax,%rdx), %r9d
leaq 0xa4fa1(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x2c(%rbp), %edx
shrl %edx
addl $0x1, %edx
movl %edx, %edx
movq (%rax,%rdx,8), %rax
leaq 0xa4f88(%rip), %rdx     # 0x3c52d0
movq 0x40(%rdx), %rdx
movl -0x2c(%rbp), %esi
shrl %esi
movl %esi, %esi
subq (%rdx,%rsi,8), %rax
movl %eax, %ebx
leaq 0xa4f70(%rip), %rax     # 0x3c52d0
movq 0x8(%rax), %r11
leaq 0xa4f65(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x2c(%rbp), %edx
shrl %edx
movl %edx, %edx
addq (%rax,%rdx,8), %r11
movl -0x2c(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %edx
leaq 0x62b10(%rip), %rax     # 0x382e9b
movsbl (%rax,%rdx), %r10d
movq -0x38(%rbp), %rax
movl -0x24(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movw 0x10(%rax), %ax
andw $0x3fff, %ax            # imm = 0x3FFF
movzwl %ax, %eax
leaq 0x76521(%rip), %rsi     # 0x3968d1
leaq 0x7650a(%rip), %rdx     # 0x3968c1
movl %ebx, (%rsp)
movq %r11, 0x8(%rsp)
movl %r10d, 0x10(%rsp)
movl %eax, 0x18(%rsp)
movb $0x0, %al
callq 0x22a0
jmp 0x3203d1
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x32027a
movl -0x14(%rbp), %eax
shll %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x28(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x28(%rcx), %rcx
movl -0x28(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x30(%rbp), %eax
jae 0x32058e
movq -0x38(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
shrl %eax
cmpl -0x18(%rbp), %eax
jne 0x32057e
movq -0x38(%rbp), %rax
movl -0x24(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0x2c(%rbp)
movq 0xa3b74(%rip), %rax     # 0x3c3fe0
movq (%rax), %rdi
leaq 0xa4e5a(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x28(%rbp), %ecx
shrl %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
leaq 0xa4e41(%rip), %rcx     # 0x3c52d0
movq 0x40(%rcx), %rcx
movl -0x28(%rbp), %edx
shrl %edx
movl %edx, %edx
subq (%rcx,%rdx,8), %rax
movl %eax, %ecx
leaq 0xa4e29(%rip), %rax     # 0x3c52d0
movq 0x8(%rax), %r8
leaq 0xa4e1e(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x28(%rbp), %edx
shrl %edx
movl %edx, %edx
addq (%rax,%rdx,8), %r8
movl -0x28(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %edx
leaq 0x629c9(%rip), %rax     # 0x382e9b
movsbl (%rax,%rdx), %r9d
leaq 0xa4df2(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x2c(%rbp), %edx
shrl %edx
addl $0x1, %edx
movl %edx, %edx
movq (%rax,%rdx,8), %rax
leaq 0xa4dd9(%rip), %rdx     # 0x3c52d0
movq 0x40(%rdx), %rdx
movl -0x2c(%rbp), %esi
shrl %esi
movl %esi, %esi
subq (%rdx,%rsi,8), %rax
movl %eax, %ebx
leaq 0xa4dc1(%rip), %rax     # 0x3c52d0
movq 0x8(%rax), %r11
leaq 0xa4db6(%rip), %rax     # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x2c(%rbp), %edx
shrl %edx
movl %edx, %edx
addq (%rax,%rdx,8), %r11
movl -0x2c(%rbp), %eax
andl $0x1, %eax
movl %eax, %eax
movl %eax, %edx
leaq 0x62961(%rip), %rax     # 0x382e9b
movsbl (%rax,%rdx), %r10d
movq -0x38(%rbp), %rax
movl -0x24(%rbp), %edx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movw 0x10(%rax), %ax
andw $0x3fff, %ax            # imm = 0x3FFF
movzwl %ax, %eax
leaq 0x76372(%rip), %rsi     # 0x3968d1
leaq 0x7635b(%rip), %rdx     # 0x3968c1
movl %ebx, (%rsp)
movq %r11, 0x8(%rsp)
movl %r10d, 0x10(%rsp)
movl %eax, 0x18(%rsp)
movb $0x0, %al
callq 0x22a0
jmp 0x320580
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x320429
addq $0x58, %rsp
popq %rbx
popq %rbp
retq
nopw %cs:(%rax,%rax)