// File: /workspace/github_c_makefile_star2_O0/GangZhuo[P]dohclient/http-parser/http_parser.c
// Function: parse_url_char
static enum state
parse_url_char(enum state s, const char ch)
{
  if (ch == ' ' || ch == '\r' || ch == '\n') {
    return s_dead;
  }

#if HTTP_PARSER_STRICT
  if (ch == '\t' || ch == '\f') {
    return s_dead;
  }
#endif

  switch (s) {
    case s_req_spaces_before_url:
      /* Proxied requests are followed by scheme of an absolute URI (alpha).
       * All methods except CONNECT are followed by '/' or '*'.
       */

      if (ch == '/' || ch == '*') {
        return s_req_path;
      }

      if (IS_ALPHA(ch)) {
        return s_req_schema;
      }

      break;

    case s_req_schema:
      if (IS_ALPHA(ch)) {
        return s;
      }

      if (ch == ':') {
        return s_req_schema_slash;
      }

      break;

    case s_req_schema_slash:
      if (ch == '/') {
        return s_req_schema_slash_slash;
      }

      break;

    case s_req_schema_slash_slash:
      if (ch == '/') {
        return s_req_server_start;
      }

      break;

    case s_req_server_with_at:
      if (ch == '@') {
        return s_dead;
      }

    /* fall through */
    case s_req_server_start:
    case s_req_server:
      if (ch == '/') {
        return s_req_path;
      }

      if (ch == '?') {
        return s_req_query_string_start;
      }

      if (ch == '@') {
        return s_req_server_with_at;
      }

      if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') {
        return s_req_server;
      }

      break;

    case s_req_path:
      if (IS_URL_CHAR(ch)) {
        return s;
      }

      switch (ch) {
        case '?':
          return s_req_query_string_start;

        case '#':
          return s_req_fragment_start;
      }

      break;

    case s_req_query_string_start:
    case s_req_query_string:
      if (IS_URL_CHAR(ch)) {
        return s_req_query_string;
      }

      switch (ch) {
        case '?':
          /* allow extra '?' in query string */
          return s_req_query_string;

        case '#':
          return s_req_fragment_start;
      }

      break;

    case s_req_fragment_start:
      if (IS_URL_CHAR(ch)) {
        return s_req_fragment;
      }

      switch (ch) {
        case '?':
          return s_req_fragment;

        case '#':
          return s;
      }

      break;

    case s_req_fragment:
      if (IS_URL_CHAR(ch)) {
        return s;
      }

      switch (ch) {
        case '?':
        case '#':
          return s;
      }

      break;

    default:
      break;
  }

  /* We should never fall out of the switch above unless there's an error */
  return s_dead;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movb %sil, %al
movl %edi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movsbl -0x9(%rbp), %eax
cmpl $0x20, %eax
je 0xa338
movsbl -0x9(%rbp), %eax
cmpl $0xd, %eax
je 0xa338
movsbl -0x9(%rbp), %eax
cmpl $0xa, %eax
jne 0xa344
movl $0x1, -0x4(%rbp)
jmp 0xa748
movsbl -0x9(%rbp), %eax
cmpl $0x9, %eax
je 0xa356
movsbl -0x9(%rbp), %eax
cmpl $0xc, %eax
jne 0xa362
movl $0x1, -0x4(%rbp)
jmp 0xa748
movl -0x8(%rbp), %eax
addl $-0x14, %eax
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0xb, %eax
ja 0xa73f
movq -0x18(%rbp), %rax
leaq 0x29f52(%rip), %rcx     # 0x342d4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsbl -0x9(%rbp), %eax
cmpl $0x2f, %eax
je 0xa39d
movsbl -0x9(%rbp), %eax
cmpl $0x2a, %eax
jne 0xa3a9
movl $0x1b, -0x4(%rbp)
jmp 0xa748
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x61, %eax
jl 0xa3d3
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x7a, %eax
jg 0xa3d3
movl $0x15, -0x4(%rbp)
jmp 0xa748
jmp 0xa741
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x61, %eax
jl 0xa401
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x7a, %eax
jg 0xa401
movl -0x8(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xa748
movsbl -0x9(%rbp), %eax
cmpl $0x3a, %eax
jne 0xa416
movl $0x16, -0x4(%rbp)
jmp 0xa748
jmp 0xa741
movsbl -0x9(%rbp), %eax
cmpl $0x2f, %eax
jne 0xa430
movl $0x17, -0x4(%rbp)
jmp 0xa748
jmp 0xa741
movsbl -0x9(%rbp), %eax
cmpl $0x2f, %eax
jne 0xa44a
movl $0x18, -0x4(%rbp)
jmp 0xa748
jmp 0xa741
movsbl -0x9(%rbp), %eax
cmpl $0x40, %eax
jne 0xa464
movl $0x1, -0x4(%rbp)
jmp 0xa748
jmp 0xa466
movsbl -0x9(%rbp), %eax
cmpl $0x2f, %eax
jne 0xa47b
movl $0x1b, -0x4(%rbp)
jmp 0xa748
movsbl -0x9(%rbp), %eax
cmpl $0x3f, %eax
jne 0xa490
movl $0x1c, -0x4(%rbp)
jmp 0xa748
movsbl -0x9(%rbp), %eax
cmpl $0x40, %eax
jne 0xa4a5
movl $0x1a, -0x4(%rbp)
jmp 0xa748
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x61, %eax
jl 0xa4c7
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x7a, %eax
jle 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x30, %eax
jl 0xa4dd
movsbl -0x9(%rbp), %eax
cmpl $0x39, %eax
jle 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x2d, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x5f, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x2e, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x21, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x7e, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x2a, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x27, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x28, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x29, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x25, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x3b, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x3a, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x26, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x3d, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x2b, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x24, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x2c, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x5b, %eax
je 0xa598
movsbl -0x9(%rbp), %eax
cmpl $0x5d, %eax
jne 0xa5a4
movl $0x19, -0x4(%rbp)
jmp 0xa748
jmp 0xa741
movzbl -0x9(%rbp), %eax
shrl $0x3, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2a495(%rip), %rax     # 0x34a50
movzbl (%rax,%rcx), %eax
movzbl -0x9(%rbp), %ecx
andl $0x7, %ecx
movl $0x1, %edx
shll %cl, %edx
movl %edx, %ecx
andl %ecx, %eax
cmpl $0x0, %eax
je 0xa5e1
movl -0x8(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xa748
movsbl -0x9(%rbp), %eax
movl %eax, -0x1c(%rbp)
subl $0x23, %eax
je 0xa605
jmp 0xa5ef
movl -0x1c(%rbp), %eax
subl $0x3f, %eax
jne 0xa611
jmp 0xa5f9
movl $0x1c, -0x4(%rbp)
jmp 0xa748
movl $0x1e, -0x4(%rbp)
jmp 0xa748
jmp 0xa741
movzbl -0x9(%rbp), %eax
shrl $0x3, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2a428(%rip), %rax     # 0x34a50
movzbl (%rax,%rcx), %eax
movzbl -0x9(%rbp), %ecx
andl $0x7, %ecx
movl $0x1, %edx
shll %cl, %edx
movl %edx, %ecx
andl %ecx, %eax
cmpl $0x0, %eax
je 0xa64f
movl $0x1d, -0x4(%rbp)
jmp 0xa748
movsbl -0x9(%rbp), %eax
movl %eax, -0x20(%rbp)
subl $0x23, %eax
je 0xa673
jmp 0xa65d
movl -0x20(%rbp), %eax
subl $0x3f, %eax
jne 0xa67f
jmp 0xa667
movl $0x1d, -0x4(%rbp)
jmp 0xa748
movl $0x1e, -0x4(%rbp)
jmp 0xa748
jmp 0xa741
movzbl -0x9(%rbp), %eax
shrl $0x3, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2a3ba(%rip), %rax     # 0x34a50
movzbl (%rax,%rcx), %eax
movzbl -0x9(%rbp), %ecx
andl $0x7, %ecx
movl $0x1, %edx
shll %cl, %edx
movl %edx, %ecx
andl %ecx, %eax
cmpl $0x0, %eax
je 0xa6bd
movl $0x1f, -0x4(%rbp)
jmp 0xa748
movsbl -0x9(%rbp), %eax
movl %eax, -0x24(%rbp)
subl $0x23, %eax
je 0xa6de
jmp 0xa6cb
movl -0x24(%rbp), %eax
subl $0x3f, %eax
jne 0xa6e6
jmp 0xa6d5
movl $0x1f, -0x4(%rbp)
jmp 0xa748
movl -0x8(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xa748
jmp 0xa741
movzbl -0x9(%rbp), %eax
shrl $0x3, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2a356(%rip), %rax     # 0x34a50
movzbl (%rax,%rcx), %eax
movzbl -0x9(%rbp), %ecx
andl $0x7, %ecx
movl $0x1, %edx
shll %cl, %edx
movl %edx, %ecx
andl %ecx, %eax
cmpl $0x0, %eax
je 0xa71d
movl -0x8(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xa748
movsbl -0x9(%rbp), %eax
movl %eax, -0x28(%rbp)
subl $0x23, %eax
je 0xa735
jmp 0xa72b
movl -0x28(%rbp), %eax
subl $0x3f, %eax
jne 0xa73d
jmp 0xa735
movl -0x8(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xa748
jmp 0xa741
jmp 0xa741
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopl (%rax)