// File: /workspace/github_c_makefile_star2_O3/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 0x9842
movq %r8, %rbx
movl %edx, %ebp
testw %si, %si
je 0x9751
movl %ecx, %edi
callq 0x420f
movq 0xfaeb(%rip), %rax      # 0x19180
movq 0x38(%rax), %rdi
movq 0x10448(%rip), %rsi     # 0x19ae8
callq 0x3110
movq 0xfad4(%rip), %rax      # 0x19180
movq 0x10435(%rip), %rdi     # 0x19ae8
leaq 0x8546(%rip), %rsi      # 0x11c00
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x130(%rax)
movq 0xfab5(%rip), %rax      # 0x19180
movq 0x10416(%rip), %rdi     # 0x19ae8
callq *0x138(%rax)
testq %rbx, %rbx
je 0x977c
testw %bp, %bp
je 0x9791
movq 0x103f7(%rip), %rsi     # 0x19ae8
leaq 0x82eb(%rip), %rdi      # 0x119e3
callq 0x3110
movq 0xfa7c(%rip), %rax      # 0x19180
cmpw $0x0, 0x10(%rax)
je 0x9739
movq 0x103d6(%rip), %rdi     # 0x19ae8
leaq 0x82da(%rip), %rsi      # 0x119f3
movq $-0x1, %rdx
callq *0x100(%rax)
movq 0x103bb(%rip), %rsi     # 0x19ae8
leaq 0x7db3(%rip), %rdi      # 0x114e7
callq 0x3110
movq %rbx, %rdi
callq 0x9556
movq 0x103a0(%rip), %rsi     # 0x19ae8
leaq 0x84be(%rip), %rdi      # 0x11c0d
jmp 0x978a
testq %rbx, %rbx
sete %al
testw %bp, %bp
sete %cl
orb %al, %cl
jne 0x9767
movw $0xffff, (%r9)          # imm = 0xFFFF
movq 0x1037a(%rip), %rdi     # 0x19ae8
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x95ba
movq 0x10365(%rip), %rsi     # 0x19ae8
leaq 0x856e(%rip), %rdi      # 0x11cf8
callq 0x3110
jmp 0x9799
movq %rbx, %rdi
callq 0x9556
movq 0xf9e0(%rip), %rax      # 0x19180
movq 0x10341(%rip), %rdi     # 0x19ae8
callq *0x138(%rax)
movq 0xf9cc(%rip), %rax      # 0x19180
movq 0x1032d(%rip), %rdi     # 0x19ae8
leaq 0x8536(%rip), %rsi      # 0x11cf8
callq *0x140(%rax)
movq 0xf9b1(%rip), %rax      # 0x19180
movq 0x10312(%rip), %rdi     # 0x19ae8
callq *0x148(%rax)
movq 0xf99d(%rip), %rax      # 0x19180
movq 0x80(%rax), %rdi
movq 0x102f7(%rip), %rsi     # 0x19ae8
callq 0x3110
leaq 0x841a(%rip), %rdi      # 0x11c17
callq 0x628f
testw %ax, %ax
je 0x9842
movq 0x102da(%rip), %rsi     # 0x19ae8
leaq 0x840d(%rip), %rdi      # 0x11c22
callq 0x3110
movq 0x102c7(%rip), %rdi     # 0x19ae8
movq %rbx, %rsi
callq 0x94e0
movq 0x102b8(%rip), %rsi     # 0x19ae8
leaq 0xa029(%rip), %rdi      # 0x13860
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x3110
addq $0x8, %rsp
popq %rbx
popq %rbp
retq