user: 这段汇编代码用C语言表示是什么样的：

```asm
<tst_screen>:
  endbr64
  push   %r15
  mov    $0x1,%esi
  mov    $0x1,%edi
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  lea    D408(%rip),%rbp
  push   %rbx
  mov    $0xa0,%ebx
  sub    $0x18,%rsp
  call   <cup@plt>
  mov    %rbp,%rdi
  call   <sm@plt>
  nopl   (%rax)
L209:
  mov    $0x2a,%edi
  call   <putchar@plt>
  sub    $0x1,%ebx
  jne    L209
  mov    %rbp,%rdi
  mov    $0xa0,%ebx
  call   <rm@plt>
  mov    $0x1,%esi
  mov    $0x3,%edi
  call   <cup@plt>
  nopl   0x0(%rax,%rax,1)
L143:
  mov    $0x2a,%edi
  call   <putchar@plt>
  sub    $0x1,%ebx
  jne    L143
  mov    %rbp,%rdi
  mov    $0x1a,%ebx
  call   <sm@plt>
  mov    $0x1,%esi
  mov    $0x5,%edi
  call   <cup@plt>
  lea    D638(%rip),%rdi
  call   <println@plt>
  lea    D77(%rip),%rdi
  call   <println@plt>
  lea    D505(%rip),%rdi
  call   <println@plt>
  xor    %eax,%eax
  call   <holdit@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x3,%edi
  call   <tbc@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  nopl   0x0(%rax)
L13:
  mov    $0x3,%edi
  call   <cuf@plt>
  xor    %eax,%eax
  call   <hts@plt>
  sub    $0x1,%ebx
  jne    L13
  mov    $0x4,%esi
  mov    $0x1,%edi
  mov    $0xd,%ebx
  call   <cup@plt>
  nopw   0x0(%rax,%rax,1)
L284:
  xor    %edi,%edi
  call   <tbc@plt>
  mov    $0x6,%edi
  call   <cuf@plt>
  sub    $0x1,%ebx
  jne    L284
  mov    $0x7,%esi
  mov    $0x1,%edi
  mov    $0xd,%ebx
  call   <cup@plt>
  mov    $0x1,%edi
  lea    D605(%rip),%rbp
  call   <tbc@plt>
  mov    $0x2,%edi
  call   <tbc@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  nopl   0x0(%rax)
L173:
  xor    %eax,%eax
  mov    %rbp,%rdi
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L173
  mov    $0x2,%esi
  mov    $0x2,%edi
  mov    $0xd,%ebx
  call   <cup@plt>
  lea    D299(%rip),%rbp
  nopw   0x0(%rax,%rax,1)
L72:
  xor    %eax,%eax
  mov    %rbp,%rdi
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L72
  mov    $0x1,%esi
  mov    $0x4,%edi
  lea    D30(%rip),%r15
  call   <cup@plt>
  lea    D805(%rip),%rdi
  lea    D80(%rip),%r12
  call   <println@plt>
  lea    D532(%rip),%rdi
  xor    %eax,%eax
  lea    D46(%rip),%r14
  call   <printf@plt>
  xor    %eax,%eax
  lea    D678(%rip),%r13
  call   <holdit@plt>
  lea    D720(%rip),%rdi
  movl   $0x0,(%rsp)
  call   <sm@plt>
L204:
  mov    %r15,%rdi
  mov    $0x11,%ebx
  call   <sm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    $0x3,%edi
  call   <tbc@plt>
  xchg   %ax,%ax
L221:
  mov    $0x8,%edi
  call   <cuf@plt>
  xor    %eax,%eax
  call   <hts@plt>
  sub    $0x1,%ebx
  jne    L221
  mov    $0x1,%esi
  mov    $0x1,%edi
  mov    $0xd,%ebx
  call   <cup@plt>
  nopw   0x0(%rax,%rax,1)
L288:
  xor    %eax,%eax
  mov    %r12,%rdi
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L288
  xor    %eax,%eax
  lea    D182(%rip),%rdi
  mov    $0x3,%ebp
  call   <printf@plt>
  mov    (%rsp),%esi
  lea    D72(%rip),%rbx
  lea    D213(%rip),%rax
  test   %esi,%esi
  cmovne %rax,%rbx
  nopl   0x0(%rax)
L145:
  mov    %ebp,%esi
  mov    %ebp,%edi
  add    $0x1,%ebp
  call   <cup@plt>
  mov    %rbx,%rsi
  mov    %r14,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  cmp    $0x15,%ebp
  jne    L145
  xor    %eax,%eax
  mov    $0x8,%ebp
  call   <holdit@plt>
  mov    %r15,%rdi
  call   <rm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  nopl   0x0(%rax,%rax,1)
L244:
  xor    %eax,%eax
  mov    %r12,%rdi
  call   <printf@plt>
  sub    $0x1,%ebp
  jne    L244
  mov    $0x3,%ebp
  nopl   0x0(%rax)
L182:
  mov    %ebp,%esi
  mov    %ebp,%edi
  add    $0x1,%ebp
  call   <cup@plt>
  mov    %rbx,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  cmp    $0x15,%ebp
  jne    L182
  xor    %eax,%eax
  call   <holdit@plt>
  cmpl   $0x1,(%rsp)
  jne    L237
  mov    $0x2,%edi
  lea    D734(%rip),%rbp
  lea    D188(%rip),%r13
  call   <ed@plt>
  lea    D732(%rip),%rdi
  lea    D630(%rip),%r12
  call   <sm@plt>
  lea    D758(%rip),%rdi
  lea    D862(%rip),%r15
  call   <sm@plt>
  movl   $0xffffffff,0x8(%rsp)
  movl   $0x2,0xc(%rsp)
L296:
  movl   $0xc,(%rsp)
L152:
  mov    (%rsp),%ebx
  mov    $0x19,%esi
  mov    $0x1,%r14d
  sub    %ebx,%esi
  mov    %ebx,%edi
  call   <decstbm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    %ebx,%eax
  mov    $0x18,%edi
  neg    %eax
  lea    0x1a(%rax,%rax,1),%ebx
  call   <cud@plt>
  mov    0x8(%rsp),%ecx
  test   %ecx,%ecx
  je     L87
  nopl   0x0(%rax,%rax,1)
L174:
  mov    %r14d,%r8d
  mov    %ebx,%ecx
  lea    D773(%rip),%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  add    $0x1,%r14d
  call   <printf@plt>
  cmp    $0x1f,%r14d
  jne    L174
L7:
  mov    $0x18,%edi
  mov    $0x1,%r14d
  call   <cuu@plt>
  mov    0x8(%rsp),%eax
  test   %eax,%eax
  je     L38
  nop
L82:
  mov    %r14d,%r8d
  mov    %ebx,%ecx
  mov    %r13,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  add    $0x1,%r14d
  call   <printf@plt>
  xor    %eax,%eax
  call   <ri@plt>
  xor    %eax,%eax
  call   <ri@plt>
  cmp    $0x1f,%r14d
  jne    L82
L6:
  xor    %eax,%eax
  call   <holdit@plt>
  subl   $0xb,(%rsp)
  mov    (%rsp),%eax
  cmp    $0xfffffff6,%eax
  jne    L152
  cmpl   $0x1,0xc(%rsp)
  je     L9
  lea    D758(%rip),%rdi
  call   <rm@plt>
  movl   $0x0,0x8(%rsp)
  movl   $0x1,0xc(%rsp)
  jmp    L296
L87:
  mov    %r14d,%r8d
  mov    %ebx,%ecx
  lea    D773(%rip),%rdx
  mov    %r15,%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  add    $0x1,%r14d
  call   <printf@plt>
  cmp    $0x1f,%r14d
  jne    L87
  jmp    L7
  nopl   0x0(%rax,%rax,1)
L38:
  mov    %r14d,%r8d
  mov    %ebx,%ecx
  mov    %r13,%rdx
  mov    %r15,%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  add    $0x1,%r14d
  call   <printf@plt>
  xor    %eax,%eax
  call   <ri@plt>
  xor    %eax,%eax
  call   <ri@plt>
  cmp    $0x1f,%r14d
  jne    L38
  jmp    L6
L237:
  lea    D720(%rip),%rdi
  movl   $0x1,(%rsp)
  call   <rm@plt>
  jmp    L204
L9:
  mov    $0x2,%edi
  lea    D846(%rip),%rbp
  lea    D520(%rip),%r15
  call   <ed@plt>
  mov    $0x18,%esi
  mov    $0x17,%edi
  call   <decstbm@plt>
  lea    D559(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  lea    D721(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <holdit@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  lea    D732(%rip),%rdi
  call   <rm@plt>
  mov    $0x1,%esi
  mov    $0x18,%edi
  call   <cup@plt>
  lea    D699(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    %rbp,%rdi
  lea    D386(%rip),%rsi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  lea    D43(%rip),%rbp
  call   <holdit@plt>
  mov    $0x18,%esi
  mov    $0x1,%edi
  call   <decstbm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0x14,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  lea    D665(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x4,%edi
  call   <cup@plt>
  lea    D592(%rip),%rdi
  call   <sgr@plt>
  lea    D290(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0x4,%edi
  call   <cup@plt>
  lea    D858(%rip),%rdi
  call   <sgr@plt>
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0x6,%edi
  call   <cup@plt>
  lea    D742(%rip),%rdi
  call   <sgr@plt>
  lea    D82(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0x6,%edi
  call   <cup@plt>
  lea    D755(%rip),%rdi
  call   <sgr@plt>
  lea    D716(%rip),%rdi
  call   <sgr@plt>
  lea    D204(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D793(%rip),%rdi
  call   <sgr@plt>
  lea    D334(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D114(%rip),%rdi
  call   <sgr@plt>
  lea    D673(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0xa,%edi
  call   <cup@plt>
  lea    D424(%rip),%rdi
  call   <sgr@plt>
  lea    D262(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0xa,%edi
  call   <cup@plt>
  lea    D578(%rip),%rdi
  call   <sgr@plt>
  lea    D530(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  lea    D370(%rip),%rdi
  call   <sgr@plt>
  lea    D657(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  lea    D537(%rip),%rdi
  call   <sgr@plt>
  lea    D787(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0xe,%edi
  call   <cup@plt>
  lea    D552(%rip),%rdi
  call   <sgr@plt>
  lea    D666(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0xe,%edi
  call   <cup@plt>
  lea    D844(%rip),%rdi
  call   <sgr@plt>
  lea    D497(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <cup@plt>
  lea    D373(%rip),%rdi
  call   <sgr@plt>
  lea    D832(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0x10,%edi
  call   <cup@plt>
  lea    D126(%rip),%rdi
  call   <sgr@plt>
  lea    D456(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0x12,%edi
  call   <cup@plt>
  lea    D263(%rip),%rdi
  call   <sgr@plt>
  lea    D777(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0x12,%edi
  call   <cup@plt>
  lea    D536(%rip),%rdi
  call   <sgr@plt>
  lea    D437(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D672(%rip),%rdi
  call   <sgr@plt>
  lea    D720(%rip),%rdi
  call   <rm@plt>
  mov    $0x1,%esi
  mov    $0x17,%edi
  call   <cup@plt>
  xor    %edi,%edi
  call   <el@plt>
  lea    D283(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <holdit@plt>
  lea    D720(%rip),%rdi
  call   <sm@plt>
  mov    $0x1,%esi
  mov    $0x17,%edi
  call   <cup@plt>
  xor    %edi,%edi
  call   <el@plt>
  lea    D125(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <holdit@plt>
  lea    D720(%rip),%rdi
  call   <rm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0xc,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D193(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x18,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x24,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D174(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x30,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D378(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x3c,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D134(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xa,%edi
  call   <cup@plt>
  lea    D39(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  lea    D377(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xe,%edi
  xor    %r13d,%r13d
  call   <cup@plt>
  lea    D119(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <cup@plt>
  lea    D163(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D303(%rip),%rax
  mov    %rax,(%rsp)
L15:
  lea    0xa(%r13,%r13,1),%eax
  mov    $0x1,%r12d
  mov    %eax,0xc(%rsp)
  mov    %r13d,%eax
  add    $0x1,%r13d
  and    $0xfffffffd,%eax
  mov    %eax,0x8(%rsp)
L59:
  mov    0xc(%rsp),%edi
  lea    (%r12,%r12,2),%esi
  mov    %r12d,%r14d
  shl    $0x2,%esi
  call   <cup@plt>
  mov    (%r15,%r12,8),%rdi
  call   <sgr@plt>
  mov    0x8(%rsp),%edx
  test   %edx,%edx
  jne    L269
  mov    $0x42,%esi
  xor    %edi,%edi
  call   <scs@plt>
L165:
  mov    (%rsp),%rax
  mov    $0x5,%ebx
  movsbl (%rax),%ebp
L30:
  mov    %ebp,%edi
  call   <putchar@plt>
  sub    $0x1,%ebx
  jne    L30
  xor    %eax,%eax
  mov    $0x5,%ebx
  call   <decsc@plt>
  mov    %r14d,%esi
  mov    %r13d,%edi
  call   <cup@plt>
  lea    D672(%rip),%rdi
  call   <sgr@plt>
  mov    $0x42,%esi
  xor    %edi,%edi
  call   <scs@plt>
  mov    $0x41,%edi
  call   <putchar@plt>
  xor    %eax,%eax
  call   <decrc@plt>
L84:
  mov    %ebp,%edi
  call   <putchar@plt>
  sub    $0x1,%ebx
  jne    L84
  add    $0x1,%r12
  cmp    $0x6,%r12
  jne    L59
  addq   $0x1,(%rsp)
  cmp    $0x4,%r13d
  jne    L15
  lea    D592(%rip),%rdi
  call   <sgr@plt>
  mov    $0x42,%esi
  xor    %edi,%edi
  call   <scs@plt>
  mov    $0x1,%esi
  mov    $0x15,%edi
  call   <cup@plt>
  lea    D448(%rip),%rdi
  call   <println@plt>
  lea    D654(%rip),%rdi
  call   <println@plt>
  lea    D764(%rip),%rdi
  call   <println@plt>
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1290 <holdit@plt>
  cs nopw 0x0(%rax,%rax,1)
L269:
  mov    $0x30,%esi
  xor    %edi,%edi
  call   <scs@plt>
  jmp    L165
```

tool_calls: name: retrieve_data
arguments: tag: D408
type_infered: string
name: retrieve_data
arguments: tag: D638
type_infered: string
name: retrieve_data
arguments: tag: D77
type_infered: string
name: retrieve_data
arguments: tag: D505
type_infered: string
name: retrieve_data
arguments: tag: D605
type_infered: string
name: retrieve_data
arguments: tag: D299
type_infered: string
name: retrieve_data
arguments: tag: D30
type_infered: string
name: retrieve_data
arguments: tag: D805
type_infered: string
name: retrieve_data
arguments: tag: D80
type_infered: string
name: retrieve_data
arguments: tag: D532
type_infered: string
name: retrieve_data
arguments: tag: D46
type_infered: string
name: retrieve_data
arguments: tag: D678
type_infered: string
name: retrieve_data
arguments: tag: D720
type_infered: string
name: retrieve_data
arguments: tag: D182
type_infered: string
name: retrieve_data
arguments: tag: D72
type_infered: string
name: retrieve_data
arguments: tag: D213
type_infered: string
name: retrieve_data
arguments: tag: D734
type_infered: string
name: retrieve_data
arguments: tag: D188
type_infered: string
name: retrieve_data
arguments: tag: D732
type_infered: string
name: retrieve_data
arguments: tag: D630
type_infered: string
name: retrieve_data
arguments: tag: D758
type_infered: string
name: retrieve_data
arguments: tag: D862
type_infered: string
name: retrieve_data
arguments: tag: D773
type_infered: string
name: retrieve_data
arguments: tag: D846
type_infered: string
name: retrieve_data
arguments: tag: D559
type_infered: string
name: retrieve_data
arguments: tag: D721
type_infered: string
name: retrieve_data
arguments: tag: D699
type_infered: string
name: retrieve_data
arguments: tag: D386
type_infered: string
name: retrieve_data
arguments: tag: D43
type_infered: string
name: retrieve_data
arguments: tag: D665
type_infered: string
name: retrieve_data
arguments: tag: D592
type_infered: string
name: retrieve_data
arguments: tag: D290
type_infered: string
name: retrieve_data
arguments: tag: D858
type_infered: string
name: retrieve_data
arguments: tag: D742
type_infered: string
name: retrieve_data
arguments: tag: D82
type_infered: string
name: retrieve_data
arguments: tag: D755
type_infered: string
name: retrieve_data
arguments: tag: D716
type_infered: string
name: retrieve_data
arguments: tag: D204
type_infered: string
name: retrieve_data
arguments: tag: D793
type_infered: string
name: retrieve_data
arguments: tag: D334
type_infered: string
name: retrieve_data
arguments: tag: D114
type_infered: string
name: retrieve_data
arguments: tag: D673
type_infered: string
name: retrieve_data
arguments: tag: D424
type_infered: string
name: retrieve_data
arguments: tag: D262
type_infered: string
name: retrieve_data
arguments: tag: D578
type_infered: string
name: retrieve_data
arguments: tag: D530
type_infered: string
name: retrieve_data
arguments: tag: D370
type_infered: string
name: retrieve_data
arguments: tag: D657
type_infered: string
name: retrieve_data
arguments: tag: D537
type_infered: string
name: retrieve_data
arguments: tag: D787
type_infered: string
name: retrieve_data
arguments: tag: D552
type_infered: string
name: retrieve_data
arguments: tag: D666
type_infered: string
name: retrieve_data
arguments: tag: D844
type_infered: string
name: retrieve_data
arguments: tag: D497
type_infered: string
name: retrieve_data
arguments: tag: D373
type_infered: string
name: retrieve_data
arguments: tag: D832
type_infered: string
name: retrieve_data
arguments: tag: D126
type_infered: string
name: retrieve_data
arguments: tag: D456
type_infered: string
name: retrieve_data
arguments: tag: D263
type_infered: string
name: retrieve_data
arguments: tag: D777
type_infered: string
name: retrieve_data
arguments: tag: D536
type_infered: string
name: retrieve_data
arguments: tag: D437
type_infered: string
name: retrieve_data
arguments: tag: D672
type_infered: string
name: retrieve_data
arguments: tag: D283
type_infered: string
name: retrieve_data
arguments: tag: D125
type_infered: string
name: retrieve_data
arguments: tag: D193
type_infered: string
name: retrieve_data
arguments: tag: D174
type_infered: string
name: retrieve_data
arguments: tag: D378
type_infered: string
name: retrieve_data
arguments: tag: D134
type_infered: string
name: retrieve_data
arguments: tag: D39
type_infered: string
name: retrieve_data
arguments: tag: D377
type_infered: string
name: retrieve_data
arguments: tag: D119
type_infered: string
name: retrieve_data
arguments: tag: D163
type_infered: string
name: retrieve_data
arguments: tag: D303
type_infered: string
name: retrieve_data
arguments: tag: D448
type_infered: string
name: retrieve_data
arguments: tag: D654
type_infered: string
name: retrieve_data
arguments: tag: D764
type_infered: string

tool: D408: ?7

tool: D638: This should be three identical lines of *'s completely filling

tool: D77: the top of the screen without any empty lines between.

tool: D505: (Test of WRAP AROUND mode setting.)

tool: D605: 	*

tool: D299:      *

tool: D30: ?3

tool: D805: Test of TAB setting/resetting. These two lines

tool: D80: 1234567890

tool: D532: should look the same. 

tool: D46: This is 132 column mode, %s background.

tool: D678: This is 80 column mode, %s background.

tool: D720: ?5

tool: D182: 12

tool: D72: light

tool: D213: dark

tool: D734: %s scroll %s region %d Line %d


tool: D188: down

tool: D732: ?6

tool: D630: Soft

tool: D758: ?4

tool: D862: Jump

tool: D773: up

tool: D846: %s

tool: D559: 
Origin mode test. This line should be at the bottom of the screen.

tool: D721: This line should be the one above the bottom of the screeen. 

tool: D699: Origin mode test. This line should be at the bottom of the screen.

tool: D386: This line should be at the top if the screen. 

tool: D43: bold

tool: D665: Graphic rendition test pattern:

tool: D592: 0

tool: D290: vanilla

tool: D858: 0;1

tool: D742: ;4

tool: D82: underline

tool: D755: ;1

tool: D716: 4

tool: D204: bold underline

tool: D793: 0;5

tool: D334: blink

tool: D114: 0;5;1

tool: D673: bold blink

tool: D424: 0;4;5

tool: D262: underline blink

tool: D578: 0;1;4;5

tool: D530: bold underline blink

tool: D370: 1;4;5;0;7

tool: D657: negative

tool: D537: 0;1;7

tool: D787: bold negative

tool: D552: 0;4;7

tool: D666: underline negative

tool: D844: 0;1;4;7

tool: D497: bold underline negative

tool: D373: 1;4;;5;7

tool: D832: blink negative

tool: D126: 0;1;5;7

tool: D456: bold blink negative

tool: D263: 0;4;5;7

tool: D777: underline blink negative

tool: D536: 0;1;4;5;7

tool: D437: bold underline blink negative

tool: 

tool: D283: Dark background. 

tool: D125: Light background. 

tool: D193: normal

tool: D174: underscored

tool: D378: blinking

tool: D134: reversed

tool: D39: stars:

tool: D377: line:

tool: D119: x'es:

tool: D163: diamonds:

tool: D303: *qx`

tool: D448: Test of the SAVE/RESTORE CURSOR feature. There should

tool: D654: be ten characters of each flavour, and a rectangle

tool: D764: of 5 x 4 A's filling the top left of the screen.

assistant: ```c
tst_screen() {
  int i, j, cset, row, col, down, soft, background;
  static char *tststr = "*qx`";
  static char *attr[5] = {";0", ";1", ";4", ";5", ";7"};
  cup(1, 1);
  sm("?7");
  for (col = 1; col <= 160; col++)
    printf("*");
  rm("?7");
  cup(3, 1);
  for (col = 1; col <= 160; col++)
    printf("*");
  sm("?7");
  cup(5, 1);
  println("This should be three identical lines of *'s completely filling");
  println("the top of the screen without any empty lines between.");
  println("(Test of WRAP AROUND mode setting.)");
  holdit();
  ed(2);
  tbc(3);
  cup(1, 1);
  for (col = 1; col <= 78; col += 3) {
    cuf(3);
    hts();
  }
  cup(1, 4);
  for (col = 4; col <= 78; col += 6) {
    tbc(0);
    cuf(6);
  }
  cup(1, 7);
  tbc(1);
  tbc(2);
  cup(1, 1);
  for (col = 1; col <= 78; col += 6)
    printf("\t*");
  cup(2, 2);
  for (col = 2; col <= 78; col += 6)
    printf("     *");
  cup(4, 1);
  println("Test of TAB setting/resetting. These two lines");
  printf("should look the same. ");
  holdit();
  for (background = 0; background <= 1; background++) {
    if (background)
      rm("?5");
    else
      sm("?5");
    sm("?3");
    ed(2);
    cup(1, 1);
    tbc(3);
    for (col = 1; col <= 132; col += 8) {
      cuf(8);
      hts();
    }
    cup(1, 1);
    for (col = 1; col <= 130; col += 10)
      printf("1234567890");
    printf("12");
    for (row = 3; row <= 20; row++) {
      cup(row, row);
      printf("This is 132 column mode, %s background.", background ? "dark" : "light");
    }
    holdit();
    rm("?3");
    ed(2);
    cup(1, 1);
    for (col = 1; col <= 80; col += 10)
      printf("1234567890");
    for (row = 3; row <= 20; row++) {
      cup(row, row);
      printf("This is 80 column mode, %s background.", background ? "dark" : "light");
    }
    holdit();
  }
  ed(2);
  sm("?6");
  for (soft = -1; soft <= 0; soft++) {
    if (soft)
      sm("?4");
    else
      rm("?4");
    for (row = 12; row >= 1; row -= 11) {
      decstbm(row, 24 - row + 1);
      ed(2);
      for (down = 0; down >= -1; down--) {
        if (down)
          cuu(24);
        else
          cud(24);
        for (i = 1; i <= 30; i++) {
          printf("%s scroll %s region %d Line %d\n", soft ? "Soft" : "Jump", down ? "down" : "up", 2 * (13 - row), i);
          if (down) {
            ri();
            ri();
          }
        }
      }
      holdit();
    }
  }
  ed(2);
  decstbm(23, 24);
  printf("\nOrigin mode test. This line should be at the bottom of the screen.");
  cup(1, 1);
  printf("%s", "This line should be the one above the bottom of the screeen. ");
  holdit();
  ed(2);
  rm("?6");
  cup(24, 1);
  printf("Origin mode test. This line should be at the bottom of the screen.");
  cup(1, 1);
  printf("%s", "This line should be at the top if the screen. ");
  holdit();
  decstbm(1, 24);
  ed(2);
  cup(1, 20);
  printf("Graphic rendition test pattern:");
  cup(4, 1);
  sgr("0");
  printf("vanilla");
  cup(4, 40);
  sgr("0;1");
  printf("bold");
  cup(6, 6);
  sgr(";4");
  printf("underline");
  cup(6, 45);
  sgr(";1");
  sgr("4");
  printf("bold underline");
  cup(8, 1);
  sgr("0;5");
  printf("blink");
  cup(8, 40);
  sgr("0;5;1");
  printf("bold blink");
  cup(10, 6);
  sgr("0;4;5");
  printf("underline blink");
  cup(10, 45);
  sgr("0;1;4;5");
  printf("bold underline blink");
  cup(12, 1);
  sgr("1;4;5;0;7");
  printf("negative");
  cup(12, 40);
  sgr("0;1;7");
  printf("bold negative");
  cup(14, 6);
  sgr("0;4;7");
  printf("underline negative");
  cup(14, 45);
  sgr("0;1;4;7");
  printf("bold underline negative");
  cup(16, 1);
  sgr("1;4;;5;7");
  printf("blink negative");
  cup(16, 40);
  sgr("0;1;5;7");
  printf("bold blink negative");
  cup(18, 6);
  sgr("0;4;5;7");
  printf("underline blink negative");
  cup(18, 45);
  sgr("0;1;4;5;7");
  printf("bold underline blink negative");
  sgr("");
  rm("?5");
  cup(23, 1);
  el(0);
  printf("Dark background. ");
  holdit();
  sm("?5");
  cup(23, 1);
  el(0);
  printf("Light background. ");
  holdit();
  rm("?5");
  ed(2);
  cup(8, 12);
  printf("normal");
  cup(8, 24);
  printf("bold");
  cup(8, 36);
  printf("underscored");
  cup(8, 48);
  printf("blinking");
  cup(8, 60);
  printf("reversed");
  cup(10, 1);
  printf("stars:");
  cup(12, 1);
  printf("line:");
  cup(14, 1);
  printf("x'es:");
  cup(16, 1);
  printf("diamonds:");
  for (cset = 0; cset <= 3; cset++) {
    for (i = 0; i <= 4; i++) {
      cup(10 + 2 * cset, 12 + 12 * i);
      sgr(attr[i]);
      if (cset == 0 || cset == 2)
        scs(0, 'B');
      else
        scs(0, '0');
      for (j = 0; j <= 4; j++) {
        printf("%c", tststr[cset]);
      }
      decsc();
      cup(cset + 1, i + 1);
      sgr("");
      scs(0, 'B');
      printf("A");
      decrc();
      for (j = 0; j <= 4; j++) {
        printf("%c", tststr[cset]);
      }
    }
  }
  sgr("0");
  scs(0, 'B');
  cup(21, 1);
  println("Test of the SAVE/RESTORE CURSOR feature. There should");
  println("be ten characters of each flavour, and a rectangle");
  println("of 5 x 4 A's filling the top left of the screen.");
  holdit();
}
```