// File: myudelson[P]hmm-scalable/FitBitSlicedA.cpp
// Function: FitBitSlicedA::~FitBitSlicedA()
FitBitSlicedA::~FitBitSlicedA() {
//    if(this->pi != NULL) free(this->PI); // these are usually linked
//    if(this->A != NULL) free2D<NUMBER>(this->A, this->nS); // these are usually linked
//    if(this->B != NULL) free2D<NUMBER>(this->B, this->nS); // these are usually linked
    if(this->PIm1 != NULL) free(this->PIm1);
    if(this->Am1 != NULL) free3D<NUMBER>(this->Am1, (NDAT)this->nZ, (NDAT)this->nS);
    if(this->Bm1 != NULL) free2D<NUMBER>(this->Bm1, (NDAT)this->nS);
    if(this->PIm2 != NULL) free(this->PIm2);
    if(this->Am2 != NULL) free3D<NUMBER>(this->Am2, (NDAT)this->nZ, (NDAT)this->nS);
    if(this->Bm2 != NULL) free2D<NUMBER>(this->Bm2, (NDAT)this->nS);
    if(this->gradPI != NULL) free(this->gradPI);
    if(this->gradA != NULL) free3D<NUMBER>(this->gradA, (NDAT)this->nZ, (NDAT)this->nS);
    if(this->gradB != NULL) free2D<NUMBER>(this->gradB, (NDAT)this->nS);
    if(this->gradPIm1 != NULL) free(this->gradPIm1);
    if(this->gradAm1 != NULL) free3D<NUMBER>(this->gradAm1, (NDAT)this->nZ, (NDAT)this->nS);
    if(this->gradBm1 != NULL) free2D<NUMBER>(this->gradBm1, (NDAT)this->nS);
    if(this->PIcopy != NULL) free(this->PIcopy);
    if(this->Acopy != NULL) free3D<NUMBER>(this->Acopy, (NDAT)this->nZ, (NDAT)this->nS);
    if(this->Bcopy != NULL) free2D<NUMBER>(this->Bcopy, (NDAT)this->nS);
    if(this->dirPI != NULL) free(this->dirPI);
    if(this->dirA != NULL) free3D<NUMBER>(this->dirA, (NDAT)this->nZ, (NDAT)this->nS);
    if(this->dirB != NULL) free2D<NUMBER>(this->dirB, (NDAT)this->nS);
    if(this->dirPIm1 != NULL) free(this->dirPIm1);
    if(this->dirAm1 != NULL) free3D<NUMBER>(this->dirAm1, (NDAT)this->nZ, (NDAT)this->nS);
    if(this->dirBm1 != NULL) free2D<NUMBER>(this->dirBm1, (NDAT)this->nS);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, 0x28(%rax)
je 0xf9d8
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0xf9fc
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
movsbl 0x2(%rax), %esi
movsbl 0x1(%rax), %edx
callq 0x11290
jmp 0xf9fa
jmp 0xf9fc
movq -0x10(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0xfa1c
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xfa1a
jmp 0xfa1c
movq -0x10(%rbp), %rax
cmpq $0x0, 0x40(%rax)
je 0xfa34
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0xfa58
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rdi
movsbl 0x2(%rax), %esi
movsbl 0x1(%rax), %edx
callq 0x11290
jmp 0xfa56
jmp 0xfa58
movq -0x10(%rbp), %rax
cmpq $0x0, 0x50(%rax)
je 0xfa78
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xfa76
jmp 0xfa78
movq -0x10(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0xfa90
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0x60(%rax)
je 0xfab4
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rdi
movsbl 0x2(%rax), %esi
movsbl 0x1(%rax), %edx
callq 0x11290
jmp 0xfab2
jmp 0xfab4
movq -0x10(%rbp), %rax
cmpq $0x0, 0x68(%rax)
je 0xfad4
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xfad2
jmp 0xfad4
movq -0x10(%rbp), %rax
cmpq $0x0, 0x70(%rax)
je 0xfaec
movq -0x10(%rbp), %rax
movq 0x70(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0x78(%rax)
je 0xfb10
movq -0x10(%rbp), %rax
movq 0x78(%rax), %rdi
movsbl 0x2(%rax), %esi
movsbl 0x1(%rax), %edx
callq 0x11290
jmp 0xfb0e
jmp 0xfb10
movq -0x10(%rbp), %rax
cmpq $0x0, 0x80(%rax)
je 0xfb36
movq -0x10(%rbp), %rax
movq 0x80(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xfb34
jmp 0xfb36
movq -0x10(%rbp), %rax
cmpq $0x0, 0x88(%rax)
je 0xfb54
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0x90(%rax)
je 0xfb7e
movq -0x10(%rbp), %rax
movq 0x90(%rax), %rdi
movsbl 0x2(%rax), %esi
movsbl 0x1(%rax), %edx
callq 0x11290
jmp 0xfb7c
jmp 0xfb7e
movq -0x10(%rbp), %rax
cmpq $0x0, 0x98(%rax)
je 0xfba4
movq -0x10(%rbp), %rax
movq 0x98(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xfba2
jmp 0xfba4
movq -0x10(%rbp), %rax
cmpq $0x0, 0xa0(%rax)
je 0xfbc2
movq -0x10(%rbp), %rax
movq 0xa0(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0xa8(%rax)
je 0xfbec
movq -0x10(%rbp), %rax
movq 0xa8(%rax), %rdi
movsbl 0x2(%rax), %esi
movsbl 0x1(%rax), %edx
callq 0x11290
jmp 0xfbea
jmp 0xfbec
movq -0x10(%rbp), %rax
cmpq $0x0, 0xb0(%rax)
je 0xfc12
movq -0x10(%rbp), %rax
movq 0xb0(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xfc10
jmp 0xfc12
movq -0x10(%rbp), %rax
cmpq $0x0, 0xb8(%rax)
je 0xfc30
movq -0x10(%rbp), %rax
movq 0xb8(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0xc0(%rax)
je 0xfc5a
movq -0x10(%rbp), %rax
movq 0xc0(%rax), %rdi
movsbl 0x2(%rax), %esi
movsbl 0x1(%rax), %edx
callq 0x11290
jmp 0xfc58
jmp 0xfc5a
movq -0x10(%rbp), %rax
cmpq $0x0, 0xc8(%rax)
je 0xfc80
movq -0x10(%rbp), %rax
movq 0xc8(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xfc7e
jmp 0xfc80
addq $0x10, %rsp
popq %rbp
retq
movq %rax, %rdi
callq 0x69d0
nop