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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x684
mov eax, dword [0x1039f6e0]
xor eax, esp
mov dword [esp + 0x680], eax
mov eax, dword [ebp + 0xc]
push ebx
mov dword [esp + 0x2c], ecx
push esi
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 0x1455a8]
mov ebx, dword [esi + 0x1455a4]
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x14]
push edi
mov edi, dword [esi + 0x1455a0]
add edi, dword [eax]
mov eax, dword [eax + 4]
add ecx, eax
mov dword [esp + 0x54], ecx
mov ecx, dword [esi + 0x30]
add ebx, eax
mov eax, dword [esi + 0x98]
sub ecx, eax
dec ecx
neg ecx
sbb ecx, ecx
mov dword [esp + 0x3c], edx
xor edx, edx
inc ecx
test eax, eax
sete dl
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], ebx
lea ecx, [edx + ecx*2]
mov edx, dword [esi + 0xc]
mov dword [esp + 0x44], ecx
xor ecx, ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x20], ecx
cmp dword [edx + 4], ecx
je 0x808a59
cmp dword [esi + 0x1456a4], 1
jne 0x808a59
cmp eax, ecx
je 0x8088cb
cmp dword [esi + 0xac], ecx
je 0x8088e3
cmp dword [esi + 0x9c], ecx
je 0x808a59
cmp dword [esi + 0xb0], ecx
jne 0x808a59
mov eax, dword [esi + 0xac]
mov ecx, dword [esi + 0xb0]
mov edx, dword [esi + 0xb4]
mov dword [esp + 0x70], eax
mov eax, dword [esi + 0xb8]
mov dword [esp + 0x74], ecx
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x38]
push 1
mov ecx, esi
mov dword [esp + 0x7c], edx
call fcn.007ed7b0
add esp, 4
cmp dword [esi + 0x1c], 0
je 0x8089dd
mov eax, dword [esi + 0xf8]
mov edx, dword [esi + 0xf0]
mov ecx, dword [esi + 0xf4]
mov dword [esp + 0x68], eax
mov eax, dword [esi + 0xfc]
mov dword [esp + 0x6c], eax
mov eax, dword [esi + 0xbc]
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], ecx
mov dword [esi + 0xac], edx
mov dword [esi + 0xb0], ecx
test edx, edx
je 0x808984
test eax, eax
je 0x808984
mov dl, byte [esi + 0xe8]
and dl, 3
je 0x808977
cmp dl, 3
jne 0x808984
mov edx, dword [esp + 0x60]
add edx, 0x20
mov dword [esi + 0xac], edx
mov dl, byte [esi + 0xe8]
test dl, 4
jne 0x8089bb
test eax, eax
jne 0x8089ac
test ecx, ecx
je 0x8089a2
lea eax, [ecx + 0x20]
mov dword [esi + 0xb0], eax
jmp 0x8089dd
xor eax, eax
mov dword [esi + 0xb0], eax
jmp 0x8089dd
mov eax, dword [esp + 0x38]
add eax, 0xffffffe0
mov dword [esi + 0xb0], eax
jmp 0x8089dd
test ecx, ecx
je 0x8089dd
and dl, 0xc
cmp dl, 0xc
jne 0x8089d4
shl eax, 5
add eax, ecx
mov dword [esi + 0xb0], eax
jmp 0x8089dd
add ecx, 0x20
mov dword [esi + 0xb0], ecx
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x48]
push ecx
lea edx, [esp + 0x30]
push edx
push eax
push esi
call fcn.00806310
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
mov eax, dword [esp + 0x88]
mov dword [esi + 0xac], ecx
mov ecx, dword [esp + 0x8c]
add esp, 0x10
cmp dword [esi + 0x1c], 0
mov dword [esi + 0xb0], edx
mov dword [esi + 0xb4], eax
mov dword [esi + 0xb8], ecx
je 0x808a70
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x68]
mov dword [esi + 0xf0], edx
mov edx, dword [esp + 0x6c]
mov dword [esi + 0xf4], eax
mov dword [esi + 0xf8], ecx
mov dword [esi + 0xfc], edx
jmp 0x808a70
mov edx, dword [esp + 0x38]
lea eax, [esp + 0x48]
push eax
lea ecx, [esp + 0x30]
push ecx
push edx
call fcn.00806b50
add esp, 0xc
mov eax, dword [esp + 0x38]
push eax
push esi
call fcn.00807380
mov ecx, dword [esp + 0x40]
add esp, 8
test dword [ecx + 0xc], 0x800
je 0x808bde
pxor mm0, mm0
movq mm1, qword [esi + 0x145700]
paddd mm0, mm1
movq mm1, qword [esi + 0x145708]
paddd mm0, mm1
movq mm1, qword [esi + 0x145710]
paddd mm0, mm1
movq mm1, qword [esi + 0x145718]
paddd mm0, mm1
movq mm1, qword [esi + 0x145720]
paddd mm0, mm1
movq mm1, qword [esi + 0x145728]
paddd mm0, mm1
movq mm1, qword [esi + 0x145730]
paddd mm0, mm1
movq mm1, qword [esi + 0x145738]
paddd mm0, mm1
movq mm1, qword [esi + 0x145740]
paddd mm0, mm1
movq mm1, qword [esi + 0x145748]
paddd mm0, mm1
movq mm1, qword [esi + 0x145750]
paddd mm0, mm1
movq mm1, qword [esi + 0x145758]
paddd mm0, mm1
movq mm1, qword [esi + 0x145760]
paddd mm0, mm1
movq mm1, qword [esi + 0x145768]
paddd mm0, mm1
movq mm1, qword [esi + 0x145770]
paddd mm0, mm1
movq mm1, qword [esi + 0x145778]
paddd mm0, mm1
movq mm1, mm0
movq mm2, mm0
punpckhdq mm2, mm0
por mm1, mm2
movd edx, mm1
test edx, edx
jne 0x808bde
test edi, edi
je 0x8095cd
mov ecx, dword [ebp + 0x10]
mov edx, dword [esp + 0x3c]
mov eax, dword [esi + 0x1455dc]
push ecx
mov ecx, dword [edx]
mov edx, dword [esp + 0x38]
push ecx
mov ecx, dword [edx]
mov edx, dword [esp + 0x4c]
mov eax, dword [eax + edx*4]
push ecx
push edi
call eax
mov ecx, dword [esi + 0x10]
add esp, 0x10
cmp dword [ecx + 0x20], 0
je 0x8095cd
test ebx, ebx
je 0x8095cd
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x8095cd
mov eax, dword [ebp + 0x10]
mov edx, dword [esi + 0x1455e0]
push eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 4]
push eax
mov eax, dword [esp + 0x3c]
mov esi, dword [eax + 0x120]
mov eax, dword [eax + 0x90]
push esi
push eax
push ecx
mov ecx, dword [esp + 0x58]
mov edx, dword [edx + ecx*4]
push ebx
call edx
add esp, 0x18
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x680]
xor ecx, esp
call fcn.008653fb
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x10]
cmp dword [eax + 0x20], 0
je 0x80906c
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 4]
mov eax, dword [ebp + 0x10]
mov ecx, dword [esp + 0x54]
push edx
push eax
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x120]
mov eax, dword [eax + 0x90]
push 0x20
add ecx, 0xfffffffc
push ecx
add ebx, 0xfffffffc
push ebx
push edx
push eax
mov eax, dword [esi + 0x1456f4]
lea ecx, [esp + 0x3ac]
push ecx
lea edx, [esp + 0x3a0]
push edx
mov dword [esp + 0x48], 0x20
call eax
add esp, 0x24
cmp dword [esp + 0x2c], 0
lea ecx, [esp + 0x400]
lea edx, [esp + 0x410]
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], edx
je 0x808d59
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 0xc]
and eax, 0x80
mov ebx, eax
neg ebx
sbb ebx, ebx
and ebx, 3
inc ebx
neg eax
sbb eax, eax
mov ecx, edx
add eax, 2
lea edx, [esi + 0x1456bc]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
lea edi, [esi + 0x145700]
mov dword [esp + 0x20], edx
mov dword [esp + 0x40], 2
lea ebx, [ebx]
mov eax, dword [edi]
test eax, eax
jne 0x808caf
cmp dword [edi + 4], eax
je 0x808d3a
test al, 4
mov eax, dword [esp + 0x20]
mov eax, dword [eax - 4]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
lea ecx, [edi + 0xb0]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
mov edx, dword [esp + 0x24]
push eax
push ecx
push 0x20
jne 0x808d07
add edx, 0xfffffff0
push edx
call fcn.0081c74e
mov eax, dword [esp + 0x38]
mov eax, dword [eax]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
lea ecx, [edi + 0xc0]
push ecx
mov ecx, dword [esp + 0x34]
push edx
mov edx, dword [esp + 0x3c]
push eax
push ecx
push 0x20
push edx
call fcn.0081c74e
jmp 0x808d37
add edx, 0xfffffff0
push edx
call fcn.0081c938
mov eax, dword [esp + 0x38]
mov eax, dword [eax]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
lea ecx, [edi + 0xc0]
push ecx
mov ecx, dword [esp + 0x34]
push edx
mov edx, dword [esp + 0x3c]
push eax
push ecx
push 0x20
push edx
call fcn.0081c938
add esp, 0x30
add dword [esp + 0x20], 0x18
add dword [esp + 0x1c], ebx
mov eax, 1
add edi, 8
sub dword [esp + 0x40], eax
jne 0x808ca0
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x20]
cmp eax, 2
mov dword [esp + 0x1c], eax
jge 0x808e96
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x64]
lea ecx, [eax + eax*2]
mov edi, eax
add eax, 0xa2b8
shl eax, 5
lea ebx, [ebx + ebx*4]
add eax, esi
shl ebx, 4
shl edi, 7
add ebx, eax
mov eax, dword [esp + 0x60]
shl ecx, 5
add edi, edx
sub eax, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x58], eax
mov edx, dword [ebx + 4]
add edx, dword [ebx + 0xc]
mov eax, dword [ebx]
add edx, eax
add edx, dword [ebx + 8]
je 0x808e71
mov edx, dword [esp + 0x28]
xor ecx, ecx
cmp dword [esp + 0x1c], ecx
sete cl
inc edx
and eax, 4
neg ecx
and ecx, edx
lea ecx, [ecx + ecx*2]
lea edx, [esi + ecx*4 + 0x1456a8]
mov ecx, dword [esp + 0x28]
imul ecx, ecx, 0xf0
add ecx, esi
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x18]
add ecx, edx
mov edx, dword [esp + 0x30]
mov edx, dword [edx + 4]
mov dword [esp + 0x5c], ecx
add ecx, 0x1457b0
push ecx
mov dword [esp + 0x44], edx
mov ecx, edx
movzx ecx, byte [ecx + 1]
mov edx, dword [esi + 0x1456e4]
mov edx, dword [edx + eax*4 + 0xc]
push ecx
mov ecx, dword [esp + 0x48]
movzx ecx, byte [ecx]
push ecx
mov ecx, dword [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x68]
add ecx, edi
push ecx
call edx
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 8]
mov edx, dword [ebx]
mov eax, dword [esi + 0x1456e4]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x70]
add ecx, 0x1457c0
push ecx
mov ecx, dword [esp + 0x48]
movzx ecx, byte [ecx + 1]
push ecx
mov ecx, dword [esp + 0x4c]
movzx ecx, byte [ecx]
push ecx
mov ecx, dword [esp + 0x44]
and edx, 4
mov edx, dword [eax + edx*4 + 0xc]
push ecx
push edi
call edx
mov ecx, dword [esp + 0x40]
add esp, 0x28
inc dword [esp + 0x1c]
add ecx, 0x60
add ebx, 0x20
sub edi, 0xffffff80
cmp ecx, 0xc0
mov dword [esp + 0x24], 0x20
mov dword [esp + 0x18], ecx
jl 0x808da7
cmp dword [esp + 0x28], 0
jne 0x809012
push 0x20
push 0x20
lea eax, [esp + 0x398]
push eax
lea ecx, [esp + 0x38c]
push ecx
mov ecx, dword [esi + 0x1456f0]
lea edx, [esp + 0x120]
push edx
lea eax, [esp + 0x114]
push eax
call ecx
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x68]
lea edx, [esp + 0x11c]
lea eax, [esp + 0x12c]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], edx
mov edx, dword [ecx + 4]
lea eax, [edx + edx]
mov ebx, eax
mov eax, edi
sub eax, ebx
movq mm0, qword [eax + edx]
movq mm1, qword [eax]
lea eax, [edx + edx]
mov ebx, eax
mov eax, dword [esp + 0x6c]
movq qword [esp + 0xdc], mm1
sub eax, ebx
movq qword [esp + 0xfc], mm0
movq mm0, qword [eax + edx]
movq mm1, qword [eax]
add esp, 0x18
cmp dword [esp + 0x48], 0
movq qword [esp + 0xd4], mm1
movq qword [esp + 0xf4], mm0
je 0x80900a
mov edx, dword [esi + 0x14579c]
add edx, dword [esi + 0x145798]
add edx, dword [esi + 0x145794]
add edx, dword [esi + 0x145790]
je 0x809002
mov edx, dword [ecx + 4]
lea eax, [edx*4]
mov ebx, eax
mov ecx, edx
mov eax, edi
sub eax, ebx
movq mm0, qword [eax + edx]
movq mm1, qword [eax]
mov eax, dword [esp + 0x54]
movq qword [esp + 0x84], mm1
lea edx, [ecx*4]
sub eax, edx
movq qword [esp + 0xa4], mm0
movq mm0, qword [eax + ecx]
movq mm1, qword [eax]
mov eax, dword [esi + 0x1456dc]
mov ecx, dword [esi + 0x1456e4]
movq qword [esp + 0x94], mm1
movq qword [esp + 0xb4], mm0
lea edx, [esi + 0x145960]
push edx
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
push edx
push eax
mov eax, dword [ecx + 0xc]
lea edx, [esp + 0x130]
push 0x40
push edx
call eax
mov eax, dword [esi + 0x1456e0]
mov ecx, dword [esi + 0x1456e4]
lea edx, [esi + 0x145970]
push edx
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
push edx
push eax
mov eax, dword [ecx + 0xc]
lea edx, [esp + 0x154]
push 0x40
push edx
call eax
add esp, 0x28
mov dword [esp + 0x24], 0x40
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x28]
inc eax
cmp eax, 2
mov dword [esp + 0x28], eax
jl 0x808d61
cmp dword [esp + 0x44], 4
jge 0x809068
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 4]
mov edx, dword [esi + 0x1456fc]
lea ecx, [eax + eax]
push 0x20
push eax
lea eax, [esp + 0xd8]
push eax
lea eax, [esp + 0xcc]
push eax
mov eax, dword [esp + 0x64]
sub eax, ecx
push eax
mov eax, dword [esp + 0x64]
sub eax, ecx
mov ecx, dword [esp + 0x58]
mov edx, dword [edx + ecx*4]
push eax
call edx
add esp, 0x18
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx]
mov ecx, dword [esp + 0x34]
push edx
mov edx, dword [ecx]
mov ecx, dword [esi + 0x1456ec]
lea eax, [esp + 0x404]
mov dword [esp + 0x5c], eax
mov eax, dword [ebp + 0x10]
push eax
push 0x20
add edi, 0xfffffffc
push edi
push edx
lea eax, [esp + 0x394]
push eax
mov dword [esp + 0x58], 0x20
call ecx
add esp, 0x18
cmp dword [esp + 0x2c], 0
je 0x809194
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0xc]
and eax, 0x80
mov edi, eax
neg edi
sbb edi, edi
and edi, 7
inc edi
neg eax
sbb eax, eax
add eax, 2
mov dword [esp + 0x30], eax
lea eax, [esp + 0x400]
lea ecx, [esi + 0x1456b4]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], ecx
lea ebx, [esi + 0x145700]
mov dword [esp + 0x24], 2
lea esp, [esp]
mov ecx, dword [ebx]
test ecx, ecx
jne 0x80910b
cmp dword [ebx + 4], ecx
je 0x809141
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
test cl, 4
lea ecx, [ebx + 0xa0]
push ecx
mov ecx, dword [esp + 0x34]
push edx
mov edx, dword [esp + 0x34]
push eax
push ecx
push 0x20
push edx
jne 0x809139
call fcn.0081be4e
jmp 0x80913e
call fcn.0081c3d3
add esp, 0x18
add dword [esp + 0x18], 0x18
add dword [esp + 0x2c], edi
mov eax, 1
add ebx, 8
sub dword [esp + 0x24], eax
jne 0x809100
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x38]
test dword [eax + 0xc], 0x1000000
je 0x809194
mov ecx, dword [esi + 0xc]
mov eax, 2
mov dword [esp + 0x20], eax
cmp dword [ecx + 8], eax
je 0x809194
xor eax, eax
mov dword [esi + 0x14571c], eax
mov dword [esi + 0x145718], eax
mov dword [esi + 0x145714], eax
mov dword [esi + 0x145710], eax
mov dword [esp + 0x28], 0
lea esp, [esp]
mov eax, dword [esp + 0x20]
cmp eax, 4
mov dword [esp + 0x1c], eax
jge 0x80930d
mov ecx, dword [esp + 0x28]
mov ebx, eax
lea ecx, [ecx + ecx*4]
add eax, ecx
lea edi, [eax + 0x14570]
shl eax, 4
add eax, esi
shl ebx, 7
add ebx, dword [esp + 0x58]
shl edi, 4
lea edx, [eax + 0x145704]
mov dword [esp + 0x5c], ecx
lea ecx, [eax + 0x145708]
add edi, esi
add eax, 0x14570c
mov dword [esp + 0x18], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x34], eax
mov edx, 0x10
lea esp, [esp]
mov eax, dword [edi + 0xc]
add eax, dword [edi + 4]
mov ecx, dword [edi]
add eax, ecx
add eax, dword [edi + 8]
je 0x809293
mov edx, dword [esp + 0x28]
xor eax, eax
cmp dword [esp + 0x1c], eax
sete al
inc edx
and ecx, 4
mov dword [esp + 0x2c], ecx
mov ecx, dword [esi + 0x1456e4]
neg eax
and eax, edx
lea eax, [eax + eax*2]
mov edx, dword [esi + eax*4 + 0x1456a8]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x5c]
lea eax, [edx + eax + 0x6c7e]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x30]
shl edx, 4
add edx, esi
push edx
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
push edx
mov edx, dword [esp + 0x48]
push eax
mov eax, dword [esp + 0x38]
mov ecx, dword [ecx + eax*4 + 4]
push edx
push ebx
call ecx
mov edx, dword [esi + 0xc]
add esp, 0x14
cmp dword [edx + 8], 2
mov edx, 0x10
je 0x809293
xor eax, eax
mov dword [edi + 0xc], eax
mov dword [edi + 8], eax
mov dword [edi + 4], eax
mov dword [edi], eax
mov eax, dword [esp + 0x38]
test dword [eax + 0xc], 0x1000000
je 0x8092e2
mov ecx, dword [esi + 0xc]
inc dword [esp + 0x1c]
add dword [esp + 0x34], edx
add dword [esp + 0x24], edx
add dword [esp + 0x18], edx
add edi, edx
sub ebx, 0xffffff80
cmp dword [ecx + 8], 2
je 0x8092e2
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
mov dword [eax], 0
mov eax, dword [esp + 0x18]
mov dword [ecx], 0
mov dword [eax], 0
mov dword [edi], 0
mov eax, dword [esp + 0x1c]
add dword [esp + 0x34], edx
add dword [esp + 0x24], edx
add dword [esp + 0x18], edx
inc eax
add edi, edx
sub ebx, 0xffffff80
cmp eax, 4
mov dword [esp + 0x40], 0x20
mov dword [esp + 0x1c], eax
jl 0x809200
cmp dword [esp + 0x28], 0
jne 0x80949b
mov eax, dword [esi + 0x1456e8]
push 0x20
push 0x20
lea ecx, [esp + 0x388]
push ecx
lea edx, [esp + 0x18c]
push edx
call eax
mov edx, dword [esp + 0x4c]
mov eax, dword [edx]
mov edi, dword [esp + 0x5c]
lea ecx, [esp + 0x194]
mov dword [esp + 0x68], ecx
lea ecx, [eax*4]
mov edx, ecx
mov ecx, edi
sub ecx, edx
movq mm0, qword [ecx + 8]
movq mm1, qword [ecx + eax]
movq mm2, qword [ecx + eax + 8]
movq mm3, qword [ecx]
movq qword [esp + 0x114], mm3
movq qword [esp + 0x11c], mm0
movq qword [esp + 0x134], mm1
movq qword [esp + 0x13c], mm2
movq mm0, qword [ecx + eax*2 + 8]
lea edx, [ecx + eax*2]
movq mm1, qword [edx + eax]
movq mm2, qword [edx + eax + 8]
movq mm3, qword [ecx + eax*2]
add edx, eax
movq qword [esp + 0x154], mm3
add esp, 0x10
cmp dword [esp + 0x48], 0
movq qword [esp + 0x14c], mm0
movq qword [esp + 0x164], mm1
movq qword [esp + 0x16c], mm2
je 0x809493
mov ecx, dword [esi + 0x14579c]
add ecx, dword [esi + 0x145798]
add ecx, dword [esi + 0x145794]
add ecx, dword [esi + 0x145790]
je 0x80948b
mov edx, dword [esi + 0x1456d8]
lea ecx, [eax*8]
mov ebx, ecx
mov ecx, edi
sub ecx, ebx
movq mm0, qword [ecx + 8]
movq mm1, qword [ecx + eax]
movq mm2, qword [ecx + eax + 8]
movq mm3, qword [ecx]
movq qword [esp + 0x84], mm3
movq qword [esp + 0x8c], mm0
movq qword [esp + 0xa4], mm1
movq qword [esp + 0xac], mm2
movq mm0, qword [ecx + eax*2 + 8]
lea edi, [ecx + eax*2]
movq mm1, qword [edi + eax]
movq mm2, qword [edi + eax + 8]
movq mm3, qword [ecx + eax*2]
add edi, eax
mov eax, dword [esi + 0x1456e4]
movq qword [esp + 0xc4], mm3
movq qword [esp + 0xcc], mm0
movq qword [esp + 0xe4], mm1
movq qword [esp + 0xec], mm2
lea ecx, [esi + 0x145950]
push ecx
movzx ecx, byte [edx + 1]
movzx edx, byte [edx]
push ecx
push edx
mov edx, dword [eax + 4]
lea ecx, [esp + 0x1b0]
push 0x40
push ecx
call edx
add esp, 0x14
mov dword [esp + 0x40], 0x40
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x28]
inc eax
cmp eax, 2
mov dword [esp + 0x28], eax
jl 0x8091a0
mov ecx, dword [esp + 0x44]
cmp ecx, 4
jge 0x8094e7
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
mov ecx, dword [esi + 0x1456f8]
push 0x20
push eax
lea edx, [esp + 0x128]
push edx
mov edx, dword [esp + 0x58]
lea eax, [eax + eax*2]
sub edx, eax
mov eax, dword [esp + 0x50]
mov ecx, dword [ecx + eax*4]
push edx
call ecx
mov ecx, dword [esp + 0x54]
add esp, 0x10
cmp dword [esp + 0x48], 0
je 0x8095cd
mov esi, dword [esp + 0x3c]
mov edx, dword [esi]
movq mm0, qword [esp + 0xac]
movq mm1, qword [esp + 0xc4]
movq mm2, qword [esp + 0xcc]
movq mm3, qword [esp + 0xa4]
mov edi, dword [esp + 0x4c]
lea eax, [edx*8]
sub eax, edx
mov ebx, eax
mov eax, edi
sub eax, ebx
movq qword [eax], mm3
movq qword [eax + 8], mm0
movq qword [eax + edx], mm1
movq qword [eax + edx + 8], mm2
movq mm0, qword [esp + 0xec]
movq mm1, qword [esp + 0x104]
movq mm2, qword [esp + 0x10c]
movq mm3, qword [esp + 0xe4]
movq qword [eax + edx*2], mm3
movq qword [eax + edx*2 + 8], mm0
lea eax, [eax + edx*2]
add eax, edx
movq qword [eax], mm1
movq qword [eax + 8], mm2
test ecx, ecx
je 0x8095cd
mov esi, dword [esi]
mov eax, ecx
dec eax
lea edx, [esi*8]
sub edx, esi
neg eax
sbb eax, eax
and eax, 0x28
add eax, 0xffffffe8
dec ecx
sub eax, edx
add eax, edi
neg ecx
sbb ecx, ecx
and ecx, 0xf
sub ecx, edx
add ecx, edi
add eax, 0x10
mov edx, 4
movzx edi, byte [ecx]
imul edi, edi, 0x1010101
movd mm0, edi
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [eax - 0x10], mm0
movq qword [eax - 8], mm0
movq qword [eax], mm0
add ecx, esi
add eax, esi
sub edx, 1
jne 0x8095a4
mov ecx, dword [esp + 0x68c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.008653fb
mov esp, ebp
pop ebp
ret