user: 下面的汇编指令对应的C源代码是什么：

```asm
<adcEnable>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  mov    %edx,-0x1c(%rbp)
  mov    %ecx,-0x20(%rbp)
  mov    %r8d,-0x24(%rbp)
  mov    %r9d,-0x28(%rbp)
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <scuUngatePeripheralClock@plt>
  mov    $0x48034008,%eax
  mov    (%rax),%eax
  shr    $0x8,%eax
  cmp    $0x99c0,%eax
  je     L33
  mov    $0x1,%eax
  jmp    L10
L33:
  mov    $0x48034040,%eax
  movl   $0x8002,(%rax)
  nop
L26:
  mov    $0x48034040,%eax
  mov    (%rax),%eax
  and    $0x4000,%eax
  test   %eax,%eax
  jne    L26
  mov    $0x48030000,%eax
  movl   $0x8,(%rax)
  mov    0x30(%rbp),%eax
  or     0x18(%rbp),%eax
  or     0x20(%rbp),%eax
  or     $0x808000,%eax
  mov    %eax,-0x8(%rbp)
  mov    $0x48030200,%edx
  mov    -0x8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x28(%rbp),%eax
  or     0x28(%rbp),%eax
  or     $0x1,%ah
  mov    %eax,-0xc(%rbp)
  cmpl   $0x0,0x18(%rbp)
  je     L38
  orl    $0x4,-0xc(%rbp)
L38:
  mov    $0x48030204,%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,(%rdx)
  mov    $0x48030280,%edx
  mov    -0x1c(%rbp),%eax
  or     -0x20(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x24(%rbp),%eax
  shl    $0x10,%eax
  mov    $0x48030140,%edx
  or     0x10(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x18(%rbp),%eax
  or     -0x14(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x480300a0,%edx
  mov    -0x4(%rbp),%eax
  mov    %eax,(%rdx)
  mov    $0x480300a4,%edx
  mov    -0x4(%rbp),%eax
  mov    %eax,(%rdx)
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <adcCalibrate@plt>
  mov    $0x0,%eax
L10:
  leave
  ret
```

assistant: ```c
unsigned int adcEnable(const unsigned int sample_time, const unsigned int conversion_mode, const unsigned int data_reduction, const unsigned int result_interrupt, const unsigned int result_node, const unsigned int source_interrupt, const unsigned int source_node, const unsigned int trigger_level, const unsigned int trigger_input, const unsigned int gate_enable, const unsigned int gate_input) {
  scuUngatePeripheralClock((1 << 0));
  if ((*((volatile unsigned int *const)(0x48034000 + 0x008))) >> 8 != 0x000099c0) {
    return 1;
  }
  (*((volatile unsigned int *const)(0x48034000 + 0x040))) = (1 << 15) | (1 << 1);
  while ((*((volatile unsigned int *const)(0x48034000 + 0x040))) & (1 << 14)) {
  }
  (*((volatile unsigned int *const)(0x48030000 + 0x000))) = (1 << 3);
  unsigned int brsctrl = ((1 << 23) | gate_input | (1 << 15) | trigger_level | trigger_input);
  (*((volatile unsigned int *const)(0x48030000 + 0x200))) = brsctrl;
  unsigned int brsmr = ((1 << 8) | source_interrupt | gate_enable);
  if (trigger_level != (0x00 << 13)) {
    brsmr |= (1 << 2);
  }
  (*((volatile unsigned int *const)(0x48030000 + 0x204))) = brsmr;
  (*((volatile unsigned int *const)(0x48030000 + 0x280))) = data_reduction | result_interrupt;
  (*((volatile unsigned int *const)(0x48030000 + 0x140))) = (result_node << 16) | source_node;
  unsigned int globiclass = conversion_mode | sample_time;
  (*((volatile unsigned int *const)(0x48030000 + 0x0a0))) = globiclass;
  (*((volatile unsigned int *const)(0x48030000 + 0x0a4))) = globiclass;
  adcCalibrate(1);
  return 0;
}
```