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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x6a4
mov eax, dword [0x303328c0]
push ebx
mov dword [esp + 0x6a4], eax
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
mov eax, dword [eax + 4]
push esi
mov esi, ecx
mov ecx, dword [esi + 0x88864]
mov ebx, dword [esi + 0x88860]
add ecx, eax
mov dword [esp + 0x60], ecx
mov ecx, dword [esi + 0x2c]
add ebx, eax
mov eax, dword [esi + 0xcc]
sub ecx, eax
push edi
mov edi, dword [esi + 0x8885c]
add edi, edx
dec ecx
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
test eax, eax
sete dl
mov dword [esp + 0x5c], edi
mov dword [esp + 0x60], ebx
lea ecx, [edx + ecx*2]
mov edx, dword [esi + 0x58]
mov dword [esp + 0x3c], ecx
xor ecx, ecx
cmp edx, ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x2c], ecx
je 0x3023e213
cmp dword [esi + 0x88984], 1
jne 0x3023e213
cmp eax, ecx
je 0x3023e07a
cmp dword [esi + 0xe0], ecx
je 0x3023e092
cmp dword [esi + 0xd0], ecx
je 0x3023e213
cmp dword [esi + 0xe4], ecx
jne 0x3023e213
mov edx, dword [esi + 0xe0]
mov eax, dword [esi + 0xe4]
mov ecx, dword [esi + 0xe8]
mov dword [esp + 0x80], edx
mov edx, dword [esi + 0xec]
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x88], ecx
push 1
mov ecx, esi
mov dword [esp + 0x90], edx
call fcn.30221a20
mov eax, dword [esi + 0x14]
add esp, 4
test eax, eax
je 0x3023e197
mov eax, dword [esi + 0x12c]
mov edx, dword [esi + 0x124]
test edx, edx
mov ecx, dword [esi + 0x128]
mov dword [esp + 0x70], eax
mov eax, dword [esi + 0x130]
mov dword [esp + 0x74], eax
mov eax, dword [esi + 0xf0]
mov dword [esp + 0x68], edx
mov dword [esp + 0x6c], ecx
mov dword [esi + 0xe0], edx
mov dword [esi + 0xe4], ecx
je 0x3023e13f
test eax, eax
je 0x3023e13f
mov dl, byte [esi + 0x11c]
and dl, 3
je 0x3023e132
cmp dl, 3
jne 0x3023e13f
mov edx, dword [esp + 0x68]
add edx, 0x20
mov dword [esi + 0xe0], edx
mov dl, byte [esi + 0x11c]
test dl, 4
jne 0x3023e175
test eax, eax
jne 0x3023e167
test ecx, ecx
je 0x3023e15d
lea eax, [ecx + 0x20]
mov dword [esi + 0xe4], eax
jmp 0x3023e197
xor eax, eax
mov dword [esi + 0xe4], eax
jmp 0x3023e197
mov eax, dword [ebp + 8]
add eax, 0xffffffe0
mov dword [esi + 0xe4], eax
jmp 0x3023e197
test ecx, ecx
je 0x3023e197
and dl, 0xc
cmp dl, 0xc
jne 0x3023e18e
shl eax, 5
add eax, ecx
mov dword [esi + 0xe4], eax
jmp 0x3023e197
add ecx, 0x20
mov dword [esi + 0xe4], ecx
mov eax, dword [ebp + 8]
lea ecx, [esp + 0x4c]
push ecx
lea edx, [esp + 0x20]
push edx
push eax
push esi
call fcn.3023b9b0
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
mov dword [esi + 0xe8], eax
mov eax, dword [esi + 0x14]
mov dword [esi + 0xe0], ecx
mov ecx, dword [esp + 0x9c]
add esp, 0x10
test eax, eax
mov dword [esi + 0xe4], edx
mov dword [esi + 0xec], ecx
je 0x3023e229
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x70]
mov dword [esi + 0x124], edx
mov edx, dword [esp + 0x74]
mov dword [esi + 0x128], eax
mov dword [esi + 0x12c], ecx
mov dword [esi + 0x130], edx
jmp 0x3023e229
mov edx, dword [ebp + 8]
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x20]
push ecx
push edx
call fcn.3023c240
add esp, 0xc
mov eax, dword [ebp + 8]
push eax
push esi
call fcn.3023cae0
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
add esp, 8
test ah, 8
je 0x3023e3c5
mov eax, dword [esi + 0x88c98]
movq mm0, qword [eax + 0x78]
movq mm6, qword [eax]
movq qword [esp + 0x20], mm0
movq mm0, qword [eax + 0x70]
movq mm5, qword [eax + 8]
movq mm4, qword [eax + 0x10]
movq mm3, qword [eax + 0x18]
movq mm1, qword [eax + 0x28]
movq mm2, qword [eax + 0x20]
movq qword [esp + 0x50], mm0
movq mm0, qword [eax + 0x68]
movq qword [esp + 0x30], mm0
movq mm0, qword [eax + 0x60]
movq qword [esp + 0x78], mm0
movq mm0, qword [eax + 0x58]
movq qword [esp + 0x40], mm0
movq mm0, qword [eax + 0x50]
movq qword [esp + 0x98], mm0
movq mm0, qword [eax + 0x48]
pxor mm7, mm7
movq qword [esp + 0x90], mm0
movq mm0, qword [eax + 0x40]
paddd mm7, mm6
paddd mm7, mm5
movq qword [esp + 0x80], mm0
movq mm0, qword [eax + 0x38]
paddd mm7, mm4
movq qword [esp + 0x68], mm0
movq mm0, qword [eax + 0x30]
paddd mm7, mm3
paddd mm7, mm2
paddd mm7, mm1
paddd mm7, mm0
movq mm0, qword [esp + 0x68]
movq mm1, qword [esp + 0x20]
paddd mm7, mm0
movq mm0, qword [esp + 0x80]
paddd mm7, mm0
movq mm0, qword [esp + 0x90]
paddd mm7, mm0
movq mm0, qword [esp + 0x98]
paddd mm7, mm0
movq mm0, qword [esp + 0x40]
paddd mm7, mm0
movq mm0, qword [esp + 0x78]
paddd mm7, mm0
movq mm0, qword [esp + 0x30]
paddd mm7, mm0
movq mm0, qword [esp + 0x50]
paddd mm7, mm0
movq mm0, mm7
paddd mm0, mm1
movq mm1, mm0
punpckhdq mm1, mm0
por mm0, mm1
movd edx, mm0
test edx, edx
jne 0x3023e3c5
test edi, edi
je 0x3023ee47
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x18]
mov edx, dword [ecx]
push eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push edx
mov edx, dword [esp + 0x44]
push ecx
push edi
call dword [esi + edx*4 + 0x888a4]
mov eax, dword [esi + 0x40]
add esp, 0x10
test eax, eax
je 0x3023ee47
test ebx, ebx
je 0x3023ee47
mov ecx, dword [esp + 0x64]
test ecx, ecx
je 0x3023ee47
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [edx + 4]
push eax
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x120]
mov eax, dword [eax + 0x90]
push edx
push eax
push ecx
mov ecx, dword [esp + 0x50]
push ebx
call dword [esi + ecx*4 + 0x888b4]
add esp, 0x18
mov ecx, dword [esp + 0x6ac]
call fcn.3028e0e3
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x40]
test eax, eax
je 0x3023e8c6
mov edx, dword [ebp + 0x18]
mov eax, dword [edx + 4]
mov ecx, dword [ebp + 0x10]
mov edx, dword [esp + 0x64]
push eax
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, dword [eax + 0x120]
push 0x20
add edx, 0xfffffffc
push edx
mov edx, dword [eax + 0x90]
add ebx, 0xfffffffc
push ebx
push ecx
push edx
lea eax, [esp + 0x3cc]
push eax
lea ecx, [esp + 0x3c0]
push ecx
mov dword [esp + 0x74], 0x20
call dword [esi + 0x889d4]
lea eax, [esp + 0x454]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x40]
add esp, 0x24
test eax, eax
lea edx, [esp + 0x420]
mov dword [esp + 0x68], edx
je 0x3023e56d
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0xc]
and ecx, 0x80
mov eax, ecx
neg eax
sbb eax, eax
and eax, 3
inc eax
xor edx, edx
test ecx, ecx
sete dl
lea ecx, [esp + 0x430]
mov dword [esp + 0x30], eax
mov dword [esp + 0x14], ecx
mov ebx, 0x20
lea edi, [esi + 0x8899c]
inc edx
mov dword [esp + 0x20], edx
lea esp, [esp]
mov edx, dword [esi + 0x88c98]
lea ecx, [ebx + edx - 0x20]
mov edx, dword [ecx]
test edx, edx
mov dword [esp + 0x40], edx
jne 0x3023e49f
mov edx, dword [ecx + 4]
test edx, edx
je 0x3023e54c
test byte [esp + 0x40], 4
mov eax, dword [edi - 4]
jne 0x3023e4f8
mov ecx, dword [esi + 0x88c9c]
lea edx, [ebx + ecx - 0x10]
movzx ecx, byte [eax + 1]
push edx
movzx edx, byte [eax]
mov eax, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
add ecx, 0xfffffff0
push 0x20
push ecx
call fcn.30250e10
mov eax, dword [edi]
mov edx, dword [esi + 0x88c9c]
movzx ecx, byte [eax + 1]
add edx, ebx
push edx
movzx edx, byte [eax]
mov eax, dword [esp + 0x3c]
push ecx
mov ecx, dword [esp + 0x34]
push edx
push eax
push 0x20
push ecx
call fcn.30250e10
jmp 0x3023e545
mov edx, dword [esi + 0x88c9c]
lea ecx, [ebx + edx - 0x10]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
push ecx
mov ecx, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
add edx, 0xfffffff0
push 0x20
push edx
call fcn.30251300
mov eax, dword [edi]
mov ecx, dword [esi + 0x88c9c]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
add ecx, ebx
push ecx
mov ecx, dword [esp + 0x3c]
push edx
mov edx, dword [esp + 0x34]
push eax
push ecx
push 0x20
push edx
call fcn.30251300
mov eax, dword [esp + 0x60]
add esp, 0x30
mov edx, dword [esp + 0x14]
add ebx, 8
add edx, eax
add edi, 0x18
cmp ebx, 0x30
mov dword [esp + 0x14], edx
jl 0x3023e480
mov dword [esp + 0x2c], 1
xor edi, edi
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x2c]
cmp eax, 2
mov dword [esp + 0x18], eax
jge 0x3023e6ec
mov ebx, dword [esp + 0x2c]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x68]
lea eax, [edi + edi*4]
shl eax, 4
mov dword [esp + 0x98], eax
lea eax, [ebx + ebx*2]
shl eax, 5
mov dword [esp + 0x20], eax
mov eax, ebx
shl ebx, 7
shl eax, 5
add ebx, edx
sub ecx, edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x40], ebx
mov dword [esp + 0x90], ecx
jmp 0x3023e5d0
mov ecx, dword [esi + 0x88c98]
mov edx, dword [esp + 0x98]
add ecx, eax
mov eax, dword [ecx + edx]
add ecx, edx
mov edx, dword [ecx + 0xc]
add edx, dword [ecx + 8]
mov dword [esp + 0x80], ecx
add edx, dword [ecx + 4]
add edx, eax
je 0x3023e6b2
mov ebx, dword [esp + 0x18]
xor ecx, ecx
test ebx, ebx
mov ebx, dword [esi + 0x88c9c]
sete cl
lea edx, [edi + 1]
imul edi, edi, 0xf0
neg ecx
and ecx, edx
lea ecx, [ecx + ecx*2]
lea edx, [esi + ecx*4 + 0x88988]
mov ecx, dword [esp + 0x20]
add ecx, edi
lea ecx, [ecx + ebx + 0x10]
push ecx
mov dword [esp + 0x7c], edx
mov ecx, dword [esp + 0x7c]
mov ecx, dword [ecx + 4]
movzx ebx, byte [ecx + 1]
movzx ecx, byte [ecx]
mov edx, dword [esi + 0x889c4]
push ebx
mov ebx, dword [esp + 0x48]
push ecx
mov ecx, dword [esp + 0x5c]
push ecx
mov ecx, dword [esp + 0xa0]
add ecx, ebx
and eax, 4
push ecx
call dword [edx + eax*4 + 0xc]
mov edx, dword [esp + 0x8c]
mov eax, dword [edx + 8]
mov ecx, dword [esp + 0x94]
mov edx, dword [ecx]
mov ecx, dword [esi + 0x889c4]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x34]
add eax, edi
mov edi, dword [esi + 0x88c9c]
lea eax, [eax + edi + 0x20]
push eax
mov eax, dword [esp + 0x58]
movzx edi, byte [eax + 1]
movzx eax, byte [eax]
push edi
push eax
mov eax, dword [esp + 0x70]
push eax
and edx, 4
push ebx
call dword [ecx + edx*4 + 0xc]
mov edi, dword [esp + 0x3c]
add esp, 0x28
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
inc ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x20]
add eax, 0x20
add ecx, 0x60
add ebx, 0x80
cmp eax, 0x40
mov dword [esp + 0x50], 0x20
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x40], ebx
jl 0x3023e5d0
test edi, edi
jne 0x3023e879
push 0x20
push 0x20
lea ecx, [esp + 0x3b8]
push ecx
lea edx, [esp + 0x3ac]
push edx
lea eax, [esp + 0x140]
push eax
lea ecx, [esp + 0x134]
push ecx
call dword [esi + 0x889d0]
lea edx, [esp + 0x13c]
mov dword [esp + 0x80], edx
mov edx, dword [ebp + 0x18]
mov ebx, dword [edx + 4]
lea eax, [esp + 0x14c]
lea ecx, [ebx + ebx]
mov dword [esp + 0x84], eax
mov eax, ecx
mov ecx, dword [esp + 0x78]
sub ecx, eax
movq mm0, qword [ecx + ebx]
movq mm1, qword [ecx]
mov eax, ebx
lea ecx, [eax + eax]
mov ebx, ecx
mov ecx, dword [esp + 0x7c]
movq qword [esp + 0xfc], mm1
sub ecx, ebx
movq qword [esp + 0x11c], mm0
movq mm0, qword [ecx + eax]
movq mm1, qword [ecx]
mov eax, dword [esp + 0x64]
add esp, 0x18
test eax, eax
movq qword [esp + 0xf4], mm1
movq qword [esp + 0x114], mm0
je 0x3023e871
mov eax, dword [esi + 0x88c98]
mov ebx, dword [eax + 0x98]
mov ecx, dword [eax + 0x9c]
add eax, 0x90
add ecx, ebx
add ecx, dword [eax + 4]
add ecx, dword [eax]
je 0x3023e869
mov ecx, dword [edx + 4]
lea eax, [ecx*4]
mov ebx, eax
mov eax, dword [esp + 0x60]
sub eax, ebx
movq mm0, qword [eax + ecx]
movq mm1, qword [eax]
mov eax, dword [esp + 0x64]
mov edx, ecx
lea ecx, [edx*4]
sub eax, ecx
mov ecx, dword [esi + 0x88c9c]
movq qword [esp + 0xa4], mm1
movq qword [esp + 0xc4], mm0
movq mm0, qword [eax + edx]
movq mm1, qword [eax]
mov eax, dword [esi + 0x889bc]
mov edx, dword [esi + 0x889c4]
add ecx, 0x1c0
push ecx
movq qword [esp + 0xb8], mm1
movq qword [esp + 0xd8], mm0
movzx ecx, byte [eax + 1]
movzx eax, byte [eax]
push ecx
push eax
lea ecx, [esp + 0x150]
push 0x40
push ecx
call dword [edx + 0xc]
mov ecx, dword [esi + 0x88c9c]
mov eax, dword [esi + 0x889c0]
mov edx, dword [esi + 0x889c4]
add ecx, 0x1d0
push ecx
movzx ecx, byte [eax + 1]
movzx eax, byte [eax]
push ecx
push eax
lea ecx, [esp + 0x174]
push 0x40
push ecx
call dword [edx + 0xc]
add esp, 0x28
mov dword [esp + 0x50], 0x40
mov dword [esp + 0x2c], 0
inc edi
cmp edi, 2
mov dword [esp + 0x14], edi
jl 0x3023e573
cmp dword [esp + 0x3c], 4
jge 0x3023e8c6
mov edx, dword [ebp + 0x18]
mov eax, dword [edx + 4]
lea ecx, [eax + eax]
push 0x20
push eax
lea eax, [esp + 0xf8]
push eax
mov eax, dword [esp + 0x70]
sub eax, ecx
lea edx, [esp + 0xec]
push edx
push eax
mov eax, dword [esp + 0x74]
sub eax, ecx
push eax
mov eax, dword [esp + 0x54]
call dword [esi + eax*4 + 0x889e8]
add esp, 0x18
mov edx, dword [ebp + 0x18]
mov eax, dword [edx]
mov edx, dword [esp + 0x5c]
push eax
mov eax, dword [ebp + 0xc]
lea ecx, [esp + 0x424]
mov dword [esp + 0x7c], ecx
mov ecx, dword [ebp + 0x10]
push ecx
mov ecx, dword [eax]
push 0x20
add edx, 0xfffffffc
push edx
push ecx
lea edx, [esp + 0x3b4]
push edx
mov dword [esp + 0x68], 0x20
call dword [esi + 0x889cc]
mov eax, dword [esp + 0x34]
add esp, 0x18
test eax, eax
je 0x3023ea16
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
and eax, 0x80
mov edi, eax
neg edi
sbb edi, edi
and edi, 7
xor ecx, ecx
inc edi
test eax, eax
sete cl
lea edx, [esp + 0x420]
lea eax, [esi + 0x88994]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x30], eax
inc ecx
mov dword [esp + 0x40], ecx
xor ebx, ebx
jmp 0x3023e950
mov eax, dword [esi + 0x88c98]
mov ecx, dword [eax + ebx]
add eax, ebx
test ecx, ecx
jne 0x3023e966
mov edx, dword [eax + 4]
test edx, edx
je 0x3023e9af
mov edx, dword [esp + 0x30]
mov eax, dword [edx]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
test cl, 4
mov ecx, dword [esi + 0x88c9c]
jne 0x3023e996
add ecx, ebx
push ecx
mov ecx, dword [esp + 0x44]
push edx
mov edx, dword [esp + 0x24]
push eax
push ecx
push 0x20
push edx
call fcn.30250410
jmp 0x3023e9ac
add ecx, ebx
push ecx
mov ecx, dword [esp + 0x44]
push edx
mov edx, dword [esp + 0x24]
push eax
push ecx
push 0x20
push edx
call fcn.30250a00
add esp, 0x18
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x1c]
add eax, 0x18
add ebx, 8
add ecx, edi
cmp ebx, 0x10
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], ecx
jl 0x3023e950
mov eax, dword [ebp + 8]
test dword [eax + 0xc], 0x1000000
mov dword [esp + 0x2c], 1
je 0x3023ea16
mov ecx, dword [esi + 0x18]
mov eax, 2
cmp ecx, eax
mov dword [esp + 0x2c], eax
je 0x3023ea16
mov ecx, dword [esi + 0x88c98]
xor eax, eax
mov dword [ecx + 0x1c], eax
mov edx, dword [esi + 0x88c98]
mov dword [edx + 0x18], eax
mov ecx, dword [esi + 0x88c98]
mov dword [ecx + 0x14], eax
mov edx, dword [esi + 0x88c98]
mov dword [edx + 0x10], eax
xor ebx, ebx
mov dword [esp + 0x14], ebx
lea esp, [esp]
mov edx, dword [esp + 0x2c]
cmp edx, 4
mov dword [esp + 0x18], edx
jge 0x3023eb8e
mov edi, dword [esp + 0x78]
lea eax, [edx + ebx*4]
add eax, ebx
mov ecx, eax
mov ebx, edx
shl ebx, 7
shl ecx, 4
lea eax, [eax + eax*2]
add ebx, edi
shl eax, 4
mov dword [esp + 0x30], ecx
mov dword [esp + 0x20], eax
jmp 0x3023ea60
mov edx, dword [esi + 0x88c98]
mov eax, dword [edx + ecx]
mov edi, dword [edx + ecx + 0xc]
add edx, ecx
add edi, eax
add edi, dword [edx + 8]
mov dword [esp + 0x90], edx
add edi, dword [edx + 4]
je 0x3023eaf8
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
xor ecx, ecx
test edi, edi
mov edi, dword [esp + 0x20]
sete cl
and eax, 4
neg ecx
inc edx
and ecx, edx
lea ecx, [ecx + ecx*2]
mov edx, dword [esi + ecx*4 + 0x88988]
mov ecx, dword [esi + 0x88c9c]
add ecx, edi
push ecx
mov dword [esp + 0x84], edx
mov ecx, dword [esp + 0x84]
movzx edi, byte [ecx + 1]
movzx ecx, byte [ecx]
mov edx, dword [esi + 0x889c4]
push edi
push ecx
mov ecx, dword [esp + 0x5c]
push ecx
push ebx
call dword [edx + eax*4 + 4]
mov eax, dword [esi + 0x18]
add esp, 0x14
cmp eax, 2
je 0x3023eaf4
mov eax, dword [esp + 0x90]
xor ecx, ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 8], ecx
mov dword [eax + 4], ecx
mov dword [eax], ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [ebp + 8]
test dword [edx + 0xc], 0x1000000
je 0x3023eb54
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
add eax, 0x30
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x18]
inc edx
add ecx, 0x10
add ebx, 0x80
cmp eax, 2
mov dword [esp + 0x18], edx
je 0x3023eb54
mov edx, dword [esi + 0x88c98]
xor eax, eax
mov dword [ecx + edx + 0xc], eax
mov edx, dword [esi + 0x88c98]
mov dword [ecx + edx + 8], eax
mov edx, dword [esi + 0x88c98]
mov dword [ecx + edx + 4], eax
mov edx, dword [esi + 0x88c98]
mov dword [ecx + edx], eax
jmp 0x3023eb56
xor eax, eax
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
inc edx
add edi, 0x30
add ecx, 0x10
add ebx, 0x80
cmp edx, 4
mov dword [esp + 0x50], 0x20
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], edi
mov dword [esp + 0x30], ecx
jl 0x3023ea60
mov ebx, dword [esp + 0x14]
jmp 0x3023eb90
xor eax, eax
cmp ebx, eax
jne 0x3023ed29
push 0x20
push 0x20
lea eax, [esp + 0x3a8]
push eax
lea ecx, [esp + 0x1ac]
push ecx
call dword [esi + 0x889c8]
mov eax, dword [ebp + 0x18]
mov eax, dword [eax]
mov edi, dword [esp + 0x6c]
lea edx, [esp + 0x1b4]
mov dword [esp + 0x88], edx
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 + 0x134], mm3
movq qword [esp + 0x13c], mm0
movq qword [esp + 0x154], mm1
movq qword [esp + 0x15c], mm2
movq mm0, qword [ecx + eax*2 + 8]
movq mm3, qword [ecx + eax*2]
lea edx, [ecx + eax*2]
movq mm1, qword [edx + eax]
movq mm2, qword [edx + eax + 8]
mov ecx, dword [esp + 0x5c]
add edx, eax
movq qword [esp + 0x174], mm3
add esp, 0x10
test ecx, ecx
movq qword [esp + 0x16c], mm0
movq qword [esp + 0x184], mm1
movq qword [esp + 0x18c], mm2
je 0x3023ed21
mov ecx, dword [esi + 0x88c98]
mov edx, dword [ecx + 0x9c]
add edx, dword [ecx + 0x98]
add ecx, 0x90
add edx, dword [ecx + 4]
add edx, dword [ecx]
je 0x3023ed19
mov edx, dword [esi + 0x889b8]
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 + 0xa4], mm3
movq qword [esp + 0xac], mm0
movq qword [esp + 0xc4], mm1
lea edi, [ecx + eax*2]
movq qword [esp + 0xcc], mm2
movq mm0, qword [ecx + eax*2 + 8]
movq mm3, qword [ecx + eax*2]
movq mm1, qword [edi + eax]
movq mm2, qword [edi + eax + 8]
mov ecx, dword [esi + 0x88c9c]
add edi, eax
mov eax, dword [esi + 0x889c4]
movq qword [esp + 0xe4], mm3
movq qword [esp + 0xec], mm0
add ecx, 0x1b0
push ecx
movq qword [esp + 0x108], mm1
movq qword [esp + 0x110], mm2
movzx ecx, byte [edx + 1]
movzx edx, byte [edx]
push ecx
push edx
lea ecx, [esp + 0x1d0]
push 0x40
push ecx
call dword [eax + 4]
mov ebx, dword [esp + 0x28]
add esp, 0x14
mov dword [esp + 0x50], 0x40
mov dword [esp + 0x2c], 0
inc ebx
cmp ebx, 2
mov dword [esp + 0x14], ebx
jl 0x3023ea20
mov ecx, dword [esp + 0x3c]
cmp ecx, 4
jge 0x3023ed6c
mov edx, dword [ebp + 0x18]
mov eax, dword [edx]
push 0x20
push eax
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x64]
lea ecx, [esp + 0x148]
push ecx
mov ecx, dword [esp + 0x48]
sub eax, edx
push eax
call dword [esi + ecx*4 + 0x889d8]
mov ecx, dword [esp + 0x4c]
add esp, 0x10
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x3023ee47
mov esi, dword [ebp + 0x18]
mov edx, dword [esi]
movq mm0, qword [esp + 0xcc]
movq mm1, qword [esp + 0xe4]
movq mm2, qword [esp + 0xec]
movq mm3, qword [esp + 0xc4]
mov edi, dword [esp + 0x5c]
mov ebx, edx
imul ebx, ebx, 7
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 + 0x10c]
movq mm1, qword [esp + 0x124]
movq mm2, qword [esp + 0x12c]
movq mm3, qword [esp + 0x104]
movq qword [eax + edx*2], mm3
movq qword [eax + edx*2 + 8], mm0
lea eax, [eax + edx*2]
add eax, edx
test ecx, ecx
movq qword [eax], mm1
movq qword [eax + 8], mm2
je 0x3023ee47
mov esi, dword [esi]
mov eax, ecx
mov edx, esi
imul edx, edx, 7
dec eax
neg eax
sbb eax, eax
and eax, 0x28
add eax, 0xffffffe8
sub eax, edx
add eax, edi
dec ecx
neg ecx
sbb ecx, ecx
and ecx, 0xf
sub ecx, edx
add ecx, edi
add eax, 0x10
mov edx, 4
nop
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
dec edx
jne 0x3023ee20
mov ecx, dword [esp + 0x6ac]
call fcn.3028e0e3
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret