// File: /workspace/github_c_makefile_star2_O0/zpole[P]IICV/vl/dsift.c
// Function: vl_dsift_with_gaussian_window
VL_INLINE void
_vl_dsift_with_gaussian_window (VlDsiftFilter * self)
{
  int binx, biny, bint ;
  int framex, framey ;
  float *xker, *yker ;

  int Wx = self->geom.binSizeX - 1 ;
  int Wy = self->geom.binSizeY - 1 ;

  for (biny = 0 ; biny < self->geom.numBinY ; ++biny) {

    yker = _vl_dsift_new_kernel (self->geom.binSizeY,
                                 self->geom.numBinY,
                                 biny,
                                 self->windowSize) ;

    for (binx = 0 ; binx < self->geom.numBinX ; ++binx) {

      xker = _vl_dsift_new_kernel(self->geom.binSizeX,
                                  self->geom.numBinX,
                                  binx,
                                  self->windowSize) ;

      for (bint = 0 ; bint < self->geom.numBinT ; ++bint) {

        vl_imconvcol_vf (self->convTmp1, self->imHeight,
                         self->grads[bint], self->imWidth, self->imHeight,
                         self->imWidth,
                         yker, -Wy, +Wy, 1,
                         VL_PAD_BY_CONTINUITY|VL_TRANSPOSE) ;

        vl_imconvcol_vf (self->convTmp2, self->imWidth,
                         self->convTmp1, self->imHeight, self->imWidth,
                         self->imHeight,
                         xker, -Wx, +Wx, 1,
                         VL_PAD_BY_CONTINUITY|VL_TRANSPOSE) ;

        {
          float *dst = self->descrs
            + bint
            + binx * self->geom.numBinT
            + biny * (self->geom.numBinX * self->geom.numBinT)  ;

          float *src = self->convTmp2 ;

          int frameSizeX = self->geom.binSizeX * (self->geom.numBinX - 1) + 1 ;
          int frameSizeY = self->geom.binSizeY * (self->geom.numBinY - 1) + 1 ;
          int descrSize = vl_dsift_get_descriptor_size (self) ;

          for (framey  = self->boundMinY ;
               framey <= self->boundMaxY - frameSizeY + 1 ;
               framey += self->stepY) {
            for (framex  = self->boundMinX ;
                 framex <= self->boundMaxX - frameSizeX + 1 ;
                 framex += self->stepX) {
              *dst = src [(framex + binx * self->geom.binSizeX) * 1 +
                          (framey + biny * self->geom.binSizeY) * self->imWidth]  ;
              dst += descrSize ;
            } /* framex */
          } /* framey */
        }

      } /* for bint */
      vl_free (xker) ;
    } /* for binx */
    vl_free (yker) ;
  } /* for biny */
}

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x80(%rsp)
movq 0x80(%rsp), %rax
movl 0x2c(%rax), %eax
subl $0x1, %eax
movl %eax, 0x54(%rsp)
movq 0x80(%rsp), %rax
movl 0x30(%rax), %eax
subl $0x1, %eax
movl %eax, 0x50(%rsp)
movl $0x0, 0x78(%rsp)
movl 0x78(%rsp), %eax
movq 0x80(%rsp), %rcx
cmpl 0x28(%rcx), %eax
jge 0x156a0
movq 0x80(%rsp), %rax
movl 0x30(%rax), %edi
movq 0x80(%rsp), %rax
movl 0x28(%rax), %esi
movl 0x78(%rsp), %edx
movq 0x80(%rsp), %rax
movsd 0x38(%rax), %xmm0
callq 0x13db0
movq %rax, 0x58(%rsp)
movl $0x0, 0x7c(%rsp)
movl 0x7c(%rsp), %eax
movq 0x80(%rsp), %rcx
cmpl 0x24(%rcx), %eax
jge 0x15686
movq 0x80(%rsp), %rax
movl 0x2c(%rax), %edi
movq 0x80(%rsp), %rax
movl 0x24(%rax), %esi
movl 0x7c(%rsp), %edx
movq 0x80(%rsp), %rax
movsd 0x38(%rax), %xmm0
callq 0x13db0
movq %rax, 0x60(%rsp)
movl $0x0, 0x74(%rsp)
movl 0x74(%rsp), %eax
movq 0x80(%rsp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x1566c
movq 0x80(%rsp), %rax
movq 0x70(%rax), %rdi
movq 0x80(%rsp), %rax
movslq 0x4(%rax), %rsi
movq 0x80(%rsp), %rax
movq 0x68(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x80(%rsp), %rax
movslq (%rax), %rcx
movq 0x80(%rsp), %rax
movslq 0x4(%rax), %r8
movq 0x80(%rsp), %rax
movslq (%rax), %r9
movq 0x58(%rsp), %r11
xorl %eax, %eax
subl 0x50(%rsp), %eax
movslq %eax, %r10
movslq 0x50(%rsp), %rax
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movl $0x1, 0x18(%rsp)
movl $0x5, 0x20(%rsp)
callq 0x92f0
movq 0x80(%rsp), %rax
movq 0x78(%rax), %rdi
movq 0x80(%rsp), %rax
movslq (%rax), %rsi
movq 0x80(%rsp), %rax
movq 0x70(%rax), %rdx
movq 0x80(%rsp), %rax
movslq 0x4(%rax), %rcx
movq 0x80(%rsp), %rax
movslq (%rax), %r8
movq 0x80(%rsp), %rax
movslq 0x4(%rax), %r9
movq 0x60(%rsp), %r11
xorl %eax, %eax
subl 0x54(%rsp), %eax
movslq %eax, %r10
movslq 0x54(%rsp), %rax
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movl $0x1, 0x18(%rsp)
movl $0x5, 0x20(%rsp)
callq 0x92f0
movq 0x80(%rsp), %rax
movq 0x50(%rax), %rax
movslq 0x74(%rsp), %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movl 0x7c(%rsp), %ecx
movq 0x80(%rsp), %rdx
imull 0x20(%rdx), %ecx
movslq %ecx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movl 0x78(%rsp), %ecx
movq 0x80(%rsp), %rdx
movl 0x24(%rdx), %edx
movq 0x80(%rsp), %rsi
imull 0x20(%rsi), %edx
imull %edx, %ecx
movslq %ecx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, 0x48(%rsp)
movq 0x80(%rsp), %rax
movq 0x78(%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x80(%rsp), %rax
movl 0x2c(%rax), %eax
movq 0x80(%rsp), %rcx
movl 0x24(%rcx), %ecx
subl $0x1, %ecx
imull %ecx, %eax
addl $0x1, %eax
movl %eax, 0x3c(%rsp)
movq 0x80(%rsp), %rax
movl 0x30(%rax), %eax
movq 0x80(%rsp), %rcx
movl 0x28(%rcx), %ecx
subl $0x1, %ecx
imull %ecx, %eax
addl $0x1, %eax
movl %eax, 0x38(%rsp)
movq 0x80(%rsp), %rdi
callq 0x156b0
movl %eax, 0x34(%rsp)
movq 0x80(%rsp), %rax
movl 0x14(%rax), %eax
movl %eax, 0x6c(%rsp)
movl 0x6c(%rsp), %eax
movq 0x80(%rsp), %rcx
movl 0x1c(%rcx), %ecx
subl 0x38(%rsp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jg 0x1565a
movq 0x80(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x70(%rsp)
movl 0x70(%rsp), %eax
movq 0x80(%rsp), %rcx
movl 0x18(%rcx), %ecx
subl 0x3c(%rsp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jg 0x15640
movq 0x40(%rsp), %rax
movl 0x70(%rsp), %ecx
movl 0x7c(%rsp), %edx
movq 0x80(%rsp), %rsi
imull 0x2c(%rsi), %edx
addl %edx, %ecx
shll $0x0, %ecx
movl 0x6c(%rsp), %edx
movl 0x78(%rsp), %esi
movq 0x80(%rsp), %rdi
imull 0x30(%rdi), %esi
addl %esi, %edx
movq 0x80(%rsp), %rsi
imull (%rsi), %edx
addl %edx, %ecx
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm0
movq 0x48(%rsp), %rax
movss %xmm0, (%rax)
movl 0x34(%rsp), %ecx
movq 0x48(%rsp), %rax
movslq %ecx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, 0x48(%rsp)
movq 0x80(%rsp), %rax
movl 0x8(%rax), %eax
addl 0x70(%rsp), %eax
movl %eax, 0x70(%rsp)
jmp 0x155a0
jmp 0x15642
movq 0x80(%rsp), %rax
movl 0xc(%rax), %eax
addl 0x6c(%rsp), %eax
movl %eax, 0x6c(%rsp)
jmp 0x15573
jmp 0x1565c
movl 0x74(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x74(%rsp)
jmp 0x15387
movq 0x60(%rsp), %rdi
callq 0x9620
movl 0x7c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x7c(%rsp)
jmp 0x15339
movq 0x58(%rsp), %rdi
callq 0x9620
movl 0x78(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x78(%rsp)
jmp 0x152eb
addq $0x88, %rsp
retq
nopl (%rax,%rax)