// File: swxlion[P]swxJson/tests/../src/swxJson.Enhancement.inc.h
// Function: std::array<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 3ul> swxJson::Json::wantArray<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 3ul>(bool)
std::array<T, N> wantArray(bool compatibleMode = false)
	{
		if (_type != JSON_Array)
			throw JSON_ERROR_MSG(JsonNodeTypeMissMatchError, "Node type miss match.");

		std::list<JsonPtr>* data = (std::list<JsonPtr>*)_data;

		if (!compatibleMode && data->size() != N)
			throw JSON_ERROR_MSG(JsonNodeTypeMissMatchError, "Node type miss match.");

		std::array<T, N> res;

		size_t idx = 0;
		for (auto& node: *data)
		{
			if (idx == N)
				return res;

			res[idx] = (T)(*node);
			idx += 1;
		}

		return res;
	}

// Assembly:
subq $0x108, %rsp            # imm = 0x108
movq %rdi, 0x20(%rsp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, 0x28(%rsp)
movq %rdi, 0x100(%rsp)
movq %rsi, 0xf8(%rsp)
andb $0x1, %al
movb %al, 0xf7(%rsp)
movq 0xf8(%rsp), %rax
movq %rax, 0x30(%rsp)
cmpl $0x1, (%rax)
je 0x55114
movb $0x1, 0xbb(%rsp)
movl $0x60, %edi
callq 0x4a160
movq %rax, 0x10(%rsp)
leaq 0xcf(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x4a530
movq 0x18(%rsp), %rdx
leaq 0x2d5bf(%rip), %rsi     # 0x82619
leaq 0xd0(%rsp), %rdi
callq 0x4dcf0
jmp 0x55069
movq 0x10(%rsp), %rdi
leaq 0x2d55e(%rip), %rsi     # 0x825d3
leaq 0x2d5bd(%rip), %rdx     # 0x82639
movl $0x335, %ecx            # imm = 0x335
leaq 0xd0(%rsp), %r8
callq 0x52cd0
jmp 0x55090
movq 0x10(%rsp), %rdi
movb $0x0, 0xbb(%rsp)
leaq 0x42b1c(%rip), %rsi     # 0x97bc0
leaq -0x237b(%rip), %rdx     # 0x52d30
callq 0x4a500
jmp 0x55388
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
jmp 0x550ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x4a5b8
leaq 0xcf(%rsp), %rdi
callq 0x4a390
testb $0x1, 0xbb(%rsp)
jne 0x55105
jmp 0x5510f
movq 0x10(%rsp), %rdi
callq 0x4a220
jmp 0x5537b
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0xb0(%rsp)
testb $0x1, 0xf7(%rsp)
jne 0x55235
movq 0xb0(%rsp), %rdi
callq 0x52d40
cmpq $0x3, %rax
je 0x55235
movb $0x1, 0x8e(%rsp)
movl $0x60, %edi
callq 0x4a160
movq %rax, (%rsp)
leaq 0x8f(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x4a530
movq 0x8(%rsp), %rdx
leaq 0x2d49b(%rip), %rsi     # 0x82619
leaq 0x90(%rsp), %rdi
callq 0x4dcf0
jmp 0x5518d
movq (%rsp), %rdi
leaq 0x2d43b(%rip), %rsi     # 0x825d3
leaq 0x2d49a(%rip), %rdx     # 0x82639
movl $0x33a, %ecx            # imm = 0x33A
leaq 0x90(%rsp), %r8
callq 0x52cd0
jmp 0x551b3
movq (%rsp), %rdi
movb $0x0, 0x8e(%rsp)
leaq 0x429fa(%rip), %rsi     # 0x97bc0
leaq -0x249d(%rip), %rdx     # 0x52d30
callq 0x4a500
jmp 0x55388
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
jmp 0x5520e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x4a5b8
leaq 0x8f(%rsp), %rdi
callq 0x4a390
testb $0x1, 0x8e(%rsp)
jne 0x55227
jmp 0x55230
movq (%rsp), %rdi
callq 0x4a220
jmp 0x5537b
movq 0x20(%rsp), %rdi
movb $0x0, 0x8d(%rsp)
callq 0x55390
movq $0x0, 0x80(%rsp)
movq 0xb0(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rdi
callq 0x52f20
movq %rax, 0x70(%rsp)
movq 0x78(%rsp), %rdi
callq 0x553e0
movq %rax, 0x68(%rsp)
leaq 0x70(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x55410
testb $0x1, %al
jne 0x55296
jmp 0x5534a
leaq 0x70(%rsp), %rdi
callq 0x531d0
movq %rax, 0x60(%rsp)
cmpq $0x3, 0x80(%rsp)
jne 0x552c5
movb $0x1, 0x8d(%rsp)
movl $0x1, 0x5c(%rsp)
jmp 0x5535a
movq 0x60(%rsp), %rdi
callq 0x53200
movq %rax, %rsi
leaq 0x38(%rsp), %rdi
callq 0x53230
jmp 0x552de
movq 0x20(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x55430
movq %rax, %rdi
leaq 0x38(%rsp), %rsi
callq 0x4a3f0
leaq 0x38(%rsp), %rdi
callq 0x4a5b8
movq 0x80(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x80(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x55460
jmp 0x5527e
movq 0x20(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc0(%rsp)
movl %eax, 0xbc(%rsp)
callq 0x54f90
jmp 0x5537b
movb $0x1, 0x8d(%rsp)
movl $0x1, 0x5c(%rsp)
testb $0x1, 0x8d(%rsp)
jne 0x5536e
movq 0x20(%rsp), %rdi
callq 0x54f90
movq 0x28(%rsp), %rax
addq $0x108, %rsp            # imm = 0x108
retq
movq 0xc0(%rsp), %rdi
callq 0x4a520
nopl (%rax,%rax)