// File: /workspace/github_cpp_makefile_star2_O1/Silica[P]PSL/./PSL/tokenizer.h
// Function: PSL::variable::Tokenizer::preprocessor()
int preprocessor()
	{
		if (whitespace())
			return 0;
		if (!getIdentifier())
		{
			if (s[i] != '!')
				PSL_PRINTF(("warning %s %d: tokenizer directive syntax error\n", filename.c_str(), line));
			lcomment();
			return doNext();
		}
		string directive = nstr;
		if (whitespace())
			return 0;
		if (directive == "include")
		{
			if (s[i] == '<' || s[i] == '"')
			{
				for (size_t h = ++i; i < len; ++i)
				{
					if (s[i] == '>' || s[i] == '"' || s[i] == '\r' || s[i] == '\n')
					{
						#ifdef PSL_USE_TOKENIZER_DEFINE
						if (!ifdefstatus)
						#endif
						{
							string name(s+h, i-h);
							++i;
							including = New(name, definelist);
							if (!including)
							{
								int dir = filename.rfind('\\');
								if (dir > 0 || ((dir = filename.rfind('/')) > 0))
									including = New(filename / static_cast<size_t>(dir+1) + name, definelist);
								if (!including)
									PSL_PRINTF(("tokenizer %s %d: can't open include file <%s>\n", filename.c_str(), line, name.c_str()));
							}
						}
						break;
					}
				}
			}
			return doNext();
		}
#ifdef PSL_USE_TOKENIZER_DEFINE
		else if (directive == "define")
		{
			if (!getIdentifier())
				PSL_PRINTF(("warning %s %d: define syntax error\n", filename.c_str(), line));
			else
			{
				if (whitespace())
					return 0;
				size_t h = i;
				lcomment();
				variable temp = string(s+h, i-h);
				#ifdef PSL_USE_STL_MAP
				definelist->insert(table::value_type(nstr, temp));
				#else
				(*definelist)[nstr] = temp;
				#endif
				return doNext();
			}
		}
		else if (directive == "undef")
		{
			if (!getIdentifier())
				PSL_PRINTF(("warning %s %d: undef syntax error\n", filename.c_str(), line));
			else
				definelist->erase(nstr);
		}
		else if (directive == "ifdef")
		{
			if (!getIdentifier())
				PSL_PRINTF(("warning %s %d: ifdef syntax error\n", filename.c_str(), line));
			else
			{
				++ifdefcount;
				if (!definelist->count(nstr))
				{
					ifdefstatus = ifdefcount;
					int n;
					do n = doNext(); while (ifdefstatus && n);
					return n;
				}
			}
		}
		else if (directive == "ifndef")
		{
			if (!getIdentifier())
				PSL_PRINTF(("warning %s %d: ifndef syntax error\n", filename.c_str(), line));
			else
			{
				++ifdefcount;
				if (definelist->count(nstr))
				{
					ifdefstatus = ifdefcount;
					int n;
					do n = doNext(); while (ifdefstatus && n);
					return n;
				}
			}
		}
		else if (directive == "else")
		{
			if (!ifdefstatus)
			{
				ifdefstatus = ifdefcount;
				int n;
				do n = doNext(); while (ifdefstatus && n);
				return n;
			}
			else
			{
				ifdefstatus = 0;
			}
		}
		else if (directive == "endif")
		{
			if (!ifdefcount)
				PSL_PRINTF(("warning %s %d: endif syntax error\n", filename.c_str(), line));
			else
			{
				if (ifdefstatus == ifdefcount)
					ifdefstatus = 0;
				--ifdefcount;
			}
		}
#endif
		else
		{
			PSL_PRINTF(("tokenizer %s %d: unknown tokenizer directive #%s\n", filename.c_str(), line, directive.c_str()));
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movq 0x20(%rdi), %rax
movq 0x28(%rdi), %rcx
cmpq %rax, %rcx
jae 0x1a45b
movq 0x18(%rbx), %rdx
movzbl (%rdx,%rcx), %esi
cmpl $0x20, %esi
je 0x1a44c
cmpl $0x9, %esi
jne 0x1a45b
incq %rcx
movq %rcx, 0x28(%rbx)
cmpq %rcx, %rax
jne 0x1a43e
movq %rax, %rcx
xorl %ebp, %ebp
cmpq %rax, %rcx
je 0x1ab81
movq %rbx, %rdi
callq 0x1ac3a
testb %al, %al
je 0x1a47f
movq 0x68(%rbx), %rax
testq %rax, %rax
je 0x1a4b2
incl (%rax)
jmp 0x1a4b4
movq 0x18(%rbx), %rax
movq 0x28(%rbx), %rcx
cmpb $0x21, (%rax,%rcx)
je 0x1a68a
movq (%rbx), %rax
testq %rax, %rax
je 0x1a672
movq 0x8(%rax), %rcx
movq 0x18(%rax), %rdx
movb $0x0, (%rcx,%rdx)
movq 0x8(%rax), %rsi
jmp 0x1a679
xorl %eax, %eax
movq %rax, 0x8(%rsp)
movq 0x20(%rbx), %rax
movq 0x28(%rbx), %rcx
cmpq %rax, %rcx
jae 0x1a4e7
movq 0x18(%rbx), %rdx
movzbl (%rdx,%rcx), %esi
cmpl $0x20, %esi
je 0x1a4d8
cmpl $0x9, %esi
jne 0x1a4e7
incq %rcx
movq %rcx, 0x28(%rbx)
cmpq %rcx, %rax
jne 0x1a4ca
movq %rax, %rcx
xorl %ebp, %ebp
cmpq %rax, %rcx
je 0x1ab72
leaq 0xe254(%rip), %rsi      # 0x2874d
leaq 0x8(%rsp), %rdi
callq 0x1b0f8
testb %al, %al
je 0x1a57c
movq 0x18(%rbx), %rsi
movq 0x28(%rbx), %rax
movzbl (%rsi,%rax), %ecx
cmpl $0x3c, %ecx
je 0x1a521
cmpl $0x22, %ecx
jne 0x1ab68
leaq 0x1(%rax), %rcx
movq 0x20(%rbx), %rdx
movq %rcx, 0x28(%rbx)
cmpq %rdx, %rcx
jae 0x1ab68
addq %rcx, %rsi
movq %rax, %rcx
notq %rcx
addq %rdx, %rcx
addq $0x2, %rax
xorl %edx, %edx
movabsq $0x4000000400002400, %rdi # imm = 0x4000000400002400
movzbl (%rsi,%rdx), %r8d
cmpq $0x3e, %r8
ja 0x1a567
btq %r8, %rdi
jb 0x1a710
leaq (%rax,%rdx), %r8
movq %r8, 0x28(%rbx)
incq %rdx
cmpq %rdx, %rcx
jne 0x1a552
jmp 0x1ab68
leaq 0x68(%rbx), %r14
leaq 0xe1fd(%rip), %rsi      # 0x28784
leaq 0x8(%rsp), %rdi
callq 0x1b0f8
testb %al, %al
je 0x1a6d6
movq %rbx, %rdi
callq 0x1ac3a
testb %al, %al
je 0x1a7f2
movq %rbx, %rdi
callq 0x1b0c2
testb %al, %al
jne 0x1ab72
movq 0x20(%rbx), %rcx
movq 0x28(%rbx), %rax
cmpq %rcx, %rax
jae 0x1a5f4
movq 0x18(%rbx), %rdx
negq %rcx
leaq 0x1(%rax), %rsi
movzbl -0x1(%rdx,%rsi), %edi
cmpl $0xa, %edi
je 0x1a5f4
cmpl $0xd, %edi
je 0x1a5f4
movq %rsi, 0x28(%rbx)
leaq (%rcx,%rsi), %rdi
incq %rdi
incq %rsi
cmpq $0x1, %rdi
jne 0x1a5d1
movq 0x18(%rbx), %rsi
addq %rax, %rsi
movq 0x28(%rbx), %rdx
subq %rax, %rdx
leaq 0x18(%rsp), %rdi
callq 0x1b00a
leaq 0x10(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x1b226
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1a62a
callq 0xfbc0
movq 0x10(%rsp), %r15
incl 0x8(%r15)
movq 0x48(%rbx), %rdi
movq %r14, %rsi
callq 0x13456
movq %rax, %r14
movq (%rax), %rdi
callq 0xfc04
incl 0x8(%r15)
movq %r15, (%r14)
movq %r15, %rdi
callq 0xfc04
movq %rbx, %rdi
callq 0x199bc
movl %eax, %ebp
movq 0x10(%rsp), %rdi
callq 0xfc04
jmp 0x1ab72
leaq 0xe079(%rip), %rsi      # 0x286f2
movl 0x8(%rbx), %edx
leaq 0xe099(%rip), %rdi      # 0x2871c
xorl %eax, %eax
callq 0xc050
movq 0x20(%rbx), %rax
movq 0x28(%rbx), %rcx
cmpq %rax, %rcx
jae 0x1a6c4
movq 0x18(%rbx), %rdx
negq %rax
incq %rcx
movzbl -0x1(%rdx,%rcx), %esi
cmpl $0xa, %esi
je 0x1a6c4
cmpl $0xd, %esi
je 0x1a6c4
movq %rcx, 0x28(%rbx)
leaq (%rax,%rcx), %rsi
incq %rsi
incq %rcx
cmpq $0x1, %rsi
jne 0x1a6a1
movq %rbx, %rdi
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x199bc
leaq 0xe0d2(%rip), %rsi      # 0x287af
leaq 0x8(%rsp), %rdi
callq 0x1b0f8
testb %al, %al
je 0x1a78c
movq %rbx, %rdi
callq 0x1ac3a
testb %al, %al
je 0x1a881
movq 0x48(%rbx), %rdi
movq %r14, %rsi
callq 0x13816
jmp 0x1aa03
cmpl $0x0, 0x58(%rbx)
jne 0x1ab68
leaq 0x10(%rsp), %rdi
callq 0x1b00a
incq 0x28(%rbx)
movq 0x48(%rbx), %rsi
leaq 0x10(%rsp), %rdi
callq 0x1b134
movq %rax, 0x40(%rbx)
testq %rax, %rax
jne 0x1ab59
movq (%rbx), %rax
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
testq %rax, %rax
je 0x1aa50
movq 0x18(%rax), %rcx
testl %ecx, %ecx
jle 0x1aa50
movq 0x8(%rax), %rsi
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
decq %rcx
cmpb $0x5c, (%rsi,%rcx)
je 0x1aa4e
leaq -0x1(%rcx), %rdi
incq %rcx
cmpq $0x1, %rcx
movq %rdi, %rcx
jg 0x1a76d
jmp 0x1aa50
leaq 0xe045(%rip), %rsi      # 0x287d8
leaq 0x8(%rsp), %rdi
callq 0x1b0f8
testb %al, %al
je 0x1a813
movq %rbx, %rdi
callq 0x1ac3a
testb %al, %al
je 0x1a8dc
incl 0x54(%rbx)
movq 0x48(%rbx), %rdi
cmpq $0x0, 0x8(%rdi)
je 0x1a7cf
movq %r14, %rsi
callq 0x13534
testl %eax, %eax
jns 0x1aa03
movl 0x54(%rbx), %eax
movl %eax, 0x58(%rbx)
movq %rbx, %rdi
callq 0x199bc
movl %eax, %ebp
testl %eax, %eax
je 0x1ab72
cmpl $0x0, 0x58(%rbx)
jne 0x1a7d5
jmp 0x1ab72
movq (%rbx), %rax
testq %rax, %rax
je 0x1a89b
movq 0x8(%rax), %rcx
movq 0x18(%rax), %rdx
movb $0x0, (%rcx,%rdx)
movq 0x8(%rax), %rsi
jmp 0x1a8a2
leaq 0xdfe7(%rip), %rsi      # 0x28801
leaq 0x8(%rsp), %rdi
callq 0x1b0f8
testb %al, %al
je 0x1a8b1
movq %rbx, %rdi
callq 0x1ac3a
testb %al, %al
je 0x1a942
incl 0x54(%rbx)
movq 0x48(%rbx), %rdi
cmpq $0x0, 0x8(%rdi)
je 0x1aa03
movq %r14, %rsi
callq 0x13534
testl %eax, %eax
js 0x1aa03
movl 0x54(%rbx), %eax
movl %eax, 0x58(%rbx)
movq %rbx, %rdi
callq 0x199bc
movl %eax, %ebp
testl %eax, %eax
je 0x1ab72
cmpl $0x0, 0x58(%rbx)
jne 0x1a864
jmp 0x1ab72
movq (%rbx), %rax
testq %rax, %rax
je 0x1a8f6
movq 0x8(%rax), %rcx
movq 0x18(%rax), %rdx
movb $0x0, (%rcx,%rdx)
movq 0x8(%rax), %rsi
jmp 0x1a8fd
leaq 0xde50(%rip), %rsi      # 0x286f2
movl 0x8(%rbx), %edx
leaq 0xdedf(%rip), %rdi      # 0x2878b
jmp 0x1a9fc
leaq 0xdf74(%rip), %rsi      # 0x2882c
leaq 0x8(%rsp), %rdi
callq 0x1b0f8
testb %al, %al
je 0x1a90c
cmpl $0x0, 0x58(%rbx)
je 0x1a9c8
movl $0x0, 0x58(%rbx)
jmp 0x1aa03
movq (%rbx), %rax
testq %rax, %rax
je 0x1a963
movq 0x8(%rax), %rcx
movq 0x18(%rax), %rdx
movb $0x0, (%rcx,%rdx)
movq 0x8(%rax), %rsi
jmp 0x1a96a
leaq 0xddf5(%rip), %rsi      # 0x286f2
movl 0x8(%rbx), %edx
leaq 0xdeae(%rip), %rdi      # 0x287b5
jmp 0x1a9fc
leaq 0xdf1e(%rip), %rsi      # 0x28831
leaq 0x8(%rsp), %rdi
callq 0x1b0f8
testb %al, %al
je 0x1a979
movl 0x54(%rbx), %eax
testl %eax, %eax
je 0x1aa8b
cmpl %eax, 0x58(%rbx)
jne 0x1a938
movl $0x0, 0x58(%rbx)
decl %eax
movl %eax, 0x54(%rbx)
jmp 0x1aa03
movq (%rbx), %rax
testq %rax, %rax
je 0x1a9eb
movq 0x8(%rax), %rcx
movq 0x18(%rax), %rdx
movb $0x0, (%rcx,%rdx)
movq 0x8(%rax), %rsi
jmp 0x1a9f2
leaq 0xdd88(%rip), %rsi      # 0x286f2
movl 0x8(%rbx), %edx
leaq 0xde6a(%rip), %rdi      # 0x287de
jmp 0x1a9fc
movq (%rbx), %rax
leaq 0xdd6f(%rip), %rcx      # 0x286f2
movq %rcx, %rsi
testq %rax, %rax
je 0x1a99b
movq 0x8(%rax), %rdx
movq 0x18(%rax), %rsi
movb $0x0, (%rdx,%rsi)
movq 0x8(%rax), %rsi
movl 0x8(%rbx), %edx
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x1a9b8
movq 0x8(%rax), %rcx
movq 0x18(%rax), %rdi
movb $0x0, (%rcx,%rdi)
movq 0x8(%rax), %rcx
leaq 0xde9b(%rip), %rdi      # 0x2885a
xorl %eax, %eax
callq 0xc050
jmp 0x1aa03
movl 0x54(%rbx), %eax
movl %eax, 0x58(%rbx)
movq %rbx, %rdi
callq 0x199bc
movl %eax, %ebp
testl %eax, %eax
je 0x1ab72
cmpl $0x0, 0x58(%rbx)
jne 0x1a9ce
jmp 0x1ab72
leaq 0xdd00(%rip), %rsi      # 0x286f2
movl 0x8(%rbx), %edx
leaq 0xde0c(%rip), %rdi      # 0x28808
xorl %eax, %eax
callq 0xc050
movq 0x20(%rbx), %rax
movq 0x28(%rbx), %rcx
cmpq %rax, %rcx
jae 0x1ab68
movq 0x18(%rbx), %rdx
negq %rax
incq %rcx
movzbl -0x1(%rdx,%rcx), %esi
cmpl $0xa, %esi
je 0x1ab68
cmpl $0xd, %esi
je 0x1ab68
movq %rcx, 0x28(%rbx)
leaq (%rax,%rcx), %rsi
incq %rsi
incq %rcx
cmpq $0x1, %rsi
jne 0x1aa1e
jmp 0x1ab68
movl %ecx, %edx
testl %edx, %edx
jg 0x1aab2
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
testq %rax, %rax
je 0x1aaae
movq 0x18(%rax), %rcx
testl %ecx, %ecx
jle 0x1aaae
movq 0x8(%rax), %rax
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
decq %rcx
cmpb $0x2f, (%rax,%rcx)
je 0x1aaac
leaq -0x1(%rcx), %rsi
incq %rcx
cmpq $0x1, %rcx
movq %rsi, %rcx
jg 0x1aa73
jmp 0x1aaae
movq (%rbx), %rax
testq %rax, %rax
je 0x1ab8e
movq 0x8(%rax), %rcx
movq 0x18(%rax), %rdx
movb $0x0, (%rcx,%rdx)
movq 0x8(%rax), %rsi
jmp 0x1ab95
movl %ecx, %edx
testl %edx, %edx
jle 0x1ab05
incl %edx
leaq 0x20(%rsp), %rdi
movq %rbx, %rsi
callq 0x1b1ca
leaq 0x18(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x1ae46
movq 0x48(%rbx), %rsi
leaq 0x18(%rsp), %rdi
callq 0x1b134
movq %rax, 0x40(%rbx)
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1aaf6
callq 0xfbc0
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1ab05
callq 0xfbc0
cmpq $0x0, 0x40(%rbx)
jne 0x1ab59
movq (%rbx), %rax
leaq 0xdbdc(%rip), %rcx      # 0x286f2
movq %rcx, %rsi
testq %rax, %rax
je 0x1ab2e
movq 0x8(%rax), %rdx
movq 0x18(%rax), %rsi
movb $0x0, (%rdx,%rsi)
movq 0x8(%rax), %rsi
movl 0x8(%rbx), %edx
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x1ab4b
movq 0x8(%rax), %rcx
movq 0x18(%rax), %rdi
movb $0x0, (%rcx,%rdi)
movq 0x8(%rax), %rcx
leaq 0xdc03(%rip), %rdi      # 0x28755
xorl %eax, %eax
callq 0xc050
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1ab68
callq 0xfbc0
movq %rbx, %rdi
callq 0x199bc
movl %eax, %ebp
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1ab81
callq 0xfbc0
movl %ebp, %eax
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0xdb5d(%rip), %rsi      # 0x286f2
movl 0x8(%rbx), %edx
leaq 0xdc98(%rip), %rdi      # 0x28837
jmp 0x1a9fc
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1abbb
callq 0xfbc0
jmp 0x1abbb
movq %rax, %rbx
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1abd1
callq 0xfbc0
jmp 0x1abd1
jmp 0x1abce
movq %rax, %rbx
movq 0x10(%rsp), %rdi
jmp 0x1abeb
jmp 0x1ac20
jmp 0x1ac12
movq %rax, %rbx
jmp 0x1ac04
jmp 0x1ac12
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1ac23
callq 0xfbc0
jmp 0x1ac23
jmp 0x1ac20
movq %rax, %rbx
movq %r15, %rdi
callq 0xfc04
movq 0x10(%rsp), %rdi
callq 0xfc04
jmp 0x1ac23
jmp 0x1ac12
movq %rax, %rdi
callq 0xde83
jmp 0x1ac20
jmp 0x1ac20
jmp 0x1ac20
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1ac32
callq 0xfbc0
movq %rbx, %rdi
callq 0xc290