// File: /workspace/github_c_makefile_star2_O0/theovosse[P]llgen/llgen.c
// Function: PrintAlternatives
static void PrintAlternatives(Name ruleName, NodeList pRules, Boolean emptyToEndOfRule, TREE follow, int indent, const char *errormsg, const char* errorargs, Boolean generateCode, TREE firstNext, Boolean *usesLA, int startLineNr) {
	int cnt = 0;
	TREE firsts = NULL;
	TREE common;
	TREE symbols = NULL;
	NodeList rules;
	Node rule;
	Boolean printError = true;

	if (pRules == NULL) {
		yyerror("error in grammar: %s not defined!\n", errormsg);
		return;
	}
	rule = pRules->first;
	if (pRules != NULL && pRules->rest == NULL) {
		GenerateRule(ruleName, rule, emptyToEndOfRule, follow, indent, generateCode, false, firstNext, usesLA);
	} else {
		Boolean empty = false, empty1;
		for (rules = pRules; rules != NULL; rules = rules->rest) {
			firsts = NULL;
			if (rules->rest != NULL || !(rules->first == NULL || rules->first->empty)) {
				empty1 = collectFirst(&firsts, follow, rules->first);
				if (empty1) {
					if (empty) {
						if (generateCode) {
							fputs("/* Not an LL(1)-grammar (more than one empty) */\n", outputFile);
						} else if (rules->first == NULL) {
							fprintf(stderr, "%s:%d: error: not an LL(1)-grammar:more than one empty\n", inputFileName, pRules->first->lineNr);
						} else {
							fprintf(stderr, "%s:%d: error: not an LL(1)-grammar: more than one empty\n", inputFileName, rules->first->lineNr);
						}
						notLLError = true;
					}
					empty = true;
				}
				if (generateCode) {
					if (bracesOnNewLine || cnt == 0) {
						doIndent(indent);
					} else if (!bracesOnNewLine) {
						fputs(" ", outputFile);
					}
				}
				PrintFirstSymbols(firsts, (cnt == 0? ifCondition: elseIfCondition), indent, true, generateCode, &symbols, (rules->first == NULL? startLineNr: rules->first->lineNr), empty1, usesLA);
				if (generateCode) {
					startBlock(indent);
				}
				common = NULL; // !!! Intersection(firsts, oneOf);
				GenerateRule(ruleName, rules->first, emptyToEndOfRule, follow, indent + 1,
							 generateCode, false, firstNext, usesLA);
				KillTree(firsts, NULL);
				KillTree(common, NULL);
				cnt++;
				if (generateCode) {
					terminateBlock(indent);
				}
			} else {
				// Don't generate a condition, but always take this path; if there
				// is a wrong symbol, it will be skipped by the elements.
				printError = false;
				if (generateCode) {
					if (cnt != 0) {
						if (bracesOnNewLine) {
							doIndent(indent);
						} else {
							fputs(" ", outputFile);
						}
						fputs("else", outputFile);
						startBlock(indent);
					}
					GenerateRule(ruleName, rules->first, emptyToEndOfRule, follow, (cnt == 0? indent: indent + 1), generateCode, false, firstNext, usesLA);
					if (cnt != 0) {
						terminateBlock(indent);
					}
				}
			}
		}
		if (generateCode && printError) {
			if (cnt == 0) {
				fprintf(stderr, "error in grammar: no alternatives for %s!\n", errormsg);
				doIndent(indent);
				fputs("/* NO ALTERNATIVES! */\n", outputFile);
			}
            if (bracesOnNewLine) {
                doIndent(indent);
            } else {
                fputs(" ", outputFile);
            }
            fputs("else", outputFile);
			startBlock(indent);
			doIndent(indent + 1);
            fprintf(outputFile, "%s(%s\"%s\"%s)%s", targetLanguage->errorReporter, targetLanguage->errorReporterArg, errormsg, errorargs, targetLanguage->terminateStatement);
			terminateBlock(indent);
		}
		KillTree(symbols, NULL);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movw %dx, %ax
movl 0x30(%rbp), %edx
movq 0x28(%rbp), %rdx
movq 0x20(%rbp), %rdx
movw 0x18(%rbp), %dx
movq 0x10(%rbp), %rdx
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movq %r9, -0x30(%rbp)
movl $0x0, -0x34(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x50(%rbp)
movw $0xffff, -0x62(%rbp)    # imm = 0xFFFF
cmpq $0x0, -0x10(%rbp)
jne 0x93e4
movq -0x30(%rbp), %rsi
leaq 0x104e1(%rip), %rdi     # 0x198b9
movb $0x0, %al
callq 0x37d0
jmp 0x98db
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x9447
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x9447
movq -0x8(%rbp), %rdi
movq -0x60(%rbp), %rsi
movw -0x12(%rbp), %dx
movq -0x20(%rbp), %rcx
movl -0x24(%rbp), %r8d
movw 0x18(%rbp), %r9w
movq 0x20(%rbp), %r10
movq 0x28(%rbp), %rax
xorl %r11d, %r11d
movswl %dx, %edx
movswl %r9w, %r9d
movl $0x0, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x98f0
jmp 0x98db
movw $0x0, -0x64(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x97dd
movq $0x0, -0x40(%rbp)
movq -0x58(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x9495
movq -0x58(%rbp), %rax
cmpq $0x0, (%rax)
je 0x96c3
movq -0x58(%rbp), %rax
movq (%rax), %rax
movswl 0x22(%rax), %eax
cmpl $0x0, %eax
jne 0x96c3
movq -0x20(%rbp), %rsi
movq -0x58(%rbp), %rax
movq (%rax), %rdx
leaq -0x40(%rbp), %rdi
callq 0x5ba0
movw %ax, -0x66(%rbp)
cmpw $0x0, -0x66(%rbp)
je 0x954e
cmpw $0x0, -0x64(%rbp)
je 0x9548
cmpw $0x0, 0x18(%rbp)
je 0x94df
movq 0x17867(%rip), %rsi     # 0x20d38
leaq 0x10404(%rip), %rdi     # 0x198dc
callq 0x3100
jmp 0x953f
movq -0x58(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x9514
movq 0x16b08(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
movq 0x16c7e(%rip), %rdx     # 0x20178
movq -0x10(%rbp), %rax
movq (%rax), %rax
movswl (%rax), %ecx
leaq 0x10403(%rip), %rsi     # 0x1990e
movb $0x0, %al
callq 0x3140
jmp 0x953d
movq 0x16add(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
movq 0x16c53(%rip), %rdx     # 0x20178
movq -0x58(%rbp), %rax
movq (%rax), %rax
movswl (%rax), %ecx
leaq 0x10410(%rip), %rsi     # 0x19946
movb $0x0, %al
callq 0x3140
jmp 0x953f
movw $0xffff, 0x1783a(%rip)  # imm = 0xFFFF
movw $0xffff, -0x64(%rbp)    # imm = 0xFFFF
cmpw $0x0, 0x18(%rbp)
je 0x9592
movswl 0x1780c(%rip), %eax     # 0x20d68
cmpl $0x0, %eax
jne 0x9567
cmpl $0x0, -0x34(%rbp)
jne 0x9571
movl -0x24(%rbp), %edi
callq 0x4000
jmp 0x9590
cmpw $0x0, 0x177ef(%rip)     # 0x20d68
jne 0x958e
movq 0x177b6(%rip), %rsi     # 0x20d38
leaq 0x101c5(%rip), %rdi     # 0x1974e
callq 0x3100
jmp 0x9590
jmp 0x9592
movq -0x40(%rbp), %rax
movq %rax, -0x80(%rbp)
movl -0x34(%rbp), %edx
leaq 0x19cc(%rip), %rax      # 0xaf70
leaq 0x1965(%rip), %rcx      # 0xaf10
cmpl $0x0, %edx
cmoveq %rcx, %rax
movq %rax, -0x78(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x6c(%rbp)
movw 0x18(%rbp), %ax
movw %ax, -0x68(%rbp)
movq -0x58(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x95d9
movl 0x30(%rbp), %eax
movl %eax, -0x84(%rbp)
jmp 0x95e9
movq -0x58(%rbp), %rax
movq (%rax), %rax
movswl (%rax), %eax
movl %eax, -0x84(%rbp)
movw -0x68(%rbp), %r8w
movl -0x6c(%rbp), %edx
movq -0x78(%rbp), %rsi
movq -0x80(%rbp), %rdi
movl -0x84(%rbp), %r11d
movw -0x66(%rbp), %r10w
movq 0x28(%rbp), %rax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
leaq -0x50(%rbp), %r9
movswl %r8w, %r8d
movl %r11d, (%rsp)
movswl %r10w, %r10d
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0xad30
cmpw $0x0, 0x18(%rbp)
je 0x963c
movl -0x24(%rbp), %edi
callq 0x4050
movq $0x0, -0x48(%rbp)
movq -0x8(%rbp), %rdi
movq -0x58(%rbp), %rax
movq (%rax), %rsi
movw -0x12(%rbp), %dx
movq -0x20(%rbp), %rcx
movl -0x24(%rbp), %r8d
addl $0x1, %r8d
movw 0x18(%rbp), %r9w
movq 0x20(%rbp), %r10
movq 0x28(%rbp), %rax
xorl %r11d, %r11d
movswl %dx, %edx
movswl %r9w, %r9d
movl $0x0, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x98f0
movq -0x40(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x106c0
movq -0x48(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x106c0
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
cmpw $0x0, 0x18(%rbp)
je 0x96be
movl -0x24(%rbp), %edi
callq 0x40a0
jmp 0x97ca
movw $0x0, -0x62(%rbp)
cmpw $0x0, 0x18(%rbp)
je 0x97c8
cmpl $0x0, -0x34(%rbp)
je 0x971c
cmpw $0x0, 0x17686(%rip)     # 0x20d68
je 0x96ee
movl -0x24(%rbp), %edi
callq 0x4000
jmp 0x9701
movq 0x17643(%rip), %rsi     # 0x20d38
leaq 0x10052(%rip), %rdi     # 0x1974e
callq 0x3100
movq 0x17630(%rip), %rsi     # 0x20d38
leaq 0x10270(%rip), %rdi     # 0x1997f
callq 0x3100
movl -0x24(%rbp), %edi
callq 0x4050
movq -0x8(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
movw -0x12(%rbp), %ax
movw %ax, -0x92(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x90(%rbp)
cmpl $0x0, -0x34(%rbp)
jne 0x975c
movl -0x24(%rbp), %eax
movl %eax, -0xac(%rbp)
jmp 0x9768
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
movq -0x90(%rbp), %rcx
movw -0x92(%rbp), %dx
movq -0xa0(%rbp), %rsi
movq -0xa8(%rbp), %rdi
movl -0xac(%rbp), %r8d
movw 0x18(%rbp), %r9w
movq 0x20(%rbp), %r10
movq 0x28(%rbp), %rax
xorl %r11d, %r11d
movswl %dx, %edx
movswl %r9w, %r9d
movl $0x0, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x98f0
cmpl $0x0, -0x34(%rbp)
je 0x97c6
movl -0x24(%rbp), %edi
callq 0x40a0
jmp 0x97c8
jmp 0x97ca
jmp 0x97cc
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0x9455
movswl 0x18(%rbp), %eax
cmpl $0x0, %eax
je 0x98ce
movswl -0x62(%rbp), %eax
cmpl $0x0, %eax
je 0x98ce
cmpl $0x0, -0x34(%rbp)
jne 0x9834
movq 0x167f4(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
movq -0x30(%rbp), %rdx
leaq 0x10172(%rip), %rsi     # 0x19984
movb $0x0, %al
callq 0x3140
movl -0x24(%rbp), %edi
callq 0x4000
movq 0x17510(%rip), %rsi     # 0x20d38
leaq 0x10180(%rip), %rdi     # 0x199af
callq 0x3100
cmpw $0x0, 0x1752c(%rip)     # 0x20d68
je 0x9848
movl -0x24(%rbp), %edi
callq 0x4000
jmp 0x985b
movq 0x174e9(%rip), %rsi     # 0x20d38
leaq 0xfef8(%rip), %rdi      # 0x1974e
callq 0x3100
movq 0x174d6(%rip), %rsi     # 0x20d38
leaq 0x10116(%rip), %rdi     # 0x1997f
callq 0x3100
movl -0x24(%rbp), %edi
callq 0x4050
movl -0x24(%rbp), %edi
addl $0x1, %edi
callq 0x4000
movq 0x174b0(%rip), %rdi     # 0x20d38
movq 0x168e1(%rip), %rax     # 0x20170
movq 0x18(%rax), %rdx
movq 0x168d6(%rip), %rax     # 0x20170
movq 0x20(%rax), %rcx
movq -0x30(%rbp), %r8
movq 0x10(%rbp), %r9
movq 0x168c3(%rip), %rax     # 0x20170
movq 0x80(%rax), %rax
leaq 0x1010c(%rip), %rsi     # 0x199c7
movq %rax, (%rsp)
movb $0x0, %al
callq 0x3140
movl -0x24(%rbp), %edi
callq 0x40a0
movq -0x50(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x106c0
addq $0xd0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)