void adjbioD3_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 = -0.5;
  float iX1;
  float iX0;
  int pairity;
  float Norm;
  int dim;
  dim = (xlength > 1) + (ylength > 1) + (zlength > 1);
  if (ifnotAllskip) {
    iX1 = ix0;
    iX0 = 1.0 / ix0;
  } else {
    iX1 = 1.0;
    iX0 = 1.0;
  }
  Norm = 1.0;
  if (xlength > 1)
    Norm /= (1.0);
  if (ylength > 1)
    Norm /= (1.0);
  if (zlength > 1)
    Norm /= (1.0);
  if (dim == 0) {
    Norm = 1.0;
    iX0 = 1.0;
    iX1 = 1.0;
  }
  if (ifnotAllskip) {
    bioR1__3d(HHH, HHL, HLH, HLL, LHH, LHL, LLH, LLL, outvector, xlength,
              ylength, zlength, iX1, Norm);
    pairity = 0;
    boundarymultiply(outvector, xlength, ylength, zlength, 2.0);
    bio_3d_postmult(outvector, xlength, ylength, zlength, iX0, pairity);
    boundarymultiply(outvector, xlength, ylength, zlength, 0.5);
  } else {
    bioR1_3dskip(LLL, outvector, xlength, ylength, zlength, iX1, Norm);
  }
}


x86 assembly (clang, -O0):
<adjbioD3_3d>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %rbx
sub    $0x78,%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  0xe7b(%rip),%xmm0
movss  %xmm0,-0x4c(%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,-0x60(%rbp)
cmpl   $0x0,0x40(%rbp)
je     11ee <adjbioD3_3d+0xae>
movss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe2c(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x54(%rbp)
jmp    1208 <adjbioD3_3d+0xc8>
movss  0xe0e(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  0xe01(%rip),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  0xdf4(%rip),%xmm0
movss  %xmm0,-0x5c(%rbp)
cmpl   $0x1,0x28(%rbp)
jle    123d <adjbioD3_3d+0xfd>
movss  -0x5c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xdd8(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
cmpl   $0x1,0x30(%rbp)
jle    1265 <adjbioD3_3d+0x125>
movss  -0x5c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xdb0(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
cmpl   $0x1,0x38(%rbp)
jle    128d <adjbioD3_3d+0x14d>
movss  -0x5c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd88(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
cmpl   $0x0,-0x60(%rbp)
jne    12be <adjbioD3_3d+0x17e>
movss  0xd65(%rip),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  0xd58(%rip),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  0xd4b(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
cmpl   $0x0,0x40(%rbp)
je     1391 <adjbioD3_3d+0x251>
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  -0x50(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x5c(%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,-0x58(%rbp)
mov    0x20(%rbp),%rdi
mov    0x28(%rbp),%esi
mov    0x30(%rbp),%edx
mov    0x38(%rbp),%ecx
movsd  0xcd0(%rip),%xmm0
mov    $0x1,%al
call   1040 <boundarymultiply@plt>
mov    0x20(%rbp),%rdi
mov    0x28(%rbp),%esi
mov    0x30(%rbp),%edx
mov    0x38(%rbp),%ecx
movss  -0x54(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x58(%rbp),%r8d
mov    $0x1,%al
call   1050 <bio_3d_postmult@plt>
mov    0x20(%rbp),%rdi
mov    0x28(%rbp),%esi
mov    0x30(%rbp),%edx
mov    0x38(%rbp),%ecx
movsd  0xc8b(%rip),%xmm0
mov    $0x1,%al
call   1040 <boundarymultiply@plt>
jmp    13bc <adjbioD3_3d+0x27c>
mov    0x18(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x28(%rbp),%edx
mov    0x30(%rbp),%ecx
mov    0x38(%rbp),%r8d
movss  -0x50(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x5c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mov    $0x2,%al
call   1060 <bioR1_3dskip@plt>
add    $0x78,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<adjbioD3_3d>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    0x68(%rsp),%r14d
mov    0x60(%rsp),%r15d
mov    0x58(%rsp),%r12d
xor    %ebp,%ebp
cmp    $0x2,%r12d
setge  %bpl
xor    %eax,%eax
cmp    $0x2,%r15d
setge  %al
add    %ebp,%eax
xor    %ebx,%ebx
cmp    $0x2,%r14d
setge  %bl
neg    %ebx
xor    %r11d,%r11d
cmp    %ebx,%eax
sete   %r10b
cmpl   $0x0,0x70(%rsp)
je     119d <adjbioD3_3d+0x5d>
mov    %r10b,%r11b
lea    0xe6c(%rip),%rbp
movsd  0x0(%rbp,%r11,8),%xmm0
jmp    11a5 <adjbioD3_3d+0x65>
movsd  0xe7b(%rip),%xmm0
mov    0x50(%rsp),%rbp
mov    0x48(%rsp),%r10
je     1245 <adjbioD3_3d+0x105>
xor    %r13d,%r13d
cmp    %ebx,%eax
sete   %r13b
movsd  0xe5a(%rip),%xmm1
mov    $0x2,%al
push   %r14
push   %r15
push   %r12
push   %rbp
push   %r10
push   0x68(%rsp)
call   1030 <bioR1__3d@plt>
add    $0x30,%rsp
movsd  0xe42(%rip),%xmm0
mov    %rbp,%rdi
mov    %r12d,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
mov    $0x1,%al
call   1040 <boundarymultiply@plt>
lea    0xe10(%rip),%rax
movsd  (%rax,%r13,8),%xmm0
mov    %rbp,%rdi
mov    %r12d,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
xor    %r8d,%r8d
mov    $0x1,%al
call   1050 <bio_3d_postmult@plt>
movsd  0xe0c(%rip),%xmm0
mov    %rbp,%rdi
mov    %r12d,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
mov    $0x1,%al
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <boundarymultiply@plt>
movsd  0xdd3(%rip),%xmm1
mov    %r10,%rdi
mov    %rbp,%rsi
mov    %r12d,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
mov    $0x2,%al
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1060 <bioR1_3dskip@plt>

LLVM IR (-O0):
define void @adjbioD3_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 i32
%31 = alloca float
%32 = 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 -5.000000e-01, float* %27
%33 = load i32, i32* %23
%34 = icmp sgt i32 %33, 1
%35 = zext i1 %34 to i32
%36 = load i32, i32* %24
%37 = icmp sgt i32 %36, 1
%38 = zext i1 %37 to i32
%39 = add nsw i32 %35, %38
%40 = load i32, i32* %25
%41 = icmp sgt i32 %40, 1
%42 = zext i1 %41 to i32
%43 = add nsw i32 %39, %42
store i32 %43, i32* %32
%44 = load i32, i32* %26
%45 = icmp ne i32 %44, 0
br i1 %45, label %46, label %52
46: ; preds = %13
%47 = load float, float* %27
store float %47, float* %28
%48 = load float, float* %27
%49 = fpext float %48 to double
%50 = fdiv double 1.000000e+00, %49
%51 = fptrunc double %50 to float
store float %51, float* %29
br label %53
52: ; preds = %13
store float 1.000000e+00, float* %28
store float 1.000000e+00, float* %29
br label %53
53: ; preds = %52, %46
store float 1.000000e+00, float* %31
%54 = load i32, i32* %23
%55 = icmp sgt i32 %54, 1
br i1 %55, label %56, label %61
56: ; preds = %53
%57 = load float, float* %31
%58 = fpext float %57 to double
%59 = fdiv double %58, 1.000000e+00
%60 = fptrunc double %59 to float
store float %60, float* %31
br label %61
61: ; preds = %56, %53
%62 = load i32, i32* %24
%63 = icmp sgt i32 %62, 1
br i1 %63, label %64, label %69
64: ; preds = %61
%65 = load float, float* %31
%66 = fpext float %65 to double
%67 = fdiv double %66, 1.000000e+00
%68 = fptrunc double %67 to float
store float %68, float* %31
br label %69
69: ; preds = %64, %61
%70 = load i32, i32* %25
%71 = icmp sgt i32 %70, 1
br i1 %71, label %72, label %77
72: ; preds = %69
%73 = load float, float* %31
%74 = fpext float %73 to double
%75 = fdiv double %74, 1.000000e+00
%76 = fptrunc double %75 to float
store float %76, float* %31
br label %77
77: ; preds = %72, %69
%78 = load i32, i32* %32
%79 = icmp eq i32 %78, 0
br i1 %79, label %80, label %81
80: ; preds = %77
store float 1.000000e+00, float* %31
store float 1.000000e+00, float* %29
store float 1.000000e+00, float* %28
br label %81
81: ; preds = %80, %77
%82 = load i32, i32* %26
%83 = icmp ne i32 %82, 0
br i1 %83, label %84, label %120
84: ; preds = %81
%85 = load float*, float** %14
%86 = load float*, float** %15
%87 = load float*, float** %16
%88 = load float*, float** %17
%89 = load float*, float** %18
%90 = load float*, float** %19
%91 = load float*, float** %20
%92 = load float*, float** %21
%93 = load float*, float** %22
%94 = load i32, i32* %23
%95 = load i32, i32* %24
%96 = load i32, i32* %25
%97 = load float, float* %28
%98 = fpext float %97 to double
%99 = load float, float* %31
%100 = fpext float %99 to double
%101 = 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* %85, float* %86, float* %87, float* %88, float* %89, float* %90, float* %91, float* %92, float* %93, i32 %94, i32 %95, i32 %96, double %98, double %100)
store i32 0, i32* %30
%102 = load float*, float** %22
%103 = load i32, i32* %23
%104 = load i32, i32* %24
%105 = load i32, i32* %25
%106 = call i32 (float*, i32, i32, i32, double, ...) bitcast (i32 (...)* @boundarymultiply to i32 (float*, i32, i32, i32, double, ...)*)(float* %102, i32 %103, i32 %104, i32 %105, double 2.000000e+00)
%107 = load float*, float** %22
%108 = load i32, i32* %23
%109 = load i32, i32* %24
%110 = load i32, i32* %25
%111 = load float, float* %29
%112 = fpext float %111 to double
%113 = load i32, i32* %30
%114 = call i32 (float*, i32, i32, i32, double, i32, ...) bitcast (i32 (...)* @bio_3d_postmult to i32 (float*, i32, i32, i32, double, i32, ...)*)(float* %107, i32 %108, i32 %109, i32 %110, double %112, i32 %113)
%115 = load float*, float** %22
%116 = load i32, i32* %23
%117 = load i32, i32* %24
%118 = load i32, i32* %25
%119 = call i32 (float*, i32, i32, i32, double, ...) bitcast (i32 (...)* @boundarymultiply to i32 (float*, i32, i32, i32, double, ...)*)(float* %115, i32 %116, i32 %117, i32 %118, double 5.000000e-01)
br label %131
120: ; preds = %81
%121 = load float*, float** %21
%122 = load float*, float** %22
%123 = load i32, i32* %23
%124 = load i32, i32* %24
%125 = load i32, i32* %25
%126 = load float, float* %28
%127 = fpext float %126 to double
%128 = load float, float* %31
%129 = fpext float %128 to double
%130 = call i32 (float*, float*, i32, i32, i32, double, double, ...) bitcast (i32 (...)* @bioR1_3dskip to i32 (float*, float*, i32, i32, i32, double, double, ...)*)(float* %121, float* %122, i32 %123, i32 %124, i32 %125, double %127, double %129)
br label %131
131: ; preds = %120, %84
ret void
}

LLVM IR (-O2):
define void @adjbioD3_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 = sext i1 %19 to i32
%21 = icmp eq i32 %12, 0
%22 = icmp eq i32 %18, %20
%23 = or i1 %21, %22
%24 = select i1 %23, double 1.000000e+00, double -5.000000e-01
br i1 %21, label %31, label %25
25: ; preds = %13
%26 = 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 %24, double 1.000000e+00)
%27 = tail call i32 (float*, i32, i32, i32, double, ...) bitcast (i32 (...)* @boundarymultiply to i32 (float*, i32, i32, i32, double, ...)*)(float* %8, i32 %9, i32 %10, i32 %11, double 2.000000e+00)
%28 = select i1 %22, double 1.000000e+00, double -2.000000e+00
%29 = 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 %28, i32 0)
%30 = tail call i32 (float*, i32, i32, i32, double, ...) bitcast (i32 (...)* @boundarymultiply to i32 (float*, i32, i32, i32, double, ...)*)(float* %8, i32 %9, i32 %10, i32 %11, double 5.000000e-01)
br label %33
31: ; preds = %13
%32 = 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 %24, double 1.000000e+00)
br label %33
33: ; preds = %31, %25
ret void
}