// File: /workspace/github_c_makefile_star2_O2/nimble-code[P]Modex/Src/ps_graph.c
// Function: dot_leaf
void
dot_leaf(leafnode *leaf)
{
	if (!leaf) return;

DTREE	printf("N%lu -> L%lu;\n", (unsigned long) leaf, (unsigned long) leaf);
DTREE	printf("L%lu [label=\"", (unsigned long) leaf);

	switch (leaf->hdr.type) {
	case TN_IDENT:
DDEBUG		printf("%s", leaf->data.sval->str);
DTREE		printf("%s", leaf->data.sval->str);
		break;

	case TN_LABEL:
		if (leaf->hdr.tok == DEFLT)
		{
DDEBUG		printf("default:");
DTREE		printf("Default:");
		} else
		{
DDEBUG		printf("%s:", leaf->data.sval->str);
DTREE		printf("%s:", leaf->data.sval->str);
		}
		break;

	case TN_COMMENT:
DTREE		printf("/* %s */", leaf->data.str);
		break;

	case TN_STRING:
DDEBUG		printf("\'%s\'", leaf->data.str);	/* \"%s\" */
DTREE		printf("\'%s\'", leaf->data.str);	/* \"%s\" */
		break;

	case TN_TYPE:
		if (leaf->hdr.tok != TYPEDEF_NAME)
		{	/* including: leaf->hdr.tok == TYPEDEF */
DDEBUG			printf("%s", toksym(leaf->hdr.tok,1));
DTREE			printf("%s", toksym(leaf->hdr.tok,1));
		} else
		{
DDEBUG			printf("%s", leaf->data.sval->str);
DTREE			printf("%s", leaf->data.sval->str);
		}
		break;
	case TN_REAL:
DDEBUG		printf("%f", leaf->data.dval);
DTREE		printf("%f", leaf->data.dval);
		break;

	case TN_INT:
		if (leaf->hdr.tok == CHAR_CONST)
		{
DDEBUG			printf("'%c'", leaf->data.ival);
DTREE			printf("'%c'", leaf->data.ival);
		} else
		{
DDEBUG			printf("%d", leaf->data.ival);
DTREE			printf("%d", leaf->data.ival);
		}
		break;

	case TN_ELLIPSIS:
DDEBUG		printf("...");
DTREE		printf("...");
		break;

	default:
		fprintf(stderr, "%s: unexpected leaf %s\n",
			progname, name_of_node(leaf->hdr.type));
		break;
	}

DTREE	printf("\"];\n");
}

// Assembly:
testq %rdi, %rdi
je 0x1f766
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0xc449(%rip), %rdi      # 0x2bb5c
movq %rbx, %rsi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x4140
leaq 0xc444(%rip), %rdi      # 0x2bb6b
movq %rbx, %rsi
xorl %eax, %eax
callq 0x4140
movl 0x1c(%rbx), %edi
leal -0x22(%rdi), %eax
cmpl $0xf, %eax
ja 0x1f827
leaq 0xc321(%rip), %rcx      # 0x2ba68
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x11f, 0x18(%rbx)      # imm = 0x11F
jne 0x1f7fe
leaq 0xc415(%rip), %rdi      # 0x2bb79
jmp 0x1f7b7
retq
movl 0x18(%rbx), %edi
cmpl $0x105, %edi            # imm = 0x105
jne 0x1f7da
movq 0x30(%rbx), %rax
movq 0x8(%rax), %rsi
leaq 0x2c53(%rip), %rdi      # 0x223d4
jmp 0x1f80d
movsd 0x30(%rbx), %xmm0
leaq 0x358d(%rip), %rdi      # 0x22d1f
movb $0x1, %al
callq 0x4140
jmp 0x1f814
movl 0x30(%rbx), %esi
cmpl $0x107, 0x18(%rbx)      # imm = 0x107
jne 0x1f7ee
leaq 0xc3e1(%rip), %rdi      # 0x2bb8f
jmp 0x1f7f5
leaq 0x3c9b(%rip), %rdi      # 0x23452
xorl %eax, %eax
callq 0x4140
jmp 0x1f814
movq 0x30(%rbx), %rsi
leaq 0xc3bb(%rip), %rdi      # 0x2bb86
jmp 0x1f80d
movq 0x30(%rbx), %rsi
leaq 0x1a9c(%rip), %rdi      # 0x21274
jmp 0x1f80d
pushq $0x1
popq %rsi
callq 0x13d8c
leaq 0x2beb(%rip), %rdi      # 0x223d4
movq %rax, %rsi
jmp 0x1f80d
leaq 0xbe42(%rip), %rdi      # 0x2b637
xorl %eax, %eax
callq 0x4140
jmp 0x1f814
movq 0x30(%rbx), %rax
movq 0x8(%rax), %rsi
leaq 0xc375(%rip), %rdi      # 0x2bb82
xorl %eax, %eax
callq 0x4140
leaq 0xc474(%rip), %rdi      # 0x2bc8f
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x40d0
movq 0x147ca(%rip), %rax     # 0x33ff8
movq (%rax), %rbx
leaq 0x14968(%rip), %rax     # 0x341a0
movq (%rax), %r14
callq 0x1467f
leaq 0xc34d(%rip), %rsi      # 0x2bb94
movq %rbx, %rdi
movq %r14, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x41c0
jmp 0x1f814