// File: myudelson[P]hmm-scalable/FitBitSlicedA.cpp
// Function: FitBitSlicedA::negate(double*&, double***&, double**&)
void FitBitSlicedA::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 i=0; i<this->nS; i++)
            for(NPAR m=0; m<this->nO; m++)
                a_B[i][m] = -a_B[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 0xfe1c
movb $0x0, -0x21(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x21(%rbp), %eax
movsbl 0x1(%rcx), %ecx
cmpl %ecx, %eax
jge 0xfe1a
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 0xfdc7
jmp 0xfe1c
movq -0x30(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xfef6
movb $0x0, -0x22(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x22(%rbp), %eax
movsbl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0xfef4
movb $0x0, -0x23(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x23(%rbp), %eax
movsbl 0x1(%rcx), %ecx
cmpl %ecx, %eax
jge 0xfee5
movb $0x0, -0x24(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x24(%rbp), %eax
movsbl 0x1(%rcx), %ecx
cmpl %ecx, %eax
jge 0xfed6
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 0xfe5f
jmp 0xfed8
movb -0x23(%rbp), %al
addb $0x1, %al
movb %al, -0x23(%rbp)
jmp 0xfe47
jmp 0xfee7
movb -0x22(%rbp), %al
addb $0x1, %al
movb %al, -0x22(%rbp)
jmp 0xfe2f
jmp 0xfef6
movq -0x30(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0xff92
movb $0x0, -0x25(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x25(%rbp), %eax
movsbl 0x1(%rcx), %ecx
cmpl %ecx, %eax
jge 0xff90
movb $0x0, -0x26(%rbp)
movq -0x30(%rbp), %rcx
movsbl -0x26(%rbp), %eax
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jge 0xff81
movq -0x20(%rbp), %rax
movq (%rax), %rax
movsbq -0x25(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbq -0x26(%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
movsd %xmm0, (%rax,%rcx,8)
movb -0x26(%rbp), %al
addb $0x1, %al
movb %al, -0x26(%rbp)
jmp 0xff1d
jmp 0xff83
movb -0x25(%rbp), %al
addb $0x1, %al
movb %al, -0x25(%rbp)
jmp 0xff09
jmp 0xff92
popq %rbp
retq
nopw %cs:(%rax,%rax)