// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: g_vector_ref_3
static s7_pointer g_vector_ref_3(s7_scheme *sc, s7_pointer args)
                {
                    s7_pointer vec, i1, i2;
                    s7_int ix, iy;

                    vec = car(args);
                    if (!is_any_vector(vec))
                        return(g_vector_ref(sc, args));
                    if (vector_rank(vec) != 2)
                        return(g_vector_ref(sc, args));

                    i1 = cadr(args);
                    if (!s7_is_integer(i1))
                        return(g_vector_ref(sc, args));
                    i2 = caddr(args);
                    if (!s7_is_integer(i2))
                        return(g_vector_ref(sc, args));
                    ix = s7_integer(i1);
                    iy = s7_integer(i2);
                    if ((ix >= 0) &&
                            (iy >= 0) &&
                            (ix < vector_dimension(vec, 0)) &&
                            (iy < vector_dimension(vec, 1)))
                    {
                        s7_int index;
                        index = (ix * vector_offset(vec, 0)) + iy; /* vector_offset(vec, 1) == 1 */
                        return(vector_getter(vec)(sc, vec, index));
                    }
                    return(g_vector_ref(sc, args));
                }

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movq %rsi, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x45f53(%rip), %rax     # 0x21a750
testb $0x1, (%rax,%rcx)
jne 0x1d481c
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x998c0
movq %rax, 0x50(%rsp)
jmp 0x1d49aa
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rax
cmpq $0x0, 0x20(%rax)
je 0x1d4844
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x20(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0x1d4850
movl $0x1, %eax
movq %rax, 0x8(%rsp)
jmp 0x1d4850
movq 0x8(%rsp), %rax
cmpq $0x2, %rax
je 0x1d4874
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x998c0
movq %rax, 0x50(%rsp)
jmp 0x1d49aa
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rdi
callq 0x11340
testb $0x1, %al
jne 0x1d48ad
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x998c0
movq %rax, 0x50(%rsp)
jmp 0x1d49aa
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
callq 0x11340
testb $0x1, %al
jne 0x1d48ea
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x998c0
movq %rax, 0x50(%rsp)
jmp 0x1d49aa
movq 0x30(%rsp), %rdi
callq 0x10790
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
callq 0x10790
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x20(%rsp)
jl 0x1d4996
cmpq $0x0, 0x18(%rsp)
jl 0x1d4996
movq 0x20(%rsp), %rax
movq 0x38(%rsp), %rcx
movq 0x18(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq (%rcx), %rcx
cmpq (%rcx), %rax
jge 0x1d4996
movq 0x18(%rsp), %rax
movq 0x38(%rsp), %rcx
movq 0x18(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq (%rcx), %rcx
cmpq 0x8(%rcx), %rax
jge 0x1d4996
movq 0x20(%rsp), %rax
movq 0x38(%rsp), %rcx
movq 0x18(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq 0x18(%rcx), %rcx
imulq (%rcx), %rax
addq 0x18(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x38(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq *%rax
movq %rax, 0x50(%rsp)
jmp 0x1d49aa
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x998c0
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)