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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x88
mov eax, dword [0x4f7004]
xor eax, esp
mov dword [esp + 0x84], eax
push esi
push edi
mov edi, ecx
mov dword [esp + 8], edx
mov dword [esp + 0x20], edi
test edi, edi
je 0x43a5c2
mov esi, dword [ebp + 8]
mov eax, esi
mov ecx, dword [ebp + 0xc]
or eax, ecx
mov dword [esp + 0x74], esi
mov dword [esp + 0x6c], ecx
je 0x43a5c2
test edx, edx
jne 0x439217
push ecx
push esi
mov ecx, edi
call fcn.00435cd8
pop ecx
pop ecx
jmp 0x43a5c6
movzx eax, byte [edi + 0x1d]
xorps xmm0, xmm0
push 0x20
pop ecx
sub ecx, eax
movlpd qword [esp + 0x48], xmm0
mov eax, dword [esp + 0x48]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x78], eax
cmp dword [edi + 0x48], 0
jne 0x43925f
mov ecx, edi
call fcn.00435c06
test eax, eax
je 0x43a5b8
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x6c]
jmp 0x43a5a6
mov al, byte [edi + 0x42]
mov ecx, dword [esp + 0x6c]
mov byte [esp + 0x5f], al
movsx eax, al
mov dword [esp + 0x80], 0x4030201
mov dword [esp + 0x84], 0x8070605
mov word [esp + 0x88], 0x202
mov byte [esp + 0x8a], 2
movzx eax, byte [esp + eax + 0x80]
mov dword [esp + 0x70], eax
movzx eax, word [edi + 0x40]
sub eax, dword [edi + 0x48]
mov dword [esp + 0x48], eax
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], ecx
test ecx, ecx
jb 0x4392d4
ja 0x4392c7
mov edx, dword [esp + 0x74]
cmp edx, dword [edi + 0x48]
mov edx, dword [esp + 8]
jbe 0x4392d4
mov esi, dword [edi + 0x48]
xor ecx, ecx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], ecx
cmp dword [esp + 0x70], 2
jne 0x43a4c0
mov edx, dword [edi + 0x50]
shl eax, 2
add edx, eax
mov dword [esp + 0x18], edx
mov edx, dword [edi + 0x58]
add edx, eax
movzx eax, byte [esp + 0x5f]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 8]
sub eax, 0
je 0x43a174
sub eax, 8
je 0x439de3
sub eax, 1
je 0x439a75
sub eax, 1
jne 0x43a174
cmp dword [0x5192d0], eax
je 0x43962b
cmp byte [edi + 0x1d], 0x18
ja 0x43962b
mov eax, ecx
xorps xmm0, xmm0
shrd esi, eax, 2
movlpd qword [esp + 0x48], xmm0
shr eax, 2
cmp dword [esp + 0x44], 0
mov dword [esp + 0x14], eax
jne 0x4394af
test eax, eax
jb 0x43941a
ja 0x43936a
test esi, esi
je 0x43941a
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x2c]
add ecx, ecx
movups xmm2, xmmword [eax + ecx*8]
movzx eax, byte [edi + 0x55]
movd xmm0, eax
mov eax, dword [esp + 0x18]
pslld xmm2, xmm0
movups xmm1, xmmword [eax + ecx*8]
movzx eax, byte [edi + 0x4d]
movd xmm0, eax
pslld xmm1, xmm0
mov eax, dword [esp + 0x14]
movaps xmm0, xmm2
pand xmm0, xmmword [0x4f2970]
pslld xmm1, 1
por xmm1, xmm0
movaps xmm0, xmm2
paddd xmm0, xmm1
psubd xmm1, xmm2
psrad xmm0, 1
psrad xmm1, 1
psrad xmm0, 0x10
psrad xmm1, 0x10
packssdw xmm0, xmm1
pshufd xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
movups xmmword [edx + ecx*8], xmm0
mov ecx, dword [esp + 0x1c]
add ecx, 1
mov dword [esp + 0x1c], ecx
adc dword [esp + 0x10], 0
cmp dword [esp + 0x10], eax
jb 0x43937a
ja 0x439416
cmp ecx, esi
jb 0x43937a
mov ecx, dword [esp + 0x40]
shld eax, esi, 2
shl esi, 2
mov dword [esp + 0x14], eax
mov dword [esp + 0x30], esi
cmp eax, ecx
ja 0x43a56b
jb 0x43943d
cmp esi, dword [esp + 0x3c]
jae 0x43a56b
mov eax, dword [esp + 0x2c]
mov cl, byte [edi + 0x55]
mov esi, dword [eax + esi*4]
mov eax, dword [esp + 0x30]
shl esi, cl
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + eax*4]
mov eax, esi
mov cl, byte [edi + 0x4d]
and eax, 1
mov edi, dword [esp + 0x30]
shl edx, cl
mov ecx, dword [esp + 8]
add edx, edx
or edx, eax
lea eax, [esi + edx]
sub edx, esi
sar eax, 0x11
mov esi, edi
mov word [ecx + edi*4], ax
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
sar edx, 0x11
mov word [ecx + esi*4 + 2], dx
add esi, 1
mov ecx, dword [esp + 0x40]
adc eax, 0
mov dword [esp + 0x30], esi
mov dword [esp + 0x14], eax
cmp eax, ecx
jb 0x43943d
ja 0x439f5a
cmp esi, dword [esp + 0x3c]
jb 0x43943d
jmp 0x439f5a
mov edx, dword [esp + 0x44]
dec edx
mov dword [esp + 0xc], edx
mov edx, dword [esp + 8]
test eax, eax
jb 0x439588
ja 0x4394ce
test esi, esi
je 0x439588
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x2c]
add ecx, ecx
movups xmm3, xmmword [eax + ecx*8]
movzx eax, byte [edi + 0x55]
movd xmm0, eax
mov eax, dword [esp + 0x18]
pslld xmm3, xmm0
movaps xmm1, xmm3
movups xmm2, xmmword [eax + ecx*8]
movzx eax, byte [edi + 0x4d]
movd xmm0, eax
mov eax, dword [esp + 0xc]
pslld xmm2, xmm0
movaps xmm0, xmm3
pand xmm0, xmmword [0x4f2970]
pslld xmm2, 1
por xmm2, xmm0
movd xmm0, eax
paddd xmm1, xmm2
psubd xmm2, xmm3
pslld xmm1, xmm0
movd xmm0, eax
mov eax, dword [esp + 0x14]
pslld xmm2, xmm0
psrad xmm1, 0x10
psrad xmm2, 0x10
packssdw xmm1, xmm2
pshufd xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
movups xmmword [edx + ecx*8], xmm0
mov ecx, dword [esp + 0x1c]
add ecx, 1
mov dword [esp + 0x1c], ecx
adc dword [esp + 0x10], 0
cmp dword [esp + 0x10], eax
jb 0x4394de
ja 0x439584
cmp ecx, esi
jb 0x4394de
mov ecx, dword [esp + 0x40]
shld eax, esi, 2
shl esi, 2
mov dword [esp + 0x14], eax
mov dword [esp + 0x30], esi
cmp eax, ecx
ja 0x43a56b
jb 0x4395ab
cmp esi, dword [esp + 0x3c]
jae 0x43a56b
mov eax, dword [esp + 0x2c]
mov cl, byte [edi + 0x55]
mov edx, dword [eax + esi*4]
mov eax, dword [esp + 0x18]
shl edx, cl
mov cl, byte [edi + 0x4d]
mov edi, dword [esp + 0x30]
mov esi, dword [eax + esi*4]
mov eax, edx
shl esi, cl
and eax, 1
mov ecx, dword [esp + 0xc]
add esi, esi
or esi, eax
lea eax, [edx + esi]
sub esi, edx
shl eax, cl
mov ecx, dword [esp + 8]
shr eax, 0x10
mov word [ecx + edi*4], ax
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 8]
shl esi, cl
mov ecx, edi
shr esi, 0x10
mov word [eax + ecx*4 + 2], si
mov esi, edi
mov eax, dword [esp + 0x14]
add esi, 1
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x20]
adc eax, 0
mov dword [esp + 0x30], esi
mov dword [esp + 0x14], eax
cmp eax, ecx
jb 0x4395ab
ja 0x439f5a
cmp esi, dword [esp + 0x3c]
jb 0x4395ab
jmp 0x439f5a
mov eax, esi
mov edi, ecx
shrd eax, edi, 2
xorps xmm0, xmm0
shr edi, 2
cmp dword [esp + 0x44], 0
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x30], eax
movlpd qword [esp + 0x48], xmm0
jbe 0x43982c
mov edi, dword [esp + 0x44]
dec edi
cmp dword [esp + 0x14], 0
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x20]
jb 0x4399d0
ja 0x439678
test eax, eax
je 0x4399d0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x2c]
mov esi, ecx
movzx ecx, byte [edi + 0x55]
shl esi, 4
mov dword [esp + 0xc], esi
mov eax, dword [esi + edx]
mov edi, dword [esi + edx + 4]
mov edx, dword [esi + edx + 8]
shl edx, cl
shl eax, cl
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x2c]
shl edi, cl
mov dword [esp + 0x54], eax
and eax, 1
mov dword [esp + 0x58], edi
and edi, 1
mov edx, dword [esi + edx + 0xc]
shl edx, cl
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x18]
movzx ecx, byte [ecx + 0x4d]
mov edx, dword [esi + edx]
shl edx, cl
add edx, edx
or edx, eax
mov eax, dword [esp + 0x18]
mov esi, dword [esi + eax + 4]
mov eax, dword [esp + 0xc]
shl esi, cl
add esi, esi
or esi, edi
mov edi, dword [esp + 0x18]
mov edi, dword [eax + edi + 8]
mov eax, dword [esp + 0x34]
and eax, 1
shl edi, cl
add edi, edi
or edi, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x18]
mov eax, dword [eax + edi + 0xc]
mov edi, dword [esp + 8]
shl eax, cl
mov ecx, dword [esp + 0x10]
add eax, eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
and eax, 1
or dword [esp + 0x1c], eax
mov eax, dword [esp + 0x54]
add eax, edx
sub edx, dword [esp + 0x54]
shl eax, cl
mov ecx, dword [esp + 0xc]
shr eax, 0x10
mov word [ecx + edi], ax
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
shl edx, cl
mov ecx, edi
shr edx, 0x10
mov word [eax + ecx + 2], dx
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x10]
lea eax, [edx + esi]
sub esi, edx
mov edx, dword [esp + 0x34]
shl eax, cl
mov ecx, dword [esp + 0xc]
shr eax, 0x10
mov word [ecx + edi + 4], ax
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
shl esi, cl
mov ecx, edi
mov edi, dword [esp + 0x60]
shr esi, 0x10
mov word [eax + ecx + 6], si
mov ecx, dword [esp + 0x10]
lea eax, [edx + edi]
mov esi, dword [esp + 0xc]
sub edi, edx
mov edx, dword [esp + 0x1c]
shl eax, cl
mov ecx, dword [esp + 8]
shr eax, 0x10
mov word [esi + ecx + 8], ax
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 8]
shl edi, cl
shr edi, 0x10
mov word [esi + eax + 0xa], di
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0xc]
lea eax, [esi + edx]
sub edx, esi
shl eax, cl
mov ecx, dword [esp + 8]
shr eax, 0x10
mov word [edi + ecx + 0xc], ax
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 8]
shl edx, cl
mov ecx, dword [esp + 0x24]
shr edx, 0x10
add ecx, 1
mov word [edi + eax + 0xe], dx
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
adc eax, 0
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x14]
jb 0x439688
mov eax, dword [esp + 0x30]
ja 0x4399c0
cmp ecx, eax
jb 0x439688
jmp 0x4399c0
cmp dword [esp + 0x14], 0
jb 0x4399d0
ja 0x439841
test eax, eax
je 0x4399d0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x54], eax
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x2c]
mov esi, ecx
movzx ecx, byte [edi + 0x55]
shl esi, 4
mov dword [esp + 0xc], esi
mov eax, dword [esi + edx]
mov edi, dword [esi + edx + 4]
mov edx, dword [esi + edx + 8]
shl edx, cl
shl eax, cl
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x2c]
shl edi, cl
mov dword [esp + 0x28], eax
and eax, 1
mov dword [esp + 0x60], edi
and edi, 1
mov edx, dword [esi + edx + 0xc]
shl edx, cl
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x18]
movzx ecx, byte [ecx + 0x4d]
mov edx, dword [esi + edx]
shl edx, cl
add edx, edx
or edx, eax
mov eax, dword [esp + 0x18]
mov esi, dword [esi + eax + 4]
mov eax, dword [esp + 0xc]
shl esi, cl
add esi, esi
or esi, edi
mov edi, dword [esp + 0x18]
mov edi, dword [eax + edi + 8]
mov eax, dword [esp + 0x24]
and eax, 1
shl edi, cl
add edi, edi
or edi, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x18]
mov eax, dword [eax + edi + 0xc]
mov edi, dword [esp + 8]
shl eax, cl
mov dword [esp + 0x1c], eax
mov ecx, eax
mov eax, dword [esp + 0x38]
add ecx, ecx
and eax, 1
or ecx, eax
mov eax, dword [esp + 0x28]
add eax, edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xc]
sub edx, dword [esp + 0x28]
sar eax, 1
shr eax, 0x10
mov word [ecx + edi], ax
mov eax, ecx
sar edx, 1
mov ecx, edi
shr edx, 0x10
mov word [eax + ecx + 2], dx
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0xc]
lea eax, [edx + esi]
sub esi, edx
mov edx, dword [esp + 0x24]
sar eax, 1
shr eax, 0x10
mov word [ecx + edi + 4], ax
mov eax, ecx
mov ecx, edi
sar esi, 1
mov edi, dword [esp + 0x58]
shr esi, 0x10
mov word [eax + ecx + 6], si
lea eax, [edx + edi]
sar eax, 1
mov esi, dword [esp + 0xc]
sub edi, edx
mov edx, dword [esp + 0x38]
shr eax, 0x10
sar edi, 1
mov word [esi + ecx + 8], ax
shr edi, 0x10
mov word [esi + ecx + 0xa], di
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 8]
lea eax, [edx + ecx]
sub ecx, edx
sar eax, 1
shr eax, 0x10
sar ecx, 1
shr ecx, 0x10
mov word [esi + edi + 0xc], ax
mov eax, dword [esp + 0x54]
mov word [esi + edi + 0xe], cx
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x20]
add ecx, 1
mov dword [esp + 0x34], ecx
adc eax, 0
mov dword [esp + 0x54], eax
cmp eax, dword [esp + 0x14]
jb 0x439851
mov eax, dword [esp + 0x30]
ja 0x4399c0
cmp ecx, eax
jb 0x439851
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 8]
mov edi, dword [esp + 0x20]
shld dword [esp + 0x14], eax, 2
shl eax, 2
mov dword [esp + 0x30], eax
cmp dword [esp + 0x14], ecx
ja 0x43a56b
jb 0x4399f1
cmp eax, esi
jae 0x43a56b
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx + eax*4]
mov cl, byte [edi + 0x55]
shl edx, cl
mov ecx, dword [esp + 0x18]
mov esi, dword [ecx + eax*4]
mov eax, edx
mov cl, byte [edi + 0x4d]
and eax, 1
mov edi, dword [esp + 0x30]
shl esi, cl
mov ecx, dword [esp + 0x44]
add esi, esi
or esi, eax
lea eax, [edx + esi]
sub esi, edx
mov edx, dword [esp + 0x14]
sar eax, 1
shl eax, cl
mov ecx, dword [esp + 8]
shr eax, 0x10
sar esi, 1
mov word [ecx + edi*4], ax
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 8]
shl esi, cl
mov ecx, edi
shr esi, 0x10
mov word [eax + ecx*4 + 2], si
mov eax, edi
mov ecx, dword [esp + 0x40]
add eax, 1
mov edi, dword [esp + 0x20]
adc edx, 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x14], edx
cmp edx, ecx
jb 0x4399f1
ja 0x439f5a
cmp eax, dword [esp + 0x3c]
jb 0x4399f1
jmp 0x439f5a
cmp dword [0x5192d0], 0
je 0x439bee
cmp byte [edi + 0x1d], 0x18
ja 0x439bee
mov eax, esi
mov edx, ecx
movzx esi, byte [edi + 0x4d]
xorps xmm0, xmm0
add esi, dword [esp + 0x44]
shrd eax, edx, 2
mov dword [esp + 0x34], esi
movzx esi, byte [edi + 0x55]
add esi, dword [esp + 0x44]
shr edx, 2
mov dword [esp + 0xc], edx
test edx, edx
mov edx, dword [esp + 8]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x10], eax
movlpd qword [esp + 0x48], xmm0
jb 0x439b6f
ja 0x439ada
test eax, eax
je 0x439b6f
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x28], eax
movd xmm0, dword [esp + 0x38]
add eax, eax
movups xmm2, xmmword [ecx + eax*8]
movups xmm1, xmmword [edi + eax*8]
pslld xmm2, xmm0
movd xmm0, dword [esp + 0x34]
pslld xmm1, xmm0
paddd xmm1, xmm2
psrad xmm2, 0x10
psrad xmm1, 0x10
packssdw xmm1, xmm2
pshufd xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
movups xmmword [edx + eax*8], xmm0
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
add eax, 1
mov dword [esp + 0x28], eax
adc edx, 0
cmp edx, dword [esp + 0xc]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 8]
jb 0x439af6
ja 0x439b5f
cmp eax, esi
jb 0x439af6
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x10]
shld dword [esp + 0xc], eax, 2
shl eax, 2
mov dword [esp + 0x10], eax
cmp dword [esp + 0xc], ecx
ja 0x43a56b
jb 0x439b90
cmp eax, esi
jae 0x43a56b
mov edi, dword [esp + 8]
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx + eax*4]
mov ecx, dword [esp + 0x38]
shl edx, cl
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x34]
shl eax, cl
mov ecx, dword [esp + 0x10]
add eax, edx
shr eax, 0x10
shr edx, 0x10
mov word [edi + ecx*4], ax
mov eax, ecx
mov ecx, dword [esp + 0x40]
mov word [edi + eax*4 + 2], dx
add eax, 1
mov edx, dword [esp + 0xc]
adc edx, 0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edx
cmp edx, ecx
jb 0x439b94
ja 0x439f56
cmp eax, esi
jb 0x439b94
jmp 0x439f56
mov eax, esi
mov edx, ecx
movzx esi, byte [edi + 0x4d]
xorps xmm0, xmm0
add esi, dword [esp + 0x44]
shrd eax, edx, 2
mov dword [esp + 0x54], esi
movzx esi, byte [edi + 0x55]
add esi, dword [esp + 0x44]
shr edx, 2
mov dword [esp + 0xc], edx
test edx, edx
mov edx, dword [esp + 8]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x10], eax
movlpd qword [esp + 0x48], xmm0
jb 0x439d64
ja 0x439c3c
test eax, eax
je 0x439d64
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x38], eax
mov dword [esp + 0x24], ecx
mov esi, dword [esp + 0x2c]
mov edi, ecx
mov ecx, dword [esp + 0x34]
shl edi, 4
mov dword [esp + 0x14], edi
mov eax, dword [edi + esi]
mov edx, dword [edi + esi + 8]
shl eax, cl
mov dword [esp + 0x60], eax
mov eax, dword [edi + esi + 4]
mov esi, dword [edi + esi + 0xc]
shl eax, cl
shl esi, cl
shl edx, cl
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x48], edx
mov edi, dword [edi + ecx + 4]
mov ecx, dword [esp + 0x54]
shl edi, cl
add edi, eax
mov eax, dword [esp + 0x14]
shr edi, 0x10
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x18]
mov esi, dword [eax + edi + 8]
shl esi, cl
add esi, edx
mov edx, dword [eax + edi + 0xc]
mov eax, dword [eax + edi]
mov edi, dword [esp + 0x14]
shl eax, cl
shl edx, cl
mov ecx, dword [esp + 0x60]
add eax, ecx
shr eax, 0x10
shr esi, 0x10
add edx, dword [esp + 0x28]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 8]
shr ecx, 0x10
shr edx, 0x10
mov word [edi + esi], ax
mov eax, edi
mov edi, esi
mov word [eax + edi + 2], cx
mov ecx, eax
mov edi, dword [esp + 0x58]
mov eax, esi
mov word [ecx + eax + 4], di
mov edi, esi
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x30]
shr eax, 0x10
mov word [ecx + edi + 6], ax
mov eax, dword [esp + 0x48]
shr eax, 0x10
mov word [ecx + edi + 8], si
mov word [ecx + edi + 0xa], ax
mov eax, dword [esp + 0x28]
shr eax, 0x10
mov word [ecx + edi + 0xc], dx
mov word [ecx + edi + 0xe], ax
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x38]
add ecx, 1
mov dword [esp + 0x24], ecx
adc eax, 0
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0xc]
jb 0x439c4c
mov eax, dword [esp + 0x10]
ja 0x439d54
cmp ecx, eax
jb 0x439c4c
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
shld dword [esp + 0xc], eax, 2
shl eax, 2
mov dword [esp + 0x10], eax
cmp dword [esp + 0xc], ecx
ja 0x43a56b
jb 0x439d85
cmp eax, esi
jae 0x43a56b
mov edi, dword [esp + 8]
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx + eax*4]
mov ecx, dword [esp + 0x34]
shl edx, cl
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x54]
shl eax, cl
mov ecx, dword [esp + 0x10]
add eax, edx
shr eax, 0x10
shr edx, 0x10
mov word [edi + ecx*4], ax
mov eax, ecx
mov ecx, dword [esp + 0x40]
mov word [edi + eax*4 + 2], dx
add eax, 1
mov edx, dword [esp + 0xc]
adc edx, 0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edx
cmp edx, ecx
jb 0x439d89
ja 0x439f56
cmp eax, esi
jb 0x439d89
jmp 0x439f56
cmp dword [0x5192d0], 0
je 0x439f63
cmp byte [edi + 0x1d], 0x18
ja 0x439f63
mov eax, esi
mov edx, ecx
movzx esi, byte [edi + 0x4d]
xorps xmm0, xmm0
add esi, dword [esp + 0x44]
shrd eax, edx, 2
mov dword [esp + 0x38], esi
movzx esi, byte [edi + 0x55]
add esi, dword [esp + 0x44]
shr edx, 2
mov dword [esp + 0x10], edx
test edx, edx
mov edx, dword [esp + 8]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0xc], eax
movlpd qword [esp + 0x48], xmm0
jb 0x439ee0
ja 0x439e48
test eax, eax
je 0x439ee0
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x28], eax
movd xmm0, dword [esp + 0x38]
add eax, eax
movups xmm3, xmmword [edi + eax*8]
movups xmm1, xmmword [ecx + eax*8]
pslld xmm3, xmm0
movd xmm0, dword [esp + 0x34]
pslld xmm1, xmm0
movaps xmm2, xmm3
psubd xmm3, xmm1
psrad xmm2, 0x10
psrad xmm3, 0x10
packssdw xmm2, xmm3
pshufd xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
movups xmmword [edx + eax*8], xmm0
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
add eax, 1
mov dword [esp + 0x28], eax
adc edx, 0
cmp edx, dword [esp + 0x10]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 8]
jb 0x439e64
ja 0x439ed0
cmp eax, esi
jb 0x439e64
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0xc]
shld dword [esp + 0x10], eax, 2
shl eax, 2
mov dword [esp + 0xc], eax
cmp dword [esp + 0x10], ecx
ja 0x43a56b
jb 0x439f01
cmp eax, esi
jae 0x43a56b
mov edi, dword [esp + 8]
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + eax*4]
mov ecx, dword [esp + 0x38]
shl edx, cl
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x34]
shl eax, cl
mov ecx, edx
sub ecx, eax
shr edx, 0x10
mov eax, dword [esp + 0xc]
shr ecx, 0x10
mov word [edi + eax*4], dx
mov edx, dword [esp + 0x10]
mov word [edi + eax*4 + 2], cx
add eax, 1
mov ecx, dword [esp + 0x40]
adc edx, 0
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
cmp edx, ecx
jb 0x439f05
ja 0x439f56
cmp eax, esi
jb 0x439f05
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 8]
jmp 0x43a56b
mov eax, esi
mov edx, ecx
movzx esi, byte [edi + 0x4d]
xorps xmm0, xmm0
add esi, dword [esp + 0x44]
shrd eax, edx, 2
mov dword [esp + 0x1c], esi
movzx esi, byte [edi + 0x55]
add esi, dword [esp + 0x44]
shr edx, 2
mov dword [esp + 0x10], edx
test edx, edx
mov edx, dword [esp + 8]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x14], eax
movlpd qword [esp + 0x48], xmm0
jb 0x43a0f5
ja 0x439fb1
test eax, eax
je 0x43a0f5
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x18]
mov edi, ecx
mov ecx, dword [esp + 0x1c]
shl edi, 4
mov dword [esp + 0xc], edi
mov edx, dword [edi + eax]
mov esi, dword [edi + eax + 4]
mov eax, dword [edi + eax + 8]
shl eax, cl
mov dword [esp + 0x28], eax
shl edx, cl
shl esi, cl
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x48], edx
mov dword [esp + 0x58], esi
mov eax, dword [edi + ecx + 0xc]
mov ecx, dword [esp + 0x1c]
shl eax, cl
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
mov eax, dword [edi + eax]
mov edi, edx
mov edx, dword [esp + 0xc]
shl eax, cl
sub edi, eax
shr edi, 0x10
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x2c]
mov eax, dword [edx + edi + 4]
shl eax, cl
sub esi, eax
mov eax, dword [edx + edi + 8]
mov edx, dword [esp + 0x28]
shl eax, cl
sub edx, eax
shr esi, 0x10
mov eax, dword [esp + 0xc]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 8]
shr edx, 0x10
mov eax, dword [eax + edi + 0xc]
mov edi, dword [esp + 0xc]
shl eax, cl
mov ecx, dword [esp + 0x24]
sub ecx, eax
mov eax, dword [esp + 0x48]
shr eax, 0x10
mov word [edi + esi], ax
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x60]
shr ecx, 0x10
mov word [eax + esi + 2], di
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x58]
shr eax, 0x10
mov word [edi + esi + 4], ax
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x30]
mov word [edi + eax + 6], si
mov esi, dword [esp + 8]
mov eax, dword [esp + 0x28]
shr eax, 0x10
mov word [edi + esi + 8], ax
mov eax, dword [esp + 0x24]
shr eax, 0x10
mov word [edi + esi + 0xa], dx
mov word [edi + esi + 0xc], ax
mov eax, esi
mov word [edi + eax + 0xe], cx
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
add ecx, 1
mov dword [esp + 0x38], ecx
adc eax, 0
mov dword [esp + 0x34], eax
cmp eax, dword [esp + 0x10]
jb 0x439fc1
mov eax, dword [esp + 0x14]
ja 0x43a0e5
cmp ecx, eax
jb 0x439fc1
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
shld dword [esp + 0x10], eax, 2
shl eax, 2
mov dword [esp + 0x14], eax
cmp dword [esp + 0x10], ecx
ja 0x43a56b
jb 0x43a116
cmp eax, esi
jae 0x43a56b
mov edi, dword [esp + 8]
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + eax*4]
mov ecx, dword [esp + 0x1c]
shl edx, cl
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x54]
shl eax, cl
mov ecx, edx
sub ecx, eax
shr edx, 0x10
mov eax, dword [esp + 0x14]
shr ecx, 0x10
mov word [edi + eax*4], dx
mov edx, dword [esp + 0x10]
mov word [edi + eax*4 + 2], cx
add eax, 1
mov ecx, dword [esp + 0x40]
adc edx, 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
cmp edx, ecx
jb 0x43a11a
ja 0x439f56
cmp eax, esi
jb 0x43a11a
jmp 0x439f56
cmp dword [0x5192d0], 0
je 0x43a2dd
cmp byte [edi + 0x1d], 0x18
ja 0x43a2dd
mov eax, esi
mov edx, ecx
movzx esi, byte [edi + 0x4d]
xorps xmm0, xmm0
add esi, dword [esp + 0x44]
shrd eax, edx, 2
mov dword [esp + 0x38], esi
movzx esi, byte [edi + 0x55]
add esi, dword [esp + 0x44]
shr edx, 2
mov dword [esp + 0x10], edx
test edx, edx
mov edx, dword [esp + 8]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0xc], eax
movlpd qword [esp + 0x48], xmm0
jb 0x43a26a
ja 0x43a1d9
test eax, eax
je 0x43a26a
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x28], eax
movd xmm0, dword [esp + 0x38]
add eax, eax
movups xmm2, xmmword [esi + eax*8]
movups xmm1, xmmword [ecx + eax*8]
pslld xmm2, xmm0
movd xmm0, dword [esp + 0x34]
pslld xmm1, xmm0
psrad xmm2, 0x10
psrad xmm1, 0x10
packssdw xmm2, xmm1
pshufd xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
movups xmmword [edx + eax*8], xmm0
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
add eax, 1
mov dword [esp + 0x28], eax
adc edx, 0
cmp edx, dword [esp + 0x10]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 8]
jb 0x43a1f5
ja 0x43a25a
cmp eax, edi
jb 0x43a1f5
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0xc]
shld dword [esp + 0x10], eax, 2
shl eax, 2
mov dword [esp + 0xc], eax
cmp dword [esp + 0x10], ecx
ja 0x43a56b
jb 0x43a28b
cmp eax, esi
jae 0x43a56b
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
mov eax, dword [eax + edi*4]
shl eax, cl
mov ecx, dword [esp + 0x34]
shr eax, 0x10
mov word [edx + edi*4], ax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + edi*4]
shl eax, cl
mov ecx, dword [esp + 0x40]
shr eax, 0x10
mov word [edx + edi*4 + 2], ax
add edi, 1
mov eax, dword [esp + 0x10]
adc eax, 0
mov dword [esp + 0x10], eax
cmp eax, ecx
jb 0x43a28f
ja 0x43a4b7
cmp edi, esi
jb 0x43a28f
jmp 0x43a4b7
mov eax, esi
mov edx, ecx
movzx esi, byte [edi + 0x4d]
xorps xmm0, xmm0
add esi, dword [esp + 0x44]
shrd eax, edx, 2
mov dword [esp + 0x1c], esi
movzx esi, byte [edi + 0x55]
add esi, dword [esp + 0x44]
shr edx, 2
mov dword [esp + 0x14], edx
test edx, edx
mov edx, dword [esp + 8]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0xc], eax
movlpd qword [esp + 0x48], xmm0
jb 0x43a447
ja 0x43a32b
test eax, eax
je 0x43a447
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x38], eax
mov dword [esp + 0x24], ecx
mov esi, dword [esp + 0x18]
mov edx, ecx
mov ecx, dword [esp + 0x1c]
shl edx, 4
mov dword [esp + 0x28], edx
mov eax, dword [edx + esi + 4]
shl eax, cl
shr eax, 0x10
mov dword [esp + 0x60], eax
mov eax, dword [edx + esi + 8]
shl eax, cl
shr eax, 0x10
mov dword [esp + 0x54], eax
mov eax, dword [edx + esi + 0xc]
shl eax, cl
mov ecx, dword [esp + 0x34]
shr eax, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
mov eax, dword [edx + eax]
shl eax, cl
shr eax, 0x10
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x2c]
mov edi, dword [edx + eax + 4]
mov esi, dword [edx + eax + 8]
mov edx, dword [edx + eax + 0xc]
mov eax, dword [esp + 0x28]
shl edi, cl
shl esi, cl
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edi, 0x10
mov dword [esp + 0x58], edi
mov edi, dword [esp + 8]
mov eax, dword [eax + ecx]
mov ecx, dword [esp + 0x1c]
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, 0x10
shr esi, 0x10
shr edx, 0x10
mov word [ecx + edi], ax
mov eax, dword [esp + 0x48]
mov word [ecx + edi + 2], ax
mov eax, dword [esp + 0x60]
mov word [ecx + edi + 4], ax
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x58]
mov word [ecx + eax + 6], di
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x54]
mov word [ecx + edi + 8], ax
mov eax, dword [esp + 0x10]
mov word [ecx + edi + 0xa], si
mov word [ecx + edi + 0xc], ax
mov eax, dword [esp + 0x38]
mov word [ecx + edi + 0xe], dx
mov ecx, dword [esp + 0x24]
add ecx, 1
mov dword [esp + 0x24], ecx
adc eax, 0
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0x14]
jb 0x43a33b
mov eax, dword [esp + 0xc]
ja 0x43a437
cmp ecx, eax
jb 0x43a33b
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
shld dword [esp + 0x14], eax, 2
shl eax, 2
mov dword [esp + 0xc], eax
cmp dword [esp + 0x14], ecx
ja 0x43a56b
jb 0x43a468
cmp eax, esi
jae 0x43a56b
mov edi, dword [esp + 0x18]
mov eax, dword [edi + eax*4]
mov ecx, dword [esp + 0x1c]
shl eax, cl
mov ecx, dword [esp + 0xc]
shr eax, 0x10
mov word [edx + ecx*4], ax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x34]
shl eax, cl
mov ecx, dword [esp + 0xc]
shr eax, 0x10
mov word [edx + ecx*4 + 2], ax
mov eax, ecx
mov ecx, dword [esp + 0x40]
add eax, 1
mov dword [esp + 0xc], eax
adc dword [esp + 0x14], 0
cmp dword [esp + 0x14], ecx
jb 0x43a46c
ja 0x43a4b7
cmp eax, esi
jb 0x43a46c
mov edi, dword [esp + 0x20]
jmp 0x43a56b
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
test ecx, ecx
jb 0x43a56b
ja 0x43a4db
test esi, esi
je 0x43a56b
mov eax, dword [esp + 0x64]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x24], eax
cmp dword [esp + 0x70], 0
jbe 0x43a553
mov ecx, dword [esp + 0x48]
lea esi, [edi + 0x4d]
mov edi, dword [esp + 0x44]
add ecx, eax
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x70]
imul eax, ecx
mov dword [esp + 0x28], ecx
lea eax, [edx + eax*2]
mov dword [esp + 0x60], eax
mov edx, eax
movzx ecx, byte [esi]
lea esi, [esi + 8]
mov eax, dword [esi - 5]
add ecx, edi
mov edi, dword [esp + 0x58]
mov eax, dword [eax + edi*4]
mov edi, dword [esp + 0x44]
shl eax, cl
sar eax, 0x10
sub dword [esp + 0x28], 1
mov word [edx], ax
lea edx, [edx + 2]
jne 0x43a517
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
add eax, 1
mov dword [esp + 0x24], eax
adc dword [esp + 0x1c], 0
cmp dword [esp + 0x1c], ecx
jb 0x43a4eb
ja 0x43a56b
cmp eax, esi
jb 0x43a4eb
mov esi, dword [esp + 0x3c]
mov eax, esi
add dword [esp + 0x78], esi
adc dword [esp + 0x7c], ecx
imul eax, dword [esp + 0x70]
sub dword [esp + 0x74], esi
lea edx, [edx + eax*2]
mov eax, dword [esp + 0x6c]
sbb eax, ecx
mov dword [esp + 8], edx
add dword [edi + 0x90], esi
mov dword [esp + 0x6c], eax
adc dword [edi + 0x94], ecx
sub dword [edi + 0x48], esi
mov esi, dword [esp + 0x74]
test eax, eax
ja 0x43923d
jb 0x43a5b8
test esi, esi
jne 0x43923d
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
jmp 0x43a5c6
xor eax, eax
xor edx, edx
mov ecx, dword [esp + 0x8c]
pop edi
pop esi
xor ecx, esp
call fcn.00448363
mov esp, ebp
pop ebp
ret