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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D6(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D90(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x14(%rbp),%rax
  mov    %rax,%rsi
  lea    D90(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x10(%rbp),%rax
  mov    %rax,%rsi
  lea    D90(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  movss  D108(%rip),%xmm0
  movss  %xmm0,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  cmp    $0x1,%eax
  jne    L21
  movss  -0xc(%rbp),%xmm0
  movss  D57(%rip),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
L21:
  mov    -0x14(%rbp),%eax
  test   %eax,%eax
  jne    L75
  mov    -0x10(%rbp),%eax
  cmp    $0x18,%eax
  jg     L75
  movss  -0xc(%rbp),%xmm0
  addss  %xmm0,%xmm0
  movss  %xmm0,-0xc(%rbp)
L75:
  mov    -0x14(%rbp),%eax
  test   %eax,%eax
  jne    L62
  mov    -0x10(%rbp),%eax
  cmp    $0x18,%eax
  jle    L62
  movss  -0xc(%rbp),%xmm1
  movss  D82(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
L62:
  mov    -0x14(%rbp),%eax
  cmp    $0x1,%eax
  jne    L64
  mov    -0x10(%rbp),%eax
  cmp    $0x19,%eax
  jg     L64
  movss  -0xc(%rbp),%xmm1
  movss  D82(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
L64:
  pxor   %xmm2,%xmm2
  cvtss2sd -0xc(%rbp),%xmm2
  movq   %xmm2,%rax
  movq   %rax,%xmm0
  lea    D66(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L22
  call   <__stack_chk_fail@plt>
L22:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D6
type: string
name: parse_data
arguments: data_label: D90
type: string
name: parse_data
arguments: data_label: D2
type: string
name: parse_data
arguments: data_label: D40
type: string
name: parse_data
arguments: data_label: D108
type: f32
name: parse_data
arguments: data_label: D57
type: f32
name: parse_data
arguments: data_label: D82
type: f32
name: parse_data
arguments: data_label: D66
type: string

tool: D6: Are you married? (married=1 unmarried=0) 

tool: D90: %d

tool: D2: Are you male or female? (female=1 male=0) 

tool: D40: How old are you? 

tool: D108: 100

tool: D57: 10

tool: D82: 1.5

tool: D66: the daily rate for the customer is: %0.2f

assistant: ```c
int main() {
  int married;
  printf("Are you married? (married=1 unmarried=0) ");
  scanf("%d", &married);
  int gender;
  printf("Are you male or female? (female=1 male=0) ");
  scanf("%d", &gender);
  int age;
  printf("How old are you? ");
  scanf("%d", &age);
  float nominaldr = 100;
  if (married == 1) {
    nominaldr -= 10.0;
  }
  if ((gender == 0) && (age < 25)) {
    nominaldr *= 2;
  }
  if ((gender == 0) && (age >= 25)) {
    nominaldr *= 1.5;
  }
  if ((gender == 1) && (age <= 25)) {
    nominaldr *= 1.5;
  }
  printf("the daily rate for the customer is: %0.2f", nominaldr);
  return 0;
}
```