user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<print_mk_devcfg1>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  test   %rsi,%rsi
  jne    L0
  mov    %edi,%esi
  lea    D370(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L501:
  test   $0x80000000,%ebx
  je     L84
  mov    $0x8,%esi
  lea    D364(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L533:
  mov    %rbx,%rcx
  sar    $0x1a,%rcx
  mov    %rcx,%rdx
  and    $0x1f,%edx
  cmp    $0x17,%rdx
  jle    L841
  mov    %rbx,%rsi
  sar    $0x18,%rsi
  and    $0x7c,%esi
  lea    D138(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L823:
  mov    %rbx,%rax
  and    $0x3000000,%eax
  cmp    $0x2000000,%rax
  je     L888
  jg     L25
  test   %rax,%rax
  je     L984
  cmp    $0x1000000,%rax
  jne    L313
  mov    %rbx,%rsi
  sar    $0x18,%rsi
  and    $0x3,%esi
  lea    D210(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L313
L0:
  mov    %edi,%esi
  lea    D128(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L501
L84:
  mov    $0x0,%esi
  lea    D18(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L533
L841:
  and    $0x1f,%ecx
  add    $0x8,%ecx
  mov    $0x1,%eax
  shl    %cl,%eax
  mov    %eax,%ecx
  add    $0x8,%rdx
  mov    %rbx,%rsi
  sar    $0x18,%rsi
  and    $0x7c,%esi
  lea    D349(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L823
L25:
  cmp    $0x3000000,%rax
  jne    L313
  mov    %rbx,%rsi
  sar    $0x18,%rsi
  and    $0x3,%esi
  lea    D152(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L313:
  test   $0x800000,%ebx
  je     L302
  mov    $0x8,%esi
  lea    D264(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L468:
  test   $0x400000,%ebx
  je     L224
  mov    $0x4,%esi
  lea    D648(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L252:
  test   $0x200000,%ebx
  je     L751
  mov    $0x2,%esi
  lea    D187(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L35:
  mov    %rbx,%rax
  and    $0x1f0000,%eax
  cmp    $0xa0000,%rax
  je     L860
  jg     L141
  cmp    $0x50000,%rax
  je     L359
  jle    L645
  cmp    $0x80000,%rax
  je     L925
  jle    L120
  cmp    $0x90000,%rax
  jne    L122
  mov    $0x9,%esi
  lea    D394(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L888:
  mov    %rbx,%rsi
  sar    $0x18,%rsi
  and    $0x3,%esi
  lea    D549(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L313
L984:
  mov    %rbx,%rsi
  sar    $0x18,%rsi
  and    $0x3,%esi
  lea    D628(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L313
L302:
  mov    $0x0,%esi
  lea    D41(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L468
L224:
  mov    $0x0,%esi
  lea    D545(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L252
L751:
  mov    $0x0,%esi
  lea    D615(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L35
L645:
  cmp    $0x20000,%rax
  je     L237
  jle    L626
  cmp    $0x30000,%rax
  je     L108
  cmp    $0x40000,%rax
  jne    L122
  mov    $0x4,%esi
  lea    D122(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L626:
  test   %rax,%rax
  je     L599
  cmp    $0x10000,%rax
  jne    L122
  mov    $0x1,%esi
  lea    D324(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L120:
  cmp    $0x60000,%rax
  je     L786
  cmp    $0x70000,%rax
  jne    L122
  mov    $0x7,%esi
  lea    D265(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L141:
  cmp    $0xf0000,%rax
  je     L168
  jle    L707
  cmp    $0x120000,%rax
  je     L16
  jle    L788
  cmp    $0x130000,%rax
  jne    L122
  mov    $0x14,%esi
  lea    D280(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L360:
  mov    %rbx,%rax
  and    $0xc000,%eax
  cmp    $0x8000,%rax
  je     L613
  jg     L846
  test   %rax,%rax
  je     L710
  cmp    $0x4000,%rax
  jne    L673
  mov    $0x4,%esi
  lea    D289(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L673
L707:
  cmp    $0xd0000,%rax
  je     L323
  jle    L103
  cmp    $0xe0000,%rax
  jne    L122
  mov    $0xe,%esi
  lea    D262(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L103:
  cmp    $0xb0000,%rax
  je     L7
  cmp    $0xc0000,%rax
  jne    L122
  mov    $0xc,%esi
  lea    D344(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L788:
  cmp    $0x100000,%rax
  je     L443
  cmp    $0x110000,%rax
  jne    L122
  mov    $0x11,%esi
  lea    D64(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L16:
  mov    $0x12,%esi
  lea    D267(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L443:
  mov    $0x10,%esi
  lea    D610(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L168:
  mov    $0xf,%esi
  lea    D11(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L323:
  mov    $0xd,%esi
  lea    D276(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L7:
  mov    $0xb,%esi
  lea    D340(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L860:
  mov    $0xa,%esi
  lea    D39(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L925:
  mov    $0x8,%esi
  lea    D634(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L786:
  mov    $0x6,%esi
  lea    D195(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L359:
  mov    $0x5,%esi
  lea    D185(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L108:
  mov    $0x3,%esi
  lea    D181(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L237:
  mov    $0x2,%esi
  lea    D584(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L599:
  mov    $0x0,%esi
  lea    D78(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L122:
  mov    $0x14,%esi
  lea    D637(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L360
L846:
  cmp    $0xc000,%rax
  jne    L673
  mov    $0xc,%esi
  lea    D495(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L673:
  test   $0x4,%bh
  je     L194
  mov    $0x4,%esi
  lea    D179(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L1016:
  mov    %rbx,%rax
  and    $0x300,%eax
  cmp    $0x200,%rax
  je     L961
  jg     L591
  test   %rax,%rax
  je     L983
  cmp    $0x100,%rax
  jne    L46
  mov    $0x1,%esi
  lea    D209(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L46
L613:
  mov    $0x8,%esi
  lea    D352(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L673
L710:
  mov    $0x0,%esi
  lea    D242(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L673
L194:
  mov    $0x0,%esi
  lea    D464(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L1016
L591:
  cmp    $0x300,%rax
  jne    L46
  mov    $0x3,%esi
  lea    D366(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L46:
  test   $0x80,%bl
  je     L721
  mov    $0x8,%esi
  lea    D279(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L512:
  test   $0x40,%bl
  je     L451
  mov    $0x4,%esi
  lea    D133(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L929:
  mov    %rbx,%rax
  and    $0x38,%eax
  lea    D200(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L961:
  mov    $0x2,%esi
  lea    D524(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L46
L983:
  mov    $0x0,%esi
  lea    D668(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L46
L721:
  mov    $0x0,%esi
  lea    D633(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L512
L451:
  mov    $0x0,%esi
  lea    D433(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L929
  mov    $0x38,%esi
  lea    D149(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L558:
  and    $0x7,%ebx
  cmp    $0x5,%rbx
  ja     L423
  lea    D109(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  mov    $0x30,%esi
  lea    D160(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L558
  mov    $0x28,%esi
  lea    D498(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L558
  mov    $0x20,%esi
  lea    D139(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L558
  mov    $0x18,%esi
  lea    D125(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L558
  mov    $0x10,%esi
  lea    D293(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L558
  mov    $0x8,%esi
  lea    D35(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L558
  mov    $0x0,%esi
  lea    D57(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L558
  mov    $0x5,%esi
  lea    D561(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L651:
  pop    %rbx
  ret
  mov    $0x4,%esi
  lea    D183(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L651
  mov    $0x3,%esi
  lea    D298(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L651
  mov    $0x2,%esi
  lea    D530(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L651
  mov    $0x1,%esi
  lea    D177(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L651
  mov    $0x0,%esi
  lea    D174(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L651
L423:
  mov    $0x0,%esi
  lea    D675(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L651
```

tool_calls: name: parse_data
arguments: data_label: D370
datatype: string
name: parse_data
arguments: data_label: D364
datatype: string
name: parse_data
arguments: data_label: D138
datatype: string
name: parse_data
arguments: data_label: D210
datatype: string
name: parse_data
arguments: data_label: D128
datatype: string
name: parse_data
arguments: data_label: D18
datatype: string
name: parse_data
arguments: data_label: D349
datatype: string
name: parse_data
arguments: data_label: D152
datatype: string
name: parse_data
arguments: data_label: D264
datatype: string
name: parse_data
arguments: data_label: D648
datatype: string
name: parse_data
arguments: data_label: D187
datatype: string
name: parse_data
arguments: data_label: D394
datatype: string
name: parse_data
arguments: data_label: D549
datatype: string
name: parse_data
arguments: data_label: D628
datatype: string
name: parse_data
arguments: data_label: D41
datatype: string
name: parse_data
arguments: data_label: D545
datatype: string
name: parse_data
arguments: data_label: D615
datatype: string
name: parse_data
arguments: data_label: D122
datatype: string
name: parse_data
arguments: data_label: D324
datatype: string
name: parse_data
arguments: data_label: D265
datatype: string
name: parse_data
arguments: data_label: D280
datatype: string
name: parse_data
arguments: data_label: D289
datatype: string
name: parse_data
arguments: data_label: D262
datatype: string
name: parse_data
arguments: data_label: D344
datatype: string
name: parse_data
arguments: data_label: D64
datatype: string
name: parse_data
arguments: data_label: D267
datatype: string
name: parse_data
arguments: data_label: D610
datatype: string
name: parse_data
arguments: data_label: D11
datatype: string
name: parse_data
arguments: data_label: D276
datatype: string
name: parse_data
arguments: data_label: D340
datatype: string
name: parse_data
arguments: data_label: D39
datatype: string
name: parse_data
arguments: data_label: D634
datatype: string
name: parse_data
arguments: data_label: D195
datatype: string
name: parse_data
arguments: data_label: D185
datatype: string
name: parse_data
arguments: data_label: D181
datatype: string
name: parse_data
arguments: data_label: D584
datatype: string
name: parse_data
arguments: data_label: D78
datatype: string
name: parse_data
arguments: data_label: D637
datatype: string
name: parse_data
arguments: data_label: D495
datatype: string
name: parse_data
arguments: data_label: D179
datatype: string
name: parse_data
arguments: data_label: D209
datatype: string
name: parse_data
arguments: data_label: D352
datatype: string
name: parse_data
arguments: data_label: D242
datatype: string
name: parse_data
arguments: data_label: D464
datatype: string
name: parse_data
arguments: data_label: D366
datatype: string
name: parse_data
arguments: data_label: D279
datatype: string
name: parse_data
arguments: data_label: D133
datatype: string
name: parse_data
arguments: data_label: D524
datatype: string
name: parse_data
arguments: data_label: D668
datatype: string
name: parse_data
arguments: data_label: D633
datatype: string
name: parse_data
arguments: data_label: D433
datatype: string
name: parse_data
arguments: data_label: D149
datatype: string
name: parse_data
arguments: data_label: D160
datatype: string
name: parse_data
arguments: data_label: D498
datatype: string
name: parse_data
arguments: data_label: D139
datatype: string
name: parse_data
arguments: data_label: D125
datatype: string
name: parse_data
arguments: data_label: D293
datatype: string
name: parse_data
arguments: data_label: D35
datatype: string
name: parse_data
arguments: data_label: D57
datatype: string
name: parse_data
arguments: data_label: D561
datatype: string
name: parse_data
arguments: data_label: D183
datatype: string
name: parse_data
arguments: data_label: D298
datatype: string
name: parse_data
arguments: data_label: D530
datatype: string
name: parse_data
arguments: data_label: D177
datatype: string
name: parse_data
arguments: data_label: D174
datatype: string
name: parse_data
arguments: data_label: D675
datatype: string

tool: D370:  BF1DEVCFG1 = 0x%08X


tool: D364:                 %01x        Deadman Timer enabled and CANNOT be disabled in SW


tool: D138:                 %02x       Deadman Timer Count Select: RESERVED


tool: D210:                  %01x       Watchdog Timer Window Size 50%%


tool: D128:  BF2DEVCFG1 = 0x%08X


tool: D18:                 %01x        Deadman Timer disabled and can be enabled in SW


tool: D349:                 %02x       Deadman Timer Count Select: 2^%d (%d)


tool: D152:                  %01x       Watchdog Timer Window Size 25%%


tool: D264:                   %01x      Watchdog timer is enabled, CANNOT be disabled in SW


tool: D648:                   %01x      Watchdog timer is in non-window mode


tool: D187:                   %01x      Watchdog timer stops during Flash programming


tool: D394:                   %02x     Watchdog Timer Postscale 1:512


tool: D549:                  %01x       Watchdog Timer Window Size 37.5%%


tool: D628:                  %01x       Watchdog Timer Window Size 75%%


tool: D41:                   %01x      Watchdog Timer disabled and can be enabled in SW


tool: D545:                   %01x      Watchdog Timer is in window mode


tool: D615:                   %01x      Watchdog Timer runs during Flash programming


tool: D122:                   %02x     Watchdog Timer Postscale 1:16


tool: D324:                   %02x     Watchdog Timer Postscale 1:2


tool: D265:                   %02x     Watchdog Timer Postscale 1:128


tool: D280:                   %02x     Watchdog Timer Postscale 1:524288


tool: D289:                     %01x    Clock switching enabled, clock monitoring disabled


tool: D262:                   %02x     Watchdog Timer Postscale 1:16384


tool: D344:                   %02x     Watchdog Timer Postscale 1:4096


tool: D64:                   %02x     Watchdog Timer Postscale 1:131072


tool: D267:                   %02x     Watchdog Timer Postscale 1:262144


tool: D610:                   %02x     Watchdog Timer Postscale 1:65536


tool: D11:                   %02x     Watchdog Timer Postscale 1:32768


tool: D276:                   %02x     Watchdog Timer Postscale 1:8192


tool: D340:                   %02x     Watchdog Timer Postscale 1:2048


tool: D39:                   %02x     Watchdog Timer Postscale 1:1024


tool: D634:                   %02x     Watchdog Timer Postscale 1:256


tool: D195:                   %02x     Watchdog Timer Postscale 1:64


tool: D185:                   %02x     Watchdog Timer Postscale 1:32


tool: D181:                   %02x     Watchdog Timer Postscale 1:8


tool: D584:                   %02x     Watchdog Timer Postscale 1:4


tool: D78:                   %02x     Watchdog Timer Postscale 1:1


tool: D637:                   %02x     Watchdog Timer Postscale 1:1048579


tool: D495:                     %01x    Clock switching enabled, clock monitoring enabled


tool: D179:                      %01x   CLKO output disabled


tool: D209:                      %01x   POSC - RESERVED setting


tool: D352:                     %01x    Clock switching disabled, clock monitoring enabled


tool: D242:                     %01x    Clock switching disabled, clock monitoring disabled


tool: D464:                      %01x   CLKO output active on OSC2


tool: D366:                      %01x   POSC disabled


tool: D279:                       %01x  Internal External Switchover enabled


tool: D133:                       %01x  SOSC enabled


tool: D524:                      %01x   POSC set to HS Oscillator mode


tool: D668:                      %01x   POSC set to EC mode


tool: D633:                       %01x  Internal External Switchover disabled


tool: D433:                       %01x  SOSC disabled


tool: D149:                       %02x Deadman Timer Window is 127/128 counter value


tool: D160:                       %02x Deadman Timer Window is 63/64 counter value


tool: D498:                       %02x Deadman Timer Window is 31/32 counter value


tool: D139:                       %02x Deadman Timer Window is 15/16 counter value


tool: D125:                       %02x Deadman Timer Window is 7/8 counter value


tool: D293:                       %02x Deadman Timer Window is 3/4 counter value


tool: D35:                       %02x Deadman Timer Window is 1/2 counter value


tool: D57:                       %02x Deadman Timer Window value is 0


tool: D561:                        %01x LPRC selected as Oscillator


tool: D183:                        %01x SOSC selected as Oscillator


tool: D298:                        %01x USB PLL selected as Oscillator


tool: D530:                        %01x POSC selected as Oscillator


tool: D177:                        %01x System PLL selected as Oscillator


tool: D174:                        %01x FRC + divider selected as Oscillator


tool: D675:                        %01x RESERVED bit selected for Oscillator


assistant: ```c
void print_mk_devcfg1(uint32_t devcfg1, uint32_t alternate) {
  if (0 == alternate) {
    printf(" BF1DEVCFG1 = 0x%08X\n", devcfg1);
  } else {
    printf(" BF2DEVCFG1 = 0x%08X\n", devcfg1);
  }
  if (devcfg1 & 0x80000000) {
    printf("                %01x        Deadman Timer enabled and CANNOT be disabled in SW\n", 0x80000000 >> 28);
  } else {
    printf("                %01x        Deadman Timer disabled and can be enabled in SW\n", 0);
  }
  if (((devcfg1 & 0x7C000000) >> 26) > (31 - 8)) {
    printf("                %02x       Deadman Timer Count Select: RESERVED\n", (devcfg1 & 0x7C000000) >> 24);
  } else {
    printf("                %02x       Deadman Timer Count Select: 2^%d (%d)\n", (devcfg1 & 0x7C000000) >> 24, 8 + ((devcfg1 & 0x7C000000) >> 26), 1 << (8 + ((devcfg1 & 0x7C000000) >> 26)));
  }
  switch (devcfg1 & 0x03000000) {
  case 0x03000000:
    printf("                 %01x       Watchdog Timer Window Size 25%%\n", (devcfg1 & 0x03000000) >> 24);
    break;
  case 0x02000000:
    printf("                 %01x       Watchdog Timer Window Size 37.5%%\n", (devcfg1 & 0x03000000) >> 24);
    break;
  case 0x01000000:
    printf("                 %01x       Watchdog Timer Window Size 50%%\n", (devcfg1 & 0x03000000) >> 24);
    break;
  case 0x00000000:
    printf("                 %01x       Watchdog Timer Window Size 75%%\n", (devcfg1 & 0x03000000) >> 24);
    break;
  }
  if (devcfg1 & 0x00800000) {
    printf("                  %01x      Watchdog timer is enabled, CANNOT be disabled in SW\n", 0x00800000 >> 20);
  } else {
    printf("                  %01x      Watchdog Timer disabled and can be enabled in SW\n", 0);
  }
  if (devcfg1 & 0x00400000) {
    printf("                  %01x      Watchdog timer is in non-window mode\n", 0x00400000 >> 20);
  } else {
    printf("                  %01x      Watchdog Timer is in window mode\n", 0);
  }
  if (devcfg1 & 0x00200000) {
    printf("                  %01x      Watchdog timer stops during Flash programming\n", 0x00200000 >> 20);
  } else {
    printf("                  %01x      Watchdog Timer runs during Flash programming\n", 0);
  }
  switch (devcfg1 & 0x001F0000) {
  case 0x00130000:
    printf("                  %02x     Watchdog Timer Postscale 1:524288\n", 0x00140000 >> 16);
    break;
  case 0x00120000:
    printf("                  %02x     Watchdog Timer Postscale 1:262144\n", 0x00120000 >> 16);
    break;
  case 0x00110000:
    printf("                  %02x     Watchdog Timer Postscale 1:131072\n", 0x00110000 >> 16);
    break;
  case 0x00100000:
    printf("                  %02x     Watchdog Timer Postscale 1:65536\n", 0x00100000 >> 16);
    break;
  case 0x000F0000:
    printf("                  %02x     Watchdog Timer Postscale 1:32768\n", 0x000F0000 >> 16);
    break;
  case 0x000E0000:
    printf("                  %02x     Watchdog Timer Postscale 1:16384\n", 0x000E0000 >> 16);
    break;
  case 0x000D0000:
    printf("                  %02x     Watchdog Timer Postscale 1:8192\n", 0x000D0000 >> 16);
    break;
  case 0x000C0000:
    printf("                  %02x     Watchdog Timer Postscale 1:4096\n", 0x000C0000 >> 16);
    break;
  case 0x000B0000:
    printf("                  %02x     Watchdog Timer Postscale 1:2048\n", 0x000B0000 >> 16);
    break;
  case 0x000A0000:
    printf("                  %02x     Watchdog Timer Postscale 1:1024\n", 0x000A0000 >> 16);
    break;
  case 0x00090000:
    printf("                  %02x     Watchdog Timer Postscale 1:512\n", 0x00090000 >> 16);
    break;
  case 0x00080000:
    printf("                  %02x     Watchdog Timer Postscale 1:256\n", 0x00080000 >> 16);
    break;
  case 0x00070000:
    printf("                  %02x     Watchdog Timer Postscale 1:128\n", 0x00070000 >> 16);
    break;
  case 0x00060000:
    printf("                  %02x     Watchdog Timer Postscale 1:64\n", 0x00060000 >> 16);
    break;
  case 0x00050000:
    printf("                  %02x     Watchdog Timer Postscale 1:32\n", 0x00050000 >> 16);
    break;
  case 0x00040000:
    printf("                  %02x     Watchdog Timer Postscale 1:16\n", 0x00040000 >> 16);
    break;
  case 0x00030000:
    printf("                  %02x     Watchdog Timer Postscale 1:8\n", 0x00030000 >> 16);
    break;
  case 0x00020000:
    printf("                  %02x     Watchdog Timer Postscale 1:4\n", 0x00020000 >> 16);
    break;
  case 0x00010000:
    printf("                  %02x     Watchdog Timer Postscale 1:2\n", 0x00010000 >> 16);
    break;
  case 0x00000000:
    printf("                  %02x     Watchdog Timer Postscale 1:1\n", 0x00000000 >> 16);
    break;
  case 0x00140000:
  default:
    printf("                  %02x     Watchdog Timer Postscale 1:1048579\n", 0x00140000 >> 16);
    break;
  }
  switch (devcfg1 & 0x0000C000) {
  case 0x0000C000:
    printf("                    %01x    Clock switching enabled, clock monitoring enabled\n", 0x0000C000 >> 12);
    break;
  case 0x00008000:
    printf("                    %01x    Clock switching disabled, clock monitoring enabled\n", 0x00008000 >> 12);
    break;
  case 0x00004000:
    printf("                    %01x    Clock switching enabled, clock monitoring disabled\n", 0x00004000 >> 12);
    break;
  case 0x00000000:
    printf("                    %01x    Clock switching disabled, clock monitoring disabled\n", 0x00000000 >> 12);
    break;
  }
  if (devcfg1 & 0x00000400) {
    printf("                     %01x   CLKO output disabled\n", 0x00000400 >> 8);
  } else {
    printf("                     %01x   CLKO output active on OSC2\n", 0);
  }
  switch (devcfg1 & 0x00000300) {
  case 0x00000300:
    printf("                     %01x   POSC disabled\n", 0x00000300 >> 8);
    break;
  case 0x00000200:
    printf("                     %01x   POSC set to HS Oscillator mode\n", 0x00000200 >> 8);
    break;
  case 0x00000100:
    printf("                     %01x   POSC - RESERVED setting\n", 0x00000100 >> 8);
    break;
  case 0x00000000:
    printf("                     %01x   POSC set to EC mode\n", 0x00000000 >> 8);
    break;
  }
  if (devcfg1 & 0x00000080) {
    printf("                      %01x  Internal External Switchover enabled\n", 0x00000080 >> 4);
  } else {
    printf("                      %01x  Internal External Switchover disabled\n", 0);
  }
  if (devcfg1 & 0x00000040) {
    printf("                      %01x  SOSC enabled\n", 0x00000040 >> 4);
  } else {
    printf("                      %01x  SOSC disabled\n", 0);
  }
  switch (devcfg1 & 0x00000038) {
  case 0x00000038:
    printf("                      %02x Deadman Timer Window is 127/128 counter value\n", 0x00000038);
    break;
  case 0x00000030:
    printf("                      %02x Deadman Timer Window is 63/64 counter value\n", 0x00000030);
    break;
  case 0x00000028:
    printf("                      %02x Deadman Timer Window is 31/32 counter value\n", 0x00000028);
    break;
  case 0x00000020:
    printf("                      %02x Deadman Timer Window is 15/16 counter value\n", 0x00000020);
    break;
  case 0x00000018:
    printf("                      %02x Deadman Timer Window is 7/8 counter value\n", 0x00000018);
    break;
  case 0x00000010:
    printf("                      %02x Deadman Timer Window is 3/4 counter value\n", 0x00000010);
    break;
  case 0x00000008:
    printf("                      %02x Deadman Timer Window is 1/2 counter value\n", 0x00000008);
    break;
  case 0x00000000:
    printf("                      %02x Deadman Timer Window value is 0\n", 0x00000000);
    break;
  }
  switch (devcfg1 & 0x00000007) {
  case 0x00000005:
    printf("                       %01x LPRC selected as Oscillator\n", 0x00000005);
    break;
  case 0x00000004:
    printf("                       %01x SOSC selected as Oscillator\n", 0x00000004);
    break;
  case 0x00000003:
    printf("                       %01x USB PLL selected as Oscillator\n", 0x00000003);
    break;
  case 0x00000002:
    printf("                       %01x POSC selected as Oscillator\n", 0x00000002);
    break;
  case 0x00000001:
    printf("                       %01x System PLL selected as Oscillator\n", 0x00000001);
    break;
  case 0x00000000:
    printf("                       %01x FRC + divider selected as Oscillator\n", 0x00000000);
    break;
  default:
    printf("                       %01x RESERVED bit selected for Oscillator\n", 0x00000000);
    break;
  }
}
```