// File: 0x0584[P]scmin-plus/include/token.hpp
// Function: token::operator std::shared_ptr<sexpr>() const
operator sexpr_t() const {
        if (type == tok_num_or_symb) {
            bool redix = false;
            bool flag = true;

            if (s == "+" || s == "-") return symb(s);
            for (auto i = 0u; i < s.length(); i++) {
                if (s[i] == '+' or s[i] == '-') {
                    if (i == 0) continue;
                    else {flag = false; break;}
                } else if (not isdigit(s[i])) {
                    flag = false;
                    break;
                } else if (s[i] == '.') {
                    if (not redix) redix = true;
                    else {flag = false; break;}
                }
            }

            if (flag) return num(stod(s));
            else return s == "nil" ? nil() : symb(s);
        } else if (type == tok_str) {
            return str(s);
        }
        return nil();
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x30(%rbp)
movq %rdi, %rax
movq %rax, -0x28(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpl $0x3, 0x7c(%rax)
jne 0x1b9ab
movq -0x20(%rbp), %rdi
movb $0x0, -0x11(%rbp)
movb $0x1, -0x12(%rbp)
addq $0x58, %rdi
leaq 0x5f04(%rip), %rsi      # 0x21748
callq 0x10e20
testb $0x1, %al
jne 0x1b867
movq -0x20(%rbp), %rdi
addq $0x58, %rdi
leaq 0x5ef2(%rip), %rsi      # 0x2174e
callq 0x10e20
testb $0x1, %al
jne 0x1b867
jmp 0x1b87d
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x58, %rsi
callq 0x7920
jmp 0x1b9d3
movl $0x0, -0x18(%rbp)
movq -0x20(%rbp), %rdi
movl -0x18(%rbp), %eax
movq %rax, -0x38(%rbp)
addq $0x58, %rdi
callq 0x3420
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
jae 0x1b951
movq -0x20(%rbp), %rdi
addq $0x58, %rdi
movl -0x18(%rbp), %eax
movl %eax, %esi
callq 0x3330
movsbl (%rax), %eax
cmpl $0x2b, %eax
je 0x1b8dc
movq -0x20(%rbp), %rdi
addq $0x58, %rdi
movl -0x18(%rbp), %eax
movl %eax, %esi
callq 0x3330
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x1b8ea
cmpl $0x0, -0x18(%rbp)
jne 0x1b8e4
jmp 0x1b943
movb $0x0, -0x12(%rbp)
jmp 0x1b951
movq -0x20(%rbp), %rdi
addq $0x58, %rdi
movl -0x18(%rbp), %eax
movl %eax, %esi
callq 0x3330
movsbl (%rax), %edi
callq 0x32b0
cmpl $0x0, %eax
jne 0x1b90f
movb $0x0, -0x12(%rbp)
jmp 0x1b951
movq -0x20(%rbp), %rdi
addq $0x58, %rdi
movl -0x18(%rbp), %eax
movl %eax, %esi
callq 0x3330
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x1b93d
testb $0x1, -0x11(%rbp)
jne 0x1b935
movb $0x1, -0x11(%rbp)
jmp 0x1b93b
movb $0x0, -0x12(%rbp)
jmp 0x1b951
jmp 0x1b93d
jmp 0x1b93f
jmp 0x1b941
jmp 0x1b943
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x1b884
testb $0x1, -0x12(%rbp)
je 0x1b973
movq -0x20(%rbp), %rdi
addq $0x58, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1bb70
movq -0x30(%rbp), %rdi
callq 0x7990
jmp 0x1b9d3
movq -0x20(%rbp), %rdi
addq $0x58, %rdi
leaq 0x5bda(%rip), %rsi      # 0x2155c
callq 0x10e20
testb $0x1, %al
jne 0x1b98d
jmp 0x1b998
movq -0x30(%rbp), %rdi
callq 0x78f0
jmp 0x1b9a9
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x58, %rsi
callq 0x7920
jmp 0x1b9d3
movq -0x20(%rbp), %rax
cmpl $0x2, 0x7c(%rax)
jne 0x1b9c8
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x58, %rsi
callq 0x7950
jmp 0x1b9d3
jmp 0x1b9ca
movq -0x30(%rbp), %rdi
callq 0x78f0
movq -0x28(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)