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

```asm
<DEVfetlim>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  movsd  %xmm0,-0x38(%rbp)
  movsd  %xmm1,-0x40(%rbp)
  movsd  %xmm2,-0x48(%rbp)
  movsd  -0x40(%rbp),%xmm0
  subsd  -0x48(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  comisd %xmm1,%xmm0
  jbe    L62
  movsd  -0x40(%rbp),%xmm0
  subsd  -0x48(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  movq   D58(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  jmp    L13
L62:
  movsd  -0x40(%rbp),%xmm0
  subsd  -0x48(%rbp),%xmm0
  addsd  %xmm0,%xmm0
L13:
  movsd  D68(%rip),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movsd  D68(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  D68(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x48(%rbp),%xmm1
  movsd  D85(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x38(%rbp),%xmm0
  subsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x40(%rbp),%xmm0
  comisd -0x48(%rbp),%xmm0
  jb     L5
  movsd  -0x40(%rbp),%xmm0
  comisd -0x18(%rbp),%xmm0
  jb     L211
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  jb     L32
  movsd  -0x38(%rbp),%xmm0
  comisd -0x18(%rbp),%xmm0
  jb     L26
  movsd  -0x10(%rbp),%xmm0
  movq   D58(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  comisd -0x20(%rbp),%xmm0
  jbe    L222
  movsd  -0x40(%rbp),%xmm0
  subsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L222
L26:
  movsd  -0x48(%rbp),%xmm1
  movsd  D68(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  -0x38(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L72
  movsd  -0x38(%rbp),%xmm0
  jmp    L230
L72:
  movsd  -0x48(%rbp),%xmm1
  movsd  D68(%rip),%xmm0
  addsd  %xmm1,%xmm0
L230:
  movsd  %xmm0,-0x38(%rbp)
  jmp    L222
L32:
  movsd  -0x10(%rbp),%xmm0
  comisd -0x28(%rbp),%xmm0
  jb     L222
  movsd  -0x40(%rbp),%xmm0
  addsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L222
L211:
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  jb     L128
  movsd  -0x48(%rbp),%xmm0
  movsd  D34(%rip),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  -0x38(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L158
  movsd  -0x38(%rbp),%xmm0
  jmp    L178
L158:
  movsd  -0x48(%rbp),%xmm0
  movsd  D34(%rip),%xmm1
  subsd  %xmm1,%xmm0
L178:
  movsd  %xmm0,-0x38(%rbp)
  jmp    L222
L128:
  movsd  -0x48(%rbp),%xmm1
  movsd  D42(%rip),%xmm0
  addsd  %xmm1,%xmm0
  comisd -0x38(%rbp),%xmm0
  jbe    L77
  movsd  -0x38(%rbp),%xmm0
  jmp    L93
L77:
  movsd  -0x48(%rbp),%xmm1
  movsd  D42(%rip),%xmm0
  addsd  %xmm1,%xmm0
L93:
  movsd  %xmm0,-0x38(%rbp)
  jmp    L222
L5:
  pxor   %xmm0,%xmm0
  comisd -0x10(%rbp),%xmm0
  jb     L172
  movsd  -0x10(%rbp),%xmm0
  movq   D58(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  comisd -0x28(%rbp),%xmm0
  jbe    L222
  movsd  -0x40(%rbp),%xmm0
  subsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L222
L172:
  movsd  -0x48(%rbp),%xmm1
  movsd  D34(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  comisd -0x38(%rbp),%xmm0
  jb     L227
  movsd  -0x10(%rbp),%xmm0
  comisd -0x20(%rbp),%xmm0
  jbe    L222
  movsd  -0x40(%rbp),%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  jmp    L222
L227:
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
L222:
  movsd  -0x38(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D58
type_guessed: byte[8]
name: retrieve_data
arguments: data_label: D68
type_guessed: byte[8]
name: retrieve_data
arguments: data_label: D85
type_guessed: f64
name: retrieve_data
arguments: data_label: D34
type_guessed: byte[8]
name: retrieve_data
arguments: data_label: D42
type_guessed: byte[8]

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

tool: {"D68": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

tool: D85: 3.5

tool: {"D34": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f]}

tool: {"D42": [0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40]}

assistant: ```c
double DEVfetlim(vnew, vold, vto)
double vnew;
double vold;
double vto;
{
  double vtsthi;
  double vtstlo;
  double vtox;
  double delv;
  double vtemp;
  vtsthi = (((2 * (vold - vto)) < 0) ? -(2 * (vold - vto)) : (2 * (vold - vto))) + 2;
  vtstlo = vtsthi / 2 + 2;
  vtox = vto + 3.5;
  delv = vnew - vold;
  if (vold >= vto) {
    if (vold >= vtox) {
      if (delv <= 0) {
        if (vnew >= vtox) {
          if (-delv > vtstlo) {
            vnew = vold - vtstlo;
          }
        } else {
          vnew = ((vnew) > (vto + 2) ? (vnew) : (vto + 2));
        }
      } else {
        if (delv >= vtsthi) {
          vnew = vold + vtsthi;
        }
      }
    } else {
      if (delv <= 0) {
        vnew = ((vnew) > (vto - .5) ? (vnew) : (vto - .5));
      } else {
        vnew = ((vnew) < (vto + 4) ? (vnew) : (vto + 4));
      }
    }
  } else {
    if (delv <= 0) {
      if (-delv > vtsthi) {
        vnew = vold - vtsthi;
      }
    } else {
      vtemp = vto + .5;
      if (vnew <= vtemp) {
        if (delv > vtstlo) {
          vnew = vold + vtstlo;
        }
      } else {
        vnew = vtemp;
      }
    }
  }
  return (vnew);
}
```