// File: /workspace/github_c_makefile_star2_O3/BernardTatin[P]s7sh/s7.c
// Function: int_vector_ref_i_7piii
static s7_int int_vector_ref_i_7piii(s7_scheme *sc, s7_pointer v, s7_int i1, s7_int i2, s7_int i3)
                {
                    if ((i1 >= 0) && (i1 < vector_dimension(v, 0)))
                    {
                        if ((i2 >= 0) && (i2 < vector_dimension(v, 1)))
                        {
                            if ((i3 >= 0) && (i3 < vector_dimension(v, 2)))
                                return(int_vector(v, i3 + (i2 * vector_offset(v, 1)) + (i1 * vector_offset(v, 0))));
                            out_of_range(sc, sc->int_vector_ref_symbol, small_int(4), wrap_integer1(sc, i3), (i3 < 0) ? its_negative_string : its_too_large_string);
                        }
                        out_of_range(sc, sc->int_vector_ref_symbol, small_int(3), wrap_integer1(sc, i2), (i2 < 0) ? its_negative_string : its_too_large_string);
                    }
                    out_of_range(sc, sc->int_vector_ref_symbol, small_int(2), wrap_integer1(sc, i1), (i1 < 0) ? its_negative_string : its_too_large_string);
                    return(0);
                }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %r14
movq %rdi, %rbx
testq %rdx, %rdx
js 0x81512
movq %rcx, %r15
movq 0x18(%rsi), %rax
movq 0x20(%rax), %rax
movq (%rax), %rcx
cmpq %r14, (%rcx)
jle 0x81512
testq %r15, %r15
js 0x81499
cmpq %r15, 0x8(%rcx)
jle 0x81499
testq %r8, %r8
js 0x81420
cmpq %r8, 0x10(%rcx)
jle 0x81420
movq 0x18(%rax), %rax
imulq 0x8(%rax), %r15
imulq (%rax), %r14
shlq $0x3, %r15
addq 0x10(%rsi), %r15
leaq (%r15,%r8,8), %rax
movq (%rax,%r14,8), %rax
jmp 0x8158d
movq 0xfa8(%rbx), %rax
movq 0x8(%rax), %rax
movq 0xc553e(%rip), %rcx     # 0x146970
movq 0x1f00(%rbx), %rdx
movq %r8, 0x8(%rdx)
movq 0x1ee8(%rbx), %rdx
testq %r8, %r8
leaq 0xc95fa(%rip), %rsi     # 0x14aa48
leaq 0xc95eb(%rip), %rdi     # 0x14aa40
cmovsq %rsi, %rdi
movq 0x1f00(%rbx), %rsi
movq (%rdi), %rdi
movq 0x10(%rdx), %rdx
movq %rax, 0x8(%rdx)
movq 0x10(%rdx), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rax), %rax
movq %rsi, 0x8(%rax)
movq 0x10(%rax), %rax
movq %rdi, 0x8(%rax)
movq 0x1948(%rbx), %rsi
movq 0x1ee8(%rbx), %rdx
movq %rbx, %rdi
callq 0x38dfa
movq 0xfa8(%rbx), %rax
movq 0x8(%rax), %rax
movq 0xc54bd(%rip), %rcx     # 0x146968
movq 0x1f00(%rbx), %rdx
movq %r15, 0x8(%rdx)
movq 0x1ee8(%rbx), %rdx
testq %r15, %r15
leaq 0xc9581(%rip), %rsi     # 0x14aa48
leaq 0xc9572(%rip), %rdi     # 0x14aa40
cmovsq %rsi, %rdi
movq 0x1f00(%rbx), %rsi
movq (%rdi), %rdi
movq 0x10(%rdx), %rdx
movq %rax, 0x8(%rdx)
movq 0x10(%rdx), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rax), %rax
movq %rsi, 0x8(%rax)
movq 0x10(%rax), %rax
movq %rdi, 0x8(%rax)
movq 0x1948(%rbx), %rsi
movq 0x1ee8(%rbx), %rdx
movq %rbx, %rdi
callq 0x38dfa
movq 0xfa8(%rbx), %rax
movq 0x8(%rax), %rax
movq 0xc543c(%rip), %rcx     # 0x146960
movq 0x1f00(%rbx), %rdx
movq %r14, 0x8(%rdx)
movq 0x1ee8(%rbx), %rdx
testq %r14, %r14
leaq 0xc9508(%rip), %rsi     # 0x14aa48
leaq 0xc94f9(%rip), %rdi     # 0x14aa40
cmovsq %rsi, %rdi
movq 0x1f00(%rbx), %rsi
movq (%rdi), %rdi
movq 0x10(%rdx), %rdx
movq %rax, 0x8(%rdx)
movq 0x10(%rdx), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rax), %rax
movq %rsi, 0x8(%rax)
movq 0x10(%rax), %rax
movq %rdi, 0x8(%rax)
movq 0x1948(%rbx), %rsi
movq 0x1ee8(%rbx), %rdx
movq %rbx, %rdi
callq 0x38dfa
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq