// File: /workspace/github_c_makefile_star2_O1/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 0x5ed3
leaq 0x52c0(%rip), %r15      # 0xb0d4
movq 0x8(%rbx), %rdi
cmpb $0x2d, (%rdi)
jne 0x5ed3
movzbl 0x1(%rdi), %eax
cmpl $0x63, %eax
jle 0x5e43
leal -0x64(%rax), %ecx
cmpl $0xa, %ecx
ja 0x5e61
movslq (%r15,%rcx,4), %rax
addq %r15, %rax
jmpq *%rax
incl 0xe49f(%rip)            # 0x142e0
jmp 0x5eb8
cmpl $0x44, %eax
je 0x5ea7
cmpl $0x49, %eax
je 0x5e9c
cmpl $0x55, %eax
jne 0x5f7b
addq $0x2, %rdi
callq 0x6036
jmp 0x5eb8
cmpl $0x76, %eax
je 0x5eb2
cmpl $0x78, %eax
jne 0x5f7b
movl $0x1, 0xe463(%rip)      # 0x142dc
jmp 0x5eb8
movb $0x1, 0xe442(%rip)      # 0x142c4
jmp 0x5eb8
incl 0xd00a(%rip)            # 0x12e94
jmp 0x5eb8
incl 0xe446(%rip)            # 0x142d8
jmp 0x5eb8
incl 0xe426(%rip)            # 0x142c0
jmp 0x5eb8
addq $0x2, %rdi
callq 0x86b8
jmp 0x5eb8
addq $0x2, %rdi
callq 0x5f80
jmp 0x5eb8
incl 0xdff8(%rip)            # 0x13eb0
addq $0x8, %rbx
leal -0x1(%r14), %eax
cmpl $0x2, %r14d
movl %eax, %r14d
jg 0x5e14
movl $0x1, %r14d
leaq 0x8975(%rip), %rdi      # 0xe84f
callq 0x86b8
leaq 0x8976(%rip), %rdi      # 0xe85c
callq 0x86b8
leaq 0x897b(%rip), %rdi      # 0xe86d
callq 0x86b8
callq 0x5db4
xorl %r15d, %r15d
leaq 0xbdba(%rip), %r12      # 0x11cc0
movq (%r15,%r12), %rdi
callq 0x5f80
addq $0x8, %r15
cmpq $0x40, %r15
jne 0x5f06
cmpl $0x2, %r14d
jge 0x5f32
leaq 0x897a(%rip), %rdi      # 0xe8a0
xorl %esi, %esi
movq %rdi, %rdx
callq 0x8a81
jmp 0x5f62
addq $0x8, %rbx
incl %r14d
leaq 0x8960(%rip), %r15      # 0xe8a0
movq (%rbx), %rdi
callq 0x8735
movq %r15, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x8a81
addq $0x8, %rbx
decl %r14d
cmpl $0x2, %r14d
jg 0x5f40
cmpl $0x0, 0xcf2b(%rip)      # 0x12e94
je 0x5f70
callq 0xa380
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
callq 0x42dd