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

```asm
<main>:
  endbr64
  push   %rbx
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  lea    D10(%rip),%rdi
  call   <puts@plt>
  lea    0x10(%rsp),%rsi
  lea    D1(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D108(%rip),%rdi
  call   <puts@plt>
  lea    0x14(%rsp),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D119(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0xc(%rsp),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    0x10(%rsp),%eax
  cmp    $0x1,%eax
  je     L18
  test   %eax,%eax
  jne    L97
  cmpl   $0x1,0x14(%rsp)
  je     L29
L97:
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L94
  mov    $0x0,%eax
  add    $0x20,%rsp
  pop    %rbx
  ret
L18:
  cmpl   $0x0,0x14(%rsp)
  jne    L56
  cmpl   $0x18,0xc(%rsp)
  jg     L45
  cmpl   $0x0,0x14(%rsp)
  jne    L97
  cmpl   $0x18,0xc(%rsp)
  jg     L97
  movsd  D57(%rip),%xmm0
  lea    D98(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L97
L45:
  movsd  D104(%rip),%xmm0
  lea    D64(%rip),%rdi
  call   <printf@plt>
  jmp    L97
L29:
  cmpl   $0x18,0xc(%rsp)
  jg     L97
  movsd  D9(%rip),%xmm0
  lea    D64(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L97
L56:
  cmpl   $0x1,0x14(%rsp)
  jne    L97
  cmpl   $0x18,0xc(%rsp)
  jle    L97
  movsd  D43(%rip),%xmm0
  lea    D64(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L97
L94:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D10
data_type: string
name: disassemble_data
arguments: tag: D1
data_type: string
name: disassemble_data
arguments: tag: D108
data_type: string
name: disassemble_data
arguments: tag: D119
data_type: string
name: disassemble_data
arguments: tag: D57
data_type: byte[8]
name: disassemble_data
arguments: tag: D98
data_type: string
name: disassemble_data
arguments: tag: D104
data_type: byte[8]
name: disassemble_data
arguments: tag: D64
data_type: string
name: disassemble_data
arguments: tag: D9
data_type: byte[8]
name: disassemble_data
arguments: tag: D43
data_type: byte[8]

tool: D10: Are you married? 
 (if maried enter 1, if unmarried enter 0)

tool: D1: %d

tool: D108: Are you male or female? 
 (if female enter 1, if male enter 0) 

tool: D119: Please enter your age: 

tool: {"D57": [0x00,0x00,0x00,0x00,0x00,0x80,0x66,0x40]}

tool: D98: The daily rate for the customer is: %0.2f 


tool: {"D104": [0x00,0x00,0x00,0x00,0x00,0xe0,0x60,0x40]}

tool: D64: he daily rate for the customer is: %0.2f 


tool: {"D9": [0x00,0x00,0x00,0x00,0x00,0xc0,0x62,0x40]}

tool: {"D43": [0x00,0x00,0x00,0x00,0x00,0x80,0x56,0x40]}

assistant: ```c
int main() {
  int age;
  int married;
  int male_female;
  float normal_rate = 100;
  float daily_rate;
  printf("Are you married? \n (if maried enter 1, if unmarried enter 0)\n");
  scanf("%d", &married);
  printf("Are you male or female? \n (if female enter 1, if male enter 0) \n");
  scanf("%d", &male_female);
  printf("Please enter your age: ");
  scanf("%d", &age);
  if ((married == 1) && (male_female == 0) && (age >= 25)) {
    daily_rate = ((normal_rate - 10) * 1.5);
    printf("he daily rate for the customer is: %0.2f \n", daily_rate);
  } else if ((married == 0) && (male_female == 1) && (age < 25)) {
    daily_rate = ((normal_rate)*1.5);
    printf("he daily rate for the customer is: %0.2f \n", daily_rate);
  } else if ((married == 1) && (male_female == 1) && (age >= 25)) {
    daily_rate = (normal_rate - 10);
    printf("he daily rate for the customer is: %0.2f \n", daily_rate);
  } else if ((married == 1) && (male_female == 0) && (age < 25)) {
    daily_rate = ((normal_rate - 10) * 2);
    printf("The daily rate for the customer is: %0.2f \n", daily_rate);
  }
}
```