// File: /workspace/github_cpp_makefile_star2_O3/rossy[P]crossc/SPIRV-Cross/spirv_msl.cpp
// Function: spirv_cross::CompilerMSL::emit_atomic_func_op(unsigned int, unsigned int, char const*, unsigned int, unsigned int, bool, unsigned int, unsigned int, bool, bool, unsigned int)
void CompilerMSL::emit_atomic_func_op(uint32_t result_type, uint32_t result_id, const char *op, uint32_t mem_order_1,
                                      uint32_t mem_order_2, bool has_mem_order_2, uint32_t obj, uint32_t op1,
                                      bool op1_is_pointer, bool op1_is_literal, uint32_t op2)
{
	forced_temporaries.insert(result_id);

	string exp = string(op) + "(";

	auto &type = expression_type(obj);
	exp += "(volatile ";
	auto *var = maybe_get_backing_variable(obj);
	if (!var)
		SPIRV_CROSS_THROW("No backing variable for atomic operation.");
	exp += get_argument_address_space(*var);
	exp += " atomic_";
	exp += type_to_glsl(type);
	exp += "*)";

	exp += "&";
	exp += to_enclosed_expression(obj);

	bool is_atomic_compare_exchange_strong = op1_is_pointer && op1;

	if (is_atomic_compare_exchange_strong)
	{
		assert(strcmp(op, "atomic_compare_exchange_weak_explicit") == 0);
		assert(op2);
		assert(has_mem_order_2);
		exp += ", &";
		exp += to_name(result_id);
		exp += ", ";
		exp += to_expression(op2);
		exp += ", ";
		exp += get_memory_order(mem_order_1);
		exp += ", ";
		exp += get_memory_order(mem_order_2);
		exp += ")";

		// MSL only supports the weak atomic compare exchange,
		// so emit a CAS loop here.
		statement(variable_decl(type, to_name(result_id)), ";");
		statement("do");
		begin_scope();
		statement(to_name(result_id), " = ", to_expression(op1), ";");
		end_scope_decl(join("while (!", exp, ")"));
		set<SPIRExpression>(result_id, to_name(result_id), result_type, true);
	}
	else
	{
		assert(strcmp(op, "atomic_compare_exchange_weak_explicit") != 0);
		if (op1)
		{
			if (op1_is_literal)
				exp += join(", ", op1);
			else
				exp += ", " + to_expression(op1);
		}
		if (op2)
			exp += ", " + to_expression(op2);

		exp += string(", ") + get_memory_order(mem_order_1);
		if (has_mem_order_2)
			exp += string(", ") + get_memory_order(mem_order_2);

		exp += ")";
		emit_op(result_type, result_id, exp, false);
	}

	flush_all_atomic_capable_variables();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rcx, %r15
movl %esi, %r13d
movq %rdi, %rbx
movl %esi, 0x74(%rsp)
leaq 0x2c(%rsp), %rsi
movl %edx, (%rsi)
addq $0x228, %rdi            # imm = 0x228
leaq 0x50(%rsp), %rdx
movq %rdi, (%rdx)
callq 0x1f510
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
movq %r15, %rsi
callq 0x6100
leaq 0x31104(%rip), %rsi     # 0xc2c71
leaq 0x8(%rsp), %rdi
callq 0x64e0
leaq 0x60(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x91b9e
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x91ba4
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movl 0xb8(%rsp), %r12d
movq 0x8(%rax), %rdx
movq %rdx, 0x58(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x18(%rsp), %rbp
movq -0x10(%rbp), %rdi
cmpq %rbp, %rdi
je 0x91bdf
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movq %rbx, %rdi
movl %r12d, %esi
callq 0x12a72
movq %rax, %r14
leaq 0x309f3(%rip), %rsi     # 0xc25e7
leaq 0x50(%rsp), %rdi
callq 0x64e0
movq %rbx, %rdi
movl %r12d, %esi
callq 0x12c9a
testq %rax, %rax
je 0x9239e
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x8960a
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x91c4d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x309c8(%rip), %rsi     # 0xc261c
leaq 0x50(%rsp), %rdi
callq 0x64e0
movq (%rbx), %rax
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
xorl %ecx, %ecx
callq *0x98(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x91c9f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x27889(%rip), %rsi     # 0xb952f
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x30a56(%rip), %rsi     # 0xc270d
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl %r12d, %edx
callq 0x34600
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movl %r13d, %ebp
movb 0xc8(%rsp), %r12b
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x91d0c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0xc0(%rsp), %r13d
testl %r13d, %r13d
setne %al
andb %al, %r12b
leaq 0x305d6(%rip), %rsi     # 0xc22fa
movq %r15, %rdi
callq 0x6390
cmpb $0x1, %r12b
jne 0x91ff2
testl %eax, %eax
jne 0x92402
movl 0xd8(%rsp), %ebp
testl %ebp, %ebp
je 0x92440
cmpb $0x0, 0xb0(%rsp)
je 0x9245f
leaq 0x309a9(%rip), %rsi     # 0xc270b
leaq 0x50(%rsp), %rdi
callq 0x64e0
movl 0x2c(%rsp), %edx
movq (%rbx), %rax
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %ecx
callq *0x38(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
leaq 0x18(%rsp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0x91db2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x282f2(%rip), %rsi     # 0xba0ab
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl %ebp, %edx
callq 0x33f8a
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x91dfd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x282a7(%rip), %rsi     # 0xba0ab
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x3093c(%rip), %rsi     # 0xc2751
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x28285(%rip), %rsi     # 0xba0ab
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x3091a(%rip), %rsi     # 0xc2751
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x28bcd(%rip), %rsi     # 0xbaa15
leaq 0x50(%rsp), %rdi
callq 0x64e0
movl 0x2c(%rsp), %edx
movq (%rbx), %rax
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %ecx
callq *0x38(%rax)
movq (%rbx), %rax
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rcx
movq %rbx, %rsi
movq %r14, %rdx
xorl %r8d, %r8d
callq *0xc8(%rax)
leaq 0x2cc65(%rip), %rdx     # 0xbeaf1
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0xaa14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x91eb0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x40(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x91ecb
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x2598c(%rip), %rsi     # 0xb785e
movq %rbx, %rdi
callq 0x594d4
movq %rbx, %rdi
callq 0x281d8
movl 0x2c(%rsp), %edx
movq (%rbx), %rax
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %ecx
callq *0x38(%rax)
movl 0xc0(%rsp), %edx
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0x33f8a
leaq 0x2cb46(%rip), %rdx     # 0xbea5a
leaq 0x2cbd6(%rip), %r8      # 0xbeaf1
leaq 0x8(%rsp), %rsi
leaq 0x30(%rsp), %rcx
movq %rbx, %rdi
callq 0x56396
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x91f44
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x91f5b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x307ad(%rip), %rsi     # 0xc270f
leaq 0x28aac(%rip), %rcx     # 0xbaa15
leaq 0x8(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xa5c56
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x2b486
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x91f9c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0x2c(%rsp), %ebp
movq (%rbx), %rax
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
callq *0x38(%rax)
leaq 0x30(%rsp), %r8
movb $0x1, (%r8)
leaq 0x8(%rsp), %rdx
leaq 0x74(%rsp), %rcx
movq %rbx, %rdi
movl %ebp, %esi
callq 0x53c18
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x9236b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9236b
testl %eax, %eax
je 0x92421
testl %r13d, %r13d
je 0x9210d
cmpb $0x0, 0xd0(%rsp)
je 0x92056
leaq 0x28097(%rip), %rsi     # 0xba0ab
leaq 0x8(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x57d32
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9210d
movq 0x18(%rsp), %rsi
jmp 0x92105
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
movl %r13d, %edx
callq 0x33f8a
leaq 0x2803e(%rip), %rcx     # 0xba0ab
leaq 0x30(%rsp), %rdi
movl $0x2, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x62c0
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x920a8
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x920af
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x920f2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9210d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0xd8(%rsp), %edx
testl %edx, %edx
leaq 0x18(%rsp), %r12
je 0x921d2
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0x33f8a
leaq 0x27f76(%rip), %rcx     # 0xba0ab
leaq 0x30(%rsp), %rdi
movl $0x2, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x62c0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9216c
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x92174
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x921b7
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x921d2
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x40(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x27ec9(%rip), %rsi     # 0xba0ab
leaq 0x27ec4(%rip), %rdx     # 0xba0ad
leaq 0x30(%rsp), %rdi
callq 0x7be0
leaq 0x30557(%rip), %rsi     # 0xc2751
leaq 0x30(%rsp), %rdi
callq 0x64e0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x92227
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x9222f
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x92272
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x92289
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
cmpb $0x0, 0xb0(%rsp)
je 0x92341
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x27e05(%rip), %rsi     # 0xba0ab
leaq 0x27e00(%rip), %rdx     # 0xba0ad
callq 0x7be0
leaq 0x30498(%rip), %rsi     # 0xc2751
leaq 0x30(%rsp), %rdi
callq 0x64e0
movq %r12, 0x8(%rsp)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x922e6
movq %rsi, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x922f1
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq %r12, %rsi
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x50(%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9232a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x92341
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x286cd(%rip), %rsi     # 0xbaa15
leaq 0x50(%rsp), %rdi
callq 0x64e0
movl 0x2c(%rsp), %edx
leaq 0x50(%rsp), %rcx
movq %rbx, %rdi
movl %ebp, %esi
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x3942c
movq %rbx, %rdi
callq 0x12f6c
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x9238f
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x6260
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x30237(%rip), %rsi     # 0xc25f2
leaq 0x30259(%rip), %rdx     # 0xc261b
leaq 0x8(%rsp), %rdi
callq 0x7be0
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x6320
leaq 0x699e5(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebp, %ebp
leaq 0x699bd(%rip), %rsi     # 0xfbdb0
movq 0x6abde(%rip), %rdx     # 0xfcfd8
movq %r14, %rdi
callq 0x6470
leaq 0x3021c(%rip), %rdi     # 0xc2625
leaq 0x2dff3(%rip), %rsi     # 0xc0403
leaq 0x30247(%rip), %rcx     # 0xc265e
movl $0xa44, %edx            # imm = 0xA44
callq 0x61b0
leaq 0x302f0(%rip), %rdi     # 0xc2718
leaq 0x2dfd4(%rip), %rsi     # 0xc0403
leaq 0x30228(%rip), %rcx     # 0xc265e
movl $0xa5c, %edx            # imm = 0xA5C
callq 0x61b0
leaq 0x302b0(%rip), %rdi     # 0xc26f7
leaq 0x2dfb5(%rip), %rsi     # 0xc0403
leaq 0x30209(%rip), %rcx     # 0xc265e
movl $0xa45, %edx            # imm = 0xA45
callq 0x61b0
leaq 0x30295(%rip), %rdi     # 0xc26fb
leaq 0x2df96(%rip), %rsi     # 0xc0403
leaq 0x301ea(%rip), %rcx     # 0xc265e
movl $0xa46, %edx            # imm = 0xA46
callq 0x61b0
jmp 0x924ea
jmp 0x92506
jmp 0x92570
jmp 0x9260f
jmp 0x9260f
jmp 0x9253c
jmp 0x92558
jmp 0x9260f
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
jne 0x924f7
jmp 0x92509
jmp 0x92506
jmp 0x9260f
jmp 0x92521
jmp 0x9260f
jmp 0x92521
jmp 0x9260f
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x92524
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x92524
jmp 0x92521
jmp 0x9260f
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x92509
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x92509
movq %rax, %rbx
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x92569
jmp 0x92612
jmp 0x9260f
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x925dd
jmp 0x92612
jmp 0x9260f
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9255b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9255b
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x92612
movq 0x40(%rsp), %rsi
jmp 0x925e2
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x925c3
jmp 0x9260f
jmp 0x9260f
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x925a2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
testb %bpl, %bpl
jne 0x925ac
jmp 0x92612
movq %rax, %rbx
movq %r14, %rdi
callq 0x6200
jmp 0x92612
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
jne 0x925dd
jmp 0x92612
jmp 0x9260f
jmp 0x925d0
jmp 0x9260f
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x92612
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x92612
jmp 0x9260f
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9262e
movq 0x18(%rsp), %rsi
jmp 0x92626
movq %rax, %rbx
jmp 0x9262e
jmp 0x9260f
jmp 0x9260f
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x9262e
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x6260
movq %rbx, %rdi
callq 0x64a0