// File: /workspace/github_c_makefile_star2_O0/theovosse[P]llgen/llgen.c
// Function: CopySkeleton
static void CopySkeleton(const char* argv0) {
	char buf[256];
	int nrIgnoreLevels = 0;
    int lineNr = 0;

	while (fgets(buf, sizeof(buf), skeletonFile) != NULL) {
        lineNr++;
		if (buf[0] == '%') {
			if (buf[1] == '%') {
				if (nrIgnoreLevels == 0) {
					InterpretLine(buf + 2);
				}
			} else if (buf[1] == '{') {
				buf[strlen(buf) - 1] = '\0';
				if (!HasProperty(buf + 2)) {
                    if (nrIgnoreLevels == 0 && HasProperty("debugskel")) {
                        fprintf(stderr, "%d: start ignore: %s\n", lineNr, buf + 2);
                    }
                    nrIgnoreLevels++;
				} else if (nrIgnoreLevels == 0 && HasProperty("debugskel")) {
                    fprintf(stderr, "%d: accept: %s\n", lineNr, buf + 2);
                }
			} else if (buf[1] == '}') {
				buf[strlen(buf) - 1] = '\0';
				if (!HasProperty(buf + 2)) {
					nrIgnoreLevels--;
                    if (nrIgnoreLevels < 0 && HasProperty("debugskel")) {
                        fprintf(stderr, "%d: nrIgnoreLevels < 0\n", lineNr);
                    } else if (nrIgnoreLevels == 0 && HasProperty("debugskel")) {
                        fprintf(stderr, "%d: end ignore: %s\n", lineNr, buf + 2);
                    }
				} else if (nrIgnoreLevels == 0 && HasProperty("debugskel")) {
                    fprintf(stderr, "%d: end accept: %s\n", lineNr, buf + 2);
                }
            } else if (buf[1] == '=') {
                if (nrIgnoreLevels == 0) {
                    buf[strlen(buf) - 1] = '\0';
                    switch (buf[2]) {
                        case 'T':
                            strcpy(llTokenSetTypeString, buf + 3);
                            break;
                    }
                }
			} else if (buf[1] != '#') {
				if (nrIgnoreLevels == 0) {
					buf[strlen(buf) - 1] = '\0';
					if (strcmp(buf + 1, "initcode") == 0) {
						Node cPtr = preCodeBlocks;
						int pLineNr = 0;
						while (cPtr != NULL) {
                            const char* txt = (const char*) cPtr->element.name;
                            if (txt[0] != '%') {
                                if (cPtr->lineNr != pLineNr && HasProperty("line")) {
                                    fprintf(outputFile, "#line %d \"%s\"\n", cPtr->lineNr, inputFileName);
                                    pLineNr = cPtr->lineNr;
                                    lastLineCopied = pLineNr;
                                }
                                fputs(txt, outputFile);
                            }
							cPtr = cPtr->next;
						}
                    } else if (strncmp(buf + 1, "code", 4) == 0) {
						Node cPtr = preCodeBlocks;
						int pLineNr = 0;
                        char blockNr = buf[5];
						while (cPtr != NULL) {
                            const char* txt = (const char*) cPtr->element.name;
                            if (txt[0] == '%' && txt[1] == blockNr && isspace(txt[2])) {
                                if (cPtr->lineNr != pLineNr && HasProperty("line")) {
                                    fprintf(outputFile, "#line %d \"%s\"\n", cPtr->lineNr, inputFileName);
                                    pLineNr = cPtr->lineNr;
                                    lastLineCopied = pLineNr;
                                }
                                fputs(txt + 3, outputFile);
                            }
							cPtr = cPtr->next;
						}
					} else if (strcmp(buf + 1, "exitcode") == 0) {
						Node cPtr = postCodeBlocks;
						int pLineNr = 0;
						while (cPtr != NULL) {
							if (cPtr->lineNr != pLineNr && HasProperty("line")) {
								fprintf(outputFile, "#line %d \"%s\"\n", cPtr->lineNr, inputFileName);
								pLineNr = cPtr->lineNr;
								lastLineCopied = pLineNr;
							}
							fputs((char *) cPtr->element.name, outputFile);
							cPtr = cPtr->next;
						}
					} else if (strcmp(buf + 1, "enum") == 0) {
						DefineEnums();
					} else if (strcmp(buf + 1, "prototypes") == 0) {
						DefineProcs();
					} else if (strcmp(buf + 1, "keywordlist") == 0) {
						DefineKeywordList();
					} else if (strcmp(buf + 1, "functionlist") == 0) {
						DefineFunctionList();
					} else if (strcmp(buf + 1, "scantable") == 0) {
						if (dfa == NULL) fprintf(stderr, "Error in skeleton file: scantable not preceded by tokenset\n");
                        if (targetLanguage == &cLanguage || targetLanguage == &cppLanguage || targetLanguage == &goLanguage || targetLanguage == &rustLanguage) {
                            RenumberRegExp(dfa);
                        }
						FormatRegExp(outputFile, dfa);
					} else if (strcmp(buf + 1, "tokensets") == 0) {
						if (dfa == NULL) CompileScanner();
						FormatTokenSets(outputFile, dfa);
						CreateTokenNames();
						CheckOverlap(dfa);
					} else if (strcmp(buf + 1, "parsefunctions") == 0) {
						TraverseTreeInOrder(idTree, (TreeProc) CreateTokenSets);
						fputc('\n', outputFile);
						TraverseTreeInOrder(idTree, (TreeProc) CreateProcs);
					} else if (strcmp(buf + 1, "createtokensets") == 0) {
						TraverseTreeInOrder(idTree, (TreeProc) CreateTokenSets);
					} else if (strcmp(buf + 1, "parsefunctionbodies") == 0) {
						TraverseTreeInOrder(idTree, (TreeProc) CreateProcs);
					} else {
						fprintf(stderr, "Error in skeleton file: %s\n", buf);
					}
				}
			}
		} else if (nrIgnoreLevels == 0) {
			fputs(buf, outputFile);
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x8(%rbp)
movl $0x0, -0x114(%rbp)
movl $0x0, -0x118(%rbp)
leaq -0x110(%rbp), %rdi
movq 0x1bfbf(%rip), %rdx     # 0x20d70
movl $0x100, %esi            # imm = 0x100
callq 0x3130
cmpq $0x0, %rax
je 0x5687
movl -0x118(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x118(%rbp)
movsbl -0x110(%rbp), %eax
cmpl $0x25, %eax
jne 0x5664
movsbl -0x10f(%rbp), %eax
cmpl $0x25, %eax
jne 0x4e0e
cmpl $0x0, -0x114(%rbp)
jne 0x4e09
leaq -0x110(%rbp), %rdi
addq $0x2, %rdi
callq 0x6110
jmp 0x5662
movsbl -0x10f(%rbp), %eax
cmpl $0x7b, %eax
jne 0x4eec
leaq -0x110(%rbp), %rdi
callq 0x30c0
subq $0x1, %rax
movb $0x0, -0x110(%rbp,%rax)
leaq -0x110(%rbp), %rdi
addq $0x2, %rdi
callq 0x4940
cmpw $0x0, %ax
jne 0x4ea1
cmpl $0x0, -0x114(%rbp)
jne 0x4e90
leaq 0x145c2(%rip), %rdi     # 0x1941e
callq 0x4940
cwtl
cmpl $0x0, %eax
je 0x4e90
movq 0x1b18a(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
movl -0x118(%rbp), %edx
leaq -0x110(%rbp), %rcx
addq $0x2, %rcx
leaq 0x1459f(%rip), %rsi     # 0x19428
movb $0x0, %al
callq 0x3140
movl -0x114(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x114(%rbp)
jmp 0x4ee7
cmpl $0x0, -0x114(%rbp)
jne 0x4ee5
leaq 0x1456d(%rip), %rdi     # 0x1941e
callq 0x4940
cwtl
cmpl $0x0, %eax
je 0x4ee5
movq 0x1b135(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
movl -0x118(%rbp), %edx
leaq -0x110(%rbp), %rcx
addq $0x2, %rcx
leaq 0x14560(%rip), %rsi     # 0x1943e
movb $0x0, %al
callq 0x3140
jmp 0x4ee7
jmp 0x5660
movsbl -0x10f(%rbp), %eax
cmpl $0x7d, %eax
jne 0x500b
leaq -0x110(%rbp), %rdi
callq 0x30c0
subq $0x1, %rax
movb $0x0, -0x110(%rbp,%rax)
leaq -0x110(%rbp), %rdi
addq $0x2, %rdi
callq 0x4940
cmpw $0x0, %ax
jne 0x4fc0
movl -0x114(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x114(%rbp)
cmpl $0x0, -0x114(%rbp)
jge 0x4f78
leaq 0x144d1(%rip), %rdi     # 0x1941e
callq 0x4940
cwtl
cmpl $0x0, %eax
je 0x4f78
movq 0x1b099(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
movl -0x118(%rbp), %edx
leaq 0x144df(%rip), %rsi     # 0x1944e
movb $0x0, %al
callq 0x3140
jmp 0x4fbe
cmpl $0x0, -0x114(%rbp)
jne 0x4fbc
leaq 0x14496(%rip), %rdi     # 0x1941e
callq 0x4940
cwtl
cmpl $0x0, %eax
je 0x4fbc
movq 0x1b05e(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
movl -0x118(%rbp), %edx
leaq -0x110(%rbp), %rcx
addq $0x2, %rcx
leaq 0x144b1(%rip), %rsi     # 0x19466
movb $0x0, %al
callq 0x3140
jmp 0x4fbe
jmp 0x5006
cmpl $0x0, -0x114(%rbp)
jne 0x5004
leaq 0x1444e(%rip), %rdi     # 0x1941e
callq 0x4940
cwtl
cmpl $0x0, %eax
je 0x5004
movq 0x1b016(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
movl -0x118(%rbp), %edx
leaq -0x110(%rbp), %rcx
addq $0x2, %rcx
leaq 0x1447d(%rip), %rsi     # 0x1947a
movb $0x0, %al
callq 0x3140
jmp 0x5006
jmp 0x565e
movsbl -0x10f(%rbp), %eax
cmpl $0x3d, %eax
jne 0x5069
cmpl $0x0, -0x114(%rbp)
jne 0x5064
leaq -0x110(%rbp), %rdi
movq %rdi, -0x160(%rbp)
callq 0x30c0
movq -0x160(%rbp), %rcx
movb $0x0, -0x1(%rax,%rcx)
movb -0x10e(%rbp), %al
subb $0x54, %al
jne 0x5062
jmp 0x504b
leaq -0x110(%rbp), %rsi
addq $0x3, %rsi
leaq 0x1b0c3(%rip), %rdi     # 0x20120
callq 0x3080
jmp 0x5064
jmp 0x565c
movsbl -0x10f(%rbp), %eax
cmpl $0x23, %eax
je 0x565a
cmpl $0x0, -0x114(%rbp)
jne 0x5658
leaq -0x110(%rbp), %rdi
callq 0x30c0
subq $0x1, %rax
movb $0x0, -0x110(%rbp,%rax)
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x143de(%rip), %rsi     # 0x1948e
callq 0x3220
cmpl $0x0, %eax
jne 0x519d
leaq 0x1bd13(%rip), %rax     # 0x20dd8
movq (%rax), %rax
movq %rax, -0x120(%rbp)
movl $0x0, -0x124(%rbp)
cmpq $0x0, -0x120(%rbp)
je 0x5198
movq -0x120(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x130(%rbp)
movq -0x130(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x25, %eax
je 0x5181
movq -0x120(%rbp), %rax
movswl (%rax), %eax
cmpl -0x124(%rbp), %eax
je 0x516e
leaq 0x14376(%rip), %rdi     # 0x19497
callq 0x4940
cwtl
cmpl $0x0, %eax
je 0x516e
movq 0x1bc05(%rip), %rdi     # 0x20d38
movq -0x120(%rbp), %rax
movswl (%rax), %edx
movq 0x1b034(%rip), %rcx     # 0x20178
leaq 0x14351(%rip), %rsi     # 0x1949c
movb $0x0, %al
callq 0x3140
movq -0x120(%rbp), %rax
movswl (%rax), %eax
movl %eax, -0x124(%rbp)
movl -0x124(%rbp), %eax
movl %eax, 0x1bc16(%rip)     # 0x20d84
movq -0x130(%rbp), %rdi
movq 0x1bbbc(%rip), %rsi     # 0x20d38
callq 0x3100
movq -0x120(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x120(%rbp)
jmp 0x50d9
jmp 0x5656
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x142e3(%rip), %rsi     # 0x19492
movl $0x4, %edx
callq 0x3070
cmpl $0x0, %eax
jne 0x52f3
leaq 0x1bc0f(%rip), %rax     # 0x20dd8
movq (%rax), %rax
movq %rax, -0x138(%rbp)
movl $0x0, -0x13c(%rbp)
movb -0x10b(%rbp), %al
movb %al, -0x13d(%rbp)
cmpq $0x0, -0x138(%rbp)
je 0x52ee
movq -0x138(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x25, %eax
jne 0x52d7
movq -0x148(%rbp), %rax
movsbl 0x1(%rax), %eax
movsbl -0x13d(%rbp), %ecx
cmpl %ecx, %eax
jne 0x52d7
callq 0x3210
movq (%rax), %rax
movq -0x148(%rbp), %rcx
movsbl 0x2(%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x52d7
movq -0x138(%rbp), %rax
movswl (%rax), %eax
cmpl -0x13c(%rbp), %eax
je 0x52c0
leaq 0x14224(%rip), %rdi     # 0x19497
callq 0x4940
cwtl
cmpl $0x0, %eax
je 0x52c0
movq 0x1bab3(%rip), %rdi     # 0x20d38
movq -0x138(%rbp), %rax
movswl (%rax), %edx
movq 0x1aee2(%rip), %rcx     # 0x20178
leaq 0x141ff(%rip), %rsi     # 0x1949c
movb $0x0, %al
callq 0x3140
movq -0x138(%rbp), %rax
movswl (%rax), %eax
movl %eax, -0x13c(%rbp)
movl -0x13c(%rbp), %eax
movl %eax, 0x1bac4(%rip)     # 0x20d84
movq -0x148(%rbp), %rdi
addq $0x3, %rdi
movq 0x1ba66(%rip), %rsi     # 0x20d38
callq 0x3100
movq -0x138(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x138(%rbp)
jmp 0x51e9
jmp 0x5654
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x141a6(%rip), %rsi     # 0x194ab
callq 0x3220
cmpl $0x0, %eax
jne 0x53d5
leaq 0x1bac6(%rip), %rax     # 0x20de0
movq (%rax), %rax
movq %rax, -0x150(%rbp)
movl $0x0, -0x154(%rbp)
cmpq $0x0, -0x150(%rbp)
je 0x53d0
movq -0x150(%rbp), %rax
movswl (%rax), %eax
cmpl -0x154(%rbp), %eax
je 0x53a2
leaq 0x14142(%rip), %rdi     # 0x19497
callq 0x4940
cwtl
cmpl $0x0, %eax
je 0x53a2
movq 0x1b9d1(%rip), %rdi     # 0x20d38
movq -0x150(%rbp), %rax
movswl (%rax), %edx
movq 0x1ae00(%rip), %rcx     # 0x20178
leaq 0x1411d(%rip), %rsi     # 0x1949c
movb $0x0, %al
callq 0x3140
movq -0x150(%rbp), %rax
movswl (%rax), %eax
movl %eax, -0x154(%rbp)
movl -0x154(%rbp), %eax
movl %eax, 0x1b9e2(%rip)     # 0x20d84
movq -0x150(%rbp), %rax
movq 0x18(%rax), %rdi
movq 0x1b984(%rip), %rsi     # 0x20d38
callq 0x3100
movq -0x150(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x150(%rbp)
jmp 0x532e
jmp 0x5652
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x140cd(%rip), %rsi     # 0x194b4
callq 0x3220
cmpl $0x0, %eax
jne 0x53fb
callq 0x67e0
jmp 0x5650
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x140ac(%rip), %rsi     # 0x194b9
callq 0x3220
cmpl $0x0, %eax
jne 0x5421
callq 0x68a0
jmp 0x564e
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x14091(%rip), %rsi     # 0x194c4
callq 0x3220
cmpl $0x0, %eax
jne 0x5447
callq 0x69f0
jmp 0x564c
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x14077(%rip), %rsi     # 0x194d0
callq 0x3220
cmpl $0x0, %eax
jne 0x546d
callq 0x6ef0
jmp 0x564a
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x1405e(%rip), %rsi     # 0x194dd
callq 0x3220
cmpl $0x0, %eax
jne 0x5513
cmpq $0x0, 0x1b8f3(%rip)     # 0x20d88
jne 0x54af
movq 0x1ab5a(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
leaq 0x1403f(%rip), %rsi     # 0x194e7
movb $0x0, %al
callq 0x3140
leaq 0x1affa(%rip), %rax     # 0x204b0
cmpq %rax, 0x1acb3(%rip)     # 0x20170
je 0x54ef
leaq 0x1b152(%rip), %rax     # 0x20618
cmpq %rax, 0x1aca3(%rip)     # 0x20170
je 0x54ef
leaq 0x1b57a(%rip), %rax     # 0x20a50
cmpq %rax, 0x1ac93(%rip)     # 0x20170
je 0x54ef
leaq 0x1b6d2(%rip), %rax     # 0x20bb8
cmpq %rax, 0x1ac83(%rip)     # 0x20170
jne 0x54fb
movq 0x1b892(%rip), %rdi     # 0x20d88
callq 0x71b0
movq 0x1b836(%rip), %rdi     # 0x20d38
movq 0x1b87f(%rip), %rsi     # 0x20d88
callq 0x74b0
jmp 0x5648
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x14013(%rip), %rsi     # 0x19538
callq 0x3220
cmpl $0x0, %eax
jne 0x5567
cmpq $0x0, 0x1b851(%rip)     # 0x20d88
jne 0x553e
callq 0x79b0
movq 0x1b7f3(%rip), %rdi     # 0x20d38
movq 0x1b83c(%rip), %rsi     # 0x20d88
callq 0x7b20
callq 0x7b80
movq 0x1b82b(%rip), %rdi     # 0x20d88
callq 0x7cc0
jmp 0x5646
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x13faa(%rip), %rsi     # 0x19523
callq 0x3220
cmpl $0x0, %eax
jne 0x55bf
movq 0x1b7c6(%rip), %rdi     # 0x20d50
leaq 0x2a1f(%rip), %rsi      # 0x7fb0
callq 0x10490
movq 0x1b79b(%rip), %rsi     # 0x20d38
movl $0xa, %edi
callq 0x3120
movq 0x1b7a2(%rip), %rdi     # 0x20d50
leaq 0x2a8b(%rip), %rsi      # 0x8040
callq 0x10490
jmp 0x5644
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x13f61(%rip), %rsi     # 0x19532
callq 0x3220
cmpl $0x0, %eax
jne 0x55f0
movq 0x1b76e(%rip), %rdi     # 0x20d50
leaq 0x29c7(%rip), %rsi      # 0x7fb0
callq 0x10490
jmp 0x5642
leaq -0x110(%rbp), %rdi
addq $0x1, %rdi
leaq 0x13f40(%rip), %rsi     # 0x19542
callq 0x3220
cmpl $0x0, %eax
jne 0x5621
movq 0x1b73d(%rip), %rdi     # 0x20d50
leaq 0x2a26(%rip), %rsi      # 0x8040
callq 0x10490
jmp 0x5640
movq 0x1a9d0(%rip), %rax     # 0x1fff8
movq (%rax), %rdi
leaq -0x110(%rbp), %rdx
leaq 0x13f1d(%rip), %rsi     # 0x19556
movb $0x0, %al
callq 0x3140
jmp 0x5642
jmp 0x5644
jmp 0x5646
jmp 0x5648
jmp 0x564a
jmp 0x564c
jmp 0x564e
jmp 0x5650
jmp 0x5652
jmp 0x5654
jmp 0x5656
jmp 0x5658
jmp 0x565a
jmp 0x565c
jmp 0x565e
jmp 0x5660
jmp 0x5662
jmp 0x5682
cmpl $0x0, -0x114(%rbp)
jne 0x5680
leaq -0x110(%rbp), %rdi
movq 0x1b6bd(%rip), %rsi     # 0x20d38
callq 0x3100
jmp 0x5682
jmp 0x4da3
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq