// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x30, %rsp
movw %r8w, %ax
movq 0x20(%rbp), %r8
movw 0x18(%rbp), %r8w
movl 0x10(%rbp), %r8d
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movw %cx, -0x16(%rbp)
movw %ax, -0x18(%rbp)
movq %r9, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpw $0x0, -0x18(%rbp)
je 0xaeed
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %esi
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq *%rax
movq 0x15fb0(%rip), %rdi     # 0x20d38
movswl -0x16(%rbp), %ecx
leaq 0x10a13(%rip), %rdx     # 0x1b7a6
leaq 0xe4a2(%rip), %rax      # 0x1923c
cmpl $0x0, %ecx
cmovneq %rax, %rdx
movq 0x153c8(%rip), %rax     # 0x20170
movq 0x38(%rax), %rcx
leaq 0xef5d(%rip), %rsi      # 0x19d10
movb $0x0, %al
callq 0x3140
movq -0x28(%rbp), %rdi
callq 0xb300
movq 0x15f6e(%rip), %rsi     # 0x20d38
leaq 0x1022d(%rip), %rdi     # 0x1affe
callq 0x3100
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %esi
xorl %edi, %edi
callq *%rax
cmpq $0x0, -0x28(%rbp)
je 0xae0d
cmpq $0x0, -0x20(%rbp)
je 0xae8f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x28(%rbp), %rsi
callq 0xbfd0
cwtl
cmpl $0x0, %eax
je 0xae8f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x28(%rbp), %rsi
callq 0xbf30
movq %rax, -0x30(%rbp)
movq 0x15f10(%rip), %rsi     # 0x20d38
leaq 0xef00(%rip), %rdi      # 0x19d2f
callq 0x3100
movq 0x15efd(%rip), %rdi     # 0x20d38
movq -0x30(%rbp), %rsi
callq 0xaff0
movq 0x15eed(%rip), %rsi     # 0x20d38
leaq 0x10a2a(%rip), %rdi     # 0x1b87c
callq 0x3100
movq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x106c0
movq 0x1518d(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
movq 0x15303(%rip), %rdx     # 0x20178
movl 0x10(%rbp), %ecx
leaq 0xeed9(%rip), %rsi      # 0x19d58
movb $0x0, %al
callq 0x3140
movw $0xffff, 0x15ef3(%rip)  # imm = 0xFFFF
leaq 0xee0d(%rip), %rdi      # 0x19ca3
callq 0x4940
cmpw $0x0, %ax
je 0xaed7
movq 0x15e90(%rip), %rsi     # 0x20d38
leaq 0xeed6(%rip), %rdi      # 0x19d85
callq 0x3100
movq 0x15e7d(%rip), %rdi     # 0x20d38
movq -0x8(%rbp), %rsi
callq 0xaff0
movq 0x15e6d(%rip), %rsi     # 0x20d38
leaq 0x109aa(%rip), %rdi     # 0x1b87c
callq 0x3100
cmpq $0x0, -0x20(%rbp)
je 0xaeeb
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x5e00
jmp 0xaefd
movq 0x15e44(%rip), %rdi     # 0x20d38
movq -0x28(%rbp), %rsi
callq 0xb3e0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)