// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rsi, -0x30(%rbp)
movq %rdi, %r14
movq (%rdi), %rax
movq -0x18(%rax), %rbx
addq %rbx, %rdi
callq 0x1d33a
cmpq $0x0, 0x10(%r14,%rbx)
je 0x3dfff
cmpl $0x3, 0x40(%r14,%rbx)
je 0x3e027
movq (%r14), %rax
movq -0x18(%rax), %rbx
leaq (%r14,%rbx), %rdi
callq 0x1d33a
cmpq $0x0, 0x10(%r14,%rbx)
je 0x3e0ed
cmpl $0x4, 0x40(%r14,%rbx)
jne 0x3e0ed
movq (%r14), %rax
movq -0x18(%rax), %rax
movq 0x10(%r14,%rax), %r12
leaq -0x3(%r12), %rcx
shrq $0x2, %rcx
cmpq $0x3fffffff, %rcx       # imm = 0x3FFFFFFF
jae 0x3e5ab
leaq (%r14,%rax), %r15
movq 0x18(%r14,%rax), %rbx
movq 0x8(%r14,%rax), %rax
movq %rax, -0x38(%rbp)
leal -0x2(%r12), %r13d
movq %r15, %rdi
callq 0x1d33a
cmpl $0x3, 0x40(%r15)
leal -0x8(,%r12,4), %edi
cmovnel %r13d, %edi
cmpq $0x0, 0x10(%r15)
cmovel %r13d, %edi
movq -0x30(%rbp), %rsi
movl 0x8(%rsi), %ecx
movl 0x18(%rsi), %edx
leal (%rdi,%rcx), %r15d
cmpl %r15d, %edx
movq %rdi, -0x40(%rbp)
jae 0x3e0e5
movl %edx, %eax
shrl %eax
addl %eax, %r15d
movq (%rsi), %rax
cmpl %r15d, %edx
je 0x3e3da
testq %rax, %rax
je 0x3e38c
testl %r15d, %r15d
je 0x3e3b8
movl %r15d, %esi
shlq $0x2, %rsi
movq %rax, %rdi
callq 0xb470
testq %rax, %rax
je 0x3e5ca
movq -0x30(%rbp), %rsi
movq %rax, (%rsi)
movl 0x8(%rsi), %ecx
jmp 0x3e3d6
movq (%rsi), %rax
jmp 0x3e3da
movq (%r14), %rax
movq -0x18(%rax), %rbx
leaq (%r14,%rbx), %rdi
callq 0x1d33a
cmpq $0x0, 0x10(%r14,%rbx)
je 0x3e19b
cmpl $0x6, 0x40(%r14,%rbx)
jne 0x3e19b
movq (%r14), %rax
movq -0x18(%rax), %rbx
leaq (%r14,%rbx), %r15
movq %r15, %rdi
callq 0x1d33a
cmpq $0x0, 0x10(%r14,%rbx)
je 0x3e19b
movq 0x8(%r15), %rax
movq 0x18(%r15), %rcx
cmpb $0x2a, (%rcx,%rax)
jne 0x3e19b
movq -0x30(%rbp), %rsi
movl 0x8(%rsi), %ecx
movl 0x18(%rsi), %edx
leal 0x1(%rcx), %ebx
cmpl %ebx, %edx
jae 0x3e4e5
movl %edx, %eax
shrl %eax
addl %eax, %ebx
movq (%rsi), %rax
cmpl %ebx, %edx
je 0x3e57a
testq %rax, %rax
je 0x3e52f
testl %ebx, %ebx
je 0x3e559
movl %ebx, %esi
shlq $0x2, %rsi
movq %rax, %rdi
callq 0xb470
testq %rax, %rax
je 0x3e5ca
movq -0x30(%rbp), %rsi
movq %rax, (%rsi)
movl 0x8(%rsi), %ecx
jmp 0x3e577
movq (%r14), %rax
movq -0x18(%rax), %rbx
leaq (%r14,%rbx), %r15
movq %r15, %rdi
callq 0x1d33a
movl $0x1, %r13d
cmpq $0x0, 0x10(%r14,%rbx)
je 0x3e289
movq 0x8(%r15), %rax
movq 0x18(%r15), %rcx
cmpb $0x2d, (%rcx,%rax)
jne 0x3e289
movq (%r14), %rax
movq -0x18(%rax), %rbx
cmpq $0x0, 0x10(%r14,%rbx)
je 0x3e1fc
incq 0x8(%r14,%rbx)
movq $0x0, 0x10(%r14,%rbx)
movl $0x0, 0x40(%r14,%rbx)
movq -0x18(%rax), %rbx
leaq (%r14,%rbx), %rdi
callq 0x1d33a
cmpq $0x0, 0x10(%r14,%rbx)
je 0x3e215
cmpl $0x3, 0x40(%r14,%rbx)
je 0x3e238
movq (%r14), %rax
movq -0x18(%rax), %rbx
leaq (%r14,%rbx), %rdi
callq 0x1d33a
xorl %r13d, %r13d
cmpq $0x0, 0x10(%r14,%rbx)
je 0x3e289
cmpl $0x4, 0x40(%r14,%rbx)
jne 0x3e289
movq (%r14), %rax
leaq -0x90(%rbp), %rbx
movq -0x18(%rax), %r15
addq %r14, %r15
movq %rbx, -0x10(%rbx)
leaq 0xdda9(%rip), %rsi      # 0x4bffd
leaq 0xddc8(%rip), %rdx      # 0x4c023
leaq -0xa0(%rbp), %r12
movq %r12, %rdi
callq 0x1dab2
movq %r15, %rdi
movq %r12, %rsi
callq 0x1c690
movq -0xa0(%rbp), %rdi
xorl %r13d, %r13d
cmpq %rbx, %rdi
je 0x3e289
callq 0xb280
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
xorl %esi, %esi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x1c066
movl %eax, %r15d
testl %eax, %eax
je 0x3e2e9
cmpl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
jb 0x3e32b
movq (%r14), %rax
leaq -0x50(%rbp), %rbx
addq -0x18(%rax), %r14
movq %rbx, -0x10(%rbx)
leaq 0xdd85(%rip), %rsi      # 0x4c04a
leaq 0xdd9d(%rip), %rdx      # 0x4c069
leaq -0x60(%rbp), %r12
movq %r12, %rdi
callq 0x1dab2
movq %r14, %rdi
movq %r12, %rsi
callq 0x1c690
movq -0x60(%rbp), %rdi
jmp 0x3e321
movq (%r14), %rax
leaq -0x70(%rbp), %rbx
addq -0x18(%rax), %r14
movq %rbx, -0x10(%rbx)
leaq 0xdd25(%rip), %rsi      # 0x4c024
leaq 0xdd43(%rip), %rdx      # 0x4c049
leaq -0x80(%rbp), %r12
movq %r12, %rdi
callq 0x1dab2
movq %r14, %rdi
movq %r12, %rsi
callq 0x1c690
movq -0x80(%rbp), %rdi
cmpq %rbx, %rdi
je 0x3e32b
callq 0xb280
movq -0x30(%rbp), %rsi
movl 0x8(%rsi), %ecx
movl 0x18(%rsi), %edx
leal 0x1(%rcx), %ebx
cmpl %ebx, %edx
jae 0x3e384
movl %edx, %eax
shrl %eax
addl %eax, %ebx
movq (%rsi), %rax
cmpl %ebx, %edx
je 0x3e50e
testq %rax, %rax
je 0x3e4bb
testl %ebx, %ebx
je 0x3e4ed
movl %ebx, %esi
shlq $0x2, %rsi
movq %rax, %rdi
callq 0xb470
testq %rax, %rax
je 0x3e5ca
movq -0x30(%rbp), %rsi
movq %rax, (%rsi)
movl 0x8(%rsi), %ecx
jmp 0x3e50b
movq (%rsi), %rax
jmp 0x3e50e
testl %r15d, %r15d
je 0x3e3cb
movl %r15d, %edi
shlq $0x2, %rdi
callq 0xb380
movq -0x30(%rbp), %rsi
movq %rax, (%rsi)
testq %rax, %rax
je 0x3e5e9
movl $0x0, 0x8(%rsi)
xorl %ecx, %ecx
jmp 0x3e3d6
movq %rax, %rdi
callq 0xb350
movq -0x30(%rbp), %rsi
movq $0x0, (%rsi)
movl $0x0, 0x8(%rsi)
xorl %ecx, %ecx
xorl %eax, %eax
movl %r15d, 0x18(%rsi)
movl %ecx, %ecx
leaq (%rax,%rcx,4), %r15
movq (%r14), %rax
movq -0x18(%rax), %r13
leaq (%r14,%r13), %rdi
callq 0x1d33a
cmpq $0x0, 0x10(%r14,%r13)
je 0x3e468
cmpl $0x3, 0x40(%r14,%r13)
jne 0x3e468
addq -0x38(%rbp), %rbx
movl $0x2, %eax
movq -0x30(%rbp), %rsi
movq -0x40(%rbp), %rdi
movb (%rbx,%rax), %cl
cmpb $0x40, %cl
jg 0x3e41e
addb $-0x30, %cl
jmp 0x3e42e
cmpb $0x61, %cl
setb %dl
shlb $0x5, %dl
addb %cl, %dl
addb $-0x57, %dl
movl %edx, %ecx
movzbl %cl, %ecx
movl %ecx, %edx
shrl $0x3, %edx
andl $0x1, %edx
movl %edx, (%r15)
movl %ecx, %edx
shrl $0x2, %edx
andl $0x1, %edx
movl %edx, 0x4(%r15)
movl %ecx, %edx
shrl %edx
andl $0x1, %edx
movl %edx, 0x8(%r15)
andl $0x1, %ecx
movl %ecx, 0xc(%r15)
addq $0x10, %r15
incq %rax
cmpq %rax, %r12
jne 0x3e411
jmp 0x3e496
movq -0x38(%rbp), %rax
addq %rbx, %rax
addq $0x2, %rax
addq $-0x2, %r12
xorl %ecx, %ecx
movq -0x30(%rbp), %rsi
movq -0x40(%rbp), %rdi
xorl %edx, %edx
cmpb $0x30, (%rax,%rcx)
setne %dl
movl %edx, (%r15,%rcx,4)
incq %rcx
cmpq %rcx, %r12
jne 0x3e481
movq (%r14), %rax
movq -0x18(%rax), %rax
movq 0x10(%r14,%rax), %rcx
addq %rcx, 0x8(%r14,%rax)
movq $0x0, 0x10(%r14,%rax)
movl $0x0, 0x40(%r14,%rax)
jmp 0x3e51d
testl %ebx, %ebx
je 0x3e500
movl %ebx, %edi
shlq $0x2, %rdi
callq 0xb380
movq -0x30(%rbp), %rsi
movq %rax, (%rsi)
testq %rax, %rax
je 0x3e5e9
movl $0x0, 0x8(%rsi)
xorl %ecx, %ecx
jmp 0x3e50b
movq (%rsi), %rax
jmp 0x3e57a
movq %rax, %rdi
callq 0xb350
movq -0x30(%rbp), %rsi
movq $0x0, (%rsi)
movl $0x0, 0x8(%rsi)
xorl %ecx, %ecx
xorl %eax, %eax
movl %ebx, 0x18(%rsi)
leal (%r13,%r15,2), %edx
movl %ecx, %ecx
movl %edx, (%rax,%rcx,4)
movl $0x1, %edi
addl %edi, 0x8(%rsi)
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testl %ebx, %ebx
je 0x3e56c
movl %ebx, %edi
shlq $0x2, %rdi
callq 0xb380
movq -0x30(%rbp), %rsi
movq %rax, (%rsi)
testq %rax, %rax
je 0x3e5e9
movl $0x0, 0x8(%rsi)
xorl %ecx, %ecx
jmp 0x3e577
movq %rax, %rdi
callq 0xb350
movq -0x30(%rbp), %rsi
movq $0x0, (%rsi)
movl $0x0, 0x8(%rsi)
xorl %ecx, %ecx
xorl %eax, %eax
movl %ebx, 0x18(%rsi)
movl %ecx, %ecx
movl $0xffffffff, (%rax,%rcx,4) # imm = 0xFFFFFFFF
movq (%r14), %rax
movq -0x18(%rax), %rax
movq 0x10(%r14,%rax), %rcx
addq %rcx, 0x8(%r14,%rax)
movq $0x0, 0x10(%r14,%rax)
movl $0x0, 0x40(%r14,%rax)
jmp 0x3e518
leaq 0xd9c6(%rip), %rdi      # 0x4bf78
leaq 0xd8cd(%rip), %rsi      # 0x4be86
leaq 0xd9e9(%rip), %rcx      # 0x4bfa9
movl $0x126, %edx            # imm = 0x126
callq 0xb180
leaq 0x2ca6(%rip), %rdi      # 0x41277
leaq 0x11cb(%rip), %rsi      # 0x3f7a3
leaq 0x11dc(%rip), %rcx      # 0x3f7bb
movl $0x33, %edx
callq 0xb180
leaq 0x1221(%rip), %rdi      # 0x3f811
leaq 0x11ac(%rip), %rsi      # 0x3f7a3
leaq 0x11bd(%rip), %rcx      # 0x3f7bb
movl $0x38, %edx
callq 0xb180
movq %rax, %r14
movq -0xa0(%rbp), %rdi
jmp 0x3e624
movq %rax, %r14
movq -0x60(%rbp), %rdi
jmp 0x3e624
movq %rax, %r14
movq -0x80(%rbp), %rdi
cmpq %rbx, %rdi
je 0x3e62e
callq 0xb280
movq %r14, %rdi
callq 0xb4e0