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    D61(%rip),%rdi
  call   <printf@plt>
  lea    0xc(%rsp),%rsi
  lea    D116(%rip),%rbx
  mov    %rbx,%rdi
  call   <scanf@plt>
  lea    D48(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x10(%rsp),%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  lea    D80(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x14(%rsp),%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  mov    0xc(%rsp),%eax
  cmp    $0x1,%eax
  je     L165
  test   %eax,%eax
  jne    L134
  cmpl   $0x0,0x10(%rsp)
  jne    L94
  cmpl   $0x18,0x14(%rsp)
  jg     L40
  movss  D49(%rip),%xmm0
  jmp    L154
L165:
  cmpl   $0x0,0x10(%rsp)
  jne    L41
  cmpl   $0x18,0x14(%rsp)
  jle    L112
  cmpl   $0x18,0x14(%rsp)
  jle    L32
  movss  D33(%rip),%xmm0
  jmp    L154
L112:
  movss  D89(%rip),%xmm0
  jmp    L154
L134:
  movss  D132(%rip),%xmm0
  jmp    L154
L94:
  movss  D132(%rip),%xmm0
L154:
  cvtss2sd %xmm0,%xmm0
  lea    D52(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L12
  mov    $0x0,%eax
  add    $0x20,%rsp
  pop    %rbx
  ret
L40:
  movss  D132(%rip),%xmm0
  jmp    L154
L32:
  movss  D132(%rip),%xmm0
  jmp    L154
L0:
  movss  D33(%rip),%xmm0
  jmp    L154
L41:
  cmpl   $0x1,0x10(%rsp)
  je     L0
  movss  D132(%rip),%xmm0
  jmp    L154
L12:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: tag: D61
type: string
name: retrieve_data
arguments: tag: D116
type: string
name: retrieve_data
arguments: tag: D48
type: string
name: retrieve_data
arguments: tag: D80
type: string
name: retrieve_data
arguments: tag: D49
type: byte[4]
name: retrieve_data
arguments: tag: D33
type: byte[4]
name: retrieve_data
arguments: tag: D89
type: byte[4]
name: retrieve_data
arguments: tag: D132
type: byte[4]
name: retrieve_data
arguments: tag: D52
type: string

tool: D61: Is the customer married (1=married, 0=unmarried)? 

tool: D116:  %d

tool: D48: 
Is the customer male or female (1=female, 0=male)? 

tool: D80: 
What is the customer's age? 

tool: {"D49": [0x00,0x00,0x48,0x43]}

tool: {"D33": [0x00,0x00,0x07,0x43]}

tool: {"D89": [0x00,0x00,0x34,0x43]}

tool: {"D132": [0x00,0x00,0x16,0x43]}

tool: D52: 
The daily rate for the customer is: $%.2f

assistant: ```c
int main() {
  int marriage;
  int sex;
  int age;
  float rate = 100.00;
  printf("Is the customer married (1=married, 0=unmarried)? ");
  scanf(" %d", &marriage);
  printf("\nIs the customer male or female (1=female, 0=male)? ");
  scanf(" %d", &sex);
  printf("\nWhat is the customer's age? ");
  scanf(" %d", &age);
  if (marriage == 1 && sex == 0 && age < 25) {
    rate -= 10;
    rate *= 2;
  } else if (marriage == 0 && sex == 0 && age < 25)
    rate *= 2;
  else if (marriage == 1 && sex == 0 && age >= 25) {
    rate -= 10;
    rate *= 1.5;
  } else if (marriage == 0 && sex == 0 && age >= 25)
    rate *= 1.5;
  else if (marriage == 1 && sex == 1) {
    rate -= 10;
    rate *= 1.5;
  } else
    rate *= 1.5;
  printf("\nThe daily rate for the customer is: $%.2f", rate);
  return 0;
}
```