// File: /workspace/github_cpp_makefile_star2_O2/roberto-bayardo[P]google-extremal-sets/main-satelite.cc
// Function: main
int main(int argc, char** argv) {
  time_t start_time;
  time(&start_time);

  // Verify input arguments.
  if (argc != 2) {
    std::cerr << "ERROR: Usage is: ./ams-satelite <dataset_path>\n";
    return 1;
  }

  {
    std::auto_ptr<DataSourceIterator> data(DataSourceIterator::Get(argv[1]));
    if (!data.get())
      return 2;

    google_extremal_sets::AllMaximalSetsSateLite ap;
    bool result = ap.FindAllMaximalSets(
        data.get(),
        8000000/*max_item_id*/,
        1000000000/*max_items_in_ram*/,
        google_extremal_sets::COUNT_ONLY/*output_mode*/);
    if (!result) {
      std::cerr << "IO ERROR: " << data->GetErrorMessage() << "\n";
      return 3;
    }

    std::cerr << "; Found " << ap.MaximalSetsCount() << " maximal itemsets.\n"
              << "; Number of itemsets in the input: " << ap.InputSetsCount()
              << "\n"
              << "; Number of subsumption checks performed: "
              << ap.SubsumptionChecksCount() << "\n";
  }

  time_t end_time;
  time(&end_time);
  std::cerr << "; Total running time: " << (end_time - start_time)
            << " seconds" << std::endl;

  return 0;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x80, %rsp
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x10(%rsp), %rdi
callq 0x2170
cmpl $0x2, %ebp
jne 0x2e5e
movq 0x8(%rbx), %rdi
callq 0x2ff4
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x2e79
xorps %xmm0, %xmm0
leaq 0x38(%rsp), %rdi
movups %xmm0, 0x38(%rdi)
movups %xmm0, 0x28(%rdi)
movups %xmm0, 0x18(%rdi)
movq %rax, %rsi
movl $0x7a1200, %edx         # imm = 0x7A1200
movl $0x3b9aca00, %ecx       # imm = 0x3B9ACA00
xorl %r8d, %r8d
callq 0x24ac
movl %eax, %ebx
testb %al, %al
je 0x2e80
movq 0x4214(%rip), %rdi      # 0x6ff0
leaq 0x1393(%rip), %rsi      # 0x4176
callq 0x21a0
movq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x2190
leaq 0x1383(%rip), %rsi      # 0x417f
movq %rax, %rdi
callq 0x21a0
leaq 0x1388(%rip), %rsi      # 0x4193
movq %rax, %rdi
callq 0x21a0
movq 0x40(%rsp), %rsi
movq %rax, %rdi
callq 0x2090
leaq 0x136a(%rip), %rsi      # 0x4191
movq %rax, %rdi
callq 0x21a0
leaq 0x1381(%rip), %rsi      # 0x41b7
movq %rax, %rdi
callq 0x21a0
movq 0x48(%rsp), %rsi
movq %rax, %rdi
callq 0x2090
xorl %ebp, %ebp
leaq 0x133d(%rip), %rsi      # 0x4191
movq %rax, %rdi
callq 0x21a0
jmp 0x2ed2
movq 0x418b(%rip), %rdi      # 0x6ff0
leaq 0x12cf(%rip), %rsi      # 0x413b
callq 0x21a0
pushq $0x1
popq %rbp
jmp 0x2f33
pushq $0x2
popq %rbp
xorl %ebx, %ebx
jmp 0x2edc
movq 0x4169(%rip), %rdi      # 0x6ff0
leaq 0x12dd(%rip), %rsi      # 0x416b
callq 0x21a0
movq %rax, %r14
movq 0x8(%rsp), %rsi
addq $0x10, %rsi
leaq 0x18(%rsp), %rdi
callq 0x2230
leaq 0x18(%rsp), %rsi
movq %r14, %rdi
callq 0x2160
leaq 0x12d4(%rip), %rsi      # 0x4191
movq %rax, %rdi
callq 0x21a0
leaq 0x18(%rsp), %rdi
callq 0x20c0
pushq $0x3
popq %rbp
leaq 0x38(%rsp), %rdi
callq 0x2f72
leaq 0x8(%rsp), %rdi
callq 0x2f8c
testb %bl, %bl
je 0x2f33
leaq 0x38(%rsp), %rbx
movq %rbx, %rdi
callq 0x2170
movq 0x40f2(%rip), %rdi      # 0x6ff0
leaq 0x12dd(%rip), %rsi      # 0x41e2
callq 0x21a0
movq (%rbx), %rsi
subq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x2190
leaq 0x12d8(%rip), %rsi      # 0x41f9
movq %rax, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20d0
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x80, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x2f52
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x20c0
jmp 0x2f55
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x2f72
leaq 0x8(%rsp), %rdi
callq 0x2f8c
movq %rbx, %rdi
callq 0x22a0
nop