// File: /workspace/github_cpp_makefile_star2_O1/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 0x30(%rsp), %rdi
callq 0x2170
cmpl $0x2, %ebp
jne 0x2edd
movq 0x8(%rbx), %rdi
callq 0x31a8
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x2eff
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 0x24bc
movl %eax, %ebx
testb %al, %al
je 0x2f0b
movq 0x41c0(%rip), %rdi      # 0x6ff0
leaq 0x133f(%rip), %rsi      # 0x4176
movl $0x8, %edx
callq 0x2200
movq 0x38(%rsp), %rsi
movq 0x41a3(%rip), %rdi      # 0x6ff0
callq 0x2190
movq %rax, %r14
leaq 0x1323(%rip), %rsi      # 0x417f
movl $0x13, %edx
movq %rax, %rdi
callq 0x2200
leaq 0x1323(%rip), %rsi      # 0x4193
movl $0x23, %edx
movq %r14, %rdi
callq 0x2200
movq 0x40(%rsp), %rsi
movq %r14, %rdi
callq 0x20a0
movq %rax, %r14
leaq 0x12fd(%rip), %rsi      # 0x4191
movl $0x1, %edx
movq %rax, %rdi
callq 0x2200
leaq 0x130f(%rip), %rsi      # 0x41b7
movl $0x2a, %edx
movq %r14, %rdi
callq 0x2200
movq 0x48(%rsp), %rsi
movq %r14, %rdi
callq 0x20a0
xorl %ebp, %ebp
leaq 0x12c6(%rip), %rsi      # 0x4191
movl $0x1, %edx
movq %rax, %rdi
callq 0x2200
jmp 0x2f8c
movq 0x410c(%rip), %rdi      # 0x6ff0
leaq 0x1250(%rip), %rsi      # 0x413b
movl $0x2f, %edx
callq 0x2200
movl $0x1, %ebp
jmp 0x3035
movl $0x2, %ebp
xorl %ebx, %ebx
jmp 0x2faf
movq 0x40de(%rip), %rdi      # 0x6ff0
leaq 0x1252(%rip), %rsi      # 0x416b
movl $0xa, %edx
callq 0x2200
movq 0x8(%rsp), %rax
leaq 0x20(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x10(%rax), %rsi
movq 0x18(%rax), %rdx
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x30c8
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0x4099(%rip), %rdi      # 0x6ff0
callq 0x2200
leaq 0x122e(%rip), %rsi      # 0x4191
movl $0x1, %edx
movq %rax, %rdi
callq 0x2200
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x2f87
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21e0
movl $0x3, %ebp
leaq 0x68(%rsp), %r14
movq %r14, %rdi
callq 0x3158
movq -0x18(%r14), %rdi
testq %rdi, %rdi
je 0x2faf
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
leaq 0x8(%rsp), %rdi
callq 0x30a6
testb %bl, %bl
je 0x3035
leaq 0x38(%rsp), %rbx
movq %rbx, %rdi
callq 0x2170
movq 0x401f(%rip), %r14      # 0x6ff0
leaq 0x120a(%rip), %rsi      # 0x41e2
movl $0x16, %edx
movq %r14, %rdi
callq 0x2200
movq (%rbx), %rsi
subq 0x30(%rsp), %rsi
movq %r14, %rdi
callq 0x2190
movq %rax, %rbx
leaq 0x11fa(%rip), %rsi      # 0x41f9
movl $0x8, %edx
movq %rax, %rdi
callq 0x2200
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x80, %rsp
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x3061
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x3064
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x3064
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x3080
leaq 0x8(%rsp), %rdi
callq 0x30a6
movq %rbx, %rdi
callq 0x2290