// File: /workspace/github_c_makefile_star2_O0/theovosse[P]llgen/llgen.c
// Function: PrintRule2
void PrintRule2(FILE *f, Node rule) {
	NodeList rules;

	while (rule != NULL) {
		switch (rule->nodeType) {
			case single:
				switch (rule->element.name->nameType) {
					case code: fprintf(f, " { %s }", rule->element.name->name); break;
					default: fprintf(f, " %s", rule->element.name->name); break;
				}
				break;
			case option:
				fputs("(", f);
				PrintRule2(f, rule->element.sub);
				fputs(") OPTION", f);
				break;
			case sequence:
				fputs("(", f);
				PrintRule2(f, rule->element.sub);
				fputs(") SEQUENCE", f);
				break;
			case chain:
				fputs("(", f);
				PrintRule2(f, rule->element.sub->element.sub);
				fputs(") CHAIN (", f);
				PrintRule2(f, rule->element.sub->next->element.sub);
				fputs(")", f);
				break;
			case alternative: /* Try each one... */
				fputs("(", f);
				for (rules = rule->element.alternatives; rules != NULL; rules = rules->rest) {
					fputs("(", f);
					PrintRule2(f, rules->first);
					fputs(")", f);
					if (rules->rest != NULL) {
						fputs(";", f);
					}
				}
				fputs(")", f);
				break;
			case breakToken:
				fprintf(f, "ON %s BREAK", rule->element.name->name);
				break;
			case errorMessage:
				fprintf(f, "ON %s BREAK %s", rule->element.sub->element.name->name, rule->element.sub->next->element.name->name);
				break;
			default:
				fprintf(stderr, "DetermineFollowRule: unknown nodetype %d", rule->nodeType);
				return;
		}
		rule = rule->next;
		if (rule != NULL) {
			fputs(",", f);
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x4364
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movq %rax, -0x20(%rbp)
subq $0x6, %rax
ja 0x431b
movq -0x20(%rbp), %rax
leaq 0x14f31(%rip), %rcx     # 0x1903c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x38(%rax), %eax
subl $0x3, %eax
jne 0x4145
jmp 0x4126
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rdx
leaq 0x15101(%rip), %rsi     # 0x1923d
movb $0x0, %al
callq 0x3140
jmp 0x4162
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rdx
leaq 0x17619(%rip), %rsi     # 0x1b774
movb $0x0, %al
callq 0x3140
jmp 0x433c
movq -0x8(%rbp), %rsi
leaq 0x150ef(%rip), %rdi     # 0x19261
callq 0x3100
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x40d0
movq -0x8(%rbp), %rsi
leaq 0x150b2(%rip), %rdi     # 0x19245
callq 0x3100
jmp 0x433c
movq -0x8(%rbp), %rsi
leaq 0x150b9(%rip), %rdi     # 0x19261
callq 0x3100
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x40d0
movq -0x8(%rbp), %rsi
leaq 0x15085(%rip), %rdi     # 0x1924e
callq 0x3100
jmp 0x433c
movq -0x8(%rbp), %rsi
leaq 0x15083(%rip), %rdi     # 0x19261
callq 0x3100
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rsi
callq 0x40d0
movq -0x8(%rbp), %rsi
leaq 0x15056(%rip), %rdi     # 0x19259
callq 0x3100
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rsi
callq 0x40d0
movq -0x8(%rbp), %rsi
leaq 0x16dd2(%rip), %rdi     # 0x1affe
callq 0x3100
jmp 0x433c
movq -0x8(%rbp), %rsi
leaq 0x15020(%rip), %rdi     # 0x19261
callq 0x3100
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x42b4
movq -0x8(%rbp), %rsi
leaq 0x14ffd(%rip), %rdi     # 0x19261
callq 0x3100
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
callq 0x40d0
movq -0x8(%rbp), %rsi
leaq 0x16d7a(%rip), %rdi     # 0x1affe
callq 0x3100
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x42a4
movq -0x8(%rbp), %rsi
leaq 0x159eb(%rip), %rdi     # 0x19c8a
callq 0x3100
jmp 0x42a6
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x4252
movq -0x8(%rbp), %rsi
leaq 0x16d3f(%rip), %rdi     # 0x1affe
callq 0x3100
jmp 0x433c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rdx
leaq 0x14f87(%rip), %rsi     # 0x19263
movb $0x0, %al
callq 0x3140
jmp 0x433c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rax
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq (%rax), %rcx
leaq 0x14f5d(%rip), %rsi     # 0x1926f
movb $0x0, %al
callq 0x3140
jmp 0x433c
movq 0x1bcd6(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %edx
leaq 0x14f4b(%rip), %rsi     # 0x1927e
movb $0x0, %al
callq 0x3140
jmp 0x4364
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x435f
movq -0x8(%rbp), %rsi
leaq 0x17309(%rip), %rdi     # 0x1b663
callq 0x3100
jmp 0x40e0
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)