// File: /workspace/github_c_makefile_star2_O3/nimble-code[P]gh_cpp/Src/gh_cpp1.c
// Function: main
int
main(int argc, char *argv[])
{	int i;

	while (argc > 1 && argv[1][0] == '-')
	{	switch (argv[1][1]) {
		case 'D': add_def(&argv[1][2]); break;
		case 'd': debugging++; break;
		case 'I': add_sysdir(&argv[1][2]); break;
		case 'i': no_includes++; break;
		case 'm': misra_rules++; break;
		case 'n': numbered++; break;
		case 'U': rm_def(&argv[1][2]); break;
		case 'x': main_only = 1; break;
		case 'e': explanations = 1; break;
		case 'v': verbose++; break;
		default:
			fprintf(stderr, "usage: gh_cpp -[vinm] -[IDU] filename.c\n");
			fprintf(stderr, "	-I, -D, -U as in cpp\n");
			fprintf(stderr, "	-d	debugging, extra verbose\n");
			fprintf(stderr, "	-i	do not expand include files\n");
			fprintf(stderr, "	-m	check ~35 simple misra rules\n");
			fprintf(stderr, "	-m -m	check rules also for included files\n");
			fprintf(stderr, "	-n	numbered output\n");
			fprintf(stderr, "	-x	show only output for toplevel file\n");
			fprintf(stderr, "	-e	explain macro expansions\n");
			fprintf(stderr, "	-v	verbose\n");
			exit(1);
		}
		argc--; argv++;
	}

	add_sysdir("/usr/include");
	add_sysdir("/usr/include/sys");
#ifdef PC
	add_sysdir("/usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/include");
#else
	add_sysdir("/usr/lib/gcc-lib/x86_64-redhat-linux/3.3.3/include");	/* ? */
#endif
	preconfigure();

	for (i = 0; predefs[i]; i++)
		add_def(predefs[i]);

	if (argc <= 1)
		do_file("<stdin>", 0, "<stdin>");	/* gh_cpp2.c */
	else while (argc > 1)
	{	do_file("<stdin>", 0, next_file(argv[1]));
		argc--; argv++;
	}

	if (misra_rules) show_violations();

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movl %edi, %r14d
cmpl $0x2, %edi
jl 0x5f10
leaq 0x5283(%rip), %r15      # 0xb0d4
movq 0x8(%rbx), %rdi
cmpb $0x2d, (%rdi)
jne 0x5f10
movzbl 0x1(%rdi), %eax
cmpl $0x63, %eax
jle 0x5e80
leal -0x64(%rax), %ecx
cmpl $0xa, %ecx
ja 0x5e9e
movslq (%r15,%rcx,4), %rax
addq %r15, %rax
jmpq *%rax
incl 0xe462(%rip)            # 0x142e0
jmp 0x5ef5
cmpl $0x44, %eax
je 0x5ee4
cmpl $0x49, %eax
je 0x5ed9
cmpl $0x55, %eax
jne 0x5fb8
addq $0x2, %rdi
callq 0x6073
jmp 0x5ef5
cmpl $0x76, %eax
je 0x5eef
cmpl $0x78, %eax
jne 0x5fb8
movl $0x1, 0xe426(%rip)      # 0x142dc
jmp 0x5ef5
movb $0x1, 0xe405(%rip)      # 0x142c4
jmp 0x5ef5
incl 0xcfcd(%rip)            # 0x12e94
jmp 0x5ef5
incl 0xe409(%rip)            # 0x142d8
jmp 0x5ef5
incl 0xe3e9(%rip)            # 0x142c0
jmp 0x5ef5
addq $0x2, %rdi
callq 0x8640
jmp 0x5ef5
addq $0x2, %rdi
callq 0x5fbd
jmp 0x5ef5
incl 0xdfbb(%rip)            # 0x13eb0
addq $0x8, %rbx
leal -0x1(%r14), %eax
cmpl $0x2, %r14d
movl %eax, %r14d
jg 0x5e51
movl $0x1, %r14d
leaq 0x8938(%rip), %rdi      # 0xe84f
callq 0x8640
leaq 0x8939(%rip), %rdi      # 0xe85c
callq 0x8640
leaq 0x893e(%rip), %rdi      # 0xe86d
callq 0x8640
callq 0x5df1
xorl %r15d, %r15d
leaq 0xbd7d(%rip), %r12      # 0x11cc0
movq (%r15,%r12), %rdi
callq 0x5fbd
addq $0x8, %r15
cmpq $0x40, %r15
jne 0x5f43
cmpl $0x2, %r14d
jge 0x5f6f
leaq 0x893d(%rip), %rdi      # 0xe8a0
xorl %esi, %esi
movq %rdi, %rdx
callq 0x8a31
jmp 0x5f9f
addq $0x8, %rbx
incl %r14d
leaq 0x8923(%rip), %r15      # 0xe8a0
movq (%rbx), %rdi
callq 0x86bd
movq %r15, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x8a31
addq $0x8, %rbx
decl %r14d
cmpl $0x2, %r14d
ja 0x5f7d
cmpl $0x0, 0xceee(%rip)      # 0x12e94
je 0x5fad
callq 0xa428
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
callq 0x429c