// File: myudelson[P]hmm-scalable/FitBit.cpp
// Function: FitBit::~FitBit()
FitBit::~FitBit() {
//    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) free2D<NUMBER>(this->Am1, (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) free2D<NUMBER>(this->Am2, (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) free2D<NUMBER>(this->gradA, (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) free2D<NUMBER>(this->gradAm1, (NDAT)this->nS);
    if(this->gradBm1 != NULL) free2D<NUMBER>(this->gradBm1, (NDAT)this->nS);
    if(this->gradPIcopy != NULL) free(this->gradPIcopy);
    if(this->gradAcopy != NULL) free2D<NUMBER>(this->gradAcopy, (NDAT)this->nS);
    if(this->gradBcopy != NULL) free2D<NUMBER>(this->gradBcopy, (NDAT)this->nS);
    if(this->PIcopy != NULL) free(this->PIcopy);
    if(this->Acopy != NULL) free2D<NUMBER>(this->Acopy, (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) free2D<NUMBER>(this->dirA, (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) free2D<NUMBER>(this->dirAm1, (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 0xd3c8
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0xd3e8
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd3e6
jmp 0xd3e8
movq -0x10(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0xd408
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd406
jmp 0xd408
movq -0x10(%rbp), %rax
cmpq $0x0, 0x40(%rax)
je 0xd420
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0xd440
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd43e
jmp 0xd440
movq -0x10(%rbp), %rax
cmpq $0x0, 0x50(%rax)
je 0xd460
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd45e
jmp 0xd460
movq -0x10(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0xd478
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0x60(%rax)
je 0xd498
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd496
jmp 0xd498
movq -0x10(%rbp), %rax
cmpq $0x0, 0x68(%rax)
je 0xd4b8
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd4b6
jmp 0xd4b8
movq -0x10(%rbp), %rax
cmpq $0x0, 0x70(%rax)
je 0xd4d0
movq -0x10(%rbp), %rax
movq 0x70(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0x78(%rax)
je 0xd4f0
movq -0x10(%rbp), %rax
movq 0x78(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd4ee
jmp 0xd4f0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x80(%rax)
je 0xd516
movq -0x10(%rbp), %rax
movq 0x80(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd514
jmp 0xd516
movq -0x10(%rbp), %rax
cmpq $0x0, 0x88(%rax)
je 0xd534
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0x90(%rax)
je 0xd55a
movq -0x10(%rbp), %rax
movq 0x90(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd558
jmp 0xd55a
movq -0x10(%rbp), %rax
cmpq $0x0, 0x98(%rax)
je 0xd580
movq -0x10(%rbp), %rax
movq 0x98(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd57e
jmp 0xd580
movq -0x10(%rbp), %rax
cmpq $0x0, 0xa0(%rax)
je 0xd59e
movq -0x10(%rbp), %rax
movq 0xa0(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0xa8(%rax)
je 0xd5c4
movq -0x10(%rbp), %rax
movq 0xa8(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd5c2
jmp 0xd5c4
movq -0x10(%rbp), %rax
cmpq $0x0, 0xb0(%rax)
je 0xd5ea
movq -0x10(%rbp), %rax
movq 0xb0(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd5e8
jmp 0xd5ea
movq -0x10(%rbp), %rax
cmpq $0x0, 0xb8(%rax)
je 0xd608
movq -0x10(%rbp), %rax
movq 0xb8(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0xc0(%rax)
je 0xd62e
movq -0x10(%rbp), %rax
movq 0xc0(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd62c
jmp 0xd62e
movq -0x10(%rbp), %rax
cmpq $0x0, 0xc8(%rax)
je 0xd654
movq -0x10(%rbp), %rax
movq 0xc8(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd652
jmp 0xd654
movq -0x10(%rbp), %rax
cmpq $0x0, 0xd0(%rax)
je 0xd672
movq -0x10(%rbp), %rax
movq 0xd0(%rax), %rdi
callq 0x5380
movq -0x10(%rbp), %rax
cmpq $0x0, 0xd8(%rax)
je 0xd698
movq -0x10(%rbp), %rax
movq 0xd8(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd696
jmp 0xd698
movq -0x10(%rbp), %rax
cmpq $0x0, 0xe0(%rax)
je 0xd6be
movq -0x10(%rbp), %rax
movq 0xe0(%rax), %rdi
movsbl 0x1(%rax), %esi
callq 0xc7f0
jmp 0xd6bc
jmp 0xd6be
addq $0x10, %rsp
popq %rbp
retq
movq %rax, %rdi
callq 0x69d0
nopl (%rax)