Function at 0x1011acc0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0xf4
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 0x2c], 0
mov eax, dword [edx + 8]
mov dword [esp + 0xcc], eax
mov eax, dword [ebp + 0x18]
mov edi, dword [edx]
mov esi, dword [edx + 4]
mov ebx, dword [edx + 0xc]
mov dword [esp + 0xc8], eax
mov dword [esp + 0x40], ecx
cmp eax, 0x200
jge 0x1011ad08
xor edx, edx
jmp 0x1011ad16
lea eax, [esp + 0x2c]
push eax
call fcn.102673c0
mov edx, dword [esp + 0x2c]
mov eax, dword [ebp + 0xc]
lea ecx, [eax*4]
cmp ecx, dword [ebp + 0x14]
jne 0x1011ad5c
mov dword [esp + 0xd4], ebx
mov ebx, dword [esp + 0xc8]
mov ecx, ebx
mov eax, dword [esp + 0x40]
imul ecx, eax
cmp ebx, dword [ebp + 0xc]
cmove ebx, ecx
mov ecx, 1
mov dword [esp + 0xc8], ebx
cmove eax, ecx
mov dword [esp + 0x40], eax
mov ebx, dword [esp + 0xd4]
test edx, edx
je 0x1011ad9f
mov eax, dword [esp + 0xc8]
mov ecx, edx
mov dword [esp + 0xd4], ebx
shr ecx, 0x1f
add edx, ecx
lea ebx, [eax*4]
imul ebx, dword [esp + 0x40]
mov eax, 1
sar edx, 1
cmp ebx, edx
mov edx, 0
mov ebx, dword [esp + 0xd4]
cmovle eax, edx
mov dword [esp + 0x3c], eax
jmp 0x1011ada7
mov dword [esp + 0x3c], 0
test byte [ebp + 0x10], 3
je 0x1011b0b6
cmp dword [esp + 0x40], 1
jne 0x1011aef0
mov eax, dword [esp + 0xc8]
mov ecx, eax
and ecx, 0xf
cdq
sub eax, ecx
mov dword [esp + 4], ecx
sbb edx, 0
add eax, 0xf
adc edx, 0
jns 0x1011ade0
add eax, 0xf
adc edx, 0
shrd eax, edx, 4
mov edx, dword [esp + 0xc8]
sub edx, dword [esp + 4]
test edx, edx
jle 0x1011bdf9
mov dword [esp + 0xd4], ebx
xor edx, edx
mov dword [esp], eax
nop dword [eax + eax]
nop dword [eax + eax]
mov eax, edx
shl eax, 4
mov ecx, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd4]
vmovdqu xmm2, xmmword [edi + eax]
vmovdqu xmm3, xmmword [esi + eax]
vmovdqu xmm4, xmmword [ecx + eax]
vmovdqu xmm5, xmmword [ebx + eax]
mov ecx, edx
inc edx
shl ecx, 6
add eax, 0x10
mov ebx, dword [ebp + 0x10]
vpunpcklbw xmm1, xmm2, xmm3
vpunpckhbw xmm0, xmm2, xmm3
vpunpcklbw xmm6, xmm4, xmm5
vpunpckhbw xmm7, xmm4, xmm5
vpunpcklwd xmm2, xmm1, xmm6
vpunpckhwd xmm1, xmm1, xmm6
vpunpcklwd xmm3, xmm0, xmm7
vpunpckhwd xmm0, xmm0, xmm7
vmovdqu xmmword [ebx + ecx], xmm2
vmovdqu xmmword [ebx + ecx + 0x10], xmm1
vmovdqu xmmword [ebx + ecx + 0x20], xmm3
vmovdqu xmmword [ebx + ecx + 0x30], xmm0
add ecx, 0x40
cmp edx, dword [esp]
jb 0x1011ae10
mov ebx, dword [esp + 0xd4]
cmp dword [esp + 4], 0
je 0x1011b0a9
mov edx, dword [ebp + 0x10]
add edi, eax
mov dword [esp], 0
add esi, eax
add dword [esp + 0xcc], eax
add ebx, eax
mov dword [esp + 0xd0], edi
add edx, ecx
mov ecx, dword [esp + 0xcc]
mov edi, dword [esp]
mov eax, dword [esp + 0xd0]
movzx eax, byte [edi + eax]
mov byte [edx + edi*4], al
movzx eax, byte [edi + esi]
mov byte [edx + edi*4 + 1], al
movzx eax, byte [edi + ecx]
mov byte [edx + edi*4 + 2], al
movzx eax, byte [edi + ebx]
mov byte [edx + edi*4 + 3], al
inc edi
cmp edi, dword [esp + 4]
jb 0x1011aebe
jmp 0x1011b0a9
cmp dword [esp + 0x40], 0
jle 0x1011b0a9
mov eax, dword [esp + 0xc8]
mov ecx, eax
and ecx, 0xf
cdq
sub eax, ecx
mov dword [esp], 0
sbb edx, 0
add eax, 0xf
mov dword [esp + 0xc], ecx
adc edx, 0
jns 0x1011af26
add eax, 0xf
adc edx, 0
shrd eax, edx, 4
mov edx, dword [esp + 0xc8]
sub edx, dword [esp + 0xc]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc8], edx
mov dword [esp + 0xd4], ebx
mov dword [esp + 0x7c], esi
mov dword [esp + 0xd0], edi
mov eax, dword [esp]
cmp dword [esp + 0xc8], 0
jle 0x1011be02
mov ebx, dword [ebp + 0xc]
imul ebx, eax
mov esi, dword [ebp + 0x14]
imul esi, eax
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0xcc]
mov edi, dword [esp + 0xd0]
mov dword [esp + 8], 0
add edx, ebx
mov dword [esp], eax
add ecx, ebx
add esi, dword [ebp + 0x10]
add edi, ebx
mov dword [esp + 0x18], ecx
add ebx, dword [esp + 0xd4]
mov eax, dword [esp + 8]
mov dword [esp + 0x14], edx
nop dword [eax + eax]
mov ecx, eax
shl ecx, 4
mov edx, dword [esp + 0x14]
vmovdqu xmm3, xmmword [edx + ecx]
vmovdqu xmm2, xmmword [edi + ecx]
vmovdqu xmm5, xmmword [ebx + ecx]
mov edx, dword [esp + 0x18]
vpunpcklbw xmm1, xmm2, xmm3
vpunpckhbw xmm0, xmm2, xmm3
vmovdqu xmm4, xmmword [edx + ecx]
mov edx, eax
inc eax
shl edx, 6
add ecx, 0x10
vpunpcklbw xmm6, xmm4, xmm5
vpunpckhbw xmm7, xmm4, xmm5
vpunpcklwd xmm2, xmm1, xmm6
vpunpckhwd xmm1, xmm1, xmm6
vpunpcklwd xmm3, xmm0, xmm7
vpunpckhwd xmm0, xmm0, xmm7
vmovdqu xmmword [esi + edx], xmm2
vmovdqu xmmword [esi + edx + 0x10], xmm1
vmovdqu xmmword [esi + edx + 0x20], xmm3
vmovdqu xmmword [esi + edx + 0x30], xmm0
add edx, 0x40
cmp eax, dword [esp + 0x10]
jb 0x1011afb0
mov eax, dword [esp]
cmp dword [esp + 0xc], 0
je 0x1011b09e
mov ebx, dword [ebp + 0x14]
imul ebx, eax
mov edi, dword [ebp + 0xc]
imul edi, eax
mov esi, dword [esp + 0xd0]
add ebx, dword [ebp + 0x10]
add edx, ebx
mov dword [esp + 4], 0
lea ebx, [esi + edi]
mov esi, dword [esp + 0x7c]
add ebx, ecx
mov dword [esp + 0x1c], ebx
mov dword [esp], eax
lea ebx, [esi + edi]
mov esi, dword [esp + 0xcc]
add ebx, ecx
add esi, edi
add edi, dword [esp + 0xd4]
add esi, ecx
add ecx, edi
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x1c]
movzx eax, byte [edi + eax]
mov byte [edx + edi*4], al
movzx eax, byte [edi + ebx]
mov byte [edx + edi*4 + 1], al
movzx eax, byte [edi + esi]
mov byte [edx + edi*4 + 2], al
movzx eax, byte [edi + ecx]
mov byte [edx + edi*4 + 3], al
inc edi
cmp edi, dword [esp + 0xc]
jb 0x1011b071
mov eax, dword [esp]
inc eax
cmp eax, dword [esp + 0x40]
jb 0x1011af55
add esp, 0xf4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [esp + 0x40], 1
jne 0x1011b6d1
xor edx, edx
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], edx
test byte [ebp + 0x10], 0xf
je 0x1011b178
mov dword [esp + 0xd4], ebx
xor edx, edx
mov dword [esp + 0xd0], edi
mov dword [esp + 0x7c], esi
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
inc edx
mov ecx, edx
neg ecx
add ecx, dword [esp + 0xc8]
cmp ecx, 0xffffffff
je 0x1011b15e
mov edi, dword [ebp + 0x10]
lea ebx, [edx*4]
mov eax, dword [esp + 0xd0]
lea esi, [edi + edx*4]
movzx eax, byte [edx + eax - 1]
mov byte [esi - 4], al
mov eax, dword [esp + 0x7c]
movzx eax, byte [edx + eax - 1]
mov byte [edi + ebx - 3], al
mov eax, dword [esp + 0xcc]
movzx eax, byte [edx + eax - 1]
mov byte [edi + ebx - 2], al
mov eax, dword [esp + 0xd4]
movzx eax, byte [edx + eax - 1]
mov byte [edi + ebx - 1], al
mov edi, edx
mov eax, ecx
test esi, 0xf
jne 0x1011b0f8
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0xd4]
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0xd0]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esp + 8], edx
mov dword [esp + 0x10], edx
mov dword [esp + 0x20], edx
mov edx, eax
mov dword [esp + 4], ecx
and edx, 0xf
mov dword [esp + 0xc], ecx
mov dword [esp + 0x1c], ecx
mov ecx, eax
sub ecx, edx
mov dword [esp + 0x34], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], ecx
cmp dword [esp + 0x3c], 0
jne 0x1011b417
mov edx, dword [esp + 0x18]
lea ecx, [edi + edx]
test cl, 0xf
jne 0x1011b309
lea ecx, [esi + edx]
test cl, 0xf
jne 0x1011b309
mov ecx, edx
mov edx, dword [esp + 0xcc]
add edx, ecx
test dl, 0xf
jne 0x1011b309
mov edx, ecx
lea ecx, [ebx + edx]
test cl, 0xf
jne 0x1011b309
cmp dword [esp + 0x28], 0
jle 0x1011b662
cdq
sub eax, dword [esp + 0x34]
sbb edx, 0
add eax, 0xf
adc edx, 0
jns 0x1011b217
add eax, 0xf
adc edx, 0
shrd eax, edx, 4
mov edx, dword [esp + 0x18]
mov dword [esp], 0
mov dword [esp + 0x7c], esi
mov dword [esp + 0xd4], ebx
lea ecx, [edi + edx]
mov dword [esp + 0xc], ecx
lea ecx, [esi + edx]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0xcc]
mov esi, dword [esp]
mov dword [esp + 0xd0], edi
add ecx, edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x14]
add edx, ebx
mov dword [esp + 0x10], edx
mov edx, dword [ebp + 0x10]
add edx, ecx
nop dword [eax]
nop dword [eax]
mov ecx, esi
shl ecx, 4
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 8]
vmovdqu xmm2, xmmword [edi + ecx]
mov edi, dword [esp + 4]
vmovdqu xmm3, xmmword [ebx + ecx]
mov ebx, dword [esp + 0x10]
vmovdqu xmm4, xmmword [edi + ecx]
mov edi, dword [esp + 0x20]
vmovdqu xmm5, xmmword [ebx + ecx]
mov ebx, esi
shl ebx, 6
inc esi
vpunpcklbw xmm1, xmm2, xmm3
lea ecx, [edi + ecx + 0x10]
mov edi, dword [esp + 0x1c]
vpunpcklbw xmm6, xmm4, xmm5
vpunpckhbw xmm0, xmm2, xmm3
vpunpckhbw xmm7, xmm4, xmm5
vpunpcklwd xmm2, xmm1, xmm6
vpunpckhwd xmm1, xmm1, xmm6
vpunpcklwd xmm3, xmm0, xmm7
vpunpckhwd xmm0, xmm0, xmm7
vmovdqu xmmword [edx + ebx], xmm2
vmovdqu xmmword [edx + ebx + 0x10], xmm1
vmovdqu xmmword [edx + ebx + 0x20], xmm3
vmovdqu xmmword [edx + ebx + 0x30], xmm0
lea ebx, [edi + ebx + 0x40]
cmp esi, eax
jb 0x1011b270
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ecx
mov ebx, dword [esp + 0xd4]
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0xd0]
jmp 0x1011b662
cdq
sub eax, dword [esp + 0x34]
sbb edx, 0
add eax, 0xf
adc edx, 0
jns 0x1011b31f
add eax, 0xf
adc edx, 0
shrd eax, edx, 4
cmp dword [esp + 0x28], 0
jle 0x1011b662
mov edx, dword [esp + 0x18]
mov dword [esp + 4], 0
mov dword [esp + 0xd4], ebx
mov dword [esp + 0x7c], esi
lea ecx, [edi + edx]
mov dword [esp], ecx
lea ecx, [esi + edx]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0xcc]
mov esi, dword [esp]
mov dword [esp + 0xd0], edi
mov dword [esp + 8], eax
add ecx, edx
mov dword [esp + 0x1c], ecx
add edx, ebx
mov dword [esp + 0x24], edx
mov edx, dword [ebp + 0x10]
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 4]
add edx, ecx
mov eax, ebx
shl eax, 4
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
vmovdqu xmm3, xmmword [edi + eax]
vmovdqu xmm4, xmmword [ecx + eax]
vmovdqu xmm2, xmmword [esi + eax]
mov edi, dword [esp + 0x24]
mov ecx, ebx
shl ecx, 6
inc ebx
vpunpcklbw xmm1, xmm2, xmm3
vmovdqu xmm5, xmmword [edi + eax]
mov edi, dword [esp + 0x10]
vpunpcklbw xmm6, xmm4, xmm5
vpunpckhbw xmm0, xmm2, xmm3
vpunpckhbw xmm7, xmm4, xmm5
lea eax, [edi + eax + 0x10]
mov edi, dword [esp + 0xc]
vpunpcklwd xmm2, xmm1, xmm6
vpunpckhwd xmm1, xmm1, xmm6
vpunpcklwd xmm3, xmm0, xmm7
vpunpckhwd xmm0, xmm0, xmm7
vmovdqu xmmword [edx + ecx], xmm2
vmovdqu xmmword [edx + ecx + 0x10], xmm1
vmovdqu xmmword [edx + ecx + 0x20], xmm3
vmovdqu xmmword [edx + ecx + 0x30], xmm0
lea ecx, [edi + ecx + 0x40]
cmp ebx, dword [esp + 8]
jb 0x1011b380
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0xd4]
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0xd0]
jmp 0x1011b662
mov eax, dword [ebp + 0x10]
mov edx, dword [esp + 0x14]
lea ecx, [eax + edx]
test cl, 0x3f
je 0x1011b53a
mov eax, dword [esp + 0x18]
mov dword [esp], 0
mov dword [esp + 0xd4], ebx
mov dword [esp + 0xd0], edi
lea edx, [edi + eax]
mov dword [esp + 0x24], edx
lea ecx, [esi + eax]
mov edx, dword [esp + 0xcc]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x7c], esi
mov edi, dword [esp + 0x30]
lea ecx, [edx + eax]
mov edx, dword [esp + 0x14]
add eax, ebx
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x1c], ecx
mov ebx, dword [esp + 0x18]
lea ecx, [eax + edx]
mov dword [esp + 0xc], ecx
mov eax, edx
mov ecx, dword [esp]
inc ecx
mov esi, ecx
shl esi, 4
neg esi
add esi, dword [esp + 0x28]
cmp esi, 0xfffffff0
je 0x1011b51c
mov ebx, ecx
shl ebx, 4
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
vmovdqu xmm2, xmmword [eax + ebx - 0x10]
vmovdqu xmm3, xmmword [edi + ebx - 0x10]
vmovdqu xmm5, xmmword [edx + ebx - 0x10]
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0xc]
vpunpcklbw xmm1, xmm2, xmm3
vmovdqu xmm4, xmmword [eax + ebx - 0x10]
mov eax, ecx
shl eax, 6
vpunpcklbw xmm6, xmm4, xmm5
vpunpckhbw xmm0, xmm2, xmm3
vpunpckhbw xmm7, xmm4, xmm5
vpunpcklwd xmm2, xmm1, xmm6
lea edx, [edi + eax]
vpunpckhwd xmm1, xmm1, xmm6
vpunpcklwd xmm3, xmm0, xmm7
vpunpckhwd xmm0, xmm0, xmm7
vmovdqu xmmword [edx - 0x40], xmm2
vmovdqu xmmword [edi + eax - 0x30], xmm1
vmovdqu xmmword [edi + eax - 0x20], xmm3
vmovdqu xmmword [edi + eax - 0x10], xmm0
mov edi, esi
add ebx, dword [esp + 8]
add eax, dword [esp + 4]
test dl, 0x3f
jne 0x1011b484
mov dword [esp + 0x30], edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], eax
mov ebx, dword [esp + 0xd4]
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0xd0]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
cmp dword [esp + 0x30], 0
jle 0x1011b662
mov eax, dword [esp + 0x30]
cdq
add eax, 0xf
mov dword [esp], 0
adc edx, 0
mov dword [esp + 0x30], eax
jns 0x1011b577
add eax, 0xf
mov dword [esp + 0x30], eax
adc edx, 0
shrd eax, edx, 4
mov edx, dword [esp + 0x18]
mov dword [esp + 0x30], eax
mov dword [esp + 0xd4], ebx
mov dword [esp + 0x7c], esi
lea ecx, [edi + edx]
mov dword [esp + 0x10], ecx
lea eax, [edx + esi]
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0xd0], edi
mov esi, eax
lea eax, [edx + ecx]
mov dword [esp + 0x1c], eax
add edx, ebx
mov ecx, dword [ebp + 0x10]
mov eax, dword [esp + 0x14]
mov ebx, dword [esp]
mov dword [esp + 4], edx
add eax, ecx
nop dword [eax + eax]
nop dword [eax]
mov edx, ebx
shl edx, 4
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
vmovdqu xmm2, xmmword [edi + edx]
vmovdqu xmm3, xmmword [esi + edx]
vmovdqu xmm4, xmmword [ecx + edx]
mov edi, dword [esp + 4]
mov ecx, ebx
shl ecx, 6
inc ebx
vpunpcklbw xmm0, xmm2, xmm3
vmovdqu xmm5, xmmword [edi + edx]
vpunpcklbw xmm7, xmm4, xmm5
vpunpckhbw xmm1, xmm2, xmm3
vpunpckhbw xmm2, xmm4, xmm5
vpunpcklwd xmm6, xmm0, xmm7
vpunpckhwd xmm0, xmm0, xmm7
vmovntdq xmmword [eax + ecx], xmm6
vpunpcklwd xmm6, xmm1, xmm2
vpunpckhwd xmm1, xmm1, xmm2
vmovntdq xmmword [eax + ecx + 0x10], xmm0
vmovntdq xmmword [eax + ecx + 0x20], xmm6
vmovntdq xmmword [eax + ecx + 0x30], xmm1
mov edi, dword [esp + 0xc]
lea edx, [edi + edx + 0x10]
mov edi, dword [esp + 8]
lea ecx, [edi + ecx + 0x40]
cmp ebx, dword [esp + 0x30]
jb 0x1011b5d0
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0xd4]
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0xd0]
cmp dword [esp + 0x34], 0
je 0x1011bde2
mov eax, dword [ebp + 0x10]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
add edi, ecx
add dword [esp + 0xcc], ecx
add esi, ecx
mov dword [esp], 0
add eax, edx
mov dword [esp + 0xd0], edi
add ebx, ecx
mov ecx, dword [esp + 0xcc]
mov edi, dword [esp]
mov edx, dword [esp + 0xd0]
movzx edx, byte [edi + edx]
mov byte [eax + edi*4], dl
movzx edx, byte [edi + esi]
mov byte [eax + edi*4 + 1], dl
movzx edx, byte [edi + ecx]
mov byte [eax + edi*4 + 2], dl
movzx edx, byte [edi + ebx]
mov byte [eax + edi*4 + 3], dl
inc edi
cmp edi, dword [esp + 0x34]
jb 0x1011b69f
jmp 0x1011bde2
cmp dword [esp + 0x40], 0
jle 0x1011bde2
xor edx, edx
mov dword [esp + 0x54], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], edx
mov dword [esp + 0xd4], ebx
mov dword [esp + 0x7c], esi
mov dword [esp + 0xd0], edi
mov ecx, dword [ebp + 0x10]
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0xc8]
add ebx, ecx
xor ecx, ecx
xor esi, esi
test bl, 0xf
je 0x1011b800
mov edi, dword [ebp + 0x10]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x38], 0
mov dword [esp + 0xd8], ebx
add edi, edx
mov dword [esp + 0x90], edi
mov edi, dword [esp + 0xd0]
mov edx, dword [esp + 0x44]
add edi, edx
mov dword [esp + 0x8c], edi
mov edi, dword [esp + 0x7c]
add edi, edx
mov dword [esp + 0x88], edi
mov edi, dword [esp + 0xcc]
add edi, edx
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0xd4]
add edi, edx
mov dword [esp + 0x80], edi
mov edx, eax
mov eax, ecx
mov ecx, dword [esp + 0x38]
inc ecx
mov ebx, ecx
neg ebx
add ebx, dword [esp + 0xc8]
cmp ebx, 0xffffffff
je 0x1011b7f5
mov edi, dword [esp + 0xd8]
lea esi, [ecx*4]
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x88]
lea edi, [edi + ecx*4]
movzx eax, byte [ecx + eax - 1]
mov byte [edi - 4], al
mov eax, dword [esp + 0x90]
movzx edx, byte [ecx + edx - 1]
mov byte [eax + esi - 3], dl
mov edx, dword [esp + 0x84]
movzx edx, byte [ecx + edx - 1]
mov byte [eax + esi - 2], dl
mov edx, dword [esp + 0x80]
movzx edx, byte [ecx + edx - 1]
mov byte [eax + esi - 1], dl
mov eax, ecx
mov edx, ebx
test edi, 0xf
jne 0x1011b781
mov ebx, dword [esp + 0xd8]
mov ecx, eax
mov eax, edx
mov edx, eax
mov edi, eax
and edx, 0xf
sub edi, edx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x6c], esi
mov dword [esp + 0xb8], ecx
mov dword [esp + 0xbc], esi
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], esi
mov dword [esp + 0xdc], edx
mov dword [esp + 0x78], edi
cmp dword [esp + 0x3c], 0
jne 0x1011bac6
mov edi, dword [esp + 0xd0]
mov edx, dword [esp + 0x44]
add edi, edx
mov dword [esp + 0xc0], edi
add edi, ecx
test edi, 0xf
jne 0x1011b995
mov edi, dword [esp + 0x7c]
add edi, edx
mov dword [esp + 0x10], edi
add edi, ecx
test edi, 0xf
jne 0x1011b995
mov edi, dword [esp + 0xcc]
add edi, edx
mov dword [esp + 0xc], edi
add edi, ecx
test edi, 0xf
jne 0x1011b995
mov edi, dword [esp + 0xd4]
add edi, edx
mov dword [esp + 8], edi
add edi, ecx
test edi, 0xf
jne 0x1011b995
cmp dword [esp + 0x78], 0
jle 0x1011bd09
cdq
sub eax, dword [esp + 0xdc]
sbb edx, 0
add eax, 0xf
adc edx, 0
jns 0x1011b8d1
add eax, 0xf
adc edx, 0
shrd eax, edx, 4
mov edx, dword [esp + 0x54]
lea edi, [esi + ebx]
mov dword [esp + 4], edi
mov edi, dword [ebp + 0x10]
mov dword [esp], 0
add dword [esp + 0xc0], ecx
add dword [esp + 0x10], ecx
add edi, edx
add dword [esp + 0xc], ecx
add edi, esi
add dword [esp + 8], ecx
mov edx, dword [esp]
mov dword [esp + 0xd8], ebx
mov ecx, edx
shl ecx, 4
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0xc0]
vmovdqu xmm3, xmmword [ebx + ecx]
mov ebx, dword [esp + 8]
vmovdqu xmm2, xmmword [esi + ecx]
mov esi, dword [esp + 0xc]
vmovdqu xmm5, xmmword [ebx + ecx]
mov ebx, edx
shl ebx, 6
inc edx
vmovdqu xmm4, xmmword [esi + ecx]
mov esi, dword [esp + 4]
vpunpcklbw xmm1, xmm2, xmm3
vpunpcklbw xmm6, xmm4, xmm5
vpunpckhbw xmm0, xmm2, xmm3
vpunpcklwd xmm2, xmm1, xmm6
vmovdqu xmmword [esi + ebx], xmm2
mov esi, dword [esp + 0x4c]
vpunpckhbw xmm7, xmm4, xmm5
vpunpckhwd xmm1, xmm1, xmm6
vpunpcklwd xmm3, xmm0, xmm7
lea ecx, [esi + ecx + 0x10]
mov esi, dword [esp + 0x50]
vpunpckhwd xmm0, xmm0, xmm7
vmovdqu xmmword [edi + ebx + 0x10], xmm1
vmovdqu xmmword [edi + ebx + 0x20], xmm3
lea esi, [esi + ebx + 0x40]
vmovdqu xmmword [edi + ebx + 0x30], xmm0
cmp edx, eax
jb 0x1011b90b
jmp 0x1011bd02
cdq
sub eax, dword [esp + 0xdc]
sbb edx, 0
add eax, 0xf
adc edx, 0
jns 0x1011b9ae
add eax, 0xf
adc edx, 0
shrd eax, edx, 4
cmp dword [esp + 0x78], 0
jle 0x1011bd09
mov edx, dword [esp + 0x54]
lea edi, [esi + ebx]
mov dword [esp + 0xa0], edi
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x20], 0
mov dword [esp + 0xd8], ebx
mov dword [esp + 0x94], eax
add edi, edx
add edi, esi
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x7c]
mov esi, dword [esp + 0x44]
add dword [esp + 0xc0], ecx
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
lea edx, [edi + esi]
mov edi, dword [esp + 0xcc]
add edx, ecx
add edi, esi
add edi, ecx
mov dword [esp + 0xc4], edi
mov edi, dword [esp + 0xd4]
add esi, edi
add esi, ecx
mov dword [esp + 0x98], esi
mov ecx, eax
shl ecx, 4
mov edi, dword [esp + 0xc0]
mov esi, dword [esp + 0xc4]
vmovdqu xmm2, xmmword [edi + ecx]
vmovdqu xmm4, xmmword [esi + ecx]
vmovdqu xmm3, xmmword [edx + ecx]
mov edi, dword [esp + 0x98]
mov esi, eax
shl esi, 6
inc eax
vpunpcklbw xmm1, xmm2, xmm3
vmovdqu xmm5, xmmword [edi + ecx]
mov edi, dword [esp + 0xa0]
vpunpcklbw xmm6, xmm4, xmm5
vpunpckhbw xmm0, xmm2, xmm3
vpunpcklwd xmm2, xmm1, xmm6
vmovdqu xmmword [edi + esi], xmm2
mov edi, dword [esp + 0xb8]
vpunpckhbw xmm7, xmm4, xmm5
vpunpckhwd xmm1, xmm1, xmm6
vpunpcklwd xmm3, xmm0, xmm7
lea ecx, [edi + ecx + 0x10]
mov edi, dword [esp + 0xbc]
vpunpckhwd xmm0, xmm0, xmm7
vmovdqu xmmword [ebx + esi + 0x10], xmm1
vmovdqu xmmword [ebx + esi + 0x20], xmm3
vmovdqu xmmword [ebx + esi + 0x30], xmm0
lea esi, [edi + esi + 0x40]
cmp eax, dword [esp + 0x94]
jb 0x1011ba2c
jmp 0x1011bd02
lea edx, [esi + ebx]
test dl, 0x3f
je 0x1011bbdb
mov eax, dword [esp + 0x54]
lea edx, [esi + ebx]
mov dword [esp + 0x58], edx
mov edx, dword [ebp + 0x10]
mov dword [esp + 0x18], 0
mov dword [esp + 0xd8], ebx
add edx, eax
mov eax, dword [esp + 0xd0]
add edx, esi
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x44]
add eax, edx
add eax, ecx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x7c]
add eax, edx
add eax, ecx
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xcc]
add eax, edx
add eax, ecx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xd4]
add edx, eax
mov eax, dword [esp + 0x18]
add edx, ecx
mov dword [esp + 0x5c], edx
inc eax
mov ebx, eax
shl ebx, 4
neg ebx
add ebx, dword [esp + 0x78]
cmp ebx, 0xfffffff0
je 0x1011bbd4
mov ecx, eax
shl ecx, 4
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x5c]
vmovdqu xmm2, xmmword [esi + ecx - 0x10]
vmovdqu xmm3, xmmword [edi + ecx - 0x10]
vmovdqu xmm5, xmmword [edx + ecx - 0x10]
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x58]
vpunpcklbw xmm1, xmm2, xmm3
vmovdqu xmm4, xmmword [esi + ecx - 0x10]
mov esi, eax
shl esi, 6
vpunpcklbw xmm6, xmm4, xmm5
vpunpckhbw xmm0, xmm2, xmm3
vpunpckhbw xmm7, xmm4, xmm5
vpunpcklwd xmm2, xmm1, xmm6
lea edx, [edi + esi]
mov edi, dword [esp + 0x70]
vpunpckhwd xmm1, xmm1, xmm6
vpunpcklwd xmm3, xmm0, xmm7
vpunpckhwd xmm0, xmm0, xmm7
vmovdqu xmmword [edx - 0x40], xmm2
vmovdqu xmmword [edi + esi - 0x30], xmm1
vmovdqu xmmword [edi + esi - 0x20], xmm3
vmovdqu xmmword [edi + esi - 0x10], xmm0
mov edi, ebx
add ecx, dword [esp + 0x74]
add esi, dword [esp + 0x6c]
test dl, 0x3f
jne 0x1011bb38
mov ebx, dword [esp + 0xd8]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb4], esi
test edi, edi
jle 0x1011bd09
mov edx, dword [esp + 0xd0]
add esi, ebx
mov dword [esp + 0x1c], esi
mov eax, edi
mov esi, dword [esp + 0x44]
mov dword [esp + 0x14], 0
add edx, esi
add edx, ecx
mov dword [esp + 0xac], edx
mov edx, dword [esp + 0x7c]
add edx, esi
add edx, ecx
mov dword [esp + 0xa8], edx
mov edx, dword [esp + 0xcc]
add edx, esi
add edx, ecx
mov dword [esp + 0xa4], edx
mov edx, dword [esp + 0xd4]
add edx, esi
add edx, ecx
add edi, 0xf
mov dword [esp + 0x24], edx
cdq
adc edx, 0
jns 0x1011bc56
add edi, 0xf
adc edx, 0
shrd edi, edx, 4
mov dword [esp + 0xd8], ebx
mov dword [esp + 0x9c], edi
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov ecx, edx
shl ecx, 4
mov edi, dword [esp + 0xac]
mov esi, dword [esp + 0xa8]
vmovdqu xmm2, xmmword [edi + ecx]
vmovdqu xmm3, xmmword [esi + ecx]
vmovdqu xmm5, xmmword [eax + ecx]
mov edi, dword [esp + 0xa4]
mov esi, edx
shl esi, 6
inc edx
vpunpcklbw xmm0, xmm2, xmm3
vmovdqu xmm4, xmmword [edi + ecx]
vpunpcklbw xmm7, xmm4, xmm5
vpunpckhbw xmm1, xmm2, xmm3
vpunpckhbw xmm2, xmm4, xmm5
vpunpcklwd xmm6, xmm0, xmm7
vpunpckhwd xmm0, xmm0, xmm7
vmovntdq xmmword [ebx + esi], xmm6
vpunpcklwd xmm6, xmm1, xmm2
vpunpckhwd xmm1, xmm1, xmm2
vmovntdq xmmword [ebx + esi + 0x10], xmm0
vmovntdq xmmword [ebx + esi + 0x20], xmm6
vmovntdq xmmword [ebx + esi + 0x30], xmm1
mov edi, dword [esp + 0xb0]
lea ecx, [edi + ecx + 0x10]
mov edi, dword [esp + 0xb4]
lea esi, [edi + esi + 0x40]
cmp edx, dword [esp + 0x9c]
jb 0x1011bc74
mov ebx, dword [esp + 0xd8]
cmp dword [esp + 0xdc], 0
je 0x1011bdb9
mov edi, dword [ebp + 0x10]
add ebx, esi
mov edx, dword [esp + 0x54]
mov dword [esp + 0x30], 0
mov dword [esp + 0xd8], ebx
add edx, edi
mov edi, dword [esp + 0xd0]
add esi, edx
mov edx, dword [esp + 0x44]
lea eax, [edi + edx]
mov edi, dword [esp + 0x7c]
add eax, ecx
mov dword [esp + 0xe0], eax
add edi, edx
add edi, ecx
mov dword [esp + 0xe4], edi
mov edi, dword [esp + 0xcc]
add edi, edx
add edi, ecx
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0xd4]
mov ebx, dword [esp + 0x34]
add edx, edi
mov edi, dword [esp + 0x30]
add ecx, edx
mov edx, dword [esp + 0xe0]
mov eax, dword [esp + 0xd8]
movzx edx, byte [edi + edx]
mov byte [eax + edi*4], dl
mov edx, dword [esp + 0xe4]
movzx eax, byte [edi + edx]
mov byte [esi + edi*4 + 1], al
movzx edx, byte [edi + ebx]
mov byte [esi + edi*4 + 2], dl
movzx edx, byte [edi + ecx]
mov byte [esi + edi*4 + 3], dl
inc edi
cmp edi, dword [esp + 0xdc]
jb 0x1011bd7b
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x48]
inc ecx
add eax, dword [ebp + 0xc]
add edx, dword [ebp + 0x14]
mov dword [esp + 0x44], eax
mov dword [esp + 0x54], edx
mov dword [esp + 0x48], ecx
cmp ecx, dword [esp + 0x40]
jb 0x1011b6fc
cmp dword [esp + 0x3c], 0
je 0x1011bdec
sfence
add esp, 0xf4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
xor eax, eax
xor ecx, ecx
jmp 0x1011ae89
xor ecx, ecx
xor edx, edx
jmp 0x1011b01d