// File: /workspace/github_cpp_makefile_star2_O1/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 0x2562f(%rip), %r15     # 0x38fd8
leaq 0x1972a(%rip), %rsi     # 0x2d0da
movl $0x39, %edx
movq %r15, %rdi
callq 0x132f0
leaq 0x19750(%rip), %rax     # 0x2d114
leaq 0x1974e(%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 0x196af(%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 0x2553d(%rip), %rdi     # 0x38fd8
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq (%r14), %r15
leaq 0x38(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x19682(%rip), %rsi     # 0x2d13d
leaq 0x1967d(%rip), %rdx     # 0x2d13f
leaq 0x28(%rsp), %rdi
callq 0x19fa4
leaq 0x18(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x19664(%rip), %rsi     # 0x2d140
leaq 0x1965f(%rip), %rdx     # 0x2d142
leaq 0x8(%rsp), %rdi
callq 0x19fa4
movzbl %bl, %r8d
leaq 0x128(%rsp), %rdi
leaq 0x28(%rsp), %rdx
leaq 0x78(%rsp), %rcx
leaq 0x8(%rsp), %r9
movq %r15, %rsi
callq 0x16c0e
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13b31
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x132a0
leaq 0x160(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13b52
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x132a0
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13b73
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x13b8a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x13ba1
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x25430(%rip), %rdi     # 0x38fd8
leaq 0x19594(%rip), %rsi     # 0x2d143
movl $0xb, %edx
callq 0x132f0
movq 0xd8(%rsp), %rsi
movq 0xe0(%rsp), %rdx
movq 0x25408(%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 0x253d2(%rip), %rdi     # 0x38fd8
leaq 0x19542(%rip), %rsi     # 0x2d14f
movl $0xb, %edx
callq 0x132f0
movl 0xd0(%rsp), %esi
movq 0x253b3(%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 0x2537d(%rip), %rdi     # 0x38fd8
leaq 0x194f9(%rip), %rsi     # 0x2d15b
movl $0xb, %edx
callq 0x132f0
movsd 0xc8(%rsp), %xmm0
movq 0x2535c(%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 0x25326(%rip), %rdi     # 0x38fd8
leaq 0x194ae(%rip), %rsi     # 0x2d167
movl $0xb, %edx
callq 0x132f0
movq 0xc0(%rsp), %rsi
movq 0x25306(%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 0x252d0(%rip), %rdi     # 0x38fd8
leaq 0x19464(%rip), %rsi     # 0x2d173
movl $0xb, %edx
callq 0x132f0
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
movq 0x252a8(%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 0x25272(%rip), %rdi     # 0x38fd8
leaq 0x19412(%rip), %rsi     # 0x2d17f
movl $0xb, %edx
callq 0x132f0
movl 0x98(%rsp), %esi
movq 0x25253(%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 0x2521d(%rip), %rdi     # 0x38fd8
leaq 0x193c9(%rip), %rsi     # 0x2d18b
movl $0xb, %edx
callq 0x132f0
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq 0x251f8(%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 0x251c2(%rip), %r15     # 0x38fd8
leaq 0x1939e(%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 0x25190(%rip), %rdi     # 0x38fd8
callq 0x13030
movq %rax, %rdi
callq 0x13190
movq (%r14), %r14
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x192d6(%rip), %rsi     # 0x2d13d
leaq 0x192d1(%rip), %rdx     # 0x2d13f
callq 0x19fa4
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x192bd(%rip), %rsi     # 0x2d140
leaq 0x192b8(%rip), %rdx     # 0x2d142
leaq 0x8(%rsp), %rdi
callq 0x19fa4
movzbl %bl, %r8d
leaq 0xf8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
leaq 0x48(%rsp), %rcx
leaq 0x8(%rsp), %r9
movq %r14, %rsi
callq 0x16d82
leaq 0x118(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13ed8
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x13eef
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x13f06
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x250cb(%rip), %rdi     # 0x38fd8
leaq 0x1922f(%rip), %rsi     # 0x2d143
movl $0xb, %edx
callq 0x132f0
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
movq 0x250a9(%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 0x25073(%rip), %rdi     # 0x38fd8
leaq 0x191e3(%rip), %rsi     # 0x2d14f
movl $0xb, %edx
callq 0x132f0
movl 0x50(%rsp), %esi
movq 0x25057(%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 0x25021(%rip), %rdi     # 0x38fd8
leaq 0x1919d(%rip), %rsi     # 0x2d15b
movl $0xb, %edx
callq 0x132f0
cvtss2sd 0x4c(%rsp), %xmm0
movq 0x25003(%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 0x24fcd(%rip), %rdi     # 0x38fd8
leaq 0x19155(%rip), %rsi     # 0x2d167
movl $0xb, %edx
callq 0x132f0
movl 0x48(%rsp), %esi
movq 0x24fb1(%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 0x14072
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x14097
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0xa0(%rsp), %rdi
cmpq %r12, %rdi
je 0x140b4
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x132a0
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x140d6
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 0x1410f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x132a0
jmp 0x1410f
movq %rdx, %rbx
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x141b7
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x132a0
jmp 0x141b7
jmp 0x141b0
movq %rdx, %r15
movq %rax, (%rsp)
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x14158
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x132a0
jmp 0x14158
movq %rdx, %r15
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x14207
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x132a0
jmp 0x14207
jmp 0x14200
movq %rax, (%rsp)
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x1419d
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x132a0
leaq 0x78(%rsp), %rdi
callq 0x16d28
movq (%rsp), %rdi
callq 0x13430
movq %rdx, %rbx
movq %rax, (%rsp)
cmpl $0x1, %ebx
jne 0x14181
movq (%rsp), %rdi
callq 0x130d0
movq 0x24e0c(%rip), %rdi     # 0x38fd8
leaq 0x18fc4(%rip), %rsi     # 0x2d197
movl $0x23, %edx
callq 0x132f0
movq 0x24df4(%rip), %rdi     # 0x38fd8
callq 0x13100
callq 0x133f0
jmp 0x14056
jmp 0x1417d
movq %rax, (%rsp)
callq 0x133f0
jmp 0x14181
movq %rdx, %r15
movq %rax, (%rsp)
cmpl $0x1, %r15d
jne 0x14181
movq (%rsp), %rdi
callq 0x130d0
movq 0x24db7(%rip), %rdi     # 0x38fd8
leaq 0x18f6f(%rip), %rsi     # 0x2d197
movl $0x23, %edx
callq 0x132f0
movq 0x24d9f(%rip), %rdi     # 0x38fd8
callq 0x13100
callq 0x133f0
jmp 0x13e0f
jmp 0x1417d
movq %rax, (%rsp)
callq 0x133f0
jmp 0x14181
movq %rax, %rdi
callq 0x16d76