// File: myudelson[P]hmm-scalable/FitBitSlicedAB.cpp
// Function: FitBitSlicedAB::negate(double*&, double***&, double***&)
void FitBitSlicedAB::negate(NUMBER* &a_PI, NUMBER*** &a_A, NUMBER*** &a_B) {
    if(this->pi != NULL) {
        for(NPAR i=0; i<this->nS; i++) a_PI[i] = -a_PI[i];
    }
    if(this->A  != NULL) {
        for(NPAR z=0; z<this->nZ; z++)
            for(NPAR i=0; i<this->nS; i++)
                for(NPAR j=0; j<this->nS; j++)
                    a_A[z][i][j] = -a_A[z][i][j];
    }
    if(this->B  != NULL) {
        for(NPAR z=0; z<this->nZ; z++)
            for(NPAR i=0; i<this->nS; i++)
                for(NPAR m=0; m<this->nO; m++)
                    a_B[z][i][m] = -a_B[z][i][m];
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, 0x10(%rax)
je 0x11c3c
movb $0x0, -0x21(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x21(%rbp), %eax
movsbl 0x1(%rcx), %ecx
cmpl %ecx, %eax
jge 0x11c3a
movq -0x10(%rbp), %rax
movq (%rax), %rax
movsbq -0x21(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq -0x10(%rbp), %rax
movq (%rax), %rax
movsbq -0x21(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movb -0x21(%rbp), %al
addb $0x1, %al
movb %al, -0x21(%rbp)
jmp 0x11be7
jmp 0x11c3c
movq -0x30(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x11d16
movb $0x0, -0x22(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x22(%rbp), %eax
movsbl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x11d14
movb $0x0, -0x23(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x23(%rbp), %eax
movsbl 0x1(%rcx), %ecx
cmpl %ecx, %eax
jge 0x11d05
movb $0x0, -0x24(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x24(%rbp), %eax
movsbl 0x1(%rcx), %ecx
cmpl %ecx, %eax
jge 0x11cf6
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbq -0x22(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbq -0x23(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbq -0x24(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq -0x18(%rbp), %rax
movq (%rax), %rax
movsbq -0x22(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbq -0x23(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbq -0x24(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movb -0x24(%rbp), %al
addb $0x1, %al
movb %al, -0x24(%rbp)
jmp 0x11c7f
jmp 0x11cf8
movb -0x23(%rbp), %al
addb $0x1, %al
movb %al, -0x23(%rbp)
jmp 0x11c67
jmp 0x11d07
movb -0x22(%rbp), %al
addb $0x1, %al
movb %al, -0x22(%rbp)
jmp 0x11c4f
jmp 0x11d16
movq -0x30(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x11def
movb $0x0, -0x25(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x25(%rbp), %eax
movsbl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x11ded
movb $0x0, -0x26(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x26(%rbp), %eax
movsbl 0x1(%rcx), %ecx
cmpl %ecx, %eax
jge 0x11dde
movb $0x0, -0x27(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x27(%rbp), %eax
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jge 0x11dcf
movq -0x20(%rbp), %rax
movq (%rax), %rax
movsbq -0x25(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbq -0x26(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbq -0x27(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq -0x20(%rbp), %rax
movq (%rax), %rax
movsbq -0x25(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbq -0x26(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbq -0x27(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movb -0x27(%rbp), %al
addb $0x1, %al
movb %al, -0x27(%rbp)
jmp 0x11d59
jmp 0x11dd1
movb -0x26(%rbp), %al
addb $0x1, %al
movb %al, -0x26(%rbp)
jmp 0x11d41
jmp 0x11de0
movb -0x25(%rbp), %al
addb $0x1, %al
movb %al, -0x25(%rbp)
jmp 0x11d29
jmp 0x11def
popq %rbp
retq
nopw %cs:(%rax,%rax)