user: Demonstrate the C code that generates the assembly output below:

```asm
<main>:
  endbr64
  push   %rbx
  sub    $0x70,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x68(%rsp)
  xor    %eax,%eax
  lea    D50(%rip),%rdi
  call   <printf@plt>
  lea    0x30(%rsp),%rdi
  call   <gets@plt>
  lea    D72(%rip),%rdi
  call   <puts@plt>
  lea    0x18(%rsp),%rsi
  lea    D63(%rip),%rbx
  mov    %rbx,%rdi
  call   <scanf@plt>
  lea    D48(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x28(%rsp),%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  lea    D69(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  call   <scanf@plt>
  movsd  0x18(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm0
  movapd %xmm1,%xmm3
  mulsd  %xmm0,%xmm3
  mov    0x28(%rsp),%rbx
  movsd  %xmm3,0x8(%rsp)
  movq   %rbx,%xmm5
  comisd %xmm5,%xmm3
  jbe    L27
  lea    0x30(%rsp),%rsi
  movq   %rbx,%xmm2
  lea    D41(%rip),%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  movapd %xmm0,%xmm1
  movq   %rbx,%xmm7
  subsd  %xmm7,%xmm1
  lea    D49(%rip),%rdi
  mov    $0x2,%eax
  call   <printf@plt>
L6:
  mov    0x68(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L2
  mov    $0x0,%eax
  add    $0x70,%rsp
  pop    %rbx
  ret
L27:
  lea    0x30(%rsp),%rsi
  movq   %rbx,%xmm2
  lea    D41(%rip),%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  movq   %rbx,%xmm1
  movsd  0x8(%rsp),%xmm6
  subsd  %xmm6,%xmm1
  movapd %xmm6,%xmm0
  lea    D12(%rip),%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  jmp    L6
L2:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D50
datatype: string
name: disassemble_data
arguments: label: D72
datatype: string
name: disassemble_data
arguments: label: D63
datatype: string
name: disassemble_data
arguments: label: D48
datatype: string
name: disassemble_data
arguments: label: D69
datatype: string
name: disassemble_data
arguments: label: D41
datatype: string
name: disassemble_data
arguments: label: D49
datatype: string
name: disassemble_data
arguments: label: D12
datatype: string

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

tool: D72: Enter meal rate:>

tool: D63: %lf

tool: D48: 
Total pay:

tool: D69: 
Total meal:

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


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

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