// File: /workspace/github_c_makefile_star2_O0/SimpleDoger[P]Darknet_CPU_Only/image.c
// Function: best_3d_shift_r
int best_3d_shift_r(image a, image b, int min, int max)
{
    if(min == max) return min;
    int mid = floor((min + max) / 2.);
    image c1 = crop_image(b, 0, mid, b.w, b.h);
    image c2 = crop_image(b, 0, mid+1, b.w, b.h);
    float d1 = dist_array(c1.data, a.data, a.w*a.h*a.c, 10);
    float d2 = dist_array(c2.data, a.data, a.w*a.h*a.c, 10);
    free_image(c1);
    free_image(c2);
    if(d1 < d2) return best_3d_shift_r(a, b, min, mid);
    else return best_3d_shift_r(a, b, mid+1, max);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
leaq 0x28(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movl %edi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl -0x8(%rbp), %eax
cmpl -0xc(%rbp), %eax
jne 0x124b4
movl -0x8(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x1266f
movl -0x8(%rbp), %eax
addl -0xc(%rbp), %eax
cvtsi2sd %eax, %xmm0
movsd 0x5eb92(%rip), %xmm1    # 0x71058
divsd %xmm1, %xmm0
callq 0x33b0
movq -0x58(%rbp), %rax
cvttsd2si %xmm0, %ecx
movl %ecx, -0x10(%rbp)
movl -0x10(%rbp), %edx
movl (%rax), %ecx
movl 0x4(%rax), %r8d
leaq -0x28(%rbp), %rdi
xorl %esi, %esi
movq (%rax), %r9
movq %r9, (%rsp)
movq 0x8(%rax), %r9
movq %r9, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x11ca0
movq -0x58(%rbp), %rax
movl -0x10(%rbp), %edx
addl $0x1, %edx
movl (%rax), %ecx
movl 0x4(%rax), %r8d
leaq -0x40(%rbp), %rdi
xorl %esi, %esi
movq (%rax), %r9
movq %r9, (%rsp)
movq 0x8(%rax), %r9
movq %r9, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x11ca0
movq -0x50(%rbp), %rax
movq -0x18(%rbp), %rdi
movq 0x10(%rax), %rsi
movl (%rax), %edx
imull 0x4(%rax), %edx
imull 0x8(%rax), %edx
movl $0xa, %ecx
callq 0x5800
movq -0x50(%rbp), %rax
movss %xmm0, -0x44(%rbp)
movq -0x30(%rbp), %rdi
movq 0x10(%rax), %rsi
movl (%rax), %edx
imull 0x4(%rax), %edx
imull 0x8(%rax), %edx
movl $0xa, %ecx
callq 0x5800
movss %xmm0, -0x48(%rbp)
leaq -0x28(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xedb0
leaq -0x40(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xedb0
movss -0x44(%rbp), %xmm1
movss -0x48(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x12623
movq -0x58(%rbp), %rax
movq -0x50(%rbp), %rcx
movl -0x8(%rbp), %edi
movl -0x10(%rbp), %esi
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
callq 0x12480
movl %eax, -0x4(%rbp)
jmp 0x1266f
movq -0x58(%rbp), %rax
movq -0x50(%rbp), %rcx
movl -0x10(%rbp), %edi
addl $0x1, %edi
movl -0xc(%rbp), %esi
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
callq 0x12480
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
nopl (%rax,%rax)