user: 这段汇编代码用C语言表示是什么样的?

```asm
<minPathSum>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  mov    %edx,-0x20(%rbp)
  cmpl   $0x0,-0x1c(%rbp)
  je     L109
  cmpl   $0x0,-0x20(%rbp)
  jne    L48
L109:
  mov    $0x0,%eax
  jmp    L79
L48:
  movl   $0x0,-0x8(%rbp)
  jmp    L107
L95:
  movl   $0x0,-0x4(%rbp)
  jmp    L23
L131:
  cmpl   $0x0,-0x8(%rbp)
  jne    L84
  cmpl   $0x0,-0x4(%rbp)
  je     L137
L84:
  cmpl   $0x0,-0x8(%rbp)
  jne    L24
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rsi
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  jmp    L114
L24:
  cmpl   $0x0,-0x4(%rbp)
  jne    L14
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  mov    (%rax),%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  jmp    L114
L14:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  mov    (%rax),%rsi
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rsi,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  cmovg  %eax,%edx
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  mov    (%rax),%rsi
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  jmp    L114
L137:
  nop
L114:
  addl   $0x1,-0x4(%rbp)
L23:
  mov    -0x4(%rbp),%eax
  cmp    -0x20(%rbp),%eax
  jl     L131
  addl   $0x1,-0x8(%rbp)
L107:
  mov    -0x8(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  jl     L95
  mov    -0x1c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  shl    $0x2,%rax
  sub    $0x4,%rax
  add    %rdx,%rax
  mov    (%rax),%eax
L79:
  pop    %rbp
  ret
```

assistant: ```c
int minPathSum(int **grid, int gridRowSize, int gridColSize) {
  if (!gridRowSize || !gridColSize)
    return (0);
  int i, j;
  int *m;
  for (i = 0; i < gridRowSize; i++) {
    for (j = 0; j < gridColSize; j++) {
      if (!i && !j)
        continue;
      if (!i)
        grid[0][j] += grid[0][j - 1];
      else if (!j)
        grid[i][0] += grid[i - 1][0];
      else
        grid[i][j] += (grid[i - 1][j] < grid[i][j - 1] ? grid[i - 1][j] : grid[i][j - 1]);
    }
  }
  return (grid[gridRowSize - 1][gridColSize - 1]);
}
```