// File: /workspace/github_c_makefile_star2_O2/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
testl %edi, %edi
pushq $0x1
popq %r15
cmovlel %edi, %r15d
addq $0x8, %rbx
leaq 0x4a11(%rip), %r12      # 0xa0d4
cmpl $0x2, %r14d
jl 0x5776
movq (%rbx), %rdi
cmpb $0x2d, (%rdi)
jne 0x5773
movzbl 0x1(%rdi), %eax
leal -0x64(%rax), %ecx
cmpl $0xa, %ecx
jbe 0x570d
cmpl $0x78, %eax
je 0x573f
cmpl $0x49, %eax
je 0x5753
cmpl $0x55, %eax
je 0x575e
cmpl $0x76, %eax
je 0x574b
cmpl $0x44, %eax
jne 0x5819
addq $0x2, %rdi
callq 0x5901
jmp 0x5767
movslq (%r12,%rcx,4), %rax
addq %r12, %rax
jmpq *%rax
incl 0xdbc4(%rip)            # 0x132e0
jmp 0x5767
movb $0x1, 0xdb9f(%rip)      # 0x132c4
jmp 0x5767
incl 0xdbab(%rip)            # 0x132d8
jmp 0x5767
incl 0xc75f(%rip)            # 0x11e94
jmp 0x5767
incl 0xdb83(%rip)            # 0x132c0
jmp 0x5767
movl $0x1, 0xdb93(%rip)      # 0x132dc
jmp 0x5767
incl 0xd75f(%rip)            # 0x12eb0
jmp 0x5767
addq $0x2, %rdi
callq 0x7f64
jmp 0x5767
addq $0x2, %rdi
callq 0x59ae
decl %r14d
addq $0x8, %rbx
jmp 0x56c3
movl %r14d, %r15d
leaq 0x80d2(%rip), %rdi      # 0xd84f
callq 0x7f64
leaq 0x80d3(%rip), %rdi      # 0xd85c
callq 0x7f64
leaq 0x80d8(%rip), %rdi      # 0xd86d
callq 0x7f64
callq 0x5668
xorl %r14d, %r14d
leaq 0xb517(%rip), %r12      # 0x10cc0
cmpq $0x40, %r14
je 0x57be
movq (%r14,%r12), %rdi
callq 0x5901
addq $0x8, %r14
jmp 0x57a9
cmpl $0x2, %r15d
jge 0x57ee
leaq 0x80d5(%rip), %rdi      # 0xd8a0
xorl %esi, %esi
movq %rdi, %rdx
callq 0x836a
cmpl $0x0, 0xc6b8(%rip)      # 0x11e94
je 0x57e3
callq 0x9ce9
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x80ab(%rip), %r14      # 0xd8a0
cmpl $0x2, %r15d
jl 0x57d5
movq (%rbx), %rdi
callq 0x7fe2
movq %r14, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x836a
decl %r15d
addq $0x8, %rbx
jmp 0x57f5
movq 0xb7d8(%rip), %r15      # 0x10ff8
movq (%r15), %rcx
leaq 0x7ef0(%rip), %rdi      # 0xd71a
pushq $0x28
popq %rsi
pushq $0x1
popq %rbx
movq %rbx, %rdx
callq 0x41c0
movq (%r15), %rcx
leaq 0x7f01(%rip), %rdi      # 0xd743
pushq $0x16
popq %rsi
movq %rbx, %rdx
callq 0x41c0
movq (%r15), %rcx
leaq 0x7f03(%rip), %rdi      # 0xd75a
pushq $0x1d
popq %r14
movq %r14, %rsi
movq %rbx, %rdx
callq 0x41c0
movq (%r15), %rcx
leaq 0x7f08(%rip), %rdi      # 0xd778
pushq $0x20
popq %rsi
movq %rbx, %rdx
callq 0x41c0
movq (%r15), %rcx
leaq 0x7f14(%rip), %rdi      # 0xd799
pushq $0x21
popq %rsi
movq %rbx, %rdx
callq 0x41c0
movq (%r15), %rcx
leaq 0x7f21(%rip), %rdi      # 0xd7bb
pushq $0x2b
popq %rsi
movq %rbx, %rdx
callq 0x41c0
movq (%r15), %rcx
leaq 0x7f38(%rip), %rdi      # 0xd7e7
pushq $0x14
popq %rsi
movq %rbx, %rdx
callq 0x41c0
movq (%r15), %rcx
leaq 0x7f38(%rip), %rdi      # 0xd7fc
pushq $0x27
popq %rsi
movq %rbx, %rdx
callq 0x41c0
movq (%r15), %rcx
leaq 0x7f4b(%rip), %rdi      # 0xd824
movq %r14, %rsi
movq %rbx, %rdx
callq 0x41c0
movq (%r15), %rcx
leaq 0x7f54(%rip), %rdi      # 0xd842
pushq $0xc
popq %rsi
movq %rbx, %rdx
callq 0x41c0
pushq $0x1
popq %rdi
callq 0x41b0