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

```asm
<main>:
  endbr64
  push   %r14
  lea    D46(%rip),%rdi
  xor    %r14d,%r14d
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x30,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  lea    0x1c(%rsp),%rsi
  call   <scanf@plt>
  mov    0x1c(%rsp),%eax
  test   %eax,%eax
  jle    L63
  pxor   %xmm1,%xmm1
  xor    %r13d,%r13d
  lea    0x20(%rsp),%r12
  movapd %xmm1,%xmm0
  lea    0x18(%rsp),%rbp
  lea    D77(%rip),%rbx
  nopl   0x0(%rax)
L42:
  xor    %eax,%eax
  mov    %r12,%rdx
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  movsd  %xmm0,0x8(%rsp)
  movsd  %xmm1,(%rsp)
  call   <scanf@plt>
  mov    0x18(%rsp),%eax
  movsd  (%rsp),%xmm1
  movsd  0x8(%rsp),%xmm0
  add    %eax,%r14d
  cmp    $0x13,%eax
  jle    L67
  pxor   %xmm2,%xmm2
  movsd  D101(%rip),%xmm3
  add    $0x1,%r13d
  cvtsi2sd %eax,%xmm2
  mulsd  0x20(%rsp),%xmm2
  mulsd  %xmm2,%xmm3
  mulsd  D25(%rip),%xmm2
  divsd  D5(%rip),%xmm3
  addsd  %xmm3,%xmm0
  divsd  D5(%rip),%xmm2
  addsd  %xmm2,%xmm1
  cmp    0x1c(%rsp),%r13d
  jl     L42
L35:
  pxor   %xmm2,%xmm2
  mov    %r14d,%esi
  lea    D66(%rip),%rdi
  cvtsi2sd %r14d,%xmm2
  divsd  %xmm2,%xmm0
  call   <printf@plt>
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L49
  add    $0x30,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopw   0x0(%rax,%rax,1)
L67:
  mov    %eax,%edx
  pxor   %xmm2,%xmm2
  pxor   %xmm3,%xmm3
  movsd  0x20(%rsp),%xmm4
  shr    $0x1f,%edx
  add    $0x1,%r13d
  add    %eax,%edx
  and    $0xfffffffe,%edx
  cvtsi2sd %edx,%xmm2
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  and    $0x1,%eax
  mulsd  %xmm4,%xmm2
  sub    %edx,%eax
  cvtsi2sd %eax,%xmm3
  mulsd  %xmm4,%xmm3
  movsd  D53(%rip),%xmm4
  mulsd  %xmm2,%xmm4
  divsd  D5(%rip),%xmm4
  mulsd  D63(%rip),%xmm2
  divsd  D5(%rip),%xmm2
  addsd  %xmm2,%xmm1
  addsd  %xmm4,%xmm3
  addsd  %xmm3,%xmm0
  cmp    %r13d,0x1c(%rsp)
  jg     L42
  jmp    L35
L63:
  pxor   %xmm1,%xmm1
  movapd %xmm1,%xmm0
  jmp    L35
L49:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D46
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D77
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D101
type_guessed: f64
name: extract_symbolic_data
arguments: data_tag: D25
type_guessed: f64
name: extract_symbolic_data
arguments: data_tag: D5
type_guessed: f32[2]
name: extract_symbolic_data
arguments: data_tag: D66
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D53
type_guessed: f64
name: extract_symbolic_data
arguments: data_tag: D63
type_guessed: f64

tool: D46: %d

tool: D77: %d %lf

tool: D101: 80

tool: D25: 20

tool: {"D5": [0.0,3.390625]}

tool: D66: %d
%.2f
%.0f

tool: D53: 90

tool: D63: 10

assistant: ```c
int main() {
  double sum = 0, price, discount = 0;
  int user, n, i, cnt = 0;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d %lf", &user, &price);
    cnt += user;
    sum += (user >= 20) ? price * user * 80.0 / 100 : ((user / 2) * 2) * price * 90.0 / 100 + (user % 2) * price;
    discount += (user >= 20) ? price * user * 20.0 / 100 : ((user / 2) * 2) * price * 10.0 / 100;
  }
  printf("%d\n%.2f\n%.0f", cnt, sum / cnt, discount);
  return 0;
}
```