user: 这段汇编代码用C语言表示是什么样的?

```asm
<alnorm>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  movsd  %xmm0,-0x48(%rbp)
  mov    %edi,-0x4c(%rbp)
  movsd  D37(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D87(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  D245(%rip),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x4c(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  movsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  comisd -0x28(%rbp),%xmm0
  jbe    L18
  mov    $0x1,%eax
  sub    -0x34(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movq   D211(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
L18:
  movsd  -0x18(%rbp),%xmm0
  comisd -0x28(%rbp),%xmm0
  jae    L29
  cmpl   $0x1,-0x34(%rbp)
  jne    L79
  movsd  -0x10(%rbp),%xmm0
  comisd -0x28(%rbp),%xmm0
  jb     L79
L29:
  movsd  -0x28(%rbp),%xmm1
  movsd  D268(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x28(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x20(%rbp),%xmm0
  comisd -0x28(%rbp),%xmm0
  jb     L58
  movsd  -0x8(%rbp),%xmm1
  movsd  D219(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x8(%rbp),%xmm2
  movsd  D241(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movsd  -0x8(%rbp),%xmm3
  movsd  D266(%rip),%xmm2
  addsd  %xmm2,%xmm3
  movsd  -0x8(%rbp),%xmm4
  movsd  D172(%rip),%xmm2
  addsd  %xmm2,%xmm4
  movsd  D4(%rip),%xmm2
  divsd  %xmm4,%xmm2
  addsd  %xmm2,%xmm3
  movapd %xmm3,%xmm4
  movsd  D31(%rip),%xmm2
  movapd %xmm2,%xmm3
  divsd  %xmm4,%xmm3
  movapd %xmm1,%xmm2
  subsd  %xmm3,%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  D91(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x28(%rbp),%xmm1
  movsd  D268(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  jmp    L40
L58:
  movsd  -0x8(%rbp),%xmm0
  movq   D211(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movsd  D129(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  -0x28(%rbp),%xmm1
  movsd  D136(%rip),%xmm2
  movapd %xmm1,%xmm3
  subsd  %xmm2,%xmm3
  movsd  -0x28(%rbp),%xmm2
  movsd  D170(%rip),%xmm1
  movapd %xmm2,%xmm4
  addsd  %xmm1,%xmm4
  movsd  -0x28(%rbp),%xmm1
  movsd  D181(%rip),%xmm2
  movapd %xmm1,%xmm5
  subsd  %xmm2,%xmm5
  movsd  -0x28(%rbp),%xmm2
  movsd  D173(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movsd  -0x28(%rbp),%xmm6
  movsd  D18(%rip),%xmm2
  addsd  %xmm2,%xmm6
  movsd  -0x28(%rbp),%xmm7
  movsd  D185(%rip),%xmm2
  addsd  %xmm2,%xmm7
  movsd  D11(%rip),%xmm2
  divsd  %xmm7,%xmm2
  addsd  %xmm2,%xmm6
  movapd %xmm6,%xmm7
  movsd  D53(%rip),%xmm2
  movapd %xmm2,%xmm6
  divsd  %xmm7,%xmm6
  movapd %xmm1,%xmm2
  subsd  %xmm6,%xmm2
  movsd  D54(%rip),%xmm1
  divsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm5
  movapd %xmm5,%xmm2
  movsd  D63(%rip),%xmm1
  divsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm4
  movapd %xmm4,%xmm2
  movsd  D127(%rip),%xmm1
  divsd  %xmm2,%xmm1
  addsd  %xmm3,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  jmp    L40
L79:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x30(%rbp)
L40:
  cmpl   $0x0,-0x34(%rbp)
  jne    L61
  movsd  D206(%rip),%xmm0
  subsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
L61:
  movsd  -0x30(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D37
type_guessed: f64
name: parse_data
arguments: data_label: D87
type_guessed: f64
name: parse_data
arguments: data_label: D245
type_guessed: f64
name: parse_data
arguments: data_label: D211
type_guessed: f32[2]
name: parse_data
arguments: data_label: D268
type_guessed: f64
name: parse_data
arguments: data_label: D219
type_guessed: f64
name: parse_data
arguments: data_label: D241
type_guessed: f64
name: parse_data
arguments: data_label: D266
type_guessed: f64
name: parse_data
arguments: data_label: D172
type_guessed: f64
name: parse_data
arguments: data_label: D4
type_guessed: f64
name: parse_data
arguments: data_label: D31
type_guessed: f64
name: parse_data
arguments: data_label: D91
type_guessed: f64
name: parse_data
arguments: data_label: D129
type_guessed: f64
name: parse_data
arguments: data_label: D136
type_guessed: byte[8]
name: parse_data
arguments: data_label: D170
type_guessed: byte[8]
name: parse_data
arguments: data_label: D181
type_guessed: f64
name: parse_data
arguments: data_label: D173
type_guessed: f64
name: parse_data
arguments: data_label: D18
type_guessed: f64
name: parse_data
arguments: data_label: D185
type_guessed: f64
name: parse_data
arguments: data_label: D11
type_guessed: f64
name: parse_data
arguments: data_label: D53
type_guessed: f64
name: parse_data
arguments: data_label: D54
type_guessed: f64
name: parse_data
arguments: data_label: D63
type_guessed: f64
name: parse_data
arguments: data_label: D127
type_guessed: f64
name: parse_data
arguments: data_label: D206
type_guessed: f64

tool: D37: 1.28

tool: D87: 5

tool: D245: 12.5

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

tool: D268: 0.5

tool: D219: 0.399903438504

tool: D241: 5.75885480458

tool: D266: 2.62433121679

tool: D172: 5.92885724438

tool: D4: 48.6959930692

tool: D31: 29.8213557808

tool: D91: 0.398942280444

tool: D129: 0.398942280385

tool: {"D136": [0x78,0x99,0x0a,0xba,0xd3,0x6d,0x64,0x3e]}

tool: {"D170": [0x69,0x7b,0x9c,0x45,0x6b,0x16,0x3a,0x3f]}

tool: D181: 0.151679116635

tool: D173: 4.8385912808

tool: D18: 0.742380924027

tool: D185: 3.99019417011

tool: D11: 30.789933034

tool: D53: 15.1508972451

tool: D54: 5.29330324926

tool: D63: 1.98615381364

tool: D127: 1.00000615302

tool: D206: 1

assistant: ```c
double alnorm(double x, int upper) {
  int up;
  double ltone, utzero, con, prob, z, y;
  con = 1.28;
  ltone = 5.0;
  utzero = 12.5;
  up = upper;
  z = x;
  if (z < 0.0) {
    up = 1 - up;
    z = -z;
  }
  if (z <= ltone || (up == 1 && z <= utzero)) {
    y = 0.5 * z * z;
    if (z <= con) {
      prob = 0.5 - z * (0.398942280444 - 0.399903438504 * y / (y + 5.75885480458 - 29.8213557808 / (y + 2.62433121679 + 48.6959930692 / (y + 5.92885724438))));
    } else {
      prob = 0.398942280385 * exp(-y) / (z - 3.8052e-8 + 1.00000615302 / (z + 3.98064794e-4 + 1.98615381364 / (z - 0.151679116635 + 5.29330324926 / (z + 4.8385912808 - 15.1508972451 / (z + 0.742380924027 + 30.789933034 / (z + 3.99019417011))))));
    }
  } else {
    prob = 0.0;
  }
  if (up == 0)
    prob = 1.0 - prob;
  return (prob);
}
```