#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
long double const exp(int);
int pow(long double, int);
long double pos_spec_DG(char aa, int i, int helix_length) {
  const long double profiles[26][5] = {
      {0.1267255, 0.0215152, 0, 0, 0},
      {1.5556351, 0.0133523, 0, 0, 0},
      {-0.0765051, 0.0994228, 0, 0, 0},
      {1.7939795, 0.0172643, 0, 0, 0},
      {1.4193720, 0.0089351, 0, 0, 0},
      {-0.2766953, 0.0010297, 0, 0, 0},
      {0.4813492, 0.0047210, 0, 0, 0},
      {1.1998590, 0.0080127, 0, 0, 0},
      {-0.4597384, 0.0181495, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {1.8485768, 0.0218446, 0, 0, 0},
      {-0.4282992, 0.0023804, 0, 0, 0},
      {-0.0774786, 0.0984413, 0, 0, 0},
      {1.3266132, 0.0092375, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {1.0860888, 0.0100568, 0, 0, 0},
      {1.3336109, 0.0111996, 0, 0, 0},
      {1.6492534, 0.0512044, 0, 0, 0},
      {0.7023921, 0.0077661, 0, 0, 0},
      {0.5266550, 0.0311973, 0, 0, 0},
      {0, 0, 0, 0, 0},
      {-0.2447218, 0.0979201, 0, 0, 0},
      {0.2909390, 0.0189282, -0.5479140, 0.0930222, 6.4736619},
      {0.6348884, 0.0180273, 0, 0, 0},
      {0.6275249, 0.0103896, -0.5744404, 0.0947821, 6.9164963},
      {1.3761092, 0.0099898, 0, 0, 0}};
  long double pos = 9 * (2 * (i - 1) / (helix_length - 1.0) - 1);
  long double DG;
  int aa_nr = (int)(aa - 65);
  if ((aa == 'W') || (aa == 'Y')) {
    DG =
        profiles[aa_nr][0] * exp(-1 * profiles[aa_nr][1] * pow(pos, 2)) +
        profiles[aa_nr][2] *
            (exp(-1 * profiles[aa_nr][3] * pow((pos - profiles[aa_nr][4]), 2)) +
             exp(-1 * profiles[aa_nr][3] * pow((pos + profiles[aa_nr][4]), 2)));
  } else {
    DG = profiles[aa_nr][0] * exp(-1 * profiles[aa_nr][1] * pow(pos, 2));
  }
  return DG;
}


x86 assembly (clang, -O0):
<pos_spec_DG>:
push   %rbp
mov    %rsp,%rbp
sub    $0x910,%rsp
mov    %dil,%al
mov    %al,-0x1(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
lea    0xec2(%rip),%rsi
lea    -0x830(%rbp),%rdi
mov    $0x820,%edx
call   1030 <memcpy@plt>
mov    -0x8(%rbp),%ecx
mov    %ecx,%eax
lea    -0x2(%rax,%rax,1),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0xc(%rbp),%xmm2
movsd  0xe87(%rip),%xmm1
subsd  %xmm1,%xmm2
divsd  %xmm2,%xmm0
subsd  %xmm1,%xmm0
movsd  0xe7b(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x860(%rbp)
ff
fldl   -0x860(%rbp)
fstpt  -0x840(%rbp)
movsbl -0x1(%rbp),%eax
sub    $0x41,%eax
mov    %eax,-0x854(%rbp)
movsbl -0x1(%rbp),%eax
cmp    $0x57,%eax
je     11cc <pos_spec_DG+0x9c>
movsbl -0x1(%rbp),%eax
cmp    $0x59,%eax
jne    13b2 <pos_spec_DG+0x282>
movslq -0x854(%rbp),%rax
lea    (%rax,%rax,4),%rax
shl    $0x4,%rax
fldt   -0x830(%rbp,%rax,1)
fstpt  -0x89c(%rbp)
fldt   -0x820(%rbp,%rax,1)
fchs
fstpt  -0x8e8(%rbp)
fldt   -0x840(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
mov    $0x2,%edi
mov    %edi,-0x8d0(%rbp)
call   1050 <pow@plt>
fldt   -0x8e8(%rbp)
mov    %eax,-0x880(%rbp)
fildl  -0x880(%rbp)
fmulp  %st,%st(1)
fnstcw -0x882(%rbp)
movzwl -0x882(%rbp),%eax
or     $0xc00,%eax
mov    %ax,-0x884(%rbp)
fldcw  -0x884(%rbp)
fistpl -0x87c(%rbp)
fldcw  -0x882(%rbp)
mov    -0x87c(%rbp),%edi
call   1040 <exp@plt>
mov    -0x8d0(%rbp),%edi
fstpt  -0x8a8(%rbp)
movslq -0x854(%rbp),%rax
lea    (%rax,%rax,4),%rax
shl    $0x4,%rax
fldt   -0x810(%rbp,%rax,1)
fstpt  -0x8b4(%rbp)
fldt   -0x800(%rbp,%rax,1)
fchs
fstpt  -0x8dc(%rbp)
fldt   -0x840(%rbp)
fldt   -0x7f0(%rbp,%rax,1)
fsubrp %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
call   1050 <pow@plt>
fldt   -0x8dc(%rbp)
mov    %eax,-0x878(%rbp)
fildl  -0x878(%rbp)
fmulp  %st,%st(1)
fnstcw -0x886(%rbp)
movzwl -0x886(%rbp),%eax
or     $0xc00,%eax
mov    %ax,-0x888(%rbp)
fldcw  -0x888(%rbp)
fistpl -0x874(%rbp)
fldcw  -0x886(%rbp)
mov    -0x874(%rbp),%edi
call   1040 <exp@plt>
mov    -0x8d0(%rbp),%edi
fstpt  -0x8c0(%rbp)
movslq -0x854(%rbp),%rax
lea    (%rax,%rax,4),%rax
shl    $0x4,%rax
fldt   -0x800(%rbp,%rax,1)
fchs
fstpt  -0x8cc(%rbp)
fldt   -0x840(%rbp)
fldt   -0x7f0(%rbp,%rax,1)
faddp  %st,%st(1)
mov    %rsp,%rax
fstpt  (%rax)
call   1050 <pow@plt>
fldt   -0x8cc(%rbp)
mov    %eax,-0x870(%rbp)
fildl  -0x870(%rbp)
fmulp  %st,%st(1)
fnstcw -0x88a(%rbp)
movzwl -0x88a(%rbp),%eax
or     $0xc00,%eax
mov    %ax,-0x88c(%rbp)
fldcw  -0x88c(%rbp)
fistpl -0x86c(%rbp)
fldcw  -0x88a(%rbp)
mov    -0x86c(%rbp),%edi
call   1040 <exp@plt>
fldt   -0x8c0(%rbp)
fldt   -0x8b4(%rbp)
fldt   -0x8a8(%rbp)
fldt   -0x89c(%rbp)
fxch   %st(3)
faddp  %st,%st(4)
fxch   %st(1)
fmulp  %st,%st(3)
fmulp  %st,%st(1)
faddp  %st,%st(1)
fstpt  -0x850(%rbp)
jmp    144a <pos_spec_DG+0x31a>
movslq -0x854(%rbp),%rax
lea    (%rax,%rax,4),%rax
shl    $0x4,%rax
fldt   -0x830(%rbp,%rax,1)
fstpt  -0x8f4(%rbp)
fldt   -0x820(%rbp,%rax,1)
fchs
fstpt  -0x900(%rbp)
fldt   -0x840(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
mov    $0x2,%edi
call   1050 <pow@plt>
fldt   -0x900(%rbp)
mov    %eax,-0x868(%rbp)
fildl  -0x868(%rbp)
fmulp  %st,%st(1)
fnstcw -0x88e(%rbp)
movzwl -0x88e(%rbp),%eax
or     $0xc00,%eax
mov    %ax,-0x890(%rbp)
fldcw  -0x890(%rbp)
fistpl -0x864(%rbp)
fldcw  -0x88e(%rbp)
mov    -0x864(%rbp),%edi
call   1040 <exp@plt>
fldt   -0x8f4(%rbp)
fmulp  %st,%st(1)
fstpt  -0x850(%rbp)
fldt   -0x850(%rbp)
add    $0x910,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<pos_spec_DG>:
push   %r14
push   %rbx
sub    $0xa8,%rsp
lea    -0x2(%rsi,%rsi,1),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sd %edx,%xmm1
movsd  0xec2(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
mulsd  0xeb6(%rip),%xmm0
movsd  %xmm0,0x60(%rsp)
fldl   0x60(%rsp)
mov    %edi,%eax
add    $0xffffffbf,%eax
cmp    $0x59,%dil
je     1171 <pos_spec_DG+0x51>
cmp    $0x57,%dil
jne    12c1 <pos_spec_DG+0x1a1>
cltq
lea    (%rax,%rax,4),%rbx
shl    $0x4,%rbx
lea    0xe8e(%rip),%r14
fldt   (%rbx,%r14,1)
fstpt  0x9c(%rsp)
fldt   0x10(%rbx,%r14,1)
fchs
fstpt  0x28(%rsp)
fld    %st(0)
fstpt  (%rsp)
mov    $0x2,%edi
fstpt  0x34(%rsp)
call   1040 <pow@plt>
mov    %eax,0x48(%rsp)
fldt   0x28(%rsp)
fimull 0x48(%rsp)
fnstcw 0x1e(%rsp)
movzwl 0x1e(%rsp),%eax
or     $0xc00,%eax
mov    %ax,0x26(%rsp)
fldcw  0x26(%rsp)
fistpl 0x4c(%rsp)
fldcw  0x1e(%rsp)
mov    0x4c(%rsp),%edi
call   1030 <exp@plt>
fstpt  0x90(%rsp)
fldt   0x20(%rbx,%r14,1)
fstpt  0x84(%rsp)
fldt   0x30(%rbx,%r14,1)
fchs
fstpt  0x28(%rsp)
fldt   0x40(%rbx,%r14,1)
fld    %st(0)
fstpt  0x6c(%rsp)
fldt   0x34(%rsp)
fsubp  %st,%st(1)
fstpt  (%rsp)
mov    $0x2,%edi
call   1040 <pow@plt>
mov    %eax,0x50(%rsp)
fldt   0x28(%rsp)
fimull 0x50(%rsp)
fnstcw 0x1c(%rsp)
movzwl 0x1c(%rsp),%eax
or     $0xc00,%eax
mov    %ax,0x24(%rsp)
fldcw  0x24(%rsp)
fistpl 0x54(%rsp)
fldcw  0x1c(%rsp)
mov    0x54(%rsp),%edi
call   1030 <exp@plt>
fstpt  0x78(%rsp)
fldt   0x34(%rsp)
fldt   0x6c(%rsp)
faddp  %st,%st(1)
fstpt  (%rsp)
mov    $0x2,%edi
call   1040 <pow@plt>
mov    %eax,0x58(%rsp)
fldt   0x28(%rsp)
fimull 0x58(%rsp)
fnstcw 0x1a(%rsp)
movzwl 0x1a(%rsp),%eax
or     $0xc00,%eax
mov    %ax,0x22(%rsp)
fldcw  0x22(%rsp)
fistpl 0x5c(%rsp)
fldcw  0x1a(%rsp)
mov    0x5c(%rsp),%edi
call   1030 <exp@plt>
fldt   0x78(%rsp)
faddp  %st,%st(1)
fldt   0x84(%rsp)
fmulp  %st,%st(1)
fldt   0x9c(%rsp)
fldt   0x90(%rsp)
fmulp  %st,%st(1)
faddp  %st,%st(1)
jmp    132a <pos_spec_DG+0x20a>
cltq
lea    (%rax,%rax,4),%rax
shl    $0x4,%rax
lea    0xd3e(%rip),%rcx
fldt   (%rax,%rcx,1)
fstpt  0x34(%rsp)
fldt   0x10(%rax,%rcx,1)
fchs
fstpt  0x28(%rsp)
fstpt  (%rsp)
mov    $0x2,%edi
call   1040 <pow@plt>
mov    %eax,0x40(%rsp)
fldt   0x28(%rsp)
fimull 0x40(%rsp)
fnstcw 0x18(%rsp)
movzwl 0x18(%rsp),%eax
or     $0xc00,%eax
mov    %ax,0x20(%rsp)
fldcw  0x20(%rsp)
fistpl 0x44(%rsp)
fldcw  0x18(%rsp)
mov    0x44(%rsp),%edi
call   1030 <exp@plt>
fldt   0x34(%rsp)
fmulp  %st,%st(1)
add    $0xa8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@__const.pos_spec_DG.profiles = [26 x [5 x x86_fp80]] [[5 x x86_fp80] [x86_fp80 0xK3FFC81C4545846E8F000, x86_fp80 0xK3FF9B040A50BBDA36800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFC71F0D0B813D8000, x86_fp80 0xK3FF8DAC39AF4E36C4800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xKBFFB9CAEB4B3D1534800, x86_fp80 0xK3FFBCB9E2E53D061B000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFE5A11EC918E32800, x86_fp80 0xK3FF98D6DDC7C6D38E800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFB5ADFB506DD6A000, x86_fp80 0xK3FF89264869255D87800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xKBFFD8DAB01A0E9EFF000, x86_fp80 0xK3FF586F6FFA63DECC800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFDF67366FFE959C800, x86_fp80 0xK3FF79AB29E4D5D80E800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFF9994FACE67D78000, x86_fp80 0xK3FF88347B31CF85E4800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xKBFFDEB62D4E16E448000, x86_fp80 0xK3FF994AE429E0A41A000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] zeroinitializer, [5 x x86_fp80] [x86_fp80 0xK3FFFEC9E2A2212798000, x86_fp80 0xK3FF9B2F3725303B31000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xKBFFDDB4A0861CE513000, x86_fp80 0xK3FF69C007C26C20BA800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xKBFFB9EAD19A91E71D800, x86_fp80 0xK3FFBC99B97A09B159800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFA9CE761A38906800, x86_fp80 0xK3FF89758E219652BD000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] zeroinitializer, [5 x x86_fp80] [x86_fp80 0xK3FFF8B04F53246A42800, x86_fp80 0xK3FF8A4C546C68DEE6800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFAAB3C3108B688000, x86_fp80 0xK3FF8B77E86EE9C2A7000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFD31ABC43E88D2000, x86_fp80 0xK3FFAD1BBB47694B1D000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFEB3CFF7FA7800C000, x86_fp80 0xK3FF7FE7AC4C23C501000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFE86D2DCB1465E8800, x86_fp80 0xK3FF9FF917AE726EB2800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] zeroinitializer, [5 x x86_fp80] [x86_fp80 0xKBFFCFA9859FE79174000, x86_fp80 0xK3FFBC88A5558F7E8D800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFD94F5F4E4430B1800, x86_fp80 0xK3FF99B0F4FFF1BD47000, x86_fp80 0xKBFFE8C44178705426000, x86_fp80 0xK3FFBBE826C566A6FE000, x86_fp80 0xK4001CF283D003B8F2000], [5 x x86_fp80] [x86_fp80 0xK3FFEA2880BD29C19A800, x86_fp80 0xK3FF993ADFCFDED004800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFEA0A578CAECF8C000, x86_fp80 0xK3FF8AA39240DFC420800, x86_fp80 0xKBFFE930E86AB804BE800, x86_fp80 0xK3FFBC21D1E1DF8388800, x86_fp80 0xK4001DD53F00C6CF5D000], [5 x x86_fp80] [x86_fp80 0xK3FFFB02458A4DCC3B800, x86_fp80 0xK3FF8A3AC4212CA072000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000]]
define x86_fp80 @pos_spec_DG(i8 signext %0, i32 %1, i32 %2) {
%4 = alloca i8
%5 = alloca i32
%6 = alloca i32
%7 = alloca [26 x [5 x x86_fp80]]
%8 = alloca x86_fp80
%9 = alloca x86_fp80
%10 = alloca i32
store i8 %0, i8* %4
store i32 %1, i32* %5
store i32 %2, i32* %6
%11 = bitcast [26 x [5 x x86_fp80]]* %7 to i8*
%12 = load i32, i32* %5
%13 = sub nsw i32 %12, 1
%14 = mul nsw i32 2, %13
%15 = sitofp i32 %14 to double
%16 = load i32, i32* %6
%17 = sitofp i32 %16 to double
%18 = fsub double %17, 1.000000e+00
%19 = fdiv double %15, %18
%20 = fsub double %19, 1.000000e+00
%21 = fmul double 9.000000e+00, %20
%22 = fpext double %21 to x86_fp80
store x86_fp80 %22, x86_fp80* %8
%23 = load i8, i8* %4
%24 = sext i8 %23 to i32
%25 = sub nsw i32 %24, 65
store i32 %25, i32* %10
%26 = load i8, i8* %4
%27 = sext i8 %26 to i32
%28 = icmp eq i32 %27, 87
br i1 %28, label %33, label %29
29: ; preds = %3
%30 = load i8, i8* %4
%31 = sext i8 %30 to i32
%32 = icmp eq i32 %31, 89
br i1 %32, label %33, label %95
33: ; preds = %29, %3
%34 = load i32, i32* %10
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* %7, i64 0, i64 %35
%37 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* %36, i64 0, i64 0
%38 = load x86_fp80, x86_fp80* %37
%39 = load i32, i32* %10
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* %7, i64 0, i64 %40
%42 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* %41, i64 0, i64 1
%43 = load x86_fp80, x86_fp80* %42
%44 = fmul x86_fp80 0xKBFFF8000000000000000, %43
%45 = load x86_fp80, x86_fp80* %8
%46 = call i32 @pow(x86_fp80 %45, i32 2)
%47 = sitofp i32 %46 to x86_fp80
%48 = fmul x86_fp80 %44, %47
%49 = fptosi x86_fp80 %48 to i32
%50 = call x86_fp80 @exp(i32 %49)
%51 = load i32, i32* %10
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* %7, i64 0, i64 %52
%54 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* %53, i64 0, i64 2
%55 = load x86_fp80, x86_fp80* %54
%56 = load i32, i32* %10
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* %7, i64 0, i64 %57
%59 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* %58, i64 0, i64 3
%60 = load x86_fp80, x86_fp80* %59
%61 = fmul x86_fp80 0xKBFFF8000000000000000, %60
%62 = load x86_fp80, x86_fp80* %8
%63 = load i32, i32* %10
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* %7, i64 0, i64 %64
%66 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* %65, i64 0, i64 4
%67 = load x86_fp80, x86_fp80* %66
%68 = fsub x86_fp80 %62, %67
%69 = call i32 @pow(x86_fp80 %68, i32 2)
%70 = sitofp i32 %69 to x86_fp80
%71 = fmul x86_fp80 %61, %70
%72 = fptosi x86_fp80 %71 to i32
%73 = call x86_fp80 @exp(i32 %72)
%74 = load i32, i32* %10
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* %7, i64 0, i64 %75
%77 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* %76, i64 0, i64 3
%78 = load x86_fp80, x86_fp80* %77
%79 = fmul x86_fp80 0xKBFFF8000000000000000, %78
%80 = load x86_fp80, x86_fp80* %8
%81 = load i32, i32* %10
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* %7, i64 0, i64 %82
%84 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* %83, i64 0, i64 4
%85 = load x86_fp80, x86_fp80* %84
%86 = fadd x86_fp80 %80, %85
%87 = call i32 @pow(x86_fp80 %86, i32 2)
%88 = sitofp i32 %87 to x86_fp80
%89 = fmul x86_fp80 %79, %88
%90 = fptosi x86_fp80 %89 to i32
%91 = call x86_fp80 @exp(i32 %90)
%92 = fadd x86_fp80 %73, %91
%93 = fmul x86_fp80 %55, %92
%94 = call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %38, x86_fp80 %50, x86_fp80 %93)
store x86_fp80 %94, x86_fp80* %9
br label %114
95: ; preds = %29
%96 = load i32, i32* %10
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* %7, i64 0, i64 %97
%99 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* %98, i64 0, i64 0
%100 = load x86_fp80, x86_fp80* %99
%101 = load i32, i32* %10
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* %7, i64 0, i64 %102
%104 = getelementptr inbounds [5 x x86_fp80], [5 x x86_fp80]* %103, i64 0, i64 1
%105 = load x86_fp80, x86_fp80* %104
%106 = fmul x86_fp80 0xKBFFF8000000000000000, %105
%107 = load x86_fp80, x86_fp80* %8
%108 = call i32 @pow(x86_fp80 %107, i32 2)
%109 = sitofp i32 %108 to x86_fp80
%110 = fmul x86_fp80 %106, %109
%111 = fptosi x86_fp80 %110 to i32
%112 = call x86_fp80 @exp(i32 %111)
%113 = fmul x86_fp80 %100, %112
store x86_fp80 %113, x86_fp80* %9
br label %114
114: ; preds = %95, %33
%115 = load x86_fp80, x86_fp80* %9
ret x86_fp80 %115
}

LLVM IR (-O2):
@__const.pos_spec_DG.profiles = [26 x [5 x x86_fp80]] [[5 x x86_fp80] [x86_fp80 0xK3FFC81C4545846E8F000, x86_fp80 0xK3FF9B040A50BBDA36800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFC71F0D0B813D8000, x86_fp80 0xK3FF8DAC39AF4E36C4800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xKBFFB9CAEB4B3D1534800, x86_fp80 0xK3FFBCB9E2E53D061B000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFE5A11EC918E32800, x86_fp80 0xK3FF98D6DDC7C6D38E800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFB5ADFB506DD6A000, x86_fp80 0xK3FF89264869255D87800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xKBFFD8DAB01A0E9EFF000, x86_fp80 0xK3FF586F6FFA63DECC800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFDF67366FFE959C800, x86_fp80 0xK3FF79AB29E4D5D80E800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFF9994FACE67D78000, x86_fp80 0xK3FF88347B31CF85E4800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xKBFFDEB62D4E16E448000, x86_fp80 0xK3FF994AE429E0A41A000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] zeroinitializer, [5 x x86_fp80] [x86_fp80 0xK3FFFEC9E2A2212798000, x86_fp80 0xK3FF9B2F3725303B31000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xKBFFDDB4A0861CE513000, x86_fp80 0xK3FF69C007C26C20BA800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xKBFFB9EAD19A91E71D800, x86_fp80 0xK3FFBC99B97A09B159800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFA9CE761A38906800, x86_fp80 0xK3FF89758E219652BD000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] zeroinitializer, [5 x x86_fp80] [x86_fp80 0xK3FFF8B04F53246A42800, x86_fp80 0xK3FF8A4C546C68DEE6800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFAAB3C3108B688000, x86_fp80 0xK3FF8B77E86EE9C2A7000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFFD31ABC43E88D2000, x86_fp80 0xK3FFAD1BBB47694B1D000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFEB3CFF7FA7800C000, x86_fp80 0xK3FF7FE7AC4C23C501000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFE86D2DCB1465E8800, x86_fp80 0xK3FF9FF917AE726EB2800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] zeroinitializer, [5 x x86_fp80] [x86_fp80 0xKBFFCFA9859FE79174000, x86_fp80 0xK3FFBC88A5558F7E8D800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFD94F5F4E4430B1800, x86_fp80 0xK3FF99B0F4FFF1BD47000, x86_fp80 0xKBFFE8C44178705426000, x86_fp80 0xK3FFBBE826C566A6FE000, x86_fp80 0xK4001CF283D003B8F2000], [5 x x86_fp80] [x86_fp80 0xK3FFEA2880BD29C19A800, x86_fp80 0xK3FF993ADFCFDED004800, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000], [5 x x86_fp80] [x86_fp80 0xK3FFEA0A578CAECF8C000, x86_fp80 0xK3FF8AA39240DFC420800, x86_fp80 0xKBFFE930E86AB804BE800, x86_fp80 0xK3FFBC21D1E1DF8388800, x86_fp80 0xK4001DD53F00C6CF5D000], [5 x x86_fp80] [x86_fp80 0xK3FFFB02458A4DCC3B800, x86_fp80 0xK3FF8A3AC4212CA072000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000, x86_fp80 0xK00000000000000000000]]
define x86_fp80 @pos_spec_DG(i8 signext %0, i32 %1, i32 %2) {
%4 = shl i32 %1, 1
%5 = add i32 %4, -2
%6 = sitofp i32 %5 to double
%7 = sitofp i32 %2 to double
%8 = fadd double %7, -1.000000e+00
%9 = fdiv double %6, %8
%10 = fadd double %9, -1.000000e+00
%11 = fmul double %10, 9.000000e+00
%12 = fpext double %11 to x86_fp80
%13 = sext i8 %0 to i32
%14 = add nsw i32 %13, -65
switch i8 %0, label %49 [
i8 89, label %15
i8 87, label %15
]
15: ; preds = %3, %3
%16 = sext i32 %14 to i64
%17 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* @__const.pos_spec_DG.profiles, i64 0, i64 %16, i64 0
%18 = load x86_fp80, x86_fp80* %17
%19 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* @__const.pos_spec_DG.profiles, i64 0, i64 %16, i64 1
%20 = load x86_fp80, x86_fp80* %19
%21 = fneg x86_fp80 %20
%22 = tail call i32 @pow(x86_fp80 %12, i32 2)
%23 = sitofp i32 %22 to x86_fp80
%24 = fmul x86_fp80 %21, %23
%25 = fptosi x86_fp80 %24 to i32
%26 = tail call x86_fp80 @exp(i32 %25)
%27 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* @__const.pos_spec_DG.profiles, i64 0, i64 %16, i64 2
%28 = load x86_fp80, x86_fp80* %27
%29 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* @__const.pos_spec_DG.profiles, i64 0, i64 %16, i64 3
%30 = load x86_fp80, x86_fp80* %29
%31 = fneg x86_fp80 %30
%32 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* @__const.pos_spec_DG.profiles, i64 0, i64 %16, i64 4
%33 = load x86_fp80, x86_fp80* %32
%34 = fsub x86_fp80 %12, %33
%35 = tail call i32 @pow(x86_fp80 %34, i32 2)
%36 = sitofp i32 %35 to x86_fp80
%37 = fmul x86_fp80 %31, %36
%38 = fptosi x86_fp80 %37 to i32
%39 = tail call x86_fp80 @exp(i32 %38)
%40 = fadd x86_fp80 %33, %12
%41 = tail call i32 @pow(x86_fp80 %40, i32 2)
%42 = sitofp i32 %41 to x86_fp80
%43 = fmul x86_fp80 %31, %42
%44 = fptosi x86_fp80 %43 to i32
%45 = tail call x86_fp80 @exp(i32 %44)
%46 = fadd x86_fp80 %39, %45
%47 = fmul x86_fp80 %28, %46
%48 = tail call x86_fp80 @llvm.fmuladd.f80(x86_fp80 %18, x86_fp80 %26, x86_fp80 %47)
br label %62
49: ; preds = %3
%50 = sext i32 %14 to i64
%51 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* @__const.pos_spec_DG.profiles, i64 0, i64 %50, i64 0
%52 = load x86_fp80, x86_fp80* %51
%53 = getelementptr inbounds [26 x [5 x x86_fp80]], [26 x [5 x x86_fp80]]* @__const.pos_spec_DG.profiles, i64 0, i64 %50, i64 1
%54 = load x86_fp80, x86_fp80* %53
%55 = fneg x86_fp80 %54
%56 = tail call i32 @pow(x86_fp80 %12, i32 2)
%57 = sitofp i32 %56 to x86_fp80
%58 = fmul x86_fp80 %55, %57
%59 = fptosi x86_fp80 %58 to i32
%60 = tail call x86_fp80 @exp(i32 %59)
%61 = fmul x86_fp80 %52, %60
br label %62
62: ; preds = %49, %15
%63 = phi x86_fp80 [ %48, %15 ], [ %61, %49 ]
ret x86_fp80 %63
}