// File: arnoldrobbins[P]mcilroy-regex/grep.cpp
// Function: execute(_IO_FILE*, char const*)
void
execute(FILE *input, const char *name)
{
	int i, lineno;
	int hits = 0;
	for(lineno=1; ; lineno++) {
		int n = getline(input, name);
		if(n < 0)
			break;
		for(i=0; i<nre; i++) {
			int result = regnexec(&re[i], &line[0], n, 0, 0, 0);
			if(result == 0) 
				break;
			if(result != REG_NOMATCH)
				doregerror(result, name, lineno);
		}
		if((i<nre) ^ vflag) {
			hits++;
			if(qflag | lflag)
				break;
			if(cflag)
				continue;
			if(nfiles>1 && !hflag)
				printf("%s:", name);
			if(nflag)
				printf("%d:", lineno);
			printf("%s\n", line.bytes());
		}
	}
	if(hits)
		anyhits = 1;
	if(qflag)
		return;
	if(lflag && hits)
		printf("%s\n", name);
	if(!lflag && cflag) {
		if(nfiles>1 && !hflag)
			printf("%s:", name);
		printf("%d\n", hits);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x1c(%rbp)
movl $0x1, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x4cb0
movl %eax, -0x20(%rbp)
cmpl $0x0, -0x20(%rbp)
jge 0x4a29
jmp 0x4b56
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl 0xe247(%rip), %eax      # 0x12c80
jge 0x4aa4
movl -0x14(%rbp), %esi
leaq 0xdf0b(%rip), %rdi      # 0x12950
callq 0x5080
movq %rax, -0x30(%rbp)
leaq 0xe233(%rip), %rdi      # 0x12c88
xorl %esi, %esi
callq 0x5020
movq -0x30(%rbp), %rdi
movq %rax, %rsi
movslq -0x20(%rbp), %rdx
xorl %eax, %eax
movl %eax, %r8d
xorl %r9d, %r9d
movq %r8, %rcx
callq 0x7a00
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jne 0x4a82
jmp 0x4aa4
cmpl $0x1, -0x24(%rbp)
je 0x4a97
movl -0x24(%rbp), %edi
movq -0x10(%rbp), %rsi
movl -0x18(%rbp), %edx
callq 0x4d80
jmp 0x4a99
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x4a30
movl -0x14(%rbp), %eax
cmpl 0xe1d3(%rip), %eax      # 0x12c80
setl %al
andb $0x1, %al
movzbl %al, %eax
xorl 0xdd19(%rip), %eax      # 0x127d4
cmpl $0x0, %eax
je 0x4b46
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movl 0xdcf5(%rip), %eax      # 0x127c8
orl 0xdceb(%rip), %eax      # 0x127c4
cmpl $0x0, %eax
je 0x4ae0
jmp 0x4b56
cmpl $0x0, 0xdcd9(%rip)      # 0x127c0
je 0x4aeb
jmp 0x4b48
cmpl $0x1, 0xe1be(%rip)      # 0x12cb0
jle 0x4b0f
cmpl $0x0, 0xdcdd(%rip)      # 0x127d8
jne 0x4b0f
movq -0x10(%rbp), %rsi
leaq 0x87de(%rip), %rdi      # 0xd2e6
movb $0x0, %al
callq 0x4050
cmpl $0x0, 0xdcb6(%rip)      # 0x127cc
je 0x4b29
movl -0x18(%rbp), %esi
leaq 0x87c8(%rip), %rdi      # 0xd2ea
movb $0x0, %al
callq 0x4050
leaq 0xe158(%rip), %rdi      # 0x12c88
callq 0x50e0
movq %rax, %rsi
leaq 0x87ca(%rip), %rdi      # 0xd309
movb $0x0, %al
callq 0x4050
jmp 0x4b48
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x4a0e
cmpl $0x0, -0x1c(%rbp)
je 0x4b66
movl $0x1, 0xe146(%rip)      # 0x12cac
cmpl $0x0, 0xdc5b(%rip)      # 0x127c8
je 0x4b71
jmp 0x4bd9
cmpl $0x0, 0xdc4c(%rip)      # 0x127c4
je 0x4b92
cmpl $0x0, -0x1c(%rbp)
je 0x4b92
movq -0x10(%rbp), %rsi
leaq 0x877e(%rip), %rdi      # 0xd309
movb $0x0, %al
callq 0x4050
cmpl $0x0, 0xdc2b(%rip)      # 0x127c4
jne 0x4bd9
cmpl $0x0, 0xdc1e(%rip)      # 0x127c0
je 0x4bd9
cmpl $0x1, 0xe105(%rip)      # 0x12cb0
jle 0x4bc8
cmpl $0x0, 0xdc24(%rip)      # 0x127d8
jne 0x4bc8
movq -0x10(%rbp), %rsi
leaq 0x8725(%rip), %rdi      # 0xd2e6
movb $0x0, %al
callq 0x4050
movl -0x1c(%rbp), %esi
leaq 0x872a(%rip), %rdi      # 0xd2fc
movb $0x0, %al
callq 0x4050
addq $0x30, %rsp
popq %rbp
retq
nop