user: 下面的汇编指令对应的C源代码是什么：

```asm
<get_max_def_res>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %esi,%ebx
  mov    %edx,%r14d
  mov    %rcx,0x20(%rsp)
  mov    %r8,0x28(%rsp)
  mov    %esi,%edi
  call   <GET_ELEM_N1@plt>
  mov    %eax,%ebp
  mov    %ebx,%edi
  call   <GET_ELEM_N2@plt>
  mov    %eax,%r12d
  mov    %ebp,%edi
  call   <GET_NODE_X@plt>
  movq   %xmm0,%r13
  mov    %ebp,%edi
  call   <GET_NODE_Y@plt>
  movq   %xmm0,%r15
  mov    %r12d,%edi
  call   <GET_NODE_X@plt>
  movq   %xmm0,%rbp
  mov    %r12d,%edi
  call   <GET_NODE_Y@plt>
  movq   %rbp,%xmm1
  movq   %r13,%xmm6
  subsd  %xmm6,%xmm1
  movq   %r15,%xmm7
  subsd  %xmm7,%xmm0
  mulsd  %xmm1,%xmm1
  mulsd  %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L59
  sqrtsd %xmm0,%xmm0
  movsd  %xmm0,(%rsp)
L15:
  test   %r14d,%r14d
  js     L65
  mov    $0xffffffff,%r15d
  pxor   %xmm7,%xmm7
  movsd  %xmm7,0x18(%rsp)
  mov    $0x0,%ebp
  jmp    L62
L59:
  call   <sqrt@plt>
  movsd  %xmm0,(%rsp)
  jmp    L15
L28:
  add    $0x1,%ebp
  cmp    %ebp,%r14d
  jl     L9
L62:
  mov    %ebx,%edi
  call   <GET_ELEM_E@plt>
  movq   %xmm0,%r12
  mov    %ebx,%edi
  call   <GET_ELEM_I@plt>
  movq   %r12,%xmm2
  mulsd  %xmm0,%xmm2
  movsd  %xmm2,0x8(%rsp)
  pxor   %xmm0,%xmm0
  cvtsi2sd %ebp,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %r14d,%xmm1
  divsd  %xmm1,%xmm0
  movapd %xmm0,%xmm3
  mulsd  (%rsp),%xmm3
  movsd  %xmm3,0x10(%rsp)
  mov    %ebx,%edi
  call   <GET_ELEM_VB@plt>
  mov    %eax,%r13d
  mov    %ebx,%edi
  call   <GET_ELEM_VA@plt>
  mov    %eax,%r12d
  mov    %ebx,%edi
  call   <GET_ELEM_TYPE@plt>
  mov    %eax,%edi
  movsd  0x10(%rsp),%xmm1
  mov    %r13d,%edx
  mov    %r12d,%esi
  movsd  (%rsp),%xmm0
  call   <md_compute_e_def_y@plt>
  divsd  0x8(%rsp),%xmm0
  movapd %xmm0,%xmm1
  andpd  D6(%rip),%xmm1
  comisd 0x18(%rsp),%xmm1
  jbe    L28
  mov    %ebp,%r15d
  movsd  %xmm0,0x18(%rsp)
  jmp    L28
L65:
  mov    $0xffffffff,%r15d
  pxor   %xmm7,%xmm7
  movsd  %xmm7,0x18(%rsp)
L9:
  mov    0x20(%rsp),%rax
  mov    %r15d,(%rax)
  pxor   %xmm0,%xmm0
  cvtsi2sd %r15d,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %r14d,%xmm1
  divsd  %xmm1,%xmm0
  mulsd  (%rsp),%xmm0
  mov    0x28(%rsp),%rax
  movsd  %xmm0,(%rax)
  movsd  0x18(%rsp),%xmm0
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: unpack_data
arguments: tag: D6
type: qword[2]

tool: {"D6": [0x7fffffffffffffff,0x0000000000000000]}

assistant: ```c
double get_max_def_res(int type, int epos, int div, int *ppos, double *x) {
  int i, n1, n2;
  double val, EI, L, x1, y1, x2, y2;
  double xx = 0.0;
  double max = 0.0;
  int pos = -1;
  n1 = GET_ELEM_N1(epos);
  n2 = GET_ELEM_N2(epos);
  x1 = (GET_NODE_X(n1));
  y1 = (GET_NODE_Y(n1));
  x2 = (GET_NODE_X(n2));
  y2 = (GET_NODE_Y(n2));
  L = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
  for (i = 0; i <= div; i++) {
    EI = GET_ELEM_E(epos) * GET_ELEM_I(epos);
    xx = ((double)i / (double)div) * L;
    val = ((md_compute_e_def_y(GET_ELEM_TYPE(epos), L, GET_ELEM_VA(epos), GET_ELEM_VB(epos), xx) / EI));
    if (fabs(val) > max) {
      max = val;
      pos = i;
    }
  }
  *ppos = pos;
  *x = ((double)pos / (double)div) * L;
  return (max);
}
```