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

```asm
<t1_init_ctxno_zc>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x24(%rbp)
  mov    %esi,-0x28(%rbp)
  movl   $0x0,-0x10(%rbp)
  mov    -0x24(%rbp),%eax
  and    $0x80,%eax
  test   %eax,%eax
  setne  %al
  movzbl %al,%edx
  mov    -0x24(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  setne  %al
  movzbl %al,%eax
  add    %edx,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x24(%rbp),%eax
  and    $0x10,%eax
  test   %eax,%eax
  setne  %al
  movzbl %al,%edx
  mov    -0x24(%rbp),%eax
  and    $0x40,%eax
  test   %eax,%eax
  setne  %al
  movzbl %al,%eax
  add    %edx,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x24(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  setne  %al
  movzbl %al,%edx
  mov    -0x24(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  setne  %al
  movzbl %al,%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  setne  %al
  movzbl %al,%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  setne  %al
  movzbl %al,%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  cmpl   $0x3,-0x28(%rbp)
  je     L31
  cmpl   $0x3,-0x28(%rbp)
  jg     L262
  cmpl   $0x1,-0x28(%rbp)
  jg     L103
  cmpl   $0x0,-0x28(%rbp)
  jns    L378
  jmp    L262
L103:
  cmpl   $0x2,-0x28(%rbp)
  jne    L262
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x14(%rbp),%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x14(%rbp)
L378:
  cmpl   $0x0,-0x18(%rbp)
  jne    L374
  cmpl   $0x0,-0x14(%rbp)
  jne    L124
  cmpl   $0x0,-0xc(%rbp)
  jne    L160
  movl   $0x0,-0x10(%rbp)
  jmp    L262
L160:
  cmpl   $0x1,-0xc(%rbp)
  jne    L231
  movl   $0x1,-0x10(%rbp)
  jmp    L262
L231:
  movl   $0x2,-0x10(%rbp)
  jmp    L262
L124:
  cmpl   $0x1,-0x14(%rbp)
  jne    L117
  movl   $0x3,-0x10(%rbp)
  jmp    L262
L117:
  movl   $0x4,-0x10(%rbp)
  jmp    L262
L374:
  cmpl   $0x1,-0x18(%rbp)
  jne    L368
  cmpl   $0x0,-0x14(%rbp)
  jne    L259
  cmpl   $0x0,-0xc(%rbp)
  jne    L278
  movl   $0x5,-0x10(%rbp)
  jmp    L262
L278:
  movl   $0x6,-0x10(%rbp)
  jmp    L262
L259:
  movl   $0x7,-0x10(%rbp)
  jmp    L262
L368:
  movl   $0x8,-0x10(%rbp)
  jmp    L262
L31:
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x8(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  jne    L312
  cmpl   $0x0,-0x8(%rbp)
  jne    L58
  movl   $0x0,-0x10(%rbp)
  jmp    L331
L58:
  cmpl   $0x1,-0x8(%rbp)
  jne    L269
  movl   $0x1,-0x10(%rbp)
  jmp    L331
L269:
  movl   $0x2,-0x10(%rbp)
  jmp    L331
L312:
  cmpl   $0x1,-0xc(%rbp)
  jne    L199
  cmpl   $0x0,-0x8(%rbp)
  jne    L36
  movl   $0x3,-0x10(%rbp)
  jmp    L331
L36:
  cmpl   $0x1,-0x8(%rbp)
  jne    L208
  movl   $0x4,-0x10(%rbp)
  jmp    L331
L208:
  movl   $0x5,-0x10(%rbp)
  jmp    L331
L199:
  cmpl   $0x2,-0xc(%rbp)
  jne    L305
  cmpl   $0x0,-0x8(%rbp)
  jne    L324
  movl   $0x6,-0x10(%rbp)
  jmp    L331
L324:
  movl   $0x7,-0x10(%rbp)
  jmp    L331
L305:
  movl   $0x8,-0x10(%rbp)
L331:
  nop
L262:
  mov    -0x10(%rbp),%eax
  add    $0x1,%eax
  pop    %rbp
  ret
```

assistant: ```c
int t1_init_ctxno_zc(int f, int orient) {
  int h, v, d, n, t, hv;
  n = 0;
  h = ((f & 0x0080) != 0) + ((f & 0x0020) != 0);
  v = ((f & 0x0010) != 0) + ((f & 0x0040) != 0);
  d = ((f & 0x0008) != 0) + ((f & 0x0001) != 0) + ((f & 0x0002) != 0) + ((f & 0x0004) != 0);
  switch (orient) {
  case 2:
    t = h;
    h = v;
    v = t;
  case 0:
  case 1:
    if (!h) {
      if (!v) {
        if (!d)
          n = 0;
        else if (d == 1)
          n = 1;
        else
          n = 2;
      } else if (v == 1) {
        n = 3;
      } else {
        n = 4;
      }
    } else if (h == 1) {
      if (!v) {
        if (!d)
          n = 5;
        else
          n = 6;
      } else {
        n = 7;
      }
    } else
      n = 8;
    break;
  case 3:
    hv = h + v;
    if (!d) {
      if (!hv) {
        n = 0;
      } else if (hv == 1) {
        n = 1;
      } else {
        n = 2;
      }
    } else if (d == 1) {
      if (!hv) {
        n = 3;
      } else if (hv == 1) {
        n = 4;
      } else {
        n = 5;
      }
    } else if (d == 2) {
      if (!hv) {
        n = 6;
      } else {
        n = 7;
      }
    } else {
      n = 8;
    }
    break;
  }
  return ((0 + 1) + n);
}
```