// File: /workspace/github_c_makefile_star2_O0/jech[P]dht/dht.c
// Function: parse_message
static int
parse_message(const unsigned char *buf, int buflen,
              struct parsed_message *m)
{
    const unsigned char *p;

    /* This code will happily crash if the buffer is not NUL-terminated. */
    if(buf[buflen] != '\0') {
        debugf("Eek!  parse_message with unterminated buffer.\n");
        return -1;
    }


#define CHECK(ptr, len)                                                 \
    if(((unsigned char*)ptr) + (len) > (buf) + (buflen)) goto overflow;

    p = dht_memmem(buf, buflen, "1:t", 3);
    if(p) {
        long l;
        char *q;
        l = strtol((char*)p + 3, &q, 10);
        if(q && *q == ':' && l > 0 && l < PARSE_TID_LEN) {
            CHECK(q + 1, l);
            memcpy(m->tid, q + 1, l);
            m->tid_len = l;
        }
    }

    p = dht_memmem(buf, buflen, "2:id20:", 7);
    if(p) {
        CHECK(p + 7, 20);
        memcpy(m->id, p + 7, 20);
    }

    p = dht_memmem(buf, buflen, "9:info_hash20:", 14);
    if(p) {
        CHECK(p + 14, 20);
        memcpy(m->info_hash, p + 14, 20);
    }

    p = dht_memmem(buf, buflen, "4:porti", 7);
    if(p) {
        long l;
        char *q;
        l = strtol((char*)p + 7, &q, 10);
        if(q && *q == 'e' && l > 0 && l < 0x10000)
            m->port = l;
    }

    p = dht_memmem(buf, buflen, "12:implied_porti", 16);
    if(p) {
        long l;
        char *q;
        l = strtol((char*)p + 16, &q, 10);
        if(q && *q == 'e' && l > 0 && l < 0x10000)
            m->implied_port = l;
    }

    p = dht_memmem(buf, buflen, "6:target20:", 11);
    if(p) {
        CHECK(p + 11, 20);
        memcpy(m->target, p + 11, 20);
    }

    p = dht_memmem(buf, buflen, "5:token", 7);
    if(p) {
        long l;
        char *q;
        l = strtol((char*)p + 7, &q, 10);
        if(q && *q == ':' && l > 0 && l < PARSE_TOKEN_LEN) {
            CHECK(q + 1, l);
            memcpy(m->token, q + 1, l);
            m->token_len = l;
        }
    }

    p = dht_memmem(buf, buflen, "5:nodes", 7);
    if(p) {
        long l;
        char *q;
        l = strtol((char*)p + 7, &q, 10);
        if(q && *q == ':' && l > 0 && l <= PARSE_NODES_LEN) {
            CHECK(q + 1, l);
            memcpy(m->nodes, q + 1, l);
            m->nodes_len = l;
        }
    }

    p = dht_memmem(buf, buflen, "6:nodes6", 8);
    if(p) {
        long l;
        char *q;
        l = strtol((char*)p + 8, &q, 10);
        if(q && *q == ':' && l > 0 && l <= PARSE_NODES6_LEN) {
            CHECK(q + 1, l);
            memcpy(m->nodes6, q + 1, l);
            m->nodes6_len = l;
        }
    }

    p = dht_memmem(buf, buflen, "6:valuesl", 9);
    if(p) {
        int i = p - buf + 9;
        int j = 0, j6 = 0;
        while(1) {
            long l;
            char *q;
            l = strtol((char*)buf + i, &q, 10);
            if(q && *q == ':' && l > 0) {
                CHECK(q + 1, l);
                i = q + 1 + l - (char*)buf;
                if(l == 6) {
                    if(j + l > PARSE_VALUES_LEN)
                        continue;
                    memcpy((char*)m->values + j, q + 1, l);
                    j += l;
                } else if(l == 18) {
                    if(j6 + l > PARSE_VALUES6_LEN)
                        continue;
                    memcpy((char*)m->values6 + j6, q + 1, l);
                    j6 += l;
                } else {
                    debugf("Received weird value -- %d bytes.\n", (int)l);
                }
            } else {
                break;
            }
        }
        if(i >= buflen || buf[i] != 'e')
            debugf("eek... unexpected end for values.\n");
        m->values_len = j;
        m->values6_len = j6;
    }

    p = dht_memmem(buf, buflen, "4:wantl", 7);
    if(p) {
        int i = p - buf + 7;
        m->want = 0;
        while(buf[i] > '0' && buf[i] <= '9' && buf[i + 1] == ':' &&
              i + 2 + buf[i] - '0' < buflen) {
            CHECK(buf + i + 2, buf[i] - '0');
            if(buf[i] == '2' && memcmp(buf + i + 2, "n4", 2) == 0)
                m->want |= WANT4;
            else if(buf[i] == '2' && memcmp(buf + i + 2, "n6", 2) == 0)
                m->want |= WANT6;
            else
                debugf("eek... unexpected want flag (%c)\n", buf[i]);
            i += 2 + buf[i] - '0';
        }
        if(i >= buflen || buf[i] != 'e')
            debugf("eek... unexpected end for want.\n");
    }

#undef CHECK

    if(dht_memmem(buf, buflen, "1:y1:r", 6))
        return REPLY;
    if(dht_memmem(buf, buflen, "1:y1:e", 6))
        return ERROR;
    if(!dht_memmem(buf, buflen, "1:y1:q", 6))
        return -1;
    if(dht_memmem(buf, buflen, "1:q4:ping", 9))
        return PING;
    if(dht_memmem(buf, buflen, "1:q9:find_node", 14))
       return FIND_NODE;
    if(dht_memmem(buf, buflen, "1:q9:get_peers", 14))
        return GET_PEERS;
    if(dht_memmem(buf, buflen, "1:q13:announce_peer", 19))
       return ANNOUNCE_PEER;
    return -1;

 overflow:
    debugf("Truncated message.\n");
    return -1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x6711
leaq 0x6309(%rip), %rdi      # 0xca07
movb $0x0, %al
callq 0x3aa0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x71a3
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x6316(%rip), %rdx      # 0xca36
movl $0x3, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x67bb
movq -0x28(%rbp), %rdi
addq $0x3, %rdi
leaq -0x38(%rbp), %rsi
movl $0xa, %edx
callq 0x21e0
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x67b9
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x67b9
cmpq $0x0, -0x30(%rbp)
jle 0x67b9
cmpq $0x10, -0x30(%rbp)
jge 0x67b9
movq -0x38(%rbp), %rax
addq $0x1, %rax
addq -0x30(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x14(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jbe 0x6795
jmp 0x718e
movq -0x20(%rbp), %rdi
movq -0x38(%rbp), %rsi
addq $0x1, %rsi
movq -0x30(%rbp), %rdx
callq 0x2200
movq -0x30(%rbp), %rax
movw %ax, %cx
movq -0x20(%rbp), %rax
movw %cx, 0x10(%rax)
jmp 0x67bb
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5ec9(%rip), %rdx      # 0xc693
movl $0x7, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x681e
movq -0x28(%rbp), %rax
addq $0x7, %rax
addq $0x14, %rax
movq -0x10(%rbp), %rcx
movslq -0x14(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jbe 0x6800
jmp 0x718e
movq -0x20(%rbp), %rax
movq -0x28(%rbp), %rcx
movq 0x7(%rcx), %rdx
movq %rdx, 0x12(%rax)
movq 0xf(%rcx), %rdx
movq %rdx, 0x1a(%rax)
movl 0x17(%rcx), %ecx
movl %ecx, 0x22(%rax)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5e6e(%rip), %rdx      # 0xc69b
movl $0xe, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x6881
movq -0x28(%rbp), %rax
addq $0xe, %rax
addq $0x14, %rax
movq -0x10(%rbp), %rcx
movslq -0x14(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jbe 0x6863
jmp 0x718e
movq -0x20(%rbp), %rax
movq -0x28(%rbp), %rcx
movq 0xe(%rcx), %rdx
movq %rdx, 0x26(%rax)
movq 0x16(%rcx), %rdx
movq %rdx, 0x2e(%rax)
movl 0x1e(%rcx), %ecx
movl %ecx, 0x36(%rax)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x61aa(%rip), %rdx      # 0xca3a
movl $0x7, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x68f4
movq -0x28(%rbp), %rdi
addq $0x7, %rdi
leaq -0x48(%rbp), %rsi
movl $0xa, %edx
callq 0x21e0
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x68f2
movq -0x48(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x65, %eax
jne 0x68f2
cmpq $0x0, -0x40(%rbp)
jle 0x68f2
cmpq $0x10000, -0x40(%rbp)   # imm = 0x10000
jge 0x68f2
movq -0x40(%rbp), %rax
movw %ax, %cx
movq -0x20(%rbp), %rax
movw %cx, 0x4e(%rax)
jmp 0x68f4
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x613f(%rip), %rdx      # 0xca42
movl $0x10, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x6967
movq -0x28(%rbp), %rdi
addq $0x10, %rdi
leaq -0x58(%rbp), %rsi
movl $0xa, %edx
callq 0x21e0
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x6965
movq -0x58(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x65, %eax
jne 0x6965
cmpq $0x0, -0x50(%rbp)
jle 0x6965
cmpq $0x10000, -0x50(%rbp)   # imm = 0x10000
jge 0x6965
movq -0x50(%rbp), %rax
movw %ax, %cx
movq -0x20(%rbp), %rax
movw %cx, 0x50(%rax)
jmp 0x6967
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5fce(%rip), %rdx      # 0xc944
movl $0xb, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x69ca
movq -0x28(%rbp), %rax
addq $0xb, %rax
addq $0x14, %rax
movq -0x10(%rbp), %rcx
movslq -0x14(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jbe 0x69ac
jmp 0x718e
movq -0x20(%rbp), %rax
movq -0x28(%rbp), %rcx
movq 0xb(%rcx), %rdx
movq %rdx, 0x3a(%rax)
movq 0x13(%rcx), %rdx
movq %rdx, 0x42(%rax)
movl 0x1b(%rcx), %ecx
movl %ecx, 0x4a(%rax)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x607a(%rip), %rdx      # 0xca53
movl $0x7, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x6a7e
movq -0x28(%rbp), %rdi
addq $0x7, %rdi
leaq -0x68(%rbp), %rsi
movl $0xa, %edx
callq 0x21e0
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x68(%rbp)
je 0x6a7c
movq -0x68(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x6a7c
cmpq $0x0, -0x60(%rbp)
jle 0x6a7c
cmpq $0x80, -0x60(%rbp)
jge 0x6a7c
movq -0x68(%rbp), %rax
addq $0x1, %rax
addq -0x60(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x14(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jbe 0x6a51
jmp 0x718e
movq -0x20(%rbp), %rdi
addq $0x52, %rdi
movq -0x68(%rbp), %rsi
addq $0x1, %rsi
movq -0x60(%rbp), %rdx
callq 0x2200
movq -0x60(%rbp), %rax
movw %ax, %cx
movq -0x20(%rbp), %rax
movw %cx, 0xd2(%rax)
jmp 0x6a7e
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5fce(%rip), %rdx      # 0xca5b
movl $0x7, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x6b35
movq -0x28(%rbp), %rdi
addq $0x7, %rdi
leaq -0x78(%rbp), %rsi
movl $0xa, %edx
callq 0x21e0
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x78(%rbp)
je 0x6b33
movq -0x78(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x6b33
cmpq $0x0, -0x70(%rbp)
jle 0x6b33
cmpq $0x1a0, -0x70(%rbp)     # imm = 0x1A0
jg 0x6b33
movq -0x78(%rbp), %rax
addq $0x1, %rax
addq -0x70(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x14(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jbe 0x6b05
jmp 0x718e
movq -0x20(%rbp), %rdi
addq $0xd4, %rdi
movq -0x78(%rbp), %rsi
addq $0x1, %rsi
movq -0x70(%rbp), %rdx
callq 0x2200
movq -0x70(%rbp), %rax
movw %ax, %cx
movq -0x20(%rbp), %rax
movw %cx, 0x274(%rax)
jmp 0x6b35
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5f1f(%rip), %rdx      # 0xca63
movl $0x8, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x6bfb
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
leaq -0x88(%rbp), %rsi
movl $0xa, %edx
callq 0x21e0
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x88(%rbp)
je 0x6bf9
movq -0x88(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x6bf9
cmpq $0x0, -0x80(%rbp)
jle 0x6bf9
cmpq $0x260, -0x80(%rbp)     # imm = 0x260
jg 0x6bf9
movq -0x88(%rbp), %rax
addq $0x1, %rax
addq -0x80(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x14(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jbe 0x6bc8
jmp 0x718e
movq -0x20(%rbp), %rdi
addq $0x276, %rdi            # imm = 0x276
movq -0x88(%rbp), %rsi
addq $0x1, %rsi
movq -0x80(%rbp), %rdx
callq 0x2200
movq -0x80(%rbp), %rax
movw %ax, %cx
movq -0x20(%rbp), %rax
movw %cx, 0x4d6(%rax)
jmp 0x6bfb
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5dde(%rip), %rdx      # 0xc9e8
movl $0x9, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x6e35
movq -0x28(%rbp), %rax
movq -0x10(%rbp), %rcx
subq %rcx, %rax
addq $0x9, %rax
movl %eax, -0x8c(%rbp)
movl $0x0, -0x90(%rbp)
movl $0x0, -0x94(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x8c(%rbp), %rax
addq %rax, %rdi
leaq -0xa8(%rbp), %rsi
movl $0xa, %edx
callq 0x21e0
movq %rax, -0xa0(%rbp)
cmpq $0x0, -0xa8(%rbp)
je 0x6dd9
movq -0xa8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x6dd9
cmpq $0x0, -0xa0(%rbp)
jle 0x6dd9
movq -0xa8(%rbp), %rax
addq $0x1, %rax
addq -0xa0(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x14(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jbe 0x6cc8
jmp 0x718e
movq -0xa8(%rbp), %rax
addq $0x1, %rax
addq -0xa0(%rbp), %rax
movq -0x10(%rbp), %rcx
subq %rcx, %rax
movl %eax, -0x8c(%rbp)
cmpq $0x6, -0xa0(%rbp)
jne 0x6d54
movslq -0x90(%rbp), %rax
addq -0xa0(%rbp), %rax
cmpq $0x800, %rax            # imm = 0x800
jle 0x6d0c
jmp 0x6c4c
movq -0x20(%rbp), %rdi
addq $0x4d8, %rdi            # imm = 0x4D8
movslq -0x90(%rbp), %rax
addq %rax, %rdi
movq -0xa8(%rbp), %rsi
addq $0x1, %rsi
movq -0xa0(%rbp), %rdx
callq 0x2200
movq -0xa0(%rbp), %rcx
movslq -0x90(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x90(%rbp)
jmp 0x6dd7
cmpq $0x12, -0xa0(%rbp)
jne 0x6dbe
movslq -0x94(%rbp), %rax
addq -0xa0(%rbp), %rax
cmpq $0x800, %rax            # imm = 0x800
jle 0x6d79
jmp 0x6c4c
movq -0x20(%rbp), %rdi
addq $0xcda, %rdi            # imm = 0xCDA
movslq -0x94(%rbp), %rax
addq %rax, %rdi
movq -0xa8(%rbp), %rsi
addq $0x1, %rsi
movq -0xa0(%rbp), %rdx
callq 0x2200
movq -0xa0(%rbp), %rcx
movslq -0x94(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x94(%rbp)
jmp 0x6dd5
movq -0xa0(%rbp), %rax
movl %eax, %esi
leaq 0x5c9e(%rip), %rdi      # 0xca6c
movb $0x0, %al
callq 0x3aa0
jmp 0x6dd7
jmp 0x6ddb
jmp 0x6de0
jmp 0x6c4c
movl -0x8c(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x6dff
movq -0x10(%rbp), %rax
movslq -0x8c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x65, %eax
je 0x6e0d
leaq 0x5c89(%rip), %rdi      # 0xca8f
movb $0x0, %al
callq 0x3aa0
movl -0x90(%rbp), %eax
movw %ax, %cx
movq -0x20(%rbp), %rax
movw %cx, 0xcd8(%rax)
movl -0x94(%rbp), %eax
movw %ax, %cx
movq -0x20(%rbp), %rax
movw %cx, 0x14da(%rax)
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5c6e(%rip), %rdx      # 0xcab2
movl $0x7, %ecx
callq 0xbea0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x7061
movq -0x28(%rbp), %rax
movq -0x10(%rbp), %rcx
subq %rcx, %rax
addq $0x7, %rax
movl %eax, -0xac(%rbp)
movq -0x20(%rbp), %rax
movw $0x0, 0x14dc(%rax)
movq -0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
movzbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0xad(%rbp)
jle 0x6f01
movq -0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
movzbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x39, %ecx
movb %al, -0xad(%rbp)
jg 0x6f01
movq -0x10(%rbp), %rax
movl -0xac(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x3a, %ecx
movb %al, -0xad(%rbp)
jne 0x6f01
movl -0xac(%rbp), %eax
addl $0x2, %eax
movq -0x10(%rbp), %rcx
movslq -0xac(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
subl $0x30, %eax
cmpl -0x14(%rbp), %eax
setl %al
movb %al, -0xad(%rbp)
movb -0xad(%rbp), %al
testb $0x1, %al
jne 0x6f10
jmp 0x7032
movq -0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
addq %rcx, %rax
addq $0x2, %rax
movq -0x10(%rbp), %rcx
movslq -0xac(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
subl $0x30, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq -0x10(%rbp), %rcx
movslq -0x14(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jbe 0x6f4f
jmp 0x718e
movq -0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x32, %eax
jne 0x6f9e
movq -0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
addq %rcx, %rax
addq $0x2, %rax
movw (%rax), %ax
subw $0x346e, %ax            # imm = 0x346E
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x6f9e
movq -0x20(%rbp), %rax
movzwl 0x14dc(%rax), %ecx
orl $0x1, %ecx
movw %cx, 0x14dc(%rax)
jmp 0x700c
movq -0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x32, %eax
jne 0x6fed
movq -0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
addq %rcx, %rax
addq $0x2, %rax
movw (%rax), %ax
subw $0x366e, %ax            # imm = 0x366E
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x6fed
movq -0x20(%rbp), %rax
movzwl 0x14dc(%rax), %ecx
orl $0x2, %ecx
movw %cx, 0x14dc(%rax)
jmp 0x700a
movq -0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
movzbl (%rax,%rcx), %esi
leaq 0x5ab7(%rip), %rdi      # 0xcaba
movb $0x0, %al
callq 0x3aa0
jmp 0x700c
movq -0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
movzbl (%rax,%rcx), %eax
addl $0x2, %eax
subl $0x30, %eax
addl -0xac(%rbp), %eax
movl %eax, -0xac(%rbp)
jmp 0x6e7f
movl -0xac(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x7051
movq -0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x65, %eax
je 0x705f
leaq 0x5a84(%rip), %rdi      # 0xcadc
movb $0x0, %al
callq 0x3aa0
jmp 0x7061
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5a8d(%rip), %rdx      # 0xcafd
movl $0x6, %ecx
callq 0xbea0
cmpq $0x0, %rax
je 0x708c
movl $0x1, -0x4(%rbp)
jmp 0x71a3
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5a69(%rip), %rdx      # 0xcb04
movl $0x6, %ecx
callq 0xbea0
cmpq $0x0, %rax
je 0x70b7
movl $0x0, -0x4(%rbp)
jmp 0x71a3
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5a45(%rip), %rdx      # 0xcb0b
movl $0x6, %ecx
callq 0xbea0
cmpq $0x0, %rax
jne 0x70e2
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x71a3
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5a21(%rip), %rdx      # 0xcb12
movl $0x9, %ecx
callq 0xbea0
cmpq $0x0, %rax
je 0x710d
movl $0x2, -0x4(%rbp)
jmp 0x71a3
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x5a00(%rip), %rdx      # 0xcb1c
movl $0xe, %ecx
callq 0xbea0
cmpq $0x0, %rax
je 0x7135
movl $0x3, -0x4(%rbp)
jmp 0x71a3
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x59e7(%rip), %rdx      # 0xcb2b
movl $0xe, %ecx
callq 0xbea0
cmpq $0x0, %rax
je 0x715d
movl $0x4, -0x4(%rbp)
jmp 0x71a3
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
leaq 0x59ce(%rip), %rdx      # 0xcb3a
movl $0x13, %ecx
callq 0xbea0
cmpq $0x0, %rax
je 0x7185
movl $0x5, -0x4(%rbp)
jmp 0x71a3
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x71a3
leaq 0x59b9(%rip), %rdi      # 0xcb4e
movb $0x0, %al
callq 0x3aa0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addq $0xb0, %rsp
popq %rbp
retq
nop