user: 请将以下的汇编代码转换成C语言代码:

```asm
<searchMatrix>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x28(%rbp)
  mov    %esi,-0x2c(%rbp)
  mov    %edx,-0x30(%rbp)
  mov    %ecx,-0x34(%rbp)
  cmpq   $0x0,-0x28(%rbp)
  je     L58
  cmpl   $0x0,-0x2c(%rbp)
  je     L58
  cmpl   $0x0,-0x30(%rbp)
  jne    L94
L58:
  mov    $0x0,%eax
  jmp    L88
L94:
  movl   $0x0,-0x14(%rbp)
  movl   $0x0,-0x4(%rbp)
  mov    -0x2c(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x10(%rbp)
  movl   $0x0,-0xc(%rbp)
  mov    -0x30(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x8(%rbp)
L102:
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x4(%rbp)
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jle    L251
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jge    L251
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x10(%rbp)
  jmp    L313
L251:
  mov    -0x10(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jge    L68
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jle    L68
  mov    -0x4(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x14(%rbp)
  jmp    L313
L68:
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  je     L38
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  je     L38
  mov    -0x10(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jne    L326
L38:
  mov    $0x1,%eax
  jmp    L88
L326:
  mov    $0x0,%eax
  jmp    L88
L313:
  mov    -0x14(%rbp),%eax
  cmp    -0x10(%rbp),%eax
  jne    L71
  jmp    L200
L139:
  mov    -0xc(%rbp),%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x4(%rbp)
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jle    L28
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jge    L28
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x8(%rbp)
  jmp    L95
L28:
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jge    L166
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jle    L166
  mov    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L95
L166:
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  je     L178
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  je     L178
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x34(%rbp)
  jne    L163
L178:
  mov    $0x1,%eax
  jmp    L88
L163:
  mov    $0x0,%eax
  jmp    L88
L95:
  mov    -0xc(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0x8(%rbp)
  jne    L200
  mov    $0x0,%eax
  jmp    L88
L200:
  mov    -0xc(%rbp),%eax
  cmp    -0x8(%rbp),%eax
  jl     L139
  mov    $0x0,%eax
  jmp    L88
L71:
  mov    -0x14(%rbp),%eax
  cmp    -0x10(%rbp),%eax
  jl     L102
  mov    $0x0,%eax
L88:
  pop    %rbp
  ret
```

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;
}
```