user: 请将以下的汇编代码转换成C语言代码：

```asm
<feed_tty_read_escape_sequence>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x10(%rbp),%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x28(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <feed_tty_read_unicode_character@plt>
  mov    %al,-0x12(%rbp)
  cmpb   $0x0,-0x12(%rbp)
  je     L53
  mov    -0x10(%rbp),%rax
  cmp    $0x1b,%rax
  jne    L53
  lea    -0x10(%rbp),%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x28(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <feed_tty_read_unicode_character@plt>
  mov    %al,-0x12(%rbp)
  cmpb   $0x0,-0x12(%rbp)
  je     L53
  mov    -0x10(%rbp),%rax
  cmp    $0x5b,%rax
  jne    L75
  movb   $0x1,-0x11(%rbp)
  jmp    L136
L161:
  lea    -0x10(%rbp),%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x28(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <feed_tty_read_unicode_character@plt>
  mov    %al,-0x12(%rbp)
  cmpb   $0x0,-0x12(%rbp)
  je     L136
  mov    -0x10(%rbp),%rax
  cmp    $0x2f,%rax
  jbe    L109
  mov    -0x10(%rbp),%rax
  cmp    $0x3f,%rax
  ja     L109
  movb   $0x1,-0x11(%rbp)
  jmp    L136
L109:
  mov    -0x10(%rbp),%rax
  cmp    $0x3f,%rax
  jbe    L118
  mov    -0x10(%rbp),%rax
  cmp    $0x7f,%rax
  ja     L118
  movb   $0x0,-0x11(%rbp)
  jmp    L136
L118:
  movb   $0x0,-0x12(%rbp)
L136:
  cmpb   $0x0,-0x12(%rbp)
  je     L53
  cmpb   $0x0,-0x11(%rbp)
  jne    L161
  jmp    L53
L75:
  mov    -0x10(%rbp),%rax
  cmp    $0x4f,%rax
  je     L87
  mov    -0x10(%rbp),%rax
  cmp    $0x4e,%rax
  je     L87
  mov    -0x10(%rbp),%rax
  cmp    $0x28,%rax
  je     L87
  mov    -0x10(%rbp),%rax
  cmp    $0x29,%rax
  je     L87
  mov    -0x10(%rbp),%rax
  cmp    $0x23,%rax
  jne    L53
L87:
  lea    -0x10(%rbp),%rdx
  mov    -0x30(%rbp),%rcx
  mov    -0x28(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <feed_tty_read_unicode_character@plt>
  mov    %al,-0x12(%rbp)
L53:
  movzbl -0x12(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L158
  call   <__stack_chk_fail@plt>
L158:
  leave
  ret
```

assistant: ```c
char feed_tty_read_escape_sequence(struct feed_tty *const p_tty, struct feed_buf *const p_buf) {
  char b_result;
  unsigned long int i_value;
  b_result = feed_tty_read_unicode_character(p_tty, p_buf, &(i_value));
  if (b_result) {
    if ('\033' == i_value) {
      b_result = feed_tty_read_unicode_character(p_tty, p_buf, &(i_value));
      if (b_result) {
        if ('[' == i_value) {
          char b_more;
          b_more = 1;
          while (b_result && b_more) {
            b_result = feed_tty_read_unicode_character(p_tty, p_buf, &(i_value));
            if (b_result) {
              if ((i_value >= 0x30) && (i_value <= 0x3F)) {
                b_more = 1;
              } else if ((i_value >= 0x40) && (i_value <= 0x7F)) {
                b_more = 0;
              } else {
                b_result = 0;
              }
            }
          }
        } else if (('O' == i_value) || ('N' == i_value) || ('(' == i_value) || (')' == i_value) || ('#' == i_value)) {
          b_result = feed_tty_read_unicode_character(p_tty, p_buf, &(i_value));
        }
      }
    } else {
    }
  }
  return b_result;
}
```