user: Please show me the C implementation that matches the assembly code listed below:

```asm
<death_female_raw>:
  endbr64
  push   %r15
  mov    %r8d,%r15d
  push   %r14
  mov    %ecx,%r14d
  push   %r13
  mov    %edx,%r13d
  push   %r12
  mov    %esi,%r12d
  push   %rbp
  mov    %edi,%ebp
  push   %rbx
  movslq %r9d,%rbx
  sub    $0xb8,%rsp
  divsd  D48(%rip),%xmm0
  movsd  %xmm1,0x18(%rsp)
  pxor   %xmm1,%xmm1
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm3,0x8(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0xa8(%rsp)
  xor    %eax,%eax
  movaps %xmm1,0x50(%rsp)
  movapd D184(%rip),%xmm1
  mov    D137(%rip),%rax
  movaps %xmm1,0x60(%rsp)
  movapd D161(%rip),%xmm1
  mov    %rax,0x40(%rsp)
  movaps %xmm1,0x70(%rsp)
  movapd D28(%rip),%xmm1
  movaps %xmm1,0x80(%rsp)
  movapd D130(%rip),%xmm1
  movaps %xmm1,0x90(%rsp)
  movapd D212(%rip),%xmm1
  movaps %xmm1,0x20(%rsp)
  movapd D58(%rip),%xmm1
  movaps %xmm1,0x30(%rsp)
  movsd  D101(%rip),%xmm1
  call   <pow@plt>
  pxor   %xmm1,%xmm1
  subsd  D176(%rip),%xmm0
  movslq 0xf8(%rsp),%rax
  mulsd  D227(%rip),%xmm0
  addsd  0x50(%rsp,%rbx,8),%xmm1
  addsd  0x20(%rsp,%rax,8),%xmm1
  movsd  0x18(%rsp),%xmm4
  subsd  D191(%rip),%xmm4
  movsd  0x10(%rsp),%xmm2
  subsd  D84(%rip),%xmm2
  mulsd  D80(%rip),%xmm2
  movsd  0x8(%rsp),%xmm3
  addsd  D222(%rip),%xmm3
  addsd  %xmm1,%xmm0
  movsd  D30(%rip),%xmm1
  mulsd  D200(%rip),%xmm3
  mulsd  %xmm4,%xmm1
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %r12d,%xmm0
  mulsd  D70(%rip),%xmm0
  addsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtsi2sd %ebp,%xmm1
  mulsd  D219(%rip),%xmm1
  addsd  %xmm2,%xmm3
  addsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %r13d,%xmm1
  mulsd  D190(%rip),%xmm1
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %r14d,%xmm0
  mulsd  D20(%rip),%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %r15d,%xmm1
  mulsd  D5(%rip),%xmm1
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl 0xf0(%rsp),%xmm0
  mulsd  D177(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mov    0xa8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L8
  add    $0xb8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L8:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D48
type: byte[8]
name: parse_data
arguments: data_tag: D184
type: byte[16]
name: parse_data
arguments: data_tag: D137
type: f64
name: parse_data
arguments: data_tag: D161
type: byte[16]
name: parse_data
arguments: data_tag: D28
type: byte[16]
name: parse_data
arguments: data_tag: D130
type: byte[16]
name: parse_data
arguments: data_tag: D212
type: byte[16]
name: parse_data
arguments: data_tag: D58
type: f64[2]
name: parse_data
arguments: data_tag: D101
type: byte[8]
name: parse_data
arguments: data_tag: D176
type: f64
name: parse_data
arguments: data_tag: D227
type: byte[8]
name: parse_data
arguments: data_tag: D191
type: f64
name: parse_data
arguments: data_tag: D84
type: f64
name: parse_data
arguments: data_tag: D80
type: byte[8]
name: parse_data
arguments: data_tag: D222
type: f64
name: parse_data
arguments: data_tag: D30
type: f64
name: parse_data
arguments: data_tag: D200
type: f64
name: parse_data
arguments: data_tag: D70
type: f64
name: parse_data
arguments: data_tag: D219
type: f64
name: parse_data
arguments: data_tag: D190
type: f64
name: parse_data
arguments: data_tag: D20
type: byte[8]
name: parse_data
arguments: data_tag: D5
type: f64
name: parse_data
arguments: data_tag: D177
type: byte[8]

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

tool: {"D184": [0xe8,0x31,0x28,0x0d,0xce,0x9c,0xe8,0xbf,0x7f,0xe3,0x42,0x7f,0x11,0xcf,0xde,0xbf]}

tool: D137: 1.0533145224303277

tool: {"D161": [0x39,0xc1,0x99,0xbc,0x6d,0x47,0xe5,0xbf,0x1f,0x7c,0x71,0x0c,0x7f,0x61,0xef,0xbf]}

tool: {"D28": [0x4f,0xca,0x99,0x2e,0xbb,0x87,0xe8,0xbf,0x0f,0x1d,0xeb,0x3b,0x1f,0xb6,0xd3,0xbf]}

tool: {"D130": [0x2f,0xda,0xa8,0x3e,0x38,0xbc,0xf1,0xbf,0x22,0xb4,0xa4,0xab,0x49,0x22,0xef,0xbf]}

tool: {"D212": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xb7,0x4b,0xa8,0x8f,0xfe,0xcd,0x3f]}

tool: {"D58": [0.5870690502658261,0.796446020307202]}

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

tool: D176: 1.605074524879456

tool: {"D227": [0x9a,0x46,0x21,0x0f,0x2c,0xaf,0xbb,0xbf]}

tool: D191: 3.70583987236023

tool: D84: 129.82359313964844

tool: {"D80": [0xd8,0x7e,0x47,0x76,0x5e,0x52,0x4b,0xbf]}

tool: D222: 0.301369071006775

tool: D30: 0.027317832090910966

tool: D200: 0.03663041847730991

tool: D70: 0.46670789784824235

tool: D219: 0.5484061247122409

tool: D190: 1.0288138959180866

tool: {"D20": [0xaa,0xcd,0x65,0xb2,0xfa,0xa0,0xa9,0xbf]}

tool: D5: 0.6543819525425484

tool: {"D177": [0x74,0x32,0x79,0x04,0x68,0xa0,0xdd,0xbf]}

assistant: ```c
double death_female_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.7691412217114335100000000, -0.4813884489809012200000000, -0.6649693187337454300000000, -0.9806514018090445300000000, -0.7665687475367323200000000, -0.3079908452168220200000000, -1.1084520766868413000000000, -0.9729355194482460800000000};
  double Ismoke[5] = {0, 0.2343310901409800500000000, 0.5870690502658261200000000, 0.7964460203072020200000000, 1.0533145224303277000000000};
  double dbmi = bmi;
  dbmi = dbmi / 10;
  bmi_1 = pow(dbmi, .5);
  bmi_1 = bmi_1 - 1.605074524879456;
  rati = rati - 3.705839872360230;
  sbp = sbp - 129.823593139648440;
  town = town - -0.301369071006775;
  a = 0;
  a += Iethrisk[ethrisk];
  a += Ismoke[smoke_cat];
  a += bmi_1 * -0.1081416642130314200000000;
  a += rati * 0.0273178320909109660000000;
  a += sbp * -0.0008337937584279265700000;
  a += town * 0.0366304184773099120000000;
  a += b_AF * 0.5484061247122409300000000;
  a += b_ra * 0.4667078978482423500000000;
  a += b_renal * 1.0288138959180866000000000;
  a += b_treatedhyp * -0.0500562994738190240000000;
  a += b_type2 * 0.6543819525425483800000000;
  a += fh_cvd * -0.4629154246984292800000000;
  return a;
}
```