// File: /workspace/github_cpp_makefile_star2_O2/hyrise[P]sql-parser/src/util/sqlhelper.cpp
// Function: hsql::operator<<(std::ostream&, hsql::OperatorType const&)
std::ostream& operator<<(std::ostream& os, const OperatorType& op) {
  static const std::map<const OperatorType, const std::string> operatorToToken = {
      {kOpNone, "None"},     {kOpBetween, "BETWEEN"},
      {kOpCase, "CASE"},     {kOpCaseListElement, "CASE LIST ELEMENT"},
      {kOpPlus, "+"},        {kOpMinus, "-"},
      {kOpAsterisk, "*"},    {kOpSlash, "/"},
      {kOpPercentage, "%"},  {kOpCaret, "^"},
      {kOpEquals, "="},      {kOpNotEquals, "!="},
      {kOpLess, "<"},        {kOpLessEq, "<="},
      {kOpGreater, ">"},     {kOpGreaterEq, ">="},
      {kOpLike, "LIKE"},     {kOpNotLike, "NOT LIKE"},
      {kOpILike, "ILIKE"},   {kOpAnd, "AND"},
      {kOpOr, "OR"},         {kOpIn, "IN"},
      {kOpConcat, "CONCAT"}, {kOpNot, "NOT"},
      {kOpUnaryMinus, "-"},  {kOpIsNull, "IS NULL"},
      {kOpExists, "EXISTS"}};

  const auto found = operatorToToken.find(op);
  if (found == operatorToToken.cend()) {
    return os << static_cast<uint64_t>(op);
  } else {
    return os << (*found).second;
  }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x4a8, %rsp            # imm = 0x4A8
movq %rsi, %r12
movq %rdi, %r15
movb 0x1ba5d(%rip), %al      # 0x3fdc8
testb %al, %al
je 0x243b6
leaq 0x1ba22(%rip), %rdi     # 0x3fd98
movq %r12, %rsi
callq 0x179e0
leaq 0x1ba1b(%rip), %rcx     # 0x3fda0
cmpq %rcx, %rax
je 0x2439b
addq $0x28, %rax
movq %r15, %rdi
movq %rax, %rsi
callq 0x16ae0
jmp 0x243a7
movl (%r12), %esi
movq %r15, %rdi
callq 0x16840
addq $0x4a8, %rsp            # imm = 0x4A8
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0x1ba0b(%rip), %rdi     # 0x3fdc8
callq 0x17860
testl %eax, %eax
je 0x2436f
leaq 0x6c(%rsp), %rsi
andl $0x0, (%rsi)
leaq 0x1231c(%rip), %rdx     # 0x366f1
leaq 0x70(%rsp), %rbx
movq %rbx, %rdi
callq 0x16a80
leaq 0x98(%rsp), %r14
leaq 0x68(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x5d66(%rip), %rdx      # 0x2a162
movq %r14, %rdi
callq 0x160d0
leaq 0xc0(%rsp), %r14
leaq 0x64(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x5f09(%rip), %rdx      # 0x2a327
movq %r14, %rdi
callq 0x16a80
leaq 0xe8(%rsp), %r14
leaq 0x60(%rsp), %rsi
movl $0x3, (%rsi)
leaq 0x122b6(%rip), %rdx     # 0x366f6
movq %r14, %rdi
callq 0x16240
leaq 0x110(%rsp), %r14
leaq 0x5c(%rsp), %rsi
movl $0x4, (%rsi)
leaq 0x122a6(%rip), %rdx     # 0x36708
movq %r14, %rdi
callq 0x16fb0
leaq 0x138(%rsp), %r14
leaq 0x58(%rsp), %rsi
movl $0x5, (%rsi)
leaq 0x12286(%rip), %rdx     # 0x3670a
movq %r14, %rdi
callq 0x16fb0
leaq 0x160(%rsp), %r14
leaq 0x54(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x12067(%rip), %rdx     # 0x3650d
movq %r14, %rdi
callq 0x16fb0
leaq 0x188(%rsp), %r14
leaq 0x50(%rsp), %rsi
movl $0x7, (%rsi)
leaq 0x12244(%rip), %rdx     # 0x3670c
movq %r14, %rdi
callq 0x16fb0
leaq 0x1b0(%rsp), %r14
leaq 0x4c(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x12224(%rip), %rdx     # 0x3670e
movq %r14, %rdi
callq 0x16fb0
leaq 0x1d8(%rsp), %r14
leaq 0x48(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x12204(%rip), %rdx     # 0x36710
movq %r14, %rdi
callq 0x16fb0
leaq 0x200(%rsp), %r14
leaq 0x44(%rsp), %rsi
movl $0xa, (%rsi)
leaq 0x121e5(%rip), %rdx     # 0x36713
movq %r14, %rdi
callq 0x16fb0
leaq 0x228(%rsp), %r14
leaq 0x40(%rsp), %rsi
movl $0xb, (%rsi)
leaq 0x121c2(%rip), %rdx     # 0x36712
movq %r14, %rdi
callq 0x16d10
leaq 0x250(%rsp), %r14
leaq 0x3c(%rsp), %rsi
movl $0xc, (%rsi)
leaq 0x121a3(%rip), %rdx     # 0x36715
movq %r14, %rdi
callq 0x16fb0
leaq 0x278(%rsp), %r14
leaq 0x38(%rsp), %rsi
movl $0xd, (%rsi)
leaq 0x12183(%rip), %rdx     # 0x36717
movq %r14, %rdi
callq 0x16d10
leaq 0x2a0(%rsp), %r14
leaq 0x34(%rsp), %rsi
movl $0xe, (%rsi)
leaq 0x11f1e(%rip), %rdx     # 0x364d4
movq %r14, %rdi
callq 0x16fb0
leaq 0x2c8(%rsp), %r14
leaq 0x30(%rsp), %rsi
movl $0xf, (%rsi)
leaq 0x12142(%rip), %rdx     # 0x3671a
movq %r14, %rdi
callq 0x16d10
leaq 0x2f0(%rsp), %r14
leaq 0x2c(%rsp), %rsi
movl $0x10, (%rsi)
leaq 0x12127(%rip), %rdx     # 0x36721
movq %r14, %rdi
callq 0x16a80
leaq 0x318(%rsp), %r14
leaq 0x28(%rsp), %rsi
movl $0x11, (%rsi)
leaq 0x12101(%rip), %rdx     # 0x3671d
movq %r14, %rdi
callq 0x17780
leaq 0x340(%rsp), %r14
leaq 0x24(%rsp), %rsi
movl $0x12, (%rsi)
leaq 0x5d9e(%rip), %rdx      # 0x2a3dc
movq %r14, %rdi
callq 0x17750
leaq 0x368(%rsp), %r14
leaq 0x20(%rsp), %rsi
movl $0x13, (%rsi)
leaq 0x5d47(%rip), %rdx      # 0x2a3a7
movq %r14, %rdi
callq 0x164e0
leaq 0x390(%rsp), %r14
leaq 0x1c(%rsp), %rsi
movl $0x14, (%rsi)
leaq 0x5d32(%rip), %rdx      # 0x2a3b4
movq %r14, %rdi
callq 0x16d10
leaq 0x3b8(%rsp), %r14
leaq 0x18(%rsp), %rsi
movl $0x15, (%rsi)
leaq 0x5af3(%rip), %rdx      # 0x2a197
movq %r14, %rdi
callq 0x16d10
leaq 0x3e0(%rsp), %r14
leaq 0x14(%rsp), %rsi
movl $0x16, (%rsi)
leaq 0x5d0f(%rip), %rdx      # 0x2a3d5
movq %r14, %rdi
callq 0x167b0
leaq 0x408(%rsp), %r14
leaq 0x10(%rsp), %rsi
movl $0x17, (%rsi)
leaq 0x5ccf(%rip), %rdx      # 0x2a3b7
movq %r14, %rdi
callq 0x164e0
leaq 0x430(%rsp), %r14
leaq 0xc(%rsp), %rsi
movl $0x18, (%rsi)
leaq 0x12000(%rip), %rdx     # 0x3670a
movq %r14, %rdi
callq 0x16fb0
leaq 0x458(%rsp), %r14
leaq 0x8(%rsp), %rsi
movl $0x19, (%rsi)
leaq 0x11ffa(%rip), %rdx     # 0x36726
movq %r14, %rdi
callq 0x160d0
leaq 0x480(%rsp), %r14
leaq 0x4(%rsp), %rsi
movl $0x1a, (%rsi)
leaq 0x5aed(%rip), %rdx      # 0x2a23b
movq %r14, %rdi
callq 0x167b0
leaq 0x1b63b(%rip), %rdi     # 0x3fd98
leaq 0x70(%rsp), %rsi
pushq $0x1b
popq %rdx
leaq 0x3(%rsp), %rcx
leaq 0x2(%rsp), %r8
callq 0x16bb0
movl $0x418, %ebx            # imm = 0x418
leaq (%rsp,%rbx), %rdi
addq $0x70, %rdi
callq 0x164d0
addq $-0x28, %rbx
cmpq $-0x20, %rbx
jne 0x24779
movq 0x1a739(%rip), %rdi     # 0x3eed0
leaq 0x1b5fa(%rip), %rsi     # 0x3fd98
leaq 0x1b59b(%rip), %rdx     # 0x3fd40
callq 0x16ab0
leaq 0x1b617(%rip), %rdi     # 0x3fdc8
callq 0x167e0
jmp 0x2436f
movq %rax, %r15
movl $0x418, %r12d           # imm = 0x418
leaq (%rsp,%r12), %rdi
addq $0x70, %rdi
callq 0x164d0
addq $-0x28, %r12
cmpq $-0x20, %r12
jne 0x247c4
movb $0x1, %al
jmp 0x24816
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
jmp 0x24811
movq %rax, %r15
xorl %eax, %eax
cmpq %r14, %rbx
sete %cl
testb %al, %al
jne 0x2483c
testb %cl, %cl
jne 0x2483c
leaq -0x28(%r14), %r12
addq $-0x20, %r14
movq %r14, %rdi
callq 0x164d0
movq %r12, %r14
cmpq %rbx, %r12
jne 0x24824
leaq 0x1b585(%rip), %rdi     # 0x3fdc8
callq 0x167c0
movq %r15, %rdi
callq 0x17790
movq %rax, %r15
jmp 0x2483c