// File: /workspace/github_c_makefile_star2_O3/zpole[P]IICV/vl/vlad.c
// Function: vl_vlad_encode
void
vl_vlad_encode (void * enc, vl_type dataType,
                void const * means, vl_size dimension, vl_size numClusters,
                void const * data, vl_size numData,
                void const * assignments,
                int flags)
{
  switch(dataType) {
    case VL_TYPE_FLOAT:
      _vl_vlad_encode_f ((float *) enc,
                         (float const *) means, dimension, numClusters,
                         (float const *) data,  numData,
                         (float const *) assignments, flags) ;
      break;
    case VL_TYPE_DOUBLE:
      _vl_vlad_encode_d ((double *) enc,
                         (double const *) means, dimension, numClusters,
                         (double const *) data, numData,
                         (double const *) assignments, flags) ;
      break;
    default:
      abort();
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %r9, 0x38(%rsp)
movq %r8, %r15
movq %rcx, %r12
movq %rdx, %r13
movq 0x80(%rsp), %rbx
cmpl $0x2, %esi
movq %rdi, 0x18(%rsp)
je 0x31c9f
cmpl $0x1, %esi
jne 0x31fda
movq %r15, %rax
imulq %r12, %rax
movq %rax, 0x20(%rsp)
leaq (,%rax,4), %rdx
xorl %esi, %esi
callq 0x9400
movslq %r15d, %rax
movq %rax, 0x28(%rsp)
testq %rax, %rax
jle 0x31f22
movslq %ebx, %rbp
testq %r12, %r12
sete %al
movl 0x90(%rsp), %ecx
testb $0x2, %cl
sete %cl
orb %al, %cl
movb %cl, 0xf(%rsp)
leaq (,%r12,4), %r14
movq $0x0, 0x10(%rsp)
xorps %xmm4, %xmm4
movq 0x18(%rsp), %rbx
testq %rbp, %rbp
jle 0x31b96
movq 0x88(%rsp), %rax
movq 0x10(%rsp), %rcx
leaq (%rax,%rcx,4), %rax
xorpd %xmm0, %xmm0
movq 0x38(%rsp), %rcx
xorl %edx, %edx
movq %rdx, %rsi
imulq %r15, %rsi
movss (%rax,%rsi,4), %xmm1
ucomiss %xmm4, %xmm1
jbe 0x31b02
cvtss2sd %xmm1, %xmm1
addsd %xmm1, %xmm0
testq %r12, %r12
je 0x31b02
xorl %esi, %esi
xorps %xmm2, %xmm2
cvtss2sd (%rcx,%rsi,4), %xmm2
xorps %xmm3, %xmm3
cvtss2sd (%rbx,%rsi,4), %xmm3
mulsd %xmm1, %xmm2
addsd %xmm3, %xmm2
cvtsd2ss %xmm2, %xmm2
movss %xmm2, (%rbx,%rsi,4)
incq %rsi
cmpq %rsi, %r12
jne 0x31ad9
incq %rdx
addq %r14, %rcx
cmpq %rbp, %rdx
jne 0x31ab9
ucomisd 0x51b(%rip), %xmm0      # 0x32030
jbe 0x31b96
movl 0x90(%rsp), %eax
testb $0x8, %al
jne 0x31b62
testq %r12, %r12
je 0x31c95
xorpd 0x59d(%rip), %xmm0      # 0x320d0
xorl %eax, %eax
xorps %xmm1, %xmm1
cvtss2sd (%r13,%rax,4), %xmm1
xorps %xmm2, %xmm2
cvtss2sd (%rbx,%rax,4), %xmm2
mulsd %xmm0, %xmm1
addsd %xmm2, %xmm1
cvtsd2ss %xmm1, %xmm1
movss %xmm1, (%rbx,%rax,4)
incq %rax
cmpq %rax, %r12
jne 0x31b35
jmp 0x31b96
testq %r12, %r12
je 0x31c95
xorl %eax, %eax
xorps %xmm1, %xmm1
cvtss2sd (%rbx,%rax,4), %xmm1
divsd %xmm0, %xmm1
cvtsd2ss %xmm1, %xmm1
movss %xmm1, (%rbx,%rax,4)
subss (%r13,%rax,4), %xmm1
movss %xmm1, (%rbx,%rax,4)
incq %rax
cmpq %rax, %r12
jne 0x31b6d
movq %r13, 0x30(%rsp)
cmpb $0x0, 0xf(%rsp)
jne 0x31bf9
xorl %r13d, %r13d
movss (%rbx,%r13,4), %xmm0
ucomiss %xmm4, %xmm0
jae 0x31bca
movss 0x824(%rip), %xmm1      # 0x323dc
ucomiss %xmm0, %xmm1
xorps 0x44e(%rip), %xmm0      # 0x32010
jb 0x31bd2
sqrtss %xmm0, %xmm0
jmp 0x31bda
jb 0x31be3
sqrtss %xmm0, %xmm0
jmp 0x31beb
callq 0x95e0
xorps %xmm4, %xmm4
xorps 0x42f(%rip), %xmm0      # 0x32010
jmp 0x31beb
callq 0x95e0
xorps %xmm4, %xmm4
movss %xmm0, (%rbx,%r13,4)
incq %r13
cmpq %r13, %r12
jne 0x31ba5
movl 0x90(%rsp), %eax
testb $0x1, %al
movq 0x30(%rsp), %r13
je 0x31c72
xorpd %xmm0, %xmm0
testq %r12, %r12
je 0x31c29
xorl %eax, %eax
movss (%rbx,%rax,4), %xmm1
mulss %xmm1, %xmm1
addss %xmm1, %xmm0
incq %rax
cmpq %rax, %r12
jne 0x31c14
ucomiss %xmm4, %xmm0
jb 0x31c34
sqrtss %xmm0, %xmm0
jmp 0x31c3c
callq 0x95e0
xorps %xmm4, %xmm4
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
ucomisd 0x785(%rip), %xmm1      # 0x323d0
ja 0x31c55
movss 0x78b(%rip), %xmm0      # 0x323e0
testq %r12, %r12
je 0x31c72
xorl %eax, %eax
movss (%rbx,%rax,4), %xmm1
divss %xmm0, %xmm1
movss %xmm1, (%rbx,%rax,4)
incq %rax
cmpq %rax, %r12
jne 0x31c5c
movq 0x10(%rsp), %rcx
incq %rcx
addq %r14, %rbx
addq %r14, %r13
movq %rcx, 0x10(%rsp)
cmpq 0x28(%rsp), %rcx
jne 0x31a94
jmp 0x31f22
xorpd %xmm0, %xmm0
testb $0x1, %al
jne 0x31c29
jmp 0x31c72
movq %r15, %rax
imulq %r12, %rax
movq %rax, 0x40(%rsp)
leaq (,%rax,8), %rdx
xorl %esi, %esi
callq 0x9400
movslq %r15d, %rax
movq %rax, 0x28(%rsp)
testq %rax, %rax
jle 0x31ed2
movslq %ebx, %rbp
testq %r12, %r12
sete %al
movl 0x90(%rsp), %ecx
testb $0x2, %cl
sete %dl
testb $0x1, %cl
sete %cl
orb %al, %dl
movb %dl, 0xf(%rsp)
orb %al, %cl
movb %cl, 0x20(%rsp)
leaq (,%r12,8), %rbx
movq $0x0, 0x10(%rsp)
xorpd %xmm3, %xmm3
movq 0x18(%rsp), %r14
testq %rbp, %rbp
jle 0x31dec
movq 0x88(%rsp), %rax
movq 0x10(%rsp), %rcx
leaq (%rax,%rcx,8), %rax
xorpd %xmm0, %xmm0
movq 0x38(%rsp), %rcx
xorl %edx, %edx
movq %rdx, %rsi
imulq %r15, %rsi
movsd (%rax,%rsi,8), %xmm1
ucomisd %xmm3, %xmm1
jbe 0x31d6c
addsd %xmm1, %xmm0
testq %r12, %r12
je 0x31d6c
xorl %esi, %esi
movsd (%rcx,%rsi,8), %xmm2
mulsd %xmm1, %xmm2
addsd (%r14,%rsi,8), %xmm2
movsd %xmm2, (%r14,%rsi,8)
incq %rsi
cmpq %rsi, %r12
jne 0x31d4f
incq %rdx
addq %rbx, %rcx
cmpq %rbp, %rdx
jne 0x31d32
ucomisd %xmm3, %xmm0
jbe 0x31dec
movl 0x90(%rsp), %eax
testb $0x8, %al
jne 0x31dbc
testq %r12, %r12
je 0x31eb4
xorpd 0x337(%rip), %xmm0      # 0x320d0
xorl %eax, %eax
movsd (%r13,%rax,8), %xmm1
mulsd %xmm0, %xmm1
addsd (%r14,%rax,8), %xmm1
movsd %xmm1, (%r14,%rax,8)
incq %rax
cmpq %rax, %r12
jne 0x31d9b
jmp 0x31dec
testq %r12, %r12
je 0x31eb4
xorl %eax, %eax
movsd (%r14,%rax,8), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, (%r14,%rax,8)
subsd (%r13,%rax,8), %xmm1
movsd %xmm1, (%r14,%rax,8)
incq %rax
cmpq %rax, %r12
jne 0x31dc7
movq %r13, 0x30(%rsp)
cmpb $0x0, 0xf(%rsp)
jne 0x31e55
xorl %r13d, %r13d
movsd (%r14,%r13,8), %xmm0
ucomisd %xmm3, %xmm0
jae 0x31e23
movsd 0x5b9(%rip), %xmm1      # 0x323c8
ucomisd %xmm0, %xmm1
xorpd 0x2b5(%rip), %xmm0      # 0x320d0
jb 0x31e2b
sqrtsd %xmm0, %xmm0
jmp 0x31e34
jb 0x31e3e
sqrtsd %xmm0, %xmm0
jmp 0x31e47
callq 0x9990
xorpd %xmm3, %xmm3
xorpd 0x294(%rip), %xmm0      # 0x320d0
jmp 0x31e47
callq 0x9990
xorpd %xmm3, %xmm3
movsd %xmm0, (%r14,%r13,8)
incq %r13
cmpq %r13, %r12
jne 0x31dfb
cmpb $0x0, 0x20(%rsp)
movq 0x30(%rsp), %r13
jne 0x31eb4
xorpd %xmm0, %xmm0
xorl %eax, %eax
movsd (%r14,%rax,8), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm1, %xmm0
incq %rax
cmpq %rax, %r12
jne 0x31e67
ucomisd %xmm3, %xmm0
jb 0x31e89
sqrtsd %xmm0, %xmm0
jmp 0x31e92
callq 0x9990
xorpd %xmm3, %xmm3
maxsd 0x536(%rip), %xmm0      # 0x323d0
xorl %eax, %eax
movsd (%r14,%rax,8), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, (%r14,%rax,8)
incq %rax
cmpq %rax, %r12
jne 0x31e9c
movq 0x10(%rsp), %rcx
incq %rcx
addq %rbx, %r14
addq %rbx, %r13
movq %rcx, 0x10(%rsp)
cmpq 0x28(%rsp), %rcx
jne 0x31d0d
movl 0x90(%rsp), %ecx
andl $0x4, %ecx
shrl $0x2, %ecx
movq 0x40(%rsp), %r14
testq %r14, %r14
sete %al
orb %cl, %al
movq 0x18(%rsp), %rbx
jne 0x31fcb
xorpd %xmm0, %xmm0
xorl %eax, %eax
movsd (%rbx,%rax,8), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm1, %xmm0
incq %rax
cmpq %rax, %r14
jne 0x31efd
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x31f69
sqrtsd %xmm0, %xmm0
jmp 0x31f6e
movl 0x90(%rsp), %eax
testb $0x4, %al
movq 0x18(%rsp), %rbx
movq 0x20(%rsp), %r14
jne 0x31fcb
xorps %xmm1, %xmm1
xorpd %xmm0, %xmm0
testq %r14, %r14
je 0x31f5e
xorl %eax, %eax
movss (%rbx,%rax,4), %xmm2
mulss %xmm2, %xmm2
addss %xmm2, %xmm0
incq %rax
cmpq %rax, %r14
jne 0x31f49
ucomiss %xmm1, %xmm0
jb 0x31f90
sqrtss %xmm0, %xmm0
jmp 0x31f95
callq 0x9990
maxsd 0x45a(%rip), %xmm0      # 0x323d0
xorl %eax, %eax
movsd (%rbx,%rax,8), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, (%rbx,%rax,8)
incq %rax
cmpq %rax, %r14
jne 0x31f78
jmp 0x31fcb
callq 0x95e0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
ucomisd 0x42c(%rip), %xmm1      # 0x323d0
ja 0x31fae
movss 0x432(%rip), %xmm0      # 0x323e0
testq %r14, %r14
je 0x31fcb
xorl %eax, %eax
movss (%rbx,%rax,4), %xmm1
divss %xmm0, %xmm1
movss %xmm1, (%rbx,%rax,4)
incq %rax
cmpq %rax, %r14
jne 0x31fb5
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x90b0