user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<iCvmDoVerify>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  movl   $0x0,-0xc(%rbp)
  mov    -0x20(%rbp),%rax
  movl   $0x0,(%rax)
  movl   $0x1,-0x10(%rbp)
  movl   $0x0,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x3f,%eax
  cmp    $0x20,%eax
  ja     L333
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D0(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D0(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  movl   $0x1,-0xc(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x1,(%rax)
  jmp    L179
  mov    $0x8,%esi
  mov    $0x4,%edi
  call   <iEmvTestItemBit@plt>
  test   %eax,%eax
  je     L11
  movl   $0x1,-0xc(%rbp)
  mov    $0x0,%eax
  call   <iCvmVerifyOfflinePlainPin@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jne    L148
  movl   $0x1,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x2,(%rax)
  jmp    L179
L148:
  cmpl   $0xffffffff,-0x4(%rbp)
  jne    L315
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x1,(%rax)
  jmp    L179
L315:
  mov    -0x4(%rbp),%eax
  jmp    L464
  mov    $0x8,%esi
  mov    $0x4,%edi
  call   <iEmvTestItemBit@plt>
  test   %eax,%eax
  je     L136
  mov    $0xa,%esi
  mov    $0x4,%edi
  call   <iEmvTestItemBit@plt>
  test   %eax,%eax
  je     L113
  mov    -0x20(%rbp),%rax
  movl   $0x1,(%rax)
  movl   $0x1,-0xc(%rbp)
  mov    $0x0,%eax
  call   <iCvmVerifyOfflinePlainPin@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jne    L399
  movl   $0x1,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x0,(%rax)
  jmp    L179
L399:
  cmpl   $0xffffffff,-0x4(%rbp)
  jne    L293
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x1,(%rax)
  jmp    L179
L293:
  mov    -0x4(%rbp),%eax
  jmp    L464
  mov    $0x9,%esi
  mov    $0x4,%edi
  call   <iEmvTestItemBit@plt>
  test   %eax,%eax
  je     L234
  movl   $0x1,-0xc(%rbp)
  mov    $0x0,%eax
  call   <iCvmEnterOnlinePin@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jne    L272
  movl   $0x1,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x0,(%rax)
  mov    $0x1,%edx
  mov    $0x15,%esi
  mov    $0x2,%edi
  call   <iEmvSetItemBit@plt>
  jmp    L179
L272:
  cmpl   $0x1,-0x4(%rbp)
  jne    L281
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x1,(%rax)
  jmp    L179
L281:
  mov    -0x4(%rbp),%eax
  jmp    L464
  mov    $0xb,%esi
  mov    $0x4,%edi
  call   <iEmvTestItemBit@plt>
  test   %eax,%eax
  jmp    L179
  mov    $0xb,%esi
  mov    $0x4,%edi
  call   <iEmvTestItemBit@plt>
  test   %eax,%eax
  je     L121
  mov    $0xa,%esi
  mov    $0x4,%edi
  call   <iEmvTestItemBit@plt>
  test   %eax,%eax
  je     L232
  mov    -0x20(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L179
  mov    $0xa,%esi
  mov    $0x4,%edi
  call   <iEmvTestItemBit@plt>
  test   %eax,%eax
  je     L47
  movl   $0x1,-0xc(%rbp)
  mov    -0x20(%rbp),%rax
  movl   $0x1,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x0,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L179
  mov    $0xc,%esi
  mov    $0x4,%edi
  call   <iEmvTestItemBit@plt>
  test   %eax,%eax
  je     L157
  movl   $0x1,-0xc(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x2,(%rax)
  movl   $0x1,-0x8(%rbp)
  jmp    L179
  mov    $0xf,%esi
  mov    $0x4,%edi
  call   <iEmvTestItemBit@plt>
  test   %eax,%eax
  je     L134
  mov    $0x0,%eax
  call   <iEmvTermEnvironment@plt>
  cmp    $0x1,%eax
  jne    L88
  movl   $0x1,-0xc(%rbp)
  mov    $0x0,%eax
  call   <iCvmVerifyHolderId@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  jne    L38
  movl   $0x1,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x2,(%rax)
  jmp    L179
L38:
  cmpl   $0xffffffff,-0x4(%rbp)
  jne    L59
  mov    -0x18(%rbp),%rax
  add    $0x2,%rax
  movb   $0x1,(%rax)
  jmp    L179
L59:
  mov    -0x4(%rbp),%eax
  jmp    L464
L333:
  movl   $0x0,-0x10(%rbp)
  jmp    L179
L11:
  nop
  jmp    L179
L136:
  nop
  jmp    L179
L113:
  nop
  jmp    L179
L234:
  nop
  jmp    L179
L121:
  nop
  jmp    L179
L232:
  nop
  jmp    L179
L47:
  nop
  jmp    L179
L157:
  nop
  jmp    L179
L134:
  nop
  jmp    L179
L88:
  nop
L179:
  cmpl   $0x0,-0x10(%rbp)
  jne    L178
  mov    $0x1,%edx
  mov    $0x11,%esi
  mov    $0x2,%edi
  call   <iEmvSetItemBit@plt>
  mov    $0xffffffff,%eax
  jmp    L464
L178:
  cmpl   $0x0,-0xc(%rbp)
  jne    L502
  mov    $0xfffffffe,%eax
  jmp    L464
L502:
  cmpl   $0x0,-0x8(%rbp)
  jne    L377
  mov    $0xfffffffd,%eax
  jmp    L464
L377:
  mov    $0x0,%eax
L464:
  leave
  ret
```

assistant: ```c
int iCvmDoVerify(unsigned char *psCvmResult, int *piNeedSignFlag) {
  int iRet;
  int iCvmRecognisedFlag;
  int iCvmSupportFlag;
  int iCvmPassFlag;
  iCvmSupportFlag = 0;
  *piNeedSignFlag = 0;
  iCvmRecognisedFlag = 1;
  iCvmPassFlag = 0;
  switch (psCvmResult[0] & 0x3F) {
  case 0:
    iCvmSupportFlag = 1;
    psCvmResult[2] = 1;
    break;
  case 1:
    if (iEmvTestItemBit(4, 8) == 0)
      break;
    iCvmSupportFlag = 1;
    iRet = iCvmVerifyOfflinePlainPin();
    if (iRet == 0) {
      iCvmPassFlag = 1;
      psCvmResult[2] = 2;
      break;
    }
    if (iRet == -1) {
      psCvmResult[2] = 1;
      break;
    }
    return (iRet);
  case 3:
    if (iEmvTestItemBit(4, 8) == 0)
      break;
    if (iEmvTestItemBit(4, 10) == 0)
      break;
    *piNeedSignFlag = 1;
    iCvmSupportFlag = 1;
    iRet = iCvmVerifyOfflinePlainPin();
    if (iRet == 0) {
      iCvmPassFlag = 1;
      psCvmResult[2] = 0;
      break;
    }
    if (iRet == -1) {
      psCvmResult[2] = 1;
      break;
    }
    return (iRet);
  case 2:
    if (iEmvTestItemBit(4, 9) == 0)
      break;
    iCvmSupportFlag = 1;
    iRet = iCvmEnterOnlinePin();
    if (iRet == 0) {
      iCvmPassFlag = 1;
      psCvmResult[2] = 0;
      iEmvSetItemBit(2, 21, 1);
      break;
    }
    if (iRet == 1) {
      psCvmResult[2] = 1;
      break;
    }
    return (iRet);
    break;
  case 4:
    if (iEmvTestItemBit(4, 11) == 0)
      break;
    break;
  case 5:
    if (iEmvTestItemBit(4, 11) == 0)
      break;
    if (iEmvTestItemBit(4, 10) == 0)
      break;
    *piNeedSignFlag = 1;
    break;
  case 0x1E:
    if (iEmvTestItemBit(4, 10) == 0)
      break;
    iCvmSupportFlag = 1;
    *piNeedSignFlag = 1;
    psCvmResult[2] = 0;
    iCvmPassFlag = 1;
    break;
  case 0x1F:
    if (iEmvTestItemBit(4, 12) == 0)
      break;
    iCvmSupportFlag = 1;
    psCvmResult[2] = 2;
    iCvmPassFlag = 1;
    break;
  case 0x20:
    if (iEmvTestItemBit(4, 15) == 0)
      break;
    if (iEmvTermEnvironment() != 1)
      break;
    iCvmSupportFlag = 1;
    iRet = iCvmVerifyHolderId();
    if (iRet == 0) {
      iCvmPassFlag = 1;
      psCvmResult[2] = 2;
      break;
    }
    if (iRet == -1) {
      psCvmResult[2] = 1;
      break;
    }
    return (iRet);
    break;
  default:
    iCvmRecognisedFlag = 0;
    break;
  }
  if (iCvmRecognisedFlag == 0) {
    iEmvSetItemBit(2, 17, 1);
    return (-1);
  }
  if (iCvmSupportFlag == 0) {
    return (-2);
  }
  if (iCvmPassFlag == 0) {
    return (-3);
  }
  return (0);
}
```