// File: /workspace/github_cpp_makefile_star2_O2/andrakis[P]alisp/parser.cpp
// Function: ALisp::Parser::detail::read_from(std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&)
Cell read_from(TokenListType &tokens) EXCEPT {
				if (tokens.empty()) throw ParserException("Missing opening token");

				const TokenType token(tokens.front());
				tokens.pop_front();
				if (token == "(") {
					ListCell cells;
					while (tokens.front() != ")") {
						cells.push(read_from(tokens));
						if (tokens.empty()) throw ParserException("Missing closing )");
					}
					if (tokens.empty()) throw ParserException("Missing closing )");
					tokens.pop_front();
					return cells;
				} else
					return atom(token);
			}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rsi, %r14
movq (%rsi), %rsi
cmpq %r14, %rsi
je 0x152f5
movq %rdi, %rbx
addq $0x10, %rsi
leaq 0x18(%rsp), %rdi
callq 0x7490
movq %r14, %rdi
callq 0x15568
leaq 0x78f8(%rip), %rsi      # 0x1caea
leaq 0x18(%rsp), %rdi
callq 0x9c05
testb %al, %al
je 0x152b2
leaq 0x10(%rsp), %rdi
callq 0xb658
movq (%r14), %rdi
leaq 0x8675(%rip), %r15      # 0x1d88d
leaq 0x8(%rsp), %r12
leaq 0x10(%rsp), %r13
addq $0x10, %rdi
movq %r15, %rsi
callq 0x9bfb
testb %al, %al
je 0x152c1
movq %r12, %rdi
movq %r14, %rsi
callq 0x151b2
movq %r13, %rdi
movq %r12, %rsi
callq 0xb678
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1525c
movq (%rdi), %rax
callq *0x10(%rax)
movq (%r14), %rdi
cmpq %r14, %rdi
jne 0x15222
pushq $0x28
popq %rdi
callq 0x71b0
movq %rax, %r15
leaq 0x8607(%rip), %rsi      # 0x1d87d
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x7150
movb $0x1, %bpl
leaq 0x58(%rsp), %rsi
movq %r15, %rdi
callq 0x15514
xorl %ebp, %ebp
leaq 0x15462(%rip), %rsi     # 0x2a700
leaq -0xbadb(%rip), %rdx     # 0x97ca
movq %r15, %rdi
callq 0x75d0
jmp 0x15389
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x15099
jmp 0x152d6
cmpq %r14, (%r14)
je 0x15340
movq %r14, %rdi
callq 0x15568
movq 0x10(%rsp), %rax
movq %rax, (%rbx)
leaq 0x18(%rsp), %rdi
callq 0x7688
movq %rbx, %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x28
popq %rdi
callq 0x71b0
movq %rax, %r15
leaq 0x8560(%rip), %rsi      # 0x1d867
leaq 0x78(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x7150
movb $0x1, %bpl
leaq 0x78(%rsp), %rsi
movq %r15, %rdi
callq 0x15514
xorl %ebp, %ebp
leaq 0x153d1(%rip), %rsi     # 0x2a700
leaq -0xbb6c(%rip), %rdx     # 0x97ca
movq %r15, %rdi
callq 0x75d0
jmp 0x15389
pushq $0x28
popq %rdi
callq 0x71b0
movq %rax, %r15
leaq 0x852b(%rip), %rsi      # 0x1d87d
leaq 0x38(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x7150
movb $0x1, %bpl
leaq 0x38(%rsp), %rsi
movq %r15, %rdi
callq 0x15514
xorl %ebp, %ebp
leaq 0x15386(%rip), %rsi     # 0x2a700
leaq -0xbbb7(%rip), %rdx     # 0x97ca
movq %r15, %rdi
callq 0x75d0
movq %rdx, %rbx
movq %rax, %r14
leaq 0x38(%rsp), %rdi
jmp 0x153df
jmp 0x153eb
jmp 0x1539a
movq %rdx, %rbx
movq %rax, %r14
jmp 0x15429
movq %rdx, %rbx
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x7688
testb %bpl, %bpl
jne 0x153c2
jmp 0x15433
movq %rdx, %rbx
movq %rax, %r14
movq %r15, %rdi
callq 0x7250
jmp 0x15433
movq %rdx, %rbx
movq %rax, %r14
jmp 0x15433
movq %rdx, %rbx
movq %rax, %r14
leaq 0x58(%rsp), %rdi
callq 0x7688
testb %bpl, %bpl
jne 0x153f1
jmp 0x15419
movq %rdx, %rbx
movq %rax, %r14
movq %r15, %rdi
callq 0x7250
jmp 0x15419
movq %rdx, %rbx
movq %rax, %r14
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x15419
movq (%rdi), %rax
callq *0x10(%rax)
jmp 0x15419
movq %rdx, %rbx
movq %rax, %r14
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x15429
movq (%rdi), %rax
callq *0x10(%rax)
leaq 0x18(%rsp), %rdi
callq 0x7688
movq %r14, %rdi
testl %ebx, %ebx
jns 0x1543f
callq 0x7430
callq 0x7600