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

```asm
<maximalSquare>:
  endbr64
  push   %rbp
  mov    %rdi,%rcx
  mov    %edx,%edi
  mov    %esi,%r11d
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x78,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x38(%rbp)
  xor    %eax,%eax
  movslq %edx,%rax
  movslq %esi,%rdx
  mov    %rsp,%r8
  lea    0x0(,%rax,4),%rbx
  mov    %rbx,-0x78(%rbp)
  lea    0x0(,%rdx,4),%rbx
  imul   %rbx,%rax
  add    $0xf,%rax
  mov    %rax,%rsi
  and    $0xfffffffffffff000,%rax
  sub    %rax,%r8
  and    $0xfffffffffffffff0,%rsi
  cmp    %r8,%rsp
  je     L135
L154:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %r8,%rsp
  jne    L154
L135:
  and    $0xfff,%esi
  sub    %rsi,%rsp
  test   %rsi,%rsi
  jne    L150
L12:
  mov    %rsp,%rax
  test   %edi,%edi
  jle    L45
  mov    -0x78(%rbp),%r9
  lea    -0x5(%rdx,%rdx,4),%rdx
  lea    -0x1(%r11),%esi
  add    %rcx,%rdx
  movslq %esi,%rsi
  shr    $0x2,%r9
  movsbl (%rdx),%r8d
  imul   %r9,%rsi
  sub    $0x30,%r8d
  test   %r8d,%r8d
  lea    (%rax,%rsi,4),%rsi
  mov    %r8d,(%rsi)
  setne  %r8b
  movzbl %r8b,%r8d
  cmp    $0x1,%edi
  je     L95
  movsbl 0x1(%rdx),%r10d
  mov    $0x1,%r12d
  sub    $0x30,%r10d
  mov    %r10d,0x4(%rsi)
  cmovne %r12d,%r8d
  cmp    $0x2,%edi
  je     L95
  movsbl 0x2(%rdx),%r10d
  sub    $0x30,%r10d
  mov    %r10d,0x8(%rsi)
  cmovne %r12d,%r8d
  cmp    $0x3,%edi
  je     L95
  movsbl 0x3(%rdx),%r10d
  sub    $0x30,%r10d
  mov    %r10d,0xc(%rsi)
  cmovne %r12d,%r8d
  cmp    $0x4,%edi
  je     L95
  movsbl 0x4(%rdx),%r10d
  sub    $0x30,%r10d
  mov    %r10d,0x10(%rsi)
  cmovne %r12d,%r8d
  cmp    $0x5,%edi
  je     L95
  movsbl 0x5(%rdx),%r10d
  sub    $0x30,%r10d
  mov    %r10d,0x14(%rsi)
  cmovne %r12d,%r8d
  cmp    $0x6,%edi
  je     L95
  lea    -0x4(%rbx),%rsi
  imul   %rsi,%r9
  mov    $0x6,%esi
  add    %rax,%r9
L49:
  movsbl (%rdx,%rsi,1),%r10d
  sub    $0x30,%r10d
  mov    %r10d,(%r9,%rsi,4)
  cmovne %r12d,%r8d
  add    $0x1,%rsi
  cmp    %esi,%edi
  jg     L49
  nopw   0x0(%rax,%rax,1)
L95:
  test   %r11d,%r11d
  jle    L140
  mov    -0x78(%rbp),%r14
  lea    -0x1(%rdi),%r12d
  xor    %r10d,%r10d
  mov    $0x1,%r13d
  movslq %r12d,%r12
  shr    $0x2,%r14
  lea    (%rcx,%r12,1),%rdx
  nopl   0x0(%rax)
L300:
  movslq %r10d,%rsi
  movsbl (%rdx),%r9d
  imul   %r14,%rsi
  sub    $0x30,%r9d
  add    %r12,%rsi
  test   %r9d,%r9d
  cmovne %r13d,%r8d
  add    $0x1,%r10d
  mov    %r9d,(%rax,%rsi,4)
  add    $0x5,%rdx
  cmp    %r11d,%r10d
  jne    L300
L140:
  mov    %r11d,%r9d
  sub    $0x2,%r9d
  js     L119
  mov    -0x78(%rbp),%rdx
  sub    $0x8,%rbx
  movslq %r9d,%r9
  lea    -0x2(%rdi),%r15d
  lea    (%r9,%r9,4),%r9
  lea    -0x5(%rdi),%r14d
  mov    %r15d,-0x54(%rbp)
  mov    %rdx,%rsi
  neg    %rdx
  add    %r9,%rcx
  mov    %r14d,-0x70(%rbp)
  shr    $0x2,%rsi
  lea    -0x4(%rdi),%r9d
  mov    %rdx,-0x60(%rbp)
  lea    -0x1(%r11),%edx
  imul   %rsi,%rbx
  lea    -0x8(%rdi),%r11d
  mov    %r9d,-0x6c(%rbp)
  lea    -0x6(%rdi),%r12d
  mov    %r11d,-0x8c(%rbp)
  movslq %r15d,%r11
  movslq %r9d,%r15
  movslq %r14d,%r9
  lea    -0x7(%rdi),%r13d
  mov    %r12d,-0x84(%rbp)
  mov    %r9,-0x48(%rbp)
  lea    (%rax,%rbx,1),%r10
  movslq %r12d,%r9
  lea    -0x3(%rdi),%ebx
  sub    $0x1,%edi
  mov    %r9,-0x50(%rbp)
  movslq %r13d,%r9
  movslq %edi,%rdi
  mov    %r13d,-0x88(%rbp)
  mov    %r9,-0x68(%rbp)
  mov    %rdi,-0x80(%rbp)
  mov    %ebx,-0x58(%rbp)
  movslq %ebx,%rbx
  nopw   0x0(%rax,%rax,1)
L342:
  mov    -0x54(%rbp),%r14d
  movslq %edx,%r9
  sub    $0x1,%edx
  test   %r14d,%r14d
  js     L67
  xor    %r12d,%r12d
  cmpb   $0x31,(%rcx,%r11,1)
  movslq %edx,%rdi
  jne    L157
  movslq %r9d,%r12
  mov    -0x80(%rbp),%r14
  imul   %rsi,%r12
  add    %r12,%r14
  lea    (%r11,%r12,1),%r13
  mov    (%rax,%r13,4),%r12d
  mov    (%rax,%r14,4),%r13d
  cmp    %r13d,%r12d
  cmovg  %r13d,%r12d
  mov    %rdi,%r13
  imul   %rsi,%r13
  add    -0x80(%rbp),%r13
  mov    (%rax,%r13,4),%r13d
  cmp    %r13d,%r12d
  cmovg  %r13d,%r12d
  add    $0x1,%r12d
  cmp    %r12d,%r8d
  cmovl  %r12d,%r8d
L157:
  mov    %rdi,%r13
  imul   %rsi,%r13
  add    %r11,%r13
  mov    %r12d,(%rax,%r13,4)
  mov    -0x58(%rbp),%r13d
  test   %r13d,%r13d
  js     L67
  xor    %r13d,%r13d
  cmpb   $0x31,(%rcx,%rbx,1)
  jne    L218
  movslq %r9d,%r14
  imul   %rsi,%r14
  lea    (%r11,%r14,1),%r13
  add    %rbx,%r14
  mov    (%rax,%r13,4),%r13d
  mov    (%rax,%r14,4),%r14d
  cmp    %r14d,%r13d
  cmovg  %r14d,%r13d
  cmp    %r12d,%r13d
  cmovg  %r12d,%r13d
  add    $0x1,%r13d
  cmp    %r13d,%r8d
  cmovl  %r13d,%r8d
L218:
  mov    %rdi,%r12
  mov    -0x6c(%rbp),%r14d
  imul   %rsi,%r12
  add    %rbx,%r12
  mov    %r13d,(%rax,%r12,4)
  test   %r14d,%r14d
  js     L67
  xor    %r12d,%r12d
  cmpb   $0x31,(%rcx,%r15,1)
  jne    L103
  movslq %r9d,%r14
  imul   %rsi,%r14
  lea    (%r15,%r14,1),%r12
  add    %rbx,%r14
  mov    (%rax,%r12,4),%r12d
  mov    (%rax,%r14,4),%r14d
  cmp    %r14d,%r12d
  cmovg  %r14d,%r12d
  cmp    %r13d,%r12d
  cmovg  %r13d,%r12d
  add    $0x1,%r12d
  cmp    %r12d,%r8d
  cmovl  %r12d,%r8d
L103:
  mov    %rdi,%r13
  imul   %rsi,%r13
  add    %r15,%r13
  mov    %r12d,(%rax,%r13,4)
  mov    -0x70(%rbp),%r13d
  test   %r13d,%r13d
  js     L67
  mov    -0x48(%rbp),%r14
  xor    %r13d,%r13d
  cmpb   $0x31,(%rcx,%r14,1)
  jne    L164
  movslq %r9d,%r14
  imul   %rsi,%r14
  lea    (%r15,%r14,1),%r13
  add    -0x48(%rbp),%r14
  mov    (%rax,%r13,4),%r13d
  mov    (%rax,%r14,4),%r14d
  cmp    %r14d,%r13d
  cmovg  %r14d,%r13d
  cmp    %r12d,%r13d
  cmovg  %r12d,%r13d
  add    $0x1,%r13d
  cmp    %r13d,%r8d
  cmovl  %r13d,%r8d
L164:
  mov    %rdi,%r12
  mov    -0x84(%rbp),%r14d
  imul   %rsi,%r12
  add    -0x48(%rbp),%r12
  mov    %r13d,(%rax,%r12,4)
  test   %r14d,%r14d
  js     L67
  mov    -0x50(%rbp),%r14
  xor    %r12d,%r12d
  cmpb   $0x31,(%rcx,%r14,1)
  jne    L62
  movslq %r9d,%r14
  mov    -0x48(%rbp),%r12
  imul   %rsi,%r14
  add    %r14,%r12
  add    -0x50(%rbp),%r14
  mov    (%rax,%r12,4),%r12d
  mov    (%rax,%r14,4),%r14d
  cmp    %r14d,%r12d
  cmovg  %r14d,%r12d
  cmp    %r13d,%r12d
  cmovg  %r13d,%r12d
  add    $0x1,%r12d
  cmp    %r12d,%r8d
  cmovl  %r12d,%r8d
L62:
  mov    %rdi,%r13
  imul   %rsi,%r13
  add    -0x50(%rbp),%r13
  mov    %r12d,(%rax,%r13,4)
  mov    -0x88(%rbp),%r13d
  test   %r13d,%r13d
  js     L67
  mov    -0x68(%rbp),%r14
  xor    %r13d,%r13d
  cmpb   $0x31,(%rcx,%r14,1)
  jne    L128
  movslq %r9d,%r14
  mov    -0x50(%rbp),%r13
  imul   %rsi,%r14
  add    %r14,%r13
  add    -0x68(%rbp),%r14
  mov    (%rax,%r13,4),%r13d
  mov    (%rax,%r14,4),%r14d
  cmp    %r14d,%r13d
  cmovg  %r14d,%r13d
  cmp    %r12d,%r13d
  cmovg  %r12d,%r13d
  add    $0x1,%r13d
  cmp    %r13d,%r8d
  cmovl  %r13d,%r8d
L128:
  imul   %rsi,%rdi
  mov    -0x68(%rbp),%r14
  lea    (%r14,%rdi,1),%r12
  mov    -0x8c(%rbp),%r14d
  mov    %r13d,(%rax,%r12,4)
  test   %r14d,%r14d
  js     L67
  movslq %r14d,%r12
  mov    -0x78(%rbp),%r14
  mov    %rsi,-0x98(%rbp)
  imul   %r9,%r14
  imul   %rsi,%r9
  add    %rax,%r14
L251:
  cmpb   $0x31,(%rcx,%r12,1)
  je     L146
  movl   $0x0,(%r10,%r12,4)
  sub    $0x1,%r12
  test   %r12d,%r12d
  jns    L251
L187:
  mov    -0x98(%rbp),%rsi
  xchg   %ax,%ax
L67:
  add    -0x60(%rbp),%r10
  sub    $0x5,%rcx
  test   %edx,%edx
  jne    L342
  imul   %r8d,%r8d
L119:
  mov    -0x38(%rbp),%rax
  sub    %fs:0x28,%rax
  jne    L331
  lea    -0x28(%rbp),%rsp
  mov    %r8d,%eax
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
  nopl   (%rax)
L146:
  lea    0x1(%r12),%r13d
  movslq %r13d,%r13
  lea    0x0(%r13,%r9,1),%rsi
  add    %rdi,%r13
  mov    (%rax,%r13,4),%r13d
  mov    (%rax,%rsi,4),%esi
  cmp    %r13d,%esi
  cmovg  %r13d,%esi
  mov    (%r14,%r12,4),%r13d
  cmp    %r13d,%esi
  cmovg  %r13d,%esi
  add    $0x1,%esi
  cmp    %esi,%r8d
  mov    %esi,(%r10,%r12,4)
  cmovl  %esi,%r8d
  sub    $0x1,%r12
  test   %r12d,%r12d
  jns    L251
  jmp    L187
L150:
  orq    $0x0,-0x8(%rsp,%rsi,1)
  jmp    L12
L45:
  xor    %r8d,%r8d
  jmp    L95
L331:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
int maximalSquare(char matrix[][5], int matrixRowSize, int matrixColSize) {
  int record[matrixRowSize][matrixColSize];
  int maxEdge = 0;
  for (int i = 0; i < matrixColSize; ++i)
    if (record[matrixRowSize - 1][i] = matrix[matrixRowSize - 1][i] - '0')
      maxEdge = 1;
  for (int i = 0; i < matrixRowSize; ++i)
    if (record[i][matrixColSize - 1] = matrix[i][matrixColSize - 1] - '0')
      maxEdge = 1;
  for (int i = matrixRowSize - 2; i >= 0; --i)
    for (int j = matrixColSize - 2; j >= 0; --j)
      if (matrix[i][j] == '1') {
        record[i][j] = ((((record[i][j + 1]) < (record[i + 1][j]) ? (record[i][j + 1]) : (record[i + 1][j]))) < (record[i + 1][j + 1]) ? (((record[i][j + 1]) < (record[i + 1][j]) ? (record[i][j + 1]) : (record[i + 1][j]))) : (record[i + 1][j + 1])) + 1;
        maxEdge = ((maxEdge) > (record[i][j]) ? (maxEdge) : (record[i][j]));
      } else
        record[i][j] = 0;
  return maxEdge * maxEdge;
}
```