Function at 0x100628b0
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 ecx, dword [ebp + 8]
mov edi, dword [ecx + 0x20]
test edi, edi
jne 0x10062902
mov ebx, dword [ecx + 0x58]
cmp dword [ecx + 0x70], 4
je 0x10063251
mov esi, dword [ecx + 0x50]
cmp ebx, 2
je 0x100628f2
cmp ebx, 4
je 0x100628f2
cmp ebx, 6
je 0x100628f2
cmp ebx, 8
je 0x100628f2
cmp ebx, 0x10
jne 0x10062905
lea edx, [esi + esi*2]
mov eax, dword [ecx + edx*8 + 0x70]
mov dword [ecx + 0x58], eax
mov dword [ecx + edx*8 + 0x70], ebx
jmp 0x10062905
mov esi, dword [ecx + 0x50]
mov eax, dword [ebp + 0xc]
test esi, esi
jl 0x10062954
mov dword [esp + 0xa4], esi
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 0x1006291d
mov esi, dword [esp + 0xa4]
mov edi, dword [esp]
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
cdq
mov ebx, dword [ebp + 0xc]
idiv ebx
mov dword [esp + 0x9c], eax
xor ebx, ebx
test esi, esi
jl 0x10064284
xor edi, edi
push 1
pop edx
mov dword [esp + 0xc], edi
mov eax, edx
mov dword [esp + 0xa4], esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], ebx
mov esi, dword [esp + 0xc]
jmp 0x10062997
mov eax, 1
mov edx, eax
mov dword [esp + 0xa0], edx
jmp 0x100629b3
mov eax, dword [esp + 0xa0]
imul eax, edi
mov dword [esp + 0xa0], eax
mov edx, dword [ebp + 8]
lea ecx, [esi + esi*2]
mov eax, dword [esp + 0xa0]
mov dword [esp + 0xa8], ecx
mov edi, dword [edx + ecx*8 + 0x58]
mov ebx, dword [edx + ecx*8 + 0x5c]
mov dword [edx + ecx*8 + 0x64], eax
cmp edi, 0xd
jle 0x10062a09
test edi, 1
je 0x10062a09
cmp edi, dword [esp + 0x18]
jne 0x1006328c
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 esi, dword [esp + 0xa4]
jne 0x10062a48
cmp ebx, 0xd
jle 0x10062a48
test bl, 1
je 0x10062a48
cmp ebx, dword [esp + 0x18]
jne 0x100632c9
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 ebx, eax
cmovge eax, ebx
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, [ebx*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 0x1006321c
cmp edi, 0xd
jg 0x10062f94
test bl, 1
je 0x10062c87
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x24], 0
je 0x10062b6b
test ebx, ebx
jle 0x1006321c
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 0x1006321c
mov dword [esp + 0x90], eax
mov dword [esp + 0xc], esi
mov dword [esp + 0x78], edx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0xf0], edi
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 0x10062b1a
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 0x10062b0c
mov edx, dword [esp + 0x78]
mov ebx, dword [esp + 0x8c]
mov edi, dword [esp + 0xf0]
mov esi, dword [esp + 0xc]
jmp 0x1006321c
mov ecx, ebx
shr ecx, 0x1f
add ecx, ebx
sar ecx, 1
mov dword [esp + 0x74], ecx
cmp ebx, 1
jle 0x1006321c
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x5c], 0
mov dword [esp + 0xf0], edi
lea ebx, [ecx + eax*8]
mov dword [esp + 0x64], ebx
mov ebx, eax
shl ebx, 4
mov dword [esp + 0x68], ebx
mov dword [esp + 0x90], eax
mov dword [esp + 0x78], edx
mov dword [esp + 0xc], esi
add ecx, ebx
mov dword [esp + 0x60], ecx
lea ebx, [edi*8]
neg ebx
lea ecx, [edi - 1]
mov dword [esp + 0xe4], ecx
mov ecx, edi
shl ecx, 4
add ebx, edx
add ebx, ecx
add ecx, 0xfffffff0
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ecx
mov ebx, dword [esp + 0x8c]
mov edi, dword [esp + 0x5c]
cmp dword [esp + 0xf0], 1
jle 0x1006331b
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 0x10062c3f
mov edi, dword [esp + 0x5c]
inc edi
cmp edi, dword [esp + 0x74]
jb 0x10062bf1
jmp 0x10062b50
test bl, 2
je 0x10062dbc
mov dword [esp + 0x90], eax
lea eax, [ebx + 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 ebx, ebx
jle 0x1006321c
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x90], eax
mov dword [esp + 0x24], 0
mov dword [esp + 0xc], 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 + 0x8c], ebx
mov dword [esp + 0xf0], edi
cmp dword [esp + 0xf0], 1
jle 0x100632f5
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 0x10062d74
mov esi, dword [esp + 0x24]
inc esi
cmp esi, dword [esp + 0x1c]
jb 0x10062d21
jmp 0x10062b50
test ebx, ebx
jle 0x1006321c
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 0x1006321c
mov dword [esp + 0x90], eax
mov dword [esp + 0x78], edx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0xf0], edi
mov dword [esp + 0xc], esi
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 0x10062ead
mov eax, dword [esp + 0x40]
add eax, 4
cmp eax, dword [esp + 0x8c]
jl 0x10062e1c
mov edx, dword [esp + 0x78]
mov ebx, dword [esp + 0x8c]
mov edi, dword [esp + 0xf0]
mov esi, dword [esp + 0xc]
jmp 0x1006321c
test bl, 3
je 0x10063044
test ebx, ebx
jle 0x1006321c
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], ebx
mov dword [esp + 0xc], esi
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 0x10062ff1
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 0x10062fdc
mov edx, dword [esp + 0x78]
mov ebx, dword [esp + 0x8c]
mov esi, dword [esp + 0xc]
jmp 0x1006321c
test ebx, ebx
jle 0x10063208
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 + 0x8c], ebx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x90], eax
mov dword [esp + 0x78], edx
mov dword [esp + 0xf0], edi
mov dword [esp + 0xc], esi
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 0x10063124
mov ebx, dword [esp + 0x98]
add ebx, 4
cmp ebx, dword [esp + 0x8c]
jl 0x100630aa
mov edx, dword [esp + 0x78]
mov ebx, dword [esp + 0x8c]
mov edi, dword [esp + 0xf0]
mov esi, 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 esi
mov eax, dword [esp + 0xa8]
mov dword [ecx + eax*8 + 0x6c], edx
mov edx, dword [ecx + 0x50]
mov dword [esp + 0xa4], edx
cmp esi, edx
jg 0x10063341
imul ebx, edi
cmp ebx, 0x7d0
jle 0x100629a2
jmp 0x10062992
cmp ebx, 6
je 0x10063284
shl ebx, 2
mov esi, dword [ecx + 0x50]
mov dword [ecx + 0x58], ebx
test esi, esi
jle 0x1006327b
mov eax, 1
lea ebx, [eax + eax*2]
inc eax
mov edx, dword [ecx + ebx*8 + 0x70]
mov dword [ecx + ebx*8 + 0x58], edx
cmp eax, esi
jle 0x10063268
mov ebx, dword [ecx + 0x58]
dec esi
mov dword [ecx + 0x50], esi
jmp 0x100628d9
mov esi, dword [ecx + 0x50]
jmp 0x100628f2
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.10064580
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 0x100629ea
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 ebx
call fcn.10064580
add esp, 0x10
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
jmp 0x10062a26
inc esi
cmp esi, dword [esp + 0x1c]
jb 0x10062d21
mov edx, dword [esp + 0x78]
mov ebx, dword [esp + 0x8c]
mov edi, dword [esp + 0xf0]
mov esi, dword [esp + 0xc]
jmp 0x1006321c
inc edi
cmp edi, dword [esp + 0x74]
jb 0x10062bf1
mov edx, dword [esp + 0x78]
mov ebx, dword [esp + 0x8c]
mov edi, dword [esp + 0xf0]
mov esi, dword [esp + 0xc]
jmp 0x1006321c
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0xa0]
mov ebx, dword [esp + 0x10]
mov edi, dword [ecx + 0x20]
mov edx, dword [ebp + 0xc]
lea esi, [edx + ebx]
lea edx, [esi*8 + 0x80]
mov dword [ecx + 0x18], edx
test edi, edi
je 0x10063ec4
mov eax, dword [ebp + 0x1c]
mov edi, dword [ebp + 0xc]
mov edx, dword [eax]
mov esi, edx
neg esi
and esi, 0x3f
add edx, esi
mov dword [esp + 0x6c], edx
lea esi, [edx + edi*4]
mov dword [eax], esi
mov dword [ecx + 0x54], edx
mov esi, dword [eax]
mov edx, esi
neg edx
and edx, 0x3f
add esi, edx
mov dword [esp + 0x40], esi
lea edi, [esi + edi*4]
mov dword [eax], edi
mov edi, dword [ecx + 0x50]
lea eax, [edi + edi*2]
mov eax, dword [ecx + eax*8 + 0x5c]
test eax, eax
jle 0x1006347d
cmp eax, 4
jl 0x100641c3
cmp eax, 0x2a
jl 0x100641ca
mov edi, dword [esp + 0x6c]
and edi, 0x1f
je 0x100633dc
test edi, 3
jne 0x100641c3
neg edi
add edi, 0x20
shr edi, 2
lea edx, [edi + 4]
cmp eax, edx
jl 0x100641c3
mov edx, eax
sub edx, edi
and edx, 3
neg edx
add edx, eax
test edi, edi
jbe 0x10063407
mov ecx, dword [esp + 0x6c]
xor esi, esi
mov dword [ecx + esi*4], esi
inc esi
cmp esi, edi
jb 0x100633fc
mov ecx, dword [ebp + 8]
mov dword [esp], eax
mov eax, 4
mov dword [esp + 4], edx
lea edx, [edi + 1]
vmovd xmm0, edi
lea esi, [edi + 2]
vmovd xmm1, eax
lea eax, [edi + 3]
vmovd xmm2, edx
vmovd xmm3, esi
vpunpcklqdq xmm5, xmm0, xmm2
vmovd xmm4, eax
vpunpcklqdq xmm6, xmm3, xmm4
vpshufd xmm1, xmm1, 0
vshufps xmm0, xmm5, xmm6, 0x88
mov edx, dword [esp + 4]
mov eax, dword [esp]
mov esi, dword [esp + 0x6c]
vmovdqu xmmword [esi + edi*4], xmm0
add edi, 4
vpaddd xmm0, xmm0, xmm1
cmp edi, edx
jb 0x1006344d
mov esi, eax
lea edi, [edx + 1]
sub esi, edx
cmp eax, edi
jb 0x1006347a
mov edi, dword [esp + 0x6c]
xor eax, eax
lea edi, [edi + edx*4]
mov dword [edi + eax*4], edx
inc eax
inc edx
cmp eax, esi
jb 0x10063471
mov edi, dword [ecx + 0x50]
lea eax, [edi + 1]
mov dword [esp + 0x2c], eax
test edi, edi
jl 0x10063e50
mov esi, dword [esp + 0x40]
lea eax, [edi + edi*2]
and esi, 0x1f
lea edi, [ecx + eax*8]
mov eax, esi
mov edx, esi
neg eax
and edx, 3
add eax, 0x20
mov dword [esp + 0x20], 0
shr eax, 2
vmovd xmm3, dword [ebp + 0x10]
mov dword [esp + 4], eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x28], edi
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
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 + 0x98], eax
cmp ebx, 0xd
jg 0x100637d6
test esi, esi
jle 0x10063e3b
mov eax, dword [esp + 0x6c]
mov eax, dword [eax]
cmp ebx, 1
jle 0x10063a9b
shl edx, 3
xor edi, edi
mov dword [esp + 0x5c], edx
lea edx, [ebx*8 - 8]
mov dword [esp + 0x68], edx
lea edx, [ebx - 1]
mov dword [esp + 0x58], edi
mov dword [esp + 0x78], edx
and edx, 0xfffffff8
mov dword [esp + 0xa4], edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x64], edi
mov ecx, dword [esp + 0x58]
vmovdqu xmmword [esp + 0x30], xmm3
mov dword [esp + 0x88], esi
mov dword [esp + 0x84], ebx
cmp dword [esp + 0x78], 8
jl 0x10064215
mov edx, dword [esp + 0x5c]
imul edx, eax
mov dword [esp + 0x50], eax
lea ebx, [edx*8]
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x58], ecx
vmovd xmm2, ebx
add eax, edx
vpshufd xmm2, xmm2, 0
lea esi, [eax + edx]
lea edi, [esi + edx]
lea ebx, [eax + edx*4]
vmovd xmm1, eax
vmovd xmm0, esi
lea esi, [ebx + edx]
vmovd xmm3, edi
add edi, edx
mov eax, dword [esp + 0x98]
vmovd xmm7, ebx
mov ebx, dword [esp + 0x64]
vpunpcklqdq xmm5, xmm1, xmm0
vmovd xmm0, esi
vmovd xmm4, edi
lea edi, [esi + edx]
add edx, edi
lea esi, [eax + ebx]
vpunpcklqdq xmm6, xmm3, xmm4
mov ebx, dword [esp + 0xa4]
vmovd xmm3, edi
vmovd xmm4, edx
xor edx, edx
vshufps xmm1, xmm5, xmm6, 0x88
vpunpcklqdq xmm5, xmm7, xmm0
vpunpcklqdq xmm6, xmm3, xmm4
vshufps xmm0, xmm5, xmm6, 0x88
mov dword [esp + 0x54], ebx
mov dword [esp + 0x8c], esi
vpshuflw xmm3, xmm1, 0xee
vpunpckhqdq xmm5, xmm1, xmm1
vmovd eax, xmm1
vpaddd xmm1, xmm1, xmm2
vmovd esi, xmm3
vpshuflw xmm3, xmm5, 0xee
vmovd ebx, xmm5
vmovd edi, xmm3
vmovd xmm6, dword [eax]
vmovd xmm7, dword [esi]
vpunpcklqdq xmm4, xmm6, xmm7
vmovd xmm6, dword [ebx]
vmovd xmm7, dword [edi]
vpunpcklqdq xmm5, xmm6, xmm7
vshufps xmm5, xmm4, xmm5, 0x88
vpshuflw xmm4, xmm0, 0xee
mov dword [esp + 0xac], edx
vmovd ecx, xmm0
vmovd edx, xmm4
vmovd xmm3, dword [ecx]
vmovd xmm4, dword [edx]
vpunpcklqdq xmm6, xmm3, xmm4
vpunpckhqdq xmm4, xmm0, xmm0
vpaddd xmm0, xmm0, xmm2
mov dword [esp + 0xb0], edx
vmovd edx, xmm4
vpshuflw xmm3, xmm4, 0xee
mov dword [esp + 0xb4], edx
vmovd xmm7, dword [edx]
vmovd edx, xmm3
vmovd xmm3, dword [esi + 4]
vmovd xmm4, dword [edx]
vpunpcklqdq xmm7, xmm7, xmm4
vshufps xmm6, xmm6, xmm7, 0x88
vmovd xmm4, dword [eax + 4]
vmovd xmm7, dword [edi + 4]
mov eax, dword [esp + 0xb0]
vpunpcklqdq xmm4, xmm4, xmm3
vinsertf128 ymm5, ymm5, xmm6, 1
vmovd xmm6, dword [ebx + 4]
vpunpcklqdq xmm3, xmm6, xmm7
vmovd xmm6, dword [ecx + 4]
mov ecx, dword [esp + 0xb4]
vmovd xmm7, dword [eax + 4]
vshufps xmm4, xmm4, xmm3, 0x88
vpunpcklqdq xmm3, xmm6, xmm7
vmovd xmm6, dword [ecx + 4]
vmovd xmm7, dword [edx + 4]
vpunpcklqdq xmm6, xmm6, xmm7
vshufps xmm3, xmm3, xmm6, 0x88
mov ebx, dword [esp + 0x8c]
mov edx, dword [esp + 0xac]
vinsertf128 ymm3, ymm4, xmm3, 1
vunpcklps ymm4, ymm5, ymm3
vunpckhps ymm5, ymm5, ymm3
vperm2f128 ymm3, ymm4, ymm5, 0x20
vperm2f128 ymm4, ymm4, ymm5, 0x31
vmovups xmmword [ebx + edx*8], xmm3
vmovups xmmword [ebx + edx*8 + 0x20], xmm4
vextractf128 xmmword [ebx + edx*8 + 0x10], ymm3, 1
vextractf128 xmmword [ebx + edx*8 + 0x30], ymm4, 1
add edx, 8
cmp edx, dword [esp + 0xa4]
jb 0x100635ff
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x54]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x78]
mov edx, esi
sub edx, ebx
lea edi, [ebx + 1]
mov dword [esp + 0x90], edx
cmp esi, edi
jb 0x100641f3
imul eax, dword [esp + 0x5c]
mov edi, ebx
imul edi, eax
xor edx, edx
mov esi, dword [ebp + 0x10]
mov dword [esp + 0x58], ecx
add esi, eax
add esi, edi
mov dword [esp + 0x60], esi
mov edi, dword [esp + 0x98]
mov esi, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
add edi, esi
lea esi, [edi + ebx*8]
xor ebx, ebx
mov edi, dword [ebx + ecx]
mov dword [esi + edx*8], edi
mov edi, dword [ebx + ecx + 4]
add ebx, eax
mov dword [esi + edx*8 + 4], edi
inc edx
cmp edx, dword [esp + 0x90]
jb 0x10063792
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x58]
inc ecx
add eax, dword [esp + 0x68]
mov dword [esp + 0x64], eax
cmp ecx, dword [esp + 0x88]
jae 0x100641d6
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + ecx*4]
jmp 0x10063561
test esi, esi
jle 0x10063e3b
mov eax, ebx
mov edi, ebx
and eax, 0xfffffff8
mov dword [esp + 0x74], 0
sub edi, eax
shl edx, 3
mov dword [esp + 0xa8], edi
mov dword [esp + 0x88], esi
lea edi, [eax + 1]
mov dword [esp + 0x7c], edi
mov dword [esp + 0x5c], edx
mov dword [esp + 0x94], eax
mov dword [esp + 0x84], ebx
mov dword [esp + 0x20], ecx
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x98]
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x74], edi
vmovdqu xmmword [esp + 0x30], xmm3
mov ebx, dword [ebx + edi*4]
imul ebx, dword [esp + 0x5c]
mov edi, dword [ebp + 0x10]
lea eax, [ebx*8]
mov dword [esp + 0x70], ebx
mov dword [esp + 0x98], esi
lea edx, [edi + ebx]
vmovd xmm2, eax
lea ecx, [edx + ebx]
vpshufd xmm2, xmm2, 0
lea eax, [edi + ebx*4]
vmovd xmm1, edx
lea edx, [eax + ebx]
vmovd xmm0, ecx
add ecx, ebx
vpunpcklqdq xmm5, xmm3, xmm1
vmovd xmm7, eax
mov eax, esi
vmovd xmm4, ecx
lea ecx, [edx + ebx]
vpunpcklqdq xmm6, xmm0, xmm4
vmovd xmm0, edx
vshufps xmm1, xmm5, xmm6, 0x88
vpunpcklqdq xmm6, xmm7, xmm0
vmovd xmm4, ecx
add ecx, ebx
vmovd xmm5, ecx
xor ecx, ecx
vpunpcklqdq xmm7, xmm4, xmm5
xor edx, edx
vshufps xmm0, xmm6, xmm7, 0x88
mov dword [esp + 0xa0], ecx
vpshuflw xmm3, xmm1, 0xee
vpunpckhqdq xmm5, xmm1, xmm1
mov dword [esp + 0xbc], eax
vmovd eax, xmm1
vpaddd xmm1, xmm1, xmm2
vmovd esi, xmm3
vpshuflw xmm3, xmm5, 0xee
vmovd ebx, xmm5
vmovd edi, xmm3
vmovd xmm6, dword [eax]
vmovd xmm7, dword [esi]
vpunpcklqdq xmm4, xmm6, xmm7
vmovd xmm6, dword [ebx]
vmovd xmm7, dword [edi]
vpunpcklqdq xmm5, xmm6, xmm7
vshufps xmm5, xmm4, xmm5, 0x88
vpshuflw xmm4, xmm0, 0xee
mov dword [esp + 0xb8], edx
vmovd ecx, xmm0
vmovd edx, xmm4
vmovd xmm3, dword [ecx]
vmovd xmm4, dword [edx]
vpunpcklqdq xmm6, xmm3, xmm4
vpunpckhqdq xmm4, xmm0, xmm0
vpaddd xmm0, xmm0, xmm2
mov dword [esp + 0xc0], edx
vmovd edx, xmm4
vpshuflw xmm3, xmm4, 0xee
mov dword [esp + 0xc4], edx
vmovd xmm7, dword [edx]
vmovd edx, xmm3
vmovd xmm3, dword [esi + 4]
mov esi, dword [esp + 0xa0]
vmovd xmm4, dword [edx]
add esi, 8
vpunpcklqdq xmm7, xmm7, xmm4
vshufps xmm6, xmm6, xmm7, 0x88
vmovd xmm4, dword [eax + 4]
vmovd xmm7, dword [edi + 4]
mov eax, dword [esp + 0xc0]
vpunpcklqdq xmm4, xmm4, xmm3
mov dword [esp + 0xa0], esi
vinsertf128 ymm5, ymm5, xmm6, 1
vmovd xmm6, dword [ebx + 4]
vpunpcklqdq xmm3, xmm6, xmm7
vmovd xmm6, dword [ecx + 4]
mov ecx, dword [esp + 0xc4]
vmovd xmm7, dword [eax + 4]
vshufps xmm4, xmm4, xmm3, 0x88
vpunpcklqdq xmm3, xmm6, xmm7
vmovd xmm6, dword [ecx + 4]
vmovd xmm7, dword [edx + 4]
vpunpcklqdq xmm6, xmm6, xmm7
vshufps xmm3, xmm3, xmm6, 0x88
mov ebx, dword [esp + 0x98]
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xbc]
vinsertf128 ymm3, ymm4, xmm3, 1
vunpcklps ymm4, ymm5, ymm3
vunpckhps ymm5, ymm5, ymm3
vperm2f128 ymm3, ymm4, ymm5, 0x20
vperm2f128 ymm4, ymm4, ymm5, 0x31
vmovups xmmword [edx + ebx], xmm3
vextractf128 xmmword [edx + ebx + 0x10], ymm3, 1
add edx, 0x40
vmovups xmmword [eax + 0x20], xmm4
vextractf128 xmmword [eax + 0x30], ymm4, 1
add eax, 0x40
cmp esi, dword [esp + 0x94]
jb 0x100638b2
mov eax, dword [esp + 0x84]
vmovdqu xmm3, xmmword [esp + 0x30]
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x98]
cmp eax, dword [esp + 0x7c]
jb 0x10063a76
mov eax, dword [esp + 0x94]
mov ecx, ebx
imul ecx, eax
xor edx, edx
lea eax, [esi + eax*8]
mov dword [esp + 0x98], esi
add ecx, dword [ebp + 0x10]
mov dword [esp + 0x74], edi
mov esi, edx
mov edi, dword [esi + ecx]
mov dword [eax + edx*8], edi
mov edi, dword [esi + ecx + 4]
add esi, ebx
mov dword [eax + edx*8 + 4], edi
inc edx
cmp edx, dword [esp + 0xa8]
jb 0x10063a51
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x98]
mov eax, dword [esp + 0x84]
inc edi
lea esi, [esi + eax*8]
cmp edi, dword [esp + 0x88]
jb 0x10063828
mov esi, dword [esp + 0x88]
mov ebx, eax
mov ecx, dword [esp + 0x20]
cmp esi, 6
jle 0x10063bd2
mov eax, dword [esp + 0x6c]
cmp eax, dword [esp + 0x40]
jae 0x10063ac1
mov edx, dword [esp + 0x40]
lea eax, [esi*4]
sub edx, dword [esp + 0x6c]
cmp eax, edx
jle 0x10063ae2
mov eax, dword [esp + 0x6c]
cmp eax, dword [esp + 0x40]
jbe 0x10063bd2
lea edx, [esi*4]
sub eax, dword [esp + 0x40]
cmp eax, edx
jl 0x10063bd2
cmp esi, 0x2a
jl 0x10064223
mov edx, dword [esp + 0x14]
test edx, edx
je 0x10063b02
cmp dword [esp + 0xc], 0
jne 0x1006421c
mov edx, dword [esp + 4]
lea eax, [edx + 4]
cmp esi, eax
jl 0x1006421c
mov eax, esi
sub eax, edx
and eax, 3
neg eax
add eax, esi
test edx, edx
jbe 0x10063b5f
mov dword [esp + 0x1c], 0
mov dword [esp + 0x88], esi
mov dword [esp + 0x84], ebx
mov dword [esp + 0x20], ecx
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x6c]
mov ecx, dword [edi + ebx*4]
mov dword [esi + ebx*4], ecx
inc ebx
cmp ebx, edx
jb 0x10063b42
mov esi, dword [esp + 0x88]
mov ebx, dword [esp + 0x84]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x6c]
vmovdqu xmm0, xmmword [edi + edx*4]
vmovdqu xmmword [ecx + edx*4], xmm0
add edx, 4
cmp edx, eax
jb 0x10063b6b
mov ecx, dword [esp + 0x20]
mov edx, esi
lea edi, [eax + 1]
sub edx, eax
mov dword [esp + 0x24], edx
cmp esi, edi
jb 0x10063bef
mov edx, dword [esp + 0x40]
mov dword [esp + 0x18], 0
mov dword [esp + 0x84], ebx
mov dword [esp + 0x20], ecx
lea edi, [edx + eax*4]
mov edx, dword [esp + 0x6c]
mov ecx, edi
mov ebx, dword [esp + 0x18]
lea eax, [edx + eax*4]
mov edi, dword [esp + 0x24]
mov edx, dword [eax + ebx*4]
mov dword [ecx + ebx*4], edx
inc ebx
cmp ebx, edi
jb 0x10063bba
mov ebx, dword [esp + 0x84]
mov ecx, dword [esp + 0x20]
jmp 0x10063bef
mov dword [esp + 0x20], ecx
xor eax, eax
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x6c]
mov edx, dword [edi + eax*4]
mov dword [ecx + eax*4], edx
inc eax
cmp eax, esi
jb 0x10063be0
mov ecx, dword [esp + 0x20]
test ebx, ebx
jle 0x10063e3b
mov dword [esp + 0x84], ebx
lea edx, [ebx*4]
mov dword [esp], edx
xor eax, eax
mov dword [esp + 0x20], ecx
mov edx, dword [esp + 0x6c]
cmp dword [esp + 0x84], 6
jg 0x10063c29
mov ebx, eax
imul ebx, dword [esp]
add ebx, edx
jmp 0x10063df6
mov dword [esp + 0x44], eax
lea ecx, [esi*4]
mov dword [esp + 0x88], esi
mov edx, dword [esp + 0x84]
vmovd xmm0, ecx
mov ecx, edx
and ecx, 0xfffffffc
vpshufd xmm0, xmm0, 0
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x6c]
lea eax, [ecx + ebx*4]
mov dword [esp + 0x48], eax
imul ebx, dword [esp]
lea ecx, [edi + ebx - 4]
lea esi, [edi + ebx]
mov dword [esp + 0x4c], esi
cmp ecx, eax
jbe 0x10063c85
mov eax, ecx
sub eax, dword [esp + 0x48]
cmp eax, 4
jge 0x10063ca4
cmp ecx, dword [esp + 0x48]
jae 0x10063de7
neg ecx
lea eax, [edx*4]
add ecx, dword [esp + 0x48]
cmp ecx, eax
jl 0x10063de7
cmp edx, 0x3f
jl 0x10064236
and esi, 0x1f
je 0x10063cc6
test esi, 3
jne 0x1006422f
neg esi
add esi, 0x20
shr esi, 2
lea eax, [esi + 4]
cmp edx, eax
jl 0x1006422f
mov eax, edx
sub eax, esi
and eax, 3
neg eax
add eax, edx
test esi, esi
jbe 0x10063d14
xor ebx, ebx
mov dword [esp + 0x80], eax
xor ecx, ecx
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
mov eax, dword [edx]
add eax, ecx
mov dword [edi + ebx*4], eax
inc ebx
add ecx, dword [esp + 0x88]
cmp ebx, esi
jb 0x10063cf3
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov dword [esp + 0x80], eax
mov eax, esi
mov ebx, dword [esp + 0x88]
imul eax, ebx
lea ecx, [ebx + eax]
lea edi, [ebx + ecx]
vmovd xmm1, eax
vmovd xmm2, ecx
vmovd xmm4, edi
add edi, ebx
vpunpcklqdq xmm6, xmm1, xmm2
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x48]
vmovd xmm5, edi
vpunpcklqdq xmm7, xmm4, xmm5
mov ebx, dword [esp + 0x4c]
vshufps xmm1, xmm6, xmm7, 0x88
vmovd xmm2, dword [ecx]
vpshufd xmm4, xmm2, 0
vpaddd xmm5, xmm4, xmm1
vpaddd xmm1, xmm1, xmm0
vmovdqu xmmword [ebx + esi*4], xmm5
add esi, 4
cmp esi, eax
jb 0x10063d5b
mov ebx, edx
lea ecx, [eax + 1]
sub ebx, eax
cmp edx, ecx
jb 0x10064241
mov edi, dword [esp + 0x44]
xor esi, esi
imul edi, edx
add edi, eax
imul eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x48]
mov dword [esp + 0x80], eax
lea edi, [ecx + edi*4]
xor ecx, ecx
mov eax, dword [edx]
add eax, dword [esp + 0x80]
add eax, ecx
mov dword [edi + esi*4], eax
inc esi
add ecx, dword [esp + 0x88]
cmp esi, ebx
jb 0x10063dae
mov eax, dword [esp + 0x44]
inc eax
mov edx, dword [esp + 0x84]
mov dword [esp + 0x44], eax
cmp eax, dword [esp + 0x88]
jb 0x10063c54
jmp 0x10063e32
mov ebx, esi
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x88]
mov edx, edi
xor edi, edi
mov dword [esp + 0x88], esi
xor ecx, ecx
mov esi, dword [esp + 0x40]
mov edx, dword [esi + eax*4]
add edx, ecx
mov dword [ebx + edi*4], edx
inc edi
add ecx, dword [esp + 0x88]
cmp edi, dword [esp + 0x84]
jb 0x10063e05
inc eax
mov esi, dword [esp + 0x88]
mov edx, dword [esp + 0x6c]
cmp eax, esi
jb 0x10063c12
nop dword [eax + eax]
mov ecx, dword [esp + 0x20]
inc ecx
cmp ecx, dword [esp + 0x2c]
jb 0x100634cd
mov ecx, dword [ebp + 8]
mov ebx, dword [esp + 0x10]
mov edi, dword [ecx + 0x50]
mov eax, dword [ebp + 0xc]
lea esi, [edi + edi*2]
cdq
mov esi, dword [ecx + esi*8 + 0x5c]
idiv esi
test edi, edi
js 0x10063e8e
mov dword [esp + 0x10], ebx
mov esi, 1
lea edx, [edi + edi*2]
mov dword [ecx + edx*8 + 0x64], esi
mov ebx, dword [ecx + edx*8 + 0x58]
cmp eax, 0x7d0
jle 0x10063e81
cmp edi, 1
jne 0x10063e84
imul esi, ebx
cdq
idiv ebx
dec edi
jns 0x10063e6a
mov ebx, dword [esp + 0x10]
mov eax, dword [ebp + 0xc]
lea edx, [eax*8]
mov eax, dword [ecx + 0x18]
sub eax, edx
test ebx, ebx
jne 0x10063eaa
mov dword [ecx + 0x18], 0
jmp 0x10063ead
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x54], 0
vzeroupper
add esp, 0x134
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 0x18]
mov esi, dword [edi]
mov ebx, esi
neg ebx
and ebx, 0x3f
add esi, ebx
lea edx, [esi + eax*4]
mov dword [edi], edx
mov dword [esi], 0
mov ebx, dword [ecx + 0x50]
mov edx, ebx
dec edx
js 0x100641bb
mov dword [esp + 0x1c], 1
lea edx, [ebx + ebx*2 - 3]
mov dword [esp + 0x14], 0
lea edi, [ecx + edx*8]
mov edx, esi
and edx, 0x1f
mov dword [esp + 0x2c], edi
mov edi, edx
and edi, 3
mov dword [esp + 0x24], edi
mov edi, edx
neg edi
add edi, 0x20
shr edi, 2
mov dword [esp + 0x28], ebx
mov dword [esp + 0xa0], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x30], esi
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
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 0x100640d6
mov edx, ecx
dec edx
js 0x100640c3
test eax, eax
jle 0x100640c3
xor esi, esi
lea edi, [ecx*4]
imul edi, eax
lea edx, [eax*4]
add edi, dword [esp + 0x30]
mov dword [esp + 0x38], esi
mov dword [esp], edi
sub edi, edx
mov dword [esp + 0x34], esi
mov dword [esp + 0x44], edi
mov dword [esp + 0x3c], esi
mov dword [esp + 8], edx
mov dword [esp + 0x40], ecx
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x14], ebx
cmp eax, 6
jg 0x10063fbb
mov ecx, dword [esp + 0x3c]
jmp 0x1006406a
mov dword [esp + 0x34], edi
lea ecx, [eax*4]
neg ecx
add ecx, dword [esp]
mov esi, dword [esp + 0x40]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 8]
imul ecx, edx
mov ebx, dword [esp + 4]
sub ebx, ecx
add ebx, 0xfffffffc
mov dword [esp + 0xc], ebx
cmp ebx, dword [esp + 0x30]
jbe 0x10063ffe
mov edi, ebx
lea ebx, [eax*4]
sub edi, dword [esp + 0x30]
cmp ebx, edi
jle 0x1006401d
mov ebx, dword [esp + 0x30]
cmp ebx, dword [esp + 0xc]
jbe 0x10064062
mov ebx, dword [esp + 0xc]
lea edi, [eax*4]
neg ebx
add ebx, dword [esp + 0x30]
cmp ebx, edi
jl 0x10064062
neg ecx
xor ebx, ebx
mov dword [esp + 0x38], edx
add ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x30]
mov edi, dword [edx + ebx*4]
imul edi, dword [esp + 0x48]
lea edi, [esi + edi - 1]
mov dword [ecx + ebx*4], edi
inc ebx
cmp ebx, eax
jb 0x1006402d
mov ecx, dword [esp + 0x3c]
dec esi
mov edx, dword [esp + 0x38]
inc edx
dec dword [esp + 0x34]
lea ebx, [ecx + eax*4]
mov dword [esp + 0x3c], ebx
cmp edx, dword [esp + 0x48]
jb 0x10063fd3
jmp 0x100640bb
mov dword [esp + 0x40], esi
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x48]
neg ecx
mov dword [esp + 0x38], edx
xor esi, esi
add ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x30]
add ebx, edi
mov dword [esp + 0x34], edi
mov edi, dword [edx + esi*4]
imul edi, dword [esp + 0x48]
lea edi, [ebx + edi - 1]
mov dword [ecx + esi*4], edi
inc esi
cmp esi, eax
jb 0x10064084
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
inc edx
mov edi, dword [esp + 0x34]
lea ebx, [ecx + eax*4]
dec dword [esp + 0x40]
dec edi
mov dword [esp + 0x3c], ebx
cmp edx, dword [esp + 0x48]
jb 0x10063fad
mov ecx, dword [esp + 0x48]
mov ebx, dword [esp + 0x14]
inc ebx
imul eax, ecx
cmp ebx, dword [esp + 0x28]
jb 0x10063f3b
jmp 0x100641b4
test eax, eax
jle 0x100641a9
cmp eax, 4
jl 0x1006425c
cmp eax, 0x31
jl 0x10064278
mov edi, dword [esp + 0x18]
test edi, edi
je 0x10064107
cmp dword [esp + 0x24], 0
jne 0x1006425c
mov edi, dword [esp + 0x10]
lea edx, [edi + 4]
cmp eax, edx
jl 0x1006425c
mov edx, eax
sub edx, edi
and edx, 3
neg edx
add edx, eax
test edi, edi
jbe 0x10064145
mov dword [esp + 0x14], ebx
xor esi, esi
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x30]
mov eax, dword [ebx + esi*4]
imul eax, ecx
mov dword [ebx + esi*4], eax
inc esi
cmp esi, edi
jb 0x1006412f
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
vmovd xmm0, ecx
vpshufd xmm0, xmm0, 0
mov esi, dword [esp + 0x30]
vpmulld xmm1, xmm0, xmmword [esi + edi*4]
vmovdqu xmmword [esi + edi*4], xmm1
add edi, 4
cmp edi, edx
jb 0x10064152
mov esi, eax
lea edi, [edx + 1]
sub esi, edx
cmp eax, edi
jb 0x10064268
mov edi, dword [esp + 0x30]
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], eax
lea edx, [edi + edx*4]
mov edi, dword [esp + 0x20]
mov eax, dword [edx + edi*4]
imul eax, ecx
mov dword [edx + edi*4], eax
inc edi
cmp edi, esi
jb 0x1006418a
inc ebx
mov eax, dword [esp + 0x1c]
cmp ebx, dword [esp + 0x28]
jb 0x10063f3b
jmp 0x100641b4
inc ebx
cmp ebx, dword [esp + 0x28]
jb 0x10063f3b
mov esi, dword [esp + 0x30]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x54], esi
jmp 0x10063eb4
xor edx, edx
jmp 0x1006345d
mov edx, eax
xor edi, edi
and edx, 0xfffffffc
jmp 0x10063407
vmovdqu xmm3, xmmword [esp + 0x30]
mov esi, dword [esp + 0x88]
mov ebx, dword [esp + 0x84]
mov ecx, dword [esp + 0x20]
jmp 0x10063a9b
mov eax, dword [esp + 0x64]
inc ecx
add eax, dword [esp + 0x68]
mov dword [esp + 0x64], eax
cmp ecx, dword [esp + 0x88]
jae 0x100641d6
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + ecx*4]
jmp 0x10063561
xor ebx, ebx
jmp 0x10063747
xor eax, eax
jmp 0x10063b80
mov eax, esi
xor edx, edx
and eax, 0xfffffffc
jmp 0x10063b5f
xor eax, eax
jmp 0x10063d78
mov eax, dword [esp + 8]
xor esi, esi
jmp 0x10063d14
mov eax, dword [esp + 0x44]
inc eax
mov dword [esp + 0x44], eax
cmp eax, dword [esp + 0x88]
jb 0x10063c54
jmp 0x10063e32
nop dword [eax + eax]
xor edx, edx
jmp 0x10064164
inc ebx
cmp ebx, dword [esp + 0x28]
jb 0x10063f3b
jmp 0x100641b4
mov edx, eax
xor edi, edi
and edx, 0xfffffffc
jmp 0x10064145
xor eax, eax
jmp 0x10063352