// File: /workspace/github_cpp_makefile_star2_O3/rossy[P]crossc/SPIRV-Cross/spirv_hlsl.cpp
// Function: spirv_cross::CompilerHLSL::read_access_chain[abi:cxx11](spirv_cross::SPIRAccessChain const&)
string CompilerHLSL::read_access_chain(const SPIRAccessChain &chain)
{
	auto &type = get<SPIRType>(chain.basetype);

	SPIRType target_type;
	target_type.basetype = SPIRType::UInt;
	target_type.vecsize = type.vecsize;
	target_type.columns = type.columns;

	if (type.basetype == SPIRType::Struct)
		SPIRV_CROSS_THROW("Reading structs from ByteAddressBuffer not yet supported.");

	if (type.width != 32)
		SPIRV_CROSS_THROW("Reading types other than 32-bit from ByteAddressBuffer not yet supported.");

	if (!type.array.empty())
		SPIRV_CROSS_THROW("Reading arrays from ByteAddressBuffer not yet supported.");

	string load_expr;

	// Load a vector or scalar.
	if (type.columns == 1 && !chain.row_major_matrix)
	{
		const char *load_op = nullptr;
		switch (type.vecsize)
		{
		case 1:
			load_op = "Load";
			break;
		case 2:
			load_op = "Load2";
			break;
		case 3:
			load_op = "Load3";
			break;
		case 4:
			load_op = "Load4";
			break;
		default:
			SPIRV_CROSS_THROW("Unknown vector size.");
		}

		load_expr = join(chain.base, ".", load_op, "(", chain.dynamic_index, chain.static_index, ")");
	}
	else if (type.columns == 1)
	{
		// Strided load since we are loading a column from a row-major matrix.
		if (type.vecsize > 1)
		{
			load_expr = type_to_glsl(target_type);
			load_expr += "(";
		}

		for (uint32_t r = 0; r < type.vecsize; r++)
		{
			load_expr +=
			    join(chain.base, ".Load(", chain.dynamic_index, chain.static_index + r * chain.matrix_stride, ")");
			if (r + 1 < type.vecsize)
				load_expr += ", ";
		}

		if (type.vecsize > 1)
			load_expr += ")";
	}
	else if (!chain.row_major_matrix)
	{
		// Load a matrix, column-major, the easy case.
		const char *load_op = nullptr;
		switch (type.vecsize)
		{
		case 1:
			load_op = "Load";
			break;
		case 2:
			load_op = "Load2";
			break;
		case 3:
			load_op = "Load3";
			break;
		case 4:
			load_op = "Load4";
			break;
		default:
			SPIRV_CROSS_THROW("Unknown vector size.");
		}

		// Note, this loading style in HLSL is *actually* row-major, but we always treat matrices as transposed in this backend,
		// so row-major is technically column-major ...
		load_expr = type_to_glsl(target_type);
		load_expr += "(";
		for (uint32_t c = 0; c < type.columns; c++)
		{
			load_expr += join(chain.base, ".", load_op, "(", chain.dynamic_index,
			                  chain.static_index + c * chain.matrix_stride, ")");
			if (c + 1 < type.columns)
				load_expr += ", ";
		}
		load_expr += ")";
	}
	else
	{
		// Pick out elements one by one ... Hopefully compilers are smart enough to recognize this pattern
		// considering HLSL is "row-major decl", but "column-major" memory layout (basically implicit transpose model, ugh) ...

		load_expr = type_to_glsl(target_type);
		load_expr += "(";
		for (uint32_t c = 0; c < type.columns; c++)
		{
			for (uint32_t r = 0; r < type.vecsize; r++)
			{
				load_expr += join(chain.base, ".Load(", chain.dynamic_index,
				                  chain.static_index + c * (type.width / 8) + r * chain.matrix_stride, ")");

				if ((r + 1 < type.vecsize) || (c + 1 < type.columns))
					load_expr += ", ";
			}
		}
		load_expr += ")";
	}

	auto bitcast_op = bitcast_glsl_op(type, target_type);
	if (!bitcast_op.empty())
		load_expr = join(bitcast_op, "(", load_expr, ")");

	return load_expr;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movq %rsi, %r13
movq %rdi, %r12
movq %rdx, 0x30(%rsp)
movl 0xc(%rdx), %esi
movq %r13, %rdi
callq 0xa3ea
movq %rax, %r15
xorl %eax, %eax
leaq 0x140(%rsp), %rdx
movl %eax, -0xc8(%rdx)
leaq 0x8f195(%rip), %r14     # 0xfc3e0
addq $0x10, %r14
movq %r14, -0xd0(%rdx)
movl %eax, -0xc0(%rdx)
movq %rax, -0x88(%rdx)
movl %eax, -0x80(%rdx)
movq %rax, -0x78(%rdx)
movb $0x0, -0x70(%rdx)
xorps %xmm0, %xmm0
movups %xmm0, -0xb0(%rdx)
movups %xmm0, -0xa0(%rdx)
movl %eax, -0x90(%rdx)
movl $0x8, -0x6c(%rdx)
movups %xmm0, -0x68(%rdx)
movq %rax, -0x58(%rdx)
movq %rax, -0x38(%rdx)
movq %rdx, -0x30(%rdx)
movq $0x1, -0x28(%rdx)
movups %xmm0, -0x20(%rdx)
movl $0x3f800000, -0x10(%rdx) # imm = 0x3F800000
movups %xmm0, -0x8(%rdx)
movl $0x5, -0xc4(%rdx)
movl 0x14(%r15), %eax
movl %eax, -0xbc(%rdx)
movl 0x18(%r15), %ecx
movl %ecx, -0xb8(%rdx)
cmpl $0xc, 0xc(%r15)
je 0x6d906
cmpl $0x20, 0x10(%r15)
jne 0x6d96f
movq 0x20(%r15), %rdx
cmpq 0x28(%r15), %rdx
jne 0x6d9d8
leaq 0x10(%r12), %rbx
movq %rbx, (%r12)
movq $0x0, 0x8(%r12)
movb $0x0, 0x10(%r12)
movq 0x30(%rsp), %rdx
movb 0x64(%rdx), %dl
cmpl $0x1, %ecx
movq %r12, (%rsp)
movq %rbx, 0x28(%rsp)
movq %r14, 0x68(%rsp)
movq %r13, 0x60(%rsp)
jne 0x6d453
testb %dl, %dl
je 0x6d5a6
cmpl $0x2, %eax
jb 0x6d399
movq 0x60(%rsp), %rsi
movq (%rsi), %rax
leaq 0x8(%rsp), %rdi
leaq 0x70(%rsp), %rdx
xorl %ecx, %ecx
callq *0x98(%rax)
leaq 0x8(%rsp), %rbx
movq (%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6310
movq (%rbx), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6d386
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x558e4(%rip), %rsi     # 0xc2c71
movq %r14, %rdi
callq 0x64e0
movl 0x14(%r15), %eax
testl %eax, %eax
je 0x6d7cc
movq 0x30(%rsp), %rax
leaq 0x18(%rax), %rbx
leaq 0x38(%rax), %r14
xorl %r12d, %r12d
leaq 0x8(%rsp), %r13
leaq 0x38(%rsp), %rbp
movq 0x30(%rsp), %rcx
movl 0x60(%rcx), %eax
imull %r12d, %eax
addl 0x58(%rcx), %eax
movl %eax, 0x38(%rsp)
movq %r13, %rdi
movq %rbx, %rsi
leaq 0x50fe8(%rip), %rdx     # 0xbe3c3
movq %r14, %rcx
movq %rbp, %r8
leaq 0x4d62d(%rip), %r9      # 0xbaa15
callq 0x7ad1a
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq (%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6d41c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
incl %r12d
movl 0x14(%r15), %eax
cmpl %eax, %r12d
jae 0x6d43c
movq (%rsp), %rdi
leaq 0x4cc78(%rip), %rsi     # 0xba0ab
callq 0x64e0
movl 0x14(%r15), %eax
cmpl %eax, %r12d
jb 0x6d3bb
cmpl $0x1, %eax
ja 0x6d591
jmp 0x6d7cc
testb %dl, %dl
je 0x6d5ca
movq (%r13), %rax
leaq 0x8(%rsp), %rdi
leaq 0x70(%rsp), %rdx
movq %r13, %rsi
xorl %ecx, %ecx
callq *0x98(%rax)
leaq 0x8(%rsp), %rbx
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6310
movq (%rbx), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6d49e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x557cc(%rip), %rsi     # 0xc2c71
movq %r12, %rdi
callq 0x64e0
movl 0x18(%r15), %ecx
testl %ecx, %ecx
je 0x6d591
movq 0x30(%rsp), %rax
leaq 0x18(%rax), %r13
leaq 0x38(%rax), %rbp
movl 0x14(%r15), %eax
xorl %r14d, %r14d
leal 0x1(%r14), %ebx
testl %eax, %eax
movl $0x0, %eax
je 0x6d586
xorl %r12d, %r12d
movl 0x10(%r15), %eax
shrl $0x3, %eax
imull %r14d, %eax
movq 0x30(%rsp), %rcx
addl 0x58(%rcx), %eax
movl 0x60(%rcx), %ecx
imull %r12d, %ecx
addl %eax, %ecx
movl %ecx, 0x38(%rsp)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
leaq 0x50eb3(%rip), %rdx     # 0xbe3c3
movq %rbp, %rcx
leaq 0x38(%rsp), %r8
leaq 0x4d4f6(%rip), %r9      # 0xbaa15
callq 0x7ad1a
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq (%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6d553
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
incl %r12d
movl 0x14(%r15), %eax
cmpl %eax, %r12d
jb 0x6d565
cmpl 0x18(%r15), %ebx
jae 0x6d579
movq (%rsp), %rdi
leaq 0x4cb3b(%rip), %rsi     # 0xba0ab
callq 0x64e0
movl 0x14(%r15), %eax
cmpl %eax, %r12d
jb 0x6d4e1
movl 0x18(%r15), %ecx
movl %ebx, %r14d
cmpl %ecx, %ebx
jb 0x6d4cd
leaq 0x4d47d(%rip), %rsi     # 0xbaa15
movq (%rsp), %rdi
callq 0x64e0
jmp 0x6d7cc
decl %eax
cmpl $0x3, %eax
ja 0x6da41
leaq 0x4dcc0(%rip), %rcx     # 0xbb278
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x5074a(%rip), %rax     # 0xbdd12
jmp 0x6d62b
movq $0x0, 0x38(%rsp)
decl %eax
cmpl $0x3, %eax
ja 0x6daa7
leaq 0x4dc83(%rip), %rcx     # 0xbb268
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x5071d(%rip), %rax     # 0xbdd12
jmp 0x6d6a6
leaq 0x50da1(%rip), %rax     # 0xbe3a2
jmp 0x6d62b
leaq 0x50d98(%rip), %rax     # 0xbe3a2
jmp 0x6d6a6
leaq 0x50d92(%rip), %rax     # 0xbe3a8
jmp 0x6d62b
leaq 0x50d89(%rip), %rax     # 0xbe3a8
jmp 0x6d6a6
leaq 0x50d71(%rip), %rax     # 0xbe39c
movq %rax, 0x38(%rsp)
movq 0x30(%rsp), %r10
leaq 0x18(%r10), %rsi
leaq 0x38(%r10), %r9
addq $0x58, %r10
leaq 0x4d3cd(%rip), %rax     # 0xbaa15
leaq 0x4d1fa(%rip), %rdx     # 0xba849
leaq 0x5561b(%rip), %r8      # 0xc2c71
leaq 0x8(%rsp), %rdi
leaq 0x38(%rsp), %rcx
pushq %rax
pushq %r10
callq 0x7ac43
addq $0x10, %rsp
leaq 0x8(%rsp), %rbx
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6310
movq (%rbx), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6d7cc
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x6d7cc
leaq 0x50cf6(%rip), %rax     # 0xbe39c
movq %rax, 0x38(%rsp)
movq (%r13), %rax
leaq 0x8(%rsp), %rdi
leaq 0x70(%rsp), %rdx
movq %r13, %rsi
xorl %ecx, %ecx
callq *0x98(%rax)
leaq 0x8(%rsp), %rbx
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6310
movq (%rbx), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6d6ee
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x5557c(%rip), %rsi     # 0xc2c71
movq %r12, %rdi
callq 0x64e0
cmpl $0x0, 0x18(%r15)
je 0x6d7bc
movq 0x30(%rsp), %rax
leaq 0x18(%rax), %rbx
leaq 0x38(%rax), %r14
xorl %r13d, %r13d
leaq 0x5c(%rsp), %r12
leaq 0x38(%rsp), %rbp
movq 0x30(%rsp), %rcx
movl 0x60(%rcx), %eax
imull %r13d, %eax
addl 0x58(%rcx), %eax
movl %eax, 0x5c(%rsp)
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
leaq 0x4d105(%rip), %rdx     # 0xba849
movq %rbp, %rcx
leaq 0x55523(%rip), %r8      # 0xc2c71
movq %r14, %r9
leaq 0x4d2bd(%rip), %rax     # 0xbaa15
pushq %rax
pushq %r12
callq 0x7addd
addq $0x10, %rsp
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq (%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6d793
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
incl %r13d
movl 0x18(%r15), %eax
cmpl %eax, %r13d
jae 0x6d7b3
movq (%rsp), %rdi
leaq 0x4c901(%rip), %rsi     # 0xba0ab
callq 0x64e0
movl 0x18(%r15), %eax
cmpl %eax, %r13d
jb 0x6d722
leaq 0x4d252(%rip), %rsi     # 0xbaa15
movq (%rsp), %rdi
callq 0x64e0
movq 0x60(%rsp), %rsi
movq (%rsi), %rax
leaq 0x8(%rsp), %rdi
leaq 0x70(%rsp), %rcx
movq %r15, %rdx
callq *0x168(%rax)
cmpq $0x0, 0x10(%rsp)
movq (%rsp), %r14
movq 0x68(%rsp), %r15
je 0x6d842
leaq 0x55472(%rip), %rdx     # 0xc2c71
leaq 0x4d20f(%rip), %r8      # 0xbaa15
leaq 0x38(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %r14, %rcx
callq 0x7aeb4
leaq 0x38(%rsp), %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6310
movq (%rbx), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x6d842
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x110(%rsp), %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6d865
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movq %r15, 0x70(%rsp)
movq %rbx, %rdi
callq 0xde80
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x6d88f
movq 0xe8(%rsp), %rsi
subq %rdi, %rsi
callq 0x6260
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x6d8d4
movq 0xc8(%rsp), %rsi
subq %rdi, %rsi
callq 0x6260
xorl %eax, %eax
movq %rax, 0xa8(%rsp)
movl %eax, 0xb0(%rsp)
movq %rax, 0xb8(%rsp)
movl %eax, 0xc0(%rsp)
movq %rax, 0xc8(%rsp)
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x6d8f1
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x6260
movq %r14, %rax
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x6140
movq %rax, %rbx
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x509bc(%rip), %rsi     # 0xbe2df
leaq 0x509ee(%rip), %rdx     # 0xbe318
leaq 0x8(%rsp), %rdi
callq 0x7be0
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x6320
leaq 0x8e47d(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%rbx)
xorl %ebp, %ebp
leaq 0x8e455(%rip), %rsi     # 0xfbdb0
movq 0x8f676(%rip), %rdx     # 0xfcfd8
movq %rbx, %rdi
callq 0x6470
jmp 0x6db0b
movl $0x10, %edi
callq 0x6140
movq %rax, %rbx
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x5098d(%rip), %rsi     # 0xbe319
leaq 0x509cf(%rip), %rdx     # 0xbe362
leaq 0x8(%rsp), %rdi
callq 0x7be0
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x6320
leaq 0x8e414(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%rbx)
xorl %ebp, %ebp
leaq 0x8e3ec(%rip), %rsi     # 0xfbdb0
movq 0x8f60d(%rip), %rdx     # 0xfcfd8
movq %rbx, %rdi
callq 0x6470
jmp 0x6db0b
movl $0x10, %edi
callq 0x6140
movq %rax, %rbx
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x5096e(%rip), %rsi     # 0xbe363
leaq 0x5099f(%rip), %rdx     # 0xbe39b
leaq 0x8(%rsp), %rdi
callq 0x7be0
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x6320
leaq 0x8e3ab(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%rbx)
xorl %ebp, %ebp
leaq 0x8e383(%rip), %rsi     # 0xfbdb0
movq 0x8f5a4(%rip), %rdx     # 0xfcfd8
movq %rbx, %rdi
callq 0x6470
jmp 0x6db0b
movl $0x10, %edi
callq 0x6140
movq %rax, %rbx
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x50950(%rip), %rsi     # 0xbe3ae
leaq 0x5095d(%rip), %rdx     # 0xbe3c2
leaq 0x8(%rsp), %rdi
callq 0x7be0
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x6320
leaq 0x8e342(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%rbx)
xorl %ebp, %ebp
leaq 0x8e31a(%rip), %rsi     # 0xfbdb0
movq 0x8f53b(%rip), %rdx     # 0xfcfd8
movq %rbx, %rdi
callq 0x6470
jmp 0x6db0b
movl $0x10, %edi
callq 0x6140
movq %rax, %rbx
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x508ea(%rip), %rsi     # 0xbe3ae
leaq 0x508f7(%rip), %rdx     # 0xbe3c2
leaq 0x8(%rsp), %rdi
callq 0x7be0
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x6320
leaq 0x8e2dc(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%rbx)
xorl %ebp, %ebp
leaq 0x8e2b4(%rip), %rsi     # 0xfbdb0
movq 0x8f4d5(%rip), %rdx     # 0xfcfd8
movq %rbx, %rdi
callq 0x6470
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x6db25
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
testb %bpl, %bpl
jne 0x6db32
jmp 0x6dc57
movq %rax, %r14
movq %rbx, %rdi
callq 0x6200
jmp 0x6dc57
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x6db59
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
testb %bpl, %bpl
jne 0x6db66
jmp 0x6dc5b
movq %rax, %r14
movq %rbx, %rdi
callq 0x6200
jmp 0x6dc5b
jmp 0x6dc54
jmp 0x6dc54
movq %rax, %r14
jmp 0x6dc5b
movq %rax, %r14
jmp 0x6dc8f
jmp 0x6dc54
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x6dbac
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
testb %bpl, %bpl
je 0x6dca3
jmp 0x6dc0a
jmp 0x6dbde
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x6dbd3
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
testb %bpl, %bpl
je 0x6dca3
jmp 0x6dc0a
movq %rax, %r14
jmp 0x6dc0a
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x6dbfd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
testb %bpl, %bpl
jne 0x6dc0a
jmp 0x6dca3
movq %rax, %r14
movq %rbx, %rdi
callq 0x6200
jmp 0x6dca3
movq %rax, %r14
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x6dc40
jmp 0x6dc54
jmp 0x6dc54
jmp 0x6dc54
jmp 0x6dc54
jmp 0x6dc54
jmp 0x6dc33
jmp 0x6dc54
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6dc57
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x6dc57
movq %rax, %r14
movq (%rsp), %r12
movq 0x28(%rsp), %rbx
jmp 0x6dc8f
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6dc86
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x6dc86
movq %rax, %r14
movq 0x28(%rsp), %rbx
movq (%rsp), %r12
movq (%r12), %rdi
cmpq %rbx, %rdi
je 0x6dca3
movq (%rbx), %rsi
incq %rsi
callq 0x6260
leaq 0x70(%rsp), %rdi
callq 0x1be02
movq %r14, %rdi
callq 0x64a0
nop