user: 请将以下的汇编代码转换成C语言代码：

```asm
<tst_screen>:
  endbr64
  push   %r15
  mov    $0x1,%esi
  mov    $0x1,%edi
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  lea    D619(%rip),%rbp
  push   %rbx
  mov    $0xa0,%ebx
  sub    $0x18,%rsp
  call   <cup@plt>
  mov    %rbp,%rdi
  call   <sm@plt>
  nopl   (%rax)
L28:
  mov    $0x2a,%edi
  call   <putchar@plt>
  sub    $0x1,%ebx
  jne    L28
  mov    %rbp,%rdi
  mov    $0xa0,%ebx
  call   <rm@plt>
  mov    $0x1,%esi
  mov    $0x3,%edi
  call   <cup@plt>
  nopl   0x0(%rax,%rax,1)
L125:
  mov    $0x2a,%edi
  call   <putchar@plt>
  sub    $0x1,%ebx
  jne    L125
  mov    %rbp,%rdi
  mov    $0x1a,%ebx
  call   <sm@plt>
  mov    $0x1,%esi
  mov    $0x5,%edi
  call   <cup@plt>
  lea    D632(%rip),%rdi
  call   <println@plt>
  lea    D373(%rip),%rdi
  call   <println@plt>
  lea    D431(%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)
L276:
  mov    $0x3,%edi
  call   <cuf@plt>
  xor    %eax,%eax
  call   <hts@plt>
  sub    $0x1,%ebx
  jne    L276
  mov    $0x4,%esi
  mov    $0x1,%edi
  mov    $0xd,%ebx
  call   <cup@plt>
  nopw   0x0(%rax,%rax,1)
L168:
  xor    %edi,%edi
  call   <tbc@plt>
  mov    $0x6,%edi
  call   <cuf@plt>
  sub    $0x1,%ebx
  jne    L168
  mov    $0x7,%esi
  mov    $0x1,%edi
  mov    $0xd,%ebx
  call   <cup@plt>
  mov    $0x1,%edi
  lea    D710(%rip),%rbp
  call   <tbc@plt>
  mov    $0x2,%edi
  call   <tbc@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  nopl   0x0(%rax)
L27:
  xor    %eax,%eax
  mov    %rbp,%rdi
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L27
  mov    $0x2,%esi
  mov    $0x2,%edi
  mov    $0xd,%ebx
  call   <cup@plt>
  lea    D468(%rip),%rbp
  nopw   0x0(%rax,%rax,1)
L149:
  xor    %eax,%eax
  mov    %rbp,%rdi
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L149
  mov    $0x1,%esi
  mov    $0x4,%edi
  lea    D102(%rip),%r15
  call   <cup@plt>
  lea    D70(%rip),%rdi
  lea    D820(%rip),%r12
  call   <println@plt>
  lea    D728(%rip),%rdi
  xor    %eax,%eax
  lea    D739(%rip),%r14
  call   <printf@plt>
  xor    %eax,%eax
  lea    D845(%rip),%r13
  call   <holdit@plt>
  lea    D707(%rip),%rdi
  movl   $0x0,(%rsp)
  call   <sm@plt>
L102:
  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
L118:
  mov    $0x8,%edi
  call   <cuf@plt>
  xor    %eax,%eax
  call   <hts@plt>
  sub    $0x1,%ebx
  jne    L118
  mov    $0x1,%esi
  mov    $0x1,%edi
  mov    $0xd,%ebx
  call   <cup@plt>
  nopw   0x0(%rax,%rax,1)
L38:
  xor    %eax,%eax
  mov    %r12,%rdi
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L38
  xor    %eax,%eax
  lea    D65(%rip),%rdi
  mov    $0x3,%ebp
  call   <printf@plt>
  mov    (%rsp),%edx
  lea    D636(%rip),%rbx
  lea    D228(%rip),%rax
  test   %edx,%edx
  cmovne %rax,%rbx
  nopl   0x0(%rax)
L246:
  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    L246
  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)
L54:
  xor    %eax,%eax
  mov    %r12,%rdi
  call   <printf@plt>
  sub    $0x1,%ebp
  jne    L54
  mov    $0x3,%ebp
  nopl   0x0(%rax)
L130:
  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    L130
  xor    %eax,%eax
  call   <holdit@plt>
  cmpl   $0x1,(%rsp)
  jne    L97
  mov    $0x2,%edi
  mov    $0xffffffff,%ebp
  lea    D265(%rip),%r13
  call   <ed@plt>
  lea    D569(%rip),%rdi
  lea    D652(%rip),%r14
  call   <sm@plt>
  lea    D430(%rip),%rdi
  call   <sm@plt>
  movl   $0x2,0xc(%rsp)
L143:
  movl   $0xc,0x8(%rsp)
L117:
  mov    0x8(%rsp),%ebx
  mov    $0x19,%esi
  sub    %ebx,%esi
  mov    %ebx,%edi
  call   <decstbm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    %ebx,%eax
  mov    $0x18,%edi
  xor    %ebx,%ebx
  neg    %eax
  lea    0x1a(%rax,%rax,1),%r12d
  call   <cud@plt>
L90:
  test   %ebx,%ebx
  lea    D716(%rip),%rax
  lea    D333(%rip),%rdx
  mov    $0x1,%r15d
  cmovne %rdx,%rax
  mov    %rax,(%rsp)
  jmp    L232
  nopl   (%rax)
L95:
  mov    %r15d,%r8d
  mov    %r12d,%ecx
  test   %ebp,%ebp
  je     L93
  lea    D333(%rip),%rdx
  mov    %r14,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  call   <printf@plt>
L147:
  xor    %eax,%eax
  add    $0x1,%r15d
  call   <ri@plt>
  xor    %eax,%eax
  call   <ri@plt>
  cmp    $0x1f,%r15d
  je     L71
L232:
  test   %ebx,%ebx
  jne    L95
  test   %ebp,%ebp
  lea    D879(%rip),%rsi
  mov    %r15d,%r8d
  mov    %r12d,%ecx
  cmovne %r14,%rsi
  lea    D716(%rip),%rdx
  mov    %r13,%rdi
  xor    %eax,%eax
  add    $0x1,%r15d
  call   <printf@plt>
  cmp    $0x1f,%r15d
  jne    L232
L71:
  lea    -0x1(%rbx),%eax
  mov    $0xffffffff,%ebx
  cmp    $0xfffffffe,%eax
  je     L127
  mov    $0x18,%edi
  call   <cuu@plt>
  jmp    L90
  nopl   0x0(%rax)
L93:
  mov    (%rsp),%rdx
  lea    D879(%rip),%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L147
  nopw   0x0(%rax,%rax,1)
L127:
  xor    %eax,%eax
  call   <holdit@plt>
  subl   $0xb,0x8(%rsp)
  mov    0x8(%rsp),%eax
  cmp    $0xfffffff6,%eax
  jne    L117
  cmpl   $0x1,0xc(%rsp)
  je     L210
  lea    D430(%rip),%rdi
  xor    %ebp,%ebp
  call   <rm@plt>
  movl   $0x1,0xc(%rsp)
  jmp    L143
L97:
  lea    D707(%rip),%rdi
  movl   $0x1,(%rsp)
  call   <rm@plt>
  jmp    L102
L210:
  mov    $0x2,%edi
  lea    D563(%rip),%rbp
  lea    D124(%rip),%r15
  call   <ed@plt>
  mov    $0x18,%esi
  mov    $0x17,%edi
  call   <decstbm@plt>
  lea    D393(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  lea    D612(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <holdit@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  lea    D569(%rip),%rdi
  call   <rm@plt>
  mov    $0x1,%esi
  mov    $0x18,%edi
  call   <cup@plt>
  lea    D105(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <cup@plt>
  mov    %rbp,%rdi
  lea    D169(%rip),%rsi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  lea    D398(%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    D323(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x4,%edi
  call   <cup@plt>
  lea    D140(%rip),%rdi
  call   <sgr@plt>
  lea    D854(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0x4,%edi
  call   <cup@plt>
  lea    D439(%rip),%rdi
  call   <sgr@plt>
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0x6,%edi
  call   <cup@plt>
  lea    D699(%rip),%rdi
  call   <sgr@plt>
  lea    D475(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0x6,%edi
  call   <cup@plt>
  lea    D616(%rip),%rdi
  call   <sgr@plt>
  lea    D261(%rip),%rdi
  call   <sgr@plt>
  lea    D213(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D379(%rip),%rdi
  call   <sgr@plt>
  lea    D47(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D870(%rip),%rdi
  call   <sgr@plt>
  lea    D342(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0xa,%edi
  call   <cup@plt>
  lea    D559(%rip),%rdi
  call   <sgr@plt>
  lea    D246(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0xa,%edi
  call   <cup@plt>
  lea    D838(%rip),%rdi
  call   <sgr@plt>
  lea    D30(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  lea    D609(%rip),%rdi
  call   <sgr@plt>
  lea    D620(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  lea    D709(%rip),%rdi
  call   <sgr@plt>
  lea    D125(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0xe,%edi
  call   <cup@plt>
  lea    D432(%rip),%rdi
  call   <sgr@plt>
  lea    D711(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0xe,%edi
  call   <cup@plt>
  lea    D196(%rip),%rdi
  call   <sgr@plt>
  lea    D459(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <cup@plt>
  lea    D312(%rip),%rdi
  call   <sgr@plt>
  lea    D61(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  mov    $0x10,%edi
  call   <cup@plt>
  lea    D844(%rip),%rdi
  call   <sgr@plt>
  lea    D520(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x6,%esi
  mov    $0x12,%edi
  call   <cup@plt>
  lea    D5(%rip),%rdi
  call   <sgr@plt>
  lea    D760(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x2d,%esi
  mov    $0x12,%edi
  call   <cup@plt>
  lea    D387(%rip),%rdi
  call   <sgr@plt>
  lea    D823(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D564(%rip),%rdi
  call   <sgr@plt>
  lea    D707(%rip),%rdi
  call   <rm@plt>
  mov    $0x1,%esi
  mov    $0x17,%edi
  call   <cup@plt>
  xor    %edi,%edi
  call   <el@plt>
  lea    D88(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <holdit@plt>
  lea    D707(%rip),%rdi
  call   <sm@plt>
  mov    $0x1,%esi
  mov    $0x17,%edi
  call   <cup@plt>
  xor    %edi,%edi
  call   <el@plt>
  lea    D240(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <holdit@plt>
  lea    D707(%rip),%rdi
  call   <rm@plt>
  mov    $0x2,%edi
  call   <ed@plt>
  mov    $0xc,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D271(%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    D231(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x30,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D460(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x3c,%esi
  mov    $0x8,%edi
  call   <cup@plt>
  lea    D654(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xa,%edi
  call   <cup@plt>
  lea    D674(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xc,%edi
  call   <cup@plt>
  lea    D779(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0xe,%edi
  xor    %r12d,%r12d
  call   <cup@plt>
  lea    D74(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <cup@plt>
  lea    D591(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D795(%rip),%rax
  mov    %rax,(%rsp)
L167:
  mov    %r12d,%eax
  lea    0xa(%r12,%r12,1),%r14d
  mov    $0x1,%ebx
  add    $0x1,%r12d
  and    $0xfffffffd,%eax
  mov    %eax,0x8(%rsp)
L116:
  lea    (%rbx,%rbx,2),%esi
  mov    %r14d,%edi
  mov    %ebx,%r13d
  shl    $0x2,%esi
  call   <cup@plt>
  mov    (%r15,%rbx,8),%rdi
  call   <sgr@plt>
  mov    0x8(%rsp),%eax
  test   %eax,%eax
  jne    L107
  mov    $0x42,%esi
  xor    %edi,%edi
  call   <scs@plt>
L89:
  mov    (%rsp),%rax
  add    $0x1,%rbx
  movsbl (%rax),%ebp
  mov    %ebp,%edi
  call   <putchar@plt>
  mov    %ebp,%edi
  call   <putchar@plt>
  mov    %ebp,%edi
  call   <putchar@plt>
  mov    %ebp,%edi
  call   <putchar@plt>
  mov    %ebp,%edi
  call   <putchar@plt>
  xor    %eax,%eax
  call   <decsc@plt>
  mov    %r13d,%esi
  mov    %r12d,%edi
  call   <cup@plt>
  lea    D564(%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>
  mov    %ebp,%edi
  call   <putchar@plt>
  mov    %ebp,%edi
  call   <putchar@plt>
  mov    %ebp,%edi
  call   <putchar@plt>
  mov    %ebp,%edi
  call   <putchar@plt>
  mov    %ebp,%edi
  call   <putchar@plt>
  cmp    $0x6,%rbx
  jne    L116
  addq   $0x1,(%rsp)
  cmp    $0x4,%r12d
  jne    L167
  lea    D140(%rip),%rdi
  call   <sgr@plt>
  mov    $0x42,%esi
  xor    %edi,%edi
  call   <scs@plt>
  mov    $0x1,%esi
  mov    $0x15,%edi
  call   <cup@plt>
  lea    D9(%rip),%rdi
  call   <println@plt>
  lea    D400(%rip),%rdi
  call   <println@plt>
  lea    D66(%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>
  nopl   0x0(%rax)
L107:
  mov    $0x30,%esi
  xor    %edi,%edi
  call   <scs@plt>
  jmp    L89
```

tool_calls: name: parse_data
arguments: data_label: D619
type_guessed: string
name: parse_data
arguments: data_label: D632
type_guessed: string
name: parse_data
arguments: data_label: D373
type_guessed: string
name: parse_data
arguments: data_label: D431
type_guessed: string
name: parse_data
arguments: data_label: D710
type_guessed: string
name: parse_data
arguments: data_label: D468
type_guessed: string
name: parse_data
arguments: data_label: D102
type_guessed: string
name: parse_data
arguments: data_label: D70
type_guessed: string
name: parse_data
arguments: data_label: D820
type_guessed: string
name: parse_data
arguments: data_label: D728
type_guessed: string
name: parse_data
arguments: data_label: D739
type_guessed: string
name: parse_data
arguments: data_label: D845
type_guessed: string
name: parse_data
arguments: data_label: D707
type_guessed: string
name: parse_data
arguments: data_label: D65
type_guessed: string
name: parse_data
arguments: data_label: D636
type_guessed: string
name: parse_data
arguments: data_label: D228
type_guessed: string
name: parse_data
arguments: data_label: D265
type_guessed: string
name: parse_data
arguments: data_label: D569
type_guessed: string
name: parse_data
arguments: data_label: D652
type_guessed: string
name: parse_data
arguments: data_label: D430
type_guessed: string
name: parse_data
arguments: data_label: D716
type_guessed: string
name: parse_data
arguments: data_label: D333
type_guessed: string
name: parse_data
arguments: data_label: D879
type_guessed: string
name: parse_data
arguments: data_label: D563
type_guessed: string
name: parse_data
arguments: data_label: D393
type_guessed: string
name: parse_data
arguments: data_label: D612
type_guessed: string
name: parse_data
arguments: data_label: D105
type_guessed: string
name: parse_data
arguments: data_label: D169
type_guessed: string
name: parse_data
arguments: data_label: D398
type_guessed: string
name: parse_data
arguments: data_label: D323
type_guessed: string
name: parse_data
arguments: data_label: D140
type_guessed: string
name: parse_data
arguments: data_label: D854
type_guessed: string
name: parse_data
arguments: data_label: D439
type_guessed: string
name: parse_data
arguments: data_label: D699
type_guessed: string
name: parse_data
arguments: data_label: D475
type_guessed: string
name: parse_data
arguments: data_label: D616
type_guessed: string
name: parse_data
arguments: data_label: D261
type_guessed: string
name: parse_data
arguments: data_label: D213
type_guessed: string
name: parse_data
arguments: data_label: D379
type_guessed: string
name: parse_data
arguments: data_label: D47
type_guessed: string
name: parse_data
arguments: data_label: D870
type_guessed: string
name: parse_data
arguments: data_label: D342
type_guessed: string
name: parse_data
arguments: data_label: D559
type_guessed: string
name: parse_data
arguments: data_label: D246
type_guessed: string
name: parse_data
arguments: data_label: D838
type_guessed: string
name: parse_data
arguments: data_label: D30
type_guessed: string
name: parse_data
arguments: data_label: D609
type_guessed: string
name: parse_data
arguments: data_label: D620
type_guessed: string
name: parse_data
arguments: data_label: D709
type_guessed: string
name: parse_data
arguments: data_label: D125
type_guessed: string
name: parse_data
arguments: data_label: D432
type_guessed: string
name: parse_data
arguments: data_label: D711
type_guessed: string
name: parse_data
arguments: data_label: D196
type_guessed: string
name: parse_data
arguments: data_label: D459
type_guessed: string
name: parse_data
arguments: data_label: D312
type_guessed: string
name: parse_data
arguments: data_label: D61
type_guessed: string
name: parse_data
arguments: data_label: D844
type_guessed: string
name: parse_data
arguments: data_label: D520
type_guessed: string
name: parse_data
arguments: data_label: D5
type_guessed: string
name: parse_data
arguments: data_label: D760
type_guessed: string
name: parse_data
arguments: data_label: D387
type_guessed: string
name: parse_data
arguments: data_label: D823
type_guessed: string
name: parse_data
arguments: data_label: D564
type_guessed: string
name: parse_data
arguments: data_label: D88
type_guessed: string
name: parse_data
arguments: data_label: D240
type_guessed: string
name: parse_data
arguments: data_label: D271
type_guessed: string
name: parse_data
arguments: data_label: D231
type_guessed: string
name: parse_data
arguments: data_label: D460
type_guessed: string
name: parse_data
arguments: data_label: D654
type_guessed: string
name: parse_data
arguments: data_label: D674
type_guessed: string
name: parse_data
arguments: data_label: D779
type_guessed: string
name: parse_data
arguments: data_label: D74
type_guessed: string
name: parse_data
arguments: data_label: D591
type_guessed: string
name: parse_data
arguments: data_label: D795
type_guessed: string
name: parse_data
arguments: data_label: D9
type_guessed: string
name: parse_data
arguments: data_label: D400
type_guessed: string
name: parse_data
arguments: data_label: D66
type_guessed: string

tool: D619: ?7

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

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

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

tool: D710: 	*

tool: D468:      *

tool: D102: ?3

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

tool: D820: 1234567890

tool: D728: should look the same. 

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

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

tool: D707: ?5

tool: D65: 12

tool: D636: light

tool: D228: dark

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


tool: D569: ?6

tool: D652: Soft

tool: D430: ?4

tool: D716: up

tool: D333: down

tool: D879: Jump

tool: D563: %s

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

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

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

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

tool: D398: bold

tool: D323: Graphic rendition test pattern:

tool: D140: 0

tool: D854: vanilla

tool: D439: 0;1

tool: D699: ;4

tool: D475: underline

tool: D616: ;1

tool: D261: 4

tool: D213: bold underline

tool: D379: 0;5

tool: D47: blink

tool: D870: 0;5;1

tool: D342: bold blink

tool: D559: 0;4;5

tool: D246: underline blink

tool: D838: 0;1;4;5

tool: D30: bold underline blink

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

tool: D620: negative

tool: D709: 0;1;7

tool: D125: bold negative

tool: D432: 0;4;7

tool: D711: underline negative

tool: D196: 0;1;4;7

tool: D459: bold underline negative

tool: D312: 1;4;;5;7

tool: D61: blink negative

tool: D844: 0;1;5;7

tool: D520: bold blink negative

tool: D5: 0;4;5;7

tool: D760: underline blink negative

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

tool: D823: bold underline blink negative

tool: 

tool: D88: Dark background. 

tool: D240: Light background. 

tool: D271: normal

tool: D231: underscored

tool: D460: blinking

tool: D654: reversed

tool: D674: stars:

tool: D779: line:

tool: D74: x'es:

tool: D591: diamonds:

tool: D795: *qx`

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

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

tool: D66: 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();
}
```