// File: /workspace/github_cpp_makefile_star2_O3/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 0x19fe9(%rip), %al      # 0x3ba30
testb %al, %al
je 0x21ab2
movq 0x19fbe(%rip), %rcx     # 0x3ba10
movl (%r12), %esi
testq %rcx, %rcx
je 0x21a89
leaq 0x19fa6(%rip), %rax     # 0x3ba08
xorl %edx, %edx
cmpl %esi, 0x20(%rcx)
setl %dl
cmovgeq %rcx, %rax
movq 0x10(%rcx,%rdx,8), %rcx
testq %rcx, %rcx
jne 0x21a62
leaq 0x19f89(%rip), %rcx     # 0x3ba08
cmpq %rcx, %rax
je 0x21a89
cmpl 0x20(%rax), %esi
jge 0x21aa0
movq %r15, %rdi
callq 0x125d0
addq $0x4a8, %rsp            # imm = 0x4A8
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq 0x28(%rax), %rsi
movq 0x30(%rax), %rdx
movq %r15, %rdi
callq 0x12a70
jmp 0x21a91
leaq 0x19f77(%rip), %rdi     # 0x3ba30
callq 0x131b0
testl %eax, %eax
je 0x21a4b
leaq 0x6c(%rsp), %rsi
movl $0x0, (%rsi)
leaq 0x11c39(%rip), %rdx     # 0x3370d
leaq 0x70(%rsp), %rbx
movq %rbx, %rdi
callq 0x12790
leaq 0x98(%rsp), %r14
leaq 0x68(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x5667(%rip), %rdx      # 0x27162
movq %r14, %rdi
callq 0x120d0
leaq 0xc0(%rsp), %r14
leaq 0x64(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x580a(%rip), %rdx      # 0x27327
movq %r14, %rdi
callq 0x12790
leaq 0xe8(%rsp), %r14
leaq 0x60(%rsp), %rsi
movl $0x3, (%rsi)
leaq 0x11bd3(%rip), %rdx     # 0x33712
movq %r14, %rdi
callq 0x121c0
leaq 0x110(%rsp), %r14
leaq 0x5c(%rsp), %rsi
movl $0x4, (%rsi)
leaq 0x11bc3(%rip), %rdx     # 0x33724
movq %r14, %rdi
callq 0x12b10
leaq 0x138(%rsp), %r14
leaq 0x58(%rsp), %rsi
movl $0x5, (%rsi)
leaq 0x11ba3(%rip), %rdx     # 0x33726
movq %r14, %rdi
callq 0x12b10
leaq 0x160(%rsp), %r14
leaq 0x54(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x11984(%rip), %rdx     # 0x33529
movq %r14, %rdi
callq 0x12b10
leaq 0x188(%rsp), %r14
leaq 0x50(%rsp), %rsi
movl $0x7, (%rsi)
leaq 0x11b61(%rip), %rdx     # 0x33728
movq %r14, %rdi
callq 0x12b10
leaq 0x1b0(%rsp), %r14
leaq 0x4c(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x11b41(%rip), %rdx     # 0x3372a
movq %r14, %rdi
callq 0x12b10
leaq 0x1d8(%rsp), %r14
leaq 0x48(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x11b21(%rip), %rdx     # 0x3372c
movq %r14, %rdi
callq 0x12b10
leaq 0x200(%rsp), %r14
leaq 0x44(%rsp), %rsi
movl $0xa, (%rsi)
leaq 0x11b02(%rip), %rdx     # 0x3372f
movq %r14, %rdi
callq 0x12b10
leaq 0x228(%rsp), %r14
leaq 0x40(%rsp), %rsi
movl $0xb, (%rsi)
leaq 0x11adf(%rip), %rdx     # 0x3372e
movq %r14, %rdi
callq 0x12960
leaq 0x250(%rsp), %r14
leaq 0x3c(%rsp), %rsi
movl $0xc, (%rsi)
leaq 0x11ac0(%rip), %rdx     # 0x33731
movq %r14, %rdi
callq 0x12b10
leaq 0x278(%rsp), %r14
leaq 0x38(%rsp), %rsi
movl $0xd, (%rsi)
leaq 0x11aa0(%rip), %rdx     # 0x33733
movq %r14, %rdi
callq 0x12960
leaq 0x2a0(%rsp), %r14
leaq 0x34(%rsp), %rsi
movl $0xe, (%rsi)
leaq 0x1183b(%rip), %rdx     # 0x334f0
movq %r14, %rdi
callq 0x12b10
leaq 0x2c8(%rsp), %r14
leaq 0x30(%rsp), %rsi
movl $0xf, (%rsi)
leaq 0x11a5f(%rip), %rdx     # 0x33736
movq %r14, %rdi
callq 0x12960
leaq 0x2f0(%rsp), %r14
leaq 0x2c(%rsp), %rsi
movl $0x10, (%rsi)
leaq 0x11a44(%rip), %rdx     # 0x3373d
movq %r14, %rdi
callq 0x12790
leaq 0x318(%rsp), %r14
leaq 0x28(%rsp), %rsi
movl $0x11, (%rsi)
leaq 0x11a1e(%rip), %rdx     # 0x33739
movq %r14, %rdi
callq 0x13100
leaq 0x340(%rsp), %r14
leaq 0x24(%rsp), %rsi
movl $0x12, (%rsi)
leaq 0x569f(%rip), %rdx      # 0x273dc
movq %r14, %rdi
callq 0x130e0
leaq 0x368(%rsp), %r14
leaq 0x20(%rsp), %rsi
movl $0x13, (%rsi)
leaq 0x5648(%rip), %rdx      # 0x273a7
movq %r14, %rdi
callq 0x12390
leaq 0x390(%rsp), %r14
leaq 0x1c(%rsp), %rsi
movl $0x14, (%rsi)
leaq 0x5633(%rip), %rdx      # 0x273b4
movq %r14, %rdi
callq 0x12960
leaq 0x3b8(%rsp), %r14
leaq 0x18(%rsp), %rsi
movl $0x15, (%rsi)
leaq 0x53f4(%rip), %rdx      # 0x27197
movq %r14, %rdi
callq 0x12960
leaq 0x3e0(%rsp), %r14
leaq 0x14(%rsp), %rsi
movl $0x16, (%rsi)
leaq 0x5610(%rip), %rdx      # 0x273d5
movq %r14, %rdi
callq 0x12560
leaq 0x408(%rsp), %r14
leaq 0x10(%rsp), %rsi
movl $0x17, (%rsi)
leaq 0x55d0(%rip), %rdx      # 0x273b7
movq %r14, %rdi
callq 0x12390
leaq 0x430(%rsp), %r14
leaq 0xc(%rsp), %rsi
movl $0x18, (%rsi)
leaq 0x1191d(%rip), %rdx     # 0x33726
movq %r14, %rdi
callq 0x12b10
leaq 0x458(%rsp), %r14
leaq 0x8(%rsp), %rsi
movl $0x19, (%rsi)
leaq 0x11917(%rip), %rdx     # 0x33742
movq %r14, %rdi
callq 0x120d0
leaq 0x480(%rsp), %r14
leaq 0x4(%rsp), %rsi
movl $0x1a, (%rsi)
leaq 0x53ee(%rip), %rdx      # 0x2723b
movq %r14, %rdi
callq 0x12560
leaq 0x19ba4(%rip), %rdi     # 0x3ba00
leaq 0x70(%rsp), %rsi
leaq 0x3(%rsp), %rcx
leaq 0x2(%rsp), %r8
movl $0x1b, %edx
callq 0x12850
movq $-0x438, %rbx           # imm = 0xFBC8
leaq 0x498(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x21e98
movq (%r14), %rsi
incq %rsi
callq 0x12990
addq $-0x28, %r14
addq $0x28, %rbx
jne 0x21e84
movq 0x1902f(%rip), %rdi     # 0x3aed8
leaq 0x19b50(%rip), %rsi     # 0x3ba00
leaq 0x19af1(%rip), %rdx     # 0x3b9a8
callq 0x127a0
leaq 0x19b6d(%rip), %rdi     # 0x3ba30
callq 0x12590
jmp 0x21a4b
movq %rax, %r15
leaq 0x4a8(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x13613
movb $0x1, %al
jmp 0x21f1d
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
jmp 0x21f18
movq %rax, %r15
xorl %eax, %eax
cmpq %r14, %rbx
sete %cl
testb %al, %al
jne 0x21f53
testb %cl, %cl
jne 0x21f53
addq $-0x10, %r14
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x21f43
movq (%r14), %rsi
incq %rsi
callq 0x12990
leaq -0x28(%r14), %rax
addq $-0x18, %r14
cmpq %rbx, %r14
movq %rax, %r14
jne 0x21f2f
leaq 0x19ad6(%rip), %rdi     # 0x3ba30
callq 0x12570
movq %r15, %rdi
callq 0x13110
movq %rax, %r15
jmp 0x21f53