user: What would the C source look like for the assembly code provided here?

```asm
<is_not_repeat>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  mov    %rdx,-0x20(%rbp)
  mov    %ecx,-0x24(%rbp)
  movsd  %xmm0,-0x30(%rbp)
  movl   $0x0,-0x10(%rbp)
  mov    -0x24(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%ecx
  mov    -0x24(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x20(%rbp),%rsi
  mov    -0x14(%rbp),%eax
  mov    %ecx,%r8d
  mov    %edx,%ecx
  mov    $0x0,%edx
  mov    %eax,%edi
  call   <find_frag@plt>
  mov    %eax,-0xc(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  js     L58
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  mov    %eax,%ecx
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    (%rax),%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  cmovl  %eax,%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  add    %eax,-0x10(%rbp)
L58:
  mov    -0x24(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%ecx
  mov    -0x24(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x20(%rbp),%rsi
  mov    -0x18(%rbp),%eax
  mov    %ecx,%r8d
  mov    %edx,%ecx
  mov    $0x0,%edx
  mov    %eax,%edi
  call   <find_frag@plt>
  mov    %eax,-0x8(%rbp)
  cmpl   $0x0,-0x8(%rbp)
  js     L2
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    (%rax),%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  cmovl  %eax,%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  add    %eax,-0x10(%rbp)
L2:
  cmpl   $0x0,-0xc(%rbp)
  jns    L32
  cmpl   $0x0,-0x8(%rbp)
  jns    L32
  mov    -0x24(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%edi
  mov    -0x24(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%esi
  mov    -0x14(%rbp),%eax
  mov    %edi,%r9d
  mov    %ecx,%r8d
  mov    $0x0,%ecx
  mov    %eax,%edi
  call   <find_seg@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jle    L32
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    (%rax),%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  cmovl  %eax,%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  add    $0x1,%eax
  add    %eax,-0x10(%rbp)
L32:
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x10(%rbp),%xmm0
  mov    -0x18(%rbp),%eax
  sub    -0x14(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  divsd  %xmm1,%xmm0
  comisd -0x30(%rbp),%xmm0
  jb     L45
  mov    $0x0,%eax
  jmp    L22
L45:
  mov    $0x1,%eax
L22:
  leave
  ret
```

assistant: ```c
int is_not_repeat(int x, int y, int **list, int no_frags, double max) {
  int i, j, k, count;
  count = 0;
  i = find_frag(x, list, 0, no_frags - 1, no_frags / 2);
  if (i >= 0)
    count += ((list[i][1] < y) ? list[i][1] : y) - ((x > list[i][0]) ? x : list[i][0]) + 1;
  j = find_frag(y, list, 0, no_frags - 1, no_frags / 2);
  if (j >= 0)
    count += ((list[j][1] < y) ? list[j][1] : y) - ((x > list[j][0]) ? x : list[j][0]) + 1;
  if ((i < 0) && (j < 0)) {
    k = find_seg(x, y, list, 0, no_frags - 1, no_frags / 2);
    if (k > 0)
      count += ((list[k][1] < y) ? list[k][1] : y) - ((x > list[k][0]) ? x : list[k][0]) + 1;
  }
  if ((double)count / (double)(y - x + 1) >= max)
    return 0;
  else
    return 1;
}
```