// File: /workspace/github_cpp_makefile_star2_O1/MarkCBell[P]twister/./twister/kernel/twister.cpp
// Function: convert_cube_to_gadget(cube*, bool)
cube *convert_cube_to_gadget(cube *C, bool upright)
{
	output_debugging("convert", 3);
	
	manifold *M = C->home;
	int layer_number = M->get_num_layers();  // We will need this a lot, so better remember it.
	
	cube *C2 = new cube(*M, layer_number);
	
	tetra *topleft = C->get_tetra(top, left)->get_child();
	tetra *midleft = C->get_tetra(mid, left)->get_child();
	tetra *lowleft = C->get_tetra(low, left)->get_child();
	tetra *topright = C->get_tetra(top, right)->get_child();
	tetra *midright = C->get_tetra(mid, right)->get_child();
	tetra *lowright = C->get_tetra(low, right)->get_child();
	
	tetra *topleft2 = C2->get_tetra(top, left);
	tetra *midleft2 = C2->get_tetra(mid, left);
	tetra *lowleft2 = C2->get_tetra(low, left);
	tetra *topright2 = C2->get_tetra(top, right);
	tetra *midright2 = C2->get_tetra(mid, right);
	tetra *lowright2 = C2->get_tetra(low, right);
	
	topleft2->set_parent(topleft);
	midleft2->set_parent(midleft);
	lowleft2->set_parent(lowleft);
	topright2->set_parent(topright);
	midright2->set_parent(midright);
	lowright2->set_parent(lowright);
	
	for (int i = 0; i < 6; i++)
	{
		C->get_tetra(i)->get_child()->set_category(gadget_left);  // Remember, the old pieces are now part of the gadget too.
		C2->get_tetra(i)->set_category(gadget_right);  // Remember, the new pieces are now part of the gadget too.
	}
	
	// Subbedby the RHS of the duplicant in.
	int toglue = (upright) ? 2 : 1;  // Which face is on the right depends on the orientation.
	tetra *side_tetra = (upright) ? midright : topright;
	tetra *side_tetra2 = (upright) ? midright2 : topright2;
	side_tetra->subbedby(side_tetra2, toglue, perm(0,1,2,3));
	
	side_tetra = (upright) ? lowright : lowright;
	side_tetra2 = (upright) ? lowright2 : lowright2;
	side_tetra->subbedby(side_tetra2, toglue, perm(0,1,2,3));
	
	// These will form the gadget_pups above & below.
	tetra *newfront = new tetra(M, gadget_pup, top, neither, layer_number, topleft2);
	tetra *newmid = new tetra(M, gadget_pup, top, neither, layer_number, midleft2);
	tetra *newback = new tetra(M, gadget_pup, top, neither, layer_number, lowleft2);
	tetra *newfront2 = new tetra(M, gadget_pup, low, neither, layer_number, topright2);
	tetra *newmid2 = new tetra(M, gadget_pup, low, neither, layer_number, midright2);
	tetra *newback2 = new tetra(M, gadget_pup, low, neither, layer_number, lowright2);
	
	/*
	---================= Travellers Beware ==================---
	---=== You are now entering the Land of Hard - Coding ===---
	
	Over the next 100 lines or so we will build and insert the 
	upper and lower pup-gadgets. These individually hand 
	crafted pup-gadgets have 32+ hard-coded gluings and permutations.
	
	Due to its extreme nature, this ride is NOT suitable for 
	guests with heart conditions, vertigo or high blood pressure.
	
	Please keep your arms and legs inside the vehicle at ALL times.
	---================ You have been warned =================---
	*/
	
	// Pup-gadgets have been designed this way for a good reason. See (*1*).
	if (upright)
	{
		// First the upper gadget_pup.
		
		// Glue up the gadget pup.
		newfront->gluesym(newmid, 1, perm(0,1,3,2));
		newmid->gluesym(newback, 2, perm(1,2,3,0));
		
		// Subbedby the gadget pup into the top.
		topleft->subbedby(newfront, 1, perm(2,3,0,1));
		topright->subbedby(newback, 2, perm(3,0,2,1));
		
		// Glue down gadget pup left side (it's a good job that subbedby gave us some free faces).
		newfront->gluesym(topleft, 2, perm(2,3,1,0));
		newmid->gluesym(topright, 3, perm(3,0,1,2));
		
		// Glue down gadget pup right side.
		newmid->gluesym(topleft2, 0, perm(1,2,3,0));
		newback->gluesym(topright2, 1, perm(1,2,3,0));
		
		// Now for the bottom gadget_pup.
		
		// Glue up the gadget pup.
		newfront2->gluesym(newmid2, 2, perm(0,2,1,3));
		newmid2->gluesym(newback2, 3, perm(3,2,0,1));
		
		// Subbedby the gadget pup into the bottom.
		lowleft->subbedby(newfront2, 3, perm(1,2,0,3));
		lowright->subbedby(newback2, 3, perm(1,0,3,2));
		
		// Glue down gadget pup left side (it's a good job that subbedby gave us some free faces).
		newfront2->gluesym(lowleft, 1, perm(2,3,1,0));
		newmid2->gluesym(lowright, 2, perm(2,0,3,1));
		
		// Glue down gadget pup right side.
		newmid2->gluesym(lowleft2, 0, perm(3,2,0,1));
		newback2->gluesym(lowright2, 3, perm(1,0,2,3));
	}
	else
	{
		// First the upper gadget_pup.
		
		// Glue up the gadget pup.
		newfront->gluesym(newmid, 2, perm(0,2,1,3));
		newmid->gluesym(newback, 3, perm(3,2,0,1));
		
		// Subbedby the gadget pup into the top.
		topleft->subbedby(newback, 1, perm(0,2,3,1));
		topright->subbedby(newfront, 2, perm(2,1,3,0));
		
		// Glue down gadget pup left side (it's a good job that subbedby gave us some free faces).
		newback->gluesym(topleft, 3, perm(0,3,2,1));
		newmid->gluesym(topright, 0, perm(2,3,1,0));
		
		// Glue down gadget pup right side.
		newmid->gluesym(topleft2, 2, perm(2,3,1,0));
		newfront->gluesym(topright2, 1, perm(3,2,0,1));
		
		// Now for the bottom gadget_pup.
		
		// Glue up the gadget pup.
		newfront2->gluesym(newmid2, 1, perm(0,1,3,2));
		newmid2->gluesym(newback2, 2, perm(1,2,3,0));
		
		// Subbedby the gadget pup into the bottom.
		lowleft->subbedby(newback2, 3, perm(0,3,1,2));
		lowright->subbedby(newfront2, 3, perm(1,2,0,3));
		
		// Glue down gadget pup left side (it's a good job that subbedby gave us some free faces).
		newback2->gluesym(lowleft, 1, perm(0,3,2,1));
		newmid2->gluesym(lowright, 0, perm(3,2,0,1));
		
		// Glue down gadget pup right side.
		newmid2->gluesym(lowleft2, 3, perm(2,1,0,3));
		newfront2->gluesym(lowright2, 2, perm(2,0,3,1));
	}
	
	/*
	---=== You are now leaving the Land of Hard - Coding ===---
		 Please ensure you have all your belongings with you.
				We hope you enjoyed your stay.
	*/
	
	return C2;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movl %esi, 0x44(%rsp)
movq %rdi, %r14
leaq 0x98(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x8e8d(%rip), %rsi      # 0x175bb
leaq 0x8e8d(%rip), %rdx      # 0x175c2
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
callq 0x86fe
movq %rbx, %rdi
movl $0x3, %esi
callq 0x4209
movq 0x88(%rsp), %rdi
cmpq %r15, %rdi
je 0xe76f
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x38(%r14), %r12
movl 0x38(%r12), %r15d
movl $0x40, %edi
callq 0x3210
movq %rax, %rbp
xorl %ebx, %ebx
movq %rax, %rdi
movq %r12, 0x48(%rsp)
movq %r12, %rsi
movl %r15d, 0x50(%rsp)
movl %r15d, %edx
xorl %ecx, %ecx
callq 0xe2a6
movq (%r14), %rax
movq %rax, 0x30(%rsp)
movq 0x8(%r14), %rcx
movq %rcx, 0x28(%rsp)
movq 0x88(%rax), %rsi
movq 0x88(%rcx), %rax
movq %rax, 0x20(%rsp)
movq 0x10(%r14), %r9
movq 0x88(%r9), %rcx
movq 0x18(%r14), %rax
movq %rax, 0x38(%rsp)
movq 0x88(%rax), %rdx
movq 0x20(%r14), %r8
movq 0x88(%r8), %rdi
movq 0x28(%r14), %rax
movq %rax, 0x18(%rsp)
movq 0x88(%rax), %rax
movq (%rbp), %r13
movq 0x8(%rbp), %r15
movq 0x10(%rbp), %r11
movq 0x18(%rbp), %r12
movq 0x20(%rbp), %r14
movq %rbp, 0x80(%rsp)
movq 0x28(%rbp), %r10
movq %rsi, 0x80(%r13)
movq %rsi, 0x70(%rsp)
movq %r13, 0x88(%rsi)
movq %r9, %rsi
movq 0x20(%rsp), %r9
movq %r9, 0x80(%r15)
movq %r15, 0x88(%r9)
movq %rcx, 0x80(%r11)
movq %r11, 0x58(%rsp)
movq %rcx, 0x78(%rsp)
movq %r11, 0x88(%rcx)
movq %rdx, 0x80(%r12)
movq %rdx, 0x60(%rsp)
movq %r12, 0x88(%rdx)
movq 0x28(%rsp), %rdx
movq %rdi, 0x80(%r14)
movq %rdi, %rcx
movq %r14, 0x88(%rdi)
movq 0x38(%rsp), %rdi
movq %rax, 0x80(%r10)
movq %r10, 0x20(%rsp)
movq %rax, 0x68(%rsp)
movq %r10, 0x88(%rax)
movq 0x30(%rsp), %rax
movl %ebx, %r10d
leaq 0x8bbe(%rip), %r9       # 0x17470
movslq (%r9,%r10,4), %r10
addq %r9, %r10
jmpq *%r10
movq %rax, %rbx
movl $0x40, %esi
movq %rbp, %rdi
jmp 0xf2e2
movq %rax, %rbx
movq 0x88(%rsp), %rdi
cmpq %r15, %rdi
je 0xf2e7
movq 0x98(%rsp), %rsi
incq %rsi
jmp 0xf2e2
movl %ebx, %r10d
movslq (%r9,%r10,4), %r10
addq %r9, %r10
jmpq *%r10
movq 0x88(%rax), %r10
movl $0x4, 0x70(%r10)
movl %ebx, %r10d
leaq 0x8b72(%rip), %r11      # 0x17488
movslq (%r11,%r10,4), %rbp
addq %r11, %rbp
movq %r13, %r10
jmpq *%rbp
movq 0x18(%rsp), %r10
movq 0x88(%r10), %r10
movl $0x4, 0x70(%r10)
movl %ebx, %r10d
leaq 0x8b48(%rip), %r11      # 0x17488
movslq (%r11,%r10,4), %rbp
addq %r11, %rbp
movq %r13, %r10
jmpq *%rbp
movq 0x88(%rdi), %r10
movl $0x4, 0x70(%r10)
movl %ebx, %r10d
leaq 0x8b23(%rip), %r11      # 0x17488
movslq (%r11,%r10,4), %rbp
addq %r11, %rbp
movq %r13, %r10
jmpq *%rbp
movq 0x88(%r8), %r10
movl $0x4, 0x70(%r10)
movl %ebx, %r10d
leaq 0x8afe(%rip), %r11      # 0x17488
movslq (%r11,%r10,4), %rbp
addq %r11, %rbp
movq %r13, %r10
jmpq *%rbp
movq 0x88(%rdx), %r10
movl $0x4, 0x70(%r10)
movl %ebx, %r10d
leaq 0x8ad9(%rip), %r11      # 0x17488
movslq (%r11,%r10,4), %rbp
addq %r11, %rbp
movq %r13, %r10
jmpq *%rbp
movq 0x88(%rsi), %r10
movl $0x4, 0x70(%r10)
movl %ebx, %r10d
leaq 0x8ab4(%rip), %r11      # 0x17488
movslq (%r11,%r10,4), %rbp
addq %r11, %rbp
movq %r13, %r10
jmpq *%rbp
movq %r15, %r10
jmp 0xe9fb
movq 0x20(%rsp), %r10
jmp 0xe9fb
movq %r12, %r10
jmp 0xe9fb
movq %r14, %r10
jmp 0xe9fb
movq 0x58(%rsp), %r10
movl $0x5, 0x70(%r10)
incl %ebx
cmpl $0x6, %ebx
jne 0xe8f0
movzbl 0x44(%rsp), %eax
testb %al, %al
movq %rcx, %rbx
cmoveq 0x60(%rsp), %rbx
leal 0x1(%rax), %eax
movl %eax, 0x18(%rsp)
movq %r12, %rbp
cmovneq %r14, %rbp
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x2, %ecx
movl $0x3, %r8d
callq 0x8630
movq %rbx, %rdi
movq %rbp, %rsi
movl 0x18(%rsp), %ebx
movl %ebx, %edx
leaq 0x8(%rsp), %rcx
callq 0xe02c
leaq 0x8(%rsp), %rbp
movq %rbp, %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x2, %ecx
movl $0x3, %r8d
callq 0x8630
movq 0x68(%rsp), %rdi
movq 0x20(%rsp), %rsi
movl %ebx, %edx
movq %rbp, %rcx
callq 0xe02c
movl $0xc0, %edi
callq 0x3210
movq %r13, (%rsp)
movq %rax, 0x18(%rsp)
movq %rax, %rdi
movq 0x48(%rsp), %rbp
movq %rbp, %rsi
movl $0x6, %edx
xorl %ecx, %ecx
movl $0x2, %r8d
movl 0x50(%rsp), %ebx
movl %ebx, %r9d
callq 0xdc7c
movl $0xc0, %edi
callq 0x3210
movq %r15, (%rsp)
movq %rax, 0x30(%rsp)
movq %rax, %rdi
movq %rbp, %rsi
movl $0x6, %edx
xorl %ecx, %ecx
movl $0x2, %r8d
movl %ebx, %r9d
callq 0xdc7c
movl $0xc0, %edi
callq 0x3210
movq %rax, %rdi
movq 0x58(%rsp), %rax
movq %rax, (%rsp)
movq %rdi, 0x28(%rsp)
movq %rbp, %rsi
movl $0x6, %edx
xorl %ecx, %ecx
movl $0x2, %r8d
movl %ebx, %r9d
callq 0xdc7c
movl $0xc0, %edi
callq 0x3210
movq %r12, (%rsp)
movq %rax, 0x38(%rsp)
movq %rax, %rdi
movq %rbp, %rsi
movl $0x6, %edx
movl $0x2, %ecx
movl $0x2, %r8d
movl %ebx, %r9d
callq 0xdc7c
movl $0xc0, %edi
callq 0x3210
movq %rax, %r15
movq %r14, (%rsp)
movq %rax, %rdi
movq %rbp, %rsi
movl $0x6, %edx
movl $0x2, %ecx
movl $0x2, %r8d
movl %ebx, %r9d
callq 0xdc7c
movl $0xc0, %edi
callq 0x3210
movq %rax, %r14
movq 0x20(%rsp), %rax
movq %rax, (%rsp)
movq %r14, %rdi
movq %rbp, %rsi
movl $0x6, %edx
movl $0x2, %ecx
movl $0x2, %r8d
movl %ebx, %r9d
callq 0xdc7c
movq %r14, 0x48(%rsp)
movq %r15, 0x50(%rsp)
cmpb $0x0, 0x44(%rsp)
je 0xef25
leaq 0x8(%rsp), %r14
movq %r14, %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x3, %ecx
movl $0x2, %r8d
callq 0x8630
movq 0x18(%rsp), %rbp
movq %rbp, %rdi
movq 0x30(%rsp), %rbx
movq %rbx, %rsi
movl $0x1, %edx
movq %r14, %rcx
callq 0xde78
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movl $0x1, %esi
movl $0x2, %edx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x8630
movq %rbx, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movl $0x2, %edx
movq %r14, %rcx
callq 0xde78
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movl $0x2, %esi
movl $0x3, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8630
movq 0x70(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
movl $0x1, %edx
movq %r14, %rcx
callq 0xe02c
leaq 0x8(%rsp), %rdi
movl $0x3, %esi
xorl %edx, %edx
movl $0x2, %ecx
movl $0x1, %r8d
callq 0x8630
movq 0x60(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movl $0x2, %edx
leaq 0x8(%rsp), %rcx
callq 0xe02c
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
movl $0x3, %edx
movl $0x1, %ecx
xorl %r8d, %r8d
callq 0x8630
movq %rbp, %rdi
movq %r15, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %r15
movq %r15, %rdi
movl $0x3, %esi
xorl %edx, %edx
movl $0x1, %ecx
movl $0x2, %r8d
callq 0x8630
movq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movl $0x3, %edx
movq %r15, %rcx
callq 0xde78
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movl $0x1, %esi
movl $0x2, %edx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x8630
movq %rbx, %rdi
movq %r13, %rsi
xorl %edx, %edx
movq %r14, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
movl $0x2, %edx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x8630
movq 0x28(%rsp), %rdi
movq %r12, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x2, %edx
movl $0x1, %ecx
movl $0x3, %r8d
callq 0x8630
movq 0x38(%rsp), %rbp
movq %rbp, %rdi
movq 0x50(%rsp), %r13
movq %r13, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8630
movq %r13, %rdi
movq 0x48(%rsp), %r15
movq %r15, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x3, %r8d
callq 0x8630
movq 0x78(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe02c
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
xorl %edx, %edx
movl $0x3, %ecx
movl $0x2, %r8d
callq 0x8630
movq 0x68(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe02c
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
movl $0x3, %edx
movl $0x1, %ecx
xorl %r8d, %r8d
callq 0x8630
movq %rbp, %rdi
movq %r12, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
xorl %edx, %edx
movl $0x3, %ecx
movl $0x1, %r8d
callq 0x8630
movq %r13, %rdi
movq %r14, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8630
movq %r13, %rdi
movq 0x58(%rsp), %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
xorl %edx, %edx
movl $0x2, %ecx
movl $0x3, %r8d
callq 0x8630
movq %r15, %rdi
movq 0x20(%rsp), %rsi
movl $0x3, %edx
jmp 0xf26c
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x2, %edx
movl $0x1, %ecx
movl $0x3, %r8d
callq 0x8630
movq 0x18(%rsp), %rdi
movq 0x30(%rsp), %rbp
movq %rbp, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movl $0x3, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8630
movq %rbp, %rdi
movq 0x28(%rsp), %rbx
movq %rbx, %rsi
movl $0x3, %edx
movq %r14, %rcx
callq 0xde78
leaq 0x8(%rsp), %r14
movq %r14, %rdi
xorl %esi, %esi
movl $0x2, %edx
movl $0x3, %ecx
movl $0x1, %r8d
callq 0x8630
movq 0x70(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movl $0x1, %edx
movq %r14, %rcx
callq 0xe02c
leaq 0x8(%rsp), %rdi
movl $0x2, %esi
movl $0x1, %edx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x8630
movq 0x60(%rsp), %r14
movq %r14, %rdi
movq 0x18(%rsp), %rsi
movl $0x2, %edx
leaq 0x8(%rsp), %rcx
callq 0xe02c
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
movl $0x3, %edx
movl $0x2, %ecx
movl $0x1, %r8d
callq 0x8630
movq %rbx, %rdi
movq %r15, %rsi
movl $0x3, %edx
leaq 0x8(%rsp), %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
movl $0x3, %edx
movl $0x1, %ecx
xorl %r8d, %r8d
callq 0x8630
movq %rbp, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
movl $0x3, %edx
movl $0x1, %ecx
xorl %r8d, %r8d
callq 0x8630
movq %rbp, %rdi
movq %r13, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8630
movq 0x18(%rsp), %rdi
movq %r12, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x3, %ecx
movl $0x2, %r8d
callq 0x8630
movq 0x38(%rsp), %rbp
movq %rbp, %rdi
movq 0x50(%rsp), %r13
movq %r13, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
movl $0x2, %edx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x8630
movq %r13, %rdi
movq 0x48(%rsp), %r15
movq %r15, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x3, %edx
movl $0x1, %ecx
movl $0x2, %r8d
callq 0x8630
movq 0x78(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe02c
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x3, %r8d
callq 0x8630
movq 0x68(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe02c
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x3, %edx
movl $0x2, %ecx
movl $0x1, %r8d
callq 0x8630
movq %r15, %rdi
movq %r12, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8630
movq %r13, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
movl $0x1, %edx
xorl %ecx, %ecx
movl $0x3, %r8d
callq 0x8630
movq %r13, %rdi
movq 0x58(%rsp), %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xde78
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
xorl %edx, %edx
movl $0x3, %ecx
movl $0x1, %r8d
callq 0x8630
movq %rbp, %rdi
movq 0x20(%rsp), %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xde78
movq 0x80(%rsp), %rax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movl $0xc0, %esi
movq %r14, %rdi
jmp 0xf2e2
movq %rax, %rbx
movl $0xc0, %esi
movq %r15, %rdi
jmp 0xf2e2
movq %rax, %rbx
movl $0xc0, %esi
movq 0x38(%rsp), %rdi
jmp 0xf2e2
movq %rax, %rbx
movl $0xc0, %esi
movq 0x28(%rsp), %rdi
jmp 0xf2e2
movq %rax, %rbx
movl $0xc0, %esi
movq 0x30(%rsp), %rdi
jmp 0xf2e2
movq %rax, %rbx
movl $0xc0, %esi
movq 0x18(%rsp), %rdi
callq 0x3220
movq %rbx, %rdi
callq 0x33e0
nop