user: 请从给定的汇编指令推导出C源代码:

```asm
<cvd_male_raw>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xf0,%rsp
  mov    %edi,-0xb4(%rbp)
  mov    %esi,-0xb8(%rbp)
  mov    %edx,-0xbc(%rbp)
  mov    %ecx,-0xc0(%rbp)
  mov    %r8d,-0xc4(%rbp)
  movsd  %xmm0,-0xd0(%rbp)
  mov    %r9d,-0xc8(%rbp)
  movsd  %xmm1,-0xd8(%rbp)
  movsd  %xmm2,-0xe0(%rbp)
  movsd  %xmm3,-0xe8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  D160(%rip),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  D257(%rip),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  D105(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D98(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D242(%rip),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D179(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D129(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D174(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  movsd  D256(%rip),%xmm0
  movsd  %xmm0,-0x88(%rbp)
  movsd  D44(%rip),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movsd  D17(%rip),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movsd  D154(%rip),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0xd0(%rbp),%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  movsd  D85(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  mov    -0xa8(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rax
  mov    %rax,-0xa0(%rbp)
  movsd  -0xa0(%rbp),%xmm0
  movsd  D52(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  -0xd8(%rbp),%xmm0
  movsd  D68(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xd8(%rbp)
  movsd  -0xe0(%rbp),%xmm0
  movsd  D212(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xe0(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D182(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xe8(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    -0xc8(%rbp),%eax
  cltq
  movsd  -0x60(%rbp,%rax,8),%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  movsd  -0x90(%rbp,%rax,8),%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  -0xa0(%rbp),%xmm1
  movsd  D244(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  -0xd8(%rbp),%xmm1
  movsd  D192(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  -0xe0(%rbp),%xmm1
  movsd  D137(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  -0xe8(%rbp),%xmm1
  movsd  D207(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xb4(%rbp),%xmm1
  movsd  D40(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xb8(%rbp),%xmm1
  movsd  D262(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xbc(%rbp),%xmm1
  movsd  D77(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xc0(%rbp),%xmm1
  movsd  D233(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xc4(%rbp),%xmm1
  movsd  D228(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl 0x10(%rbp),%xmm1
  movsd  D49(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  -0x98(%rbp),%xmm0
  movq   %xmm0,%rax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L0
  call   <__stack_chk_fail@plt>
L0:
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D160
data_type: f64
name: parse_data
arguments: data_label: D257
data_type: f64
name: parse_data
arguments: data_label: D105
data_type: f64
name: parse_data
arguments: data_label: D98
data_type: f64
name: parse_data
arguments: data_label: D242
data_type: byte[8]
name: parse_data
arguments: data_label: D179
data_type: byte[8]
name: parse_data
arguments: data_label: D129
data_type: byte[8]
name: parse_data
arguments: data_label: D174
data_type: byte[8]
name: parse_data
arguments: data_label: D256
data_type: f64
name: parse_data
arguments: data_label: D44
data_type: f64
name: parse_data
arguments: data_label: D17
data_type: f64
name: parse_data
arguments: data_label: D154
data_type: f64
name: parse_data
arguments: data_label: D85
data_type: byte[8]
name: parse_data
arguments: data_label: D52
data_type: f64
name: parse_data
arguments: data_label: D68
data_type: f64
name: parse_data
arguments: data_label: D212
data_type: f64
name: parse_data
arguments: data_label: D182
data_type: f64
name: parse_data
arguments: data_label: D244
data_type: f64
name: parse_data
arguments: data_label: D192
data_type: f64
name: parse_data
arguments: data_label: D137
data_type: f64
name: parse_data
arguments: data_label: D207
data_type: f64
name: parse_data
arguments: data_label: D40
data_type: f64
name: parse_data
arguments: data_label: D262
data_type: f64
name: parse_data
arguments: data_label: D77
data_type: f64
name: parse_data
arguments: data_label: D233
data_type: f64
name: parse_data
arguments: data_label: D228
data_type: f64
name: parse_data
arguments: data_label: D49
data_type: f64

tool: D160: 0.40356565427866453

tool: D257: 0.7159343574607239

tool: D105: 0.758806896692187

tool: D98: 0.27782579964051385

tool: {"D242": [0xfd,0x69,0x1c,0x66,0x29,0xa7,0xd5,0xbf]}

tool: {"D179": [0x11,0x09,0x44,0xc0,0x4c,0x36,0xd7,0xbf]}

tool: {"D129": [0x48,0x80,0xb9,0xbb,0xb3,0xcc,0xce,0xbf]}

tool: {"D174": [0x4d,0xc7,0x0e,0x9f,0xe7,0x06,0xbb,0xbf]}

tool: D256: 0.16553897704955278

tool: D44: 0.3227167436634278

tool: D17: 0.43930916796228525

tool: D154: 0.5830168090609185

tool: {"D85": [0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x40]}

tool: D52: 0.967572152614594

tool: D68: 4.439734935760498

tool: D212: 133.26568603515625

tool: D182: 0.164980158209801

tool: D244: 0.43259533106833525

tool: D192: 0.1616093175199347

tool: D137: 0.0051706475575211365

tool: D207: 0.01183727894154126

tool: D40: 0.4871573476846625

tool: D262: 0.31654607381132344

tool: D77: 0.46653234999349424

tool: D233: 0.3146452536778831

tool: D228: 0.47004450249724833

tool: D49: 0.6101222792348442

assistant: ```c
double cvd_male_raw(int b_AF, int b_ra, int b_renal, int b_treatedhyp, int b_type2, double bmi, int ethrisk, int fh_cvd, double rati, double sbp, int smoke_cat, double town) {
  double a;
  double bmi_1;
  double Iethrisk[10] = {0, 0, 0.4035656542786645300000000, 0.7159343574607238700000000, 0.7588068966921870400000000, 0.2778257996405138500000000, -0.3383277413537653700000000, -0.3626891973109574500000000, -0.2406220118164148500000000, -0.1055741084408314400000000};
  double Ismoke[5] = {0, 0.1655389770495527800000000, 0.3227167436634277900000000, 0.4393091679622852500000000, 0.5830168090609184600000000};
  double dbmi = bmi;
  dbmi = dbmi / 10;
  bmi_1 = log(dbmi);
  bmi_1 = bmi_1 - 0.967572152614594;
  rati = rati - 4.439734935760498;
  sbp = sbp - 133.265686035156250;
  town = town - -0.164980158209801;
  a = 0;
  a += Iethrisk[ethrisk];
  a += Ismoke[smoke_cat];
  a += bmi_1 * 0.4325953310683352500000000;
  a += rati * 0.1616093175199347100000000;
  a += sbp * 0.0051706475575211365000000;
  a += town * 0.0118372789415412600000000;
  a += b_AF * 0.4871573476846625100000000;
  a += b_ra * 0.3165460738113234400000000;
  a += b_renal * 0.4665323499934942400000000;
  a += b_treatedhyp * 0.3146452536778831000000000;
  a += b_type2 * 0.4700445024972483300000000;
  a += fh_cvd * 0.6101222792348441900000000;
  return a;
}
```