// File: /workspace/github_c_makefile_star2_O3/rakitzis[P]rc/tree.c
// Function: mk
extern Node *mk(enum nodetype t,...) {
	va_list ap;
	Node *n;
	va_start(ap, t);
	switch (t) {
	default:
		panic("unexpected node in mk");
		/* NOTREACHED */
	case nDup:
		n = nalloc(offsetof(Node, u[3]));
		n->u[0].i = va_arg(ap, int);
		n->u[1].i = va_arg(ap, int);
		n->u[2].i = va_arg(ap, int);
		break;
	case nWord:
		n = nalloc(offsetof(Node, u[3]));
		n->u[0].s = va_arg(ap, char *);
		n->u[1].s = va_arg(ap, char *);
		n->u[2].i = va_arg(ap, int);
		break;
	case nBang: case nNowait:
	case nCount: case nFlat: case nRmfn: case nSubshell:
	case nVar: case nCase:
		n = nalloc(offsetof(Node, u[1]));
		n->u[0].p = va_arg(ap, Node *);
		break;
	case nAndalso: case nAssign: case nBackq: case nBody: case nBrace: case nConcat:
	case nElse: case nEpilog: case nIf: case nNewfn: case nCbody:
	case nOrelse: case nPre: case nArgs: case nSwitch:
	case nMatch: case nVarsub: case nWhile: case nLappend:
		n = nalloc(offsetof(Node, u[2]));
		n->u[0].p = va_arg(ap, Node *);
		n->u[1].p = va_arg(ap, Node *);
		break;
	case nForin:
		n = nalloc(offsetof(Node, u[3]));
		n->u[0].p = va_arg(ap, Node *);
		n->u[1].p = va_arg(ap, Node *);
		n->u[2].p = va_arg(ap, Node *);
		break;
	case nPipe:
		n = nalloc(offsetof(Node, u[4]));
		n->u[0].i = va_arg(ap, int);
		n->u[1].i = va_arg(ap, int);
		n->u[2].p = va_arg(ap, Node *);
		n->u[3].p = va_arg(ap, Node *);
		break;
	case nRedir:
	case nNmpipe:
		n = nalloc(offsetof(Node, u[3]));
		n->u[0].i = va_arg(ap, int);
		n->u[1].i = va_arg(ap, int);
		n->u[2].p = va_arg(ap, Node *);
		break;
	}
	n->type = t;
	va_end(ap);
	return n;
}

// Assembly:
pushq %rbx
subq $0xd0, %rsp
movl %edi, %ebx
leaq 0x20(%rsp), %rdi
movq %rsi, 0x8(%rdi)
movq %rdx, 0x10(%rdi)
movq %rcx, 0x18(%rdi)
movq %r8, 0x20(%rdi)
movq %r9, 0x28(%rdi)
testb %al, %al
je 0xc076
movaps %xmm0, 0x50(%rsp)
movaps %xmm1, 0x60(%rsp)
movaps %xmm2, 0x70(%rsp)
movaps %xmm3, 0x80(%rsp)
movaps %xmm4, 0x90(%rsp)
movaps %xmm5, 0xa0(%rsp)
movaps %xmm6, 0xb0(%rsp)
movaps %xmm7, 0xc0(%rsp)
movq %rdi, 0x10(%rsp)
leaq 0xe0(%rsp), %rax
movq %rax, 0x8(%rsp)
movabsq $0x3000000008, %rax     # imm = 0x3000000008
movq %rax, (%rsp)
cmpl $0x20, %ebx
ja 0xc2eb
movl %ebx, %eax
leaq 0x8340(%rip), %rcx      # 0x143e8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x18, %edi
callq 0x9e80
movl (%rsp), %ecx
cmpq $0x29, %rcx
jae 0xc0ea
movq 0x10(%rsp), %rsi
leaq 0x8(%rcx), %rdx
movl %edx, (%rsp)
movq (%rsi,%rcx), %rsi
movq %rsi, 0x8(%rax)
cmpl $0x20, %ecx
ja 0xc0ff
addq 0x10(%rsp), %rdx
addl $0x10, %ecx
movl %ecx, (%rsp)
jmp 0xc10d
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq (%rcx), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rdx
leaq 0x8(%rdx), %rcx
movq %rcx, 0x8(%rsp)
movq (%rdx), %rcx
movq %rcx, 0x10(%rax)
jmp 0xc440
movl $0x10, %edi
callq 0x9e80
movl (%rsp), %edx
cmpq $0x28, %rdx
ja 0xc13c
movq %rdx, %rcx
addq 0x10(%rsp), %rcx
addl $0x8, %edx
movl %edx, (%rsp)
jmp 0xc14a
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq (%rcx), %rcx
movq %rcx, 0x8(%rax)
jmp 0xc440
movl $0x20, %edi
callq 0x9e80
movl (%rsp), %ecx
cmpq $0x29, %rcx
jae 0xc197
movq 0x10(%rsp), %rdx
leal 0x8(%rcx), %esi
movl %esi, (%rsp)
movl (%rdx,%rcx), %edx
movl %edx, 0x8(%rax)
cmpl $0x21, %ecx
jae 0xc1aa
movq 0x10(%rsp), %rsi
leaq 0x10(%rcx), %rdx
movl %edx, (%rsp)
movl 0x8(%rsi,%rcx), %esi
movl %esi, 0x10(%rax)
jmp 0xc257
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movl (%rcx), %ecx
movl %ecx, 0x8(%rax)
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movl (%rcx), %ecx
movl %ecx, 0x10(%rax)
jmp 0xc3d9
movl $0x20, %edi
callq 0x9e80
movl (%rsp), %ecx
cmpq $0x29, %rcx
jae 0xc36d
movq 0x10(%rsp), %rdx
leal 0x8(%rcx), %esi
movl %esi, (%rsp)
movq (%rdx,%rcx), %rdx
movq %rdx, 0x8(%rax)
cmpl $0x21, %ecx
jae 0xc382
movq 0x10(%rsp), %rsi
leaq 0x10(%rcx), %rdx
movl %edx, (%rsp)
movq 0x8(%rsi,%rcx), %rsi
movq %rsi, 0x10(%rax)
jmp 0xc333
movl $0x20, %edi
callq 0x9e80
movl (%rsp), %ecx
cmpq $0x29, %rcx
jae 0xc3af
movq 0x10(%rsp), %rdx
leal 0x8(%rcx), %esi
movl %esi, (%rsp)
movq (%rdx,%rcx), %rdx
movq %rdx, 0x8(%rax)
cmpl $0x21, %ecx
jae 0xc3c4
movq 0x10(%rsp), %rsi
leaq 0x10(%rcx), %rdx
movl %edx, (%rsp)
movq 0x8(%rsi,%rcx), %rsi
movq %rsi, 0x10(%rax)
cmpl $0x18, %ecx
ja 0xc3d9
addq 0x10(%rsp), %rdx
addl $0x18, %ecx
movl %ecx, (%rsp)
jmp 0xc3e7
movl $0x28, %edi
callq 0x9e80
movl (%rsp), %ecx
cmpq $0x29, %rcx
jae 0xc3f0
movq 0x10(%rsp), %rsi
leaq 0x8(%rcx), %rdx
movl %edx, (%rsp)
movl (%rsi,%rcx), %esi
movl %esi, 0x8(%rax)
cmpl $0x21, %ecx
jae 0xc403
movq 0x10(%rsp), %rsi
leal 0x10(%rcx), %edi
movl %edi, (%rsp)
movl (%rsi,%rdx), %edx
movl %edx, 0x10(%rax)
cmpl $0x19, %ecx
jae 0xc416
movq 0x10(%rsp), %rsi
leal 0x18(%rcx), %edx
movl %edx, (%rsp)
movq 0x10(%rsi,%rcx), %rsi
movq %rsi, 0x18(%rax)
cmpl $0x10, %ecx
ja 0xc42b
movl %edx, %edx
addq 0x10(%rsp), %rdx
orl $0x20, %ecx
movl %ecx, (%rsp)
jmp 0xc439
leaq 0x8282(%rip), %rdi      # 0x14574
callq 0xc72e
movl $0x20, %edi
callq 0x9e80
movl (%rsp), %ecx
cmpq $0x29, %rcx
jae 0xc345
movq 0x10(%rsp), %rdx
leal 0x8(%rcx), %esi
movl %esi, (%rsp)
movl (%rdx,%rcx), %edx
movl %edx, 0x8(%rax)
cmpl $0x21, %ecx
jae 0xc358
movq 0x10(%rsp), %rsi
leaq 0x10(%rcx), %rdx
movl %edx, (%rsp)
movl 0x8(%rsi,%rcx), %esi
movl %esi, 0x10(%rax)
cmpl $0x18, %ecx
ja 0xc397
addq 0x10(%rsp), %rdx
addl $0x18, %ecx
movl %ecx, (%rsp)
jmp 0xc3a5
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movl (%rcx), %ecx
movl %ecx, 0x8(%rax)
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movl (%rcx), %ecx
movl %ecx, 0x10(%rax)
jmp 0xc397
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq (%rcx), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq (%rcx), %rcx
movq %rcx, 0x10(%rax)
movq 0x8(%rsp), %rdx
leaq 0x8(%rdx), %rcx
movq %rcx, 0x8(%rsp)
movl (%rdx), %ecx
movl %ecx, 0x18(%rax)
jmp 0xc440
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq (%rcx), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq (%rcx), %rcx
movq %rcx, 0x10(%rax)
movq 0x8(%rsp), %rdx
leaq 0x8(%rdx), %rcx
movq %rcx, 0x8(%rsp)
movq (%rdx), %rcx
movq %rcx, 0x18(%rax)
jmp 0xc440
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movl (%rcx), %ecx
movl %ecx, 0x8(%rax)
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movl (%rcx), %ecx
movl %ecx, 0x10(%rax)
movq 0x8(%rsp), %rcx
leaq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq (%rcx), %rcx
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rdx
leaq 0x8(%rdx), %rcx
movq %rcx, 0x8(%rsp)
movq (%rdx), %rcx
movq %rcx, 0x20(%rax)
movl %ebx, (%rax)
addq $0xd0, %rsp
popq %rbx
retq