// File: 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
subq $0x210, %rsp            # imm = 0x210
movq %rdi, -0x198(%rbp)
movq %rdi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
leaq 0xcc25(%rip), %rsi      # 0x2358a
callq 0x18b40
testb $0x1, %al
jne 0x1698a
movq -0x198(%rbp), %rdi
leaq 0xcc13(%rip), %rsi      # 0x2358f
callq 0x18b40
testb $0x1, %al
jne 0x1698a
jmp 0x16a3a
movl $0x8, %edi
callq 0x32b0
movq -0x198(%rbp), %rsi
movq %rax, -0x1a0(%rbp)
movb $0x1, -0x45(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x3140
jmp 0x169b1
leaq -0x38(%rbp), %rdi
callq 0x16850
movb %al, -0x1a1(%rbp)
jmp 0x169c2
movq -0x1a0(%rbp), %rdi
movb -0x1a1(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0x121f0
jmp 0x169dc
movq -0x1a0(%rbp), %rax
movb $0x0, -0x45(%rbp)
movq %rax, -0x18(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x31c0
jmp 0x17017
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16a1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x31c0
testb $0x1, -0x45(%rbp)
jne 0x16a24
jmp 0x16a35
movq -0x1a0(%rbp), %rdi
movl $0x8, %esi
callq 0x32c0
jmp 0x1702c
movq -0x198(%rbp), %rsi
leaq -0x68(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x3140
movq -0x1b0(%rbp), %rdi
callq 0x158b0
movb %al, -0x1a2(%rbp)
jmp 0x16a65
leaq -0x68(%rbp), %rdi
callq 0x31c0
movb -0x1a2(%rbp), %al
testb $0x1, %al
jne 0x16a7d
jmp 0x16b56
movl $0x8, %edi
callq 0x32b0
movq -0x198(%rbp), %rsi
movq %rax, -0x1b8(%rbp)
movb $0x1, -0x89(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x3140
jmp 0x16aaa
leaq -0x88(%rbp), %rdi
callq 0x15700
movl %eax, -0x1bc(%rbp)
jmp 0x16abe
movl -0x1bc(%rbp), %esi
movq -0x1b8(%rbp), %rdi
callq 0x117f0
jmp 0x16ad2
movq -0x1b8(%rbp), %rax
movb $0x0, -0x89(%rbp)
movq %rax, -0x18(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x31c0
jmp 0x17015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x31c0
jmp 0x1702c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16b35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x31c0
testb $0x1, -0x89(%rbp)
jne 0x16b40
jmp 0x16b51
movq -0x1b8(%rbp), %rdi
movl $0x8, %esi
callq 0x32c0
jmp 0x1702c
movq -0x198(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x3140
movq -0x1c8(%rbp), %rdi
callq 0x16270
movb %al, -0x1bd(%rbp)
jmp 0x16b84
leaq -0xb0(%rbp), %rdi
callq 0x31c0
movb -0x1bd(%rbp), %al
testb $0x1, %al
jne 0x16b9f
jmp 0x16c7b
movl $0x8, %edi
callq 0x32b0
movq -0x198(%rbp), %rsi
movq %rax, -0x1d0(%rbp)
movb $0x1, -0xd1(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x3140
jmp 0x16bcc
leaq -0xd0(%rbp), %rdi
callq 0x15cf0
movl %eax, -0x1d4(%rbp)
jmp 0x16be0
movl -0x1d4(%rbp), %esi
movq -0x1d0(%rbp), %rdi
callq 0x11920
jmp 0x16bf4
movq -0x1d0(%rbp), %rax
movb $0x0, -0xd1(%rbp)
movq %rax, -0x18(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x31c0
jmp 0x17013
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x31c0
jmp 0x1702c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x31c0
testb $0x1, -0xd1(%rbp)
jne 0x16c65
jmp 0x16c76
movq -0x1d0(%rbp), %rdi
movl $0x8, %esi
callq 0x32c0
jmp 0x1702c
movq -0x198(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3500
movsbl (%rax), %edi
callq 0x15580
testb $0x1, %al
jne 0x16c9c
jmp 0x16d48
movl $0x28, %edi
callq 0x32b0
movq -0x198(%rbp), %rsi
movq %rax, -0x1e0(%rbp)
movb $0x1, -0xf9(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x3140
jmp 0x16cc9
movq -0x1e0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x11960
jmp 0x16cde
movq -0x1e0(%rbp), %rax
movb $0x0, -0xf9(%rbp)
movq %rax, -0x18(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x31c0
jmp 0x17011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16d27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x31c0
testb $0x1, -0xf9(%rbp)
jne 0x16d32
jmp 0x16d43
movq -0x1e0(%rbp), %rdi
movl $0x28, %esi
callq 0x32c0
jmp 0x1702c
movq -0x198(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3500
movsbl (%rax), %edi
callq 0x155b0
testb $0x1, %al
jne 0x16d69
jmp 0x16e15
movl $0x28, %edi
callq 0x32b0
movq -0x198(%rbp), %rsi
movq %rax, -0x1e8(%rbp)
movb $0x1, -0x121(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x3140
jmp 0x16d96
movq -0x1e8(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x11830
jmp 0x16dab
movq -0x1e8(%rbp), %rax
movb $0x0, -0x121(%rbp)
movq %rax, -0x18(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x31c0
jmp 0x1700f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16df4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x31c0
testb $0x1, -0x121(%rbp)
jne 0x16dff
jmp 0x16e10
movq -0x1e8(%rbp), %rdi
movl $0x28, %esi
callq 0x32c0
jmp 0x1702c
movq -0x198(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x18b70
movss %xmm0, -0x1ec(%rbp)
jmp 0x16e32
movss -0x1ec(%rbp), %xmm0
movss %xmm0, -0x134(%rbp)
movl $0x8, %edi
callq 0x32b0
movq %rax, -0x1f8(%rbp)
jmp 0x16e55
movq -0x1f8(%rbp), %rdi
movss -0x134(%rbp), %xmm0
callq 0x122b0
jmp 0x16e6b
movq -0x1f8(%rbp), %rax
movq %rax, -0x18(%rbp)
jmp 0x1700d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16ea6
movq -0x1f8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x8, %esi
callq 0x32c0
movl -0x44(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1702c
movq -0x40(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0x3360
movq %rax, %rsi
leaq -0x148(%rbp), %rdi
callq 0x18bb0
movq -0x208(%rbp), %rdi
callq 0x3120
movl $0x30, %edi
callq 0x32b0
movq %rax, -0x200(%rbp)
jmp 0x16ef4
movq -0x198(%rbp), %rdx
movb $0x1, -0x189(%rbp)
leaq 0xc68c(%rip), %rsi      # 0x23595
leaq -0x188(%rbp), %rdi
callq 0x18c40
jmp 0x16f17
leaq 0xc685(%rip), %rdx      # 0x235a3
leaq -0x168(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x18bf0
jmp 0x16f33
movq -0x200(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x168(%rbp), %rsi
callq 0x12150
jmp 0x16f4c
movq -0x200(%rbp), %rax
movb $0x0, -0x189(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x31c0
leaq -0x188(%rbp), %rdi
callq 0x31c0
leaq -0x148(%rbp), %rdi
callq 0x3460
callq 0x3440
jmp 0x1701f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16ff8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16fda
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16fce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x31c0
leaq -0x188(%rbp), %rdi
callq 0x31c0
testb $0x1, -0x189(%rbp)
jne 0x16fe5
jmp 0x16ff6
movq -0x200(%rbp), %rdi
movl $0x30, %esi
callq 0x32c0
jmp 0x16ff8
leaq -0x148(%rbp), %rdi
callq 0x3460
callq 0x3440
jmp 0x1700b
jmp 0x1702c
jmp 0x1700f
jmp 0x17011
jmp 0x17013
jmp 0x17015
jmp 0x17017
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x210, %rsp            # imm = 0x210
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x3490
movq %rax, %rdi
callq 0x3d40
nopl (%rax)