// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x40, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x16(%rip), %rax       # 0x69f0
movq %rax, -0x18(%rbp)
leaq -0x21(%rip), %rax       # 0x69f0
movq %rax, -0x20(%rbp)
leaq -0x2c(%rip), %rax       # 0x69f0
movq %rax, -0x28(%rbp)
leaq -0x37(%rip), %rax       # 0x69f0
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x6a37
jmp 0x6c29
movq -0x10(%rbp), %rax
cmpl $0x0, (%rax)
jne 0x6a51
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x6c30
jmp 0x6c29
movl $0x28, %edi
callq 0x5660
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, %ecx
leaq 0x44766(%rip), %rax     # 0x4b1d0
movq (%rax,%rcx,8), %rdi
callq 0x5600
movq -0x10(%rbp), %rax
movl (%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x38(%rbp)
subl $0x5a, %eax
ja 0x6a9a
movq -0x38(%rbp), %rax
leaq 0x2fa2f(%rip), %rcx     # 0x364c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x6b87
movl $0x20, %edi
callq 0x5660
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x5600
jmp 0x6b87
movl $0x20, %edi
callq 0x5660
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x5600
jmp 0x6b87
movl $0x20, %edi
callq 0x5660
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x6280
jmp 0x6b87
movl $0x20, %edi
callq 0x5660
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x10(%rbp), %rax
cvttsd2si 0x30(%rax), %esi
callq 0x6480
jmp 0x6b87
movq -0x10(%rbp), %rax
movsd 0x30(%rax), %xmm0
leaq 0x2fe47(%rip), %rdi     # 0x3696c
movb $0x1, %al
callq 0x4110
jmp 0x6b87
leaq -0x1f5(%rip), %rax      # 0x6940
movq %rax, -0x18(%rbp)
jmp 0x6b87
leaq -0x202(%rip), %rax      # 0x6940
movq %rax, -0x28(%rbp)
jmp 0x6b87
leaq -0x20f(%rip), %rax      # 0x6940
movq %rax, -0x28(%rbp)
jmp 0x6b87
leaq -0x21c(%rip), %rax      # 0x6940
movq %rax, -0x28(%rbp)
jmp 0x6b87
leaq -0x229(%rip), %rax      # 0x6940
movq %rax, -0x20(%rbp)
jmp 0x6b87
leaq -0x236(%rip), %rax      # 0x6940
movq %rax, -0x20(%rbp)
jmp 0x6b87
leaq -0x243(%rip), %rax      # 0x6940
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x6bad
movl $0x20, %edi
callq 0x5660
movq -0x18(%rbp), %rax
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rsi
callq *%rax
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x6bd3
movl $0x20, %edi
callq 0x5660
movq -0x20(%rbp), %rax
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rsi
callq *%rax
movq -0x10(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x6bf9
movl $0x20, %edi
callq 0x5660
movq -0x28(%rbp), %rax
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rcx
movq 0x20(%rcx), %rsi
callq *%rax
movq -0x10(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x6c1f
movl $0x20, %edi
callq 0x5660
movq -0x30(%rbp), %rax
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rcx
movq 0x28(%rcx), %rsi
callq *%rax
movl $0x29, %edi
callq 0x5660
addq $0x40, %rsp
popq %rbp
retq
nop