unsigned char gmul(unsigned char x, unsigned char y) {
  unsigned char z;
  if (y == 2) {
    z = x << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
  } else if (y == 3) {
    z = x << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z ^= x;
  } else if (y == 9) {
    z = x << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z = z << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z = z << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z ^= x;
  } else if (y == 11) {
    z = x << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z = z << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z ^= x;
    z = z << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z ^= x;
  } else if (y == 13) {
    z = x << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z ^= x;
    z = z << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z = z << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z ^= x;
  } else if (y == 14) {
    z = x << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z ^= x;
    z = z << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
    z ^= x;
    z = z << 1;
    if ((z >> 8) > 0) {
      z ^= 0x11B;
    }
  }
  return (unsigned char)z;
}


x86 assembly (clang, -O0):
<gmul>:
push   %rbp
mov    %rsp,%rbp
mov    %sil,%al
mov    %dil,%cl
mov    %cl,-0x1(%rbp)
mov    %al,-0x2(%rbp)
movzbl -0x2(%rbp),%eax
cmp    $0x2,%eax
jne    1148 <gmul+0x48>
movzbl -0x1(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    1143 <gmul+0x43>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
jmp    1411 <gmul+0x311>
movzbl -0x2(%rbp),%eax
cmp    $0x3,%eax
jne    118d <gmul+0x8d>
movzbl -0x1(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    117b <gmul+0x7b>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x1(%rbp),%ecx
movzbl -0x3(%rbp),%eax
xor    %ecx,%eax
mov    %al,-0x3(%rbp)
jmp    140c <gmul+0x30c>
movzbl -0x2(%rbp),%eax
cmp    $0x9,%eax
jne    121e <gmul+0x11e>
movzbl -0x1(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    11c0 <gmul+0xc0>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    11e6 <gmul+0xe6>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    120c <gmul+0x10c>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x1(%rbp),%ecx
movzbl -0x3(%rbp),%eax
xor    %ecx,%eax
mov    %al,-0x3(%rbp)
jmp    1407 <gmul+0x307>
movzbl -0x2(%rbp),%eax
cmp    $0xb,%eax
jne    12bc <gmul+0x1bc>
movzbl -0x1(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    1251 <gmul+0x151>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    1277 <gmul+0x177>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x1(%rbp),%ecx
movzbl -0x3(%rbp),%eax
xor    %ecx,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    12aa <gmul+0x1aa>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x1(%rbp),%ecx
movzbl -0x3(%rbp),%eax
xor    %ecx,%eax
mov    %al,-0x3(%rbp)
jmp    1402 <gmul+0x302>
movzbl -0x2(%rbp),%eax
cmp    $0xd,%eax
jne    135a <gmul+0x25a>
movzbl -0x1(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    12ef <gmul+0x1ef>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x1(%rbp),%ecx
movzbl -0x3(%rbp),%eax
xor    %ecx,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    1322 <gmul+0x222>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    1348 <gmul+0x248>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x1(%rbp),%ecx
movzbl -0x3(%rbp),%eax
xor    %ecx,%eax
mov    %al,-0x3(%rbp)
jmp    13fd <gmul+0x2fd>
movzbl -0x2(%rbp),%eax
cmp    $0xe,%eax
jne    13f8 <gmul+0x2f8>
movzbl -0x1(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    138d <gmul+0x28d>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x1(%rbp),%ecx
movzbl -0x3(%rbp),%eax
xor    %ecx,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    13c0 <gmul+0x2c0>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
movzbl -0x1(%rbp),%ecx
movzbl -0x3(%rbp),%eax
xor    %ecx,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x3(%rbp)
movzbl -0x3(%rbp),%eax
sar    $0x8,%eax
cmp    $0x0,%eax
jle    13f3 <gmul+0x2f3>
movzbl -0x3(%rbp),%eax
xor    $0x11b,%eax
mov    %al,-0x3(%rbp)
jmp    13f8 <gmul+0x2f8>
jmp    13fd <gmul+0x2fd>
jmp    1402 <gmul+0x302>
jmp    1407 <gmul+0x307>
jmp    140c <gmul+0x30c>
jmp    1411 <gmul+0x311>
movzbl -0x3(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<gmul>:
mov    %edi,%eax
add    $0xfe,%sil
cmp    $0xc,%sil
ja     1169 <gmul+0x69>
movzbl %sil,%ecx
lea    0xee9(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
add    %al,%al
ret
lea    (%rax,%rax,1),%ecx
jmp    112f <gmul+0x2f>
lea    0x0(,%rax,8),%ecx
xor    %al,%cl
mov    %ecx,%eax
ret
lea    0x0(,%rax,8),%ecx
lea    (%rax,%rax,1),%edx
jmp    114e <gmul+0x4e>
lea    0x0(,%rax,8),%ecx
lea    0x0(,%rax,4),%edx
xor    %al,%dl
xor    %cl,%dl
mov    %edx,%eax
ret
lea    0x0(,%rax,8),%ecx
lea    0x0(,%rax,4),%edx
add    %al,%al
xor    %dl,%al
xor    %cl,%al
ret

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

LLVM IR (-O2):
define zeroext i8 @gmul(i8 zeroext %0, i8 zeroext %1) {
switch i8 %1, label %27 [
i8 2, label %3
i8 3, label %5
i8 9, label %8
i8 11, label %11
i8 13, label %16
i8 14, label %21
]
3: ; preds = %2
%4 = shl i8 %0, 1
br label %27
5: ; preds = %2
%6 = shl i8 %0, 1
%7 = xor i8 %6, %0
br label %27
8: ; preds = %2
%9 = shl i8 %0, 3
%10 = xor i8 %9, %0
br label %27
11: ; preds = %2
%12 = shl i8 %0, 3
%13 = shl i8 %0, 1
%14 = xor i8 %13, %0
%15 = xor i8 %14, %12
br label %27
16: ; preds = %2
%17 = shl i8 %0, 3
%18 = shl i8 %0, 2
%19 = xor i8 %18, %0
%20 = xor i8 %19, %17
br label %27
21: ; preds = %2
%22 = shl i8 %0, 3
%23 = shl i8 %0, 2
%24 = shl i8 %0, 1
%25 = xor i8 %23, %24
%26 = xor i8 %22, %25
br label %27
27: ; preds = %2, %21, %3, %5, %11, %16, %8
%28 = phi i8 [ %4, %3 ], [ %7, %5 ], [ %10, %8 ], [ %15, %11 ], [ %20, %16 ], [ %26, %21 ], [ undef, %2 ]
ret i8 %28
}