// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: test_tuple(std::shared_ptr<swxJson::Json>, bool)
void test_tuple(JsonPtr json, bool compatibleMode)
{
	cout<<"[Test tuple] Pattern unmatched testing. Compatible mode: "<<(compatibleMode ? "True" : "False")<<endl;

	std::tuple<std::string, int, double, uint64_t, std::string, int, std::string> more;
	std::tuple<std::string, uint32_t, float, int> less;

	cout<<"---- more elements ----------"<<endl;
	try {
		json->wantTuple("aa", more, compatibleMode);

		cout<<"Element 1: "<<std::get<0>(more)<<endl;
		cout<<"Element 2: "<<std::get<1>(more)<<endl;
		cout<<"Element 3: "<<std::get<2>(more)<<endl;
		cout<<"Element 4: "<<std::get<3>(more)<<endl;
		cout<<"Element 5: "<<std::get<4>(more)<<endl;
		cout<<"Element 6: "<<std::get<5>(more)<<endl;
		cout<<"Element 7: "<<std::get<6>(more)<<endl;

	}
	catch (const JsonNodeTypeMissMatchError &e)
	{
		cout<<"[Expectant error]: Type miss match."<<endl;
	}

	cout<<"---- less elements ----------"<<endl;
	try {
		json->wantTuple("aa", less, compatibleMode);

		cout<<"Element 1: "<<std::get<0>(less)<<endl;
		cout<<"Element 2: "<<std::get<1>(less)<<endl;
		cout<<"Element 3: "<<std::get<2>(less)<<endl;
		cout<<"Element 4: "<<std::get<3>(less)<<endl;

	}
	catch (const JsonNodeTypeMissMatchError &e)
	{
		cout<<"[Expectant error]: Type miss match."<<endl;
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1b0, %rsp            # imm = 0x1B0
movl %esi, %ebp
movq %rdi, %r14
movq 0x21951(%rip), %r15     # 0x3cfd8
leaq 0x13a4c(%rip), %rsi     # 0x2f0da
movq %r15, %rdi
callq 0x1b280
leaq 0x13a77(%rip), %rcx     # 0x2f114
leaq 0x13a75(%rip), %rsi     # 0x2f119
testl %ebp, %ebp
cmovneq %rcx, %rsi
movq %rax, %rdi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
leaq 0x80(%rsp), %rdi
callq 0x1d386
leaq 0x60(%rsp), %rbx
andq $0x0, -0x10(%rbx)
andl $0x0, -0x8(%rbx)
leaq 0x70(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x13a32(%rip), %rsi     # 0x2f11f
movq %r15, %rdi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r14), %r15
leaq 0x13a36(%rip), %rsi     # 0x2f13d
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x1d34a
leaq 0x13a23(%rip), %rsi     # 0x2f140
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1d34a
movzbl %bpl, %r8d
leaq 0x130(%rsp), %rdi
leaq 0x30(%rsp), %rdx
leaq 0x80(%rsp), %rcx
leaq 0x10(%rsp), %r9
movq %r15, %rsi
callq 0x1d396
leaq 0x130(%rsp), %rdi
callq 0x1d47a
leaq 0x10(%rsp), %rdi
callq 0x1b458
leaq 0x30(%rsp), %rdi
callq 0x1b458
movq 0x2185e(%rip), %rdi     # 0x3cfd8
leaq 0x139c2(%rip), %rsi     # 0x2f143
callq 0x1b280
leaq 0xe0(%rsp), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
movq 0x21833(%rip), %rdi     # 0x3cfd8
leaq 0x139a3(%rip), %rsi     # 0x2f14f
callq 0x1b280
movl 0xd8(%rsp), %esi
movq %rax, %rdi
callq 0x1b400
movq %rax, %rdi
callq 0x1b100
movq 0x21809(%rip), %rdi     # 0x3cfd8
leaq 0x13985(%rip), %rsi     # 0x2f15b
callq 0x1b280
movsd 0xd0(%rsp), %xmm0
movq %rax, %rdi
callq 0x1b3b0
movq %rax, %rdi
callq 0x1b100
movq 0x217dd(%rip), %rdi     # 0x3cfd8
leaq 0x13965(%rip), %rsi     # 0x2f167
callq 0x1b280
movq 0xc8(%rsp), %rsi
movq %rax, %rdi
callq 0x1b170
movq %rax, %rdi
callq 0x1b100
movq 0x217b2(%rip), %rdi     # 0x3cfd8
leaq 0x13946(%rip), %rsi     # 0x2f173
callq 0x1b280
leaq 0xa8(%rsp), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
movq 0x21787(%rip), %rdi     # 0x3cfd8
leaq 0x13927(%rip), %rsi     # 0x2f17f
callq 0x1b280
movl 0xa0(%rsp), %esi
movq %rax, %rdi
callq 0x1b400
movq %rax, %rdi
callq 0x1b100
movq 0x2175d(%rip), %rdi     # 0x3cfd8
leaq 0x13909(%rip), %rsi     # 0x2f18b
callq 0x1b280
leaq 0x80(%rsp), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
movq 0x21732(%rip), %rdi     # 0x3cfd8
leaq 0x1390e(%rip), %rsi     # 0x2f1bb
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r14), %r14
leaq 0x13879(%rip), %rsi     # 0x2f13d
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x1d34a
leaq 0x13866(%rip), %rsi     # 0x2f140
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1d34a
movzbl %bpl, %r8d
leaq 0x100(%rsp), %rdi
leaq 0x30(%rsp), %rdx
leaq 0x50(%rsp), %rcx
leaq 0x10(%rsp), %r9
movq %r14, %rsi
callq 0x1d49c
leaq 0x110(%rsp), %rdi
callq 0x1b458
leaq 0x10(%rsp), %rdi
callq 0x1b458
leaq 0x30(%rsp), %rdi
callq 0x1b458
movq 0x216a4(%rip), %rdi     # 0x3cfd8
leaq 0x13808(%rip), %rsi     # 0x2f143
callq 0x1b280
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
movq 0x2167e(%rip), %rdi     # 0x3cfd8
leaq 0x137ee(%rip), %rsi     # 0x2f14f
callq 0x1b280
movl 0x58(%rsp), %esi
movq %rax, %rdi
callq 0x1b170
movq %rax, %rdi
callq 0x1b100
movq 0x21657(%rip), %rdi     # 0x3cfd8
leaq 0x137d3(%rip), %rsi     # 0x2f15b
callq 0x1b280
movss 0x54(%rsp), %xmm0
movq %rax, %rdi
callq 0x1b1d0
movq %rax, %rdi
callq 0x1b100
movq 0x2162e(%rip), %rdi     # 0x3cfd8
leaq 0x137b6(%rip), %rsi     # 0x2f167
callq 0x1b280
movl 0x50(%rsp), %esi
movq %rax, %rdi
callq 0x1b400
movq %rax, %rdi
callq 0x1b100
movq %rbx, %rdi
callq 0x1b458
leaq 0x80(%rsp), %rdi
callq 0x1d47a
addq $0x1b0, %rsp            # imm = 0x1B0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rdx, %r14
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x1b458
jmp 0x1ba07
movq %rdx, %r14
movq %rax, %r15
leaq 0x30(%rsp), %rdi
callq 0x1b458
jmp 0x1ba61
jmp 0x1ba5b
movq %rdx, %r12
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x1b458
jmp 0x1ba2d
movq %rdx, %r12
movq %rax, %r15
leaq 0x30(%rsp), %rdi
callq 0x1b458
jmp 0x1baa6
jmp 0x1baa0
movq %rax, %r15
movq %rbx, %rdi
callq 0x1b458
leaq 0x80(%rsp), %rdi
callq 0x1d47a
movq %r15, %rdi
callq 0x1b410
movq %rdx, %r14
movq %rax, %r15
cmpl $0x1, %r14d
jne 0x1ba3e
movq %r15, %rdi
callq 0x1b0c0
movq 0x21562(%rip), %rdi     # 0x3cfd8
leaq 0x1371a(%rip), %rsi     # 0x2f197
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
callq 0x1b3e0
jmp 0x1b9ca
jmp 0x1ba3b
movq %rax, %r15
callq 0x1b3e0
jmp 0x1ba3e
movq %rdx, %r12
movq %rax, %r15
cmpl $0x1, %r12d
jne 0x1ba3e
movq %r15, %rdi
callq 0x1b0c0
movq 0x2151d(%rip), %rdi     # 0x3cfd8
leaq 0x136d5(%rip), %rsi     # 0x2f197
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
callq 0x1b3e0
jmp 0x1b89f
jmp 0x1ba3b
movq %rax, %r15
callq 0x1b3e0
jmp 0x1ba3e
movq %rax, %rdi
callq 0x1d490