Function at 0x101cbaf0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffe0
sub esp, 0x1b8
mov eax, dword [0x10a78b80]
xor eax, esp
mov dword [esp + 0x1b4], eax
mov eax, dword [ebp + 0x2c]
mov edx, dword [ebp + 0x20]
mov dword [esp + 0x54], eax
mov eax, dword [ebp + 0x1c]
vmovdqu ymm5, ymmword [0x10859be0]
push esi
push edi
movzx ecx, byte [eax*2 + 0x10858441]
mov edi, 2
movzx eax, byte [eax*2 + 0x10858440]
shl ecx, 0x10
or ecx, eax
movzx eax, byte [edx*2 + 0x10858440]
vmovd xmm0, ecx
movzx ecx, byte [edx*2 + 0x10858441]
shl ecx, 0x10
or ecx, eax
mov eax, dword [ebp + 0x24]
vpbroadcastd ymm6, xmm0
vmovd xmm0, ecx
mov ecx, dword [ebp + 8]
lea esi, [eax + eax]
add ecx, ecx
mov eax, dword [ebp + 0x18]
vpbroadcastd ymm7, xmm0
vxorpd xmm0, xmm0, xmm0
shr eax, 4
cmp dword [ebp + 0x1c], 0
mov dword [esp + 0x48], ecx
mov dword [esp + 0x44], esi
vmovlpd qword [esp + 0x28], xmm0
vmovlpd qword [esp + 0x18], xmm0
mov dword [esp + 0x50], eax
jne 0x101cc098
test edx, edx
jne 0x101cbd46
mov edi, dword [ebp + 0x14]
cmp edi, 8
mov dword [esp + 0x4c], 4
sete dl
mov dword [esp + 0x3c], 0
inc edx
cmp edi, 4
cmove edx, dword [esp + 0x4c]
imul eax, edx
mov dword [esp + 0x4c], edx
imul eax, edi
shr eax, 4
mov dword [esp + 0x50], eax
test eax, eax
je 0x101cbd1e
mov eax, edx
xor edx, edx
imul eax, edi
vmovdqu ymm6, ymmword [0x10823f00]
vpxor xmm4, xmm4, xmm4
shr eax, 4
mov dword [esp + 0x40], eax
mov eax, 0x10
div dword [esp + 0x4c]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x4c], eax
lea eax, [edx + edx]
mov edx, dword [ebp + 0x28]
mov dword [esp + 0x38], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], edx
xor edx, edx
mov dword [esp + 0x18], eax
nop dword [eax]
mov eax, edx
xor edx, edx
div dword [esp + 0x40]
mov eax, dword [esp + 0x44]
test edx, edx
mov edx, dword [esp + 0x38]
vmovdqu ymm3, ymm4
vmovdqu ymm2, ymm4
lea edi, [eax + 0x20]
cmovne edi, eax
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x48]
lea eax, [edi + 0x20]
cmovne eax, edi
cmovne edi, ecx
mov dword [esp + 0x48], eax
mov ecx, edi
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x54]
cmovne eax, esi
mov esi, eax
mov eax, dword [esp + 0x4c]
nop dword [eax + eax]
vmovdqu ymm1, ymmword [ecx]
vmovdqu ymm0, ymmword [esi]
vpsubw ymm0, ymm1, ymm0
vpaddw ymm3, ymm0, ymm3
add ecx, edx
add esi, edi
vpmaddwd ymm0, ymm0, ymm0
vpaddd ymm2, ymm0, ymm2
sub eax, 1
jne 0x101cbc90
vpmaddwd ymm0, ymm3, ymm6
vpunpckldq ymm1, ymm0, ymm2
vpunpckhdq ymm0, ymm0, ymm2
mov edi, dword [esp + 0x48]
vpaddd ymm1, ymm0, ymm1
vextracti128 xmm0, ymm1, 1
vpaddd xmm1, xmm0, xmm1
vpsrldq xmm0, xmm1, 8
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
cdq
add dword [esp + 0x28], eax
vpextrd eax, xmm0, 1
adc dword [esp + 0x34], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
adc dword [esp + 0x24], edx
mov edx, dword [esp + 0x3c]
inc edx
mov dword [esp + 0x48], edi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x44], eax
cmp edx, dword [esp + 0x50]
jb 0x101cbc40
mov edi, dword [ebp + 0x14]
bsr ecx, edi
jmp 0x101ccbc9
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], edx
mov dword [esp + 0x18], eax
bsr ecx, edi
jmp 0x101ccbc9
mov dword [esp + 0x38], 0
cmp edx, 4
jne 0x101cbee1
xor edx, edx
mov dword [esp + 0x14], 4
cmp dword [ebp + 0x14], 8
sete dl
inc edx
cmp dword [ebp + 0x14], 4
cmove edx, dword [esp + 0x14]
imul eax, edx
mov dword [esp + 0x14], edx
imul eax, dword [ebp + 0x14]
shr eax, 4
mov dword [esp + 0x50], eax
test eax, eax
je 0x101ccba3
mov eax, dword [ebp + 0xc]
add eax, eax
mov dword [esp + 0x3c], eax
mov eax, edx
imul eax, dword [ebp + 0x14]
xor edx, edx
vmovdqu ymm6, ymmword [0x10823f00]
vpxor xmm5, xmm5, xmm5
shr eax, 4
mov dword [esp + 0x54], eax
mov eax, 0x10
div dword [esp + 0x14]
mov edx, dword [ebp + 0x28]
mov dword [esp + 0x14], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], edx
nop dword [eax + eax]
xor edx, edx
div dword [esp + 0x54]
test edx, edx
jne 0x101cbe27
mov eax, dword [esp + 0x48]
mov ecx, eax
add eax, 0x20
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x44]
mov esi, eax
vmovdqu ymm0, ymmword [ecx]
add ecx, dword [esp + 0x3c]
add eax, 0x20
mov dword [esp + 0x44], eax
xor edi, edi
vmovdqu ymmword [esp + 0xa0], ymm0
mov eax, dword [esp + 0x14]
vmovdqu ymm4, ymm5
vmovdqu ymm3, ymm5
mov dword [esp + 0x40], eax
nop word [eax + eax]
vmovdqu ymm2, ymmword [ecx]
vmovdqu ymm1, ymmword [esi]
xor eax, eax
mov edx, edi
test edi, edi
sete al
add ecx, dword [esp + 0x3c]
add esi, dword [esp + 0x4c]
mov edi, eax
shl eax, 5
shl edx, 5
sub dword [esp + 0x40], 1
vmovdqu ymmword [esp + eax + 0xa0], ymm2
vpavgw ymm0, ymm2, ymmword [esp + edx + 0xa0]
vpsubw ymm0, ymm0, ymm1
vpaddw ymm4, ymm0, ymm4
vpmaddwd ymm0, ymm0, ymm0
vpaddd ymm3, ymm0, ymm3
jne 0x101cbe40
vpmaddwd ymm0, ymm4, ymm6
vpunpckldq ymm1, ymm0, ymm3
vpunpckhdq ymm0, ymm0, ymm3
vpaddd ymm1, ymm0, ymm1
vextracti128 xmm0, ymm1, 1
vpaddd xmm1, xmm0, xmm1
vpsrldq xmm0, xmm1, 8
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
cdq
add dword [esp + 0x28], eax
vpextrd eax, xmm0, 1
adc dword [esp + 0x34], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
adc dword [esp + 0x24], edx
inc eax
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0x50]
jb 0x101cbdf0
jmp 0x101ccbc3
xor edx, edx
mov dword [esp + 0x14], 4
cmp dword [ebp + 0x14], 8
sete dl
inc edx
cmp dword [ebp + 0x14], 4
cmove edx, dword [esp + 0x14]
imul eax, edx
mov dword [esp + 0x14], edx
imul eax, dword [ebp + 0x14]
shr eax, 4
mov dword [esp + 0x50], eax
test eax, eax
je 0x101ccba3
mov eax, dword [ebp + 0xc]
add eax, eax
mov dword [esp + 0x40], eax
mov eax, edx
imul eax, dword [ebp + 0x14]
xor edx, edx
vpxor xmm1, xmm1, xmm1
shr eax, 4
mov dword [esp + 0x54], eax
mov eax, 0x10
div dword [esp + 0x14]
mov edx, dword [ebp + 0x28]
mov dword [esp + 0x14], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], edx
nop dword [eax]
xor edx, edx
div dword [esp + 0x54]
test edx, edx
jne 0x101cbfa7
mov eax, dword [esp + 0x48]
mov ecx, eax
add eax, 0x20
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x44]
mov esi, eax
vmovdqu ymm0, ymmword [ecx]
add ecx, dword [esp + 0x40]
add eax, 0x20
mov dword [esp + 0x44], eax
xor edi, edi
vmovdqu ymmword [esp + 0xa0], ymm0
mov eax, dword [esp + 0x14]
vmovdqu ymmword [esp + 0x60], ymm1
vpxor xmm6, xmm6, xmm6
mov dword [esp + 0x3c], eax
nop dword [eax]
vmovdqu ymm4, ymmword [ecx]
xor eax, eax
mov edx, edi
vmovdqu ymm3, ymmword [esi]
test edi, edi
sete al
add ecx, dword [esp + 0x40]
add esi, dword [esp + 0x4c]
mov edi, eax
shl eax, 5
shl edx, 5
sub dword [esp + 0x3c], 1
vmovdqu ymmword [esp + eax + 0xa0], ymm4
vmovdqu ymm1, ymmword [esp + edx + 0xa0]
vpunpckhwd ymm0, ymm1, ymm4
vpmaddwd ymm0, ymm0, ymm7
vpaddd ymm0, ymm0, ymm5
vpsrld ymm2, ymm0, 7
vpunpcklwd ymm0, ymm1, ymm4
vpmaddwd ymm0, ymm0, ymm7
vpaddd ymm0, ymm0, ymm5
vpsrld ymm0, ymm0, 7
vpackusdw ymm0, ymm0, ymm2
vpsubw ymm0, ymm0, ymm3
vpaddw ymm1, ymm0, ymmword [esp + 0x60]
vpmaddwd ymm0, ymm0, ymm0
vmovdqu ymmword [esp + 0x60], ymm1
vpaddd ymm6, ymm0, ymm6
jne 0x101cbfc0
vpmaddwd ymm0, ymm1, ymmword [0x10823f00]
vpunpckldq ymm1, ymm0, ymm6
vpunpckhdq ymm0, ymm0, ymm6
vpaddd ymm1, ymm0, ymm1
vextracti128 xmm0, ymm1, 1
vpaddd xmm1, xmm0, xmm1
vpsrldq xmm0, xmm1, 8
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
cdq
add dword [esp + 0x28], eax
vpextrd eax, xmm0, 1
adc dword [esp + 0x34], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
adc dword [esp + 0x24], edx
inc eax
mov dword [esp + 0x38], eax
vpxor xmm1, xmm1, xmm1
cmp eax, dword [esp + 0x50]
jb 0x101cbf70
jmp 0x101ccbc3
cmp dword [ebp + 0x1c], 4
jne 0x101cc5d7
mov dword [esp + 0x38], 0
test edx, edx
jne 0x101cc277
cmp dword [ebp + 0x14], 8
mov dword [esp + 0x14], 4
sete dl
inc edx
cmp dword [ebp + 0x14], 4
cmove edx, dword [esp + 0x14]
imul eax, edx
mov dword [esp + 0x14], edx
imul eax, dword [ebp + 0x14]
shr eax, 4
mov dword [esp + 0x50], eax
test eax, eax
je 0x101ccba3
mov eax, dword [ebp + 0xc]
add eax, eax
mov dword [esp + 0x40], eax
mov eax, edx
imul eax, dword [ebp + 0x14]
xor edx, edx
vpxor xmm2, xmm2, xmm2
shr eax, 4
mov dword [esp + 0x54], eax
mov eax, 0x10
div dword [esp + 0x14]
mov edx, dword [ebp + 0x28]
mov dword [esp + 0x14], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], edx
nop dword [eax]
xor edx, edx
div dword [esp + 0x54]
test edx, edx
jne 0x101cc180
mov eax, dword [esp + 0x48]
mov ecx, eax
add eax, 0x20
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x44]
mov esi, eax
vmovdqu ymm1, ymmword [ecx]
vmovdqu ymm0, ymmword [ecx + 2]
add ecx, dword [esp + 0x40]
add eax, 0x20
vpavgw ymm0, ymm0, ymm1
mov dword [esp + 0x44], eax
xor edi, edi
vmovdqu ymmword [esp + 0xa0], ymm0
mov eax, dword [esp + 0x14]
vmovdqu ymmword [esp + 0x60], ymm2
vpxor xmm6, xmm6, xmm6
mov dword [esp + 0x3c], eax
vmovdqu ymm1, ymmword [ecx]
vmovdqu ymm0, ymmword [ecx + 2]
xor eax, eax
mov edx, edi
vmovdqu ymm3, ymmword [esi]
vpavgw ymm4, ymm0, ymm1
test edi, edi
sete al
add ecx, dword [esp + 0x40]
add esi, dword [esp + 0x4c]
mov edi, eax
shl eax, 5
shl edx, 5
sub dword [esp + 0x3c], 1
vmovdqu ymmword [esp + eax + 0xa0], ymm4
vmovdqu ymm1, ymmword [esp + edx + 0xa0]
vpunpckhwd ymm0, ymm1, ymm4
vpmaddwd ymm0, ymm0, ymm7
vpaddd ymm0, ymm0, ymm5
vpsrld ymm2, ymm0, 7
vpunpcklwd ymm0, ymm1, ymm4
vpmaddwd ymm0, ymm0, ymm7
vpaddd ymm0, ymm0, ymm5
vpsrld ymm0, ymm0, 7
vpackusdw ymm0, ymm0, ymm2
vpsubw ymm0, ymm0, ymm3
vpaddw ymm1, ymm0, ymmword [esp + 0x60]
vpmaddwd ymm0, ymm0, ymm0
vmovdqu ymmword [esp + 0x60], ymm1
vpaddd ymm6, ymm0, ymm6
jne 0x101cc192
vpmaddwd ymm0, ymm1, ymmword [0x10823f00]
vpunpckldq ymm1, ymm0, ymm6
vpunpckhdq ymm0, ymm0, ymm6
vpaddd ymm1, ymm0, ymm1
vextracti128 xmm0, ymm1, 1
vpaddd xmm1, xmm0, xmm1
vpsrldq xmm0, xmm1, 8
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
cdq
add dword [esp + 0x28], eax
vpextrd eax, xmm0, 1
adc dword [esp + 0x34], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
adc dword [esp + 0x24], edx
inc eax
mov dword [esp + 0x38], eax
vpxor xmm2, xmm2, xmm2
cmp eax, dword [esp + 0x50]
jb 0x101cc140
jmp 0x101ccbc3
cmp edx, 4
jne 0x101cc40e
xor edx, edx
mov dword [esp + 0x14], 4
cmp dword [ebp + 0x14], 8
sete dl
inc edx
cmp dword [ebp + 0x14], 4
cmove edx, dword [esp + 0x14]
imul eax, edx
mov dword [esp + 0x14], edx
imul eax, dword [ebp + 0x14]
shr eax, 4
mov dword [esp + 0x50], eax
test eax, eax
je 0x101ccba3
mov eax, dword [ebp + 0xc]
add eax, eax
mov dword [esp + 0x40], eax
mov eax, edx
imul eax, dword [ebp + 0x14]
xor edx, edx
vpxor xmm5, xmm5, xmm5
shr eax, 4
mov dword [esp + 0x54], eax
mov eax, 0x10
div dword [esp + 0x14]
mov edx, dword [ebp + 0x28]
mov dword [esp + 0x14], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], edx
nop dword [eax]
xor edx, edx
div dword [esp + 0x54]
test edx, edx
jne 0x101cc350
mov eax, dword [esp + 0x48]
mov ecx, eax
add eax, 0x20
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x44]
mov esi, eax
vmovdqu ymm1, ymmword [ecx]
vmovdqu ymm0, ymmword [ecx + 2]
add ecx, dword [esp + 0x40]
add eax, 0x20
vpavgw ymm0, ymm0, ymm1
mov dword [esp + 0x44], eax
xor edi, edi
vmovdqu ymmword [esp + 0xa0], ymm0
mov eax, dword [esp + 0x14]
vmovdqu ymm4, ymm5
vmovdqu ymm3, ymm5
mov dword [esp + 0x3c], eax
vmovdqu ymm1, ymmword [ecx]
vmovdqu ymm0, ymmword [ecx + 2]
xor eax, eax
mov edx, edi
test edi, edi
vpavgw ymm2, ymm0, ymm1
vmovdqu ymm1, ymmword [esi]
sete al
add ecx, dword [esp + 0x40]
add esi, dword [esp + 0x4c]
mov edi, eax
shl eax, 5
shl edx, 5
sub dword [esp + 0x3c], 1
vmovdqu ymmword [esp + eax + 0xa0], ymm2
vpavgw ymm0, ymm2, ymmword [esp + edx + 0xa0]
vpsubw ymm0, ymm0, ymm1
vpaddw ymm4, ymm0, ymm4
vpmaddwd ymm0, ymm0, ymm0
vpaddd ymm3, ymm0, ymm3
jne 0x101cc360
vpmaddwd ymm0, ymm4, ymmword [0x10823f00]
vpunpckldq ymm1, ymm0, ymm3
vpunpckhdq ymm0, ymm0, ymm3
vpaddd ymm1, ymm0, ymm1
vextracti128 xmm0, ymm1, 1
vpaddd xmm1, xmm0, xmm1
vpsrldq xmm0, xmm1, 8
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
cdq
add dword [esp + 0x28], eax
vpextrd eax, xmm0, 1
adc dword [esp + 0x34], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
adc dword [esp + 0x24], edx
inc eax
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0x50]
jb 0x101cc310
jmp 0x101ccbc3
xor edx, edx
mov dword [esp + 0x14], 4
cmp dword [ebp + 0x14], 8
sete dl
inc edx
cmp dword [ebp + 0x14], 4
cmove edx, dword [esp + 0x14]
imul eax, edx
mov dword [esp + 0x14], edx
imul eax, dword [ebp + 0x14]
shr eax, 4
mov dword [esp + 0x50], eax
test eax, eax
je 0x101ccba3
mov eax, dword [ebp + 0xc]
add eax, eax
mov dword [esp + 0x40], eax
mov eax, edx
imul eax, dword [ebp + 0x14]
xor edx, edx
vpxor xmm2, xmm2, xmm2
shr eax, 4
mov dword [esp + 0x54], eax
mov eax, 0x10
div dword [esp + 0x14]
mov edx, dword [ebp + 0x28]
mov dword [esp + 0x14], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], edx
nop word [eax + eax]
xor edx, edx
div dword [esp + 0x54]
test edx, edx
jne 0x101cc4e0
mov eax, dword [esp + 0x48]
mov ecx, eax
add eax, 0x20
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x44]
mov esi, eax
vmovdqu ymm1, ymmword [ecx]
vmovdqu ymm0, ymmword [ecx + 2]
add ecx, dword [esp + 0x40]
add eax, 0x20
vpavgw ymm0, ymm0, ymm1
mov dword [esp + 0x44], eax
xor edi, edi
vmovdqu ymmword [esp + 0xa0], ymm0
mov eax, dword [esp + 0x14]
vmovdqu ymmword [esp + 0x60], ymm2
vpxor xmm6, xmm6, xmm6
mov dword [esp + 0x3c], eax
vmovdqu ymm1, ymmword [ecx]
vmovdqu ymm0, ymmword [ecx + 2]
xor eax, eax
mov edx, edi
vmovdqu ymm3, ymmword [esi]
vpavgw ymm4, ymm0, ymm1
test edi, edi
sete al
add ecx, dword [esp + 0x40]
add esi, dword [esp + 0x4c]
mov edi, eax
shl eax, 5
shl edx, 5
sub dword [esp + 0x3c], 1
vmovdqu ymmword [esp + eax + 0xa0], ymm4
vmovdqu ymm1, ymmword [esp + edx + 0xa0]
vpunpckhwd ymm0, ymm1, ymm4
vpmaddwd ymm0, ymm0, ymm7
vpaddd ymm0, ymm0, ymm5
vpsrld ymm2, ymm0, 7
vpunpcklwd ymm0, ymm1, ymm4
vpmaddwd ymm0, ymm0, ymm7
vpaddd ymm0, ymm0, ymm5
vpsrld ymm0, ymm0, 7
vpackusdw ymm0, ymm0, ymm2
vpsubw ymm0, ymm0, ymm3
vpaddw ymm1, ymm0, ymmword [esp + 0x60]
vpmaddwd ymm0, ymm0, ymm0
vmovdqu ymmword [esp + 0x60], ymm1
vpaddd ymm6, ymm0, ymm6
jne 0x101cc4f2
vpmaddwd ymm0, ymm1, ymmword [0x10823f00]
vpunpckldq ymm1, ymm0, ymm6
vpunpckhdq ymm0, ymm0, ymm6
vpaddd ymm1, ymm0, ymm1
vextracti128 xmm0, ymm1, 1
vpaddd xmm1, xmm0, xmm1
vpsrldq xmm0, xmm1, 8
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
cdq
add dword [esp + 0x28], eax
vpextrd eax, xmm0, 1
adc dword [esp + 0x34], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
adc dword [esp + 0x24], edx
inc eax
mov dword [esp + 0x38], eax
vpxor xmm2, xmm2, xmm2
cmp eax, dword [esp + 0x50]
jb 0x101cc4a0
jmp 0x101ccbc3
test edx, edx
jne 0x101cc78a
mov edi, dword [ebp + 0x14]
cmp edi, 8
mov dword [esp + 0x14], 4
sete dl
mov dword [esp + 0x40], 0
inc edx
cmp edi, 4
cmove edx, dword [esp + 0x14]
imul eax, edx
mov dword [esp + 0x14], edx
imul eax, edi
shr eax, 4
mov dword [esp + 0x50], eax
test eax, eax
je 0x101cbd1e
mov eax, edx
xor edx, edx
imul eax, edi
shr eax, 4
mov dword [esp + 0x54], eax
mov eax, 0x10
div dword [esp + 0x14]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x14], eax
lea eax, [edx + edx]
mov edx, dword [ebp + 0x28]
mov dword [esp + 0x4c], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], edx
xor edx, edx
mov dword [esp + 0x18], eax
nop dword [eax + eax]
mov eax, edx
xor edx, edx
div dword [esp + 0x54]
mov eax, dword [esp + 0x44]
test edx, edx
mov edx, dword [esp + 0x4c]
vmovdqu ymmword [esp + 0x60], ymm0
vpxor xmm7, xmm7, xmm7
lea edi, [eax + 0x20]
cmovne edi, eax
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x48]
lea eax, [edi + 0x20]
cmovne eax, edi
cmovne edi, ecx
mov dword [esp + 0x38], eax
mov ecx, edi
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x3c]
cmovne eax, esi
mov esi, eax
mov eax, dword [esp + 0x14]
nop word [eax + eax]
vmovdqu ymm3, ymmword [ecx]
vmovdqu ymm2, ymmword [ecx + 2]
vmovdqu ymm4, ymmword [esi]
vpunpckhwd ymm0, ymm3, ymm2
vpmaddwd ymm0, ymm0, ymm6
vpaddd ymm0, ymm0, ymm5
vpsrld ymm1, ymm0, 7
vpunpcklwd ymm0, ymm3, ymm2
vpmaddwd ymm0, ymm0, ymm6
vpaddd ymm0, ymm0, ymm5
vpsrld ymm0, ymm0, 7
vpackusdw ymm0, ymm0, ymm1
vpsubw ymm0, ymm0, ymm4
vpaddw ymm1, ymm0, ymmword [esp + 0x60]
add ecx, edx
add esi, edi
vpmaddwd ymm0, ymm0, ymm0
vmovdqu ymmword [esp + 0x60], ymm1
vpaddd ymm7, ymm0, ymm7
sub eax, 1
jne 0x101cc6c0
vpmaddwd ymm0, ymm1, ymmword [0x10823f00]
vpunpckldq ymm1, ymm0, ymm7
vpunpckhdq ymm0, ymm0, ymm7
vpaddd ymm1, ymm0, ymm1
mov edi, dword [esp + 0x38]
vextracti128 xmm0, ymm1, 1
vpaddd xmm1, xmm0, xmm1
vpsrldq xmm0, xmm1, 8
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
cdq
add dword [esp + 0x28], eax
vpextrd eax, xmm0, 1
adc dword [esp + 0x34], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
adc dword [esp + 0x24], edx
mov edx, dword [esp + 0x40]
inc edx
mov dword [esp + 0x48], edi
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
vpxor xmm0, xmm0, xmm0
cmp edx, dword [esp + 0x50]
jb 0x101cc670
mov edi, dword [ebp + 0x14]
bsr ecx, edi
jmp 0x101ccbc9
cmp edx, 4
jne 0x101cc975
xor edx, edx
mov dword [esp + 0x58], 4
cmp dword [ebp + 0x14], 8
mov dword [esp + 0x38], 0
sete dl
inc edx
cmp dword [ebp + 0x14], 4
cmove edx, dword [esp + 0x58]
imul eax, edx
mov dword [esp + 0x58], edx
imul eax, dword [ebp + 0x14]
shr eax, 4
mov dword [esp + 0x50], eax
test eax, eax
je 0x101ccba3
mov eax, dword [ebp + 0xc]
add eax, eax
mov dword [esp + 0x40], eax
mov eax, edx
imul eax, dword [ebp + 0x14]
xor edx, edx
vpxor xmm4, xmm4, xmm4
shr eax, 4
mov dword [esp + 0x14], eax
mov eax, 0x10
div dword [esp + 0x58]
mov edx, dword [ebp + 0x28]
mov dword [esp + 0x58], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], edx
xor edx, edx
div dword [esp + 0x14]
test edx, edx
jne 0x101cc88a
mov eax, dword [esp + 0x48]
mov ecx, eax
add eax, 0x20
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x44]
mov esi, eax
vmovdqu ymm3, ymmword [ecx]
vmovdqu ymm2, ymmword [ecx + 2]
add ecx, dword [esp + 0x40]
add eax, 0x20
vpunpckhwd ymm0, ymm3, ymm2
vpmaddwd ymm0, ymm0, ymm6
vpaddd ymm0, ymm0, ymm5
vpsrld ymm1, ymm0, 7
vpunpcklwd ymm0, ymm3, ymm2
vpmaddwd ymm0, ymm0, ymm6
vpaddd ymm0, ymm0, ymm5
vpsrld ymm0, ymm0, 7
vpackusdw ymm0, ymm0, ymm1
mov dword [esp + 0x44], eax
xor edi, edi
vmovdqu ymmword [esp + 0xa0], ymm0
mov eax, dword [esp + 0x58]
vpxor xmm7, xmm7, xmm7
mov dword [esp + 0x3c], eax
nop word [eax + eax]
vmovdqu ymm2, ymmword [ecx + 2]
vmovdqu ymm3, ymmword [ecx]
vpunpckhwd ymm0, ymm3, ymm2
vpmaddwd ymm0, ymm0, ymm6
vpaddd ymm0, ymm0, ymm5
vpsrld ymm1, ymm0, 7
xor eax, eax
mov edx, edi
test edi, edi
vpunpcklwd ymm0, ymm3, ymm2
sete al
add ecx, dword [esp + 0x40]
vpmaddwd ymm0, ymm0, ymm6
vpaddd ymm0, ymm0, ymm5
vpsrld ymm0, ymm0, 7
mov edi, eax
shl edx, 5
vpackusdw ymm2, ymm0, ymm1
vmovdqu ymm1, ymmword [esi]
add esi, dword [esp + 0x54]
shl eax, 5
sub dword [esp + 0x3c], 1
vmovdqu ymmword [esp + eax + 0xa0], ymm2
vpavgw ymm0, ymm2, ymmword [esp + edx + 0xa0]
vpsubw ymm0, ymm0, ymm1
vpaddw ymm7, ymm0, ymm7
vpmaddwd ymm0, ymm0, ymm0
vpaddd ymm4, ymm0, ymm4
jne 0x101cc8a0
vpmaddwd ymm0, ymm7, ymmword [0x10823f00]
vpunpckldq ymm1, ymm0, ymm4
vpunpckhdq ymm0, ymm0, ymm4
vpaddd ymm1, ymm0, ymm1
vextracti128 xmm0, ymm1, 1
vpaddd xmm1, xmm0, xmm1
vpsrldq xmm0, xmm1, 8
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
cdq
add dword [esp + 0x28], eax
vpextrd eax, xmm0, 1
adc dword [esp + 0x34], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
adc dword [esp + 0x24], edx
inc eax
mov dword [esp + 0x38], eax
vpxor xmm4, xmm4, xmm4
cmp eax, dword [esp + 0x50]
jb 0x101cc827
jmp 0x101ccbc3
xor eax, eax
mov dword [esp + 0x58], 4
cmp dword [ebp + 0x14], 8
mov dword [esp + 0x3c], 0
sete al
inc eax
cmp dword [ebp + 0x14], 4
cmove eax, dword [esp + 0x58]
xor edx, edx
mov dword [esp + 0x38], eax
mov eax, 0x10
div dword [esp + 0x38]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x50]
imul eax, edx
imul eax, dword [ebp + 0x14]
shr eax, 4
mov dword [esp + 0x50], eax
test eax, eax
je 0x101ccba3
imul edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0xc]
add eax, eax
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0x28]
shr edx, 4
add eax, eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x3c]
vpxor xmm4, xmm4, xmm4
mov dword [esp + 0x24], edx
nop
xor edx, edx
div dword [esp + 0x38]
test edx, edx
jne 0x101cca73
mov eax, dword [esp + 0x48]
mov ecx, eax
add eax, 0x20
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x44]
mov esi, eax
vmovdqu ymm3, ymmword [ecx]
vmovdqu ymm2, ymmword [ecx + 2]
add ecx, dword [esp + 0x40]
add eax, 0x20
vpunpckhwd ymm0, ymm3, ymm2
vpmaddwd ymm0, ymm0, ymm6
vpaddd ymm0, ymm0, ymm5
vpsrld ymm1, ymm0, 7
vpunpcklwd ymm0, ymm3, ymm2
vpmaddwd ymm0, ymm0, ymm6
vpaddd ymm0, ymm0, ymm5
vpsrld ymm0, ymm0, 7
vpackusdw ymm0, ymm0, ymm1
mov dword [esp + 0x44], eax
xor edi, edi
vmovdqu ymmword [esp + 0xa0], ymm0
mov eax, dword [esp + 0x58]
vmovdqu ymmword [esp + 0x60], ymm4
vmovdqu ymmword [esp + 0x80], ymm4
mov dword [esp + 0x4c], eax
nop word [eax + eax]
vmovdqu ymm3, ymmword [ecx]
vmovdqu ymm2, ymmword [ecx + 2]
vpunpckhwd ymm0, ymm3, ymm2
vpmaddwd ymm0, ymm0, ymm6
vpaddd ymm0, ymm0, ymm5
vpsrld ymm1, ymm0, 7
xor eax, eax
mov edx, edi
test edi, edi
vpunpcklwd ymm0, ymm3, ymm2
vpmaddwd ymm0, ymm0, ymm6
vpaddd ymm0, ymm0, ymm5
vmovdqu ymm3, ymmword [esi]
vpsrld ymm0, ymm0, 7
vpackusdw ymm4, ymm0, ymm1
sete al
add ecx, dword [esp + 0x40]
add esi, dword [esp + 0x14]
mov edi, eax
shl eax, 5
shl edx, 5
sub dword [esp + 0x4c], 1
vmovdqu ymmword [esp + eax + 0xa0], ymm4
vmovdqu ymm1, ymmword [esp + edx + 0xa0]
vpunpckhwd ymm0, ymm1, ymm4
vpmaddwd ymm0, ymm0, ymm7
vpaddd ymm0, ymm0, ymm5
vpsrld ymm2, ymm0, 7
vpunpcklwd ymm0, ymm1, ymm4
vpmaddwd ymm0, ymm0, ymm7
vpaddd ymm0, ymm0, ymm5
vpsrld ymm0, ymm0, 7
vpackusdw ymm0, ymm0, ymm2
vpsubw ymm0, ymm0, ymm3
vpaddw ymm1, ymm0, ymmword [esp + 0x60]
vpmaddwd ymm0, ymm0, ymm0
vpaddd ymm2, ymm0, ymmword [esp + 0x80]
vmovdqu ymmword [esp + 0x60], ymm1
vmovdqu ymmword [esp + 0x80], ymm2
jne 0x101cca90
vpmaddwd ymm0, ymm1, ymmword [0x10823f00]
vpunpckldq ymm1, ymm0, ymm2
vpunpckhdq ymm0, ymm0, ymm2
vpaddd ymm1, ymm0, ymm1
vextracti128 xmm0, ymm1, 1
vpaddd xmm1, xmm0, xmm1
vpsrldq xmm0, xmm1, 8
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
cdq
add dword [esp + 0x28], eax
vpextrd eax, xmm0, 1
adc dword [esp + 0x34], edx
cdq
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x3c]
adc dword [esp + 0x24], edx
inc eax
mov dword [esp + 0x3c], eax
vpxor xmm4, xmm4, xmm4
cmp eax, dword [esp + 0x50]
jb 0x101cca10
jmp 0x101ccbc3
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], edx
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x14]
bsr ecx, eax
mov eax, dword [ebp + 0x18]
mov esi, dword [esp + 0x18]
bsr edi, eax
mov eax, dword [esp + 0x24]
add edi, ecx
mov ecx, dword [esp + 0x28]
add esi, 8
adc eax, 0
shrd esi, eax, 4
mov eax, dword [esp + 0x5c]
add ecx, 2
mov dword [eax], esi
mov eax, dword [esp + 0x34]
adc eax, 0
shrd ecx, eax, 2
mov eax, ecx
imul ecx
mov ecx, edi
vzeroupper
call fcn.10511c50
mov ecx, dword [esp + 0x1bc]
sub esi, eax
xor eax, eax
test esi, esi
pop edi
cmovg eax, esi
pop esi
xor ecx, esp
call fcn.105116c0
mov esp, ebp
pop ebp
ret