// File: atfrank[P]PCASA/lib/Molecule.cpp
// Function: Molecule::~Molecule()
Molecule::~Molecule (){
  Chain *c;
  Residue *r;
  Atom *a;

  for (unsigned int i=0; i< this->getChnVecSize(); i++){
    c=this->getChain(i);
    for (unsigned int j=0; j< c->getResVecSize(); j++){
      r=c->getResidue(j);
      if (this->getCopyFlag() == false){
        //Only destruct atoms if molecule is NOT a copy
        for (unsigned int k=0; k< r->getAtmVecSize(); k++){
          a=r->getAtom(k);
          delete a;
        }
      }
      delete r;
    }
    delete c;
  }
}

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x80(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
leaq 0x3f9155(%rip), %rcx    # 0x43ad18
addq $0x10, %rcx
movq %rcx, (%rax)
movl $0x0, 0x64(%rsp)
movq 0x50(%rsp), %rdi
movl 0x64(%rsp), %eax
movl %eax, 0x48(%rsp)
callq 0x41e20
movl %eax, 0x4c(%rsp)
jmp 0x41bea
movl 0x48(%rsp), %eax
movl 0x4c(%rsp), %ecx
cmpl %ecx, %eax
jae 0x41d85
movq 0x50(%rsp), %rdi
leaq 0x64(%rsp), %rsi
callq 0x41e40
movq %rax, 0x40(%rsp)
jmp 0x41c10
movq 0x40(%rsp), %rax
movq %rax, 0x78(%rsp)
movl $0x0, 0x60(%rsp)
movl 0x60(%rsp), %eax
movl %eax, 0x38(%rsp)
movq 0x78(%rsp), %rdi
callq 0x3a570
movl %eax, 0x3c(%rsp)
jmp 0x41c3a
movl 0x38(%rsp), %eax
movl 0x3c(%rsp), %ecx
cmpl %ecx, %eax
jae 0x41d4d
movq 0x78(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x3a490
movq %rax, 0x30(%rsp)
jmp 0x41c60
movq 0x50(%rsp), %rdi
movq 0x30(%rsp), %rax
movq %rax, 0x70(%rsp)
callq 0x41eb0
movb %al, 0x2f(%rsp)
jmp 0x41c7a
movb 0x2f(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x41d12
movl $0x0, 0x5c(%rsp)
movl 0x5c(%rsp), %eax
movl %eax, 0x24(%rsp)
movq 0x70(%rsp), %rdi
callq 0x5e110
movl %eax, 0x28(%rsp)
jmp 0x41cac
movl 0x24(%rsp), %eax
movl 0x28(%rsp), %ecx
cmpl %ecx, %eax
jae 0x41d10
movq 0x70(%rsp), %rdi
leaq 0x5c(%rsp), %rsi
callq 0x5df30
movq %rax, 0x18(%rsp)
jmp 0x41cce
movq 0x18(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x41d01
movq 0x10(%rsp), %rdi
callq 0x46e90
movq 0x10(%rsp), %rdi
movl $0x238, %esi            # imm = 0x238
callq 0x5420
jmp 0x41d03
movl 0x5c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x5c(%rsp)
jmp 0x41c94
jmp 0x41d12
movq 0x70(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x41d3b
movq 0x8(%rsp), %rdi
callq 0x46fa0
movq 0x8(%rsp), %rdi
movl $0x18, %esi
callq 0x5420
jmp 0x41d3d
movl 0x60(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x60(%rsp)
jmp 0x41c22
movq 0x78(%rsp), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x41d73
movq (%rsp), %rdi
callq 0x46fb0
movq (%rsp), %rdi
movl $0x30, %esi
callq 0x5420
jmp 0x41d75
movl 0x64(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x64(%rsp)
jmp 0x41bd2
movq 0x50(%rsp), %rdi
addq $0x180, %rdi            # imm = 0x180
callq 0x5250
movq 0x50(%rsp), %rdi
addq $0x160, %rdi            # imm = 0x160
callq 0x5250
movq 0x50(%rsp), %rdi
addq $0xb0, %rdi
callq 0x46fe0
movq 0x50(%rsp), %rdi
addq $0x88, %rdi
callq 0x5250
movq 0x50(%rsp), %rdi
addq $0x58, %rdi
callq 0x46dc0
movq 0x50(%rsp), %rdi
addq $0x38, %rdi
callq 0x202e0
movq 0x50(%rsp), %rdi
addq $0x20, %rdi
callq 0x46dd0
movq 0x50(%rsp), %rdi
addq $0x8, %rdi
callq 0x46e30
addq $0x88, %rsp
retq
movq %rax, %rdi
callq 0x7d00
nopw %cs:(%rax,%rax)