user: Demonstrate the C code that generates the assembly output below:

```asm
<find_dadjFast>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x84(%rbp)
  mov    %esi,-0x88(%rbp)
  mov    %edx,-0x8c(%rbp)
  mov    %rcx,-0x98(%rbp)
  mov    %r8,-0xa0(%rbp)
  movsd  %xmm0,-0xa8(%rbp)
  mov    -0x84(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x84(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  subsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  -0x78(%rbp),%xmm0
  movsd  D61(%rip),%xmm1
  comisd %xmm1,%xmm0
  jbe    L38
  movsd  D61(%rip),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  jmp    L149
L38:
  movsd  D27(%rip),%xmm0
  comisd -0x78(%rbp),%xmm0
  jbe    L149
  movsd  D27(%rip),%xmm0
  movsd  %xmm0,-0x78(%rbp)
L149:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  cmpl   $0x1,-0x84(%rbp)
  jne    L174
  mov    -0x8c(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x88(%rbp)
  jae    L174
  cmpl   $0x0,-0x88(%rbp)
  je     L174
  mov    -0x84(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mov    -0x84(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x84(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x84(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x84(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  add    $0x1,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x84(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  add    $0x1,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x84(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x84(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x84(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x84(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x84(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  add    $0x1,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x84(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  add    $0x1,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x84(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x84(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x84(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x84(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x84(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  add    $0x1,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x84(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  add    $0x1,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  cvtss2sd %xmm1,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movsd  D210(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
L174:
  movsd  D181(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x40(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L17
  movsd  -0xa8(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  jmp    L107
L17:
  movsd  -0x40(%rbp),%xmm0
  movq   D87(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0xa8(%rbp),%xmm0
  comisd -0x68(%rbp),%xmm0
  jbe    L107
  movsd  -0x40(%rbp),%xmm0
  movq   D87(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  -0xa8(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
L107:
  cmpl   $0x0,-0x88(%rbp)
  je     L137
  mov    -0x84(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  subsd  -0x50(%rbp),%xmm0
  jmp    L29
L137:
  pxor   %xmm0,%xmm0
L29:
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x8c(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x88(%rbp)
  jae    L166
  mov    -0x84(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x88(%rbp),%eax
  add    $0x1,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  subsd  -0x50(%rbp),%xmm0
  jmp    L30
L166:
  pxor   %xmm0,%xmm0
L30:
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x40(%rbp),%xmm1
  movsd  -0x60(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L135
  movsd  -0xa8(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  jmp    L118
L135:
  movsd  -0x40(%rbp),%xmm0
  movq   D87(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0xa8(%rbp),%xmm0
  comisd -0x60(%rbp),%xmm0
  jbe    L118
  movsd  -0x40(%rbp),%xmm0
  movq   D87(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  -0xa8(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
L118:
  movsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x40(%rbp),%xmm1
  movsd  -0x58(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L37
  movsd  -0xa8(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  jmp    L5
L37:
  movsd  -0x40(%rbp),%xmm0
  movq   D87(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0xa8(%rbp),%xmm0
  comisd -0x58(%rbp),%xmm0
  jbe    L5
  movsd  -0x40(%rbp),%xmm0
  movq   D87(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  -0xa8(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
L5:
  movsd  -0xa8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x48(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x48(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  %xmm0,%xmm2
  movsd  -0x28(%rbp),%xmm3
  movsd  D116(%rip),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm2
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x70(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  %xmm0,%xmm2
  movsd  -0x28(%rbp),%xmm3
  movsd  D19(%rip),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm2
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x28(%rbp),%xmm1
  movsd  D116(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  %xmm0,%xmm2
  movsd  -0x28(%rbp),%xmm3
  movsd  D116(%rip),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm2
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x28(%rbp),%xmm1
  movsd  D116(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x30(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  %xmm0,%xmm2
  movsd  -0x28(%rbp),%xmm3
  movsd  D116(%rip),%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm2
  divsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x78(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D60(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x68(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x18(%rbp),%xmm2
  movsd  D60(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x60(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x10(%rbp),%xmm2
  movsd  D60(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x8(%rbp),%xmm2
  movsd  D60(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D61
data_type: f32[2]
name: disassemble_data
arguments: tag: D27
data_type: f32[2]
name: disassemble_data
arguments: tag: D210
data_type: f64
name: disassemble_data
arguments: tag: D181
data_type: f64
name: disassemble_data
arguments: tag: D87
data_type: f32[2]
name: disassemble_data
arguments: tag: D116
data_type: f64
name: disassemble_data
arguments: tag: D19
data_type: f64
name: disassemble_data
arguments: tag: D60
data_type: f32[2]

tool: {"D61": [0.0,1.875]}

tool: {"D27": [0.0,-1.875]}

tool: D210: 9

tool: D181: 0.33

tool: {"D87": [0.0,-0.0]}

tool: D116: 4

tool: D19: 18

tool: {"D60": [0.0,1.625]}

assistant: ```c
double find_dadjFast(const unsigned i, const unsigned j, const unsigned nRows, const float *obsloc[3], const float *rszloc[3], const double readNoiseAmp) {
  const double mval = (double)*(rszloc[i] + j);
  const double dval0 = (double)*(obsloc[i] + j) - mval;
  double dval0u = dval0;
  if (dval0u > 1)
    dval0u = 1;
  else if (dval0u < -1)
    dval0u = -1;
  double dval9 = 0.0;
  if (i == 1 && j < nRows - 1 && j > 0) {
    dval9 = (double)*(obsloc[i] + j - 1) - (double)*(rszloc[i] + j - 1) + (double)*(obsloc[i] + j) - (double)*(rszloc[i] + j) + (double)*(obsloc[i] + j + 1) - (double)*(rszloc[i] + j + 1) + (double)*(obsloc[i - 1] + j - 1) - (double)*(rszloc[i - 1] + j - 1) + (double)*(obsloc[i - 1] + j) - (double)*(rszloc[i - 1] + j) + (double)*(obsloc[i - 1] + j + 1) - (double)*(rszloc[i - 1] + j + 1) + (double)*(obsloc[i + 1] + j - 1) - (double)*(rszloc[i + 1] + j - 1) + (double)*(obsloc[i + 1] + j) - (double)*(rszloc[i + 1] + j) + (double)*(obsloc[i + 1] + j + 1) - (double)*(rszloc[i + 1] + j + 1);
    dval9 = dval9 / 9.0;
  }
  const double readNoiseAmpFraction = 0.33;
  double dval9u = dval9;
  if (dval9u > readNoiseAmp * readNoiseAmpFraction)
    dval9u = readNoiseAmp * readNoiseAmpFraction;
  else if (dval9u < readNoiseAmp * -readNoiseAmpFraction)
    dval9u = readNoiseAmp * -readNoiseAmpFraction;
  const double dmod1 = j > 0 ? (double)*(rszloc[i] + j - 1) - mval : 0;
  const double dmod2 = j < nRows - 1 ? (double)*(rszloc[i] + j + 1) - mval : 0;
  double dmod1u = dmod1;
  if (dmod1u > readNoiseAmp * readNoiseAmpFraction)
    dmod1u = readNoiseAmp * readNoiseAmpFraction;
  else if (dmod1u < readNoiseAmp * -readNoiseAmpFraction)
    dmod1u = readNoiseAmp * -readNoiseAmpFraction;
  double dmod2u = dmod2;
  if (dmod2u > readNoiseAmp * readNoiseAmpFraction)
    dmod2u = readNoiseAmp * readNoiseAmpFraction;
  else if (dmod2u < readNoiseAmp * -readNoiseAmpFraction)
    dmod2u = readNoiseAmp * -readNoiseAmpFraction;
  const double readNoiseAmp2 = readNoiseAmp * readNoiseAmp;
  const double w0 = dval0 * dval0 / (dval0 * dval0 + 4.0 * readNoiseAmp2);
  const double w9 = dval9 * dval9 / (dval9 * dval9 + 18.0 * readNoiseAmp2);
  const double w1 = 4 * readNoiseAmp2 / (dmod1 * dmod1 + 4.0 * readNoiseAmp2);
  const double w2 = 4 * readNoiseAmp2 / (dmod2 * dmod2 + 4.0 * readNoiseAmp2);
  return dval0u * w0 * 0.25f + dval9u * w9 * 0.25f + dmod1u * w1 * 0.25f + dmod2u * w2 * 0.25f;
}
```