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

```asm
<is_prime>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbx
  cmp    $0x62,%rdi
  jle    L286
  mov    $0x0,%eax
  test   $0x1,%dil
  je     L10
  movabs $0x5555555555555556,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdi,%rcx
  sar    $0x3f,%rcx
  mov    %rdx,%rax
  sub    %rcx,%rax
  lea    (%rax,%rax,2),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x6666666666666667,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdx,%rax
  sar    %rax
  sub    %rcx,%rax
  lea    (%rax,%rax,4),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x4924924924924925,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdx,%rax
  sar    %rax
  sub    %rcx,%rax
  lea    0x0(,%rax,8),%rdx
  sub    %rax,%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x2e8ba2e8ba2e8ba3,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdx,%rax
  sar    %rax
  sub    %rcx,%rax
  lea    (%rax,%rax,4),%rdx
  lea    (%rax,%rdx,2),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x4ec4ec4ec4ec4ec5,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdx,%rax
  sar    $0x2,%rax
  sub    %rcx,%rax
  lea    (%rax,%rax,2),%rdx
  lea    (%rax,%rdx,4),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x7878787878787879,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdx,%rax
  sar    $0x3,%rax
  sub    %rcx,%rax
  mov    %rax,%rdx
  shl    $0x4,%rdx
  add    %rax,%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0xd79435e50d79436,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdi,%rcx
  sar    $0x3f,%rcx
  mov    %rdx,%rax
  sub    %rcx,%rax
  lea    (%rax,%rax,8),%rdx
  lea    (%rax,%rdx,2),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0xb21642c8590b2165,%rdx
  mov    %rdi,%rax
  imul   %rdx
  lea    (%rdx,%rdi,1),%rax
  sar    $0x4,%rax
  sub    %rcx,%rax
  lea    (%rax,%rax,2),%rdx
  shl    $0x3,%rdx
  sub    %rax,%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x469ee58469ee5847,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdx,%rax
  sar    $0x3,%rax
  sub    %rcx,%rax
  lea    0x0(,%rax,8),%rdx
  sub    %rax,%rdx
  lea    (%rax,%rdx,4),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x8421084210842109,%rdx
  mov    %rdi,%rax
  imul   %rdx
  lea    (%rdx,%rdi,1),%rax
  sar    $0x4,%rax
  sub    %rcx,%rax
  mov    %rax,%rdx
  shl    $0x5,%rdx
  sub    %rax,%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x3759f22983759f23,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdx,%rax
  sar    $0x3,%rax
  sub    %rcx,%rax
  lea    (%rax,%rax,8),%rdx
  lea    (%rax,%rdx,4),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x63e7063e7063e707,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdx,%rax
  sar    $0x4,%rax
  sub    %rcx,%rax
  lea    (%rax,%rax,4),%rdx
  lea    (%rax,%rdx,8),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x5f417d05f417d06,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdi,%rcx
  sar    $0x3f,%rcx
  mov    %rdx,%rax
  sub    %rcx,%rax
  lea    (%rax,%rax,4),%rdx
  lea    (%rax,%rdx,4),%rdx
  lea    (%rax,%rdx,2),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x572620ae4c415c99,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdx,%rax
  sar    $0x4,%rax
  sub    %rcx,%rax
  lea    (%rax,%rax,2),%rdx
  shl    $0x4,%rdx
  sub    %rax,%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x4d4873ecade304d5,%rdx
  mov    %rdi,%rax
  imul   %rdx
  mov    %rdx,%rax
  sar    $0x4,%rax
  sub    %rcx,%rax
  lea    (%rax,%rax,2),%rdx
  lea    (%rax,%rdx,4),%rdx
  lea    (%rax,%rdx,4),%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  movabs $0x8ad8f2fba9386823,%rdx
  mov    %rdi,%rax
  imul   %rdx
  lea    (%rdx,%rdi,1),%rax
  sar    $0x5,%rax
  sub    %rcx,%rax
  imul   $0x3b,%rax,%rdx
  mov    %rdi,%rax
  sub    %rdx,%rax
  je     L10
  mov    $0x3d,%ecx
  mov    %rdi,%rax
  cqto
  idiv   %rcx
  mov    %rdx,%rax
  test   %rdx,%rdx
  je     L10
  mov    $0x43,%ecx
  mov    %rdi,%rax
  cqto
  idiv   %rcx
  mov    %rdx,%rax
  test   %rdx,%rdx
  je     L10
  mov    $0x47,%ecx
  mov    %rdi,%rax
  cqto
  idiv   %rcx
  mov    %rdx,%rax
  test   %rdx,%rdx
  je     L10
  mov    $0x49,%ecx
  mov    %rdi,%rax
  cqto
  idiv   %rcx
  mov    %rdx,%rax
  test   %rdx,%rdx
  je     L10
  mov    $0x4f,%ecx
  mov    %rdi,%rax
  cqto
  idiv   %rcx
  mov    %rdx,%rax
  test   %rdx,%rdx
  je     L10
  mov    $0x53,%ecx
  mov    %rdi,%rax
  cqto
  idiv   %rcx
  mov    %rdx,%rax
  test   %rdx,%rdx
  je     L10
  mov    $0x59,%ecx
  mov    %rdi,%rax
  cqto
  idiv   %rcx
  mov    %rdx,%rax
  test   %rdx,%rdx
  je     L10
  mov    $0x61,%ecx
  mov    %rdi,%rax
  cqto
  idiv   %rcx
  mov    %rdx,%rax
  test   %rdx,%rdx
  je     L10
  mov    $0x3,%ebp
L110:
  mov    %rbx,%rdi
  call   <sqrt@plt>
  cmp    %rbp,%rax
  jl     L276
  mov    %rbx,%rax
  cqto
  idiv   %rbp
  mov    %rdx,%rax
  test   %rdx,%rdx
  je     L10
  add    $0x2,%rbp
  jmp    L110
L286:
  call   <slow_prime@plt>
L10:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L276:
  mov    $0x1,%eax
  jmp    L10
```

assistant: ```c
long is_prime(long n) {
  long i;
  if (n < 99) {
    return slow_prime(n);
  }
  if (n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n % 7 == 0 || n % 11 == 0 || n % 13 == 0 || n % 17 == 0 || n % 19 == 0 || n % 23 == 0 || n % 29 == 0 || n % 31 == 0 || n % 37 == 0 || n % 41 == 0 || n % 43 == 0 || n % 47 == 0 || n % 53 == 0 || n % 59 == 0 || n % 61 == 0 || n % 67 == 0 || n % 71 == 0 || n % 73 == 0 || n % 79 == 0 || n % 83 == 0 || n % 89 == 0 || n % 97 == 0) {
    return 0;
  }
  for (i = 3; i <= sqrt(n); i += 2) {
    if (n % i == 0) {
      return 0;
    }
  }
  return 1;
}
```