// File: /workspace/github_c_makefile_star2_O0/theovosse[P]llgen/regexp.c
// Function: MatchNFA2
ESet MatchNFA2(RegExp regExp, char *line) {
	Boolean *sptr;
	Boolean *optr;
	RegExp *stptr;
	ESet answers = NULL;
	Transition tr;
	int i;
	Boolean changes;

	for (sptr = stateState, i = 0; i != globStateNr; i++) {
		*sptr++ = false;
	}
	/* Take eTransitions */
	memcpy(oStates, stateState, globStateNr * sizeof(Boolean));
	stateState[0] = true;
	do {
		changes = false;
		for (i = 0, sptr = stateState, optr = oStates, stptr = state; i != globStateNr; i++, sptr++, optr++, stptr++) {
			if (*sptr && !*optr) {
				*optr = true;
				for (tr = (*stptr)->eTransitions; tr != NULL; tr = tr->next) {
					if (!stateState[tr->destination->state.number]) {
						changes = true;
						stateState[tr->destination->state.number] = true;
					}
				}
			}
		}
	}
	while (changes);
	while (*line != '\0') {
		/* Take transitions */
		changes = false;
		memcpy(oStates, stateState, globStateNr * sizeof(Boolean));
		for (sptr = stateState, i = 0; i != globStateNr; i++) *sptr++ = false;
		for (i = 0, optr = oStates, stptr = state; i != globStateNr; i++, optr++, stptr++) {
			if (*optr) {
				for (tr = (*stptr)->transitions; tr != NULL; tr = tr->next) {
					if (tr->transitionChar == ((int) *line & 0xFF)) {
						changes = true;
						stateState[tr->destination->state.number] = true;
					}
				}
			}
		}
		if (!changes) {
			return (NULL);
		}
		/* Take eTransitions */
		memcpy(oStates, stateState, globStateNr * sizeof(Boolean));
		stateState[0] = true;
		do {
			changes = false;
			for (i = 0, sptr = stateState, optr = oStates, stptr = state; i != globStateNr; i++, sptr++, optr++, stptr++) {
				if (*sptr && !*optr) {
					*optr = true;
					for (tr = (*stptr)->eTransitions; tr != NULL; tr = tr->next) {
						if (!stateState[tr->destination->state.number]) {
							changes = true;
							stateState[tr->destination->state.number] = true;
						}
					}
				}
			}
		}
		while (changes);
		line++;
	}
	for (sptr = stateState, stptr = state, i = 0; i != globStateNr; i++, stptr++) {
		if (*sptr++ && (*stptr)->info != NULL) {
			((ESet) ((*stptr)->info))->next = answers;
			answers = (ESet) ((*stptr)->info);
		}
	}
	return (answers);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq $0x0, -0x38(%rbp)
movq 0x10789(%rip), %rax     # 0x22f68
movq %rax, -0x20(%rbp)
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl 0x10765(%rip), %eax     # 0x22f58
je 0x12814
movq -0x20(%rbp), %rax
movq %rax, %rcx
addq $0x2, %rcx
movq %rcx, -0x20(%rbp)
movw $0x0, (%rax)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x127ea
movq 0x10755(%rip), %rdi     # 0x22f70
movq 0x10746(%rip), %rsi     # 0x22f68
movslq 0x1072f(%rip), %rdx     # 0x22f58
shlq %rdx
callq 0x3150
movq 0x10730(%rip), %rax     # 0x22f68
movw $0xffff, (%rax)         # imm = 0xFFFF
movw $0x0, -0x46(%rbp)
movl $0x0, -0x44(%rbp)
movq 0x10717(%rip), %rax     # 0x22f68
movq %rax, -0x20(%rbp)
movq 0x10714(%rip), %rax     # 0x22f70
movq %rax, -0x28(%rbp)
movq 0x106e9(%rip), %rax     # 0x22f50
movq %rax, -0x30(%rbp)
movl -0x44(%rbp), %eax
cmpl 0x106e4(%rip), %eax     # 0x22f58
je 0x1292e
movq -0x20(%rbp), %rax
movswl (%rax), %eax
cmpl $0x0, %eax
je 0x128fa
movq -0x28(%rbp), %rax
cmpw $0x0, (%rax)
jne 0x128fa
movq -0x28(%rbp), %rax
movw $0xffff, (%rax)         # imm = 0xFFFF
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x128f8
movq 0x106b2(%rip), %rax     # 0x22f68
movq -0x40(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x28(%rcx), %rcx
cmpw $0x0, (%rax,%rcx,2)
jne 0x128e8
movw $0xffff, -0x46(%rbp)    # imm = 0xFFFF
movq 0x10692(%rip), %rax     # 0x22f68
movq -0x40(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x28(%rcx), %rcx
movw $0xffff, (%rax,%rcx,2)  # imm = 0xFFFF
jmp 0x128ea
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0x128a8
jmp 0x128fa
jmp 0x128fc
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
movq -0x20(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x28(%rbp)
movq -0x30(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x30(%rbp)
jmp 0x1286b
jmp 0x12930
cmpw $0x0, -0x46(%rbp)
jne 0x1283d
jmp 0x1293d
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x12bb3
movw $0x0, -0x46(%rbp)
movq 0x10616(%rip), %rdi     # 0x22f70
movq 0x10607(%rip), %rsi     # 0x22f68
movslq 0x105f0(%rip), %rdx     # 0x22f58
shlq %rdx
callq 0x3150
movq 0x105f1(%rip), %rax     # 0x22f68
movq %rax, -0x20(%rbp)
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl 0x105cd(%rip), %eax     # 0x22f58
je 0x129ac
movq -0x20(%rbp), %rax
movq %rax, %rcx
addq $0x2, %rcx
movq %rcx, -0x20(%rbp)
movw $0x0, (%rax)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x12982
movl $0x0, -0x44(%rbp)
movq 0x105b6(%rip), %rax     # 0x22f70
movq %rax, -0x28(%rbp)
movq 0x1058b(%rip), %rax     # 0x22f50
movq %rax, -0x30(%rbp)
movl -0x44(%rbp), %eax
cmpl 0x10586(%rip), %eax     # 0x22f58
je 0x12a67
movq -0x28(%rbp), %rax
cmpw $0x0, (%rax)
je 0x12a3f
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x12a3d
movq -0x40(%rbp), %rax
movl (%rax), %eax
movq -0x18(%rbp), %rcx
movsbl (%rcx), %ecx
andl $0xff, %ecx
cmpl %ecx, %eax
jne 0x12a2d
movw $0xffff, -0x46(%rbp)    # imm = 0xFFFF
movq 0x1054d(%rip), %rax     # 0x22f68
movq -0x40(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x28(%rcx), %rcx
movw $0xffff, (%rax,%rcx,2)  # imm = 0xFFFF
jmp 0x12a2f
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0x129f0
jmp 0x12a3f
jmp 0x12a41
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
movq -0x28(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x28(%rbp)
movq -0x30(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x30(%rbp)
jmp 0x129c9
cmpw $0x0, -0x46(%rbp)
jne 0x12a7b
movq $0x0, -0x8(%rbp)
jmp 0x12c43
movq 0x104ee(%rip), %rdi     # 0x22f70
movq 0x104df(%rip), %rsi     # 0x22f68
movslq 0x104c8(%rip), %rdx     # 0x22f58
shlq %rdx
callq 0x3150
movq 0x104c9(%rip), %rax     # 0x22f68
movw $0xffff, (%rax)         # imm = 0xFFFF
movw $0x0, -0x46(%rbp)
movl $0x0, -0x44(%rbp)
movq 0x104b0(%rip), %rax     # 0x22f68
movq %rax, -0x20(%rbp)
movq 0x104ad(%rip), %rax     # 0x22f70
movq %rax, -0x28(%rbp)
movq 0x10482(%rip), %rax     # 0x22f50
movq %rax, -0x30(%rbp)
movl -0x44(%rbp), %eax
cmpl 0x1047d(%rip), %eax     # 0x22f58
je 0x12b95
movq -0x20(%rbp), %rax
movswl (%rax), %eax
cmpl $0x0, %eax
je 0x12b61
movq -0x28(%rbp), %rax
cmpw $0x0, (%rax)
jne 0x12b61
movq -0x28(%rbp), %rax
movw $0xffff, (%rax)         # imm = 0xFFFF
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x12b5f
movq 0x1044b(%rip), %rax     # 0x22f68
movq -0x40(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x28(%rcx), %rcx
cmpw $0x0, (%rax,%rcx,2)
jne 0x12b4f
movw $0xffff, -0x46(%rbp)    # imm = 0xFFFF
movq 0x1042b(%rip), %rax     # 0x22f68
movq -0x40(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x28(%rcx), %rcx
movw $0xffff, (%rax,%rcx,2)  # imm = 0xFFFF
jmp 0x12b51
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0x12b0f
jmp 0x12b61
jmp 0x12b63
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
movq -0x20(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x28(%rbp)
movq -0x30(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x30(%rbp)
jmp 0x12ad2
jmp 0x12b97
cmpw $0x0, -0x46(%rbp)
jne 0x12aa4
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x1293d
movq 0x103ae(%rip), %rax     # 0x22f68
movq %rax, -0x20(%rbp)
movq 0x1038b(%rip), %rax     # 0x22f50
movq %rax, -0x30(%rbp)
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl 0x1037f(%rip), %eax     # 0x22f58
je 0x12c3b
movq -0x20(%rbp), %rax
movq %rax, %rcx
addq $0x2, %rcx
movq %rcx, -0x20(%rbp)
movswl (%rax), %eax
cmpl $0x0, %eax
je 0x12c22
movq -0x30(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0x12c22
movq -0x38(%rbp), %rcx
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x38(%rbp)
jmp 0x12c24
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
movq -0x30(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x30(%rbp)
jmp 0x12bd0
movq -0x38(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)