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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x18,%rsp
  mov    $0x0,%eax
  call   <d@plt>
  mov    $0x76,%edx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <gw@plt>
  mov    $0x14,%edx
  mov    $0x0,%esi
  mov    $0x1,%edi
  call   <gw@plt>
  mov    $0x32,%edx
  mov    $0x0,%esi
  mov    $0x2,%edi
  call   <gw@plt>
  mov    $0x3e8,%edx
  mov    $0x0,%esi
  mov    $0x3,%edi
  call   <gw@plt>
  mov    $0xd,%edx
  mov    $0x0,%esi
  mov    $0x4,%edi
  call   <gw@plt>
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <gw@plt>
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gw@plt>
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x7,%edi
  call   <gw@plt>
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x8,%edi
  call   <gw@plt>
  movq   $0x0,-0x30(%rbp)
L107:
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <gr@plt>
  mov    %eax,%edx
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gw@plt>
  mov    $0x0,%esi
  mov    $0x2,%edi
  call   <gr@plt>
  mov    %rax,%rbx
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  mov    %rbx,%rsi
  mov    %rax,%rdi
  call   <td@plt>
  lea    0x9(%rax),%rbx
  mov    $0x0,%esi
  mov    $0x2,%edi
  call   <gr@plt>
  mov    %rax,%r12
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  mov    %r12,%rsi
  mov    %rax,%rdi
  call   <tm@plt>
  mov    %rbx,%rsi
  mov    %eax,%edi
  call   <gr@plt>
  sub    $0x30,%rax
  mov    %rax,-0x30(%rbp)
L55:
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  add    $0x1,%rax
  mov    %rax,-0x28(%rbp)
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  add    $0x1,%eax
  mov    %eax,%edx
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gw@plt>
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <gr@plt>
  sub    %rax,-0x28(%rbp)
  mov    $0x0,%esi
  mov    $0x4,%edi
  call   <gr@plt>
  sub    %rax,-0x28(%rbp)
  cmpq   $0x0,-0x28(%rbp)
  je     L69
  nop
  mov    $0x0,%esi
  mov    $0x2,%edi
  call   <gr@plt>
  mov    %rax,%rbx
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  mov    %rbx,%rsi
  mov    %rax,%rdi
  call   <td@plt>
  lea    0x9(%rax),%rbx
  mov    $0x0,%esi
  mov    $0x2,%edi
  call   <gr@plt>
  mov    %rax,%r12
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  mov    %r12,%rsi
  mov    %rax,%rdi
  call   <tm@plt>
  mov    %rbx,%rsi
  mov    %eax,%edi
  call   <gr@plt>
  lea    -0x30(%rax),%rdx
  mov    -0x30(%rbp),%rax
  imul   %rdx,%rax
  mov    %rax,-0x30(%rbp)
  jmp    L55
L69:
  nop
  mov    $0x0,%esi
  mov    $0x8,%edi
  call   <gr@plt>
  cmp    %rax,-0x30(%rbp)
  jg     L67
  nop
  jmp    L63
L86:
  nop
L63:
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <gr@plt>
  add    $0x1,%rax
  mov    %rax,-0x30(%rbp)
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <gr@plt>
  add    $0x1,%eax
  mov    %eax,%edx
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <gw@plt>
  mov    $0x0,%esi
  mov    $0x3,%edi
  call   <gr@plt>
  sub    %rax,-0x30(%rbp)
  cmpq   $0x0,-0x30(%rbp)
  je     L0
  jmp    L107
L0:
  nop
  mov    $0x9,%edx
  mov    $0x0,%esi
  mov    $0x7,%edi
  call   <gw@plt>
L84:
  mov    $0x0,%esi
  mov    $0x7,%edi
  call   <gr@plt>
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <gr@plt>
  add    $0x30,%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <putchar@plt>
  mov    $0x0,%esi
  mov    $0x7,%edi
  call   <gr@plt>
  lea    -0x8(%rax),%rbx
  mov    $0x0,%esi
  mov    $0x4,%edi
  call   <gr@plt>
  cmp    %rax,%rbx
  jne    L35
  nop
  mov    $0x3d,%edi
  call   <putchar@plt>
  mov    $0x0,%esi
  mov    $0x8,%edi
  call   <gr@plt>
  mov    %rax,%rsi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  jmp    L92
L35:
  nop
  mov    $0x0,%esi
  mov    $0x7,%edi
  call   <gr@plt>
  add    $0x1,%eax
  mov    %eax,%edx
  mov    $0x0,%esi
  mov    $0x7,%edi
  call   <gw@plt>
  jmp    L84
L67:
  nop
  mov    -0x30(%rbp),%rax
  mov    %eax,%edx
  mov    $0x0,%esi
  mov    $0x8,%edi
  call   <gw@plt>
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gw@plt>
L16:
  mov    $0x0,%esi
  mov    $0x2,%edi
  call   <gr@plt>
  mov    %rax,%rbx
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  mov    %rax,%r12
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <gr@plt>
  add    %r12,%rax
  mov    %rbx,%rsi
  mov    %rax,%rdi
  call   <td@plt>
  lea    0x9(%rax),%rbx
  mov    $0x0,%esi
  mov    $0x2,%edi
  call   <gr@plt>
  mov    %rax,%r12
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  mov    %rax,%r13
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <gr@plt>
  add    %r13,%rax
  mov    %r12,%rsi
  mov    %rax,%rdi
  call   <tm@plt>
  mov    %rbx,%rsi
  mov    %eax,%edi
  call   <gr@plt>
  sub    $0x30,%eax
  mov    %eax,%ebx
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  add    $0x9,%eax
  mov    %ebx,%edx
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <gw@plt>
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  add    $0x1,%rax
  mov    %rax,-0x30(%rbp)
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gr@plt>
  add    $0x1,%eax
  mov    %eax,%edx
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <gw@plt>
  mov    $0x0,%esi
  mov    $0x4,%edi
  call   <gr@plt>
  sub    %rax,-0x30(%rbp)
  cmpq   $0x0,-0x30(%rbp)
  je     L86
  jmp    L16
L92:
  add    $0x18,%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %rbp
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D8
data_type: string

tool: D8: %lld 

assistant: ```c
int main(void) {
  long long t0, t1;
  d();
  gw(0, 0, 118);
  gw(1, 0, 20);
  gw(2, 0, 50);
  gw(3, 0, 1000);
  gw(4, 0, 13);
  gw(5, 0, 0);
  gw(6, 0, 0);
  gw(7, 0, 0);
  gw(8, 0, 0);
  t0 = 0;
_1:
  gw(6, 0, gr(5, 0));
  t0 = gr(tm(gr(6, 0), gr(2, 0)), (td(gr(6, 0), gr(2, 0))) + 9) - 48;
_2:
  t1 = gr(6, 0) + 1;
  gw(6, 0, gr(6, 0) + 1);
  t1 -= gr(5, 0);
  t1 -= gr(4, 0);
  if ((t1) != 0)
    goto _3;
  else
    goto _4;
_3:
  t0 *= gr(tm(gr(6, 0), gr(2, 0)), (td(gr(6, 0), gr(2, 0))) + 9) - 48;
  goto _2;
_4:
  if (t0 > gr(8, 0))
    goto _10;
  else
    goto _5;
_5:
  t0 = gr(5, 0) + 1;
  gw(5, 0, gr(5, 0) + 1);
  t0 -= gr(3, 0);
  if ((t0) != 0)
    goto _1;
  else
    goto _6;
_6:
  gw(7, 0, 9);
_7:
  printf("%c", (char)(gr(gr(7, 0), 0) + 48));
  if ((gr(7, 0) - 8 - gr(4, 0)) != 0)
    goto _9;
  else
    goto _8;
_8:
  printf("=");
  printf("%lld ", gr(8, 0));
  return 0;
_9:
  gw(7, 0, gr(7, 0) + 1);
  goto _7;
_10:
  gw(8, 0, t0);
  gw(6, 0, 0);
_11:
  gw(gr(6, 0) + 9, 0, gr(tm(gr(6, 0) + gr(5, 0), gr(2, 0)), (td(gr(6, 0) + gr(5, 0), gr(2, 0))) + 9) - 48);
  t0 = gr(6, 0) + 1;
  gw(6, 0, gr(6, 0) + 1);
  t0 -= gr(4, 0);
  if ((t0) != 0)
    goto _11;
  else
    goto _5;
}
```