// File: /workspace/github_c_makefile_star2_O2/theovosse[P]llgen/llgen.c
// Function: CreateGuard
static void CreateGuard(Boolean guard, Boolean generateCode, Boolean empty, int indent, TREE firsts, Boolean firstOfRule, Boolean *usesLA) {
	if (guard) {
		if (generateCode) {
			doIndent(indent);
			fputs(targetLanguage->owner, outputFile);
			targetLanguage->startFunctionCall(outputFile, "waitForToken", NULL, NULL);
			targetLanguage->nextCallParameter(outputFile);
			if (firsts == NULL) {
				fputs("follow", outputFile);
			} else if (empty) {
				fputs("uniteTokenSets(", outputFile);
                if (targetLanguage->requiresLocalLTSetStorage) {
                    targetLanguage->pointerToArray(outputFile, "ltSet", -1);
                    fputs(", ", outputFile);
                }
                TokenSetName2(firsts);
				fputs(", follow)", outputFile);
			} else {
				TokenSetName2(firsts);
			}
			targetLanguage->nextCallParameter(outputFile);
			targetLanguage->nextCallParameterSymbol(outputFile, "follow");
			targetLanguage->endFunctionCall(outputFile);
            fputs(targetLanguage->terminateStatement, outputFile);
			if (HasProperty("showfirsts")) {
				fputs(" /* ", outputFile);
				PrintTree(outputFile, firsts);
				fputs(" */", outputFile);
			}
			if (firstOfRule) {
				ifCondition(true, indent);
				fprintf(outputFile, "!tokenInCommon(%scurrSymbol, ", targetLanguage->owner);
                TokenSetName2(firsts);
                fputs(")", outputFile);
                ifCondition(false, indent);
			}
		} else {
			if (firsts != NULL && empty) {
				*usesLA = true;
			}
			CreateTokenSet2(outputFile, firsts);
		}
	}
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
testw %di, %di
je 0x9027
movq %r8, %rbx
movl %edx, %ebp
testw %si, %si
je 0x8f37
movl %ecx, %edi
callq 0x39c6
movq 0xf301(%rip), %rax      # 0x18180
movq 0x38(%rax), %rdi
movq 0xfc5e(%rip), %rsi      # 0x18ae8
callq 0x3110
movq 0xf2ea(%rip), %rax      # 0x18180
movq 0xfc4b(%rip), %rdi      # 0x18ae8
leaq 0x7d3c(%rip), %rsi      # 0x10be0
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x130(%rax)
movq 0xf2cb(%rip), %rax      # 0x18180
movq 0xfc2c(%rip), %rdi      # 0x18ae8
callq *0x138(%rax)
testq %rbx, %rbx
je 0x8f61
testw %bp, %bp
je 0x8f76
movq 0xfc0d(%rip), %rsi      # 0x18ae8
leaq 0x7ae1(%rip), %rdi      # 0x109c3
callq 0x3110
movq 0xf292(%rip), %rax      # 0x18180
cmpw $0x0, 0x10(%rax)
je 0x8f1f
movq 0xfbec(%rip), %rdi      # 0x18ae8
leaq 0x7ad0(%rip), %rsi      # 0x109d3
pushq $-0x1
popq %rdx
callq *0x100(%rax)
movq 0xfbd5(%rip), %rsi      # 0x18ae8
leaq 0x75ad(%rip), %rdi      # 0x104c7
callq 0x3110
movq %rbx, %rdi
callq 0x8d1f
movq 0xfbba(%rip), %rsi      # 0x18ae8
leaq 0x7cb8(%rip), %rdi      # 0x10bed
jmp 0x8f6f
testq %rbx, %rbx
sete %al
testw %bp, %bp
sete %cl
orb %al, %cl
jne 0x8f4c
orw $-0x1, (%r9)
movq 0xfb95(%rip), %rdi      # 0x18ae8
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x8da7
movq 0xfb80(%rip), %rsi      # 0x18ae8
leaq 0x7d69(%rip), %rdi      # 0x10cd8
callq 0x3110
jmp 0x8f7e
movq %rbx, %rdi
callq 0x8d1f
movq 0xf1fb(%rip), %rax      # 0x18180
movq 0xfb5c(%rip), %rdi      # 0x18ae8
callq *0x138(%rax)
movq 0xf1e7(%rip), %rax      # 0x18180
movq 0xfb48(%rip), %rdi      # 0x18ae8
leaq 0x7d31(%rip), %rsi      # 0x10cd8
callq *0x140(%rax)
movq 0xf1cc(%rip), %rax      # 0x18180
movq 0xfb2d(%rip), %rdi      # 0x18ae8
callq *0x148(%rax)
movq 0xf1b8(%rip), %rax      # 0x18180
movq 0x80(%rax), %rdi
movq 0xfb12(%rip), %rsi      # 0x18ae8
callq 0x3110
leaq 0x7c15(%rip), %rdi      # 0x10bf7
callq 0x6126
testw %ax, %ax
je 0x9027
movq 0xfaf5(%rip), %rsi      # 0x18ae8
leaq 0x7c08(%rip), %rdi      # 0x10c02
callq 0x3110
movq 0xfae2(%rip), %rdi      # 0x18ae8
movq %rbx, %rsi
callq 0x8cca
movq 0xfad3(%rip), %rsi      # 0x18ae8
leaq 0x9824(%rip), %rdi      # 0x12840
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x3110
addq $0x8, %rsp
popq %rbx
popq %rbp
retq