// File: /workspace/github_cpp_makefile_star2_O2/BlinfoldKing[P]lisval/src/lib/parser.cpp
// Function: createSingularToken(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Token* createSingularToken(string s) {
	Token* t = NULL;
	if (s == "true" || s == "false") {
		t = new Boolean(stringToBool(s));
	} else if (isUnaryOperator(s)) {
		t = new UnaryOperator(stringToUnaryOperator(s));
	} else if (isBinaryOperator(s)) {
		t = new BinaryOperator(stringToBinaryOperator(s));
	} else if (isLowercase(s[0])) {
		t = new Atom(s);
	} else if (isUppercase(s[0])) {
		t = new Variable(s);
	} else {
		try {
			string::size_type sz;
			float x = std::stof (s, &sz);

			t = new Number(x);
		} catch (std::invalid_argument e) {
            return new Error("syntax error: \"" + s + "\"", NULL);
		}
	}


	return t;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movq %rdi, %r14
leaq 0x3a86(%rip), %rsi      # 0xc4b5
callq 0x9969
testb %al, %al
jne 0x8a4b
leaq 0x3a7b(%rip), %rsi      # 0xc4ba
movq %r14, %rdi
callq 0x9969
testb %al, %al
je 0x8a96
pushq $0x8
popq %rdi
callq 0x3200
movq %rax, %rbx
leaq -0x150(%rbp), %rdi
movq %r14, %rsi
callq 0x3290
leaq -0x150(%rbp), %r14
movq %r14, %rdi
callq 0x89cd
movl $0x7, (%rbx)
movb %al, 0x4(%rbx)
movq %r14, %rdi
callq 0x3140
movq %rbx, %rax
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq -0x130(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3290
movq %rbx, %rdi
callq 0x835f
movl %eax, %ebx
leaq -0x130(%rbp), %rdi
callq 0x3140
testb %bl, %bl
je 0x8afa
pushq $0x8
popq %rdi
callq 0x3200
movq %rax, %rbx
leaq -0xf0(%rbp), %rdi
movq %r14, %rsi
callq 0x3290
leaq -0xf0(%rbp), %rdi
callq 0x8295
movl $0x4, (%rbx)
movl %eax, 0x4(%rbx)
leaq -0xf0(%rbp), %rdi
jmp 0x8a80
leaq -0x110(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3290
movq %rbx, %rdi
callq 0x87c6
movl %eax, %ebx
leaq -0x110(%rbp), %rdi
callq 0x3140
testb %bl, %bl
je 0x8b61
pushq $0x8
popq %rdi
callq 0x3200
movq %rax, %rbx
leaq -0xd0(%rbp), %rdi
movq %r14, %rsi
callq 0x3290
leaq -0xd0(%rbp), %rdi
callq 0x85c4
movl $0x5, (%rbx)
movl %eax, 0x4(%rbx)
leaq -0xd0(%rbp), %rdi
jmp 0x8a80
movq (%r14), %rax
movb (%rax), %al
leal -0x61(%rax), %ecx
cmpb $0x19, %cl
ja 0x8ba3
pushq $0x28
popq %rdi
callq 0x3200
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
movq %r14, %rsi
callq 0x3290
leaq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x74d4
leaq -0xb0(%rbp), %rdi
jmp 0x8a80
addb $-0x41, %al
cmpb $0x19, %al
ja 0x8bde
pushq $0x28
popq %rdi
callq 0x3200
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
movq %r14, %rsi
callq 0x3290
leaq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x749c
leaq -0x90(%rbp), %rdi
jmp 0x8a80
leaq -0x50(%rbp), %rsi
movq %r14, %rdi
callq 0x9979
movss %xmm0, -0x1c(%rbp)
pushq $0x8
popq %rdi
callq 0x3200
movq %rax, %rbx
movl $0x2, (%rax)
movss -0x1c(%rbp), %xmm0
movss %xmm0, 0x4(%rax)
jmp 0x8a85
movq %rax, %r15
leaq -0x90(%rbp), %rdi
jmp 0x8c2a
jmp 0x8d08
movq %rax, %r15
leaq -0xb0(%rbp), %rdi
callq 0x3140
jmp 0x8d0b
movq %rax, %r15
cmpl $0x1, %edx
jne 0x8d5b
movq %r15, %rdi
callq 0x3270
leaq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x9998
movq %r15, %rdi
callq 0x3110
pushq $0x30
popq %rdi
callq 0x3200
movq %rax, %rbx
leaq 0x3852(%rip), %rsi      # 0xc4c0
leaq -0x50(%rbp), %rdi
movq %r14, %rdx
callq 0x99e4
leaq 0x384d(%rip), %rdx      # 0xc4ce
leaq -0x70(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x99bb
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x76a6
leaq -0x70(%rbp), %rdi
callq 0x3140
leaq -0x50(%rbp), %rdi
callq 0x3140
leaq -0x30(%rbp), %rdi
callq 0x3300
callq 0x32f0
jmp 0x8a85
movq %rax, %r15
leaq -0x70(%rbp), %rdi
callq 0x3140
jmp 0x8cd2
movq %rax, %r15
leaq -0x50(%rbp), %rdi
callq 0x3140
jmp 0x8ce0
movq %rax, %r15
pushq $0x30
popq %rsi
movq %rbx, %rdi
callq 0x3210
jmp 0x8cf0
movq %rax, %r15
leaq -0x30(%rbp), %rdi
callq 0x3300
callq 0x32f0
jmp 0x8d5b
movq %rax, %rdi
callq 0x3880
movq %rax, %r15
pushq $0x28
jmp 0x8d52
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
jmp 0x8d27
jmp 0x8d4d
movq %rax, %r15
leaq -0xf0(%rbp), %rdi
callq 0x3140
jmp 0x8d50
movq %rax, %r15
leaq -0x110(%rbp), %rdi
jmp 0x8d46
jmp 0x8d4d
movq %rax, %r15
leaq -0x130(%rbp), %rdi
callq 0x3140
jmp 0x8d5b
movq %rax, %r15
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x3210
movq %r15, %rdi
callq 0x3320