// File: /workspace/github_c_makefile_star2_O1/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 0x95f9
movq %r9, %rbx
movl %ecx, %r13d
movl %edx, %r12d
movq %rsi, %r15
movl 0x40(%rsp), %ebp
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
movl %edx, %esi
callq *%r15
movq 0x105f9(%rip), %rdi     # 0x19ae8
testw %r13w, %r13w
leaq 0xa290(%rip), %rax      # 0x1378a
leaq 0x7cb7(%rip), %rdx      # 0x111b8
cmoveq %rax, %rdx
movq 0xfc74(%rip), %rax      # 0x19180
movq 0x38(%rax), %rcx
leaq 0x8757(%rip), %rsi      # 0x11c6e
xorl %eax, %eax
callq 0x3160
movq %r14, %rdi
callq 0x9728
movq 0x105bb(%rip), %rsi     # 0x19ae8
leaq 0x994b(%rip), %rdi      # 0x12e7f
callq 0x3110
xorl %edi, %edi
movl %r12d, %esi
callq *%r15
testq %r14, %r14
je 0x9625
testq %rbx, %rbx
je 0x9595
movq (%rbx), %rdi
callq 0xbe8a
testq %rax, %rax
je 0x9595
movq %rax, %r15
leaq -0x56b6(%rip), %r12     # 0x3eb0
movq %r15, %rdi
callq 0xbec6
movq %r14, %rdi
movq %rax, %rsi
movq %r12, %rdx
callq 0xbf59
testq %rax, %rax
jne 0x9625
movq %r15, %rdi
callq 0xbed2
movq %rax, %r15
testq %rax, %rax
jne 0x9566
leaq 0x8683(%rip), %rdi      # 0x11c1f
callq 0x63b8
testw %ax, %ax
je 0x95db
movq 0x1053b(%rip), %rsi     # 0x19ae8
leaq 0x872f(%rip), %rdi      # 0x11ce3
callq 0x3110
movq 0x10528(%rip), %rdi     # 0x19ae8
movq %r14, %rsi
callq 0x96b2
movq 0x10519(%rip), %rsi     # 0x19ae8
leaq 0xa28a(%rip), %rdi      # 0x13860
callq 0x3110
testq %rbx, %rbx
je 0x9616
movq %rbx, %rdi
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x67a4
movq 0x104e8(%rip), %rdi     # 0x19ae8
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x978c
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x36bc
jmp 0x9595