double gain_aster(int band_number, int gain_code) {
  double result;
  if (gain_code == 0) {
    if (band_number == 0)
      result = 0.676;
    if (band_number == 1)
      result = 0.708;
    if (band_number == 2)
      result = 0.423;
    if (band_number == 3)
      result = 0.423;
    if (band_number == 4)
      result = 0.1087;
    if (band_number == 5)
      result = 0.0348;
    if (band_number == 6)
      result = 0.0313;
    if (band_number == 7)
      result = 0.0299;
    if (band_number == 8)
      result = 0.0209;
    if (band_number == 9)
      result = 0.0159;
  }
  if (gain_code == 1) {
    if (band_number == 0)
      result = 1.688;
    if (band_number == 1)
      result = 1.415;
    if (band_number == 2)
      result = 0.862;
    if (band_number == 3)
      result = 0.862;
    if (band_number == 4)
      result = 0.2174;
    if (band_number == 5)
      result = 0.0696;
    if (band_number == 6)
      result = 0.0625;
    if (band_number == 7)
      result = 0.0597;
    if (band_number == 8)
      result = 0.0417;
    if (band_number == 9)
      result = 0.0318;
    if (band_number == 10)
      result = 0.006822;
    if (band_number == 11)
      result = 0.006780;
    if (band_number == 12)
      result = 0.006590;
    if (band_number == 13)
      result = 0.005693;
    if (band_number == 14)
      result = 0.005225;
  }
  if (gain_code == 2) {
    if (band_number == 0)
      result = 2.25;
    if (band_number == 1)
      result = 1.89;
    if (band_number == 2)
      result = 1.15;
    if (band_number == 3)
      result = 1.15;
    if (band_number == 4)
      result = 0.290;
    if (band_number == 5)
      result = 0.0925;
    if (band_number == 6)
      result = 0.0830;
    if (band_number == 7)
      result = 0.0795;
    if (band_number == 8)
      result = 0.0556;
    if (band_number == 9)
      result = 0.0424;
  }
  if (gain_code == 3) {
    if (band_number == 4)
      result = 0.290;
    if (band_number == 5)
      result = 0.409;
    if (band_number == 6)
      result = 0.390;
    if (band_number == 7)
      result = 0.332;
    if (band_number == 8)
      result = 0.245;
    if (band_number == 9)
      result = 0.265;
  }
  return result;
}


x86 assembly (clang, -O0):
<gain_aster>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
cmpl   $0x0,-0x8(%rbp)
jne    11ff <gain_aster+0xff>
cmpl   $0x0,-0x4(%rbp)
jne    112b <gain_aster+0x2b>
movsd  0xeda(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x1,-0x4(%rbp)
jne    1142 <gain_aster+0x42>
movsd  0xecb(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x2,-0x4(%rbp)
jne    1159 <gain_aster+0x59>
movsd  0xebc(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x3,-0x4(%rbp)
jne    1170 <gain_aster+0x70>
movsd  0xea5(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x4,-0x4(%rbp)
jne    1187 <gain_aster+0x87>
movsd  0xe96(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x5,-0x4(%rbp)
jne    119e <gain_aster+0x9e>
movsd  0xe87(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x6,-0x4(%rbp)
jne    11b5 <gain_aster+0xb5>
movsd  0xe78(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x7,-0x4(%rbp)
jne    11cc <gain_aster+0xcc>
movsd  0xe69(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x8,-0x4(%rbp)
jne    11e3 <gain_aster+0xe3>
movsd  0xe5a(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x9,-0x4(%rbp)
jne    11fa <gain_aster+0xfa>
movsd  0xe4b(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    11ff <gain_aster+0xff>
cmpl   $0x1,-0x8(%rbp)
jne    1367 <gain_aster+0x267>
cmpl   $0x0,-0x4(%rbp)
jne    1220 <gain_aster+0x120>
movsd  0xe2d(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x1,-0x4(%rbp)
jne    1237 <gain_aster+0x137>
movsd  0xe1e(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x2,-0x4(%rbp)
jne    124e <gain_aster+0x14e>
movsd  0xe0f(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x3,-0x4(%rbp)
jne    1265 <gain_aster+0x165>
movsd  0xdf8(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x4,-0x4(%rbp)
jne    127c <gain_aster+0x17c>
movsd  0xde9(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x5,-0x4(%rbp)
jne    1293 <gain_aster+0x193>
movsd  0xdda(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x6,-0x4(%rbp)
jne    12aa <gain_aster+0x1aa>
movsd  0xdcb(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x7,-0x4(%rbp)
jne    12c1 <gain_aster+0x1c1>
movsd  0xdbc(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x8,-0x4(%rbp)
jne    12d8 <gain_aster+0x1d8>
movsd  0xdad(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x9,-0x4(%rbp)
jne    12ef <gain_aster+0x1ef>
movsd  0xd9e(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0xa,-0x4(%rbp)
jne    1306 <gain_aster+0x206>
movsd  0xd8f(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0xb,-0x4(%rbp)
jne    131d <gain_aster+0x21d>
movsd  0xd80(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0xc,-0x4(%rbp)
jne    1334 <gain_aster+0x234>
movsd  0xd71(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0xd,-0x4(%rbp)
jne    134b <gain_aster+0x24b>
movsd  0xd62(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0xe,-0x4(%rbp)
jne    1362 <gain_aster+0x262>
movsd  0xd53(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    1367 <gain_aster+0x267>
cmpl   $0x2,-0x8(%rbp)
jne    145c <gain_aster+0x35c>
cmpl   $0x0,-0x4(%rbp)
jne    1388 <gain_aster+0x288>
movsd  0xd35(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x1,-0x4(%rbp)
jne    139f <gain_aster+0x29f>
movsd  0xd26(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x2,-0x4(%rbp)
jne    13b6 <gain_aster+0x2b6>
movsd  0xd17(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x3,-0x4(%rbp)
jne    13cd <gain_aster+0x2cd>
movsd  0xd00(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x4,-0x4(%rbp)
jne    13e4 <gain_aster+0x2e4>
movsd  0xcf1(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x5,-0x4(%rbp)
jne    13fb <gain_aster+0x2fb>
movsd  0xce2(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x6,-0x4(%rbp)
jne    1412 <gain_aster+0x312>
movsd  0xcd3(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x7,-0x4(%rbp)
jne    1429 <gain_aster+0x329>
movsd  0xcc4(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x8,-0x4(%rbp)
jne    1440 <gain_aster+0x340>
movsd  0xcb5(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x9,-0x4(%rbp)
jne    1457 <gain_aster+0x357>
movsd  0xca6(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    145c <gain_aster+0x35c>
cmpl   $0x3,-0x8(%rbp)
jne    14f5 <gain_aster+0x3f5>
cmpl   $0x4,-0x4(%rbp)
jne    147d <gain_aster+0x37d>
movsd  0xc58(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x5,-0x4(%rbp)
jne    1494 <gain_aster+0x394>
movsd  0xc71(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x6,-0x4(%rbp)
jne    14ab <gain_aster+0x3ab>
movsd  0xc62(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x7,-0x4(%rbp)
jne    14c2 <gain_aster+0x3c2>
movsd  0xc53(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x8,-0x4(%rbp)
jne    14d9 <gain_aster+0x3d9>
movsd  0xc44(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
cmpl   $0x9,-0x4(%rbp)
jne    14f0 <gain_aster+0x3f0>
movsd  0xc35(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14f5 <gain_aster+0x3f5>
movsd  -0x10(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<gain_aster>:
cmp    $0x3,%esi
ja     11ac <gain_aster+0xac>
mov    %esi,%eax
lea    0x101e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
xor    %eax,%eax
cmp    $0x1,%edi
sete   %cl
mov    %edi,%edx
and    $0xfffffffe,%edx
cmp    $0x2,%edx
je     11df <gain_aster+0xdf>
mov    %cl,%al
lea    0xef6(%rip),%rcx
movsd  (%rcx,%rax,8),%xmm0
cmp    $0x4,%edi
je     11ec <gain_aster+0xec>
jmp    11f4 <gain_aster+0xf4>
xor    %eax,%eax
cmp    $0x1,%edi
sete   %cl
mov    %edi,%edx
and    $0xfffffffe,%edx
cmp    $0x2,%edx
je     1222 <gain_aster+0x122>
mov    %cl,%al
lea    0xea4(%rip),%rcx
movsd  (%rcx,%rax,8),%xmm0
cmp    $0x4,%edi
je     122f <gain_aster+0x12f>
jmp    1237 <gain_aster+0x137>
xor    %eax,%eax
cmp    $0x5,%edi
sete   %cl
cmp    $0x6,%edi
je     1265 <gain_aster+0x165>
mov    %cl,%al
lea    0xe67(%rip),%rcx
movsd  (%rcx,%rax,8),%xmm0
cmp    $0x7,%edi
je     1272 <gain_aster+0x172>
jmp    127a <gain_aster+0x17a>
ret
xor    %eax,%eax
cmp    $0x1,%edi
sete   %cl
mov    %edi,%edx
and    $0xfffffffe,%edx
cmp    $0x2,%edx
je     128d <gain_aster+0x18d>
mov    %cl,%al
lea    0xe54(%rip),%rcx
movsd  (%rcx,%rax,8),%xmm0
cmp    $0x4,%edi
je     129a <gain_aster+0x19a>
jmp    12a2 <gain_aster+0x1a2>
movsd  0xf11(%rip),%xmm0
cmp    $0x4,%edi
jne    11f4 <gain_aster+0xf4>
movsd  0xf0c(%rip),%xmm0
cmp    $0x5,%edi
je     1301 <gain_aster+0x201>
cmp    $0x6,%edi
je     1312 <gain_aster+0x212>
cmp    $0x7,%edi
je     1323 <gain_aster+0x223>
cmp    $0x8,%edi
je     1334 <gain_aster+0x234>
cmp    $0x9,%edi
je     1345 <gain_aster+0x245>
ret
movsd  0xe36(%rip),%xmm0
cmp    $0x4,%edi
jne    1237 <gain_aster+0x137>
movsd  0xe31(%rip),%xmm0
cmp    $0x5,%edi
je     134e <gain_aster+0x24e>
cmp    $0x6,%edi
je     135f <gain_aster+0x25f>
cmp    $0x7,%edi
je     1370 <gain_aster+0x270>
cmp    $0x8,%edi
je     1381 <gain_aster+0x281>
cmp    $0x9,%edi
jne    1221 <gain_aster+0x121>
jmp    1392 <gain_aster+0x292>
movsd  0xdd3(%rip),%xmm0
cmp    $0x7,%edi
jne    127a <gain_aster+0x17a>
movsd  0xdce(%rip),%xmm0
cmp    $0x8,%edi
je     139b <gain_aster+0x29b>
cmp    $0x9,%edi
jne    1221 <gain_aster+0x121>
jmp    13ac <gain_aster+0x2ac>
movsd  0xe03(%rip),%xmm0
cmp    $0x4,%edi
jne    12a2 <gain_aster+0x1a2>
movsd  0xdfe(%rip),%xmm0
cmp    $0x5,%edi
je     13b5 <gain_aster+0x2b5>
cmp    $0x6,%edi
je     13c6 <gain_aster+0x2c6>
cmp    $0x7,%edi
je     13d7 <gain_aster+0x2d7>
cmp    $0x8,%edi
je     13e8 <gain_aster+0x2e8>
cmp    $0x9,%edi
je     13f9 <gain_aster+0x2f9>
cmp    $0xa,%edi
je     140a <gain_aster+0x30a>
cmp    $0xb,%edi
je     141b <gain_aster+0x31b>
cmp    $0xc,%edi
je     142c <gain_aster+0x32c>
cmp    $0xd,%edi
je     143d <gain_aster+0x33d>
cmp    $0xe,%edi
jne    1221 <gain_aster+0x121>
jmp    144e <gain_aster+0x34e>
movsd  0xdff(%rip),%xmm0
cmp    $0x6,%edi
jne    1206 <gain_aster+0x106>
movsd  0xdf6(%rip),%xmm0
cmp    $0x7,%edi
jne    120f <gain_aster+0x10f>
movsd  0xded(%rip),%xmm0
cmp    $0x8,%edi
jne    1218 <gain_aster+0x118>
movsd  0xde4(%rip),%xmm0
cmp    $0x9,%edi
jne    1221 <gain_aster+0x121>
movsd  0xddb(%rip),%xmm0
ret
movsd  0xd1a(%rip),%xmm0
cmp    $0x6,%edi
jne    1249 <gain_aster+0x149>
movsd  0xd11(%rip),%xmm0
cmp    $0x7,%edi
jne    1252 <gain_aster+0x152>
movsd  0xd08(%rip),%xmm0
cmp    $0x8,%edi
jne    125b <gain_aster+0x15b>
movsd  0xcff(%rip),%xmm0
cmp    $0x9,%edi
jne    1221 <gain_aster+0x121>
movsd  0xcf6(%rip),%xmm0
ret
movsd  0xcad(%rip),%xmm0
cmp    $0x9,%edi
jne    1221 <gain_aster+0x121>
movsd  0xca4(%rip),%xmm0
ret
movsd  0xceb(%rip),%xmm0
cmp    $0x6,%edi
jne    12b4 <gain_aster+0x1b4>
movsd  0xce2(%rip),%xmm0
cmp    $0x7,%edi
jne    12bd <gain_aster+0x1bd>
movsd  0xcd9(%rip),%xmm0
cmp    $0x8,%edi
jne    12c6 <gain_aster+0x1c6>
movsd  0xcd0(%rip),%xmm0
cmp    $0x9,%edi
jne    12cf <gain_aster+0x1cf>
movsd  0xcc7(%rip),%xmm0
cmp    $0xa,%edi
jne    12d8 <gain_aster+0x1d8>
movsd  0xcbe(%rip),%xmm0
cmp    $0xb,%edi
jne    12e1 <gain_aster+0x1e1>
movsd  0xcb5(%rip),%xmm0
cmp    $0xc,%edi
jne    12ea <gain_aster+0x1ea>
movsd  0xcac(%rip),%xmm0
cmp    $0xd,%edi
jne    12f3 <gain_aster+0x1f3>
movsd  0xca3(%rip),%xmm0
cmp    $0xe,%edi
jne    1221 <gain_aster+0x121>
movsd  0xc9a(%rip),%xmm0
ret

LLVM IR (-O0):
define double @gain_aster(i32 %0, i32 %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca double
store i32 %0, i32* %3
store i32 %1, i32* %4
%6 = load i32, i32* %4
%7 = icmp eq i32 %6, 0
br i1 %7, label %8, label %49
8: ; preds = %2
%9 = load i32, i32* %3
%10 = icmp eq i32 %9, 0
br i1 %10, label %11, label %12
11: ; preds = %8
store double 6.760000e-01, double* %5
br label %12
12: ; preds = %11, %8
%13 = load i32, i32* %3
%14 = icmp eq i32 %13, 1
br i1 %14, label %15, label %16
15: ; preds = %12
store double 0x3FE6A7EF9DB22D0E, double* %5
br label %16
16: ; preds = %15, %12
%17 = load i32, i32* %3
%18 = icmp eq i32 %17, 2
br i1 %18, label %19, label %20
19: ; preds = %16
store double 4.230000e-01, double* %5
br label %20
20: ; preds = %19, %16
%21 = load i32, i32* %3
%22 = icmp eq i32 %21, 3
br i1 %22, label %23, label %24
23: ; preds = %20
store double 4.230000e-01, double* %5
br label %24
24: ; preds = %23, %20
%25 = load i32, i32* %3
%26 = icmp eq i32 %25, 4
br i1 %26, label %27, label %28
27: ; preds = %24
store double 1.087000e-01, double* %5
br label %28
28: ; preds = %27, %24
%29 = load i32, i32* %3
%30 = icmp eq i32 %29, 5
br i1 %30, label %31, label %32
31: ; preds = %28
store double 3.480000e-02, double* %5
br label %32
32: ; preds = %31, %28
%33 = load i32, i32* %3
%34 = icmp eq i32 %33, 6
br i1 %34, label %35, label %36
35: ; preds = %32
store double 3.130000e-02, double* %5
br label %36
36: ; preds = %35, %32
%37 = load i32, i32* %3
%38 = icmp eq i32 %37, 7
br i1 %38, label %39, label %40
39: ; preds = %36
store double 2.990000e-02, double* %5
br label %40
40: ; preds = %39, %36
%41 = load i32, i32* %3
%42 = icmp eq i32 %41, 8
br i1 %42, label %43, label %44
43: ; preds = %40
store double 2.090000e-02, double* %5
br label %44
44: ; preds = %43, %40
%45 = load i32, i32* %3
%46 = icmp eq i32 %45, 9
br i1 %46, label %47, label %48
47: ; preds = %44
store double 1.590000e-02, double* %5
br label %48
48: ; preds = %47, %44
br label %49
49: ; preds = %48, %2
%50 = load i32, i32* %4
%51 = icmp eq i32 %50, 1
br i1 %51, label %52, label %113
52: ; preds = %49
%53 = load i32, i32* %3
%54 = icmp eq i32 %53, 0
br i1 %54, label %55, label %56
55: ; preds = %52
store double 1.688000e+00, double* %5
br label %56
56: ; preds = %55, %52
%57 = load i32, i32* %3
%58 = icmp eq i32 %57, 1
br i1 %58, label %59, label %60
59: ; preds = %56
store double 1.415000e+00, double* %5
br label %60
60: ; preds = %59, %56
%61 = load i32, i32* %3
%62 = icmp eq i32 %61, 2
br i1 %62, label %63, label %64
63: ; preds = %60
store double 8.620000e-01, double* %5
br label %64
64: ; preds = %63, %60
%65 = load i32, i32* %3
%66 = icmp eq i32 %65, 3
br i1 %66, label %67, label %68
67: ; preds = %64
store double 8.620000e-01, double* %5
br label %68
68: ; preds = %67, %64
%69 = load i32, i32* %3
%70 = icmp eq i32 %69, 4
br i1 %70, label %71, label %72
71: ; preds = %68
store double 2.174000e-01, double* %5
br label %72
72: ; preds = %71, %68
%73 = load i32, i32* %3
%74 = icmp eq i32 %73, 5
br i1 %74, label %75, label %76
75: ; preds = %72
store double 0x3FB1D14E3BCD35A8, double* %5
br label %76
76: ; preds = %75, %72
%77 = load i32, i32* %3
%78 = icmp eq i32 %77, 6
br i1 %78, label %79, label %80
79: ; preds = %76
store double 6.250000e-02, double* %5
br label %80
80: ; preds = %79, %76
%81 = load i32, i32* %3
%82 = icmp eq i32 %81, 7
br i1 %82, label %83, label %84
83: ; preds = %80
store double 5.970000e-02, double* %5
br label %84
84: ; preds = %83, %80
%85 = load i32, i32* %3
%86 = icmp eq i32 %85, 8
br i1 %86, label %87, label %88
87: ; preds = %84
store double 4.170000e-02, double* %5
br label %88
88: ; preds = %87, %84
%89 = load i32, i32* %3
%90 = icmp eq i32 %89, 9
br i1 %90, label %91, label %92
91: ; preds = %88
store double 3.180000e-02, double* %5
br label %92
92: ; preds = %91, %88
%93 = load i32, i32* %3
%94 = icmp eq i32 %93, 10
br i1 %94, label %95, label %96
95: ; preds = %92
store double 6.822000e-03, double* %5
br label %96
96: ; preds = %95, %92
%97 = load i32, i32* %3
%98 = icmp eq i32 %97, 11
br i1 %98, label %99, label %100
99: ; preds = %96
store double 6.780000e-03, double* %5
br label %100
100: ; preds = %99, %96
%101 = load i32, i32* %3
%102 = icmp eq i32 %101, 12
br i1 %102, label %103, label %104
103: ; preds = %100
store double 6.590000e-03, double* %5
br label %104
104: ; preds = %103, %100
%105 = load i32, i32* %3
%106 = icmp eq i32 %105, 13
br i1 %106, label %107, label %108
107: ; preds = %104
store double 5.693000e-03, double* %5
br label %108
108: ; preds = %107, %104
%109 = load i32, i32* %3
%110 = icmp eq i32 %109, 14
br i1 %110, label %111, label %112
111: ; preds = %108
store double 5.225000e-03, double* %5
br label %112
112: ; preds = %111, %108
br label %113
113: ; preds = %112, %49
%114 = load i32, i32* %4
%115 = icmp eq i32 %114, 2
br i1 %115, label %116, label %157
116: ; preds = %113
%117 = load i32, i32* %3
%118 = icmp eq i32 %117, 0
br i1 %118, label %119, label %120
119: ; preds = %116
store double 2.250000e+00, double* %5
br label %120
120: ; preds = %119, %116
%121 = load i32, i32* %3
%122 = icmp eq i32 %121, 1
br i1 %122, label %123, label %124
123: ; preds = %120
store double 1.890000e+00, double* %5
br label %124
124: ; preds = %123, %120
%125 = load i32, i32* %3
%126 = icmp eq i32 %125, 2
br i1 %126, label %127, label %128
127: ; preds = %124
store double 1.150000e+00, double* %5
br label %128
128: ; preds = %127, %124
%129 = load i32, i32* %3
%130 = icmp eq i32 %129, 3
br i1 %130, label %131, label %132
131: ; preds = %128
store double 1.150000e+00, double* %5
br label %132
132: ; preds = %131, %128
%133 = load i32, i32* %3
%134 = icmp eq i32 %133, 4
br i1 %134, label %135, label %136
135: ; preds = %132
store double 2.900000e-01, double* %5
br label %136
136: ; preds = %135, %132
%137 = load i32, i32* %3
%138 = icmp eq i32 %137, 5
br i1 %138, label %139, label %140
139: ; preds = %136
store double 0x3FB7AE147AE147AE, double* %5
br label %140
140: ; preds = %139, %136
%141 = load i32, i32* %3
%142 = icmp eq i32 %141, 6
br i1 %142, label %143, label %144
143: ; preds = %140
store double 8.300000e-02, double* %5
br label %144
144: ; preds = %143, %140
%145 = load i32, i32* %3
%146 = icmp eq i32 %145, 7
br i1 %146, label %147, label %148
147: ; preds = %144
store double 7.950000e-02, double* %5
br label %148
148: ; preds = %147, %144
%149 = load i32, i32* %3
%150 = icmp eq i32 %149, 8
br i1 %150, label %151, label %152
151: ; preds = %148
store double 5.560000e-02, double* %5
br label %152
152: ; preds = %151, %148
%153 = load i32, i32* %3
%154 = icmp eq i32 %153, 9
br i1 %154, label %155, label %156
155: ; preds = %152
store double 4.240000e-02, double* %5
br label %156
156: ; preds = %155, %152
br label %157
157: ; preds = %156, %113
%158 = load i32, i32* %4
%159 = icmp eq i32 %158, 3
br i1 %159, label %160, label %185
160: ; preds = %157
%161 = load i32, i32* %3
%162 = icmp eq i32 %161, 4
br i1 %162, label %163, label %164
163: ; preds = %160
store double 2.900000e-01, double* %5
br label %164
164: ; preds = %163, %160
%165 = load i32, i32* %3
%166 = icmp eq i32 %165, 5
br i1 %166, label %167, label %168
167: ; preds = %164
store double 4.090000e-01, double* %5
br label %168
168: ; preds = %167, %164
%169 = load i32, i32* %3
%170 = icmp eq i32 %169, 6
br i1 %170, label %171, label %172
171: ; preds = %168
store double 3.900000e-01, double* %5
br label %172
172: ; preds = %171, %168
%173 = load i32, i32* %3
%174 = icmp eq i32 %173, 7
br i1 %174, label %175, label %176
175: ; preds = %172
store double 3.320000e-01, double* %5
br label %176
176: ; preds = %175, %172
%177 = load i32, i32* %3
%178 = icmp eq i32 %177, 8
br i1 %178, label %179, label %180
179: ; preds = %176
store double 2.450000e-01, double* %5
br label %180
180: ; preds = %179, %176
%181 = load i32, i32* %3
%182 = icmp eq i32 %181, 9
br i1 %182, label %183, label %184
183: ; preds = %180
store double 2.650000e-01, double* %5
br label %184
184: ; preds = %183, %180
br label %185
185: ; preds = %184, %157
%186 = load double, double* %5
ret double %186
}

LLVM IR (-O2):
define double @gain_aster(i32 %0, i32 %1) {
switch i32 %1, label %78 [
i32 0, label %3
i32 1, label %21
i32 2, label %49
i32 3, label %67
]
3: ; preds = %2
%4 = icmp eq i32 %0, 1
%5 = select i1 %4, double 0x3FE6A7EF9DB22D0E, double 6.760000e-01
%6 = and i32 %0, -2
%7 = icmp eq i32 %6, 2
%8 = select i1 %7, double 4.230000e-01, double %5
%9 = icmp eq i32 %0, 4
%10 = select i1 %9, double 1.087000e-01, double %8
%11 = icmp eq i32 %0, 5
%12 = select i1 %11, double 3.480000e-02, double %10
%13 = icmp eq i32 %0, 6
%14 = select i1 %13, double 3.130000e-02, double %12
%15 = icmp eq i32 %0, 7
%16 = select i1 %15, double 2.990000e-02, double %14
%17 = icmp eq i32 %0, 8
%18 = select i1 %17, double 2.090000e-02, double %16
%19 = icmp eq i32 %0, 9
%20 = select i1 %19, double 1.590000e-02, double %18
br label %78
21: ; preds = %2
%22 = icmp eq i32 %0, 1
%23 = select i1 %22, double 1.415000e+00, double 1.688000e+00
%24 = and i32 %0, -2
%25 = icmp eq i32 %24, 2
%26 = select i1 %25, double 8.620000e-01, double %23
%27 = icmp eq i32 %0, 4
%28 = select i1 %27, double 2.174000e-01, double %26
%29 = icmp eq i32 %0, 5
%30 = select i1 %29, double 0x3FB1D14E3BCD35A8, double %28
%31 = icmp eq i32 %0, 6
%32 = select i1 %31, double 6.250000e-02, double %30
%33 = icmp eq i32 %0, 7
%34 = select i1 %33, double 5.970000e-02, double %32
%35 = icmp eq i32 %0, 8
%36 = select i1 %35, double 4.170000e-02, double %34
%37 = icmp eq i32 %0, 9
%38 = select i1 %37, double 3.180000e-02, double %36
%39 = icmp eq i32 %0, 10
%40 = select i1 %39, double 6.822000e-03, double %38
%41 = icmp eq i32 %0, 11
%42 = select i1 %41, double 6.780000e-03, double %40
%43 = icmp eq i32 %0, 12
%44 = select i1 %43, double 6.590000e-03, double %42
%45 = icmp eq i32 %0, 13
%46 = select i1 %45, double 5.693000e-03, double %44
%47 = icmp eq i32 %0, 14
%48 = select i1 %47, double 5.225000e-03, double %46
br label %78
49: ; preds = %2
%50 = icmp eq i32 %0, 1
%51 = select i1 %50, double 1.890000e+00, double 2.250000e+00
%52 = and i32 %0, -2
%53 = icmp eq i32 %52, 2
%54 = select i1 %53, double 1.150000e+00, double %51
%55 = icmp eq i32 %0, 4
%56 = select i1 %55, double 2.900000e-01, double %54
%57 = icmp eq i32 %0, 5
%58 = select i1 %57, double 0x3FB7AE147AE147AE, double %56
%59 = icmp eq i32 %0, 6
%60 = select i1 %59, double 8.300000e-02, double %58
%61 = icmp eq i32 %0, 7
%62 = select i1 %61, double 7.950000e-02, double %60
%63 = icmp eq i32 %0, 8
%64 = select i1 %63, double 5.560000e-02, double %62
%65 = icmp eq i32 %0, 9
%66 = select i1 %65, double 4.240000e-02, double %64
br label %78
67: ; preds = %2
%68 = icmp eq i32 %0, 5
%69 = select i1 %68, double 4.090000e-01, double 2.900000e-01
%70 = icmp eq i32 %0, 6
%71 = select i1 %70, double 3.900000e-01, double %69
%72 = icmp eq i32 %0, 7
%73 = select i1 %72, double 3.320000e-01, double %71
%74 = icmp eq i32 %0, 8
%75 = select i1 %74, double 2.450000e-01, double %73
%76 = icmp eq i32 %0, 9
%77 = select i1 %76, double 2.650000e-01, double %75
br label %78
78: ; preds = %2, %21, %3, %49, %67
%79 = phi double [ %77, %67 ], [ %66, %49 ], [ %20, %3 ], [ %48, %21 ], [ undef, %2 ]
ret double %79
}