// File: /workspace/github_cpp_makefile_star2_O1/pfnet-research[P]pml/src/parser.cpp
// Function: next_token(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned long)
token_t next_token(std::string const& input, size_t pos) {
    using kind_t = token_t::kind_t;

    pos = skip_spaces(input, pos);

    if (pos >= input.size()) {
        return token_t {
            token_t::kind_t::Eof, pos, ""
        };
    }

    if (std::isdigit(input[pos]) || (input[pos] == '-' && std::isdigit(input[pos+1]))) {
        size_t len = 1;
        while (std::isdigit(input[pos + len]) && pos + len < input.size())
            ++len;
        return token_t {
            kind_t::Int, pos, input.substr(pos, len)
        };
    }

    std::unordered_map<std::string, kind_t> string_token = {
        {"->", kind_t::Arrow},
        {"=>", kind_t::FatArrow},
        {"==", kind_t::DoubleEq},
        {"!=", kind_t::Neq},
        {"<=", kind_t::Leq},
        {">=", kind_t::Geq},
        {"\\/", kind_t::Or},
        {"/\\", kind_t::And}
    };
    for (auto const& pair : string_token) {
        if (pair.first == input.substr(pos, pair.first.size()))
            return token_t {pair.second, pos, pair.first};
    }

    std::unordered_map<char, token_t::kind_t> char_token = {
        {'=', kind_t::Eq},
        {'+', kind_t::Plus},
        {'-', kind_t::Minus},
        {'*', kind_t::Star},
        {'/', kind_t::Slash},
        {',', kind_t::Comma},
        {'&', kind_t::Amp},
        {'\\', kind_t::BackSlash},
        {'|', kind_t::Bar},
        {':', kind_t::Colon},
        {'{', kind_t::LBrace},
        {'}', kind_t::RBrace},
        {'(', kind_t::LParen},
        {')', kind_t::RParen}
    };
    auto found_ch = char_token.find(input[pos]);
    if (found_ch != char_token.end()) {
        return token_t {
            found_ch->second, pos, std::string{found_ch->first}
        };
    }

    size_t len = ident_len(input, pos);
    if (len != 0) {
        std::unordered_map<std::string, token_t::kind_t> keywords = {
            {"let", kind_t::Let},
            {"letfun", kind_t::LetFun},
            {"in", kind_t::In},
            {"if", kind_t::If},
            {"else", kind_t::Else},
            {"then", kind_t::Then},
            {"rand", kind_t::Rand},
            {"true", kind_t::True},
            {"false", kind_t::False},
            {"Prob", kind_t::Prob},
            {"not", kind_t::Not},
            {"dummy", kind_t::Dummy}
        };
        std::string lexime = input.substr(pos, len);
        auto found_keyword = keywords.find(lexime);
        if (found_keyword != keywords.end()) {
            return token_t { found_keyword->second, pos, lexime };
        } else {
            return token_t { kind_t::Ident, pos,  lexime};
        }
    }

    throw std::runtime_error{"unknown token at " + std::to_string(pos) + " : " + input.substr(pos, 5) + ".."};
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x328, %rsp            # imm = 0x328
movq %rdx, %r13
movq %rdi, %rbx
movq (%rsi), %r14
movq %rsi, 0x10(%rsp)
movq 0x8(%rsi), %r15
movq %r13, %rbp
movsbl (%r14,%r13), %r12d
movl %r12d, %edi
callq 0x9060
incq %r13
testl %eax, %eax
je 0x1bd06
cmpq %r15, %rbp
jb 0x1bcea
leaq -0x1(%r13), %rax
cmpq %r15, %rbp
jae 0x1bd66
movq %rax, 0x18(%rsp)
leal -0x30(%r12), %eax
cmpl $0xa, %eax
jae 0x1bd90
xorl %eax, %eax
leaq (%r14,%rax), %rcx
movsbl (%r13,%rcx), %edx
addl $-0x30, %edx
leaq 0x1(%rax), %rcx
cmpl $0x9, %edx
ja 0x1bd41
addq %r13, %rax
cmpq %r15, %rax
movq %rcx, %rax
jb 0x1bd20
movl $0x7, (%rbx)
movq 0x18(%rsp), %rdx
movq %rdx, 0x8(%rbx)
movq %rbx, %rdi
addq $0x10, %rdi
movq 0x10(%rsp), %rsi
callq 0x9310
jmp 0x1c4c0
movl $0x25, (%rbx)
movq %rax, 0x8(%rbx)
leaq 0x10(%rbx), %rdi
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%rbx)
leaq 0x2b41e(%rip), %rdx     # 0x471a1
movq %rdx, %rsi
callq 0x11866
jmp 0x1c4c0
cmpb $0x2d, %r12b
jne 0x1bda7
movsbl (%r14,%r13), %eax
addl $-0x30, %eax
cmpl $0x9, %eax
jbe 0x1bd1e
leaq 0xa8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c50c(%rip), %rsi     # 0x482c6
leaq 0x2c507(%rip), %rdx     # 0x482c8
leaq 0x98(%rsp), %r15
movq %r15, %rdi
callq 0x11866
leaq 0xc0(%rsp), %rbp
movl $0xb, -0x8(%rbp)
leaq 0xd0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c0b5(%rip), %rsi     # 0x47ea8
leaq 0x2c0b0(%rip), %rdx     # 0x47eaa
movq %rbp, %rdi
callq 0x11866
leaq 0xe8(%rsp), %rbp
movl $0xc, -0x8(%rbp)
leaq 0xf8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c4b4(%rip), %rsi     # 0x482d8
leaq 0x2c4af(%rip), %rdx     # 0x482da
movq %rbp, %rdi
callq 0x11866
leaq 0x110(%rsp), %rbp
movl $0x13, -0x8(%rbp)
leaq 0x120(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c04f(%rip), %rsi     # 0x47ea4
leaq 0x2c04a(%rip), %rdx     # 0x47ea6
movq %rbp, %rdi
callq 0x11866
movq 0x18(%rsp), %r12
leaq 0x138(%rsp), %rbp
movl $0x14, -0x8(%rbp)
leaq 0x148(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b680(%rip), %rsi     # 0x4750b
leaq 0x2b67b(%rip), %rdx     # 0x4750d
movq %rbp, %rdi
callq 0x11866
leaq 0x160(%rsp), %rbp
movl $0x16, -0x8(%rbp)
leaq 0x170(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b652(%rip), %rsi     # 0x4750e
leaq 0x2b64d(%rip), %rdx     # 0x47510
movq %rbp, %rdi
callq 0x11866
leaq 0x188(%rsp), %rbp
movl $0x17, -0x8(%rbp)
leaq 0x198(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c3dc(%rip), %rsi     # 0x482c9
leaq 0x2c3d7(%rip), %rdx     # 0x482cb
movq %rbp, %rdi
callq 0x11866
leaq 0x1b0(%rsp), %rbp
movl $0x21, -0x8(%rbp)
leaq 0x1c0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2c3ae(%rip), %rsi     # 0x482cc
leaq 0x2c3a9(%rip), %rdx     # 0x482ce
movq %rbp, %rdi
callq 0x11866
leaq 0x1d8(%rsp), %rdx
movl $0x22, -0x8(%rdx)
leaq 0x20(%rsp), %rax
movq %rax, (%rsp)
leaq 0x2f0(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0x2b8(%rsp), %r8
leaq 0x60(%rsp), %r9
xorl %ecx, %ecx
callq 0x278ee
movq $-0x140, %r15           # imm = 0xFEC0
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x1bf84
movq (%r14), %rsi
incq %rsi
callq 0x92e0
addq $-0x28, %r14
addq $0x28, %r15
jne 0x1bf70
movq 0x300(%rsp), %r14
testq %r14, %r14
je 0x1c05e
leaq 0x10(%rbx), %rbp
leaq 0x20(%rbx), %r15
movq 0x10(%r14), %rcx
leaq 0x98(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %r12, %rdx
callq 0x9310
movq 0x10(%r14), %rdx
cmpq 0xa0(%rsp), %rdx
jne 0x1bfec
testq %rdx, %rdx
je 0x1bff1
movq 0x98(%rsp), %rsi
movq 0x8(%r14), %rdi
callq 0x9300
testl %eax, %eax
sete %r12b
jmp 0x1bff4
xorl %r12d, %r12d
jmp 0x1bff4
movb $0x1, %r12b
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x1c019
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x92e0
testb %r12b, %r12b
je 0x1c04d
movl 0x28(%r14), %eax
movl %eax, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rbx)
movq %r15, 0x10(%rbx)
movq 0x8(%r14), %rsi
movq 0x10(%r14), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0xad30
testb %r12b, %r12b
jne 0x1c4b3
movq (%r14), %r14
testq %r14, %r14
movq 0x18(%rsp), %r12
jne 0x1bfa7
leaq 0x2c1cf(%rip), %rsi     # 0x48234
leaq 0x98(%rsp), %rax
movl $0x1c, %ecx
movq %rax, %rdi
rep  movsl (%rsi), %es:(%rdi)
leaq 0x108(%rsp), %rdx
leaq 0x40(%rsp), %rcx
movq %rcx, (%rsp)
leaq 0x2b8(%rsp), %rdi
leaq 0x60(%rsp), %r8
leaq 0x20(%rsp), %r9
movq %rax, %rsi
xorl %ecx, %ecx
callq 0x27e14
movq 0x10(%rsp), %rax
movq (%rax), %rax
movsbq -0x1(%rax,%r13), %rcx
movq 0x2b8(%rsp), %rdi
movq 0x2c0(%rsp), %r8
xorl %r10d, %r10d
movq %rcx, %rax
xorl %edx, %edx
divq %r8
movq (%rdi,%rdx,8), %rax
testq %rax, %rax
je 0x1c115
movq (%rax), %r9
movq %rax, %r10
cmpb 0x8(%r9), %cl
je 0x1c115
movq %rdx, %rsi
movq %r9, %r11
movq (%r9), %r9
testq %r9, %r9
je 0x1c112
movsbq 0x8(%r9), %rdi
movq %rdi, %rax
xorl %edx, %edx
divq %r8
movl $0x0, %r10d
cmpq %rsi, %rdx
jne 0x1c115
movq %r11, %r10
cmpb %dil, %cl
jne 0x1c0e5
jmp 0x1c115
xorl %r10d, %r10d
testq %r10, %r10
je 0x1c11f
movq (%r10), %rax
jmp 0x1c121
xorl %eax, %eax
testq %rax, %rax
je 0x1c14e
movl 0xc(%rax), %ecx
movl %ecx, (%rbx)
movq %r12, 0x8(%rbx)
movb 0x8(%rax), %al
leaq 0x20(%rbx), %rcx
movq %rcx, 0x10(%rbx)
movb %al, 0x20(%rbx)
movq $0x1, 0x18(%rbx)
movb $0x0, 0x21(%rbx)
jmp 0x1c4a6
movq 0x10(%rsp), %rdi
movq %r12, %rsi
callq 0x1bc62
testq %rax, %rax
je 0x1c4d5
movq %rax, %r13
leaq 0x98(%rsp), %r15
leaq 0xa8(%rsp), %rax
movq %rax, (%r15)
leaq 0x2eef4(%rip), %rsi     # 0x4b075
leaq 0x2eef0(%rip), %rdx     # 0x4b078
movq %r15, %rdi
callq 0x11866
leaq 0xc0(%rsp), %rbp
movl $0x0, -0x8(%rbp)
leaq 0xd0(%rsp), %rax
movq %rax, (%rbp)
leaq 0x2c0f2(%rip), %rsi     # 0x482a4
leaq 0x2c0f1(%rip), %rdx     # 0x482aa
movq %rbp, %rdi
callq 0x11866
leaq 0xe8(%rsp), %rbp
movl $0x1, -0x8(%rbp)
leaq 0xf8(%rsp), %rax
movq %rax, (%rbp)
leaq 0x2c0c8(%rip), %rsi     # 0x482ab
leaq 0x2c0c3(%rip), %rdx     # 0x482ad
movq %rbp, %rdi
callq 0x11866
leaq 0x110(%rsp), %rbp
movl $0x2, -0x8(%rbp)
leaq 0x120(%rsp), %rax
movq %rax, (%rbp)
leaq 0x2c09a(%rip), %rsi     # 0x482ae
leaq 0x2c095(%rip), %rdx     # 0x482b0
movq %rbp, %rdi
callq 0x11866
leaq 0x138(%rsp), %rbp
movl $0x3, -0x8(%rbp)
leaq 0x148(%rsp), %rax
movq %rax, (%rbp)
leaq 0x2c071(%rip), %rsi     # 0x482b6
leaq 0x2c06e(%rip), %rdx     # 0x482ba
movq %rbp, %rdi
callq 0x11866
leaq 0x160(%rsp), %rbp
movl $0x4, -0x8(%rbp)
leaq 0x170(%rsp), %rax
movq %rax, (%rbp)
leaq 0x2c03b(%rip), %rsi     # 0x482b1
leaq 0x2c038(%rip), %rdx     # 0x482b5
movq %rbp, %rdi
callq 0x11866
leaq 0x188(%rsp), %rbp
movl $0x5, -0x8(%rbp)
leaq 0x198(%rsp), %rax
movq %rax, (%rbp)
leaq 0x2edde(%rip), %rsi     # 0x4b085
leaq 0x2eddb(%rip), %rdx     # 0x4b089
movq %rbp, %rdi
callq 0x11866
leaq 0x1b0(%rsp), %rbp
movl $0x6, -0x8(%rbp)
leaq 0x1c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x30913(%rip), %rsi     # 0x4cbeb
leaq 0x30910(%rip), %rdx     # 0x4cbef
movq %rbp, %rdi
callq 0x11866
leaq 0x1e8(%rsp), %rax
movl $0x8, -0x18(%rax)
movq %rax, -0x10(%rax)
leaq 0x2eb52(%rip), %rsi     # 0x4ae53
leaq 0x2eb50(%rip), %rdx     # 0x4ae58
leaq 0x1d8(%rsp), %rbp
movq %rbp, %rdi
callq 0x11866
leaq 0x200(%rsp), %rbp
movl $0x9, -0x8(%rbp)
leaq 0x210(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2bf95(%rip), %rsi     # 0x482cf
leaq 0x2bf92(%rip), %rdx     # 0x482d3
movq %rbp, %rdi
callq 0x11866
leaq 0x228(%rsp), %rbp
movl $0x23, -0x8(%rbp)
leaq 0x238(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2bf69(%rip), %rsi     # 0x482d4
leaq 0x2bf65(%rip), %rdx     # 0x482d7
movq %rbp, %rdi
callq 0x11866
leaq 0x250(%rsp), %rbp
movl $0x24, -0x8(%rbp)
leaq 0x260(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2bf4e(%rip), %rsi     # 0x482ea
leaq 0x2bf4c(%rip), %rdx     # 0x482ef
movq %rbp, %rdi
callq 0x11866
leaq 0x278(%rsp), %r12
movl $0x26, -0x8(%r12)
leaq 0x278(%rsp), %rax
movq %rax, (%rsp)
leaq 0x60(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0x20(%rsp), %r8
leaq 0x40(%rsp), %r9
movq %r12, %rdx
xorl %ecx, %ecx
callq 0x278ee
movq $-0x1e0, %r15           # imm = 0xFE20
movq 0x18(%rsp), %r12
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x1c409
movq (%r14), %rsi
incq %rsi
callq 0x92e0
addq $-0x28, %r14
addq $0x28, %r15
jne 0x1c3f5
leaq 0x98(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x9310
leaq 0x60(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x281de
testq %rax, %rax
je 0x1c449
movl 0x28(%rax), %eax
movl %eax, (%rbx)
jmp 0x1c44f
movl $0xa, (%rbx)
movq %r12, 0x8(%rbx)
leaq 0x10(%rbx), %rdi
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%rbx)
movq 0x98(%rsp), %rsi
movq 0xa0(%rsp), %rdx
addq %rsi, %rdx
callq 0xad30
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x1c49c
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x92e0
leaq 0x60(%rsp), %rdi
callq 0x2501e
leaq 0x2b8(%rsp), %rdi
callq 0x25138
leaq 0x2f0(%rsp), %rdi
callq 0x2501e
movq %rbx, %rax
addq $0x328, %rsp            # imm = 0x328
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x9150
movq %r12, %rsi
movq %rax, %r12
leaq 0x278(%rsp), %rdi
callq 0x24813
leaq 0x2bdf7(%rip), %rsi     # 0x482f0
leaq 0x40(%rsp), %rdi
leaq 0x278(%rsp), %rdx
callq 0xc97c
leaq 0x2b716(%rip), %rsi     # 0x47c28
leaq 0x40(%rsp), %rdi
callq 0x9540
leaq 0x30(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x1c53e
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x1c54b
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x298(%rsp), %rdi
movl $0x5, %ecx
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x9310
leaq 0x60(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x298(%rsp), %rdx
callq 0x2476b
leaq 0x2bb04(%rip), %rsi     # 0x480a1
leaq 0x60(%rsp), %rdi
callq 0x9540
leaq 0xa8(%rsp), %rcx
movq %rcx, 0x98(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x1c5d6
movups (%rcx), %xmm0
leaq 0xa8(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x1c5e9
movq %rdx, 0x98(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa8(%rsp)
movq 0x8(%rax), %rdx
leaq 0x98(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movq %r12, %rdi
callq 0x9470
xorl %ebp, %ebp
movq 0x469d4(%rip), %rsi     # 0x62ff0
movq 0x4697d(%rip), %rdx     # 0x62fa0
movq %r12, %rdi
callq 0x94b0
movq %rax, %rbx
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x1c65b
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x92e0
jmp 0x1c65b
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1c67e
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x92e0
jmp 0x1c67e
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x2a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1c6a7
movq 0x2a8(%rsp), %rsi
incq %rsi
callq 0x92e0
jmp 0x1c6a7
movq %rax, %rbx
movb $0x1, %bpl
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x1c6c6
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x92e0
jmp 0x1c6c6
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1c6e9
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x92e0
jmp 0x1c6e9
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x288(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1c712
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x92e0
jmp 0x1c712
movq %rax, %rbx
movb $0x1, %bpl
testb %bpl, %bpl
je 0x1c7d1
movq %r12, %rdi
callq 0x9200
jmp 0x1c7d1
movq %rax, %rbx
jmp 0x1c7c7
movq %rax, %rbx
leaq 0x98(%rsp), %rsi
movq %r12, %rdi
callq 0x969b
movb $0x1, %al
jmp 0x1c760
jmp 0x1c75b
jmp 0x1c75b
jmp 0x1c75b
jmp 0x1c75b
jmp 0x1c75b
jmp 0x1c75b
jmp 0x1c75b
jmp 0x1c75b
jmp 0x1c75b
jmp 0x1c75b
movq %rax, %rbx
xorl %eax, %eax
cmpq %rbp, %r15
sete %cl
orb %al, %cl
jne 0x1c7d1
leaq 0x98(%rsp), %r14
movq -0x28(%rbp), %rdi
leaq -0x18(%rbp), %rax
cmpq %rdi, %rax
je 0x1c78a
movq (%rax), %rsi
incq %rsi
callq 0x92e0
addq $-0x28, %rbp
cmpq %r14, %rbp
jne 0x1c772
jmp 0x1c7d1
movq %rax, %rbx
xorl %eax, %eax
movq %r15, %rbp
jmp 0x1c760
movq %rax, %rbx
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x1c7c7
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x92e0
leaq 0x60(%rsp), %rdi
callq 0x2501e
leaq 0x2b8(%rsp), %rdi
callq 0x25138
jmp 0x1c853
jmp 0x1c850
movq %rax, %rbx
leaq 0x98(%rsp), %rsi
leaq 0x1d8(%rsp), %rdi
callq 0x9668
movb $0x1, %al
jmp 0x1c80f
jmp 0x1c80a
jmp 0x1c80a
jmp 0x1c80a
jmp 0x1c80a
jmp 0x1c80a
jmp 0x1c80a
movq %rax, %rbx
xorl %eax, %eax
cmpq %rbp, %r15
sete %cl
orb %al, %cl
jne 0x1c860
leaq 0x98(%rsp), %r14
movq -0x28(%rbp), %rdi
leaq -0x18(%rbp), %rax
cmpq %rdi, %rax
je 0x1c839
movq (%rax), %rsi
incq %rsi
callq 0x92e0
addq $-0x28, %rbp
cmpq %r14, %rbp
jne 0x1c821
jmp 0x1c860
movq %rax, %rbx
xorl %eax, %eax
movq %r15, %rbp
jmp 0x1c80f
jmp 0x1c850
movq %rax, %rbx
leaq 0x2f0(%rsp), %rdi
callq 0x2501e
movq %rbx, %rdi
callq 0x94e0