// File: nompelis[P]INTecplotLib/intecplot.cpp
// Function: inTec_Zone::Dump(char const*)
int inTec_Zone::Dump( const char *filename )
{
   if( filename == NULL ) {
#ifdef _DEBUG_
      printf(" e You need to supply a non-null filename string \n");
#endif
      return(1);
   }
   if( istate != 3 ) {
#ifdef _DEBUG_
      printf(" e Zone is in the wrong state: %d \n", istate );
#endif
      return(2);
   }

#ifdef _DEBUG_
   printf(" i Dumping zone to file \"%s\"\n", filename);
#endif

   FILE *fout = fopen( filename, "w" );
   if( fout == NULL ) {
      printf(" e Could not open file for writing!\n");
      return(-1);
   }

   // write the variables first
   fprintf( fout, "VARIABLES = " );
   // (queries back the file structure/class)
   for(int n=0;n<num_var;++n) {
      const char *s = file->GetVariableName( n );
      fprintf( fout, "\"%s\" ", s );
   }
   fprintf( fout, "\n" );

   // put a zone keywords and attach the "T" keyword to it
   fprintf( fout, "ZONE " );
   std::map< std::string, std::string > :: iterator imt;
   for( imt = keywords.begin(); imt != keywords.end(); ++imt ) {
      if( strlen( (*imt).first.c_str() ) == 1 ) {
         if( strncmp( (*imt).first.c_str(), "T", 1 ) == 0 ) {
            const char *s = (*imt).second.c_str();
            if( s[0] == '\"' ) {
               fprintf( fout, "T=%s, ", s );
            } else {
               fprintf( fout, "T=\"%s\", ", s );
            }
         }
      }
   }

   // decide which essential keywords to use
   if( ietype == ORDERED ) {
      if( im > 0 ) fprintf( fout, "I=%ld, ", im );
      if( jm > 0 ) fprintf( fout, "J=%ld, ", jm );
      if( km > 0 ) fprintf( fout, "K=%ld, ", km );



   } else {
      if( nodes > 0 ) fprintf( fout, "NODES=%ld, ", nodes );
      if( elems > 0 ) fprintf( fout, "ELEMENTS=%ld, ", elems );

      if( ietype == FETRIANGLE ) 
         fprintf( fout, "ZONETYPE=FETRIANGLE, " );
      if( ietype == FEQUADRILATERAL ) 
         fprintf( fout, "ZONETYPE=FEQUADRILATERAL, " );
      if( ietype == FETETRAHEDRON ) 
         fprintf( fout, "ZONETYPE=FETETRAHEDRON, " );
      if( ietype == FEBRICK )
         fprintf( fout, "ZONETYPE=FEBRICK, " );


   // for( imt = keywords.begin(); imt != keywords.end(); ++imt ) {
   //    if( strlen( (*imt).first.c_str() ) == 11 ) {
   //       if( strncmp( (*imt).first.c_str(), "VARLOCATION", 11 ) == 0 ) {
   //          fprintf( fout, "VARLOCATION=%s ", (*imt).second.c_str() );
   //       }
   //    }
   // }

   }

   if( idatapack == 1 ) {
      fprintf( fout, " DATAPACKING=POINT,\n" );
   } else {
      fprintf( fout, " DATAPACKING=BLOCK,\n" );
   }

   for( imt = keywords.begin(); imt != keywords.end(); ++imt ) {
      if( strlen( (*imt).first.c_str() ) == 11 ) {
         const char *s = (*imt).second.c_str();
         // perhaps do some string sanitation here (capitalization, etc...)
         if( strncmp( (*imt).first.c_str(), "VARLOCATION", 11 ) == 0 ) {
            fprintf( fout, "VARLOCATION=%s ", s );
         }
      }
   }
   fprintf( fout, "\n" );


   if( ietype == ORDERED ) {
      unsigned long jmt=1,kmt=1;

      if( idatapack == 1 ) {
         if( jm > 0 ) jmt = jm;
         if( km > 0 ) kmt = km;

         for(unsigned long k=0;k<kmt;++k) {
         for(unsigned long j=0;j<jmt;++j) {
         for(unsigned long i=0;i<im;++i) {
            unsigned long n = k*jmt*im + j*im + i;
            for(int kk=0;kk<num_var;++kk) {
               fprintf( fout, " %18.11e", var_vec[kk][n] );
            }
            fprintf( fout, "\n");
         }}}
      } else {
         for(int kk=0;kk<num_var;++kk) {
            if( ivar_loc[kk+1] == 1 ) {   // nodal
               if( jm > 0 ) jmt = jm;
               if( km > 0 ) kmt = km;

               for(unsigned long k=0;k<kmt;++k) {
               for(unsigned long j=0;j<jmt;++j) {
               for(unsigned long i=0;i<im;++i) {
                  unsigned long n = k*jmt*im + j*im + i;
                  fprintf( fout, " %18.11e \n", var_vec[kk][n] );
               }}}
            } else {  // cell-centered
               if( jm > 0 ) jmt = jm-1;
               if( km > 0 ) kmt = km-1;

               for(unsigned long i=0;i<im-1;++i) {
               for(unsigned long j=0;j<jmt;++j) {
               for(unsigned long k=0;k<kmt;++k) {
                  unsigned long n = k*jmt*(im-1) + j*(im-1) + i;
                  fprintf( fout, " %18.11e \n", var_vec[kk][n] );
               }}}
            }
         }
      } // datapack
   } else {  // unstructured data
      if( idatapack == 1 ) {
         for(unsigned long n=0;n<nodes;++n) {
            for(int kk=0;kk<num_var;++kk) {
               fprintf( fout, " %18.11e", var_vec[kk][n] );
            }
            fprintf( fout, " \n" );
         }
      } else {
         for(int kk=0;kk<num_var;++kk) {
            if( ivar_loc[kk+1] == 1 ) {   // nodal
               for(unsigned long n=0;n<nodes;++n) {
                  fprintf( fout, " %18.11e \n", var_vec[kk][n] );
               }
            } else {  // cell-centered
               for(unsigned long n=0;n<elems;++n) {
                  fprintf( fout, " %18.11e \n", var_vec[kk][n] );
               }
            }
         }
      } // datapack

      // dump connectivity
      for(unsigned long i=0;i<elems;++i) {
         for(unsigned long j=0;j<ncon;++j) {
            fprintf( fout, " %ld", icon[ i*ncon + j ] );
         }
         fprintf( fout, "\n" );
      }
   }

   // close the file
   fflush( fout );
   fclose( fout );

#ifdef _DEBUG_
   printf(" i Finished dumping zone to file \"%s\"\n", filename);
#endif
   return(0);
}

// Assembly:
subq $0x158, %rsp            # imm = 0x158
movq %rdi, 0x148(%rsp)
movq %rsi, 0x140(%rsp)
movq 0x148(%rsp), %rax
movq %rax, 0x30(%rsp)
cmpq $0x0, 0x140(%rsp)
jne 0x1a41d
leaq 0xe986(%rip), %rdi      # 0x28d8c
movb $0x0, %al
callq 0x13070
movl $0x1, 0x154(%rsp)
jmp 0x1b189
movq 0x30(%rsp), %rax
cmpl $0x3, 0x8(%rax)
je 0x1a44e
movq 0x30(%rsp), %rax
movl 0x8(%rax), %esi
leaq 0xe988(%rip), %rdi      # 0x28dbf
movb $0x0, %al
callq 0x13070
movl $0x2, 0x154(%rsp)
jmp 0x1b189
movq 0x140(%rsp), %rsi
leaq 0xe986(%rip), %rdi      # 0x28de3
movb $0x0, %al
callq 0x13070
movq 0x140(%rsp), %rdi
leaq 0xe98e(%rip), %rsi      # 0x28e01
callq 0x14320
movq %rax, 0x138(%rsp)
cmpq $0x0, 0x138(%rsp)
jne 0x1a4a9
leaq 0xe971(%rip), %rdi      # 0x28e03
movb $0x0, %al
callq 0x13070
movl $0xffffffff, 0x154(%rsp) # imm = 0xFFFFFFFF
jmp 0x1b189
movq 0x138(%rsp), %rdi
leaq 0xe970(%rip), %rsi      # 0x28e28
movb $0x0, %al
callq 0x14800
movl $0x0, 0x134(%rsp)
movq 0x30(%rsp), %rcx
movl 0x134(%rsp), %eax
cmpl 0x20(%rcx), %eax
jge 0x1a52c
movq 0x30(%rsp), %rax
movq 0xc8(%rax), %rdi
movl 0x134(%rsp), %esi
callq 0x130a0
movq %rax, 0x128(%rsp)
movq 0x138(%rsp), %rdi
movq 0x128(%rsp), %rdx
leaq 0xe923(%rip), %rsi      # 0x28e35
movb $0x0, %al
callq 0x14800
movl 0x134(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x134(%rsp)
jmp 0x1a4ca
movq 0x138(%rsp), %rdi
leaq 0xe286(%rip), %rsi      # 0x287c1
movb $0x0, %al
callq 0x14800
movq 0x138(%rsp), %rdi
leaq 0xe8ea(%rip), %rsi      # 0x28e3b
movb $0x0, %al
callq 0x14800
leaq 0x120(%rsp), %rdi
callq 0x13660
movq 0x30(%rsp), %rdi
addq $0xe8, %rdi
callq 0x14600
movq %rax, 0x118(%rsp)
movq 0x118(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0x30(%rsp), %rdi
addq $0xe8, %rdi
callq 0x13980
movq %rax, 0x110(%rsp)
leaq 0x120(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x13d70
testb $0x1, %al
jne 0x1a5c5
jmp 0x1a6a1
leaq 0x120(%rsp), %rdi
callq 0x13c00
movq %rax, %rdi
callq 0x134f0
movq %rax, %rdi
callq 0x13540
cmpq $0x1, %rax
jne 0x1a68d
leaq 0x120(%rsp), %rdi
callq 0x13c00
movq %rax, %rdi
callq 0x134f0
movq %rax, %rdi
leaq 0xdb61(%rip), %rsi      # 0x2816c
movl $0x1, %edx
callq 0x135e0
cmpl $0x0, %eax
jne 0x1a68b
leaq 0x120(%rsp), %rdi
callq 0x13c00
movq %rax, %rdi
addq $0x20, %rdi
callq 0x134f0
movq %rax, 0x108(%rsp)
movq 0x108(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x22, %eax
jne 0x1a66b
movq 0x138(%rsp), %rdi
movq 0x108(%rsp), %rdx
leaq 0xe7df(%rip), %rsi      # 0x28e41
movb $0x0, %al
callq 0x14800
jmp 0x1a689
movq 0x138(%rsp), %rdi
movq 0x108(%rsp), %rdx
leaq 0xe7c6(%rip), %rsi      # 0x28e48
movb $0x0, %al
callq 0x14800
jmp 0x1a68b
jmp 0x1a68d
jmp 0x1a68f
leaq 0x120(%rsp), %rdi
callq 0x14ef0
jmp 0x1a58e
movq 0x30(%rsp), %rax
cmpl $0x0, 0x18(%rax)
jne 0x1a736
movq 0x30(%rsp), %rax
cmpq $0x0, 0x30(%rax)
jbe 0x1a6db
movq 0x30(%rsp), %rax
movq 0x138(%rsp), %rdi
movq 0x30(%rax), %rdx
leaq 0xe77d(%rip), %rsi      # 0x28e51
movb $0x0, %al
callq 0x14800
movq 0x30(%rsp), %rax
cmpq $0x0, 0x38(%rax)
jbe 0x1a706
movq 0x30(%rsp), %rax
movq 0x138(%rsp), %rdi
movq 0x38(%rax), %rdx
leaq 0xe75a(%rip), %rsi      # 0x28e59
movb $0x0, %al
callq 0x14800
movq 0x30(%rsp), %rax
cmpq $0x0, 0x40(%rax)
jbe 0x1a731
movq 0x30(%rsp), %rax
movq 0x138(%rsp), %rdi
movq 0x40(%rax), %rdx
leaq 0xe737(%rip), %rsi      # 0x28e61
movb $0x0, %al
callq 0x14800
jmp 0x1a812
movq 0x30(%rsp), %rax
cmpq $0x0, 0x48(%rax)
jbe 0x1a761
movq 0x30(%rsp), %rax
movq 0x138(%rsp), %rdi
movq 0x48(%rax), %rdx
leaq 0xe70f(%rip), %rsi      # 0x28e69
movb $0x0, %al
callq 0x14800
movq 0x30(%rsp), %rax
cmpq $0x0, 0x50(%rax)
jbe 0x1a78c
movq 0x30(%rsp), %rax
movq 0x138(%rsp), %rdi
movq 0x50(%rax), %rdx
leaq 0xe6f0(%rip), %rsi      # 0x28e75
movb $0x0, %al
callq 0x14800
movq 0x30(%rsp), %rax
cmpl $0x2, 0x18(%rax)
jne 0x1a7ad
movq 0x138(%rsp), %rdi
leaq 0xe6de(%rip), %rsi      # 0x28e84
movb $0x0, %al
callq 0x14800
movq 0x30(%rsp), %rax
cmpl $0x3, 0x18(%rax)
jne 0x1a7ce
movq 0x138(%rsp), %rdi
leaq 0xe6d3(%rip), %rsi      # 0x28e9a
movb $0x0, %al
callq 0x14800
movq 0x30(%rsp), %rax
cmpl $0x5, 0x18(%rax)
jne 0x1a7ef
movq 0x138(%rsp), %rdi
leaq 0xe6cd(%rip), %rsi      # 0x28eb5
movb $0x0, %al
callq 0x14800
movq 0x30(%rsp), %rax
cmpl $0x6, 0x18(%rax)
jne 0x1a810
movq 0x138(%rsp), %rdi
leaq 0xe6c5(%rip), %rsi      # 0x28ece
movb $0x0, %al
callq 0x14800
jmp 0x1a812
movq 0x30(%rsp), %rax
cmpl $0x1, 0x1c(%rax)
jne 0x1a835
movq 0x138(%rsp), %rdi
leaq 0xe6b5(%rip), %rsi      # 0x28ee1
movb $0x0, %al
callq 0x14800
jmp 0x1a84b
movq 0x138(%rsp), %rdi
leaq 0xe6b2(%rip), %rsi      # 0x28ef6
movb $0x0, %al
callq 0x14800
movq 0x30(%rsp), %rdi
addq $0xe8, %rdi
callq 0x14600
movq %rax, 0x100(%rsp)
movq 0x100(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0x30(%rsp), %rdi
addq $0xe8, %rdi
callq 0x13980
movq %rax, 0xf8(%rsp)
leaq 0x120(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x13d70
testb $0x1, %al
jne 0x1a8ab
jmp 0x1a951
leaq 0x120(%rsp), %rdi
callq 0x13c00
movq %rax, %rdi
callq 0x134f0
movq %rax, %rdi
callq 0x13540
cmpq $0xb, %rax
jne 0x1a93d
leaq 0x120(%rsp), %rdi
callq 0x13c00
movq %rax, %rdi
addq $0x20, %rdi
callq 0x134f0
movq %rax, 0xf0(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x13c00
movq %rax, %rdi
callq 0x134f0
movq %rax, %rdi
leaq 0xd87a(%rip), %rsi      # 0x28188
movl $0xb, %edx
callq 0x135e0
cmpl $0x0, %eax
jne 0x1a93b
movq 0x138(%rsp), %rdi
movq 0xf0(%rsp), %rdx
leaq 0xe5d7(%rip), %rsi      # 0x28f0b
movb $0x0, %al
callq 0x14800
jmp 0x1a93d
jmp 0x1a93f
leaq 0x120(%rsp), %rdi
callq 0x14ef0
jmp 0x1a874
movq 0x138(%rsp), %rdi
leaq 0xde61(%rip), %rsi      # 0x287c1
movb $0x0, %al
callq 0x14800
movq 0x30(%rsp), %rax
cmpl $0x0, 0x18(%rax)
jne 0x1aeb7
movq 0x30(%rsp), %rax
movq $0x1, 0xe8(%rsp)
movq $0x1, 0xe0(%rsp)
cmpl $0x1, 0x1c(%rax)
jne 0x1ab5b
movq 0x30(%rsp), %rax
cmpq $0x0, 0x38(%rax)
jbe 0x1a9ba
movq 0x30(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0xe8(%rsp)
movq 0x30(%rsp), %rax
cmpq $0x0, 0x40(%rax)
jbe 0x1a9d7
movq 0x30(%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, 0xe0(%rsp)
movq $0x0, 0xd8(%rsp)
movq 0xd8(%rsp), %rax
cmpq 0xe0(%rsp), %rax
jae 0x1ab56
movq $0x0, 0xd0(%rsp)
movq 0xd0(%rsp), %rax
cmpq 0xe8(%rsp), %rax
jae 0x1ab3b
movq $0x0, 0xc8(%rsp)
movq 0x30(%rsp), %rcx
movq 0xc8(%rsp), %rax
cmpq 0x30(%rcx), %rax
jae 0x1ab20
movq 0x30(%rsp), %rdx
movq 0xd8(%rsp), %rax
imulq 0xe8(%rsp), %rax
imulq 0x30(%rdx), %rax
movq 0xd0(%rsp), %rcx
imulq 0x30(%rdx), %rcx
addq %rcx, %rax
addq 0xc8(%rsp), %rax
movq %rax, 0xc0(%rsp)
movl $0x0, 0xbc(%rsp)
movq 0x30(%rsp), %rcx
movl 0xbc(%rsp), %eax
cmpl 0x20(%rcx), %eax
jge 0x1aaf1
movq 0x30(%rsp), %rdi
movq 0x138(%rsp), %rax
movq %rax, 0x28(%rsp)
addq $0x88, %rdi
movslq 0xbc(%rsp), %rsi
callq 0x14c90
movq 0x28(%rsp), %rdi
movq (%rax), %rax
movq 0xc0(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
leaq 0xe444(%rip), %rsi      # 0x28f1b
movb $0x1, %al
callq 0x14800
movl 0xbc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xbc(%rsp)
jmp 0x1aa84
movq 0x138(%rsp), %rdi
leaq 0xdcc1(%rip), %rsi      # 0x287c1
movb $0x0, %al
callq 0x14800
movq 0xc8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xc8(%rsp)
jmp 0x1aa27
jmp 0x1ab22
movq 0xd0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xd0(%rsp)
jmp 0x1aa05
jmp 0x1ab3d
movq 0xd8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xd8(%rsp)
jmp 0x1a9e3
jmp 0x1aeb2
movl $0x0, 0xb8(%rsp)
movq 0x30(%rsp), %rcx
movl 0xb8(%rsp), %eax
cmpl 0x20(%rcx), %eax
jge 0x1aeb0
movq 0x30(%rsp), %rdi
addq $0x58, %rdi
movl 0xb8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xb4(%rsp)
leaq 0xb4(%rsp), %rsi
callq 0x14210
cmpl $0x1, (%rax)
jne 0x1ad1f
movq 0x30(%rsp), %rax
cmpq $0x0, 0x38(%rax)
jbe 0x1abc8
movq 0x30(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0xe8(%rsp)
movq 0x30(%rsp), %rax
cmpq $0x0, 0x40(%rax)
jbe 0x1abe5
movq 0x30(%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, 0xe0(%rsp)
movq $0x0, 0xa8(%rsp)
movq 0xa8(%rsp), %rax
cmpq 0xe0(%rsp), %rax
jae 0x1ad1a
movq $0x0, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
cmpq 0xe8(%rsp), %rax
jae 0x1acff
movq $0x0, 0x98(%rsp)
movq 0x30(%rsp), %rcx
movq 0x98(%rsp), %rax
cmpq 0x30(%rcx), %rax
jae 0x1ace4
movq 0x30(%rsp), %rdi
movq 0xa8(%rsp), %rax
imulq 0xe8(%rsp), %rax
imulq 0x30(%rdi), %rax
movq 0xa0(%rsp), %rcx
imulq 0x30(%rdi), %rcx
addq %rcx, %rax
addq 0x98(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x138(%rsp), %rax
movq %rax, 0x20(%rsp)
addq $0x88, %rdi
movslq 0xb8(%rsp), %rsi
callq 0x14c90
movq 0x20(%rsp), %rdi
movq (%rax), %rax
movq 0x90(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
leaq 0xe260(%rip), %rsi      # 0x28f24
movb $0x1, %al
callq 0x14800
movq 0x98(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x98(%rsp)
jmp 0x1ac35
jmp 0x1ace6
movq 0xa0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xa0(%rsp)
jmp 0x1ac13
jmp 0x1ad01
movq 0xa8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xa8(%rsp)
jmp 0x1abf1
jmp 0x1ae98
movq 0x30(%rsp), %rax
cmpq $0x0, 0x38(%rax)
jbe 0x1ad40
movq 0x30(%rsp), %rax
movq 0x38(%rax), %rax
subq $0x1, %rax
movq %rax, 0xe8(%rsp)
movq 0x30(%rsp), %rax
cmpq $0x0, 0x40(%rax)
jbe 0x1ad61
movq 0x30(%rsp), %rax
movq 0x40(%rax), %rax
subq $0x1, %rax
movq %rax, 0xe0(%rsp)
movq $0x0, 0x88(%rsp)
movq 0x30(%rsp), %rcx
movq 0x88(%rsp), %rax
movq 0x30(%rcx), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x1ae96
movq $0x0, 0x80(%rsp)
movq 0x80(%rsp), %rax
cmpq 0xe8(%rsp), %rax
jae 0x1ae7b
movq $0x0, 0x78(%rsp)
movq 0x78(%rsp), %rax
cmpq 0xe0(%rsp), %rax
jae 0x1ae60
movq 0x30(%rsp), %rdi
movq 0x78(%rsp), %rax
imulq 0xe8(%rsp), %rax
movq 0x30(%rdi), %rcx
subq $0x1, %rcx
imulq %rcx, %rax
movq 0x80(%rsp), %rcx
movq 0x30(%rdi), %rdx
subq $0x1, %rdx
imulq %rdx, %rcx
addq %rcx, %rax
addq 0x88(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x138(%rsp), %rax
movq %rax, 0x18(%rsp)
addq $0x88, %rdi
movslq 0xb8(%rsp), %rsi
callq 0x14c90
movq 0x18(%rsp), %rdi
movq (%rax), %rax
movq 0x70(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
leaq 0xe0de(%rip), %rsi      # 0x28f24
movb $0x1, %al
callq 0x14800
movq 0x78(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x78(%rsp)
jmp 0x1adb6
jmp 0x1ae62
movq 0x80(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x80(%rsp)
jmp 0x1ad97
jmp 0x1ae7d
movq 0x88(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x88(%rsp)
jmp 0x1ad6d
jmp 0x1ae98
jmp 0x1ae9a
movl 0xb8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xb8(%rsp)
jmp 0x1ab66
jmp 0x1aeb2
jmp 0x1b14e
movq 0x30(%rsp), %rax
cmpl $0x1, 0x1c(%rax)
jne 0x1af77
movq $0x0, 0x68(%rsp)
movq 0x30(%rsp), %rcx
movq 0x68(%rsp), %rax
cmpq 0x48(%rcx), %rax
jae 0x1af72
movl $0x0, 0x64(%rsp)
movq 0x30(%rsp), %rcx
movl 0x64(%rsp), %eax
cmpl 0x20(%rcx), %eax
jge 0x1af49
movq 0x30(%rsp), %rdi
movq 0x138(%rsp), %rax
movq %rax, 0x10(%rsp)
addq $0x88, %rdi
movslq 0x64(%rsp), %rsi
callq 0x14c90
movq 0x10(%rsp), %rdi
movq (%rax), %rax
movq 0x68(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
leaq 0xdfe6(%rip), %rsi      # 0x28f1b
movb $0x1, %al
callq 0x14800
movl 0x64(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x64(%rsp)
jmp 0x1aeeb
movq 0x138(%rsp), %rdi
leaq 0xd868(%rip), %rsi      # 0x287c0
movb $0x0, %al
callq 0x14800
movq 0x68(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x68(%rsp)
jmp 0x1aecf
jmp 0x1b0a2
movl $0x0, 0x60(%rsp)
movq 0x30(%rsp), %rcx
movl 0x60(%rsp), %eax
cmpl 0x20(%rcx), %eax
jge 0x1b0a0
movq 0x30(%rsp), %rdi
addq $0x58, %rdi
movl 0x60(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x5c(%rsp)
leaq 0x5c(%rsp), %rsi
callq 0x14210
cmpl $0x1, (%rax)
jne 0x1b022
movq $0x0, 0x50(%rsp)
movq 0x30(%rsp), %rcx
movq 0x50(%rsp), %rax
cmpq 0x48(%rcx), %rax
jae 0x1b020
movq 0x30(%rsp), %rdi
movq 0x138(%rsp), %rax
movq %rax, 0x8(%rsp)
addq $0x88, %rdi
movslq 0x60(%rsp), %rsi
callq 0x14c90
movq 0x8(%rsp), %rdi
movq (%rax), %rax
movq 0x50(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
leaq 0xdf1b(%rip), %rsi      # 0x28f24
movb $0x1, %al
callq 0x14800
movq 0x50(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x50(%rsp)
jmp 0x1afbd
jmp 0x1b08e
movq $0x0, 0x48(%rsp)
movq 0x30(%rsp), %rcx
movq 0x48(%rsp), %rax
cmpq 0x50(%rcx), %rax
jae 0x1b08c
movq 0x30(%rsp), %rdi
movq 0x138(%rsp), %rax
movq %rax, (%rsp)
addq $0x88, %rdi
movslq 0x60(%rsp), %rsi
callq 0x14c90
movq (%rsp), %rdi
movq (%rax), %rax
movq 0x48(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
leaq 0xdeaf(%rip), %rsi      # 0x28f24
movb $0x1, %al
callq 0x14800
movq 0x48(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x48(%rsp)
jmp 0x1b02b
jmp 0x1b08e
jmp 0x1b090
movl 0x60(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x60(%rsp)
jmp 0x1af7f
jmp 0x1b0a2
movq $0x0, 0x40(%rsp)
movq 0x30(%rsp), %rcx
movq 0x40(%rsp), %rax
cmpq 0x50(%rcx), %rax
jae 0x1b14c
movq $0x0, 0x38(%rsp)
movq 0x30(%rsp), %rcx
movq 0x38(%rsp), %rax
cmpq 0xa8(%rcx), %rax
jae 0x1b123
movq 0x30(%rsp), %rdx
movq 0x138(%rsp), %rdi
movq 0xa0(%rdx), %rax
movq 0x40(%rsp), %rcx
imulq 0xa8(%rdx), %rcx
addq 0x38(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0xdc7b(%rip), %rsi      # 0x28d87
movb $0x0, %al
callq 0x14800
movq 0x38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x38(%rsp)
jmp 0x1b0c8
movq 0x138(%rsp), %rdi
leaq 0xd68f(%rip), %rsi      # 0x287c1
movb $0x0, %al
callq 0x14800
movq 0x40(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x40(%rsp)
jmp 0x1b0ab
jmp 0x1b14e
movq 0x138(%rsp), %rdi
callq 0x14300
movq 0x138(%rsp), %rdi
callq 0x13f90
movq 0x140(%rsp), %rsi
leaq 0xddb8(%rip), %rdi      # 0x28f2f
movb $0x0, %al
callq 0x13070
movl $0x0, 0x154(%rsp)
movl 0x154(%rsp), %eax
addq $0x158, %rsp            # imm = 0x158
retq
nopl (%rax,%rax)