// File: Silica[P]PSL/./PSL/variable.h
// Function: PSL::variable::operator[](PSL::variable const&) const
variable operator[](const variable &v)	const	{
		Type t = v.type();
		variable z = v.ref();
		while (t == POINTER)
		{
			z = (*v).ref();
			t = z.type();
		}
		if (t == STRING || t == FLOAT)	return x->child(z);
		if (t == RARRAY)
		{
			int s = minusindex(z.x->index(0)->toInt());
			int l = z.x->index(1)->toInt();
			variable r(RARRAY);
			if (l < 0)	for (int i = 0; i > l; --i)	r.x->push(x->index(static_cast<size_t>(s+i)));
			else		for (int i = 0; i < l; ++i)	r.x->push(x->index(static_cast<size_t>(s+i)));
			return r.x;
		}
		return x->index(static_cast<size_t>(minusindex(z)));
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0x98(%rbp)
movq %rdi, %rax
movq %rax, -0x90(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1fe90
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x22b70
movq -0x80(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0xcd50
jmp 0x227cf
leaq -0x30(%rbp), %rdi
callq 0xcd90
cmpl $0x5, -0x1c(%rbp)
jne 0x22899
movq -0x18(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x22ba0
jmp 0x227f1
leaq -0x48(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x22b70
jmp 0x22800
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x22be0
jmp 0x2280f
leaq -0x48(%rbp), %rdi
callq 0xcd90
leaq -0x50(%rbp), %rdi
callq 0xcdc0
leaq -0x28(%rbp), %rdi
callq 0x1fe90
movl %eax, -0x9c(%rbp)
jmp 0x22832
movl -0x9c(%rbp), %eax
movl %eax, -0x1c(%rbp)
jmp 0x227d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xcd90
jmp 0x22b5b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x22b52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2288b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xcd90
leaq -0x50(%rbp), %rdi
callq 0xcdc0
jmp 0x22b52
cmpl $0x4, -0x1c(%rbp)
je 0x228a5
cmpl $0x3, -0x1c(%rbp)
jne 0x22922
movq -0x88(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xa8(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x1d2f0
jmp 0x228c5
movq -0xa8(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x17370
movq %rax, -0xb0(%rbp)
jmp 0x228de
movq -0xb0(%rbp), %rsi
movq -0x98(%rbp), %rdi
callq 0x1d3a0
jmp 0x228f3
leaq -0x58(%rbp), %rdi
callq 0xc950
movl $0x1, -0x5c(%rbp)
jmp 0x22b39
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xc950
jmp 0x22b52
cmpl $0x6, -0x1c(%rbp)
jne 0x22ac3
movq -0x28(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x17310
movq %rax, -0xb8(%rbp)
jmp 0x22942
movq -0xb8(%rbp), %rdi
callq 0x12080
movl %eax, -0xbc(%rbp)
jmp 0x22956
movl -0xbc(%rbp), %esi
movq -0x88(%rbp), %rdi
callq 0x22560
movl %eax, -0xc0(%rbp)
jmp 0x22970
movl -0xc0(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x28(%rbp), %rdi
movl $0x1, %esi
callq 0x17310
movq %rax, -0xc8(%rbp)
jmp 0x22990
movq -0xc8(%rbp), %rdi
callq 0x12080
movl %eax, -0xcc(%rbp)
jmp 0x229a4
movl -0xcc(%rbp), %eax
movl %eax, -0x64(%rbp)
leaq -0x70(%rbp), %rdi
movl $0x6, %esi
callq 0x127a0
jmp 0x229bd
cmpl $0x0, -0x64(%rbp)
jge 0x22a3e
movl $0x0, -0x74(%rbp)
movl -0x74(%rbp), %eax
cmpl -0x64(%rbp), %eax
jle 0x22a3c
movq -0x88(%rbp), %rax
movq -0x70(%rbp), %rcx
movq %rcx, -0xe0(%rbp)
movq (%rax), %rdi
movl -0x60(%rbp), %eax
movl -0x74(%rbp), %ecx
addl %ecx, %eax
movslq %eax, %rsi
callq 0x17310
movq %rax, -0xd8(%rbp)
jmp 0x22a00
movq -0xd8(%rbp), %rsi
movq -0xe0(%rbp), %rdi
callq 0x1be10
jmp 0x22a15
jmp 0x22a17
movl -0x74(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x229ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0xcdc0
jmp 0x22b52
jmp 0x22a9f
movl $0x0, -0x78(%rbp)
movl -0x78(%rbp), %eax
cmpl -0x64(%rbp), %eax
jge 0x22a9d
movq -0x88(%rbp), %rax
movq -0x70(%rbp), %rcx
movq %rcx, -0xf0(%rbp)
movq (%rax), %rdi
movl -0x60(%rbp), %eax
movl -0x78(%rbp), %ecx
addl %ecx, %eax
movslq %eax, %rsi
callq 0x17310
movq %rax, -0xe8(%rbp)
jmp 0x22a7b
movq -0xe8(%rbp), %rsi
movq -0xf0(%rbp), %rdi
callq 0x1be10
jmp 0x22a90
jmp 0x22a92
movl -0x78(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x78(%rbp)
jmp 0x22a45
jmp 0x22a9f
movq -0x98(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x1d3a0
jmp 0x22ab1
movl $0x1, -0x5c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0xcdc0
jmp 0x22b39
movq -0x88(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x100(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x1feb0
movl %eax, -0xf4(%rbp)
jmp 0x22ae5
movl -0xf4(%rbp), %esi
movq -0x88(%rbp), %rdi
callq 0x22560
movl %eax, -0x104(%rbp)
jmp 0x22aff
movq -0x100(%rbp), %rdi
movl -0x104(%rbp), %eax
movslq %eax, %rsi
callq 0x17310
movq %rax, -0x110(%rbp)
jmp 0x22b1d
movq -0x110(%rbp), %rsi
movq -0x98(%rbp), %rdi
callq 0x1d3a0
jmp 0x22b32
movl $0x1, -0x5c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0xcdc0
movq -0x90(%rbp), %rax
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0xcdc0
movq -0x38(%rbp), %rdi
callq 0xc280
nopw %cs:(%rax,%rax)
nop