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

```asm
<print_mx1>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x4(%rbp)
  mov    %esi,-0x8(%rbp)
  mov    %edx,-0xc(%rbp)
  mov    %ecx,-0x10(%rbp)
  mov    %r8d,-0x14(%rbp)
  mov    %r9d,-0x18(%rbp)
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D109(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  not    %eax
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L807
  mov    -0x4(%rbp),%eax
  and    $0x3,%eax
  mov    %eax,%esi
  lea    D240(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L10
L807:
  mov    -0x4(%rbp),%eax
  and    $0x3,%eax
  mov    %eax,%esi
  lea    D132(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L10:
  mov    -0x4(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  jne    L238
  mov    -0x4(%rbp),%eax
  and    $0x4,%eax
  mov    %eax,%esi
  lea    D390(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L238:
  mov    -0x4(%rbp),%eax
  not    %eax
  and    $0x18,%eax
  cmp    $0x18,%eax
  je     L336
  cmp    $0x18,%eax
  ja     L1405
  cmp    $0x10,%eax
  je     L466
  cmp    $0x10,%eax
  ja     L1405
  test   %eax,%eax
  je     L86
  cmp    $0x8,%eax
  je     L1439
  jmp    L1405
L86:
  mov    -0x4(%rbp),%eax
  and    $0x18,%eax
  mov    %eax,%esi
  lea    D215(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1405
L1439:
  mov    -0x4(%rbp),%eax
  and    $0x18,%eax
  mov    %eax,%esi
  lea    D79(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1405
L466:
  mov    -0x4(%rbp),%eax
  and    $0x18,%eax
  mov    %eax,%esi
  lea    D984(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1405
L336:
  mov    -0x4(%rbp),%eax
  and    $0x18,%eax
  mov    %eax,%esi
  lea    D673(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L1405:
  mov    -0x4(%rbp),%eax
  not    %eax
  and    $0xfc00,%eax
  test   %eax,%eax
  je     L390
  mov    -0x4(%rbp),%eax
  and    $0xfc00,%eax
  mov    %eax,%esi
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L390:
  mov    -0x4(%rbp),%eax
  and    $0x1000000,%eax
  test   %eax,%eax
  jne    L1022
  lea    D832(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L1022:
  mov    -0x4(%rbp),%eax
  and    $0x10000000,%eax
  test   %eax,%eax
  jne    L443
  lea    D694(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L443:
  mov    -0x8(%rbp),%eax
  mov    %eax,%esi
  lea    D536(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%eax
  and    $0x7,%eax
  cmp    $0x7,%eax
  ja     L53
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D761(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D761(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    $0x0,%esi
  lea    D895(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L413
  mov    $0x1,%esi
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L413
  mov    $0x2,%esi
  lea    D906(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L413
  mov    $0x3,%esi
  lea    D309(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L413
  mov    $0x4,%esi
  lea    D758(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L413
  mov    $0x5,%esi
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L413
  mov    $0x6,%esi
  lea    D392(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L413
  mov    $0x7,%esi
  lea    D535(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L413
L53:
  mov    -0x8(%rbp),%eax
  and    $0x7,%eax
  mov    %eax,%esi
  lea    D283(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L413:
  mov    -0x8(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L153
  mov    $0x2,%esi
  lea    D302(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L153:
  mov    -0x8(%rbp),%eax
  and    $0x80,%eax
  test   %eax,%eax
  je     L561
  mov    $0x8,%esi
  lea    D248(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L561:
  mov    -0x8(%rbp),%eax
  and    $0x300,%eax
  cmp    $0x300,%eax
  je     L431
  cmp    $0x300,%eax
  ja     L203
  cmp    $0x200,%eax
  je     L236
  cmp    $0x200,%eax
  ja     L203
  test   %eax,%eax
  je     L88
  cmp    $0x100,%eax
  je     L1672
  jmp    L203
L88:
  mov    $0x0,%esi
  lea    D492(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L203
L1672:
  mov    $0x1,%esi
  lea    D1023(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L203
L236:
  mov    $0x2,%esi
  lea    D259(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L203
L431:
  mov    $0x3,%esi
  lea    D757(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L203:
  mov    -0x8(%rbp),%eax
  and    $0x400,%eax
  test   %eax,%eax
  je     L649
  mov    $0x4,%esi
  lea    D470(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L649:
  mov    -0x8(%rbp),%eax
  and    $0x3000,%eax
  cmp    $0x3000,%eax
  je     L835
  cmp    $0x3000,%eax
  ja     L367
  cmp    $0x2000,%eax
  je     L1703
  cmp    $0x2000,%eax
  ja     L367
  test   %eax,%eax
  je     L547
  cmp    $0x1000,%eax
  je     L574
  jmp    L367
L547:
  mov    $0x0,%esi
  lea    D601(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L367
L574:
  mov    $0x1,%esi
  lea    D374(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L367
L1703:
  mov    $0x2,%esi
  lea    D849(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L367
L835:
  mov    $0x3,%esi
  lea    D721(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L367:
  mov    -0x8(%rbp),%eax
  and    $0x8000,%eax
  test   %eax,%eax
  je     L1393
  mov    $0x8,%esi
  lea    D1014(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L1393:
  mov    -0x8(%rbp),%eax
  and    $0x4000,%eax
  test   %eax,%eax
  je     L747
  mov    $0x4,%esi
  lea    D800(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L747:
  mov    -0x8(%rbp),%eax
  and    $0x800000,%eax
  test   %eax,%eax
  je     L1031
  mov    -0x8(%rbp),%eax
  and    $0x1f0000,%eax
  cmp    $0x140000,%eax
  je     L725
  cmp    $0x140000,%eax
  ja     L1151
  cmp    $0x130000,%eax
  je     L996
  cmp    $0x130000,%eax
  ja     L1151
  cmp    $0x120000,%eax
  je     L137
  cmp    $0x120000,%eax
  ja     L1151
  cmp    $0x110000,%eax
  je     L47
  cmp    $0x110000,%eax
  ja     L1151
  cmp    $0x100000,%eax
  je     L1420
  cmp    $0x100000,%eax
  ja     L1151
  cmp    $0xf0000,%eax
  je     L124
  cmp    $0xf0000,%eax
  ja     L1151
  cmp    $0xe0000,%eax
  je     L1317
  cmp    $0xe0000,%eax
  ja     L1151
  cmp    $0xd0000,%eax
  je     L445
  cmp    $0xd0000,%eax
  ja     L1151
  cmp    $0xc0000,%eax
  je     L736
  cmp    $0xc0000,%eax
  ja     L1151
  cmp    $0xb0000,%eax
  je     L1592
  cmp    $0xb0000,%eax
  ja     L1151
  cmp    $0xa0000,%eax
  je     L1071
  cmp    $0xa0000,%eax
  ja     L1151
  cmp    $0x90000,%eax
  je     L761
  cmp    $0x90000,%eax
  ja     L1151
  cmp    $0x80000,%eax
  je     L1425
  cmp    $0x80000,%eax
  ja     L1151
  cmp    $0x70000,%eax
  je     L411
  cmp    $0x70000,%eax
  ja     L1151
  cmp    $0x60000,%eax
  je     L1446
  cmp    $0x60000,%eax
  ja     L1151
  cmp    $0x50000,%eax
  je     L1819
  cmp    $0x50000,%eax
  ja     L1151
  cmp    $0x40000,%eax
  je     L207
  cmp    $0x40000,%eax
  ja     L1151
  cmp    $0x30000,%eax
  je     L140
  cmp    $0x30000,%eax
  ja     L1151
  cmp    $0x20000,%eax
  je     L830
  cmp    $0x20000,%eax
  ja     L1151
  test   %eax,%eax
  je     L512
  cmp    $0x10000,%eax
  je     L1824
  jmp    L1151
L512:
  mov    $0x0,%esi
  lea    D657(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L1824:
  mov    $0x1,%esi
  lea    D738(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L830:
  mov    $0x2,%esi
  lea    D319(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L140:
  mov    $0x3,%esi
  lea    D739(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L207:
  mov    $0x4,%esi
  lea    D334(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L1819:
  mov    $0x5,%esi
  lea    D496(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L1446:
  mov    $0x6,%esi
  lea    D169(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L411:
  mov    $0x7,%esi
  lea    D96(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L1425:
  mov    $0x8,%esi
  lea    D831(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L761:
  mov    $0x9,%esi
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L1071:
  mov    $0xa,%esi
  lea    D82(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L1592:
  mov    $0xb,%esi
  lea    D126(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L736:
  mov    $0xc,%esi
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L445:
  mov    $0xd,%esi
  lea    D541(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L1317:
  mov    $0xe,%esi
  lea    D184(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L124:
  mov    $0xf,%esi
  lea    D641(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L1420:
  mov    $0x10,%esi
  lea    D998(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L47:
  mov    $0x11,%esi
  lea    D440(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L137:
  mov    $0x12,%esi
  lea    D612(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L996:
  mov    $0x13,%esi
  lea    D443(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1151
L725:
  mov    $0x14,%esi
  lea    D275(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L1151:
  mov    -0x8(%rbp),%eax
  and    $0x400000,%eax
  test   %eax,%eax
  je     L1774
  mov    $0x4,%esi
  lea    D131(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L1774:
  mov    $0x8,%esi
  lea    D560(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L1031:
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D1004(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0xc(%rbp),%eax
  and    $0x7,%eax
  cmp    $0x7,%eax
  ja     L1600
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D513(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D513(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    $0x0,%esi
  lea    D495(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1600
  mov    $0x1,%esi
  lea    D708(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1600
  mov    $0x2,%esi
  lea    D402(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1600
  mov    $0x3,%esi
  lea    D245(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1600
  mov    $0x4,%esi
  lea    D781(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1600
  mov    $0x5,%esi
  lea    D670(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1600
  mov    $0x6,%esi
  lea    D277(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1600
  mov    $0x7,%esi
  lea    D370(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L1600:
  mov    -0xc(%rbp),%eax
  and    $0x70,%eax
  cmp    $0x70,%eax
  je     L1874
  cmp    $0x70,%eax
  ja     L433
  cmp    $0x60,%eax
  je     L39
  cmp    $0x60,%eax
  ja     L433
  cmp    $0x50,%eax
  je     L1323
  cmp    $0x50,%eax
  ja     L433
  cmp    $0x40,%eax
  je     L95
  cmp    $0x40,%eax
  ja     L433
  cmp    $0x30,%eax
  je     L938
  cmp    $0x30,%eax
  ja     L433
  cmp    $0x20,%eax
  je     L1658
  cmp    $0x20,%eax
  ja     L433
  test   %eax,%eax
  je     L608
  cmp    $0x10,%eax
  je     L19
  jmp    L433
L608:
  mov    $0x0,%esi
  lea    D683(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L433
L19:
  mov    $0x1,%esi
  lea    D161(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L433
L1658:
  mov    $0x2,%esi
  lea    D306(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L433
L938:
  mov    $0x3,%esi
  lea    D566(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L433
L95:
  mov    $0x4,%esi
  lea    D528(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L433
L1323:
  mov    $0x5,%esi
  lea    D538(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L433
L39:
  mov    $0x6,%esi
  lea    D955(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L433
L1874:
  mov    $0x7,%esi
  lea    D285(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L433:
  mov    -0xc(%rbp),%eax
  and    $0x700,%eax
  cmp    $0x700,%eax
  je     L812
  cmp    $0x700,%eax
  ja     L720
  cmp    $0x600,%eax
  je     L1965
  cmp    $0x600,%eax
  ja     L720
  cmp    $0x500,%eax
  je     L1397
  cmp    $0x500,%eax
  ja     L720
  cmp    $0x400,%eax
  je     L1645
  cmp    $0x400,%eax
  ja     L720
  cmp    $0x300,%eax
  je     L982
  cmp    $0x300,%eax
  ja     L720
  cmp    $0x200,%eax
  je     L480
  cmp    $0x200,%eax
  ja     L720
  test   %eax,%eax
  je     L656
  cmp    $0x100,%eax
  je     L1504
  jmp    L720
L656:
  mov    $0x0,%esi
  lea    D565(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L720
L1504:
  mov    $0x1,%esi
  lea    D1001(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L720
L480:
  mov    $0x2,%esi
  lea    D669(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L720
L982:
  mov    $0x3,%esi
  lea    D351(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L720
L1645:
  mov    $0x4,%esi
  lea    D33(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L720
L1397:
  mov    $0x5,%esi
  lea    D238(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L720
L1965:
  mov    $0x6,%esi
  lea    D837(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L720
L812:
  mov    $0x7,%esi
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L720:
  mov    -0xc(%rbp),%eax
  and    $0x8000,%eax
  test   %eax,%eax
  je     L183
  mov    $0x8,%esi
  lea    D537(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L365
L183:
  lea    D520(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L365:
  mov    -0xc(%rbp),%eax
  and    $0x70000,%eax
  cmp    $0x70000,%eax
  je     L594
  cmp    $0x70000,%eax
  ja     L285
  cmp    $0x60000,%eax
  je     L144
  cmp    $0x60000,%eax
  ja     L285
  cmp    $0x50000,%eax
  je     L1654
  cmp    $0x50000,%eax
  ja     L285
  cmp    $0x40000,%eax
  je     L809
  cmp    $0x40000,%eax
  ja     L285
  cmp    $0x30000,%eax
  je     L1918
  cmp    $0x30000,%eax
  ja     L285
  cmp    $0x20000,%eax
  je     L1222
  cmp    $0x20000,%eax
  ja     L285
  test   %eax,%eax
  je     L412
  cmp    $0x10000,%eax
  je     L1388
  jmp    L285
L412:
  mov    $0x0,%esi
  lea    D95(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L285
L1388:
  mov    $0x1,%esi
  lea    D128(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L285
L1222:
  mov    $0x2,%esi
  lea    D576(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L285
L1918:
  mov    $0x3,%esi
  lea    D442(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L285
L809:
  mov    $0x4,%esi
  lea    D173(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L285
L1654:
  mov    $0x5,%esi
  lea    D108(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L285
L144:
  mov    $0x6,%esi
  lea    D237(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L285
L594:
  mov    $0x7,%esi
  lea    D963(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L285:
  mov    -0x10(%rbp),%eax
  mov    %eax,%esi
  lea    D936(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x10(%rbp),%eax
  not    %eax
  movzwl %ax,%eax
  test   %eax,%eax
  je     L210
  mov    -0x10(%rbp),%eax
  movzwl %ax,%eax
  mov    %eax,%esi
  lea    D981(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L210:
  mov    -0x10(%rbp),%eax
  and    $0x10000000,%eax
  test   %eax,%eax
  je     L636
  mov    $0x1,%esi
  lea    D932(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L184
L636:
  lea    D813(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L184:
  mov    -0x10(%rbp),%eax
  and    $0x20000000,%eax
  test   %eax,%eax
  je     L767
  mov    $0x2,%esi
  lea    D487(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1389
L767:
  lea    D813(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L1389:
  mov    -0x10(%rbp),%eax
  and    $0x40000000,%eax
  test   %eax,%eax
  je     L478
  mov    $0x4,%esi
  lea    D804(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L256
L478:
  lea    D813(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L256:
  mov    -0x10(%rbp),%eax
  test   %eax,%eax
  jns    L1543
  mov    $0x8,%esi
  lea    D434(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L301
L1543:
  lea    D452(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L301:
  nop
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D109
type_infered: string
name: read_data
arguments: data_tag: D240
type_infered: string
name: read_data
arguments: data_tag: D132
type_infered: string
name: read_data
arguments: data_tag: D390
type_infered: string
name: read_data
arguments: data_tag: D215
type_infered: string
name: read_data
arguments: data_tag: D79
type_infered: string
name: read_data
arguments: data_tag: D984
type_infered: string
name: read_data
arguments: data_tag: D673
type_infered: string
name: read_data
arguments: data_tag: D97
type_infered: string
name: read_data
arguments: data_tag: D832
type_infered: string
name: read_data
arguments: data_tag: D694
type_infered: string
name: read_data
arguments: data_tag: D536
type_infered: string
name: read_data
arguments: data_tag: D895
type_infered: string
name: read_data
arguments: data_tag: D67
type_infered: string
name: read_data
arguments: data_tag: D906
type_infered: string
name: read_data
arguments: data_tag: D309
type_infered: string
name: read_data
arguments: data_tag: D758
type_infered: string
name: read_data
arguments: data_tag: D100
type_infered: string
name: read_data
arguments: data_tag: D392
type_infered: string
name: read_data
arguments: data_tag: D535
type_infered: string
name: read_data
arguments: data_tag: D283
type_infered: string
name: read_data
arguments: data_tag: D302
type_infered: string
name: read_data
arguments: data_tag: D248
type_infered: string
name: read_data
arguments: data_tag: D492
type_infered: string
name: read_data
arguments: data_tag: D1023
type_infered: string
name: read_data
arguments: data_tag: D259
type_infered: string
name: read_data
arguments: data_tag: D757
type_infered: string
name: read_data
arguments: data_tag: D470
type_infered: string
name: read_data
arguments: data_tag: D601
type_infered: string
name: read_data
arguments: data_tag: D374
type_infered: string
name: read_data
arguments: data_tag: D849
type_infered: string
name: read_data
arguments: data_tag: D721
type_infered: string
name: read_data
arguments: data_tag: D1014
type_infered: string
name: read_data
arguments: data_tag: D800
type_infered: string
name: read_data
arguments: data_tag: D657
type_infered: string
name: read_data
arguments: data_tag: D738
type_infered: string
name: read_data
arguments: data_tag: D319
type_infered: string
name: read_data
arguments: data_tag: D739
type_infered: string
name: read_data
arguments: data_tag: D334
type_infered: string
name: read_data
arguments: data_tag: D496
type_infered: string
name: read_data
arguments: data_tag: D169
type_infered: string
name: read_data
arguments: data_tag: D96
type_infered: string
name: read_data
arguments: data_tag: D831
type_infered: string
name: read_data
arguments: data_tag: D77
type_infered: string
name: read_data
arguments: data_tag: D82
type_infered: string
name: read_data
arguments: data_tag: D126
type_infered: string
name: read_data
arguments: data_tag: D2
type_infered: string
name: read_data
arguments: data_tag: D541
type_infered: string
name: read_data
arguments: data_tag: D184
type_infered: string
name: read_data
arguments: data_tag: D641
type_infered: string
name: read_data
arguments: data_tag: D998
type_infered: string
name: read_data
arguments: data_tag: D440
type_infered: string
name: read_data
arguments: data_tag: D612
type_infered: string
name: read_data
arguments: data_tag: D443
type_infered: string
name: read_data
arguments: data_tag: D275
type_infered: string
name: read_data
arguments: data_tag: D131
type_infered: string
name: read_data
arguments: data_tag: D560
type_infered: string
name: read_data
arguments: data_tag: D1004
type_infered: string
name: read_data
arguments: data_tag: D495
type_infered: string
name: read_data
arguments: data_tag: D708
type_infered: string
name: read_data
arguments: data_tag: D402
type_infered: string
name: read_data
arguments: data_tag: D245
type_infered: string
name: read_data
arguments: data_tag: D781
type_infered: string
name: read_data
arguments: data_tag: D670
type_infered: string
name: read_data
arguments: data_tag: D277
type_infered: string
name: read_data
arguments: data_tag: D370
type_infered: string
name: read_data
arguments: data_tag: D683
type_infered: string
name: read_data
arguments: data_tag: D161
type_infered: string
name: read_data
arguments: data_tag: D306
type_infered: string
name: read_data
arguments: data_tag: D566
type_infered: string
name: read_data
arguments: data_tag: D528
type_infered: string
name: read_data
arguments: data_tag: D538
type_infered: string
name: read_data
arguments: data_tag: D955
type_infered: string
name: read_data
arguments: data_tag: D285
type_infered: string
name: read_data
arguments: data_tag: D565
type_infered: string
name: read_data
arguments: data_tag: D1001
type_infered: string
name: read_data
arguments: data_tag: D669
type_infered: string
name: read_data
arguments: data_tag: D351
type_infered: string
name: read_data
arguments: data_tag: D33
type_infered: string
name: read_data
arguments: data_tag: D238
type_infered: string
name: read_data
arguments: data_tag: D837
type_infered: string
name: read_data
arguments: data_tag: D84
type_infered: string
name: read_data
arguments: data_tag: D537
type_infered: string
name: read_data
arguments: data_tag: D520
type_infered: string
name: read_data
arguments: data_tag: D95
type_infered: string
name: read_data
arguments: data_tag: D128
type_infered: string
name: read_data
arguments: data_tag: D576
type_infered: string
name: read_data
arguments: data_tag: D442
type_infered: string
name: read_data
arguments: data_tag: D173
type_infered: string
name: read_data
arguments: data_tag: D108
type_infered: string
name: read_data
arguments: data_tag: D237
type_infered: string
name: read_data
arguments: data_tag: D963
type_infered: string
name: read_data
arguments: data_tag: D936
type_infered: string
name: read_data
arguments: data_tag: D981
type_infered: string
name: read_data
arguments: data_tag: D932
type_infered: string
name: read_data
arguments: data_tag: D813
type_infered: string
name: read_data
arguments: data_tag: D487
type_infered: string
name: read_data
arguments: data_tag: D804
type_infered: string
name: read_data
arguments: data_tag: D434
type_infered: string
name: read_data
arguments: data_tag: D452
type_infered: string

tool: D109:     DEVCFG0 = %08x


tool: D240:                      %u Debugger enabled


tool: D132:                      %u Debugger disabled


tool: D390:                      %u JTAG disabled


tool: D215:                     %02x Use PGC1/PGD1


tool: D79:                     %02x Use PGC2/PGD2


tool: D984:                     %02x Use PGC3/PGD3


tool: D673:                     %02x Use PGC4/PGD4


tool: D97:                  %05x Program flash write protect


tool: D832:                        Boot flash write protect

tool: D694:                        Code protect

tool: D536:     DEVCFG1 = %08x


tool: D895:                      %u Fast RC oscillator


tool: D67:                      %u Fast RC oscillator with divide-by-N and PLL


tool: D906:                      %u Primary oscillator


tool: D309:                      %u Primary oscillator with PLL


tool: D758:                      %u Secondary oscillator


tool: D100:                      %u Low-power RC oscillator


tool: D392:                      %u Fast RC oscillator with divide-by-16


tool: D535:                      %u Fast RC oscillator with divide-by-N


tool: D283:                      %u UNKNOWN


tool: D302:                     %u  Secondary oscillator enabled


tool: D248:                     %u  Internal-external switch over enabled


tool: D492:                    %u   Primary oscillator: External


tool: D1023:                    %u   Primary oscillator: XT


tool: D259:                    %u   Primary oscillator: HS


tool: D757:                    %u   Primary oscillator: disabled


tool: D470:                    %u   CLKO output disabled


tool: D601:                   %u    Peripheral bus clock: SYSCLK / 1


tool: D374:                   %u    Peripheral bus clock: SYSCLK / 2


tool: D849:                   %u    Peripheral bus clock: SYSCLK / 4


tool: D721:                   %u    Peripheral bus clock: SYSCLK / 8


tool: D1014:                   %u    Fail-safe clock monitor enabled


tool: D800:                   %u    Clock switching enabled


tool: D657:                 %2x     Watchdog postscale: 1/1


tool: D738:                 %2x     Watchdog postscale: 1/2


tool: D319:                 %2x     Watchdog postscale: 1/4


tool: D739:                 %2x     Watchdog postscale: 1/8


tool: D334:                 %2x     Watchdog postscale: 1/16


tool: D496:                 %2x     Watchdog postscale: 1/32


tool: D169:                 %2x     Watchdog postscale: 1/64


tool: D96:                 %2x     Watchdog postscale: 1/128


tool: D831:                 %2x     Watchdog postscale: 1/256


tool: D77:                 %2x     Watchdog postscale: 1/512


tool: D82:                 %2x     Watchdog postscale: 1/1024


tool: D126:                 %2x     Watchdog postscale: 1/2048


tool: D2:                 %2x     Watchdog postscale: 1/4096


tool: D541:                 %2x     Watchdog postscale: 1/8192


tool: D184:                 %2x     Watchdog postscale: 1/16384


tool: D641:                 %2x     Watchdog postscale: 1/32768


tool: D998:                 %2x     Watchdog postscale: 1/65536


tool: D440:                 %2x     Watchdog postscale: 1/131072


tool: D612:                 %2x     Watchdog postscale: 1/262144


tool: D443:                 %2x     Watchdog postscale: 1/524288


tool: D275:                 %2x     Watchdog postscale: 1/1048576


tool: D131:                 %u      Watchdog in non-Window mode


tool: D560:                 %u      Watchdog enable


tool: D1004:     DEVCFG2 = %08x


tool: D495:                      %u PLL divider: 1/1


tool: D708:                      %u PLL divider: 1/2


tool: D402:                      %u PLL divider: 1/3


tool: D245:                      %u PLL divider: 1/4


tool: D781:                      %u PLL divider: 1/5


tool: D670:                      %u PLL divider: 1/6


tool: D277:                      %u PLL divider: 1/10


tool: D370:                      %u PLL divider: 1/12


tool: D683:                     %u  PLL multiplier: 15x


tool: D161:                     %u  PLL multiplier: 16x


tool: D306:                     %u  PLL multiplier: 17x


tool: D566:                     %u  PLL multiplier: 18x


tool: D528:                     %u  PLL multiplier: 19x


tool: D538:                     %u  PLL multiplier: 20x


tool: D955:                     %u  PLL multiplier: 21x


tool: D285:                     %u  PLL multiplier: 24x


tool: D565:                    %u   USB PLL divider: 1/1


tool: D1001:                    %u   USB PLL divider: 1/2


tool: D669:                    %u   USB PLL divider: 1/3


tool: D351:                    %u   USB PLL divider: 1/4


tool: D33:                    %u   USB PLL divider: 1/5


tool: D238:                    %u   USB PLL divider: 1/6


tool: D837:                    %u   USB PLL divider: 1/10


tool: D84:                    %u   USB PLL divider: 1/12


tool: D537:                   %u    Disable USB PLL


tool: D520:                        Enable USB PLL

tool: D95:                  %u     PLL postscaler: 1/1


tool: D128:                  %u     PLL postscaler: 1/2


tool: D576:                  %u     PLL postscaler: 1/4


tool: D442:                  %u     PLL postscaler: 1/8


tool: D173:                  %u     PLL postscaler: 1/16


tool: D108:                  %u     PLL postscaler: 1/32


tool: D237:                  %u     PLL postscaler: 1/64


tool: D963:                  %u     PLL postscaler: 1/128


tool: D936:     DEVCFG3 = %08x


tool: D981:                   %04x User-defined ID


tool: D932:               %u        Peripheral Module Disable - only 1 reconfig


tool: D813:                        USBID pin: controlled by port

tool: D487:               %u        Peripheral Pin Select - only 1 reconfig


tool: D804:               %u        USBID pin: controlled by USB


tool: D434:               %u        VBuson pin: controlled by USB


tool: D452:                        VBuson pin: controlled by port

assistant: ```c
void print_mx1(unsigned cfg0, unsigned cfg1, unsigned cfg2, unsigned cfg3, unsigned cfg4, unsigned cfg5, unsigned cfg6, unsigned cfg7, unsigned cfg8, unsigned cfg9, unsigned cfg10, unsigned cfg11, unsigned cfg12, unsigned cfg13, unsigned cfg14, unsigned cfg15, unsigned cfg16, unsigned cfg17) {
  printf("    DEVCFG0 = %08x\n", cfg0);
  if ((~cfg0 & 0x00000003) == 0x00000002)
    printf("                     %u Debugger enabled\n", cfg0 & 0x00000003);
  else
    printf("                     %u Debugger disabled\n", cfg0 & 0x00000003);
  if (~cfg0 & 0x00000004)
    printf("                     %u JTAG disabled\n", cfg0 & 0x00000004);
  switch (~cfg0 & 0x00000018) {
  case 0x00000000:
    printf("                    %02x Use PGC1/PGD1\n", cfg0 & 0x00000018);
    break;
  case 0x00000008:
    printf("                    %02x Use PGC2/PGD2\n", cfg0 & 0x00000018);
    break;
  case 0x00000010:
    printf("                    %02x Use PGC3/PGD3\n", cfg0 & 0x00000018);
    break;
  case 0x00000018:
    printf("                    %02x Use PGC4/PGD4\n", cfg0 & 0x00000018);
    break;
  }
  if (~cfg0 & 0x0000fc00)
    printf("                 %05x Program flash write protect\n", cfg0 & 0x0000fc00);
  if (~cfg0 & 0x01000000)
    printf("                       Boot flash write protect\n");
  if (~cfg0 & 0x10000000)
    printf("                       Code protect\n");
  printf("    DEVCFG1 = %08x\n", cfg1);
  switch (cfg1 & 0x00000007) {
  case 0x00000000:
    printf("                     %u Fast RC oscillator\n", 0x00000000);
    break;
  case 0x00000001:
    printf("                     %u Fast RC oscillator with divide-by-N and PLL\n", 0x00000001);
    break;
  case 0x00000002:
    printf("                     %u Primary oscillator\n", 0x00000002);
    break;
  case 0x00000003:
    printf("                     %u Primary oscillator with PLL\n", 0x00000003);
    break;
  case 0x00000004:
    printf("                     %u Secondary oscillator\n", 0x00000004);
    break;
  case 0x00000005:
    printf("                     %u Low-power RC oscillator\n", 0x00000005);
    break;
  case 0x00000006:
    printf("                     %u Fast RC oscillator with divide-by-16\n", 0x00000006);
    break;
  case 0x00000007:
    printf("                     %u Fast RC oscillator with divide-by-N\n", 0x00000007);
    break;
  default:
    printf("                     %u UNKNOWN\n", cfg1 & 0x00000007);
    break;
  }
  if (cfg1 & 0x00000020)
    printf("                    %u  Secondary oscillator enabled\n", 0x00000020 >> 4);
  if (cfg1 & 0x00000080)
    printf("                    %u  Internal-external switch over enabled\n", 0x00000080 >> 4);
  switch (cfg1 & 0x00000300) {
  case 0x00000000:
    printf("                   %u   Primary oscillator: External\n", 0x00000000 >> 8);
    break;
  case 0x00000100:
    printf("                   %u   Primary oscillator: XT\n", 0x00000100 >> 8);
    break;
  case 0x00000200:
    printf("                   %u   Primary oscillator: HS\n", 0x00000200 >> 8);
    break;
  case 0x00000300:
    printf("                   %u   Primary oscillator: disabled\n", 0x00000300 >> 8);
    break;
  }
  if (cfg1 & 0x00000400)
    printf("                   %u   CLKO output disabled\n", 0x00000400 >> 8);
  switch (cfg1 & 0x00003000) {
  case 0x00000000:
    printf("                  %u    Peripheral bus clock: SYSCLK / 1\n", 0x00000000 >> 12);
    break;
  case 0x00001000:
    printf("                  %u    Peripheral bus clock: SYSCLK / 2\n", 0x00001000 >> 12);
    break;
  case 0x00002000:
    printf("                  %u    Peripheral bus clock: SYSCLK / 4\n", 0x00002000 >> 12);
    break;
  case 0x00003000:
    printf("                  %u    Peripheral bus clock: SYSCLK / 8\n", 0x00003000 >> 12);
    break;
  }
  if (cfg1 & 0x00008000)
    printf("                  %u    Fail-safe clock monitor enabled\n", 0x00008000 >> 12);
  if (cfg1 & 0x00004000)
    printf("                  %u    Clock switching enabled\n", 0x00004000 >> 12);
  if (cfg1 & 0x00800000) {
    switch (cfg1 & 0x001f0000) {
    case 0x00000000:
      printf("                %2x     Watchdog postscale: 1/1\n", 0x00000000 >> 16);
      break;
    case 0x00010000:
      printf("                %2x     Watchdog postscale: 1/2\n", 0x00010000 >> 16);
      break;
    case 0x00020000:
      printf("                %2x     Watchdog postscale: 1/4\n", 0x00020000 >> 16);
      break;
    case 0x00030000:
      printf("                %2x     Watchdog postscale: 1/8\n", 0x00030000 >> 16);
      break;
    case 0x00040000:
      printf("                %2x     Watchdog postscale: 1/16\n", 0x00040000 >> 16);
      break;
    case 0x00050000:
      printf("                %2x     Watchdog postscale: 1/32\n", 0x00050000 >> 16);
      break;
    case 0x00060000:
      printf("                %2x     Watchdog postscale: 1/64\n", 0x00060000 >> 16);
      break;
    case 0x00070000:
      printf("                %2x     Watchdog postscale: 1/128\n", 0x00070000 >> 16);
      break;
    case 0x00080000:
      printf("                %2x     Watchdog postscale: 1/256\n", 0x00080000 >> 16);
      break;
    case 0x00090000:
      printf("                %2x     Watchdog postscale: 1/512\n", 0x00090000 >> 16);
      break;
    case 0x000a0000:
      printf("                %2x     Watchdog postscale: 1/1024\n", 0x000a0000 >> 16);
      break;
    case 0x000b0000:
      printf("                %2x     Watchdog postscale: 1/2048\n", 0x000b0000 >> 16);
      break;
    case 0x000c0000:
      printf("                %2x     Watchdog postscale: 1/4096\n", 0x000c0000 >> 16);
      break;
    case 0x000d0000:
      printf("                %2x     Watchdog postscale: 1/8192\n", 0x000d0000 >> 16);
      break;
    case 0x000e0000:
      printf("                %2x     Watchdog postscale: 1/16384\n", 0x000e0000 >> 16);
      break;
    case 0x000f0000:
      printf("                %2x     Watchdog postscale: 1/32768\n", 0x000f0000 >> 16);
      break;
    case 0x00100000:
      printf("                %2x     Watchdog postscale: 1/65536\n", 0x00100000 >> 16);
      break;
    case 0x00110000:
      printf("                %2x     Watchdog postscale: 1/131072\n", 0x00110000 >> 16);
      break;
    case 0x00120000:
      printf("                %2x     Watchdog postscale: 1/262144\n", 0x00120000 >> 16);
      break;
    case 0x00130000:
      printf("                %2x     Watchdog postscale: 1/524288\n", 0x00130000 >> 16);
      break;
    case 0x00140000:
      printf("                %2x     Watchdog postscale: 1/1048576\n", 0x00140000 >> 16);
      break;
    }
    if (cfg1 & 0x00400000)
      printf("                %u      Watchdog in non-Window mode\n", 0x00400000 >> 20);
    printf("                %u      Watchdog enable\n", 0x00800000 >> 20);
  }
  printf("    DEVCFG2 = %08x\n", cfg2);
  switch (cfg2 & 0x00000007) {
  case 0x00000000:
    printf("                     %u PLL divider: 1/1\n", 0x00000000);
    break;
  case 0x00000001:
    printf("                     %u PLL divider: 1/2\n", 0x00000001);
    break;
  case 0x00000002:
    printf("                     %u PLL divider: 1/3\n", 0x00000002);
    break;
  case 0x00000003:
    printf("                     %u PLL divider: 1/4\n", 0x00000003);
    break;
  case 0x00000004:
    printf("                     %u PLL divider: 1/5\n", 0x00000004);
    break;
  case 0x00000005:
    printf("                     %u PLL divider: 1/6\n", 0x00000005);
    break;
  case 0x00000006:
    printf("                     %u PLL divider: 1/10\n", 0x00000006);
    break;
  case 0x00000007:
    printf("                     %u PLL divider: 1/12\n", 0x00000007);
    break;
  }
  switch (cfg2 & 0x00000070) {
  case 0x00000000:
    printf("                    %u  PLL multiplier: 15x\n", 0x00000000 >> 4);
    break;
  case 0x00000010:
    printf("                    %u  PLL multiplier: 16x\n", 0x00000010 >> 4);
    break;
  case 0x00000020:
    printf("                    %u  PLL multiplier: 17x\n", 0x00000020 >> 4);
    break;
  case 0x00000030:
    printf("                    %u  PLL multiplier: 18x\n", 0x00000030 >> 4);
    break;
  case 0x00000040:
    printf("                    %u  PLL multiplier: 19x\n", 0x00000040 >> 4);
    break;
  case 0x00000050:
    printf("                    %u  PLL multiplier: 20x\n", 0x00000050 >> 4);
    break;
  case 0x00000060:
    printf("                    %u  PLL multiplier: 21x\n", 0x00000060 >> 4);
    break;
  case 0x00000070:
    printf("                    %u  PLL multiplier: 24x\n", 0x00000070 >> 4);
    break;
  }
  switch (cfg2 & 0x00000700) {
  case 0x00000000:
    printf("                   %u   USB PLL divider: 1/1\n", 0x00000000 >> 8);
    break;
  case 0x00000100:
    printf("                   %u   USB PLL divider: 1/2\n", 0x00000100 >> 8);
    break;
  case 0x00000200:
    printf("                   %u   USB PLL divider: 1/3\n", 0x00000200 >> 8);
    break;
  case 0x00000300:
    printf("                   %u   USB PLL divider: 1/4\n", 0x00000300 >> 8);
    break;
  case 0x00000400:
    printf("                   %u   USB PLL divider: 1/5\n", 0x00000400 >> 8);
    break;
  case 0x00000500:
    printf("                   %u   USB PLL divider: 1/6\n", 0x00000500 >> 8);
    break;
  case 0x00000600:
    printf("                   %u   USB PLL divider: 1/10\n", 0x00000600 >> 8);
    break;
  case 0x00000700:
    printf("                   %u   USB PLL divider: 1/12\n", 0x00000700 >> 8);
    break;
  }
  if (cfg2 & 0x00008000)
    printf("                  %u    Disable USB PLL\n", 0x00008000 >> 12);
  else
    printf("                       Enable USB PLL\n");
  switch (cfg2 & 0x00070000) {
  case 0x00000000:
    printf("                 %u     PLL postscaler: 1/1\n", 0x00000000 >> 16);
    break;
  case 0x00010000:
    printf("                 %u     PLL postscaler: 1/2\n", 0x00010000 >> 16);
    break;
  case 0x00020000:
    printf("                 %u     PLL postscaler: 1/4\n", 0x00020000 >> 16);
    break;
  case 0x00030000:
    printf("                 %u     PLL postscaler: 1/8\n", 0x00030000 >> 16);
    break;
  case 0x00040000:
    printf("                 %u     PLL postscaler: 1/16\n", 0x00040000 >> 16);
    break;
  case 0x00050000:
    printf("                 %u     PLL postscaler: 1/32\n", 0x00050000 >> 16);
    break;
  case 0x00060000:
    printf("                 %u     PLL postscaler: 1/64\n", 0x00060000 >> 16);
    break;
  case 0x00070000:
    printf("                 %u     PLL postscaler: 1/128\n", 0x00070000 >> 16);
    break;
  }
  printf("    DEVCFG3 = %08x\n", cfg3);
  if (~cfg3 & 0x0000ffff)
    printf("                  %04x User-defined ID\n", cfg3 & 0x0000ffff);
  if (cfg3 & 0x10000000)
    printf("              %u        Peripheral Module Disable - only 1 reconfig\n", 0x10000000 >> 28);
  else
    printf("                       USBID pin: controlled by port\n");
  if (cfg3 & 0x20000000)
    printf("              %u        Peripheral Pin Select - only 1 reconfig\n", 0x20000000 >> 28);
  else
    printf("                       USBID pin: controlled by port\n");
  if (cfg3 & 0x40000000)
    printf("              %u        USBID pin: controlled by USB\n", 0x40000000 >> 28);
  else
    printf("                       USBID pin: controlled by port\n");
  if (cfg3 & 0x80000000)
    printf("              %u        VBuson pin: controlled by USB\n", 0x80000000 >> 28);
  else
    printf("                       VBuson pin: controlled by port\n");
}
```