For the ARM assembly language routine below, what function does it perform for the calling program?
int final_entry (int bufl [], int e1, int e2)
.global final_entry
final_entry:
stmfd sp!, {v1-v6,lr}
mov v3, #0
lp: ldr v1,[a1,v3]
cmp v1,a2
beq dn
add v3,v3,#4
subs a3,a3,#1
bne lp
move a1,#0
ldmfd sp!, {v1-v6, pc}
dn: add a1,a1,v3
ldmfd sp!, {v1-v6,pc}