// File: AshOlogn[P]ash-language-interpreter/src/errors.cpp
// Function: ParseSyntaxError::what() const
const char* ParseSyntaxError::what() const throw() {
  
  std::string str = "";
  
  if(startLineNumber == endLineNumber) {
    str.append("ParseSyntaxError error on line ");
    str.append(std::to_string(startLineNumber));
  } else {
    str.append("ParseSyntaxError error from line ");
    str.append(std::to_string(startLineNumber));
    str.append(" to ");
    str.append(std::to_string(endLineNumber));
  }
  
  str.append(":\n\t");
  str.append(context);

  if(lexeme != NULL) {
    str.append("with element ");
    str.append(lexeme);
    str.append("\n");
  }
  
  str.append(message);

  return copyString(str.c_str());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xb0(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x4430
movq -0xa8(%rbp), %rdx
leaq 0x38c2d(%rip), %rsi     # 0x3f035
leaq -0x28(%rbp), %rdi
callq 0x4350
jmp 0x6413
leaq -0x29(%rbp), %rdi
callq 0x4290
movq -0xb0(%rbp), %rcx
movl 0x20(%rcx), %eax
cmpl 0x24(%rcx), %eax
jne 0x64b8
leaq 0x38c0c(%rip), %rsi     # 0x3f042
leaq -0x28(%rbp), %rdi
callq 0x4460
jmp 0x6441
movq -0xb0(%rbp), %rax
movl 0x20(%rax), %esi
leaq -0x60(%rbp), %rdi
callq 0x6e40
jmp 0x6456
leaq -0x28(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x4470
jmp 0x6465
leaq -0x60(%rbp), %rdi
callq 0x4170
jmp 0x6578
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x4290
jmp 0x663c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x6633
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x4170
jmp 0x6633
leaq 0x38ba3(%rip), %rsi     # 0x3f062
leaq -0x28(%rbp), %rdi
callq 0x4460
jmp 0x64ca
movq -0xb0(%rbp), %rax
movl 0x20(%rax), %esi
leaq -0x80(%rbp), %rdi
callq 0x6e40
jmp 0x64df
leaq -0x28(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x4470
jmp 0x64ee
leaq -0x80(%rbp), %rdi
callq 0x4170
leaq 0x3e490(%rip), %rsi     # 0x4498e
leaq -0x28(%rbp), %rdi
callq 0x4460
jmp 0x6509
movq -0xb0(%rbp), %rax
movl 0x24(%rax), %esi
leaq -0xa0(%rbp), %rdi
callq 0x6e40
jmp 0x6521
leaq -0x28(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x4470
jmp 0x6533
leaq -0xa0(%rbp), %rdi
callq 0x4170
jmp 0x6578
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x4170
jmp 0x6633
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x4170
jmp 0x6633
leaq 0x38ab3(%rip), %rsi     # 0x3f032
leaq -0x28(%rbp), %rdi
callq 0x4460
jmp 0x658a
movq -0xb0(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x4460
jmp 0x65a0
movq -0xb0(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x65ea
leaq 0x38acf(%rip), %rsi     # 0x3f084
leaq -0x28(%rbp), %rdi
callq 0x4460
jmp 0x65c0
movq -0xb0(%rbp), %rax
movq 0x10(%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x4460
jmp 0x65d6
leaq 0x3df47(%rip), %rsi     # 0x44524
leaq -0x28(%rbp), %rdi
callq 0x4460
jmp 0x65e8
jmp 0x65ea
movq -0xb0(%rbp), %rax
movq 0x18(%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x4460
jmp 0x6600
leaq -0x28(%rbp), %rdi
callq 0x40e0
movq %rax, %rdi
callq 0x2fb10
movq %rax, -0xb8(%rbp)
jmp 0x661a
leaq -0x28(%rbp), %rdi
callq 0x4170
movq -0xb8(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0x4170
movq -0x38(%rbp), %rdi
callq 0x42e0
nopw %cs:(%rax,%rax)