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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x84
mov ecx, dword [ebp + 0x1c]
movzx ebx, word [ecx + 2]
mov eax, ebx
movzx ecx, word [ecx + 4]
mov edx, ecx
shr eax, 5
shr edx, 5
and eax, 0x3f
and edx, 0x3f
mov dword [esp + 0x54], eax
mov byte [esp + 0x29], al
mov dword [esp + 0x4c], edx
mov byte [esp + 0x2a], dl
cmp ebx, ecx
jbe 0x418cd7
mov eax, edx
mov edx, dword [esp + 0x54]
lea esi, [eax + edx*2]
imul edx, esi, 0x56
shr edx, 8
mov dword [esp + 0x48], edx
mov byte [esp + 0x2b], dl
mov edx, dword [esp + 0x54]
lea edi, [edx + eax*2]
imul eax, edi, 0x56
shr eax, 8
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x50]
mov byte [esp + 0x2c], al
mov eax, dword [esp + 0x54]
sub eax, dword [esp + 0x4c]
cdq
xor eax, edx
sub eax, edx
je 0x418cd0
bsr edx, eax
inc edx
xor eax, eax
cmp ebx, ecx
mov esi, dword [ebp + 8]
seta al
mov ebx, dword [ebp + 0x1c]
movzx edi, word [ebx + 0x10]
lea edx, [eax + edx*2]
shl edx, 0xe
mov eax, edi
shr eax, 5
and eax, 0x3f
mov byte [esp + 0x10], al
lea ecx, [esi + edx + 0x3db35c]
mov dword [esp + 0x44], ecx
movzx ecx, word [ebx + 0x12]
mov edx, ecx
shr edx, 5
and edx, 0x3f
mov byte [esp + 0x11], dl
cmp edi, ecx
jbe 0x418cbe
lea esi, [edx + eax*2]
imul ecx, esi, 0x56
lea edi, [eax + edx*2]
imul eax, edi, 0x56
shr ecx, 8
shr eax, 8
mov byte [esp + 0x12], cl
mov byte [esp + 0x13], al
mov edi, dword [ebp + 0x1c]
mov esi, dword [edi + 0x14]
mov edx, esi
shr edx, 0x16
mov ecx, esi
mov eax, esi
and edx, 3
shr ecx, 6
shr eax, 0xe
and ecx, 3
shr esi, 0x1e
and eax, 3
movzx edx, byte [esp + edx + 0x10]
mov byte [esp + 0x28], dl
mov byte [esp + 0x23], dl
movzx ecx, byte [esp + ecx + 0x10]
mov ebx, ecx
movzx eax, byte [esp + eax + 0x10]
movzx edx, byte [esp + esi + 0x10]
mov byte [esp + 0x16], cl
mov byte [esp + 0x22], cl
mov byte [esp + 0x14], cl
mov byte [esp + 0x25], al
mov byte [esp + 0x20], al
mov byte [esp + 0x26], dl
cmp byte [edi], 1
ja 0x436590
xor eax, eax
mov byte [esp + 0x15], cl
mov byte [esp + 0x19], al
mov byte [esp + 0x18], al
mov byte [esp + 0x1c], al
mov byte [esp + 0x1b], al
mov byte [esp + 0x1f], al
mov byte [esp + 0x1e], al
cmp ebx, ecx
mov edx, ecx
mov eax, ecx
cmova edx, ebx
cmovb eax, ebx
cmp ecx, edx
jae 0x417be2
add ebx, ecx
sub ebx, ecx
cmp ecx, eax
mov eax, edx
cmova eax, ebx
add esp, 0xc
mov ecx, 2
push dword [ebp + 0x18]
push dword [ebp + 0x14]
mov edi, 3
mov esi, dword [esp + 0x4c]
mov ebx, dword [esp + 0x44]
sub esi, eax
mov edx, dword [esp + 0x48]
sub ebx, eax
sub edx, eax
neg eax
add eax, dword [esp + 0x50]
imul edx, edx
imul eax, eax
imul ebx, ebx
imul esi, esi
cmp edx, eax
cmovb eax, edx
mov edx, 0
setb dl
cmp ebx, eax
cmovb eax, ebx
cmovb edx, ecx
cmp esi, eax
mov eax, dword [esp + 0x40]
cmovb edx, edi
shl edx, 0xc
lea eax, [eax + edx + 0x240]
push eax
call fcn.00418cf0
mov dword [esp + 0x68], eax
mov esi, eax
movzx ebx, byte [esp + 0x18]
mov ecx, ebx
movzx edx, byte [esp + 0x19]
movzx eax, byte [esp + esi + 0x29]
cmp eax, ebx
mov esi, ebx
cmova ecx, eax
cmovb esi, eax
mov dword [esp + 0x30], eax
cmp edx, ecx
jae 0x417c7d
add ebx, dword [esp + 0x30]
sub ebx, edx
cmp edx, esi
mov esi, ecx
cmova esi, ebx
add esp, 0xc
xor eax, eax
push dword [ebp + 0x18]
push dword [ebp + 0x14]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
sub ecx, esi
mov edi, dword [esp + 0x48]
sub edx, esi
sub edi, esi
neg esi
add esi, dword [esp + 0x50]
imul edi, edi
imul esi, esi
imul edx, edx
imul ecx, ecx
cmp edi, esi
mov ebx, dword [esp + 0x64]
cmovb esi, edi
setb al
cmp edx, esi
cmovb esi, edx
mov edx, 2
cmovb eax, edx
cmp ecx, esi
mov esi, 3
cmovb eax, esi
shl ebx, 4
shl eax, 0xc
add ebx, dword [esp + 0x40]
lea eax, [ebx + eax + 0x200]
push eax
call fcn.00418cf0
mov dword [esp + 0x64], eax
mov esi, eax
movzx ebx, byte [esp + 0x1b]
mov ecx, ebx
movzx edx, byte [esp + 0x1c]
movzx eax, byte [esp + esi + 0x29]
cmp eax, ebx
mov esi, ebx
cmova ecx, eax
cmovb esi, eax
mov dword [esp + 0x3c], eax
cmp edx, ecx
jae 0x417d1c
add ebx, dword [esp + 0x3c]
sub ebx, edx
cmp edx, esi
mov esi, ecx
cmova esi, ebx
add esp, 0xc
xor eax, eax
push dword [ebp + 0x18]
push dword [ebp + 0x14]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
sub ecx, esi
mov edi, dword [esp + 0x48]
sub edx, esi
sub edi, esi
neg esi
add esi, dword [esp + 0x50]
imul edi, edi
imul esi, esi
imul edx, edx
imul ecx, ecx
cmp edi, esi
mov ebx, dword [esp + 0x60]
cmovb esi, edi
setb al
cmp edx, esi
cmovb esi, edx
mov edx, 2
cmovb eax, edx
cmp ecx, esi
mov esi, 3
cmovb eax, esi
shl ebx, 4
shl eax, 0xc
add ebx, dword [esp + 0x40]
lea eax, [ebx + eax + 0x200]
push eax
call fcn.00418cf0
mov dword [esp + 0x60], eax
mov esi, eax
movzx ebx, byte [esp + 0x1e]
mov ecx, ebx
movzx edx, byte [esp + 0x1f]
movzx eax, byte [esp + esi + 0x29]
cmp eax, ebx
mov esi, ebx
cmova ecx, eax
cmovb esi, eax
mov dword [esp + 0x38], eax
cmp edx, ecx
jae 0x417dbb
add ebx, dword [esp + 0x38]
sub ebx, edx
cmp edx, esi
mov esi, ecx
cmova esi, ebx
add esp, 0xc
xor eax, eax
push dword [ebp + 0x18]
push dword [ebp + 0x14]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
sub ecx, esi
mov edi, dword [esp + 0x48]
sub edx, esi
sub edi, esi
neg esi
add esi, dword [esp + 0x50]
imul edi, edi
imul esi, esi
imul edx, edx
imul ecx, ecx
cmp edi, esi
mov ebx, dword [esp + 0x5c]
cmovb esi, edi
setb al
cmp edx, esi
cmovb esi, edx
mov edx, 2
cmovb eax, edx
cmp ecx, esi
mov esi, 3
cmovb eax, esi
shl ebx, 4
shl eax, 0xc
add ebx, dword [esp + 0x40]
lea eax, [ebx + eax + 0x200]
push eax
call fcn.00418cf0
mov dword [esp + 0x5c], eax
movzx ecx, byte [esp + 0x20]
mov esi, dword [esp + 0x30]
cmp ecx, esi
movzx edx, byte [esp + eax + 0x29]
mov dword [esp + 0x40], edx
mov edx, esi
cmova edx, ecx
cmovb esi, ecx
movzx eax, byte [esp + 0x22]
cmp eax, edx
jae 0x417e5a
add ecx, dword [esp + 0x30]
sub ecx, eax
cmp eax, esi
mov esi, edx
cmova esi, ecx
add esp, 0xc
xor eax, eax
push dword [ebp + 0x18]
push dword [ebp + 0x14]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
sub ecx, esi
mov edi, dword [esp + 0x48]
sub edx, esi
sub edi, esi
neg esi
add esi, dword [esp + 0x50]
imul edi, edi
imul esi, esi
imul edx, edx
imul ecx, ecx
cmp edi, esi
mov ebx, dword [esp + 0x64]
cmovb esi, edi
setb al
cmp edx, esi
cmovb esi, edx
mov edx, 2
cmovb eax, edx
cmp ecx, esi
mov esi, 3
cmovb eax, esi
shl ebx, 7
shl eax, 0xc
add ebx, dword [esp + 0x40]
lea eax, [ebx + eax + 0x40]
push eax
call fcn.00418cf0
mov dword [esp + 0x58], eax
mov esi, eax
movzx eax, byte [esp + esi + 0x29]
mov esi, dword [esp + 0x3c]
cmp eax, esi
mov edx, esi
cmova edx, eax
cmovb esi, eax
mov dword [esp + 0x34], eax
cmp edx, dword [esp + 0x30]
jbe 0x417ef8
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
sub ecx, eax
add ecx, dword [esp + 0x34]
cmp eax, esi
mov esi, edx
cmova esi, ecx
add esp, 0xc
push dword [ebp + 0x18]
push dword [ebp + 0x14]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
sub ecx, esi
mov eax, dword [esp + 0x48]
sub edx, esi
sub eax, esi
neg esi
add esi, dword [esp + 0x50]
imul eax, eax
imul esi, esi
imul edx, edx
imul ecx, ecx
cmp eax, esi
mov edi, dword [esp + 0x64]
cmovb esi, eax
mov eax, 0
mov ebx, dword [esp + 0x60]
setb al
shl edi, 6
cmp edx, esi
cmovb esi, edx
mov edx, 2
cmovb eax, edx
cmp ecx, esi
mov esi, 3
lea ebx, [edi + ebx*8]
cmovb eax, esi
add ebx, dword [esp + 0x54]
shl ebx, 4
add ebx, dword [esp + 0x40]
shl eax, 0xc
add ebx, eax
push ebx
call fcn.00418cf0
mov dword [esp + 0x6c], eax
mov ecx, eax
movzx eax, byte [esp + ecx + 0x29]
mov ecx, dword [esp + 0x38]
cmp eax, ecx
mov edx, ecx
cmova edx, eax
cmovb ecx, eax
mov dword [esp + 0x30], eax
cmp edx, dword [esp + 0x3c]
jbe 0x417fa5
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
sub ebx, eax
add ebx, dword [esp + 0x30]
cmp eax, ecx
mov ecx, edx
cmova ecx, ebx
mov eax, dword [esp + 0x54]
xor edx, edx
mov ebx, dword [esp + 0x4c]
sub eax, ecx
sub ebx, ecx
mov esi, 2
imul eax, eax
imul ebx, ebx
mov edi, dword [esp + 0x48]
cmp ebx, eax
cmovb eax, ebx
setb dl
sub edi, ecx
neg ecx
imul edi, edi
cmp edi, eax
mov ebx, dword [esp + 0x60]
cmovb eax, edi
cmovb edx, esi
add ecx, dword [esp + 0x50]
imul ecx, ecx
mov edi, dword [esp + 0x64]
cmp ecx, eax
mov ecx, 3
mov eax, dword [ebp + 0x14]
cmovb edx, ecx
shl edi, 6
shl edx, 0xc
mov esi, dword [eax]
mov eax, esi
and eax, 0x7fff
shr esi, 0xf
lea edi, [edi + ebx*8]
add edi, dword [esp + 0x6c]
shl edi, 4
add edi, dword [esp + 0x44]
movd xmm0, eax
add edi, edx
pshuflw xmm1, xmm0, 0
movdqu xmm4, xmmword [edi]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb edx, xmm2
add edx, 0x10
bsf edx, edx
mov dword [esp + 0x70], edx
movzx ecx, word [edi + edx*2 - 2]
sub eax, ecx
movzx ebx, word [edi + edx*2]
shl edx, 4
sub ebx, ecx
imul ebx, esi
movdqu xmm3, xmmword [edx + 0x4017b0]
psubw xmm3, xmm4
add eax, ebx
psraw xmm3, 7
paddw xmm4, xmm3
movdqu xmmword [edi], xmm4
cmp eax, 0x800000
jb 0x418c8d
mov ebx, dword [esp + 0x70]
mov edx, dword [ebp + 0x14]
movzx ecx, byte [esp + ebx + 0x28]
mov ebx, dword [esp + 0x40]
cmp ecx, ebx
mov dword [edx], eax
mov edx, ebx
cmova edx, ecx
cmovb ebx, ecx
mov dword [esp + 0x3c], ecx
cmp edx, dword [esp + 0x38]
jbe 0x4180b2
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x40]
sub esi, ecx
add esi, dword [esp + 0x3c]
cmp ecx, ebx
mov ebx, edx
cmova ebx, esi
mov ecx, dword [esp + 0x54]
xor edx, edx
mov edi, dword [esp + 0x4c]
sub ecx, ebx
sub edi, ebx
imul ecx, ecx
imul edi, edi
mov esi, dword [esp + 0x48]
cmp edi, ecx
cmovb ecx, edi
setb dl
sub esi, ebx
neg ebx
imul esi, esi
mov edi, 2
cmp esi, ecx
cmovb ecx, esi
cmovb edx, edi
add ebx, dword [esp + 0x50]
imul ebx, ebx
mov esi, dword [esp + 0x60]
cmp ebx, ecx
mov edi, dword [esp + 0x5c]
mov ebx, 3
cmovb edx, ebx
shl esi, 6
shl edx, 0xc
lea edi, [esi + edi*8]
mov esi, eax
add edi, dword [esp + 0x70]
and esi, 0x7fff
shl edi, 4
add edi, dword [esp + 0x44]
add edi, edx
movd xmm0, esi
pshuflw xmm1, xmm0, 0
shr eax, 0xf
movdqu xmm4, xmmword [edi - 0x10]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb edx, xmm2
add edx, 0x10
bsf edx, edx
mov dword [esp + 0x78], edx
movzx ebx, word [edi + edx*2 - 0x12]
movzx ecx, word [edi + edx*2 - 0x10]
shl edx, 4
sub ecx, ebx
imul eax, ecx
movdqu xmm3, xmmword [edx + 0x4017b0]
psubw xmm3, xmm4
sub eax, ebx
psraw xmm3, 7
add eax, esi
paddw xmm4, xmm3
movdqu xmmword [edi - 0x10], xmm4
cmp eax, 0x800000
jb 0x418c5c
mov ecx, dword [esp + 0x78]
movzx esi, byte [esp + 0x23]
mov edx, dword [ebp + 0x14]
movzx ebx, byte [esp + ecx + 0x28]
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x34]
cmp esi, ebx
mov ecx, ebx
cmova ecx, esi
cmovb ebx, esi
mov dword [edx], eax
movzx edx, byte [esp + 0x25]
cmp edx, ecx
jae 0x4181be
add esi, dword [esp + 0x34]
sub esi, edx
cmp edx, ebx
mov ebx, ecx
cmova ebx, esi
mov ecx, dword [esp + 0x54]
xor edx, edx
mov edi, dword [esp + 0x4c]
sub ecx, ebx
sub edi, ebx
imul ecx, ecx
imul edi, edi
mov esi, dword [esp + 0x48]
cmp edi, ecx
cmovb ecx, edi
setb dl
sub esi, ebx
neg ebx
imul esi, esi
mov edi, 2
add ebx, dword [esp + 0x50]
cmp esi, ecx
cmovb ecx, esi
cmovb edx, edi
imul ebx, ebx
mov esi, eax
cmp ebx, ecx
mov ebx, 3
mov edi, dword [esp + 0x58]
cmovb edx, ebx
and esi, 0x7fff
shl edi, 7
add edi, dword [esp + 0x44]
shl edx, 0xc
add edi, edx
movd xmm0, esi
pshuflw xmm1, xmm0, 0
shr eax, 0xf
movdqu xmm4, xmmword [edi + 0x40]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb edx, xmm2
add edx, 0x10
bsf edx, edx
mov dword [esp + 0x74], edx
movzx ebx, word [edi + edx*2 + 0x3e]
movzx ecx, word [edi + edx*2 + 0x40]
shl edx, 4
sub ecx, ebx
imul eax, ecx
movdqu xmm3, xmmword [edx + 0x4017b0]
psubw xmm3, xmm4
sub eax, ebx
psraw xmm3, 7
add eax, esi
paddw xmm4, xmm3
movdqu xmmword [edi + 0x40], xmm4
cmp eax, 0x800000
jb 0x418c2b
mov ebx, dword [esp + 0x74]
mov edx, dword [ebp + 0x14]
movzx ecx, byte [esp + ebx + 0x28]
mov ebx, dword [esp + 0x30]
cmp ecx, ebx
mov dword [edx], eax
mov edx, ebx
cmova edx, ecx
cmovb ebx, ecx
mov dword [esp + 0x38], ecx
cmp edx, dword [esp + 0x34]
jbe 0x4182bc
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
sub esi, ecx
add esi, dword [esp + 0x38]
cmp ecx, ebx
mov ebx, edx
cmova ebx, esi
mov ecx, dword [esp + 0x54]
xor edx, edx
mov edi, dword [esp + 0x4c]
sub ecx, ebx
sub edi, ebx
imul ecx, ecx
imul edi, edi
mov esi, dword [esp + 0x48]
cmp edi, ecx
cmovb ecx, edi
setb dl
sub esi, ebx
neg ebx
imul esi, esi
mov edi, 2
cmp esi, ecx
cmovb ecx, esi
cmovb edx, edi
add ebx, dword [esp + 0x50]
imul ebx, ebx
mov esi, dword [esp + 0x58]
cmp ebx, ecx
mov edi, dword [esp + 0x6c]
mov ebx, 3
cmovb edx, ebx
shl esi, 6
shl edx, 0xc
lea edi, [esi + edi*8]
mov esi, eax
add edi, dword [esp + 0x74]
and esi, 0x7fff
shl edi, 4
add edi, dword [esp + 0x44]
add edi, edx
movd xmm0, esi
pshuflw xmm1, xmm0, 0
shr eax, 0xf
movdqu xmm4, xmmword [edi - 0x10]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb edx, xmm2
add edx, 0x10
bsf edx, edx
mov dword [esp + 0x7c], edx
movzx ebx, word [edi + edx*2 - 0x12]
movzx ecx, word [edi + edx*2 - 0x10]
shl edx, 4
sub ecx, ebx
imul eax, ecx
movdqu xmm3, xmmword [edx + 0x4017b0]
psubw xmm3, xmm4
sub eax, ebx
psraw xmm3, 7
add eax, esi
paddw xmm4, xmm3
movdqu xmmword [edi - 0x10], xmm4
cmp eax, 0x800000
jb 0x418bfa
mov ebx, dword [esp + 0x7c]
mov edx, dword [ebp + 0x14]
movzx ecx, byte [esp + ebx + 0x28]
mov ebx, dword [esp + 0x3c]
cmp ecx, ebx
mov dword [edx], eax
mov edx, ebx
cmova edx, ecx
cmovb ebx, ecx
mov dword [esp + 0x34], ecx
cmp edx, dword [esp + 0x30]
jbe 0x4183c8
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
sub esi, ecx
add esi, dword [esp + 0x34]
cmp ecx, ebx
mov ebx, edx
cmova ebx, esi
mov ecx, dword [esp + 0x54]
xor edx, edx
mov edi, dword [esp + 0x4c]
sub ecx, ebx
sub edi, ebx
imul ecx, ecx
imul edi, edi
mov esi, dword [esp + 0x48]
cmp edi, ecx
cmovb ecx, edi
setb dl
sub esi, ebx
neg ebx
imul esi, esi
mov edi, 2
cmp esi, ecx
cmovb ecx, esi
cmovb edx, edi
add ebx, dword [esp + 0x50]
imul ebx, ebx
mov esi, dword [esp + 0x6c]
cmp ebx, ecx
mov edi, dword [esp + 0x70]
mov ebx, 3
cmovb edx, ebx
shl esi, 6
shl edx, 0xc
lea edi, [esi + edi*8]
mov esi, eax
add edi, dword [esp + 0x7c]
and esi, 0x7fff
shl edi, 4
add edi, dword [esp + 0x44]
add edi, edx
movd xmm0, esi
pshuflw xmm1, xmm0, 0
shr eax, 0xf
movdqu xmm4, xmmword [edi - 0x90]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb edx, xmm2
add edx, 0x10
bsf edx, edx
mov dword [esp + 0x80], edx
movzx ebx, word [edi + edx*2 - 0x92]
movzx ecx, word [edi + edx*2 - 0x90]
shl edx, 4
sub ecx, ebx
imul eax, ecx
movdqu xmm3, xmmword [edx + 0x4017b0]
psubw xmm3, xmm4
sub eax, ebx
psraw xmm3, 7
add eax, esi
paddw xmm4, xmm3
movdqu xmmword [edi - 0x90], xmm4
cmp eax, 0x800000
jb 0x418bc9
mov ebx, dword [esp + 0x80]
mov edx, dword [ebp + 0x14]
movzx ecx, byte [esp + ebx + 0x28]
mov ebx, dword [esp + 0x40]
cmp ecx, ebx
mov dword [edx], eax
mov edx, ebx
cmova edx, ecx
cmovb ebx, ecx
mov dword [esp + 0x30], ecx
cmp edx, dword [esp + 0x3c]
jbe 0x4184e6
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
sub esi, ecx
add esi, dword [esp + 0x30]
cmp ecx, ebx
mov ebx, edx
cmova ebx, esi
mov ecx, dword [esp + 0x54]
xor edx, edx
mov edi, dword [esp + 0x4c]
sub ecx, ebx
sub edi, ebx
imul ecx, ecx
imul edi, edi
mov esi, dword [esp + 0x48]
cmp edi, ecx
cmovb ecx, edi
setb dl
sub esi, ebx
neg ebx
imul esi, esi
mov edi, 2
cmp esi, ecx
cmovb ecx, esi
cmovb edx, edi
add ebx, dword [esp + 0x50]
imul ebx, ebx
mov esi, dword [esp + 0x70]
cmp ebx, ecx
mov edi, dword [esp + 0x78]
mov ebx, 3
cmovb edx, ebx
shl esi, 6
shl edx, 0xc
lea edi, [esi + edi*8]
mov esi, eax
add edi, dword [esp + 0x80]
and esi, 0x7fff
shl edi, 4
add edi, dword [esp + 0x44]
add edi, edx
movd xmm0, esi
pshuflw xmm1, xmm0, 0
shr eax, 0xf
movdqu xmm4, xmmword [edi - 0x490]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb edx, xmm2
add edx, 0x10
bsf edx, edx
mov dword [esp + 0x40], edx
movzx ebx, word [edi + edx*2 - 0x492]
movzx ecx, word [edi + edx*2 - 0x490]
shl edx, 4
sub ecx, ebx
imul eax, ecx
movdqu xmm3, xmmword [edx + 0x4017b0]
psubw xmm3, xmm4
sub eax, ebx
psraw xmm3, 7
add eax, esi
paddw xmm4, xmm3
movdqu xmmword [edi - 0x490], xmm4
cmp eax, 0x800000
jb 0x418b98
mov ecx, dword [esp + 0x40]
movzx esi, byte [esp + 0x26]
mov edx, dword [ebp + 0x14]
movzx ebx, byte [esp + ecx + 0x28]
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x38]
cmp esi, ebx
mov ecx, ebx
cmova ecx, esi
cmovb ebx, esi
mov dword [edx], eax
movzx edx, byte [esp + 0x28]
cmp edx, ecx
jae 0x418601
add esi, dword [esp + 0x38]
sub esi, edx
cmp edx, ebx
mov ebx, ecx
cmova ebx, esi
mov ecx, dword [esp + 0x54]
xor edx, edx
mov edi, dword [esp + 0x4c]
sub ecx, ebx
sub edi, ebx
imul ecx, ecx
imul edi, edi
mov esi, dword [esp + 0x48]
cmp edi, ecx
cmovb ecx, edi
setb dl
sub esi, ebx
neg ebx
imul esi, esi
mov edi, 2
add ebx, dword [esp + 0x50]
cmp esi, ecx
cmovb ecx, esi
cmovb edx, edi
imul ebx, ebx
mov esi, eax
cmp ebx, ecx
mov ebx, 3
mov edi, dword [esp + 0x74]
cmovb edx, ebx
and esi, 0x7fff
shl edi, 7
add edi, dword [esp + 0x44]
shl edx, 0xc
add edi, edx
movd xmm0, esi
pshuflw xmm1, xmm0, 0
shr eax, 0xf
movdqu xmm4, xmmword [edi - 0x40]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb edx, xmm2
add edx, 0x10
bsf edx, edx
mov dword [esp + 0x14], edx
movzx ebx, word [edi + edx*2 - 0x42]
movzx ecx, word [edi + edx*2 - 0x40]
shl edx, 4
sub ecx, ebx
imul eax, ecx
movdqu xmm3, xmmword [edx + 0x4017b0]
psubw xmm3, xmm4
sub eax, ebx
psraw xmm3, 7
add eax, esi
paddw xmm4, xmm3
movdqu xmmword [edi - 0x40], xmm4
cmp eax, 0x800000
jb 0x418b67
mov ebx, dword [esp + 0x14]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x34]
movzx ebx, byte [esp + ebx + 0x28]
cmp ebx, edx
mov dword [ecx], eax
mov ecx, edx
cmova ecx, ebx
cmovb edx, ebx
cmp ecx, dword [esp + 0x38]
jbe 0x4186f9
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
sub edi, esi
add edi, ebx
cmp esi, edx
mov edx, ecx
cmova edx, edi
mov edi, dword [esp + 0x54]
xor ecx, ecx
mov ebx, dword [esp + 0x4c]
sub edi, edx
sub ebx, edx
imul edi, edi
imul ebx, ebx
mov esi, dword [esp + 0x48]
cmp ebx, edi
cmovb edi, ebx
setb cl
sub esi, edx
neg edx
imul esi, esi
mov ebx, 2
cmp esi, edi
cmovb edi, esi
cmovb ecx, ebx
add edx, dword [esp + 0x50]
imul edx, edx
mov esi, dword [esp + 0x74]
cmp edx, edi
mov ebx, dword [esp + 0x7c]
mov edx, 3
cmovb ecx, edx
mov edx, eax
shl esi, 6
and edx, 0x7fff
shl ecx, 0xc
shr eax, 0xf
movd xmm0, edx
lea esi, [esi + ebx*8]
add esi, dword [esp + 0x14]
shl esi, 4
add esi, dword [esp + 0x44]
add esi, ecx
pshuflw xmm1, xmm0, 0
movdqu xmm4, xmmword [esi - 0x490]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb edi, xmm2
add edi, 0x10
bsf edi, edi
mov dword [esp + 0x18], edi
movzx ebx, word [esi + edi*2 - 0x492]
movzx ecx, word [esi + edi*2 - 0x490]
shl edi, 4
sub ecx, ebx
imul eax, ecx
movdqu xmm3, xmmword [edi + 0x4017b0]
psubw xmm3, xmm4
sub eax, ebx
psraw xmm3, 7
add eax, edx
paddw xmm4, xmm3
movdqu xmmword [esi - 0x490], xmm4
cmp eax, 0x800000
jb 0x418b36
mov ebx, dword [esp + 0x18]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x30]
movzx ebx, byte [esp + ebx + 0x28]
cmp ebx, edx
mov dword [ecx], eax
mov ecx, edx
cmova ecx, ebx
cmovb edx, ebx
cmp ecx, dword [esp + 0x34]
jbe 0x41880b
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
sub edi, esi
add edi, ebx
cmp esi, edx
mov edx, ecx
cmova edx, edi
mov ebx, dword [esp + 0x54]
xor ecx, ecx
mov edi, dword [esp + 0x4c]
sub ebx, edx
sub edi, edx
imul ebx, ebx
imul edi, edi
mov esi, dword [esp + 0x48]
cmp edi, ebx
cmovb ebx, edi
setb cl
sub esi, edx
neg edx
imul esi, esi
mov edi, 2
cmp esi, ebx
cmovb ebx, esi
cmovb ecx, edi
add edx, dword [esp + 0x50]
imul edx, edx
mov esi, dword [esp + 0x7c]
cmp edx, ebx
mov edi, dword [esp + 0x80]
mov edx, 3
cmovb ecx, edx
mov edx, eax
shl esi, 6
and edx, 0x7fff
shl ecx, 0xc
shr eax, 0xf
movd xmm0, edx
lea esi, [esi + edi*8]
add esi, dword [esp + 0x18]
shl esi, 4
add esi, dword [esp + 0x44]
add esi, ecx
pshuflw xmm1, xmm0, 0
movdqu xmm4, xmmword [esi - 0x490]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb ebx, xmm2
add ebx, 0x10
bsf edi, ebx
movzx ebx, word [esi + edi*2 - 0x492]
movzx ecx, word [esi + edi*2 - 0x490]
sub ecx, ebx
imul eax, ecx
sub eax, ebx
add eax, edx
mov edx, edi
shl edx, 4
movdqu xmm3, xmmword [edx + 0x4017b0]
psubw xmm3, xmm4
psraw xmm3, 7
paddw xmm4, xmm3
movdqu xmmword [esi - 0x490], xmm4
cmp eax, 0x800000
jb 0x418b05
mov edx, dword [ebp + 0x14]
movzx ecx, byte [esp + edi + 0x28]
mov esi, dword [esp + 0x3c]
cmp ecx, esi
mov dword [edx], eax
mov edx, esi
cmova edx, ecx
cmovb esi, ecx
cmp edx, dword [esp + 0x30]
jbe 0x418922
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x3c]
sub ebx, eax
add ebx, ecx
cmp eax, esi
mov esi, edx
mov eax, dword [esp + 0x1c]
cmova esi, ebx
mov dword [esp + 0x1c], eax
xor ebx, ebx
mov ecx, dword [esp + 0x54]
mov edx, 2
mov eax, dword [esp + 0x4c]
sub ecx, esi
sub eax, esi
imul ecx, ecx
imul eax, eax
cmp eax, ecx
mov dword [esp + 0x20], edi
cmovb ecx, eax
setb bl
mov eax, dword [esp + 0x48]
sub eax, esi
imul eax, eax
cmp eax, ecx
cmovb ebx, edx
cmovb ecx, eax
mov edx, dword [esp + 0x50]
sub edx, esi
imul edx, edx
mov esi, dword [esp + 0x80]
cmp edx, ecx
mov eax, dword [esp + 0x40]
mov ecx, 3
cmovb ebx, ecx
shl esi, 6
shl ebx, 0xc
lea esi, [esi + eax*8]
mov eax, dword [esp + 0x1c]
add esi, edi
mov ecx, eax
shl esi, 4
and ecx, 0x7fff
mov edi, dword [esp + 0x44]
add edi, esi
add edi, ebx
movd xmm0, ecx
pshuflw xmm1, xmm0, 0
shr eax, 0xf
movdqu xmm4, xmmword [edi - 0x490]
movdqa xmm2, xmm4
pcmpgtw xmm2, xmm1
packsswb xmm2, xmm2
pmovmskb ebx, xmm2
add ebx, 0x10
bsf edx, ebx
mov dword [esp + 0x24], edx
lea esi, [edx - 1]
shl esi, 4
movzx ebx, word [edi + edx*2 - 0x492]
movzx edx, word [edi + edx*2 - 0x490]
sub edx, ebx
imul eax, edx
movdqu xmm3, xmmword [esi + 0x4017c0]
psubw xmm3, xmm4
sub eax, ebx
psraw xmm3, 7
add eax, ecx
paddw xmm4, xmm3
movdqu xmmword [edi - 0x490], xmm4
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
cmp eax, 0x800000
jb 0x418ad4
mov edx, dword [ebp + 0x14]
mov ebx, dword [esp + 0x70]
mov dword [edx], eax
mov eax, dword [esp + 0x68]
shrd eax, eax, 2
add eax, dword [esp + 0x64]
shrd eax, eax, 2
add eax, dword [esp + 0x60]
shrd eax, eax, 2
add eax, dword [esp + 0x5c]
shrd eax, eax, 2
add eax, dword [esp + 0x58]
shrd eax, eax, 2
add eax, dword [esp + 0x6c]
shrd eax, eax, 2
lea esi, [eax + ebx - 1]
mov eax, dword [esp + 0x78]
shrd esi, esi, 2
mov ebx, dword [esp + 0x74]
lea edx, [esi + eax - 1]
mov esi, dword [esp + 0x7c]
shrd edx, edx, 2
lea eax, [edx + ebx - 1]
shrd eax, eax, 2
lea edx, [eax + esi - 1]
mov eax, dword [esp + 0x80]
shrd edx, edx, 2
mov esi, dword [esp + 0x40]
lea ebx, [edx + eax - 1]
mov edx, dword [esp + 0x14]
shrd ebx, ebx, 2
lea eax, [ebx + esi - 1]
mov esi, dword [esp + 0x18]
shrd eax, eax, 2
lea ebx, [eax + edx - 1]
shrd ebx, ebx, 2
lea eax, [ebx + esi - 1]
shrd eax, eax, 2
lea edi, [eax + edi - 1]
mov eax, dword [ebp + 0x1c]
shrd edi, edi, 2
lea ecx, [edi + ecx - 1]
shrd ecx, ecx, 2
mov dword [eax + 8], ecx
add esp, 0x84
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0x18]
shl eax, 8
mov edx, dword [edx]
movzx ebx, byte [edx]
or eax, ebx
inc edx
cmp eax, 0x800000
jb 0x418af3
mov ebx, dword [ebp + 0x18]
mov dword [ebx], edx
jmp 0x418a19
shl eax, 8
movzx ebx, byte [edx]
or eax, ebx
inc edx
cmp eax, 0x800000
jb 0x418af3
jmp 0x418ae9
mov edx, dword [ebp + 0x18]
shl eax, 8
mov edx, dword [edx]
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418b24
mov ecx, dword [ebp + 0x18]
mov dword [ecx], edx
jmp 0x4188e9
shl eax, 8
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418b24
jmp 0x418b1a
mov edx, dword [ebp + 0x18]
shl eax, 8
mov edx, dword [edx]
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418b55
mov ecx, dword [ebp + 0x18]
mov dword [ecx], edx
jmp 0x4187d6
shl eax, 8
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418b55
jmp 0x418b4b
mov edx, dword [ebp + 0x18]
shl eax, 8
mov edx, dword [edx]
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418b86
mov ecx, dword [ebp + 0x18]
mov dword [ecx], edx
jmp 0x4186c4
shl eax, 8
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418b86
jmp 0x418b7c
mov edx, dword [ebp + 0x18]
shl eax, 8
mov edx, dword [edx]
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418bb7
mov ecx, dword [ebp + 0x18]
mov dword [ecx], edx
jmp 0x4185c6
shl eax, 8
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418bb7
jmp 0x418bad
mov edx, dword [ebp + 0x18]
shl eax, 8
mov edx, dword [edx]
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418be8
mov ecx, dword [ebp + 0x18]
mov dword [ecx], edx
jmp 0x4184a8
shl eax, 8
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418be8
jmp 0x418bde
mov edx, dword [ebp + 0x18]
shl eax, 8
mov edx, dword [edx]
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418c19
mov ecx, dword [ebp + 0x18]
mov dword [ecx], edx
jmp 0x41838d
shl eax, 8
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418c19
jmp 0x418c0f
mov edx, dword [ebp + 0x18]
shl eax, 8
mov edx, dword [edx]
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418c4a
mov ecx, dword [ebp + 0x18]
mov dword [ecx], edx
jmp 0x418281
shl eax, 8
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418c4a
jmp 0x418c40
mov edx, dword [ebp + 0x18]
shl eax, 8
mov edx, dword [edx]
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418c7b
mov ecx, dword [ebp + 0x18]
mov dword [ecx], edx
jmp 0x418183
shl eax, 8
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418c7b
jmp 0x418c71
mov edx, dword [ebp + 0x18]
shl eax, 8
mov edx, dword [edx]
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418cac
mov ecx, dword [ebp + 0x18]
mov dword [ecx], edx
jmp 0x418077
shl eax, 8
movzx ecx, byte [edx]
or eax, ecx
inc edx
cmp eax, 0x800000
jb 0x418cac
jmp 0x418ca2
add eax, edx
shr eax, 1
mov byte [esp + 0x12], al
mov byte [esp + 0x13], 0
jmp 0x417b49
xor edx, edx
jmp 0x417ae9
mov dword [esp + 0x50], 0
add eax, edx
shr eax, 1
mov dword [esp + 0x48], eax
mov byte [esp + 0x2b], al
jmp 0x417aca
mov ecx, dword [ebp + 0x1c]
movzx eax, word [ecx + 0x1c]
movzx edx, word [ecx + 0x1e]
lea ecx, [esp + 0x10]
call fcn.00421120
mov ecx, dword [ebp + 0x1c]
movzx esi, byte [ecx + 0x23]
mov ebx, esi
shr ebx, 2
mov edx, esi
and ebx, 3
mov edi, esi
shr edx, 4
and edi, 3
shr esi, 6
and edx, 3
movzx eax, byte [esp + ebx + 0x10]
mov byte [esp + 0x1c], al
mov byte [esp + 0x18], al
movzx eax, byte [esp + esi + 0x10]
movzx ebx, byte [esp + edx + 0x10]
mov byte [esp + 0x1e], al
lea esi, [esp + 0x29]
movzx edx, byte [esi]
movzx eax, byte [esi + 1]
mov dword [esp + 0x54], edx
mov dword [esp + 0x4c], eax
movzx ecx, byte [esp + edi + 0x10]
movzx edx, byte [esi + 2]
movzx eax, byte [esi + 3]
mov byte [esp + 0x1f], bl
mov byte [esp + 0x1b], bl
lea ebx, [esp + 0x16]
mov byte [ebx], cl
mov byte [ebx + 3], cl
mov byte [ebx - 1], cl
movzx ebx, byte [ebx - 2]
mov dword [esp + 0x48], edx
mov dword [esp + 0x50], eax
jmp 0x417bc7