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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x350,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movabs $0x57474e574557544f,%rax
  movabs $0x5a49424151504243,%rdx
  mov    %rax,-0xb0(%rbp)
  mov    %rdx,-0xa8(%rbp)
  movabs $0x474a4c4d50415156,%rax
  movabs $0x424f56515454575a,%rdx
  mov    %rax,-0xa0(%rbp)
  mov    %rdx,-0x98(%rbp)
  movabs $0x44494d50414d5551,%rax
  movabs $0x5651454241435a47,%rdx
  mov    %rax,-0x90(%rbp)
  mov    %rdx,-0x88(%rbp)
  movabs $0x4d58495a4c5a4d42,%rax
  movabs $0x514f56515a58414c,%rdx
  mov    %rax,-0x80(%rbp)
  mov    %rdx,-0x78(%rbp)
  movabs $0x575641584d4d4c56,%rax
  movabs $0x535a494c4c564945,%rdx
  mov    %rax,-0x70(%rbp)
  mov    %rdx,-0x68(%rbp)
  movabs $0x5a514a4241575a4e,%rax
  movabs $0x4f51544d4c4e574c,%rdx
  mov    %rax,-0x60(%rbp)
  mov    %rdx,-0x58(%rbp)
  movabs $0x474c4d5549564250,%rax
  movabs $0x4e51454150424357,%rdx
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movabs $0x42424e4d54475442,%rax
  movabs $0x544942414d564d50,%rdx
  mov    %rax,-0x40(%rbp)
  mov    %rdx,-0x38(%rbp)
  movabs $0x564c5443574b4149,%rax
  movabs $0x4542514d55514242,%rdx
  mov    %rax,-0x30(%rbp)
  mov    %rdx,-0x28(%rbp)
  movabs $0x494542514d545150,%rax
  movabs $0x435a424755565141,%rdx
  mov    %rax,-0x20(%rbp)
  mov    %rdx,-0x18(%rbp)
  movw   $0x4241,-0x10(%rbp)
  movb   $0x0,-0xe(%rbp)
  movl   $0x0,-0x348(%rbp)
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x348(%rbp)
  jmp    L38
L44:
  mov    -0x348(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <tolower@plt>
  mov    -0x348(%rbp),%edx
  movslq %edx,%rdx
  mov    %al,-0xb0(%rbp,%rdx,1)
  mov    -0x348(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <putchar@plt>
  addl   $0x1,-0x348(%rbp)
L38:
  cmpl   $0xa1,-0x348(%rbp)
  jle    L44
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x1,-0x344(%rbp)
  jmp    L28
L76:
  mov    -0x344(%rbp),%eax
  mov    %eax,%esi
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x0,-0x348(%rbp)
  jmp    L42
L0:
  mov    -0x348(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toascii@plt>
  sub    -0x344(%rbp),%eax
  mov    %eax,%edx
  mov    -0x348(%rbp),%eax
  cltq
  mov    %edx,-0x340(%rbp,%rax,4)
  mov    -0x348(%rbp),%eax
  cltq
  mov    -0x340(%rbp,%rax,4),%eax
  cmp    $0x60,%eax
  jg     L11
  mov    -0x348(%rbp),%eax
  cltq
  mov    -0x340(%rbp,%rax,4),%eax
  lea    0x1a(%rax),%edx
  mov    -0x348(%rbp),%eax
  cltq
  mov    %edx,-0x340(%rbp,%rax,4)
L11:
  mov    -0x348(%rbp),%eax
  cltq
  mov    -0x340(%rbp,%rax,4),%eax
  mov    %eax,%edi
  call   <putchar@plt>
  addl   $0x1,-0x348(%rbp)
L42:
  cmpl   $0xa1,-0x348(%rbp)
  jle    L0
  mov    $0xa,%edi
  call   <putchar@plt>
  addl   $0x1,-0x344(%rbp)
L28:
  cmpl   $0x19,-0x344(%rbp)
  jle    L76
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L25
  call   <__stack_chk_fail@plt>
L25:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: label: D0
data_type: string
name: retrieve_data
arguments: label: D19
data_type: string
name: retrieve_data
arguments: label: D5
data_type: string

tool: D0: tolower:

tool: D19: 
toascii

tool: D5: 
key = %d:


assistant: ```c
int main() {
  char s[] = "OTWEWNGWCBPQABIZVQAPMLJGZWTTQVOBQUMAPMIDGZCABEQVBMZLZIXMLAXZQVOQVLMMXAVWEIVLLIZSNZWABJQZLWNLMTQOPBVIUMLGWCBPAEQNBTGTMNBBPMVMABITIAKWCTLVBBQUMQBEPQTMQBEIAQVUGBZCAB";
  int A[162], i = 0, j;
  printf("tolower:\n");
  for (i = 0; i < 162; i++) {
    s[i] = tolower(s[i]);
    printf("%c", s[i]);
  }
  printf("\ntoascii\n");
  for (j = 1; j < 26; j++) {
    printf("\nkey = %d:\n", j);
    for (i = 0; i < 162; i++) {
      A[i] = toascii(s[i]) - j;
      if (A[i] < 97) {
        A[i] = A[i] + 26;
      }
      printf("%c", A[i]);
    }
    printf("\n");
  }
}
```