// File: /workspace/github_cpp_makefile_star2_O1/oknenavin[P]cxon/examples/common-interface.cxx
// Function: main
int main() {
    using CBOR = cxon::CBOR<>;

    char const  json_in[] = "[1,5,7]";
    std::string json_out;

    std::vector<unsigned char> cbor;
    {
        std::vector<int> cxx;
        auto fbr = cxon::from_bytes(cxx, json_in);      // JSON to C++
            assert(fbr);
        auto tbr = cxon::to_bytes<CBOR>(cbor, cxx);     // C++ to CBOR
            assert(tbr);
    }
    {
        std::vector<int> cxx;
        auto fbr = cxon::from_bytes<CBOR>(cxx, cbor);   // CBOR to C++
            assert(fbr);
        auto tbr = cxon::to_bytes(json_out, cxx);       // C++ to JSON
            assert(tbr);
    }

    assert(json_out == json_in);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movabsq $0x5d372c352c315b, %rax # imm = 0x5D372C352C315B
leaq 0x30(%rsp), %r14
movq %rax, -0x8(%r14)
leaq 0xb8(%rsp), %r13
movq %r13, -0x10(%r13)
xorl %eax, %eax
movq %rax, -0x8(%r13)
movb $0x0, (%r13)
movq %rax, 0x60(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
leaq 0x90(%rsp), %rbp
movq %rax, 0x10(%rbp)
movaps %xmm0, (%rbp)
leaq 0x28(%rsp), %rax
leaq 0xc8(%rsp), %r15
movq %rax, (%r15)
leaq 0x70(%rsp), %r12
movl $0x0, (%r12)
callq 0x2060
movq %rax, %rbx
movq %rax, 0x8(%r12)
leaq 0xd0(%rsp), %rax
movq %r14, (%rax)
movq %rbp, 0x30(%rsp)
movq %r15, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq %r12, 0x48(%rsp)
movups 0x30(%rsp), %xmm0
movups 0x40(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %r15, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x2663
movl 0x70(%rsp), %ecx
testl %ecx, %ecx
setne %dl
xorb %dl, %al
je 0x2510
testl %ecx, %ecx
jne 0x2527
leaq 0x30(%rsp), %rdx
movl $0x0, (%rdx)
movq %rbx, 0x8(%rdx)
leaq 0x50(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x2b84
movl 0x30(%rsp), %ecx
testl %ecx, %ecx
setne %dl
xorb %dl, %al
je 0x2546
testl %ecx, %ecx
jne 0x255d
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x2423
callq 0x20f0
xorps %xmm0, %xmm0
leaq 0x70(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rdx
leaq 0x90(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x30(%rsp), %rcx
movl $0x0, (%rcx)
movq %rbx, 0x8(%rcx)
callq 0x2f8e
movl 0x30(%rsp), %ecx
testl %ecx, %ecx
setne %dl
xorb %dl, %al
je 0x257c
testl %ecx, %ecx
jne 0x259b
leaq 0x30(%rsp), %rdx
movl $0x0, (%rdx)
movq %rbx, 0x8(%rdx)
leaq 0xa8(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x3b2a
movl 0x30(%rsp), %ecx
testl %ecx, %ecx
setne %dl
xorb %dl, %al
je 0x25ba
testl %ecx, %ecx
jne 0x25d9
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x24c1
callq 0x20f0
leaq 0xa8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x2040
testl %eax, %eax
jne 0x25f8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x24ea
callq 0x20f0
movq 0xa8(%rsp), %rdi
cmpq %r13, %rdi
je 0x24fc
callq 0x20f0
xorl %eax, %eax
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1bd1(%rip), %rdi      # 0x40e8
leaq 0x1bd7(%rip), %rsi      # 0x40f5
leaq 0x1be5(%rip), %rcx      # 0x410a
jmp 0x2591
leaq 0x1b7e(%rip), %rdi      # 0x40ac
leaq 0x1b7b(%rip), %rsi      # 0x40b0
leaq 0x1b89(%rip), %rcx      # 0x40c5
movl $0x15, %edx
callq 0x2090
leaq 0x1b9b(%rip), %rdi      # 0x40e8
leaq 0x1ba1(%rip), %rsi      # 0x40f5
leaq 0x1d56(%rip), %rcx      # 0x42b1
jmp 0x25cf
leaq 0x1b6c(%rip), %rdi      # 0x40d0
leaq 0x1b45(%rip), %rsi      # 0x40b0
leaq 0x1b53(%rip), %rcx      # 0x40c5
movl $0x17, %edx
callq 0x2090
leaq 0x1b65(%rip), %rdi      # 0x40e8
leaq 0x1b6b(%rip), %rsi      # 0x40f5
leaq 0x1f57(%rip), %rcx      # 0x44e8
movl $0xbd, %edx
callq 0x2090
leaq 0x1b0a(%rip), %rdi      # 0x40ac
leaq 0x1b07(%rip), %rsi      # 0x40b0
leaq 0x1b15(%rip), %rcx      # 0x40c5
movl $0x1c, %edx
callq 0x2090
leaq 0x1b27(%rip), %rdi      # 0x40e8
leaq 0x1b2d(%rip), %rsi      # 0x40f5
leaq 0x21c0(%rip), %rcx      # 0x478f
movl $0xe6, %edx
callq 0x2090
leaq 0x1af0(%rip), %rdi      # 0x40d0
leaq 0x1ac9(%rip), %rsi      # 0x40b0
leaq 0x1ad7(%rip), %rcx      # 0x40c5
movl $0x1e, %edx
callq 0x2090
leaq 0x1ad5(%rip), %rdi      # 0x40d4
leaq 0x1aaa(%rip), %rsi      # 0x40b0
leaq 0x1ab8(%rip), %rcx      # 0x40c5
movl $0x21, %edx
callq 0x2090
jmp 0x2619
movq %rax, %rbx
movq 0x70(%rsp), %rdi
jmp 0x2630
jmp 0x2625
movq %rax, %rbx
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x263a
callq 0x20f0
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x2649
callq 0x20f0
movq 0xa8(%rsp), %rdi
cmpq %r13, %rdi
je 0x265b
callq 0x20f0
movq %rbx, %rdi
callq 0x2140