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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffe0
push esi
push edi
push ebx
sub esp, 0x134
mov esi, dword [ebp + 8]
mov edi, dword [esi + 0x20]
test edi, edi
jne 0x10065092
mov ebx, dword [esi + 0x58]
cmp dword [esi + 0x70], 4
je 0x100659e9
mov ecx, dword [esi + 0x50]
cmp ebx, 2
je 0x10065082
cmp ebx, 4
je 0x10065082
cmp ebx, 6
je 0x10065082
cmp ebx, 8
je 0x10065082
cmp ebx, 0x10
jne 0x10065095
lea edx, [ecx + ecx*2]
mov eax, dword [esi + edx*8 + 0x70]
mov dword [esi + 0x58], eax
mov dword [esi + edx*8 + 0x70], ebx
jmp 0x10065095
mov ecx, dword [esi + 0x50]
mov eax, dword [ebp + 0xc]
test ecx, ecx
jl 0x100650e4
mov dword [esp + 0xa4], ecx
mov ebx, 1
mov dword [esp], edi
xor edx, edx
mov esi, dword [ebp + 8]
lea ecx, [edx + edx*2]
mov dword [esp + 4], edx
cdq
mov edi, dword [esi + ecx*8 + 0x58]
idiv edi
mov edx, dword [esp + 4]
inc edx
mov dword [esi + ecx*8 + 0x60], ebx
imul ebx, edi
mov dword [esi + ecx*8 + 0x5c], eax
cmp edx, dword [esp + 0xa4]
jle 0x100650ad
mov ecx, dword [esp + 0xa4]
mov edi, dword [esp]
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
cdq
mov ebx, dword [ebp + 0xc]
idiv ebx
mov dword [esp + 0x9c], eax
mov dword [esp + 0x10], 0
test ecx, ecx
jl 0x10066a52
xor edi, edi
push 1
pop edx
mov dword [esp + 0x18], edx
mov eax, edx
mov dword [esp + 0x14], edi
xor ebx, ebx
mov dword [esp + 0xa4], ecx
jmp 0x10065123
mov eax, 1
mov edx, eax
mov dword [esp + 0xa0], edx
jmp 0x1006513f
mov eax, dword [esp + 0xa0]
imul eax, edi
mov dword [esp + 0xa0], eax
mov edx, dword [ebp + 8]
lea ecx, [ebx + ebx*2]
mov eax, dword [esp + 0xa0]
mov dword [esp + 0xa8], ecx
mov edi, dword [edx + ecx*8 + 0x58]
mov esi, dword [edx + ecx*8 + 0x5c]
mov dword [edx + ecx*8 + 0x64], eax
cmp edi, 0xd
jle 0x10065195
test edi, 1
je 0x10065195
cmp edi, dword [esp + 0x18]
jne 0x10065a24
mov edx, dword [ebp + 8]
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 0x14]
mov dword [edx + ecx*8 + 0x68], eax
mov eax, dword [esp + 0x10]
cmp edi, eax
cmovge eax, edi
mov dword [esp + 0x10], eax
cmp ebx, dword [esp + 0xa4]
jne 0x100651d7
cmp esi, 0xd
jle 0x100651d7
test esi, 1
je 0x100651d7
cmp esi, dword [esp + 0x18]
jne 0x10065a61
mov edx, dword [ebp + 8]
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 0x14]
mov dword [edx + ecx*8 + 0x80], eax
mov eax, dword [esp + 0x10]
cmp esi, eax
cmovge eax, esi
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x18]
mov edx, dword [eax]
mov ecx, edx
neg ecx
and ecx, 0x3f
add edx, ecx
lea ecx, [esi*8]
imul ecx, edi
add ecx, edx
mov dword [eax], ecx
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0xa8]
mov eax, dword [ecx + eax*8 + 0x60]
imul eax, dword [esp + 0x9c]
cmp dword [ecx + 0x20], 0
jne 0x100659b4
cmp edi, 0xd
jg 0x10065729
test esi, 1
je 0x10065419
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x24], 0
je 0x100652fd
test esi, esi
jle 0x100659b4
mov dword [esp + 0x90], eax
xor eax, eax
mov dword [esp + 0x38], eax
lea ecx, [edi*8 - 8]
mov dword [esp + 0x3c], ecx
lea ecx, [edi - 1]
mov dword [esp + 4], eax
mov dword [esp + 0xb8], ecx
mov dword [esp], edx
mov eax, dword [esp + 0x90]
cmp edi, 1
jle 0x100659b4
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], esi
mov dword [esp + 0x78], edx
mov dword [esp + 0xf0], edi
mov dword [esp + 0xc], ebx
mov esi, dword [esp]
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x38]
mov edx, dword [ebp + 0x10]
xor ebx, ebx
mov dword [esp + 0x38], eax
lea edi, [edx + ecx]
xor edx, edx
mov eax, dword [edx + edi]
mov dword [esi + ebx*8], eax
mov eax, dword [edx + edi + 4]
add edx, ecx
mov dword [esi + ebx*8 + 4], eax
inc ebx
cmp ebx, dword [esp + 0xb8]
jb 0x100652ac
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x38]
inc eax
add esi, dword [esp + 0x3c]
lea ecx, [ecx + edx*8]
cmp eax, dword [esp + 0x8c]
jb 0x1006529e
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0xf0]
mov ebx, dword [esp + 0xc]
jmp 0x100659b4
mov ecx, esi
shr ecx, 0x1f
add ecx, esi
sar ecx, 1
mov dword [esp + 0x74], ecx
cmp esi, 1
jle 0x100659b4
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x8c], esi
mov dword [esp + 0x5c], 0
mov dword [esp + 0xf0], edi
lea esi, [ecx + eax*8]
mov dword [esp + 0x64], esi
mov esi, eax
shl esi, 4
mov dword [esp + 0x68], esi
mov dword [esp + 0x90], eax
mov dword [esp + 0x78], edx
mov dword [esp + 0xc], ebx
add ecx, esi
mov dword [esp + 0x60], ecx
lea esi, [edi*8]
neg esi
lea ecx, [edi - 1]
mov dword [esp + 0xe4], ecx
mov ecx, edi
shl ecx, 4
add esi, edx
add esi, ecx
add ecx, 0xfffffff0
mov dword [esp + 0x6c], esi
mov dword [esp + 0x70], ecx
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0x5c]
cmp dword [esp + 0xf0], 1
jle 0x10065ab3
mov esi, dword [esp + 0x68]
xor ecx, ecx
mov ebx, esi
imul ebx, edi
mov eax, dword [esp + 0x90]
add esi, ebx
mov edx, dword [esp + 0x60]
mov dword [esp + 0xe8], esi
lea eax, [ebx + eax*8]
mov dword [esp + 0xec], eax
add edx, ebx
mov eax, dword [esp + 0x70]
imul eax, edi
add ebx, dword [esp + 0x64]
add eax, dword [esp + 0x6c]
mov esi, ecx
mov dword [esp + 0x5c], edi
mov edi, dword [ebx + 4]
inc ecx
mov dword [esi + eax - 4], edi
mov edi, dword [edx + 4]
mov dword [esi + eax + 4], edi
mov edi, dword [ebx]
mov dword [esi + eax - 8], edi
mov edi, dword [edx]
mov dword [esi + eax], edi
add esi, 0x10
add ebx, dword [esp + 0xec]
add edx, dword [esp + 0xe8]
cmp ecx, dword [esp + 0xe4]
jb 0x100653d1
mov edi, dword [esp + 0x5c]
inc edi
cmp edi, dword [esp + 0x74]
jb 0x10065383
jmp 0x100652e2
test esi, 2
je 0x10065551
mov dword [esp + 0x90], eax
lea eax, [esi + 1]
mov dword [esp + 0x78], edx
mov edx, eax
shr edx, 0x1f
add edx, eax
sar edx, 1
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x78]
test esi, esi
jle 0x100659b4
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x90], eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x8c], esi
lea ecx, [ecx + eax*8]
shl eax, 4
mov dword [esp + 0x28], eax
lea eax, [edi - 1]
mov dword [esp + 0xac], eax
mov eax, edi
shl eax, 4
mov dword [esp + 0x20], ecx
mov ecx, eax
neg ecx
add ecx, eax
add eax, 0xfffffff0
mov dword [esp + 0x30], eax
add ecx, edx
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x24]
mov dword [esp + 0x78], edx
mov dword [esp + 0xf0], edi
mov dword [esp + 0xc], ebx
cmp dword [esp + 0xf0], 1
jle 0x10065a8d
mov edi, dword [esp + 0x28]
xor edx, edx
imul edi, esi
mov eax, dword [ebp + 0x10]
mov ebx, dword [esp + 0x90]
mov ecx, dword [esp + 0x20]
add eax, edi
mov dword [esp + 0x34], eax
lea ebx, [edi + ebx*8]
mov eax, dword [esp + 0x30]
add ecx, edi
imul eax, esi
mov dword [esp + 0xb4], ebx
mov dword [esp + 0x24], esi
add eax, dword [esp + 0x2c]
mov ebx, edx
mov esi, dword [esp + 0x34]
mov dword [esp + 0xb0], edi
mov edi, dword [esi + 4]
inc edx
mov dword [ebx + eax + 4], edi
mov edi, dword [ecx + 4]
mov dword [ebx + eax + 0xc], edi
mov edi, dword [esi]
mov dword [ebx + eax], edi
mov edi, dword [ecx]
mov dword [ebx + eax + 8], edi
add ebx, 0x10
add esi, dword [esp + 0xb0]
add ecx, dword [esp + 0xb4]
cmp edx, dword [esp + 0xac]
jb 0x10065509
mov esi, dword [esp + 0x24]
inc esi
cmp esi, dword [esp + 0x1c]
jb 0x100654b6
jmp 0x100652e2
test esi, esi
jle 0x100659b4
mov dword [esp + 0x40], 0
lea ecx, [edi*8 - 8]
mov dword [esp + 0x58], ecx
lea ecx, [eax*8]
mov dword [esp + 0x54], ecx
mov ecx, eax
shl ecx, 4
mov dword [esp + 0x4c], ecx
lea ecx, [eax + eax*2]
mov dword [esp + 0x50], ecx
cmp edi, 1
jle 0x100659b4
mov dword [esp + 0x90], eax
mov dword [esp + 0x78], edx
mov dword [esp + 0x8c], esi
mov dword [esp + 0xf0], edi
mov dword [esp + 0xc], ebx
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x54]
imul ecx, eax
mov esi, dword [esp + 0x90]
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x58]
imul edx, eax
lea ebx, [ecx + esi*8]
imul esi, eax
add edx, dword [esp + 0x78]
add edi, ecx
mov dword [esp + 0xd8], edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0xd0], 1
mov dword [esp + 0x48], ecx
mov dword [esp + 0xcc], esi
lea edi, [ecx + edi*8]
mov dword [esp + 0x44], 0x20
mov dword [esp + 0xbc], esi
mov dword [esp + 0xc4], ebx
mov dword [esp + 0xc0], ecx
mov dword [esp + 0xc8], edx
mov dword [esp + 0x40], eax
mov dword [esp + 0xd4], edi
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0xcc]
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0xd0]
mov edx, dword [ebp + 0x10]
mov edi, dword [esp + 0xc8]
mov dword [esp + 0xcc], eax
mov eax, dword [edx + eax*8]
mov dword [ecx + edi - 0x20], eax
mov eax, dword [esp + 0xc4]
imul eax, esi
mov dword [esp + 0xdc], eax
mov eax, dword [edx + eax]
mov dword [ecx + edi - 0x1c], eax
mov eax, dword [esp + 0xd8]
imul eax, esi
mov dword [esp + 0xe0], eax
mov eax, dword [edx + eax]
mov dword [ecx + edi - 0x18], eax
mov eax, dword [esp + 0xd4]
imul eax, esi
mov dword [esp + 0xd0], esi
mov esi, dword [edx + eax]
mov dword [ecx + edi - 0x14], esi
mov esi, dword [ebx + edx + 4]
mov dword [ecx + edi - 0x10], esi
mov esi, dword [esp + 0xdc]
add ebx, dword [esp + 0xc0]
mov esi, dword [esi + edx + 4]
mov dword [ecx + edi - 0xc], esi
mov esi, dword [esp + 0xe0]
mov eax, dword [eax + edx + 4]
mov esi, dword [esi + edx + 4]
mov dword [ecx + edi - 8], esi
mov dword [ecx + edi - 4], eax
add ecx, 0x20
mov eax, dword [esp + 0xcc]
mov esi, dword [esp + 0xd0]
inc esi
add eax, dword [esp + 0xbc]
cmp esi, dword [esp + 0xf0]
jl 0x10065642
mov eax, dword [esp + 0x40]
add eax, 4
cmp eax, dword [esp + 0x8c]
jl 0x100655b1
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0xf0]
mov ebx, dword [esp + 0xc]
jmp 0x100659b4
test esi, 3
je 0x100657dc
test esi, esi
jle 0x100659b4
xor ecx, ecx
mov dword [esp + 0x94], ecx
mov dword [esp + 0xf4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0x78], edx
mov dword [esp + 0x8c], esi
mov dword [esp + 0xc], ebx
mov dword [esp + 0x90], eax
mov edx, dword [esp + 8]
mov esi, ecx
mov ebx, dword [esp + 0x94]
xor eax, eax
mov dword [esp + 0x94], ebx
xor ecx, ecx
mov dword [esp + 0xf4], esi
mov ebx, dword [ebp + 0x10]
mov esi, dword [ecx + ebx]
mov dword [edx + eax*8], esi
mov esi, dword [ecx + ebx + 4]
mov dword [edx + eax*8 + 4], esi
inc eax
add ecx, dword [esp + 0xf4]
cmp eax, edi
jl 0x10065789
mov eax, dword [esp + 0x90]
lea edx, [edx + edi*8]
mov ebx, dword [esp + 0x94]
inc ebx
mov esi, dword [esp + 0xf4]
lea esi, [esi + eax*8]
cmp ebx, dword [esp + 0x8c]
jl 0x10065774
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x8c]
mov ebx, dword [esp + 0xc]
jmp 0x100659b4
test esi, esi
jle 0x100659a0
mov dword [esp + 0x98], 0
lea ecx, [edi*8]
mov dword [esp + 0x88], ecx
lea ecx, [eax*8]
mov dword [esp + 0x84], ecx
mov ecx, eax
shl ecx, 4
mov dword [esp + 0x7c], ecx
lea ecx, [eax + eax*2]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x90], eax
mov dword [esp + 0x78], edx
mov dword [esp + 0x8c], esi
mov dword [esp + 0xf0], edi
mov ebx, dword [esp + 0x98]
mov edi, dword [esp + 0x84]
xor eax, eax
imul edi, ebx
mov edx, dword [esp + 0x90]
mov esi, edx
mov ecx, dword [esp + 0x88]
imul ecx, ebx
lea edx, [edi + edx*8]
imul esi, ebx
mov dword [esp + 0x10c], edx
mov edx, dword [esp + 0x7c]
add ecx, dword [esp + 0x78]
mov dword [esp + 0x110], eax
mov dword [esp + 0xf8], esi
add edx, edi
mov dword [esp + 0x108], edx
mov edx, dword [esp + 0x80]
mov dword [esp + 0x100], ecx
mov dword [esp + 0x98], ebx
mov dword [esp + 0xfc], edi
lea edx, [edi + edx*8]
mov dword [esp + 0x104], edx
xor edx, edx
mov ecx, eax
mov esi, edx
mov ebx, dword [ebp + 0x10]
mov edi, dword [esp + 0x100]
mov dword [esp + 0x110], ecx
mov ecx, dword [ebx + ecx*8]
mov dword [esi + edi], ecx
mov ecx, dword [esp + 0x10c]
imul ecx, eax
mov dword [esp + 0x118], ecx
mov ecx, dword [ebx + ecx]
mov dword [esi + edi + 4], ecx
mov ecx, dword [esp + 0x108]
imul ecx, eax
mov dword [esp + 0x11c], ecx
mov ecx, dword [ebx + ecx]
mov dword [esi + edi + 8], ecx
mov ecx, dword [esp + 0x104]
imul ecx, eax
mov dword [esp + 0x114], eax
mov eax, dword [ebx + ecx]
mov dword [esi + edi + 0xc], eax
mov eax, dword [edx + ebx + 4]
mov dword [esi + edi + 0x10], eax
mov eax, dword [esp + 0x118]
add edx, dword [esp + 0xfc]
mov eax, dword [eax + ebx + 4]
mov dword [esi + edi + 0x14], eax
mov eax, dword [esp + 0x11c]
mov ecx, dword [ecx + ebx + 4]
mov eax, dword [eax + ebx + 4]
mov dword [esi + edi + 0x18], eax
mov dword [esi + edi + 0x1c], ecx
add esi, 0x20
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x114]
inc eax
add ecx, dword [esp + 0xf8]
cmp eax, dword [esp + 0xf0]
jl 0x100658bc
mov ebx, dword [esp + 0x98]
add ebx, 4
cmp ebx, dword [esp + 0x8c]
jl 0x10065842
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0xf0]
mov ebx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
lea eax, [edi*4]
cmp eax, ecx
cmovge ecx, eax
mov dword [esp + 0x10], ecx
mov ecx, dword [ebp + 8]
inc ebx
mov eax, dword [esp + 0xa8]
mov dword [ecx + eax*8 + 0x6c], edx
mov edx, dword [ecx + 0x50]
mov dword [esp + 0xa4], edx
cmp ebx, edx
jg 0x10065ad9
imul esi, edi
cmp esi, 0x7d0
jle 0x1006512e
jmp 0x1006511e
cmp ebx, 6
je 0x10065a1c
shl ebx, 2
mov ecx, dword [esi + 0x50]
mov dword [esi + 0x58], ebx
test ecx, ecx
jle 0x10065a13
mov eax, 1
lea ebx, [eax + eax*2]
inc eax
mov edx, dword [esi + ebx*8 + 0x70]
mov dword [esi + ebx*8 + 0x58], edx
cmp eax, ecx
jle 0x10065a00
mov ebx, dword [esi + 0x58]
dec ecx
mov dword [esi + 0x50], ecx
jmp 0x10065069
mov ecx, dword [esi + 0x50]
jmp 0x10065082
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
mov edx, ecx
neg edx
and edx, 0x3f
add ecx, edx
mov dword [esp + 0x14], ecx
push ecx
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push edi
call fcn.10066d50
add esp, 0x10
mov edx, dword [ebp + 0x18]
mov dword [esp + 0x18], edi
mov dword [edx], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x50]
mov dword [esp + 0xa4], ecx
jmp 0x10065176
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
mov edx, ecx
neg edx
and edx, 0x3f
add ecx, edx
mov dword [esp + 0x14], ecx
push ecx
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push esi
call fcn.10066d50
add esp, 0x10
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
jmp 0x100651b5
inc esi
cmp esi, dword [esp + 0x1c]
jb 0x100654b6
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0xf0]
mov ebx, dword [esp + 0xc]
jmp 0x100659b4
inc edi
cmp edi, dword [esp + 0x74]
jb 0x10065383
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x8c]
mov edi, dword [esp + 0xf0]
mov ebx, dword [esp + 0xc]
jmp 0x100659b4
mov esi, dword [ebp + 8]
mov ebx, dword [esp + 0xa0]
mov edi, dword [esi + 0x20]
mov eax, dword [ebp + 0xc]
mov edx, dword [esp + 0x10]
lea ecx, [eax + edx]
lea eax, [ecx*8 + 0x80]
mov dword [esi + 0x18], eax
test edi, edi
je 0x10066532
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0xc]
mov ebx, dword [eax]
mov edx, ebx
neg edx
and edx, 0x3f
add ebx, edx
lea edi, [ebx + ecx*4]
mov dword [eax], edi
mov dword [esi + 0x54], ebx
mov edi, dword [eax]
mov edx, edi
neg edx
and edx, 0x3f
add edi, edx
mov dword [esp + 0x38], edi
lea ecx, [edi + ecx*4]
mov dword [eax], ecx
mov ecx, dword [esi + 0x50]
lea eax, [ecx + ecx*2]
mov edi, dword [esi + eax*8 + 0x5c]
test edi, edi
jle 0x10065c57
cmp edi, 8
jl 0x100668c8
cmp edi, 0xf9
jl 0x100668d4
mov eax, ebx
and eax, 0x1f
je 0x10065b6d
test al, 3
jne 0x100668c8
neg eax
add eax, 0x20
shr eax, 2
lea edx, [eax + 8]
cmp edi, edx
jl 0x100668c8
mov edx, edi
sub edx, eax
and edx, 7
neg edx
add edx, edi
test eax, eax
jbe 0x10065b91
xor ecx, ecx
mov dword [ebx + ecx*4], ecx
inc ecx
cmp ecx, eax
jb 0x10065b89
mov ecx, 8
vmovd xmm0, eax
vpbroadcastd ymm2, xmm0
vpaddd ymm0, ymm2, ymmword [0x10394ae0]
vmovd xmm1, ecx
vpbroadcastd ymm1, xmm1
vmovdqu ymmword [ebx + eax*4], ymm0
add eax, 8
vpaddd ymm0, ymm0, ymm1
cmp eax, edx
jb 0x10065bb0
xor ecx, ecx
lea eax, [edx + 1]
mov dword [esp + 8], eax
cmp edi, eax
jb 0x10065c54
sub edi, edx
cmp ecx, 1
jne 0x10065bdc
xor eax, eax
jmp 0x10065c41
cmp edi, 4
jl 0x10065bd8
mov ecx, 4
mov eax, edi
and eax, 0xfffffffc
vmovd xmm0, edx
mov dword [esp + 4], eax
lea eax, [edx + 2]
vmovd xmm2, dword [esp + 8]
vmovd xmm1, ecx
lea ecx, [edx + 3]
vpunpcklqdq xmm5, xmm0, xmm2
vmovd xmm3, eax
mov dword [esp], 0
vmovd xmm4, ecx
lea ecx, [ebx + edx*4]
vpunpcklqdq xmm6, xmm3, xmm4
vpbroadcastd xmm1, xmm1
vshufps xmm0, xmm5, xmm6, 0x88
mov eax, dword [esp + 4]
mov esi, dword [esp]
vmovdqu xmmword [ecx + esi*4], xmm0
add esi, 4
vpaddd xmm0, xmm0, xmm1
cmp esi, eax
jb 0x10065c2e
mov esi, dword [ebp + 8]
lea ecx, [edx + eax]
cmp eax, edi
jae 0x10065c54
lea edx, [ebx + edx*4]
mov dword [edx + eax*4], ecx
inc eax
inc ecx
cmp eax, edi
jb 0x10065c4b
mov ecx, dword [esi + 0x50]
lea eax, [ecx + 1]
mov dword [esp + 0x34], eax
test ecx, ecx
jl 0x100664c3
mov dword [esp + 0x28], 0
lea eax, [ecx + ecx*2]
mov ecx, dword [esp + 0x38]
lea edi, [esi + eax*8]
and ecx, 0x1f
mov eax, ecx
mov edx, ecx
neg eax
and edx, 3
add eax, 0x20
shr eax, 2
mov dword [esp + 0x14], ecx
mov dword [esp + 4], eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x30], edi
mov dword [esp + 0x78], ebx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
lea edi, [ecx + ecx*2]
shl edi, 3
neg edi
mov ebx, dword [edx + edi + 0x58]
mov esi, dword [edx + edi + 0x5c]
mov eax, dword [edx + edi + 0x6c]
mov edx, dword [edx + edi + 0x60]
imul edx, dword [esp + 0x9c]
mov dword [esp + 0x5c], eax
cmp ebx, 0xd
jg 0x10065e6e
test esi, esi
jle 0x100664b2
mov eax, dword [esp + 0x78]
mov eax, dword [eax]
cmp ebx, 1
jle 0x10065fdd
shl edx, 3
xor edi, edi
mov dword [esp + 0x50], edx
lea edx, [ebx*8 - 8]
mov dword [esp + 0x68], edx
lea edx, [ebx - 1]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x54], edi
mov dword [esp + 0x80], edx
and edx, 0xfffffff8
mov dword [esp + 0x6c], edx
mov dword [esp + 0x8c], esi
mov dword [esp + 0x88], ebx
mov esi, edi
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x80], 8
jl 0x10066911
mov edx, dword [esp + 0x50]
imul edx, eax
mov ecx, dword [esp + 0x6c]
lea edi, [edx*8]
mov dword [esp + 0x4c], ebx
mov ebx, ecx
vmovd xmm2, edx
vmovd xmm1, edi
mov edi, dword [ebp + 0x10]
vpbroadcastd ymm3, xmm2
vpmulld ymm5, ymm3, ymmword [0x10394ae0]
vpbroadcastd ymm1, xmm1
add edi, edx
xor edx, edx
vmovd xmm0, edi
mov edi, dword [esp + 0x5c]
vpbroadcastd ymm4, xmm0
vpaddd ymm2, ymm4, ymm5
vpcmpeqd ymm0, ymm0, ymm0
add edi, esi
nop
vmovdqa ymm3, ymm0
vxorps ymm5, ymm5, ymm5
vmovdqa ymm4, ymm0
vxorps ymm6, ymm6, ymm6
vgatherdps ymm5, ymmword [ymm2], ymm3
vgatherdps ymm6, ymmword [ymm2 + 4], ymm4
vpaddd ymm2, ymm2, ymm1
vunpcklps ymm7, ymm5, ymm6
vunpckhps ymm3, ymm5, ymm6
vperm2f128 ymm4, ymm7, ymm3, 0x20
vperm2f128 ymm5, ymm7, ymm3, 0x31
vmovups ymmword [edi + edx*8], ymm4
vmovups ymmword [edi + edx*8 + 0x20], ymm5
add edx, 8
cmp edx, ebx
jb 0x10065d90
mov ebx, dword [esp + 0x4c]
mov edx, dword [esp + 0x80]
mov edi, edx
sub edi, ecx
mov dword [esp + 0x94], edi
lea edi, [ecx + 1]
cmp edx, edi
jb 0x100668f7
imul eax, dword [esp + 0x50]
mov edi, ecx
imul edi, eax
xor edx, edx
mov dword [esp + 0x4c], ebx
mov ebx, dword [ebp + 0x10]
mov dword [esp + 0x54], esi
add ebx, eax
add ebx, edi
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x58], ebx
lea ebx, [edi + esi]
mov esi, edx
lea ecx, [ebx + ecx*8]
mov ebx, dword [esp + 0x58]
mov edi, dword [edx + ebx]
mov dword [ecx + esi*8], edi
mov edi, dword [edx + ebx + 4]
add edx, eax
mov dword [ecx + esi*8 + 4], edi
inc esi
cmp esi, dword [esp + 0x94]
jb 0x10065e2e
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0x4c]
inc ebx
add esi, dword [esp + 0x68]
cmp ebx, dword [esp + 0x8c]
jae 0x100668e0
mov eax, dword [esp + 0x78]
mov eax, dword [eax + ebx*4]
jmp 0x10065d2f
test esi, esi
jle 0x100664b2
mov eax, ebx
mov edi, ebx
and eax, 0xfffffff8
shl edx, 3
sub edi, eax
mov dword [esp + 0x7c], 0
mov dword [esp + 0x98], edi
mov dword [esp + 0x50], edx
lea edi, [eax + 1]
mov dword [esp + 0x60], eax
mov dword [esp + 0x84], edi
vpcmpeqd ymm4, ymm4, ymm4
vmovd xmm1, dword [ebp + 0x10]
mov dword [esp + 0x8c], esi
mov dword [esp + 0x88], ebx
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x78]
xor edi, edi
vpbroadcastd ymm5, xmm1
xor esi, esi
mov dword [esp + 0x7c], eax
mov ecx, dword [ecx + eax*4]
imul ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x60]
lea ebx, [ecx*8]
vmovd xmm0, ecx
vpbroadcastd ymm2, xmm0
vmovd xmm3, ebx
vpmulld ymm6, ymm2, ymmword [0x10394ae0]
mov ebx, edx
vpbroadcastd ymm3, xmm3
vpaddd ymm5, ymm5, ymm6
nop dword [eax + eax]
vmovdqa ymm6, ymm4
add edi, 8
vxorps ymm2, ymm2, ymm2
vmovdqa ymm7, ymm4
vgatherdps ymm2, ymmword [ymm5], ymm6
vgatherdps ymm6, ymmword [ymm5 + 4], ymm7
vpaddd ymm5, ymm5, ymm3
vunpcklps ymm0, ymm2, ymm6
vunpckhps ymm2, ymm2, ymm6
vperm2f128 ymm7, ymm0, ymm2, 0x20
vperm2f128 ymm0, ymm0, ymm2, 0x31
vmovups ymmword [esi + edx], ymm7
add esi, 0x40
vmovups ymmword [ebx + 0x20], ymm0
add ebx, 0x40
cmp edi, eax
jb 0x10065f10
mov ebx, dword [esp + 0x88]
mov eax, dword [esp + 0x7c]
cmp ebx, dword [esp + 0x84]
jb 0x10065fb8
mov edi, dword [esp + 0x60]
mov esi, ecx
imul esi, edi
xor ebx, ebx
mov dword [esp + 0x7c], eax
lea edi, [edx + edi*8]
mov dword [esp + 0x64], edi
xor edi, edi
add esi, dword [ebp + 0x10]
mov dword [esp + 0x5c], edx
mov eax, dword [esp + 0x64]
mov edx, dword [edi + esi]
mov dword [eax + ebx*8], edx
mov edx, dword [edi + esi + 4]
add edi, ecx
mov dword [eax + ebx*8 + 4], edx
inc ebx
cmp ebx, dword [esp + 0x98]
jb 0x10065f96
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x88]
inc eax
lea edx, [edx + ecx*8]
cmp eax, dword [esp + 0x8c]
jb 0x10065ec6
mov esi, dword [esp + 0x8c]
mov ebx, ecx
mov ecx, dword [esp + 0x28]
cmp esi, 6
jle 0x10066186
mov eax, dword [esp + 0x78]
cmp eax, dword [esp + 0x38]
jae 0x10066003
mov edx, dword [esp + 0x38]
lea eax, [esi*4]
sub edx, dword [esp + 0x78]
cmp eax, edx
jle 0x10066024
mov eax, dword [esp + 0x78]
cmp eax, dword [esp + 0x38]
jbe 0x10066186
lea edx, [esi*4]
sub eax, dword [esp + 0x38]
cmp eax, edx
jl 0x10066186
cmp esi, 8
jl 0x1006694e
cmp esi, 0xf9
jl 0x10066942
mov eax, dword [esp + 0x14]
test eax, eax
je 0x10066050
cmp dword [esp + 0xc], 0
jne 0x10066918
mov eax, dword [esp + 4]
lea edx, [eax + 8]
cmp esi, edx
jl 0x1006692d
mov edi, esi
sub edi, eax
and edi, 7
neg edi
add edi, esi
test eax, eax
jbe 0x100660ad
mov dword [esp + 0x24], 0
mov dword [esp + 0x8c], esi
mov dword [esp + 0x88], ebx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x78]
mov edx, dword [esi + ecx*4]
mov dword [ebx + ecx*4], edx
inc ecx
cmp ecx, eax
jb 0x10066090
mov esi, dword [esp + 0x8c]
mov ebx, dword [esp + 0x88]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x28], ecx
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x78]
vmovdqu ymm0, ymmword [ecx + eax*4]
vmovdqu ymmword [edx + eax*4], ymm0
add eax, 8
cmp eax, edi
jb 0x100660b9
mov ecx, dword [esp + 0x28]
lea eax, [edi + 1]
cmp esi, eax
jb 0x100661a3
xor edx, edx
mov eax, esi
sub eax, edi
mov dword [esp + 0x2c], eax
cmp edx, 1
jne 0x100660ec
xor edx, edx
jmp 0x10066143
cmp dword [esp + 0x2c], 4
jl 0x100660e8
mov eax, dword [esp + 0x38]
mov dword [esp + 0x18], 0
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x88], ebx
lea eax, [eax + edi*4]
mov dword [esp + 0x20], eax
and edx, 0xfffffffc
mov eax, dword [esp + 0x78]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
lea eax, [eax + edi*4]
vmovdqu xmm0, xmmword [eax + ebx*4]
vmovdqu xmmword [ecx + ebx*4], xmm0
add ebx, 4
cmp ebx, edx
jb 0x10066127
mov ebx, dword [esp + 0x88]
mov ecx, dword [esp + 0x28]
cmp edx, dword [esp + 0x2c]
jae 0x100661a3
mov eax, dword [esp + 0x38]
mov dword [esp + 0x88], ebx
mov dword [esp + 0x28], ecx
lea eax, [eax + edi*4]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x78]
mov ebx, dword [esp + 0x1c]
lea eax, [eax + edi*4]
mov edi, dword [esp + 0x2c]
mov ecx, dword [eax + edx*4]
mov dword [ebx + edx*4], ecx
inc edx
cmp edx, edi
jb 0x1006616e
mov ebx, dword [esp + 0x88]
mov ecx, dword [esp + 0x28]
jmp 0x100661a3
mov dword [esp + 0x28], ecx
xor eax, eax
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x78]
mov edx, dword [edi + eax*4]
mov dword [ecx + eax*4], edx
inc eax
cmp eax, esi
jb 0x10066194
mov ecx, dword [esp + 0x28]
test ebx, ebx
jle 0x100664b2
mov dword [esp + 0x88], ebx
lea edx, [ebx*4]
mov dword [esp], edx
xor eax, eax
mov dword [esp + 0x28], ecx
mov edx, dword [esp + 0x78]
cmp dword [esp + 0x88], 6
jg 0x100661dd
mov ebx, eax
imul ebx, dword [esp]
add ebx, edx
jmp 0x10066469
mov edi, dword [esp + 0x88]
lea ebx, [esi*4]
and edi, 0xfffffff8
lea ecx, [esi*8]
mov dword [esp + 8], edi
mov dword [esp + 0x40], eax
vmovd xmm0, ebx
vmovd xmm1, ecx
vpbroadcastd ymm1, xmm1
vpbroadcastd xmm0, xmm0
mov dword [esp + 0x8c], esi
mov dword [esp + 0x78], edx
mov ebx, dword [esp + 0x88]
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x78]
lea eax, [edx + ecx*4]
mov dword [esp + 0x44], eax
imul ecx, dword [esp]
lea edx, [edi + ecx - 4]
lea esi, [edi + ecx]
mov dword [esp + 0x48], esi
cmp edx, eax
jbe 0x10066252
mov eax, edx
sub eax, dword [esp + 0x44]
cmp eax, 4
jge 0x10066271
cmp edx, dword [esp + 0x44]
jae 0x1006645a
neg edx
lea eax, [ebx*4]
add edx, dword [esp + 0x44]
cmp edx, eax
jl 0x1006645a
cmp ebx, 8
jl 0x10066998
cmp ebx, 0x179
jl 0x1006698d
and esi, 0x1f
je 0x1006629f
test esi, 3
jne 0x10066963
neg esi
add esi, 0x20
shr esi, 2
lea eax, [esi + 8]
cmp ebx, eax
jl 0x10066978
mov eax, ebx
sub eax, esi
and eax, 7
neg eax
add eax, ebx
test esi, esi
jbe 0x100662e7
xor ecx, ecx
mov dword [esp + 0x3c], eax
xor edx, edx
mov ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x48]
mov eax, dword [ebx]
add eax, edx
mov dword [edi + ecx*4], eax
inc ecx
add edx, dword [esp + 0x8c]
cmp ecx, esi
jb 0x100662c9
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x88]
mov edx, esi
mov ecx, dword [esp + 0x8c]
imul edx, ecx
vmovd xmm3, ecx
vpbroadcastd ymm4, xmm3
vpmulld ymm6, ymm4, ymmword [0x10394ae0]
mov ecx, dword [esp + 0x48]
vmovd xmm2, edx
vpbroadcastd ymm5, xmm2
mov edx, dword [esp + 0x44]
vpaddd ymm2, ymm5, ymm6
vpbroadcastd ymm3, dword [edx]
vpaddd ymm4, ymm3, ymm2
vpaddd ymm2, ymm2, ymm1
vmovdqu ymmword [ecx + esi*4], ymm4
add esi, 8
cmp esi, eax
jb 0x1006631a
lea edx, [eax + 1]
cmp ebx, edx
jb 0x1006643f
xor edx, edx
mov ecx, ebx
sub ecx, eax
cmp edx, 1
jne 0x1006634d
xor edx, edx
jmp 0x100663cc
cmp ecx, 4
jl 0x10066349
mov edi, dword [esp + 0x8c]
mov esi, edi
imul esi, eax
mov dword [esp + 0x70], ecx
lea edx, [edi + esi]
and ecx, 0xfffffffc
mov dword [esp + 0x74], ecx
lea ecx, [edi + edx]
vmovd xmm2, esi
xor esi, esi
vmovd xmm3, edx
mov edx, dword [esp + 0x78]
vmovd xmm4, ecx
add ecx, edi
vpunpcklqdq xmm6, xmm2, xmm3
vmovd xmm5, ecx
mov ecx, dword [esp + 0x40]
imul ecx, ebx
vpunpcklqdq xmm7, xmm4, xmm5
vshufps xmm2, xmm6, xmm7, 0x88
add ecx, eax
mov ebx, dword [esp + 0x44]
lea edi, [edx + ecx*4]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
vpbroadcastd xmm3, dword [ebx]
vpaddd xmm4, xmm3, xmm2
vpaddd xmm2, xmm2, xmm0
vmovdqu xmmword [edi + esi*4], xmm4
add esi, 4
cmp esi, edx
jb 0x100663ac
mov ebx, dword [esp + 0x88]
mov esi, dword [esp + 0x8c]
imul esi, edx
cmp edx, ecx
jae 0x100669ad
mov edi, dword [esp + 0x8c]
imul edi, eax
mov dword [esp + 0x90], edi
mov edi, dword [esp + 0x40]
imul edi, ebx
add eax, edi
mov edi, dword [esp + 0x78]
lea eax, [edi + eax*4]
mov edi, dword [esp + 0x44]
mov ebx, dword [edi]
add ebx, dword [esp + 0x90]
add ebx, esi
mov dword [eax + edx*4], ebx
inc edx
add esi, dword [esp + 0x8c]
cmp edx, ecx
jb 0x10066403
mov eax, dword [esp + 0x40]
inc eax
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x40], eax
cmp eax, dword [esp + 0x8c]
jb 0x10066221
jmp 0x100669c3
mov eax, dword [esp + 0x40]
inc eax
mov dword [esp + 0x40], eax
cmp eax, dword [esp + 0x8c]
jb 0x10066221
jmp 0x100669c3
mov ebx, esi
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x8c]
mov edx, edi
xor edi, edi
mov dword [esp + 0x8c], esi
xor ecx, ecx
mov dword [esp + 0x78], edx
mov esi, dword [esp + 0x38]
mov edx, dword [esi + eax*4]
add edx, ecx
mov dword [ebx + edi*4], edx
inc edi
add ecx, dword [esp + 0x8c]
cmp edi, dword [esp + 0x88]
jb 0x1006647c
inc eax
mov esi, dword [esp + 0x8c]
mov edx, dword [esp + 0x78]
cmp eax, esi
jb 0x100661c6
nop
mov dword [esp + 0x78], edx
mov ecx, dword [esp + 0x28]
inc ecx
cmp ecx, dword [esp + 0x34]
jb 0x10065ca2
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 0x50]
mov eax, dword [ebp + 0xc]
lea ebx, [ecx + ecx*2]
cdq
mov edi, dword [esi + ebx*8 + 0x5c]
idiv edi
test ecx, ecx
js 0x100664f9
mov ebx, 1
lea edx, [ecx + ecx*2]
mov dword [esi + edx*8 + 0x64], ebx
mov edi, dword [esi + edx*8 + 0x58]
cmp eax, 0x7d0
jle 0x100664f0
cmp ecx, 1
jne 0x100664f3
imul ebx, edi
cdq
idiv edi
dec ecx
jns 0x100664d9
mov eax, dword [ebp + 0xc]
lea edx, [eax*8]
mov eax, dword [esi + 0x18]
sub eax, edx
cmp dword [esp + 0x10], 0
jne 0x10066518
mov dword [esi + 0x18], 0
jmp 0x1006651b
mov dword [esi + 0x18], eax
mov dword [esi + 0x54], 0
vzeroupper
add esp, 0x134
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 0x18]
mov ecx, dword [edi]
mov edx, ecx
neg edx
and edx, 0x3f
add ecx, edx
lea eax, [ecx + ebx*4]
mov dword [edi], eax
mov dword [ecx], 0
mov edx, dword [esi + 0x50]
mov eax, edx
dec eax
js 0x100668c0
mov dword [esp + 0x18], 1
lea eax, [edx + edx*2 - 3]
mov dword [esp + 0x10], 0
lea edi, [esi + eax*8]
mov eax, ecx
and eax, 0x1f
mov dword [esp + 0x2c], edi
mov edi, eax
and edi, 3
mov dword [esp + 0x20], edi
mov edi, eax
neg edi
add edi, 0x20
shr edi, 2
mov dword [esp + 0x14], eax
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xc], edi
mov dword [esp + 0x24], edx
mov dword [esp + 0x34], ecx
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
lea ecx, [ebx + ebx*2]
shl ecx, 3
neg ecx
mov ecx, dword [edx + ecx + 0x58]
cmp eax, dword [esp + 0xa0]
jge 0x10066772
mov edx, ecx
dec edx
js 0x1006675f
test eax, eax
jle 0x1006675f
mov dword [esp + 0x10], ebx
lea edx, [ecx*4]
imul edx, eax
lea esi, [eax*4]
add edx, dword [esp + 0x34]
mov ebx, esi
neg esi
xor edi, edi
add esi, edx
neg ebx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x40], edi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x44], edi
mov dword [esp + 0x30], esi
mov dword [esp + 0x48], ecx
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x3c]
mov dword [esp], edx
mov dword [esp + 0x50], ecx
cmp eax, 6
jle 0x100666fa
mov edx, dword [esp]
lea ecx, [eax*4]
neg ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
lea edx, [edx + ecx - 4]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 4]
lea ebx, [ecx + edi]
mov dword [esp + 8], ebx
cmp ebx, dword [esp + 0x34]
jbe 0x10066676
lea ecx, [eax*4]
sub ebx, dword [esp + 0x34]
cmp ecx, ebx
jle 0x10066695
mov ecx, dword [esp + 0x34]
cmp ecx, dword [esp + 8]
jbe 0x100666e6
mov ecx, dword [esp + 8]
lea ebx, [eax*4]
neg ecx
add ecx, dword [esp + 0x34]
cmp ecx, ebx
jl 0x100666e6
mov ebx, dword [esp + 0x30]
xor ecx, ecx
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], edi
mov esi, dword [esp + 0x34]
add ebx, edi
mov edi, dword [esi + ecx*4]
imul edi, dword [esp + 0x50]
lea edi, [edx + edi - 1]
mov dword [ebx + ecx*4], edi
inc ecx
cmp ecx, eax
jb 0x100666a9
mov ecx, dword [esp + 0x38]
dec edx
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
inc esi
lea ebx, [ecx + eax*4]
dec dword [esp + 0x3c]
add edi, dword [esp + 0x4c]
mov dword [esp + 0x38], ebx
cmp esi, dword [esp + 0x50]
jb 0x10066656
jmp 0x10066757
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], esi
mov dword [esp + 0x48], edx
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x50]
xor ecx, ecx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x38], esi
sub edx, esi
mov dword [esp + 0x3c], edi
add ebx, edi
mov esi, dword [esp + 0x34]
mov edi, dword [esi + ecx*4]
imul edi, dword [esp + 0x50]
lea edi, [ebx + edi - 1]
mov dword [edx + ecx*4], edi
inc ecx
cmp ecx, eax
jb 0x10066714
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
inc ecx
add edx, dword [esp + 0x4c]
mov edi, dword [esp + 0x3c]
dec dword [esp + 0x48]
dec edi
mov esi, dword [esp + 0x38]
mov dword [esp + 0x44], edx
lea esi, [esi + eax*4]
mov dword [esp + 0x40], ecx
cmp ecx, dword [esp + 0x50]
jb 0x10066625
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x10]
inc ebx
imul eax, ecx
cmp ebx, dword [esp + 0x24]
jb 0x100665a9
jmp 0x100668b9
test eax, eax
jle 0x100668ae
cmp eax, 8
jl 0x10066a31
cmp eax, 0x1e1
jl 0x10066a25
mov edi, dword [esp + 0x14]
test edi, edi
je 0x100667a5
cmp dword [esp + 0x20], 0
jne 0x100669cc
mov edi, dword [esp + 0xc]
lea edx, [edi + 8]
cmp eax, edx
jl 0x10066a04
mov edx, eax
sub edx, edi
and edx, 7
neg edx
add edx, eax
test edi, edi
jbe 0x100667e3
mov dword [esp + 0x10], ebx
xor esi, esi
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 0x34]
mov eax, dword [ebx + esi*4]
imul eax, ecx
mov dword [ebx + esi*4], eax
inc esi
cmp esi, edi
jb 0x100667cd
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
vmovd xmm0, ecx
vpbroadcastd ymm0, xmm0
mov esi, dword [esp + 0x34]
vpmulld ymm1, ymm0, ymmword [esi + edi*4]
vmovdqu ymmword [esi + edi*4], ymm1
add edi, 8
cmp edi, edx
jb 0x100667f0
lea esi, [edx + 1]
cmp eax, esi
jb 0x100668a1
xor esi, esi
mov edi, eax
sub edi, edx
mov dword [esp + 0x28], edi
cmp esi, 1
jne 0x10066820
xor esi, esi
jmp 0x10066866
cmp dword [esp + 0x28], 4
jl 0x1006681c
mov edi, dword [esp + 0x34]
vmovd xmm0, ecx
mov dword [esp + 0x1c], 0
mov esi, dword [esp + 0x28]
mov dword [esp + 0x18], eax
lea edi, [edi + edx*4]
and esi, 0xfffffffc
vpbroadcastd xmm0, xmm0
mov eax, edi
mov edi, dword [esp + 0x1c]
vpmulld xmm1, xmm0, xmmword [eax + edi*4]
vmovdqu xmmword [eax + edi*4], xmm1
add edi, 4
cmp edi, esi
jb 0x10066850
mov eax, dword [esp + 0x18]
cmp esi, dword [esp + 0x28]
jae 0x100669f4
mov edi, dword [esp + 0x34]
mov dword [esp + 0x18], eax
lea edx, [edi + edx*4]
mov edi, dword [esp + 0x28]
mov eax, dword [edx + esi*4]
imul eax, ecx
mov dword [edx + esi*4], eax
inc esi
cmp esi, edi
jb 0x1006687f
inc ebx
mov eax, dword [esp + 0x18]
cmp ebx, dword [esp + 0x24]
jb 0x100665a9
jmp 0x100669e8
inc ebx
cmp ebx, dword [esp + 0x24]
jb 0x100665a9
jmp 0x100668b9
inc ebx
cmp ebx, dword [esp + 0x24]
jb 0x100665a9
mov ecx, dword [esp + 0x34]
mov esi, dword [ebp + 8]
mov dword [esi + 0x54], ecx
jmp 0x10066522
mov ecx, 1
xor edx, edx
jmp 0x10065bc2
mov edx, edi
xor eax, eax
and edx, 0xfffffff8
jmp 0x10065b91
mov esi, dword [esp + 0x8c]
mov ebx, dword [esp + 0x88]
mov ecx, dword [esp + 0x28]
jmp 0x10065fdd
inc ebx
add esi, dword [esp + 0x68]
cmp ebx, dword [esp + 0x8c]
jae 0x100668e0
mov eax, dword [esp + 0x78]
mov eax, dword [eax + ebx*4]
jmp 0x10065d2f
xor ecx, ecx
jmp 0x10065de2
cmp esi, 1
jb 0x100661a3
mov edx, 1
xor edi, edi
jmp 0x100660db
cmp esi, 1
jb 0x100661a3
mov edx, 1
xor edi, edi
jmp 0x100660db
mov edi, esi
xor eax, eax
and edi, 0xfffffff8
jmp 0x100660ad
cmp esi, 1
jb 0x100661a3
mov edx, 1
xor edi, edi
jmp 0x100660db
cmp ebx, 1
jb 0x1006643f
mov edx, 1
xor eax, eax
jmp 0x10066340
cmp ebx, 1
jb 0x1006643f
mov edx, 1
xor eax, eax
jmp 0x10066340
mov eax, dword [esp + 8]
xor esi, esi
jmp 0x100662e7
cmp ebx, 1
jb 0x1006643f
mov edx, 1
xor eax, eax
jmp 0x10066340
mov eax, dword [esp + 0x40]
inc eax
mov dword [esp + 0x40], eax
cmp eax, dword [esp + 0x8c]
jb 0x10066221
mov ecx, dword [esp + 0x28]
jmp 0x100664b2
cmp eax, 1
jb 0x100669dd
mov esi, 1
xor edx, edx
jmp 0x1006680f
inc ebx
cmp ebx, dword [esp + 0x24]
jb 0x100665a9
mov ecx, dword [esp + 0x34]
mov esi, dword [ebp + 8]
jmp 0x100668c0
inc ebx
cmp ebx, dword [esp + 0x24]
jb 0x100665a9
jmp 0x100668b9
cmp eax, 1
jb 0x10066a15
mov esi, 1
xor edx, edx
jmp 0x1006680f
inc ebx
cmp ebx, dword [esp + 0x24]
jb 0x100665a9
jmp 0x100668b9
mov edx, eax
xor edi, edi
and edx, 0xfffffff8
jmp 0x100667e3
cmp eax, 1
jb 0x10066a42
mov esi, 1
xor edx, edx
jmp 0x1006680f
inc ebx
cmp ebx, dword [esp + 0x24]
jb 0x100665a9
jmp 0x100668b9
xor ebx, ebx
jmp 0x10065ae6