// File: /workspace/github_cpp_makefile_star2_O3/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 %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movl %esi, %ebx
movq %rdi, %r14
movq 0x2564f(%rip), %r15     # 0x38fd8
leaq 0x1974a(%rip), %rsi     # 0x2d0da
movl $0x39, %edx
movq %r15, %rdi
callq 0x132f0
leaq 0x19770(%rip), %rax     # 0x2d114
leaq 0x1976e(%rip), %rsi     # 0x2d119
testl %ebx, %ebx
cmovneq %rax, %rsi
movl %ebx, %edx
xorq $0x5, %rdx
movq %r15, %rdi
callq 0x132f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %r15, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
leaq 0x88(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movl %eax, 0x10(%rcx)
leaq 0xb0(%rsp), %r12
movq %r12, -0x10(%r12)
movq %rax, -0x8(%r12)
movb %al, (%r12)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%r12)
movl %eax, 0x20(%r12)
leaq 0xe8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x68(%rsp), %rcx
movq %rax, -0x20(%rcx)
movl %eax, -0x18(%rcx)
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x196cf(%rip), %rsi     # 0x2d11f
movl $0x1d, %edx
movq %r15, %rdi
callq 0x132f0
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq 0x2555d(%rip), %rdi     # 0x38fd8
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq (%r14), %r15
leaq 0x38(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x196a2(%rip), %rsi     # 0x2d13d
leaq 0x1969d(%rip), %rdx     # 0x2d13f
leaq 0x28(%rsp), %rdi
callq 0x19f80
leaq 0x18(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x19684(%rip), %rsi     # 0x2d140
leaq 0x1967f(%rip), %rdx     # 0x2d142
leaq 0x8(%rsp), %rdi
callq 0x19f80
movzbl %bl, %r8d
leaq 0x128(%rsp), %rdi
leaq 0x28(%rsp), %rdx
leaq 0x78(%rsp), %rcx
leaq 0x8(%rsp), %r9
movq %r15, %rsi
callq 0x16bee
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13b11
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x132a0
leaq 0x160(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13b32
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x132a0
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13b53
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x13b6a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x13b81
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x25450(%rip), %rdi     # 0x38fd8
leaq 0x195b4(%rip), %rsi     # 0x2d143
movl $0xb, %edx
callq 0x132f0
movq 0xd8(%rsp), %rsi
movq 0xe0(%rsp), %rdx
movq 0x25428(%rip), %rdi     # 0x38fd8
callq 0x132f0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %r15, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x253f2(%rip), %rdi     # 0x38fd8
leaq 0x19562(%rip), %rsi     # 0x2d14f
movl $0xb, %edx
callq 0x132f0
movl 0xd0(%rsp), %esi
movq 0x253d3(%rip), %rdi     # 0x38fd8
callq 0x13420
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %r15, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x2539d(%rip), %rdi     # 0x38fd8
leaq 0x19519(%rip), %rsi     # 0x2d15b
movl $0xb, %edx
callq 0x132f0
movsd 0xc8(%rsp), %xmm0
movq 0x2537c(%rip), %rdi     # 0x38fd8
callq 0x133c0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %r15, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x25346(%rip), %rdi     # 0x38fd8
leaq 0x194ce(%rip), %rsi     # 0x2d167
movl $0xb, %edx
callq 0x132f0
movq 0xc0(%rsp), %rsi
movq 0x25326(%rip), %rdi     # 0x38fd8
callq 0x13180
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %r15, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x252f0(%rip), %rdi     # 0x38fd8
leaq 0x19484(%rip), %rsi     # 0x2d173
movl $0xb, %edx
callq 0x132f0
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
movq 0x252c8(%rip), %rdi     # 0x38fd8
callq 0x132f0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %r15, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x25292(%rip), %rdi     # 0x38fd8
leaq 0x19432(%rip), %rsi     # 0x2d17f
movl $0xb, %edx
callq 0x132f0
movl 0x98(%rsp), %esi
movq 0x25273(%rip), %rdi     # 0x38fd8
callq 0x13420
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %r15, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x2523d(%rip), %rdi     # 0x38fd8
leaq 0x193e9(%rip), %rsi     # 0x2d18b
movl $0xb, %edx
callq 0x132f0
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq 0x25218(%rip), %rdi     # 0x38fd8
callq 0x132f0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %r15, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x251e2(%rip), %r15     # 0x38fd8
leaq 0x193be(%rip), %rsi     # 0x2d1bb
movl $0x1d, %edx
movq %r15, %rdi
callq 0x132f0
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq 0x251b0(%rip), %rdi     # 0x38fd8
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq (%r14), %r14
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x192f6(%rip), %rsi     # 0x2d13d
leaq 0x192f1(%rip), %rdx     # 0x2d13f
callq 0x19f80
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x192dd(%rip), %rsi     # 0x2d140
leaq 0x192d8(%rip), %rdx     # 0x2d142
leaq 0x8(%rsp), %rdi
callq 0x19f80
movzbl %bl, %r8d
leaq 0xf8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
leaq 0x48(%rsp), %rcx
leaq 0x8(%rsp), %r9
movq %r14, %rsi
callq 0x16d5e
leaq 0x118(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13eb8
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x13ecf
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x13ee6
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x250eb(%rip), %rdi     # 0x38fd8
leaq 0x1924f(%rip), %rsi     # 0x2d143
movl $0xb, %edx
callq 0x132f0
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
movq 0x250c9(%rip), %rdi     # 0x38fd8
callq 0x132f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %rbx, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x25093(%rip), %rdi     # 0x38fd8
leaq 0x19203(%rip), %rsi     # 0x2d14f
movl $0xb, %edx
callq 0x132f0
movl 0x50(%rsp), %esi
movq 0x25077(%rip), %rdi     # 0x38fd8
callq 0x13180
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %rbx, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x25041(%rip), %rdi     # 0x38fd8
leaq 0x191bd(%rip), %rsi     # 0x2d15b
movl $0xb, %edx
callq 0x132f0
cvtss2sd 0x4c(%rsp), %xmm0
movq 0x25023(%rip), %rdi     # 0x38fd8
callq 0x133c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %rbx, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x24fed(%rip), %rdi     # 0x38fd8
leaq 0x19175(%rip), %rsi     # 0x2d167
movl $0xb, %edx
callq 0x132f0
movl 0x48(%rsp), %esi
movq 0x24fd1(%rip), %rdi     # 0x38fd8
callq 0x13420
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x13260
movsbl %al, %esi
movq %rbx, %rdi
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x14052
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x14077
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0xa0(%rsp), %rdi
cmpq %r12, %rdi
je 0x14094
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x140b6
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x132a0
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rdx, %rbx
movq %rax, (%rsp)
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x140ef
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x132a0
jmp 0x140ef
movq %rdx, %rbx
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x14197
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x132a0
jmp 0x14197
jmp 0x14190
movq %rdx, %r15
movq %rax, (%rsp)
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x14138
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x132a0
jmp 0x14138
movq %rdx, %r15
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x141e7
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x132a0
jmp 0x141e7
jmp 0x141e0
movq %rax, (%rsp)
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x1417d
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x132a0
leaq 0x78(%rsp), %rdi
callq 0x16d04
movq (%rsp), %rdi
callq 0x13430
movq %rdx, %rbx
movq %rax, (%rsp)
cmpl $0x1, %ebx
jne 0x14161
movq (%rsp), %rdi
callq 0x130d0
movq 0x24e2c(%rip), %rdi     # 0x38fd8
leaq 0x18fe4(%rip), %rsi     # 0x2d197
movl $0x23, %edx
callq 0x132f0
movq 0x24e14(%rip), %rdi     # 0x38fd8
callq 0x13100
callq 0x133f0
jmp 0x14036
jmp 0x1415d
movq %rax, (%rsp)
callq 0x133f0
jmp 0x14161
movq %rdx, %r15
movq %rax, (%rsp)
cmpl $0x1, %r15d
jne 0x14161
movq (%rsp), %rdi
callq 0x130d0
movq 0x24dd7(%rip), %rdi     # 0x38fd8
leaq 0x18f8f(%rip), %rsi     # 0x2d197
movl $0x23, %edx
callq 0x132f0
movq 0x24dbf(%rip), %rdi     # 0x38fd8
callq 0x13100
callq 0x133f0
jmp 0x13def
jmp 0x1415d
movq %rax, (%rsp)
callq 0x133f0
jmp 0x14161
movq %rax, %rdi
callq 0x16d52