user: What is the c source code of the assembly code below?

```asm
<main>:
  endbr64
  push   %rbp
  lea    D76(%rip),%rdi
  push   %rbx
  xor    %ebx,%ebx
  sub    $0x48,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  lea    0x10(%rsp),%rbp
  call   <printf@plt>
  jmp    L8
  nop
L52:
  cmp    $0xa,%al
  je     L82
  mov    %al,0x0(%rbp,%rbx,1)
  add    $0x1,%rbx
L8:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0x19,%ebx
  jne    L52
L82:
  lea    D28(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0xc(%rsp),%rsi
  lea    D13(%rip),%rdi
  call   <scanf@plt>
  mov    0xc(%rsp),%edx
  cmp    $0xc7,%edx
  jg     L34
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  mulsd  D24(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
L37:
  comiss D16(%rip),%xmm0
  jbe    L22
  movsd  D60(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm0,%xmm1
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
L22:
  mov    %rbp,%rsi
  lea    D38(%rip),%rdi
  mov    $0x1,%eax
  cvtss2sd %xmm0,%xmm0
  call   <printf@plt>
  mov    0x38(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L40
  add    $0x48,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  ret
  nopl   0x0(%rax)
L34:
  lea    -0xc8(%rdx),%eax
  cmp    $0x63,%eax
  ja     L16
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  D48(%rip),%xmm0
  addsd  D55(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  jmp    L37
L16:
  lea    -0x12c(%rdx),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  addsd  D2(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  jmp    L37
L40:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D76
type_guessed: string
name: extract_symbolic_data
arguments: label: D28
type_guessed: string
name: extract_symbolic_data
arguments: label: D13
type_guessed: string
name: extract_symbolic_data
arguments: label: D24
type_guessed: f64
name: extract_symbolic_data
arguments: label: D16
type_guessed: byte[4]
name: extract_symbolic_data
arguments: label: D60
type_guessed: f64
name: extract_symbolic_data
arguments: label: D38
type_guessed: string
name: extract_symbolic_data
arguments: label: D48
type_guessed: f64
name: extract_symbolic_data
arguments: label: D55
type_guessed: f32[2]
name: extract_symbolic_data
arguments: label: D2
type_guessed: f32[2]

tool: D76: Enter the Name of Consumer: 

tool: D28: Enter the Units Consumed: 

tool: D13: %d

tool: D24: 0.8

tool: {"D16": [0x00,0x00,0xc8,0x43]}

tool: D60: 0.15

tool: D38: ******************************
Name: %-25s 
Units Consumed: %d
AMT: %.2f 
******************************


tool: D48: 0.9

tool: {"D55": [0.0,3.5625]}

tool: {"D2": [0.0,3.73828125]}

assistant: ```c
int main() {
  char name[25], ch;
  int u, i = 0;
  float t = 0;
  printf("Enter the Name of Consumer: ");
  while ((ch = getchar()) != '\n' && i < 25)
    name[i++] = ch;
  printf("Enter the Units Consumed: ");
  scanf("%d", &u);
  if (u < 200)
    t = u * 0.80;
  if (u >= 200 && u < 300)
    t = 200 * 0.80 + (u - 200) * 0.90;
  if (u >= 300)
    t = 200 * 0.80 + 100 * 0.90 + (u - 300);
  if (t > 400)
    t += t * 0.15;
  printf("******************************\n"
         "Name: %-25s \n"
         "Units Consumed: %d\n"
         "AMT: %.2f \n"
         "******************************\n",
         name, u, t);
  return 0;
}
```