user: What is the c source code of the assembly code below:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xeb0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0xea8(%rbp),%rax
  mov    %rax,%rsi
  lea    D10(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movl   $0x0,-0xe84(%rbp)
  jmp    L19
L28:
  lea    -0xe9c(%rbp),%rdx
  lea    -0xea0(%rbp),%rax
  mov    %rax,%rsi
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  movl   $0x0,-0xe90(%rbp)
  jmp    L107
L91:
  lea    -0xe80(%rbp),%rcx
  mov    -0xe90(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  shl    $0x2,%rax
  add    %rcx,%rax
  mov    %rax,%rdi
  call   <gets@plt>
  addl   $0x1,-0xe90(%rbp)
L107:
  mov    -0xea0(%rbp),%eax
  cmp    %eax,-0xe90(%rbp)
  jl     L91
  movl   $0x0,-0xe90(%rbp)
  jmp    L0
L137:
  movl   $0x0,-0xe8c(%rbp)
  jmp    L134
L63:
  mov    -0xe8c(%rbp),%eax
  movslq %eax,%rcx
  mov    -0xe90(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  shl    $0x2,%rax
  add    %rbp,%rax
  add    %rcx,%rax
  sub    $0xe80,%rax
  movzbl (%rax),%eax
  cmp    $0x40,%al
  jle    L79
  mov    -0xe8c(%rbp),%eax
  movslq %eax,%rcx
  mov    -0xe90(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  shl    $0x2,%rax
  add    %rbp,%rax
  add    %rcx,%rax
  sub    $0xe80,%rax
  movzbl (%rax),%eax
  cmp    $0x5a,%al
  jg     L79
  mov    -0xe8c(%rbp),%eax
  movslq %eax,%rcx
  mov    -0xe90(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  shl    $0x2,%rax
  add    %rbp,%rax
  add    %rcx,%rax
  sub    $0xe80,%rax
  movzbl (%rax),%eax
  add    $0x20,%eax
  mov    %eax,%ecx
  mov    -0xe8c(%rbp),%eax
  movslq %eax,%rsi
  mov    -0xe90(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  shl    $0x2,%rax
  add    %rbp,%rax
  add    %rsi,%rax
  sub    $0xe80,%rax
  mov    %cl,(%rax)
L79:
  addl   $0x1,-0xe8c(%rbp)
L134:
  mov    -0xe9c(%rbp),%eax
  cmp    %eax,-0xe8c(%rbp)
  jl     L63
  addl   $0x1,-0xe90(%rbp)
L0:
  mov    -0xea0(%rbp),%eax
  cmp    %eax,-0xe90(%rbp)
  jl     L137
  lea    -0xea4(%rbp),%rax
  mov    %rax,%rsi
  lea    D10(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  movl   $0x0,-0xe88(%rbp)
  jmp    L58
L69:
  lea    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <gets@plt>
  mov    -0xe9c(%rbp),%ecx
  mov    -0xea0(%rbp),%edx
  lea    -0x70(%rbp),%r8
  lea    -0xe80(%rbp),%rdi
  lea    -0xe94(%rbp),%rsi
  lea    -0xe98(%rbp),%rax
  mov    %r8,%r9
  mov    %rdi,%r8
  mov    %rax,%rdi
  call   <judge@plt>
  mov    -0xe94(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0xe98(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%esi
  lea    D32(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  addl   $0x1,-0xe88(%rbp)
L58:
  mov    -0xea4(%rbp),%eax
  cmp    %eax,-0xe88(%rbp)
  jl     L69
  mov    -0xea8(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0xe84(%rbp)
  je     L67
  mov    $0xa,%edi
  call   <putchar@plt>
L67:
  addl   $0x1,-0xe84(%rbp)
L19:
  mov    -0xea8(%rbp),%eax
  cmp    %eax,-0xe84(%rbp)
  jl     L28
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L78
  call   <__stack_chk_fail@plt>
L78:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D10
type_guessed: string
name: extract_symbolic_data
arguments: tag: D37
type_guessed: string
name: extract_symbolic_data
arguments: tag: D32
type_guessed: string

tool: D10: %d

tool: D37: %d%d

tool: D32: %d %d

assistant: ```c
main() {
  char s[60][60], sc[100];
  int ca, i, j, l, k, m, n, ans;
  int lh, ll, length;
  scanf("%d", &ca);
  for (ans = 0; ans < ca; ans++) {
    scanf("%d%d", &m, &n);
    getchar();
    for (i = 0; i < m; i++)
      gets(s[i]);
    for (i = 0; i < m; i++)
      for (j = 0; j < n; j++)
        if (s[i][j] >= 'A' && s[i][j] <= 'Z')
          s[i][j] -= 'A' - 'a';
    scanf("%d", &k);
    getchar();
    for (l = 0; l < k; l++) {
      gets(sc);
      judge(&lh, &ll, m, n, s, sc);
      printf("%d %d", lh + 1, ll + 1);
      putchar('\n');
    }
    if (ans != ca - 1)
      putchar('\n');
  }
  return 0;
}
```