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

```asm
<remove_redundant_clauses>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L118
L57:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L129
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x14(%rbp)
  jmp    L37
L52:
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L24
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x30(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  cmp    %rax,%rdx
  jne    L24
  mov    -0x18(%rbp),%eax
  xor    -0x14(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  and    %eax,%edx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  and    %edx,%eax
  mov    %eax,-0xc(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  js     L110
  cmpl   $0x7,-0xc(%rbp)
  jg     L110
  mov    $0x1,%eax
  jmp    L29
L110:
  mov    $0x0,%eax
L29:
  mov    %eax,%edi
  call   <assert@plt>
  cmpl   $0x1,-0xc(%rbp)
  je     L21
  cmpl   $0x2,-0xc(%rbp)
  je     L21
  cmpl   $0x4,-0xc(%rbp)
  jne    L24
L21:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  or     %edx,%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  and    -0x18(%rbp),%eax
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  and    -0x14(%rbp),%eax
  or     %edx,%eax
  xor    -0xc(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdi
  mov    -0x8(%rbp),%ecx
  mov    -0x4(%rbp),%edx
  mov    -0x30(%rbp),%rsi
  mov    -0x28(%rbp),%rax
  mov    %rdi,%r8
  mov    %rax,%rdi
  call   <check_subsumption@plt>
  or     %eax,-0x10(%rbp)
L24:
  addl   $0x1,-0x14(%rbp)
L37:
  cmpl   $0x7,-0x14(%rbp)
  jle    L52
L129:
  addl   $0x1,-0x18(%rbp)
L118:
  cmpl   $0x6,-0x18(%rbp)
  jle    L57
  mov    -0x10(%rbp),%eax
  leave
  ret
```

assistant: ```c
bool remove_redundant_clauses(uint32_t m[8], int32_t b[8]) {
  uint32_t i, j, delta;
  uint32_t k, msk;
  bool changed;
  changed = false;
  for (i = 0; i < 7; i++) {
    if (m[i] != 0) {
      for (j = i + 1; j < 8; j++) {
        if (m[j] != 0 && b[i] == b[j]) {
          delta = (i ^ j) & m[i] & m[j];
          assert(0 <= delta && delta < 8);
          if (delta == 1 || delta == 2 || delta == 4) {
            msk = (m[i] | m[j]) ^ delta;
            k = ((i & m[i]) | (j & m[j])) ^ delta;
            changed |= check_subsumption(m, b, k, msk, b[i]);
          }
        }
      }
    }
  }
  return changed;
}
```