// File: zakimjz[P]SLEUTH/treeminer.cpp
// Function: main
int main(int argc, char **argv)
{
   TimeTracker tt;
   tt.Start(); 
   parse_args(argc, argv); 
  
   DCB = new Dbase_Ctrl_Blk(infile); 
   get_F1();
   list<Eqclass *> *F2list = get_F2();

   if (output_idlist) DCB->print_vertical();
   get_Fk(*F2list);

   for (int i=0; i < stats.size(); i++){
      cout << "F" << i+1 << " - ";
      cout << stats[i].numlarge << " " << stats[i].numcand << endl;
   }
   
   double tottime = tt.Stop();
   stats.tottime = tottime;

   cout << stats << endl;
   
   cout << "TIME = " << tottime << endl;
   //write results to summary file
   ofstream summary("summary.out", ios::app); 
   summary << "SLEUTH ";
   if (mine_induced) summary << "INDUCED ";
   else summary << "EMBEDDED ";
   
   if (mine_ordered) summary << "ORDERED ";
   else summary << "UNORDERED ";
      
   switch(sort_type){
   case incr: summary << "INCR "; break;
   case decr: summary << "DECR "; break;
   default: break;
   }
   switch(prune_type){
   case prune: summary << "PRUNE "; break;
   deafult: break;
   }
   if (!count_unique) summary << "MULTIPLE ";
   if (use_fullpath) summary << "FULLPATH ";

   summary << infile << " " << MINSUP_PER << " "
           << DBASE_NUM_TRANS << " " << MINSUPPORT << " ";
   summary << stats << endl;
   summary.close();
   cout << "BrachIt = " << BranchIt << endl;
   
   exit(0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2f0, %rsp            # imm = 0x2F0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x38(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0xbe90
movq -0x270(%rbp), %rdi
callq 0xbf30
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x92c0
movl $0x240, %edi            # imm = 0x240
callq 0x2170
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x268(%rbp)
leaq 0x12981(%rip), %rsi     # 0x1e270
movl $0x800, %edx            # imm = 0x800
callq 0x2640
jmp 0xb8fb
movq -0x268(%rbp), %rax
movq %rax, 0x12a97(%rip)     # 0x1e3a0
callq 0x9460
callq 0x9bd0
movq %rax, -0x50(%rbp)
testb $0x1, 0x12ab3(%rip)     # 0x1e3d1
je 0xb950
movq 0x12a79(%rip), %rdi     # 0x1e3a0
callq 0x3460
jmp 0xb950
movq -0x268(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x240, %esi            # imm = 0x240
callq 0x2180
jmp 0xbd85
movq -0x50(%rbp), %rdi
callq 0xb7c0
movl $0x0, -0x54(%rbp)
movslq -0x54(%rbp), %rax
movq %rax, -0x278(%rbp)
leaq 0x12a36(%rip), %rdi     # 0x1e3a8
callq 0x8290
movq %rax, %rcx
movq -0x278(%rbp), %rax
cmpq %rcx, %rax
jae 0xba2a
movq 0x1263f(%rip), %rdi     # 0x1dfd0
leaq 0x88a7(%rip), %rsi      # 0x1423f
callq 0x2160
movq %rax, %rdi
movl -0x54(%rbp), %esi
addl $0x1, %esi
callq 0x22b0
movq %rax, %rdi
leaq 0x86cb(%rip), %rsi      # 0x14080
callq 0x2160
movslq -0x54(%rbp), %rsi
leaq 0x129e3(%rip), %rdi     # 0x1e3a8
callq 0x8350
movl 0x4(%rax), %esi
movq 0x125fc(%rip), %rdi     # 0x1dfd0
callq 0x22b0
movq %rax, %rdi
leaq 0x86ba(%rip), %rsi      # 0x1409d
callq 0x2160
movq %rax, -0x280(%rbp)
movslq -0x54(%rbp), %rsi
leaq 0x129ae(%rip), %rdi     # 0x1e3a8
callq 0x8350
movq -0x280(%rbp), %rdi
movl (%rax), %esi
callq 0x22b0
movq %rax, %rdi
movq 0x125a1(%rip), %rsi     # 0x1dfb8
callq 0x2190
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0xb960
leaq -0x38(%rbp), %rdi
callq 0xc060
movsd %xmm0, -0x60(%rbp)
movsd -0x60(%rbp), %xmm0
leaq 0x127f4(%rip), %rax     # 0x1e238
movsd %xmm0, (%rax)
movq 0x12581(%rip), %rdi     # 0x1dfd0
movq %rdi, -0x298(%rbp)
leaq 0x1294b(%rip), %rsi     # 0x1e3a8
callq 0x8030
movq %rax, %rdi
movq 0x1254c(%rip), %rsi     # 0x1dfb8
movq %rsi, -0x290(%rbp)
callq 0x2190
movq -0x298(%rbp), %rdi
leaq 0x87bb(%rip), %rsi      # 0x14241
callq 0x2160
movq %rax, %rdi
movsd -0x60(%rbp), %xmm0
callq 0x2320
movq -0x290(%rbp), %rsi
movq %rax, %rdi
callq 0x2190
leaq 0x879b(%rip), %rsi      # 0x14249
leaq -0x260(%rbp), %rdi
movq %rdi, -0x288(%rbp)
movl $0x1, %edx
callq 0x21a0
movq -0x288(%rbp), %rdi
leaq 0x8781(%rip), %rsi      # 0x14255
callq 0x2160
jmp 0xbadb
testb $0x1, 0x128f1(%rip)     # 0x1e3d3
je 0xbb18
leaq 0x8772(%rip), %rsi      # 0x1425d
leaq -0x260(%rbp), %rdi
callq 0x2160
jmp 0xbaf9
jmp 0xbb2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x2230
jmp 0xbd85
leaq 0x8747(%rip), %rsi      # 0x14266
leaq -0x260(%rbp), %rdi
callq 0x2160
jmp 0xbb2d
jmp 0xbb2f
testb $0x1, 0x1289e(%rip)     # 0x1e3d4
je 0xbb4f
leaq 0x8733(%rip), %rsi      # 0x14272
leaq -0x260(%rbp), %rdi
callq 0x2160
jmp 0xbb4d
jmp 0xbb66
leaq 0x871a(%rip), %rsi      # 0x14270
leaq -0x260(%rbp), %rdi
callq 0x2160
jmp 0xbb64
jmp 0xbb66
movl 0x1286c(%rip), %eax     # 0x1e3d8
movl %eax, -0x29c(%rbp)
subl $0x1, %eax
je 0xbb86
jmp 0xbb79
movl -0x29c(%rbp), %eax
subl $0x2, %eax
je 0xbb9d
jmp 0xbbb4
leaq 0x86ee(%rip), %rsi      # 0x1427b
leaq -0x260(%rbp), %rdi
callq 0x2160
jmp 0xbb9b
jmp 0xbbb6
leaq 0x86dd(%rip), %rsi      # 0x14281
leaq -0x260(%rbp), %rdi
callq 0x2160
jmp 0xbbb2
jmp 0xbbb6
jmp 0xbbb6
movl 0x12824(%rip), %eax     # 0x1e3e0
subl $0x1, %eax
jne 0xbbda
jmp 0xbbc3
leaq 0x86bd(%rip), %rsi      # 0x14287
leaq -0x260(%rbp), %rdi
callq 0x2160
jmp 0xbbd8
jmp 0xbbda
testb $0x1, 0x125f3(%rip)     # 0x1e1d4
jne 0xbbfa
leaq 0x86a4(%rip), %rsi      # 0x1428e
leaq -0x260(%rbp), %rdi
callq 0x2160
jmp 0xbbf8
jmp 0xbbfa
testb $0x1, 0x127d1(%rip)     # 0x1e3d2
je 0xbc1a
leaq 0x868e(%rip), %rsi      # 0x14298
leaq -0x260(%rbp), %rdi
callq 0x2160
jmp 0xbc18
jmp 0xbc1a
leaq 0x1264f(%rip), %rsi     # 0x1e270
leaq -0x260(%rbp), %rdi
callq 0x2160
movq %rax, -0x2a8(%rbp)
jmp 0xbc36
movq -0x2a8(%rbp), %rdi
leaq 0x8459(%rip), %rsi      # 0x1409d
callq 0x2160
movq %rax, -0x2b0(%rbp)
jmp 0xbc52
movq -0x2b0(%rbp), %rdi
movsd 0x1275f(%rip), %xmm0    # 0x1e3c0
callq 0x2320
movq %rax, -0x2b8(%rbp)
jmp 0xbc6f
movq -0x2b8(%rbp), %rdi
leaq 0x8420(%rip), %rsi      # 0x1409d
callq 0x2160
movq %rax, -0x2c0(%rbp)
jmp 0xbc8b
movq -0x2c0(%rbp), %rdi
movl 0x12734(%rip), %esi     # 0x1e3cc
callq 0x22b0
movq %rax, -0x2c8(%rbp)
jmp 0xbca6
movq -0x2c8(%rbp), %rdi
leaq 0x83e9(%rip), %rsi      # 0x1409d
callq 0x2160
movq %rax, -0x2d0(%rbp)
jmp 0xbcc2
movq -0x2d0(%rbp), %rdi
movl 0x12501(%rip), %esi     # 0x1e1d0
callq 0x22b0
movq %rax, -0x2d8(%rbp)
jmp 0xbcdd
movq -0x2d8(%rbp), %rdi
leaq 0x83b2(%rip), %rsi      # 0x1409d
callq 0x2160
jmp 0xbcf2
leaq 0x126af(%rip), %rsi     # 0x1e3a8
leaq -0x260(%rbp), %rdi
callq 0x8030
movq %rax, -0x2e0(%rbp)
jmp 0xbd0e
movq -0x2e0(%rbp), %rdi
movq 0x1229c(%rip), %rsi     # 0x1dfb8
callq 0x2190
jmp 0xbd23
leaq -0x260(%rbp), %rdi
callq 0x2210
jmp 0xbd31
movq 0x12298(%rip), %rdi     # 0x1dfd0
leaq 0x8563(%rip), %rsi      # 0x142a2
callq 0x2160
movq %rax, -0x2e8(%rbp)
jmp 0xbd4d
movq -0x2e8(%rbp), %rdi
movq 0x12465(%rip), %rsi     # 0x1e1c0
callq 0x2310
movq %rax, -0x2f0(%rbp)
jmp 0xbd69
movq -0x2f0(%rbp), %rdi
movq 0x12241(%rip), %rsi     # 0x1dfb8
callq 0x2190
jmp 0xbd7e
xorl %edi, %edi
callq 0x21c0
movq -0x40(%rbp), %rdi
callq 0x22d0
nop