void gray_para_binario(short *gray, short *binarios) {
  int i, j;
  for (i = 0; i < 30 * 8; i++) {
    binarios[i] = gray[i];
  }
  int start;
  int end = 0;
  for (j = 0; j < 30; j++) {
    start = end;
    end += 8;
    for (i = start + 1; i < end; i++) {
      binarios[i] = binarios[i - 1] ^ binarios[i];
    }
  }
}


x86 assembly (clang, -O0):
<gray_para_binario>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0xf0,-0x14(%rbp)
jge    1146 <gray_para_binario+0x46>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,2),%dx
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %dx,(%rax,%rcx,2)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1113 <gray_para_binario+0x13>
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x18(%rbp)
cmpl   $0x1e,-0x18(%rbp)
jge    11d1 <gray_para_binario+0xd1>
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x20(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    11be <gray_para_binario+0xbe>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
mov    -0x10(%rbp),%rcx
movslq -0x14(%rbp),%rdx
movswl (%rcx,%rdx,2),%ecx
xor    %ecx,%eax
mov    %ax,%dx
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %dx,(%rax,%rcx,2)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1176 <gray_para_binario+0x76>
jmp    11c3 <gray_para_binario+0xc3>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1154 <gray_para_binario+0x54>
pop    %rbp
ret

x86 assembly (clang, -O2):
<gray_para_binario>:
lea    0x1e0(%rdi),%rax
cmp    %rsi,%rax
jbe    116b <gray_para_binario+0x6b>
lea    0x1e0(%rsi),%rax
cmp    %rdi,%rax
jbe    116b <gray_para_binario+0x6b>
mov    $0x5,%eax
nopl   (%rax)
movzwl -0xa(%rdi,%rax,2),%ecx
mov    %cx,-0xa(%rsi,%rax,2)
movzwl -0x8(%rdi,%rax,2),%ecx
mov    %cx,-0x8(%rsi,%rax,2)
movzwl -0x6(%rdi,%rax,2),%ecx
mov    %cx,-0x6(%rsi,%rax,2)
movzwl -0x4(%rdi,%rax,2),%ecx
mov    %cx,-0x4(%rsi,%rax,2)
movzwl -0x2(%rdi,%rax,2),%ecx
mov    %cx,-0x2(%rsi,%rax,2)
movzwl (%rdi,%rax,2),%ecx
mov    %cx,(%rsi,%rax,2)
add    $0x6,%rax
cmp    $0xf5,%rax
jne    1120 <gray_para_binario+0x20>
jmp    12dd <gray_para_binario+0x1dd>
movups (%rdi),%xmm0
movups 0x10(%rdi),%xmm1
movups %xmm0,(%rsi)
movups %xmm1,0x10(%rsi)
movups 0x20(%rdi),%xmm0
movups 0x30(%rdi),%xmm1
movups %xmm0,0x20(%rsi)
movups %xmm1,0x30(%rsi)
movups 0x40(%rdi),%xmm0
movups 0x50(%rdi),%xmm1
movups %xmm0,0x40(%rsi)
movups %xmm1,0x50(%rsi)
movups 0x60(%rdi),%xmm0
movups 0x70(%rdi),%xmm1
movups %xmm0,0x60(%rsi)
movups %xmm1,0x70(%rsi)
movups 0x80(%rdi),%xmm0
movups 0x90(%rdi),%xmm1
movups %xmm0,0x80(%rsi)
movups %xmm1,0x90(%rsi)
movups 0xa0(%rdi),%xmm0
movups 0xb0(%rdi),%xmm1
movups %xmm0,0xa0(%rsi)
movups %xmm1,0xb0(%rsi)
movups 0xc0(%rdi),%xmm0
movups 0xd0(%rdi),%xmm1
movups %xmm0,0xc0(%rsi)
movups %xmm1,0xd0(%rsi)
movups 0xe0(%rdi),%xmm0
movups 0xf0(%rdi),%xmm1
movups %xmm0,0xe0(%rsi)
movups %xmm1,0xf0(%rsi)
movups 0x100(%rdi),%xmm0
movups 0x110(%rdi),%xmm1
movups %xmm0,0x100(%rsi)
movups %xmm1,0x110(%rsi)
movups 0x120(%rdi),%xmm0
movups 0x130(%rdi),%xmm1
movups %xmm0,0x120(%rsi)
movups %xmm1,0x130(%rsi)
movups 0x140(%rdi),%xmm0
movups 0x150(%rdi),%xmm1
movups %xmm0,0x140(%rsi)
movups %xmm1,0x150(%rsi)
movups 0x160(%rdi),%xmm0
movups 0x170(%rdi),%xmm1
movups %xmm0,0x160(%rsi)
movups %xmm1,0x170(%rsi)
movups 0x180(%rdi),%xmm0
movups 0x190(%rdi),%xmm1
movups %xmm0,0x180(%rsi)
movups %xmm1,0x190(%rsi)
movups 0x1a0(%rdi),%xmm0
movups 0x1b0(%rdi),%xmm1
movups %xmm0,0x1a0(%rsi)
movups %xmm1,0x1b0(%rsi)
movups 0x1c0(%rdi),%xmm0
movups 0x1d0(%rdi),%xmm1
movups %xmm0,0x1c0(%rsi)
movups %xmm1,0x1d0(%rsi)
mov    $0xe,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzwl -0xc(%rsi,%rax,1),%ecx
xor    -0xe(%rsi,%rax,1),%cx
mov    %cx,-0xc(%rsi,%rax,1)
xor    -0xa(%rsi,%rax,1),%cx
mov    %cx,-0xa(%rsi,%rax,1)
xor    -0x8(%rsi,%rax,1),%cx
mov    %cx,-0x8(%rsi,%rax,1)
xor    -0x6(%rsi,%rax,1),%cx
mov    %cx,-0x6(%rsi,%rax,1)
xor    -0x4(%rsi,%rax,1),%cx
mov    %cx,-0x4(%rsi,%rax,1)
xor    -0x2(%rsi,%rax,1),%cx
mov    %cx,-0x2(%rsi,%rax,1)
xor    %cx,(%rsi,%rax,1)
add    $0x10,%rax
cmp    $0x1ee,%eax
jne    12f0 <gray_para_binario+0x1f0>
ret

LLVM IR (-O0):
define void @gray_para_binario(i16* %0, i16* %1) {
%3 = alloca i16*
%4 = alloca i16*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
store i16* %0, i16** %3
store i16* %1, i16** %4
store i32 0, i32* %5
br label %9
9: ; preds = %22, %2
%10 = load i32, i32* %5
%11 = icmp slt i32 %10, 240
br i1 %11, label %12, label %25
12: ; preds = %9
%13 = load i16*, i16** %3
%14 = load i32, i32* %5
%15 = sext i32 %14 to i64
%16 = getelementptr inbounds i16, i16* %13, i64 %15
%17 = load i16, i16* %16
%18 = load i16*, i16** %4
%19 = load i32, i32* %5
%20 = sext i32 %19 to i64
%21 = getelementptr inbounds i16, i16* %18, i64 %20
store i16 %17, i16* %21
br label %22
22: ; preds = %12
%23 = load i32, i32* %5
%24 = add nsw i32 %23, 1
store i32 %24, i32* %5
br label %9
25: ; preds = %9
store i32 0, i32* %8
store i32 0, i32* %6
br label %26
26: ; preds = %63, %25
%27 = load i32, i32* %6
%28 = icmp slt i32 %27, 30
br i1 %28, label %29, label %66
29: ; preds = %26
%30 = load i32, i32* %8
store i32 %30, i32* %7
%31 = load i32, i32* %8
%32 = add nsw i32 %31, 8
store i32 %32, i32* %8
%33 = load i32, i32* %7
%34 = add nsw i32 %33, 1
store i32 %34, i32* %5
br label %35
35: ; preds = %59, %29
%36 = load i32, i32* %5
%37 = load i32, i32* %8
%38 = icmp slt i32 %36, %37
br i1 %38, label %39, label %62
39: ; preds = %35
%40 = load i16*, i16** %4
%41 = load i32, i32* %5
%42 = sub nsw i32 %41, 1
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds i16, i16* %40, i64 %43
%45 = load i16, i16* %44
%46 = sext i16 %45 to i32
%47 = load i16*, i16** %4
%48 = load i32, i32* %5
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds i16, i16* %47, i64 %49
%51 = load i16, i16* %50
%52 = sext i16 %51 to i32
%53 = xor i32 %46, %52
%54 = trunc i32 %53 to i16
%55 = load i16*, i16** %4
%56 = load i32, i32* %5
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds i16, i16* %55, i64 %57
store i16 %54, i16* %58
br label %59
59: ; preds = %39
%60 = load i32, i32* %5
%61 = add nsw i32 %60, 1
store i32 %61, i32* %5
br label %35
62: ; preds = %35
br label %63
63: ; preds = %62
%64 = load i32, i32* %6
%65 = add nsw i32 %64, 1
store i32 %65, i32* %6
br label %26
66: ; preds = %26
ret void
}

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