#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 */
typedef int GLfloat;

/* Variables and functions */
void matrix_multiply(GLfloat out[], GLfloat m1[], GLfloat m2[]) {
  out[0] = m1[0] * m2[0] + m1[4] * m2[1] + m1[8] * m2[2] + m1[12] * m2[3];
  out[1] = m1[1] * m2[0] + m1[5] * m2[1] + m1[9] * m2[2] + m1[13] * m2[3];
  out[2] = m1[2] * m2[0] + m1[6] * m2[1] + m1[10] * m2[2] + m1[14] * m2[3];
  out[3] = m1[3] * m2[0] + m1[7] * m2[1] + m1[11] * m2[2] + m1[15] * m2[3];
  out[4] = m1[0] * m2[4] + m1[4] * m2[5] + m1[8] * m2[6] + m1[12] * m2[7];
  out[5] = m1[1] * m2[4] + m1[5] * m2[5] + m1[9] * m2[6] + m1[13] * m2[7];
  out[6] = m1[2] * m2[4] + m1[6] * m2[5] + m1[10] * m2[6] + m1[14] * m2[7];
  out[7] = m1[3] * m2[4] + m1[7] * m2[5] + m1[11] * m2[6] + m1[15] * m2[7];
  out[8] = m1[0] * m2[8] + m1[4] * m2[9] + m1[8] * m2[10] + m1[12] * m2[11];
  out[9] = m1[1] * m2[8] + m1[5] * m2[9] + m1[9] * m2[10] + m1[13] * m2[11];
  out[10] = m1[2] * m2[8] + m1[6] * m2[9] + m1[10] * m2[10] + m1[14] * m2[11];
  out[11] = m1[3] * m2[8] + m1[7] * m2[9] + m1[11] * m2[10] + m1[15] * m2[11];
  out[12] = m1[0] * m2[12] + m1[4] * m2[13] + m1[8] * m2[14] + m1[12] * m2[15];
  out[13] = m1[1] * m2[12] + m1[5] * m2[13] + m1[9] * m2[14] + m1[13] * m2[15];
  out[14] = m1[2] * m2[12] + m1[6] * m2[13] + m1[10] * m2[14] + m1[14] * m2[15];
  out[15] = m1[3] * m2[12] + m1[7] * m2[13] + m1[11] * m2[14] + m1[15] * m2[15];
}


x86 assembly (clang, -O0):
<matrix_multiply>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
imul   (%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x4(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0xc(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   (%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x4(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x34(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0xc(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   (%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x4(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0xc(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   (%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x4(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x2c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x3c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0xc(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x10(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x1c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x10(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x10(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x34(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x1c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x14(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x10(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x1c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x18(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x10(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x2c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x3c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x1c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x1c(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x20(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x28(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x2c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x20(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x20(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x28(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x34(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x2c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x24(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x20(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x28(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x2c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x28(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x20(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x2c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x28(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x3c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x2c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x2c(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x30(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x34(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x38(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x3c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x30(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x30(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x34(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x38(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x34(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x3c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x34(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x30(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x34(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x38(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x3c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x38(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x30(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x34(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x2c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x38(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x3c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x3c(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x3c(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<matrix_multiply>:
mov    (%rdx),%eax
mov    0x4(%rdx),%ecx
imul   (%rsi),%eax
imul   0x10(%rsi),%ecx
add    %eax,%ecx
mov    0x8(%rdx),%eax
imul   0x20(%rsi),%eax
add    %ecx,%eax
mov    0xc(%rdx),%ecx
imul   0x30(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,(%rdi)
mov    (%rdx),%eax
mov    0x4(%rdx),%ecx
imul   0x4(%rsi),%eax
imul   0x14(%rsi),%ecx
add    %eax,%ecx
mov    0x8(%rdx),%eax
imul   0x24(%rsi),%eax
add    %ecx,%eax
mov    0xc(%rdx),%ecx
imul   0x34(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x4(%rdi)
mov    (%rdx),%eax
mov    0x4(%rdx),%ecx
imul   0x8(%rsi),%eax
imul   0x18(%rsi),%ecx
add    %eax,%ecx
mov    0x8(%rdx),%eax
imul   0x28(%rsi),%eax
add    %ecx,%eax
mov    0xc(%rdx),%ecx
imul   0x38(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x8(%rdi)
mov    (%rdx),%eax
mov    0x4(%rdx),%ecx
imul   0xc(%rsi),%eax
imul   0x1c(%rsi),%ecx
add    %eax,%ecx
mov    0x8(%rdx),%eax
imul   0x2c(%rsi),%eax
add    %ecx,%eax
mov    0xc(%rdx),%ecx
imul   0x3c(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0xc(%rdi)
mov    0x10(%rdx),%eax
mov    0x14(%rdx),%ecx
imul   (%rsi),%eax
imul   0x10(%rsi),%ecx
add    %eax,%ecx
mov    0x18(%rdx),%eax
imul   0x20(%rsi),%eax
add    %ecx,%eax
mov    0x1c(%rdx),%ecx
imul   0x30(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x10(%rdi)
mov    0x10(%rdx),%eax
mov    0x14(%rdx),%ecx
imul   0x4(%rsi),%eax
imul   0x14(%rsi),%ecx
add    %eax,%ecx
mov    0x18(%rdx),%eax
imul   0x24(%rsi),%eax
add    %ecx,%eax
mov    0x1c(%rdx),%ecx
imul   0x34(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x14(%rdi)
mov    0x10(%rdx),%eax
mov    0x14(%rdx),%ecx
imul   0x8(%rsi),%eax
imul   0x18(%rsi),%ecx
add    %eax,%ecx
mov    0x18(%rdx),%eax
imul   0x28(%rsi),%eax
add    %ecx,%eax
mov    0x1c(%rdx),%ecx
imul   0x38(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x18(%rdi)
mov    0x10(%rdx),%eax
mov    0x14(%rdx),%ecx
imul   0xc(%rsi),%eax
imul   0x1c(%rsi),%ecx
add    %eax,%ecx
mov    0x18(%rdx),%eax
imul   0x2c(%rsi),%eax
add    %ecx,%eax
mov    0x1c(%rdx),%ecx
imul   0x3c(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x1c(%rdi)
mov    0x20(%rdx),%eax
mov    0x24(%rdx),%ecx
imul   (%rsi),%eax
imul   0x10(%rsi),%ecx
add    %eax,%ecx
mov    0x28(%rdx),%eax
imul   0x20(%rsi),%eax
add    %ecx,%eax
mov    0x2c(%rdx),%ecx
imul   0x30(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x20(%rdi)
mov    0x20(%rdx),%eax
mov    0x24(%rdx),%ecx
imul   0x4(%rsi),%eax
imul   0x14(%rsi),%ecx
add    %eax,%ecx
mov    0x28(%rdx),%eax
imul   0x24(%rsi),%eax
add    %ecx,%eax
mov    0x2c(%rdx),%ecx
imul   0x34(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x24(%rdi)
mov    0x20(%rdx),%eax
mov    0x24(%rdx),%ecx
imul   0x8(%rsi),%eax
imul   0x18(%rsi),%ecx
add    %eax,%ecx
mov    0x28(%rdx),%eax
imul   0x28(%rsi),%eax
add    %ecx,%eax
mov    0x2c(%rdx),%ecx
imul   0x38(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x28(%rdi)
mov    0x20(%rdx),%eax
mov    0x24(%rdx),%ecx
imul   0xc(%rsi),%eax
imul   0x1c(%rsi),%ecx
add    %eax,%ecx
mov    0x28(%rdx),%eax
imul   0x2c(%rsi),%eax
add    %ecx,%eax
mov    0x2c(%rdx),%ecx
imul   0x3c(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x2c(%rdi)
mov    0x30(%rdx),%eax
mov    0x34(%rdx),%ecx
imul   (%rsi),%eax
imul   0x10(%rsi),%ecx
add    %eax,%ecx
mov    0x38(%rdx),%eax
imul   0x20(%rsi),%eax
add    %ecx,%eax
mov    0x3c(%rdx),%ecx
imul   0x30(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x30(%rdi)
mov    0x30(%rdx),%eax
mov    0x34(%rdx),%ecx
imul   0x4(%rsi),%eax
imul   0x14(%rsi),%ecx
add    %eax,%ecx
mov    0x38(%rdx),%eax
imul   0x24(%rsi),%eax
add    %ecx,%eax
mov    0x3c(%rdx),%ecx
imul   0x34(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x34(%rdi)
mov    0x30(%rdx),%eax
mov    0x34(%rdx),%ecx
imul   0x8(%rsi),%eax
imul   0x18(%rsi),%ecx
add    %eax,%ecx
mov    0x38(%rdx),%eax
imul   0x28(%rsi),%eax
add    %ecx,%eax
mov    0x3c(%rdx),%ecx
imul   0x38(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x38(%rdi)
mov    0x30(%rdx),%eax
mov    0x34(%rdx),%ecx
imul   0xc(%rsi),%eax
imul   0x1c(%rsi),%ecx
add    %eax,%ecx
mov    0x38(%rdx),%eax
imul   0x2c(%rsi),%eax
add    %ecx,%eax
mov    0x3c(%rdx),%ecx
imul   0x3c(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x3c(%rdi)
ret

LLVM IR (-O0):
define void @matrix_multiply(i32* %0, i32* %1, i32* %2) {
%4 = alloca i32*
%5 = alloca i32*
%6 = alloca i32*
store i32* %0, i32** %4
store i32* %1, i32** %5
store i32* %2, i32** %6
%7 = load i32*, i32** %5
%8 = getelementptr inbounds i32, i32* %7, i64 0
%9 = load i32, i32* %8
%10 = load i32*, i32** %6
%11 = getelementptr inbounds i32, i32* %10, i64 0
%12 = load i32, i32* %11
%13 = mul nsw i32 %9, %12
%14 = load i32*, i32** %5
%15 = getelementptr inbounds i32, i32* %14, i64 4
%16 = load i32, i32* %15
%17 = load i32*, i32** %6
%18 = getelementptr inbounds i32, i32* %17, i64 1
%19 = load i32, i32* %18
%20 = mul nsw i32 %16, %19
%21 = add nsw i32 %13, %20
%22 = load i32*, i32** %5
%23 = getelementptr inbounds i32, i32* %22, i64 8
%24 = load i32, i32* %23
%25 = load i32*, i32** %6
%26 = getelementptr inbounds i32, i32* %25, i64 2
%27 = load i32, i32* %26
%28 = mul nsw i32 %24, %27
%29 = add nsw i32 %21, %28
%30 = load i32*, i32** %5
%31 = getelementptr inbounds i32, i32* %30, i64 12
%32 = load i32, i32* %31
%33 = load i32*, i32** %6
%34 = getelementptr inbounds i32, i32* %33, i64 3
%35 = load i32, i32* %34
%36 = mul nsw i32 %32, %35
%37 = add nsw i32 %29, %36
%38 = load i32*, i32** %4
%39 = getelementptr inbounds i32, i32* %38, i64 0
store i32 %37, i32* %39
%40 = load i32*, i32** %5
%41 = getelementptr inbounds i32, i32* %40, i64 1
%42 = load i32, i32* %41
%43 = load i32*, i32** %6
%44 = getelementptr inbounds i32, i32* %43, i64 0
%45 = load i32, i32* %44
%46 = mul nsw i32 %42, %45
%47 = load i32*, i32** %5
%48 = getelementptr inbounds i32, i32* %47, i64 5
%49 = load i32, i32* %48
%50 = load i32*, i32** %6
%51 = getelementptr inbounds i32, i32* %50, i64 1
%52 = load i32, i32* %51
%53 = mul nsw i32 %49, %52
%54 = add nsw i32 %46, %53
%55 = load i32*, i32** %5
%56 = getelementptr inbounds i32, i32* %55, i64 9
%57 = load i32, i32* %56
%58 = load i32*, i32** %6
%59 = getelementptr inbounds i32, i32* %58, i64 2
%60 = load i32, i32* %59
%61 = mul nsw i32 %57, %60
%62 = add nsw i32 %54, %61
%63 = load i32*, i32** %5
%64 = getelementptr inbounds i32, i32* %63, i64 13
%65 = load i32, i32* %64
%66 = load i32*, i32** %6
%67 = getelementptr inbounds i32, i32* %66, i64 3
%68 = load i32, i32* %67
%69 = mul nsw i32 %65, %68
%70 = add nsw i32 %62, %69
%71 = load i32*, i32** %4
%72 = getelementptr inbounds i32, i32* %71, i64 1
store i32 %70, i32* %72
%73 = load i32*, i32** %5
%74 = getelementptr inbounds i32, i32* %73, i64 2
%75 = load i32, i32* %74
%76 = load i32*, i32** %6
%77 = getelementptr inbounds i32, i32* %76, i64 0
%78 = load i32, i32* %77
%79 = mul nsw i32 %75, %78
%80 = load i32*, i32** %5
%81 = getelementptr inbounds i32, i32* %80, i64 6
%82 = load i32, i32* %81
%83 = load i32*, i32** %6
%84 = getelementptr inbounds i32, i32* %83, i64 1
%85 = load i32, i32* %84
%86 = mul nsw i32 %82, %85
%87 = add nsw i32 %79, %86
%88 = load i32*, i32** %5
%89 = getelementptr inbounds i32, i32* %88, i64 10
%90 = load i32, i32* %89
%91 = load i32*, i32** %6
%92 = getelementptr inbounds i32, i32* %91, i64 2
%93 = load i32, i32* %92
%94 = mul nsw i32 %90, %93
%95 = add nsw i32 %87, %94
%96 = load i32*, i32** %5
%97 = getelementptr inbounds i32, i32* %96, i64 14
%98 = load i32, i32* %97
%99 = load i32*, i32** %6
%100 = getelementptr inbounds i32, i32* %99, i64 3
%101 = load i32, i32* %100
%102 = mul nsw i32 %98, %101
%103 = add nsw i32 %95, %102
%104 = load i32*, i32** %4
%105 = getelementptr inbounds i32, i32* %104, i64 2
store i32 %103, i32* %105
%106 = load i32*, i32** %5
%107 = getelementptr inbounds i32, i32* %106, i64 3
%108 = load i32, i32* %107
%109 = load i32*, i32** %6
%110 = getelementptr inbounds i32, i32* %109, i64 0
%111 = load i32, i32* %110
%112 = mul nsw i32 %108, %111
%113 = load i32*, i32** %5
%114 = getelementptr inbounds i32, i32* %113, i64 7
%115 = load i32, i32* %114
%116 = load i32*, i32** %6
%117 = getelementptr inbounds i32, i32* %116, i64 1
%118 = load i32, i32* %117
%119 = mul nsw i32 %115, %118
%120 = add nsw i32 %112, %119
%121 = load i32*, i32** %5
%122 = getelementptr inbounds i32, i32* %121, i64 11
%123 = load i32, i32* %122
%124 = load i32*, i32** %6
%125 = getelementptr inbounds i32, i32* %124, i64 2
%126 = load i32, i32* %125
%127 = mul nsw i32 %123, %126
%128 = add nsw i32 %120, %127
%129 = load i32*, i32** %5
%130 = getelementptr inbounds i32, i32* %129, i64 15
%131 = load i32, i32* %130
%132 = load i32*, i32** %6
%133 = getelementptr inbounds i32, i32* %132, i64 3
%134 = load i32, i32* %133
%135 = mul nsw i32 %131, %134
%136 = add nsw i32 %128, %135
%137 = load i32*, i32** %4
%138 = getelementptr inbounds i32, i32* %137, i64 3
store i32 %136, i32* %138
%139 = load i32*, i32** %5
%140 = getelementptr inbounds i32, i32* %139, i64 0
%141 = load i32, i32* %140
%142 = load i32*, i32** %6
%143 = getelementptr inbounds i32, i32* %142, i64 4
%144 = load i32, i32* %143
%145 = mul nsw i32 %141, %144
%146 = load i32*, i32** %5
%147 = getelementptr inbounds i32, i32* %146, i64 4
%148 = load i32, i32* %147
%149 = load i32*, i32** %6
%150 = getelementptr inbounds i32, i32* %149, i64 5
%151 = load i32, i32* %150
%152 = mul nsw i32 %148, %151
%153 = add nsw i32 %145, %152
%154 = load i32*, i32** %5
%155 = getelementptr inbounds i32, i32* %154, i64 8
%156 = load i32, i32* %155
%157 = load i32*, i32** %6
%158 = getelementptr inbounds i32, i32* %157, i64 6
%159 = load i32, i32* %158
%160 = mul nsw i32 %156, %159
%161 = add nsw i32 %153, %160
%162 = load i32*, i32** %5
%163 = getelementptr inbounds i32, i32* %162, i64 12
%164 = load i32, i32* %163
%165 = load i32*, i32** %6
%166 = getelementptr inbounds i32, i32* %165, i64 7
%167 = load i32, i32* %166
%168 = mul nsw i32 %164, %167
%169 = add nsw i32 %161, %168
%170 = load i32*, i32** %4
%171 = getelementptr inbounds i32, i32* %170, i64 4
store i32 %169, i32* %171
%172 = load i32*, i32** %5
%173 = getelementptr inbounds i32, i32* %172, i64 1
%174 = load i32, i32* %173
%175 = load i32*, i32** %6
%176 = getelementptr inbounds i32, i32* %175, i64 4
%177 = load i32, i32* %176
%178 = mul nsw i32 %174, %177
%179 = load i32*, i32** %5
%180 = getelementptr inbounds i32, i32* %179, i64 5
%181 = load i32, i32* %180
%182 = load i32*, i32** %6
%183 = getelementptr inbounds i32, i32* %182, i64 5
%184 = load i32, i32* %183
%185 = mul nsw i32 %181, %184
%186 = add nsw i32 %178, %185
%187 = load i32*, i32** %5
%188 = getelementptr inbounds i32, i32* %187, i64 9
%189 = load i32, i32* %188
%190 = load i32*, i32** %6
%191 = getelementptr inbounds i32, i32* %190, i64 6
%192 = load i32, i32* %191
%193 = mul nsw i32 %189, %192
%194 = add nsw i32 %186, %193
%195 = load i32*, i32** %5
%196 = getelementptr inbounds i32, i32* %195, i64 13
%197 = load i32, i32* %196
%198 = load i32*, i32** %6
%199 = getelementptr inbounds i32, i32* %198, i64 7
%200 = load i32, i32* %199
%201 = mul nsw i32 %197, %200
%202 = add nsw i32 %194, %201
%203 = load i32*, i32** %4
%204 = getelementptr inbounds i32, i32* %203, i64 5
store i32 %202, i32* %204
%205 = load i32*, i32** %5
%206 = getelementptr inbounds i32, i32* %205, i64 2
%207 = load i32, i32* %206
%208 = load i32*, i32** %6
%209 = getelementptr inbounds i32, i32* %208, i64 4
%210 = load i32, i32* %209
%211 = mul nsw i32 %207, %210
%212 = load i32*, i32** %5
%213 = getelementptr inbounds i32, i32* %212, i64 6
%214 = load i32, i32* %213
%215 = load i32*, i32** %6
%216 = getelementptr inbounds i32, i32* %215, i64 5
%217 = load i32, i32* %216
%218 = mul nsw i32 %214, %217
%219 = add nsw i32 %211, %218
%220 = load i32*, i32** %5
%221 = getelementptr inbounds i32, i32* %220, i64 10
%222 = load i32, i32* %221
%223 = load i32*, i32** %6
%224 = getelementptr inbounds i32, i32* %223, i64 6
%225 = load i32, i32* %224
%226 = mul nsw i32 %222, %225
%227 = add nsw i32 %219, %226
%228 = load i32*, i32** %5
%229 = getelementptr inbounds i32, i32* %228, i64 14
%230 = load i32, i32* %229
%231 = load i32*, i32** %6
%232 = getelementptr inbounds i32, i32* %231, i64 7
%233 = load i32, i32* %232
%234 = mul nsw i32 %230, %233
%235 = add nsw i32 %227, %234
%236 = load i32*, i32** %4
%237 = getelementptr inbounds i32, i32* %236, i64 6
store i32 %235, i32* %237
%238 = load i32*, i32** %5
%239 = getelementptr inbounds i32, i32* %238, i64 3
%240 = load i32, i32* %239
%241 = load i32*, i32** %6
%242 = getelementptr inbounds i32, i32* %241, i64 4
%243 = load i32, i32* %242
%244 = mul nsw i32 %240, %243
%245 = load i32*, i32** %5
%246 = getelementptr inbounds i32, i32* %245, i64 7
%247 = load i32, i32* %246
%248 = load i32*, i32** %6
%249 = getelementptr inbounds i32, i32* %248, i64 5
%250 = load i32, i32* %249
%251 = mul nsw i32 %247, %250
%252 = add nsw i32 %244, %251
%253 = load i32*, i32** %5
%254 = getelementptr inbounds i32, i32* %253, i64 11
%255 = load i32, i32* %254
%256 = load i32*, i32** %6
%257 = getelementptr inbounds i32, i32* %256, i64 6
%258 = load i32, i32* %257
%259 = mul nsw i32 %255, %258
%260 = add nsw i32 %252, %259
%261 = load i32*, i32** %5
%262 = getelementptr inbounds i32, i32* %261, i64 15
%263 = load i32, i32* %262
%264 = load i32*, i32** %6
%265 = getelementptr inbounds i32, i32* %264, i64 7
%266 = load i32, i32* %265
%267 = mul nsw i32 %263, %266
%268 = add nsw i32 %260, %267
%269 = load i32*, i32** %4
%270 = getelementptr inbounds i32, i32* %269, i64 7
store i32 %268, i32* %270
%271 = load i32*, i32** %5
%272 = getelementptr inbounds i32, i32* %271, i64 0
%273 = load i32, i32* %272
%274 = load i32*, i32** %6
%275 = getelementptr inbounds i32, i32* %274, i64 8
%276 = load i32, i32* %275
%277 = mul nsw i32 %273, %276
%278 = load i32*, i32** %5
%279 = getelementptr inbounds i32, i32* %278, i64 4
%280 = load i32, i32* %279
%281 = load i32*, i32** %6
%282 = getelementptr inbounds i32, i32* %281, i64 9
%283 = load i32, i32* %282
%284 = mul nsw i32 %280, %283
%285 = add nsw i32 %277, %284
%286 = load i32*, i32** %5
%287 = getelementptr inbounds i32, i32* %286, i64 8
%288 = load i32, i32* %287
%289 = load i32*, i32** %6
%290 = getelementptr inbounds i32, i32* %289, i64 10
%291 = load i32, i32* %290
%292 = mul nsw i32 %288, %291
%293 = add nsw i32 %285, %292
%294 = load i32*, i32** %5
%295 = getelementptr inbounds i32, i32* %294, i64 12
%296 = load i32, i32* %295
%297 = load i32*, i32** %6
%298 = getelementptr inbounds i32, i32* %297, i64 11
%299 = load i32, i32* %298
%300 = mul nsw i32 %296, %299
%301 = add nsw i32 %293, %300
%302 = load i32*, i32** %4
%303 = getelementptr inbounds i32, i32* %302, i64 8
store i32 %301, i32* %303
%304 = load i32*, i32** %5
%305 = getelementptr inbounds i32, i32* %304, i64 1
%306 = load i32, i32* %305
%307 = load i32*, i32** %6
%308 = getelementptr inbounds i32, i32* %307, i64 8
%309 = load i32, i32* %308
%310 = mul nsw i32 %306, %309
%311 = load i32*, i32** %5
%312 = getelementptr inbounds i32, i32* %311, i64 5
%313 = load i32, i32* %312
%314 = load i32*, i32** %6
%315 = getelementptr inbounds i32, i32* %314, i64 9
%316 = load i32, i32* %315
%317 = mul nsw i32 %313, %316
%318 = add nsw i32 %310, %317
%319 = load i32*, i32** %5
%320 = getelementptr inbounds i32, i32* %319, i64 9
%321 = load i32, i32* %320
%322 = load i32*, i32** %6
%323 = getelementptr inbounds i32, i32* %322, i64 10
%324 = load i32, i32* %323
%325 = mul nsw i32 %321, %324
%326 = add nsw i32 %318, %325
%327 = load i32*, i32** %5
%328 = getelementptr inbounds i32, i32* %327, i64 13
%329 = load i32, i32* %328
%330 = load i32*, i32** %6
%331 = getelementptr inbounds i32, i32* %330, i64 11
%332 = load i32, i32* %331
%333 = mul nsw i32 %329, %332
%334 = add nsw i32 %326, %333
%335 = load i32*, i32** %4
%336 = getelementptr inbounds i32, i32* %335, i64 9
store i32 %334, i32* %336
%337 = load i32*, i32** %5
%338 = getelementptr inbounds i32, i32* %337, i64 2
%339 = load i32, i32* %338
%340 = load i32*, i32** %6
%341 = getelementptr inbounds i32, i32* %340, i64 8
%342 = load i32, i32* %341
%343 = mul nsw i32 %339, %342
%344 = load i32*, i32** %5
%345 = getelementptr inbounds i32, i32* %344, i64 6
%346 = load i32, i32* %345
%347 = load i32*, i32** %6
%348 = getelementptr inbounds i32, i32* %347, i64 9
%349 = load i32, i32* %348
%350 = mul nsw i32 %346, %349
%351 = add nsw i32 %343, %350
%352 = load i32*, i32** %5
%353 = getelementptr inbounds i32, i32* %352, i64 10
%354 = load i32, i32* %353
%355 = load i32*, i32** %6
%356 = getelementptr inbounds i32, i32* %355, i64 10
%357 = load i32, i32* %356
%358 = mul nsw i32 %354, %357
%359 = add nsw i32 %351, %358
%360 = load i32*, i32** %5
%361 = getelementptr inbounds i32, i32* %360, i64 14
%362 = load i32, i32* %361
%363 = load i32*, i32** %6
%364 = getelementptr inbounds i32, i32* %363, i64 11
%365 = load i32, i32* %364
%366 = mul nsw i32 %362, %365
%367 = add nsw i32 %359, %366
%368 = load i32*, i32** %4
%369 = getelementptr inbounds i32, i32* %368, i64 10
store i32 %367, i32* %369
%370 = load i32*, i32** %5
%371 = getelementptr inbounds i32, i32* %370, i64 3
%372 = load i32, i32* %371
%373 = load i32*, i32** %6
%374 = getelementptr inbounds i32, i32* %373, i64 8
%375 = load i32, i32* %374
%376 = mul nsw i32 %372, %375
%377 = load i32*, i32** %5
%378 = getelementptr inbounds i32, i32* %377, i64 7
%379 = load i32, i32* %378
%380 = load i32*, i32** %6
%381 = getelementptr inbounds i32, i32* %380, i64 9
%382 = load i32, i32* %381
%383 = mul nsw i32 %379, %382
%384 = add nsw i32 %376, %383
%385 = load i32*, i32** %5
%386 = getelementptr inbounds i32, i32* %385, i64 11
%387 = load i32, i32* %386
%388 = load i32*, i32** %6
%389 = getelementptr inbounds i32, i32* %388, i64 10
%390 = load i32, i32* %389
%391 = mul nsw i32 %387, %390
%392 = add nsw i32 %384, %391
%393 = load i32*, i32** %5
%394 = getelementptr inbounds i32, i32* %393, i64 15
%395 = load i32, i32* %394
%396 = load i32*, i32** %6
%397 = getelementptr inbounds i32, i32* %396, i64 11
%398 = load i32, i32* %397
%399 = mul nsw i32 %395, %398
%400 = add nsw i32 %392, %399
%401 = load i32*, i32** %4
%402 = getelementptr inbounds i32, i32* %401, i64 11
store i32 %400, i32* %402
%403 = load i32*, i32** %5
%404 = getelementptr inbounds i32, i32* %403, i64 0
%405 = load i32, i32* %404
%406 = load i32*, i32** %6
%407 = getelementptr inbounds i32, i32* %406, i64 12
%408 = load i32, i32* %407
%409 = mul nsw i32 %405, %408
%410 = load i32*, i32** %5
%411 = getelementptr inbounds i32, i32* %410, i64 4
%412 = load i32, i32* %411
%413 = load i32*, i32** %6
%414 = getelementptr inbounds i32, i32* %413, i64 13
%415 = load i32, i32* %414
%416 = mul nsw i32 %412, %415
%417 = add nsw i32 %409, %416
%418 = load i32*, i32** %5
%419 = getelementptr inbounds i32, i32* %418, i64 8
%420 = load i32, i32* %419
%421 = load i32*, i32** %6
%422 = getelementptr inbounds i32, i32* %421, i64 14
%423 = load i32, i32* %422
%424 = mul nsw i32 %420, %423
%425 = add nsw i32 %417, %424
%426 = load i32*, i32** %5
%427 = getelementptr inbounds i32, i32* %426, i64 12
%428 = load i32, i32* %427
%429 = load i32*, i32** %6
%430 = getelementptr inbounds i32, i32* %429, i64 15
%431 = load i32, i32* %430
%432 = mul nsw i32 %428, %431
%433 = add nsw i32 %425, %432
%434 = load i32*, i32** %4
%435 = getelementptr inbounds i32, i32* %434, i64 12
store i32 %433, i32* %435
%436 = load i32*, i32** %5
%437 = getelementptr inbounds i32, i32* %436, i64 1
%438 = load i32, i32* %437
%439 = load i32*, i32** %6
%440 = getelementptr inbounds i32, i32* %439, i64 12
%441 = load i32, i32* %440
%442 = mul nsw i32 %438, %441
%443 = load i32*, i32** %5
%444 = getelementptr inbounds i32, i32* %443, i64 5
%445 = load i32, i32* %444
%446 = load i32*, i32** %6
%447 = getelementptr inbounds i32, i32* %446, i64 13
%448 = load i32, i32* %447
%449 = mul nsw i32 %445, %448
%450 = add nsw i32 %442, %449
%451 = load i32*, i32** %5
%452 = getelementptr inbounds i32, i32* %451, i64 9
%453 = load i32, i32* %452
%454 = load i32*, i32** %6
%455 = getelementptr inbounds i32, i32* %454, i64 14
%456 = load i32, i32* %455
%457 = mul nsw i32 %453, %456
%458 = add nsw i32 %450, %457
%459 = load i32*, i32** %5
%460 = getelementptr inbounds i32, i32* %459, i64 13
%461 = load i32, i32* %460
%462 = load i32*, i32** %6
%463 = getelementptr inbounds i32, i32* %462, i64 15
%464 = load i32, i32* %463
%465 = mul nsw i32 %461, %464
%466 = add nsw i32 %458, %465
%467 = load i32*, i32** %4
%468 = getelementptr inbounds i32, i32* %467, i64 13
store i32 %466, i32* %468
%469 = load i32*, i32** %5
%470 = getelementptr inbounds i32, i32* %469, i64 2
%471 = load i32, i32* %470
%472 = load i32*, i32** %6
%473 = getelementptr inbounds i32, i32* %472, i64 12
%474 = load i32, i32* %473
%475 = mul nsw i32 %471, %474
%476 = load i32*, i32** %5
%477 = getelementptr inbounds i32, i32* %476, i64 6
%478 = load i32, i32* %477
%479 = load i32*, i32** %6
%480 = getelementptr inbounds i32, i32* %479, i64 13
%481 = load i32, i32* %480
%482 = mul nsw i32 %478, %481
%483 = add nsw i32 %475, %482
%484 = load i32*, i32** %5
%485 = getelementptr inbounds i32, i32* %484, i64 10
%486 = load i32, i32* %485
%487 = load i32*, i32** %6
%488 = getelementptr inbounds i32, i32* %487, i64 14
%489 = load i32, i32* %488
%490 = mul nsw i32 %486, %489
%491 = add nsw i32 %483, %490
%492 = load i32*, i32** %5
%493 = getelementptr inbounds i32, i32* %492, i64 14
%494 = load i32, i32* %493
%495 = load i32*, i32** %6
%496 = getelementptr inbounds i32, i32* %495, i64 15
%497 = load i32, i32* %496
%498 = mul nsw i32 %494, %497
%499 = add nsw i32 %491, %498
%500 = load i32*, i32** %4
%501 = getelementptr inbounds i32, i32* %500, i64 14
store i32 %499, i32* %501
%502 = load i32*, i32** %5
%503 = getelementptr inbounds i32, i32* %502, i64 3
%504 = load i32, i32* %503
%505 = load i32*, i32** %6
%506 = getelementptr inbounds i32, i32* %505, i64 12
%507 = load i32, i32* %506
%508 = mul nsw i32 %504, %507
%509 = load i32*, i32** %5
%510 = getelementptr inbounds i32, i32* %509, i64 7
%511 = load i32, i32* %510
%512 = load i32*, i32** %6
%513 = getelementptr inbounds i32, i32* %512, i64 13
%514 = load i32, i32* %513
%515 = mul nsw i32 %511, %514
%516 = add nsw i32 %508, %515
%517 = load i32*, i32** %5
%518 = getelementptr inbounds i32, i32* %517, i64 11
%519 = load i32, i32* %518
%520 = load i32*, i32** %6
%521 = getelementptr inbounds i32, i32* %520, i64 14
%522 = load i32, i32* %521
%523 = mul nsw i32 %519, %522
%524 = add nsw i32 %516, %523
%525 = load i32*, i32** %5
%526 = getelementptr inbounds i32, i32* %525, i64 15
%527 = load i32, i32* %526
%528 = load i32*, i32** %6
%529 = getelementptr inbounds i32, i32* %528, i64 15
%530 = load i32, i32* %529
%531 = mul nsw i32 %527, %530
%532 = add nsw i32 %524, %531
%533 = load i32*, i32** %4
%534 = getelementptr inbounds i32, i32* %533, i64 15
store i32 %532, i32* %534
ret void
}

LLVM IR (-O2):
define void @matrix_multiply(i32* nocapture writeonly %0, i32* nocapture %1, i32* nocapture %2) {
%4 = load i32, i32* %1
%5 = load i32, i32* %2
%6 = mul nsw i32 %5, %4
%7 = getelementptr inbounds i32, i32* %1, i64 4
%8 = load i32, i32* %7
%9 = getelementptr inbounds i32, i32* %2, i64 1
%10 = load i32, i32* %9
%11 = mul nsw i32 %10, %8
%12 = add nsw i32 %11, %6
%13 = getelementptr inbounds i32, i32* %1, i64 8
%14 = load i32, i32* %13
%15 = getelementptr inbounds i32, i32* %2, i64 2
%16 = load i32, i32* %15
%17 = mul nsw i32 %16, %14
%18 = add nsw i32 %12, %17
%19 = getelementptr inbounds i32, i32* %1, i64 12
%20 = load i32, i32* %19
%21 = getelementptr inbounds i32, i32* %2, i64 3
%22 = load i32, i32* %21
%23 = mul nsw i32 %22, %20
%24 = add nsw i32 %18, %23
store i32 %24, i32* %0
%25 = getelementptr inbounds i32, i32* %1, i64 1
%26 = load i32, i32* %25
%27 = load i32, i32* %2
%28 = mul nsw i32 %27, %26
%29 = getelementptr inbounds i32, i32* %1, i64 5
%30 = load i32, i32* %29
%31 = load i32, i32* %9
%32 = mul nsw i32 %31, %30
%33 = add nsw i32 %32, %28
%34 = getelementptr inbounds i32, i32* %1, i64 9
%35 = load i32, i32* %34
%36 = load i32, i32* %15
%37 = mul nsw i32 %36, %35
%38 = add nsw i32 %33, %37
%39 = getelementptr inbounds i32, i32* %1, i64 13
%40 = load i32, i32* %39
%41 = load i32, i32* %21
%42 = mul nsw i32 %41, %40
%43 = add nsw i32 %38, %42
%44 = getelementptr inbounds i32, i32* %0, i64 1
store i32 %43, i32* %44
%45 = getelementptr inbounds i32, i32* %1, i64 2
%46 = load i32, i32* %45
%47 = load i32, i32* %2
%48 = mul nsw i32 %47, %46
%49 = getelementptr inbounds i32, i32* %1, i64 6
%50 = load i32, i32* %49
%51 = load i32, i32* %9
%52 = mul nsw i32 %51, %50
%53 = add nsw i32 %52, %48
%54 = getelementptr inbounds i32, i32* %1, i64 10
%55 = load i32, i32* %54
%56 = load i32, i32* %15
%57 = mul nsw i32 %56, %55
%58 = add nsw i32 %53, %57
%59 = getelementptr inbounds i32, i32* %1, i64 14
%60 = load i32, i32* %59
%61 = load i32, i32* %21
%62 = mul nsw i32 %61, %60
%63 = add nsw i32 %58, %62
%64 = getelementptr inbounds i32, i32* %0, i64 2
store i32 %63, i32* %64
%65 = getelementptr inbounds i32, i32* %1, i64 3
%66 = load i32, i32* %65
%67 = load i32, i32* %2
%68 = mul nsw i32 %67, %66
%69 = getelementptr inbounds i32, i32* %1, i64 7
%70 = load i32, i32* %69
%71 = load i32, i32* %9
%72 = mul nsw i32 %71, %70
%73 = add nsw i32 %72, %68
%74 = getelementptr inbounds i32, i32* %1, i64 11
%75 = load i32, i32* %74
%76 = load i32, i32* %15
%77 = mul nsw i32 %76, %75
%78 = add nsw i32 %73, %77
%79 = getelementptr inbounds i32, i32* %1, i64 15
%80 = load i32, i32* %79
%81 = load i32, i32* %21
%82 = mul nsw i32 %81, %80
%83 = add nsw i32 %78, %82
%84 = getelementptr inbounds i32, i32* %0, i64 3
store i32 %83, i32* %84
%85 = load i32, i32* %1
%86 = getelementptr inbounds i32, i32* %2, i64 4
%87 = load i32, i32* %86
%88 = mul nsw i32 %87, %85
%89 = load i32, i32* %7
%90 = getelementptr inbounds i32, i32* %2, i64 5
%91 = load i32, i32* %90
%92 = mul nsw i32 %91, %89
%93 = add nsw i32 %92, %88
%94 = load i32, i32* %13
%95 = getelementptr inbounds i32, i32* %2, i64 6
%96 = load i32, i32* %95
%97 = mul nsw i32 %96, %94
%98 = add nsw i32 %93, %97
%99 = load i32, i32* %19
%100 = getelementptr inbounds i32, i32* %2, i64 7
%101 = load i32, i32* %100
%102 = mul nsw i32 %101, %99
%103 = add nsw i32 %98, %102
%104 = getelementptr inbounds i32, i32* %0, i64 4
store i32 %103, i32* %104
%105 = load i32, i32* %25
%106 = load i32, i32* %86
%107 = mul nsw i32 %106, %105
%108 = load i32, i32* %29
%109 = load i32, i32* %90
%110 = mul nsw i32 %109, %108
%111 = add nsw i32 %110, %107
%112 = load i32, i32* %34
%113 = load i32, i32* %95
%114 = mul nsw i32 %113, %112
%115 = add nsw i32 %111, %114
%116 = load i32, i32* %39
%117 = load i32, i32* %100
%118 = mul nsw i32 %117, %116
%119 = add nsw i32 %115, %118
%120 = getelementptr inbounds i32, i32* %0, i64 5
store i32 %119, i32* %120
%121 = load i32, i32* %45
%122 = load i32, i32* %86
%123 = mul nsw i32 %122, %121
%124 = load i32, i32* %49
%125 = load i32, i32* %90
%126 = mul nsw i32 %125, %124
%127 = add nsw i32 %126, %123
%128 = load i32, i32* %54
%129 = load i32, i32* %95
%130 = mul nsw i32 %129, %128
%131 = add nsw i32 %127, %130
%132 = load i32, i32* %59
%133 = load i32, i32* %100
%134 = mul nsw i32 %133, %132
%135 = add nsw i32 %131, %134
%136 = getelementptr inbounds i32, i32* %0, i64 6
store i32 %135, i32* %136
%137 = load i32, i32* %65
%138 = load i32, i32* %86
%139 = mul nsw i32 %138, %137
%140 = load i32, i32* %69
%141 = load i32, i32* %90
%142 = mul nsw i32 %141, %140
%143 = add nsw i32 %142, %139
%144 = load i32, i32* %74
%145 = load i32, i32* %95
%146 = mul nsw i32 %145, %144
%147 = add nsw i32 %143, %146
%148 = load i32, i32* %79
%149 = load i32, i32* %100
%150 = mul nsw i32 %149, %148
%151 = add nsw i32 %147, %150
%152 = getelementptr inbounds i32, i32* %0, i64 7
store i32 %151, i32* %152
%153 = load i32, i32* %1
%154 = getelementptr inbounds i32, i32* %2, i64 8
%155 = load i32, i32* %154
%156 = mul nsw i32 %155, %153
%157 = load i32, i32* %7
%158 = getelementptr inbounds i32, i32* %2, i64 9
%159 = load i32, i32* %158
%160 = mul nsw i32 %159, %157
%161 = add nsw i32 %160, %156
%162 = load i32, i32* %13
%163 = getelementptr inbounds i32, i32* %2, i64 10
%164 = load i32, i32* %163
%165 = mul nsw i32 %164, %162
%166 = add nsw i32 %161, %165
%167 = load i32, i32* %19
%168 = getelementptr inbounds i32, i32* %2, i64 11
%169 = load i32, i32* %168
%170 = mul nsw i32 %169, %167
%171 = add nsw i32 %166, %170
%172 = getelementptr inbounds i32, i32* %0, i64 8
store i32 %171, i32* %172
%173 = load i32, i32* %25
%174 = load i32, i32* %154
%175 = mul nsw i32 %174, %173
%176 = load i32, i32* %29
%177 = load i32, i32* %158
%178 = mul nsw i32 %177, %176
%179 = add nsw i32 %178, %175
%180 = load i32, i32* %34
%181 = load i32, i32* %163
%182 = mul nsw i32 %181, %180
%183 = add nsw i32 %179, %182
%184 = load i32, i32* %39
%185 = load i32, i32* %168
%186 = mul nsw i32 %185, %184
%187 = add nsw i32 %183, %186
%188 = getelementptr inbounds i32, i32* %0, i64 9
store i32 %187, i32* %188
%189 = load i32, i32* %45
%190 = load i32, i32* %154
%191 = mul nsw i32 %190, %189
%192 = load i32, i32* %49
%193 = load i32, i32* %158
%194 = mul nsw i32 %193, %192
%195 = add nsw i32 %194, %191
%196 = load i32, i32* %54
%197 = load i32, i32* %163
%198 = mul nsw i32 %197, %196
%199 = add nsw i32 %195, %198
%200 = load i32, i32* %59
%201 = load i32, i32* %168
%202 = mul nsw i32 %201, %200
%203 = add nsw i32 %199, %202
%204 = getelementptr inbounds i32, i32* %0, i64 10
store i32 %203, i32* %204
%205 = load i32, i32* %65
%206 = load i32, i32* %154
%207 = mul nsw i32 %206, %205
%208 = load i32, i32* %69
%209 = load i32, i32* %158
%210 = mul nsw i32 %209, %208
%211 = add nsw i32 %210, %207
%212 = load i32, i32* %74
%213 = load i32, i32* %163
%214 = mul nsw i32 %213, %212
%215 = add nsw i32 %211, %214
%216 = load i32, i32* %79
%217 = load i32, i32* %168
%218 = mul nsw i32 %217, %216
%219 = add nsw i32 %215, %218
%220 = getelementptr inbounds i32, i32* %0, i64 11
store i32 %219, i32* %220
%221 = load i32, i32* %1
%222 = getelementptr inbounds i32, i32* %2, i64 12
%223 = load i32, i32* %222
%224 = mul nsw i32 %223, %221
%225 = load i32, i32* %7
%226 = getelementptr inbounds i32, i32* %2, i64 13
%227 = load i32, i32* %226
%228 = mul nsw i32 %227, %225
%229 = add nsw i32 %228, %224
%230 = load i32, i32* %13
%231 = getelementptr inbounds i32, i32* %2, i64 14
%232 = load i32, i32* %231
%233 = mul nsw i32 %232, %230
%234 = add nsw i32 %229, %233
%235 = load i32, i32* %19
%236 = getelementptr inbounds i32, i32* %2, i64 15
%237 = load i32, i32* %236
%238 = mul nsw i32 %237, %235
%239 = add nsw i32 %234, %238
%240 = getelementptr inbounds i32, i32* %0, i64 12
store i32 %239, i32* %240
%241 = load i32, i32* %25
%242 = load i32, i32* %222
%243 = mul nsw i32 %242, %241
%244 = load i32, i32* %29
%245 = load i32, i32* %226
%246 = mul nsw i32 %245, %244
%247 = add nsw i32 %246, %243
%248 = load i32, i32* %34
%249 = load i32, i32* %231
%250 = mul nsw i32 %249, %248
%251 = add nsw i32 %247, %250
%252 = load i32, i32* %39
%253 = load i32, i32* %236
%254 = mul nsw i32 %253, %252
%255 = add nsw i32 %251, %254
%256 = getelementptr inbounds i32, i32* %0, i64 13
store i32 %255, i32* %256
%257 = load i32, i32* %45
%258 = load i32, i32* %222
%259 = mul nsw i32 %258, %257
%260 = load i32, i32* %49
%261 = load i32, i32* %226
%262 = mul nsw i32 %261, %260
%263 = add nsw i32 %262, %259
%264 = load i32, i32* %54
%265 = load i32, i32* %231
%266 = mul nsw i32 %265, %264
%267 = add nsw i32 %263, %266
%268 = load i32, i32* %59
%269 = load i32, i32* %236
%270 = mul nsw i32 %269, %268
%271 = add nsw i32 %267, %270
%272 = getelementptr inbounds i32, i32* %0, i64 14
store i32 %271, i32* %272
%273 = load i32, i32* %65
%274 = load i32, i32* %222
%275 = mul nsw i32 %274, %273
%276 = load i32, i32* %69
%277 = load i32, i32* %226
%278 = mul nsw i32 %277, %276
%279 = add nsw i32 %278, %275
%280 = load i32, i32* %74
%281 = load i32, i32* %231
%282 = mul nsw i32 %281, %280
%283 = add nsw i32 %279, %282
%284 = load i32, i32* %79
%285 = load i32, i32* %236
%286 = mul nsw i32 %285, %284
%287 = add nsw i32 %283, %286
%288 = getelementptr inbounds i32, i32* %0, i64 15
store i32 %287, i32* %288
ret void
}