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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1c0,%rsp
  mov    %edi,-0x1b4(%rbp)
  mov    %rsi,-0x1c0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D358(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x69,%edx
  mov    $0x6b,%esi
  lea    D443(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D150(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <puts_nonl@plt>
  mov    $0x6f,%edi
  call   <putchar@plt>
  mov    $0x6b,%edi
  call   <putchar@plt>
  mov    $0x20,%edi
  call   <putchar@plt>
  mov    $0x70,%edi
  call   <putchar@plt>
  mov    $0x75,%edi
  call   <putchar@plt>
  mov    $0x74,%edi
  call   <putchar@plt>
  mov    $0x63,%edi
  call   <putchar@plt>
  mov    $0x68,%edi
  call   <putchar@plt>
  mov    $0x61,%edi
  call   <putchar@plt>
  mov    $0x72,%edi
  call   <putchar@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  movl   $0x0,-0x1a8(%rbp)
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <set_echo@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  cmp    $0x78,%eax
  je     L373
  lea    D317(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L373:
  mov    $0x0,%eax
  call   <getchar@plt>
  cmp    $0xa,%eax
  je     L353
  lea    D430(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L353:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L170
  lea    D515(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L529
L170:
  lea    D464(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L529:
  movl   $0x0,-0x1a8(%rbp)
  cmpl   $0x0,-0x1a8(%rbp)
  je     L473
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L661
L473:
  lea    D523(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L661:
  movl   $0x0,-0x1a8(%rbp)
  cmpl   $0x0,-0x1a8(%rbp)
  je     L331
  lea    D364(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L109
L331:
  lea    D347(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L109:
  movl   $0x0,-0x1a8(%rbp)
  lea    -0x1a0(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <gets@plt>
  lea    -0x1a0(%rbp),%rax
  lea    D80(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L753
  lea    D479(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L753:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L677
  lea    D193(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L80
L677:
  lea    D400(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L80:
  movl   $0x0,-0x1a8(%rbp)
  mov    $0x20,%edi
  call   <isspace@plt>
  test   %eax,%eax
  jne    L317
  lea    D560(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L317:
  mov    $0x61,%edi
  call   <isspace@plt>
  test   %eax,%eax
  je     L242
  lea    D225(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L242:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L220
  lea    D666(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L764
L220:
  lea    D510(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L764:
  movl   $0x0,-0x1a8(%rbp)
  cmpl   $0x0,-0x1a8(%rbp)
  je     L340
  lea    D285(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L524
L340:
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L524:
  movl   $0x0,-0x1a8(%rbp)
  mov    $0x0,%edx
  mov    $0x0,%esi
  lea    D130(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <strtol@plt>
  cmp    $0x1234,%eax
  je     L478
  lea    D283(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L478:
  mov    $0x10,%edx
  mov    $0x0,%esi
  lea    D419(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <strtol@plt>
  cmp    $0x1234,%eax
  je     L301
  lea    D397(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L301:
  mov    $0x0,%edx
  mov    $0x0,%esi
  lea    D505(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <strtol@plt>
  cmp    $0x29c,%eax
  je     L627
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L627:
  mov    $0x8,%edx
  mov    $0x0,%esi
  lea    D419(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <strtol@plt>
  cmp    $0x29c,%eax
  je     L675
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L675:
  mov    $0x0,%edx
  mov    $0x0,%esi
  lea    D419(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <strtol@plt>
  cmp    $0x4d2,%eax
  je     L644
  lea    D259(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L644:
  mov    $0xa,%edx
  mov    $0x0,%esi
  lea    D419(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <strtol@plt>
  cmp    $0x4d2,%eax
  je     L51
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L51:
  mov    $0x0,%edx
  mov    $0x0,%esi
  lea    D585(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <strtol@plt>
  cmp    $0xfffffb2e,%eax
  je     L283
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L283:
  mov    $0xa,%edx
  mov    $0x0,%esi
  lea    D585(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <strtol@plt>
  cmp    $0xfffffb2e,%eax
  je     L490
  lea    D373(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L490:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L337
  lea    D399(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L174
L337:
  lea    D279(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L174:
  movl   $0x0,-0x1a8(%rbp)
  lea    -0x1a0(%rbp),%rax
  movw   $0x6261,(%rax)
  movb   $0x0,0x2(%rax)
  movzbl -0x1a0(%rbp),%eax
  cmp    $0x61,%al
  jne    L332
  movzbl -0x19f(%rbp),%eax
  cmp    $0x62,%al
  jne    L332
  movzbl -0x19e(%rbp),%eax
  test   %al,%al
  je     L172
L332:
  addl   $0x1,-0x1a8(%rbp)
L172:
  lea    -0x1a0(%rbp),%rax
  lea    -0x1a0(%rbp),%rdx
  add    $0x3,%rdx
  mov    %rax,%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  movzbl -0x1a0(%rbp),%eax
  cmp    $0x61,%al
  jne    L574
  movzbl -0x19f(%rbp),%eax
  cmp    $0x62,%al
  jne    L574
  movzbl -0x19e(%rbp),%eax
  test   %al,%al
  jne    L574
  movzbl -0x19d(%rbp),%eax
  cmp    $0x61,%al
  jne    L574
  movzbl -0x19c(%rbp),%eax
  cmp    $0x62,%al
  jne    L574
  movzbl -0x19b(%rbp),%eax
  test   %al,%al
  je     L143
L574:
  addl   $0x1,-0x1a8(%rbp)
L143:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L276
  lea    D82(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L782
L276:
  lea    D357(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L782:
  movl   $0x0,-0x1a8(%rbp)
  lea    -0x1a0(%rbp),%rax
  movabs $0x7979636261787878,%rcx
  mov    %rcx,(%rax)
  movw   $0x79,0x8(%rax)
  lea    -0x1a0(%rbp),%rax
  lea    0x3(%rax),%rcx
  lea    -0x1a0(%rbp),%rax
  add    $0x5,%rax
  mov    $0x3,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memmove@plt>
  movzbl -0x19b(%rbp),%eax
  cmp    $0x61,%al
  jne    L19
  movzbl -0x19a(%rbp),%eax
  cmp    $0x62,%al
  jne    L19
  movzbl -0x199(%rbp),%eax
  cmp    $0x63,%al
  je     L499
L19:
  addl   $0x1,-0x1a8(%rbp)
L499:
  lea    -0x1a0(%rbp),%rax
  lea    0x5(%rax),%rcx
  lea    -0x1a0(%rbp),%rax
  add    $0x4,%rax
  mov    $0x3,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memmove@plt>
  movzbl -0x19c(%rbp),%eax
  cmp    $0x61,%al
  jne    L427
  movzbl -0x19b(%rbp),%eax
  cmp    $0x62,%al
  jne    L427
  movzbl -0x19a(%rbp),%eax
  cmp    $0x63,%al
  je     L261
L427:
  addl   $0x1,-0x1a8(%rbp)
L261:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L480
  lea    D441(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L137
L480:
  lea    D159(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L137:
  movl   $0x0,-0x1a8(%rbp)
  movb   $0x62,-0x1a0(%rbp)
  movb   $0x61,-0x19f(%rbp)
  movb   $0x72,-0x19e(%rbp)
  movb   $0x0,-0x19d(%rbp)
  movb   $0x66,-0xd0(%rbp)
  movb   $0x6f,-0xcf(%rbp)
  movb   $0x6f,-0xce(%rbp)
  movb   $0x0,-0xcd(%rbp)
  lea    -0x1a0(%rbp),%rdx
  lea    -0xd0(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0xd0(%rbp),%rdx
  cmp    %rdx,%rax
  je     L34
  lea    D251(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L34:
  lea    -0xd0(%rbp),%rax
  lea    D45(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L440
  lea    D246(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L440:
  movb   $0x0,-0x1a0(%rbp)
  movb   $0x66,-0xd0(%rbp)
  movb   $0x6f,-0xcf(%rbp)
  movb   $0x6f,-0xce(%rbp)
  movb   $0x0,-0xcd(%rbp)
  lea    -0x1a0(%rbp),%rdx
  lea    -0xd0(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0xd0(%rbp),%rax
  lea    D47(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L476
  lea    D296(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L476:
  movb   $0x0,-0xd0(%rbp)
  movb   $0x66,-0x1a0(%rbp)
  movb   $0x6f,-0x19f(%rbp)
  movb   $0x6f,-0x19e(%rbp)
  movb   $0x32,-0x19d(%rbp)
  movb   $0x0,-0x19c(%rbp)
  lea    -0x1a0(%rbp),%rdx
  lea    -0xd0(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  lea    -0xd0(%rbp),%rax
  lea    D114(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L350
  lea    D396(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x1a8(%rbp)
L350:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L697
  lea    D398(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L464
L697:
  lea    D104(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L464:
  movl   $0x0,-0x1a8(%rbp)
  movb   $0x61,-0x1a9(%rbp)
  movsbl -0x1a9(%rbp),%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x41,%eax
  je     L3
  addl   $0x1,-0x1a8(%rbp)
L3:
  movb   $0x7a,-0x1a9(%rbp)
  movsbl -0x1a9(%rbp),%eax
  mov    %eax,%edi
  call   <toupper@plt>
  cmp    $0x5a,%eax
  je     L84
  addl   $0x1,-0x1a8(%rbp)
L84:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L460
  lea    D359(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L312
L460:
  lea    D613(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L312:
  movl   $0x0,-0x1a8(%rbp)
  movb   $0x41,-0x1a9(%rbp)
  movsbl -0x1a9(%rbp),%eax
  mov    %eax,%edi
  call   <tolower@plt>
  cmp    $0x61,%eax
  je     L403
  addl   $0x1,-0x1a8(%rbp)
L403:
  movb   $0x5a,-0x1a9(%rbp)
  movsbl -0x1a9(%rbp),%eax
  mov    %eax,%edi
  call   <tolower@plt>
  cmp    $0x7a,%eax
  je     L407
  addl   $0x1,-0x1a8(%rbp)
L407:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L775
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L392
L775:
  lea    D335(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L392:
  movl   $0x0,-0x1a8(%rbp)
  mov    $0x7,%edi
  call   <isprint@plt>
  test   %eax,%eax
  je     L298
  addl   $0x1,-0x1a8(%rbp)
L298:
  mov    $0x47,%edi
  call   <isprint@plt>
  test   %eax,%eax
  jne    L233
  addl   $0x1,-0x1a8(%rbp)
L233:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L435
  lea    D526(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L212
L435:
  lea    D325(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L212:
  movl   $0x0,-0x1a8(%rbp)
  movb   $0x0,-0x1a0(%rbp)
  movb   $0x1,-0x19f(%rbp)
  movb   $0x2,-0x19e(%rbp)
  movb   $0x0,-0xd0(%rbp)
  movb   $0x0,-0xcf(%rbp)
  movb   $0x0,-0xce(%rbp)
  lea    -0x1a0(%rbp),%rcx
  lea    -0xd0(%rbp),%rax
  mov    $0x3,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movzbl -0xd0(%rbp),%eax
  test   %al,%al
  jne    L652
  movzbl -0xcf(%rbp),%eax
  cmp    $0x1,%al
  jne    L652
  movzbl -0xce(%rbp),%eax
  cmp    $0x2,%al
  je     L160
L652:
  addl   $0x1,-0x1a8(%rbp)
L160:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L537
  lea    D242(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L416
L537:
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L416:
  lea    -0x1a0(%rbp),%rax
  mov    $0x32,%edx
  mov    $0x34,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  movl   $0x0,-0x1a4(%rbp)
  jmp    L686
L8:
  mov    -0x1a4(%rbp),%eax
  cltq
  movzbl -0x1a0(%rbp,%rax,1),%eax
  cmp    $0x34,%al
  je     L554
  addl   $0x1,-0x1a8(%rbp)
L554:
  addl   $0x1,-0x1a4(%rbp)
L686:
  cmpl   $0x31,-0x1a4(%rbp)
  jle    L8
  cmpl   $0x0,-0x1a8(%rbp)
  je     L526
  lea    D365(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L206
L526:
  lea    D616(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L206:
  movl   $0x0,-0x1a8(%rbp)
  lea    D36(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <atoi@plt>
  cmp    $0x856,%eax
  je     L370
  addl   $0x1,-0x1a8(%rbp)
L370:
  lea    D632(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <atoi@plt>
  test   %eax,%eax
  je     L685
  addl   $0x1,-0x1a8(%rbp)
L685:
  lea    D74(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <atoi@plt>
  cmp    $0xffff8ad0,%eax
  je     L33
  addl   $0x1,-0x1a8(%rbp)
L33:
  cmpl   $0x0,-0x1a8(%rbp)
  je     L767
  lea    D302(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L596
L767:
  lea    D116(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L596:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L503
  call   <__stack_chk_fail@plt>
L503:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D358
type: string
name: disassemble_data
arguments: data_tag: D443
type: string
name: disassemble_data
arguments: data_tag: D150
type: string
name: disassemble_data
arguments: data_tag: D317
type: string
name: disassemble_data
arguments: data_tag: D430
type: string
name: disassemble_data
arguments: data_tag: D515
type: string
name: disassemble_data
arguments: data_tag: D464
type: string
name: disassemble_data
arguments: data_tag: D105
type: string
name: disassemble_data
arguments: data_tag: D523
type: string
name: disassemble_data
arguments: data_tag: D364
type: string
name: disassemble_data
arguments: data_tag: D347
type: string
name: disassemble_data
arguments: data_tag: D80
type: string
name: disassemble_data
arguments: data_tag: D479
type: string
name: disassemble_data
arguments: data_tag: D193
type: string
name: disassemble_data
arguments: data_tag: D400
type: string
name: disassemble_data
arguments: data_tag: D560
type: string
name: disassemble_data
arguments: data_tag: D225
type: string
name: disassemble_data
arguments: data_tag: D666
type: string
name: disassemble_data
arguments: data_tag: D510
type: string
name: disassemble_data
arguments: data_tag: D285
type: string
name: disassemble_data
arguments: data_tag: D30
type: string
name: disassemble_data
arguments: data_tag: D130
type: string
name: disassemble_data
arguments: data_tag: D283
type: string
name: disassemble_data
arguments: data_tag: D419
type: string
name: disassemble_data
arguments: data_tag: D397
type: string
name: disassemble_data
arguments: data_tag: D505
type: string
name: disassemble_data
arguments: data_tag: D91
type: string
name: disassemble_data
arguments: data_tag: D64
type: string
name: disassemble_data
arguments: data_tag: D259
type: string
name: disassemble_data
arguments: data_tag: D56
type: string
name: disassemble_data
arguments: data_tag: D585
type: string
name: disassemble_data
arguments: data_tag: D403
type: string
name: disassemble_data
arguments: data_tag: D373
type: string
name: disassemble_data
arguments: data_tag: D399
type: string
name: disassemble_data
arguments: data_tag: D279
type: string
name: disassemble_data
arguments: data_tag: D82
type: string
name: disassemble_data
arguments: data_tag: D357
type: string
name: disassemble_data
arguments: data_tag: D441
type: string
name: disassemble_data
arguments: data_tag: D159
type: string
name: disassemble_data
arguments: data_tag: D251
type: string
name: disassemble_data
arguments: data_tag: D45
type: string
name: disassemble_data
arguments: data_tag: D246
type: string
name: disassemble_data
arguments: data_tag: D47
type: string
name: disassemble_data
arguments: data_tag: D296
type: string
name: disassemble_data
arguments: data_tag: D114
type: string
name: disassemble_data
arguments: data_tag: D396
type: string
name: disassemble_data
arguments: data_tag: D398
type: string
name: disassemble_data
arguments: data_tag: D104
type: string
name: disassemble_data
arguments: data_tag: D359
type: string
name: disassemble_data
arguments: data_tag: D613
type: string
name: disassemble_data
arguments: data_tag: D14
type: string
name: disassemble_data
arguments: data_tag: D335
type: string
name: disassemble_data
arguments: data_tag: D526
type: string
name: disassemble_data
arguments: data_tag: D325
type: string
name: disassemble_data
arguments: data_tag: D242
type: string
name: disassemble_data
arguments: data_tag: D235
type: string
name: disassemble_data
arguments: data_tag: D365
type: string
name: disassemble_data
arguments: data_tag: D616
type: string
name: disassemble_data
arguments: data_tag: D36
type: string
name: disassemble_data
arguments: data_tag: D632
type: string
name: disassemble_data
arguments: data_tag: D74
type: string
name: disassemble_data
arguments: data_tag: D302
type: string
name: disassemble_data
arguments: data_tag: D116
type: string

tool: D358: ok puts

tool: D443: o%c pr%cntf

tool: D150: ok puts_nonl


tool: D317: [lost x]

tool: D430: [lost newline]

tool: D515: fail getchar

tool: D464: ok getchar

tool: D105: fail strlen

tool: D523: ok strlen

tool: D364: fail strcmp

tool: D347: ok strcmp

tool: D80: This is a test of the emergency broadcasting system.

tool: D479: [comparison fails]

tool: D193: fail gets

tool: D400: ok gets

tool: D560: [whitespace]

tool: D225: [non-whitespace]

tool: D666: fail isspace

tool: D510: ok isspace

tool: D285: fail isdigit

tool: D30: ok isdigit

tool: D130: 0x1234

tool: D283: [0x1234 base=0]

tool: D419: 1234

tool: D397: [1234 base=16]

tool: D505: 01234

tool: D91: [01234 base=0]

tool: D64: [1234 base=8]

tool: D259: [1234 base=0]

tool: D56: [1234 base=10]

tool: D585: -1234

tool: D403: [-1234 base=0]

tool: D373: [-1234 base=10]

tool: D399: fail strtol

tool: D279: ok strtol

tool: D82: fail strcpy

tool: D357: ok strcpy

tool: D441: fail memmove

tool: D159: ok memmove

tool: D251: [strcat retval]

tool: D45: foobar

tool: D246: [strcat foobar]

tool: D47: foo

tool: D296: [strcat foo]

tool: D114: foo2

tool: D396: [strcat foo2]

tool: D398: fail strcat

tool: D104: ok strcat

tool: D359: fail toupper

tool: D613: ok toupper

tool: D14: fail tolower

tool: D335: ok tolower

tool: D526: fail isprint

tool: D325: ok isprint

tool: D242: fail memcpy

tool: D235: ok memcpy

tool: D365: fail memset

tool: D616: ok memset

tool: D36: 2134

tool: D632: 0

tool: D74: -30000

tool: D302: fail atoi

tool: D116: ok atoi

assistant: ```c
int main(int argc, char **argv) {
  int fail, i;
  char buf[200], dest[200], c;
  puts("ok puts");
  printf("o%c pr%cntf", 'k', 'i');
  printf("\n");
  puts_nonl("ok puts_nonl\n");
  putchar('o');
  putchar('k');
  putchar(' ');
  putchar('p');
  putchar('u');
  putchar('t');
  putchar('c');
  putchar('h');
  putchar('a');
  putchar('r');
  putchar('\n');
  fail = 0;
  set_echo(0);
  if (getchar() != 'x') {
    puts("[lost x]");
    fail++;
  }
  if (getchar() != '\n') {
    puts("[lost newline]");
    fail++;
  }
  if (fail) {
    puts("fail getchar");
  } else {
    puts("ok getchar");
  }
  fail = 0;
  if (strlen("") != 0) {
    puts("[empty]");
    fail++;
  }
  if (strlen("abcdef") != 6) {
    puts("[non-empty]");
    fail++;
  }
  if (fail) {
    puts("fail strlen");
  } else {
    puts("ok strlen");
  }
  fail = 0;
  if (strcmp("less", "lesser") >= 0) {
    puts("[len=4 vs len=6]");
    fail++;
  }
  if (strcmp("lesseq", "lesser") >= 0) {
    puts("[q vs r]");
    fail++;
  }
  if (strcmp("lesser", "lesser") != 0) {
    puts("[r vs r]");
    fail++;
  }
  if (strcmp("lesser", "lesseq") <= 0) {
    puts("[r vs q]");
    fail++;
  }
  if (strcmp("lesser", "less") <= 0) {
    puts("[len=6 vs len=4]");
    fail++;
  }
  if (fail) {
    puts("fail strcmp");
  } else {
    puts("ok strcmp");
  }
  fail = 0;
  gets(buf);
  if (strcmp(buf, "This is a test of the emergency broadcasting system.") != 0) {
    puts("[comparison fails]");
    fail++;
  }
  if (fail) {
    puts("fail gets");
  } else {
    puts("ok gets");
  }
  fail = 0;
  if (!isspace(' ')) {
    puts("[whitespace]");
    fail++;
  }
  if (isspace('a')) {
    puts("[non-whitespace]");
    fail++;
  }
  if (fail) {
    puts("fail isspace");
  } else {
    puts("ok isspace");
  }
  fail = 0;
  if (!isdigit('0')) {
    puts("[0]");
    fail++;
  }
  if (!isdigit('1')) {
    puts("[1]");
    fail++;
  }
  if (!isdigit('2')) {
    puts("[2]");
    fail++;
  }
  if (!isdigit('3')) {
    puts("[3]");
    fail++;
  }
  if (!isdigit('4')) {
    puts("[4]");
    fail++;
  }
  if (!isdigit('5')) {
    puts("[5]");
    fail++;
  }
  if (!isdigit('6')) {
    puts("[6]");
    fail++;
  }
  if (!isdigit('7')) {
    puts("[7]");
    fail++;
  }
  if (!isdigit('8')) {
    puts("[8]");
    fail++;
  }
  if (!isdigit('9')) {
    puts("[9]");
    fail++;
  }
  if (isdigit(' ')) {
    puts("[space]");
    fail++;
  }
  if (isdigit('a')) {
    puts("[alpha]");
    fail++;
  }
  if (fail) {
    puts("fail isdigit");
  } else {
    puts("ok isdigit");
  }
  fail = 0;
  if (strtol("0x1234", ((void *)0L), 0) != 0x1234) {
    puts("[0x1234 base=0]");
    fail++;
  }
  if (strtol("1234", ((void *)0L), 16) != 0x1234) {
    puts("[1234 base=16]");
    fail++;
  }
  if (strtol("01234", ((void *)0L), 0) != 01234) {
    puts("[01234 base=0]");
    fail++;
  }
  if (strtol("1234", ((void *)0L), 8) != 01234) {
    puts("[1234 base=8]");
    fail++;
  }
  if (strtol("1234", ((void *)0L), 0) != 1234) {
    puts("[1234 base=0]");
    fail++;
  }
  if (strtol("1234", ((void *)0L), 10) != 1234) {
    puts("[1234 base=10]");
    fail++;
  }
  if (strtol("-1234", ((void *)0L), 0) != -1234) {
    puts("[-1234 base=0]");
    fail++;
  }
  if (strtol("-1234", ((void *)0L), 10) != -1234) {
    puts("[-1234 base=10]");
    fail++;
  }
  if (fail) {
    puts("fail strtol");
  } else {
    puts("ok strtol");
  }
  fail = 0;
  strcpy(buf, "ab");
  if (!((buf[0] == 'a') && (buf[1] == 'b') && (buf[2] == '\0')))
    fail++;
  strcpy(&buf[3], buf);
  if (!((buf[0] == 'a') && (buf[1] == 'b') && (buf[2] == '\0') && (buf[3] == 'a') && (buf[4] == 'b') && (buf[5] == '\0')))
    fail++;
  if (fail) {
    puts("fail strcpy");
  } else {
    puts("ok strcpy");
  }
  fail = 0;
  strcpy(buf, "xxxabcyyy");
  memmove(&buf[5], &buf[3], 3);
  if (!((buf[5] == 'a') && (buf[6] == 'b') && (buf[7] == 'c')))
    fail++;
  memmove(&buf[4], &buf[5], 3);
  if (!((buf[4] == 'a') && (buf[5] == 'b') && (buf[6] == 'c')))
    fail++;
  if (fail) {
    puts("fail memmove");
  } else {
    puts("ok memmove");
  }
  fail = 0;
  buf[0] = 'b';
  buf[1] = 'a';
  buf[2] = 'r';
  buf[3] = '\0';
  dest[0] = 'f';
  dest[1] = 'o';
  dest[2] = 'o';
  dest[3] = '\0';
  if (strcat(dest, buf) != dest) {
    puts("[strcat retval]");
    fail++;
  }
  if (strcmp(dest, "foobar") != 0) {
    puts("[strcat foobar]");
    fail++;
  }
  buf[0] = '\0';
  dest[0] = 'f';
  dest[1] = 'o';
  dest[2] = 'o';
  dest[3] = '\0';
  strcat(dest, buf);
  if (strcmp(dest, "foo") != 0) {
    puts("[strcat foo]");
    fail++;
  }
  dest[0] = '\0';
  buf[0] = 'f';
  buf[1] = 'o';
  buf[2] = 'o';
  buf[3] = '2';
  buf[4] = '\0';
  strcat(dest, buf);
  if (strcmp(dest, "foo2") != 0) {
    puts("[strcat foo2]");
    fail++;
  }
  if (fail) {
    puts("fail strcat");
  } else {
    puts("ok strcat");
  }
  fail = 0;
  c = 'a';
  if (toupper(c) != 'A') {
    fail++;
  }
  c = 'z';
  if (toupper(c) != 'Z') {
    fail++;
  }
  if (fail) {
    puts("fail toupper");
  } else {
    puts("ok toupper");
  }
  fail = 0;
  c = 'A';
  if (tolower(c) != 'a') {
    fail++;
  }
  c = 'Z';
  if (tolower(c) != 'z') {
    fail++;
  }
  if (fail) {
    puts("fail tolower");
  } else {
    puts("ok tolower");
  }
  fail = 0;
  if (isprint('')) {
    fail++;
  }
  if (!isprint('G')) {
    fail++;
  }
  if (fail) {
    puts("fail isprint");
  } else {
    puts("ok isprint");
  }
  fail = 0;
  buf[0] = 0;
  buf[1] = 1;
  buf[2] = 2;
  dest[0] = 0;
  dest[1] = 0;
  dest[2] = 0;
  memcpy(dest, buf, 3);
  if (!(dest[0] == 0 && dest[1] == 1 && dest[2] == 2)) {
    fail++;
  }
  if (fail) {
    puts("fail memcpy");
  } else {
    puts("ok memcpy");
  }
  memset(buf, '4', 50);
  for (i = 0; i < 50; ++i) {
    if (buf[i] != '4') {
      fail++;
    }
  }
  if (fail) {
    puts("fail memset");
  } else {
    puts("ok memset");
  }
  fail = 0;
  if (atoi("2134") != 2134) {
    fail++;
  }
  if (atoi("0") != 0) {
    fail++;
  }
  if (atoi("-30000") != -30000) {
    fail++;
  }
  if (fail) {
    puts("fail atoi");
  } else {
    puts("ok atoi");
  }
  return 0;
}
```