void xor_32regs_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
                  unsigned long *p3, unsigned long *p4, unsigned long *p5) {
  long lines = bytes / (sizeof(long)) / 8;
  do {
    register long d0, d1, d2, d3, d4, d5, d6, d7;
    d0 = p1[0];
    d1 = p1[1];
    d2 = p1[2];
    d3 = p1[3];
    d4 = p1[4];
    d5 = p1[5];
    d6 = p1[6];
    d7 = p1[7];
    d0 ^= p2[0];
    d1 ^= p2[1];
    d2 ^= p2[2];
    d3 ^= p2[3];
    d4 ^= p2[4];
    d5 ^= p2[5];
    d6 ^= p2[6];
    d7 ^= p2[7];
    d0 ^= p3[0];
    d1 ^= p3[1];
    d2 ^= p3[2];
    d3 ^= p3[3];
    d4 ^= p3[4];
    d5 ^= p3[5];
    d6 ^= p3[6];
    d7 ^= p3[7];
    d0 ^= p4[0];
    d1 ^= p4[1];
    d2 ^= p4[2];
    d3 ^= p4[3];
    d4 ^= p4[4];
    d5 ^= p4[5];
    d6 ^= p4[6];
    d7 ^= p4[7];
    d0 ^= p5[0];
    d1 ^= p5[1];
    d2 ^= p5[2];
    d3 ^= p5[3];
    d4 ^= p5[4];
    d5 ^= p5[5];
    d6 ^= p5[6];
    d7 ^= p5[7];
    p1[0] = d0;
    p1[1] = d1;
    p1[2] = d2;
    p1[3] = d3;
    p1[4] = d4;
    p1[5] = d5;
    p1[6] = d6;
    p1[7] = d7;
    p1 += 8;
    p2 += 8;
    p3 += 8;
    p4 += 8;
    p5 += 8;
  } while (--lines > 0);
}


x86 assembly (clang, -O0):
<xor_32regs_5>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x8(%rbp),%rax
shr    $0x3,%rax
shr    $0x3,%rax
mov    %rax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x48(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
mov    %rax,-0x58(%rbp)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
mov    %rax,-0x60(%rbp)
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rax
mov    %rax,-0x68(%rbp)
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
mov    %rax,-0x70(%rbp)
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%rax
mov    %rax,-0x78(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
xor    -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rax
xor    -0x48(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rax
xor    -0x50(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    0x18(%rax),%rax
xor    -0x58(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x18(%rbp),%rax
mov    0x20(%rax),%rax
xor    -0x60(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x18(%rbp),%rax
mov    0x28(%rax),%rax
xor    -0x68(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x18(%rbp),%rax
mov    0x30(%rax),%rax
xor    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x18(%rbp),%rax
mov    0x38(%rax),%rax
xor    -0x78(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
xor    -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rax
xor    -0x48(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    0x10(%rax),%rax
xor    -0x50(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x20(%rbp),%rax
mov    0x18(%rax),%rax
xor    -0x58(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x20(%rbp),%rax
mov    0x20(%rax),%rax
xor    -0x60(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x20(%rbp),%rax
mov    0x28(%rax),%rax
xor    -0x68(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x20(%rbp),%rax
mov    0x30(%rax),%rax
xor    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x20(%rbp),%rax
mov    0x38(%rax),%rax
xor    -0x78(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%rax
xor    -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rax
xor    -0x48(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x28(%rbp),%rax
mov    0x10(%rax),%rax
xor    -0x50(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x28(%rbp),%rax
mov    0x18(%rax),%rax
xor    -0x58(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x28(%rbp),%rax
mov    0x20(%rax),%rax
xor    -0x60(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x28(%rbp),%rax
mov    0x28(%rax),%rax
xor    -0x68(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x28(%rbp),%rax
mov    0x30(%rax),%rax
xor    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x28(%rbp),%rax
mov    0x38(%rax),%rax
xor    -0x78(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x30(%rbp),%rax
mov    (%rax),%rax
xor    -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x30(%rbp),%rax
mov    0x8(%rax),%rax
xor    -0x48(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x30(%rbp),%rax
mov    0x10(%rax),%rax
xor    -0x50(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x30(%rbp),%rax
mov    0x18(%rax),%rax
xor    -0x58(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x30(%rbp),%rax
mov    0x20(%rax),%rax
xor    -0x60(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x30(%rbp),%rax
mov    0x28(%rax),%rax
xor    -0x68(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x30(%rbp),%rax
mov    0x30(%rax),%rax
xor    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x30(%rbp),%rax
mov    0x38(%rax),%rax
xor    -0x78(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x40(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x48(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x8(%rax)
mov    -0x50(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x10(%rax)
mov    -0x58(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x18(%rax)
mov    -0x60(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x20(%rax)
mov    -0x68(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x28(%rax)
mov    -0x70(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x30(%rax)
mov    -0x78(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x38(%rax)
mov    -0x10(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
cmp    $0x0,%rax
jg     112c <xor_32regs_5+0x2c>
pop    %rbp
ret

x86 assembly (clang, -O2):
<xor_32regs_5>:
shr    $0x6,%rdi
add    $0x1,%rdi
xor    %eax,%eax
nopw   0x0(%rax,%rax,1)
movups (%rsi,%rax,1),%xmm0
movups 0x10(%rsi,%rax,1),%xmm1
movups 0x20(%rsi,%rax,1),%xmm2
movups 0x30(%rsi,%rax,1),%xmm3
movups (%rdx,%rax,1),%xmm4
xorps  %xmm0,%xmm4
movups 0x10(%rdx,%rax,1),%xmm0
xorps  %xmm1,%xmm0
movups 0x20(%rdx,%rax,1),%xmm1
xorps  %xmm2,%xmm1
movups 0x30(%rdx,%rax,1),%xmm2
xorps  %xmm3,%xmm2
movups (%rcx,%rax,1),%xmm3
movups 0x10(%rcx,%rax,1),%xmm5
movups 0x20(%rcx,%rax,1),%xmm6
movups 0x30(%rcx,%rax,1),%xmm8
movups (%r8,%rax,1),%xmm7
xorps  %xmm3,%xmm7
xorps  %xmm4,%xmm7
movups 0x10(%r8,%rax,1),%xmm3
xorps  %xmm5,%xmm3
xorps  %xmm0,%xmm3
movups 0x20(%r8,%rax,1),%xmm0
xorps  %xmm6,%xmm0
xorps  %xmm1,%xmm0
movups 0x30(%r8,%rax,1),%xmm1
xorps  %xmm8,%xmm1
xorps  %xmm2,%xmm1
movups (%r9,%rax,1),%xmm2
xorps  %xmm7,%xmm2
movups 0x10(%r9,%rax,1),%xmm4
xorps  %xmm3,%xmm4
movups 0x20(%r9,%rax,1),%xmm3
xorps  %xmm0,%xmm3
movups 0x30(%r9,%rax,1),%xmm0
xorps  %xmm1,%xmm0
movups %xmm2,(%rsi,%rax,1)
movups %xmm4,0x10(%rsi,%rax,1)
movups %xmm3,0x20(%rsi,%rax,1)
movups %xmm0,0x30(%rsi,%rax,1)
add    $0xffffffffffffffff,%rdi
add    $0x40,%rax
cmp    $0x1,%rdi
ja     1110 <xor_32regs_5+0x10>
ret

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

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