// File: /workspace/github_cpp_makefile_star2_O1/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
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 0x1fc02
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
movq %r15, %rsi
callq 0x6100
leaq 0x31519(%rip), %rsi     # 0xc3ca1
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 0x927b9
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x927bf
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movl 0xb8(%rsp), %ebp
movq 0x8(%rax), %rdx
movq %rdx, 0x58(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x18(%rsp), %r12
movq -0x10(%r12), %rdi
cmpq %r12, %rdi
je 0x927fa
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movq %rbx, %rdi
movl %ebp, %esi
callq 0x12aba
movq %rax, %r14
leaq 0x30e09(%rip), %rsi     # 0xc3617
leaq 0x50(%rsp), %rdi
callq 0x64e0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x12cda
testq %rax, %rax
je 0x92fbb
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x8a250
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x92866
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x30ddf(%rip), %rsi     # 0xc364c
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 %r12, %rdi
je 0x928b8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x27c80(%rip), %rsi     # 0xba53f
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x30e6d(%rip), %rsi     # 0xc373d
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl %ebp, %edx
callq 0x34d0e
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movb 0xc8(%rsp), %bpl
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9291c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0xd8(%rsp), %r13d
movl 0xc0(%rsp), %r12d
testl %r12d, %r12d
setne %al
andb %al, %bpl
leaq 0x309ee(%rip), %rsi     # 0xc332a
movq %r15, %rdi
callq 0x6390
cmpb $0x1, %bpl
jne 0x92c06
testl %eax, %eax
jne 0x93019
testl %r13d, %r13d
je 0x93057
cmpb $0x0, 0xb0(%rsp)
leaq 0x18(%rsp), %r15
je 0x93076
leaq 0x30dc2(%rip), %rsi     # 0xc373b
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
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x929c5
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x286ef(%rip), %rsi     # 0xbb0bb
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl %r13d, %edx
callq 0x345e6
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x92a11
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x286a3(%rip), %rsi     # 0xbb0bb
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x30d58(%rip), %rsi     # 0xc3781
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x28681(%rip), %rsi     # 0xbb0bb
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x30d36(%rip), %rsi     # 0xc3781
leaq 0x50(%rsp), %rdi
callq 0x64e0
leaq 0x28fc9(%rip), %rsi     # 0xbba25
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 0x2d049(%rip), %rdx     # 0xbfae9
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0xaa50
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x92ac4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x40(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x92adf
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x25d88(%rip), %rsi     # 0xb886e
movq %rbx, %rdi
callq 0x59cce
movq %rbx, %rdi
callq 0x28804
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 0x345e6
leaq 0x2cf2a(%rip), %rdx     # 0xbfa52
leaq 0x2cfba(%rip), %r8      # 0xbfae9
leaq 0x8(%rsp), %rsi
leaq 0x30(%rsp), %rcx
movq %rbx, %rdi
callq 0x56b90
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x92b58
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x92b6f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x30bc9(%rip), %rsi     # 0xc373f
leaq 0x28ea8(%rip), %rcx     # 0xbba25
leaq 0x8(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xa6b62
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x2ba8e
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x92bb0
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 0x54412
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x92f88
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x92f88
testl %eax, %eax
je 0x93038
testl %r12d, %r12d
je 0x92d27
cmpb $0x0, 0xd0(%rsp)
je 0x92c6b
leaq 0x28493(%rip), %rsi     # 0xbb0bb
leaq 0x8(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x5852c
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x50(%rsp), %rdi
callq 0x60b0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x92d27
movq 0x18(%rsp), %rsi
jmp 0x92d1f
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
movl %r12d, %edx
callq 0x345e6
leaq 0x28439(%rip), %rcx     # 0xbb0bb
leaq 0x30(%rsp), %rdi
movl $0x2, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x62c0
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x92cbe
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x92cc4
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
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
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x92d0c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x92d27
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
testl %r13d, %r13d
leaq 0x18(%rsp), %r15
je 0x92de8
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
movl %r13d, %edx
callq 0x345e6
leaq 0x2836f(%rip), %rcx     # 0xbb0bb
leaq 0x30(%rsp), %rdi
movl $0x2, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x62c0
movq %r15, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x92d83
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x92d8a
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 0x92dcd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x92de8
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x40(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x282c3(%rip), %rsi     # 0xbb0bb
leaq 0x282be(%rip), %rdx     # 0xbb0bd
leaq 0x30(%rsp), %rdi
callq 0x7c64
leaq 0x30971(%rip), %rsi     # 0xc3781
leaq 0x30(%rsp), %rdi
callq 0x64e0
movq %r15, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x92e3d
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x92e44
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 0x92e87
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x92e9e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
cmpb $0x0, 0xb0(%rsp)
je 0x92f5c
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x28200(%rip), %rsi     # 0xbb0bb
leaq 0x281fb(%rip), %rdx     # 0xbb0bd
callq 0x7c64
leaq 0x308b3(%rip), %rsi     # 0xc3781
leaq 0x30(%rsp), %rdi
callq 0x64e0
movq %r15, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x92efb
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x92f02
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 0x92f45
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x92f5c
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x28ac2(%rip), %rsi     # 0xbba25
leaq 0x50(%rsp), %rdi
callq 0x64e0
movl 0x74(%rsp), %esi
movl 0x2c(%rsp), %edx
leaq 0x50(%rsp), %rcx
movq %rbx, %rdi
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x39bea
movq %rbx, %rdi
callq 0x12fb4
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x92fac
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 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x3064b(%rip), %rsi     # 0xc3622
leaq 0x3066d(%rip), %rdx     # 0xc364b
callq 0x7c64
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x6320
leaq 0x69d9e(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebp, %ebp
leaq 0x69d76(%rip), %rsi     # 0xfcd80
movq 0x6afc7(%rip), %rdx     # 0xfdfd8
movq %r14, %rdi
callq 0x6470
leaq 0x30635(%rip), %rdi     # 0xc3655
leaq 0x2e40c(%rip), %rsi     # 0xc1433
leaq 0x30660(%rip), %rcx     # 0xc368e
movl $0xa44, %edx            # imm = 0xA44
callq 0x61b0
leaq 0x30709(%rip), %rdi     # 0xc3748
leaq 0x2e3ed(%rip), %rsi     # 0xc1433
leaq 0x30641(%rip), %rcx     # 0xc368e
movl $0xa5c, %edx            # imm = 0xA5C
callq 0x61b0
leaq 0x306c9(%rip), %rdi     # 0xc3727
leaq 0x2e3ce(%rip), %rsi     # 0xc1433
leaq 0x30622(%rip), %rcx     # 0xc368e
movl $0xa45, %edx            # imm = 0xA45
callq 0x61b0
leaq 0x306ae(%rip), %rdi     # 0xc372b
leaq 0x2e3af(%rip), %rsi     # 0xc1433
leaq 0x30603(%rip), %rcx     # 0xc368e
movl $0xa46, %edx            # imm = 0xA46
callq 0x61b0
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
jne 0x93136
jmp 0x93148
jmp 0x93145
jmp 0x93109
jmp 0x9322e
jmp 0x9322e
jmp 0x93167
jmp 0x93183
jmp 0x9322e
jmp 0x93129
jmp 0x93145
jmp 0x9322e
jmp 0x9319b
jmp 0x9322e
jmp 0x9319b
jmp 0x9322e
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x9310c
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9310c
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
jne 0x931fc
jmp 0x93231
jmp 0x9322e
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x93148
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x93148
movq %rax, %rbx
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x93194
jmp 0x93231
jmp 0x9322e
jmp 0x9319b
jmp 0x9322e
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x93186
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x93186
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x93231
movq 0x40(%rsp), %rsi
jmp 0x93201
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x931fc
jmp 0x93231
jmp 0x9322e
jmp 0x9322e
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x931d8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x931d8
movq %rax, %rbx
movb $0x1, %bpl
testb %bpl, %bpl
je 0x93231
movq %r14, %rdi
callq 0x6200
jmp 0x93231
jmp 0x931ef
jmp 0x9322e
jmp 0x931ef
jmp 0x9322e
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x93231
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x93231
jmp 0x9322e
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9324d
movq 0x18(%rsp), %rsi
jmp 0x93245
movq %rax, %rbx
jmp 0x9324d
jmp 0x9322e
jmp 0x9322e
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x9324d
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x6260
movq %rbx, %rdi
callq 0x64a0
nop