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

```asm
<searchMatrix>:
  endbr64
  test   %esi,%esi
  mov    %rdi,%r8
  mov    %ecx,%edi
  sete   %al
  test   %edx,%edx
  sete   %cl
  or     %cl,%al
  jne    L80
  test   %r8,%r8
  je     L80
  lea    -0x1(%rdx),%r9d
  push   %rbx
  sub    $0x1,%esi
  xor    %edx,%edx
  movslq %r9d,%r11
  lea    0x0(,%r11,4),%r10
  jmp    L56
  nopl   0x0(%rax,%rax,1)
L168:
  movslq %eax,%rbx
  mov    (%r8,%rbx,8),%rbx
  cmp    %edi,(%rbx,%r10,1)
  jle    L8
  mov    %eax,%esi
  cmp    %esi,%edx
  je     L146
L141:
  jge    L11
L56:
  movslq %edx,%rcx
  lea    (%rdx,%rsi,1),%eax
  mov    (%r8,%rcx,8),%rcx
  sar    %eax
  mov    (%rcx),%ecx
  cmp    %edi,%ecx
  jl     L168
L8:
  movslq %esi,%rdx
  mov    (%r8,%rdx,8),%rdx
  mov    (%rdx,%r10,1),%edx
  cmp    %edi,%edx
  jle    L72
  movslq %eax,%rbx
  mov    (%r8,%rbx,8),%rbx
  cmp    %edi,(%rbx,%r10,1)
  jge    L72
  lea    0x1(%rax),%edx
  cmp    %esi,%edx
  jne    L141
L146:
  movslq %edx,%rdx
  lea    (%r8,%rdx,8),%r10
  xor    %edx,%edx
  jmp    L110
  nopl   (%rax)
L123:
  movslq %eax,%r8
  cmp    %edi,(%rcx,%r8,4)
  jle    L174
  mov    %eax,%r9d
L2:
  lea    0x1(%rdx),%eax
  cmp    %r9d,%eax
  je     L11
L110:
  cmp    %r9d,%edx
  jge    L11
  mov    (%r10),%rcx
  movslq %edx,%rsi
  lea    (%rdx,%r9,1),%eax
  sar    %eax
  mov    (%rcx,%rsi,4),%esi
  cmp    %edi,%esi
  jl     L123
L174:
  movslq %r9d,%rdx
  mov    (%rcx,%rdx,4),%edx
  cmp    %edi,%edx
  jle    L73
  movslq %eax,%r8
  cmp    %edi,(%rcx,%r8,4)
  jge    L73
  mov    %eax,%edx
  jmp    L2
  nopl   0x0(%rax,%rax,1)
L80:
  xor    %eax,%eax
  ret
  nopl   0x0(%rax,%rax,1)
L11:
  xor    %r9d,%r9d
L68:
  mov    %r9d,%eax
  pop    %rbx
  ret
  nopl   0x0(%rax,%rax,1)
L72:
  mov    $0x1,%r9d
  cmp    %edi,%ecx
  je     L68
  cltq
  mov    (%r8,%rax,8),%rax
  cmp    %edi,(%rax,%r11,4)
L78:
  sete   %r9b
  cmp    %edi,%edx
  pop    %rbx
  sete   %al
  or     %eax,%r9d
  movzbl %r9b,%r9d
  mov    %r9d,%eax
  ret
  nopl   0x0(%rax)
L73:
  mov    $0x1,%r9d
  cmp    %edi,%esi
  je     L68
  cltq
  cmp    %edi,(%rcx,%rax,4)
  jmp    L78
```

assistant: ```c
bool searchMatrix(int **matrix, int matrixRowSize, int matrixColSize, int target) {
  if (matrix == NULL || matrixRowSize == 0 || matrixColSize == 0) {
    return false;
  }
  int rowStart = 0;
  int mid = 0;
  int rowEnd = matrixRowSize - 1;
  int colStart = 0;
  int colEnd = matrixColSize - 1;
  do {
    mid = (rowStart + rowEnd) >> 1;
    if (*(*(matrix + rowStart) + 0) < target && *(*(matrix + mid) + colEnd) > target) {
      rowEnd = mid;
    } else if ((*(*(matrix + rowEnd) + colEnd)) > target && (*(*(matrix + mid) + colEnd)) < target) {
      rowStart = mid + 1;
    } else if (*(*(matrix + rowStart) + 0) == target || *(*(matrix + mid) + colEnd) == target || *(*(matrix + rowEnd) + colEnd) == target) {
      return true;
    } else {
      return false;
    }
    if (rowStart == rowEnd) {
      while (colStart < colEnd) {
        mid = (colStart + colEnd) >> 1;
        if (*(*(matrix + rowStart) + colStart) < target && *(*(matrix + rowStart) + mid) > target) {
          colEnd = mid;
        } else if (*(*(matrix + rowStart) + colEnd) > target && *(*(matrix + rowStart) + mid) < target) {
          colStart = mid;
        } else if (*(*(matrix + rowStart) + colStart) == target || *(*(matrix + rowStart) + mid) == target || *(*(matrix + rowStart) + colEnd) == target) {
          return true;
        } else {
          return false;
        }
        if (colStart + 1 == colEnd) {
          return false;
        }
      }
      return false;
    }
  } while (rowStart < rowEnd);
  return false;
}
```