// File: 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
movq %rsp, %rbp
subq $0x1d0, %rsp            # imm = 0x1D0
movq %rdx, -0x188(%rbp)
movb %sil, %al
movq %rdi, -0x20(%rbp)
andb $0x1, %al
movb %al, -0x21(%rbp)
movq %rdx, -0x30(%rbp)
leaq 0x5bef(%rip), %rax      # 0xb228
movq %rax, -0x8(%rbp)
movl $0x1, -0xc(%rbp)
movl $0x0, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x180(%rbp)
movl -0x10(%rbp), %eax
movl -0xc(%rbp), %ecx
movl %ecx, -0x14(%rbp)
decl %eax
movl %eax, %ecx
movq %rcx, -0x178(%rbp)
subl $0x4, %eax
ja 0x5686
movq -0x178(%rbp), %rax
leaq 0x19ab(%rip), %rcx      # 0x7028
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x180(%rbp), %rcx
movl -0x14(%rbp), %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x18(%rbp)
jmp 0x56e3
movq -0x180(%rbp), %rcx
movl -0x14(%rbp), %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x18(%rbp)
jmp 0x56e3
movq -0x180(%rbp), %rcx
movl -0x14(%rbp), %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x18(%rbp)
jmp 0x56e3
movq -0x180(%rbp), %rcx
movl -0x14(%rbp), %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x18(%rbp)
jmp 0x56e3
movq -0x180(%rbp), %rcx
movl -0x14(%rbp), %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movl %eax, -0x34(%rbp)
callq 0x22a0
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %edx
movl -0x34(%rbp), %ecx
leaq 0x1db2(%rip), %rsi      # 0x74b0
xorl %eax, %eax
leaq -0x60(%rbp), %rdi
movq %rdi, -0x198(%rbp)
callq 0x2050
leaq -0x81(%rbp), %rdi
movq %rdi, -0x190(%rbp)
callq 0x2320
movq -0x198(%rbp), %rsi
movq -0x190(%rbp), %rdx
leaq -0x80(%rbp), %rdi
callq 0x2b00
jmp 0x573c
movq -0x188(%rbp), %rsi
movq -0x20(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movb -0x21(%rbp), %al
movb %al, -0x199(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x4060
jmp 0x5765
movq -0x1a8(%rbp), %rsi
movb -0x199(%rbp), %al
movzbl %al, %edx
andl $0x1, %edx
leaq -0x80(%rbp), %rdi
leaq -0xb8(%rbp), %rcx
callq 0x43f0
jmp 0x578a
leaq -0xb8(%rbp), %rdi
callq 0x2de0
leaq -0x80(%rbp), %rdi
callq 0x2130
leaq -0x81(%rbp), %rdi
callq 0x2210
movq $0x0, -0xc0(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x2320
movq -0x1b0(%rbp), %rdx
leaq -0xe0(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x2b00
jmp 0x57e2
leaq -0xe0(%rbp), %rdi
callq 0x4b60
movq %rax, -0x1b8(%rbp)
jmp 0x57f7
movq -0x1b8(%rbp), %rax
movq %rax, -0xc0(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x2130
leaq -0xe1(%rbp), %rdi
callq 0x2210
jmp 0x59a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5871
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5868
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x2de0
leaq -0x80(%rbp), %rdi
callq 0x2130
leaq -0x81(%rbp), %rdi
callq 0x2210
jmp 0x5b2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x58b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x2130
leaq -0xe1(%rbp), %rdi
callq 0x2210
movl -0x94(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x5b2d
movq -0x90(%rbp), %rdi
callq 0x20c0
movq %rax, -0xf0(%rbp)
leaq -0x111(%rbp), %rdi
movq %rdi, -0x1c0(%rbp)
callq 0x2320
movq -0x1c0(%rbp), %rdx
leaq -0x110(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x2b00
jmp 0x5912
leaq -0x110(%rbp), %rdi
callq 0x3920
jmp 0x5920
leaq -0x110(%rbp), %rdi
callq 0x2130
leaq -0x111(%rbp), %rdi
callq 0x2210
callq 0x2290
jmp 0x5b41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5974
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x2130
leaq -0x111(%rbp), %rdi
callq 0x2210
jmp 0x5994
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
callq 0x22d0
jmp 0x599b
jmp 0x5b2d
leaq -0x139(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x2320
movq -0x1c8(%rbp), %rdx
leaq -0x138(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x2b00
jmp 0x59cc
leaq -0x138(%rbp), %rdi
callq 0x3920
jmp 0x59da
leaq -0x138(%rbp), %rdi
callq 0x2130
leaq -0x139(%rbp), %rdi
callq 0x2210
jmp 0x5b1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5a29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x2130
leaq -0x139(%rbp), %rdi
callq 0x2210
movl -0x94(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x5b2d
movq -0x90(%rbp), %rdi
callq 0x20c0
movq %rax, -0x148(%rbp)
movq -0xc0(%rbp), %rdi
callq 0x54c0
jmp 0x5a69
leaq -0x169(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x2320
movq -0x1d0(%rbp), %rdx
leaq -0x168(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x2b00
jmp 0x5a95
leaq -0x168(%rbp), %rdi
callq 0x3920
jmp 0x5aa3
leaq -0x168(%rbp), %rdi
callq 0x2130
leaq -0x169(%rbp), %rdi
callq 0x2210
callq 0x2290
jmp 0x5b41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5b14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5b08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x2130
leaq -0x169(%rbp), %rdi
callq 0x2210
callq 0x22d0
jmp 0x5b1b
jmp 0x5b2d
movq -0xc0(%rbp), %rax
addq $0x1d0, %rsp            # imm = 0x1D0
popq %rbp
retq
movq -0x90(%rbp), %rdi
callq 0x2310
movq %rax, %rdi
callq 0x3440
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)