// File: /workspace/github_cpp_makefile_star2_O2/yanlinlin82[P]jsonxx/demo.new.cpp
// Function: test_constructors()
void test_constructors()
{
	// null json
	json j0; std::cout << "[TEST:8] j0 = " << j0 << " // expected: null" << std::endl;

	// boolean json
	json j1(false); std::cout << "[TEST:11] j1 = " << j1 << " // expected: false" << std::endl;
	json j2(true);  std::cout << "[TEST:12] j2 = " << j2 << " // expected: true" << std::endl;

	// number json
	json j3(0);               std::cout << "[TEST:15] j3 = " << j3 << " // expected: 0" << std::endl;
	json j4(123);             std::cout << "[TEST:16] j4 = " << j4 << " // expected: 123" << std::endl;
	json j5(-45);             std::cout << "[TEST:17] j5 = " << j5 << " // expected: -45" << std::endl;
	json j6(1234567890123LL); std::cout << "[TEST:18] j6 = " << j6 << " // expected: 1234567890123" << std::endl;
	json j7(0.1f);            std::cout << "[TEST:19] j7 = " << j7 << " // expected: 0.1" << std::endl;
	json j8(3.14159);         std::cout << "[TEST:20] j8 = " << j8 << " // expected: 3.14159" << std::endl;

	// string json
	json j9("C-style string");          std::cout << "[TEST:23] j9 = " << j9 << " // expected: \"C-style string\"" << std::endl;
	json j10(std::string("C++ style")); std::cout << "[TEST:24] j10 = " << j10 << " // expected: \"C++ style\"" << std::endl;
	json j11("string with \'quote\'");  std::cout << "[TEST:25] j11 = " << j11 << " // expected: \"string with \'quote\'\"" << std::endl;

	// array json
	json j21({"a", "b"});         std::cout << "[TEST:28] j21 = " << j21 << " // expected: [\"a\",\"b\"]" << std::endl;
	json j22({123, 456, 78, 90}); std::cout << "[TEST:29] j22 = " << j22 << " // expected: [123,456,78,90]" << std::endl;
	json j23({"123", "xyz"});     std::cout << "[TEST:30] j23 = " << j23 << " // expected: [\"123\",\"xyz\"]" << std::endl;
	json j24({1.23, 45.6, .78});  std::cout << "[TEST:31] j24 = " << j24 << " // expected: [1.23,45.6,0.78]" << std::endl;

	// object json
	json j31("key", "value"); std::cout << "[TEST:34] j31 = " << j31 << " // expected: {\"key\":\"value\"}" << std::endl;
	json j32("pi", 3.14159);  std::cout << "[TEST:35] j32 = " << j32 << " // expected: {\"pi\":3.14159}" << std::endl;

	// more complex json
	json j41("array", {1, 2, 3}); std::cout << "[TEST:38] j41 = " << j41 << " // expected: {\"array\":[1,2,3]}" << std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x948, %rsp            # imm = 0x948
leaq -0x4d8(%rbp), %rax
andl $0x0, -0x18(%rax)
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
andq $0x0, 0x20(%rax)
leaq -0x4a8(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movq 0xc8fa(%rip), %rdi      # 0xefd8
leaq 0x79ab(%rip), %rsi      # 0xa090
callq 0x2220
leaq -0x4f0(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x799f(%rip), %rsi      # 0xa09f
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x950(%rbp), %rdi
xorl %esi, %esi
callq 0x5148
movq 0xc8b3(%rip), %rdi      # 0xefd8
leaq 0x7986(%rip), %rsi      # 0xa0b2
callq 0x2220
leaq -0x950(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x797b(%rip), %rsi      # 0xa0c2
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x8e0(%rbp), %rdi
pushq $0x1
popq %rsi
callq 0x5148
movq 0xc86b(%rip), %rdi      # 0xefd8
leaq 0x7962(%rip), %rsi      # 0xa0d6
callq 0x2220
leaq -0x8e0(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x7957(%rip), %rsi      # 0xa0e6
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x870(%rbp), %rdi
xorl %esi, %esi
callq 0x51aa
movq 0xc824(%rip), %rdi      # 0xefd8
leaq 0x793e(%rip), %rsi      # 0xa0f9
callq 0x2220
leaq -0x870(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x7933(%rip), %rsi      # 0xa109
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x800(%rbp), %rdi
pushq $0x7b
popq %rsi
callq 0x51aa
movq 0xc7dc(%rip), %rdi      # 0xefd8
leaq 0x7916(%rip), %rsi      # 0xa119
callq 0x2220
leaq -0x800(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x790b(%rip), %rsi      # 0xa129
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x790(%rbp), %rdi
pushq $-0x2d
popq %rsi
callq 0x51aa
movq 0xc794(%rip), %rdi      # 0xefd8
leaq 0x78f0(%rip), %rsi      # 0xa13b
callq 0x2220
leaq -0x790(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x78e5(%rip), %rsi      # 0xa14b
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x720(%rbp), %rdi
movabsq $0x11f71fb04cb, %rsi    # imm = 0x11F71FB04CB
callq 0x51f0
movq 0xc745(%rip), %rdi      # 0xefd8
leaq 0x78c3(%rip), %rsi      # 0xa15d
callq 0x2220
leaq -0x720(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x78b8(%rip), %rsi      # 0xa16d
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x6b0(%rbp), %rdi
movss 0x7730(%rip), %xmm0     # 0xa004
callq 0x5236
movq 0xc6f8(%rip), %rdi      # 0xefd8
leaq 0x78a2(%rip), %rsi      # 0xa189
callq 0x2220
leaq -0x6b0(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x7897(%rip), %rsi      # 0xa199
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x640(%rbp), %rdi
movsd 0x76e7(%rip), %xmm0     # 0xa008
callq 0x52b6
movq 0xc6ab(%rip), %rdi      # 0xefd8
leaq 0x7877(%rip), %rsi      # 0xa1ab
callq 0x2220
leaq -0x640(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x786c(%rip), %rsi      # 0xa1bb
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x786b(%rip), %rsi      # 0xa1d1
leaq -0x5d0(%rbp), %rdi
callq 0x5336
movq 0xc65f(%rip), %rdi      # 0xefd8
leaq 0x7860(%rip), %rsi      # 0xa1e0
callq 0x2220
leaq -0x5d0(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x7855(%rip), %rsi      # 0xa1f0
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x785d(%rip), %rsi      # 0xa20f
leaq -0x1d0(%rbp), %rdi
leaq -0x480(%rbp), %rdx
callq 0x507a
leaq -0x560(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x5380
leaq -0x1d0(%rbp), %rdi
callq 0x23e8
movq 0xc5ed(%rip), %rdi      # 0xefd8
leaq 0x7827(%rip), %rsi      # 0xa219
callq 0x2220
leaq -0x560(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x781d(%rip), %rsi      # 0xa22a
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x7820(%rip), %rsi      # 0xa244
leaq -0x1d0(%rbp), %rdi
callq 0x5336
movq 0xc5a1(%rip), %rdi      # 0xefd8
leaq 0x781a(%rip), %rsi      # 0xa258
callq 0x2220
leaq -0x1d0(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x7810(%rip), %rsi      # 0xa269
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x781d(%rip), %rax      # 0xa28d
leaq -0x330(%rbp), %rcx
movq %rax, (%rcx)
leaq 0x8036(%rip), %rax      # 0xaab7
movq %rax, 0x8(%rcx)
leaq -0x410(%rbp), %rsi
movq %rcx, (%rsi)
movq $0x2, 0x8(%rsi)
leaq -0x480(%rbp), %rdi
callq 0x53c6
movq 0xc52e(%rip), %rdi      # 0xefd8
leaq 0x77de(%rip), %rsi      # 0xa28f
callq 0x2220
leaq -0x480(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x77d4(%rip), %rsi      # 0xa2a0
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
movaps 0x753d(%rip), %xmm0     # 0xa020
leaq -0x2c0(%rbp), %rax
movups %xmm0, (%rax)
leaq -0x330(%rbp), %rsi
movq %rax, (%rsi)
movq $0x4, 0x8(%rsi)
leaq -0x410(%rbp), %rdi
callq 0x5440
movq 0xc4c6(%rip), %rdi      # 0xefd8
leaq 0x779f(%rip), %rsi      # 0xa2b8
callq 0x2220
leaq -0x410(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x7795(%rip), %rsi      # 0xa2c9
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x75ec(%rip), %rax      # 0xa137
leaq -0x240(%rbp), %rbx
movq %rax, (%rbx)
leaq 0x778b(%rip), %rax      # 0xa2e7
movq %rax, 0x8(%rbx)
leaq -0x2c0(%rbp), %rsi
movq %rbx, (%rsi)
movq $0x2, 0x8(%rsi)
leaq -0x330(%rbp), %rdi
callq 0x53c6
movq 0xc453(%rip), %rdi      # 0xefd8
leaq 0x775f(%rip), %rsi      # 0xa2eb
callq 0x2220
leaq -0x330(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x7755(%rip), %rsi      # 0xa2fc
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
movups 0x80a2(%rip), %xmm0     # 0xac60
movaps %xmm0, -0x240(%rbp)
movabsq $0x3fe8f5c28f5c28f6, %rax # imm = 0x3FE8F5C28F5C28F6
movq %rax, -0x230(%rbp)
leaq -0x160(%rbp), %rsi
movq %rbx, (%rsi)
movq $0x3, 0x8(%rsi)
leaq -0x2c0(%rbp), %rdi
callq 0x54ba
movq 0xc3dd(%rip), %rdi      # 0xefd8
leaq 0x7716(%rip), %rsi      # 0xa318
callq 0x2220
leaq -0x2c0(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x770c(%rip), %rsi      # 0xa329
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x7714(%rip), %rsi      # 0xa348
leaq -0x70(%rbp), %rdi
leaq -0xf0(%rbp), %rdx
callq 0x507a
leaq 0x7701(%rip), %rsi      # 0xa34c
leaq -0x160(%rbp), %rdi
callq 0x5336
leaq -0x240(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x160(%rbp), %rdx
callq 0x5534
leaq -0x160(%rbp), %rdi
callq 0x565a
leaq -0x70(%rbp), %rdi
callq 0x23e8
movq 0xc34e(%rip), %rdi      # 0xefd8
leaq 0x76c1(%rip), %rsi      # 0xa352
callq 0x2220
leaq -0x240(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x76b7(%rip), %rsi      # 0xa363
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x76be(%rip), %rsi      # 0xa381
leaq -0x50(%rbp), %rdi
leaq -0x3a0(%rbp), %rdx
callq 0x507a
leaq -0xf0(%rbp), %rdi
movsd 0x7326(%rip), %xmm0     # 0xa008
callq 0x52b6
leaq -0x160(%rbp), %rdi
leaq -0x50(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
callq 0x5534
leaq -0xf0(%rbp), %rdi
callq 0x565a
leaq -0x50(%rbp), %rdi
callq 0x23e8
movq 0xc2be(%rip), %rdi      # 0xefd8
leaq 0x7663(%rip), %rsi      # 0xa384
callq 0x2220
leaq -0x160(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x7659(%rip), %rsi      # 0xa395
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x765f(%rip), %rsi      # 0xa3b2
leaq -0x30(%rbp), %rdi
leaq -0x9(%rbp), %rdx
callq 0x507a
movabsq $0x200000001, %rax      # imm = 0x200000001
leaq -0x7c(%rbp), %rcx
movq %rax, (%rcx)
movl $0x3, 0x8(%rcx)
leaq -0x250(%rbp), %rsi
movq %rcx, (%rsi)
movq $0x3, 0x8(%rsi)
leaq -0x3a0(%rbp), %rdi
callq 0x5440
leaq -0xf0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x3a0(%rbp), %rdx
callq 0x5534
leaq -0x3a0(%rbp), %rdi
callq 0x565a
leaq -0x30(%rbp), %rdi
callq 0x23e8
movq 0xc20f(%rip), %rdi      # 0xefd8
leaq 0x75e8(%rip), %rsi      # 0xa3b8
callq 0x2220
leaq -0xf0(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x75de(%rip), %rsi      # 0xa3c9
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0xf0(%rbp), %rdi
callq 0x565a
leaq -0x160(%rbp), %rdi
callq 0x565a
leaq -0x240(%rbp), %rdi
callq 0x565a
leaq -0x2c0(%rbp), %rdi
callq 0x565a
leaq -0x330(%rbp), %rdi
callq 0x565a
leaq -0x410(%rbp), %rdi
callq 0x565a
leaq -0x480(%rbp), %rdi
callq 0x565a
leaq -0x1d0(%rbp), %rdi
callq 0x565a
leaq -0x560(%rbp), %rdi
callq 0x565a
leaq -0x5d0(%rbp), %rdi
callq 0x565a
leaq -0x640(%rbp), %rdi
callq 0x565a
leaq -0x6b0(%rbp), %rdi
callq 0x565a
leaq -0x720(%rbp), %rdi
callq 0x565a
leaq -0x790(%rbp), %rdi
callq 0x565a
leaq -0x800(%rbp), %rdi
callq 0x565a
leaq -0x870(%rbp), %rdi
callq 0x565a
leaq -0x8e0(%rbp), %rdi
callq 0x565a
leaq -0x950(%rbp), %rdi
callq 0x565a
leaq -0x4f0(%rbp), %rdi
callq 0x565a
addq $0x948, %rsp            # imm = 0x948
popq %rbx
popq %rbp
retq
movq %rax, %rbx
leaq -0x3a0(%rbp), %rdi
callq 0x565a
jmp 0x2efd
movq %rax, %rbx
leaq -0x30(%rbp), %rdi
callq 0x23e8
jmp 0x2fd1
jmp 0x2fce
movq %rax, %rbx
leaq -0xf0(%rbp), %rdi
callq 0x565a
jmp 0x2f24
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x23e8
jmp 0x2fe2
jmp 0x2fdf
movq %rax, %rbx
leaq -0x160(%rbp), %rdi
callq 0x565a
jmp 0x2f4b
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x23e8
jmp 0x2ff3
jmp 0x2ff0
jmp 0x30bb
jmp 0x30c3
jmp 0x30cb
jmp 0x30d3
jmp 0x30db
movq %rax, %rbx
leaq -0x1d0(%rbp), %rdi
callq 0x23e8
jmp 0x303b
jmp 0x30e3
jmp 0x30eb
jmp 0x30f3
jmp 0x30fb
jmp 0x3103
jmp 0x310b
jmp 0x3113
jmp 0x311b
jmp 0x3123
jmp 0x312b
movq %rax, %rbx
leaq -0xf0(%rbp), %rdi
callq 0x565a
jmp 0x2fd1
movq %rax, %rbx
leaq -0x160(%rbp), %rdi
callq 0x565a
jmp 0x2fe2
movq %rax, %rbx
leaq -0x240(%rbp), %rdi
callq 0x565a
jmp 0x2ff3
movq %rax, %rbx
leaq -0x2c0(%rbp), %rdi
callq 0x565a
leaq -0x330(%rbp), %rdi
callq 0x565a
leaq -0x410(%rbp), %rdi
callq 0x565a
leaq -0x480(%rbp), %rdi
callq 0x565a
leaq -0x1d0(%rbp), %rdi
callq 0x565a
leaq -0x560(%rbp), %rdi
callq 0x565a
leaq -0x5d0(%rbp), %rdi
callq 0x565a
leaq -0x640(%rbp), %rdi
callq 0x565a
leaq -0x6b0(%rbp), %rdi
callq 0x565a
leaq -0x720(%rbp), %rdi
callq 0x565a
leaq -0x790(%rbp), %rdi
callq 0x565a
leaq -0x800(%rbp), %rdi
callq 0x565a
leaq -0x870(%rbp), %rdi
callq 0x565a
leaq -0x8e0(%rbp), %rdi
callq 0x565a
leaq -0x950(%rbp), %rdi
callq 0x565a
leaq -0x4f0(%rbp), %rdi
callq 0x565a
movq %rbx, %rdi
callq 0x2370
movq %rax, %rbx
jmp 0x2fff
movq %rax, %rbx
jmp 0x300b
movq %rax, %rbx
jmp 0x3017
movq %rax, %rbx
jmp 0x3023
movq %rax, %rbx
jmp 0x302f
movq %rax, %rbx
jmp 0x303b
movq %rax, %rbx
jmp 0x3047
movq %rax, %rbx
jmp 0x3053
movq %rax, %rbx
jmp 0x305f
movq %rax, %rbx
jmp 0x306b
movq %rax, %rbx
jmp 0x3077
movq %rax, %rbx
jmp 0x3083
movq %rax, %rbx
jmp 0x308f
movq %rax, %rbx
jmp 0x309b
movq %rax, %rbx
jmp 0x30a7