// File: /workspace/github_c_makefile_star2_O0/michaelforney[P]cproc/main.c
// Function: main
int
main(int argc, char *argv[])
{
	bool pponly = false;
	char *output = NULL, *target = NULL;

	argv0 = progname(argv[0], "cproc-qbe");
	ARGBEGIN {
	case 'E':
		pponly = true;
		break;
	case 't':
		target = EARGF(usage());
		break;
	case 'o':
		output = EARGF(usage());
		break;
	default:
		usage();
	} ARGEND

	targinit(target);

	if (output && !freopen(output, "w", stdout))
		fatal("open %s:", output);

	if (argc) {
		while (argc--)
			scanfrom(argv[argc], NULL);
		scanopen();
	} else {
		scanfrom("<stdin>", stdin);
	}

	ppinit();
	if (pponly) {
		ppflags |= PPNEWLINE;
		while (tok.kind != TEOF) {
			tokenprint(&tok);
			next();
		}
	} else {
		scopeinit();
		while (tok.kind != TEOF) {
			if (!decl(&filescope, NULL)) {
				if (tok.kind == TSEMICOLON)
					error(&tok.loc, "unexpected ';' at top-level");
				error(&tok.loc, "expected declaration or function definition");
			}
		}
		emittentativedefns();
	}

	fflush(stdout);
	if (ferror(stdout))
		fatal("write failed");
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb $0x0, -0x11(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
leaq 0xde89(%rip), %rsi      # 0x1aa71
callq 0x12800
movq %rax, %rcx
leaq 0x155e1(%rip), %rax     # 0x221d8
movq %rcx, (%rax)
cmpl $0x0, -0x8(%rbp)
jle 0xcc15
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x8(%rbp)
cmpl $0x0, -0x8(%rbp)
je 0xcc2a
movq -0x10(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
je 0xcc2f
jmp 0xcdce
movq -0x10(%rbp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2d, %eax
jne 0xcc66
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpb $0x0, 0x2(%rax)
jne 0xcc66
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0xcdce
movq -0x10(%rbp), %rax
movq (%rax), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
movb $0x0, -0x31(%rbp)
xorl %eax, %eax
cmpb $0x0, -0x31(%rbp)
movb %al, -0x32(%rbp)
jne 0xcc94
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x32(%rbp)
movb -0x32(%rbp), %al
testb $0x1, %al
jne 0xcca0
jmp 0xcdc9
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0x38(%rbp)
subl $0x45, %eax
je 0xcccc
jmp 0xccb1
movl -0x38(%rbp), %eax
subl $0x6f, %eax
je 0xcd43
jmp 0xccbf
movl -0x38(%rbp), %eax
subl $0x74, %eax
je 0xccd5
jmp 0xcdb1
movb $0x1, -0x11(%rbp)
jmp 0xcdb6
movb $0x1, -0x31(%rbp)
movq -0x30(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0xccf8
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
movq %rax, -0x40(%rbp)
jmp 0xcd39
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0xcd25
movl -0x8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x8, %rcx
movq %rcx, -0x10(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0xcd2f
callq 0xcf40
callq 0x3040
movq -0x48(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0xcd39
movq -0x40(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0xcdb6
movb $0x1, -0x31(%rbp)
movq -0x30(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0xcd66
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
movq %rax, -0x50(%rbp)
jmp 0xcda7
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0xcd93
movl -0x8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x8, %rcx
movq %rcx, -0x10(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0xcd9d
callq 0xcf40
callq 0x3040
movq -0x58(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0xcda7
movq -0x50(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0xcdb6
callq 0xcf40
jmp 0xcdb8
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0xcc79
jmp 0xcbfa
movq -0x28(%rbp), %rdi
callq 0x10d60
cmpq $0x0, -0x20(%rbp)
je 0xce10
movq -0x20(%rbp), %rdi
movq 0x141e7(%rip), %rax     # 0x20fd0
movq (%rax), %rdx
leaq 0xfa9f(%rip), %rsi      # 0x1c892
callq 0x3120
cmpq $0x0, %rax
jne 0xce10
movq -0x20(%rbp), %rsi
leaq 0xdc72(%rip), %rdi      # 0x1aa7b
movb $0x0, %al
callq 0x12650
cmpl $0x0, -0x8(%rbp)
je 0xce46
jmp 0xce18
movl -0x8(%rbp), %eax
movl %eax, %ecx
addl $-0x1, %ecx
movl %ecx, -0x8(%rbp)
cmpl $0x0, %eax
je 0xce3f
movq -0x10(%rbp), %rax
movslq -0x8(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xed80
jmp 0xce18
callq 0xef10
jmp 0xce5c
movq 0x1418b(%rip), %rax     # 0x20fd8
movq (%rax), %rsi
leaq 0xdc2d(%rip), %rdi      # 0x1aa84
callq 0xed80
callq 0xd520
testb $0x1, -0x11(%rbp)
je 0xce9d
leaq 0x1521a(%rip), %rax     # 0x22088
movl (%rax), %ecx
orl $0x1, %ecx
leaq 0x1520e(%rip), %rax     # 0x22088
movl %ecx, (%rax)
leaq 0x15325(%rip), %rax     # 0x221a8
cmpl $0x1, (%rax)
je 0xce9b
leaq 0x15319(%rip), %rdi     # 0x221a8
callq 0x10e60
callq 0xd540
jmp 0xce7c
jmp 0xcf07
callq 0xfd00
leaq 0x152ff(%rip), %rax     # 0x221a8
cmpl $0x1, (%rax)
je 0xcf02
leaq 0x1528b(%rip), %rdi     # 0x22140
xorl %eax, %eax
movl %eax, %esi
callq 0x45f0
testb $0x1, %al
jne 0xcf00
leaq 0x152df(%rip), %rax     # 0x221a8
cmpl $0x61, (%rax)
jne 0xcee7
leaq 0x152d3(%rip), %rdi     # 0x221a8
addq $0x8, %rdi
leaq 0xdbac(%rip), %rsi      # 0x1aa8c
movb $0x0, %al
callq 0x11190
leaq 0x152ba(%rip), %rdi     # 0x221a8
addq $0x8, %rdi
leaq 0xdbaf(%rip), %rsi      # 0x1aaa8
movb $0x0, %al
callq 0x11190
jmp 0xcea2
callq 0x5560
movq 0x140c2(%rip), %rax     # 0x20fd0
movq (%rax), %rdi
callq 0x31c0
movq 0x140b3(%rip), %rax     # 0x20fd0
movq (%rax), %rdi
callq 0x3070
cmpl $0x0, %eax
je 0xcf38
leaq 0xdba3(%rip), %rdi      # 0x1aad4
movb $0x0, %al
callq 0x12650
xorl %eax, %eax
addq $0x60, %rsp
popq %rbp
retq