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

```asm
<lexdeg>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  movb   $0x41,-0x11(%rbp)
  cmpq   $0x0,-0x30(%rbp)
  jne    L120
  mov    $0x0,%eax
  jmp    L152
L120:
  cmpq   $0x0,-0x28(%rbp)
  jne    L71
  mov    $0x1,%eax
  jmp    L152
L71:
  movsbl -0x11(%rbp),%edx
  mov    -0x30(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x8(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  je     L112
  movsbl -0x11(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x8(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  je     L65
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x10(%rbp)
  jmp    L161
L27:
  movsbl -0x11(%rbp),%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x8(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  je     L161
  addl   $0x1,-0x10(%rbp)
  addq   $0x1,-0x8(%rbp)
L161:
  cmpq   $0x0,-0x8(%rbp)
  jne    L27
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0xc(%rbp)
  jmp    L35
L114:
  movsbl -0x11(%rbp),%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x8(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  je     L35
  addl   $0x1,-0xc(%rbp)
  addq   $0x1,-0x8(%rbp)
L35:
  cmpq   $0x0,-0x8(%rbp)
  jne    L114
  mov    -0xc(%rbp),%eax
  cmp    -0x10(%rbp),%eax
  jle    L92
  mov    $0x1,%eax
  jmp    L152
L92:
  mov    -0xc(%rbp),%eax
  cmp    -0x10(%rbp),%eax
  jge    L66
  mov    $0x0,%eax
  jmp    L152
L65:
  mov    $0x1,%eax
  jmp    L152
L112:
  movsbl -0x11(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x8(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  je     L66
  mov    $0x0,%eax
  jmp    L152
L66:
  cmpb   $0x5a,-0x11(%rbp)
  jne    L11
  movb   $0x61,-0x11(%rbp)
  jmp    L128
L11:
  movzbl -0x11(%rbp),%eax
  add    $0x1,%eax
  mov    %al,-0x11(%rbp)
L128:
  cmpb   $0x7a,-0x11(%rbp)
  jle    L71
  mov    $0x0,%eax
L152:
  leave
  ret
```

assistant: ```c
int lexdeg(char *primeiro, char *segundo) {
  char parametro = 'A';
  char *p_deg;
  int deg_1, deg_2;
  if (segundo == NULL)
    return 0;
  else if (primeiro == NULL)
    return 1;
  while (1) {
    if ((p_deg = strchr(segundo, parametro)) != NULL) {
      if ((p_deg = strchr(primeiro, parametro)) != NULL) {
        p_deg = primeiro;
        deg_1 = 0;
        while (p_deg != NULL) {
          p_deg = strchr(p_deg, parametro);
          if (p_deg != NULL) {
            deg_1 += 1;
            p_deg += 1;
          }
        }
        p_deg = segundo;
        deg_2 = 0;
        while (p_deg != NULL) {
          p_deg = strchr(p_deg, parametro);
          if (p_deg != NULL) {
            deg_2 += 1;
            p_deg += 1;
          }
        }
        if (deg_2 > deg_1) {
          return 1;
        } else if (deg_2 < deg_1) {
          return 0;
        }
      } else
        return 1;
    } else if ((p_deg = strchr(primeiro, parametro)) != NULL) {
      return 0;
    }
    if (parametro == 'Z') {
      parametro = 'a';
    } else
      parametro += 1;
    if (parametro > 'z') {
      return (0);
    }
  }
}
```