// File: oknenavin[P]cxon/test/../src/cxon/lang/cbor/lib/boost/dynamic_bitset.hxx
// Function: bool cxon::cbor::imp::read_bitset_<cxon::CBOR<cxon::cbor::format_traits>, unsigned char, std::allocator<unsigned char>, unsigned char const*, cxon::context<cxon::CBOR<cxon::cbor::format_traits>>>(boost::dynamic_bitset<unsigned char, std::allocator<unsigned char>>&, unsigned char const*&, unsigned char const*, cxon::context<cxon::CBOR<cxon::cbor::format_traits>>&)
inline bool read_bitset_(boost::dynamic_bitset<B, A>& t, II& i, II e, Cx& cx) {
                switch (bio::peek(i, e) & X::mjr) {
                    case X::bstr: {
                        std::size_t N;
                        if (!cbor::cnt::read_size<X>(N, i, e, cx))
                            return false;
                        if (i == e)
                            return cx/cbor::read_error::unexpected;
                        bio::byte const S = *i;
                        t.resize(t.size() + --N * 8);
                            for (++i; N != 0 && i != e; --N, ++i) {
                                bio::byte const b = *i; t <<= 8;
                                t.set(7, b & 0x80); t.set(6, b & 0x40); t.set(5, b & 0x20); t.set(4, b & 0x10);
                                t.set(3, b & 0x08); t.set(2, b & 0x04); t.set(1, b & 0x02); t.set(0, b & 0x01);
                            }
                        t.resize(t.size() - S);
                        return N == 0 || cx/cbor::read_error::unexpected;
                    }
                    default:
                        return cx/cbor::read_error::unexpected;
                }
            }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movl $0xff, %edx
callq 0x2c880
movzbl %al, %eax
andl $0xe0, %eax
subl $0x40, %eax
jne 0x1301fa
jmp 0x12ffad
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq -0x30(%rbp), %rdi
callq 0x2da90
testb $0x1, %al
jne 0x12ffcf
movb $0x0, -0x1(%rbp)
jmp 0x13020d
movq -0x18(%rbp), %rax
movq (%rax), %rax
cmpq -0x20(%rbp), %rax
jne 0x12fff4
movq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0x2c9e0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x13020d
movq -0x18(%rbp), %rax
movq (%rax), %rax
movb (%rax), %al
movb %al, -0x31(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
callq 0x130300
movq -0x40(%rbp), %rdi
movq %rax, %rsi
movq -0x30(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x30(%rbp)
shlq $0x3, %rax
addq %rax, %rsi
xorl %edx, %edx
callq 0x130220
movq -0x18(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
xorl %eax, %eax
cmpq $0x0, -0x30(%rbp)
movb %al, -0x41(%rbp)
je 0x13005d
movq -0x18(%rbp), %rax
movq (%rax), %rax
cmpq -0x20(%rbp), %rax
setne %al
movb %al, -0x41(%rbp)
movb -0x41(%rbp), %al
testb $0x1, %al
jne 0x130069
jmp 0x1301ad
movq -0x18(%rbp), %rax
movq (%rax), %rax
movb (%rax), %al
movb %al, -0x32(%rbp)
movq -0x10(%rbp), %rdi
movl $0x8, %esi
callq 0x130320
movq -0x10(%rbp), %rdi
movzbl -0x32(%rbp), %eax
andl $0x80, %eax
cmpl $0x0, %eax
setne %al
movzbl %al, %edx
andl $0x1, %edx
movl $0x7, %esi
callq 0x1304c0
movq -0x10(%rbp), %rdi
movzbl -0x32(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
setne %al
movzbl %al, %edx
andl $0x1, %edx
movl $0x6, %esi
callq 0x1304c0
movq -0x10(%rbp), %rdi
movzbl -0x32(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
setne %al
movzbl %al, %edx
andl $0x1, %edx
movl $0x5, %esi
callq 0x1304c0
movq -0x10(%rbp), %rdi
movzbl -0x32(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
setne %al
movzbl %al, %edx
andl $0x1, %edx
movl $0x4, %esi
callq 0x1304c0
movq -0x10(%rbp), %rdi
movzbl -0x32(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movzbl %al, %edx
andl $0x1, %edx
movl $0x3, %esi
callq 0x1304c0
movq -0x10(%rbp), %rdi
movzbl -0x32(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
setne %al
movzbl %al, %edx
andl $0x1, %edx
movl $0x2, %esi
callq 0x1304c0
movq -0x10(%rbp), %rdi
movzbl -0x32(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
setne %al
movzbl %al, %edx
andl $0x1, %edx
movl $0x1, %esi
callq 0x1304c0
movq -0x10(%rbp), %rdi
movzbl -0x32(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
setne %al
xorl %ecx, %ecx
movzbl %al, %edx
andl $0x1, %edx
xorl %eax, %eax
movl %eax, %esi
callq 0x1304c0
movq -0x30(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x130040
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
callq 0x130300
movq -0x50(%rbp), %rdi
movq %rax, %rsi
movzbl -0x31(%rbp), %eax
subq %rax, %rsi
xorl %edx, %edx
callq 0x130220
movb $0x1, %al
cmpq $0x0, -0x30(%rbp)
movb %al, -0x42(%rbp)
je 0x1301f0
movq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0x2c9e0
movb %al, -0x42(%rbp)
movb -0x42(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x13020d
movq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0x2c9e0
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)