user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<analyse>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %esi,-0x2c(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x2c(%rbp),%edx
  lea    -0x1c(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <val_curMRIState@plt>
  mov    -0x1c(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <mod_anl@plt>
  mov    -0x2c(%rbp),%edx
  lea    -0x1c(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <val_cptMRIState@plt>
  mov    -0x1c(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <mod_anl@plt>
  mov    -0x2c(%rbp),%edx
  lea    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <cre_sees_uses@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0x1,%eax
  jne    L35
  mov    -0x2c(%rbp),%edx
  lea    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <cre_inc_ipt@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0x1,%eax
  jne    L35
  lea    -0x14(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <val_gset1@plt>
  mov    -0x14(%rbp),%edx
  mov    -0x2c(%rbp),%ecx
  lea    -0x18(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <mod_sees_uses@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0x1,%eax
  jne    L35
  lea    -0x14(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <val_gset2@plt>
  mov    -0x14(%rbp),%edx
  mov    -0x2c(%rbp),%ecx
  lea    -0x18(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <mod_inc_ipt@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0x1,%eax
  jne    L35
  lea    -0x10(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <valIth_gseq@plt>
  mov    -0x10(%rbp),%eax
  cmp    %eax,-0x2c(%rbp)
  je     L56
  mov    -0x10(%rbp),%edx
  lea    -0xc(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <val_abs2conc@plt>
  mov    -0xc(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <cre_abs2conc@plt>
  mov    -0xc(%rbp),%ecx
  mov    -0x2c(%rbp),%edx
  lea    -0x18(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <push_a2c@plt>
  jmp    L35
L56:
  lea    -0xc(%rbp),%rdx
  lea    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <make_Abs2Conc@plt>
  mov    -0xc(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <cre_abs2conc@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0x1,%eax
  jne    L35
  mov    -0xc(%rbp),%ecx
  mov    -0x2c(%rbp),%edx
  lea    -0x18(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <push_a2c@plt>
L35:
  mov    -0x18(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,(%rax)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L61
  call   <__stack_chk_fail@plt>
L61:
  leave
  ret
```

assistant: ```c
void analyse(rep, cc) int *rep, cc;
{
  int st, rr, ss, bb, cc1, ac;
  val_curMRIState(&st, cc);
  mod_anl(st, 1);
  val_cptMRIState(&st, cc);
  mod_anl(st, 1);
  cre_sees_uses(&rr, cc);
  if (rr == 1) {
    cre_inc_ipt(&rr, cc);
    if (rr == 1) {
      val_gset1(&ss);
      mod_sees_uses(&rr, cc, ss);
      if (rr == 1) {
        val_gset2(&ss);
        mod_inc_ipt(&rr, cc, ss);
        if (rr == 1) {
          valIth_gseq(&cc1, 1);
          if (cc1 != cc) {
            val_abs2conc(&ac, cc1);
            cre_abs2conc(cc, ac);
            push_a2c(&rr, ac, cc);
          } else {
            make_Abs2Conc(&rr, &ac);
            cre_abs2conc(cc, ac);
            if (rr == 1) {
              push_a2c(&rr, ac, cc);
            }
          }
        }
      }
    }
  }
  *rep = rr;
}
```