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

```asm
<D7Dist_pass>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x178,%rsp
  mov    %rdi,-0x1178(%rbp)
  mov    %rsi,-0x1180(%rbp)
  movsd  %xmm0,-0x1188(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x28(%rbp)
  xor    %eax,%eax
  movsd  -0x1188(%rbp),%xmm1
  movsd  D17(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1158(%rbp)
  mov    -0x1158(%rbp),%rdi
  lea    -0xc20(%rbp),%r9
  lea    -0xe20(%rbp),%r10
  lea    -0x1020(%rbp),%rcx
  lea    -0x1120(%rbp),%rdx
  lea    -0x10c0(%rbp),%rsi
  mov    -0x1178(%rbp),%rax
  lea    -0x1170(%rbp),%r8
  push   %r8
  lea    -0xa20(%rbp),%r8
  push   %r8
  movq   %rdi,%xmm0
  mov    %r10,%r8
  mov    %rax,%rdi
  call   <d7bdmaps@plt>
  add    $0x10,%rsp
  mov    -0x1158(%rbp),%rdi
  lea    -0x420(%rbp),%r9
  lea    -0x620(%rbp),%r10
  lea    -0x820(%rbp),%rcx
  lea    -0x10f0(%rbp),%rdx
  lea    -0x1070(%rbp),%rsi
  mov    -0x1180(%rbp),%rax
  lea    -0x116c(%rbp),%r8
  push   %r8
  lea    -0x220(%rbp),%r8
  push   %r8
  movq   %rdi,%xmm0
  mov    %r10,%r8
  mov    %rax,%rdi
  call   <d7bdmaps@plt>
  add    $0x10,%rsp
  mov    -0x1178(%rbp),%rax
  mov    %rax,%rdi
  call   <d7minbddist@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x1150(%rbp)
  mov    -0x1180(%rbp),%rax
  mov    %rax,%rdi
  call   <d7minbddist@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x1148(%rbp)
  movsd  -0x1150(%rbp),%xmm0
  addsd  -0x1148(%rbp),%xmm0
  comisd -0x1188(%rbp),%xmm0
  jbe    L121
  movsd  -0x1188(%rbp),%xmm0
  jmp    L353
L121:
  movsd  -0x1150(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x1148(%rbp),%xmm1
  movsd  -0x1158(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L307
  movl   $0x0,-0x1168(%rbp)
  jmp    L354
L60:
  mov    -0x1168(%rbp),%eax
  cltq
  mov    -0x1120(%rbp,%rax,4),%eax
  mov    %eax,-0x115c(%rbp)
  cmpl   $0x2,-0x115c(%rbp)
  jle    L333
  cmpl   $0x6,-0x115c(%rbp)
  je     L333
  cmpl   $0x8,-0x115c(%rbp)
  je     L333
  mov    -0x115c(%rbp),%eax
  cltq
  movsd  -0x10c0(%rbp,%rax,8),%xmm0
  movsd  %xmm0,-0x1138(%rbp)
  movsd  -0x1158(%rbp),%xmm0
  comisd -0x1138(%rbp),%xmm0
  jbe    L139
  lea    -0xc20(%rbp),%rcx
  mov    -0x115c(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rcx,%rax,1),%rdx
  mov    -0x1180(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <d71234distsq@plt>
  mov    %eax,%edi
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  addsd  -0x1138(%rbp),%xmm0
  comisd -0x1188(%rbp),%xmm0
  jbe    L273
  movsd  -0x1188(%rbp),%xmm0
  jmp    L208
L273:
  lea    -0xc20(%rbp),%rcx
  mov    -0x115c(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rcx,%rax,1),%rdx
  mov    -0x1180(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <d71234distsq@plt>
  mov    %eax,%edi
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  addsd  -0x1138(%rbp),%xmm0
L208:
  movsd  %xmm0,-0x1188(%rbp)
  jmp    L139
L333:
  nop
L139:
  addl   $0x1,-0x1168(%rbp)
L354:
  mov    -0x1170(%rbp),%eax
  cmp    %eax,-0x1168(%rbp)
  jl     L60
  movl   $0x0,-0x1164(%rbp)
  jmp    L29
L256:
  mov    -0x1164(%rbp),%eax
  cltq
  mov    -0x10f0(%rbp,%rax,4),%eax
  mov    %eax,-0x1160(%rbp)
  cmpl   $0x2,-0x1160(%rbp)
  jle    L146
  cmpl   $0x6,-0x1160(%rbp)
  je     L146
  cmpl   $0x8,-0x1160(%rbp)
  je     L146
  mov    -0x1160(%rbp),%eax
  cltq
  movsd  -0x1070(%rbp,%rax,8),%xmm0
  movsd  %xmm0,-0x1140(%rbp)
  movsd  -0x1158(%rbp),%xmm0
  comisd -0x1140(%rbp),%xmm0
  jbe    L128
  lea    -0x420(%rbp),%rcx
  mov    -0x1160(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rcx,%rax,1),%rdx
  mov    -0x1178(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <d71234distsq@plt>
  mov    %eax,%edi
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  addsd  -0x1140(%rbp),%xmm0
  comisd -0x1188(%rbp),%xmm0
  jbe    L6
  movsd  -0x1188(%rbp),%xmm0
  jmp    L97
L6:
  lea    -0x420(%rbp),%rcx
  mov    -0x1160(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rcx,%rax,1),%rdx
  mov    -0x1178(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <d71234distsq@plt>
  mov    %eax,%edi
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  addsd  -0x1140(%rbp),%xmm0
L97:
  movsd  %xmm0,-0x1188(%rbp)
  jmp    L128
L146:
  nop
L128:
  addl   $0x1,-0x1164(%rbp)
L29:
  mov    -0x116c(%rbp),%eax
  cmp    %eax,-0x1164(%rbp)
  jl     L256
L307:
  movsd  -0x1188(%rbp),%xmm1
  movsd  D17(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x1158(%rbp)
  movl   $0x0,-0x1168(%rbp)
  jmp    L281
L89:
  mov    -0x1168(%rbp),%eax
  cltq
  mov    -0x1120(%rbp,%rax,4),%eax
  mov    %eax,-0x115c(%rbp)
  cmpl   $0x2,-0x115c(%rbp)
  jle    L10
  cmpl   $0x6,-0x115c(%rbp)
  je     L10
  cmpl   $0x8,-0x115c(%rbp)
  je     L10
  mov    -0x115c(%rbp),%eax
  cltq
  movsd  -0x10c0(%rbp,%rax,8),%xmm0
  movsd  %xmm0,-0x1130(%rbp)
  movsd  -0x1158(%rbp),%xmm0
  comisd -0x1130(%rbp),%xmm0
  jbe    L138
  movl   $0x0,-0x1164(%rbp)
  jmp    L292
L206:
  mov    -0x1164(%rbp),%eax
  cltq
  mov    -0x10f0(%rbp,%rax,4),%eax
  mov    %eax,-0x1160(%rbp)
  cmpl   $0x2,-0x1160(%rbp)
  jle    L167
  cmpl   $0x6,-0x1160(%rbp)
  je     L167
  cmpl   $0x8,-0x1160(%rbp)
  je     L167
  mov    -0x1160(%rbp),%eax
  cltq
  movsd  -0x1070(%rbp,%rax,8),%xmm0
  movsd  %xmm0,-0x1128(%rbp)
  movsd  -0x1158(%rbp),%xmm0
  comisd -0x1128(%rbp),%xmm0
  jbe    L151
  lea    -0xc20(%rbp),%rcx
  mov    -0x1160(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rcx,%rax,1),%rbx
  lea    -0x1020(%rbp),%rcx
  mov    -0x1160(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rcx,%rax,1),%r11
  lea    -0x420(%rbp),%rcx
  mov    -0x1160(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rcx,%rax,1),%r10
  lea    -0x820(%rbp),%rcx
  mov    -0x1160(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rcx,%rax,1),%r9
  lea    -0x420(%rbp),%rcx
  mov    -0x115c(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rcx,%rax,1),%r13
  lea    -0x820(%rbp),%rcx
  mov    -0x115c(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rcx,%rax,1),%r12
  lea    -0xc20(%rbp),%rcx
  mov    -0x115c(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  add    %rax,%rcx
  lea    -0x1020(%rbp),%rsi
  mov    -0x115c(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  sub    %rdx,%rax
  shl    $0x3,%rax
  lea    (%rsi,%rax,1),%rdi
  mov    -0x1188(%rbp),%rdx
  mov    -0x1180(%rbp),%rsi
  mov    -0x1178(%rbp),%rax
  mov    -0x1160(%rbp),%r8d
  push   %r8
  push   %rbx
  push   %r11
  push   %r10
  push   %r9
  mov    -0x115c(%rbp),%r8d
  push   %r8
  movq   %rdx,%xmm0
  mov    %r13,%r9
  mov    %r12,%r8
  mov    %rdi,%rdx
  mov    %rax,%rdi
  call   <D7Dist_2bds_rev@plt>
  add    $0x30,%rsp
  movq   %xmm0,%rax
  mov    %rax,-0x1188(%rbp)
  jmp    L151
L167:
  nop
L151:
  addl   $0x1,-0x1164(%rbp)
L292:
  mov    -0x116c(%rbp),%eax
  cmp    %eax,-0x1164(%rbp)
  jl     L206
  jmp    L138
L10:
  nop
L138:
  addl   $0x1,-0x1168(%rbp)
L281:
  mov    -0x1170(%rbp),%eax
  cmp    %eax,-0x1168(%rbp)
  jl     L89
  movsd  -0x1188(%rbp),%xmm0
L353:
  movq   %xmm0,%rax
  mov    -0x28(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L337
  call   <__stack_chk_fail@plt>
L337:
  movq   %rax,%xmm0
  lea    -0x18(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D17
type: f64

tool: D17: 0.999995

assistant: ```c
double D7Dist_pass(double gvec1[7], double gvec2[7], double dist) {
  double dists1[9];
  double pgs1[9][7], rgs1[9][7], mpgs1[9][7], mvecs1[9][7];
  double dists2[9];
  double pgs2[9][7], rgs2[9][7], mpgs2[9][7], mvecs2[9][7];
  int iord1[9], iord2[9];
  double mindists1;
  double mindists2;
  int jx1, jx2;
  int j1, j2;
  int ngood1, ngood2;
  double maxdist;
  maxdist = 0.999995 * dist;
  d7bdmaps(gvec1, dists1, iord1, pgs1, rgs1, mpgs1, mvecs1, maxdist, &ngood1);
  d7bdmaps(gvec2, dists2, iord2, pgs2, rgs2, mpgs2, mvecs2, maxdist, &ngood2);
  mindists1 = d7minbddist(gvec1);
  mindists2 = d7minbddist(gvec2);
  if (mindists1 + mindists2 > dist)
    return dist;
  if (mindists1 + mindists2 < maxdist) {
    for (jx1 = 0; jx1 < ngood1; jx1++) {
      double d1;
      j1 = iord1[jx1];
      if (j1 < 3 || j1 == 6 || j1 == 8)
        continue;
      d1 = dists1[j1];
      if (d1 < maxdist) {
        dist = (((dist) < (sqrt(d71234distsq(gvec2, mpgs1[j1])) + d1)) ? (dist) : (sqrt(d71234distsq(gvec2, mpgs1[j1])) + d1));
      }
    }
    for (jx2 = 0; jx2 < ngood2; jx2++) {
      double d2;
      j2 = iord2[jx2];
      if (j2 < 3 || j2 == 6 || j2 == 8)
        continue;
      d2 = dists2[j2];
      if (d2 < maxdist) {
        dist = (((dist) < ((sqrt(d71234distsq(gvec1, mpgs2[j2])) + d2))) ? (dist) : ((sqrt(d71234distsq(gvec1, mpgs2[j2])) + d2)));
      }
    }
  }
  maxdist = 0.999995 * dist;
  for (jx1 = 0; jx1 < ngood1; jx1++) {
    double d1;
    j1 = iord1[jx1];
    if (j1 < 3 || j1 == 6 || j1 == 8)
      continue;
    d1 = dists1[j1];
    if (d1 < maxdist) {
      for (jx2 = 0; jx2 < ngood2; jx2++) {
        double d2;
        j2 = iord2[jx2];
        if (j2 < 3 || j2 == 6 || j2 == 8)
          continue;
        d2 = dists2[j2];
        if (d2 < maxdist) {
          dist = D7Dist_2bds_rev(gvec1, gvec2, pgs1[j1], mpgs1[j1], pgs2[j1], mpgs2[j1], j1, pgs2[j2], mpgs2[j2], pgs1[j2], mpgs1[j2], j2, dist);
        }
      }
    }
  }
  return dist;
}
```