// File: oknenavin[P]cxon/examples/cxcf-ex01.cxx
// Function: main
int main() {
    // load
    config cf;
        auto const r = cxon::from_bytes(cf, cf_);
    // ready for use
    assert(
        r &&
        (cf.prop1 == 42) &&
        (cf.prop_array == decltype(cf.prop_array) {"one", "two", "three"}) &&
        (cf.prop_object.key1 == decltype(cf.prop_object.key1) {{"key.1", {1, 3, 5}}, {"key.2", {2, 4, 6}}}) &&
        (cf.prop_object.key2 == true)
    );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x370, %rsp            # imm = 0x370
movl $0x0, -0x4(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x268(%rbp)
callq 0x2f40
movq -0x268(%rbp), %rsi
leaq 0xcf40(%rip), %rdx      # 0xf2f0
leaq -0x78(%rbp), %rdi
callq 0x2f80
jmp 0x23bb
leaq -0x78(%rbp), %rdi
callq 0x2fb0
movb %al, %cl
movb $0x0, -0x119(%rbp)
movb $0x0, -0x11b(%rbp)
movb $0x0, -0x11d(%rbp)
movb $0x0, -0x11f(%rbp)
movb $0x0, -0x120(%rbp)
movb $0x0, -0x122(%rbp)
movb $0x0, -0x123(%rbp)
movb $0x0, -0x1e1(%rbp)
movb $0x0, -0x21e(%rbp)
movb $0x0, -0x21f(%rbp)
movb $0x0, -0x256(%rbp)
movb $0x0, -0x257(%rbp)
movb $0x0, -0x258(%rbp)
movb $0x0, -0x25b(%rbp)
movb $0x0, -0x25c(%rbp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x269(%rbp)
jne 0x2441
jmp 0x27fd
xorl %eax, %eax
cmpl $0x2a, -0x60(%rbp)
movb %al, -0x269(%rbp)
jne 0x27fd
leaq -0x58(%rbp), %rax
movq %rax, -0x288(%rbp)
leaq -0x110(%rbp), %rax
movq %rax, -0x280(%rbp)
movq %rax, -0x118(%rbp)
movb $0x1, -0x119(%rbp)
leaq -0x11a(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x2260
movq -0x280(%rbp), %rdi
movq -0x278(%rbp), %rdx
movb $0x1, -0x11b(%rbp)
leaq 0xd2a7(%rip), %rsi      # 0xf750
callq 0x21e0
jmp 0x24b0
leaq -0xf0(%rbp), %rax
movq %rax, -0x298(%rbp)
movq %rax, -0x118(%rbp)
leaq -0x11c(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x2260
movq -0x298(%rbp), %rdi
movq -0x290(%rbp), %rdx
movb $0x1, -0x11d(%rbp)
leaq 0xd260(%rip), %rsi      # 0xf754
callq 0x21e0
jmp 0x24fb
leaq -0xd0(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq %rax, -0x118(%rbp)
leaq -0x11e(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x2260
movq -0x2a8(%rbp), %rdi
movq -0x2a0(%rbp), %rdx
movb $0x1, -0x11f(%rbp)
leaq 0xd219(%rip), %rsi      # 0xf758
callq 0x21e0
jmp 0x2546
movb $0x0, -0x119(%rbp)
movb $0x1, -0x120(%rbp)
leaq -0x110(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq $0x3, -0xa8(%rbp)
leaq -0x121(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x3050
movq -0x2b0(%rbp), %rcx
movb $0x1, -0x122(%rbp)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
leaq -0xa0(%rbp), %rdi
callq 0x3070
jmp 0x25aa
movq -0x288(%rbp), %rdi
movb $0x1, -0x123(%rbp)
leaq -0xa0(%rbp), %rsi
callq 0x2fd0
movb %al, -0x2b1(%rbp)
jmp 0x25cc
movb -0x2b1(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x269(%rbp)
jne 0x25e4
jmp 0x27fd
leaq -0x40(%rbp), %rax
movq %rax, -0x2c8(%rbp)
leaq -0x1d8(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movb $0x1, -0x1e1(%rbp)
movl $0x1, -0x21c(%rbp)
movl $0x3, -0x218(%rbp)
movl $0x5, -0x214(%rbp)
leaq -0x21c(%rbp), %rax
movq %rax, -0x210(%rbp)
movq $0x3, -0x208(%rbp)
leaq -0x21d(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x3120
movq -0x2c0(%rbp), %rcx
movb $0x1, -0x21e(%rbp)
movq -0x210(%rbp), %rsi
movq -0x208(%rbp), %rdx
leaq -0x200(%rbp), %rdi
callq 0x3140
jmp 0x2678
movb $0x1, -0x21f(%rbp)
leaq 0xd0d8(%rip), %rsi      # 0xf75e
leaq -0x1d8(%rbp), %rdi
leaq -0x200(%rbp), %rdx
callq 0x31c0
jmp 0x269b
leaq -0x1a0(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movq %rax, -0x1e0(%rbp)
movl $0x2, -0x254(%rbp)
movl $0x4, -0x250(%rbp)
movl $0x6, -0x24c(%rbp)
leaq -0x254(%rbp), %rax
movq %rax, -0x248(%rbp)
movq $0x3, -0x240(%rbp)
leaq -0x255(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x3120
movq -0x2d0(%rbp), %rcx
movb $0x1, -0x256(%rbp)
movq -0x248(%rbp), %rsi
movq -0x240(%rbp), %rdx
leaq -0x238(%rbp), %rdi
callq 0x3140
jmp 0x2724
movq -0x2d8(%rbp), %rdi
movb $0x1, -0x257(%rbp)
leaq 0xd02b(%rip), %rsi      # 0xf764
leaq -0x238(%rbp), %rdx
callq 0x31c0
jmp 0x2747
movb $0x0, -0x1e1(%rbp)
movb $0x1, -0x258(%rbp)
leaq -0x1d8(%rbp), %rax
movq %rax, -0x168(%rbp)
movq $0x2, -0x160(%rbp)
leaq -0x25a(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x3260
movq -0x2e0(%rbp), %r8
movb $0x1, -0x25b(%rbp)
movq -0x168(%rbp), %rsi
movq -0x160(%rbp), %rdx
leaq -0x158(%rbp), %rdi
leaq -0x259(%rbp), %rcx
callq 0x3280
jmp 0x27b2
movq -0x2c8(%rbp), %rdi
movb $0x1, -0x25c(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x30f0
movb %al, -0x2e1(%rbp)
jmp 0x27d4
movb -0x2e1(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x269(%rbp)
jne 0x27e9
jmp 0x27fd
movb -0x10(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
sete %al
movb %al, -0x269(%rbp)
movb -0x269(%rbp), %al
testb $0x1, %al
jne 0x2809
jmp 0x280e
jmp 0x292a
leaq 0xcf55(%rip), %rdi      # 0xf76a
leaq 0xd032(%rip), %rsi      # 0xf84e
movl $0x3a, %edx
leaq 0xd034(%rip), %rcx      # 0xf85c
callq 0x2130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2d50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2cdf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2cc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2cad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2c3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2c24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2bb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2b9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2b81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2b68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2af8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
testb $0x1, -0x25c(%rbp)
jne 0x2aea
jmp 0x2af6
testb $0x1, -0x25c(%rbp)
jne 0x2935
jmp 0x2941
leaq -0x158(%rbp), %rdi
callq 0x3350
testb $0x1, -0x25b(%rbp)
jne 0x294c
jmp 0x2958
leaq -0x25a(%rbp), %rdi
callq 0x3370
testb $0x1, -0x258(%rbp)
jne 0x2963
jmp 0x29af
leaq -0x1d8(%rbp), %rax
movq %rax, -0x2f8(%rbp)
addq $0x70, %rax
movq %rax, -0x2f0(%rbp)
movq -0x2f0(%rbp), %rdi
addq $-0x38, %rdi
movq %rdi, -0x300(%rbp)
callq 0x3390
movq -0x2f8(%rbp), %rcx
movq -0x300(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x2f0(%rbp)
jne 0x297c
jmp 0x29af
testb $0x1, -0x257(%rbp)
jne 0x29ba
jmp 0x29c6
leaq -0x238(%rbp), %rdi
callq 0x33c0
testb $0x1, -0x256(%rbp)
jne 0x29d1
jmp 0x29dd
leaq -0x255(%rbp), %rdi
callq 0x3420
testb $0x1, -0x21f(%rbp)
jne 0x29e8
jmp 0x29f4
leaq -0x200(%rbp), %rdi
callq 0x33c0
testb $0x1, -0x21e(%rbp)
jne 0x29ff
jmp 0x2a0b
leaq -0x21d(%rbp), %rdi
callq 0x3420
testb $0x1, -0x123(%rbp)
jne 0x2a16
jmp 0x2a22
leaq -0xa0(%rbp), %rdi
callq 0x3440
testb $0x1, -0x122(%rbp)
jne 0x2a2d
jmp 0x2a39
leaq -0x121(%rbp), %rdi
callq 0x34a0
testb $0x1, -0x120(%rbp)
jne 0x2a44
jmp 0x2a90
leaq -0x110(%rbp), %rax
movq %rax, -0x310(%rbp)
addq $0x60, %rax
movq %rax, -0x308(%rbp)
movq -0x308(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x318(%rbp)
callq 0x2110
movq -0x310(%rbp), %rcx
movq -0x318(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x308(%rbp)
jne 0x2a5d
jmp 0x2a90
testb $0x1, -0x11f(%rbp)
jne 0x2a9b
jmp 0x2aa7
leaq -0x11e(%rbp), %rdi
callq 0x21b0
testb $0x1, -0x11d(%rbp)
jne 0x2ab2
jmp 0x2abe
leaq -0x11c(%rbp), %rdi
callq 0x21b0
testb $0x1, -0x11b(%rbp)
jne 0x2ac9
jmp 0x2ad5
leaq -0x11a(%rbp), %rdi
callq 0x21b0
leaq -0x60(%rbp), %rdi
callq 0x34c0
movl -0x4(%rbp), %eax
addq $0x370, %rsp            # imm = 0x370
popq %rbp
retq
leaq -0x158(%rbp), %rdi
callq 0x3350
jmp 0x2af8
testb $0x1, -0x25b(%rbp)
jne 0x2b03
jmp 0x2b0f
leaq -0x25a(%rbp), %rdi
callq 0x3370
testb $0x1, -0x258(%rbp)
jne 0x2b1a
jmp 0x2b66
leaq -0x1d8(%rbp), %rax
movq %rax, -0x328(%rbp)
addq $0x70, %rax
movq %rax, -0x320(%rbp)
movq -0x320(%rbp), %rdi
addq $-0x38, %rdi
movq %rdi, -0x330(%rbp)
callq 0x3390
movq -0x328(%rbp), %rcx
movq -0x330(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x320(%rbp)
jne 0x2b33
jmp 0x2b66
jmp 0x2b68
testb $0x1, -0x257(%rbp)
jne 0x2b73
jmp 0x2b7f
leaq -0x238(%rbp), %rdi
callq 0x33c0
jmp 0x2b81
testb $0x1, -0x256(%rbp)
jne 0x2b8c
jmp 0x2b98
leaq -0x255(%rbp), %rdi
callq 0x3420
jmp 0x2b9a
testb $0x1, -0x21f(%rbp)
jne 0x2ba5
jmp 0x2bb1
leaq -0x200(%rbp), %rdi
callq 0x33c0
jmp 0x2bb3
testb $0x1, -0x21e(%rbp)
jne 0x2bbe
jmp 0x2bca
leaq -0x21d(%rbp), %rdi
callq 0x3420
testb $0x1, -0x1e1(%rbp)
jne 0x2bd5
jmp 0x2c22
movq -0x1e0(%rbp), %rax
leaq -0x1d8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x338(%rbp)
je 0x2c20
movq -0x338(%rbp), %rdi
addq $-0x38, %rdi
movq %rdi, -0x340(%rbp)
callq 0x3390
movq -0x340(%rbp), %rax
leaq -0x1d8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x338(%rbp)
jne 0x2bef
jmp 0x2c22
jmp 0x2c24
testb $0x1, -0x123(%rbp)
jne 0x2c2f
jmp 0x2c3b
leaq -0xa0(%rbp), %rdi
callq 0x3440
jmp 0x2c3d
testb $0x1, -0x122(%rbp)
jne 0x2c48
jmp 0x2c54
leaq -0x121(%rbp), %rdi
callq 0x34a0
testb $0x1, -0x120(%rbp)
jne 0x2c5f
jmp 0x2cab
leaq -0x110(%rbp), %rax
movq %rax, -0x350(%rbp)
addq $0x60, %rax
movq %rax, -0x348(%rbp)
movq -0x348(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x358(%rbp)
callq 0x2110
movq -0x350(%rbp), %rcx
movq -0x358(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x348(%rbp)
jne 0x2c78
jmp 0x2cab
jmp 0x2cad
testb $0x1, -0x11f(%rbp)
jne 0x2cb8
jmp 0x2cc4
leaq -0x11e(%rbp), %rdi
callq 0x21b0
jmp 0x2cc6
testb $0x1, -0x11d(%rbp)
jne 0x2cd1
jmp 0x2cdd
leaq -0x11c(%rbp), %rdi
callq 0x21b0
jmp 0x2cdf
testb $0x1, -0x11b(%rbp)
jne 0x2cea
jmp 0x2cf6
leaq -0x11a(%rbp), %rdi
callq 0x21b0
testb $0x1, -0x119(%rbp)
jne 0x2d01
jmp 0x2d4e
movq -0x118(%rbp), %rax
leaq -0x110(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x360(%rbp)
je 0x2d4c
movq -0x360(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x368(%rbp)
callq 0x2110
movq -0x368(%rbp), %rax
leaq -0x110(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x360(%rbp)
jne 0x2d1b
jmp 0x2d4e
jmp 0x2d50
leaq -0x60(%rbp), %rdi
callq 0x34c0
movq -0x80(%rbp), %rdi
callq 0x2250
nopw %cs:(%rax,%rax)