// File: /workspace/github_c_makefile_star2_O0/theovosse[P]llgen/llgen.c
// Function: CreateTokenSet
static void CreateTokenSet(FILE *f, ESet tokenSet) {
	TREE node = FindNode(tokenSets, tokenSet, TokenSetCmp);
	TREE tokens = NULL;
	int lastBoundary = 0;
	unsigned long int cValue = 0;

	if (node == NULL) {
		tokenSetNr++;
		InsertNodeSingle(&tokenSets, tokenSet, (void *) tokenSetNr, TokenSetCmp);
        targetLanguage->arrayDeclaration(f, "static", targetLanguage->tokenSetType,
                                         "llTokenSet", tokenSetNr, (nodeNumber + 1) / nrBitsInElement + 1, true);
		while (tokenSet != NULL) {
			InsertNodeSingle(&tokens, ((Answer) tokenSet->element)->info, NULL, IntCmp);
			tokenSet = tokenSet->next;
		}
        node = GetFirstNode(tokens);
        while (lastBoundary <= nodeNumber) {
            if (node != NULL) {
                int tokenIndex = (int) GetKey(node);
                if (tokenIndex == -1) tokenIndex = 0;
                while (tokenIndex >= lastBoundary + nrBitsInElement) {
                    fprintf(f, "0x%0*lX", (nrBitsInElement + 3) / 4, cValue);
                    cValue = 0;
                    lastBoundary += nrBitsInElement;
                    if (lastBoundary <= nodeNumber) {
                        fputs(", ", f);
                    }
                }
                cValue |= 1 << (tokenIndex - lastBoundary);
                node = GetNextNode(node);
            } else {
                fprintf(f, "0x%0*lX", (nrBitsInElement + 3) / 4, cValue);
                cValue = 0;
                lastBoundary += nrBitsInElement;
                if (lastBoundary <= nodeNumber) {
                    fputs(", ", f);
                }
            }
		}
        fprintf(f, "%s%s /*", targetLanguage->endOfArrayLiteral, targetLanguage->terminateDeclaration);
        for (node = GetFirstNode(tokens); node != NULL; node = GetNextNode(node)) {
            int tokenIndex = (int) GetKey(node);
            Name name = TokenIndexName(tokenIndex == -1? 0: tokenIndex, false);
            if (name != NULL) {
                fprintf(f, " %s", name->name);
            }
        }
        fputs(" */\n", f);
		KillTree(tokens, NULL);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq 0x17f99(%rip), %rdi     # 0x20db0
movq -0x10(%rbp), %rsi
leaq -0x272(%rip), %rdx      # 0x8bb0
callq 0x10560
movq %rax, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movq $0x0, -0x30(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x90fb
movq 0x17f64(%rip), %rax     # 0x20db8
addq $0x1, %rax
movq %rax, 0x17f59(%rip)     # 0x20db8
movq -0x10(%rbp), %rsi
movq 0x17f4e(%rip), %rdx     # 0x20db8
leaq 0x17f3f(%rip), %rdi     # 0x20db0
leaq -0x2c8(%rip), %rcx      # 0x8bb0
callq 0xfc60
movq 0x172ec(%rip), %rax     # 0x20170
movq 0xc0(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rdi
movq 0x172d6(%rip), %rax     # 0x20170
movq 0x50(%rax), %rax
movq %rax, -0x50(%rbp)
movq 0x17f0f(%rip), %r8      # 0x20db8
movl 0x17ea9(%rip), %eax     # 0x20d58
addl $0x1, %eax
cltd
idivl 0x172a7(%rip)           # 0x20160
movq -0x50(%rbp), %rdx
movl %eax, %r9d
movq -0x48(%rbp), %rax
addl $0x1, %r9d
leaq 0x107c7(%rip), %rsi     # 0x19696
leaq 0x1096f(%rip), %rcx     # 0x19845
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
callq *%rax
cmpq $0x0, -0x10(%rbp)
je 0x8f13
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rsi
leaq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x770(%rip), %rcx      # 0x8790
callq 0xfc60
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x8edf
movq -0x20(%rbp), %rdi
callq 0x10330
movq %rax, -0x18(%rbp)
movl -0x24(%rbp), %eax
cmpl 0x17e2f(%rip), %eax     # 0x20d58
jg 0x9044
cmpq $0x0, -0x18(%rbp)
je 0x8fe5
movq -0x18(%rbp), %rdi
callq 0x10400
movl %eax, -0x34(%rbp)
cmpl $-0x1, -0x34(%rbp)
jne 0x8f53
movl $0x0, -0x34(%rbp)
jmp 0x8f55
movl -0x34(%rbp), %eax
movl -0x24(%rbp), %ecx
addl 0x171ff(%rip), %ecx     # 0x20160
cmpl %ecx, %eax
jl 0x8fbf
movq -0x8(%rbp), %rdi
movl 0x171f1(%rip), %eax     # 0x20160
addl $0x3, %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %edx
movq -0x30(%rbp), %rcx
leaq 0x105ef(%rip), %rsi     # 0x19576
movb $0x0, %al
callq 0x3140
movq $0x0, -0x30(%rbp)
movl 0x171c4(%rip), %eax     # 0x20160
addl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl 0x17dad(%rip), %eax     # 0x20d58
jg 0x8fbd
movq -0x8(%rbp), %rsi
leaq 0x105bb(%rip), %rdi     # 0x19573
callq 0x3100
jmp 0x8f55
movl -0x34(%rbp), %ecx
subl -0x24(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
cltq
orq -0x30(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0x10430
movq %rax, -0x18(%rbp)
jmp 0x903f
movq -0x8(%rbp), %rdi
movl 0x17171(%rip), %eax     # 0x20160
addl $0x3, %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %edx
movq -0x30(%rbp), %rcx
leaq 0x1056f(%rip), %rsi     # 0x19576
movb $0x0, %al
callq 0x3140
movq $0x0, -0x30(%rbp)
movl 0x17144(%rip), %eax     # 0x20160
addl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl 0x17d2d(%rip), %eax     # 0x20d58
jg 0x903d
movq -0x8(%rbp), %rsi
leaq 0x1053b(%rip), %rdi     # 0x19573
callq 0x3100
jmp 0x903f
jmp 0x8f20
movq -0x8(%rbp), %rdi
movq 0x17121(%rip), %rax     # 0x20170
movq 0x70(%rax), %rdx
movq 0x17116(%rip), %rax     # 0x20170
movq 0x78(%rax), %rcx
leaq 0x1054a(%rip), %rsi     # 0x195af
movb $0x0, %al
callq 0x3140
movq -0x20(%rbp), %rdi
callq 0x10330
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x90de
movq -0x18(%rbp), %rdi
callq 0x10400
movl %eax, -0x38(%rbp)
cmpl $-0x1, -0x38(%rbp)
jne 0x9099
xorl %eax, %eax
movl %eax, -0x54(%rbp)
jmp 0x909f
movl -0x38(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %edi
xorl %esi, %esi
callq 0x9110
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x90cd
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rdx
leaq 0x126ae(%rip), %rsi     # 0x1b774
movb $0x0, %al
callq 0x3140
jmp 0x90cf
movq -0x18(%rbp), %rdi
callq 0x10430
movq %rax, -0x18(%rbp)
jmp 0x9079
movq -0x8(%rbp), %rsi
leaq 0x108d9(%rip), %rdi     # 0x199c2
callq 0x3100
movq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x106c0
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)