// File: /workspace/github_c_makefile_star2_O1/ArtifexSoftware[P]mujs/pp.c
// Function: snode
static void snode(int d, js_Ast *node)
{
	void (*afun)(int,js_Ast*) = snode;
	void (*bfun)(int,js_Ast*) = snode;
	void (*cfun)(int,js_Ast*) = snode;
	void (*dfun)(int,js_Ast*) = snode;

	if (!node) {
		return;
	}

	if (node->type == AST_LIST) {
		slist(d, node);
		return;
	}

	pc('(');
	ps(astname[node->type]);
	switch (node->type) {
	default: break;
	case AST_IDENTIFIER: pc(' '); ps(node->string); break;
	case EXP_IDENTIFIER: pc(' '); ps(node->string); break;
	case EXP_STRING: pc(' '); pstr(node->string); break;
	case EXP_REGEXP: pc(' '); pregexp(node->string, node->number); break;
	case EXP_NUMBER: printf(" %.9g", node->number); break;
	case STM_BLOCK: afun = sblock; break;
	case AST_FUNDEC: case EXP_FUN: cfun = sblock; break;
	case EXP_PROP_GET: cfun = sblock; break;
	case EXP_PROP_SET: cfun = sblock; break;
	case STM_SWITCH: bfun = sblock; break;
	case STM_CASE: bfun = sblock; break;
	case STM_DEFAULT: afun = sblock; break;
	}
	if (node->a) { pc(' '); afun(d, node->a); }
	if (node->b) { pc(' '); bfun(d, node->b); }
	if (node->c) { pc(' '); cfun(d, node->c); }
	if (node->d) { pc(' '); dfun(d, node->d); }
	pc(')');
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rsi, %rsi
je 0x64b3
movq %rsi, %r14
movl %edi, %ebx
cmpl $0x0, (%rsi)
je 0x64c2
movl $0x28, %edi
callq 0x4040
movl (%r14), %eax
leaq 0x3ca0a(%rip), %rcx     # 0x42e70
movq (%rcx,%rax,8), %rdi
movq 0x3db67(%rip), %r12     # 0x43fd8
movq (%r12), %rsi
callq 0x4170
movl (%r14), %eax
leaq -0x4c(%rip), %r15       # 0x6438
cmpl $0x46, %eax
jg 0x64fb
decl %eax
cmpl $0x10, %eax
ja 0x658b
leaq 0x27e7d(%rip), %rcx     # 0x2e318
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x17b(%rip), %r12      # 0x6330
movq %r15, %r13
jmp 0x6591
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x5b, %edi
callq 0x4040
cmpl $0x0, (%r14)
jne 0x6615
movq 0x10(%r14), %rsi
movl %ebx, %edi
callq 0x6438
movq 0x18(%r14), %r14
testq %r14, %r14
je 0x64f1
movl $0x20, %edi
jmp 0x64c7
movl $0x5d, %ebp
jmp 0x6600
cmpl $0x59, %eax
jg 0x650c
cmpl $0x47, %eax
je 0x6516
cmpl $0x55, %eax
je 0x653e
jmp 0x658b
cmpl $0x5a, %eax
je 0x653e
cmpl $0x5b, %eax
jne 0x658b
movq %r15, %r13
movq %r15, %r12
leaq -0x1f3(%rip), %r15      # 0x6330
jmp 0x6591
movl $0x20, %edi
callq 0x4040
movq 0x38(%r14), %rdi
movq (%r12), %rsi
callq 0x4170
jmp 0x658b
leaq -0x215(%rip), %r13      # 0x6330
jmp 0x658e
movl $0x20, %edi
callq 0x4040
movq 0x38(%r14), %rdi
callq 0x5d0f
jmp 0x658b
movsd 0x30(%r14), %xmm0
leaq 0x28133(%rip), %rdi     # 0x2e69c
movb $0x1, %al
callq 0x4120
jmp 0x658b
movl $0x20, %edi
callq 0x4040
movq 0x38(%r14), %rdi
cvttsd2si 0x30(%r14), %esi
callq 0x5e99
movq %r15, %r13
movq %r15, %r12
cmpq $0x0, 0x10(%r14)
je 0x65ab
movl $0x20, %edi
callq 0x4040
movq 0x10(%r14), %rsi
movl %ebx, %edi
callq *%r15
cmpq $0x0, 0x18(%r14)
je 0x65c5
movl $0x20, %edi
callq 0x4040
movq 0x18(%r14), %rsi
movl %ebx, %edi
callq *%r13
cmpq $0x0, 0x20(%r14)
je 0x65df
movl $0x20, %edi
callq 0x4040
movq 0x20(%r14), %rsi
movl %ebx, %edi
callq *%r12
movl $0x29, %ebp
cmpq $0x0, 0x28(%r14)
je 0x6600
movl $0x20, %edi
callq 0x4040
movq 0x28(%r14), %rsi
movl %ebx, %edi
callq 0x6438
movl %ebp, %edi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x4040
leaq 0x27e75(%rip), %rdi     # 0x2e491
leaq 0x27e85(%rip), %rsi     # 0x2e4a8
leaq 0x28078(%rip), %rcx     # 0x2e6a2
movl $0x336, %edx            # imm = 0x336
callq 0x4160