user: 提供的汇编代码用C语言表示会是什么样子:

```asm
<print_command>:
  endbr64
  push   %r12
  mov    %edx,%r12d
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %ecx,%ebx
  test   %esi,%esi
  jle    L566
  mov    %esi,%edx
  xor    %eax,%eax
  lea    D400(%rip),%rsi
  call   <fprintf@plt>
L560:
  xor    %eax,%eax
  mov    %ebx,%ecx
  mov    %r12d,%edx
  mov    %rbp,%rdi
  lea    D691(%rip),%rsi
  call   <fprintf@plt>
  cmp    $0xf,%ebx
  jg     L611
  test   %ebx,%ebx
  js     L903
  cmp    $0xf,%ebx
  ja     L903
  lea    D454(%rip),%rdx
  mov    %ebx,%eax
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
L611:
  cmp    $0x1c1,%ebx
  je     L514
  jle    L862
  cmp    $0x1c4,%ebx
  je     L284
  cmp    $0x1c8,%ebx
  jne    L485
  mov    %rbp,%rcx
  mov    $0x4,%edx
  mov    $0x1,%esi
  lea    D672(%rip),%rdi
  call   <fwrite@plt>
L43:
  pop    %rbx
  mov    %rbp,%rsi
  mov    $0xa,%edi
  pop    %rbp
  pop    %r12
  jmp    10b0 <fputc@plt>
  nopl   0x0(%rax)
L862:
  cmp    $0x184,%ebx
  je     L325
  jle    L158
  cmp    $0x188,%ebx
  jne    L799
  mov    %rbp,%rcx
  mov    $0x4,%edx
  mov    $0x1,%esi
  lea    D353(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  nopl   (%rax)
L485:
  cmp    $0x1c2,%ebx
  jne    L240
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D246(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  nopl   0x0(%rax,%rax,1)
L158:
  cmp    $0x181,%ebx
  je     L590
  cmp    $0x182,%ebx
  jne    L799
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D806(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  cs nopw 0x0(%rax,%rax,1)
L566:
  mov    %rdi,%rcx
  mov    $0x5,%edx
  mov    $0x1,%esi
  lea    D442(%rip),%rdi
  call   <fwrite@plt>
  jmp    L560
L240:
  mov    %ebx,%eax
  sar    $0x4,%eax
  cmp    $0x1c,%eax
  je     L900
  cmp    $0x303,%eax
  jg     L687
  cmp    $0x301,%eax
  jg     L49
  sub    $0x2c2,%eax
  lea    D427(%rip),%rdx
  cmp    $0x1,%eax
  jbe    L879
L903:
  mov    %ebx,%eax
  sar    $0x8,%eax
  sub    $0x2,%eax
  cmp    $0x3d,%eax
  ja     L147
  lea    D221(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
  mov    %rbp,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D456(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D419(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D778(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D756(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D95(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x4,%edx
  mov    $0x1,%esi
  lea    D762(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x4,%edx
  mov    $0x1,%esi
  lea    D904(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D686(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D406(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x4,%edx
  mov    $0x1,%esi
  lea    D115(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D531(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x4,%edx
  mov    $0x1,%esi
  lea    D64(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D685(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
L284:
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D859(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
L514:
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D603(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
L325:
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D651(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
L590:
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D649(%rip),%rdi
  call   <fwrite@plt>
  jmp    L43
  xchg   %ax,%ax
L799:
  mov    %ebx,%eax
  sar    $0x4,%eax
  cmp    $0x1cf,%ebx
  ja     L838
  lea    D494(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  xchg   %ax,%ax
L687:
  sub    $0x400,%eax
  lea    D297(%rip),%rdx
  cmp    $0x1,%eax
  jbe    L879
L838:
  mov    %ebx,%eax
  sar    $0xc,%eax
  sub    $0x4,%eax
  cmp    $0xb,%eax
  ja     L903
  lea    D304(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D381(%rip),%rdx
  nopw   0x0(%rax,%rax,1)
L879:
  mov    %rbp,%rdi
  lea    D563(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %ebx,%esi
  mov    %rbp,%rdi
  and    $0x1f,%esi
  call   <print_reg@plt>
  jmp    L43
  lea    D816(%rip),%rdx
  jmp    L879
  lea    D267(%rip),%rdx
  jmp    L879
  lea    D662(%rip),%rdx
  jmp    L879
  lea    D235(%rip),%rdx
  jmp    L879
  lea    D634(%rip),%rdx
  jmp    L879
  lea    D256(%rip),%rdx
  jmp    L879
  lea    D658(%rip),%rdx
  jmp    L879
  lea    D108(%rip),%rdx
  jmp    L879
  lea    D288(%rip),%rdx
  jmp    L879
  mov    %ebx,%ecx
  lea    D900(%rip),%rax
  mov    %rbp,%rdi
  and    $0x7,%ecx
  lea    D385(%rip),%rdx
  lea    D54(%rip),%rsi
  add    $0x61,%ecx
  and    $0x8,%ebx
  cmove  %rax,%rdx
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L43
  lea    D866(%rip),%rdx
L909:
  mov    %ebx,%ecx
  lea    D909(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  and    $0xf,%ecx
  call   <fprintf@plt>
  jmp    L43
L900:
  lea    D61(%rip),%rdx
  jmp    L909
  lea    D787(%rip),%rdx
L6:
  lea    D563(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %ebx,%esi
  mov    %rbp,%rdi
  and    $0x1f,%esi
  call   <print_reg@plt>
  mov    %ebx,%edx
  sar    $0x5,%edx
  movzbl %dl,%edx
  cmp    $0x9,%edx
  jg     L786
  lea    D566(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L43
  lea    D414(%rip),%rdx
  jmp    L6
  lea    D542(%rip),%rdi
L811:
  mov    %rbp,%rsi
  call   <fputs@plt>
  mov    %ebx,%edx
  and    $0xfff,%edx
  cmp    $0x9,%edx
  jg     L923
  test   %edx,%edx
  je     L43
  lea    D120(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L43
  lea    D198(%rip),%rdi
  jmp    L811
  lea    D206(%rip),%rdi
  jmp    L811
  lea    D133(%rip),%rdi
  jmp    L811
  lea    D518(%rip),%rdi
  jmp    L811
  lea    D625(%rip),%rdi
  jmp    L811
  lea    D307(%rip),%rdi
  jmp    L811
  lea    D199(%rip),%rdi
  jmp    L811
L923:
  lea    D489(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L43
  lea    D273(%rip),%rdx
L166:
  lea    D563(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %ebx,%esi
  mov    %rbp,%rdi
  and    $0x1f,%esi
  call   <print_reg@plt>
  mov    %ebx,%edx
  sar    $0x5,%edx
  and    $0xf,%edx
L786:
  lea    D881(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L43
  nopl   0x0(%rax)
L49:
  lea    D526(%rip),%rdx
  jmp    L879
  lea    D772(%rip),%rdx
  jmp    L166
  lea    D281(%rip),%rdx
  jmp    L166
  lea    D802(%rip),%rdx
  jmp    L166
  lea    D356(%rip),%rdx
  jmp    L166
  lea    D347(%rip),%rdx
L813:
  mov    %rbp,%rdi
  lea    D563(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %ebx,%esi
  mov    %rbp,%rdi
  and    $0x1f,%esi
  call   <print_reg@plt>
  mov    %ebx,%edx
  lea    D881(%rip),%rsi
  xor    %eax,%eax
  sar    $0x5,%edx
  mov    %rbp,%rdi
  and    $0x1f,%edx
  call   <fprintf@plt>
  jmp    L43
  lea    D727(%rip),%rdx
  jmp    L813
  lea    D836(%rip),%rdx
  jmp    L166
  lea    D884(%rip),%rdx
  jmp    L166
  mov    %ebx,%edx
  lea    D306(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  and    $0x7,%edx
  add    $0x61,%edx
  call   <fprintf@plt>
  mov    %ebx,%edx
  sar    $0x3,%edx
  movzbl %dl,%edx
  cmp    $0x9,%edx
  jle    L200
  lea    D820(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L43
  lea    D708(%rip),%rdx
L204:
  mov    %rbp,%rdi
  lea    D563(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %ebx,%esi
  mov    %rbp,%rdi
  and    $0x1f,%esi
  call   <print_reg@plt>
  mov    %rbp,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  lea    D767(%rip),%rdi
  call   <fwrite@plt>
  mov    %ebx,%esi
  mov    %rbp,%rdi
  sar    $0x5,%esi
  and    $0x1f,%esi
  call   <print_reg@plt>
  jmp    L43
L200:
  lea    D80(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L43
  lea    D668(%rip),%rdx
  jmp    L204
  lea    D878(%rip),%rdx
  jmp    L204
  lea    D13(%rip),%rdx
  jmp    L204
  lea    D87(%rip),%rdx
  jmp    L204
  lea    D589(%rip),%rdx
  jmp    L204
  lea    D382(%rip),%rdx
  jmp    L204
  mov    %rbp,%rcx
  mov    $0x5,%edx
  mov    $0x1,%esi
  lea    D817(%rip),%rdi
  call   <fwrite@plt>
  mov    %ebx,%esi
  mov    %rbp,%rdi
  and    $0x1f,%esi
  call   <print_reg@plt>
  mov    %ebx,%edx
  lea    D896(%rip),%rsi
  xor    %eax,%eax
  sar    $0x5,%edx
  mov    %rbp,%rdi
  and    $0x7,%edx
  add    $0x61,%edx
  call   <fprintf@plt>
  jmp    L43
  mov    %ebx,%edx
  mov    %rbp,%rdi
  lea    D276(%rip),%rsi
  xor    %eax,%eax
  sar    $0x5,%edx
  and    $0x7,%edx
  add    $0x61,%edx
  call   <fprintf@plt>
  mov    %ebx,%esi
  mov    %rbp,%rdi
  and    $0x1f,%esi
  call   <print_reg@plt>
  jmp    L43
  lea    D208(%rip),%rdx
  jmp    L166
L147:
  mov    %rbp,%rsi
  mov    $0x3f,%edi
  call   <fputc@plt>
  jmp    L43
```

tool_calls: name: read_data
arguments: data_tag: D400
type_guessed: string
name: read_data
arguments: data_tag: D691
type_guessed: string
name: read_data
arguments: data_tag: D672
type_guessed: string
name: read_data
arguments: data_tag: D353
type_guessed: string
name: read_data
arguments: data_tag: D246
type_guessed: string
name: read_data
arguments: data_tag: D806
type_guessed: string
name: read_data
arguments: data_tag: D442
type_guessed: string
name: read_data
arguments: data_tag: D427
type_guessed: string
name: read_data
arguments: data_tag: D456
type_guessed: string
name: read_data
arguments: data_tag: D419
type_guessed: string
name: read_data
arguments: data_tag: D778
type_guessed: string
name: read_data
arguments: data_tag: D756
type_guessed: string
name: read_data
arguments: data_tag: D95
type_guessed: string
name: read_data
arguments: data_tag: D762
type_guessed: string
name: read_data
arguments: data_tag: D904
type_guessed: string
name: read_data
arguments: data_tag: D686
type_guessed: string
name: read_data
arguments: data_tag: D406
type_guessed: string
name: read_data
arguments: data_tag: D115
type_guessed: string
name: read_data
arguments: data_tag: D531
type_guessed: string
name: read_data
arguments: data_tag: D64
type_guessed: string
name: read_data
arguments: data_tag: D685
type_guessed: string
name: read_data
arguments: data_tag: D859
type_guessed: string
name: read_data
arguments: data_tag: D603
type_guessed: string
name: read_data
arguments: data_tag: D651
type_guessed: string
name: read_data
arguments: data_tag: D649
type_guessed: string
name: read_data
arguments: data_tag: D297
type_guessed: string
name: read_data
arguments: data_tag: D381
type_guessed: string
name: read_data
arguments: data_tag: D563
type_guessed: string
name: read_data
arguments: data_tag: D816
type_guessed: string
name: read_data
arguments: data_tag: D267
type_guessed: string
name: read_data
arguments: data_tag: D662
type_guessed: string
name: read_data
arguments: data_tag: D235
type_guessed: string
name: read_data
arguments: data_tag: D634
type_guessed: string
name: read_data
arguments: data_tag: D256
type_guessed: string
name: read_data
arguments: data_tag: D658
type_guessed: string
name: read_data
arguments: data_tag: D108
type_guessed: string
name: read_data
arguments: data_tag: D288
type_guessed: string
name: read_data
arguments: data_tag: D900
type_guessed: string
name: read_data
arguments: data_tag: D385
type_guessed: string
name: read_data
arguments: data_tag: D54
type_guessed: string
name: read_data
arguments: data_tag: D866
type_guessed: string
name: read_data
arguments: data_tag: D909
type_guessed: string
name: read_data
arguments: data_tag: D61
type_guessed: string
name: read_data
arguments: data_tag: D787
type_guessed: string
name: read_data
arguments: data_tag: D566
type_guessed: string
name: read_data
arguments: data_tag: D414
type_guessed: string
name: read_data
arguments: data_tag: D542
type_guessed: string
name: read_data
arguments: data_tag: D120
type_guessed: string
name: read_data
arguments: data_tag: D198
type_guessed: string
name: read_data
arguments: data_tag: D206
type_guessed: string
name: read_data
arguments: data_tag: D133
type_guessed: string
name: read_data
arguments: data_tag: D518
type_guessed: string
name: read_data
arguments: data_tag: D625
type_guessed: string
name: read_data
arguments: data_tag: D307
type_guessed: string
name: read_data
arguments: data_tag: D199
type_guessed: string
name: read_data
arguments: data_tag: D489
type_guessed: string
name: read_data
arguments: data_tag: D273
type_guessed: string
name: read_data
arguments: data_tag: D881
type_guessed: string
name: read_data
arguments: data_tag: D526
type_guessed: string
name: read_data
arguments: data_tag: D772
type_guessed: string
name: read_data
arguments: data_tag: D281
type_guessed: string
name: read_data
arguments: data_tag: D802
type_guessed: string
name: read_data
arguments: data_tag: D356
type_guessed: string
name: read_data
arguments: data_tag: D347
type_guessed: string
name: read_data
arguments: data_tag: D727
type_guessed: string
name: read_data
arguments: data_tag: D836
type_guessed: string
name: read_data
arguments: data_tag: D884
type_guessed: string
name: read_data
arguments: data_tag: D306
type_guessed: string
name: read_data
arguments: data_tag: D820
type_guessed: string
name: read_data
arguments: data_tag: D708
type_guessed: string
name: read_data
arguments: data_tag: D767
type_guessed: string
name: read_data
arguments: data_tag: D80
type_guessed: string
name: read_data
arguments: data_tag: D668
type_guessed: string
name: read_data
arguments: data_tag: D878
type_guessed: string
name: read_data
arguments: data_tag: D13
type_guessed: string
name: read_data
arguments: data_tag: D87
type_guessed: string
name: read_data
arguments: data_tag: D589
type_guessed: string
name: read_data
arguments: data_tag: D382
type_guessed: string
name: read_data
arguments: data_tag: D817
type_guessed: string
name: read_data
arguments: data_tag: D896
type_guessed: string
name: read_data
arguments: data_tag: D276
type_guessed: string
name: read_data
arguments: data_tag: D208
type_guessed: string

tool: D400:  %4d

tool: D691:  %04x %04x			

tool: D672: clie

tool: D353: stie

tool: D246: clz

tool: D806: stz

tool: D442:      

tool: D427: dec

tool: D456: rtsc	1

tool: D419: rtsc	0

tool: D778: rti

tool: D756: rts

tool: D95: slp

tool: D762: ijsr

tool: D904: sksp

tool: D686: tdc

tool: D406: tof

tool: D115: ijmp

tool: D531: rst

tool: D64: wait

tool: D685: nop

tool: D859: cln

tool: D603: clc

tool: D651: stn

tool: D649: stc

tool: D297: clr

tool: D381: neg

tool: D563: %s	

tool: D816: swap

tool: D267: sbc

tool: D662: adc

tool: D235: rrc

tool: D634: not

tool: D256: rlc

tool: D658: shra

tool: D108: shr

tool: D288: shl

tool: D900: push

tool: D385: pop

tool: D54: %s	#%c

tool: D866: sst

tool: D909: %s	0%xh

tool: D61: cst

tool: D787: cmpl

tool: D566: , %d

tool: D414: movl

tool: D542: jmp

tool: D120: 	%d

tool: D198: jc

tool: D206: jns

tool: D133: jnz

tool: D518: jz

tool: D625: jsr

tool: D307: jnc

tool: D199: js

tool: D489: 	0%xh

tool: D273: btgl

tool: D881: , 0%xh

tool: D526: inc

tool: D772: bish

tool: D281: bisl

tool: D802: btth

tool: D356: bttl

tool: D347: addl

tool: D727: subl

tool: D836: bich

tool: D884: bicl

tool: D306: ldr	#%c, 

tool: D820: 0%xh

tool: D708: xor

tool: D767: , 

tool: D80: %d

tool: D668: or

tool: D878: and

tool: D13: add

tool: D87: sub

tool: D589: cmp

tool: D382: mov

tool: D817: mfpr	

tool: D896: , #%c

tool: D276: mtpr	#%c, 

tool: D208: btgh

assistant: ```c
void print_command(FILE *out, int line, int addr, int cmd) {
  char *m;
  int arg;
  if (line > 0)
    fprintf(out, " %4d", line);
  else
    fprintf(out, "     ");
  fprintf(out, " %04x %04x\t\t\t", addr, cmd);
  switch (cmd) {
  case 0x0000:
    fprintf(out, "nop");
    goto done;
  case 0x0001:
    fprintf(out, "wait");
    goto done;
  case 0x0002:
    fprintf(out, "rst");
    goto done;
  case 0x0003:
    fprintf(out, "ijmp");
    goto done;
  case 0x0004:
    fprintf(out, "tof");
    goto done;
  case 0x0005:
    fprintf(out, "tdc");
    goto done;
  case 0x0006:
    fprintf(out, "sksp");
    goto done;
  case 0x0007:
    fprintf(out, "ijsr");
    goto done;
  case 0x0008:
    fprintf(out, "slp");
    goto done;
  case 0x000c:
    fprintf(out, "rts");
    goto done;
  case 0x000d:
    fprintf(out, "rti");
    goto done;
  case 0x000e:
    fprintf(out, "rtsc\t0");
    goto done;
  case 0x000f:
    fprintf(out, "rtsc\t1");
    goto done;
  case 0x0181:
    fprintf(out, "stc");
    goto done;
  case 0x0182:
    fprintf(out, "stz");
    goto done;
  case 0x0184:
    fprintf(out, "stn");
    goto done;
  case 0x0188:
    fprintf(out, "stie");
    goto done;
  case 0x01c1:
    fprintf(out, "clc");
    goto done;
  case 0x01c2:
    fprintf(out, "clz");
    goto done;
  case 0x01c4:
    fprintf(out, "cln");
    goto done;
  case 0x01c8:
    fprintf(out, "clie");
    goto done;
  }
  switch (cmd >> 4) {
  case 0x001:
    fprintf(out, "%s\t#%c", (cmd & 8) ? "pop" : "push", (cmd & 7) + 'a');
    goto done;
  case 0x002:
  case 0x003:
    m = "swap";
    goto arg1op;
  case 0x004:
  case 0x005:
    m = "neg";
    goto arg1op;
  case 0x006:
  case 0x007:
    m = "not";
    goto arg1op;
  case 0x008:
  case 0x009:
    m = "shl";
    goto arg1op;
  case 0x00a:
  case 0x00b:
    m = "shr";
    goto arg1op;
  case 0x00c:
  case 0x00d:
    m = "shra";
    goto arg1op;
  case 0x00e:
  case 0x00f:
    m = "rlc";
    goto arg1op;
  case 0x010:
  case 0x011:
    m = "rrc";
    goto arg1op;
  case 0x012:
  case 0x013:
    m = "adc";
    goto arg1op;
  case 0x014:
  case 0x015:
    m = "sbc";
    goto arg1op;
  case 0x2c2:
  case 0x2c3:
    m = "dec";
    goto arg1op;
  case 0x302:
  case 0x303:
    m = "inc";
    goto arg1op;
  case 0x400:
  case 0x401:
    m = "clr";
    goto arg1op;
  arg1op:
    fprintf(out, "%s\t", m);
    print_reg(out, cmd & 0x1f);
    goto done;
  case 0x018:
    m = "sst";
    goto statusop;
  case 0x01c:
    m = "cst";
  statusop:
    fprintf(out, "%s\t0%xh", m, cmd & 0xf);
    goto done;
  }
  switch (cmd >> 12) {
  case 0x4:
  case 0x5:
    m = "movl";
    goto moveop;
  case 0x6:
  case 0x7:
    m = "cmpl";
  moveop:
    fprintf(out, "%s\t", m);
    print_reg(out, cmd & 0x1f);
    arg = (cmd >> 5) & 0xff;
    if (arg > 9)
      fprintf(out, ", 0%xh", arg);
    else
      fprintf(out, ", %d", arg);
    goto done;
  case 0x8:
    m = "jmp";
    goto jumpop;
  case 0x9:
    m = "jsr";
    goto jumpop;
  case 0xa:
    m = "jz";
    goto jumpop;
  case 0xb:
    m = "jnz";
    goto jumpop;
  case 0xc:
    m = "jns";
    goto jumpop;
  case 0xd:
    m = "js";
    goto jumpop;
  case 0xe:
    m = "jnc";
    goto jumpop;
  case 0xf:
    m = "jc";
  jumpop:
    fprintf(out, "%s", m);
    arg = cmd & 0xfff;
    if (arg > 9)
      fprintf(out, "\t0%xh", arg);
    else if (arg)
      fprintf(out, "\t%d", arg);
    goto done;
  }
  switch (cmd >> 8) {
  case 0x04:
  case 0x05:
  case 0x06:
  case 0x07:
    m = "mov";
    goto movop;
  case 0x08:
  case 0x09:
  case 0x0a:
  case 0x0b:
    m = "cmp";
    goto movop;
  case 0x0c:
  case 0x0d:
  case 0x0e:
  case 0x0f:
    m = "sub";
    goto movop;
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x13:
    m = "add";
    goto movop;
  case 0x14:
  case 0x15:
  case 0x16:
  case 0x17:
    m = "and";
    goto movop;
  case 0x18:
  case 0x19:
  case 0x1a:
  case 0x1b:
    m = "or";
    goto movop;
  case 0x1c:
  case 0x1d:
  case 0x1e:
  case 0x1f:
    m = "xor";
  movop:
    fprintf(out, "%s\t", m);
    print_reg(out, cmd & 0x1f);
    fprintf(out, ", ");
    print_reg(out, cmd >> 5 & 0x1f);
    goto done;
  case 0x28:
  case 0x29:
    m = "bicl";
    goto bitop;
  case 0x2a:
  case 0x2b:
    m = "bich";
    goto bitop;
  case 0x34:
  case 0x35:
    m = "bttl";
    goto bitop;
  case 0x36:
  case 0x37:
    m = "btth";
    goto bitop;
  case 0x38:
  case 0x39:
    m = "bisl";
    goto bitop;
  case 0x3a:
  case 0x3b:
    m = "bish";
    goto bitop;
  case 0x3c:
  case 0x3d:
    m = "btgl";
    goto bitop;
  case 0x3e:
  case 0x3f:
    m = "btgh";
  bitop:
    fprintf(out, "%s\t", m);
    print_reg(out, cmd & 0x1f);
    fprintf(out, ", 0%xh", cmd >> 5 & 0xf);
    goto done;
  case 0x2c:
  case 0x2d:
  case 0x2e:
  case 0x2f:
    m = "subl";
    goto bit5op;
  case 0x30:
  case 0x31:
  case 0x32:
  case 0x33:
    m = "addl";
  bit5op:
    fprintf(out, "%s\t", m);
    print_reg(out, cmd & 0x1f);
    fprintf(out, ", 0%xh", cmd >> 5 & 0x1f);
    goto done;
  case 0x20:
  case 0x21:
  case 0x22:
  case 0x23:
  case 0x24:
  case 0x25:
  case 0x26:
  case 0x27:
    fprintf(out, "ldr\t#%c, ", (cmd & 7) + 'a');
    arg = (cmd >> 3) & 0xff;
    if (arg > 9)
      fprintf(out, "0%xh", arg);
    else
      fprintf(out, "%d", arg);
    goto done;
  case 0x02:
    fprintf(out, "mtpr\t#%c, ", ((cmd >> 5) & 7) + 'a');
    print_reg(out, cmd & 0x1f);
    goto done;
  case 0x03:
    fprintf(out, "mfpr\t");
    print_reg(out, cmd & 0x1f);
    fprintf(out, ", #%c", ((cmd >> 5) & 7) + 'a');
    goto done;
  }
  fprintf(out, "?");
  if (cmd >= ' ' && cmd <= '~')
    fprintf(out, "\t\t; `%c'", cmd);
done:
  fprintf(out, "\n");
}
```