void foo(int *__restrict__ ia, int *__restrict__ ib, int *__restrict__ oxa,
         int *__restrict__ oxb, int *__restrict__ oya, int *__restrict__ oyb) {
  int i;
  long int mya[52];
  long int myb[52];
  for (i = 0; i < 52; i++) {
    mya[i] = ia[i] * oxa[i] + ib[i] * oxb[i];
    myb[i] = -ia[i] * oxb[i] + ib[i] * oxa[i];
    oya[i] = 0;
    oyb[i] = myb[i] >> 10;
  }
}


x86 assembly (clang, -O0):
<foo>:
push   %rbp
mov    %rsp,%rbp
sub    $0x300,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
cmpl   $0x34,-0x34(%rbp)
jge    11ee <foo+0xee>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x18(%rbp),%rcx
movslq -0x34(%rbp),%rdx
imul   (%rcx,%rdx,4),%eax
mov    -0x10(%rbp),%rcx
movslq -0x34(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
mov    -0x20(%rbp),%rdx
movslq -0x34(%rbp),%rsi
imul   (%rdx,%rsi,4),%ecx
add    %ecx,%eax
movslq %eax,%rcx
movslq -0x34(%rbp),%rax
mov    %rcx,-0x1e0(%rbp,%rax,8)
ff
mov    -0x8(%rbp),%rcx
movslq -0x34(%rbp),%rdx
xor    %eax,%eax
sub    (%rcx,%rdx,4),%eax
mov    -0x20(%rbp),%rcx
movslq -0x34(%rbp),%rdx
imul   (%rcx,%rdx,4),%eax
mov    -0x10(%rbp),%rcx
movslq -0x34(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
mov    -0x18(%rbp),%rdx
movslq -0x34(%rbp),%rsi
imul   (%rdx,%rsi,4),%ecx
add    %ecx,%eax
movslq %eax,%rcx
movslq -0x34(%rbp),%rax
mov    %rcx,-0x380(%rbp,%rax,8)
ff
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
movslq -0x34(%rbp),%rax
mov    -0x380(%rbp,%rax,8),%rax
ff
sar    $0xa,%rax
mov    %eax,%edx
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    112a <foo+0x2a>
add    $0x300,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<foo>:
xorps  %xmm0,%xmm0
movups %xmm0,0xc0(%r8)
movups %xmm0,0xb0(%r8)
movups %xmm0,0xa0(%r8)
movups %xmm0,0x90(%r8)
movups %xmm0,0x80(%r8)
movups %xmm0,0x70(%r8)
movups %xmm0,0x60(%r8)
movups %xmm0,0x50(%r8)
movups %xmm0,0x40(%r8)
movups %xmm0,0x30(%r8)
movups %xmm0,0x20(%r8)
movups %xmm0,0x10(%r8)
movups %xmm0,(%r8)
movdqu (%rdi),%xmm0
movdqu (%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu (%rsi),%xmm0
movdqu (%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,(%r9)
movdqu 0x10(%rdi),%xmm0
movdqu 0x10(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0x10(%rsi),%xmm0
movdqu 0x10(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0x10(%r9)
movdqu 0x20(%rdi),%xmm0
movdqu 0x20(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0x20(%rsi),%xmm0
movdqu 0x20(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0x20(%r9)
movdqu 0x30(%rdi),%xmm0
movdqu 0x30(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0x30(%rsi),%xmm0
movdqu 0x30(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0x30(%r9)
movdqu 0x40(%rdi),%xmm0
movdqu 0x40(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0x40(%rsi),%xmm0
movdqu 0x40(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0x40(%r9)
movdqu 0x50(%rdi),%xmm0
movdqu 0x50(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0x50(%rsi),%xmm0
movdqu 0x50(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0x50(%r9)
movdqu 0x60(%rdi),%xmm0
movdqu 0x60(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0x60(%rsi),%xmm0
movdqu 0x60(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0x60(%r9)
movdqu 0x70(%rdi),%xmm0
movdqu 0x70(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0x70(%rsi),%xmm0
movdqu 0x70(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0x70(%r9)
movdqu 0x80(%rdi),%xmm0
movdqu 0x80(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0x80(%rsi),%xmm0
movdqu 0x80(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0x80(%r9)
movdqu 0x90(%rdi),%xmm0
movdqu 0x90(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0x90(%rsi),%xmm0
movdqu 0x90(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0x90(%r9)
movdqu 0xa0(%rdi),%xmm0
movdqu 0xa0(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0xa0(%rsi),%xmm0
movdqu 0xa0(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0xa0(%r9)
movdqu 0xb0(%rdi),%xmm0
movdqu 0xb0(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0xb0(%rsi),%xmm0
movdqu 0xb0(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0xb0(%r9)
movdqu 0xc0(%rdi),%xmm0
movdqu 0xc0(%rcx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu 0xc0(%rsi),%xmm0
movdqu 0xc0(%rdx),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
psubd  %xmm1,%xmm2
psrad  $0xa,%xmm2
movdqu %xmm2,0xc0(%r9)
ret

LLVM IR (-O0):
define void @foo(i32* noalias %0, i32* noalias %1, i32* noalias %2, i32* noalias %3, i32* noalias %4, i32* noalias %5) {
%7 = alloca i32*
%8 = alloca i32*
%9 = alloca i32*
%10 = alloca i32*
%11 = alloca i32*
%12 = alloca i32*
%13 = alloca i32
%14 = alloca [52 x i64]
%15 = alloca [52 x i64]
store i32* %0, i32** %7
store i32* %1, i32** %8
store i32* %2, i32** %9
store i32* %3, i32** %10
store i32* %4, i32** %11
store i32* %5, i32** %12
store i32 0, i32* %13
br label %16
16: ; preds = %89, %6
%17 = load i32, i32* %13
%18 = icmp slt i32 %17, 52
br i1 %18, label %19, label %92
19: ; preds = %16
%20 = load i32*, i32** %7
%21 = load i32, i32* %13
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds i32, i32* %20, i64 %22
%24 = load i32, i32* %23
%25 = load i32*, i32** %9
%26 = load i32, i32* %13
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i32, i32* %25, i64 %27
%29 = load i32, i32* %28
%30 = mul nsw i32 %24, %29
%31 = load i32*, i32** %8
%32 = load i32, i32* %13
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds i32, i32* %31, i64 %33
%35 = load i32, i32* %34
%36 = load i32*, i32** %10
%37 = load i32, i32* %13
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds i32, i32* %36, i64 %38
%40 = load i32, i32* %39
%41 = mul nsw i32 %35, %40
%42 = add nsw i32 %30, %41
%43 = sext i32 %42 to i64
%44 = load i32, i32* %13
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [52 x i64], [52 x i64]* %14, i64 0, i64 %45
store i64 %43, i64* %46
%47 = load i32*, i32** %7
%48 = load i32, i32* %13
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds i32, i32* %47, i64 %49
%51 = load i32, i32* %50
%52 = sub nsw i32 0, %51
%53 = load i32*, i32** %10
%54 = load i32, i32* %13
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds i32, i32* %53, i64 %55
%57 = load i32, i32* %56
%58 = mul nsw i32 %52, %57
%59 = load i32*, i32** %8
%60 = load i32, i32* %13
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds i32, i32* %59, i64 %61
%63 = load i32, i32* %62
%64 = load i32*, i32** %9
%65 = load i32, i32* %13
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds i32, i32* %64, i64 %66
%68 = load i32, i32* %67
%69 = mul nsw i32 %63, %68
%70 = add nsw i32 %58, %69
%71 = sext i32 %70 to i64
%72 = load i32, i32* %13
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds [52 x i64], [52 x i64]* %15, i64 0, i64 %73
store i64 %71, i64* %74
%75 = load i32*, i32** %11
%76 = load i32, i32* %13
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds i32, i32* %75, i64 %77
store i32 0, i32* %78
%79 = load i32, i32* %13
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds [52 x i64], [52 x i64]* %15, i64 0, i64 %80
%82 = load i64, i64* %81
%83 = ashr i64 %82, 10
%84 = trunc i64 %83 to i32
%85 = load i32*, i32** %12
%86 = load i32, i32* %13
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds i32, i32* %85, i64 %87
store i32 %84, i32* %88
br label %89
89: ; preds = %19
%90 = load i32, i32* %13
%91 = add nsw i32 %90, 1
store i32 %91, i32* %13
br label %16
92: ; preds = %16
ret void
}

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