// File: /workspace/github_c_makefile_star2_O0/zpole[P]IICV/vl/covdet.c
// Function: vl_covdet_put_image
int
vl_covdet_put_image (VlCovDet * self,
                     float const * image,
                     vl_size width, vl_size height)
{
  vl_size const minOctaveSize = 16 ;
  vl_index lastOctave ;
  vl_index octaveFirstSubdivision ;
  vl_index octaveLastSubdivision ;
  VlScaleSpaceGeometry geom = vl_scalespace_get_default_geometry(width,height) ;

  assert (self) ;
  assert (image) ;
  assert (width >= 1) ;
  assert (height >= 1) ;

  /* (minOctaveSize - 1) 2^lastOctave <= min(width,height) - 1 */
  lastOctave = vl_floor_d(vl_log2_d(VL_MIN((double)width-1,(double)height-1) / (minOctaveSize - 1))) ;

  if (self->method == VL_COVDET_METHOD_DOG) {
    octaveFirstSubdivision = -1 ;
    octaveLastSubdivision = self->octaveResolution + 1 ;
  } else if (self->method == VL_COVDET_METHOD_HESSIAN) {
    octaveFirstSubdivision = -1 ;
    octaveLastSubdivision = self->octaveResolution ;
  } else {
    octaveFirstSubdivision = 0 ;
    octaveLastSubdivision = self->octaveResolution - 1 ;
  }

  geom.width = width ;
  geom.height = height ;
  geom.firstOctave = self->firstOctave ;
  geom.lastOctave = lastOctave ;
  geom.octaveResolution = self->octaveResolution ;
  geom.octaveFirstSubdivision = octaveFirstSubdivision ;
  geom.octaveLastSubdivision = octaveLastSubdivision ;

  if (self->gss == NULL ||
      ! vl_scalespacegeometry_is_equal (geom,
                                        vl_scalespace_get_geometry(self->gss)))
  {
    if (self->gss) vl_scalespace_delete(self->gss) ;
    self->gss = vl_scalespace_new_with_geometry(geom) ;
    if (self->gss == NULL) return VL_ERR_ALLOC ;
  }
  vl_scalespace_put_image(self->gss, image) ;
  return VL_ERR_OK ;
}

// Assembly:
subq $0x178, %rsp            # imm = 0x178
movq %rdi, 0x168(%rsp)
movq %rsi, 0x160(%rsp)
movq %rdx, 0x158(%rsp)
movq %rcx, 0x150(%rsp)
movq $0x10, 0x148(%rsp)
movq 0x158(%rsp), %rsi
movq 0x150(%rsp), %rdx
leaq 0xe8(%rsp), %rdi
callq 0x9af0
movaps 0x4b569(%rip), %xmm3    # 0x59160
movq 0x158(%rsp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
movapd 0x4b564(%rip), %xmm2    # 0x59170
subpd %xmm2, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movsd 0x4b475(%rip), %xmm0    # 0x59098
addsd %xmm0, %xmm1
movq 0x150(%rsp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
subpd %xmm2, %xmm0
movaps %xmm0, %xmm2
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm2, %xmm0
movsd 0x4b48d(%rip), %xmm2    # 0x590d8
subsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jbe 0xdc97
movaps 0x4b504(%rip), %xmm1    # 0x59160
movq 0x158(%rsp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x4b4ff(%rip), %xmm1    # 0x59170
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x4b450(%rip), %xmm1    # 0x590d8
subsd %xmm1, %xmm0
movsd %xmm0, 0x98(%rsp)
jmp 0xdcd7
movaps 0x4b4c2(%rip), %xmm1    # 0x59160
movq 0x150(%rsp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x4b4bd(%rip), %xmm1    # 0x59170
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x4b40e(%rip), %xmm1    # 0x590d8
subsd %xmm1, %xmm0
movsd %xmm0, 0x98(%rsp)
movsd 0x98(%rsp), %xmm0
movsd 0x4b410(%rip), %xmm1    # 0x590f8
divsd %xmm1, %xmm0
callq 0xdfe0
callq 0xdf80
movq %rax, 0x140(%rsp)
movq 0x168(%rsp), %rax
cmpl $0x1, 0x10(%rax)
jne 0xdd32
movq $-0x1, 0x138(%rsp)
movq 0x168(%rsp), %rax
movq 0x30(%rax), %rax
addq $0x1, %rax
movq %rax, 0x130(%rsp)
jmp 0xdd88
movq 0x168(%rsp), %rax
cmpl $0x2, 0x10(%rax)
jne 0xdd62
movq $-0x1, 0x138(%rsp)
movq 0x168(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x130(%rsp)
jmp 0xdd86
movq $0x0, 0x138(%rsp)
movq 0x168(%rsp), %rax
movq 0x30(%rax), %rax
subq $0x1, %rax
movq %rax, 0x130(%rsp)
jmp 0xdd88
movq 0x158(%rsp), %rax
movq %rax, 0xe8(%rsp)
movq 0x150(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq 0x168(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0xf8(%rsp)
movq 0x140(%rsp), %rax
movq %rax, 0x100(%rsp)
movq 0x168(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x108(%rsp)
movq 0x138(%rsp), %rax
movq %rax, 0x110(%rsp)
movq 0x130(%rsp), %rax
movq %rax, 0x118(%rsp)
movq 0x168(%rsp), %rax
cmpq $0x0, (%rax)
je 0xdebd
movq 0x168(%rsp), %rax
movq (%rax), %rsi
leaq 0xa0(%rsp), %rdi
callq 0x9a40
movq 0xe0(%rsp), %rcx
movq %rsp, %rax
movq %rax, 0x90(%rsp)
movq %rcx, 0x88(%rax)
movups 0xa0(%rsp), %xmm0
movups 0xb0(%rsp), %xmm1
movups 0xc0(%rsp), %xmm2
movups 0xd0(%rsp), %xmm3
movups %xmm3, 0x78(%rax)
movups %xmm2, 0x68(%rax)
movups %xmm1, 0x58(%rax)
movups %xmm0, 0x48(%rax)
movq 0x128(%rsp), %rcx
movq %rcx, 0x40(%rax)
movups 0xe8(%rsp), %xmm0
movups 0xf8(%rsp), %xmm1
movups 0x108(%rsp), %xmm2
movups 0x118(%rsp), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x9600
cmpl $0x0, %eax
jne 0xdf49
movq 0x168(%rsp), %rax
cmpq $0x0, (%rax)
je 0xdedb
movq 0x168(%rsp), %rax
movq (%rax), %rdi
callq 0x9990
movq 0x128(%rsp), %rcx
movq %rsp, %rax
movq %rcx, 0x40(%rax)
movups 0xe8(%rsp), %xmm0
movups 0xf8(%rsp), %xmm1
movups 0x108(%rsp), %xmm2
movups 0x118(%rsp), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x9a30
movq %rax, %rcx
movq 0x168(%rsp), %rax
movq %rcx, (%rax)
movq 0x168(%rsp), %rax
cmpq $0x0, (%rax)
jne 0xdf47
movl $0x2, 0x174(%rsp)
jmp 0xdf6c
jmp 0xdf49
movq 0x168(%rsp), %rax
movq (%rax), %rdi
movq 0x160(%rsp), %rsi
callq 0x9610
movl $0x0, 0x174(%rsp)
movl 0x174(%rsp), %eax
addq $0x178, %rsp            # imm = 0x178
retq
nopl (%rax,%rax)