// File: Luthaf[P]zeopp/networkio.cc
// Function: readCSSRFile(char*, ATOM_NETWORK*, bool)
bool readCSSRFile(char *filename, ATOM_NETWORK *cell, bool radial){
  string garbage; //this is a garbage string to read line
  int i,j;

  fstream input;
  input.open(filename);
  if(input.is_open()==true){
    // Read the header information
    cout << "Reading input file: " << filename << endl;
    input.ignore(38);
    input >> cell->a >> cell->b >> cell->c;
    getline(input,garbage);

    input.ignore(21);
    input >> cell->alpha >> cell->beta >> cell->gamma;
    getline(input,garbage);

    string numStr;
    bool longCSSR=false;  // this flag wiill enable switching to a different read routine
                          // to handle files with number of atoms larger than 10000
    bool CartCoords=false; // this flag enables reading Cartesian coordinates

    input >> numStr >> CartCoords;
    getline(input,garbage);
//    input >> cell->numAtoms;
    if(numStr.compare("****") == 0) longCSSR=true;

//    input >> i >> cell->name;  // some files have '0' preceeding name
//    getline(input,garbage);
    getline(input,cell->name);
    cell->initialize();

    if(longCSSR == false){
      cell->numAtoms = atoi(numStr.c_str());

      // Read and store information about each atom
      for(j=0;j<cell->numAtoms;j++) {
        ATOM newAtom;

        if(CartCoords==false) {
           input >> newAtom.specialID >> newAtom.type >> newAtom.a_coord >> newAtom.b_coord >>newAtom.c_coord;
           newAtom.a_coord = trans_to_origuc(newAtom.a_coord);
           newAtom.b_coord = trans_to_origuc(newAtom.b_coord);
           newAtom.c_coord = trans_to_origuc(newAtom.c_coord);
           Point newCoords=cell->abc_to_xyz(newAtom.a_coord,newAtom.b_coord,newAtom.c_coord);
           newAtom.x=newCoords[0]; newAtom.y=newCoords[1]; newAtom.z=newCoords[2];}
         else{ // read-in cartesian
           input >> newAtom.specialID >> newAtom.type >> newAtom.x >> newAtom.y >> newAtom.z;
           Point newCoords=cell->xyz_to_abc(newAtom.x,newAtom.y,newAtom.z);
           newAtom.a_coord=newCoords[0]; newAtom.b_coord=newCoords[1]; newAtom.c_coord=newCoords[2];
           newAtom.a_coord = trans_to_origuc(newAtom.a_coord);
           newAtom.b_coord = trans_to_origuc(newAtom.b_coord);
           newAtom.c_coord = trans_to_origuc(newAtom.c_coord);
           newCoords=cell->abc_to_xyz(newAtom.a_coord,newAtom.b_coord,newAtom.c_coord);
           newAtom.x=newCoords[0]; newAtom.y=newCoords[1]; newAtom.z=newCoords[2];
           };

        newAtom.radius=lookupRadius(newAtom.type, radial);
        cell->atoms.push_back(newAtom);
//        getline(input,garbage);
        //read these numbers after the coords, since the final field contains charge information
        int empty_int = 0;
        for(int k=0; k<8; k++) input >> empty_int;
        input >> newAtom.charge;
        }
      }
    else{ // start longCSSR=true
      cout << "Long CSSR file. Switching to another reading routine.\n" ;
      int na=1;
      while(!input.eof())
        {
        ATOM newAtom;
        newAtom.specialID = na;
        input >> garbage;
        if(input.eof())
          {
          na--;
          break;
          };
        if(CartCoords==false) {
          input >> newAtom.type >> newAtom.a_coord >> newAtom.b_coord >>newAtom.c_coord;
          newAtom.a_coord = trans_to_origuc(newAtom.a_coord);
          newAtom.b_coord = trans_to_origuc(newAtom.b_coord);
          newAtom.c_coord = trans_to_origuc(newAtom.c_coord);
          Point newCoords=cell->abc_to_xyz(newAtom.a_coord,newAtom.b_coord,newAtom.c_coord);
          newAtom.x=newCoords[0]; newAtom.y=newCoords[1]; newAtom.z=newCoords[2];}
        else{  // input in cartesian
          input >> newAtom.type >> newAtom.x >> newAtom.y >> newAtom.z;
          Point newCoords=cell->xyz_to_abc(newAtom.x,newAtom.y,newAtom.z);
          newAtom.a_coord=newCoords[0]; newAtom.b_coord=newCoords[1]; newAtom.c_coord=newCoords[2];
          newAtom.a_coord = trans_to_origuc(newAtom.a_coord);
          newAtom.b_coord = trans_to_origuc(newAtom.b_coord);
          newAtom.c_coord = trans_to_origuc(newAtom.c_coord);
          newCoords=cell->abc_to_xyz(newAtom.a_coord,newAtom.b_coord,newAtom.c_coord);
          newAtom.x=newCoords[0]; newAtom.y=newCoords[1]; newAtom.z=newCoords[2];
          };

        newAtom.radius=lookupRadius(newAtom.type, radial);
        //read these numbers after the coords, since the final field contains charge information
        int empty_int = 0;
        for(int k=0; k<8; k++) input >> empty_int;
        input >> newAtom.charge;
        cell->atoms.push_back(newAtom);
//        cout << na << "  " << newAtom.type << " " << newAtom.a_coord << "  " << newAtom.b_coord << "  " << newAtom.c_coord << endl;
        na++;
        };
      cell->numAtoms = na;
      cout << na << " atoms read." << endl;
    };// end longCSSR=true

    input.close();
  }
  else{
    cerr << "Error: CSSR failed to open " << filename << endl;
//    abort();
    return false;
  }
  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x6b0, %rsp            # imm = 0x6B0
movb %dl, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5720
leaq -0x258(%rbp), %rdi
callq 0x5660
jmp 0x50031
movq -0x10(%rbp), %rax
movq %rax, -0x4d0(%rbp)
movl $0x8, %edi
movl $0x10, %esi
callq 0x47640
movl %eax, -0x4c4(%rbp)
jmp 0x50053
movl -0x4c4(%rbp), %edx
movq -0x4d0(%rbp), %rsi
leaq -0x258(%rbp), %rdi
callq 0x54b0
jmp 0x5006e
leaq -0x258(%rbp), %rdi
callq 0x58b0
movb %al, -0x4d1(%rbp)
jmp 0x50082
movb -0x4d1(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x50ef9
movq 0x222f23(%rip), %rdi    # 0x272fc0
leaq 0x1a3283(%rip), %rsi    # 0x1f3327
callq 0x5540
movq %rax, -0x4e0(%rbp)
jmp 0x500b2
movq -0x4e0(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5540
movq %rax, -0x4e8(%rbp)
jmp 0x500cb
movq -0x4e8(%rbp), %rdi
movq 0x222ebf(%rip), %rsi    # 0x272f98
callq 0x55b0
jmp 0x500e0
leaq -0x258(%rbp), %rdi
movl $0x26, %esi
callq 0x5090
jmp 0x500f3
movq -0x18(%rbp), %rsi
addq $0x8, %rsi
leaq -0x258(%rbp), %rdi
callq 0x5420
movq %rax, -0x4f0(%rbp)
jmp 0x50110
movq -0x4f0(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x10, %rsi
callq 0x5420
movq %rax, -0x4f8(%rbp)
jmp 0x5012d
movq -0x4f8(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x18, %rsi
callq 0x5420
jmp 0x50143
leaq -0x258(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x5110
jmp 0x50155
leaq -0x258(%rbp), %rdi
movl $0x15, %esi
callq 0x5090
jmp 0x50168
movq -0x18(%rbp), %rsi
addq $0x20, %rsi
leaq -0x258(%rbp), %rdi
callq 0x5420
movq %rax, -0x500(%rbp)
jmp 0x50185
movq -0x500(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x28, %rsi
callq 0x5420
movq %rax, -0x508(%rbp)
jmp 0x501a2
movq -0x508(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x30, %rsi
callq 0x5420
jmp 0x501b8
leaq -0x258(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x5110
jmp 0x501ca
leaq -0x288(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0x5720
movq -0x518(%rbp), %rsi
movb $0x0, -0x289(%rbp)
movb $0x0, -0x28a(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x56a0
movq %rax, -0x510(%rbp)
jmp 0x50207
movq -0x510(%rbp), %rdi
leaq -0x28a(%rbp), %rsi
callq 0x5460
jmp 0x5021c
leaq -0x258(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x5110
jmp 0x5022e
leaq -0x288(%rbp), %rdi
leaq 0x1a3421(%rip), %rsi    # 0x1f365d
callq 0x51b0
cmpl $0x0, %eax
jne 0x50294
movb $0x1, -0x289(%rbp)
jmp 0x50294
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x260(%rbp)
movl %eax, -0x264(%rbp)
jmp 0x50f90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x260(%rbp)
movl %eax, -0x264(%rbp)
jmp 0x50f84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x260(%rbp)
movl %eax, -0x264(%rbp)
jmp 0x50ee8
movq -0x18(%rbp), %rsi
addq $0x320, %rsi            # imm = 0x320
leaq -0x258(%rbp), %rdi
callq 0x5110
jmp 0x502ad
movq -0x18(%rbp), %rdi
callq 0x96250
jmp 0x502b8
movb -0x289(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x5086f
leaq -0x288(%rbp), %rdi
callq 0x5200
movq %rax, %rdi
callq 0x57d0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x110(%rax)
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x110(%rcx), %eax
jge 0x5086a
leaq -0x328(%rbp), %rdi
callq 0x954b0
jmp 0x50314
movb -0x28a(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x504ec
leaq -0x2a8(%rbp), %rsi
leaq -0x258(%rbp), %rdi
callq 0x52f0
movq %rax, -0x520(%rbp)
jmp 0x50344
movq -0x520(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x56a0
movq %rax, -0x528(%rbp)
jmp 0x50360
movq -0x528(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x5420
movq %rax, -0x530(%rbp)
jmp 0x5037c
movq -0x530(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x5420
movq %rax, -0x538(%rbp)
jmp 0x50398
movq -0x538(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x5420
jmp 0x503ad
movsd -0x310(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x540(%rbp)
jmp 0x503c4
movsd -0x540(%rbp), %xmm0
movsd %xmm0, -0x310(%rbp)
movsd -0x308(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x548(%rbp)
jmp 0x503eb
movsd -0x548(%rbp), %xmm0
movsd %xmm0, -0x308(%rbp)
movsd -0x300(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x550(%rbp)
jmp 0x50412
movsd -0x550(%rbp), %xmm0
movsd %xmm0, -0x300(%rbp)
movq -0x18(%rbp), %rsi
movsd -0x310(%rbp), %xmm0
movsd -0x308(%rbp), %xmm1
movsd -0x300(%rbp), %xmm2
leaq -0x340(%rbp), %rdi
callq 0x97170
jmp 0x5044c
leaq -0x340(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x558(%rbp)
jmp 0x50463
movq -0x558(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x328(%rbp)
leaq -0x340(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x560(%rbp)
jmp 0x50490
movq -0x560(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x320(%rbp)
leaq -0x340(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x568(%rbp)
jmp 0x504bd
movq -0x568(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x318(%rbp)
jmp 0x5075e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x260(%rbp)
movl %eax, -0x264(%rbp)
jmp 0x50859
leaq -0x2a8(%rbp), %rsi
leaq -0x258(%rbp), %rdi
callq 0x52f0
movq %rax, -0x570(%rbp)
jmp 0x50508
movq -0x570(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x56a0
movq %rax, -0x578(%rbp)
jmp 0x50524
movq -0x578(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x5420
movq %rax, -0x580(%rbp)
jmp 0x50540
movq -0x580(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x5420
movq %rax, -0x588(%rbp)
jmp 0x5055c
movq -0x588(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x5420
jmp 0x50571
movq -0x18(%rbp), %rsi
movsd -0x328(%rbp), %xmm0
movsd -0x320(%rbp), %xmm1
movsd -0x318(%rbp), %xmm2
leaq -0x360(%rbp), %rdi
callq 0x97360
jmp 0x5059b
leaq -0x360(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x590(%rbp)
jmp 0x505b2
movq -0x590(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x310(%rbp)
leaq -0x360(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x598(%rbp)
jmp 0x505df
movq -0x598(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x308(%rbp)
leaq -0x360(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x5a0(%rbp)
jmp 0x5060c
movq -0x5a0(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x300(%rbp)
movsd -0x310(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x5a8(%rbp)
jmp 0x50636
movsd -0x5a8(%rbp), %xmm0
movsd %xmm0, -0x310(%rbp)
movsd -0x308(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x5b0(%rbp)
jmp 0x5065d
movsd -0x5b0(%rbp), %xmm0
movsd %xmm0, -0x308(%rbp)
movsd -0x300(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x5b8(%rbp)
jmp 0x50684
movsd -0x5b8(%rbp), %xmm0
movsd %xmm0, -0x300(%rbp)
movq -0x18(%rbp), %rsi
movsd -0x310(%rbp), %xmm0
movsd -0x308(%rbp), %xmm1
movsd -0x300(%rbp), %xmm2
leaq -0x378(%rbp), %rdi
callq 0x97170
jmp 0x506be
movq -0x368(%rbp), %rax
movq %rax, -0x350(%rbp)
movups -0x378(%rbp), %xmm0
movaps %xmm0, -0x360(%rbp)
leaq -0x360(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x5c0(%rbp)
jmp 0x506f1
movq -0x5c0(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x328(%rbp)
leaq -0x360(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x5c8(%rbp)
jmp 0x5071e
movq -0x5c8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x320(%rbp)
leaq -0x360(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x5d0(%rbp)
jmp 0x5074b
movq -0x5d0(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x318(%rbp)
leaq -0x2e8(%rbp), %rsi
leaq -0x398(%rbp), %rdi
callq 0x5220
jmp 0x50773
movzbl -0x19(%rbp), %esi
andl $0x1, %esi
leaq -0x398(%rbp), %rdi
callq 0x466e0
movsd %xmm0, -0x5d8(%rbp)
jmp 0x50790
movsd -0x5d8(%rbp), %xmm0
movsd %xmm0, -0x2f8(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x5300
movq -0x18(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
leaq -0x328(%rbp), %rsi
callq 0xf190
jmp 0x507c5
movl $0x0, -0x39c(%rbp)
movl $0x0, -0x3a0(%rbp)
cmpl $0x8, -0x3a0(%rbp)
jge 0x5082a
leaq -0x258(%rbp), %rdi
leaq -0x39c(%rbp), %rsi
callq 0x52f0
jmp 0x507f7
jmp 0x507f9
movl -0x3a0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3a0(%rbp)
jmp 0x507d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x260(%rbp)
movl %eax, -0x264(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x5300
jmp 0x50859
leaq -0x2a0(%rbp), %rsi
leaq -0x258(%rbp), %rdi
callq 0x5420
jmp 0x5083f
leaq -0x328(%rbp), %rdi
callq 0xf200
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x502f3
leaq -0x328(%rbp), %rdi
callq 0xf200
jmp 0x50ee8
jmp 0x50ecc
movq 0x22274a(%rip), %rdi    # 0x272fc0
leaq 0x1a2abf(%rip), %rsi    # 0x1f333c
callq 0x5540
jmp 0x50884
movl $0x1, -0x3a4(%rbp)
movq -0x258(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x258(%rbp,%rax), %rdi
callq 0x5960
movb %al, -0x5d9(%rbp)
jmp 0x508ae
movb -0x5d9(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x508bf
jmp 0x50e6e
leaq -0x440(%rbp), %rdi
callq 0x954b0
jmp 0x508cd
movl -0x3a4(%rbp), %eax
movl %eax, -0x3c0(%rbp)
leaq -0x258(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x56a0
jmp 0x508eb
movq -0x258(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x258(%rbp,%rax), %rdi
callq 0x5960
movb %al, -0x5da(%rbp)
jmp 0x5090b
movb -0x5da(%rbp), %al
testb $0x1, %al
jne 0x50917
jmp 0x5094c
movl -0x3a4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3a4(%rbp)
movl $0x9, -0x444(%rbp)
jmp 0x50e41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x260(%rbp)
movl %eax, -0x264(%rbp)
jmp 0x50e60
movb -0x28a(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x50af1
leaq -0x400(%rbp), %rsi
leaq -0x258(%rbp), %rdi
callq 0x56a0
movq %rax, -0x5e8(%rbp)
jmp 0x5097c
movq -0x5e8(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0x5420
movq %rax, -0x5f0(%rbp)
jmp 0x50998
movq -0x5f0(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x5420
movq %rax, -0x5f8(%rbp)
jmp 0x509b4
movq -0x5f8(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x5420
jmp 0x509c9
movsd -0x428(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x600(%rbp)
jmp 0x509e0
movsd -0x600(%rbp), %xmm0
movsd %xmm0, -0x428(%rbp)
movsd -0x420(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x608(%rbp)
jmp 0x50a07
movsd -0x608(%rbp), %xmm0
movsd %xmm0, -0x420(%rbp)
movsd -0x418(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x610(%rbp)
jmp 0x50a2e
movsd -0x610(%rbp), %xmm0
movsd %xmm0, -0x418(%rbp)
movq -0x18(%rbp), %rsi
movsd -0x428(%rbp), %xmm0
movsd -0x420(%rbp), %xmm1
movsd -0x418(%rbp), %xmm2
leaq -0x460(%rbp), %rdi
callq 0x97170
jmp 0x50a68
leaq -0x460(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x618(%rbp)
jmp 0x50a7f
movq -0x618(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x440(%rbp)
leaq -0x460(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x620(%rbp)
jmp 0x50aac
movq -0x620(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x438(%rbp)
leaq -0x460(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x628(%rbp)
jmp 0x50ad9
movq -0x628(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x430(%rbp)
jmp 0x50d47
leaq -0x400(%rbp), %rsi
leaq -0x258(%rbp), %rdi
callq 0x56a0
movq %rax, -0x630(%rbp)
jmp 0x50b0d
movq -0x630(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x5420
movq %rax, -0x638(%rbp)
jmp 0x50b29
movq -0x638(%rbp), %rdi
leaq -0x438(%rbp), %rsi
callq 0x5420
movq %rax, -0x640(%rbp)
jmp 0x50b45
movq -0x640(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x5420
jmp 0x50b5a
movq -0x18(%rbp), %rsi
movsd -0x440(%rbp), %xmm0
movsd -0x438(%rbp), %xmm1
movsd -0x430(%rbp), %xmm2
leaq -0x480(%rbp), %rdi
callq 0x97360
jmp 0x50b84
leaq -0x480(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x648(%rbp)
jmp 0x50b9b
movq -0x648(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x428(%rbp)
leaq -0x480(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x650(%rbp)
jmp 0x50bc8
movq -0x650(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x420(%rbp)
leaq -0x480(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x658(%rbp)
jmp 0x50bf5
movq -0x658(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x418(%rbp)
movsd -0x428(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x660(%rbp)
jmp 0x50c1f
movsd -0x660(%rbp), %xmm0
movsd %xmm0, -0x428(%rbp)
movsd -0x420(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x668(%rbp)
jmp 0x50c46
movsd -0x668(%rbp), %xmm0
movsd %xmm0, -0x420(%rbp)
movsd -0x418(%rbp), %xmm0
callq 0xe9290
movsd %xmm0, -0x670(%rbp)
jmp 0x50c6d
movsd -0x670(%rbp), %xmm0
movsd %xmm0, -0x418(%rbp)
movq -0x18(%rbp), %rsi
movsd -0x428(%rbp), %xmm0
movsd -0x420(%rbp), %xmm1
movsd -0x418(%rbp), %xmm2
leaq -0x498(%rbp), %rdi
callq 0x97170
jmp 0x50ca7
movq -0x488(%rbp), %rax
movq %rax, -0x470(%rbp)
movups -0x498(%rbp), %xmm0
movaps %xmm0, -0x480(%rbp)
leaq -0x480(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x678(%rbp)
jmp 0x50cda
movq -0x678(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x440(%rbp)
leaq -0x480(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x680(%rbp)
jmp 0x50d07
movq -0x680(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x438(%rbp)
leaq -0x480(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x688(%rbp)
jmp 0x50d34
movq -0x688(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x430(%rbp)
leaq -0x400(%rbp), %rsi
leaq -0x4b8(%rbp), %rdi
callq 0x5220
jmp 0x50d5c
movzbl -0x19(%rbp), %esi
andl $0x1, %esi
leaq -0x4b8(%rbp), %rdi
callq 0x466e0
movsd %xmm0, -0x690(%rbp)
jmp 0x50d79
movsd -0x690(%rbp), %xmm0
movsd %xmm0, -0x410(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0x5300
movl $0x0, -0x4bc(%rbp)
movl $0x0, -0x4c0(%rbp)
cmpl $0x8, -0x4c0(%rbp)
jge 0x50dfa
leaq -0x258(%rbp), %rdi
leaq -0x4bc(%rbp), %rsi
callq 0x52f0
jmp 0x50dc7
jmp 0x50dc9
movl -0x4c0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c0(%rbp)
jmp 0x50da9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x260(%rbp)
movl %eax, -0x264(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0x5300
jmp 0x50e60
leaq -0x3b8(%rbp), %rsi
leaq -0x258(%rbp), %rdi
callq 0x5420
jmp 0x50e0f
movq -0x18(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
leaq -0x440(%rbp), %rsi
callq 0xf190
jmp 0x50e28
movl -0x3a4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3a4(%rbp)
movl $0x0, -0x444(%rbp)
leaq -0x440(%rbp), %rdi
callq 0xf200
movl -0x444(%rbp), %eax
testl %eax, %eax
je 0x50e5b
jmp 0x50e59
jmp 0x50e6e
jmp 0x5088e
leaq -0x440(%rbp), %rdi
callq 0xf200
jmp 0x50ee8
movl -0x3a4(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x110(%rax)
movl -0x3a4(%rbp), %esi
movq 0x222135(%rip), %rdi    # 0x272fc0
callq 0x58d0
movq %rax, -0x698(%rbp)
jmp 0x50e99
movq -0x698(%rbp), %rdi
leaq 0x1a24cc(%rip), %rsi    # 0x1f3373
callq 0x5540
movq %rax, -0x6a0(%rbp)
jmp 0x50eb5
movq -0x6a0(%rbp), %rdi
movq 0x2220d5(%rip), %rsi    # 0x272f98
callq 0x55b0
jmp 0x50eca
jmp 0x50ecc
leaq -0x258(%rbp), %rdi
callq 0x50a0
jmp 0x50eda
leaq -0x288(%rbp), %rdi
callq 0x5300
jmp 0x50f53
leaq -0x288(%rbp), %rdi
callq 0x5300
jmp 0x50f84
movq 0x2220f0(%rip), %rdi    # 0x272ff0
leaq 0x1a2479(%rip), %rsi    # 0x1f3380
callq 0x5540
movq %rax, -0x6a8(%rbp)
jmp 0x50f15
movq -0x6a8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5540
movq %rax, -0x6b0(%rbp)
jmp 0x50f2e
movq -0x6b0(%rbp), %rdi
movq 0x22205c(%rip), %rsi    # 0x272f98
callq 0x55b0
jmp 0x50f43
movb $0x0, -0x1(%rbp)
movl $0x1, -0x444(%rbp)
jmp 0x50f61
movb $0x1, -0x1(%rbp)
movl $0x1, -0x444(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x5150
leaq -0x40(%rbp), %rdi
callq 0x5300
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x6b0, %rsp            # imm = 0x6B0
popq %rbp
retq
leaq -0x258(%rbp), %rdi
callq 0x5150
leaq -0x40(%rbp), %rdi
callq 0x5300
movq -0x260(%rbp), %rdi
callq 0x58f0
nopw %cs:(%rax,%rax)