// File: /workspace/github_cpp_makefile_star2_O2/yanlinlin82[P]jsonxx/demo.new.cpp
// Function: test_assignments()
void test_assignments()
{
	json j;

	// null json
	j = json(); std::cout << "[TEST:57] j = " << j << " // expected: null" << std::endl;

	// boolean json
	j = false; std::cout << "[TEST:60] j = " << j << " // expected: false" << std::endl;
	j = true;  std::cout << "[TEST:61] j = " << j << " // expected: true" << std::endl;

	// number json
	j = 0;               std::cout << "[TEST:64] j = " << j << " // expected: 0" << std::endl;
	j = 123;             std::cout << "[TEST:65] j = " << j << " // expected: 123" << std::endl;
	j = -45;             std::cout << "[TEST:66] j = " << j << " // expected: -45" << std::endl;
	j = 1234567890123LL; std::cout << "[TEST:67] j = " << j << " // expected: 1234567890123" << std::endl;
	j = 0.1f;            std::cout << "[TEST:68] j = " << j << " // expected: 0.1" << std::endl;
	j = 3.14159;         std::cout << "[TEST:69] j = " << j << " // expected: 3.14159" << std::endl;

	// string json
	j = "C-style string";         std::cout << "[TEST:72] j = " << j << " // expected: \"C-style string\"" << std::endl;
	j = std::string("C++ style"); std::cout << "[TEST:73] j = " << j << " // expected: \"C++ style\"" << std::endl;

	// array json
	j = {"a", "b"};         std::cout << "[TEST:76] j = " << j << " // expected: [\"a\",\"b\"]" << std::endl;
	j = {123, 456, 78, 90}; std::cout << "[TEST:77] j = " << j << " // expected: [123,456,78,90]" << std::endl;
	j = {"123", "xyz"};     std::cout << "[TEST:78] j = " << j << " // expected: [\"123\",\"xyz\"]" << std::endl;
	j = {1.23, 45.6, .78};  std::cout << "[TEST:79] j = " << j << " // expected: [1.23,45.6,0.78]" << std::endl;

	// object json
	j = json("key", "value"); std::cout << "[TEST:82] j = " << j << " // expected: {\"key\":\"value\"}" << std::endl;
	j = json("pi", 3.14159);  std::cout << "[TEST:83] j = " << j << " // expected: {\"pi\":3.14159}" << std::endl;

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x950, %rsp            # imm = 0x950
leaq -0x80(%rbp), %rax
andl $0x0, -0x18(%rax)
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
movb %cl, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
andq $0x0, 0x20(%rax)
leaq -0x50(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x1d8(%rbp), %rax
movaps %xmm0, -0x18(%rax)
movaps %xmm0, -0x8(%rax)
movaps %xmm0, 0x8(%rax)
movaps %xmm0, 0x18(%rax)
movaps %xmm0, 0x28(%rax)
movq %rax, -0x10(%rax)
movb %cl, (%rax)
movups %xmm0, 0x10(%rax)
andq $0x0, 0x20(%rax)
leaq -0x1a8(%rbp), %rax
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq -0x98(%rbp), %rdi
leaq -0x1f0(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xbb7f(%rip), %rdi      # 0xefd8
leaq 0x7055(%rip), %rsi      # 0xa4b5
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6c24(%rip), %rsi      # 0xa09f
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x960(%rbp), %rdi
xorl %esi, %esi
callq 0x5148
leaq -0x98(%rbp), %rdi
leaq -0x960(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xbb1a(%rip), %rdi      # 0xefd8
leaq 0x6fff(%rip), %rsi      # 0xa4c4
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6be2(%rip), %rsi      # 0xa0c2
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x8f0(%rbp), %rdi
pushq $0x1
popq %rsi
callq 0x5148
leaq -0x98(%rbp), %rdi
leaq -0x8f0(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xbab4(%rip), %rdi      # 0xefd8
leaq 0x6fa8(%rip), %rsi      # 0xa4d3
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6ba0(%rip), %rsi      # 0xa0e6
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x880(%rbp), %rdi
xorl %esi, %esi
callq 0x51aa
leaq -0x98(%rbp), %rdi
leaq -0x880(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xba4f(%rip), %rdi      # 0xefd8
leaq 0x6f52(%rip), %rsi      # 0xa4e2
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6b5e(%rip), %rsi      # 0xa109
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x810(%rbp), %rdi
pushq $0x7b
popq %rsi
callq 0x51aa
leaq -0x98(%rbp), %rdi
leaq -0x810(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xb9e9(%rip), %rdi      # 0xefd8
leaq 0x6efb(%rip), %rsi      # 0xa4f1
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6b18(%rip), %rsi      # 0xa129
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x7a0(%rbp), %rdi
pushq $-0x2d
popq %rsi
callq 0x51aa
leaq -0x98(%rbp), %rdi
leaq -0x7a0(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xb983(%rip), %rdi      # 0xefd8
leaq 0x6ea4(%rip), %rsi      # 0xa500
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6ad4(%rip), %rsi      # 0xa14b
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x730(%rbp), %rdi
movabsq $0x11f71fb04cb, %rsi    # imm = 0x11F71FB04CB
callq 0x51f0
leaq -0x98(%rbp), %rdi
leaq -0x730(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xb916(%rip), %rdi      # 0xefd8
leaq 0x6e46(%rip), %rsi      # 0xa50f
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6a89(%rip), %rsi      # 0xa16d
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x6c0(%rbp), %rdi
movss 0x6901(%rip), %xmm0     # 0xa004
callq 0x5236
leaq -0x98(%rbp), %rdi
leaq -0x6c0(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xb8ab(%rip), %rdi      # 0xefd8
leaq 0x6dea(%rip), %rsi      # 0xa51e
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6a4a(%rip), %rsi      # 0xa199
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x650(%rbp), %rdi
movsd 0x689a(%rip), %xmm0     # 0xa008
callq 0x52b6
leaq -0x98(%rbp), %rdi
leaq -0x650(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xb840(%rip), %rdi      # 0xefd8
leaq 0x6d8e(%rip), %rsi      # 0xa52d
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6a01(%rip), %rsi      # 0xa1bb
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x6a00(%rip), %rsi      # 0xa1d1
leaq -0x5e0(%rbp), %rdi
callq 0x5336
leaq -0x98(%rbp), %rdi
leaq -0x5e0(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xb7d6(%rip), %rdi      # 0xefd8
leaq 0x6d33(%rip), %rsi      # 0xa53c
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x69cc(%rip), %rsi      # 0xa1f0
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x69d4(%rip), %rsi      # 0xa20f
leaq -0x110(%rbp), %rdi
leaq -0x28(%rbp), %rbx
movq %rbx, %rdx
callq 0x507a
leaq -0x570(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x5380
leaq -0x98(%rbp), %rdi
leaq -0x570(%rbp), %r14
movq %r14, %rsi
callq 0x7500
movq %r14, %rdi
callq 0x565a
leaq -0x110(%rbp), %rdi
callq 0x23e8
movq 0xb746(%rip), %rdi      # 0xefd8
leaq 0x6cb2(%rip), %rsi      # 0xa54b
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6976(%rip), %rsi      # 0xa22a
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x69c2(%rip), %rax      # 0xa28d
movq %rax, -0x28(%rbp)
leaq 0x71e1(%rip), %rax      # 0xaab7
movq %rax, -0x20(%rbp)
leaq -0x110(%rbp), %rsi
movq %rbx, (%rsi)
movq $0x2, 0x8(%rsi)
leaq -0x500(%rbp), %rdi
callq 0x53c6
leaq -0x98(%rbp), %rdi
leaq -0x500(%rbp), %r14
movq %r14, %rsi
callq 0x7500
movq %r14, %rdi
callq 0x565a
movq 0xb6bb(%rip), %rdi      # 0xefd8
leaq 0x6c36(%rip), %rsi      # 0xa55a
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6961(%rip), %rsi      # 0xa2a0
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
movaps 0x66ca(%rip), %xmm0     # 0xa020
movups %xmm0, -0x28(%rbp)
leaq -0x110(%rbp), %rsi
movq %rbx, (%rsi)
movq $0x4, 0x8(%rsi)
leaq -0x490(%rbp), %rdi
callq 0x5440
leaq -0x98(%rbp), %rdi
leaq -0x490(%rbp), %r14
movq %r14, %rsi
callq 0x7500
movq %r14, %rdi
callq 0x565a
movq 0xb63b(%rip), %rdi      # 0xefd8
leaq 0x6bc5(%rip), %rsi      # 0xa569
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x690a(%rip), %rsi      # 0xa2c9
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x6761(%rip), %rax      # 0xa137
movq %rax, -0x28(%rbp)
leaq 0x6906(%rip), %rax      # 0xa2e7
movq %rax, -0x20(%rbp)
leaq -0x110(%rbp), %r14
movq %rbx, (%r14)
movq $0x2, 0x8(%r14)
leaq -0x420(%rbp), %rdi
movq %r14, %rsi
callq 0x53c6
leaq -0x98(%rbp), %rdi
leaq -0x420(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xb5ad(%rip), %rdi      # 0xefd8
leaq 0x6b46(%rip), %rsi      # 0xa578
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x68af(%rip), %rsi      # 0xa2fc
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
movups 0x71fc(%rip), %xmm0     # 0xac60
movaps %xmm0, -0x110(%rbp)
movabsq $0x3fe8f5c28f5c28f6, %rax # imm = 0x3FE8F5C28F5C28F6
movq %rax, -0x100(%rbp)
leaq -0x28(%rbp), %rsi
movq %r14, (%rsi)
movq $0x3, 0x8(%rsi)
leaq -0x3b0(%rbp), %rdi
callq 0x54ba
leaq -0x98(%rbp), %rdi
leaq -0x3b0(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
movq 0xb51c(%rip), %rdi      # 0xefd8
leaq 0x6ac4(%rip), %rsi      # 0xa587
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x684b(%rip), %rsi      # 0xa329
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x6853(%rip), %rsi      # 0xa348
leaq -0x170(%rbp), %rdi
leaq -0x28(%rbp), %rdx
callq 0x507a
leaq 0x6840(%rip), %rsi      # 0xa34c
leaq -0x110(%rbp), %rdi
callq 0x5336
leaq -0x340(%rbp), %rdi
leaq -0x170(%rbp), %rsi
leaq -0x110(%rbp), %rdx
callq 0x5534
leaq -0x98(%rbp), %rdi
leaq -0x340(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
leaq -0x110(%rbp), %rdi
callq 0x565a
leaq -0x170(%rbp), %rdi
callq 0x23e8
movq 0xb469(%rip), %rdi      # 0xefd8
leaq 0x6a20(%rip), %rsi      # 0xa596
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x67d2(%rip), %rsi      # 0xa363
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x67d9(%rip), %rsi      # 0xa381
leaq -0x150(%rbp), %rdi
leaq -0x28(%rbp), %rdx
callq 0x507a
leaq -0x110(%rbp), %rdi
movsd 0x6441(%rip), %xmm0     # 0xa008
callq 0x52b6
leaq -0x2d0(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x110(%rbp), %rdx
callq 0x5534
leaq -0x98(%rbp), %rdi
leaq -0x2d0(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
leaq -0x110(%rbp), %rdi
callq 0x565a
leaq -0x150(%rbp), %rdi
callq 0x23e8
movq 0xb3b5(%rip), %rdi      # 0xefd8
leaq 0x697b(%rip), %rsi      # 0xa5a5
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x6750(%rip), %rsi      # 0xa395
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x6756(%rip), %rsi      # 0xa3b2
leaq -0x130(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0x507a
movabsq $0x200000001, %rax      # imm = 0x200000001
leaq -0x17c(%rbp), %rcx
movq %rax, (%rcx)
movl $0x3, 0x8(%rcx)
leaq -0x28(%rbp), %rsi
movq %rcx, (%rsi)
movq $0x3, 0x8(%rsi)
leaq -0x110(%rbp), %rdi
callq 0x5440
leaq -0x260(%rbp), %rdi
leaq -0x130(%rbp), %rsi
leaq -0x110(%rbp), %rdx
callq 0x5534
leaq -0x98(%rbp), %rdi
leaq -0x260(%rbp), %rbx
movq %rbx, %rsi
callq 0x7500
movq %rbx, %rdi
callq 0x565a
leaq -0x110(%rbp), %rdi
callq 0x565a
leaq -0x130(%rbp), %rdi
callq 0x23e8
movq 0xb2df(%rip), %rdi      # 0xefd8
leaq 0x68b4(%rip), %rsi      # 0xa5b4
callq 0x2220
leaq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x50f6
leaq 0x66ae(%rip), %rsi      # 0xa3c9
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq -0x98(%rbp), %rdi
callq 0x565a
addq $0x950, %rsp            # imm = 0x950
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
leaq -0x110(%rbp), %rdi
callq 0x565a
jmp 0x3d57
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
jmp 0x3db2
jmp 0x3dbb
movq %rax, %rbx
leaq -0x110(%rbp), %rdi
callq 0x565a
jmp 0x3d76
movq %rax, %rbx
leaq -0x150(%rbp), %rdi
jmp 0x3db2
jmp 0x3dbb
movq %rax, %rbx
leaq -0x110(%rbp), %rdi
callq 0x565a
jmp 0x3d95
movq %rax, %rbx
leaq -0x170(%rbp), %rdi
jmp 0x3db2
jmp 0x3dbb
jmp 0x3dbb
jmp 0x3dbb
jmp 0x3dbb
jmp 0x3dbb
movq %rax, %rbx
leaq -0x110(%rbp), %rdi
callq 0x23e8
jmp 0x3dbe
jmp 0x3dbb
movq %rax, %rbx
leaq -0x98(%rbp), %rdi
callq 0x565a
movq %rbx, %rdi
callq 0x2370