user: 请从给定的汇编指令推导出C源代码：

```asm
<Jac3D>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x250,%rsp
  mov    %rdi,-0x238(%rbp)
  mov    %rsi,-0x240(%rbp)
  mov    %rdx,-0x248(%rbp)
  mov    %ecx,-0x24c(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x248(%rbp),%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x214(%rbp)
  mov    -0x248(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x210(%rbp)
  mov    -0x248(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x20c(%rbp)
  mov    -0x214(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x210(%rbp),%eax
  add    $0x1,%eax
  imul   %edx,%eax
  mov    -0x20c(%rbp),%edx
  add    $0x1,%edx
  imul   %edx,%eax
  mov    %eax,-0x208(%rbp)
  movl   $0x1,-0x204(%rbp)
  mov    -0x214(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x200(%rbp)
  mov    -0x214(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x210(%rbp),%eax
  add    $0x1,%eax
  imul   %edx,%eax
  mov    %eax,-0x1fc(%rbp)
  movl   $0x0,-0x228(%rbp)
  jmp    L33
L48:
  movl   $0x0,-0x224(%rbp)
  jmp    L61
L36:
  movl   $0x0,-0x220(%rbp)
  jmp    L59
L58:
  mov    -0x224(%rbp),%eax
  imul   -0x200(%rbp),%eax
  mov    %eax,%edx
  mov    -0x228(%rbp),%eax
  add    %eax,%edx
  mov    -0x220(%rbp),%eax
  imul   -0x1fc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x1f8(%rbp)
  movl   $0x0,-0x218(%rbp)
  movl   $0x0,-0x21c(%rbp)
  jmp    L19
L16:
  mov    -0x1f8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x218(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x240(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x1e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x1e0(%rbp,%rax,8)
  mov    -0x204(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x1e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x1c0(%rbp,%rax,8)
  mov    -0x200(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x1e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x180(%rbp,%rax,8)
  mov    -0x204(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x1e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x1a0(%rbp,%rax,8)
  mov    -0x1fc(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x1e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x120(%rbp,%rax,8)
  mov    -0x204(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,-0x1e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x100(%rbp,%rax,8)
  mov    -0x200(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x1e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x140(%rbp,%rax,8)
  mov    -0x204(%rbp),%eax
  cltq
  shl    $0x3,%rax
  neg    %rax
  add    %rax,-0x1e8(%rbp)
  mov    -0x1e8(%rbp),%rax
  movsd  (%rax),%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x160(%rbp,%rax,8)
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x1e0(%rbp,%rax,8),%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x1c0(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x180(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x1a0(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D42(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0xe0(%rbp,%rax,8)
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x1c0(%rbp,%rax,8),%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x180(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x100(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x140(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D42(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0xc0(%rbp,%rax,8)
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x1e0(%rbp,%rax,8),%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x1c0(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x140(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x160(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D42(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0xa0(%rbp,%rax,8)
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x1a0(%rbp,%rax,8),%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x1e0(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x160(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x120(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D42(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x80(%rbp,%rax,8)
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x180(%rbp,%rax,8),%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x1a0(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x120(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x100(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D42(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x60(%rbp,%rax,8)
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x160(%rbp,%rax,8),%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x140(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x100(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x120(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D42(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x40(%rbp,%rax,8)
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0xe0(%rbp,%rax,8),%xmm1
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  -0x40(%rbp,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D12(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x21c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x20(%rbp,%rax,8)
  mov    -0x208(%rbp),%eax
  add    %eax,-0x218(%rbp)
  addl   $0x1,-0x21c(%rbp)
L19:
  cmpl   $0x2,-0x21c(%rbp)
  jle    L16
  lea    -0x20(%rbp),%rcx
  lea    -0xe0(%rbp),%rdx
  lea    -0x1c0(%rbp),%rsi
  lea    -0x1e0(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movq   %xmm0,%rax
  movq   D87(%rip),%xmm0
  movq   %rax,%xmm2
  xorpd  %xmm0,%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xe0(%rbp),%rdx
  lea    -0x180(%rbp),%rsi
  lea    -0x1c0(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movq   %xmm0,%rax
  movq   D87(%rip),%xmm0
  movq   %rax,%xmm3
  xorpd  %xmm0,%xmm3
  movapd %xmm3,%xmm0
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xe0(%rbp),%rdx
  lea    -0x1a0(%rbp),%rsi
  lea    -0x180(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movq   %xmm0,%rax
  movq   D87(%rip),%xmm0
  movq   %rax,%xmm4
  xorpd  %xmm0,%xmm4
  movapd %xmm4,%xmm0
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xe0(%rbp),%rdx
  lea    -0x1e0(%rbp),%rsi
  lea    -0x1a0(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movq   %xmm0,%rax
  movq   D87(%rip),%xmm0
  movq   %rax,%xmm5
  xorpd  %xmm0,%xmm5
  movapd %xmm5,%xmm0
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xc0(%rbp),%rdx
  lea    -0x180(%rbp),%rsi
  lea    -0x1c0(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xc0(%rbp),%rdx
  lea    -0x100(%rbp),%rsi
  lea    -0x180(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xc0(%rbp),%rdx
  lea    -0x140(%rbp),%rsi
  lea    -0x100(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xc0(%rbp),%rdx
  lea    -0x1c0(%rbp),%rsi
  lea    -0x140(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xa0(%rbp),%rdx
  lea    -0x1c0(%rbp),%rsi
  lea    -0x1e0(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xa0(%rbp),%rdx
  lea    -0x140(%rbp),%rsi
  lea    -0x1c0(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xa0(%rbp),%rdx
  lea    -0x160(%rbp),%rsi
  lea    -0x140(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0xa0(%rbp),%rdx
  lea    -0x1e0(%rbp),%rsi
  lea    -0x160(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x80(%rbp),%rdx
  lea    -0x1e0(%rbp),%rsi
  lea    -0x1a0(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x80(%rbp),%rdx
  lea    -0x160(%rbp),%rsi
  lea    -0x1e0(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x80(%rbp),%rdx
  lea    -0x120(%rbp),%rsi
  lea    -0x160(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x80(%rbp),%rdx
  lea    -0x1a0(%rbp),%rsi
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x60(%rbp),%rdx
  lea    -0x1a0(%rbp),%rsi
  lea    -0x180(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x60(%rbp),%rdx
  lea    -0x120(%rbp),%rsi
  lea    -0x1a0(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x60(%rbp),%rdx
  lea    -0x100(%rbp),%rsi
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x60(%rbp),%rdx
  lea    -0x180(%rbp),%rsi
  lea    -0x100(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x40(%rbp),%rdx
  lea    -0x140(%rbp),%rsi
  lea    -0x160(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x40(%rbp),%rdx
  lea    -0x100(%rbp),%rsi
  lea    -0x140(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x40(%rbp),%rdx
  lea    -0x120(%rbp),%rsi
  lea    -0x100(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  lea    -0x20(%rbp),%rcx
  lea    -0x40(%rbp),%rdx
  lea    -0x160(%rbp),%rsi
  lea    -0x120(%rbp),%rax
  mov    %rax,%rdi
  call   <det3D@plt>
  movsd  -0x1f0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1f0(%rbp)
  mov    -0x220(%rbp),%eax
  imul   -0x210(%rbp),%eax
  mov    %eax,%edx
  mov    -0x224(%rbp),%eax
  add    %edx,%eax
  imul   -0x214(%rbp),%eax
  mov    %eax,%edx
  mov    -0x228(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x1f4(%rbp)
  mov    -0x1f4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x238(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x1f0(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x220(%rbp)
L59:
  mov    -0x220(%rbp),%eax
  cmp    -0x20c(%rbp),%eax
  jl     L58
  addl   $0x1,-0x224(%rbp)
L61:
  mov    -0x224(%rbp),%eax
  cmp    -0x210(%rbp),%eax
  jl     L36
  addl   $0x1,-0x228(%rbp)
L33:
  mov    -0x228(%rbp),%eax
  cmp    -0x214(%rbp),%eax
  jl     L48
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L65
  call   <__stack_chk_fail@plt>
L65:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D42
datatype: f64
name: extract_symbolic_data
arguments: tag: D12
datatype: f64
name: extract_symbolic_data
arguments: tag: D87
datatype: byte[8]

tool: D42: 0.25

tool: D12: 0.5

tool: {"D87": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

assistant: ```c
void Jac3D(double *volu, const double *yc, const double *m, int n) {
  const int m1 = m[0], m2 = m[1], m3 = m[2];
  double yA[3], yB[3], yC[3], yD[3], yE[3], yF[3], yG[3], yH[3], yABDC[3], yBDHF[3], yABFE[3], yCAEG[3], yDCGH[3], yEFHG[3], yM[3];
  double vol;
  int id, i1, i2, i3, r, comp, idn;
  const int nn = (m1 + 1) * (m2 + 1) * (m3 + 1);
  const int inc_x = 1;
  const int inc_y = m1 + 1;
  const int inc_z = (m1 + 1) * (m2 + 1);
  const double *rptr;
#pragma omp parallel for default(shared) private(rptr, id, i1, i2, i3, r, comp, idn, vol, yA, yB, yC, yD, yE, yF, yG, yH, yABDC, yBDHF, yABFE, yCAEG, yDCGH, yEFHG, yM)
  for (i1 = 0; i1 < m1; i1++) {
    for (i2 = 0; i2 < m2; i2++) {
      for (i3 = 0; i3 < m3; i3++) {
        idn = i1 + i2 * inc_y + i3 * inc_z;
        comp = 0;
        for (r = 0; r < 3; r++) {
          rptr = yc + idn + comp;
          yA[r] = *rptr;
          rptr += inc_x;
          yB[r] = *rptr;
          rptr += inc_y;
          yD[r] = *rptr;
          rptr -= inc_x;
          yC[r] = *rptr;
          rptr += inc_z;
          yG[r] = *rptr;
          rptr += inc_x;
          yH[r] = *rptr;
          rptr -= inc_y;
          yF[r] = *rptr;
          rptr -= inc_x;
          yE[r] = *rptr;
          yABDC[r] = 0.25 * (yA[r] + yB[r] + yD[r] + yC[r]);
          yBDHF[r] = 0.25 * (yB[r] + yD[r] + yH[r] + yF[r]);
          yABFE[r] = 0.25 * (yA[r] + yB[r] + yF[r] + yE[r]);
          yCAEG[r] = 0.25 * (yC[r] + yA[r] + yE[r] + yG[r]);
          yDCGH[r] = 0.25 * (yD[r] + yC[r] + yG[r] + yH[r]);
          yEFHG[r] = 0.25 * (yE[r] + yF[r] + yH[r] + yG[r]);
          yM[r] = 0.5 * (yABDC[r] + yEFHG[r]);
          comp += nn;
        }
        vol = -det3D(yA, yB, yABDC, yM);
        vol += -det3D(yB, yD, yABDC, yM);
        vol += -det3D(yD, yC, yABDC, yM);
        vol += -det3D(yC, yA, yABDC, yM);
        vol += det3D(yB, yD, yBDHF, yM);
        vol += det3D(yD, yH, yBDHF, yM);
        vol += det3D(yH, yF, yBDHF, yM);
        vol += det3D(yF, yB, yBDHF, yM);
        vol += det3D(yA, yB, yABFE, yM);
        vol += det3D(yB, yF, yABFE, yM);
        vol += det3D(yF, yE, yABFE, yM);
        vol += det3D(yE, yA, yABFE, yM);
        vol += det3D(yC, yA, yCAEG, yM);
        vol += det3D(yA, yE, yCAEG, yM);
        vol += det3D(yE, yG, yCAEG, yM);
        vol += det3D(yG, yC, yCAEG, yM);
        vol += det3D(yD, yC, yDCGH, yM);
        vol += det3D(yC, yG, yDCGH, yM);
        vol += det3D(yG, yH, yDCGH, yM);
        vol += det3D(yH, yD, yDCGH, yM);
        vol += det3D(yE, yF, yEFHG, yM);
        vol += det3D(yF, yH, yEFHG, yM);
        vol += det3D(yH, yG, yEFHG, yM);
        vol += det3D(yG, yE, yEFHG, yM);
        id = i1 + m1 * (i2 + i3 * m2);
        volu[id] = vol;
      }
    }
  }
  return;
}
```