void gray_para_binario(short *gray, short *binarios) {
  int i, j;
  for (i = 0; i < 30 * 10; i++) {
    binarios[i] = gray[i];
  }
  int start;
  int end = 0;
  for (j = 0; j < 30; j++) {
    start = end;
    end += 10;
    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   $0x12c,-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    $0xa,%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    0x258(%rdi),%rax
cmp    %rsi,%rax
jbe    111f <gray_para_binario+0x1f>
lea    0x258(%rsi),%rax
cmp    %rdi,%rax
jbe    111f <gray_para_binario+0x1f>
xor    %eax,%eax
jmp    12f0 <gray_para_binario+0x1f0>
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)
movups 0x1e0(%rdi),%xmm0
movups 0x1f0(%rdi),%xmm1
movups %xmm0,0x1e0(%rsi)
movups %xmm1,0x1f0(%rsi)
movups 0x200(%rdi),%xmm0
movups 0x210(%rdi),%xmm1
movups %xmm0,0x200(%rsi)
movups %xmm1,0x210(%rsi)
movups 0x220(%rdi),%xmm0
movups 0x230(%rdi),%xmm1
movups %xmm0,0x220(%rsi)
movups %xmm1,0x230(%rsi)
mov    $0x120,%eax
nopw   0x0(%rax,%rax,1)
movzwl (%rdi,%rax,2),%ecx
mov    %cx,(%rsi,%rax,2)
movzwl 0x2(%rdi,%rax,2),%ecx
mov    %cx,0x2(%rsi,%rax,2)
movzwl 0x4(%rdi,%rax,2),%ecx
mov    %cx,0x4(%rsi,%rax,2)
movzwl 0x6(%rdi,%rax,2),%ecx
mov    %cx,0x6(%rsi,%rax,2)
add    $0x4,%rax
cmp    $0x12c,%rax
jne    12f0 <gray_para_binario+0x1f0>
mov    $0x12,%eax
nopw   0x0(%rax,%rax,1)
movzwl -0x10(%rsi,%rax,1),%ecx
xor    -0x12(%rsi,%rax,1),%cx
mov    %cx,-0x10(%rsi,%rax,1)
xor    -0xe(%rsi,%rax,1),%cx
mov    %cx,-0xe(%rsi,%rax,1)
xor    -0xc(%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    $0x14,%rax
cmp    $0x26a,%eax
jne    1330 <gray_para_binario+0x230>
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, 300
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, 10
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 300
%4 = getelementptr i16, i16* %0, i64 300
%5 = icmp ugt i16* %4, %1
%6 = icmp ugt i16* %3, %0
%7 = and i1 %5, %6
br i1 %7, label %187, 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
%157 = getelementptr inbounds i16, i16* %0, i64 240
%158 = bitcast i16* %157 to <8 x i16>*
%159 = load <8 x i16>, <8 x i16>* %158
%160 = getelementptr inbounds i16, i16* %0, i64 248
%161 = bitcast i16* %160 to <8 x i16>*
%162 = load <8 x i16>, <8 x i16>* %161
%163 = getelementptr inbounds i16, i16* %1, i64 240
%164 = bitcast i16* %163 to <8 x i16>*
store <8 x i16> %159, <8 x i16>* %164
%165 = getelementptr inbounds i16, i16* %1, i64 248
%166 = bitcast i16* %165 to <8 x i16>*
store <8 x i16> %162, <8 x i16>* %166
%167 = getelementptr inbounds i16, i16* %0, i64 256
%168 = bitcast i16* %167 to <8 x i16>*
%169 = load <8 x i16>, <8 x i16>* %168
%170 = getelementptr inbounds i16, i16* %0, i64 264
%171 = bitcast i16* %170 to <8 x i16>*
%172 = load <8 x i16>, <8 x i16>* %171
%173 = getelementptr inbounds i16, i16* %1, i64 256
%174 = bitcast i16* %173 to <8 x i16>*
store <8 x i16> %169, <8 x i16>* %174
%175 = getelementptr inbounds i16, i16* %1, i64 264
%176 = bitcast i16* %175 to <8 x i16>*
store <8 x i16> %172, <8 x i16>* %176
%177 = getelementptr inbounds i16, i16* %0, i64 272
%178 = bitcast i16* %177 to <8 x i16>*
%179 = load <8 x i16>, <8 x i16>* %178
%180 = getelementptr inbounds i16, i16* %0, i64 280
%181 = bitcast i16* %180 to <8 x i16>*
%182 = load <8 x i16>, <8 x i16>* %181
%183 = getelementptr inbounds i16, i16* %1, i64 272
%184 = bitcast i16* %183 to <8 x i16>*
store <8 x i16> %179, <8 x i16>* %184
%185 = getelementptr inbounds i16, i16* %1, i64 280
%186 = bitcast i16* %185 to <8 x i16>*
store <8 x i16> %182, <8 x i16>* %186
br label %187
187: ; preds = %8, %2
%188 = phi i64 [ 0, %2 ], [ 288, %8 ]
br label %189
189: ; preds = %189, %187
%190 = phi i64 [ %188, %187 ], [ %206, %189 ]
%191 = getelementptr inbounds i16, i16* %0, i64 %190
%192 = load i16, i16* %191
%193 = getelementptr inbounds i16, i16* %1, i64 %190
store i16 %192, i16* %193
%194 = or i64 %190, 1
%195 = getelementptr inbounds i16, i16* %0, i64 %194
%196 = load i16, i16* %195
%197 = getelementptr inbounds i16, i16* %1, i64 %194
store i16 %196, i16* %197
%198 = or i64 %190, 2
%199 = getelementptr inbounds i16, i16* %0, i64 %198
%200 = load i16, i16* %199
%201 = getelementptr inbounds i16, i16* %1, i64 %198
store i16 %200, i16* %201
%202 = or i64 %190, 3
%203 = getelementptr inbounds i16, i16* %0, i64 %202
%204 = load i16, i16* %203
%205 = getelementptr inbounds i16, i16* %1, i64 %202
store i16 %204, i16* %205
%206 = add nuw nsw i64 %190, 4
%207 = icmp eq i64 %206, 300
br i1 %207, label %208, label %189
208: ; preds = %189, %208
%209 = phi i64 [ %250, %208 ], [ 1, %189 ]
%210 = phi i32 [ %249, %208 ], [ 0, %189 ]
%211 = add nsw i64 %209, -1
%212 = getelementptr inbounds i16, i16* %1, i64 %211
%213 = load i16, i16* %212
%214 = getelementptr inbounds i16, i16* %1, i64 %209
%215 = load i16, i16* %214
%216 = xor i16 %215, %213
store i16 %216, i16* %214
%217 = add nuw nsw i64 %209, 1
%218 = getelementptr inbounds i16, i16* %1, i64 %217
%219 = load i16, i16* %218
%220 = xor i16 %219, %216
store i16 %220, i16* %218
%221 = add nuw nsw i64 %209, 2
%222 = getelementptr inbounds i16, i16* %1, i64 %221
%223 = load i16, i16* %222
%224 = xor i16 %223, %220
store i16 %224, i16* %222
%225 = add nuw nsw i64 %209, 3
%226 = getelementptr inbounds i16, i16* %1, i64 %225
%227 = load i16, i16* %226
%228 = xor i16 %227, %224
store i16 %228, i16* %226
%229 = add nuw nsw i64 %209, 4
%230 = getelementptr inbounds i16, i16* %1, i64 %229
%231 = load i16, i16* %230
%232 = xor i16 %231, %228
store i16 %232, i16* %230
%233 = add nuw nsw i64 %209, 5
%234 = getelementptr inbounds i16, i16* %1, i64 %233
%235 = load i16, i16* %234
%236 = xor i16 %235, %232
store i16 %236, i16* %234
%237 = add nuw nsw i64 %209, 6
%238 = getelementptr inbounds i16, i16* %1, i64 %237
%239 = load i16, i16* %238
%240 = xor i16 %239, %236
store i16 %240, i16* %238
%241 = add nuw nsw i64 %209, 7
%242 = getelementptr inbounds i16, i16* %1, i64 %241
%243 = load i16, i16* %242
%244 = xor i16 %243, %240
store i16 %244, i16* %242
%245 = add nuw nsw i64 %209, 8
%246 = getelementptr inbounds i16, i16* %1, i64 %245
%247 = load i16, i16* %246
%248 = xor i16 %247, %244
store i16 %248, i16* %246
%249 = add nuw nsw i32 %210, 1
%250 = add nuw nsw i64 %209, 10
%251 = icmp eq i32 %249, 30
br i1 %251, label %252, label %208
252: ; preds = %208
ret void
}