// File: /workspace/github_cpp_makefile_star2_O2/jo-qzy[P]MyJson/example.cpp
// Function: main
int main() {
    string json_source = "{\
                            \"encoding\" : \"UTF-8\",\
                            \"plug-ins\" : [\
                                \"python\",\
                                \"c++\",\
                                \"ruby\"\
                            ],\
                            \"indent\" : {\
                                \"length\" : 3,\
                                \"use_space\": true\
                            }\
                          }";

    // reader test
    JSON::Reader reader;
    JSON::Value root;
    reader.parse(json_source, root);
    
    // fast writet test
    JSON::FastWriter fw;
    cout << fw.write(root) << endl << endl;
    
    // style writer test
    JSON::StyleWriter sw;
    cout << sw.write(root) << endl << endl;

    // remove test
    root.removeMember("indent");
    cout << fw.write(root) << endl << endl;

    // append test
    JSON::Value item;
    item["array_key"] = "test_key";
    root.append(item);
    cout << fw.write(root) << endl << endl;

    // get member names
    vector<string> names = root.getMemberNames();
    for (auto vt : names)
        cout << vt << " , ";
    cout << endl << endl;

    // as string test

    // resize test
    root.resize(1);
    cout << fw.write(root) << endl << endl;

    // clear test
    root.clear();
    cout << fw.write(root) << endl << endl;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2c8, %rsp            # imm = 0x2C8
leaq 0x4c2a(%rip), %rsi      # 0x70c0
leaq -0x238(%rbp), %rbx
leaq -0x218(%rbp), %r14
movq %rbx, %rdi
movq %r14, %rdx
callq 0x2090
andl $0x0, (%r14)
leaq -0x200(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq -0x1d8(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
andq $0x0, 0x20(%rax)
leaq -0x1a8(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0xc8(%rbp), %rdi
movq %rbx, %rsi
callq 0x2220
leaq -0xc8(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x29a2
leaq -0xc8(%rbp), %rdi
callq 0x20c0
leaq 0x8802(%rip), %rax      # 0xad38
leaq -0x30(%rbp), %rsi
movq %rax, (%rsi)
leaq -0x170(%rbp), %rdi
leaq -0x218(%rbp), %rdx
callq 0x514c
movq 0x8a81(%rip), %rdi      # 0xafd8
leaq -0x170(%rbp), %rsi
callq 0x2190
movq %rax, %rdi
callq 0x20e0
movq %rax, %rdi
callq 0x20e0
leaq -0x170(%rbp), %rdi
callq 0x20c0
leaq 0x8802(%rip), %rax      # 0xad88
leaq -0x248(%rbp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
leaq -0x170(%rbp), %rdi
leaq -0x218(%rbp), %rdx
callq 0x29cc
movq 0x8a29(%rip), %rdi      # 0xafd8
leaq -0x170(%rbp), %rsi
callq 0x2190
movq %rax, %rdi
callq 0x20e0
movq %rax, %rdi
callq 0x20e0
leaq -0x170(%rbp), %rdi
callq 0x20c0
leaq 0x4c90(%rip), %rsi      # 0x726e
leaq -0xa8(%rbp), %rdi
leaq -0x170(%rbp), %rdx
callq 0x2090
leaq -0x2f0(%rbp), %rdi
leaq -0x218(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
callq 0x29ea
leaq -0x2f0(%rbp), %rdi
callq 0x2a36
leaq -0xa8(%rbp), %rdi
callq 0x20c0
leaq -0x170(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x218(%rbp), %rdx
callq 0x514c
movq 0x8997(%rip), %rdi      # 0xafd8
leaq -0x170(%rbp), %rsi
callq 0x2190
movq %rax, %rdi
callq 0x20e0
movq %rax, %rdi
callq 0x20e0
leaq -0x170(%rbp), %rbx
movq %rbx, %rdi
callq 0x20c0
andl $0x0, (%rbx)
leaq -0x158(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq -0x130(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
andq $0x0, 0x20(%rax)
leaq -0x100(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x4bba(%rip), %rsi      # 0x727e
leaq -0x88(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x2090
leaq -0x170(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x2a6c
leaq 0x4b87(%rip), %rsi      # 0x7275
movq %rax, %rdi
callq 0x2aa0
leaq -0x88(%rbp), %rdi
callq 0x20c0
leaq -0x218(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x2af4
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x218(%rbp), %rdx
callq 0x514c
movq 0x88a8(%rip), %rdi      # 0xafd8
leaq -0x50(%rbp), %rsi
callq 0x2190
movq %rax, %rdi
callq 0x20e0
movq %rax, %rdi
callq 0x20e0
leaq -0x50(%rbp), %rdi
callq 0x20c0
leaq -0x68(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x2c76
movq -0x68(%rbp), %rbx
movq -0x60(%rbp), %r13
leaq -0x50(%rbp), %r14
movq 0x8863(%rip), %r15      # 0xafd8
leaq 0x4b0c(%rip), %r12      # 0x7288
cmpq %r13, %rbx
je 0x27b0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2220
movq %r15, %rdi
movq %r14, %rsi
callq 0x2190
movq %rax, %rdi
movq %r12, %rsi
callq 0x21b0
movq %r14, %rdi
callq 0x20c0
addq $0x20, %rbx
jmp 0x277c
movq 0x8821(%rip), %rdi      # 0xafd8
callq 0x20e0
movq %rax, %rdi
callq 0x20e0
leaq -0x218(%rbp), %rdi
pushq $0x1
popq %rsi
callq 0x2d38
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x218(%rbp), %rdx
callq 0x514c
movq 0x87ea(%rip), %rdi      # 0xafd8
leaq -0x50(%rbp), %rsi
callq 0x2190
movq %rax, %rdi
callq 0x20e0
movq %rax, %rdi
callq 0x20e0
leaq -0x50(%rbp), %rdi
callq 0x20c0
leaq -0x218(%rbp), %rbx
movq %rbx, %rdi
callq 0x2dca
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movq %rbx, %rdx
callq 0x514c
movq 0x87a2(%rip), %rdi      # 0xafd8
leaq -0x50(%rbp), %rsi
callq 0x2190
movq %rax, %rdi
callq 0x20e0
movq %rax, %rdi
callq 0x20e0
leaq -0x50(%rbp), %rdi
callq 0x20c0
leaq -0x68(%rbp), %rdi
callq 0x2e10
leaq -0x170(%rbp), %rdi
callq 0x2a36
leaq -0x218(%rbp), %rdi
callq 0x2a36
leaq -0x238(%rbp), %rdi
callq 0x20c0
xorl %eax, %eax
addq $0x2c8, %rsp            # imm = 0x2C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2902
jmp 0x2902
jmp 0x28a3
jmp 0x28a3
jmp 0x28a3
movq %rax, %rbx
jmp 0x291c
jmp 0x28c8
movq %rax, %rbx
leaq -0xa8(%rbp), %rdi
jmp 0x28fb
jmp 0x28c8
jmp 0x28c8
jmp 0x28c8
movq %rax, %rbx
leaq -0xc8(%rbp), %rdi
jmp 0x28fb
movq %rax, %rbx
jmp 0x2928
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
jmp 0x28e6
jmp 0x2907
jmp 0x2907
jmp 0x2902
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x20c0
jmp 0x291c
jmp 0x28f1
jmp 0x28f1
movq %rax, %rbx
leaq -0x170(%rbp), %rdi
callq 0x20c0
jmp 0x2928
movq %rax, %rbx
jmp 0x2913
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x20c0
leaq -0x68(%rbp), %rdi
callq 0x2e10
leaq -0x170(%rbp), %rdi
callq 0x2a36
leaq -0x218(%rbp), %rdi
callq 0x2a36
leaq -0x238(%rbp), %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x2260