// File: /workspace/github_cpp_makefile_star2_O3/mlugo2[P]SunshineGPU/src/gpu.cpp
// Function: gpu::debug(unsigned long long)
void gpu::debug(u64 instr)
{
// DEBUG
	u64 w = instr;

	u8 b = get_opcode(w);
	cout << (u16)b << endl;

	b = get_dest_type(w);
	cout << (u16)b << endl;

	b = get_dest_index(w);
	cout << (u16)b << endl;

	b = get_dest_w(w);
	cout << (u16)b << endl;

	b = get_dest_z(w);
	cout << (u16)b << endl;

	b = get_dest_y(w);
	cout << (u16)b << endl;

	b = get_dest_x(w);
	cout << (u16)b << endl;

	b = get_srcN_neg(w, 0);
	cout <<"source0 neg: "<< (u16)b << endl;

	b = get_srcN_type(w, 0);
	cout <<"source0 type: "<< (u16)b << endl;

	b = get_srcN_index(w, 0);
	cout <<"source0 index: "<< (u16)b << endl;

	b = get_srcN_w(w, 0);
	cout <<"source0 w: "<< (u16)b << endl;

	b = get_srcN_z(w, 0);
	cout <<"source0 z: "<< (u16)b << endl;

	b = get_srcN_y(w, 0);
	cout <<"source0 y: "<< (u16)b << endl;

	b = get_srcN_x(w, 0);
	cout <<"source0 x: "<< (u16)b << endl;

	cout << "-------------------" << endl;

	b = get_srcN_neg(w, 1);
	cout <<"source1 neg: "<< (u16)b << endl;

	b = get_srcN_type(w, 1);
	cout <<"source1 type: "<< (u16)b << endl;

	b = get_srcN_index(w, 1);
	cout <<"source1 index: "<< (u16)b << endl;

	b = get_srcN_w(w, 1);
	cout <<"source1 w: "<< (u16)b << endl;

	b = get_srcN_z(w, 1);
	cout <<"source1 z: "<< (u16)b << endl;

	b = get_srcN_y(w, 1);
	cout <<"source1 y: "<< (u16)b << endl;

	b = get_srcN_x(w, 1);
	cout <<"source1 x: "<< (u16)b << endl;

	cout << "-------------------" << endl;

	b = get_srcN_neg(w, 2);
	cout <<"source2 neg: "<< (u16)b << endl;

	b = get_srcN_type(w, 2);
	cout <<"source2 type: "<< (u16)b << endl;

	b = get_srcN_index(w, 2);
	cout <<"source2 index: "<< (u16)b << endl;

	b = get_srcN_w(w, 2);
	cout <<"source2 w: "<< (u16)b << endl;

	b = get_srcN_z(w, 2);
	cout <<"source2 z: "<< (u16)b << endl;

	b = get_srcN_y(w, 2);
	cout <<"source2 y: "<< (u16)b << endl;

	b = get_srcN_x(w, 2);
	cout <<"source2 x: "<< (u16)b << endl;


	// DEBUG
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
shrq $0x3a, %rsi
movq 0x458c(%rip), %r14      # 0xbfd8
movq %r14, %rdi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %rsi
shrq $0x38, %rsi
andl $0x1, %esi
movq %r14, %rdi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %rsi
shrq $0x34, %rsi
andl $0xf, %esi
movq %r14, %rdi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %rsi
shrq $0x33, %rsi
andl $0x1, %esi
movq %r14, %rdi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %rsi
shrq $0x32, %rsi
andl $0x1, %esi
movq %r14, %rdi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %rsi
shrq $0x31, %rsi
andl $0x1, %esi
movq %r14, %rdi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %rsi
shrq $0x30, %rsi
andl $0x1, %esi
movq %r14, %rdi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %r15
shrq $0x2f, %r15
andl $0x1, %r15d
leaq 0x1720(%rip), %rsi      # 0x9318
movl $0xd, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %r15
shrq $0x2d, %r15
andl $0x3, %r15d
leaq 0x16da(%rip), %rsi      # 0x9326
movl $0xe, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %r15
shrq $0x29, %r15
andl $0xf, %r15d
leaq 0x1695(%rip), %rsi      # 0x9335
movl $0xf, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %r15
shrq $0x27, %r15
andl $0x3, %r15d
leaq 0x1651(%rip), %rsi      # 0x9345
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %r15
shrq $0x25, %r15
andl $0x3, %r15d
leaq 0x1609(%rip), %rsi      # 0x9351
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %r15
shrq $0x23, %r15
andl $0x3, %r15d
leaq 0x15c1(%rip), %rsi      # 0x935d
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %r15
shrq $0x21, %r15
andl $0x3, %r15d
leaq 0x1579(%rip), %rsi      # 0x9369
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
leaq 0x153c(%rip), %r15      # 0x9375
movl $0x13, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x22a0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movq %rbx, %r12
shrq $0x20, %r12
andl $0x1, %r12d
leaq 0x1507(%rip), %rsi      # 0x9389
movl $0xd, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r12, %rsi
callq 0x2190
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r12d
shrl $0x1e, %r12d
leaq 0x14c5(%rip), %rsi      # 0x9397
movl $0xe, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r12, %rsi
callq 0x2190
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r12d
shrl $0x1a, %r12d
andl $0xf, %r12d
leaq 0x1480(%rip), %rsi      # 0x93a6
movl $0xf, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r12, %rsi
callq 0x2190
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r12d
shrl $0x18, %r12d
andl $0x3, %r12d
leaq 0x143c(%rip), %rsi      # 0x93b6
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r12, %rsi
callq 0x2190
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r12d
shrl $0x16, %r12d
andl $0x3, %r12d
leaq 0x13f4(%rip), %rsi      # 0x93c2
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r12, %rsi
callq 0x2190
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r12d
shrl $0x14, %r12d
andl $0x3, %r12d
leaq 0x13ac(%rip), %rsi      # 0x93ce
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r12, %rsi
callq 0x2190
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r12d
shrl $0x12, %r12d
andl $0x3, %r12d
leaq 0x1364(%rip), %rsi      # 0x93da
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r12, %rsi
callq 0x2190
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl $0x13, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x22a0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r15d
shrl $0x11, %r15d
andl $0x1, %r15d
leaq 0x12e5(%rip), %rsi      # 0x93e6
movl $0xd, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r15d
shrl $0xf, %r15d
andl $0x3, %r15d
leaq 0x129f(%rip), %rsi      # 0x93f4
movl $0xe, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r15d
shrl $0xb, %r15d
andl $0xf, %r15d
leaq 0x125a(%rip), %rsi      # 0x9403
movl $0xf, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r15d
shrl $0x9, %r15d
andl $0x3, %r15d
leaq 0x1216(%rip), %rsi      # 0x9413
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r15d
shrl $0x7, %r15d
andl $0x3, %r15d
leaq 0x11ce(%rip), %rsi      # 0x941f
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
movl %ebx, %r15d
shrl $0x5, %r15d
andl $0x3, %r15d
leaq 0x1186(%rip), %rsi      # 0x942b
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x21a0
shrl $0x3, %ebx
andl $0x3, %ebx
leaq 0x1143(%rip), %rsi      # 0x9437
movl $0xb, %edx
movq %r14, %rdi
callq 0x22a0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2190
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x21a0
nop