user: What is the c source code of the assembly code below?

```asm
<dividebyN>:
  endbr64
  imul   $0x8c13521d,%edi,%edx
  mov    %edi,%eax
  add    $0x26a439f,%edx
  cmp    $0x4d4873e,%edx
  ja     L317
  nopw   0x0(%rax,%rax,1)
L140:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x4d4873ed,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x24,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
  imul   $0x8c13521d,%eax,%edx
  add    $0x26a439f,%edx
  cmp    $0x4d4873e,%edx
  jbe    L140
  jmp    L317
  nopl   (%rax)
L108:
  movslq %eax,%rdx
  imul   $0xffffffffae4c415d,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x1f,%eax
  sar    $0x5,%edx
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L317:
  imul   $0x677d46cf,%eax,%edx
  add    $0x2b93105,%edx
  cmp    $0x572620a,%edx
  jbe    L108
  jmp    L13
  nopw   0x0(%rax,%rax,1)
L73:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x2fa0be83,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x23,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L13:
  imul   $0x2fa0be83,%eax,%edx
  add    $0x2fa0be8,%edx
  cmp    $0x5f417d0,%edx
  jbe    L73
  jmp    L316
  nopl   (%rax)
L37:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x63e7063f,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x24,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L316:
  imul   $0xc18f9c19,%eax,%edx
  add    $0x31f3831,%edx
  cmp    $0x63e7062,%edx
  jbe    L37
  jmp    L201
  nopl   (%rax)
L163:
  movslq %eax,%rdx
  imul   $0xffffffffdd67c8a7,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x1f,%eax
  sar    $0x5,%edx
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L201:
  imul   $0x914c1bad,%eax,%edx
  add    $0x3759f22,%edx
  cmp    $0x6eb3e44,%edx
  jbe    L163
  jmp    L249
  nopw   0x0(%rax,%rax,1)
L144:
  movslq %eax,%rdx
  imul   $0xffffffff84210843,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x1f,%eax
  sar    $0x4,%edx
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L249:
  imul   $0xbdef7bdf,%eax,%edx
  add    $0x4210842,%edx
  cmp    $0x8421084,%edx
  jbe    L144
  jmp    L187
  nopw   0x0(%rax,%rax,1)
L298:
  movslq %eax,%rdx
  imul   $0xffffffff8d3dcb09,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x1f,%eax
  sar    $0x4,%edx
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L187:
  imul   $0x4f72c235,%eax,%edx
  add    $0x469ee58,%edx
  cmp    $0x8d3dcb0,%edx
  jbe    L298
  jmp    L70
  nopw   0x0(%rax,%rax,1)
L281:
  movslq %eax,%rdx
  imul   $0xffffffffb21642c9,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x1f,%eax
  sar    $0x4,%edx
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L70:
  imul   $0xe9bd37a7,%eax,%edx
  add    $0x590b216,%edx
  cmp    $0xb21642c,%edx
  jbe    L281
  jmp    L126
  nopw   0x0(%rax,%rax,1)
L258:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x78787879,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x23,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L126:
  imul   $0xf0f0f0f1,%eax,%edx
  add    $0x7878787,%edx
  cmp    $0xf0f0f0e,%edx
  jbe    L258
  jmp    L162
  nopl   (%rax)
L214:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x4ec4ec4f,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x22,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L162:
  imul   $0xc4ec4ec5,%eax,%edx
  add    $0x9d89d89,%edx
  cmp    $0x13b13b12,%edx
  jbe    L214
  jmp    L169
  nopl   (%rax)
L193:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x2e8ba2e9,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x21,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L169:
  imul   $0xba2e8ba3,%eax,%edx
  add    $0xba2e8ba,%edx
  cmp    $0x1745d174,%edx
  jbe    L193
  test   $0x7,%al
  jne    L236
  nopw   0x0(%rax,%rax,1)
L223:
  test   %eax,%eax
  lea    0x7(%rax),%edx
  cmovns %eax,%edx
  mov    %edx,%eax
  sar    $0x3,%eax
  and    $0x38,%edx
  je     L223
  jmp    L236
  nopl   0x0(%rax)
L232:
  movslq %eax,%rdx
  imul   $0xffffffff92492493,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x1f,%eax
  sar    $0x2,%edx
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
L236:
  imul   $0xb6db6db7,%eax,%edx
  add    $0x12492492,%edx
  cmp    $0x24924924,%edx
  jbe    L232
  jmp    L96
  nopw   0x0(%rax,%rax,1)
L207:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x66666667,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x21,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L96:
  imul   $0xcccccccd,%eax,%edx
  add    $0x19999999,%edx
  cmp    $0x33333332,%edx
  jbe    L207
  test   $0x3,%al
  jne    L100
  nop
L50:
  test   %eax,%eax
  lea    0x3(%rax),%edx
  cmovns %eax,%edx
  mov    %edx,%eax
  sar    $0x2,%eax
  and    $0xc,%edx
  je     L50
  jmp    L100
  nopl   0x0(%rax)
L81:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x55555556,%rdx,%rdx
  mov    %eax,%ecx
  shr    $0x20,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L100:
  imul   $0xaaaaaaab,%eax,%edx
  add    $0x2aaaaaaa,%edx
  cmp    $0x55555554,%edx
  jbe    L81
  test   $0x1,%al
  jne    L60
  nopw   0x0(%rax,%rax,1)
L113:
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  mov    %edx,%eax
  sar    %eax
  and    $0x2,%edx
  je     L113
L60:
  cmp    $0x1,%eax
  sete   %al
  movzbl %al,%eax
  ret
```

assistant: ```c
int dividebyN(int N) {
  while (N % 53 == 0) {
    N = N / 53;
  }
  while (N % 47 == 0) {
    N = N / 47;
  }
  while (N % 43 == 0) {
    N = N / 43;
  }
  while (N % 41 == 0) {
    N = N / 41;
  }
  while (N % 37 == 0) {
    N = N / 37;
  }
  while (N % 31 == 0) {
    N = N / 31;
  }
  while (N % 29 == 0) {
    N = N / 29;
  }
  while (N % 23 == 0) {
    N = N / 23;
  }
  while (N % 17 == 0) {
    N = N / 17;
  }
  while (N % 13 == 0) {
    N = N / 13;
  }
  while (N % 11 == 0) {
    N = N / 11;
  }
  while (N % 8 == 0) {
    N = N / 8;
  }
  while (N % 7 == 0) {
    N = N / 7;
  }
  while (N % 5 == 0) {
    N = N / 5;
  }
  while (N % 4 == 0) {
    N = N / 4;
  }
  while (N % 3 == 0) {
    N = N / 3;
  }
  while (N % 2 == 0) {
    N = N / 2;
  }
  if (N == 1) {
    return 1;
  }
  return 0;
}
```