user: Translate the below assembly code into C programming language:

```asm
<adjbioR7_3d>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %rdi,%rbx
  mov    %rsi,0x20(%rsp)
  mov    %rdx,0x28(%rsp)
  mov    %rcx,0x30(%rsp)
  mov    %r8,%r14
  mov    %r9,0x38(%rsp)
  mov    0x98(%rsp),%ebp
  mov    0xa0(%rsp),%r12d
  mov    0xa8(%rsp),%r13d
  mov    0xb0(%rsp),%r15d
  cmp    $0x1,%ebp
  setg   %al
  movzbl %al,%eax
  cmp    $0x1,%r12d
  setg   %dl
  movzbl %dl,%edx
  add    %edx,%eax
  cmp    $0x1,%r13d
  setg   %dl
  movzbl %dl,%edx
  add    %edx,%eax
  test   %r15d,%r15d
  jne    L40
  movss  D139(%rip),%xmm1
  movss  D107(%rip),%xmm5
  movss  %xmm5,0x10(%rsp)
L66:
  movss  D107(%rip),%xmm3
  movss  %xmm3,0xc(%rsp)
  cmp    $0x2,%eax
  je     L11
  movss  D85(%rip),%xmm4
  movss  %xmm4,0xc(%rsp)
  cmp    $0x1,%eax
  jne    L11
  movss  D97(%rip),%xmm3
  movss  %xmm3,0xc(%rsp)
L11:
  cmp    $0x1,%ebp
  jle    L44
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  mulsd  D132(%rip),%xmm0
  pxor   %xmm5,%xmm5
  cvtsd2ss %xmm0,%xmm5
  movss  %xmm5,0xc(%rsp)
L44:
  cmp    $0x1,%r12d
  jle    L86
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  mulsd  D132(%rip),%xmm0
  pxor   %xmm6,%xmm6
  cvtsd2ss %xmm0,%xmm6
  movss  %xmm6,0xc(%rsp)
L86:
  cmp    $0x1,%r13d
  jle    L83
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsp),%xmm0
  mulsd  D132(%rip),%xmm0
  pxor   %xmm7,%xmm7
  cvtsd2ss %xmm0,%xmm7
  movss  %xmm7,0xc(%rsp)
L83:
  test   %eax,%eax
  je     L12
  movss  D107(%rip),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,0x1c(%rsp)
  movss  D145(%rip),%xmm7
  movss  %xmm7,0x18(%rsp)
  movss  D115(%rip),%xmm4
  movss  %xmm4,0x14(%rsp)
L31:
  movsd  D55(%rip),%xmm0
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <boundarymultiply@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0x14(%rsp),%xmm0
  mov    $0x1,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <bio_3d_premult@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0x18(%rsp),%xmm0
  mov    $0x0,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <bio_3d_premult@plt>
  pxor   %xmm0,%xmm0
  cvtss2sd 0x10(%rsp),%xmm0
  mov    $0x1,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <bio_3d_premult@plt>
  movsd  D102(%rip),%xmm0
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <boundarymultiply@plt>
  test   %r15d,%r15d
  je     L49
  pxor   %xmm0,%xmm0
  cvtss2sd 0x1c(%rsp),%xmm0
  push   %r13
  push   %r12
  push   %rbp
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  push   0xa8(%rsp)
  pxor   %xmm1,%xmm1
  cvtss2sd 0x3c(%rsp),%xmm1
  mov    0x68(%rsp),%r9
  mov    %r14,%r8
  mov    0x60(%rsp),%rcx
  mov    0x58(%rsp),%rdx
  mov    0x50(%rsp),%rsi
  mov    %rbx,%rdi
  mov    $0x2,%eax
  call   <bioD1__3d@plt>
  add    $0x30,%rsp
L10:
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L40:
  movss  D43(%rip),%xmm1
  movss  D3(%rip),%xmm6
  movss  %xmm6,0x10(%rsp)
  jmp    L66
L12:
  movss  D107(%rip),%xmm2
  movss  %xmm2,0xc(%rsp)
  movss  %xmm2,0x1c(%rsp)
  movss  %xmm2,0x10(%rsp)
  movss  %xmm2,0x18(%rsp)
  movss  %xmm2,0x14(%rsp)
  jmp    L31
L49:
  pxor   %xmm0,%xmm0
  cvtss2sd 0x1c(%rsp),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd 0xc(%rsp),%xmm1
  mov    %r13d,%r8d
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    0x90(%rsp),%rsi
  mov    %rbx,%rdi
  mov    $0x2,%eax
  call   <bioD1_3dskip@plt>
  jmp    L10
```

tool_calls: name: parse_data
arguments: label: D139
data_type: byte[4]
name: parse_data
arguments: label: D107
data_type: f32
name: parse_data
arguments: label: D85
data_type: byte[4]
name: parse_data
arguments: label: D97
data_type: byte[4]
name: parse_data
arguments: label: D132
data_type: f64
name: parse_data
arguments: label: D145
data_type: byte[4]
name: parse_data
arguments: label: D115
data_type: byte[4]
name: parse_data
arguments: label: D55
data_type: f64
name: parse_data
arguments: label: D102
data_type: f64
name: parse_data
arguments: label: D43
data_type: byte[4]
name: parse_data
arguments: label: D3
data_type: byte[4]

tool: {"D139": [0x33,0x33,0x33,0x40]}

tool: D107: 1

tool: {"D85": [0x90,0xc2,0x75,0x3c]}

tool: {"D97": [0x55,0x55,0x85,0x42]}

tool: D132: 0.98

tool: {"D145": [0x25,0x49,0x92,0xbd]}

tool: {"D115": [0xcd,0xcc,0x4c,0xbe]}

tool: D55: 2

tool: D102: 0.5

tool: {"D43": [0x86,0x61,0x98,0xc0]}

tool: {"D3": [0x9a,0x99,0x99,0xbd]}

assistant: ```c
void adjbioR7_3d(invector, HHH, HHL, HLH, HLL, LHH, LHL, LLH, LLL, xlength, ylength, zlength, ifnotAllskip) float *invector;
float *HLL, *HLH, *HHL, *HHH;
float *LLL, *LLH, *LHL, *LHH;
int xlength, ylength, zlength;
int ifnotAllskip;
{
  float x0 = -0.2;
  float x1 = 0.357142857136;
  float x2 = -0.21;
  float X0, X1, X2, X3;
  int pairity;
  float Norm;
  int dim;
  dim = (xlength > 1) + (ylength > 1) + (zlength > 1);
  if (0 || ifnotAllskip) {
    X0 = x0;
    X1 = x0 * x1;
    X2 = x1 * x2;
    X3 = 1.0 / x2;
  } else {
    X0 = x0;
    X1 = x0 * x1;
    X2 = 1;
    X3 = 1.0 / x1;
  }
  X3 = 1 / X3;
  if (dim == 3)
    Norm = (x0 * x1 * x2);
  if (dim == 2)
    Norm = 1.0;
  if (dim == 1)
    Norm = 1.0 / (x0 * x1 * x2);
  if (xlength > 1)
    Norm *= (0.98);
  if (ylength > 1)
    Norm *= (0.98);
  if (zlength > 1)
    Norm *= (0.98);
  if (dim == 0) {
    Norm = 1.0;
    X0 = 1.0;
    X1 = 1.0;
    X2 = 1.0;
    X3 = 1.0;
  }
  boundarymultiply(invector, xlength, ylength, zlength, 2.0);
  pairity = 1;
  bio_3d_premult(invector, xlength, ylength, zlength, X0, pairity);
  pairity = 0;
  bio_3d_premult(invector, xlength, ylength, zlength, X1, pairity);
  pairity = 1;
  bio_3d_premult(invector, xlength, ylength, zlength, X2, pairity);
  boundarymultiply(invector, xlength, ylength, zlength, 0.5);
  if (ifnotAllskip)
    bioD1__3d(invector, HHH, HHL, HLH, HLL, LHH, LHL, LLH, LLL, xlength, ylength, zlength, X3, Norm);
  else
    bioD1_3dskip(invector, LLL, xlength, ylength, zlength, X3, Norm);
}
```