// File: /workspace/github_cpp_makefile_star2_O3/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 $0xb8, %rsp
movl %esi, 0x44(%rsp)
movq %rdi, %r15
leaq 0xa8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x8d5e(%rip), %rsi      # 0x175fb
leaq 0x8d5e(%rip), %rdx      # 0x17602
leaq 0x98(%rsp), %rbx
movq %rbx, %rdi
callq 0x892e
movq %rbx, %rdi
movl $0x3, %esi
callq 0x4229
movq 0x98(%rsp), %rdi
cmpq %r14, %rdi
je 0xe8de
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3220
movq 0x38(%r15), %r14
movl 0x38(%r14), %ebp
movl $0x40, %edi
callq 0x3210
movq %rax, %r12
xorl %ebx, %ebx
movq %rax, %rdi
movq %r14, 0x90(%rsp)
movq %r14, %rsi
movl %ebp, 0x48(%rsp)
movl %ebp, %edx
xorl %ecx, %ecx
callq 0xe452
movq (%r15), %rax
movq 0x8(%r15), %rcx
movl $0x88, %edx
movq 0x88(%rax), %rsi
movq %rsi, 0x70(%rsp)
addq %rdx, %rax
movq 0x88(%rcx), %rsi
movq %rsi, 0x30(%rsp)
addq %rdx, %rcx
movq 0x10(%r15), %rsi
movq 0x88(%rsi), %rdi
movq %rdi, 0x78(%rsp)
addq %rdx, %rsi
movq 0x18(%r15), %rdi
movq 0x88(%rdi), %r8
movq %r8, 0x50(%rsp)
addq %rdx, %rdi
movq 0x20(%r15), %r8
addq %r8, %rdx
movq 0x88(%r8), %r9
movq 0x28(%r15), %r8
movq %r8, 0x28(%rsp)
movq 0x88(%r8), %r8
movq (%r12), %rbp
movq 0x8(%r12), %r15
movq 0x10(%r12), %r11
movq 0x18(%r12), %r14
movq 0x20(%r12), %r13
movq %r12, 0x88(%rsp)
movq 0x28(%r12), %r10
movq 0x70(%rsp), %r12
movq %r12, 0x80(%rbp)
movq %rbp, 0x88(%r12)
movq 0x30(%rsp), %r12
movq %r12, 0x80(%r15)
movq %r15, 0x88(%r12)
movq 0x78(%rsp), %r12
movq %r12, 0x80(%r11)
movq %r11, 0x30(%rsp)
movq %r11, 0x88(%r12)
movq 0x50(%rsp), %r11
movq %r11, 0x80(%r14)
movq %r14, 0x88(%r11)
movq %r9, 0x80(%r13)
movq %r9, 0x20(%rsp)
movq %r13, 0x88(%r9)
movq %r8, 0x80(%r10)
movq %r10, 0x38(%rsp)
movq %r8, 0x80(%rsp)
movq %r10, 0x88(%r8)
movl %ebx, %r10d
leaq 0x8a91(%rip), %r9       # 0x174c0
movslq (%r9,%r10,4), %r12
addq %r9, %r12
movq %rax, %r10
movq %rbp, %r11
jmpq *%r12
movq %rax, %rbx
movl $0x40, %esi
movq %r12, %rdi
jmp 0xf3c2
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r14, %rdi
je 0xf3c7
movq 0xa8(%rsp), %rsi
incq %rsi
jmp 0xf3c2
movq %rcx, %r10
movq %r15, %r11
jmp 0xea93
movq %rsi, %r10
movq 0x30(%rsp), %r11
jmp 0xea93
movq %rdi, %r10
movq %r14, %r11
jmp 0xea93
movq %rdx, %r10
movq %r13, %r11
movq (%r10), %r10
movl $0x4, 0x70(%r10)
movl $0x5, 0x70(%r11)
incl %ebx
movl %ebx, %r10d
movslq (%r9,%r10,4), %r12
addq %r9, %r12
movq %rax, %r10
movq %rbp, %r11
jmpq *%r12
movq 0x28(%rsp), %rax
movq 0x88(%rax), %rax
movl $0x4, 0x70(%rax)
movq 0x38(%rsp), %rax
movl $0x5, 0x70(%rax)
movzbl 0x44(%rsp), %eax
testb %al, %al
movq 0x20(%rsp), %rbx
cmoveq 0x50(%rsp), %rbx
leal 0x1(%rax), %eax
movl %eax, 0x20(%rsp)
movq %r14, %r12
cmovneq %r13, %r12
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x2, %ecx
movl $0x3, %r8d
callq 0x8860
movq %rbx, %rdi
movq %r12, %rsi
movl 0x20(%rsp), %ebx
movl %ebx, %edx
leaq 0x10(%rsp), %rcx
callq 0xe200
leaq 0x10(%rsp), %r12
movq %r12, %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x2, %ecx
movl $0x3, %r8d
callq 0x8860
movq 0x80(%rsp), %rdi
movq 0x38(%rsp), %rsi
movl %ebx, %edx
movq %r12, %rcx
callq 0xe200
movl $0xc0, %edi
callq 0x3210
movq %rbp, (%rsp)
movq %rax, 0x20(%rsp)
movq %rax, %rdi
movq 0x90(%rsp), %r12
movq %r12, %rsi
movl $0x6, %edx
xorl %ecx, %ecx
movl $0x2, %r8d
movl 0x48(%rsp), %ebx
movl %ebx, %r9d
callq 0xde5c
movl $0xc0, %edi
callq 0x3210
movq %r15, (%rsp)
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
movl $0x6, %edx
xorl %ecx, %ecx
movl $0x2, %r8d
movl %ebx, %r9d
callq 0xde5c
movl $0xc0, %edi
callq 0x3210
movq %rax, %rdi
movq 0x30(%rsp), %rax
movq %rax, (%rsp)
movq %rdi, 0x28(%rsp)
movq %r12, %rsi
movl $0x6, %edx
xorl %ecx, %ecx
movl $0x2, %r8d
movl %ebx, %r9d
callq 0xde5c
movq %r15, 0x68(%rsp)
movl $0xc0, %edi
callq 0x3210
movq %r14, (%rsp)
movq %rax, 0x60(%rsp)
movq %rax, %rdi
movq %r12, %rsi
movl $0x6, %edx
movl $0x2, %ecx
movl $0x2, %r8d
movl %ebx, %r9d
callq 0xde5c
movl $0xc0, %edi
callq 0x3210
movq %r13, (%rsp)
movq %rax, %rdi
movq %rax, 0x58(%rsp)
movq %r12, %rsi
movl $0x6, %edx
movl $0x2, %ecx
movl $0x2, %r8d
movl %ebx, %r9d
callq 0xde5c
movl %ebx, %r13d
movl $0xc0, %edi
callq 0x3210
movq %rax, %rbx
movq 0x38(%rsp), %rax
movq %rax, (%rsp)
movq %rbx, %rdi
movq %r12, %rsi
movl $0x6, %edx
movl $0x2, %ecx
movl $0x2, %r8d
movl %r13d, %r9d
callq 0xde5c
movq %rbx, 0x48(%rsp)
cmpb $0x0, 0x44(%rsp)
je 0xefff
movq 0x28(%rsp), %r13
leaq 0x10(%rsp), %r15
movq %r15, %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x3, %ecx
movl $0x2, %r8d
callq 0x8860
movq 0x20(%rsp), %r12
movq %r12, %rdi
movq 0x68(%rsp), %rbx
movq %rbx, %rsi
movl $0x1, %edx
movq %r15, %rcx
callq 0xe04e
leaq 0x10(%rsp), %r15
movq %r15, %rdi
movl $0x1, %esi
movl $0x2, %edx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x8860
movq %rbx, %rdi
movq %r13, %rsi
movl $0x2, %edx
movq %r15, %rcx
callq 0xe04e
leaq 0x10(%rsp), %r15
movq %r15, %rdi
movl $0x2, %esi
movl $0x3, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8860
movq 0x70(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
movl $0x1, %edx
movq %r15, %rcx
callq 0xe200
leaq 0x10(%rsp), %rdi
movl $0x3, %esi
xorl %edx, %edx
movl $0x2, %ecx
movl $0x1, %r8d
callq 0x8860
movq 0x50(%rsp), %r15
movq %r15, %rdi
movq %r13, %rsi
movl $0x2, %edx
leaq 0x10(%rsp), %rcx
callq 0xe200
leaq 0x10(%rsp), %r13
movq %r13, %rdi
movl $0x2, %esi
movl $0x3, %edx
movl $0x1, %ecx
xorl %r8d, %r8d
callq 0x8860
movq %r12, %rdi
movq %rbx, %rsi
movl $0x2, %edx
movq %r13, %rcx
callq 0xe04e
leaq 0x10(%rsp), %r12
movq %r12, %rdi
movl $0x3, %esi
xorl %edx, %edx
movl $0x1, %ecx
movl $0x2, %r8d
callq 0x8860
movq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl $0x3, %edx
movq %r12, %rcx
callq 0xe04e
leaq 0x10(%rsp), %r15
movq %r15, %rdi
movl $0x1, %esi
movl $0x2, %edx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x8860
movq %rbx, %rdi
movq %rbp, %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
movl $0x2, %edx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x8860
movq 0x28(%rsp), %rdi
movq %r14, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x2, %edx
movl $0x1, %ecx
movl $0x3, %r8d
callq 0x8860
movq 0x60(%rsp), %r12
movq %r12, %rdi
movq 0x58(%rsp), %r13
movq %r13, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8860
movq %r13, %rdi
movq 0x48(%rsp), %rbp
movq %rbp, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x3, %r8d
callq 0x8860
movq 0x78(%rsp), %r15
movq %r15, %rdi
movq %r12, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe200
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
xorl %edx, %edx
movl $0x3, %ecx
movl $0x2, %r8d
callq 0x8860
movq 0x80(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe200
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
movl $0x3, %edx
movl $0x1, %ecx
xorl %r8d, %r8d
callq 0x8860
movq %r12, %rdi
movq %r15, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
xorl %edx, %edx
movl $0x3, %ecx
movl $0x1, %r8d
callq 0x8860
movq %r13, %rdi
movq %r14, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8860
movq %r13, %rdi
movq 0x30(%rsp), %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
xorl %edx, %edx
movl $0x2, %ecx
movl $0x3, %r8d
callq 0x8860
movq %rbp, %rdi
movq 0x38(%rsp), %rsi
movl $0x3, %edx
jmp 0xf34c
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x2, %edx
movl $0x1, %ecx
movl $0x3, %r8d
callq 0x8860
movq 0x20(%rsp), %rdi
movq 0x68(%rsp), %r12
movq %r12, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8860
movq %r12, %rdi
movq 0x28(%rsp), %r15
movq %r15, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x2, %edx
movl $0x3, %ecx
movl $0x1, %r8d
callq 0x8860
movq 0x70(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xe200
leaq 0x10(%rsp), %rdi
movl $0x2, %esi
movl $0x1, %edx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x8860
movq %r15, %rbx
movq 0x50(%rsp), %r15
movq %r15, %rdi
movq 0x20(%rsp), %rsi
movl $0x2, %edx
leaq 0x10(%rsp), %rcx
callq 0xe200
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
movl $0x3, %edx
movl $0x2, %ecx
movl $0x1, %r8d
callq 0x8860
movq %rbx, %rdi
movq %r13, %rsi
movl $0x3, %edx
leaq 0x10(%rsp), %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
movl $0x3, %edx
movl $0x1, %ecx
xorl %r8d, %r8d
callq 0x8860
movq %r12, %rdi
movq %r15, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
movl $0x3, %edx
movl $0x1, %ecx
xorl %r8d, %r8d
callq 0x8860
movq %r12, %rdi
movq %rbp, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8860
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x1, %edx
movl $0x3, %ecx
movl $0x2, %r8d
callq 0x8860
movq 0x60(%rsp), %r12
movq %r12, %rdi
movq 0x58(%rsp), %r13
movq %r13, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
movl $0x2, %edx
movl $0x3, %ecx
xorl %r8d, %r8d
callq 0x8860
movq %r13, %rdi
movq 0x48(%rsp), %rbp
movq %rbp, %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x3, %edx
movl $0x1, %ecx
movl $0x2, %r8d
callq 0x8860
movq 0x78(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe200
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x1, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x3, %r8d
callq 0x8860
movq 0x80(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe200
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
movl $0x3, %edx
movl $0x2, %ecx
movl $0x1, %r8d
callq 0x8860
movq %rbp, %rdi
movq %r15, %rsi
movl $0x1, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x3, %esi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8860
movq %r13, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
movl $0x1, %edx
xorl %ecx, %ecx
movl $0x3, %r8d
callq 0x8860
movq %r13, %rdi
movq 0x30(%rsp), %rsi
movl $0x3, %edx
movq %rbx, %rcx
callq 0xe04e
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %esi
xorl %edx, %edx
movl $0x3, %ecx
movl $0x1, %r8d
callq 0x8860
movq %r12, %rdi
movq 0x38(%rsp), %rsi
movl $0x2, %edx
movq %rbx, %rcx
callq 0xe04e
movq 0x88(%rsp), %rax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
movq %rax, %rbx
movl $0xc0, %esi
jmp 0xf3c2
movq %rax, %rbx
movl $0xc0, %esi
movq 0x58(%rsp), %rdi
jmp 0xf3c2
movq %rax, %rbx
movl $0xc0, %esi
movq 0x60(%rsp), %rdi
jmp 0xf3c2
movq %rax, %rbx
movl $0xc0, %esi
movq 0x28(%rsp), %rdi
jmp 0xf3c2
movq %rax, %rbx
movl $0xc0, %esi
movq %r15, %rdi
jmp 0xf3c2
movq %rax, %rbx
movl $0xc0, %esi
movq 0x20(%rsp), %rdi
callq 0x3220
movq %rbx, %rdi
callq 0x33e0
nop