// File: myudelson[P]hmm-scalable/FitBit.cpp
// Function: FitBit::get(FIT_BIT_SLOT, double*&, double**&, double**&)
void FitBit::get(enum FIT_BIT_SLOT fbs, NUMBER* &a_PI, NUMBER** &a_A, NUMBER** &a_B) {
    switch (fbs) {
        case FBS_PAR:
            a_PI = this->pi;
            a_A  = this->A;
            a_B  = this->B;
            break;
        case FBS_PARm1:
            a_PI = this->PIm1;
            a_A  = this->Am1;
            a_B  = this->Bm1;
            break;
        case FBS_PARm2:
            a_PI = this->PIm2;
            a_A  = this->Am2;
            a_B  = this->Bm2;
            break;
        case FBS_GRAD:
            a_PI = this->gradPI;
            a_A  = this->gradA;
            a_B  = this->gradB;
            break;
        case FBS_GRADm1:
            a_PI = this->gradPIm1;
            a_A  = this->gradAm1;
            a_B  = this->gradBm1;
            break;
        case FBS_GRADcopy:
            a_PI = this->gradPIcopy;
            a_A  = this->gradAcopy;
            a_B  = this->gradBcopy;
            break;
        case FBS_PARcopy:
            a_PI = this->PIcopy;
            a_A  = this->Acopy;
            a_B  = this->Bcopy;
            break;
        case FBS_DIR:
            a_PI = this->dirPI;
            a_A  = this->dirA;
            a_B  = this->dirB;
            break;
        case FBS_DIRm1:
            a_PI = this->dirPIm1;
            a_A  = this->dirAm1;
            a_B  = this->dirBm1;
            break;
        default:
            break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
movl -0xc(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x30(%rbp)
subl $0x8, %eax
ja 0xe4bf
movq -0x30(%rbp), %rax
leaq 0x41aee(%rip), %rcx     # 0x4fe0c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x18(%rax), %rdx
movq -0x20(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x20(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
jmp 0xe4c1
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x30(%rax), %rdx
movq -0x20(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x38(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
jmp 0xe4c1
movq -0x38(%rbp), %rax
movq 0x40(%rax), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x48(%rax), %rdx
movq -0x20(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x50(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
jmp 0xe4c1
movq -0x38(%rbp), %rax
movq 0x58(%rax), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x60(%rax), %rdx
movq -0x20(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x68(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
jmp 0xe4c1
movq -0x38(%rbp), %rax
movq 0x70(%rax), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x78(%rax), %rdx
movq -0x20(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x80(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
jmp 0xe4c1
movq -0x38(%rbp), %rax
movq 0x88(%rax), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x90(%rax), %rdx
movq -0x20(%rbp), %rcx
movq %rdx, (%rcx)
movq 0x98(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
jmp 0xe4c1
movq -0x38(%rbp), %rax
movq 0xa0(%rax), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movq 0xa8(%rax), %rdx
movq -0x20(%rbp), %rcx
movq %rdx, (%rcx)
movq 0xb0(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
jmp 0xe4c1
movq -0x38(%rbp), %rax
movq 0xb8(%rax), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movq 0xc0(%rax), %rdx
movq -0x20(%rbp), %rcx
movq %rdx, (%rcx)
movq 0xc8(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
jmp 0xe4c1
movq -0x38(%rbp), %rax
movq 0xd0(%rax), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, (%rcx)
movq 0xd8(%rax), %rdx
movq -0x20(%rbp), %rcx
movq %rdx, (%rcx)
movq 0xe0(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
jmp 0xe4c1
jmp 0xe4c1
popq %rbp
retq
nopw %cs:(%rax,%rax)