// File: /workspace/github_cpp_makefile_star2_O3/menhits[P]phplus/src/Namespace.cpp
// Function: NamespaceData::addVar(std::shared_ptr<TypeBase>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Action NamespaceData::addVar(Type type, string name)
{
	size_t offset=stackFrame->getSize();
	stackFrame->addMember(type);
	
	Action getAction;
	Action setAction;
	Action copyAction;
	
	Namespace top=shared_from_this();
	
	while(top->parent)
	{
		top=top->parent;
	}
	
	if (stackFrame!=top->stackFrame)
	{
		getAction=varGetAction(offset, type, name);
		setAction=varSetAction(offset, type, name);
	}
	else
	{
		getAction=globalGetAction(offset, type, name);
		setAction=globalSetAction(offset, type, name);
	}
	
	copyAction=getCopier(type);
	
	if (copyAction)
	{
		dynamicActions.add(name, AstActionWrapper::make(branchAction(voidAction, copyAction, getAction)));
	}
	else
	{
		dynamicActions.add(name, AstActionWrapper::make(getAction));
	}
	
	dynamicActions.add(name, AstActionWrapper::make(setAction));
	
	Action destructor=getDestroyer(type);
	
	if (destructor)
	{
		destructorActions.push_back(branchAction(voidAction, destructor, getAction));
	}
	
	return setAction;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x248, %rsp            # imm = 0x248
movq %rcx, %rbp
movq %rdx, %r13
movq %rsi, %r15
movq %rdi, 0x20(%rsp)
movq 0x40(%rsi), %rdi
movq 0x18(%rdi), %rbx
movq (%rdx), %rax
movq %rax, 0x138(%rsp)
movq 0x8(%rdx), %rax
movq %rax, 0x140(%rsp)
testq %rax, %rax
je 0x2342c
movq 0x76b8a(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x23428
incl 0x8(%rax)
jmp 0x2342c
lock
incl 0x8(%rax)
leaq 0x138(%rsp), %rsi
callq 0x53278
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0x2344b
callq 0xdce4
xorps %xmm0, %xmm0
movq 0x20(%rsp), %rax
movups %xmm0, (%rax)
leaq 0x48(%rsp), %rdi
movq %r15, %rsi
callq 0x26b46
movq 0x48(%rsp), %rsi
movq 0x30(%rsi), %rax
testq %rax, %rax
je 0x23495
leaq 0x50(%rsp), %r14
movq %rax, 0x48(%rsp)
addq $0x38, %rsi
movq %r14, %rdi
callq 0xdea2
movq 0x48(%rsp), %rsi
movq 0x30(%rsi), %rax
testq %rax, %rax
jne 0x23476
movq 0x40(%r15), %rax
cmpq 0x40(%rsi), %rax
je 0x234cd
movq (%r13), %rax
movq %rax, 0x128(%rsp)
movq 0x8(%r13), %rax
movq %rax, 0x130(%rsp)
testq %rax, %rax
je 0x2350a
movq 0x76ae5(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x23506
incl 0x8(%rax)
jmp 0x2350a
movq (%r13), %rax
movq %rax, 0x108(%rsp)
movq 0x8(%r13), %rax
movq %rax, 0x110(%rsp)
testq %rax, %rax
je 0x23648
movq 0x76ab3(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x23644
incl 0x8(%rax)
jmp 0x23648
lock
incl 0x8(%rax)
leaq 0x238(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
addq %rsi, %rdx
leaq 0x228(%rsp), %rdi
callq 0xde0c
movq %rsp, %rdi
leaq 0x128(%rsp), %rdx
leaq 0x228(%rsp), %rcx
movq %rbx, %rsi
callq 0x6d3cc
movq (%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x8(%rsp), %r14
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0x23571
callq 0xa2b0
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x23583
callq 0xdce4
movq (%r13), %rax
movq %rax, 0x118(%rsp)
movq 0x8(%r13), %rax
movq %rax, 0x120(%rsp)
testq %rax, %rax
je 0x235b5
movq 0x76a01(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x235b1
incl 0x8(%rax)
jmp 0x235b5
lock
incl 0x8(%rax)
leaq 0x218(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
addq %rsi, %rdx
leaq 0x208(%rsp), %rdi
callq 0xde0c
movq %rsp, %rdi
leaq 0x118(%rsp), %rdx
leaq 0x208(%rsp), %rcx
movq %rbx, %rsi
callq 0x6d4dc
movaps (%rsp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
movups %xmm0, (%rax)
testq %rdi, %rdi
je 0x23625
callq 0xdce4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x23625
callq 0xdce4
movq 0x208(%rsp), %rdi
cmpq %r12, %rdi
je 0x23637
callq 0xa2b0
movq 0x120(%rsp), %rdi
jmp 0x2377d
lock
incl 0x8(%rax)
leaq 0x1f8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
addq %rsi, %rdx
leaq 0x1e8(%rsp), %rdi
callq 0xde0c
movq %rsp, %rdi
leaq 0x108(%rsp), %rdx
leaq 0x1e8(%rsp), %rcx
movq %rbx, %rsi
callq 0x6d5ec
movq (%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x8(%rsp), %r14
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
movq 0x1e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x236af
callq 0xa2b0
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
je 0x236c1
callq 0xdce4
movq (%r13), %rax
movq %rax, 0xf8(%rsp)
movq 0x8(%r13), %rax
movq %rax, 0x100(%rsp)
testq %rax, %rax
je 0x236f3
movq 0x768c3(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x236ef
incl 0x8(%rax)
jmp 0x236f3
lock
incl 0x8(%rax)
leaq 0x1d8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
addq %rsi, %rdx
leaq 0x1c8(%rsp), %rdi
callq 0xde0c
movq %rsp, %rdi
leaq 0xf8(%rsp), %rdx
leaq 0x1c8(%rsp), %rcx
movq %rbx, %rsi
callq 0x6d6fc
movaps (%rsp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
movups %xmm0, (%rax)
testq %rdi, %rdi
je 0x23763
callq 0xdce4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x23763
callq 0xdce4
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x23775
callq 0xa2b0
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x23787
callq 0xdce4
movq (%r13), %rax
movq %rax, 0xe8(%rsp)
movq 0x8(%r13), %rax
movq %rax, 0xf0(%rsp)
testq %rax, %rax
je 0x237b9
movq 0x767fd(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x237b5
incl 0x8(%rax)
jmp 0x237b9
lock
incl 0x8(%rax)
movq %rsp, %rdi
leaq 0xe8(%rsp), %rdx
movq %r15, %rsi
callq 0x2400a
movq (%rsp), %r12
movq 0x8(%rsp), %rax
movq %rax, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x237f3
callq 0xdce4
leaq 0x88(%r15), %rbx
testq %r12, %r12
je 0x23857
leaq 0x178(%rsp), %rax
movq %rax, -0x10(%rax)
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
addq %rsi, %rdx
leaq 0x168(%rsp), %rdi
callq 0xde0c
leaq 0x76b46(%rip), %rax     # 0x9a370
movq (%rax), %rcx
movq 0x8(%rax), %rax
movq %rcx, 0xd8(%rsp)
movq %rax, 0xe0(%rsp)
testq %rax, %rax
je 0x238b7
movq 0x7675b(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x238b3
incl 0x8(%rax)
jmp 0x238b7
leaq 0x1b8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
addq %rsi, %rdx
leaq 0x1a8(%rsp), %rdi
callq 0xde0c
movq 0x40(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq %r14, 0xb0(%rsp)
testq %r14, %r14
je 0x23cb0
movq 0x76707(%rip), %rax     # 0x99fa8
cmpb $0x0, (%rax)
je 0x23cab
incl 0x8(%r14)
jmp 0x23cb0
lock
incl 0x8(%rax)
movq %r12, 0xc8(%rsp)
movq 0x18(%rsp), %rcx
movq %rcx, 0xd0(%rsp)
testq %rcx, %rcx
je 0x238e6
movq 0x766d0(%rip), %rax     # 0x99fa8
cmpb $0x0, (%rax)
je 0x238e2
incl 0x8(%rcx)
jmp 0x238e6
lock
incl 0x8(%rcx)
movq 0x40(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq %r14, 0xc0(%rsp)
testq %r14, %r14
je 0x23917
movq 0x766a1(%rip), %rax     # 0x99fa8
cmpb $0x0, (%rax)
je 0x23912
incl 0x8(%r14)
jmp 0x23917
lock
incl 0x8(%r14)
leaq 0x158(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
leaq 0xc8(%rsp), %rdx
leaq 0xb8(%rsp), %rcx
callq 0x62094
movq %rsp, %rdi
leaq 0x158(%rsp), %rsi
callq 0x25fa8
movq (%rsp), %rax
movq $0x0, (%rsp)
leaq 0x38(%rsp), %rdx
movq %rax, (%rdx)
leaq 0x168(%rsp), %rsi
movq %rbx, %rdi
callq 0x21b98
movq 0x38(%rsp), %rsi
testq %rsi, %rsi
je 0x23984
leaq 0x38(%rsp), %rdi
callq 0x16b80
movq $0x0, 0x38(%rsp)
movq (%rsp), %rsi
testq %rsi, %rsi
je 0x2399e
movq %rsp, %rdi
callq 0x2627e
movq $0x0, (%rsp)
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x239b8
callq 0xdce4
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x239ca
callq 0xdce4
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x239dc
callq 0xdce4
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x239ee
callq 0xdce4
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x23a08
callq 0xa2b0
leaq 0x198(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
addq %rsi, %rdx
leaq 0x188(%rsp), %rdi
callq 0xde0c
movq 0x20(%rsp), %rcx
movq (%rcx), %rax
movq %rax, 0x98(%rsp)
movq 0x8(%rcx), %rax
movq %rax, 0xa0(%rsp)
testq %rax, %rax
je 0x23a63
movq 0x76553(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x23a5f
incl 0x8(%rax)
jmp 0x23a63
lock
incl 0x8(%rax)
movq %rsp, %rdi
leaq 0x98(%rsp), %rsi
callq 0x25fa8
movq (%rsp), %rax
movq $0x0, (%rsp)
leaq 0x28(%rsp), %rdx
movq %rax, (%rdx)
leaq 0x188(%rsp), %rsi
movq %rbx, %rdi
callq 0x21b98
movq 0x28(%rsp), %rsi
testq %rsi, %rsi
je 0x23aab
leaq 0x28(%rsp), %rdi
callq 0x16b80
movq $0x0, 0x28(%rsp)
movq (%rsp), %rsi
testq %rsi, %rsi
je 0x23ac5
movq %rsp, %rdi
callq 0x2627e
movq $0x0, (%rsp)
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x23adf
callq 0xdce4
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x23af1
callq 0xa2b0
movq (%r13), %rax
movq %rax, 0x88(%rsp)
movq 0x8(%r13), %rax
movq %rax, 0x90(%rsp)
testq %rax, %rax
movq 0x18(%rsp), %rbx
je 0x23b28
movq 0x7648e(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x23b24
incl 0x8(%rax)
jmp 0x23b28
lock
incl 0x8(%rax)
movq %rsp, %rdi
leaq 0x88(%rsp), %rdx
movq %r15, %rsi
callq 0x24174
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x23b4d
callq 0xdce4
movq (%rsp), %rax
testq %rax, %rax
je 0x23c5c
leaq 0x7680f(%rip), %rcx     # 0x9a370
movq (%rcx), %rdx
movq 0x8(%rcx), %rcx
movq %rdx, 0x78(%rsp)
movq %rcx, 0x80(%rsp)
testq %rcx, %rcx
je 0x23b93
movq 0x76427(%rip), %rdx     # 0x99fa8
cmpb $0x0, (%rdx)
je 0x23b8b
incl 0x8(%rcx)
jmp 0x23b93
lock
incl 0x8(%rcx)
movq (%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x70(%rsp)
testq %rax, %rax
je 0x23bbc
movq 0x763fa(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x23bb8
incl 0x8(%rax)
jmp 0x23bbc
lock
incl 0x8(%rax)
movq 0x40(%rsp), %rax
movq %rax, 0x58(%rsp)
movq %r14, 0x60(%rsp)
testq %r14, %r14
je 0x23be7
movq 0x763d1(%rip), %rax     # 0x99fa8
cmpb $0x0, (%rax)
je 0x23be2
incl 0x8(%r14)
jmp 0x23be7
lock
incl 0x8(%r14)
leaq 0x148(%rsp), %rdi
leaq 0x78(%rsp), %rsi
leaq 0x68(%rsp), %rdx
leaq 0x58(%rsp), %rcx
callq 0x62094
addq $0x130, %r15            # imm = 0x130
leaq 0x148(%rsp), %rsi
movq %r15, %rdi
callq 0x17772
movq 0x150(%rsp), %rdi
testq %rdi, %rdi
je 0x23c2c
callq 0xdce4
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x23c3b
callq 0xdce4
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x23c4a
callq 0xdce4
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x23c5c
callq 0xdce4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x23c6b
callq 0xdce4
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x23c7a
callq 0xdce4
testq %rbx, %rbx
je 0x23c87
movq %rbx, %rdi
callq 0xdce4
testq %r14, %r14
je 0x23c94
movq %r14, %rdi
callq 0xdce4
movq 0x20(%rsp), %rax
addq $0x248, %rsp            # imm = 0x248
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
lock
incl 0x8(%r14)
movq %rsp, %rdi
leaq 0xa8(%rsp), %rsi
callq 0x25fa8
movq (%rsp), %rax
movq $0x0, (%rsp)
leaq 0x30(%rsp), %rdx
movq %rax, (%rdx)
leaq 0x1a8(%rsp), %rsi
movq %rbx, %rdi
callq 0x21b98
movq 0x30(%rsp), %rsi
testq %rsi, %rsi
je 0x23cf8
leaq 0x30(%rsp), %rdi
callq 0x16b80
movq $0x0, 0x30(%rsp)
movq (%rsp), %rsi
testq %rsi, %rsi
je 0x23d12
movq %rsp, %rdi
callq 0x2627e
movq $0x0, (%rsp)
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x23d2c
callq 0xdce4
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
jne 0x23a03
jmp 0x23a08
movq %rax, %r15
movq 0x30(%rsp), %rsi
testq %rsi, %rsi
je 0x23d59
leaq 0x30(%rsp), %rdi
callq 0x16b80
leaq 0x30(%rsp), %rdi
movq %rsp, %rsi
callq 0xa6e3
jmp 0x23d6b
movq %rax, %r15
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x23d7d
callq 0xdce4
movq 0x1a8(%rsp), %rdi
jmp 0x23f7c
movq %rax, %r15
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x23da4
callq 0xa2b0
jmp 0x23da4
movq %rax, %r15
movq 0x100(%rsp), %rdi
jmp 0x23f93
movq %rax, %r15
movq 0x1e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x23dcb
callq 0xa2b0
jmp 0x23dcb
movq %rax, %r15
movq 0x110(%rsp), %rdi
jmp 0x23f09
movq %rax, %r15
movq 0x150(%rsp), %rdi
testq %rdi, %rdi
je 0x23df2
callq 0xdce4
jmp 0x23df2
movq %rax, %r15
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x23e01
callq 0xdce4
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x23e10
callq 0xdce4
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x23e22
callq 0xdce4
movq 0x8(%rsp), %rdi
jmp 0x23f26
movq %rax, %r15
movq 0x38(%rsp), %rsi
testq %rsi, %rsi
je 0x23e43
leaq 0x38(%rsp), %rdi
callq 0x16b80
leaq 0x38(%rsp), %rdi
movq %rsp, %rsi
callq 0xa6c5
jmp 0x23e55
movq %rax, %r15
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x23e6c
callq 0xdce4
jmp 0x23e6c
movq %rax, %r15
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x23e7e
callq 0xdce4
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x23e90
callq 0xdce4
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x23ea2
callq 0xdce4
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
jne 0x23f81
jmp 0x23fc0
movq %rax, %r15
movq 0x208(%rsp), %rdi
cmpq %r12, %rdi
je 0x23eda
callq 0xa2b0
jmp 0x23eda
movq %rax, %r15
movq 0x120(%rsp), %rdi
jmp 0x23f93
movq %rax, %r15
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0x23f01
callq 0xa2b0
jmp 0x23f01
movq %rax, %r15
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x23f13
callq 0xdce4
xorl %r14d, %r14d
jmp 0x23f9d
movq %rax, %r15
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x23fc0
callq 0xdce4
jmp 0x23fc0
movq %rax, %r15
movq 0x28(%rsp), %rsi
testq %rsi, %rsi
je 0x23f50
leaq 0x28(%rsp), %rdi
callq 0x16b80
leaq 0x28(%rsp), %rdi
movq %rsp, %rsi
callq 0xa701
jmp 0x23f62
movq %rax, %r15
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x23f74
callq 0xdce4
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x23fc0
callq 0xa2b0
jmp 0x23fc0
movq %rax, %r15
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x23f9d
callq 0xdce4
movq $0x0, 0x18(%rsp)
jmp 0x23fc0
movq %rax, %r15
xorl %r14d, %r14d
jmp 0x23fe1
movq %rax, %r15
movq 0x140(%rsp), %r14
jmp 0x23ff4
movq %rax, %r15
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x23fcf
callq 0xdce4
cmpq $0x0, 0x18(%rsp)
je 0x23fe1
movq 0x18(%rsp), %rdi
callq 0xdce4
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x23ff4
callq 0xdce4
testq %r14, %r14
je 0x24001
movq %r14, %rdi
callq 0xdce4
movq %r15, %rdi
callq 0xa510
nop