// File: /workspace/github_c_makefile_star2_O0/sharmaeklavya2[P]cerplag/parser.c
// Function: print_node_sub
void print_node_sub(const parse_tree_node* root, FILE* fp)
{
    /*
    if(root == NULL)
        fprintf(fp, "print_node: NULL\n");
    else
        fprintf(fp, "print_node: %p %s\n", root, GS_STRS[root->value->tid]);
    */
    Symbol* s = root->value;
    char empty[] = "----";
    char* lexeme = (s->lexeme == NULL ? empty : s->lexeme);
    if((int)(s->sid) < NUM_TOKENS)
        fprintf(fp, "%20s %2d %20s ", lexeme, s->line, GS_STRS[s->sid]);
    else
        fprintf(fp, "%20s %2s %20s ", empty, "--", empty);

    if(s->sid == T_NUM)
        fprintf(fp, "%20d ", s->i);
    else if(s->sid == T_RNUM)
        fprintf(fp, "%20lf ", s->f);
    else
        fprintf(fp, "%20s ", empty);

    if(root->parent == NULL)
        fprintf(fp, "%20s ", empty);
    else
        fprintf(fp, "%20s ", GS_STRS[root->parent->value->sid]);

    if(root->first_child == NULL)
        fprintf(fp, "yes ");
    else
        fprintf(fp, " no ");

    fprintf(fp, "%20s\n", GS_STRS[s->sid]);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movl 0xc4e2(%rip), %eax      # 0x14b03
movl %eax, -0x1d(%rbp)
movb 0xc4dd(%rip), %al       # 0x14b07
movb %al, -0x19(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x8642
leaq -0x1d(%rbp), %rax
movq %rax, -0x30(%rbp)
jmp 0x864e
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x3a, 0x10(%rax)
jge 0x8691
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rdx
movq -0x18(%rbp), %rax
movl (%rax), %ecx
movq -0x18(%rbp), %rax
movslq 0x10(%rax), %rsi
leaq 0x120f3(%rip), %rax     # 0x1a770
movq (%rax,%rsi,8), %r8
leaq 0xc480(%rip), %rsi      # 0x14b08
movb $0x0, %al
callq 0x3120
jmp 0x86b2
movq -0x10(%rbp), %rdi
leaq -0x1d(%rbp), %rdx
leaq -0x1d(%rbp), %r8
leaq 0xc473(%rip), %rsi      # 0x14b17
leaq 0xc45a(%rip), %rcx      # 0x14b05
movb $0x0, %al
callq 0x3120
movq -0x18(%rbp), %rax
cmpl $0x3, 0x10(%rax)
jne 0x86d7
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x14(%rax), %edx
leaq 0xc458(%rip), %rsi      # 0x14b26
movb $0x0, %al
callq 0x3120
jmp 0x871a
movq -0x18(%rbp), %rax
cmpl $0x4, 0x10(%rax)
jne 0x8702
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movss 0x14(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0xc433(%rip), %rsi      # 0x14b2c
movb $0x1, %al
callq 0x3120
jmp 0x8718
movq -0x10(%rbp), %rdi
leaq -0x1d(%rbp), %rdx
leaq 0xc400(%rip), %rsi      # 0x14b11
movb $0x0, %al
callq 0x3120
jmp 0x871a
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x873d
movq -0x10(%rbp), %rdi
leaq -0x1d(%rbp), %rdx
leaq 0xc3dd(%rip), %rsi      # 0x14b11
movb $0x0, %al
callq 0x3120
jmp 0x8769
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movslq 0x10(%rax), %rcx
leaq 0x12019(%rip), %rax     # 0x1a770
movq (%rax,%rcx,8), %rdx
leaq 0xc3af(%rip), %rsi      # 0x14b11
movb $0x0, %al
callq 0x3120
movq -0x8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x8788
movq -0x10(%rbp), %rdi
leaq 0xc3b4(%rip), %rsi      # 0x14b33
movb $0x0, %al
callq 0x3120
jmp 0x879a
movq -0x10(%rbp), %rdi
leaq 0xc3a5(%rip), %rsi      # 0x14b38
movb $0x0, %al
callq 0x3120
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movslq 0x10(%rax), %rcx
leaq 0x11fc3(%rip), %rax     # 0x1a770
movq (%rax,%rcx,8), %rdx
leaq 0xc385(%rip), %rsi      # 0x14b3d
movb $0x0, %al
callq 0x3120
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)