user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<is_prime>:
  endbr64
  cmp    $0x62,%rdi
  jle    L258
  test   $0x1,%dil
  je     L34
  movabs $0xaaaaaaaaaaaaaaab,%rax
  movabs $0x2aaaaaaaaaaaaaaa,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x5555555555555554,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0xcccccccccccccccd,%rax
  movabs $0x1999999999999999,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x3333333333333332,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0x6db6db6db6db6db7,%rax
  movabs $0x1249249249249249,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x2492492492492492,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0x2e8ba2e8ba2e8ba3,%rax
  movabs $0xba2e8ba2e8ba2e8,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x1745d1745d1745d0,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0x4ec4ec4ec4ec4ec5,%rax
  movabs $0x9d89d89d89d89d8,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x13b13b13b13b13b0,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0xf0f0f0f0f0f0f0f1,%rax
  movabs $0x787878787878787,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0xf0f0f0f0f0f0f0e,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0x86bca1af286bca1b,%rax
  movabs $0x6bca1af286bca1a,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0xd79435e50d79434,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0xd37a6f4de9bd37a7,%rax
  movabs $0x590b21642c8590b,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0xb21642c8590b216,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0x34f72c234f72c235,%rax
  movabs $0x469ee58469ee584,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x8d3dcb08d3dcb08,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0xef7bdef7bdef7bdf,%rax
  movabs $0x421084210842108,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x842108421084210,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0x14c1bacf914c1bad,%rax
  movabs $0x3759f22983759f2,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x6eb3e45306eb3e4,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0x8f9c18f9c18f9c19,%rax
  movabs $0x31f3831f3831f38,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x63e7063e7063e70,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0x82fa0be82fa0be83,%rax
  movabs $0x2fa0be82fa0be82,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x5f417d05f417d04,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0x51b3bea3677d46cf,%rax
  movabs $0x2b9310572620ae4,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x572620ae4c415c8,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0x21cfb2b78c13521d,%rax
  movabs $0x26a439f656f1826,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x4d4873ecade304c,%rdx
  cmp    %rdx,%rax
  jbe    L34
  movabs $0xcbeea4e1a08ad8f3,%rax
  movabs $0x22b63cbeea4e1a0,%rdx
  imul   %rdi,%rax
  add    %rdx,%rax
  movabs $0x456c797dd49c340,%rdx
  cmp    %rdx,%rax
  jbe    L34
  mov    %rdi,%rax
  mov    $0x3d,%ecx
  cqto
  idiv   %rcx
  test   %rdx,%rdx
  je     L34
  mov    %rdi,%rax
  mov    $0x43,%ecx
  cqto
  idiv   %rcx
  test   %rdx,%rdx
  je     L34
  mov    %rdi,%rax
  mov    $0x47,%ecx
  cqto
  idiv   %rcx
  test   %rdx,%rdx
  je     L34
  mov    %rdi,%rax
  mov    $0x49,%ecx
  cqto
  idiv   %rcx
  test   %rdx,%rdx
  je     L34
  mov    %rdi,%rax
  mov    $0x4f,%ecx
  cqto
  idiv   %rcx
  test   %rdx,%rdx
  je     L34
  mov    %rdi,%rax
  mov    $0x53,%ecx
  cqto
  idiv   %rcx
  test   %rdx,%rdx
  je     L34
  mov    %rdi,%rax
  mov    $0x59,%ecx
  cqto
  idiv   %rcx
  test   %rdx,%rdx
  je     L34
  mov    %rdi,%rax
  mov    $0x61,%ecx
  cqto
  idiv   %rcx
  test   %rdx,%rdx
  je     L34
  push   %rbx
  mov    $0x3,%ebx
  sub    $0x10,%rsp
  jmp    L231
L126:
  mov    %rdi,%rax
  cqto
  idiv   %rbx
  test   %rdx,%rdx
  je     L269
  add    $0x2,%rbx
L231:
  mov    %rdi,0x8(%rsp)
  call   <sqrt@plt>
  mov    0x8(%rsp),%rdi
  cmp    %rbx,%rax
  jge    L126
  mov    $0x1,%eax
  jmp    L175
L34:
  xor    %eax,%eax
  ret
  nopl   0x0(%rax,%rax,1)
L258:
  jmp    1070 <slow_prime@plt>
L269:
  xor    %eax,%eax
L175:
  add    $0x10,%rsp
  pop    %rbx
  ret
```

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;
}
```