// File: /workspace/github_c_makefile_star2_O0/theovosse[P]llgen/regexp.c
// Function: DumpRegExp2
static void DumpRegExp2(RegExp regExp) {
	Transition tr, tr2;
	ESet transitions;
	int mCount = charSetSize, count;
	RegExp mState = NULL;
	Boolean cSet[256];
	int i, tCount;

	if (regExp->lastVisit != lastVisit) {
		regExp->lastVisit = lastVisit;
		printf("%lx: ", regExp->state.number);
		if (regExp->transitions != NULL) {
			transitions = NULL;
			tCount = charSetSize;
			for (i = 0; i != charSetSize; i++) cSet[i] = false;
			for (tr = regExp->transitions; tr != NULL; tr = tr->next) {
				if (!cSet[tr->transitionChar]) {
					mCount--;
					cSet[tr->transitionChar] = true;
					tCount--;
				}
			}
			/* mCount is nr. of fails, mState == NULL, the fail state */
			for (tr = regExp->transitions; tr != NULL; tr = tr->next) {
				if (tr->destination != mState) /* not the most efficient check, but ok */ {
					for (count = 0, tr2 = tr; tr2 != NULL; tr2 = tr2->next)
						if (tr2->destination == tr->destination) count++;
					if (count > mCount) {
						mCount = count;
						mState = tr->destination;
					}
				}
			}
			/* mCount is max. nr. of transitions to the same state, mState is that state */
			for (tr = regExp->transitions; tr != NULL; tr = tr->next) {
				/* Suppresses \0...\037 en \177...\377 */
				if (' ' <= tr->transitionChar && tr->transitionChar <= '~') {
					if (tr->destination != mState && !SetMember(tr->destination, transitions)) {
						transitions = AddElement(tr->destination, transitions);
						printf("{");
						for (tr2 = tr; tr2 != NULL; tr2 = tr2->next)
							if (tr2->destination == tr->destination && tr2->transitionChar >= ' ')
								fputc(tr2->transitionChar, stdout);
						printf("}->%lx ", tr->destination->state.number);
					}
				}
			}
			if (mState == NULL) {
				printf("otherwise fail ");
			} else {
				if (tCount != 0) {
					printf("{");
					for (i = 0; i != charSetSize; i++) {
						if (!cSet[i]) fputc(i, stdout);
					}
					printf("}->fail ");
				}
				printf("otherwise->%lx ", mState->state.number);
			}
			RemoveSet(transitions);
		}
		if (regExp->eTransitions != NULL) {
			printf("Eps:{");
			for (tr = regExp->eTransitions; tr != NULL; tr = tr->next) {
				printf("%lx", tr->destination->state.number);
				if (tr->next != NULL) putchar(',');
			}
			printf("}");
		}
		if (regExp->info != NULL) {
			ESet set = regExp->info;
			Answer first = set->element;
			while (set != NULL) {
				if (singleAnswer) {
					if (first->number > ((Answer) set->element)->number) {
						first = set->element;
					}
				} else {
					printf(" res='%d.%s'", ((Answer) set->element)->number, (const char*) ((Answer) set->element)->info);
				}
				set = set->next;
			}
			if (singleAnswer) {
				printf(" res='%s'", (const char*) first->info);
			}
		}
		putchar('\n');
		for (tr = regExp->transitions; tr != NULL; tr = tr->next) {
			DumpRegExp2(tr->destination);
		}
		for (tr = regExp->eTransitions; tr != NULL; tr = tr->next) {
			DumpRegExp2(tr->destination);
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x250, %rsp            # imm = 0x250
movq %rdi, -0x8(%rbp)
movl 0xd50f(%rip), %eax      # 0x202a4
movl %eax, -0x24(%rbp)
movq $0x0, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
cmpq 0x10199(%rip), %rax     # 0x22f48
je 0x13283
movq 0x1018c(%rip), %rcx     # 0x22f48
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rsi
leaq 0x85eb(%rip), %rdi      # 0x1b3be
movb $0x0, %al
callq 0x30e0
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x130d5
movq $0x0, -0x20(%rbp)
movl 0xd4ae(%rip), %eax      # 0x202a4
movl %eax, -0x238(%rbp)
movl $0x0, -0x234(%rbp)
movl -0x234(%rbp), %eax
cmpl 0xd492(%rip), %eax      # 0x202a4
je 0x12e36
movslq -0x234(%rbp), %rax
movw $0x0, -0x230(%rbp,%rax,2)
movl -0x234(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x234(%rbp)
jmp 0x12e06
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x12e93
movq -0x10(%rbp), %rax
movslq (%rax), %rax
cmpw $0x0, -0x230(%rbp,%rax,2)
jne 0x12e83
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rax
movslq (%rax), %rax
movw $0xffff, -0x230(%rbp,%rax,2) # imm = 0xFFFF
movl -0x238(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x238(%rbp)
jmp 0x12e85
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x12e41
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x12f23
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpq -0x30(%rbp), %rax
je 0x12f10
movl $0x0, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x12ef4
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x12ee4
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x12ee6
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x12ec2
movl -0x28(%rbp), %eax
cmpl -0x24(%rbp), %eax
jle 0x12f0e
movl -0x28(%rbp), %eax
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x12f10
jmp 0x12f12
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x12e9e
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x13025
movq -0x10(%rbp), %rcx
movl $0x20, %eax
cmpl (%rcx), %eax
jg 0x13012
movq -0x10(%rbp), %rax
cmpl $0x7e, (%rax)
jg 0x13012
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpq -0x30(%rbp), %rax
je 0x13010
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x11e60
cmpw $0x0, %ax
jne 0x13010
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x11cc0
movq %rax, -0x20(%rbp)
leaq 0x8733(%rip), %rdi      # 0x1b6d3
movb $0x0, %al
callq 0x30e0
movq -0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x12ff6
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x12fe6
movq -0x18(%rbp), %rax
cmpl $0x20, (%rax)
jl 0x12fe6
movq -0x18(%rbp), %rax
movl (%rax), %edi
movq 0xcfea(%rip), %rax      # 0x1ffc8
movq (%rax), %rsi
callq 0x3120
jmp 0x12fe8
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x12faf
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rsi
leaq 0x83bb(%rip), %rdi      # 0x1b3c4
movb $0x0, %al
callq 0x30e0
jmp 0x13012
jmp 0x13014
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x12f2e
cmpq $0x0, -0x30(%rbp)
jne 0x1303f
leaq 0x8399(%rip), %rdi      # 0x1b3cc
movb $0x0, %al
callq 0x30e0
jmp 0x130cc
cmpl $0x0, -0x238(%rbp)
je 0x130b6
leaq 0x8684(%rip), %rdi      # 0x1b6d3
movb $0x0, %al
callq 0x30e0
movl $0x0, -0x234(%rbp)
movl -0x234(%rbp), %eax
cmpl 0xd238(%rip), %eax      # 0x202a4
je 0x130a8
movslq -0x234(%rbp), %rax
cmpw $0x0, -0x230(%rbp,%rax,2)
jne 0x13095
movl -0x234(%rbp), %edi
movq 0xcf3b(%rip), %rax      # 0x1ffc8
movq (%rax), %rsi
callq 0x3120
jmp 0x13097
movl -0x234(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x234(%rbp)
jmp 0x13060
leaq 0x832d(%rip), %rdi      # 0x1b3dc
movb $0x0, %al
callq 0x30e0
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rsi
leaq 0x8320(%rip), %rdi      # 0x1b3e5
movb $0x0, %al
callq 0x30e0
movq -0x20(%rbp), %rdi
callq 0x11d90
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x1314e
leaq 0x830e(%rip), %rdi      # 0x1b3f5
movb $0x0, %al
callq 0x30e0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x13140
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rsi
leaq 0x82e7(%rip), %rdi      # 0x1b3fb
movb $0x0, %al
callq 0x30e0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x13130
movl $0x2c, %edi
callq 0x3040
jmp 0x13132
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x130fa
leaq 0x60fc(%rip), %rdi      # 0x19243
movb $0x0, %al
callq 0x30e0
movq -0x8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x1321c
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x240(%rbp)
movq -0x240(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x248(%rbp)
cmpq $0x0, -0x240(%rbp)
je 0x131f7
cmpw $0x0, 0xfda9(%rip)      # 0x22f38
je 0x131bb
movq -0x248(%rbp), %rax
movl (%rax), %eax
movq -0x240(%rbp), %rcx
movq (%rcx), %rcx
cmpl (%rcx), %eax
jle 0x131b9
movq -0x240(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x248(%rbp)
jmp 0x131e3
movq -0x240(%rbp), %rax
movq (%rax), %rax
movl (%rax), %esi
movq -0x240(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rdx
leaq 0x8223(%rip), %rdi      # 0x1b3ff
movb $0x0, %al
callq 0x30e0
movq -0x240(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x240(%rbp)
jmp 0x1317d
cmpw $0x0, 0xfd39(%rip)      # 0x22f38
je 0x1321a
movq -0x248(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x81f9(%rip), %rdi      # 0x1b40c
movb $0x0, %al
callq 0x30e0
jmp 0x1321c
movl $0xa, %edi
callq 0x3040
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x13253
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12d80
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x13231
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x13281
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x12d80
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x1325f
jmp 0x13283
addq $0x250, %rsp            # imm = 0x250
popq %rbp
retq
nopl (%rax)