// File: /workspace/github_cpp_makefile_star2_O3/dadocolussi[P]gdc-circular_queue/src/gdc_circular_queue_factory.hpp
// Function: gdc::circular_queue_factory<unsigned long, gdc::circular_queue<unsigned long>>::create_private(unsigned long, bool, std::function<int (gdc::circular_queue<unsigned long>&)>)
static Q* create_private(
			size_type capacity,
			bool sync,
			mdinit_type metadata_initializer)
		{
			static std::atomic<int> seq(0);
			int unique = seq.fetch_add(1, std::memory_order_relaxed);
			pid_t pid = ::getpid();
			char tmp_name[32];
			std::sprintf(tmp_name, "/.gdcq.%d.%d", pid, unique);
			create_shared(tmp_name, capacity, sync, metadata_initializer);
			Q* q = nullptr;

			try
			{
				q = map_shared(tmp_name);
			}
			catch (const circular_queue_error& ex)
			{
				delete_shared(tmp_name);
				throw;
			}

			try
			{
				delete_shared(tmp_name);
			}
			catch (const circular_queue_error& ex)
			{
				unmap_shared(q);
				delete_shared(tmp_name);
				throw;
			}

			return q;
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %rbx
movl $0x1, %r15d
lock
xaddl %r15d, 0x36d5(%rip)     # 0x71d0
callq 0x2220
leaq 0x963(%rip), %rsi       # 0x446a
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movl %eax, %edx
movl %r15d, %ecx
xorl %eax, %eax
callq 0x2050
leaq 0x10(%rsp), %r13
movq %r13, -0x10(%r13)
movq %r12, %rdi
callq 0x20c0
leaq (%rsp,%rax), %rdx
addq $0x20, %rdx
movq %rsp, %rdi
movq %r12, %rsi
callq 0x2bca
leaq 0x48(%rsp), %rdi
movq %r14, %rsi
callq 0x2e48
movzbl %bpl, %edx
movq %rsp, %rdi
leaq 0x48(%rsp), %rcx
movq %rbx, %rsi
callq 0x300e
movq 0x58(%rsp), %rax
testq %rax, %rax
je 0x3b79
leaq 0x48(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x3b8f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
movq %rsp, %rbx
movq %r13, (%rbx)
leaq 0x20(%rsp), %r14
movq %r14, %rdi
callq 0x20c0
leaq (%rsp,%rax), %rdx
addq $0x20, %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2bca
movq %rsp, %rdi
callq 0x343a
movq %rax, %r14
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x3bd6
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
movq %rsp, %rbx
movq %r13, (%rbx)
leaq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0x20c0
leaq (%rsp,%rax), %rdx
addq $0x20, %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2bca
movq %rsp, %rdi
callq 0x2cf8
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x3c1a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
movq %r14, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3dad
movq %rdx, %r15
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x3c55
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
jmp 0x3c55
movq %rdx, %r15
movq %rax, %rbx
cmpl $0x2, %r15d
jne 0x3dd3
movq %rbx, %rdi
callq 0x20b0
movq %r14, %rdi
callq 0x39ee
movq %rsp, %rbx
movq %r13, (%rbx)
leaq 0x20(%rsp), %r14
movq %r14, %rdi
callq 0x20c0
leaq (%rsp,%rax), %rdx
addq $0x20, %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2bca
movq %rsp, %rdi
callq 0x2cf8
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x3cb3
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
callq 0x2210
jmp 0x3d66
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x3cdd
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
jmp 0x3cdd
jmp 0x3cda
movq %rax, %rbx
callq 0x2250
jmp 0x3dd3
movq %rdx, %r14
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x3d0b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
jmp 0x3d0b
movq %rdx, %r14
movq %rax, %rbx
cmpl $0x2, %r14d
jne 0x3dd3
movq %rbx, %rdi
callq 0x20b0
movq %rsp, %rbx
movq %r13, (%rbx)
leaq 0x20(%rsp), %r14
movq %r14, %rdi
callq 0x20c0
leaq (%rsp,%rax), %rdx
addq $0x20, %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2bca
movq %rsp, %rdi
callq 0x2cf8
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x3d61
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
callq 0x2210
jmp 0x3d83
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x3d86
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
jmp 0x3d86
movq %rax, %rbx
callq 0x2250
jmp 0x3dd3
jmp 0x3dad
movq %rax, %rbx
movq 0x58(%rsp), %rax
testq %rax, %rax
je 0x3db8
leaq 0x48(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3db8
movq %rax, %rdi
callq 0x2bbf
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x3dd3
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
jmp 0x3dd3
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2280
nop