LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: hyrise[P]sql-parser/src/sql/CreateStatement.cpp
// Function: hsql::operator<<(std::ostream&, hsql::ConstraintType)
std::ostream& operator<<(std::ostream& os, const ConstraintType constraint_type) {
  switch (constraint_type) {
    case ConstraintType::Null:
      os << "NULL";
      break;
    case ConstraintType::NotNull:
      os << "NOT NULL";
      break;
    case ConstraintType::ForeignKey:
      os << "FOREIGN KEY";
      break;
    case ConstraintType::PrimaryKey:
      os << "PRIMARY KEY";
      break;
    case ConstraintType::Unique:
      os << "UNIQUE";
      break;
  }
  return os;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movl %esi, 0xc(%rsp)
movl 0xc(%rsp), %eax
movq %rax, (%rsp)
subq $0x4, %rax
ja 0x622ac
movq (%rsp), %rax
leaq 0x1c1da(%rip), %rcx     # 0x7e420
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x10(%rsp), %rdi
leaq 0x1c81e(%rip), %rsi     # 0x7ea79
callq 0x377a0
jmp 0x622ac
movq 0x10(%rsp), %rdi
leaq 0x1c236(%rip), %rsi     # 0x7e4a4
callq 0x377a0
jmp 0x622ac
movq 0x10(%rsp), %rdi
leaq 0x1c22c(%rip), %rsi     # 0x7e4ad
callq 0x377a0
jmp 0x622ac
movq 0x10(%rsp), %rdi
leaq 0x1c225(%rip), %rsi     # 0x7e4b9
callq 0x377a0
jmp 0x622ac
movq 0x10(%rsp), %rdi
leaq 0x1056b(%rip), %rsi     # 0x72812
callq 0x377a0
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/CreateStatement.cpp
// Function: hsql::ReferencesSpecification::~ReferencesSpecification()
ReferencesSpecification::~ReferencesSpecification() {
  free(schema);
  free(table);
  if (columns) {
    for (auto* column : *columns) {
      free(column);
    }
    delete columns;
  }
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
movq (%rax), %rdi
callq 0x38090
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x38090
movq 0x8(%rsp), %rax
cmpq $0x0, 0x10(%rax)
je 0x6250e
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
callq 0x37d80
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
callq 0x399b0
movq %rax, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x392c0
testb $0x1, %al
jne 0x624ba
jmp 0x624e2
leaq 0x20(%rsp), %rdi
callq 0x38ff0
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0x38090
leaq 0x20(%rsp), %rdi
callq 0x36eb0
jmp 0x624a5
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x6250c
movq (%rsp), %rdi
callq 0x37bf0
movq (%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x6250e
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/CreateStatement.cpp
// Function: hsql::ColumnDefinition::~ColumnDefinition()
ColumnDefinition::~ColumnDefinition() {
  free(name);
  delete column_constraints;
  if (references) {
    for (auto* ref : *references) {
      delete ref;
    }
  }
  delete references;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x2a86e(%rip), %rcx     # 0x8cf98
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x10(%rax), %rdi
callq 0x38090
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x62767
movq 0x18(%rsp), %rdi
callq 0x38c20
movq 0x18(%rsp), %rdi
movl $0x38, %esi
callq 0x378a0
movq 0x10(%rsp), %rax
cmpq $0x0, 0x40(%rax)
je 0x62803
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
callq 0x35f00
movq %rax, 0x30(%rsp)
movq 0x38(%rsp), %rdi
callq 0x388d0
movq %rax, 0x28(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x35a50
testb $0x1, %al
jne 0x627b8
jmp 0x62801
leaq 0x30(%rsp), %rdi
callq 0x35460
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x627f3
movq 0x8(%rsp), %rdi
callq 0x39c10
movq 0x8(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x627f5
leaq 0x30(%rsp), %rdi
callq 0x35ab0
jmp 0x627a3
jmp 0x62803
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x6282d
movq (%rsp), %rdi
callq 0x354a0
movq (%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
movq 0x10(%rsp), %rdi
callq 0x364d0
addq $0x48, %rsp
retq
nopl (%rax)
// File: hyrise[P]sql-parser/src/sql/CreateStatement.cpp
// Function: hsql::ColumnDefinition::trySetNullableExplicit()
bool ColumnDefinition::trySetNullableExplicit() {
  if (column_constraints->count(ConstraintType::NotNull) || column_constraints->count(ConstraintType::PrimaryKey)) {
    if (column_constraints->count(ConstraintType::Null)) {
      return false;
    }
    nullable = false;
  }

  return true;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movq 0x8(%rax), %rdi
movl $0x1, 0x14(%rsp)
leaq 0x14(%rsp), %rsi
callq 0x37100
movq %rax, %rcx
movb $0x1, %al
cmpq $0x0, %rcx
movb %al, 0xb(%rsp)
jne 0x628cc
movq (%rsp), %rax
movq 0x8(%rax), %rdi
movl $0x3, 0x10(%rsp)
leaq 0x10(%rsp), %rsi
callq 0x37100
cmpq $0x0, %rax
setne %al
movb %al, 0xb(%rsp)
movb 0xb(%rsp), %al
testb $0x1, %al
jne 0x628d6
jmp 0x62905
movq (%rsp), %rax
movq 0x8(%rax), %rdi
movl $0x2, 0xc(%rsp)
leaq 0xc(%rsp), %rsi
callq 0x37100
cmpq $0x0, %rax
je 0x628fd
movb $0x0, 0x27(%rsp)
jmp 0x6290a
movq (%rsp), %rax
movb $0x0, 0x38(%rax)
movb $0x1, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/CreateStatement.cpp
// Function: hsql::CreateStatement::setColumnDefsAndConstraints(std::vector<hsql::TableElement*, std::allocator<hsql::TableElement*>>*)
void CreateStatement::setColumnDefsAndConstraints(std::vector<TableElement*>* tableElements) {
  columns = new std::vector<ColumnDefinition*>();
  tableConstraints = new std::vector<TableConstraint*>();

  for (auto tableElem : *tableElements) {
    if (auto* colDef = dynamic_cast<ColumnDefinition*>(tableElem)) {
      columns->emplace_back(colDef);
    } else if (auto* tableConstraint = dynamic_cast<TableConstraint*>(tableElem)) {
      tableConstraints->emplace_back(tableConstraint);
    }
  }
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x70(%rsp)
movq %rsi, 0x68(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x30(%rsp)
movl $0x18, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, 0x20(%rsp)
xorl %esi, %esi
movl $0x18, %edx
callq 0x362f0
movq 0x20(%rsp), %rdi
callq 0x36930
movq 0x20(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x50(%rax)
movl $0x18, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, 0x28(%rsp)
xorl %esi, %esi
movl $0x18, %edx
callq 0x362f0
movq 0x28(%rsp), %rdi
callq 0x39410
movq 0x28(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x58(%rax)
movq 0x68(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rdi
callq 0x36570
movq %rax, 0x58(%rsp)
movq 0x60(%rsp), %rdi
callq 0x35910
movq %rax, 0x50(%rsp)
leaq 0x58(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x353a0
testb $0x1, %al
jne 0x62e44
jmp 0x62f2a
leaq 0x58(%rsp), %rdi
callq 0x3a3c0
movq (%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x62e89
movq 0x18(%rsp), %rdi
movq 0x2a0fe(%rip), %rsi     # 0x8cf70
movq 0x2a0b7(%rip), %rdx     # 0x8cf30
xorl %eax, %eax
movl %eax, %ecx
callq 0x37e50
movq %rax, 0x10(%rsp)
jmp 0x62e92
xorl %eax, %eax
movq %rax, 0x10(%rsp)
jmp 0x62e92
movq 0x10(%rsp), %rax
movq %rax, 0x40(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0x62eb9
movq 0x30(%rsp), %rax
movq 0x50(%rax), %rdi
leaq 0x40(%rsp), %rsi
callq 0x35190
jmp 0x62f19
movq 0x48(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x62eeb
movq 0x8(%rsp), %rdi
movq 0x2a09b(%rip), %rsi     # 0x8cf70
movq 0x29fa4(%rip), %rdx     # 0x8ce80
xorl %eax, %eax
movl %eax, %ecx
callq 0x37e50
movq %rax, (%rsp)
jmp 0x62ef3
xorl %eax, %eax
movq %rax, (%rsp)
jmp 0x62ef3
movq (%rsp), %rax
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x38(%rsp)
je 0x62f17
movq 0x30(%rsp), %rax
movq 0x58(%rax), %rdi
leaq 0x38(%rsp), %rsi
callq 0x35270
jmp 0x62f19
jmp 0x62f1b
leaq 0x58(%rsp), %rdi
callq 0x38be0
jmp 0x62e2c
addq $0x78, %rsp
retq
nop
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::WindowDescription::~WindowDescription()
WindowDescription::~WindowDescription() {
  if (partitionList) {
    for (Expr* e : *partitionList) {
      delete e;
    }
    delete partitionList;
  }

  if (orderList) {
    for (OrderDescription* orderDescription : *orderList) {
      delete orderDescription;
    }
    delete orderList;
  }

  delete frameDescription;
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x281ce(%rip), %rcx     # 0x8ced8
addq $0x10, %rcx
movq %rcx, (%rax)
cmpq $0x0, 0x8(%rax)
je 0x64dc7
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
callq 0x36b30
movq %rax, 0x60(%rsp)
movq 0x68(%rsp), %rdi
callq 0x38740
movq %rax, 0x58(%rsp)
leaq 0x60(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x39fa0
testb $0x1, %al
jne 0x64d5d
jmp 0x64d98
leaq 0x60(%rsp), %rdi
callq 0x37b30
movq (%rax), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x20(%rsp)
cmpq $0x0, %rax
je 0x64d8a
movq 0x20(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x64d8c
leaq 0x60(%rsp), %rdi
callq 0x36f80
jmp 0x64d48
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x64dc5
movq 0x18(%rsp), %rdi
callq 0x39690
movq 0x18(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x64dc7
movq 0x28(%rsp), %rax
cmpq $0x0, 0x10(%rax)
je 0x64e82
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
callq 0x38350
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
callq 0x35890
movq %rax, 0x38(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x35d50
testb $0x1, %al
jne 0x64e18
jmp 0x64e53
leaq 0x40(%rsp), %rdi
callq 0x39680
movq (%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x64e45
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x64e47
leaq 0x40(%rsp), %rdi
callq 0x3a0b0
jmp 0x64e03
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x64e80
movq 0x8(%rsp), %rdi
callq 0x36990
movq 0x8(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x64e82
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x64e9f
movq (%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
addq $0x78, %rsp
retq
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::~Expr()
Expr::~Expr() {
  delete expr;
  delete expr2;
  delete select;
  delete windowDescription;

  free(name);
  free(table);
  free(alias);

  if (exprList) {
    for (Expr* e : *exprList) {
      delete e;
    }
    delete exprList;
  }
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x27f2e(%rip), %rcx     # 0x8cef8
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x10(%rax), %rax
movq %rax, 0x38(%rsp)
cmpq $0x0, %rax
je 0x64feb
movq 0x38(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x30(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x28(%rsp)
cmpq $0x0, %rax
je 0x6500a
movq 0x28(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x20(%rsp)
cmpq $0x0, %rax
je 0x65029
movq 0x20(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x30(%rsp), %rax
movq 0x98(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x6504b
movq 0x18(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x30(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x38090
movq 0x30(%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x38090
movq 0x30(%rsp), %rax
movq 0x40(%rax), %rdi
callq 0x38090
movq 0x30(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0x65130
movq 0x30(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rdi
callq 0x36b30
movq %rax, 0x50(%rsp)
movq 0x58(%rsp), %rdi
callq 0x38740
movq %rax, 0x48(%rsp)
leaq 0x50(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x39fa0
testb $0x1, %al
jne 0x650c6
jmp 0x65101
leaq 0x50(%rsp), %rdi
callq 0x37b30
movq (%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x650f3
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x650f5
leaq 0x50(%rsp), %rdi
callq 0x36f80
jmp 0x650b1
movq 0x30(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x6512e
movq 0x8(%rsp), %rdi
callq 0x39690
movq 0x8(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x65130
addq $0x68, %rsp
retq
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeOpUnary(hsql::OperatorType, hsql::Expr*)
Expr* Expr::makeOpUnary(OperatorType op, Expr* expr) {
  Expr* e = new Expr(kExprOperator);
  e->opType = op;
  e->expr = expr;
  e->expr2 = nullptr;
  return e;
}

// Assembly:
subq $0x38, %rsp
movl %edi, 0x34(%rsp)
movq %rsi, 0x28(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
movl $0xa, %esi
callq 0x3a360
jmp 0x651fe
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
movl 0x34(%rsp), %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x8c(%rax)
movq 0x28(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x20(%rsp), %rax
movq $0x0, 0x18(%rax)
movq 0x20(%rsp), %rax
addq $0x38, %rsp
retq
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x18(%rsp)
movl %eax, 0x14(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x18(%rsp), %rdi
callq 0x399c0
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeOpBinary(hsql::Expr*, hsql::OperatorType, hsql::Expr*)
Expr* Expr::makeOpBinary(Expr* expr1, OperatorType op, Expr* expr2) {
  Expr* e = new Expr(kExprOperator);
  e->opType = op;
  e->expr = expr1;
  e->expr2 = expr2;
  return e;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movl %esi, 0x2c(%rsp)
movq %rdx, 0x20(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, (%rsp)
movl $0xa, %esi
callq 0x3a360
jmp 0x652a2
movq (%rsp), %rax
movq %rax, 0x18(%rsp)
movl 0x2c(%rsp), %ecx
movq 0x18(%rsp), %rax
movl %ecx, 0x8c(%rax)
movq 0x30(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x20(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x18(%rsp), %rax
addq $0x38, %rsp
retq
movq (%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10(%rsp)
movl %eax, 0xc(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x10(%rsp), %rdi
callq 0x399c0
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeBetween(hsql::Expr*, hsql::Expr*, hsql::Expr*)
Expr* Expr::makeBetween(Expr* expr, Expr* left, Expr* right) {
  Expr* e = new Expr(kExprOperator);
  e->expr = expr;
  e->opType = kOpBetween;
  e->exprList = new std::vector<Expr*>();
  e->exprList->push_back(left);
  e->exprList->push_back(right);
  return e;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x10(%rsp)
movl $0xa, %esi
callq 0x3a360
jmp 0x65344
movq 0x10(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x40(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rax
movl $0x1, 0x8c(%rax)
movl $0x18, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, 0x8(%rsp)
xorl %esi, %esi
movl $0x18, %edx
callq 0x362f0
movq 0x8(%rsp), %rdi
callq 0x36be0
movq 0x8(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rdi
leaq 0x38(%rsp), %rsi
callq 0x37820
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rdi
leaq 0x30(%rsp), %rsi
callq 0x37820
movq 0x28(%rsp), %rax
addq $0x48, %rsp
retq
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x20(%rsp)
movl %eax, 0x1c(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x20(%rsp), %rdi
callq 0x399c0
nopl (%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeCaseList(hsql::Expr*)
Expr* Expr::makeCaseList(Expr* caseListElement) {
  Expr* e = new Expr(kExprOperator);
  // Case list expressions are temporary and will be integrated into the case
  // expressions exprList - thus assign operator type kOpNone
  e->opType = kOpNone;
  e->exprList = new std::vector<Expr*>();
  e->exprList->push_back(caseListElement);
  return e;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x10(%rsp)
movl $0xa, %esi
callq 0x3a360
jmp 0x6542a
movq 0x10(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
movl $0x0, 0x8c(%rax)
movl $0x18, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, 0x8(%rsp)
xorl %esi, %esi
movl $0x18, %edx
callq 0x362f0
movq 0x8(%rsp), %rdi
callq 0x36be0
movq 0x8(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rdi
leaq 0x30(%rsp), %rsi
callq 0x37820
movq 0x28(%rsp), %rax
addq $0x38, %rsp
retq
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x20(%rsp)
movl %eax, 0x1c(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x20(%rsp), %rdi
callq 0x399c0
nopl (%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeCaseListElement(hsql::Expr*, hsql::Expr*)
Expr* Expr::makeCaseListElement(Expr* when, Expr* then) {
  Expr* e = new Expr(kExprOperator);
  e->opType = kOpCaseListElement;
  e->expr = when;
  e->expr2 = then;
  return e;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
movl $0xa, %esi
callq 0x3a360
jmp 0x654ef
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movl $0x3, 0x8c(%rax)
movq 0x30(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x20(%rsp), %rax
addq $0x38, %rsp
retq
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x18(%rsp)
movl %eax, 0x14(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x18(%rsp), %rdi
callq 0x399c0
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeCase(hsql::Expr*, hsql::Expr*, hsql::Expr*)
Expr* Expr::makeCase(Expr* expr, Expr* caseList, Expr* elseExpr) {
  Expr* e = new Expr(kExprOperator);
  e->opType = kOpCase;
  e->expr = expr;
  e->expr2 = elseExpr;
  e->exprList = caseList->exprList;
  caseList->exprList = nullptr;
  delete caseList;
  return e;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x10(%rsp)
movl $0xa, %esi
callq 0x3a360
jmp 0x655c4
movq 0x10(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
movl $0x2, 0x8c(%rax)
movq 0x40(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x30(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x38(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x38(%rsp), %rax
movq $0x0, 0x20(%rax)
movq 0x38(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x65633
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x28(%rsp), %rax
addq $0x48, %rsp
retq
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x20(%rsp)
movl %eax, 0x1c(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x20(%rsp), %rdi
callq 0x399c0
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeLiteral(bool)
Expr* Expr::makeLiteral(bool val) {
  Expr* e = new Expr(kExprLiteralInt);
  e->ival = (int)val;
  e->isBoolLiteral = true;
  return e;
}

// Assembly:
subq $0x28, %rsp
movb %dil, %al
andb $0x1, %al
movb %al, 0x27(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, (%rsp)
movl $0x2, %esi
callq 0x3a360
jmp 0x657ed
movq (%rsp), %rax
movq %rax, 0x18(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x18(%rsp), %rax
movb $0x1, 0x88(%rax)
movq 0x18(%rsp), %rax
addq $0x28, %rsp
retq
movq (%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10(%rsp)
movl %eax, 0xc(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x10(%rsp), %rdi
callq 0x399c0
nopw (%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeIntervalLiteral(long, hsql::DatetimeField)
Expr* Expr::makeIntervalLiteral(int64_t duration, DatetimeField unit) {
  Expr* e = new Expr(kExprLiteralInterval);
  e->ival = duration;
  e->datetimeField = unit;
  return e;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movl %esi, 0x2c(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
movl $0x5, %esi
callq 0x3a360
jmp 0x6594e
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x30(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x50(%rax)
movl 0x2c(%rsp), %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x60(%rax)
movq 0x20(%rsp), %rax
addq $0x38, %rsp
retq
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x18(%rsp)
movl %eax, 0x14(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x18(%rsp), %rdi
callq 0x399c0
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeColumnRef(char*, char*)
Expr* Expr::makeColumnRef(char* table, char* name) {
  Expr* e = new Expr(kExprColumnRef);
  e->name = name;
  e->table = table;
  return e;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
movl $0x8, %esi
callq 0x3a360
jmp 0x65a4f
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x30(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x20(%rsp), %rax
addq $0x38, %rsp
retq
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x18(%rsp)
movl %eax, 0x14(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x18(%rsp), %rdi
callq 0x399c0
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeFunctionRef(char*, std::vector<hsql::Expr*, std::allocator<hsql::Expr*>>*, bool, hsql::WindowDescription*)
Expr* Expr::makeFunctionRef(char* func_name, std::vector<Expr*>* exprList, bool distinct, WindowDescription* window) {
  Expr* e = new Expr(kExprFunctionRef);
  e->name = func_name;
  e->exprList = exprList;
  e->distinct = distinct;
  e->windowDescription = window;
  return e;
}

// Assembly:
subq $0x48, %rsp
movb %dl, %al
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
andb $0x1, %al
movb %al, 0x37(%rsp)
movq %rcx, 0x28(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
movl $0x9, %esi
callq 0x3a360
jmp 0x65bbc
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x40(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x38(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rax)
movb 0x37(%rsp), %cl
movq 0x20(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x90(%rax)
movq 0x28(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x98(%rax)
movq 0x20(%rsp), %rax
addq $0x48, %rsp
retq
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x18(%rsp)
movl %eax, 0x14(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x18(%rsp), %rdi
callq 0x399c0
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeArrayIndex(hsql::Expr*, long)
Expr* Expr::makeArrayIndex(Expr* expr, int64_t index) {
  Expr* e = new Expr(kExprArrayIndex);
  e->expr = expr;
  e->ival = index;
  return e;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
movl $0xe, %esi
callq 0x3a360
jmp 0x65cdf
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x30(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x20(%rsp), %rax
addq $0x38, %rsp
retq
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x18(%rsp)
movl %eax, 0x14(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x18(%rsp), %rdi
callq 0x399c0
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeExists(hsql::SelectStatement*)
Expr* Expr::makeExists(SelectStatement* select) {
  Expr* e = new Expr(kExprOperator);
  e->opType = kOpExists;
  e->select = select;
  return e;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, (%rsp)
movl $0xa, %esi
callq 0x3a360
jmp 0x65e49
movq (%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movl $0x1a, 0x8c(%rax)
movq 0x20(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x18(%rsp), %rax
addq $0x28, %rsp
retq
movq (%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10(%rsp)
movl %eax, 0xc(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x10(%rsp), %rdi
callq 0x399c0
nop
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeInOperator(hsql::Expr*, std::vector<hsql::Expr*, std::allocator<hsql::Expr*>>*)
Expr* Expr::makeInOperator(Expr* expr, std::vector<Expr*>* exprList) {
  Expr* e = new Expr(kExprOperator);
  e->opType = kOpIn;
  e->expr = expr;
  e->exprList = exprList;

  return e;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
movl $0xa, %esi
callq 0x3a360
jmp 0x65ecf
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movl $0x15, 0x8c(%rax)
movq 0x30(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x20(%rsp), %rax
addq $0x38, %rsp
retq
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x18(%rsp)
movl %eax, 0x14(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x18(%rsp), %rdi
callq 0x399c0
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeExtract(hsql::DatetimeField, hsql::Expr*)
Expr* Expr::makeExtract(DatetimeField datetimeField, Expr* expr) {
  Expr* e = new Expr(kExprExtract);
  e->datetimeField = datetimeField;
  e->expr = expr;
  return e;
}

// Assembly:
subq $0x38, %rsp
movl %edi, 0x34(%rsp)
movq %rsi, 0x28(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
movl $0xf, %esi
callq 0x3a360
jmp 0x6600e
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
movl 0x34(%rsp), %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x60(%rax)
movq 0x28(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x20(%rsp), %rax
addq $0x38, %rsp
retq
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x18(%rsp)
movl %eax, 0x14(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x18(%rsp), %rdi
callq 0x399c0
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::makeCast(hsql::Expr*, hsql::ColumnType)
Expr* Expr::makeCast(Expr* expr, ColumnType columnType) {
  Expr* e = new Expr(kExprCast);
  e->columnType = columnType;
  e->expr = expr;
  return e;
}

// Assembly:
subq $0x38, %rsp
leaq 0x40(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %rdi, 0x30(%rsp)
movl $0xa0, %edi
callq 0x377c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x10(%rsp)
movl $0x10, %esi
callq 0x3a360
jmp 0x660a4
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq (%rcx), %rdx
movq %rdx, 0x68(%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x70(%rax)
movq 0x10(%rcx), %rdx
movq %rdx, 0x78(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x80(%rax)
movq 0x30(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rax
addq $0x38, %rsp
retq
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x20(%rsp)
movl %eax, 0x1c(%rsp)
movl $0xa0, %esi
callq 0x378a0
movq 0x20(%rsp), %rdi
callq 0x399c0
nopl (%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::Expr::getName() const
const char* Expr::getName() const {
  if (alias)
    return alias;
  else
    return name;
}

// Assembly:
movq %rdi, -0x10(%rsp)
movq -0x10(%rsp), %rax
movq %rax, -0x18(%rsp)
cmpq $0x0, 0x40(%rax)
je 0x66276
movq -0x18(%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, -0x8(%rsp)
jmp 0x66284
movq -0x18(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x8(%rsp)
movq -0x8(%rsp), %rax
retq
nopw (%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/Expr.cpp
// Function: hsql::substr(char const*, int, int)
char* substr(const char* source, int from, int to) {
  int len = to - from;
  char* copy = (char*)malloc(len + 1);
  ;
  strncpy(copy, source + from, len);
  copy[len] = '\0';
  return copy;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movl %esi, 0x1c(%rsp)
movl %edx, 0x18(%rsp)
movl 0x18(%rsp), %eax
subl 0x1c(%rsp), %eax
movl %eax, 0x14(%rsp)
movl 0x14(%rsp), %eax
addl $0x1, %eax
movslq %eax, %rdi
callq 0x38640
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
movq 0x20(%rsp), %rsi
movslq 0x1c(%rsp), %rax
addq %rax, %rsi
movslq 0x14(%rsp), %rdx
callq 0x361b0
movq 0x8(%rsp), %rax
movslq 0x14(%rsp), %rcx
movb $0x0, (%rax,%rcx)
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
nop
// File: hyrise[P]sql-parser/src/sql/SQLStatement.cpp
// Function: hsql::SQLStatement::~SQLStatement()
SQLStatement::~SQLStatement() {
  if (hints) {
    for (Expr* hint : *hints) {
      delete hint;
    }
  }
  delete hints;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x26b3e(%rip), %rcx     # 0x8cf58
addq $0x10, %rcx
movq %rcx, (%rax)
cmpq $0x0, 0x10(%rax)
je 0x664a6
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
callq 0x36b30
movq %rax, 0x30(%rsp)
movq 0x38(%rsp), %rdi
callq 0x38740
movq %rax, 0x28(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x39fa0
testb $0x1, %al
jne 0x66469
jmp 0x664a4
leaq 0x30(%rsp), %rdi
callq 0x37b30
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x66496
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x66498
leaq 0x30(%rsp), %rdi
callq 0x36f80
jmp 0x66454
jmp 0x664a6
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x664d3
movq 0x8(%rsp), %rdi
callq 0x39690
movq 0x8(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
addq $0x48, %rsp
retq
nopl (%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::ExecuteStatement::~ExecuteStatement()
ExecuteStatement::~ExecuteStatement() {
  free(name);

  if (parameters) {
    for (Expr* param : *parameters) {
      delete param;
    }
    delete parameters;
  }
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x261d6(%rip), %rcx     # 0x8cf00
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x20(%rax), %rdi
callq 0x38090
movq 0x18(%rsp), %rax
cmpq $0x0, 0x28(%rax)
je 0x66df5
movq 0x18(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
callq 0x36b30
movq %rax, 0x30(%rsp)
movq 0x38(%rsp), %rdi
callq 0x38740
movq %rax, 0x28(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x39fa0
testb $0x1, %al
jne 0x66d8b
jmp 0x66dc6
leaq 0x30(%rsp), %rdi
callq 0x37b30
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x66db8
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x66dba
leaq 0x30(%rsp), %rdi
callq 0x36f80
jmp 0x66d76
movq 0x18(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x66df3
movq 0x8(%rsp), %rdi
callq 0x39690
movq 0x8(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x66df5
movq 0x18(%rsp), %rdi
callq 0x38650
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::ExportStatement::~ExportStatement()
ExportStatement::~ExportStatement() {
  free(filePath);
  free(schema);
  free(tableName);
  delete select;
  free(encoding);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x260f7(%rip), %rcx     # 0x8cfc0
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x20(%rax), %rdi
callq 0x38090
movq (%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x38090
movq (%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x38090
movq (%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x66f11
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq (%rsp), %rax
movq 0x40(%rax), %rdi
callq 0x38090
movq (%rsp), %rdi
callq 0x38650
addq $0x18, %rsp
retq
nopl (%rax)
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::ImportStatement::~ImportStatement()
ImportStatement::~ImportStatement() {
  free(filePath);
  free(schema);
  free(tableName);
  delete whereClause;
  free(encoding);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x25f8f(%rip), %rcx     # 0x8cfb8
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x20(%rax), %rdi
callq 0x38090
movq (%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x38090
movq (%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x38090
movq (%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x67071
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq (%rsp), %rax
movq 0x40(%rax), %rdi
callq 0x38090
movq (%rsp), %rdi
callq 0x38650
addq $0x18, %rsp
retq
nopl (%rax)
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::InsertStatement::~InsertStatement()
InsertStatement::~InsertStatement() {
  free(schema);
  free(tableName);
  delete select;

  if (columns) {
    for (char* column : *columns) {
      free(column);
    }
    delete columns;
  }

  if (values) {
    for (Expr* expr : *values) {
      delete expr;
    }
    delete values;
  }
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x25e06(%rip), %rcx     # 0x8cf50
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x20(%rax), %rdi
callq 0x38090
movq 0x20(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x38090
movq 0x20(%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, 0x28(%rsp)
cmpq $0x0, %rax
je 0x67187
movq 0x28(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0x6722f
movq 0x20(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
callq 0x37d80
movq %rax, 0x60(%rsp)
movq 0x68(%rsp), %rdi
callq 0x399b0
movq %rax, 0x58(%rsp)
leaq 0x60(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x392c0
testb $0x1, %al
jne 0x671d8
jmp 0x67200
leaq 0x60(%rsp), %rdi
callq 0x38ff0
movq (%rax), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rdi
callq 0x38090
leaq 0x60(%rsp), %rdi
callq 0x36eb0
jmp 0x671c3
movq 0x20(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x6722d
movq 0x18(%rsp), %rdi
callq 0x37bf0
movq 0x18(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x6722f
movq 0x20(%rsp), %rax
cmpq $0x0, 0x38(%rax)
je 0x672ea
movq 0x20(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
callq 0x36b30
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
callq 0x38740
movq %rax, 0x38(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x39fa0
testb $0x1, %al
jne 0x67280
jmp 0x672bb
leaq 0x40(%rsp), %rdi
callq 0x37b30
movq (%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x672ad
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x672af
leaq 0x40(%rsp), %rdi
callq 0x36f80
jmp 0x6726b
movq 0x20(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x672e8
movq 0x8(%rsp), %rdi
callq 0x39690
movq 0x8(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x672ea
movq 0x20(%rsp), %rdi
callq 0x38650
addq $0x78, %rsp
retq
nopl (%rax)
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::GroupByDescription::~GroupByDescription()
GroupByDescription::~GroupByDescription() {
  delete having;

  if (columns) {
    for (Expr* expr : *columns) {
      delete expr;
    }
    delete columns;
  }
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x2596e(%rip), %rcx     # 0x8cf38
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x675eb
movq 0x18(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x676a3
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
callq 0x36b30
movq %rax, 0x30(%rsp)
movq 0x38(%rsp), %rdi
callq 0x38740
movq %rax, 0x28(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x39fa0
testb $0x1, %al
jne 0x6763c
jmp 0x67677
leaq 0x30(%rsp), %rdi
callq 0x37b30
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x67669
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x6766b
leaq 0x30(%rsp), %rdi
callq 0x36f80
jmp 0x67627
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x676a1
movq (%rsp), %rdi
callq 0x39690
movq (%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x676a3
addq $0x48, %rsp
retq
nopl (%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::UpdateStatement::~UpdateStatement()
UpdateStatement::~UpdateStatement() {
  delete table;
  delete where;

  if (updates) {
    for (UpdateClause* update : *updates) {
      free(update->column);
      delete update->value;
      delete update;
    }
    delete updates;
  }
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x2512e(%rip), %rcx     # 0x8cf68
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x20(%rax), %rax
movq %rax, 0x28(%rsp)
cmpq $0x0, %rax
je 0x67e5b
movq 0x28(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x67e7a
movq 0x18(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rax
cmpq $0x0, 0x28(%rax)
je 0x67f62
movq 0x20(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
callq 0x38260
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
callq 0x36700
movq %rax, 0x38(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x3a110
testb $0x1, %al
jne 0x67ecb
jmp 0x67f36
leaq 0x40(%rsp), %rdi
callq 0x36c70
movq (%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq (%rax), %rdi
callq 0x38090
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x67f09
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x67f28
movq 0x8(%rsp), %rdi
movl $0x10, %esi
callq 0x378a0
jmp 0x67f2a
leaq 0x40(%rsp), %rdi
callq 0x38320
jmp 0x67eb6
movq 0x20(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x67f60
movq (%rsp), %rdi
callq 0x38a00
movq (%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x67f62
movq 0x20(%rsp), %rdi
callq 0x38650
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::Alias::~Alias()
Alias::~Alias() {
  free(name);
  if (columns) {
    for (char* column : *columns) {
      free(column);
    }
    delete columns;
  }
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
movq (%rax), %rdi
callq 0x38090
movq 0x8(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x680a0
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
callq 0x37d80
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
callq 0x399b0
movq %rax, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x392c0
testb $0x1, %al
jne 0x6804c
jmp 0x68074
leaq 0x20(%rsp), %rdi
callq 0x38ff0
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0x38090
leaq 0x20(%rsp), %rdi
callq 0x36eb0
jmp 0x68037
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x6809e
movq (%rsp), %rdi
callq 0x37bf0
movq (%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x680a0
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::TableRef::~TableRef()
TableRef::~TableRef() {
  free(schema);
  free(name);

  delete select;
  delete join;
  delete alias;

  if (list) {
    for (TableRef* table : *list) {
      delete table;
    }
    delete list;
  }
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x24de6(%rip), %rcx     # 0x8cf10
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x10(%rax), %rdi
callq 0x38090
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x38090
movq 0x20(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x28(%rsp)
cmpq $0x0, %rax
je 0x68167
movq 0x28(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x68186
movq 0x18(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x681b3
movq 0x10(%rsp), %rdi
callq 0x388f0
movq 0x10(%rsp), %rdi
movl $0x10, %esi
callq 0x378a0
movq 0x20(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0x6826b
movq 0x20(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
callq 0x37180
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
callq 0x3a2c0
movq %rax, 0x38(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x353c0
testb $0x1, %al
jne 0x68204
jmp 0x6823f
leaq 0x40(%rsp), %rdi
callq 0x36fa0
movq (%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x68231
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x68233
leaq 0x40(%rsp), %rdi
callq 0x36d90
jmp 0x681ef
movq 0x20(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x68269
movq (%rsp), %rdi
callq 0x36b90
movq (%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x6826b
addq $0x58, %rsp
retq
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::TableRef::getName() const
const char* TableRef::getName() const {
  if (alias)
    return alias->name;
  else
    return name;
}

// Assembly:
movq %rdi, -0x10(%rsp)
movq -0x10(%rsp), %rax
movq %rax, -0x18(%rsp)
cmpq $0x0, 0x20(%rax)
je 0x682e9
movq -0x18(%rsp), %rax
movq 0x20(%rax), %rax
movq (%rax), %rax
movq %rax, -0x8(%rsp)
jmp 0x682f7
movq -0x18(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x8(%rsp)
movq -0x8(%rsp), %rax
retq
nopl (%rax)
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::JoinDefinition::~JoinDefinition()
JoinDefinition::~JoinDefinition() {
  delete left;
  delete right;
  delete condition;

  if (namedColumns) {
    for (auto* column : *namedColumns) {
      free(column);
    }
    delete namedColumns;
  }
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x24c4e(%rip), %rcx     # 0x8cfa8
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x8(%rax), %rax
movq %rax, 0x28(%rsp)
cmpq $0x0, %rax
je 0x6837b
movq 0x28(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x6839a
movq 0x18(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x683b9
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0x68461
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
callq 0x37d80
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
callq 0x399b0
movq %rax, 0x38(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x392c0
testb $0x1, %al
jne 0x6840a
jmp 0x68432
leaq 0x40(%rsp), %rdi
callq 0x38ff0
movq (%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rdi
callq 0x38090
leaq 0x40(%rsp), %rdi
callq 0x36eb0
jmp 0x683f5
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x6845f
movq 0x8(%rsp), %rdi
callq 0x37bf0
movq 0x8(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x68461
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)
// File: hyrise[P]sql-parser/src/sql/statements.cpp
// Function: hsql::SetOperation::~SetOperation()
SetOperation::~SetOperation() {
  delete nestedSelectStatement;
  delete resultLimit;

  if (resultOrder) {
    for (OrderDescription* desc : *resultOrder) {
      delete desc;
    }
    delete resultOrder;
  }
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x24ab6(%rip), %rcx     # 0x8cfb0
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
cmpq $0x0, %rax
je 0x6851b
movq 0x28(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x6853a
movq 0x18(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x20(%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x685f5
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
callq 0x38350
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
callq 0x35890
movq %rax, 0x38(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x35d50
testb $0x1, %al
jne 0x6858b
jmp 0x685c6
leaq 0x40(%rsp), %rdi
callq 0x39680
movq (%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x685b8
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x685ba
leaq 0x40(%rsp), %rdi
callq 0x3a0b0
jmp 0x68576
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x685f3
movq 0x8(%rsp), %rdi
callq 0x36990
movq 0x8(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x685f5
addq $0x58, %rsp
retq
nopw (%rax,%rax)
// File: hyrise[P]sql-parser/src/util/sqlhelper.cpp
// Function: hsql::printTableRefInfo(hsql::TableRef*, unsigned long)
void printTableRefInfo(TableRef* table, uintmax_t num_indent) {
  switch (table->type) {
    case kTableName:
      inprint(table->name, num_indent);
      if (table->schema) {
        inprint("Schema", num_indent + 1);
        inprint(table->schema, num_indent + 2);
      }
      break;
    case kTableSelect:
      printSelectStatementInfo(table->select, num_indent);
      break;
    case kTableJoin:
      inprint("Join Table", num_indent);
      inprint("Left", num_indent + 1);
      printTableRefInfo(table->join->left, num_indent + 2);
      inprint("Right", num_indent + 1);
      printTableRefInfo(table->join->right, num_indent + 2);
      inprint("Join Condition", num_indent + 1);
      printExpression(table->join->condition, num_indent + 2);
      break;
    case kTableCrossProduct:
      for (TableRef* tbl : *table->list) printTableRefInfo(tbl, num_indent);
      break;
  }

  if (table->alias) {
    printAlias(table->alias, num_indent);
  }
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq 0x30(%rsp), %rax
movl 0x8(%rax), %eax
movq %rax, (%rsp)
subq $0x3, %rax
ja 0x69b73
movq (%rsp), %rax
leaq 0x14d85(%rip), %rcx     # 0x7e774
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x30(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x28(%rsp), %rsi
callq 0x39830
movq 0x30(%rsp), %rax
cmpq $0x0, 0x10(%rax)
je 0x69a43
movq 0x28(%rsp), %rsi
addq $0x1, %rsi
leaq 0x14dff(%rip), %rdi     # 0x7e826
callq 0x39830
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x28(%rsp), %rsi
addq $0x2, %rsi
callq 0x39830
jmp 0x69b73
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x28(%rsp), %rsi
callq 0x36610
jmp 0x69b73
movq 0x28(%rsp), %rsi
leaq 0x14dc1(%rip), %rdi     # 0x7e82d
callq 0x39830
movq 0x28(%rsp), %rsi
addq $0x1, %rsi
leaq 0x14db7(%rip), %rdi     # 0x7e838
callq 0x39830
movq 0x30(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rdi
movq 0x28(%rsp), %rsi
addq $0x2, %rsi
callq 0x386c0
movq 0x28(%rsp), %rsi
addq $0x1, %rsi
leaq 0x14d8c(%rip), %rdi     # 0x7e83d
callq 0x39830
movq 0x30(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rdi
movq 0x28(%rsp), %rsi
addq $0x2, %rsi
callq 0x386c0
movq 0x28(%rsp), %rsi
addq $0x1, %rsi
leaq 0x14d62(%rip), %rdi     # 0x7e843
callq 0x39830
movq 0x30(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x18(%rax), %rdi
movq 0x28(%rsp), %rsi
addq $0x2, %rsi
callq 0x37340
jmp 0x69b73
movq 0x30(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
callq 0x37180
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x3a2c0
movq %rax, 0x10(%rsp)
leaq 0x18(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x353c0
testb $0x1, %al
jne 0x69b44
jmp 0x69b71
leaq 0x18(%rsp), %rdi
callq 0x36fa0
movq (%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x386c0
leaq 0x18(%rsp), %rdi
callq 0x36d90
jmp 0x69b2f
jmp 0x69b73
movq 0x30(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0x69b92
movq 0x30(%rsp), %rax
movq 0x20(%rax), %rdi
movq 0x28(%rsp), %rsi
callq 0x35740
addq $0x38, %rsp
retq
nopw (%rax,%rax)