// File: /workspace/github_c_makefile_star2_O0/bluecmd[P]fst-example/gtkwave/fstapi.c
// Function: fstReaderPushScope
const char *fstReaderPushScope(void *ctx, const char *nam, void *user_info)
{
struct fstReaderContext *xc = (struct fstReaderContext *)ctx;
if(xc)
        {
        struct fstCurrHier *ch = (struct fstCurrHier *)malloc(sizeof(struct fstCurrHier));
        int chl = xc->curr_hier ? xc->curr_hier->len : 0;
        int len = chl + 1 + strlen(nam);
        if(len >= xc->flat_hier_alloc_len)
                {
                xc->curr_flat_hier_nam = xc->curr_flat_hier_nam ? (char *)realloc(xc->curr_flat_hier_nam, len+1) : (char *)malloc(len+1);
                }

        if(chl)
                {
                xc->curr_flat_hier_nam[chl] = '.';
                strcpy(xc->curr_flat_hier_nam + chl + 1, nam);
                }
                else
                {
                strcpy(xc->curr_flat_hier_nam, nam);
                len--;
                }

        ch->len = len;
        ch->prev = xc->curr_hier;
        ch->user_info = user_info;
        xc->curr_hier = ch;
        return(xc->curr_flat_hier_nam);
        }

return(NULL);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0xa791
movl $0x18, %edi
callq 0x2280
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x278(%rax)
je 0xa666
movq -0x28(%rbp), %rax
movq 0x278(%rax), %rax
movl 0x10(%rax), %eax
movl %eax, -0x3c(%rbp)
jmp 0xa66d
xorl %eax, %eax
movl %eax, -0x3c(%rbp)
jmp 0xa66d
movl -0x3c(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
cltq
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rdi
callq 0x2130
movq %rax, %rcx
movq -0x48(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x290(%rcx), %eax
jl 0xa6f2
movq -0x28(%rbp), %rax
cmpq $0x0, 0x288(%rax)
je 0xa6d1
movq -0x28(%rbp), %rax
movq 0x288(%rax), %rdi
movl -0x38(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x22c0
movq %rax, -0x50(%rbp)
jmp 0xa6e3
movl -0x38(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
callq 0x2280
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x288(%rax)
cmpl $0x0, -0x34(%rbp)
je 0xa72c
movq -0x28(%rbp), %rax
movq 0x288(%rax), %rax
movslq -0x34(%rbp), %rcx
movb $0x2e, (%rax,%rcx)
movq -0x28(%rbp), %rax
movq 0x288(%rax), %rdi
movslq -0x34(%rbp), %rax
addq %rax, %rdi
addq $0x1, %rdi
movq -0x18(%rbp), %rsi
callq 0x2090
jmp 0xa749
movq -0x28(%rbp), %rax
movq 0x288(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x2090
movl -0x38(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq 0x278(%rax), %rcx
movq -0x30(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x278(%rax)
movq -0x28(%rbp), %rax
movq 0x288(%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0xa799
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)