// File: /workspace/github_c_makefile_star2_O0/aligrudi[P]gpss/gpss.c
// Function: main
int main(int argc, char *argv[])
{
	int P[NPT];
	int C1[NPT];
	int S1[NPT];
	int S2[NPT];
	int S3[NPT];
	int S4[NPT];
	int c1;
	int n1, n2, n3, n4;
	int rep = 0;		/* report the set of removed points */
	int i;
	for (i = 1; i < argc && argv[i][0] == '-'; i++) {
		if (argv[i][1] == 'r')
			rep = atoi(argv[i][2] ? argv[i] + 2 : argv[++i]);
	}
	data_read(stdin);
	for (i = 0; i < pt_n; i++)
		P[i] = i;
	c1 = gpss_linecover(C1, P);
	n1 = gpss_greedy(S1, P);
	n2 = gpss_greedymin(S2, P);
	n3 = gpss_greedymax(S3, P);
	n4 = gpss_main(S4, P);
	if (rep == 1)
		report(S1, n1);
	if (rep == 2)
		report(S2, n1);
	if (rep == 3)
		report(S3, n1);
	if (rep == 4)
		report(S4, n1);
	if (rep == 5)
		report(C1, c1);
	if (rep == 0)
		printf("%4d %8d %8d %8d %8d\n", pt_n, n4, n1, n2, n3);
	data_free();
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3a9c0, %rsp          # imm = 0x3A9C0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x3a9a8(%rbp)
movl $0x1, -0x3a9ac(%rbp)
movl -0x3a9ac(%rbp), %ecx
xorl %eax, %eax
cmpl -0x8(%rbp), %ecx
movb %al, -0x3a9ad(%rbp)
jge 0x11fe
movq -0x10(%rbp), %rax
movslq -0x3a9ac(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
sete %al
movb %al, -0x3a9ad(%rbp)
movb -0x3a9ad(%rbp), %al
testb $0x1, %al
jne 0x120d
jmp 0x12a2
movq -0x10(%rbp), %rax
movslq -0x3a9ac(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x72, %eax
jne 0x128c
movq -0x10(%rbp), %rax
movslq -0x3a9ac(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x2(%rax), %eax
cmpl $0x0, %eax
je 0x1259
movq -0x10(%rbp), %rax
movslq -0x3a9ac(%rbp), %rcx
movq (%rax,%rcx,8), %rax
addq $0x2, %rax
movq %rax, -0x3a9b8(%rbp)
jmp 0x127a
movq -0x10(%rbp), %rax
movl -0x3a9ac(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, -0x3a9ac(%rbp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x3a9b8(%rbp)
movq -0x3a9b8(%rbp), %rdi
callq 0x1090
movl %eax, -0x3a9a8(%rbp)
jmp 0x128e
movl -0x3a9ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3a9ac(%rbp)
jmp 0x11cd
movq 0x3d37(%rip), %rax      # 0x4fe0
movq (%rax), %rdi
callq 0x1440
movl $0x0, -0x3a9ac(%rbp)
movl -0x3a9ac(%rbp), %eax
cmpl 0x3da1(%rip), %eax      # 0x5068
jge 0x12ee
movl -0x3a9ac(%rbp), %ecx
movslq -0x3a9ac(%rbp), %rax
movl %ecx, -0x9c50(%rbp,%rax,4)
movl -0x3a9ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3a9ac(%rbp)
jmp 0x12bb
leaq -0x13890(%rbp), %rdi
leaq -0x9c50(%rbp), %rsi
callq 0x1770
movl %eax, -0x3a994(%rbp)
leaq -0x1d4d0(%rbp), %rdi
leaq -0x9c50(%rbp), %rsi
callq 0x19b0
movl %eax, -0x3a998(%rbp)
leaq -0x27110(%rbp), %rdi
leaq -0x9c50(%rbp), %rsi
callq 0x1a50
movl %eax, -0x3a99c(%rbp)
leaq -0x30d50(%rbp), %rdi
leaq -0x9c50(%rbp), %rsi
callq 0x1aa0
movl %eax, -0x3a9a0(%rbp)
leaq -0x3a990(%rbp), %rdi
leaq -0x9c50(%rbp), %rsi
callq 0x1ba0
movl %eax, -0x3a9a4(%rbp)
cmpl $0x1, -0x3a9a8(%rbp)
jne 0x1386
leaq -0x1d4d0(%rbp), %rdi
movl -0x3a998(%rbp), %esi
callq 0x1ce0
cmpl $0x2, -0x3a9a8(%rbp)
jne 0x13a1
leaq -0x27110(%rbp), %rdi
movl -0x3a998(%rbp), %esi
callq 0x1ce0
cmpl $0x3, -0x3a9a8(%rbp)
jne 0x13bc
leaq -0x30d50(%rbp), %rdi
movl -0x3a998(%rbp), %esi
callq 0x1ce0
cmpl $0x4, -0x3a9a8(%rbp)
jne 0x13d7
leaq -0x3a990(%rbp), %rdi
movl -0x3a998(%rbp), %esi
callq 0x1ce0
cmpl $0x5, -0x3a9a8(%rbp)
jne 0x13f2
leaq -0x13890(%rbp), %rdi
movl -0x3a994(%rbp), %esi
callq 0x1ce0
cmpl $0x0, -0x3a9a8(%rbp)
jne 0x1429
movl 0x3c67(%rip), %esi      # 0x5068
movl -0x3a9a4(%rbp), %edx
movl -0x3a998(%rbp), %ecx
movl -0x3a99c(%rbp), %r8d
movl -0x3a9a0(%rbp), %r9d
leaq 0x1be2(%rip), %rdi      # 0x3004
movb $0x0, %al
callq 0x1050
callq 0x1dc0
xorl %eax, %eax
addq $0x3a9c0, %rsp          # imm = 0x3A9C0
popq %rbp
retq
nopl (%rax)