// File: Luthaf[P]zeopp/./zeojobs.h
// Function: zeoJob::setup(std::vector<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::allocator<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>>, char const*, char const*)
bool setup(std::vector< std::vector<std::string> > commands_string, const char *name_string, const char*extension_string)
   {
   commands = commands_string;
   strcpy(name, name_string);
   strcpy(extension, extension_string);

   /* Initial setup */
   bool error = false;
   int numCommands = commands.size();

   /* Display welcome message */
   cout << "Entering new Zeo++ execution route. Input parameters are:\n";
   for(unsigned int i=0;i<commands.size();i++)
     for(unsigned int j=0;j<commands[i].size();j++)
       cout << commands[i][j] << " ";
   cout << name << "   " << extension << "\n";
   /* Ends display message */


   /* Pre-process the argument list:
    * Search for commands that affect Voronoi decomposition beforehand */  
   for(int i = 0; i < numCommands; i++){
     vector<string> command = commands[i];
     if(command[0].compare("-r") == 0){
       processRadialParameters(command);
       Material.radial = true;
     }
     else if(command[0].compare("-nor") == 0){
       //Material.radial = false;
       cerr << "-nor is disabled. Set radii to zero instead.\n";
     }
     else if(command[0].compare("-mass") == 0){
       processMassParameters(command);
       Material.useMass = true;
     }
     else if(command[0].compare("-nomass") == 0){
       Material.useMass = false;
     }
     else if(commands[i][0].compare("-zvis") == 0){
       Material.outputZvis = true;
     }
     else if(commands[i][0].compare("-sa") == 0 || commands[i][0].compare("-vol") == 0){
       Material.buildBasicCells = true;
       if(commands[i][0].compare("-vol") == 0) volumeRunFlag = true;
     }
     else if(commands[i][0].compare("-noha") == 0){
       Material.highAccuracy = false;
     }
     else if(commands[i][0].compare("-ha") == 0){
       Material.AccSetting = processAccuracyParameters(command);
       Material.highAccuracy = true;
     }
     else if(commands[i][0].compare("-ext") == 0 || commands[i][0].compare("-eo") == 0 || commands[i][0].compare("-extendedOutput") == 0){
       extendedOutputFlag = true;
     }
     else if(commands[i][0].compare("-vo") == 0 || commands[i][0].compare("-visual") == 0 || commands[i][0].compare("-visout") == 0){
       Material.VisSetting = processVisualizationParameters(command);
       Material.VisFlag = true;
     }
     else if(commands[i][0].compare("-block") == 0){
       Material.AVrequestBlockingPockets = true; 
     }
     else if(commands[i][0].compare("-psd") == 0){
       Material.AVrequestPSD = true;
     }
     else if(commands[i][0].compare("-allowAdjustCoordsAndCell") == 0){
       Material.allowAdjustCoordsAndCell = true;
       Material.atmnet.allowAdjustCoordsAndCellFlag = Material.allowAdjustCoordsAndCell;
       Material.orgAtomnet.allowAdjustCoordsAndCellFlag = Material.allowAdjustCoordsAndCell;
     }
     else if(commands[i][0].compare("-probe") == 0){
       probeRadius = strtod(commands[i][1].data(), NULL);
       probeRadiusFlag = true;
     }
     else if(commands[i][0].compare("-sqf") == 0){
       nMCsamplesScaleFactor = strtod(commands[i][1].data(), NULL);
       nMCsamplesScaleFactorFlag = true;
       nMCAVsampleDensity = (int)(nMCAVsampleDensity * nMCsamplesScaleFactor); 
       nMCASAsampleDensity = (int)(nMCASAsampleDensity * nMCsamplesScaleFactor);
       if(nMCAVsampleDensity < 1 || nMCASAsampleDensity < 1)
         {
         error = true;
         cerr << "Density of MC samples below 1. Please use larger value with -sqf argument. Current density for AV = " 
              << nMCAVsampleDensity << " and ASA = " << nMCASAsampleDensity <<".\n";
         };
     }
   }; // ends loop over all commands 

   /* Pre-process the argument list to make sure all arguemtns are specified */
   if(probeRadiusFlag == false){
     for(int i = 0; i < numCommands; i++){
       vector<string> command = commands[i];
       if(command[0].compare("-zvor") == 0 ||
          command[0].compare("-axs") == 0 ||
          command[0].compare("-holo") == 0 ||
          command[0].compare("-chan") == 0 ||
          command[0].compare("-zchan") == 0 ||
          command[0].compare("-poreinfo") == 0 ||
          command[0].compare("-test") == 0 ||
          command[0].compare("-vol") == 0 ||
          command[0].compare("-sa") == 0 ||
          command[0].compare("-visVoro") == 0 || 
          command[0].compare("-pld") == 0 ||
          command[0].compare("-pldf") == 0||
          command[0].compare("-pldmol") == 0)
       {
       error = true;
       cerr << command[0] << " option requires probe radius. Please use \"-probe R\" (where R is radius)\n";
       }
     }
   }

   /* Pre-process the arugment list to make sure all run dependiences are fulfilled */
   if(volumeRunFlag == false){
     for(int i = 0; i < numCommands; i++){
       vector<string> command = commands[i];
       if(command[0].compare("-block") == 0 || command[0].compare("-psd") == 0)
         {
         error = true;
         cerr << command[0] << " option depends on accessible volume calculation. Please add \"-vol nS\" (where nS is the number of MC samples per cubic Ang).\n";
         };
     };
   }   

   /* Load structure */
   //Read input file information into the ATOM_NETWORK
   if(error == false){
   char filename[256];
   strcpy(filename,name); strcat(filename,"."); strcat(filename,extension);
   cout << filename << endl;
   if(strcmp(extension, "cuc") == 0){
     if(!readCUCFile(filename, &(Material.atmnet), Material.radial)) error=true;
   }
   else if(strcmp(extension, "arc") == 0){
     if(!readARCFile(filename, &(Material.atmnet), Material.radial)) error=true;
   }
   else if(strcmp(extension, "cssr") == 0){
     if(!readCSSRFile(filename, &(Material.atmnet), Material.radial)) error=true;
   }
   else if(strcmp(extension, "cif") == 0){
     if(!readCIFFile(filename, &(Material.atmnet), Material.radial)) error=true;
   }
   else if(strcmp(extension, "car") == 0){
     if(!readCARFile(filename, &(Material.atmnet), Material.radial)) error=true;
   }
   else if (strcmp(extension, "v1") == 0){
     if(!readV1File(filename, &(Material.atmnet), Material.radial)) error=true;
   }
   else if(strcmp(extension, "pdb") == 0){
     if(!readPDBFile(filename, &(Material.atmnet), Material.radial)) error=true;
   }
   else if (strcmp(extension, "dlp") == 0){
     if(!readDLPFile(filename, &(Material.atmnet), Material.radial)) error=true;
   }
   //Should never be reached because of checkInputFile()
   else{
     cerr << "Invalid input file extension " << extension << "\n"
          << "Exiting ..." << "\n";
     error = true;
   };
   };

   /* Initialize radii, mass and accuracy setting */
   if(!error) {

     // Read radii after reading atoms if -r  requested
     if(Material.radial)
       loadRadii(&(Material.atmnet));

     loadMass(Material.useMass, &(Material.atmnet)); // assigns masses to atoms (assigns 0s in useMass flag = false)

     // High accuracy options - if the system contains particles of different radii, the employed radical
     // Voronoi decomposition may not be accurate. it can be, however, improved if large particles are 
     // replaced by clusters of smaller one (idea taken from Carolyn Philiphs/Chris Rycroft). 
     Material.atmnet.copy(&(Material.orgAtomnet)); // keep a copy of original atomnet 
                                                   //(if high accuracy is not set, this is the same as analyzed network)
     if(Material.radial && Material.highAccuracy)
       {
       // atmnet.copy(&orgAtomnet); // keep a copy of original atomnet
       // calling the following function will modify atmnet - replace large atoms with clusters of small ones
       setupHighAccuracyAtomNetwork(&(Material.atmnet), Material.AccSetting);
       };
     // please note that orgAtomnet is empty unless highAccuracy flag is set !! 

   }; // ends if(!error)

   setupErrorFlag = error;
   return error;

   }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x268(%rbp)
addq $0x8, %rdi
callq 0x1a7a20
movq -0x268(%rbp), %rdi
addq $0x20, %rdi
movq -0x18(%rbp), %rsi
callq 0x54d0
movq -0x268(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
movq -0x20(%rbp), %rsi
callq 0x54d0
movq -0x268(%rbp), %rdi
movb $0x0, -0x21(%rbp)
addq $0x8, %rdi
callq 0x19f9e0
movl %eax, -0x28(%rbp)
movq 0xd3478(%rip), %rdi     # 0x272fc0
leaq 0x6a00b(%rip), %rsi     # 0x209b5a
callq 0x5540
movl $0x0, -0x2c(%rbp)
movq -0x268(%rbp), %rdi
movl -0x2c(%rbp), %eax
movq %rax, -0x270(%rbp)
addq $0x8, %rdi
callq 0x19f9e0
movq %rax, %rcx
movq -0x270(%rbp), %rax
cmpq %rcx, %rax
jae 0x19fc23
movl $0x0, -0x30(%rbp)
movq -0x268(%rbp), %rdi
movl -0x30(%rbp), %eax
movq %rax, -0x278(%rbp)
addq $0x8, %rdi
movl -0x2c(%rbp), %eax
movl %eax, %esi
callq 0x19fa10
movq %rax, %rdi
callq 0x592f0
movq %rax, %rcx
movq -0x278(%rbp), %rax
cmpq %rcx, %rax
jae 0x19fc13
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movl -0x2c(%rbp), %eax
movl %eax, %esi
callq 0x19fa10
movq %rax, %rdi
movl -0x30(%rbp), %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rsi
movq 0xd33cf(%rip), %rdi     # 0x272fc0
callq 0x5480
movq %rax, %rdi
leaq 0x5c6ae(%rip), %rsi     # 0x1fc2ae
callq 0x5540
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x19fb8f
jmp 0x19fc15
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x19fb5b
movq -0x268(%rbp), %rsi
addq $0x20, %rsi
movq 0xd338b(%rip), %rdi     # 0x272fc0
callq 0x5540
movq %rax, %rdi
leaq 0x52843(%rip), %rsi     # 0x1f2487
callq 0x5540
movq -0x268(%rbp), %rsi
movq %rax, %rdi
addq $0x120, %rsi            # imm = 0x120
callq 0x5540
movq %rax, %rdi
leaq 0x599bc(%rip), %rsi     # 0x1f9625
callq 0x5540
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x1a051f
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rsi
leaq -0x50(%rbp), %rdi
callq 0x593a0
leaq -0x50(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x691dd(%rip), %rsi     # 0x208e95
callq 0x51b0
cmpl $0x0, %eax
jne 0x19fd23
leaq -0x68(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x593a0
jmp 0x19fcd1
leaq -0x68(%rbp), %rdi
callq 0x171890
jmp 0x19fcdc
leaq -0x68(%rbp), %rdi
callq 0x59290
movq -0x268(%rbp), %rax
movb $0x1, 0xbb0(%rax)
jmp 0x1a04fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x1a0511
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x59290
jmp 0x1a0511
leaq -0x50(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x6915e(%rip), %rsi     # 0x208e98
callq 0x51b0
cmpl $0x0, %eax
jne 0x19fd5e
movq 0xd32a5(%rip), %rdi     # 0x272ff0
leaq 0x69e43(%rip), %rsi     # 0x209b95
callq 0x5540
jmp 0x19fd59
jmp 0x1a04f8
leaq -0x50(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69128(%rip), %rsi     # 0x208e9d
callq 0x51b0
cmpl $0x0, %eax
jne 0x19fddb
leaq -0x90(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x593a0
jmp 0x19fd91
leaq -0x90(%rbp), %rdi
callq 0x171a00
jmp 0x19fd9f
leaq -0x90(%rbp), %rdi
callq 0x59290
movq -0x268(%rbp), %rax
movb $0x1, 0xbb3(%rax)
jmp 0x1a04f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x59290
jmp 0x1a0511
leaq -0x50(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x690b1(%rip), %rsi     # 0x208ea3
callq 0x51b0
cmpl $0x0, %eax
jne 0x19fe0f
movq -0x268(%rbp), %rax
movb $0x0, 0xbb3(%rax)
jmp 0x1a04f4
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69072(%rip), %rsi     # 0x208eab
callq 0x51b0
cmpl $0x0, %eax
jne 0x19fe56
movq -0x268(%rbp), %rax
movb $0x1, 0xbb1(%rax)
jmp 0x1a04f2
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69031(%rip), %rsi     # 0x208eb1
callq 0x51b0
cmpl $0x0, %eax
je 0x19febe
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69001(%rip), %rsi     # 0x208eb5
callq 0x51b0
cmpl $0x0, %eax
jne 0x19ff0c
movq -0x268(%rbp), %rdi
movb $0x1, 0xbb2(%rdi)
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68fc6(%rip), %rsi     # 0x208eb5
callq 0x51b0
cmpl $0x0, %eax
jne 0x19ff07
movq -0x268(%rbp), %rax
movb $0x1, 0x229(%rax)
jmp 0x1a04f0
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69c8d(%rip), %rsi     # 0x209bc3
callq 0x51b0
cmpl $0x0, %eax
jne 0x19ff53
movq -0x268(%rbp), %rax
movb $0x0, 0xbb5(%rax)
jmp 0x1a04ee
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68f3d(%rip), %rsi     # 0x208eba
callq 0x51b0
cmpl $0x0, %eax
jne 0x1a001b
leaq -0xc8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x593a0
jmp 0x19ff9d
leaq -0xb0(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x171b50
jmp 0x19ffb2
movq -0x268(%rbp), %rdi
addq $0x248, %rdi            # imm = 0x248
addq $0x970, %rdi            # imm = 0x970
leaq -0xb0(%rbp), %rsi
callq 0x5680
leaq -0xb0(%rbp), %rdi
callq 0x5300
leaq -0xc8(%rbp), %rdi
callq 0x59290
movq -0x268(%rbp), %rax
movb $0x1, 0xbb5(%rax)
jmp 0x1a04ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x59290
jmp 0x1a0511
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69b84(%rip), %rsi     # 0x209bc9
callq 0x51b0
cmpl $0x0, %eax
je 0x1a00b7
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69b55(%rip), %rsi     # 0x209bce
callq 0x51b0
cmpl $0x0, %eax
je 0x1a00b7
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69b25(%rip), %rsi     # 0x209bd2
callq 0x51b0
cmpl $0x0, %eax
jne 0x1a00ca
movq -0x268(%rbp), %rax
movb $0x1, 0x244(%rax)
jmp 0x1a04ea
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69aee(%rip), %rsi     # 0x209be2
callq 0x51b0
cmpl $0x0, %eax
je 0x1a016a
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69abe(%rip), %rsi     # 0x209be6
callq 0x51b0
cmpl $0x0, %eax
je 0x1a016a
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69a92(%rip), %rsi     # 0x209bee
callq 0x51b0
cmpl $0x0, %eax
jne 0x1a01fa
leaq -0x100(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x593a0
jmp 0x1a017c
leaq -0xe8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x172120
jmp 0x1a0191
movq -0x268(%rbp), %rdi
addq $0x248, %rdi            # imm = 0x248
addq $0xbf0, %rdi            # imm = 0xBF0
leaq -0xe8(%rbp), %rsi
callq 0x5680
leaq -0xe8(%rbp), %rdi
callq 0x5300
leaq -0x100(%rbp), %rdi
callq 0x59290
movq -0x268(%rbp), %rax
movb $0x1, 0xe30(%rax)
jmp 0x1a04e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x59290
jmp 0x1a0511
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x6921b(%rip), %rsi     # 0x20943f
callq 0x51b0
cmpl $0x0, %eax
jne 0x1a0241
movq -0x268(%rbp), %rax
movb $0x1, 0xf80(%rax)
jmp 0x1a04e6
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x692f0(%rip), %rsi     # 0x20955b
callq 0x51b0
cmpl $0x0, %eax
jne 0x1a0288
movq -0x268(%rbp), %rax
movb $0x1, 0xf81(%rax)
jmp 0x1a04e4
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68c54(%rip), %rsi     # 0x208f06
callq 0x51b0
cmpl $0x0, %eax
jne 0x1a02ed
movq -0x268(%rbp), %rax
movb $0x1, 0xbb4(%rax)
movb 0xbb4(%rax), %cl
andb $0x1, %cl
movb %cl, 0x248(%rax)
movb 0xbb4(%rax), %cl
andb $0x1, %cl
movb %cl, 0x6a8(%rax)
jmp 0x1a04e2
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x698df(%rip), %rsi     # 0x209bf6
callq 0x51b0
cmpl $0x0, %eax
jne 0x1a0371
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
movl $0x1, %esi
callq 0x59310
movq %rax, %rdi
callq 0x52c0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x53d0
movq -0x268(%rbp), %rax
movsd %xmm0, 0x220(%rax)
movb $0x1, 0x228(%rax)
jmp 0x1a04e0
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x69862(%rip), %rsi     # 0x209bfd
callq 0x51b0
cmpl $0x0, %eax
jne 0x1a04de
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rsi
callq 0x19fa10
movq %rax, %rdi
movl $0x1, %esi
callq 0x59310
movq %rax, %rdi
callq 0x52c0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x53d0
movq -0x268(%rbp), %rax
movsd %xmm0, 0x230(%rax)
movb $0x1, 0x238(%rax)
cvtsi2sdl 0x23c(%rax), %xmm0
mulsd 0x230(%rax), %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, 0x23c(%rax)
cvtsi2sdl 0x240(%rax), %xmm0
mulsd 0x230(%rax), %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, 0x240(%rax)
cmpl $0x1, 0x23c(%rax)
jl 0x1a0445
movq -0x268(%rbp), %rax
cmpl $0x1, 0x240(%rax)
jge 0x1a04dc
movb $0x1, -0x21(%rbp)
movq 0xd2ba0(%rip), %rdi     # 0x272ff0
leaq 0x697ab(%rip), %rsi     # 0x209c02
callq 0x5540
movq %rax, -0x280(%rbp)
jmp 0x1a0465
movq -0x280(%rbp), %rdi
movq -0x268(%rbp), %rax
movl 0x23c(%rax), %esi
callq 0x58d0
movq %rax, -0x288(%rbp)
jmp 0x1a0487
movq -0x288(%rbp), %rdi
leaq 0x697d2(%rip), %rsi     # 0x209c67
callq 0x5540
movq %rax, -0x290(%rbp)
jmp 0x1a04a3
movq -0x290(%rbp), %rdi
movq -0x268(%rbp), %rax
movl 0x240(%rax), %esi
callq 0x58d0
movq %rax, -0x298(%rbp)
jmp 0x1a04c5
movq -0x298(%rbp), %rdi
leaq 0x6987e(%rip), %rsi     # 0x209d51
callq 0x5540
jmp 0x1a04da
jmp 0x1a04dc
jmp 0x1a04de
jmp 0x1a04e0
jmp 0x1a04e2
jmp 0x1a04e4
jmp 0x1a04e6
jmp 0x1a04e8
jmp 0x1a04ea
jmp 0x1a04ec
jmp 0x1a04ee
jmp 0x1a04f0
jmp 0x1a04f2
jmp 0x1a04f4
jmp 0x1a04f6
jmp 0x1a04f8
jmp 0x1a04fa
leaq -0x50(%rbp), %rdi
callq 0x59290
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x19fc75
leaq -0x50(%rbp), %rdi
callq 0x59290
jmp 0x1a0db1
movq -0x268(%rbp), %rax
movb 0x228(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1a07f3
movl $0x0, -0x104(%rbp)
movl -0x104(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x1a07f1
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x104(%rbp), %rsi
callq 0x19fa10
movq %rax, %rsi
leaq -0x120(%rbp), %rdi
callq 0x593a0
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68adb(%rip), %rsi     # 0x20906e
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68abf(%rip), %rsi     # 0x20907a
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68aa7(%rip), %rsi     # 0x20908a
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68b08(%rip), %rsi     # 0x209113
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68b5d(%rip), %rsi     # 0x209190
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68b43(%rip), %rsi     # 0x20919e
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x695f0(%rip), %rsi     # 0x209c73
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x6880a(%rip), %rsi     # 0x208eb5
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x687de(%rip), %rsi     # 0x208eb1
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x690e5(%rip), %rsi     # 0x2097e0
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x6955a(%rip), %rsi     # 0x209c79
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x6953b(%rip), %rsi     # 0x209c7e
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0771
leaq -0x120(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x6951d(%rip), %rsi     # 0x209c84
callq 0x51b0
cmpl $0x0, %eax
jne 0x1a07d1
movb $0x1, -0x21(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x120(%rbp), %rdi
callq 0x59310
movq %rax, %rsi
movq 0xd2861(%rip), %rdi     # 0x272ff0
callq 0x5480
movq %rax, -0x2a0(%rbp)
jmp 0x1a079d
movq -0x2a0(%rbp), %rdi
leaq 0x694e1(%rip), %rsi     # 0x209c8c
callq 0x5540
jmp 0x1a07b2
jmp 0x1a07d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x59290
jmp 0x1a0db1
leaq -0x120(%rbp), %rdi
callq 0x59290
movl -0x104(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x104(%rbp)
jmp 0x1a0544
jmp 0x1a07f3
movq -0x268(%rbp), %rax
movb 0x229(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1a0917
movl $0x0, -0x124(%rbp)
movl -0x124(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x1a0915
movq -0x268(%rbp), %rdi
addq $0x8, %rdi
movslq -0x124(%rbp), %rsi
callq 0x19fa10
movq %rax, %rsi
leaq -0x140(%rbp), %rdi
callq 0x593a0
leaq -0x140(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68bd8(%rip), %rsi     # 0x20943f
callq 0x51b0
cmpl $0x0, %eax
je 0x1a0895
leaq -0x140(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x59310
movq %rax, %rdi
leaq 0x68cd0(%rip), %rsi     # 0x20955b
callq 0x51b0
cmpl $0x0, %eax
jne 0x1a08f5
movb $0x1, -0x21(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x140(%rbp), %rdi
callq 0x59310
movq %rax, %rsi
movq 0xd273d(%rip), %rdi     # 0x272ff0
callq 0x5480
movq %rax, -0x2a8(%rbp)
jmp 0x1a08c1
movq -0x2a8(%rbp), %rdi
leaq 0x69407(%rip), %rsi     # 0x209cd6
callq 0x5540
jmp 0x1a08d6
jmp 0x1a08f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x59290
jmp 0x1a0db1
leaq -0x140(%rbp), %rdi
callq 0x59290
movl -0x124(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x124(%rbp)
jmp 0x1a0818
jmp 0x1a0917
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1a0c95
movq -0x268(%rbp), %rsi
leaq -0x240(%rbp), %rdi
addq $0x20, %rsi
callq 0x54d0
leaq -0x240(%rbp), %rdi
leaq 0x5b275(%rip), %rsi     # 0x1fbbc2
callq 0x5910
movq -0x268(%rbp), %rsi
leaq -0x240(%rbp), %rdi
addq $0x120, %rsi            # imm = 0x120
callq 0x5910
leaq -0x240(%rbp), %rsi
movq 0xd2646(%rip), %rdi     # 0x272fc0
callq 0x5540
movq %rax, %rdi
movq 0xd260f(%rip), %rsi     # 0x272f98
callq 0x55b0
movq -0x268(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
leaq 0x5226d(%rip), %rsi     # 0x1f2c10
callq 0x5730
cmpl $0x0, %eax
jne 0x1a09e2
movq -0x268(%rbp), %rax
leaq -0x240(%rbp), %rdi
movq %rax, %rsi
addq $0x248, %rsi            # imm = 0x248
movb 0xbb0(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x4f850
testb $0x1, %al
jne 0x1a09dd
movb $0x1, -0x21(%rbp)
jmp 0x1a0c93
movq -0x268(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
leaq 0x5221e(%rip), %rsi     # 0x1f2c15
callq 0x5730
cmpl $0x0, %eax
jne 0x1a0a36
movq -0x268(%rbp), %rax
leaq -0x240(%rbp), %rdi
movq %rax, %rsi
addq $0x248, %rsi            # imm = 0x248
movb 0xbb0(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x4ea70
testb $0x1, %al
jne 0x1a0a31
movb $0x1, -0x21(%rbp)
jmp 0x1a0c91
movq -0x268(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
leaq 0x68512(%rip), %rsi     # 0x208f5d
callq 0x5730
cmpl $0x0, %eax
jne 0x1a0a8a
movq -0x268(%rbp), %rax
leaq -0x240(%rbp), %rdi
movq %rax, %rsi
addq $0x248, %rsi            # imm = 0x248
movb 0xbb0(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x50000
testb $0x1, %al
jne 0x1a0a85
movb $0x1, -0x21(%rbp)
jmp 0x1a0c8f
movq -0x268(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
leaq 0x68502(%rip), %rsi     # 0x208fa1
callq 0x5730
cmpl $0x0, %eax
jne 0x1a0ade
movq -0x268(%rbp), %rax
leaq -0x240(%rbp), %rdi
movq %rax, %rsi
addq $0x248, %rsi            # imm = 0x248
movb 0xbb0(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x4b900
testb $0x1, %al
jne 0x1a0ad9
movb $0x1, -0x21(%rbp)
jmp 0x1a0c8d
movq -0x268(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
leaq 0x52138(%rip), %rsi     # 0x1f2c2b
callq 0x5730
cmpl $0x0, %eax
jne 0x1a0b32
movq -0x268(%rbp), %rax
leaq -0x240(%rbp), %rdi
movq %rax, %rsi
addq $0x248, %rsi            # imm = 0x248
movb 0xbb0(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x51f90
testb $0x1, %al
jne 0x1a0b2d
movb $0x1, -0x21(%rbp)
jmp 0x1a0c8b
movq -0x268(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
leaq 0x684a3(%rip), %rsi     # 0x208fea
callq 0x5730
cmpl $0x0, %eax
jne 0x1a0b86
movq -0x268(%rbp), %rax
leaq -0x240(%rbp), %rdi
movq %rax, %rsi
addq $0x248, %rsi            # imm = 0x248
movb 0xbb0(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x52ee0
testb $0x1, %al
jne 0x1a0b81
movb $0x1, -0x21(%rbp)
jmp 0x1a0c89
movq -0x268(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
leaq 0x5209a(%rip), %rsi     # 0x1f2c35
callq 0x5730
cmpl $0x0, %eax
jne 0x1a0bda
movq -0x268(%rbp), %rax
leaq -0x240(%rbp), %rdi
movq %rax, %rsi
addq $0x248, %rsi            # imm = 0x248
movb 0xbb0(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x527b0
testb $0x1, %al
jne 0x1a0bd5
movb $0x1, -0x21(%rbp)
jmp 0x1a0c87
movq -0x268(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
leaq 0x52041(%rip), %rsi     # 0x1f2c30
callq 0x5730
cmpl $0x0, %eax
jne 0x1a0c2b
movq -0x268(%rbp), %rax
leaq -0x240(%rbp), %rdi
movq %rax, %rsi
addq $0x248, %rsi            # imm = 0x248
movb 0xbb0(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x53650
testb $0x1, %al
jne 0x1a0c29
movb $0x1, -0x21(%rbp)
jmp 0x1a0c85
movq 0xd23be(%rip), %rdi     # 0x272ff0
leaq 0x682e7(%rip), %rsi     # 0x208f20
callq 0x5540
movq -0x268(%rbp), %rsi
movq %rax, %rdi
addq $0x120, %rsi            # imm = 0x120
callq 0x5540
movq %rax, %rdi
leaq 0x589c7(%rip), %rsi     # 0x1f9625
callq 0x5540
movq %rax, %rdi
leaq 0x51f96(%rip), %rsi     # 0x1f2c03
callq 0x5540
movq %rax, %rdi
leaq 0x589a9(%rip), %rsi     # 0x1f9625
callq 0x5540
movb $0x1, -0x21(%rbp)
jmp 0x1a0c87
jmp 0x1a0c89
jmp 0x1a0c8b
jmp 0x1a0c8d
jmp 0x1a0c8f
jmp 0x1a0c91
jmp 0x1a0c93
jmp 0x1a0c95
testb $0x1, -0x21(%rbp)
jne 0x1a0d94
movq -0x268(%rbp), %rax
testb $0x1, 0xbb0(%rax)
je 0x1a0cc2
movq -0x268(%rbp), %rdi
addq $0x248, %rdi            # imm = 0x248
callq 0x9680
movq -0x268(%rbp), %rsi
movb 0xbb3(%rsi), %al
addq $0x248, %rsi            # imm = 0x248
andb $0x1, %al
movzbl %al, %edi
callq 0x9750
movq -0x268(%rbp), %rsi
movq %rsi, %rdi
addq $0x248, %rdi            # imm = 0x248
addq $0x248, %rsi            # imm = 0x248
addq $0x460, %rsi            # imm = 0x460
callq 0x96980
movq -0x268(%rbp), %rax
testb $0x1, 0xbb0(%rax)
je 0x1a0d92
movq -0x268(%rbp), %rax
testb $0x1, 0xbb5(%rax)
je 0x1a0d92
movq -0x268(%rbp), %rsi
movq %rsi, %rax
addq $0x248, %rax            # imm = 0x248
movq %rax, -0x2b8(%rbp)
addq $0xbb8, %rsi            # imm = 0xBB8
leaq -0x260(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x5220
movq -0x2b8(%rbp), %rdi
movq -0x2b0(%rbp), %rsi
callq 0xfc1c0
jmp 0x1a0d6a
leaq -0x260(%rbp), %rdi
callq 0x5300
jmp 0x1a0d92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x5300
jmp 0x1a0db1
jmp 0x1a0d94
movq -0x268(%rbp), %rax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movb %cl, (%rax)
movb -0x21(%rbp), %al
andb $0x1, %al
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
movq -0x70(%rbp), %rdi
callq 0x58f0
nopw (%rax,%rax)