// File: hyrise[P]sql-parser/src/sql/CreateStatement.cpp
// Function: hsql::CreateStatement::~CreateStatement()
CreateStatement::~CreateStatement() {
  free(filePath);
  free(schema);
  free(tableName);
  free(indexName);
  delete select;

  if (columns) {
    for (auto* def : *columns) {
      delete def;
    }
    delete columns;
  }

  if (tableConstraints) {
    for (auto* def : *tableConstraints) {
      delete def;
    }
    delete tableConstraints;
  }

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

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

// Assembly:
subq $0xc8, %rsp
movq %rdi, 0xc0(%rsp)
movq 0xc0(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x2a5b5(%rip), %rcx     # 0x8cf88
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x28(%rax), %rdi
callq 0x38090
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
movq 0x68(%rax), %rax
movq %rax, 0x38(%rsp)
cmpq $0x0, %rax
je 0x62a2c
movq 0x38(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x30(%rsp), %rax
cmpq $0x0, 0x50(%rax)
je 0x62b08
movq 0x30(%rsp), %rax
movq 0x50(%rax), %rax
movq %rax, 0xb8(%rsp)
movq 0xb8(%rsp), %rdi
callq 0x355a0
movq %rax, 0xb0(%rsp)
movq 0xb8(%rsp), %rdi
callq 0x38150
movq %rax, 0xa8(%rsp)
leaq 0xb0(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x39760
testb $0x1, %al
jne 0x62a92
jmp 0x62ad9
leaq 0xb0(%rsp), %rdi
callq 0x36b80
movq (%rax), %rax
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0x28(%rsp)
cmpq $0x0, %rax
je 0x62ac8
movq 0x28(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x62aca
leaq 0xb0(%rsp), %rdi
callq 0x37050
jmp 0x62a77
movq 0x30(%rsp), %rax
movq 0x50(%rax), %rax
movq %rax, 0x20(%rsp)
cmpq $0x0, %rax
je 0x62b06
movq 0x20(%rsp), %rdi
callq 0x399f0
movq 0x20(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x62b08
movq 0x30(%rsp), %rax
cmpq $0x0, 0x58(%rax)
je 0x62be4
movq 0x30(%rsp), %rax
movq 0x58(%rax), %rax
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rdi
callq 0x36230
movq %rax, 0x90(%rsp)
movq 0x98(%rsp), %rdi
callq 0x367e0
movq %rax, 0x88(%rsp)
leaq 0x90(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x387a0
testb $0x1, %al
jne 0x62b6e
jmp 0x62bb5
leaq 0x90(%rsp), %rdi
callq 0x38e00
movq (%rax), %rax
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x62ba4
movq 0x18(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x62ba6
leaq 0x90(%rsp), %rdi
callq 0x37fd0
jmp 0x62b53
movq 0x30(%rsp), %rax
movq 0x58(%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x62be2
movq 0x10(%rsp), %rdi
callq 0x39850
movq 0x10(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x62be4
movq 0x30(%rsp), %rax
cmpq $0x0, 0x48(%rax)
je 0x62c8c
movq 0x30(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rdi
callq 0x37d80
movq %rax, 0x70(%rsp)
movq 0x78(%rsp), %rdi
callq 0x399b0
movq %rax, 0x68(%rsp)
leaq 0x70(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x392c0
testb $0x1, %al
jne 0x62c35
jmp 0x62c5d
leaq 0x70(%rsp), %rdi
callq 0x38ff0
movq (%rax), %rax
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rdi
callq 0x38090
leaq 0x70(%rsp), %rdi
callq 0x36eb0
jmp 0x62c20
movq 0x30(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x62c8a
movq 0x8(%rsp), %rdi
callq 0x37bf0
movq 0x8(%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x62c8c
movq 0x30(%rsp), %rax
cmpq $0x0, 0x60(%rax)
je 0x62d31
movq 0x30(%rsp), %rax
movq 0x60(%rax), %rax
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rdi
callq 0x37d80
movq %rax, 0x50(%rsp)
movq 0x58(%rsp), %rdi
callq 0x399b0
movq %rax, 0x48(%rsp)
leaq 0x50(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x392c0
testb $0x1, %al
jne 0x62cdd
jmp 0x62d05
leaq 0x50(%rsp), %rdi
callq 0x38ff0
movq (%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rdi
callq 0x38090
leaq 0x50(%rsp), %rdi
callq 0x36eb0
jmp 0x62cc8
movq 0x30(%rsp), %rax
movq 0x60(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x62d2f
movq (%rsp), %rdi
callq 0x37bf0
movq (%rsp), %rdi
movl $0x18, %esi
callq 0x378a0
jmp 0x62d31
movq 0x30(%rsp), %rdi
callq 0x38650
addq $0xc8, %rsp
retq
nopw %cs:(%rax,%rax)