// File: vsklad[P]cgen/./bal/variables/variablesio.cpp
// Function: bal::VariableTextReader::read_variable_element_item_(bal::Container<unsigned int>&)
inline void VariableTextReader::read_variable_element_item_(Container<literalid_t>& value) {
        container_size_t item_size = 1;
        if (is_token(TextReader::ttHex) || is_token(TextReader::ttBin)) {
            const char* const token = TextReader::get_current_token();
            const size_t token_len = get_current_token_len();
            _assert_level_1(token_len > 2 && token_len <= CONTAINER_SIZE_MAX); // prefix
            
            item_size = (container_size_t)token_len - 2;
            if (is_token(TextReader::ttHex)) {
                item_size <<= 2;
            };
            value.reserve(item_size);
            literalid_t* p_literal = value.data_ + value.size_;
            
            if (is_token(TextReader::ttHex)) {
                for (auto i = 2; i < token_len; i++) {
                    char h = _hex_value(token[i]);
                    p_literal[0] = literal_t__constant(h & 0b1000);
                    p_literal[1] = literal_t__constant(h & 0b0100);
                    p_literal[2] = literal_t__constant(h & 0b0010);
                    p_literal[3] = literal_t__constant(h & 0b0001);
                    p_literal += 4;
                };
            } else { // if (is_token(TextReader::ttBin))
                for (auto i = 2; i < token_len; i++) {
                    *p_literal = literal_t__constant(_bin_value(token[i]));
                    p_literal++;
                };
            };
            skip_token();
        } else if (is_token(TextReader::ttSymbol) && is_symbol('*')) {
            value.reserve(item_size);
            value.data_[value.size_] = LITERALID_UNASSIGNED;
            skip_token();
        } else { // variables
            bool b_negated = false;
            if (is_symbol('-')) {
                b_negated = true;
                skip_symbol();
            };
            
            if (b_negated && (is_token(TextReader::ttHex) || is_token(TextReader::ttBin))) {
                parse_error("Negative constant values not supported");
            };
            
            variableid_t variable_id = read_uint32();
            if (variable_id == 0) {
                parse_error("Variable number may not be equal to 0");
            } else if (variable_id > VARIABLEID_MAX) {
                parse_error("Variable number is out of range");
            };
            literalid_t literal_id = variable_t__literal_id_negated_onlyif(variable_id - 1, b_negated);
            
            value.reserve(1);
            value.data_[value.size_] = literal_id;
        };
        
        value.size_ += item_size;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
movl $0x1, -0x14(%rbp)
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0x3, %esi
callq 0x25bb0
testb $0x1, %al
jne 0x59ecb
movq -0xd0(%rbp), %rdi
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0x4, %esi
callq 0x25bb0
testb $0x1, %al
jne 0x59ecb
jmp 0x5a145
movq -0xd0(%rbp), %rdi
movq (%rdi), %rax
addq -0x18(%rax), %rdi
callq 0x28520
movq -0xd0(%rbp), %rdi
movq %rax, -0x20(%rbp)
movq (%rdi), %rax
addq -0x18(%rax), %rdi
callq 0x5a970
movq %rax, -0x28(%rbp)
xorl %eax, %eax
cmpq $0x2, -0x28(%rbp)
movb %al, -0xd1(%rbp)
jbe 0x59f1a
movl $0xfffffffe, %eax       # imm = 0xFFFFFFFE
cmpq %rax, -0x28(%rbp)
setbe %al
movb %al, -0xd1(%rbp)
movb -0xd1(%rbp), %al
testb $0x1, %al
jne 0x59f26
jmp 0x59f28
jmp 0x59f47
leaq 0xe731(%rip), %rdi      # 0x68660
leaq 0xe638(%rip), %rsi      # 0x6856e
movl $0x126, %edx            # imm = 0x126
leaq 0xe74f(%rip), %rcx      # 0x68691
callq 0xd1c0
movq -0xd0(%rbp), %rdi
movq -0x28(%rbp), %rax
subl $0x2, %eax
movl %eax, -0x14(%rbp)
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0x3, %esi
callq 0x25bb0
testb $0x1, %al
jne 0x59f6f
jmp 0x59f78
movl -0x14(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x13d70
movq -0xd0(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %ecx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0x3, %esi
callq 0x25bb0
testb $0x1, %al
jne 0x59fbe
jmp 0x5a0d7
movl $0x2, -0x34(%rbp)
movslq -0x34(%rbp), %rax
cmpq -0x28(%rbp), %rax
jae 0x5a0d5
movq -0x20(%rbp), %rax
movslq -0x34(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x41, %eax
jge 0x59ffb
movq -0x20(%rbp), %rax
movslq -0x34(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x30, %eax
movl %eax, -0xd8(%rbp)
jmp 0x5a047
movq -0x20(%rbp), %rax
movslq -0x34(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x61, %eax
jge 0x5a023
movq -0x20(%rbp), %rax
movslq -0x34(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x41, %eax
movl %eax, -0xdc(%rbp)
jmp 0x5a038
movq -0x20(%rbp), %rax
movslq -0x34(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x61, %eax
movl %eax, -0xdc(%rbp)
movl -0xdc(%rbp), %eax
addl $0xa, %eax
movl %eax, -0xd8(%rbp)
movl -0xd8(%rbp), %eax
movb %al, -0x35(%rbp)
movsbl -0x35(%rbp), %edx
andl $0x8, %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovnel %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movsbl -0x35(%rbp), %edx
andl $0x4, %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovnel %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x4(%rax)
movsbl -0x35(%rbp), %edx
andl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovnel %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x8(%rax)
movsbl -0x35(%rbp), %edx
andl $0x1, %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovnel %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x30(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x30(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x59fc5
jmp 0x5a12d
movl $0x2, -0x3c(%rbp)
movslq -0x3c(%rbp), %rax
cmpq -0x28(%rbp), %rax
jae 0x5a12b
movq -0x20(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
movl $0x1, %edx
xorl %eax, %eax
cmpl $0x30, %ecx
cmovel %eax, %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovnel %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x30(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x30(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x5a0de
jmp 0x5a12d
movq -0xd0(%rbp), %rdi
movq (%rdi), %rax
addq -0x18(%rax), %rdi
callq 0x26900
jmp 0x5a4ae
movq -0xd0(%rbp), %rdi
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0x6, %esi
callq 0x25bb0
testb $0x1, %al
jne 0x5a163
jmp 0x5a1ba
movq -0xd0(%rbp), %rdi
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0x2a, %esi
callq 0x263d0
testb $0x1, %al
jne 0x5a181
jmp 0x5a1ba
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x13d70
movq -0xd0(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %ecx
movl $0xffffffff, (%rax,%rcx,4) # imm = 0xFFFFFFFF
movq (%rdi), %rax
addq -0x18(%rax), %rdi
callq 0x26900
jmp 0x5a4ac
movq -0xd0(%rbp), %rdi
movb $0x0, -0x3d(%rbp)
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0x2d, %esi
callq 0x263d0
testb $0x1, %al
jne 0x5a1dc
jmp 0x5a1f3
movq -0xd0(%rbp), %rdi
movb $0x1, -0x3d(%rbp)
movq (%rdi), %rax
addq -0x18(%rax), %rdi
callq 0x283f0
testb $0x1, -0x3d(%rbp)
je 0x5a2d2
movq -0xd0(%rbp), %rdi
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0x3, %esi
callq 0x25bb0
testb $0x1, %al
jne 0x5a23a
movq -0xd0(%rbp), %rdi
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0x4, %esi
callq 0x25bb0
testb $0x1, %al
jne 0x5a23a
jmp 0x5a2d2
movq -0xd0(%rbp), %rax
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0xf0(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0xd5b0
movq -0xe8(%rbp), %rdx
leaq 0xe475(%rip), %rsi      # 0x686e5
leaq -0x60(%rbp), %rdi
callq 0xd440
jmp 0x5a27b
movq -0xf0(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x262a0
jmp 0x5a28d
leaq -0x60(%rbp), %rdi
callq 0xd1b0
leaq -0x61(%rbp), %rdi
callq 0xd370
jmp 0x5a2d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x5a2c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xd1b0
leaq -0x61(%rbp), %rdi
callq 0xd370
jmp 0x5a4c4
movq -0xd0(%rbp), %rdi
movq (%rdi), %rax
addq -0x18(%rax), %rdi
xorl %esi, %esi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x25c30
movl %eax, -0x78(%rbp)
cmpl $0x0, -0x78(%rbp)
jne 0x5a3a9
movq -0xd0(%rbp), %rax
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x100(%rbp)
leaq -0x99(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0xd5b0
movq -0xf8(%rbp), %rdx
leaq 0xe3da(%rip), %rsi      # 0x6870c
leaq -0x98(%rbp), %rdi
callq 0xd440
jmp 0x5a340
movq -0x100(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x262a0
jmp 0x5a355
leaq -0x98(%rbp), %rdi
callq 0xd1b0
leaq -0x99(%rbp), %rdi
callq 0xd370
jmp 0x5a462
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x5a398
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x98(%rbp), %rdi
callq 0xd1b0
leaq -0x99(%rbp), %rdi
callq 0xd370
jmp 0x5a4c4
cmpl $0x7ffffffe, -0x78(%rbp) # imm = 0x7FFFFFFE
jbe 0x5a460
movq -0xd0(%rbp), %rax
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x110(%rbp)
leaq -0xc1(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0xd5b0
movq -0x108(%rbp), %rdx
leaq 0xe343(%rip), %rsi      # 0x68732
leaq -0xc0(%rbp), %rdi
callq 0xd440
jmp 0x5a3fd
movq -0x110(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x262a0
jmp 0x5a412
leaq -0xc0(%rbp), %rdi
callq 0xd1b0
leaq -0xc1(%rbp), %rdi
callq 0xd370
jmp 0x5a460
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x5a452
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0xd1b0
leaq -0xc1(%rbp), %rdi
callq 0xd370
jmp 0x5a4c4
jmp 0x5a462
movl -0x78(%rbp), %eax
subl $0x1, %eax
addl $0x1, %eax
shll %eax
movb -0x3d(%rbp), %sil
movl $0x1, %ecx
xorl %edx, %edx
testb $0x1, %sil
cmovnel %edx, %ecx
orl %ecx, %eax
movl %eax, -0xc8(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x13d70
movl -0xc8(%rbp), %edx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %ecx
movl %edx, (%rax,%rcx,4)
jmp 0x5a4ae
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0x70(%rbp), %rdi
callq 0xd5a0
nopl (%rax)