// File: /workspace/github_c_makefile_star2_O1/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 0x9a14
movq %r8, %rbx
movl %edx, %ebp
testw %si, %si
je 0x9923
movl %ecx, %edi
callq 0x4284
movq 0xf919(%rip), %rax      # 0x19180
movq 0x38(%rax), %rdi
movq 0x10276(%rip), %rsi     # 0x19ae8
callq 0x3110
movq 0xf902(%rip), %rax      # 0x19180
movq 0x10263(%rip), %rdi     # 0x19ae8
leaq 0x837c(%rip), %rsi      # 0x11c08
xorl %edx, %edx
xorl %ecx, %ecx
callq *0x130(%rax)
movq 0xf8e3(%rip), %rax      # 0x19180
movq 0x10244(%rip), %rdi     # 0x19ae8
callq *0x138(%rax)
testq %rbx, %rbx
je 0x994e
testw %bp, %bp
je 0x9963
movq 0x10225(%rip), %rsi     # 0x19ae8
leaq 0x8121(%rip), %rdi      # 0x119eb
callq 0x3110
movq 0xf8aa(%rip), %rax      # 0x19180
cmpw $0x0, 0x10(%rax)
je 0x990b
movq 0x10204(%rip), %rdi     # 0x19ae8
leaq 0x8110(%rip), %rsi      # 0x119fb
movq $-0x1, %rdx
callq *0x100(%rax)
movq 0x101e9(%rip), %rsi     # 0x19ae8
leaq 0x7be9(%rip), %rdi      # 0x114ef
callq 0x3110
movq %rbx, %rdi
callq 0x9728
movq 0x101ce(%rip), %rsi     # 0x19ae8
leaq 0x82f4(%rip), %rdi      # 0x11c15
jmp 0x995c
testq %rbx, %rbx
sete %al
testw %bp, %bp
sete %cl
orb %al, %cl
jne 0x9939
movw $0xffff, (%r9)          # imm = 0xFFFF
movq 0x101a8(%rip), %rdi     # 0x19ae8
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x978c
movq 0x10193(%rip), %rsi     # 0x19ae8
leaq 0x83a4(%rip), %rdi      # 0x11d00
callq 0x3110
jmp 0x996b
movq %rbx, %rdi
callq 0x9728
movq 0xf80e(%rip), %rax      # 0x19180
movq 0x1016f(%rip), %rdi     # 0x19ae8
callq *0x138(%rax)
movq 0xf7fa(%rip), %rax      # 0x19180
movq 0x1015b(%rip), %rdi     # 0x19ae8
leaq 0x836c(%rip), %rsi      # 0x11d00
callq *0x140(%rax)
movq 0xf7df(%rip), %rax      # 0x19180
movq 0x10140(%rip), %rdi     # 0x19ae8
callq *0x148(%rax)
movq 0xf7cb(%rip), %rax      # 0x19180
movq 0x80(%rax), %rdi
movq 0x10125(%rip), %rsi     # 0x19ae8
callq 0x3110
leaq 0x8250(%rip), %rdi      # 0x11c1f
callq 0x63b8
testw %ax, %ax
je 0x9a14
movq 0x10108(%rip), %rsi     # 0x19ae8
leaq 0x8243(%rip), %rdi      # 0x11c2a
callq 0x3110
movq 0x100f5(%rip), %rdi     # 0x19ae8
movq %rbx, %rsi
callq 0x96b2
movq 0x100e6(%rip), %rsi     # 0x19ae8
leaq 0x9e57(%rip), %rdi      # 0x13860
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x3110
addq $0x8, %rsp
popq %rbx
popq %rbp
retq