// File: pranavmodx[P]modlang/src/../header/builtins.hpp
// Function: Push_Back(std::vector<Object*, std::allocator<Object*>>&)
Object *Push_Back(std::vector<Object *> &objs)
{
	if (objs.size() != 2)
		return new Error("error: argument length (" + std::to_string(objs.size()) + ") not equal to parameter length (2)\n");

	Object *obj = objs[0];
	const ObjectType type = obj->type();

	if (type == ERROR_OBJ)
		return obj;

	if (objs[1]->type() == ERROR_OBJ)
		return objs[1];

	else if (type == DEQUE_OBJ)
	{
		((Stack *)obj)->elements.push(objs[1]);
		return __NULL;
	}

	return new Error("error: unsupported object for push()");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x373f0
cmpq $0x2, %rax
je 0x2e6ea
movl $0x28, %edi
callq 0x52a0
movq %rax, -0x100(%rbp)
movb $0x1, -0x7d(%rbp)
movq -0x10(%rbp), %rdi
callq 0x373f0
movq %rax, %rsi
leaq -0x70(%rbp), %rdi
callq 0x37410
jmp 0x2e60e
leaq 0x17304(%rip), %rsi     # 0x45919
leaq -0x50(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0x1bde0
jmp 0x2e624
leaq 0x1734f(%rip), %rdx     # 0x4597a
leaq -0x30(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1bb10
jmp 0x2e63a
movq -0x100(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x2b980
jmp 0x2e64c
movq -0x100(%rbp), %rax
movb $0x0, -0x7d(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5518
leaq -0x50(%rbp), %rdi
callq 0x5518
leaq -0x70(%rbp), %rdi
callq 0x5518
jmp 0x2e938
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x2e6cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x2e6c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x2e6ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5518
leaq -0x50(%rbp), %rdi
callq 0x5518
leaq -0x70(%rbp), %rdi
callq 0x5518
testb $0x1, -0x7d(%rbp)
jne 0x2e6d4
jmp 0x2e6e5
movq -0x100(%rbp), %rdi
movl $0x28, %esi
callq 0x52b0
jmp 0x2e945
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x374f0
movq (%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rsi
movq (%rsi), %rax
leaq -0xa8(%rbp), %rdi
callq *(%rax)
leaq -0xa8(%rbp), %rdi
leaq 0x38cde(%rip), %rsi     # 0x67400
callq 0x16920
testb $0x1, %al
jne 0x2e72d
jmp 0x2e747
movq -0x88(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0xac(%rbp)
jmp 0x2e91c
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x374f0
movq (%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xd0(%rbp), %rdi
callq *%rax
jmp 0x2e769
leaq -0xd0(%rbp), %rdi
leaq 0x38c89(%rip), %rsi     # 0x67400
callq 0x16920
movb %al, -0x101(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x5518
movb -0x101(%rbp), %al
testb $0x1, %al
jne 0x2e79a
jmp 0x2e7cf
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x374f0
movq (%rax), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0xac(%rbp)
jmp 0x2e91c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x2e92a
leaq -0xa8(%rbp), %rdi
leaq 0x38b63(%rip), %rsi     # 0x67340
callq 0x16920
testb $0x1, %al
jne 0x2e7e8
jmp 0x2e836
movq -0x88(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x110(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x374f0
movq -0x110(%rbp), %rdi
movq %rax, %rsi
callq 0x376c0
jmp 0x2e819
leaq 0x37da0(%rip), %rax     # 0x665c0
movq (%rax), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0xac(%rbp)
jmp 0x2e91c
jmp 0x2e838
movl $0x28, %edi
callq 0x52a0
movq %rax, -0x118(%rbp)
jmp 0x2e84b
movb $0x1, -0xf2(%rbp)
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x54a0
movq -0x120(%rbp), %rdx
leaq 0x1713d(%rip), %rsi     # 0x459b0
leaq -0xf0(%rbp), %rdi
callq 0x134c0
jmp 0x2e881
movq -0x118(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x2b980
jmp 0x2e896
movq -0x118(%rbp), %rax
movb $0x0, -0xf2(%rbp)
movq %rax, -0x8(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x5518
leaq -0xf1(%rbp), %rdi
callq 0x52f0
movl $0x1, -0xac(%rbp)
jmp 0x2e91c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x2e8f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x5518
leaq -0xf1(%rbp), %rdi
callq 0x52f0
testb $0x1, -0xf2(%rbp)
jne 0x2e909
jmp 0x2e91a
movq -0x118(%rbp), %rdi
movl $0x28, %esi
callq 0x52b0
jmp 0x2e92a
leaq -0xa8(%rbp), %rdi
callq 0x5518
jmp 0x2e938
leaq -0xa8(%rbp), %rdi
callq 0x5518
jmp 0x2e945
movq -0x8(%rbp), %rax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
movq -0x78(%rbp), %rdi
callq 0x5490
nop