__attribute__((no)) int main1() {
  int i;
  int a[128];
  int b[128];
  for (i = 0; i < 128; i++) {
    b[i] = i * 3;
    asm volatile("" ::: "memory");
  }
  for (i = 128; i > 0; i--) {
    a[128 - i] = b[i - 1];
  }
  for (i = 0; i < 128; i++) {
    if (a[i] != b[128 - 1 - i])
      abort();
  }
  return 0;
}


x86 assembly (clang, -O0):
<main1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x410,%rsp
movl   $0x0,-0x4(%rbp)
cmpl   $0x80,-0x4(%rbp)
jge    114c <main1+0x3c>
imul   $0x3,-0x4(%rbp),%ecx
movslq -0x4(%rbp),%rax
mov    %ecx,-0x410(%rbp,%rax,4)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1122 <main1+0x12>
movl   $0x80,-0x4(%rbp)
cmpl   $0x0,-0x4(%rbp)
jle    118b <main1+0x7b>
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x410(%rbp,%rax,4),%ecx
mov    $0x80,%eax
sub    -0x4(%rbp),%eax
cltq
mov    %ecx,-0x210(%rbp,%rax,4)
mov    -0x4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x4(%rbp)
jmp    1153 <main1+0x43>
movl   $0x0,-0x4(%rbp)
cmpl   $0x80,-0x4(%rbp)
jge    11da <main1+0xca>
movslq -0x4(%rbp),%rax
mov    -0x210(%rbp,%rax,4),%eax
mov    $0x7f,%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
cmp    -0x410(%rbp,%rcx,4),%eax
je     11c7 <main1+0xb7>
call   1030 <abort@plt>
jmp    11cc <main1+0xbc>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1192 <main1+0x82>
xor    %eax,%eax
add    $0x410,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main1>:
sub    $0x408,%rsp
mov    %rsp,%rax
xor    %ecx,%ecx
nopl   0x0(%rax)
mov    %ecx,(%rax)
add    $0x3,%rcx
add    $0x4,%rax
cmp    $0x180,%rcx
jne    1120 <main1+0x10>
pshufd $0x1b,0x1f0(%rsp),%xmm0
pshufd $0x1b,0x1e0(%rsp),%xmm1
movdqa %xmm0,0x200(%rsp)
movdqa %xmm1,0x210(%rsp)
pshufd $0x1b,0x1d0(%rsp),%xmm0
pshufd $0x1b,0x1c0(%rsp),%xmm1
movdqa %xmm0,0x220(%rsp)
movdqa %xmm1,0x230(%rsp)
pshufd $0x1b,0x1b0(%rsp),%xmm0
pshufd $0x1b,0x1a0(%rsp),%xmm1
movdqa %xmm0,0x240(%rsp)
movdqa %xmm1,0x250(%rsp)
pshufd $0x1b,0x190(%rsp),%xmm0
pshufd $0x1b,0x180(%rsp),%xmm1
movdqa %xmm0,0x260(%rsp)
movdqa %xmm1,0x270(%rsp)
pshufd $0x1b,0x170(%rsp),%xmm0
pshufd $0x1b,0x160(%rsp),%xmm1
movdqa %xmm0,0x280(%rsp)
movdqa %xmm1,0x290(%rsp)
pshufd $0x1b,0x150(%rsp),%xmm0
pshufd $0x1b,0x140(%rsp),%xmm1
movdqa %xmm0,0x2a0(%rsp)
movdqa %xmm1,0x2b0(%rsp)
pshufd $0x1b,0x130(%rsp),%xmm0
pshufd $0x1b,0x120(%rsp),%xmm1
movdqa %xmm0,0x2c0(%rsp)
movdqa %xmm1,0x2d0(%rsp)
pshufd $0x1b,0x110(%rsp),%xmm0
pshufd $0x1b,0x100(%rsp),%xmm1
movdqa %xmm0,0x2e0(%rsp)
movdqa %xmm1,0x2f0(%rsp)
pshufd $0x1b,0xf0(%rsp),%xmm0
pshufd $0x1b,0xe0(%rsp),%xmm1
movdqa %xmm0,0x300(%rsp)
movdqa %xmm1,0x310(%rsp)
pshufd $0x1b,0xd0(%rsp),%xmm0
pshufd $0x1b,0xc0(%rsp),%xmm1
movdqa %xmm0,0x320(%rsp)
movdqa %xmm1,0x330(%rsp)
pshufd $0x1b,0xb0(%rsp),%xmm0
pshufd $0x1b,0xa0(%rsp),%xmm1
movdqa %xmm0,0x340(%rsp)
movdqa %xmm1,0x350(%rsp)
pshufd $0x1b,0x90(%rsp),%xmm0
pshufd $0x1b,0x80(%rsp),%xmm1
movdqa %xmm0,0x360(%rsp)
movdqa %xmm1,0x370(%rsp)
pshufd $0x1b,0x70(%rsp),%xmm0
pshufd $0x1b,0x60(%rsp),%xmm1
movdqa %xmm0,0x380(%rsp)
movdqa %xmm1,0x390(%rsp)
pshufd $0x1b,0x50(%rsp),%xmm0
pshufd $0x1b,0x40(%rsp),%xmm1
movdqa %xmm0,0x3a0(%rsp)
movdqa %xmm1,0x3b0(%rsp)
pshufd $0x1b,0x30(%rsp),%xmm0
pshufd $0x1b,0x20(%rsp),%xmm1
movdqa %xmm0,0x3c0(%rsp)
movdqa %xmm1,0x3d0(%rsp)
pshufd $0x1b,0x10(%rsp),%xmm0
pshufd $0x1b,(%rsp),%xmm1
movdqa %xmm0,0x3e0(%rsp)
movdqa %xmm1,0x3f0(%rsp)
lea    0x20c(%rsp),%rax
mov    $0x80,%ecx
nopw   0x0(%rax,%rax,1)
mov    -0xc(%rax),%edx
cmp    -0x4(%rsp,%rcx,4),%edx
jne    13c7 <main1+0x2b7>
mov    -0x8(%rax),%edx
cmp    -0x8(%rsp,%rcx,4),%edx
jne    13c7 <main1+0x2b7>
mov    -0x4(%rax),%edx
cmp    -0xc(%rsp,%rcx,4),%edx
jne    13c7 <main1+0x2b7>
mov    (%rax),%edx
cmp    -0x10(%rsp,%rcx,4),%edx
jne    13c7 <main1+0x2b7>
add    $0x10,%rax
add    $0xfffffffffffffffc,%rcx
jne    1390 <main1+0x280>
xor    %eax,%eax
add    $0x408,%rsp
ret
call   1030 <abort@plt>

LLVM IR (-O0):
define i32 @main1() {
%1 = alloca i32
%2 = alloca [128 x i32]
%3 = alloca [128 x i32]
store i32 0, i32* %1
br label %4
4: ; preds = %13, %0
%5 = load i32, i32* %1
%6 = icmp slt i32 %5, 128
br i1 %6, label %7, label %16
7: ; preds = %4
%8 = load i32, i32* %1
%9 = mul nsw i32 %8, 3
%10 = load i32, i32* %1
%11 = sext i32 %10 to i64
%12 = getelementptr inbounds [128 x i32], [128 x i32]* %3, i64 0, i64 %11
store i32 %9, i32* %12
br label %13
13: ; preds = %7
%14 = load i32, i32* %1
%15 = add nsw i32 %14, 1
store i32 %15, i32* %1
br label %4
16: ; preds = %4
store i32 128, i32* %1
br label %17
17: ; preds = %30, %16
%18 = load i32, i32* %1
%19 = icmp sgt i32 %18, 0
br i1 %19, label %20, label %33
20: ; preds = %17
%21 = load i32, i32* %1
%22 = sub nsw i32 %21, 1
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [128 x i32], [128 x i32]* %3, i64 0, i64 %23
%25 = load i32, i32* %24
%26 = load i32, i32* %1
%27 = sub nsw i32 128, %26
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds [128 x i32], [128 x i32]* %2, i64 0, i64 %28
store i32 %25, i32* %29
br label %30
30: ; preds = %20
%31 = load i32, i32* %1
%32 = add nsw i32 %31, -1
store i32 %32, i32* %1
br label %17
33: ; preds = %17
store i32 0, i32* %1
br label %34
34: ; preds = %50, %33
%35 = load i32, i32* %1
%36 = icmp slt i32 %35, 128
br i1 %36, label %37, label %53
37: ; preds = %34
%38 = load i32, i32* %1
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds [128 x i32], [128 x i32]* %2, i64 0, i64 %39
%41 = load i32, i32* %40
%42 = load i32, i32* %1
%43 = sub nsw i32 127, %42
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds [128 x i32], [128 x i32]* %3, i64 0, i64 %44
%46 = load i32, i32* %45
%47 = icmp ne i32 %41, %46
br i1 %47, label %48, label %49
48: ; preds = %37
unreachable
49: ; preds = %37
br label %50
50: ; preds = %49
%51 = load i32, i32* %1
%52 = add nsw i32 %51, 1
store i32 %52, i32* %1
br label %34
53: ; preds = %34
ret i32 0
}

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