user: Translate the below assembly code into C programming language:

```asm
<print_mk_devcfg1>:
  endbr64
  push   %rbp
  mov    %rsi,%r8
  mov    %edi,%esi
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x8,%rsp
  test   %r8,%r8
  jne    L239
  xor    %eax,%eax
  lea    D486(%rip),%rdi
  call   <printf@plt>
  test   $0x80000000,%ebx
  je     L831
L483:
  mov    $0x8,%esi
  lea    D446(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L527:
  mov    %rbx,%rdx
  mov    %rbx,%rbp
  sar    $0x1a,%rdx
  sar    $0x18,%rbp
  mov    %ebp,%esi
  and    $0x1f,%edx
  and    $0x7c,%esi
  cmp    $0x17,%rdx
  jle    L113
  lea    D494(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbx,%rax
  and    $0x3000000,%eax
  cmp    $0x2000000,%rax
  je     L95
L365:
  jg     L768
  test   %rax,%rax
  je     L416
  cmp    $0x1000000,%rax
  jne    L20
  mov    %ebp,%esi
  lea    D668(%rip),%rdi
  xor    %eax,%eax
  and    $0x3,%esi
  call   <printf@plt>
L20:
  test   $0x800000,%ebx
  je     L150
L40:
  xor    %eax,%eax
  mov    $0x8,%esi
  lea    D406(%rip),%rdi
  call   <printf@plt>
  test   $0x400000,%ebx
  je     L677
L112:
  xor    %eax,%eax
  mov    $0x4,%esi
  lea    D491(%rip),%rdi
  call   <printf@plt>
  test   $0x200000,%ebx
  je     L931
L444:
  mov    $0x2,%esi
  lea    D587(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L454:
  mov    %rbx,%rax
  and    $0x1f0000,%eax
  cmp    $0xa0000,%rax
  je     L704
  jg     L353
  cmp    $0x50000,%rax
  je     L321
  jle    L165
  cmp    $0x80000,%rax
  je     L449
  jle    L886
  cmp    $0x90000,%rax
  jne    L405
  mov    $0x9,%esi
  lea    D355(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xchg   %ax,%ax
L858:
  mov    %rbx,%rax
  and    $0xc000,%eax
  cmp    $0x8000,%rax
  je     L629
  jg     L763
  test   %rax,%rax
  je     L609
  cmp    $0x4000,%rax
  jne    L203
  mov    $0x4,%esi
  lea    D367(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L203:
  test   $0x4,%bh
  jne    L578
L143:
  xor    %esi,%esi
  lea    D326(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbx,%rax
  and    $0x300,%eax
  cmp    $0x200,%rax
  je     L402
L176:
  jg     L617
  test   %rax,%rax
  je     L44
  cmp    $0x100,%rax
  jne    L744
  mov    $0x1,%esi
  lea    D515(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L744:
  test   $0x80,%bl
  je     L462
L66:
  xor    %eax,%eax
  mov    $0x8,%esi
  lea    D388(%rip),%rdi
  call   <printf@plt>
  test   $0x40,%bl
  je     L626
L842:
  mov    $0x4,%esi
  lea    D384(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L547:
  mov    %rbx,%rax
  lea    D93(%rip),%rdx
  and    $0x38,%eax
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
L763:
  cmp    $0xc000,%rax
  jne    L203
  xor    %eax,%eax
  mov    $0xc,%esi
  lea    D548(%rip),%rdi
  call   <printf@plt>
  test   $0x4,%bh
  je     L143
L578:
  mov    $0x4,%esi
  lea    D414(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbx,%rax
  and    $0x300,%eax
  cmp    $0x200,%rax
  jne    L176
L402:
  xor    %eax,%eax
  mov    $0x2,%esi
  lea    D528(%rip),%rdi
  call   <printf@plt>
  test   $0x80,%bl
  jne    L66
L462:
  xor    %esi,%esi
  xor    %eax,%eax
  lea    D179(%rip),%rdi
  call   <printf@plt>
  test   $0x40,%bl
  jne    L842
L626:
  xor    %esi,%esi
  lea    D509(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L547
L886:
  cmp    $0x60000,%rax
  je     L867
  cmp    $0x70000,%rax
  jne    L405
  mov    $0x7,%esi
  lea    D92(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax)
L165:
  cmp    $0x20000,%rax
  je     L25
  jle    L213
  cmp    $0x30000,%rax
  je     L873
  cmp    $0x40000,%rax
  jne    L405
  mov    $0x4,%esi
  lea    D359(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopw   0x0(%rax,%rax,1)
L353:
  cmp    $0xf0000,%rax
  je     L942
  jle    L41
  cmp    $0x120000,%rax
  je     L480
  jle    L0
  cmp    $0x130000,%rax
  jne    L405
  mov    $0x14,%esi
  lea    D311(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L768:
  cmp    $0x3000000,%rax
  jne    L20
  mov    %ebp,%esi
  xor    %eax,%eax
  lea    D601(%rip),%rdi
  and    $0x3,%esi
  call   <printf@plt>
  test   $0x800000,%ebx
  jne    L40
L150:
  xor    %esi,%esi
  xor    %eax,%eax
  lea    D466(%rip),%rdi
  call   <printf@plt>
  test   $0x400000,%ebx
  jne    L112
L677:
  xor    %esi,%esi
  xor    %eax,%eax
  lea    D251(%rip),%rdi
  call   <printf@plt>
  test   $0x200000,%ebx
  jne    L444
L931:
  xor    %esi,%esi
  lea    D626(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L454
L213:
  test   %rax,%rax
  je     L273
  cmp    $0x10000,%rax
  jne    L405
  mov    $0x1,%esi
  lea    D357(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   (%rax)
L0:
  cmp    $0x100000,%rax
  je     L133
  cmp    $0x110000,%rax
  jne    L405
  mov    $0x11,%esi
  lea    D647(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L41:
  cmp    $0xd0000,%rax
  je     L275
  jle    L420
  cmp    $0xe0000,%rax
  jne    L405
  mov    $0xe,%esi
  lea    D20(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopw   0x0(%rax,%rax,1)
L420:
  cmp    $0xb0000,%rax
  je     L650
  cmp    $0xc0000,%rax
  jne    L405
  mov    $0xc,%esi
  lea    D374(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
  xor    %esi,%esi
  lea    D517(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L930:
  and    $0x7,%ebx
  cmp    $0x5,%rbx
  ja     L556
  lea    D592(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  xchg   %ax,%ax
L617:
  cmp    $0x300,%rax
  jne    L744
  mov    $0x3,%esi
  lea    D346(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L744
  nopl   0x0(%rax)
L113:
  lea    0x8(%rdx),%ecx
  mov    $0x1,%eax
  add    $0x8,%rdx
  shl    %cl,%eax
  lea    D172(%rip),%rdi
  mov    %eax,%ecx
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbx,%rax
  and    $0x3000000,%eax
  cmp    $0x2000000,%rax
  jne    L365
L95:
  mov    %ebp,%esi
  lea    D629(%rip),%rdi
  xor    %eax,%eax
  and    $0x3,%esi
  call   <printf@plt>
  jmp    L20
  nopw   0x0(%rax,%rax,1)
L239:
  xor    %eax,%eax
  lea    D505(%rip),%rdi
  call   <printf@plt>
  test   $0x80000000,%ebx
  jne    L483
L831:
  xor    %esi,%esi
  lea    D435(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L527
  nopw   0x0(%rax,%rax,1)
L416:
  mov    %ebp,%esi
  lea    D241(%rip),%rdi
  xor    %eax,%eax
  and    $0x3,%esi
  call   <printf@plt>
  jmp    L20
  nopl   0x0(%rax,%rax,1)
  add    $0x8,%rsp
  mov    $0x4,%esi
  lea    D293(%rip),%rdi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  jmp    1050 <printf@plt>
  nopl   0x0(%rax)
  add    $0x8,%rsp
  mov    $0x3,%esi
  lea    D602(%rip),%rdi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  jmp    1050 <printf@plt>
  nopl   0x0(%rax)
  add    $0x8,%rsp
  mov    $0x2,%esi
  lea    D295(%rip),%rdi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  jmp    1050 <printf@plt>
  nopl   0x0(%rax)
  add    $0x8,%rsp
  mov    $0x1,%esi
  lea    D234(%rip),%rdi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  jmp    1050 <printf@plt>
  nopl   0x0(%rax)
  add    $0x8,%rsp
  xor    %esi,%esi
  lea    D645(%rip),%rdi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  jmp    1050 <printf@plt>
  cs nopw 0x0(%rax,%rax,1)
  add    $0x8,%rsp
  mov    $0x5,%esi
  lea    D622(%rip),%rdi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  jmp    1050 <printf@plt>
  nopl   0x0(%rax)
  mov    $0x38,%esi
  lea    D566(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L930
  nopl   0x0(%rax,%rax,1)
  mov    $0x30,%esi
  lea    D475(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L930
  nopl   0x0(%rax,%rax,1)
  mov    $0x28,%esi
  lea    D169(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L930
  nopl   0x0(%rax,%rax,1)
  mov    $0x20,%esi
  lea    D627(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L930
  nopl   0x0(%rax,%rax,1)
  mov    $0x18,%esi
  lea    D478(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L930
  nopl   0x0(%rax,%rax,1)
  mov    $0x10,%esi
  lea    D659(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L930
  nopl   0x0(%rax,%rax,1)
  mov    $0x8,%esi
  lea    D575(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L930
  nopl   0x0(%rax,%rax,1)
L629:
  mov    $0x8,%esi
  lea    D378(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L203
  nopl   0x0(%rax,%rax,1)
L609:
  xor    %esi,%esi
  lea    D308(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L203
  nopl   (%rax)
L44:
  xor    %esi,%esi
  lea    D79(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L744
L556:
  add    $0x8,%rsp
  xor    %esi,%esi
  lea    D394(%rip),%rdi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  jmp    1050 <printf@plt>
  nopl   0x0(%rax,%rax,1)
L650:
  mov    $0xb,%esi
  lea    D118(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
L275:
  mov    $0xd,%esi
  lea    D567(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L133:
  mov    $0x10,%esi
  lea    D393(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L273:
  xor    %esi,%esi
  lea    D641(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   (%rax)
L480:
  mov    $0x12,%esi
  lea    D519(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
L942:
  mov    $0xf,%esi
  lea    D332(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L873:
  mov    $0x3,%esi
  lea    D617(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L25:
  mov    $0x2,%esi
  lea    D164(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L867:
  mov    $0x6,%esi
  lea    D618(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L405:
  mov    $0x14,%esi
  lea    D506(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L449:
  mov    $0x8,%esi
  lea    D579(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L321:
  mov    $0x5,%esi
  lea    D246(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L704:
  mov    $0xa,%esi
  lea    D30(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L858
```

tool_calls: name: disassemble_data
arguments: label: D486
data_type: string
name: disassemble_data
arguments: label: D446
data_type: string
name: disassemble_data
arguments: label: D494
data_type: string
name: disassemble_data
arguments: label: D668
data_type: string
name: disassemble_data
arguments: label: D406
data_type: string
name: disassemble_data
arguments: label: D491
data_type: string
name: disassemble_data
arguments: label: D587
data_type: string
name: disassemble_data
arguments: label: D355
data_type: string
name: disassemble_data
arguments: label: D367
data_type: string
name: disassemble_data
arguments: label: D326
data_type: string
name: disassemble_data
arguments: label: D515
data_type: string
name: disassemble_data
arguments: label: D388
data_type: string
name: disassemble_data
arguments: label: D384
data_type: string
name: disassemble_data
arguments: label: D548
data_type: string
name: disassemble_data
arguments: label: D414
data_type: string
name: disassemble_data
arguments: label: D528
data_type: string
name: disassemble_data
arguments: label: D179
data_type: string
name: disassemble_data
arguments: label: D509
data_type: string
name: disassemble_data
arguments: label: D92
data_type: string
name: disassemble_data
arguments: label: D359
data_type: string
name: disassemble_data
arguments: label: D311
data_type: string
name: disassemble_data
arguments: label: D601
data_type: string
name: disassemble_data
arguments: label: D466
data_type: string
name: disassemble_data
arguments: label: D251
data_type: string
name: disassemble_data
arguments: label: D626
data_type: string
name: disassemble_data
arguments: label: D357
data_type: string
name: disassemble_data
arguments: label: D647
data_type: string
name: disassemble_data
arguments: label: D20
data_type: string
name: disassemble_data
arguments: label: D374
data_type: string
name: disassemble_data
arguments: label: D517
data_type: string
name: disassemble_data
arguments: label: D346
data_type: string
name: disassemble_data
arguments: label: D172
data_type: string
name: disassemble_data
arguments: label: D629
data_type: string
name: disassemble_data
arguments: label: D505
data_type: string
name: disassemble_data
arguments: label: D435
data_type: string
name: disassemble_data
arguments: label: D241
data_type: string
name: disassemble_data
arguments: label: D293
data_type: string
name: disassemble_data
arguments: label: D602
data_type: string
name: disassemble_data
arguments: label: D295
data_type: string
name: disassemble_data
arguments: label: D234
data_type: string
name: disassemble_data
arguments: label: D645
data_type: string
name: disassemble_data
arguments: label: D622
data_type: string
name: disassemble_data
arguments: label: D566
data_type: string
name: disassemble_data
arguments: label: D475
data_type: string
name: disassemble_data
arguments: label: D169
data_type: string
name: disassemble_data
arguments: label: D627
data_type: string
name: disassemble_data
arguments: label: D478
data_type: string
name: disassemble_data
arguments: label: D659
data_type: string
name: disassemble_data
arguments: label: D575
data_type: string
name: disassemble_data
arguments: label: D378
data_type: string
name: disassemble_data
arguments: label: D308
data_type: string
name: disassemble_data
arguments: label: D79
data_type: string
name: disassemble_data
arguments: label: D394
data_type: string
name: disassemble_data
arguments: label: D118
data_type: string
name: disassemble_data
arguments: label: D567
data_type: string
name: disassemble_data
arguments: label: D393
data_type: string
name: disassemble_data
arguments: label: D641
data_type: string
name: disassemble_data
arguments: label: D519
data_type: string
name: disassemble_data
arguments: label: D332
data_type: string
name: disassemble_data
arguments: label: D617
data_type: string
name: disassemble_data
arguments: label: D164
data_type: string
name: disassemble_data
arguments: label: D618
data_type: string
name: disassemble_data
arguments: label: D506
data_type: string
name: disassemble_data
arguments: label: D579
data_type: string
name: disassemble_data
arguments: label: D246
data_type: string
name: disassemble_data
arguments: label: D30
data_type: string

tool: D486:  BF1DEVCFG1 = 0x%08X


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


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


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


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


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


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


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


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


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


tool: D515:                      %01x   POSC - RESERVED setting


tool: D388:                       %01x  Internal External Switchover enabled


tool: D384:                       %01x  SOSC enabled


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


tool: D414:                      %01x   CLKO output disabled


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


tool: D179:                       %01x  Internal External Switchover disabled


tool: D509:                       %01x  SOSC disabled


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


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


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


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


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


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


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


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


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


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


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


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


tool: D346:                      %01x   POSC disabled


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


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


tool: D505:  BF2DEVCFG1 = 0x%08X


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


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


tool: D293:                        %01x SOSC selected as Oscillator


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


tool: D295:                        %01x POSC selected as Oscillator


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


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


tool: D622:                        %01x LPRC selected as Oscillator


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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;
  }
}
```