// File: snuke[P]a/src/interpreter.cc
// Function: Interpreter::Defined(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>&)
Interpreter::Data Interpreter::Defined(State& cur) {
  if (*cur == ':') return Data();
  if (*cur == 'A') return Assign(cur);
  if (*cur == 'F') return Func(cur);
  if (*cur == 'I') return Input(cur);
  if (*cur == 'L') return Length(cur);
  if (*cur == 'M') return Format(cur);
  if (*cur == 'O') return Output(cur);
  if (*cur == 'P') return Paragraph(++cur);
  if (*cur == 'R') return Repeat(cur);
  if (*cur == 'S') return Str(cur);
  if (*cur == 'T') return SubStr(cur);
  if (*cur == 'U') return EditStr(cur);
  if (*cur == 'W') return Loop(cur);
  if (*cur == '?') return Cond(cur);
  if (isdigit(*cur)) return Num(cur);
  return Operate(cur);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x45b7
leaq -0x8(%rbp), %rdi
callq 0x3d40
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x41, %eax
jne 0x45de
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x4a30
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x46, %eax
jne 0x4605
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x4aa0
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x49, %eax
jne 0x462c
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x4b20
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x4c, %eax
jne 0x4653
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x4c40
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x4d, %eax
jne 0x467a
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x4cf0
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x4f, %eax
jne 0x46a1
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5010
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x50, %eax
jne 0x46d0
movq -0x18(%rbp), %rdi
callq 0x7090
movq -0x20(%rbp), %rdi
movq %rax, %rsi
callq 0x5070
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x52, %eax
jne 0x46f7
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x50e0
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x53, %eax
jne 0x471e
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x51d0
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x54, %eax
jne 0x4745
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x52c0
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x55, %eax
jne 0x476c
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x53b0
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x57, %eax
jne 0x4790
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5490
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %eax
cmpl $0x3f, %eax
jne 0x47b4
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5510
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x18(%rbp), %rdi
callq 0x66b0
movsbl (%rax), %edi
callq 0x3200
cmpl $0x0, %eax
je 0x47dd
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x55c0
movq %rax, -0x8(%rbp)
jmp 0x47ee
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x56f0
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)