#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ rotMatrixCCOVsubrtn(double *, double *, double *, double *,
                                       double *, double *, double *, double *,
                                       double *);
void rotMatrixCCOV(double *rotationMatrix, double *Spx, double *SIGMA,
                   double *MM, double *doubleVars) {
  rotMatrixCCOVsubrtn(rotationMatrix, Spx, SIGMA, MM, doubleVars,
                      &doubleVars[9], &doubleVars[18], &doubleVars[24],
                      &doubleVars[30]);
  return;
}


x86 assembly (clang, -O0):
<rotMatrixCCOV>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x18(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    -0x28(%rbp),%r8
mov    -0x28(%rbp),%r9
add    $0x48,%r9
mov    -0x28(%rbp),%r11
add    $0x90,%r11
mov    -0x28(%rbp),%r10
add    $0xc0,%r10
mov    -0x28(%rbp),%rax
add    $0xf0,%rax
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
call   1030 <rotMatrixCCOVsubrtn@plt>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rotMatrixCCOV>:
push   %rax
lea    0x48(%r8),%r9
lea    0x90(%r8),%r10
lea    0xc0(%r8),%r11
lea    0xf0(%r8),%rax
sub    $0x8,%rsp
push   %rax
push   %r11
push   %r10
call   1030 <rotMatrixCCOVsubrtn@plt>
add    $0x20,%rsp
pop    %rax
ret

LLVM IR (-O0):
define void @rotMatrixCCOV(double* %0, double* %1, double* %2, double* %3, double* %4) {
%6 = alloca double*
%7 = alloca double*
%8 = alloca double*
%9 = alloca double*
%10 = alloca double*
store double* %0, double** %6
store double* %1, double** %7
store double* %2, double** %8
store double* %3, double** %9
store double* %4, double** %10
%11 = load double*, double** %6
%12 = load double*, double** %7
%13 = load double*, double** %8
%14 = load double*, double** %9
%15 = load double*, double** %10
%16 = load double*, double** %10
%17 = getelementptr inbounds double, double* %16, i64 9
%18 = load double*, double** %10
%19 = getelementptr inbounds double, double* %18, i64 18
%20 = load double*, double** %10
%21 = getelementptr inbounds double, double* %20, i64 24
%22 = load double*, double** %10
%23 = getelementptr inbounds double, double* %22, i64 30
%24 = call i32 @rotMatrixCCOVsubrtn(double* %11, double* %12, double* %13, double* %14, double* %15, double* %17, double* %19, double* %21, double* %23)
ret void
}

LLVM IR (-O2):
define void @rotMatrixCCOV(double* %0, double* %1, double* %2, double* %3, double* %4) {
%6 = getelementptr inbounds double, double* %4, i64 9
%7 = getelementptr inbounds double, double* %4, i64 18
%8 = getelementptr inbounds double, double* %4, i64 24
%9 = getelementptr inbounds double, double* %4, i64 30
%10 = tail call i32 @rotMatrixCCOVsubrtn(double* %0, double* %1, double* %2, double* %3, double* %4, double* %6, double* %7, double* %8, double* %9)
ret void
}