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

```asm
<MMF_ISP_VGAto1280_1024New>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %esi,%eax
  mov    %rdx,-0x80(%rbp)
  mov    %rcx,-0x88(%rbp)
  mov    %edi,%edx
  mov    %dx,-0x74(%rbp)
  mov    %ax,-0x78(%rbp)
  cmpq   $0x0,-0x80(%rbp)
  jne    L214
  mov    $0xffffffff,%eax
  jmp    L113
L214:
  cmpw   $0x1e0,-0x74(%rbp)
  jne    L160
  cmpw   $0x280,-0x78(%rbp)
  je     L209
L160:
  mov    $0xffffffff,%eax
  jmp    L113
L209:
  mov    D174(%rip),%eax
  mov    %eax,-0x6c(%rbp)
  jmp    L110
L194:
  mov    D112(%rip),%eax
  cmp    %eax,-0x6c(%rbp)
  jne    L22
  mov    D151(%rip),%edx
  mov    -0x6c(%rbp),%eax
  sub    %edx,%eax
  mov    %eax,-0x24(%rbp)
  mov    D151(%rip),%eax
  add    $0x1,%eax
  mov    %eax,D99(%rip)
  mov    D112(%rip),%eax
  add    $0x10,%eax
  mov    %eax,D99(%rip)
  jmp    L165
L22:
  mov    D99(%rip),%edx
  mov    -0x6c(%rbp),%eax
  sub    %edx,%eax
  mov    %eax,-0x24(%rbp)
L165:
  mov    -0x24(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  jne    L30
  mov    -0x24(%rbp),%eax
  sar    %eax
  mov    %eax,-0x20(%rbp)
  mov    -0x20(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
  movzwl -0x78(%rbp),%eax
  mov    -0x20(%rbp),%edx
  imul   %edx,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%eax
  mov    %eax,-0x28(%rbp)
  jmp    L61
L30:
  mov    -0x24(%rbp),%eax
  sub    $0x1,%eax
  sar    %eax
  mov    %eax,-0x20(%rbp)
  mov    -0x20(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x1c(%rbp)
  movzwl -0x78(%rbp),%eax
  mov    -0x20(%rbp),%edx
  imul   %edx,%eax
  mov    %eax,-0x2c(%rbp)
  movzwl -0x78(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x28(%rbp)
L61:
  movl   $0x0,-0x70(%rbp)
  jmp    L66
L65:
  mov    -0x70(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  jne    L172
  mov    -0x70(%rbp),%eax
  sar    %eax
  mov    %eax,-0x18(%rbp)
  mov    -0x2c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x28(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x10(%rbp),%eax
  sar    $0xb,%eax
  mov    %eax,-0x44(%rbp)
  mov    -0x44(%rbp),%eax
  mov    %eax,-0x50(%rbp)
  mov    -0x8(%rbp),%eax
  sar    $0xb,%eax
  mov    %eax,-0x5c(%rbp)
  mov    -0x5c(%rbp),%eax
  mov    %eax,-0x68(%rbp)
  mov    -0x10(%rbp),%eax
  sar    $0x5,%eax
  and    $0x3f,%eax
  mov    %eax,-0x40(%rbp)
  mov    -0x40(%rbp),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x8(%rbp),%eax
  sar    $0x5,%eax
  and    $0x3f,%eax
  mov    %eax,-0x58(%rbp)
  mov    -0x58(%rbp),%eax
  mov    %eax,-0x64(%rbp)
  mov    -0x10(%rbp),%eax
  and    $0x1f,%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  mov    %eax,-0x48(%rbp)
  mov    -0x8(%rbp),%eax
  and    $0x1f,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x60(%rbp)
  jmp    L102
L172:
  mov    -0x70(%rbp),%eax
  sub    $0x1,%eax
  sar    %eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x2c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x2c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x28(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x28(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  add    %rdx,%rax
  lea    (%rax,%rax,1),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  movzwl (%rax),%eax
  movzwl %ax,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x10(%rbp),%eax
  sar    $0xb,%eax
  mov    %eax,-0x44(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0xb,%eax
  mov    %eax,-0x50(%rbp)
  mov    -0x8(%rbp),%eax
  sar    $0xb,%eax
  mov    %eax,-0x5c(%rbp)
  mov    -0x4(%rbp),%eax
  sar    $0xb,%eax
  mov    %eax,-0x68(%rbp)
  mov    -0x10(%rbp),%eax
  sar    $0x5,%eax
  and    $0x3f,%eax
  mov    %eax,-0x40(%rbp)
  mov    -0xc(%rbp),%eax
  sar    $0x5,%eax
  and    $0x3f,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x8(%rbp),%eax
  sar    $0x5,%eax
  and    $0x3f,%eax
  mov    %eax,-0x58(%rbp)
  mov    -0x4(%rbp),%eax
  sar    $0x5,%eax
  and    $0x3f,%eax
  mov    %eax,-0x64(%rbp)
  mov    -0x10(%rbp),%eax
  and    $0x1f,%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0xc(%rbp),%eax
  and    $0x1f,%eax
  mov    %eax,-0x48(%rbp)
  mov    -0x8(%rbp),%eax
  and    $0x1f,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x4(%rbp),%eax
  and    $0x1f,%eax
  mov    %eax,-0x60(%rbp)
L102:
  mov    -0x24(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  jne    L51
  mov    -0x44(%rbp),%edx
  mov    -0x50(%rbp),%eax
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x38(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x34(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x48(%rbp),%eax
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x30(%rbp)
  jmp    L150
L51:
  mov    -0x70(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  jne    L131
  mov    -0x44(%rbp),%edx
  mov    -0x5c(%rbp),%eax
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x38(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x58(%rbp),%eax
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x34(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x54(%rbp),%eax
  add    %edx,%eax
  sar    %eax
  mov    %eax,-0x30(%rbp)
  jmp    L150
L131:
  mov    -0x44(%rbp),%edx
  mov    -0x50(%rbp),%eax
  add    %eax,%edx
  mov    -0x5c(%rbp),%eax
  add    %eax,%edx
  mov    -0x68(%rbp),%eax
  add    %edx,%eax
  sar    $0x2,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x4c(%rbp),%eax
  add    %eax,%edx
  mov    -0x58(%rbp),%eax
  add    %eax,%edx
  mov    -0x64(%rbp),%eax
  add    %edx,%eax
  sar    $0x2,%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x48(%rbp),%eax
  add    %eax,%edx
  mov    -0x54(%rbp),%eax
  add    %eax,%edx
  mov    -0x60(%rbp),%eax
  add    %edx,%eax
  sar    $0x2,%eax
  mov    %eax,-0x30(%rbp)
L150:
  mov    -0x38(%rbp),%eax
  movzwl %ax,%eax
  shl    $0xb,%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  movzwl %ax,%eax
  shl    $0x5,%eax
  and    $0x7ff,%ax
  or     %eax,%edx
  mov    -0x30(%rbp),%eax
  and    $0x1f,%eax
  mov    %edx,%ecx
  or     %eax,%ecx
  mov    D174(%rip),%esi
  mov    -0x6c(%rbp),%eax
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  shl    $0x8,%eax
  mov    %eax,%edx
  mov    -0x70(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    (%rax,%rax,1),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    %ecx,%edx
  mov    %dx,(%rax)
  addl   $0x1,-0x70(%rbp)
L66:
  cmpl   $0x4ff,-0x70(%rbp)
  jle    L65
  addl   $0x1,-0x6c(%rbp)
L110:
  mov    D174(%rip),%eax
  add    $0xf,%eax
  cmp    %eax,-0x6c(%rbp)
  jle    L194
  mov    D174(%rip),%eax
  add    $0x10,%eax
  mov    %eax,D99(%rip)
  mov    D99(%rip),%eax
  cmp    $0x400,%eax
  jne    L195
  movl   $0x0,D99(%rip)
L195:
  mov    D99(%rip),%eax
  cmp    $0x400,%eax
  jne    L0
  movl   $0x0,D99(%rip)
L0:
  mov    D99(%rip),%eax
  cmp    $0x40,%eax
  jne    L156
  movl   $0x0,D99(%rip)
L156:
  mov    $0x1,%eax
L113:
  leave
  ret
```

assistant: ```c
int MMF_ISP_VGAto1280_1024New(unsigned short hei, unsigned short wid, unsigned short *rgb_buf, unsigned short *output_buf) {
  int x, y;
  int m_min, n_min, m_max, n_max;
  int R_max_max, G_max_max, B_max_max;
  int R_max_min, G_max_min, B_max_min;
  int R_min_max, G_min_max, B_min_max;
  int R_min_min, G_min_min, B_min_min;
  int piex_min_min;
  int piex_min_max;
  int piex_max_min;
  int piex_max_max;
  int R, G, B;
  int row_min, row_max;
  int y_temp;
  static int line_temp = 0;
  static int a = 0;
  static int u = 0;
  if (rgb_buf == 0)
    return -1;
  if ((hei != 480) || (wid != 640)) {
    return -1;
  }
  for (y = line_temp; y < line_temp + 16; y++) {
    if (y == a) {
      y_temp = y - u;
      u++;
      a = a + 16;
    } else {
      y_temp = y - u;
    }
    if ((y_temp & 0x0001) == 0) {
      m_min = (y_temp >> 1);
      m_max = m_min;
      row_min = m_min * wid;
      row_max = row_min;
    } else {
      m_min = ((y_temp - 1) >> 1);
      m_max = m_min + 1;
      row_min = m_min * wid;
      row_max = row_min + wid;
    }
    for (x = 0; x < 1280; x++) {
      if ((x & 0x0001) == 0) {
        n_min = (x >> 1);
        piex_min_min = (int)(*(rgb_buf + row_min + n_min));
        piex_max_min = (int)(*(rgb_buf + row_max + n_min));
        R_min_min = (int)(piex_min_min >> 11);
        R_min_max = R_min_min;
        R_max_min = (int)(piex_max_min >> 11);
        R_max_max = R_max_min;
        G_min_min = (int)((piex_min_min & 0x07ff) >> 5);
        G_min_max = G_min_min;
        G_max_min = (int)((piex_max_min & 0x07ff) >> 5);
        G_max_max = G_max_min;
        B_min_min = (int)(piex_min_min & 0x001f);
        B_min_max = B_min_min;
        B_max_min = (int)(piex_max_min & 0x001f);
        B_max_max = B_max_min;
      } else {
        n_min = ((x - 1) >> 1);
        n_max = n_min + 1;
        piex_min_min = (int)(*(rgb_buf + row_min + n_min));
        piex_min_max = (int)(*(rgb_buf + row_min + n_max));
        piex_max_min = (int)(*(rgb_buf + row_max + n_min));
        piex_max_max = (int)(*(rgb_buf + row_max + n_max));
        R_min_min = (int)(piex_min_min >> 11);
        R_min_max = (int)(piex_min_max >> 11);
        R_max_min = (int)(piex_max_min >> 11);
        R_max_max = (int)(piex_max_max >> 11);
        G_min_min = (int)((piex_min_min & 0x07ff) >> 5);
        G_min_max = (int)((piex_min_max & 0x07ff) >> 5);
        G_max_min = (int)((piex_max_min & 0x07ff) >> 5);
        G_max_max = (int)((piex_max_max & 0x07ff) >> 5);
        B_min_min = (int)(piex_min_min & 0x001f);
        B_min_max = (int)(piex_min_max & 0x001f);
        B_max_min = (int)(piex_max_min & 0x001f);
        B_max_max = (int)(piex_max_max & 0x001f);
      }
      if ((y_temp & 0x0001) == 0) {
        R = (R_min_min + R_min_max) >> 1;
        G = (G_min_min + G_min_max) >> 1;
        B = (B_min_min + B_min_max) >> 1;
      } else if ((x & 0x0001) == 0) {
        R = (R_min_min + R_max_min) >> 1;
        G = (G_min_min + G_max_min) >> 1;
        B = (B_min_min + B_max_min) >> 1;
      } else {
        R = (R_min_min + R_min_max + R_max_min + R_max_max) >> 2;
        G = (G_min_min + G_min_max + G_max_min + G_max_max) >> 2;
        B = (B_min_min + B_min_max + B_max_min + B_max_max) >> 2;
      }
      output_buf[(y - line_temp) * 1280 + x] = ((unsigned short)R << 11) | (((unsigned short)G << 5) & 0x07ff) | ((unsigned short)B & 0x001f);
    }
  }
  line_temp = line_temp + 16;
  if (line_temp == 1024) {
    line_temp = 0;
  }
  if (a == 1024) {
    a = 0;
  }
  if (u == 64) {
    u = 0;
  }
  return 1;
}
```