// File: /workspace/github_c_makefile_star2_O2/theovosse[P]llgen/llgen.c
// Function: PrintFirstSymbols
static void PrintFirstSymbols(TREE ofirsts, void (*cond)(Boolean, int), int indent, Boolean positive, Boolean generateCode, TREE *symbols, int lineNr, Boolean emptyFollow, Boolean* usesLA) {
	TREE common = ofirsts; // !!! Intersection2(ofirsts, oneOf); !!! See KillTree at end and emptyFollow

	if (generateCode) {
        cond(true, indent);
        fprintf(outputFile, "%stokenInCommon(%scurrSymbol, ", (positive? "": "!"), targetLanguage->owner);
		// !!! if (emptyFollow) {
		// 	fputs("uniteTokenSets(", outputFile);
        //     if (targetLanguage->requiresLocalLTSetStorage) {
        //         targetLanguage->pointerToArray(outputFile, "ltSet", -1);
        //         fputs(", ", outputFile);
        //     }
        //     fputs("follow, ", outputFile);
		// }
        TokenSetName2(common);
		// !!! if (emptyFollow) {
        //     fputs(")", outputFile);
        // }
        fputs(")", outputFile);
        cond(false, indent);
		if (common == NULL || (symbols != NULL && NotEmptyIntersection(*symbols, common))) {
			TREE intersection = Intersection(*symbols, common);
			fputs(" /* Not an LL(1)-grammar: first symbols ", outputFile);
			PrintTree(outputFile, intersection);
			fputs(" */", outputFile);
			KillTree(intersection, NULL);
			fprintf(stderr, "%s:%d: not an LL(1)-grammar (first symbols)\n", inputFileName, lineNr);
			notLLError = true;
		}
		if (HasProperty("showfirsts")) {
			fputs(" /* firsts: ", outputFile);
			PrintTree(outputFile, ofirsts);
			fputs(" */", outputFile);
		}
		if (symbols != NULL) {
			Unite(symbols, common);
		}
	} else {
		CreateTokenSet2(outputFile, common);
		// !!! if (emptyFollow) {
		// 	*usesLA = true;
		// }
	}
	// !!! KillTree(common, NULL);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
testw %r8w, %r8w
je 0x8b53
movq %r9, %rbx
movl %ecx, %r13d
movl %edx, %r12d
movq %rsi, %r15
movl 0x40(%rsp), %ebp
pushq $-0x1
popq %rdi
movl %edx, %esi
callq *%r15
movq 0x10038(%rip), %rdi     # 0x18ae8
testw %r13w, %r13w
leaq 0x9caf(%rip), %rax      # 0x1276a
leaq 0x76d6(%rip), %rdx      # 0x10198
cmoveq %rax, %rdx
movq 0xf6b3(%rip), %rax      # 0x18180
movq 0x38(%rax), %rcx
leaq 0x816e(%rip), %rsi      # 0x10c46
xorl %eax, %eax
callq 0x3150
movq %r14, %rdi
callq 0x8d1f
movq 0xfffa(%rip), %rsi      # 0x18ae8
leaq 0x936a(%rip), %rdi      # 0x11e5f
callq 0x3110
xorl %edi, %edi
movl %r12d, %esi
callq *%r15
testq %r14, %r14
je 0x8b70
testq %rbx, %rbx
je 0x8bde
movq (%rbx), %rdi
callq 0xb236
movq %rax, %r12
leaq -0x55b8(%rip), %r15     # 0x356a
testq %r12, %r12
je 0x8bde
movq %r12, %rdi
callq 0xb272
movq %r14, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0xb305
testq %rax, %rax
jne 0x8b70
movq %r12, %rdi
callq 0xb27e
movq %rax, %r12
jmp 0x8b22
movq 0xff8e(%rip), %rdi      # 0x18ae8
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x8da7
movq (%rbx), %rdi
movq %r14, %rsi
callq 0x9222
movq %rax, %r15
movq 0xff63(%rip), %rsi      # 0x18ae8
leaq 0x80d9(%rip), %rdi      # 0x10c65
callq 0x3110
movq 0xff50(%rip), %rdi      # 0x18ae8
movq %r15, %rsi
callq 0x8cca
movq 0xff41(%rip), %rsi      # 0x18ae8
leaq 0x9c92(%rip), %rdi      # 0x12840
callq 0x3110
movq %r15, %rdi
xorl %esi, %esi
callq 0xb397
movq 0xf434(%rip), %rax      # 0x17ff8
movq (%rax), %rdi
movq 0xf5ba(%rip), %rdx      # 0x18188
leaq 0x80b9(%rip), %rsi      # 0x10c8e
movl %ebp, %ecx
xorl %eax, %eax
callq 0x3150
leaq 0x8012(%rip), %rdi      # 0x10bf7
callq 0x6126
testw %ax, %ax
je 0x8c24
movq 0xfef2(%rip), %rsi      # 0x18ae8
leaq 0x80be(%rip), %rdi      # 0x10cbb
callq 0x3110
movq 0xfedf(%rip), %rdi      # 0x18ae8
movq %r14, %rsi
callq 0x8cca
movq 0xfed0(%rip), %rsi      # 0x18ae8
leaq 0x9c21(%rip), %rdi      # 0x12840
callq 0x3110
testq %rbx, %rbx
je 0x8c42
movq %rbx, %rdi
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x651d
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq