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

```asm
<main>:
  endbr64
  push   %r15
  lea    D286(%rip),%r15
  push   %r14
  mov    %r15,%rdi
  lea    D327(%rip),%r14
  push   %r13
  lea    D36(%rip),%r13
  push   %r12
  push   %rbp
  lea    D831(%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    D124(%rip),%rdi
  call   <puts@plt>
  lea    D570(%rip),%rdi
  call   <puts@plt>
  lea    D324(%rip),%rdi
  call   <puts@plt>
  lea    D288(%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     L86
  nopl   0x0(%rax,%rax,1)
L41:
  lea    -0x62(%rax),%edx
  cmp    $0x1,%dl
  ja     L203
  cmp    $0x62,%al
  je     L31
  lea    D289(%rip),%rdi
  lea    0x50(%rsp),%rbx
  call   <puts@plt>
  jmp    L60
  nop
L138:
  movsd  0x18(%rsp),%xmm5
  addsd  0x50(%rsp),%xmm5
  mov    %r13,%rdi
  movsd  %xmm5,0x18(%rsp)
  call   <puts@plt>
L60:
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  cmp    $0x1,%eax
  je     L138
L229:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L229
L93:
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    %r15,%rdi
  call   <puts@plt>
  mov    %r14,%rdi
  call   <puts@plt>
  lea    D124(%rip),%rdi
  call   <puts@plt>
  lea    D570(%rip),%rdi
  call   <puts@plt>
  lea    D324(%rip),%rdi
  call   <puts@plt>
  lea    D288(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0x61,%al
  jne    L41
L86:
  lea    D479(%rip),%rdi
  lea    0x50(%rsp),%rbx
  call   <puts@plt>
  lea    D132(%rip),%r12
  jmp    L85
  nopl   0x0(%rax,%rax,1)
L32:
  movsd  0x8(%rsp),%xmm7
  addsd  0x50(%rsp),%xmm7
  mov    %r12,%rdi
  movsd  %xmm7,0x8(%rsp)
  call   <puts@plt>
L85:
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  cmp    $0x1,%eax
  je     L32
L50:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  je     L93
  jmp    L50
  nopl   0x0(%rax,%rax,1)
L31:
  lea    D507(%rip),%rdi
  lea    0x50(%rsp),%rbx
  call   <puts@plt>
  lea    D307(%rip),%r12
  jmp    L172
  nopw   0x0(%rax,%rax,1)
L0:
  movsd  0x10(%rsp),%xmm3
  addsd  0x50(%rsp),%xmm3
  mov    %r12,%rdi
  movsd  %xmm3,0x10(%rsp)
  call   <puts@plt>
L172:
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  cmp    $0x1,%eax
  je     L0
L17:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  je     L93
  jmp    L17
  nopl   0x0(%rax,%rax,1)
L203:
  movsd  0x8(%rsp),%xmm1
  movsd  D260(%rip),%xmm5
  movsd  0x10(%rsp),%xmm0
  movsd  D849(%rip),%xmm6
  mulsd  %xmm1,%xmm5
  movsd  0x18(%rsp),%xmm7
  movsd  D863(%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 D982(%rip),%xmm4
  jbe    L231
  movsd  D60(%rip),%xmm1
  movsd  D67(%rip),%xmm7
  mulsd  %xmm4,%xmm7
  comisd %xmm0,%xmm1
  jbe    L36
  movsd  %xmm2,0x38(%rsp)
  movsd  D41(%rip),%xmm2
  lea    D960(%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    D260(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D40(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D849(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D264(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D863(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D342(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D329(%rip),%rdi
  call   <puts@plt>
  lea    D1073(%rip),%rdi
  call   <puts@plt>
  movsd  0x30(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm5
  lea    D557(%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    D118(%rip),%rdi
  movapd %xmm7,%xmm0
  call   <printf@plt>
  mov    D41(%rip),%rax
  movsd  0x40(%rsp),%xmm4
  movq   %rax,%xmm3
L97:
  mulsd  D345(%rip),%xmm4
  lea    D527(%rip),%rdi
  mov    $0x1,%eax
  movsd  %xmm3,0x8(%rsp)
  movapd %xmm4,%xmm0
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm3
  jmp    L227
L231:
  movsd  D60(%rip),%xmm1
  comisd %xmm0,%xmm1
  jbe    L88
  movsd  %xmm2,0x38(%rsp)
  movsd  D41(%rip),%xmm2
  lea    D960(%rip),%rdi
  movsd  %xmm4,0x20(%rsp)
  addsd  %xmm4,%xmm2
  movsd  %xmm6,0x30(%rsp)
  movsd  %xmm5,0x28(%rsp)
  movq   %xmm2,%rbx
  call   <puts@plt>
  mov    D260(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D40(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D849(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D264(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D863(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D342(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D329(%rip),%rdi
  call   <puts@plt>
  lea    D1073(%rip),%rdi
  call   <puts@plt>
  movsd  0x30(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm5
  lea    D557(%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    D118(%rip),%rdi
  movapd %xmm4,%xmm0
  call   <printf@plt>
  mov    D41(%rip),%rax
  movq   %rax,%xmm3
L227:
  movapd %xmm3,%xmm0
  lea    D853(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movq   %rbx,%xmm0
  mov    $0x1,%eax
  lea    D940(%rip),%rdi
  call   <printf@plt>
  lea    D717(%rip),%rdi
  call   <puts@plt>
  mov    0x58(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L79
  add    $0x68,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L88:
  movsd  D935(%rip),%xmm1
  comisd %xmm0,%xmm1
  jbe    L210
  movsd  %xmm2,0x38(%rsp)
  movsd  D876(%rip),%xmm2
  lea    D960(%rip),%rdi
  movsd  %xmm4,0x20(%rsp)
  addsd  %xmm4,%xmm2
  movsd  %xmm6,0x30(%rsp)
  movsd  %xmm5,0x28(%rsp)
  movq   %xmm2,%rbx
  call   <puts@plt>
  mov    D260(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D40(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D849(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D264(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D863(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D342(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D329(%rip),%rdi
  call   <puts@plt>
  lea    D1073(%rip),%rdi
  call   <puts@plt>
  movsd  0x30(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm5
  lea    D557(%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    D118(%rip),%rdi
  movapd %xmm4,%xmm0
  call   <printf@plt>
  mov    D876(%rip),%rax
  movq   %rax,%xmm3
  jmp    L227
L36:
  movsd  D935(%rip),%xmm1
  comisd %xmm0,%xmm1
  ja     L151
  subsd  %xmm1,%xmm0
  movsd  D336(%rip),%xmm3
  movsd  %xmm2,0x40(%rsp)
  movapd %xmm7,%xmm2
  lea    D960(%rip),%rdi
  movsd  %xmm4,0x48(%rsp)
  movsd  %xmm7,0x28(%rsp)
  mulsd  %xmm0,%xmm3
  movsd  %xmm6,0x38(%rsp)
  addsd  D876(%rip),%xmm3
  movsd  %xmm5,0x30(%rsp)
  addsd  %xmm3,%xmm2
  movsd  %xmm3,0x20(%rsp)
  movq   %xmm2,%rbx
  call   <puts@plt>
  mov    D260(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D40(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D849(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D264(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D863(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D342(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D329(%rip),%rdi
  call   <puts@plt>
  lea    D1073(%rip),%rdi
  call   <puts@plt>
  movsd  0x38(%rsp),%xmm6
  movsd  0x30(%rsp),%xmm5
  lea    D557(%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    D118(%rip),%rdi
  movapd %xmm7,%xmm0
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm3
  movsd  0x48(%rsp),%xmm4
  jmp    L97
L151:
  movsd  %xmm2,0x38(%rsp)
  movsd  D876(%rip),%xmm2
  lea    D960(%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    D260(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D40(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D849(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D264(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D863(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D342(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D329(%rip),%rdi
  call   <puts@plt>
  lea    D1073(%rip),%rdi
  call   <puts@plt>
  movsd  0x30(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm5
  lea    D557(%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    D118(%rip),%rdi
  movapd %xmm7,%xmm0
  call   <printf@plt>
  mov    D876(%rip),%rax
  movsd  0x40(%rsp),%xmm4
  movq   %rax,%xmm3
  jmp    L97
L210:
  subsd  %xmm1,%xmm0
  movsd  D336(%rip),%xmm3
  movsd  %xmm2,0x40(%rsp)
  movapd %xmm4,%xmm2
  lea    D960(%rip),%rdi
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm6,0x38(%rsp)
  mulsd  %xmm0,%xmm3
  movsd  %xmm5,0x30(%rsp)
  addsd  D876(%rip),%xmm3
  addsd  %xmm3,%xmm2
  movsd  %xmm3,0x20(%rsp)
  movq   %xmm2,%rbx
  call   <puts@plt>
  mov    D260(%rip),%rax
  movsd  0x8(%rsp),%xmm1
  lea    D40(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D849(%rip),%rax
  movsd  0x10(%rsp),%xmm1
  lea    D264(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  mov    D863(%rip),%rax
  movsd  0x18(%rsp),%xmm1
  lea    D342(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <printf@plt>
  lea    D329(%rip),%rdi
  call   <puts@plt>
  lea    D1073(%rip),%rdi
  call   <puts@plt>
  movsd  0x38(%rsp),%xmm6
  movsd  0x30(%rsp),%xmm5
  lea    D557(%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    D118(%rip),%rdi
  movapd %xmm4,%xmm0
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm3
  jmp    L227
L79:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: tag: D286
type_guessed: string
name: retrieve_data
arguments: tag: D327
type_guessed: string
name: retrieve_data
arguments: tag: D36
type_guessed: string
name: retrieve_data
arguments: tag: D831
type_guessed: string
name: retrieve_data
arguments: tag: D124
type_guessed: string
name: retrieve_data
arguments: tag: D570
type_guessed: string
name: retrieve_data
arguments: tag: D324
type_guessed: string
name: retrieve_data
arguments: tag: D288
type_guessed: string
name: retrieve_data
arguments: tag: D289
type_guessed: string
name: retrieve_data
arguments: tag: D479
type_guessed: string
name: retrieve_data
arguments: tag: D132
type_guessed: string
name: retrieve_data
arguments: tag: D507
type_guessed: string
name: retrieve_data
arguments: tag: D307
type_guessed: string
name: retrieve_data
arguments: tag: D260
type_guessed: f64
name: retrieve_data
arguments: tag: D849
type_guessed: f64
name: retrieve_data
arguments: tag: D863
type_guessed: f64
name: retrieve_data
arguments: tag: D982
type_guessed: byte[16]
name: retrieve_data
arguments: tag: D60
type_guessed: byte[8]
name: retrieve_data
arguments: tag: D67
type_guessed: byte[8]
name: retrieve_data
arguments: tag: D41
type_guessed: f64
name: retrieve_data
arguments: tag: D960
type_guessed: string
name: retrieve_data
arguments: tag: D40
type_guessed: string
name: retrieve_data
arguments: tag: D264
type_guessed: string
name: retrieve_data
arguments: tag: D342
type_guessed: string
name: retrieve_data
arguments: tag: D329
type_guessed: string
name: retrieve_data
arguments: tag: D1073
type_guessed: string
name: retrieve_data
arguments: tag: D557
type_guessed: string
name: retrieve_data
arguments: tag: D118
type_guessed: string
name: retrieve_data
arguments: tag: D345
type_guessed: f64
name: retrieve_data
arguments: tag: D527
type_guessed: string
name: retrieve_data
arguments: tag: D853
type_guessed: string
name: retrieve_data
arguments: tag: D940
type_guessed: string
name: retrieve_data
arguments: tag: D717
type_guessed: string
name: retrieve_data
arguments: tag: D935
type_guessed: byte[8]
name: retrieve_data
arguments: tag: D876
type_guessed: byte[8]
name: retrieve_data
arguments: tag: D336
type_guessed: f64

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

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

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

tool: D831: %lf

tool: D124: a) Artichokes               b) Beets

tool: D570: c) Carrots

tool: D324: q) Quit ordering process

tool: D288: ******************************************************************

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

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

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

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

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

tool: D260: 2.05

tool: D849: 1.15

tool: D863: 1.09

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

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

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

tool: D41: 6.5

tool: D960: 
---------------------------------------------------------

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


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


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


tool: D329: ---------------------------------------------------------

tool: D1073: Summary:


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


tool: D118: Total: $%.2f



tool: D345: 0.05

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


tool: D853: Shipment: $%.2f


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



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

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

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

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