// File: /workspace/github_c_makefile_star2_O0/mijallen[P]SimpleHTTPServer/lib/libyaml/src/emitter.c
// Function: yaml_emitter_analyze_tag_directive
static int
yaml_emitter_analyze_tag_directive(yaml_emitter_t *emitter,
        yaml_tag_directive_t tag_directive)
{
    yaml_string_t handle;
    yaml_string_t prefix;
    size_t handle_length;
    size_t prefix_length;

    handle_length = strlen((char *)tag_directive.handle);
    prefix_length = strlen((char *)tag_directive.prefix);
    STRING_ASSIGN(handle, tag_directive.handle, handle_length);
    STRING_ASSIGN(prefix, tag_directive.prefix, prefix_length);

    if (handle.start == handle.end) {
        return yaml_emitter_set_emitter_error(emitter,
                "tag handle must not be empty");
    }

    if (handle.start[0] != '!') {
        return yaml_emitter_set_emitter_error(emitter,
                "tag handle must start with '!'");
    }

    if (handle.end[-1] != '!') {
        return yaml_emitter_set_emitter_error(emitter,
                "tag handle must end with '!'");
    }

    handle.pointer ++;

    while (handle.pointer < handle.end-1) {
        if (!IS_ALPHA(handle)) {
            return yaml_emitter_set_emitter_error(emitter,
                    "tag handle must contain alphanumerical characters only");
        }
        MOVE(handle);
    }

    if (prefix.start == prefix.end) {
        return yaml_emitter_set_emitter_error(emitter,
                "tag prefix must not be empty");
    }

    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rsi, -0x18(%rbp)
movq %rdx, -0x10(%rbp)
movq %rdi, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0x20d0
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
callq 0x20d0
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
addq -0x58(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rax
addq -0x60(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
cmpq -0x30(%rbp), %rax
jne 0x20d28
movq -0x20(%rbp), %rdi
leaq 0xc08f(%rip), %rsi      # 0x2cdaa
callq 0x20b90
movl %eax, -0x4(%rbp)
jmp 0x20ec7
movq -0x38(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x21, %eax
je 0x20d4c
movq -0x20(%rbp), %rdi
leaq 0xc088(%rip), %rsi      # 0x2cdc7
callq 0x20b90
movl %eax, -0x4(%rbp)
jmp 0x20ec7
movq -0x30(%rbp), %rax
movzbl -0x1(%rax), %eax
cmpl $0x21, %eax
je 0x20d71
movq -0x20(%rbp), %rdi
leaq 0xc082(%rip), %rsi      # 0x2cde6
callq 0x20b90
movl %eax, -0x4(%rbp)
jmp 0x20ec7
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq -0x30(%rbp), %rcx
addq $-0x1, %rcx
cmpq %rcx, %rax
jae 0x20ea1
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x30, %eax
jl 0x20daa
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x39, %eax
jle 0x20e0a
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x41, %eax
jl 0x20dc2
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x5a, %eax
jle 0x20e0a
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x61, %eax
jl 0x20dda
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x7a, %eax
jle 0x20e0a
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x5f, %eax
je 0x20e0a
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x2d, %eax
je 0x20e0a
movq -0x20(%rbp), %rdi
leaq 0xc006(%rip), %rsi      # 0x2ce03
callq 0x20b90
movl %eax, -0x4(%rbp)
jmp 0x20ec7
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
jne 0x20e25
movl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0x20e8b
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
andl $0xe0, %eax
cmpl $0xc0, %eax
jne 0x20e42
movl $0x2, %eax
movl %eax, -0x68(%rbp)
jmp 0x20e85
movq -0x28(%rbp), %rax
movzbl (%rax), %eax
andl $0xf0, %eax
cmpl $0xe0, %eax
jne 0x20e5f
movl $0x3, %eax
movl %eax, -0x6c(%rbp)
jmp 0x20e7f
movq -0x28(%rbp), %rax
movzbl (%rax), %edx
andl $0xf8, %edx
xorl %eax, %eax
movl $0x4, %ecx
cmpl $0xf0, %edx
cmovel %ecx, %eax
movl %eax, -0x6c(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x68(%rbp), %eax
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %ecx
movq -0x28(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
jmp 0x20d7d
movq -0x50(%rbp), %rax
cmpq -0x48(%rbp), %rax
jne 0x20ec0
movq -0x20(%rbp), %rdi
leaq 0xbf84(%rip), %rsi      # 0x2ce3a
callq 0x20b90
movl %eax, -0x4(%rbp)
jmp 0x20ec7
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x70, %rsp
popq %rbp
retq