// File: oknenavin[P]cxon/test/src/json/json.node-diff.cxx
// Function: int test::kind::diff<cxon::json::basic_node<cxon::json::ordered_node_traits<std::allocator<char>>>>(test::test&, char const*)
int diff(test& test, const char* prefix) {
            std::string json;
            {   // read
                std::ifstream is(test.source, std::ifstream::binary);
                    if (!is) {
                        test.error = "cannot be opened";
                        return 1;
                    }
                json.assign(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>());
            }
            {   // tidy
                std::ofstream os(prefix + name(test.source) + ".(0).json", std::ofstream::binary);
                    if (!os) {
                        test.error = prefix + name(test.source) + ".(0).json" + ": cannot be opened";
                        return 1;
                    }
                cxon::json::tidy(std::ostreambuf_iterator<char>(os), json);
            }
            T result;
            {   // from
                auto const r = cxon::from_bytes(result, json);
                    if (!r) {
                        test.error = format_error(r, json.cbegin());
                        return 1;
                    }
            }
            {   // to
                std::ofstream os(prefix + name(test.source) + ".(1).json", std::ofstream::binary);
                    if (!os) {
                        test.error = prefix + name(test.source) + ".(1).json" + "cannot be opened";
                        return 1;
                    }
                auto const w = cxon::to_bytes(cxon::json::make_indenter(std::ostreambuf_iterator<char>(os)), result);
                    if (!w) {
                        test.error += w.ec.category().name(),
                        test.error += ": " + w.ec.message();
                    }
            }
            return 0;
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x9c0, %rsp            # imm = 0x9C0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xf250
movq -0x10(%rbp), %rsi
leaq -0x240(%rbp), %rdi
movl $0x4, %edx
callq 0xf660
jmp 0x11993
movq -0x240(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x240(%rbp,%rax), %rdi
callq 0xf040
movb %al, -0x959(%rbp)
jmp 0x119b3
movb -0x959(%rbp), %al
testb $0x1, %al
jne 0x119bf
jmp 0x11a25
movq -0x10(%rbp), %rdi
addq $0x58, %rdi
leaq 0x2373d8(%rip), %rsi    # 0x248da6
callq 0xf2b0
jmp 0x119d5
movl $0x1, -0x4(%rbp)
movl $0x1, -0x250(%rbp)
jmp 0x11a74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x1224e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xf050
jmp 0x1224e
leaq -0x260(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x18790
leaq -0x270(%rbp), %rdi
callq 0x187f0
movq -0x260(%rbp), %rsi
movl -0x258(%rbp), %edx
movq -0x270(%rbp), %rcx
movl -0x268(%rbp), %r8d
leaq -0x38(%rbp), %rdi
callq 0x186e0
jmp 0x11a6a
movl $0x0, -0x250(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xf050
movl -0x250(%rbp), %eax
testl %eax, %eax
jne 0x12239
jmp 0x11a90
movq -0x18(%rbp), %rax
movq %rax, -0x968(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x4d0(%rbp), %rdi
callq 0x106f0
jmp 0x11aad
movq -0x968(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
leaq -0x4d0(%rbp), %rdx
callq 0x122e0
jmp 0x11ac9
leaq 0x2371ab(%rip), %rdx    # 0x248c7b
leaq -0x490(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x12290
jmp 0x11ae5
leaq -0x470(%rbp), %rdi
leaq -0x490(%rbp), %rsi
movl $0x4, %edx
callq 0xf160
jmp 0x11aff
leaq -0x490(%rbp), %rdi
callq 0xf490
leaq -0x4b0(%rbp), %rdi
callq 0xf490
leaq -0x4d0(%rbp), %rdi
callq 0xf490
movq -0x470(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x470(%rbp,%rax), %rdi
callq 0xf040
movb %al, -0x969(%rbp)
jmp 0x11b43
movb -0x969(%rbp), %al
testb $0x1, %al
jne 0x11b52
jmp 0x11cfa
movq -0x18(%rbp), %rax
movq %rax, -0x978(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x550(%rbp), %rdi
callq 0x106f0
jmp 0x11b6f
movq -0x978(%rbp), %rsi
leaq -0x530(%rbp), %rdi
leaq -0x550(%rbp), %rdx
callq 0x122e0
jmp 0x11b8b
leaq 0x2370e9(%rip), %rdx    # 0x248c7b
leaq -0x510(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x12290
jmp 0x11ba7
leaq 0x2371f6(%rip), %rdx    # 0x248da4
leaq -0x4f0(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0x12290
jmp 0x11bc3
movq -0x10(%rbp), %rdi
addq $0x58, %rdi
leaq -0x4f0(%rbp), %rsi
callq 0xf3a0
leaq -0x4f0(%rbp), %rdi
callq 0xf490
leaq -0x510(%rbp), %rdi
callq 0xf490
leaq -0x530(%rbp), %rdi
callq 0xf490
leaq -0x550(%rbp), %rdi
callq 0xf490
movl $0x1, -0x4(%rbp)
movl $0x1, -0x250(%rbp)
jmp 0x11d3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x11c6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x11c63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x490(%rbp), %rdi
callq 0xf490
leaq -0x4b0(%rbp), %rdi
callq 0xf490
leaq -0x4d0(%rbp), %rdi
callq 0xf490
jmp 0x1224e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x11df8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x11ce9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x11cdd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x510(%rbp), %rdi
callq 0xf490
leaq -0x530(%rbp), %rdi
callq 0xf490
leaq -0x550(%rbp), %rdi
callq 0xf490
jmp 0x11df8
leaq -0x560(%rbp), %rdi
leaq -0x470(%rbp), %rsi
callq 0x188a0
movq -0x560(%rbp), %rdi
movl -0x558(%rbp), %esi
leaq -0x38(%rbp), %rdx
movl $0x1, %ecx
movl $0x9, %r8d
callq 0x18820
jmp 0x11d30
movl $0x0, -0x250(%rbp)
leaq -0x470(%rbp), %rdi
callq 0xf4b0
movl -0x250(%rbp), %eax
testl %eax, %eax
jne 0x12239
jmp 0x11d56
leaq -0x588(%rbp), %rdi
movq %rdi, -0x980(%rbp)
callq 0x18910
movq -0x980(%rbp), %rsi
leaq -0x5a0(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x18940
jmp 0x11d82
leaq -0x5a0(%rbp), %rdi
callq 0x189a0
testb $0x1, %al
jne 0x11e20
leaq -0x38(%rbp), %rdi
callq 0xf390
movq %rax, -0x5c8(%rbp)
movq -0x5c8(%rbp), %rdx
leaq -0x5c0(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
callq 0x189c0
jmp 0x11dc2
movq -0x10(%rbp), %rdi
addq $0x58, %rdi
leaq -0x5c0(%rbp), %rsi
callq 0xf3a0
leaq -0x5c0(%rbp), %rdi
callq 0xf490
movl $0x1, -0x4(%rbp)
movl $0x1, -0x250(%rbp)
jmp 0x1221d
leaq -0x470(%rbp), %rdi
callq 0xf4b0
jmp 0x1224e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x1222b
movq -0x18(%rbp), %rax
movq %rax, -0x988(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x828(%rbp), %rdi
callq 0x106f0
jmp 0x11e3d
movq -0x988(%rbp), %rsi
leaq -0x808(%rbp), %rdi
leaq -0x828(%rbp), %rdx
callq 0x122e0
jmp 0x11e59
leaq 0x236e25(%rip), %rdx    # 0x248c85
leaq -0x7e8(%rbp), %rdi
leaq -0x808(%rbp), %rsi
callq 0x12290
jmp 0x11e75
leaq -0x7c8(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
movl $0x4, %edx
callq 0xf160
jmp 0x11e8f
leaq -0x7e8(%rbp), %rdi
callq 0xf490
leaq -0x808(%rbp), %rdi
callq 0xf490
leaq -0x828(%rbp), %rdi
callq 0xf490
movq -0x7c8(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x7c8(%rbp,%rax), %rdi
callq 0xf040
movb %al, -0x989(%rbp)
jmp 0x11ed3
movb -0x989(%rbp), %al
testb $0x1, %al
jne 0x11ee2
jmp 0x1208a
movq -0x18(%rbp), %rax
movq %rax, -0x998(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x8a8(%rbp), %rdi
callq 0x106f0
jmp 0x11eff
movq -0x998(%rbp), %rsi
leaq -0x888(%rbp), %rdi
leaq -0x8a8(%rbp), %rdx
callq 0x122e0
jmp 0x11f1b
leaq 0x236d63(%rip), %rdx    # 0x248c85
leaq -0x868(%rbp), %rdi
leaq -0x888(%rbp), %rsi
callq 0x12290
jmp 0x11f37
leaq 0x236e68(%rip), %rdx    # 0x248da6
leaq -0x848(%rbp), %rdi
leaq -0x868(%rbp), %rsi
callq 0x12290
jmp 0x11f53
movq -0x10(%rbp), %rdi
addq $0x58, %rdi
leaq -0x848(%rbp), %rsi
callq 0xf3a0
leaq -0x848(%rbp), %rdi
callq 0xf490
leaq -0x868(%rbp), %rdi
callq 0xf490
leaq -0x888(%rbp), %rdi
callq 0xf490
leaq -0x8a8(%rbp), %rdi
callq 0xf490
movl $0x1, -0x4(%rbp)
movl $0x1, -0x250(%rbp)
jmp 0x121e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x11fff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x11ff3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x7e8(%rbp), %rdi
callq 0xf490
leaq -0x808(%rbp), %rdi
callq 0xf490
leaq -0x828(%rbp), %rdi
callq 0xf490
jmp 0x1222b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x1220f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x12079
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x1206d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x868(%rbp), %rdi
callq 0xf490
leaq -0x888(%rbp), %rdi
callq 0xf490
leaq -0x8a8(%rbp), %rdi
callq 0xf490
jmp 0x1220f
leaq -0x918(%rbp), %rdi
leaq -0x7c8(%rbp), %rsi
callq 0x188a0
movq -0x918(%rbp), %rsi
movl -0x910(%rbp), %edx
leaq -0x908(%rbp), %rdi
movl $0x1, %ecx
movl $0x9, %r8d
callq 0x18c70
jmp 0x120c3
movq -0x8e8(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x908(%rbp), %xmm0
movups -0x8f8(%rbp), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x8e0(%rbp), %rdi
leaq -0x588(%rbp), %rsi
callq 0x18bf0
jmp 0x120fb
leaq -0x8e0(%rbp), %rdi
callq 0x18cc0
testb $0x1, %al
jne 0x121da
leaq -0x8e0(%rbp), %rdi
callq 0x18ce0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rsi
movq -0x10(%rbp), %rdi
addq $0x58, %rdi
callq 0xf140
jmp 0x12139
leaq -0x958(%rbp), %rdi
leaq -0x8e0(%rbp), %rsi
callq 0x18d00
jmp 0x1214e
leaq 0x236d69(%rip), %rsi    # 0x248ebe
leaq -0x938(%rbp), %rdi
leaq -0x958(%rbp), %rdx
callq 0x122e0
jmp 0x1216a
movq -0x10(%rbp), %rdi
addq $0x58, %rdi
leaq -0x938(%rbp), %rsi
callq 0xf0b0
jmp 0x12180
leaq -0x938(%rbp), %rdi
callq 0xf490
leaq -0x958(%rbp), %rdi
callq 0xf490
jmp 0x121da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x121cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x938(%rbp), %rdi
callq 0xf490
leaq -0x958(%rbp), %rdi
callq 0xf490
jmp 0x1220f
movl $0x0, -0x250(%rbp)
leaq -0x7c8(%rbp), %rdi
callq 0xf4b0
movl -0x250(%rbp), %eax
testl %eax, %eax
jne 0x1221d
jmp 0x121fc
movl $0x0, -0x4(%rbp)
movl $0x1, -0x250(%rbp)
jmp 0x1221d
leaq -0x7c8(%rbp), %rdi
callq 0xf4b0
jmp 0x1222b
leaq -0x588(%rbp), %rdi
callq 0x18d50
jmp 0x12239
leaq -0x588(%rbp), %rdi
callq 0x18d50
jmp 0x1224e
leaq -0x38(%rbp), %rdi
callq 0xf490
movl -0x4(%rbp), %eax
addq $0x9c0, %rsp            # imm = 0x9C0
popq %rbp
retq
leaq -0x38(%rbp), %rdi
callq 0xf490
movq -0x248(%rbp), %rdi
callq 0xf410
nopw %cs:(%rax,%rax)
nopl (%rax)