#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*/ bar(int);
void foo() {
  short coefs[2 * 32];
  short input[2 * 100];
  short output[2 * 100];
  int sum_real, sum_imag;
  int i, j, k;
  k = 10;
  for (i = 0; i < 100; i++) {
    sum_real = 0;
    sum_imag = 0;
    for (j = 0; j < 32; j++) {
      sum_real += input[2 * k - 2 * j + 1] * coefs[2 * j + 1] -
                  input[2 * k - 2 * j] * coefs[2 * j];
      sum_imag += input[2 * k - 2 * j] * coefs[2 * j + 1] +
                  input[2 * k - 2 * j + 1] * coefs[2 * j];
    }
    output[2 * i + 1] = sum_imag;
    output[2 * i] = sum_real;
    k++;
  }
  bar(sum_imag);
}


x86 assembly (clang, -O0):
<foo>:
push   %rbp
mov    %rsp,%rbp
sub    $0x3c0,%rsp
movl   $0xa,-0x3b4(%rbp)
movl   $0x0,-0x3ac(%rbp)
cmpl   $0x64,-0x3ac(%rbp)
jge    12cb <foo+0x1bb>
movl   $0x0,-0x3a4(%rbp)
movl   $0x0,-0x3a8(%rbp)
movl   $0x0,-0x3b0(%rbp)
cmpl   $0x20,-0x3b0(%rbp)
jge    126d <foo+0x15d>
mov    -0x3b4(%rbp),%eax
shl    $0x1,%eax
mov    -0x3b0(%rbp),%ecx
shl    $0x1,%ecx
sub    %ecx,%eax
add    $0x1,%eax
cltq
movswl -0x210(%rbp,%rax,2),%eax
ff
mov    -0x3b0(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movswl -0x80(%rbp,%rcx,2),%ecx
imul   %ecx,%eax
mov    -0x3b4(%rbp),%ecx
shl    $0x1,%ecx
mov    -0x3b0(%rbp),%edx
shl    $0x1,%edx
sub    %edx,%ecx
movslq %ecx,%rcx
movswl -0x210(%rbp,%rcx,2),%ecx
ff
mov    -0x3b0(%rbp),%edx
shl    $0x1,%edx
movslq %edx,%rdx
movswl -0x80(%rbp,%rdx,2),%edx
imul   %edx,%ecx
sub    %ecx,%eax
add    -0x3a4(%rbp),%eax
mov    %eax,-0x3a4(%rbp)
mov    -0x3b4(%rbp),%eax
shl    $0x1,%eax
mov    -0x3b0(%rbp),%ecx
shl    $0x1,%ecx
sub    %ecx,%eax
cltq
movswl -0x210(%rbp,%rax,2),%eax
ff
mov    -0x3b0(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movswl -0x80(%rbp,%rcx,2),%ecx
imul   %ecx,%eax
mov    -0x3b4(%rbp),%ecx
shl    $0x1,%ecx
mov    -0x3b0(%rbp),%edx
shl    $0x1,%edx
sub    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movswl -0x210(%rbp,%rcx,2),%ecx
ff
mov    -0x3b0(%rbp),%edx
shl    $0x1,%edx
movslq %edx,%rdx
movswl -0x80(%rbp,%rdx,2),%edx
imul   %edx,%ecx
add    %ecx,%eax
add    -0x3a8(%rbp),%eax
mov    %eax,-0x3a8(%rbp)
mov    -0x3b0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3b0(%rbp)
jmp    115a <foo+0x4a>
mov    -0x3a8(%rbp),%eax
mov    %ax,%cx
mov    -0x3ac(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
cltq
mov    %cx,-0x3a0(%rbp,%rax,2)
ff
mov    -0x3a4(%rbp),%eax
mov    %ax,%cx
mov    -0x3ac(%rbp),%eax
shl    $0x1,%eax
cltq
mov    %cx,-0x3a0(%rbp,%rax,2)
ff
mov    -0x3b4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3b4(%rbp)
mov    -0x3ac(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3ac(%rbp)
jmp    112f <foo+0x1f>
mov    -0x3a8(%rbp),%edi
call   1030 <bar@plt>
add    $0x3c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<foo>:
mov    $0x6,%eax
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%rax
cmp    $0x6a,%rax
jne    1120 <foo+0x10>
sub    $0x1e8,%rsp
movups 0x40(%rsp,%rax,4),%xmm0
movaps %xmm0,-0x70(%rsp)
movups 0x30(%rsp,%rax,4),%xmm0
movaps %xmm0,-0x50(%rsp)
movdqu 0x20(%rsp,%rax,4),%xmm3
movaps -0x30(%rsp),%xmm0
movaps %xmm0,-0x80(%rsp)
movaps -0x10(%rsp),%xmm0
movaps %xmm0,-0x40(%rsp)
movdqa (%rsp),%xmm12
movdqu -0x20(%rsp,%rax,4),%xmm1
movdqu -0x10(%rsp,%rax,4),%xmm4
movdqu (%rsp,%rax,4),%xmm15
movdqu 0x10(%rsp,%rax,4),%xmm9
movdqa 0x10(%rsp),%xmm14
movdqa 0x20(%rsp),%xmm10
movdqa 0x30(%rsp),%xmm11
movdqa 0x40(%rsp),%xmm7
pshuflw $0xe8,%xmm1,%xmm2
pshufhw $0xe8,%xmm2,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshuflw $0x1b,%xmm2,%xmm2
pxor   %xmm13,%xmm13
punpcklwd %xmm13,%xmm2
pshuflw $0xe7,%xmm1,%xmm1
pshufhw $0xe7,%xmm1,%xmm1
pshufd $0xe2,%xmm1,%xmm8
punpcklwd %xmm13,%xmm8
pmaddwd %xmm7,%xmm8
psrld  $0x10,%xmm7
pmaddwd %xmm2,%xmm7
movdqa %xmm7,-0x60(%rsp)
pshuflw $0xe8,%xmm4,%xmm2
pshufhw $0xe8,%xmm2,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshuflw $0x1b,%xmm2,%xmm0
punpcklwd %xmm13,%xmm0
pshuflw $0xe7,%xmm4,%xmm2
pshufhw $0xe7,%xmm2,%xmm2
pshufd $0xe2,%xmm2,%xmm2
punpcklwd %xmm13,%xmm2
pmaddwd %xmm11,%xmm2
psrld  $0x10,%xmm11
pmaddwd %xmm0,%xmm11
pshuflw $0xe8,%xmm15,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshuflw $0x1b,%xmm0,%xmm0
punpcklwd %xmm13,%xmm0
pshuflw $0xe7,%xmm15,%xmm4
pshufhw $0xe7,%xmm4,%xmm4
pshufd $0xe2,%xmm4,%xmm15
punpcklwd %xmm13,%xmm15
pmaddwd %xmm10,%xmm15
psrld  $0x10,%xmm10
pmaddwd %xmm0,%xmm10
pshuflw $0xe8,%xmm9,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshuflw $0x1b,%xmm0,%xmm0
punpcklwd %xmm13,%xmm0
pshuflw $0xe7,%xmm9,%xmm4
pshufhw $0xe7,%xmm4,%xmm4
pshufd $0xe2,%xmm4,%xmm4
punpcklwd %xmm13,%xmm4
pmaddwd %xmm14,%xmm4
psrld  $0x10,%xmm14
pmaddwd %xmm0,%xmm14
pshuflw $0xe8,%xmm3,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshuflw $0x1b,%xmm0,%xmm0
punpcklwd %xmm13,%xmm0
pshuflw $0xe7,%xmm3,%xmm6
pshufhw $0xe7,%xmm6,%xmm6
pshufd $0xe2,%xmm6,%xmm6
punpcklwd %xmm13,%xmm6
pmaddwd %xmm12,%xmm6
psrld  $0x10,%xmm12
pmaddwd %xmm0,%xmm12
movdqa -0x50(%rsp),%xmm3
pshuflw $0xe8,%xmm3,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshuflw $0x1b,%xmm0,%xmm9
punpcklwd %xmm13,%xmm9
pshuflw $0xe7,%xmm3,%xmm1
pshufhw $0xe7,%xmm1,%xmm1
pshufd $0xe2,%xmm1,%xmm1
punpcklwd %xmm13,%xmm1
movdqa -0x40(%rsp),%xmm0
pmaddwd %xmm0,%xmm1
psrld  $0x10,%xmm0
pmaddwd %xmm9,%xmm0
movdqa -0x70(%rsp),%xmm3
pshuflw $0xe8,%xmm3,%xmm7
pshufhw $0xe8,%xmm7,%xmm7
pshufd $0xe8,%xmm7,%xmm7
pshuflw $0x1b,%xmm7,%xmm7
punpcklwd %xmm13,%xmm7
pshuflw $0xe7,%xmm3,%xmm5
pshufhw $0xe7,%xmm5,%xmm5
pshufd $0xe2,%xmm5,%xmm5
punpcklwd %xmm13,%xmm5
movdqa -0x20(%rsp),%xmm9
pmaddwd %xmm9,%xmm5
psrld  $0x10,%xmm9
pmaddwd %xmm7,%xmm9
movdqa -0x80(%rsp),%xmm3
pshuflw $0xe8,%xmm3,%xmm7
movdqa %xmm7,-0x70(%rsp)
psrld  $0x10,%xmm3
movdqa %xmm3,-0x80(%rsp)
movdqu 0x50(%rsp,%rax,4),%xmm3
pshuflw $0xe7,%xmm3,%xmm13
pshufhw $0xe7,%xmm13,%xmm7
pshufd $0xe2,%xmm7,%xmm13
pshuflw $0xe8,-0x80(%rsp),%xmm7
pshufhw $0xe8,%xmm7,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpcklwd %xmm13,%xmm7
pshufd $0x1b,%xmm3,%xmm13
pshufhw $0xe8,-0x70(%rsp),%xmm3
pshufd $0xe8,%xmm3,%xmm3
movdqa %xmm3,-0x80(%rsp)
pshuflw $0xe8,%xmm13,%xmm3
pshufhw $0xe8,%xmm3,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpcklwd -0x80(%rsp),%xmm3
pmaddwd %xmm7,%xmm3
paddd  %xmm9,%xmm3
paddd  %xmm0,%xmm5
paddd  %xmm3,%xmm5
paddd  %xmm12,%xmm1
paddd  %xmm1,%xmm6
paddd  %xmm5,%xmm6
paddd  %xmm14,%xmm4
paddd  %xmm10,%xmm4
paddd  %xmm4,%xmm15
paddd  %xmm6,%xmm15
paddd  %xmm11,%xmm2
paddd  -0x60(%rsp),%xmm2
paddd  %xmm2,%xmm8
paddd  %xmm15,%xmm8
pshufd $0xee,%xmm8,%xmm0
paddd  %xmm8,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%edi
add    $0x1e8,%rsp
jmp    1030 <bar@plt>

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

LLVM IR (-O2):
define void @foo() {
%1 = alloca [64 x i16]
%2 = alloca [200 x i16]
%3 = bitcast [64 x i16]* %1 to i8*
%4 = bitcast [200 x i16]* %2 to i8*
br label %5
5: ; preds = %5, %0
%6 = phi i64 [ 10, %0 ], [ %7, %5 ]
%7 = add nuw nsw i64 %6, 1
%8 = icmp eq i64 %7, 110
br i1 %8, label %9, label %5
9: ; preds = %5
%10 = shl nuw nsw i64 %6, 1
%11 = or i64 %10, 1
%12 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %11
%13 = getelementptr inbounds i16, i16* %12, i64 -7
%14 = bitcast i16* %13 to <8 x i16>*
%15 = load <8 x i16>, <8 x i16>* %14
%16 = bitcast [64 x i16]* %1 to <8 x i16>*
%17 = load <8 x i16>, <8 x i16>* %16
%18 = shl nuw i64 %6, 1
%19 = add i64 %18, -8
%20 = or i64 %19, 1
%21 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %20
%22 = getelementptr inbounds i16, i16* %21, i64 -7
%23 = bitcast i16* %22 to <8 x i16>*
%24 = load <8 x i16>, <8 x i16>* %23
%25 = getelementptr inbounds [64 x i16], [64 x i16]* %1, i64 0, i64 8
%26 = bitcast i16* %25 to <8 x i16>*
%27 = load <8 x i16>, <8 x i16>* %26
%28 = shl nuw i64 %6, 1
%29 = add i64 %28, -16
%30 = or i64 %29, 1
%31 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %30
%32 = getelementptr inbounds i16, i16* %31, i64 -7
%33 = bitcast i16* %32 to <8 x i16>*
%34 = load <8 x i16>, <8 x i16>* %33
%35 = getelementptr inbounds [64 x i16], [64 x i16]* %1, i64 0, i64 16
%36 = bitcast i16* %35 to <8 x i16>*
%37 = load <8 x i16>, <8 x i16>* %36
%38 = shl nuw i64 %6, 1
%39 = add i64 %38, -24
%40 = or i64 %39, 1
%41 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %40
%42 = getelementptr inbounds i16, i16* %41, i64 -7
%43 = bitcast i16* %42 to <8 x i16>*
%44 = load <8 x i16>, <8 x i16>* %43
%45 = getelementptr inbounds [64 x i16], [64 x i16]* %1, i64 0, i64 24
%46 = bitcast i16* %45 to <8 x i16>*
%47 = load <8 x i16>, <8 x i16>* %46
%48 = shl nuw i64 %6, 1
%49 = add i64 %48, -32
%50 = or i64 %49, 1
%51 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %50
%52 = getelementptr inbounds i16, i16* %51, i64 -7
%53 = bitcast i16* %52 to <8 x i16>*
%54 = load <8 x i16>, <8 x i16>* %53
%55 = getelementptr inbounds [64 x i16], [64 x i16]* %1, i64 0, i64 32
%56 = bitcast i16* %55 to <8 x i16>*
%57 = load <8 x i16>, <8 x i16>* %56
%58 = shl nuw i64 %6, 1
%59 = add i64 %58, -40
%60 = or i64 %59, 1
%61 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %60
%62 = getelementptr inbounds i16, i16* %61, i64 -7
%63 = bitcast i16* %62 to <8 x i16>*
%64 = load <8 x i16>, <8 x i16>* %63
%65 = getelementptr inbounds [64 x i16], [64 x i16]* %1, i64 0, i64 40
%66 = bitcast i16* %65 to <8 x i16>*
%67 = load <8 x i16>, <8 x i16>* %66
%68 = shl nuw i64 %6, 1
%69 = add i64 %68, -48
%70 = or i64 %69, 1
%71 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %70
%72 = getelementptr inbounds i16, i16* %71, i64 -7
%73 = bitcast i16* %72 to <8 x i16>*
%74 = load <8 x i16>, <8 x i16>* %73
%75 = getelementptr inbounds [64 x i16], [64 x i16]* %1, i64 0, i64 48
%76 = bitcast i16* %75 to <8 x i16>*
%77 = load <8 x i16>, <8 x i16>* %76
%78 = shl nuw i64 %6, 1
%79 = add i64 %78, -56
%80 = or i64 %79, 1
%81 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %80
%82 = getelementptr inbounds i16, i16* %81, i64 -7
%83 = bitcast i16* %82 to <8 x i16>*
%84 = load <8 x i16>, <8 x i16>* %83
%85 = getelementptr inbounds [64 x i16], [64 x i16]* %1, i64 0, i64 56
%86 = bitcast i16* %85 to <8 x i16>*
%87 = load <8 x i16>, <8 x i16>* %86
%88 = shufflevector <8 x i16> %84, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%89 = shufflevector <4 x i16> %88, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%90 = sext <4 x i16> %89 to <4 x i32>
%91 = shufflevector <8 x i16> %87, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%92 = sext <4 x i16> %91 to <4 x i32>
%93 = mul nsw <4 x i32> %90, %92
%94 = shufflevector <8 x i16> %74, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%95 = shufflevector <4 x i16> %94, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%96 = sext <4 x i16> %95 to <4 x i32>
%97 = shufflevector <8 x i16> %77, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%98 = sext <4 x i16> %97 to <4 x i32>
%99 = mul nsw <4 x i32> %96, %98
%100 = shufflevector <8 x i16> %64, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%101 = shufflevector <4 x i16> %100, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%102 = sext <4 x i16> %101 to <4 x i32>
%103 = shufflevector <8 x i16> %67, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%104 = sext <4 x i16> %103 to <4 x i32>
%105 = mul nsw <4 x i32> %102, %104
%106 = shufflevector <8 x i16> %54, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%107 = shufflevector <4 x i16> %106, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%108 = sext <4 x i16> %107 to <4 x i32>
%109 = shufflevector <8 x i16> %57, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%110 = sext <4 x i16> %109 to <4 x i32>
%111 = mul nsw <4 x i32> %108, %110
%112 = shufflevector <8 x i16> %44, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%113 = shufflevector <4 x i16> %112, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%114 = sext <4 x i16> %113 to <4 x i32>
%115 = shufflevector <8 x i16> %47, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%116 = sext <4 x i16> %115 to <4 x i32>
%117 = mul nsw <4 x i32> %114, %116
%118 = shufflevector <8 x i16> %34, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%119 = shufflevector <4 x i16> %118, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%120 = sext <4 x i16> %119 to <4 x i32>
%121 = shufflevector <8 x i16> %37, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%122 = sext <4 x i16> %121 to <4 x i32>
%123 = mul nsw <4 x i32> %120, %122
%124 = shufflevector <8 x i16> %24, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%125 = shufflevector <4 x i16> %124, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%126 = sext <4 x i16> %125 to <4 x i32>
%127 = shufflevector <8 x i16> %27, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%128 = sext <4 x i16> %127 to <4 x i32>
%129 = mul nsw <4 x i32> %126, %128
%130 = shufflevector <8 x i16> %15, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%131 = shufflevector <4 x i16> %130, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%132 = sext <4 x i16> %131 to <4 x i32>
%133 = shufflevector <8 x i16> %17, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%134 = sext <4 x i16> %133 to <4 x i32>
%135 = mul nsw <4 x i32> %132, %134
%136 = shufflevector <8 x i16> %17, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%137 = sext <4 x i16> %136 to <4 x i32>
%138 = shufflevector <8 x i16> %15, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%139 = shufflevector <4 x i16> %138, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%140 = sext <4 x i16> %139 to <4 x i32>
%141 = mul nsw <4 x i32> %137, %140
%142 = add <4 x i32> %135, %141
%143 = add <4 x i32> %129, %142
%144 = shufflevector <8 x i16> %27, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%145 = sext <4 x i16> %144 to <4 x i32>
%146 = shufflevector <8 x i16> %24, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%147 = shufflevector <4 x i16> %146, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%148 = sext <4 x i16> %147 to <4 x i32>
%149 = mul nsw <4 x i32> %145, %148
%150 = add <4 x i32> %143, %149
%151 = add <4 x i32> %123, %150
%152 = shufflevector <8 x i16> %37, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%153 = sext <4 x i16> %152 to <4 x i32>
%154 = shufflevector <8 x i16> %34, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%155 = shufflevector <4 x i16> %154, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%156 = sext <4 x i16> %155 to <4 x i32>
%157 = mul nsw <4 x i32> %153, %156
%158 = add <4 x i32> %151, %157
%159 = add <4 x i32> %117, %158
%160 = shufflevector <8 x i16> %47, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%161 = sext <4 x i16> %160 to <4 x i32>
%162 = shufflevector <8 x i16> %44, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%163 = shufflevector <4 x i16> %162, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%164 = sext <4 x i16> %163 to <4 x i32>
%165 = mul nsw <4 x i32> %161, %164
%166 = add <4 x i32> %159, %165
%167 = add <4 x i32> %111, %166
%168 = shufflevector <8 x i16> %57, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%169 = sext <4 x i16> %168 to <4 x i32>
%170 = shufflevector <8 x i16> %54, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%171 = shufflevector <4 x i16> %170, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%172 = sext <4 x i16> %171 to <4 x i32>
%173 = mul nsw <4 x i32> %169, %172
%174 = add <4 x i32> %167, %173
%175 = add <4 x i32> %105, %174
%176 = shufflevector <8 x i16> %67, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%177 = sext <4 x i16> %176 to <4 x i32>
%178 = shufflevector <8 x i16> %64, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%179 = shufflevector <4 x i16> %178, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%180 = sext <4 x i16> %179 to <4 x i32>
%181 = mul nsw <4 x i32> %177, %180
%182 = add <4 x i32> %175, %181
%183 = add <4 x i32> %99, %182
%184 = shufflevector <8 x i16> %77, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%185 = sext <4 x i16> %184 to <4 x i32>
%186 = shufflevector <8 x i16> %74, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%187 = shufflevector <4 x i16> %186, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%188 = sext <4 x i16> %187 to <4 x i32>
%189 = mul nsw <4 x i32> %185, %188
%190 = add <4 x i32> %183, %189
%191 = add <4 x i32> %93, %190
%192 = shufflevector <8 x i16> %87, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%193 = sext <4 x i16> %192 to <4 x i32>
%194 = shufflevector <8 x i16> %84, <8 x i16> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%195 = shufflevector <4 x i16> %194, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%196 = sext <4 x i16> %195 to <4 x i32>
%197 = mul nsw <4 x i32> %193, %196
%198 = add <4 x i32> %191, %197
%199 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %198)
%200 = tail call i32 @bar(i32 %199)
ret void
}