// File: /workspace/github_c_makefile_star2_O0/marcomorain[P]garcon/http_parser.c
// Function: http_parse_host_char
static enum http_host_state
http_parse_host_char(enum http_host_state s, const char ch) {
  switch(s) {
    case s_http_userinfo:
    case s_http_userinfo_start:
      if (ch == '@') {
        return s_http_host_start;
      }

      if (IS_USERINFO_CHAR(ch)) {
        return s_http_userinfo;
      }
      break;

    case s_http_host_start:
      if (ch == '[') {
        return s_http_host_v6_start;
      }

      if (IS_HOST_CHAR(ch)) {
        return s_http_host;
      }

      break;

    case s_http_host:
      if (IS_HOST_CHAR(ch)) {
        return s_http_host;
      }

    /* FALLTHROUGH */
    case s_http_host_v6_end:
      if (ch == ':') {
        return s_http_host_port_start;
      }

      break;

    case s_http_host_v6:
      if (ch == ']') {
        return s_http_host_v6_end;
      }

    /* FALLTHROUGH */
    case s_http_host_v6_start:
      if (IS_HEX(ch) || ch == ':' || ch == '.') {
        return s_http_host_v6;
      }

      break;

    case s_http_host_port:
    case s_http_host_port_start:
      if (IS_NUM(ch)) {
        return s_http_host_port;
      }

      break;

    default:
      break;
  }
  return s_http_host_dead;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movb %sil, %al
movl %edi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movl -0x8(%rbp), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0x8, %eax
ja 0x9345
movq -0x18(%rbp), %rax
leaq 0x2707(%rip), %rcx      # 0xb7f4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsbl -0x9(%rbp), %eax
cmpl $0x40, %eax
jne 0x910b
movl $0x4, -0x4(%rbp)
jmp 0x934e
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x61, %eax
jl 0x912d
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x7a, %eax
jle 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x30, %eax
jl 0x9143
movsbl -0x9(%rbp), %eax
cmpl $0x39, %eax
jle 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x2d, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x5f, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x2e, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x21, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x7e, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x2a, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x27, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x28, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x29, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x25, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x3b, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x3a, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x26, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x3d, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x2b, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x24, %eax
je 0x91e4
movsbl -0x9(%rbp), %eax
cmpl $0x2c, %eax
jne 0x91f0
movl $0x3, -0x4(%rbp)
jmp 0x934e
jmp 0x9347
movsbl -0x9(%rbp), %eax
cmpl $0x5b, %eax
jne 0x920a
movl $0x5, -0x4(%rbp)
jmp 0x934e
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x61, %eax
jl 0x9228
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x7a, %eax
jle 0x924c
movsbl -0x9(%rbp), %eax
cmpl $0x30, %eax
jl 0x923a
movsbl -0x9(%rbp), %eax
cmpl $0x39, %eax
jle 0x924c
movsbl -0x9(%rbp), %eax
cmpl $0x2e, %eax
je 0x924c
movsbl -0x9(%rbp), %eax
cmpl $0x2d, %eax
jne 0x9258
movl $0x6, -0x4(%rbp)
jmp 0x934e
jmp 0x9347
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x61, %eax
jl 0x927b
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x7a, %eax
jle 0x929f
movsbl -0x9(%rbp), %eax
cmpl $0x30, %eax
jl 0x928d
movsbl -0x9(%rbp), %eax
cmpl $0x39, %eax
jle 0x929f
movsbl -0x9(%rbp), %eax
cmpl $0x2e, %eax
je 0x929f
movsbl -0x9(%rbp), %eax
cmpl $0x2d, %eax
jne 0x92ab
movl $0x6, -0x4(%rbp)
jmp 0x934e
jmp 0x92ad
movsbl -0x9(%rbp), %eax
cmpl $0x3a, %eax
jne 0x92c2
movl $0x9, -0x4(%rbp)
jmp 0x934e
jmp 0x9347
movsbl -0x9(%rbp), %eax
cmpl $0x5d, %eax
jne 0x92d9
movl $0x8, -0x4(%rbp)
jmp 0x934e
jmp 0x92db
movsbl -0x9(%rbp), %eax
cmpl $0x30, %eax
jl 0x92ed
movsbl -0x9(%rbp), %eax
cmpl $0x39, %eax
jle 0x931d
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x61, %eax
jl 0x930b
movsbl -0x9(%rbp), %eax
orl $0x20, %eax
movzbl %al, %eax
cmpl $0x66, %eax
jle 0x931d
movsbl -0x9(%rbp), %eax
cmpl $0x3a, %eax
je 0x931d
movsbl -0x9(%rbp), %eax
cmpl $0x2e, %eax
jne 0x9326
movl $0x7, -0x4(%rbp)
jmp 0x934e
jmp 0x9347
movsbl -0x9(%rbp), %eax
cmpl $0x30, %eax
jl 0x9343
movsbl -0x9(%rbp), %eax
cmpl $0x39, %eax
jg 0x9343
movl $0xa, -0x4(%rbp)
jmp 0x934e
jmp 0x9347
jmp 0x9347
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)