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

```asm
<BlkSchlsEqEuroNoDiv>:
  endbr64
  push   %rbx
  sub    $0x20,%rsp
  movss  %xmm0,0xc(%rsp)
  movss  %xmm1,0x10(%rsp)
  movss  %xmm2,0x14(%rsp)
  movss  %xmm3,0x1c(%rsp)
  movss  %xmm4,0x8(%rsp)
  mov    %edi,%ebx
  pxor   %xmm0,%xmm0
  ucomiss %xmm4,%xmm0
  ja     L38
  movaps %xmm4,%xmm6
  sqrtss %xmm6,%xmm6
  movss  %xmm6,0x18(%rsp)
L11:
  movss  0xc(%rsp),%xmm0
  divss  0x10(%rsp),%xmm0
  cvtss2sd %xmm0,%xmm0
  call   <log@plt>
  movss  0x1c(%rsp),%xmm5
  movaps %xmm5,%xmm2
  mulss  %xmm5,%xmm2
  mulss  D24(%rip),%xmm2
  addss  0x14(%rsp),%xmm2
  mulss  0x8(%rsp),%xmm2
  cvtsd2ss %xmm0,%xmm0
  addss  %xmm2,%xmm0
  mulss  0x18(%rsp),%xmm5
  divss  %xmm5,%xmm0
  movaps %xmm0,%xmm6
  subss  %xmm5,%xmm6
  movss  %xmm6,0x18(%rsp)
  cvtss2sd %xmm0,%xmm0
  mov    $0x1,%eax
  call   <CNDF@plt>
  pxor   %xmm1,%xmm1
  cvtsi2ss %eax,%xmm1
  movss  %xmm1,0x1c(%rsp)
  pxor   %xmm0,%xmm0
  cvtss2sd 0x18(%rsp),%xmm0
  mov    $0x1,%eax
  call   <CNDF@plt>
  pxor   %xmm5,%xmm5
  cvtsi2ss %eax,%xmm5
  movss  %xmm5,0x18(%rsp)
  movss  0x14(%rsp),%xmm7
  xorps  D1(%rip),%xmm7
  movaps %xmm7,%xmm0
  mulss  0x8(%rsp),%xmm0
  cvtss2sd %xmm0,%xmm0
  call   <exp@plt>
  movapd %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd 0x10(%rsp),%xmm0
  mulsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsd2ss %xmm0,%xmm1
  test   %ebx,%ebx
  jne    L39
  movss  0xc(%rsp),%xmm0
  mulss  0x1c(%rsp),%xmm0
  mulss  0x18(%rsp),%xmm1
  subss  %xmm1,%xmm0
L12:
  add    $0x20,%rsp
  pop    %rbx
  ret
L38:
  movss  0x8(%rsp),%xmm0
  call   <sqrtf@plt>
  movss  %xmm0,0x18(%rsp)
  jmp    L11
L39:
  movss  D6(%rip),%xmm2
  movaps %xmm2,%xmm0
  subss  0x18(%rsp),%xmm0
  mulss  %xmm1,%xmm0
  subss  0x1c(%rsp),%xmm2
  mulss  0xc(%rsp),%xmm2
  subss  %xmm2,%xmm0
  jmp    L12
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D24
datatype: f32
name: extract_symbolic_data
arguments: data_label: D1
datatype: byte[16]
name: extract_symbolic_data
arguments: data_label: D6
datatype: f32

tool: D24: 0.5

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

tool: D6: 1

assistant: ```c
float BlkSchlsEqEuroNoDiv(float sptprice, float strike, float rate, float volatility, float time, int otype, float timet) {
  float OptionPrice;
  float xStockPrice;
  float xStrikePrice;
  float xRiskFreeRate;
  float xVolatility;
  float xTime;
  float xSqrtTime;
  float logValues;
  float xLogTerm;
  float xD1;
  float xD2;
  float xPowerTerm;
  float xDen;
  float d1;
  float d2;
  float FutureValueX;
  float NofXd1;
  float NofXd2;
  float NegNofXd1;
  float NegNofXd2;
  xStockPrice = sptprice;
  xStrikePrice = strike;
  xRiskFreeRate = rate;
  xVolatility = volatility;
  xTime = time;
  xSqrtTime = sqrt(xTime);
  logValues = log(sptprice / strike);
  xLogTerm = logValues;
  xPowerTerm = xVolatility * xVolatility;
  xPowerTerm = xPowerTerm * 0.5;
  xD1 = xRiskFreeRate + xPowerTerm;
  xD1 = xD1 * xTime;
  xD1 = xD1 + xLogTerm;
  xDen = xVolatility * xSqrtTime;
  xD1 = xD1 / xDen;
  xD2 = xD1 - xDen;
  d1 = xD1;
  d2 = xD2;
  NofXd1 = CNDF(d1);
  NofXd2 = CNDF(d2);
  FutureValueX = strike * (exp(-(rate) * (time)));
  if (otype == 0) {
    OptionPrice = (sptprice * NofXd1) - (FutureValueX * NofXd2);
  } else {
    NegNofXd1 = (1.0 - NofXd1);
    NegNofXd2 = (1.0 - NofXd2);
    OptionPrice = (FutureValueX * NegNofXd2) - (sptprice * NegNofXd1);
  }
  return OptionPrice;
}
```