// File: /workspace/github_cpp_makefile_star2_O2/AshOlogn[P]ash-language-interpreter/src/errors.cpp
// Function: StaticTypeError::what() const
const char* StaticTypeError::what() const throw() {

  std::string str = "";
  
  if(startLineNumber == endLineNumber) {
    str.append("StaticTypeError error on line ");
    str.append(std::to_string(startLineNumber));
  } else {
    str.append("StaticTypeError from line ");
    str.append(std::to_string(startLineNumber));
    str.append(" to line ");
    str.append(std::to_string(endLineNumber));
  }
  
  str.append("\n");
  str.append(context);
  
  //now append customized message if isCustomMessage
  if(isCustomMessage) {
    str.append(customMessage);

  } else {

    str.append("The ");
    str.append(operation);
    str.append(" operation does not take ");
  
    if(isBinary) {
      str.append(toStringParseDataType(arg1));
      str.append(" and ");
      str.append(toStringParseDataType(arg2));
      str.append(" type arguments");
    } else {
      str.append(toStringParseDataType(arg1));
      str.append(" type argument");    
    }
  }
  
  return copyString(str.c_str());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
leaq 0x16f8e(%rip), %rsi     # 0x1c035
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0x40a0
movl 0x28(%rbx), %eax
cmpl 0x2c(%rbx), %eax
jne 0x50e7
leaq 0x16fcf(%rip), %rsi     # 0x1c092
leaq -0x28(%rbp), %rdi
callq 0x4360
movl 0x28(%rbx), %esi
leaq -0x48(%rbp), %rdi
callq 0x54e9
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x4370
jmp 0x5142
leaq 0x16fc3(%rip), %rsi     # 0x1c0b1
leaq -0x28(%rbp), %rdi
callq 0x4360
movl 0x28(%rbx), %esi
leaq -0x48(%rbp), %rdi
callq 0x54e9
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x4370
leaq -0x48(%rbp), %rdi
callq 0x40e0
leaq 0x16fac(%rip), %rsi     # 0x1c0cc
leaq -0x28(%rbp), %rdi
callq 0x4360
movl 0x2c(%rbx), %esi
leaq -0x48(%rbp), %rdi
callq 0x54e9
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x4370
leaq -0x48(%rbp), %rdi
callq 0x40e0
leaq 0x1be0a(%rip), %rsi     # 0x20f5c
leaq -0x28(%rbp), %rdi
callq 0x4360
movq 0x10(%rbx), %rsi
leaq -0x28(%rbp), %rdi
callq 0x4360
cmpb $0x1, 0x9(%rbx)
jne 0x5180
movq 0x20(%rbx), %rsi
leaq -0x28(%rbp), %rdi
callq 0x4360
jmp 0x5215
leaq 0x16f4f(%rip), %rsi     # 0x1c0d6
leaq -0x28(%rbp), %rdi
callq 0x4360
movq 0x18(%rbx), %rsi
leaq -0x28(%rbp), %rdi
callq 0x4360
leaq 0x16f37(%rip), %rsi     # 0x1c0db
leaq -0x28(%rbp), %rdi
callq 0x4360
movl 0x30(%rbx), %edi
cmpb $0x1, 0x8(%rbx)
jne 0x51f4
callq 0x730e
leaq -0x28(%rbp), %rdi
movq %rax, %rsi
callq 0x4360
leaq 0x16f27(%rip), %rsi     # 0x1c0f5
leaq -0x28(%rbp), %rdi
callq 0x4360
movl 0x34(%rbx), %edi
callq 0x730e
leaq -0x28(%rbp), %rdi
movq %rax, %rsi
callq 0x4360
leaq 0x16f09(%rip), %rsi     # 0x1c0fb
jmp 0x520c
callq 0x730e
leaq -0x28(%rbp), %rdi
movq %rax, %rsi
callq 0x4360
leaq 0x16eff(%rip), %rsi     # 0x1c10b
leaq -0x28(%rbp), %rdi
callq 0x4360
movq -0x28(%rbp), %rdi
callq 0x152e4
movq %rax, %rbx
leaq -0x28(%rbp), %rdi
callq 0x40e0
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %rbp
retq
jmp 0x523a
jmp 0x5251
jmp 0x523a
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
callq 0x40e0
jmp 0x5254
jmp 0x5251
jmp 0x5251
movq %rax, %rbx
jmp 0x525d
movq %rax, %rbx
leaq -0x28(%rbp), %rdi
callq 0x40e0
movq %rbx, %rdi
callq 0x4230
nop