Function at 0x7ccb10
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 0x7ccd49
cmp dword [esi + 0x1456a4], 1
jne 0x7ccd49
cmp eax, ecx
je 0x7ccbbb
cmp dword [esi + 0xac], ecx
je 0x7ccbd3
cmp dword [esi + 0x9c], ecx
je 0x7ccd49
cmp dword [esi + 0xb0], ecx
jne 0x7ccd49
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.007b1aa0
add esp, 4
cmp dword [esi + 0x1c], 0
je 0x7ccccd
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 0x7ccc74
test eax, eax
je 0x7ccc74
mov dl, byte [esi + 0xe8]
and dl, 3
je 0x7ccc67
cmp dl, 3
jne 0x7ccc74
mov edx, dword [esp + 0x60]
add edx, 0x20
mov dword [esi + 0xac], edx
mov dl, byte [esi + 0xe8]
test dl, 4
jne 0x7cccab
test eax, eax
jne 0x7ccc9c
test ecx, ecx
je 0x7ccc92
lea eax, [ecx + 0x20]
mov dword [esi + 0xb0], eax
jmp 0x7ccccd
xor eax, eax
mov dword [esi + 0xb0], eax
jmp 0x7ccccd
mov eax, dword [esp + 0x38]
add eax, 0xffffffe0
mov dword [esi + 0xb0], eax
jmp 0x7ccccd
test ecx, ecx
je 0x7ccccd
and dl, 0xc
cmp dl, 0xc
jne 0x7cccc4
shl eax, 5
add eax, ecx
mov dword [esi + 0xb0], eax
jmp 0x7ccccd
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.007ca600
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 0x7ccd60
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 0x7ccd60
mov edx, dword [esp + 0x38]
lea eax, [esp + 0x48]
push eax
lea ecx, [esp + 0x30]
push ecx
push edx
call fcn.007cae40
add esp, 0xc
mov eax, dword [esp + 0x38]
push eax
push esi
call fcn.007cb670
mov ecx, dword [esp + 0x40]
add esp, 8
test dword [ecx + 0xc], 0x800
je 0x7ccece
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 0x7ccece
test edi, edi
je 0x7cd8bd
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 0x7cd8bd
test ebx, ebx
je 0x7cd8bd
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x7cd8bd
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.008296eb
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x10]
cmp dword [eax + 0x20], 0
je 0x7cd35c
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 0x7cd049
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 0x7ccf9f
cmp dword [edi + 4], eax
je 0x7cd02a
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 0x7ccff7
add edx, 0xfffffff0
push edx
call fcn.007e0a3e
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.007e0a3e
jmp 0x7cd027
add edx, 0xfffffff0
push edx
call fcn.007e0c28
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.007e0c28
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 0x7ccf90
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x20]
cmp eax, 2
mov dword [esp + 0x1c], eax
jge 0x7cd186
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 0x7cd161
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 0x7cd097
cmp dword [esp + 0x28], 0
jne 0x7cd302
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 0x7cd2fa
mov edx, dword [esi + 0x14579c]
add edx, dword [esi + 0x145798]
add edx, dword [esi + 0x145794]
add edx, dword [esi + 0x145790]
je 0x7cd2f2
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 0x7cd051
cmp dword [esp + 0x44], 4
jge 0x7cd358
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 0x7cd484
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 0x7cd3fb
cmp dword [ebx + 4], ecx
je 0x7cd431
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 0x7cd429
call fcn.007e013e
jmp 0x7cd42e
call fcn.007e06c3
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 0x7cd3f0
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x38]
test dword [eax + 0xc], 0x1000000
je 0x7cd484
mov ecx, dword [esi + 0xc]
mov eax, 2
mov dword [esp + 0x20], eax
cmp dword [ecx + 8], eax
je 0x7cd484
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 0x7cd5fd
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 0x7cd583
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 0x7cd583
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 0x7cd5d2
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 0x7cd5d2
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 0x7cd4f0
cmp dword [esp + 0x28], 0
jne 0x7cd78b
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 0x7cd783
mov ecx, dword [esi + 0x14579c]
add ecx, dword [esi + 0x145798]
add ecx, dword [esi + 0x145794]
add ecx, dword [esi + 0x145790]
je 0x7cd77b
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 0x7cd490
mov ecx, dword [esp + 0x44]
cmp ecx, 4
jge 0x7cd7d7
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 0x7cd8bd
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 0x7cd8bd
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 0x7cd894
mov ecx, dword [esp + 0x68c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.008296eb
mov esp, ebp
pop ebp
ret