user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x40(%rbp),%rax
  mov    %rax,%rdi
  call   <gets@plt>
  lea    D21(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    -0x70(%rbp),%rax
  mov    %rax,%rsi
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x60(%rbp),%rax
  mov    %rax,%rsi
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D65(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x68(%rbp),%rax
  mov    %rax,%rsi
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  movsd  -0x70(%rbp),%xmm1
  movsd  -0x68(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x60(%rbp),%xmm1
  movsd  -0x58(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L15
  movsd  -0x60(%rbp),%xmm1
  movsd  -0x58(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x60(%rbp),%xmm1
  movsd  -0x70(%rbp),%xmm0
  mov    -0x68(%rbp),%rdx
  lea    -0x40(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdx,%xmm0
  mov    %rax,%rsi
  lea    D33(%rip),%rax
  mov    %rax,%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  movsd  -0x48(%rbp),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D94(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  jmp    L26
L15:
  movsd  -0x60(%rbp),%xmm0
  subsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  -0x60(%rbp),%xmm1
  movsd  -0x70(%rbp),%xmm0
  mov    -0x68(%rbp),%rdx
  lea    -0x40(%rbp),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rdx,%xmm0
  mov    %rax,%rsi
  lea    D33(%rip),%rax
  mov    %rax,%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  movsd  -0x50(%rbp),%xmm0
  mov    -0x58(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
L26:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L2
  call   <__stack_chk_fail@plt>
L2:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D64
type_infered: string
name: parse_data
arguments: data_tag: D21
type_infered: string
name: parse_data
arguments: data_tag: D44
type_infered: string
name: parse_data
arguments: data_tag: D69
type_infered: string
name: parse_data
arguments: data_tag: D65
type_infered: string
name: parse_data
arguments: data_tag: D33
type_infered: string
name: parse_data
arguments: data_tag: D94
type_infered: string
name: parse_data
arguments: data_tag: D47
type_infered: string

tool: D64: Enter the member info below: 
name:

tool: D21: Enter meal rate:>

tool: D44: %lf

tool: D69: 
Total pay:

tool: D65: 
Total meal:

tool: D33: 
Name:%s
Total meal:%.2f
Meal rate:%.2f
Total pay:%.2f


tool: D94: Total buy:%.2f
Money give:%.2f

tool: D47: Total buy:%.2f
Money back:%.2f

assistant: ```c
int main() {
  char name[50];
  double meal_rate, total_meal, total_pay, total_buy, money_back, money_give;
  printf("Enter the member info below: \nname:");
  gets(name);
  printf("Enter meal rate:>\n");
  scanf("%lf", &meal_rate);
  printf("\nTotal pay:");
  scanf("%lf", &total_pay);
  printf("\nTotal meal:");
  scanf("%lf", &total_meal);
  total_buy = meal_rate * total_meal;
  if (total_buy > total_pay) {
    money_give = total_buy - total_pay;
    printf("\nName:%s\nTotal meal:%.2f\nMeal rate:%.2f\nTotal pay:%.2f\n", name, total_meal, meal_rate, total_pay);
    printf("Total buy:%.2f\nMoney give:%.2f", total_buy, money_give);
  } else {
    money_back = total_pay - total_buy;
    printf("\nName:%s\nTotal meal:%.2f\nMeal rate:%.2f\nTotal pay:%.2f\n", name, total_meal, meal_rate, total_pay);
    printf("Total buy:%.2f\nMoney back:%.2f", total_buy, money_back);
  }
  return (0);
}
```