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

```asm
<main>:
  endbr64
  push   %r12
  push   %rbp
  sub    $0x28,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  lea    0x4(%rsp),%rbp
  lea    0x8(%rsp),%r12
  call   <__globinit_primemod@plt>
  mov    $0x5,%esi
  mov    $0x60,%edi
  call   <__CrestCall@plt>
  mov    $0x5491,%edx
  xor    %esi,%esi
  mov    $0x61,%edi
  call   <__CrestLoad@plt>
  mov    %rbp,%rsi
  mov    $0x62,%edi
  call   <__CrestStore@plt>
  mov    $0x7d4d7,%edx
  xor    %esi,%esi
  mov    $0x63,%edi
  movl   $0x5491,0x4(%rsp)
  call   <__CrestLoad@plt>
  mov    %r12,%rsi
  mov    $0x64,%edi
  call   <__CrestStore@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  movl   $0x7d4d7,0x8(%rsp)
  call   <swap@plt>
  mov    $0x65,%edi
  call   <__CrestClearStack@plt>
  movslq 0x4(%rsp),%rdx
  mov    %rbp,%rsi
  mov    $0x66,%edi
  lea    0xc(%rsp),%rbp
  call   <__CrestLoad@plt>
  mov    0x4(%rsp),%edi
  call   <prime@plt>
  mov    $0x68,%edi
  movslq %eax,%rsi
  mov    %eax,0xc(%rsp)
  call   <__CrestHandleReturn@plt>
  mov    %rbp,%rsi
  mov    $0x67,%edi
  call   <__CrestStore@plt>
  movslq 0xc(%rsp),%rdx
  mov    %rbp,%rsi
  mov    $0x6b,%edi
  lea    0x14(%rsp),%rbp
  call   <__CrestLoad@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x6a,%edi
  call   <__CrestLoad@plt>
  mov    0xc(%rsp),%eax
  xor    %edx,%edx
  mov    $0xd,%esi
  mov    $0x69,%edi
  test   %eax,%eax
  setne  %dl
  call   <__CrestApply2@plt>
  mov    0xc(%rsp),%edx
  test   %edx,%edx
  je     L17
  mov    $0x1,%edx
  mov    $0x23,%esi
  mov    $0x6c,%edi
  call   <__CrestBranch@plt>
  movslq 0x8(%rsp),%rdx
  mov    %r12,%rsi
  mov    $0x6e,%edi
  lea    0x10(%rsp),%r12
  call   <__CrestLoad@plt>
  mov    0x8(%rsp),%edi
  call   <prime@plt>
  mov    $0x70,%edi
  movslq %eax,%rsi
  mov    %eax,0x10(%rsp)
  call   <__CrestHandleReturn@plt>
  mov    %r12,%rsi
  mov    $0x6f,%edi
  call   <__CrestStore@plt>
  movslq 0x10(%rsp),%rdx
  mov    %r12,%rsi
  mov    $0x73,%edi
  call   <__CrestLoad@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x72,%edi
  call   <__CrestLoad@plt>
  xor    %edx,%edx
  cmpl   $0x0,0x10(%rsp)
  mov    $0xd,%esi
  setne  %dl
  mov    $0x71,%edi
  call   <__CrestApply2@plt>
  cmpl   $0x0,0x10(%rsp)
  je     L6
  mov    $0x1,%edx
  mov    $0x25,%esi
  mov    $0x74,%edi
  call   <__CrestBranch@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x76,%edi
  call   <__CrestLoad@plt>
  mov    %rbp,%rsi
  mov    $0x77,%edi
  call   <__CrestStore@plt>
  xor    %edx,%edx
  jmp    L39
L17:
  xor    %edx,%edx
  mov    $0x27,%esi
  mov    $0x6d,%edi
  call   <__CrestBranch@plt>
  mov    $0x1,%edx
  xor    %esi,%esi
  mov    $0x7a,%edi
  call   <__CrestLoad@plt>
  mov    %rbp,%rsi
  mov    $0x7b,%edi
  call   <__CrestStore@plt>
  mov    $0x1,%edx
L39:
  mov    %rbp,%rsi
  mov    $0x7c,%edi
  mov    %edx,0x14(%rsp)
  call   <__CrestLoad@plt>
  mov    $0x7d,%edi
  call   <__CrestReturn@plt>
  mov    0x14(%rsp),%eax
  mov    0x18(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L33
  add    $0x28,%rsp
  pop    %rbp
  pop    %r12
  ret
L6:
  xor    %edx,%edx
  mov    $0x26,%esi
  mov    $0x75,%edi
  call   <__CrestBranch@plt>
  mov    $0x1,%edx
  xor    %esi,%esi
  mov    $0x78,%edi
  call   <__CrestLoad@plt>
  mov    %rbp,%rsi
  mov    $0x79,%edi
  call   <__CrestStore@plt>
  mov    $0x1,%edx
  jmp    L39
L33:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
int main(void) {
  int x;
  int y;
  int tmp;
  int tmp___0;
  int tmp___1;
  {
    __globinit_primemod();
    __CrestCall(96, 5);
    __CrestLoad(97, (unsigned long)0, (long long)21649);
    __CrestStore(98, (unsigned long)(&x));
    x = 21649;
    __CrestLoad(99, (unsigned long)0, (long long)513239);
    __CrestStore(100, (unsigned long)(&y));
    y = 513239;
    swap(&x, &y);
    __CrestClearStack(101);
    __CrestLoad(102, (unsigned long)(&x), (long long)x);
    tmp = prime(x);
    __CrestHandleReturn(104, (long long)tmp);
    __CrestStore(103, (unsigned long)(&tmp));
    __CrestLoad(107, (unsigned long)(&tmp), (long long)tmp);
    __CrestLoad(106, (unsigned long)0, (long long)0);
    __CrestApply2(105, 13, (long long)(tmp != 0));
    if (tmp != 0) {
      __CrestBranch(108, 35, 1);
      __CrestLoad(110, (unsigned long)(&y), (long long)y);
      tmp___0 = prime(y);
      __CrestHandleReturn(112, (long long)tmp___0);
      __CrestStore(111, (unsigned long)(&tmp___0));
      {
        __CrestLoad(115, (unsigned long)(&tmp___0), (long long)tmp___0);
        __CrestLoad(114, (unsigned long)0, (long long)0);
        __CrestApply2(113, 13, (long long)(tmp___0 != 0));
        if (tmp___0 != 0) {
          __CrestBranch(116, 37, 1);
          __CrestLoad(118, (unsigned long)0, (long long)0);
          __CrestStore(119, (unsigned long)(&tmp___1));
          tmp___1 = 0;
        } else {
          __CrestBranch(117, 38, 0);
          __CrestLoad(120, (unsigned long)0, (long long)1);
          __CrestStore(121, (unsigned long)(&tmp___1));
          tmp___1 = 1;
        }
      }
    } else {
      __CrestBranch(109, 39, 0);
      __CrestLoad(122, (unsigned long)0, (long long)1);
      __CrestStore(123, (unsigned long)(&tmp___1));
      tmp___1 = 1;
    }
    __CrestLoad(124, (unsigned long)(&tmp___1), (long long)tmp___1);
    __CrestReturn(125);
    return (tmp___1);
  }
}
```