user: Converte this assembly snippet into its equivalent C code:

```asm
<print_mm_fdevopt>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  jne    L26
  mov    -0x8(%rbp),%rax
  mov    %eax,%esi
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L8
L26:
  mov    -0x8(%rbp),%rax
  mov    %eax,%esi
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L8:
  mov    -0x8(%rbp),%rax
  sar    $0x10,%rax
  movzwl %ax,%eax
  mov    %eax,%esi
  lea    D83(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  and    $0x8000,%eax
  test   %rax,%rax
  je     L60
  mov    $0x8,%esi
  lea    D79(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L37
L60:
  mov    $0x0,%esi
  lea    D73(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L37:
  mov    -0x8(%rbp),%rax
  and    $0x4000,%eax
  test   %rax,%rax
  je     L82
  mov    $0x4,%esi
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L21
L82:
  mov    $0x0,%esi
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L21:
  mov    -0x8(%rbp),%rax
  and    $0x10,%eax
  test   %rax,%rax
  je     L1
  mov    $0x1,%esi
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L45
L1:
  mov    $0x0,%esi
  lea    D65(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L45:
  mov    -0x8(%rbp),%rax
  and    $0x8,%eax
  test   %rax,%rax
  je     L18
  mov    $0x8,%esi
  lea    D108(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L17
L18:
  mov    $0x0,%esi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L17:
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: label: D17
datatype: string
name: retrieve_data
arguments: label: D1
datatype: string
name: retrieve_data
arguments: label: D83
datatype: string
name: retrieve_data
arguments: label: D79
datatype: string
name: retrieve_data
arguments: label: D73
datatype: string
name: retrieve_data
arguments: label: D100
datatype: string
name: retrieve_data
arguments: label: D78
datatype: string
name: retrieve_data
arguments: label: D47
datatype: string
name: retrieve_data
arguments: label: D65
datatype: string
name: retrieve_data
arguments: label: D108
datatype: string
name: retrieve_data
arguments: label: D70
datatype: string

tool: D17:     FDEVOPT = 0x%08X


tool: D1:    AFDEVOPT = 0x%08X


tool: D83:               0x%04X     USERID


tool: D79:                     %01x    VBUSON pin: controlled by USB (GPM series only)


tool: D73:                     %01x    VBUSON pin: controlled by port function (GPM series only)


tool: D100:                     %01x    USBID pin: controlled by USB (GPM series only)


tool: D78:                     %01x    USBID pin: controlled by port function (GPM series only)


tool: D47:                       %01x  I2C1 is on pins RB8 & RB9 (GPM series only)


tool: D65:                       %01x  I2C1 is on alt. pins, RB5 & RC9 (GPM series only)


tool: D108:                        %01x SOSC normal power mode


tool: D70:                        %01x SOSC High power mode


assistant: ```c
void print_mm_fdevopt(uint32_t fdevopt, uint32_t alternate) {
  if (0 == alternate) {
    printf("    FDEVOPT = 0x%08X\n", fdevopt);
  } else {
    printf("   AFDEVOPT = 0x%08X\n", fdevopt);
  }
  printf("              0x%04X     USERID\n", (fdevopt & 0xffff0000) >> 16);
  if (fdevopt & 0x00008000) {
    printf("                    %01x    VBUSON pin: controlled by USB (GPM series only)\n", 0x00008000 >> 12);
  } else {
    printf("                    %01x    VBUSON pin: controlled by port function (GPM series only)\n", 0);
  }
  if (fdevopt & 0x00004000) {
    printf("                    %01x    USBID pin: controlled by USB (GPM series only)\n", 0x00004000 >> 12);
  } else {
    printf("                    %01x    USBID pin: controlled by port function (GPM series only)\n", 0);
  }
  if (fdevopt & 0x00000010) {
    printf("                      %01x  I2C1 is on pins RB8 & RB9 (GPM series only)\n", 0x00000010 >> 4);
  } else {
    printf("                      %01x  I2C1 is on alt. pins, RB5 & RC9 (GPM series only)\n", 0);
  }
  if (fdevopt & 0x00000008) {
    printf("                       %01x SOSC normal power mode\n", 0x00000008);
  } else {
    printf("                       %01x SOSC High power mode\n", 0);
  }
}
```