user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<mnemonic>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    %r8d,%edx
  mov    %r9d,%ecx
  mov    0x10(%rbp),%eax
  mov    %dl,-0x34(%rbp)
  mov    %ecx,%edx
  mov    %dl,-0x38(%rbp)
  mov    %al,-0x3c(%rbp)
  movsbl -0x34(%rbp),%eax
  sub    $0x30,%eax
  cmp    $0x16,%eax
  ja     L63
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D89(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D89(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x18(%rbp),%rax
  lea    D341(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D480(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D464(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D488(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D7(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D246(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D212(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D77(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D234(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D278(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D25(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D217(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  movsbl -0x38(%rbp),%eax
  mov    %eax,%edi
  call   <hex2ui@plt>
  shl    $0x4,%eax
  mov    %eax,%ebx
  movsbl -0x3c(%rbp),%eax
  mov    %eax,%edi
  call   <hex2ui@plt>
  lea    (%rbx,%rax,1),%edx
  mov    -0x30(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D469(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  movsbl -0x38(%rbp),%eax
  mov    %eax,%edi
  call   <hex2ui@plt>
  shl    $0x4,%eax
  mov    %eax,%ebx
  movsbl -0x3c(%rbp),%eax
  mov    %eax,%edi
  call   <hex2ui@plt>
  lea    (%rbx,%rax,1),%edx
  mov    -0x30(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D292(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  movsbl -0x38(%rbp),%eax
  mov    %eax,%edi
  call   <hex2ui@plt>
  shl    $0x4,%eax
  mov    %eax,%ebx
  movsbl -0x3c(%rbp),%eax
  mov    %eax,%edi
  call   <hex2ui@plt>
  lea    (%rbx,%rax,1),%edx
  mov    -0x30(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L287
  mov    -0x18(%rbp),%rax
  lea    D238(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  movsbl -0x38(%rbp),%eax
  mov    %eax,%edi
  call   <hex2ui@plt>
  shl    $0x4,%eax
  mov    %eax,%ebx
  movsbl -0x3c(%rbp),%eax
  mov    %eax,%edi
  call   <hex2ui@plt>
  lea    (%rbx,%rax,1),%edx
  mov    -0x30(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L287
  movsbl -0x38(%rbp),%eax
  sub    $0x30,%eax
  cmp    $0x16,%eax
  ja     L172
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D37(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D37(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  movsbl -0x3c(%rbp),%eax
  sub    $0x30,%eax
  cmp    $0x16,%eax
  ja     L364
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D208(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D208(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x18(%rbp),%rax
  lea    D440(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D164(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D442(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D231(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D171(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D150(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D359(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D487(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D382(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D130(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D148(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D59(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D113(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D342(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D384(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
  mov    -0x18(%rbp),%rax
  lea    D444(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L432
L364:
  mov    -0x18(%rbp),%rax
  lea    D116(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L461
L432:
  jmp    L461
  mov    -0x18(%rbp),%rax
  lea    D51(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L461
  mov    -0x18(%rbp),%rax
  lea    D35(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L461
  mov    -0x18(%rbp),%rax
  lea    D241(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L461
  mov    -0x18(%rbp),%rax
  lea    D160(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L461
  mov    -0x18(%rbp),%rax
  lea    D31(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L461
  mov    -0x18(%rbp),%rax
  lea    D492(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L461
  mov    -0x18(%rbp),%rax
  lea    D38(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L461
  mov    -0x18(%rbp),%rax
  lea    D260(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L461
  mov    -0x18(%rbp),%rax
  lea    D296(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L461
  mov    -0x18(%rbp),%rax
  lea    D496(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  mov    -0x20(%rbp),%rax
  movzbl -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movb   $0x20,(%rax)
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L461
L172:
  mov    -0x18(%rbp),%rax
  lea    D116(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L287
L461:
  jmp    L287
L63:
  mov    -0x18(%rbp),%rax
  lea    D116(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  nop
L287:
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D341
data_type: string
name: disassemble_data
arguments: data_tag: D480
data_type: string
name: disassemble_data
arguments: data_tag: D464
data_type: string
name: disassemble_data
arguments: data_tag: D488
data_type: string
name: disassemble_data
arguments: data_tag: D7
data_type: string
name: disassemble_data
arguments: data_tag: D246
data_type: string
name: disassemble_data
arguments: data_tag: D212
data_type: string
name: disassemble_data
arguments: data_tag: D77
data_type: string
name: disassemble_data
arguments: data_tag: D234
data_type: string
name: disassemble_data
arguments: data_tag: D278
data_type: string
name: disassemble_data
arguments: data_tag: D25
data_type: string
name: disassemble_data
arguments: data_tag: D217
data_type: string
name: disassemble_data
arguments: data_tag: D469
data_type: string
name: disassemble_data
arguments: data_tag: D292
data_type: string
name: disassemble_data
arguments: data_tag: D238
data_type: string
name: disassemble_data
arguments: data_tag: D440
data_type: string
name: disassemble_data
arguments: data_tag: D164
data_type: string
name: disassemble_data
arguments: data_tag: D442
data_type: string
name: disassemble_data
arguments: data_tag: D231
data_type: string
name: disassemble_data
arguments: data_tag: D171
data_type: string
name: disassemble_data
arguments: data_tag: D150
data_type: string
name: disassemble_data
arguments: data_tag: D359
data_type: string
name: disassemble_data
arguments: data_tag: D487
data_type: string
name: disassemble_data
arguments: data_tag: D382
data_type: string
name: disassemble_data
arguments: data_tag: D130
data_type: string
name: disassemble_data
arguments: data_tag: D148
data_type: string
name: disassemble_data
arguments: data_tag: D59
data_type: string
name: disassemble_data
arguments: data_tag: D113
data_type: string
name: disassemble_data
arguments: data_tag: D342
data_type: string
name: disassemble_data
arguments: data_tag: D384
data_type: string
name: disassemble_data
arguments: data_tag: D444
data_type: string
name: disassemble_data
arguments: data_tag: D116
data_type: string
name: disassemble_data
arguments: data_tag: D51
data_type: string
name: disassemble_data
arguments: data_tag: D35
data_type: string
name: disassemble_data
arguments: data_tag: D241
data_type: string
name: disassemble_data
arguments: data_tag: D160
data_type: string
name: disassemble_data
arguments: data_tag: D31
data_type: string
name: disassemble_data
arguments: data_tag: D492
data_type: string
name: disassemble_data
arguments: data_tag: D38
data_type: string
name: disassemble_data
arguments: data_tag: D260
data_type: string
name: disassemble_data
arguments: data_tag: D296
data_type: string
name: disassemble_data
arguments: data_tag: D496
data_type: string

tool: D341: MOV  

tool: D480: MOVI 

tool: D464: AND  

tool: D488: ANDI 

tool: D7: ADD  

tool: D246: ADDI 

tool: D212: SUB  

tool: D77: SUBI 

tool: D234: CMP  

tool: D278: CMPI 

tool: D25: OR   

tool: D217: CALL 

tool: D469: GOTO 

tool: D292: BRC  

tool: D238: BRZ  

tool: D440: HALT

tool: D164: NOP

tool: D442: DISOUT

tool: D231: HXDZ

tool: D171: DZHX

tool: D150: RND

tool: D359: TIME

tool: D487: RET

tool: D382: CLEAR

tool: D130: STC

tool: D148: RSC

tool: D59: MULT

tool: D113: DIV

tool: D342: EXRL

tool: D384: EXRM

tool: D444: EXRA

tool: D116: !!! ERROR !!!

tool: D51: DISP 

tool: D35: MAS  

tool: D241: INV  

tool: D160: SHR  

tool: D31: SHL  

tool: D492: ADC  

tool: D38: SUBC 

tool: D260: DIN  

tool: D296: DOT  

tool: D496: KIN  

assistant: ```c
void mnemonic(char *M, char *op1, char *op2, int *addr, char c1, char c2, char c3) {
  switch (c1) {
  case '0': {
    sprintf(M, "MOV  ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case '1': {
    sprintf(M, "MOVI ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case '2': {
    sprintf(M, "AND  ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case '3': {
    sprintf(M, "ANDI ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case '4': {
    sprintf(M, "ADD  ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case '5': {
    sprintf(M, "ADDI ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case '6': {
    sprintf(M, "SUB  ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case '7': {
    sprintf(M, "SUBI ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case '8': {
    sprintf(M, "CMP  ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case '9': {
    sprintf(M, "CMPI ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case 'A': {
    sprintf(M, "OR   ");
    *op1 = c2;
    *op2 = c3;
    *addr = -1;
    break;
  }
  case 'B': {
    sprintf(M, "CALL ");
    *op1 = ' ';
    *op2 = ' ';
    *addr = hex2ui(c2) * 16 + hex2ui(c3);
    break;
  }
  case 'C': {
    sprintf(M, "GOTO ");
    *op1 = ' ';
    *op2 = ' ';
    *addr = hex2ui(c2) * 16 + hex2ui(c3);
    break;
  }
  case 'D': {
    sprintf(M, "BRC  ");
    *op1 = ' ';
    *op2 = ' ';
    *addr = hex2ui(c2) * 16 + hex2ui(c3);
    break;
  }
  case 'E': {
    sprintf(M, "BRZ  ");
    *op1 = ' ';
    *op2 = ' ';
    *addr = hex2ui(c2) * 16 + hex2ui(c3);
    break;
  }
  case 'F': {
    switch (c2) {
    case '0': {
      switch (c3) {
      case '0': {
        sprintf(M, "HALT");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case '1': {
        sprintf(M, "NOP");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case '2': {
        sprintf(M, "DISOUT");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case '3': {
        sprintf(M, "HXDZ");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case '4': {
        sprintf(M, "DZHX");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case '5': {
        sprintf(M, "RND");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case '6': {
        sprintf(M, "TIME");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case '7': {
        sprintf(M, "RET");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case '8': {
        sprintf(M, "CLEAR");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case '9': {
        sprintf(M, "STC");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case 'A': {
        sprintf(M, "RSC");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case 'B': {
        sprintf(M, "MULT");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case 'C': {
        sprintf(M, "DIV");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case 'D': {
        sprintf(M, "EXRL");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case 'E': {
        sprintf(M, "EXRM");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      case 'F': {
        sprintf(M, "EXRA");
        *op1 = ' ';
        *op2 = ' ';
        *addr = -1;
        break;
      }
      default: {
        sprintf(M, "!!! ERROR !!!");
      }
      }
      break;
    }
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6': {
      sprintf(M, "DISP ");
      *op1 = c2;
      *op2 = c3;
      *addr = -1;
      break;
    }
    case '7': {
      sprintf(M, "MAS  ");
      *op1 = c3;
      *op2 = ' ';
      *addr = -1;
      break;
    }
    case '8': {
      sprintf(M, "INV  ");
      *op1 = c3;
      *op2 = ' ';
      *addr = -1;
      break;
    }
    case '9': {
      sprintf(M, "SHR  ");
      *op1 = c3;
      *op2 = ' ';
      *addr = -1;
      break;
    }
    case 'A': {
      sprintf(M, "SHL  ");
      *op1 = c3;
      *op2 = ' ';
      *addr = -1;
      break;
    }
    case 'B': {
      sprintf(M, "ADC  ");
      *op1 = c3;
      *op2 = ' ';
      *addr = -1;
      break;
    }
    case 'C': {
      sprintf(M, "SUBC ");
      *op1 = c3;
      *op2 = ' ';
      *addr = -1;
      break;
    }
    case 'D': {
      sprintf(M, "DIN  ");
      *op1 = c3;
      *op2 = ' ';
      *addr = -1;
      break;
    }
    case 'E': {
      sprintf(M, "DOT  ");
      *op1 = c3;
      *op2 = ' ';
      *addr = -1;
      break;
    }
    case 'F': {
      sprintf(M, "KIN  ");
      *op1 = c3;
      *op2 = ' ';
      *addr = -1;
      break;
    }
    default: {
      sprintf(M, "!!! ERROR !!!");
    }
    }
    break;
  }
  default: {
    sprintf(M, "!!! ERROR !!!");
  }
  }
}
```