// File: /workspace/github_cpp_makefile_star2_O2/benjibc[P]json-universal-container/jsonUnitTest.cpp
// Function: main
int main()
{
    JSON data;
    populate(data);
    int ID = (int)data["id"];
    assert(((int)data["id"]) == ID);
    assert(((string)data["person"][0]["name"]) == "Benny");
    assert(((int)data["secondID"]) == 1);
    std::cout << data.json_encode() << std::endl;
    JSON decoded;
    JSONDecode(data.json_encode(), decoded);
    std::cout << decoded.json_encode() << std::endl;
    std::string test_data = "{ \"glossary\": { \"title\": \"example glossary\","
		"\"GlossDiv\": { \"title\": \"S\", \"GlossList\": { \"GlossEntry\": {"
        "\"ID\": \"SGML\",\"SortAs\": \"SGML\","
	    "\"GlossTerm\": \"Standard Generalized Markup Language\","
        "\"Acronym\": \"SGML\",\"Abbrev\": \"ISO 8879:1986\","
        "\"GlossDef\": {\"para\": \"A meta-markup language, "
        "used to create markup languages such as DocBook.\","
        "\"GlossSeeAlso\": [\"GML\", \"XML\"]},\"GlossSee\": \"markup\""
        "} } } } }";
    JSON decoded2;
    JSONDecode(test_data, decoded2);
    std::cout << decoded2.json_encode() << std::endl;
    return 0;
}

// Assembly:
pushq %rbx
subq $0xd0, %rsp
leaq 0x60(%rsp), %rdi
andl $0x0, 0x28(%rdi)
callq 0x30c0
leaq 0x4f96(%rip), %rsi      # 0x8227
leaq 0x60(%rsp), %rdi
callq 0x385c
movq %rax, %rdi
callq 0x3ae6
movl %eax, %ebx
leaq 0x4f7b(%rip), %rsi      # 0x8227
leaq 0x60(%rsp), %rdi
callq 0x385c
movq %rax, %rdi
callq 0x3ae6
cmpl %ebx, %eax
jne 0x3475
leaq 0x3ef7(%rip), %rsi      # 0x71c4
leaq 0x60(%rsp), %rdi
callq 0x385c
movq %rax, %rdi
xorl %esi, %esi
callq 0x3a4a
leaq 0x3ed1(%rip), %rsi      # 0x71b9
movq %rax, %rdi
callq 0x385c
leaq 0x30(%rsp), %rdi
movq %rax, %rsi
callq 0x3b8a
leaq 0x3eba(%rip), %rsi      # 0x71be
leaq 0x30(%rsp), %rdi
callq 0x3b7d
testb %al, %al
je 0x348e
leaq 0x30(%rsp), %rdi
callq 0x20d0
leaq 0x3e89(%rip), %rsi      # 0x71b0
leaq 0x60(%rsp), %rdi
callq 0x385c
movq %rax, %rdi
callq 0x3ae6
cmpl $0x1, %eax
jne 0x34a7
leaq 0x30(%rsp), %rdi
leaq 0x60(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x3c24
movq 0x8c7c(%rip), %rdi      # 0xbfd8
leaq 0x30(%rsp), %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20e0
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
callq 0x20d0
andl $0x0, 0x28(%rbx)
movq %rsp, %rdi
leaq 0x60(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x3c24
movq %rsp, %rdi
leaq 0x30(%rsp), %rsi
xorl %edx, %edx
callq 0x2465
movq %rsp, %rdi
callq 0x20d0
movq %rsp, %rdi
leaq 0x30(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x3c24
movq 0x8c19(%rip), %rdi      # 0xbfd8
movq %rsp, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20e0
movq %rsp, %rdi
callq 0x20d0
leaq 0x3e73(%rip), %rsi      # 0x7251
leaq 0xb0(%rsp), %rdi
movq %rsp, %rdx
callq 0x20a0
movq %rsp, %rsi
andl $0x0, 0x28(%rsi)
leaq 0xb0(%rsp), %rdi
xorl %edx, %edx
callq 0x2465
leaq 0x90(%rsp), %rdi
movq %rsp, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x3c24
movq 0x8bb9(%rip), %rdi      # 0xbfd8
leaq 0x90(%rsp), %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20e0
leaq 0x90(%rsp), %rdi
callq 0x20d0
movq %rsp, %rdi
callq 0x36bc
leaq 0xb0(%rsp), %rdi
callq 0x20d0
leaq 0x30(%rsp), %rdi
callq 0x36bc
leaq 0x60(%rsp), %rdi
callq 0x36bc
xorl %eax, %eax
addq $0xd0, %rsp
popq %rbx
retq
leaq 0x3d55(%rip), %rdi      # 0x71d1
leaq 0x3d66(%rip), %rsi      # 0x71e9
leaq 0x3d70(%rip), %rcx      # 0x71fa
pushq $0x1d
jmp 0x34be
leaq 0x3d70(%rip), %rdi      # 0x7205
leaq 0x3d4d(%rip), %rsi      # 0x71e9
leaq 0x3d57(%rip), %rcx      # 0x71fa
pushq $0x1e
jmp 0x34be
leaq 0x3d86(%rip), %rdi      # 0x7234
leaq 0x3d34(%rip), %rsi      # 0x71e9
leaq 0x3d3e(%rip), %rcx      # 0x71fa
pushq $0x1f
popq %rdx
callq 0x2100
jmp 0x34c6
movq %rax, %rbx
jmp 0x34ea
jmp 0x34d1
jmp 0x34d1
jmp 0x34fc
movq %rax, %rbx
jmp 0x3507
jmp 0x3524
jmp 0x3524
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x20d0
movq %rsp, %rdi
callq 0x36bc
leaq 0xb0(%rsp), %rdi
jmp 0x3502
movq %rax, %rbx
movq %rsp, %rdi
callq 0x20d0
leaq 0x30(%rsp), %rdi
callq 0x36bc
jmp 0x3527
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x20d0
jmp 0x3527
jmp 0x3524
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x36bc
movq %rbx, %rdi
callq 0x2250
nop