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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    -0x12000(%rsp),%r11
L138:
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  cmp    %r11,%rsp
  jne    L138
  sub    $0xee0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x12ed0(%rbp),%rax
  mov    %rax,%rsi
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movq   $0x0,-0x12ea8(%rbp)
  jmp    L5
L32:
  lea    -0x12ec8(%rbp),%rdx
  lea    -0x12ec0(%rbp),%rax
  mov    %rax,%rsi
  lea    D36(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movq   $0x0,-0x12ea0(%rbp)
  jmp    L111
L199:
  lea    -0x12e80(%rbp),%rdx
  mov    -0x12ea0(%rbp),%rax
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    %rax,%rsi
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x12ea0(%rbp),%rax
  mov    -0x12e80(%rbp,%rax,8),%rdx
  mov    -0x12ea0(%rbp),%rax
  mov    %rdx,-0x10f10(%rbp,%rax,8)
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    %al,-0x12ed1(%rbp)
  lea    -0xb0c0(%rbp),%rcx
  mov    -0x12ea0(%rbp),%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  mov    %rax,%rdx
  shl    $0x4,%rdx
  sub    %rax,%rdx
  lea    (%rcx,%rdx,1),%rax
  mov    %rax,%rdi
  call   <gets@plt>
  mov    -0x12ea0(%rbp),%rax
  movq   $0x0,-0xefa0(%rbp,%rax,8)
  addq   $0x1,-0x12ea0(%rbp)
L111:
  mov    -0x12ec0(%rbp),%rax
  cmp    %rax,-0x12ea0(%rbp)
  jl     L199
  movq   $0x0,-0x12ea0(%rbp)
  jmp    L200
L108:
  movq   $0x0,-0x12e90(%rbp)
  jmp    L144
L66:
  mov    -0x12e90(%rbp),%rax
  mov    -0x10f10(%rbp,%rax,8),%rdx
  mov    -0x12e90(%rbp),%rax
  add    $0x1,%rax
  mov    -0x10f10(%rbp,%rax,8),%rax
  cmp    %rax,%rdx
  jle    L145
  mov    -0x12e90(%rbp),%rax
  mov    -0x10f10(%rbp,%rax,8),%rax
  mov    %rax,-0x12e88(%rbp)
  mov    -0x12e90(%rbp),%rax
  add    $0x1,%rax
  mov    -0x10f10(%rbp,%rax,8),%rdx
  mov    -0x12e90(%rbp),%rax
  mov    %rdx,-0x10f10(%rbp,%rax,8)
  mov    -0x12e90(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    -0x12e88(%rbp),%rax
  mov    %rax,-0x10f10(%rbp,%rdx,8)
L145:
  addq   $0x1,-0x12e90(%rbp)
L144:
  mov    -0x12ec0(%rbp),%rax
  sub    -0x12ea0(%rbp),%rax
  sub    $0x1,%rax
  cmp    %rax,-0x12e90(%rbp)
  jl     L66
  addq   $0x1,-0x12ea0(%rbp)
L200:
  mov    -0x12ec0(%rbp),%rax
  cmp    %rax,-0x12ea0(%rbp)
  jl     L108
  movq   $0x0,-0x12ea0(%rbp)
  jmp    L87
L34:
  movq   $0x0,-0x12e90(%rbp)
  jmp    L89
L227:
  mov    -0x12ea0(%rbp),%rax
  mov    -0x10f10(%rbp,%rax,8),%rdx
  mov    -0x12e90(%rbp),%rax
  mov    -0x12e80(%rbp,%rax,8),%rax
  cmp    %rax,%rdx
  jne    L123
  mov    -0x12ea0(%rbp),%rax
  mov    -0x12e90(%rbp),%rdx
  mov    %rdx,-0xd030(%rbp,%rax,8)
L123:
  addq   $0x1,-0x12e90(%rbp)
L89:
  mov    -0x12ec0(%rbp),%rax
  cmp    %rax,-0x12e90(%rbp)
  jl     L227
  addq   $0x1,-0x12ea0(%rbp)
L87:
  mov    -0x12ec0(%rbp),%rax
  cmp    %rax,-0x12ea0(%rbp)
  jl     L34
  movq   $0x0,-0x12ea0(%rbp)
  jmp    L205
L134:
  lea    -0x12eb8(%rbp),%rax
  mov    %rax,%rsi
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movq   $0x0,-0x12e90(%rbp)
  jmp    L143
L4:
  mov    -0x12e90(%rbp),%rax
  mov    -0x10f10(%rbp,%rax,8),%rdx
  mov    -0x12eb8(%rbp),%rax
  cmp    %rax,%rdx
  jne    L67
  mov    -0x12e90(%rbp),%rax
  mov    %rax,-0x12e98(%rbp)
L67:
  addq   $0x1,-0x12e90(%rbp)
L143:
  mov    -0x12ec0(%rbp),%rax
  cmp    %rax,-0x12e90(%rbp)
  jl     L4
  lea    -0x12eb0(%rbp),%rax
  mov    %rax,%rsi
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x12e98(%rbp),%rax
  mov    -0xefa0(%rbp,%rax,8),%rdx
  mov    -0x12eb0(%rbp),%rax
  cmp    %rax,%rdx
  jge    L97
  mov    -0x12eb0(%rbp),%rdx
  mov    -0x12e98(%rbp),%rax
  mov    %rdx,-0xefa0(%rbp,%rax,8)
L97:
  addq   $0x1,-0x12ea0(%rbp)
L205:
  mov    -0x12ec8(%rbp),%rax
  cmp    %rax,-0x12ea0(%rbp)
  jl     L134
  movq   $0x0,-0x12ea0(%rbp)
  jmp    L78
L178:
  mov    -0x12ea0(%rbp),%rax
  mov    -0xd030(%rbp,%rax,8),%rax
  mov    %rax,-0x12e90(%rbp)
  lea    -0xb0c0(%rbp),%rcx
  mov    -0x12e90(%rbp),%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  mov    %rax,%rdx
  shl    $0x4,%rdx
  sub    %rax,%rdx
  lea    (%rcx,%rdx,1),%rax
  mov    %rax,%rsi
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x12ea0(%rbp),%rax
  mov    -0xefa0(%rbp,%rax,8),%rax
  mov    %rax,%rsi
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addq   $0x1,-0x12ea0(%rbp)
L78:
  mov    -0x12ec0(%rbp),%rax
  cmp    %rax,-0x12ea0(%rbp)
  jl     L178
  addq   $0x1,-0x12ea8(%rbp)
L5:
  mov    -0x12ed0(%rbp),%rax
  cmp    %rax,-0x12ea8(%rbp)
  jl     L32
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L37
  call   <__stack_chk_fail@plt>
L37:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D64
type: string
name: extract_symbolic_data
arguments: data_label: D36
type: string
name: extract_symbolic_data
arguments: data_label: D69
type: string
name: extract_symbolic_data
arguments: data_label: D62
type: string

tool: D64: %lld

tool: D36: %lld %lld

tool: D69: %s 

tool: D62: %lld


assistant: ```c
int main() {
  long long int q, w, n, m, i, rn[1005], ron[1005], temp, mark[1005], roll, p, j, marks, name[1005];
  char nm[1005][45], x;
  scanf("%lld", &q);
  for (w = 0; w < q; w++) {
    scanf("%lld %lld", &m, &n);
    for (i = 0; i < m; i++) {
      scanf("%lld", &rn[i]);
      ron[i] = rn[i];
      x = getchar();
      gets(nm[i]);
      mark[i] = 0;
    }
    for (i = 0; i < m; i++) {
      for (j = 0; j < m - i - 1; j++) {
        if (ron[j] > ron[j + 1]) {
          temp = ron[j];
          ron[j] = ron[j + 1];
          ron[j + 1] = temp;
        }
      }
    }
    for (i = 0; i < m; i++) {
      for (j = 0; j < m; j++) {
        if (ron[i] == rn[j])
          name[i] = j;
      }
    }
    for (i = 0; i < n; i++) {
      scanf("%lld", &roll);
      for (j = 0; j < m; j++) {
        if (roll == ron[j])
          p = j;
      }
      scanf("%lld", &marks);
      if (marks > mark[p])
        mark[p] = marks;
    }
    for (i = 0; i < m; i++) {
      j = name[i];
      printf("%s ", nm[j]);
      printf("%lld\n", mark[i]);
    }
  }
  return 0;
}
```