user: Translate the below assembly code into C programming language:

```asm
<cvd_male_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
  movsd  %xmm1,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm3,0x8(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0xa8(%rsp)
  xor    %eax,%eax
  mov    D99(%rip),%rax
  movq   $0x0,0x50(%rsp)
  movq   $0x0,0x58(%rsp)
  mov    %rax,0x60(%rsp)
  mov    D86(%rip),%rax
  movq   $0x0,0x20(%rsp)
  mov    %rax,0x68(%rsp)
  mov    D1(%rip),%rax
  mov    %rax,0x70(%rsp)
  mov    D177(%rip),%rax
  mov    %rax,0x78(%rsp)
  mov    D215(%rip),%rax
  mov    %rax,0x80(%rsp)
  mov    D189(%rip),%rax
  mov    %rax,0x88(%rsp)
  mov    D56(%rip),%rax
  mov    %rax,0x90(%rsp)
  mov    D140(%rip),%rax
  mov    %rax,0x98(%rsp)
  mov    D232(%rip),%rax
  mov    %rax,0x28(%rsp)
  mov    D161(%rip),%rax
  divsd  D266(%rip),%xmm0
  mov    %rax,0x30(%rsp)
  mov    D173(%rip),%rax
  mov    %rax,0x38(%rsp)
  mov    D163(%rip),%rax
  mov    %rax,0x40(%rsp)
  call   <log@plt>
  pxor   %xmm4,%xmm4
  subsd  D264(%rip),%xmm0
  movslq 0xf8(%rsp),%rax
  mulsd  D18(%rip),%xmm0
  addsd  0x50(%rsp,%rbx,8),%xmm4
  addsd  0x20(%rsp,%rax,8),%xmm4
  movsd  0x18(%rsp),%xmm1
  subsd  D22(%rip),%xmm1
  mulsd  D159(%rip),%xmm1
  movsd  0x10(%rsp),%xmm2
  subsd  D90(%rip),%xmm2
  mulsd  D229(%rip),%xmm2
  movsd  0x8(%rsp),%xmm3
  addsd  %xmm4,%xmm0
  addsd  D31(%rip),%xmm3
  mulsd  D104(%rip),%xmm3
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %r12d,%xmm0
  mulsd  D160(%rip),%xmm0
  addsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtsi2sd %ebp,%xmm1
  mulsd  D218(%rip),%xmm1
  addsd  %xmm2,%xmm3
  addsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %r13d,%xmm1
  mulsd  D61(%rip),%xmm1
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %r14d,%xmm0
  mulsd  D233(%rip),%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %r15d,%xmm1
  mulsd  D257(%rip),%xmm1
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl 0xf0(%rsp),%xmm0
  mulsd  D93(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mov    0xa8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L6
  add    $0xb8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L6:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: tag: D99
type: f64
name: retrieve_data
arguments: tag: D86
type: f64
name: retrieve_data
arguments: tag: D1
type: f64
name: retrieve_data
arguments: tag: D177
type: f64
name: retrieve_data
arguments: tag: D215
type: byte[8]
name: retrieve_data
arguments: tag: D189
type: byte[8]
name: retrieve_data
arguments: tag: D56
type: byte[8]
name: retrieve_data
arguments: tag: D140
type: byte[8]
name: retrieve_data
arguments: tag: D232
type: f64
name: retrieve_data
arguments: tag: D161
type: f64
name: retrieve_data
arguments: tag: D266
type: byte[8]
name: retrieve_data
arguments: tag: D173
type: f64
name: retrieve_data
arguments: tag: D163
type: f64
name: retrieve_data
arguments: tag: D264
type: f64
name: retrieve_data
arguments: tag: D18
type: f64
name: retrieve_data
arguments: tag: D22
type: f64
name: retrieve_data
arguments: tag: D159
type: f64
name: retrieve_data
arguments: tag: D90
type: f64
name: retrieve_data
arguments: tag: D229
type: f64
name: retrieve_data
arguments: tag: D31
type: f64
name: retrieve_data
arguments: tag: D104
type: f64
name: retrieve_data
arguments: tag: D160
type: f64
name: retrieve_data
arguments: tag: D218
type: f64
name: retrieve_data
arguments: tag: D61
type: f64
name: retrieve_data
arguments: tag: D233
type: f64
name: retrieve_data
arguments: tag: D257
type: f64
name: retrieve_data
arguments: tag: D93
type: f64

tool: D99: 0.40356565427866453

tool: D86: 0.7159343574607239

tool: D1: 0.758806896692187

tool: D177: 0.27782579964051385

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

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

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

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

tool: D232: 0.16553897704955278

tool: D161: 0.3227167436634278

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

tool: D173: 0.43930916796228525

tool: D163: 0.5830168090609185

tool: D264: 0.967572152614594

tool: D18: 0.43259533106833525

tool: D22: 4.439734935760498

tool: D159: 0.1616093175199347

tool: D90: 133.26568603515625

tool: D229: 0.0051706475575211365

tool: D31: 0.164980158209801

tool: D104: 0.01183727894154126

tool: D160: 0.31654607381132344

tool: D218: 0.4871573476846625

tool: D61: 0.46653234999349424

tool: D233: 0.3146452536778831

tool: D257: 0.47004450249724833

tool: D93: 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;
}
```