user: 请从给定的汇编指令推导出C源代码:

```asm
<main>:
  endbr64
  push   %r15
  lea    D628(%rip),%r15
  push   %r14
  mov    %r15,%rdi
  lea    D506(%rip),%r14
  push   %r13
  lea    D820(%rip),%r13
  push   %r12
  push   %rbp
  lea    D347(%rip),%rbp
  push   %rbx
  sub    $0x68,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x58(%rsp)
  xor    %eax,%eax
  call   <puts@plt>
  mov    %r14,%rdi
  call   <puts@plt>
  lea    D1032(%rip),%rdi
  call   <puts@plt>
  lea    D963(%rip),%rdi
  call   <puts@plt>
  lea    D55(%rip),%rdi
  call   <puts@plt>
  lea    D760(%rip),%rdi
  call   <puts@plt>
  pxor   %xmm6,%xmm6
  xor    %eax,%eax
  movsd  %xmm6,0x18(%rsp)
  movsd  %xmm6,0x10(%rsp)
  movsd  %xmm6,0x8(%rsp)
  call   <getchar@plt>
  cmp    $0x61,%al
  je     L230
  nopl   0x0(%rax,%rax,1)
L123:
  lea    -0x62(%rax),%edx
  cmp    $0x1,%dl
  ja     L183
  cmp    $0x62,%al
  je     L204
  lea    D283(%rip),%rdi
  lea    0x50(%rsp),%rbx
  call   <puts@plt>
  jmp    L248
  nop
L191:
  movsd  0x18(%rsp),%xmm5
  addsd  0x50(%rsp),%xmm5
  mov    %r13,%rdi
  movsd  %xmm5,0x18(%rsp)
  call   <puts@plt>
L248:
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  cmp    $0x1,%eax
  je     L191
L31:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L31
L255:
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %r15,%rdi
  call   <puts@plt>
  mov    %r14,%rdi
  call   <puts@plt>
  lea    D1032(%rip),%rdi
  call   <puts@plt>
  lea    D963(%rip),%rdi
  call   <puts@plt>
  lea    D55(%rip),%rdi
  call   <puts@plt>
  lea    D760(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0x61,%al
  jne    L123
L230:
  lea    D713(%rip),%rdi
  lea    0x50(%rsp),%rbx
  call   <puts@plt>
  lea    D545(%rip),%r12
  jmp    L150
  nopl   0x0(%rax,%rax,1)
L163:
  movsd  0x8(%rsp),%xmm7
  addsd  0x50(%rsp),%xmm7
  mov    %r12,%rdi
  movsd  %xmm7,0x8(%rsp)
  call   <puts@plt>
L150:
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  cmp    $0x1,%eax
  je     L163
L66:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  je     L255
  jmp    L66
  nopl   0x0(%rax,%rax,1)
L204:
  lea    D296(%rip),%rdi
  lea    0x50(%rsp),%rbx
  call   <puts@plt>
  lea    D945(%rip),%r12
  jmp    L249
  nopw   0x0(%rax,%rax,1)
L246:
  movsd  0x10(%rsp),%xmm3
  addsd  0x50(%rsp),%xmm3
  mov    %r12,%rdi
  movsd  %xmm3,0x10(%rsp)
  call   <puts@plt>
L249:
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  cmp    $0x1,%eax
  je     L246
L216:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  je     L255
  jmp    L216
  nopl   0x0(%rax,%rax,1)
L183:
  movsd  0x8(%rsp),%xmm1
  movsd  D510(%rip),%xmm5
  movsd  0x10(%rsp),%xmm0
  movsd  D182(%rip),%xmm6
  mulsd  %xmm1,%xmm5
  movsd  0x18(%rsp),%xmm7
  movsd  D829(%rip),%xmm2
  mulsd  %xmm0,%xmm6
  addsd  %xmm0,%xmm1
  mulsd  %xmm7,%xmm2
  movapd %xmm1,%xmm0
  movapd %xmm5,%xmm4
  addsd  %xmm7,%xmm0
  addsd  %xmm6,%xmm4
  addsd  %xmm2,%xmm4
  comisd D515(%rip),%xmm4
  jbe    L16
  movsd  D608(%rip),%xmm1
  movsd  D140(%rip),%xmm7
  mulsd  %xmm4,%xmm7
  comisd %xmm0,%xmm1
  jbe    L38
  movsd  %xmm2,0x38(%rsp)
  movsd  D719(%rip),%xmm2
  lea    D301(%rip),%rdi
  movsd  %xmm4,0x40(%rsp)
  addsd  %xmm7,%xmm2
  movsd  %xmm7,0x20(%rsp)
  movsd  %xmm6,0x30(%rsp)
  movsd  %xmm5,0x28(%rsp)
  movq   %xmm2,%rbx
  call   <puts@plt>
  mov    D510(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D325(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D182(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D48(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D829(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D157(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D230(%rip),%rdi
  call   <puts@plt>
  lea    D298(%rip),%rdi
  call   <puts@plt>
  movsd  0x30(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm5
  lea    D537(%rip),%rdi
  movsd  0x38(%rsp),%xmm2
  mov    $0x3,%eax
  movapd %xmm5,%xmm0
  movapd %xmm6,%xmm1
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm7
  mov    $0x1,%eax
  lea    D57(%rip),%rdi
  movapd %xmm7,%xmm0
  call   <printf@plt>
  mov    D719(%rip),%rax
  movsd  0x40(%rsp),%xmm4
  movq   %rax,%xmm3
L187:
  mulsd  D341(%rip),%xmm4
  lea    D423(%rip),%rdi
  mov    $0x1,%eax
  movsd  %xmm3,0x8(%rsp)
  movapd %xmm4,%xmm0
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm3
  jmp    L208
L16:
  movsd  D608(%rip),%xmm1
  comisd %xmm0,%xmm1
  jbe    L241
  movsd  %xmm2,0x38(%rsp)
  movsd  D719(%rip),%xmm2
  lea    D301(%rip),%rdi
  movsd  %xmm4,0x20(%rsp)
  addsd  %xmm4,%xmm2
  movsd  %xmm6,0x30(%rsp)
  movsd  %xmm5,0x28(%rsp)
  movq   %xmm2,%rbx
  call   <puts@plt>
  mov    D510(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D325(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D182(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D48(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D829(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D157(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D230(%rip),%rdi
  call   <puts@plt>
  lea    D298(%rip),%rdi
  call   <puts@plt>
  movsd  0x30(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm5
  lea    D537(%rip),%rdi
  movsd  0x38(%rsp),%xmm2
  mov    $0x3,%eax
  movapd %xmm5,%xmm0
  movapd %xmm6,%xmm1
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm4
  mov    $0x1,%eax
  lea    D57(%rip),%rdi
  movapd %xmm4,%xmm0
  call   <printf@plt>
  mov    D719(%rip),%rax
  movq   %rax,%xmm3
L208:
  movapd %xmm3,%xmm0
  lea    D702(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movq   %rbx,%xmm0
  mov    $0x1,%eax
  lea    D340(%rip),%rdi
  call   <printf@plt>
  lea    D598(%rip),%rdi
  call   <puts@plt>
  mov    0x58(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L24
  add    $0x68,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L241:
  movsd  D169(%rip),%xmm1
  comisd %xmm0,%xmm1
  jbe    L227
  movsd  %xmm2,0x38(%rsp)
  movsd  D689(%rip),%xmm2
  lea    D301(%rip),%rdi
  movsd  %xmm4,0x20(%rsp)
  addsd  %xmm4,%xmm2
  movsd  %xmm6,0x30(%rsp)
  movsd  %xmm5,0x28(%rsp)
  movq   %xmm2,%rbx
  call   <puts@plt>
  mov    D510(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D325(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D182(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D48(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D829(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D157(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D230(%rip),%rdi
  call   <puts@plt>
  lea    D298(%rip),%rdi
  call   <puts@plt>
  movsd  0x30(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm5
  lea    D537(%rip),%rdi
  movsd  0x38(%rsp),%xmm2
  mov    $0x3,%eax
  movapd %xmm5,%xmm0
  movapd %xmm6,%xmm1
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm4
  mov    $0x1,%eax
  lea    D57(%rip),%rdi
  movapd %xmm4,%xmm0
  call   <printf@plt>
  mov    D689(%rip),%rax
  movq   %rax,%xmm3
  jmp    L208
L38:
  movsd  D169(%rip),%xmm1
  comisd %xmm0,%xmm1
  ja     L42
  subsd  %xmm1,%xmm0
  movsd  D494(%rip),%xmm3
  movsd  %xmm2,0x40(%rsp)
  movapd %xmm7,%xmm2
  lea    D301(%rip),%rdi
  movsd  %xmm4,0x48(%rsp)
  movsd  %xmm7,0x28(%rsp)
  mulsd  %xmm0,%xmm3
  movsd  %xmm6,0x38(%rsp)
  addsd  D689(%rip),%xmm3
  movsd  %xmm5,0x30(%rsp)
  addsd  %xmm3,%xmm2
  movsd  %xmm3,0x20(%rsp)
  movq   %xmm2,%rbx
  call   <puts@plt>
  mov    D510(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D325(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D182(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D48(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D829(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D157(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D230(%rip),%rdi
  call   <puts@plt>
  lea    D298(%rip),%rdi
  call   <puts@plt>
  movsd  0x38(%rsp),%xmm6
  movsd  0x30(%rsp),%xmm5
  lea    D537(%rip),%rdi
  movsd  0x40(%rsp),%xmm2
  mov    $0x3,%eax
  movapd %xmm5,%xmm0
  movapd %xmm6,%xmm1
  call   <printf@plt>
  movsd  0x28(%rsp),%xmm7
  mov    $0x1,%eax
  lea    D57(%rip),%rdi
  movapd %xmm7,%xmm0
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm3
  movsd  0x48(%rsp),%xmm4
  jmp    L187
L42:
  movsd  %xmm2,0x38(%rsp)
  movsd  D689(%rip),%xmm2
  lea    D301(%rip),%rdi
  movsd  %xmm4,0x40(%rsp)
  addsd  %xmm7,%xmm2
  movsd  %xmm7,0x20(%rsp)
  movsd  %xmm6,0x30(%rsp)
  movsd  %xmm5,0x28(%rsp)
  movq   %xmm2,%rbx
  call   <puts@plt>
  mov    D510(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D325(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D182(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D48(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D829(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D157(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D230(%rip),%rdi
  call   <puts@plt>
  lea    D298(%rip),%rdi
  call   <puts@plt>
  movsd  0x30(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm5
  lea    D537(%rip),%rdi
  movsd  0x38(%rsp),%xmm2
  mov    $0x3,%eax
  movapd %xmm5,%xmm0
  movapd %xmm6,%xmm1
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm7
  mov    $0x1,%eax
  lea    D57(%rip),%rdi
  movapd %xmm7,%xmm0
  call   <printf@plt>
  mov    D689(%rip),%rax
  movsd  0x40(%rsp),%xmm4
  movq   %rax,%xmm3
  jmp    L187
L227:
  subsd  %xmm1,%xmm0
  movsd  D494(%rip),%xmm3
  movsd  %xmm2,0x40(%rsp)
  movapd %xmm4,%xmm2
  lea    D301(%rip),%rdi
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm6,0x38(%rsp)
  mulsd  %xmm0,%xmm3
  movsd  %xmm5,0x30(%rsp)
  addsd  D689(%rip),%xmm3
  addsd  %xmm3,%xmm2
  movsd  %xmm3,0x20(%rsp)
  movq   %xmm2,%rbx
  call   <puts@plt>
  mov    D510(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D325(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D182(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D48(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D829(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D157(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D230(%rip),%rdi
  call   <puts@plt>
  lea    D298(%rip),%rdi
  call   <puts@plt>
  movsd  0x38(%rsp),%xmm6
  movsd  0x30(%rsp),%xmm5
  lea    D537(%rip),%rdi
  movsd  0x40(%rsp),%xmm2
  mov    $0x3,%eax
  movapd %xmm5,%xmm0
  movapd %xmm6,%xmm1
  call   <printf@plt>
  movsd  0x28(%rsp),%xmm4
  mov    $0x1,%eax
  lea    D57(%rip),%rdi
  movapd %xmm4,%xmm0
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm3
  jmp    L208
L24:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D628
datatype: string
name: disassemble_data
arguments: label: D506
datatype: string
name: disassemble_data
arguments: label: D820
datatype: string
name: disassemble_data
arguments: label: D347
datatype: string
name: disassemble_data
arguments: label: D1032
datatype: string
name: disassemble_data
arguments: label: D963
datatype: string
name: disassemble_data
arguments: label: D55
datatype: string
name: disassemble_data
arguments: label: D760
datatype: string
name: disassemble_data
arguments: label: D283
datatype: string
name: disassemble_data
arguments: label: D713
datatype: string
name: disassemble_data
arguments: label: D545
datatype: string
name: disassemble_data
arguments: label: D296
datatype: string
name: disassemble_data
arguments: label: D945
datatype: string
name: disassemble_data
arguments: label: D510
datatype: f64
name: disassemble_data
arguments: label: D182
datatype: f64
name: disassemble_data
arguments: label: D829
datatype: f64
name: disassemble_data
arguments: label: D515
datatype: byte[16]
name: disassemble_data
arguments: label: D608
datatype: byte[8]
name: disassemble_data
arguments: label: D140
datatype: byte[8]
name: disassemble_data
arguments: label: D719
datatype: f64
name: disassemble_data
arguments: label: D301
datatype: string
name: disassemble_data
arguments: label: D325
datatype: string
name: disassemble_data
arguments: label: D48
datatype: string
name: disassemble_data
arguments: label: D157
datatype: string
name: disassemble_data
arguments: label: D230
datatype: string
name: disassemble_data
arguments: label: D298
datatype: string
name: disassemble_data
arguments: label: D537
datatype: string
name: disassemble_data
arguments: label: D57
datatype: string
name: disassemble_data
arguments: label: D341
datatype: f64
name: disassemble_data
arguments: label: D423
datatype: string
name: disassemble_data
arguments: label: D702
datatype: string
name: disassemble_data
arguments: label: D340
datatype: string
name: disassemble_data
arguments: label: D598
datatype: string
name: disassemble_data
arguments: label: D169
datatype: byte[8]
name: disassemble_data
arguments: label: D689
datatype: byte[8]
name: disassemble_data
arguments: label: D494
datatype: f64

tool: D628: **************The ABC Mail Order Grocery Order System*************

tool: D506: Enter the letter corresponding to the desired vegetable or action:

tool: D820: More pounds of carrots? (q to finish)

tool: D347: %lf

tool: D1032: a) Artichokes               b) Beets

tool: D963: c) Carrots

tool: D55: q) Quit ordering process

tool: D760: ******************************************************************

tool: D283: Please enter pounds of carrots (q to finish):

tool: D713: Please enter pounds of artichokes (q to finish):

tool: D545: More pounds of artichokes? (q to finish)

tool: D296: Please enter pounds of beets (q to finish):

tool: D945: More pounds of beets? (q to finish)

tool: D510: 2.05

tool: D182: 1.15

tool: D829: 1.09

tool: {"D515": [0x00,0x00,0x00,0x00,0x00,0x00,0x59,0x40,0x66,0x66,0x66,0x66,0x66,0x66,0xee,0x3f]}

tool: {"D608": [0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x40]}

tool: {"D140": [0x66,0x66,0x66,0x66,0x66,0x66,0xee,0x3f]}

tool: D719: 6.5

tool: D301: 
---------------------------------------------------------

tool: D325: Artichokes: $%.2f/pound, you have ordered %.1f pound(s)


tool: D48: Beets: $%.2f/pound, you have ordered %.1f pound(s)


tool: D157: Carrots: $%.2f/pound, you have ordered %.1f pound(s)


tool: D230: ---------------------------------------------------------

tool: D298: Summary:


tool: D537: Artichokes: $%.2f
Beets: $%.2f
Carrots: $%.2f


tool: D57: Total: $%.2f



tool: D341: 0.05

tool: D423: Discount: -$%.2f


tool: D702: Shipment: $%.2f


tool: D340: Grand Total Cost: $%.2f



tool: D598: Thank you for purchasing!
Your vegetables will arrive within 3 minutes:)

tool: {"D169": [0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x40]}

tool: {"D689": [0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x40]}

tool: D494: 0.5

assistant: ```c
int main(void) {
  char option;
  double apound, bpound, cpound, pound, temp;
  double total, ship, price;
  bool DISCOUNT_FLAG;
  apound = bpound = cpound = pound = total = ship = price = 0;
  printf("**************The ABC Mail Order Grocery Order System*************\n");
  printf("Enter the letter corresponding to the desired vegetable or action:\n");
  printf("a) Artichokes               b) Beets\n");
  printf("c) Carrots\n");
  printf("q) Quit ordering process\n");
  printf("******************************************************************\n");
  while ((option = getchar()) == 'a' || option == 'b' || option == 'c') {
    switch (option) {
    case 'a':
      printf("Please enter pounds of artichokes (q to finish):\n");
      while (scanf("%lf", &temp) == 1) {
        apound += temp;
        printf("More pounds of artichokes? (q to finish)\n");
      }
      while (getchar() != '\n')
        continue;
      break;
    case 'b':
      printf("Please enter pounds of beets (q to finish):\n");
      while (scanf("%lf", &temp) == 1) {
        bpound += temp;
        printf("More pounds of beets? (q to finish)\n");
      }
      while (getchar() != '\n')
        continue;
      break;
    case 'c':
      printf("Please enter pounds of carrots (q to finish):\n");
      while (scanf("%lf", &temp) == 1) {
        cpound += temp;
        printf("More pounds of carrots? (q to finish)\n");
      }
      while (getchar() != '\n')
        continue;
      break;
    }
    if ('q' == option)
      break;
    putchar('\n');
    printf("**************The ABC Mail Order Grocery Order System*************\n");
    printf("Enter the letter corresponding to the desired vegetable or action:\n");
    printf("a) Artichokes               b) Beets\n");
    printf("c) Carrots\n");
    printf("q) Quit ordering process\n");
    printf("******************************************************************\n");
  }
  price = apound * 2.05 + bpound * 1.15 + cpound * 1.09;
  if (price > 100) {
    price *= (1 - 0.05);
    DISCOUNT_FLAG = true;
  } else
    DISCOUNT_FLAG = false;
  pound = apound + bpound + cpound;
  if (pound < 5)
    ship = 6.5;
  else if (pound < 20)
    ship = 14;
  else
    ship = 14 + (pound - 20) * 0.5;
  total = price + ship;
  printf("\n---------------------------------------------------------\n");
  printf("Artichokes: $%.2f/pound, you have ordered %.1f pound(s)\n", 2.05, apound);
  printf("Beets: $%.2f/pound, you have ordered %.1f pound(s)\n", 1.15, bpound);
  printf("Carrots: $%.2f/pound, you have ordered %.1f pound(s)\n", 1.09, cpound);
  printf("---------------------------------------------------------\n");
  printf("Summary:\n\n");
  printf("Artichokes: $%.2f\nBeets: $%.2f\nCarrots: $%.2f\n", 2.05 * apound, 1.15 * bpound, 1.09 * cpound);
  printf("Total: $%.2f\n\n", price);
  if (DISCOUNT_FLAG)
    printf("Discount: -$%.2f\n", 0.05 * (apound * 2.05 + bpound * 1.15 + cpound * 1.09));
  printf("Shipment: $%.2f\n", ship);
  printf("Grand Total Cost: $%.2f\n\n", total);
  printf("Thank you for purchasing!\nYour vegetables will arrive within 3 minutes:)\n");
  return 0;
}
```