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     L201
  nopw   0x0(%rax,%rax,1)
L15:
  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    L15
  jmp    L201
  nopl   (%rax)
L277:
  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
L201:
  imul   $0x677d46cf,%eax,%edx
  add    $0x2b93105,%edx
  cmp    $0x572620a,%edx
  jbe    L277
  jmp    L249
  nopw   0x0(%rax,%rax,1)
L278:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x2fa0be83,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x23,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L249:
  imul   $0x2fa0be83,%eax,%edx
  add    $0x2fa0be8,%edx
  cmp    $0x5f417d0,%edx
  jbe    L278
  jmp    L46
  nopl   (%rax)
L172:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x63e7063f,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x24,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L46:
  imul   $0xc18f9c19,%eax,%edx
  add    $0x31f3831,%edx
  cmp    $0x63e7062,%edx
  jbe    L172
  jmp    L48
  nopl   (%rax)
L171:
  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
L48:
  imul   $0x914c1bad,%eax,%edx
  add    $0x3759f22,%edx
  cmp    $0x6eb3e44,%edx
  jbe    L171
  jmp    L228
  nopw   0x0(%rax,%rax,1)
L76:
  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
L228:
  imul   $0xbdef7bdf,%eax,%edx
  add    $0x4210842,%edx
  cmp    $0x8421084,%edx
  jbe    L76
  jmp    L2
  nopw   0x0(%rax,%rax,1)
L314:
  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
L2:
  imul   $0x4f72c235,%eax,%edx
  add    $0x469ee58,%edx
  cmp    $0x8d3dcb0,%edx
  jbe    L314
  jmp    L203
  nopw   0x0(%rax,%rax,1)
L118:
  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
L203:
  imul   $0xe9bd37a7,%eax,%edx
  add    $0x590b216,%edx
  cmp    $0xb21642c,%edx
  jbe    L118
  jmp    L205
  nopw   0x0(%rax,%rax,1)
L80:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x78787879,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x23,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L205:
  imul   $0xf0f0f0f1,%eax,%edx
  add    $0x7878787,%edx
  cmp    $0xf0f0f0e,%edx
  jbe    L80
  jmp    L78
  nopl   (%rax)
L288:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x4ec4ec4f,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x22,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L78:
  imul   $0xc4ec4ec5,%eax,%edx
  add    $0x9d89d89,%edx
  cmp    $0x13b13b12,%edx
  jbe    L288
  jmp    L208
  nopl   (%rax)
L331:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x2e8ba2e9,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x21,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L208:
  imul   $0xba2e8ba3,%eax,%edx
  add    $0xba2e8ba,%edx
  cmp    $0x1745d174,%edx
  jbe    L331
  test   $0x7,%al
  jne    L175
  nopw   0x0(%rax,%rax,1)
L204:
  test   %eax,%eax
  lea    0x7(%rax),%edx
  cmovns %eax,%edx
  mov    %edx,%eax
  sar    $0x3,%eax
  and    $0x38,%edx
  je     L204
  jmp    L175
  nopl   0x0(%rax)
L143:
  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
L175:
  imul   $0xb6db6db7,%eax,%edx
  add    $0x12492492,%edx
  cmp    $0x24924924,%edx
  jbe    L143
  jmp    L300
  nopw   0x0(%rax,%rax,1)
L18:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x66666667,%rdx,%rdx
  mov    %eax,%ecx
  sar    $0x21,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
L300:
  imul   $0xcccccccd,%eax,%edx
  add    $0x19999999,%edx
  cmp    $0x33333332,%edx
  jbe    L18
  mov    %eax,%edx
  test   $0x3,%al
  jne    L21
  nopl   0x0(%rax)
L301:
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  mov    %eax,%edx
  test   $0x3,%al
  je     L301
L21:
  imul   $0xaaaaaaab,%eax,%ecx
  add    $0x2aaaaaaa,%ecx
  cmp    $0x55555554,%ecx
  ja     L11
  nopl   (%rax)
L61:
  movslq %eax,%rdx
  sar    $0x1f,%eax
  imul   $0x55555556,%rdx,%rdx
  mov    %eax,%ecx
  shr    $0x20,%rdx
  mov    %edx,%eax
  sub    %ecx,%eax
  imul   $0xaaaaaaab,%eax,%edx
  add    $0x2aaaaaaa,%edx
  cmp    $0x55555554,%edx
  jbe    L61
  mov    %eax,%edx
L11:
  and    $0x1,%edx
  jne    L335
  nopw   0x0(%rax,%rax,1)
L338:
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  mov    %edx,%eax
  sar    %eax
  and    $0x2,%edx
  je     L338
L335:
  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;
}
```