// File: /workspace/github_c_makefile_star2_O0/c-zhou[P]oatk/alignment.c
// Function: aln_frg_backtrace
static void aln_frg_backtrace(uint32_t node, uint32_t len, sr_frg_t *frg_v, u32_v *utg_v, v32_v *aln_v)
{
    if (node == UINT32_MAX)
        return;

    kv_push(uint32_t, *utg_v, node);
    ++len;

    if (frg_v[node].prev.n == 0) {
        // no prev node
        // add aln path to aln_v
        u32_v *v;
        kv_pushp(u32_v, *aln_v, &v);
        v->n = v->m = len;
        MYMALLOC(v->a, len);
        memcpy(v->a, utg_v->a, sizeof(uint32_t) * len);
        rev_array(v->a, v->n);
    } else {
        // add paths for prev nodes
        size_t i, n;
        for (i = 0, n = frg_v[node].prev.n; i < n; ++i) {
            aln_frg_backtrace(frg_v[node].prev.a[i], len, frg_v, utg_v, aln_v);
            utg_v->n = len;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movq %rdx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movq %r8, -0x20(%rbp)
cmpl $-0x1, -0x4(%rbp)
jne 0x280c5
jmp 0x282cf
jmp 0x280c7
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x2812f
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x280f4
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x40(%rbp)
jmp 0x280ff
movl $0x2, %eax
movq %rax, -0x40(%rbp)
jmp 0x280ff
movq -0x40(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x2, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movl -0x4(%rbp), %edx
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movl %edx, (%rax,%rcx,4)
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
movl -0x4(%rbp), %ecx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, 0x48(%rax)
jne 0x2825e
jmp 0x28172
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq -0x20(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x281d7
movq -0x20(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2819f
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x48(%rbp)
jmp 0x281aa
movl $0x2, %eax
movq %rax, -0x48(%rbp)
jmp 0x281aa
movq -0x48(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x20(%rbp), %rax
imulq $0x18, 0x8(%rax), %rsi
callq 0x2360
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x20(%rbp), %rdx
movq (%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, (%rdx)
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movl -0x8(%rbp), %eax
movl %eax, %ecx
movq -0x28(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movl -0x8(%rbp), %eax
movl %eax, %edi
shlq $0x2, %rdi
callq 0x2320
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
movl -0x8(%rbp), %eax
movl %eax, %edx
shlq $0x2, %rdx
callq 0x22c0
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x28(%rbp), %rax
movq (%rax), %rax
movl %eax, %esi
callq 0x282e0
jmp 0x282cf
movq $0x0, -0x30(%rbp)
movq -0x10(%rbp), %rax
movl -0x4(%rbp), %ecx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq 0x48(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x38(%rbp), %rax
jae 0x282cd
movq -0x10(%rbp), %rax
movl -0x4(%rbp), %ecx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq 0x58(%rax), %rax
movq -0x30(%rbp), %rcx
movl (%rax,%rcx,4), %edi
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %r8
callq 0x280a0
movl -0x8(%rbp), %eax
movl %eax, %ecx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x2827c
jmp 0x282cf
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)