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

```asm
<statdefs>:
  endbr64
  mov    (%rdi),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L329
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x28,%rsp
  cmp    $0x28,%eax
  jne    L286
L320:
  movslq 0x4(%rbx),%rbp
  mov    0x0(%rbp),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L82
  cmp    $0x28,%eax
  jne    L132
L1:
  movslq 0x4(%rbp),%r12
  mov    (%r12),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L82
  cmp    $0x28,%eax
  jne    L108
L125:
  movslq 0x4(%r12),%r13
  mov    0x0(%r13),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L82
  cmp    $0x28,%eax
  jne    L22
L141:
  movslq 0x4(%r13),%r14
  mov    (%r14),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L82
  cmp    $0x28,%eax
  jne    L74
L338:
  movslq 0x4(%r14),%r15
  mov    (%r15),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L82
L167:
  cmp    $0x28,%eax
  jne    L102
  movslq 0x4(%r15),%rdx
  mov    (%rdx),%eax
  lea    -0x2c(%rax),%ecx
  cmp    $0x1,%ecx
  jbe    L82
  cmp    $0x28,%eax
  jne    L13
L198:
  movslq 0x4(%rdx),%rcx
  mov    (%rcx),%eax
  lea    -0x2c(%rax),%esi
  cmp    $0x1,%esi
  jbe    L82
  cmp    $0x28,%eax
  jne    L319
L201:
  movslq 0x4(%rcx),%rsi
  mov    (%rsi),%eax
  lea    -0x2c(%rax),%edi
  cmp    $0x1,%edi
  jbe    L82
L107:
  cmp    $0x28,%eax
  jne    L251
  movslq 0x4(%rsi),%rdi
  xor    %eax,%eax
  mov    %rdx,0x18(%rsp)
  mov    %rcx,0x10(%rsp)
  mov    %rsi,0x8(%rsp)
  call   <statdefs>
  test   %eax,%eax
  jne    L82
  mov    0x8(%rsp),%rsi
  mov    0x10(%rsp),%rcx
  mov    0x18(%rsp),%rdx
  movslq 0x8(%rsi),%rsi
  mov    (%rsi),%eax
  lea    -0x2c(%rax),%edi
  cmp    $0x1,%edi
  ja     L107
L82:
  add    $0x28,%rsp
  mov    $0xffffffff,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L102:
  movslq 0x8(%r14),%r14
  mov    (%r14),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L82
  cmp    $0x28,%eax
  je     L338
L74:
  movslq 0x8(%r13),%r13
  mov    0x0(%r13),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L82
  cmp    $0x28,%eax
  je     L141
L22:
  movslq 0x8(%r12),%r12
  mov    (%r12),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L82
  cmp    $0x28,%eax
  je     L125
L108:
  movslq 0x8(%rbp),%rbp
  mov    0x0(%rbp),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L82
  cmp    $0x28,%eax
  je     L1
L132:
  movslq 0x8(%rbx),%rbx
  mov    (%rbx),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  jbe    L82
  cmp    $0x28,%eax
  je     L320
L286:
  add    $0x28,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  xchg   %ax,%ax
L251:
  movslq 0x8(%rcx),%rcx
  mov    (%rcx),%eax
  lea    -0x2c(%rax),%esi
  cmp    $0x1,%esi
  jbe    L82
  cmp    $0x28,%eax
  je     L201
L319:
  movslq 0x8(%rdx),%rdx
  mov    (%rdx),%eax
  lea    -0x2c(%rax),%ecx
  cmp    $0x1,%ecx
  jbe    L82
  cmp    $0x28,%eax
  je     L198
L13:
  movslq 0x8(%r15),%r15
  mov    (%r15),%eax
  lea    -0x2c(%rax),%edx
  cmp    $0x1,%edx
  ja     L167
  jmp    L82
L329:
  mov    $0xffffffff,%eax
  ret
```

assistant: ```c
int statdefs(x)
int *x;
{
  if (0 [x] == 44 || 0 [x] == 45)
    return -1;
  if (0 [x] != 40)
    return 0;
  if (statdefs((int *)1 [x]))
    return -1;
  return statdefs((int *)2 [x]);
}
```