void bioR9_3d(HHH, HHL, HLH, HLL, LHH, LHL, LLH, LLL, outvector, xlength,
              ylength, zlength, ifnotAllskip) float *HLL,
    *HLH, *HHL, *HHH;
float *LLL, *LLH, *LHL, *LHH;
float *outvector;
int xlength, ylength;
int ifnotAllskip;
{
  float ix0 = 1.586134342059;
  float ix1 = 0.052980118573;
  float ix2 = -0.882911075529;
  float ix3 = -0.443506852045;
  float iX0, iX1, iX2, iX3, iX4;
  int pairity;
  float Norm;
  int dim;
  dim = (xlength > 1) + (ylength > 1) + (zlength > 1);
  if (ifnotAllskip) {
    iX4 = ix3;
    iX3 = 1.0 / (ix3 * ix2);
    iX2 = 1.0 / (ix2 * ix1);
    iX1 = 1.0 / (ix1 * ix0);
    iX0 = 1.0 / ix0;
  } else {
    iX4 = ix2;
    iX3 = 1.0;
    iX2 = 1.0 / (ix2 * ix1);
    iX1 = 1.0 / (ix1 * ix0);
    iX0 = 1.0 / ix0;
  }
  if (dim == 3)
    Norm = 1.0 / (ix0 * ix1 * ix2);
  if (dim == 2)
    Norm = 1.0;
  if (dim == 1)
    Norm = (ix0 * ix1 * ix2);
  if (xlength > 1)
    Norm *= (0.763);
  if (ylength > 1)
    Norm *= (0.763);
  if (zlength > 1)
    Norm *= (0.763);
  if (dim == 0) {
    Norm = 1.0;
    iX0 = 1.0;
    iX1 = 1.0;
    iX2 = 1.0;
    iX3 = 1.0;
    iX4 = 1.0;
  }
  if (ifnotAllskip) {
    bioR1__3d(HHH, HHL, HLH, HLL, LHH, LHL, LLH, LLL, outvector, xlength,
              ylength, zlength, iX4, Norm);
    pairity = 0;
    bio_3d_postmult(outvector, xlength, ylength, zlength, iX3, pairity);
  } else
    bioR1_3dskip(LLL, outvector, xlength, ylength, zlength, iX4, Norm);
  pairity = 1;
  bio_3d_postmult(outvector, xlength, ylength, zlength, iX2, pairity);
  pairity = 0;
  bio_3d_postmult(outvector, xlength, ylength, zlength, iX1, pairity);
  pairity = 1;
  bio_3d_postmult(outvector, xlength, ylength, zlength, iX0, pairity);
}


x86 assembly (clang, -O0):
<bioR9_3d>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %rbx
sub    $0x98,%rsp
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x20(%rbp)
mov    %rsi,-0x28(%rbp)
mov    %rdx,-0x30(%rbp)
mov    %rcx,-0x38(%rbp)
mov    %r8,-0x40(%rbp)
mov    %r9,-0x48(%rbp)
movss  0xe94(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0xe83(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  0xe72(%rip),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  0xe61(%rip),%xmm0
movss  %xmm0,-0x58(%rbp)
cmpl   $0x1,0x28(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x1,0x30(%rbp)
setg   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpl   $0x1,0x38(%rbp)
setg   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x78(%rbp)
cmpl   $0x0,0x40(%rbp)
je     1271 <bioR9_3d+0x141>
movss  -0x58(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x54(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe1d(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x54(%rbp),%xmm0
mulss  -0x50(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xdfa(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x50(%rbp),%xmm0
mulss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xdd7(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xdb9(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
jmp    12ec <bioR9_3d+0x1bc>
movss  -0x54(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  0xd8d(%rip),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x54(%rbp),%xmm0
mulss  -0x50(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd7a(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x50(%rbp),%xmm0
mulss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd57(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd39(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
cmpl   $0x3,-0x78(%rbp)
jne    131e <bioR9_3d+0x1ee>
movss  -0x4c(%rbp),%xmm0
mulss  -0x50(%rbp),%xmm0
mulss  -0x54(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd07(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
cmpl   $0x2,-0x78(%rbp)
jne    1335 <bioR9_3d+0x205>
movss  0xce0(%rip),%xmm0
movss  %xmm0,-0x74(%rbp)
cmpl   $0x1,-0x78(%rbp)
jne    1353 <bioR9_3d+0x223>
movss  -0x4c(%rbp),%xmm0
mulss  -0x50(%rbp),%xmm0
mulss  -0x54(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
cmpl   $0x1,0x28(%rbp)
jle    137b <bioR9_3d+0x24b>
movss  -0x74(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xcb2(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
cmpl   $0x1,0x30(%rbp)
jle    13a3 <bioR9_3d+0x273>
movss  -0x74(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc8a(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
cmpl   $0x1,0x38(%rbp)
jle    13cb <bioR9_3d+0x29b>
movss  -0x74(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc62(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
cmpl   $0x0,-0x78(%rbp)
jne    1423 <bioR9_3d+0x2f3>
movss  0xc33(%rip),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  0xc26(%rip),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  0xc19(%rip),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  0xc0c(%rip),%xmm0
movss  %xmm0,-0x64(%rbp)
movss  0xbff(%rip),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  0xbf2(%rip),%xmm0
movss  %xmm0,-0x6c(%rbp)
cmpl   $0x0,0x40(%rbp)
je     14be <bioR9_3d+0x38e>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    -0x38(%rbp),%rcx
mov    -0x40(%rbp),%r8
mov    -0x48(%rbp),%r9
mov    0x10(%rbp),%r15
mov    0x18(%rbp),%r14
mov    0x20(%rbp),%rbx
mov    0x28(%rbp),%r11d
mov    0x30(%rbp),%r10d
mov    0x38(%rbp),%eax
movss  -0x6c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x74(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mov    %r15,(%rsp)
mov    %r14,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11d,0x18(%rsp)
mov    %r10d,0x20(%rsp)
mov    %eax,0x28(%rsp)
mov    $0x2,%al
call   1030 <bioR1__3d@plt>
movl   $0x0,-0x70(%rbp)
mov    0x20(%rbp),%rdi
mov    0x28(%rbp),%esi
mov    0x30(%rbp),%edx
mov    0x38(%rbp),%ecx
movss  -0x68(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x70(%rbp),%r8d
mov    $0x1,%al
call   1040 <bio_3d_postmult@plt>
jmp    14e9 <bioR9_3d+0x3b9>
mov    0x18(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x28(%rbp),%edx
mov    0x30(%rbp),%ecx
mov    0x38(%rbp),%r8d
movss  -0x6c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x74(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mov    $0x2,%al
call   1050 <bioR1_3dskip@plt>
movl   $0x1,-0x70(%rbp)
mov    0x20(%rbp),%rdi
mov    0x28(%rbp),%esi
mov    0x30(%rbp),%edx
mov    0x38(%rbp),%ecx
movss  -0x64(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x70(%rbp),%r8d
mov    $0x1,%al
call   1040 <bio_3d_postmult@plt>
movl   $0x0,-0x70(%rbp)
mov    0x20(%rbp),%rdi
mov    0x28(%rbp),%esi
mov    0x30(%rbp),%edx
mov    0x38(%rbp),%ecx
movss  -0x60(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x70(%rbp),%r8d
mov    $0x1,%al
call   1040 <bio_3d_postmult@plt>
movl   $0x1,-0x70(%rbp)
mov    0x20(%rbp),%rdi
mov    0x28(%rbp),%esi
mov    0x30(%rbp),%edx
mov    0x38(%rbp),%ecx
movss  -0x5c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x70(%rbp),%r8d
mov    $0x1,%al
call   1040 <bio_3d_postmult@plt>
add    $0x98,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<bioR9_3d>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x20,%rsp
mov    0x78(%rsp),%r14d
mov    0x70(%rsp),%r15d
mov    0x68(%rsp),%r12d
xor    %ebp,%ebp
cmp    $0x2,%r12d
setge  %bpl
xor    %eax,%eax
cmp    $0x2,%r15d
setge  %al
add    %ebp,%eax
xor    %r10d,%r10d
cmp    $0x2,%r14d
setge  %r10b
lea    (%rax,%r10,1),%ebp
xor    %ebx,%ebx
cmp    $0x2,%ebp
sete   %r11b
cmp    $0x1,%ebp
je     118f <bioR9_3d+0x5f>
mov    %r11b,%bl
lea    0xe79(%rip),%rbp
movss  0x0(%rbp,%rbx,4),%xmm1
jmp    1197 <bioR9_3d+0x67>
movss  0xea9(%rip),%xmm1
movsd  0xe69(%rip),%xmm0
cmp    $0x2,%r12d
jl     11b1 <bioR9_3d+0x81>
cvtss2sd %xmm1,%xmm1
mulsd  %xmm0,%xmm1
cvtsd2ss %xmm1,%xmm1
cmp    $0x2,%r15d
jl     11c3 <bioR9_3d+0x93>
cvtss2sd %xmm1,%xmm1
mulsd  %xmm0,%xmm1
cvtsd2ss %xmm1,%xmm1
mov    0x80(%rsp),%r11d
cmp    $0x2,%r14d
jl     11dd <bioR9_3d+0xad>
cvtss2sd %xmm1,%xmm1
mulsd  %xmm0,%xmm1
cvtsd2ss %xmm1,%xmm1
xor    %ebx,%ebx
test   %r11d,%r11d
sete   %bpl
add    %r10d,%eax
je     1232 <bioR9_3d+0x102>
mov    %bpl,%bl
lea    0xe1b(%rip),%rax
movss  (%rax,%rbx,4),%xmm3
lea    0xe17(%rip),%rax
movss  (%rax,%rbx,4),%xmm0
movsd  0xe12(%rip),%xmm2
movsd  %xmm2,0x18(%rsp)
movsd  0xe0c(%rip),%xmm2
movsd  %xmm2,0x8(%rsp)
movsd  0xe06(%rip),%xmm2
movsd  %xmm2,0x10(%rsp)
jmp    125a <bioR9_3d+0x12a>
movss  0xe0a(%rip),%xmm3
movsd  0xdf6(%rip),%xmm2
movsd  %xmm2,0x8(%rsp)
movaps %xmm3,%xmm0
movaps %xmm3,%xmm1
movsd  %xmm2,0x10(%rsp)
movsd  %xmm2,0x18(%rsp)
mov    0x60(%rsp),%rbx
mov    0x58(%rsp),%r10
cvtss2sd %xmm0,%xmm0
cvtss2sd %xmm1,%xmm1
test   %r11d,%r11d
je     12b1 <bioR9_3d+0x181>
mov    $0x2,%al
push   %r14
push   %r15
push   %r12
push   %rbx
push   %r10
push   0x78(%rsp)
movss  %xmm3,0x34(%rsp)
call   1030 <bioR1__3d@plt>
add    $0x30,%rsp
movss  0x4(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %rbx,%rdi
mov    %r12d,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
xor    %r8d,%r8d
mov    $0x1,%al
call   1040 <bio_3d_postmult@plt>
jmp    12c7 <bioR9_3d+0x197>
mov    %r10,%rdi
mov    %rbx,%rsi
mov    %r12d,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
mov    $0x2,%al
call   1050 <bioR1_3dskip@plt>
mov    %rbx,%rdi
mov    %r12d,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x8(%rsp),%xmm0
mov    $0x1,%r8d
mov    $0x1,%al
call   1040 <bio_3d_postmult@plt>
mov    %rbx,%rdi
mov    %r12d,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
xor    %r8d,%r8d
mov    $0x1,%al
call   1040 <bio_3d_postmult@plt>
mov    %rbx,%rdi
mov    %r12d,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x18(%rsp),%xmm0
mov    $0x1,%r8d
mov    $0x1,%al
add    $0x20,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <bio_3d_postmult@plt>

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

LLVM IR (-O2):
define void @bioR9_3d(float* %0, float* %1, float* %2, float* %3, float* %4, float* %5, float* %6, float* %7, float* %8, i32 %9, i32 %10, i32 %11, i32 %12) {
%14 = icmp sgt i32 %9, 1
%15 = zext i1 %14 to i32
%16 = icmp sgt i32 %10, 1
%17 = zext i1 %16 to i32
%18 = add nuw nsw i32 %17, %15
%19 = icmp sgt i32 %11, 1
%20 = zext i1 %19 to i32
%21 = add nuw nsw i32 %18, %20
%22 = icmp eq i32 %12, 0
%23 = select i1 %22, float 1.000000e+00, float 0x40046E21C0000000
%24 = select i1 %22, float 0xBFEC40CEC0000000, float 0xBFDC626AA0000000
%25 = icmp eq i32 %21, 2
%26 = select i1 %25, float 1.000000e+00, float 0xC02AF4CFA0000000
%27 = icmp eq i32 %21, 1
%28 = select i1 %27, float 0xBFB2FE63C0000000, float %26
%29 = fpext float %28 to double
%30 = fmul double %29, 7.630000e-01
%31 = fptrunc double %30 to float
%32 = select i1 %14, float %31, float %28
%33 = fpext float %32 to double
%34 = fmul double %33, 7.630000e-01
%35 = fptrunc double %34 to float
%36 = select i1 %16, float %35, float %32
%37 = fpext float %36 to double
%38 = fmul double %37, 7.630000e-01
%39 = fptrunc double %38 to float
%40 = select i1 %19, float %39, float %36
%41 = icmp eq i32 %21, 0
br i1 %41, label %42, label %43
42: ; preds = %13
br label %43
43: ; preds = %42, %13
%44 = phi double [ 1.000000e+00, %42 ], [ 0x4027CCCD80000000, %13 ]
%45 = phi double [ 1.000000e+00, %42 ], [ 0xC03560CE60000000, %13 ]
%46 = phi float [ 1.000000e+00, %42 ], [ %23, %13 ]
%47 = phi float [ 1.000000e+00, %42 ], [ %24, %13 ]
%48 = phi float [ 1.000000e+00, %42 ], [ %40, %13 ]
%49 = phi double [ 1.000000e+00, %42 ], [ 0x3FE42CC220000000, %13 ]
%50 = fpext float %47 to double
%51 = fpext float %48 to double
br i1 %22, label %56, label %52
52: ; preds = %43
%53 = tail call i32 (float*, float*, float*, float*, float*, float*, float*, float*, float*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @bioR1__3d to i32 (float*, float*, float*, float*, float*, float*, float*, float*, float*, i32, i32, i32, double, double, ...)*)(float* %0, float* %1, float* %2, float* %3, float* %4, float* %5, float* %6, float* %7, float* %8, i32 %9, i32 %10, i32 %11, double %50, double %51)
%54 = fpext float %46 to double
%55 = tail call i32 (float*, i32, i32, i32, double, i32, ...) bitcast (i32 (...)* @bio_3d_postmult to i32 (float*, i32, i32, i32, double, i32, ...)*)(float* %8, i32 %9, i32 %10, i32 %11, double %54, i32 0)
br label %58
56: ; preds = %43
%57 = tail call i32 (float*, float*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @bioR1_3dskip to i32 (float*, float*, i32, i32, i32, double, double, ...)*)(float* %7, float* %8, i32 %9, i32 %10, i32 %11, double %50, double %51)
br label %58
58: ; preds = %56, %52
%59 = tail call i32 (float*, i32, i32, i32, double, i32, ...) bitcast (i32 (...)* @bio_3d_postmult to i32 (float*, i32, i32, i32, double, i32, ...)*)(float* %8, i32 %9, i32 %10, i32 %11, double %45, i32 1)
%60 = tail call i32 (float*, i32, i32, i32, double, i32, ...) bitcast (i32 (...)* @bio_3d_postmult to i32 (float*, i32, i32, i32, double, i32, ...)*)(float* %8, i32 %9, i32 %10, i32 %11, double %44, i32 0)
%61 = tail call i32 (float*, i32, i32, i32, double, i32, ...) bitcast (i32 (...)* @bio_3d_postmult to i32 (float*, i32, i32, i32, double, i32, ...)*)(float* %8, i32 %9, i32 %10, i32 %11, double %49, i32 1)
ret void
}