// File: /workspace/github_cpp_makefile_star2_O3/andrakis[P]alisp/parser.cpp
// Function: ALisp::Parser::detail::tokenise(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
TokenListType tokenise(const TokenType &str) EXCEPT {
				TokenListType tokens;
				const char *s = str.c_str();
				while (*s) {
					// Skip whitespace
					while (isspace(*s))
						++s;
					// Skip comment lines
					if (*s == ';' && *(s + 1) == ';')
						while (*s && *s != '\n' && *s != '\r')
							++s;
					// List open or close
					else if (*s == '(' || *s == ')')
						tokens.push_back(*s++ == '(' ? "(" : ")");
					// "String" in quotes
					else if (*s == '"') {
						const char *t = s;
						int escape = 0;
						do {
							++t;
							if (escape != 0) escape--;
							if (*t == '\\')
								escape = 2; // skip this and the next character
						} while (*t && (escape != 0 || *t != '"'));
						++t;
						tokens.push_back(StringType(s, t));
						s = t;
					// A generic token
					} else {
						const char *t = s;
						while (*t && !isspace(*t) && *t != '(' && *t != ')')
							++t;
						tokens.push_back(StringType(s, t));
						s = t;
					}
				}
				return tokens;
			}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movq %rdi, 0x8(%rdi)
movq %rdi, (%rdi)
movq $0x0, 0x10(%rdi)
movq (%rsi), %r15
movb (%r15), %bpl
testb %bpl, %bpl
je 0x17fcb
leaq 0x18(%rsp), %r13
leaq 0x8(%rsp), %r14
movsbl %bpl, %edi
callq 0x70a0
testl %eax, %eax
je 0x17d71
movb 0x1(%r15), %bpl
incq %r15
jmp 0x17d5b
movzbl %bpl, %eax
cmpl $0x27, %eax
jle 0x17df0
leal -0x28(%rax), %ecx
cmpl $0x2, %ecx
jae 0x17e87
cmpb $0x28, %bpl
leaq 0x9b13(%rip), %rsi      # 0x218a4
leaq 0x8d92(%rip), %rax      # 0x20b2a
cmoveq %rax, %rsi
movq %r13, 0x8(%rsp)
leaq 0x9afd(%rip), %rdx      # 0x218a5
leaq 0x8d7c(%rip), %rax      # 0x20b2b
cmoveq %rax, %rdx
movq %r14, %rdi
callq 0xb160
movl $0x30, %edi
callq 0x7310
movq %rax, %rcx
addq $0x20, %rcx
movq %rcx, 0x10(%rax)
movq 0x8(%rsp), %rdx
cmpq %r13, %rdx
je 0x17eb2
movq %rdx, 0x10(%rax)
movq 0x18(%rsp), %rcx
movq %rcx, 0x20(%rax)
jmp 0x17eba
movq %r15, %r12
testl %eax, %eax
je 0x17f30
movq %r15, %r12
cmpl $0x22, %eax
jne 0x17f0a
movzbl 0x1(%r15), %ecx
movq %r15, %r12
testl %ecx, %ecx
movl $0x0, %edi
movl $0x2, %r8d
je 0x17e61
movq %r15, %r12
cmpl $0x22, %ecx
je 0x17e61
xorl %eax, %eax
cmpb $0x5c, %cl
sete %al
addl %eax, %eax
leaq 0x1(%r15), %rcx
movq %rcx, %r12
movb 0x1(%rcx), %dl
testb %dl, %dl
je 0x17e61
leaq 0x1(%r12), %rcx
subl $0x1, %eax
cmovbl %edi, %eax
cmpb $0x5c, %dl
cmovel %r8d, %eax
testl %eax, %eax
sete %sil
cmpb $0x22, %dl
sete %dl
testb %dl, %sil
je 0x17e34
addq $0x2, %r12
movq %r13, 0x8(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0xb160
movl $0x30, %edi
callq 0x7310
jmp 0x17f4d
cmpl $0x3b, %eax
jne 0x17f07
cmpb $0x3b, 0x1(%r15)
movq %r15, %r12
jne 0x17f0a
movb $0x3b, %al
movl $0x2401, %ecx           # imm = 0x2401
cmpb $0xd, %al
ja 0x17ea9
movzbl %al, %eax
btl %eax, %ecx
jb 0x17eff
movb 0x1(%r15), %al
incq %r15
jmp 0x17e9d
movups (%r13), %xmm0
movups %xmm0, (%rcx)
movq 0x10(%rsp), %rcx
movq %rcx, 0x18(%rax)
movq %r13, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq %rax, %rdi
movq %rbx, %rsi
callq 0x7090
incq 0x10(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x17efc
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x7330
incq %r15
movq %r15, %r12
jmp 0x17fbb
movq %r15, %r12
movsbl %bpl, %ebp
movl %ebp, %edi
callq 0x70a0
andb $-0x2, %bpl
cmpb $0x28, %bpl
je 0x17f30
testl %eax, %eax
jne 0x17f30
movb 0x1(%r12), %bpl
incq %r12
testb %bpl, %bpl
jne 0x17f0a
movq %r13, 0x8(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0xb160
movl $0x30, %edi
callq 0x7310
movq %rax, %rcx
addq $0x20, %rcx
movq %rcx, 0x10(%rax)
movq 0x8(%rsp), %rdx
cmpq %r13, %rdx
je 0x17f71
movq %rdx, 0x10(%rax)
movq 0x18(%rsp), %rcx
movq %rcx, 0x20(%rax)
jmp 0x17f79
movups (%r13), %xmm0
movups %xmm0, (%rcx)
movq 0x10(%rsp), %rcx
movq %rcx, 0x18(%rax)
movq %r13, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq %rax, %rdi
movq %rbx, %rsi
callq 0x7090
incq 0x10(%rbx)
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x17fbb
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x7330
movb (%r12), %bpl
movq %r12, %r15
testb %bpl, %bpl
jne 0x17d5b
movq %rbx, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x17fe5
jmp 0x18004
jmp 0x17fe5
jmp 0x18004
movq %rdx, %r15
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x1800a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x7330
jmp 0x1800a
movq %rdx, %r15
movq %rax, %r14
movq %rbx, %rdi
callq 0x185c4
movq %r14, %rdi
testl %r15d, %r15d
jns 0x1801f
callq 0x7480
callq 0x7630