user: 下面的汇编指令对应的C源代码是什么：

```asm
<z80_Disassemble>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x88,%rsp
  mov    %rdi,(%rsp)
  mov    %esi,0xc(%rsp)
  mov    %rdx,%rbx
  mov    %fs:0x28,%rax
  mov    %rax,0x78(%rsp)
  xor    %eax,%eax
  movzwl %si,%r14d
  movzbl (%rdi,%r14,1),%ebp
  mov    %ebp,%r15d
  shr    $0x3,%r15b
  mov    %r15d,%r13d
  and    $0x7,%r13d
  mov    %ebp,%r12d
  and    $0x7,%r12d
  mov    %ebp,%eax
  and    $0xffffffc0,%eax
  cmp    $0x80,%al
  je     L1371
  ja     L1409
  test   %al,%al
  je     L1375
  cmp    $0x40,%al
  jne    L234
  cmp    %r12b,%r13b
  je     L364
  lea    D370(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  lea    D1386(%rip),%rbp
  and    $0x7,%r13d
  mov    0x0(%rbp,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  and    $0x7,%r12d
  mov    0x0(%rbp,%r12,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L1409:
  cmp    $0xc0,%al
  jne    L234
  movzbl %r12b,%r12d
  lea    D962(%rip),%rdx
  movslq (%rdx,%r12,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L1375:
  movzbl %r12b,%r12d
  lea    D1538(%rip),%rdx
  movslq (%rdx,%r12,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  cmp    $0x2,%r13b
  je     L186
  ja     L1396
  test   %r13b,%r13b
  je     L909
  cmp    $0x1,%r13b
  jne    L1031
  lea    D818(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
L1396:
  cmp    $0x3,%r13b
  jne    L1031
  lea    D126(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  movzbl 0xc(%rsp),%eax
  lea    0x2(%rdx,%rax,1),%edx
  movzbl %dl,%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L909:
  lea    D1181(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
L186:
  lea    D621(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  movzbl 0xc(%rsp),%eax
  lea    0x2(%rdx,%rax,1),%edx
  movzbl %dl,%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L1031:
  lea    D126(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  and    $0x3,%r15d
  lea    D1876(%rip),%rax
  mov    (%rax,%r15,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  movzbl 0xc(%rsp),%eax
  lea    0x2(%rdx,%rax,1),%edx
  movzbl %dl,%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  test   $0x8,%bpl
  je     L210
  lea    D904(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  shr    %r13b
  and    $0x3,%r13d
  lea    D821(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L210:
  lea    D370(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  shr    %r13b
  and    $0x3,%r13d
  lea    D821(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  movzbl %r13b,%r13d
  lea    D772(%rip),%rdx
  movslq (%rdx,%r13,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D1215(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
  lea    D1734(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
  lea    D1975(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
  lea    D1857(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
  lea    D2005(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1375(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D0(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D2005(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1063(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1294(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  test   $0x8,%bpl
  je     L521
  lea    D1770(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
L629:
  shr    %r13b
  and    $0x3,%r13d
  lea    D821(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L521:
  lea    D551(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L629
  lea    D551(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  and    $0x7,%r13d
  lea    D1386(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1770(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  and    $0x7,%r13d
  lea    D1386(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D370(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  and    $0x7,%r13d
  lea    D1386(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  and    $0x7,%r13d
  lea    D1655(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
L364:
  lea    D1077(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L234
L1371:
  and    $0x7,%r13d
  lea    D976(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  and    $0x7,%r12d
  lea    D1386(%rip),%rax
  mov    (%rax,%r12,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
L234:
  mov    0x78(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L1011
  add    $0x88,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  lea    D2082(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  and    $0x7,%r13d
  lea    D1876(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  test   $0x1,%r15b
  je     L941
  shr    %r13b
  cmp    $0x2,%r13b
  je     L474
  ja     L921
  test   %r13b,%r13b
  je     L1232
  cmp    $0x1,%r13b
  jne    L234
  lea    D1584(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
L1232:
  lea    D1273(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
L474:
  lea    D536(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
L921:
  lea    D1885(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
L941:
  lea    D503(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  shr    %r13b
  cmp    $0x3,%r13b
  je     L12
  and    $0x3,%r13d
  lea    D821(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L12:
  lea    D96(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D272(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  and    $0x7,%r13d
  lea    D1876(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  movzbl %r13b,%r13d
  lea    D436(%rip),%rdx
  movslq (%rdx,%r13,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D272(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  movzwl 0xc(%rsp),%eax
  add    $0x1,%eax
  movzwl %ax,%eax
  mov    (%rsp),%rcx
  movzbl (%rcx,%rax,1),%eax
  mov    %eax,%ebp
  shr    $0x3,%bpl
  and    $0x7,%ebp
  mov    %eax,%r12d
  and    $0x7,%r12d
  movb   $0x0,0x21(%rsp)
  and    $0xffffffc0,%eax
  cmp    $0x80,%al
  je     L763
  ja     L21
  test   %al,%al
  je     L795
  cmp    $0x40,%al
  jne    L234
  lea    D2111(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  add    $0x30,%ebp
  mov    %bpl,0x20(%rsp)
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    %r12,%rax
  and    $0x7,%eax
  lea    D1386(%rip),%rdx
  mov    (%rdx,%rax,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L21:
  cmp    $0xc0,%al
  jne    L234
  lea    D1868(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  add    $0x30,%ebp
  mov    %bpl,0x20(%rsp)
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    %r12,%rax
  and    $0x7,%eax
  lea    D1386(%rip),%rdx
  mov    (%rdx,%rax,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L795:
  and    $0x7,%ebp
  lea    D655(%rip),%rax
  mov    (%rax,%rbp,8),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    D39(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    %r12,%rax
  and    $0x7,%eax
  lea    D1386(%rip),%rdx
  mov    (%rdx,%rax,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L763:
  lea    D95(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  add    $0x30,%ebp
  mov    %bpl,0x20(%rsp)
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    %r12,%rax
  and    $0x7,%eax
  lea    D1386(%rip),%rdx
  mov    (%rdx,%rax,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1819(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1063(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D708(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1297(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
  lea    D1978(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
  lea    D1821(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
  lea    D2035(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
  lea    D1814(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  and    $0x7,%r13d
  lea    D1876(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  test   $0x1,%r15b
  je     L79
  shr    %r13b
  je     L1106
  cmp    $0x2,%r13b
  je     L1407
  test   $0x20,%bpl
  lea    D1808(%rip),%rsi
  lea    D1714(%rip),%rax
  cmove  %rax,%rsi
  lea    0x1d(%rsp),%rdi
  call   <strcpy@plt>
  movzwl 0xc(%rsp),%ebp
  add    $0x1,%ebp
  movzwl %bp,%ebp
  mov    (%rsp),%rax
  movzbl (%rax,%rbp,1),%r12d
  cmp    $0xbe,%r12b
  ja     L1074
  cmp    $0x7d,%r12b
  ja     L688
  cmp    $0x36,%r12b
  ja     L1300
  cmp    $0x8,%r12b
  jbe    L234
  sub    $0x9,%r12d
  cmp    $0x2d,%r12b
  ja     L234
  movzbl %r12b,%r12d
  lea    D432(%rip),%rdx
  movslq (%rdx,%r12,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L1106:
  lea    D1814(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L1407:
  movzwl 0xc(%rsp),%r12d
  add    $0x1,%r12d
  movzwl %r12w,%r12d
  mov    (%rsp),%rax
  movzbl (%rax,%r12,1),%eax
  mov    %eax,%edx
  and    $0xffffffc0,%edx
  cmp    $0x40,%dl
  je     L734
  cmp    $0x80,%dl
  jne    L234
  and    $0x1f,%eax
  lea    D1523(%rip),%rdx
  mov    (%rdx,%rax,8),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
L734:
  mov    %eax,%edx
  shr    $0x3,%dl
  mov    %edx,%ebp
  and    $0x7,%ebp
  and    $0x7,%eax
  lea    D392(%rip),%rcx
  movslq (%rcx,%rax,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
  lea    D1947(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  and    $0x7,%ebp
  lea    D1386(%rip),%rax
  mov    (%rax,%rbp,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D135(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D29(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  and    $0x7,%ebp
  lea    D1386(%rip),%rax
  mov    (%rax,%rbp,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  test   $0x1,%dl
  je     L305
  lea    D1342(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
L650:
  lea    D1426(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    %ebp,%eax
  shr    %al
  and    $0x3,%eax
  lea    D821(%rip),%rdx
  mov    (%rdx,%rax,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L305:
  lea    D810(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L650
  test   $0x1,%dl
  je     L87
  lea    D370(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    %ebp,%eax
  shr    %al
  and    $0x3,%eax
  lea    D821(%rip),%rdx
  mov    (%rdx,%rax,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1531(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r12,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L87:
  lea    D963(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r12,1),%edx
  lea    0x20(%rsp),%r12
  lea    D1626(%rip),%rsi
  mov    %r12,%rdi
  call   <sprintf@plt>
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1840(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    %ebp,%eax
  shr    %al
  and    $0x3,%eax
  lea    D821(%rip),%rdx
  mov    (%rdx,%rax,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  and    $0x7,%ebp
  lea    D1361(%rip),%rax
  mov    (%rax,%rbp,8),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
  and    $0x7,%ebp
  lea    D1138(%rip),%rax
  mov    (%rax,%rbp,8),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
  lea    D541(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  add    $0x2f,%ebp
  mov    %bpl,0x20(%rsp)
  movb   $0x0,0x21(%rsp)
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  and    $0x7,%ebp
  lea    D1724(%rip),%rax
  mov    (%rax,%rbp,8),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  jmp    L234
L688:
  sub    $0x7e,%r12d
  cmp    $0x40,%r12b
  ja     L234
  movzbl %r12b,%r12d
  lea    D1278(%rip),%rdx
  movslq (%rdx,%r12,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L1300:
  lea    -0x39(%r12),%ecx
  cmp    $0x3e,%cl
  ja     L234
  mov    $0x1,%eax
  shl    %cl,%rax
  movabs $0x5f80000000000000,%rdx
  test   %rdx,%rax
  jne    L334
  movabs $0x20202020202000,%rdx
  test   %rdx,%rax
  jne    L742
  test   %cl,%cl
  jne    L234
  lea    D1988(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D793(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L1074:
  lea    0x35(%r12),%eax
  cmp    $0x2e,%al
  ja     L234
  add    $0x35,%r12d
  cmp    $0x2e,%r12b
  ja     L234
  movzbl %r12b,%r12d
  lea    D1299(%rip),%rdx
  movslq (%rdx,%r12,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D1988(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1304(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1988(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D266(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D370(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D2005(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1715(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D551(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1988(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rbp
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D370(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1531(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1626(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1770(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1775(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1540(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D2005(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%r14
  movzbl 0x1(%r14,%rbp,1),%edx
  lea    0x20(%rsp),%r12
  lea    D1548(%rip),%r13
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <sprintf@plt>
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1840(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  movzbl 0x2(%r14,%rbp,1),%edx
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <sprintf@plt>
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L742:
  lea    D370(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    %r12d,%eax
  shr    $0x3,%al
  and    $0x7,%eax
  lea    D1386(%rip),%rdx
  mov    (%rdx,%rax,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1232(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L334:
  lea    D2005(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D1840(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  and    $0x7,%r12d
  lea    D1386(%rip),%rax
  mov    (%rax,%r12,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1294(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1225(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D130(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1903(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D2291(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1267(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D992(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D306(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1931(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D503(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1453(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D782(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D529(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1810(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  mov    (%rsp),%rax
  movzbl 0x2(%rax,%rbp,1),%eax
  mov    %eax,%r12d
  shr    $0x3,%r12b
  and    $0x7,%r12d
  movb   $0x0,0x21(%rsp)
  and    $0xffffffc0,%eax
  cmp    $0x80,%al
  je     L309
  ja     L956
  test   %al,%al
  je     L1039
  cmp    $0x40,%al
  jne    L16
  lea    D2111(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x30(%r12),%eax
  mov    %al,0x20(%rsp)
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L16
L956:
  cmp    $0xc0,%al
  jne    L16
  lea    D1868(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x30(%r12),%eax
  mov    %al,0x20(%rsp)
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L16
L1039:
  mov    %r12,%rax
  and    $0x7,%eax
  lea    D1589(%rip),%rdx
  mov    (%rdx,%rax,8),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    D39(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
L16:
  lea    D1029(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    0x1d(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D629(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%rbp,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D233(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L309:
  lea    D1663(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  lea    0x30(%r12),%eax
  mov    %al,0x20(%rsp)
  lea    0x20(%rsp),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  lea    D2274(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L16
L79:
  lea    D782(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  shr    %r13b
  cmp    $0x3,%r13b
  je     L259
  and    $0x3,%r13d
  lea    D821(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L259:
  lea    D96(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  and    $0x7,%r13d
  lea    D976(%rip),%rax
  mov    (%rax,%r13,8),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    (%rsp),%rax
  movzbl 0x1(%rax,%r14,1),%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
  lea    D1439(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcpy@plt>
  mov    %ebp,%edx
  and    $0x38,%edx
  lea    0x20(%rsp),%rbp
  lea    D1548(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <strcat@plt>
  jmp    L234
L1011:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D370
type_infered: string
name: retrieve_data
arguments: data_label: D2274
type_infered: string
name: retrieve_data
arguments: data_label: D818
type_infered: string
name: retrieve_data
arguments: data_label: D126
type_infered: string
name: retrieve_data
arguments: data_label: D1626
type_infered: string
name: retrieve_data
arguments: data_label: D1181
type_infered: string
name: retrieve_data
arguments: data_label: D621
type_infered: string
name: retrieve_data
arguments: data_label: D904
type_infered: string
name: retrieve_data
arguments: data_label: D1215
type_infered: string
name: retrieve_data
arguments: data_label: D1734
type_infered: string
name: retrieve_data
arguments: data_label: D1975
type_infered: string
name: retrieve_data
arguments: data_label: D1857
type_infered: string
name: retrieve_data
arguments: data_label: D2005
type_infered: string
name: retrieve_data
arguments: data_label: D1375
type_infered: string
name: retrieve_data
arguments: data_label: D0
type_infered: string
name: retrieve_data
arguments: data_label: D233
type_infered: string
name: retrieve_data
arguments: data_label: D1063
type_infered: string
name: retrieve_data
arguments: data_label: D1294
type_infered: string
name: retrieve_data
arguments: data_label: D1770
type_infered: string
name: retrieve_data
arguments: data_label: D551
type_infered: string
name: retrieve_data
arguments: data_label: D1548
type_infered: string
name: retrieve_data
arguments: data_label: D1077
type_infered: string
name: retrieve_data
arguments: data_label: D2082
type_infered: string
name: retrieve_data
arguments: data_label: D1584
type_infered: string
name: retrieve_data
arguments: data_label: D1273
type_infered: string
name: retrieve_data
arguments: data_label: D536
type_infered: string
name: retrieve_data
arguments: data_label: D1885
type_infered: string
name: retrieve_data
arguments: data_label: D503
type_infered: string
name: retrieve_data
arguments: data_label: D96
type_infered: string
name: retrieve_data
arguments: data_label: D272
type_infered: string
name: retrieve_data
arguments: data_label: D2111
type_infered: string
name: retrieve_data
arguments: data_label: D1868
type_infered: string
name: retrieve_data
arguments: data_label: D39
type_infered: string
name: retrieve_data
arguments: data_label: D95
type_infered: string
name: retrieve_data
arguments: data_label: D1819
type_infered: string
name: retrieve_data
arguments: data_label: D708
type_infered: string
name: retrieve_data
arguments: data_label: D1297
type_infered: string
name: retrieve_data
arguments: data_label: D1978
type_infered: string
name: retrieve_data
arguments: data_label: D1821
type_infered: string
name: retrieve_data
arguments: data_label: D2035
type_infered: string
name: retrieve_data
arguments: data_label: D1814
type_infered: string
name: retrieve_data
arguments: data_label: D1808
type_infered: string
name: retrieve_data
arguments: data_label: D1714
type_infered: string
name: retrieve_data
arguments: data_label: D1947
type_infered: string
name: retrieve_data
arguments: data_label: D135
type_infered: string
name: retrieve_data
arguments: data_label: D29
type_infered: string
name: retrieve_data
arguments: data_label: D1342
type_infered: string
name: retrieve_data
arguments: data_label: D1426
type_infered: string
name: retrieve_data
arguments: data_label: D810
type_infered: string
name: retrieve_data
arguments: data_label: D1531
type_infered: string
name: retrieve_data
arguments: data_label: D963
type_infered: string
name: retrieve_data
arguments: data_label: D1840
type_infered: string
name: retrieve_data
arguments: data_label: D541
type_infered: string
name: retrieve_data
arguments: data_label: D1988
type_infered: string
name: retrieve_data
arguments: data_label: D793
type_infered: string
name: retrieve_data
arguments: data_label: D1304
type_infered: string
name: retrieve_data
arguments: data_label: D266
type_infered: string
name: retrieve_data
arguments: data_label: D1715
type_infered: string
name: retrieve_data
arguments: data_label: D1775
type_infered: string
name: retrieve_data
arguments: data_label: D629
type_infered: string
name: retrieve_data
arguments: data_label: D1540
type_infered: string
name: retrieve_data
arguments: data_label: D1232
type_infered: string
name: retrieve_data
arguments: data_label: D1225
type_infered: string
name: retrieve_data
arguments: data_label: D130
type_infered: string
name: retrieve_data
arguments: data_label: D1903
type_infered: string
name: retrieve_data
arguments: data_label: D2291
type_infered: string
name: retrieve_data
arguments: data_label: D1267
type_infered: string
name: retrieve_data
arguments: data_label: D992
type_infered: string
name: retrieve_data
arguments: data_label: D306
type_infered: string
name: retrieve_data
arguments: data_label: D1931
type_infered: string
name: retrieve_data
arguments: data_label: D1453
type_infered: string
name: retrieve_data
arguments: data_label: D782
type_infered: string
name: retrieve_data
arguments: data_label: D529
type_infered: string
name: retrieve_data
arguments: data_label: D1810
type_infered: string
name: retrieve_data
arguments: data_label: D1029
type_infered: string
name: retrieve_data
arguments: data_label: D1663
type_infered: string
name: retrieve_data
arguments: data_label: D1439
type_infered: string

tool: D370: ld 

tool: D2274: , 

tool: D818: ex af, af

tool: D126: jr 

tool: D1626: 0x%4.4x

tool: D1181: nop

tool: D621: djnz 

tool: D904: add hl,

tool: D1215: ld (bc),a

tool: D1734: ld a, (bc)

tool: D1975: ld (de), a

tool: D1857: ld a, (de)

tool: D2005: ld (

tool: D1375: ), hl

tool: D0: ld hl, (

tool: D233: )

tool: D1063: ), a

tool: D1294: ld a, (

tool: D1770: dec 

tool: D551: inc 

tool: D1548: 0x%2.2x

tool: D1077: halt

tool: D2082: ret 

tool: D1584: exx

tool: D1273: ret

tool: D536: jp (hl)

tool: D1885: ld sp, hl

tool: D503: pop 

tool: D96: af

tool: D272: jp 

tool: D2111: bit 

tool: D1868: set 

tool: D39:  

tool: D95: res 

tool: D1819: out (

tool: D708: in a, (

tool: D1297: ex (sp), hl

tool: D1978: ex de, hl

tool: D1821: di

tool: D2035: ei

tool: D1814: call 

tool: D1808: iy

tool: D1714: ix

tool: D1947: in 

tool: D135: , (c)

tool: D29: out (c),

tool: D1342: adc

tool: D1426:  hl, 

tool: D810: sbc

tool: D1531: , (

tool: D963: LD		(

tool: D1840: ),

tool: D541: im 

tool: D1988: add 

tool: D793: , sp

tool: D1304: , bc

tool: D266: , de

tool: D1715: ), 

tool: D1775: inc (

tool: D629: +

tool: D1540: dec (

tool: D1232: ,(

tool: D1225: add a, (

tool: D130: adc a, (

tool: D1903: sub (

tool: D2291: sbc a, (

tool: D1267: and a, (

tool: D992: xor a, (

tool: D306: or a, (

tool: D1931: cp a, (

tool: D1453: ex (sp), 

tool: D782: push 

tool: D529: jp (

tool: D1810: ld sp, 

tool: D1029: (

tool: D1663: res

tool: D1439: rst 

assistant: ```c
void z80_Disassemble(unsigned char *Opcodes, unsigned short adr, char *s) {
  unsigned char a = Opcodes[adr];
  unsigned char d = (a >> 3) & 7;
  unsigned char e = a & 7;
  static char *reg[8] = {"b", "c", "d", "e", "h", "l", "(hl)", "a"};
  static char *dreg[4] = {"bc", "de", "hl", "sp"};
  static char *cond[8] = {"nz", "z", "nc", "c", "po", "pe", "p", "m"};
  static char *arith[8] = {"add a, ", "adc a, ", "sub ", "sbc a, ", "and ", "xor ", "or ", "cp "};
  char stemp[80];
  char ireg[3];
  switch (a & 0xC0) {
  case 0x00:
    switch (e) {
    case 0x00:
      switch (d) {
      case 0x00:
        strcpy(s, "nop");
        break;
      case 0x01:
        strcpy(s, "ex af, af");
        break;
      case 0x02:
        strcpy(s, "djnz ");
        sprintf(stemp, "0x%4.4x", adr + 2 + (char)Opcodes[adr + 1]);
        strcat(s, stemp);
        break;
      case 0x03:
        strcpy(s, "jr ");
        sprintf(stemp, "0x%4.4x", adr + 2 + (char)Opcodes[adr + 1]);
        strcat(s, stemp);
        break;
      default:
        strcpy(s, "jr ");
        strcat(s, cond[d & 3]);
        strcat(s, ", ");
        sprintf(stemp, "0x%4.4x", adr + 2 + (char)Opcodes[adr + 1]);
        strcat(s, stemp);
        break;
      }
      break;
    case 0x01:
      if (a & 0x08) {
        strcpy(s, "add hl,");
        strcat(s, dreg[d >> 1]);
      } else {
        strcpy(s, "ld ");
        strcat(s, dreg[d >> 1]);
        strcat(s, ", ");
        sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
        strcat(s, stemp);
      }
      break;
    case 0x02:
      switch (d) {
      case 0x00:
        strcpy(s, "ld (bc),a");
        break;
      case 0x01:
        strcpy(s, "ld a, (bc)");
        break;
      case 0x02:
        strcpy(s, "ld (de), a");
        break;
      case 0x03:
        strcpy(s, "ld a, (de)");
        break;
      case 0x04:
        strcpy(s, "ld (");
        sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
        strcat(s, stemp);
        strcat(s, "), hl");
        break;
      case 0x05:
        strcpy(s, "ld hl, (");
        sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
        strcat(s, stemp);
        strcat(s, ")");
        break;
      case 0x06:
        strcpy(s, "ld (");
        sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
        strcat(s, stemp);
        strcat(s, "), a");
        break;
      case 0x07:
        strcpy(s, "ld a, (");
        sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
        strcat(s, stemp);
        strcat(s, ")");
        break;
      }
      break;
    case 0x03:
      if (a & 0x08)
        strcpy(s, "dec ");
      else
        strcpy(s, "inc ");
      strcat(s, dreg[d >> 1]);
      break;
    case 0x04:
      strcpy(s, "inc ");
      strcat(s, reg[d]);
      break;
    case 0x05:
      strcpy(s, "dec ");
      strcat(s, reg[d]);
      break;
    case 0x06:
      strcpy(s, "ld ");
      strcat(s, reg[d]);
      strcat(s, ", ");
      sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
      strcat(s, stemp);
      break;
    case 0x07: {
      static char *str[8] = {"rlca", "rrca", "rla", "rra", "daa", "cpl", "scf", "ccf"};
      strcpy(s, str[d]);
    } break;
    }
    break;
  case 0x40:
    if (d == e) {
      strcpy(s, "halt");
    } else {
      strcpy(s, "ld ");
      strcat(s, reg[d]);
      strcat(s, ", ");
      strcat(s, reg[e]);
    }
    break;
  case 0x80:
    strcpy(s, arith[d]);
    strcat(s, reg[e]);
    break;
  case 0xC0:
    switch (e) {
    case 0x00:
      strcpy(s, "ret ");
      strcat(s, cond[d]);
      break;
    case 0x01:
      if (d & 1) {
        switch (d >> 1) {
        case 0x00:
          strcpy(s, "ret");
          break;
        case 0x01:
          strcpy(s, "exx");
          break;
        case 0x02:
          strcpy(s, "jp (hl)");
          break;
        case 0x03:
          strcpy(s, "ld sp, hl");
          break;
        }
      } else {
        strcpy(s, "pop ");
        if ((d >> 1) == 3)
          strcat(s, "af");
        else
          strcat(s, dreg[d >> 1]);
      }
      break;
    case 0x02:
      strcpy(s, "jp ");
      strcat(s, cond[d]);
      strcat(s, ", ");
      sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
      strcat(s, stemp);
      break;
    case 0x03:
      switch (d) {
      case 0x00:
        strcpy(s, "jp ");
        sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
        strcat(s, stemp);
        break;
      case 0x01:
        a = Opcodes[++adr];
        d = (a >> 3) & 7;
        e = a & 7;
        stemp[1] = 0;
        switch (a & 0xC0) {
        case 0x00: {
          static char *str[8] = {"rlc", "rrc", "rl", "rr", "sla", "sra", "???", "srl"};
          strcpy(s, str[d]);
        }
          strcat(s, " ");
          strcat(s, reg[e]);
          break;
        case 0x40:
          strcpy(s, "bit ");
          stemp[0] = d + '0';
          strcat(s, stemp);
          strcat(s, ", ");
          strcat(s, reg[e]);
          break;
        case 0x80:
          strcpy(s, "res ");
          stemp[0] = d + '0';
          strcat(s, stemp);
          strcat(s, ", ");
          strcat(s, reg[e]);
          break;
        case 0xC0:
          strcpy(s, "set ");
          stemp[0] = d + '0';
          strcat(s, stemp);
          strcat(s, ", ");
          strcat(s, reg[e]);
          break;
        }
        break;
      case 0x02:
        strcpy(s, "out (");
        sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
        strcat(s, stemp);
        strcat(s, "), a");
        break;
      case 0x03:
        strcpy(s, "in a, (");
        sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
        strcat(s, stemp);
        strcat(s, ")");
        break;
      case 0x04:
        strcpy(s, "ex (sp), hl");
        break;
      case 0x05:
        strcpy(s, "ex de, hl");
        break;
      case 0x06:
        strcpy(s, "di");
        break;
      case 0x07:
        strcpy(s, "ei");
        break;
      }
      break;
    case 0x04:
      strcpy(s, "call ");
      strcat(s, cond[d]);
      strcat(s, ", ");
      sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
      strcat(s, stemp);
      break;
    case 0x05:
      if (d & 1) {
        switch (d >> 1) {
        case 0x00:
          strcpy(s, "call ");
          sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
          strcat(s, stemp);
          break;
        case 0x02:
          a = Opcodes[++adr];
          d = (a >> 3) & 7;
          e = a & 7;
          switch (a & 0xC0) {
          case 0x40:
            switch (e) {
            case 0x00:
              strcpy(s, "in ");
              strcat(s, reg[d]);
              strcat(s, ", (c)");
              break;
            case 0x01:
              strcpy(s, "out (c),");
              strcat(s, reg[d]);
              break;
            case 0x02:
              if (d & 1)
                strcpy(s, "adc");
              else
                strcpy(s, "sbc");
              strcat(s, " hl, ");
              strcat(s, dreg[d >> 1]);
              break;
            case 0x03:
              if (d & 1) {
                strcpy(s, "ld ");
                strcat(s, dreg[d >> 1]);
                strcat(s, ", (");
                sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
                strcat(s, stemp);
                strcat(s, ")");
              } else {
                strcpy(s, "LD\t\t(");
                sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
                strcat(s, stemp);
                strcat(s, "),");
                strcat(s, dreg[d >> 1]);
              }
              break;
            case 0x04: {
              static char *str[8] = {"neg", "???", "???", "???", "???", "???", "???", "???"};
              strcpy(s, str[d]);
            } break;
            case 0x05: {
              static char *str[8] = {"retn", "reti", "???", "???", "???", "???", "???", "???"};
              strcpy(s, str[d]);
            } break;
            case 0x06:
              strcpy(s, "im ");
              stemp[0] = d + '0' - 1;
              stemp[1] = 0;
              strcat(s, stemp);
              break;
            case 0x07: {
              static char *str[8] = {"ld i, a", "???", "ld a,i", "???", "rrd", "rld", "???", "???"};
              strcpy(s, str[d]);
            } break;
            }
            break;
          case 0x80: {
            static char *str[32] = {"ldi", "cpi", "ini", "outi", "???", "???", "???", "???", "ldd", "cpd", "ind", "outd", "???", "???", "???", "???", "ldir", "cpir", "inir", "otir", "???", "???", "???", "???", "lddr", "cpdr", "indr", "otdr", "???", "???", "???", "???"};
            strcpy(s, str[a & 0x1F]);
          } break;
          }
          break;
        default:
          strcpy(ireg, (a & 0x20) ? "iy" : "ix");
          a = Opcodes[++adr];
          switch (a) {
          case 0x09:
            strcpy(s, "add ");
            strcat(s, ireg);
            strcat(s, ", bc");
            break;
          case 0x19:
            strcpy(s, "add ");
            strcat(s, ireg);
            strcat(s, ", de");
            break;
          case 0x21:
            strcpy(s, "ld ");
            strcat(s, ireg);
            strcat(s, ", ");
            sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
            strcat(s, stemp);
            break;
          case 0x22:
            strcpy(s, "ld (");
            sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
            strcat(s, stemp);
            strcat(s, "), ");
            strcat(s, ireg);
            break;
          case 0x23:
            strcpy(s, "inc ");
            strcat(s, ireg);
            break;
          case 0x29:
            strcpy(s, "add ");
            strcat(s, ireg);
            strcat(s, ", ");
            strcat(s, ireg);
            break;
          case 0x2A:
            strcpy(s, "ld ");
            strcat(s, ireg);
            strcat(s, ", (");
            sprintf(stemp, "0x%4.4x", Opcodes[adr + 1] + (Opcodes[adr + 2] << 8));
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0x2B:
            strcpy(s, "dec ");
            strcat(s, ireg);
            break;
          case 0x34:
            strcpy(s, "inc (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0x35:
            strcpy(s, "dec (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0x36:
            strcpy(s, "ld (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, "),");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 2]);
            strcat(s, stemp);
            break;
          case 0x39:
            strcpy(s, "add ");
            strcat(s, ireg);
            strcat(s, ", sp");
            break;
          case 0x46:
          case 0x4E:
          case 0x56:
          case 0x5E:
          case 0x66:
          case 0x6E:
            strcpy(s, "ld ");
            strcat(s, reg[(a >> 3) & 7]);
            strcat(s, ",(");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0x70:
          case 0x71:
          case 0x72:
          case 0x73:
          case 0x74:
          case 0x75:
          case 0x77:
            strcpy(s, "ld (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, "),");
            strcat(s, reg[a & 7]);
            break;
          case 0x7E:
            strcpy(s, "ld a, (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0x86:
            strcpy(s, "add a, (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0x8E:
            strcpy(s, "adc a, (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0x96:
            strcpy(s, "sub (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0x9E:
            strcpy(s, "sbc a, (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0xA6:
            strcpy(s, "and a, (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0xAE:
            strcpy(s, "xor a, (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0xB6:
            strcpy(s, "or a, (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0xBE:
            strcpy(s, "cp a, (");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          case 0xE1:
            strcpy(s, "pop ");
            strcat(s, ireg);
            break;
          case 0xE3:
            strcpy(s, "ex (sp), ");
            strcat(s, ireg);
            break;
          case 0xE5:
            strcpy(s, "push ");
            strcat(s, ireg);
            break;
          case 0xE9:
            strcpy(s, "jp (");
            strcat(s, ireg);
            strcat(s, ")");
            break;
          case 0xF9:
            strcpy(s, "ld sp, ");
            strcat(s, ireg);
            break;
          case 0xCB:
            a = Opcodes[adr + 2];
            d = (a >> 3) & 7;
            stemp[1] = 0;
            switch (a & 0xC0) {
            case 0x00: {
              static char *str[8] = {"RLC", "RRC", "RL", "RR", "SLA", "SRA", "???", "SRL"};
              strcpy(s, str[d]);
            }
              strcat(s, " ");
              break;
            case 0x40:
              strcpy(s, "bit ");
              stemp[0] = d + '0';
              strcat(s, stemp);
              strcat(s, ", ");
              break;
            case 0x80:
              strcpy(s, "res");
              stemp[0] = d + '0';
              strcat(s, stemp);
              strcat(s, ", ");
              break;
            case 0xC0:
              strcpy(s, "set ");
              stemp[0] = d + '0';
              strcat(s, stemp);
              strcat(s, ", ");
              break;
            }
            strcat(s, "(");
            strcat(s, ireg);
            strcat(s, "+");
            sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
            strcat(s, stemp);
            strcat(s, ")");
            break;
          }
          break;
        }
      } else {
        strcpy(s, "push ");
        if ((d >> 1) == 3)
          strcat(s, "af");
        else
          strcat(s, dreg[d >> 1]);
      }
      break;
    case 0x06:
      strcpy(s, arith[d]);
      sprintf(stemp, "0x%2.2x", Opcodes[adr + 1]);
      strcat(s, stemp);
      break;
    case 0x07:
      strcpy(s, "rst ");
      sprintf(stemp, "0x%2.2x", a & 0x38);
      strcat(s, stemp);
      break;
    }
    break;
  }
}
```