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

```asm
<recharger_act_avoid>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  mov    %edx,-0x1c(%rbp)
  movb   $0x0,-0xd(%rbp)
  mov    -0x14(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x1c(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  movl   $0x0,-0x1c(%rbp)
  mov    -0x1c(%rbp),%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <adcspi_get_output@plt>
  cmp    $0x398,%eax
  jle    L93
  subl   $0xf,-0x14(%rbp)
  movb   $0x1,-0xd(%rbp)
L93:
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <adcspi_get_output@plt>
  cmp    $0x398,%eax
  jle    L109
  subl   $0xf,-0x14(%rbp)
  subl   $0x7,-0x18(%rbp)
  movb   $0x1,-0xd(%rbp)
L109:
  mov    $0x2,%esi
  mov    $0x0,%edi
  call   <adcspi_get_output@plt>
  cmp    $0x398,%eax
  jle    L105
  subl   $0x7,-0x18(%rbp)
  movb   $0x1,-0xd(%rbp)
L105:
  mov    $0x3,%esi
  mov    $0x0,%edi
  call   <adcspi_get_output@plt>
  cmp    $0x398,%eax
  jle    L7
  subl   $0x7,-0x18(%rbp)
  movb   $0x1,-0xd(%rbp)
L7:
  mov    $0x4,%esi
  mov    $0x0,%edi
  call   <adcspi_get_output@plt>
  cmp    $0x398,%eax
  jle    L97
  addl   $0x7,-0x18(%rbp)
  movb   $0x1,-0xd(%rbp)
L97:
  mov    $0x5,%esi
  mov    $0x0,%edi
  call   <adcspi_get_output@plt>
  cmp    $0x398,%eax
  jle    L40
  addl   $0x7,-0x18(%rbp)
  movb   $0x1,-0xd(%rbp)
L40:
  mov    $0x6,%esi
  mov    $0x0,%edi
  call   <adcspi_get_output@plt>
  cmp    $0x398,%eax
  jle    L86
  subl   $0xf,-0x14(%rbp)
  addl   $0x7,-0x18(%rbp)
  movb   $0x1,-0xd(%rbp)
L86:
  mov    $0x7,%esi
  mov    $0x0,%edi
  call   <adcspi_get_output@plt>
  cmp    $0x398,%eax
  jle    L101
  addl   $0x4,-0x1c(%rbp)
  movb   $0x1,-0xd(%rbp)
L101:
  mov    $0x8,%esi
  mov    $0x0,%edi
  call   <adcspi_get_output@plt>
  cmp    $0x398,%eax
  jle    L102
  addl   $0x4,-0x1c(%rbp)
  movb   $0x1,-0xd(%rbp)
L102:
  mov    $0x9,%esi
  mov    $0x0,%edi
  call   <adcspi_get_output@plt>
  cmp    $0x398,%eax
  jle    L36
  addl   $0x7,-0x14(%rbp)
  addl   $0x7,-0x18(%rbp)
  movb   $0x1,-0xd(%rbp)
L36:
  cmpb   $0x0,-0xd(%rbp)
  jne    L21
  mov    -0xc(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
L21:
  mov    -0x1c(%rbp),%edx
  mov    -0x18(%rbp),%ecx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <recharger_act@plt>
  nop
  leave
  ret
```

assistant: ```c
void recharger_act_avoid(int x, int y, int theta) {
  int i;
  int baseX, baseY, baseTheta;
  char hasAvoid = 0;
  baseX = x;
  baseY = y;
  baseTheta = theta;
  x = y = theta = 0;
  if (adcspi_get_output(0, 0) > (230 * 4)) {
    x += (-20 + 5);
    y += 0;
    hasAvoid = 1;
  }
  if (adcspi_get_output(0, 1) > (230 * 4)) {
    x += (-20 + 5);
    y += (-20 + 5) / 2;
    hasAvoid = 1;
  }
  if (adcspi_get_output(0, 2) > (230 * 4)) {
    x += 0;
    y += (-20 + 5) / 2;
    hasAvoid = 1;
  }
  if (adcspi_get_output(0, 3) > (230 * 4)) {
    x += 0;
    y += (-20 + 5) / 2;
    hasAvoid = 1;
  }
  if (adcspi_get_output(0, 4) > (230 * 4)) {
    x += 0;
    y -= (-20 + 5) / 2;
    hasAvoid = 1;
  }
  if (adcspi_get_output(0, 5) > (230 * 4)) {
    x += 0;
    y -= (-20 + 5) / 2;
    hasAvoid = 1;
  }
  if (adcspi_get_output(0, 6) > (230 * 4)) {
    x += (-20 + 5);
    y -= (-20 + 5) / 2;
    hasAvoid = 1;
  }
  if (adcspi_get_output(0, 7) > (230 * 4)) {
    theta += (4);
    hasAvoid = 1;
  }
  if (adcspi_get_output(0, 8) > (230 * 4)) {
    theta += (4);
    hasAvoid = 1;
  }
  if (adcspi_get_output(0, 9) > (230 * 4)) {
    x -= (-20 + 5) / 2;
    y -= (-20 + 5) / 2;
    hasAvoid = 1;
  }
  if (!hasAvoid) {
    x = baseX;
    y = baseY;
    theta = baseTheta;
  }
  recharger_act(x, y, theta);
}
```