[XviD-devel] Please try again

chenm001 chenm001 at 163.com
Thu Jul 17 15:05:59 CEST 2003


------------------  Virus Warning Message (on salzburg)

Found virus WORM_KLEZ.H in file mbcoding.bat
The file is deleted.

UCD Virus scanner found virus.  Contact ithelp at ucdavis.edu with questions.

---------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://edu.bnhof.de/pipermail/xvid-devel/attachments/20030717/31dba065/attachment.htm
-------------- next part --------------

------------------  Virus Warning Message (on salzburg)

mbcoding.bat is removed from here because it contains a virus.

----------------------------------------------------------------------- next part --------------
Content-Type: application/octet-stream;
	name=mbcoding.c
Content-Transfer-Encoding: base64
Content-ID: <Wew3oR47118>

LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAqCiAqICBYVklEIE1QRUctNCBWSURFTyBDT0RF
QwogKiAgLSBNYWNybyBCbG9jayBjb2RpbmcgZnVuY3Rpb25zIC0KICoKICogIENvcHlyaWdo
dChDKSAyMDAyIE1pY2hhZWwgTWlsaXR6ZXIgPGlzaWJhYXJAeHZpZC5vcmc+CiAqCiAqICBU
aGlzIGZpbGUgaXMgcGFydCBvZiBYdmlELCBhIGZyZWUgTVBFRy00IHZpZGVvIGVuY29kZXIv
ZGVjb2RlcgogKgogKiAgWHZpRCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiAqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogKiAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IKICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqICBUaGlz
IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCiAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqICBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogIGFsb25n
IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CiAqICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z
dG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKICoKICogIFVuZGVyIHNlY3Rpb24gOCBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHRoZSBjb3B5cmlnaHQKICogIGhvbGRlcnMg
b2YgWFZJRCBleHBsaWNpdGx5IGZvcmJpZCBkaXN0cmlidXRpb24gaW4gdGhlIGZvbGxvd2lu
ZwogKiAgY291bnRyaWVzOgogKgogKiAgICAtIEphcGFuCiAqICAgIC0gVW5pdGVkIFN0YXRl
cyBvZiBBbWVyaWNhCiAqCiAqICBMaW5raW5nIFh2aUQgc3RhdGljYWxseSBvciBkeW5hbWlj
YWxseSB3aXRoIG90aGVyIG1vZHVsZXMgaXMgbWFraW5nIGEKICogIGNvbWJpbmVkIHdvcmsg
YmFzZWQgb24gWHZpRC4gIFRodXMsIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUK
ICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNvdmVyIHRoZSB3aG9sZSBjb21iaW5h
dGlvbi4KICoKICogIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSBjb3B5cmlnaHQgaG9s
ZGVycyBvZiBYdmlEIGdpdmUgeW91CiAqICBwZXJtaXNzaW9uIHRvIGxpbmsgWHZpRCB3aXRo
IGluZGVwZW5kZW50IG1vZHVsZXMgdGhhdCBjb21tdW5pY2F0ZSB3aXRoCiAqICBYdmlEIHNv
bGVseSB0aHJvdWdoIHRoZSBWRlcxLjEgYW5kIERTaG93IGludGVyZmFjZXMsIHJlZ2FyZGxl
c3Mgb2YgdGhlCiAqICBsaWNlbnNlIHRlcm1zIG9mIHRoZXNlIGluZGVwZW5kZW50IG1vZHVs
ZXMsIGFuZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlCiAqICB0aGUgcmVzdWx0aW5nIGNvbWJp
bmVkIHdvcmsgdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQKICog
IGV2ZXJ5IGNvcHkgb2YgdGhlIGNvbWJpbmVkIHdvcmsgaXMgYWNjb21wYW5pZWQgYnkgYSBj
b21wbGV0ZSBjb3B5IG9mCiAqICB0aGUgc291cmNlIGNvZGUgb2YgWHZpRCAodGhlIHZlcnNp
b24gb2YgWHZpRCB1c2VkIHRvIHByb2R1Y2UgdGhlCiAqICBjb21iaW5lZCB3b3JrKSwgYmVp
bmcgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbAogKiAg
UHVibGljIExpY2Vuc2UgcGx1cyB0aGlzIGV4Y2VwdGlvbi4gIEFuIGluZGVwZW5kZW50IG1v
ZHVsZSBpcyBhIG1vZHVsZQogKiAgd2hpY2ggaXMgbm90IGRlcml2ZWQgZnJvbSBvciBiYXNl
ZCBvbiBYdmlELgogKgogKiAgTm90ZSB0aGF0IHBlb3BsZSB3aG8gbWFrZSBtb2RpZmllZCB2
ZXJzaW9ucyBvZiBYdmlEIGFyZSBub3Qgb2JsaWdhdGVkCiAqICB0byBncmFudCB0aGlzIHNw
ZWNpYWwgZXhjZXB0aW9uIGZvciB0aGVpciBtb2RpZmllZCB2ZXJzaW9uczsgaXQgaXMKICog
IHRoZWlyIGNob2ljZSB3aGV0aGVyIHRvIGRvIHNvLiAgVGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGdpdmVzCiAqICBwZXJtaXNzaW9uIHRvIHJlbGVhc2UgYSBtb2RpZmllZCB2
ZXJzaW9uIHdpdGhvdXQgdGhpcyBleGNlcHRpb247IHRoaXMKICogIGV4Y2VwdGlvbiBhbHNv
IG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJlbGVhc2UgYSBtb2RpZmllZCB2ZXJzaW9uIHdoaWNo
CiAqICBjYXJyaWVzIGZvcndhcmQgdGhpcyBleGNlcHRpb24uCiAqCiAqICRJZDogbWJjb2Rp
bmcuYyx2IDEuNDEgMjAwMy8wMi8xMyAxNzozMTozMyBlZGdvbWV6IEV4cCAkCiAqCiAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLwoKI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSAiLi4v
cG9ydGFiLmgiCiNpbmNsdWRlICJiaXRzdHJlYW0uaCIKI2luY2x1ZGUgInppZ3phZy5oIgoj
aW5jbHVkZSAidmxjX2NvZGVzLmgiCiNpbmNsdWRlICJtYmNvZGluZy5oIgoKI2luY2x1ZGUg
Ii4uL3V0aWxzL21iZnVuY3Rpb25zLmgiCgojZGVmaW5lIEFCUyhYKSAoKChYKT4wKT8oWCk6
LShYKSkKI2RlZmluZSBDTElQKFgsQSkgKFggPiBBKSA/IChBKSA6IChYKQoKLyogI2RlZmlu
ZSBCSUdMVVQgKi8KCiNpZmRlZiBCSUdMVVQKI2RlZmluZSBMRVZFTE9GRlNFVCAyMDQ4CiNl
bHNlCiNkZWZpbmUgTEVWRUxPRkZTRVQgMzIKI2VuZGlmCgovKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKICogTG9jYWwgZGF0YQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnN0YXRpYyBS
RVZFUlNFX0VWRU5UIERDVDNEWzJdWzQwOTZdOwoKI2lmZGVmIEJJR0xVVApzdGF0aWMgVkxD
IGNvZWZmX1ZMQ1syXVsyXVs0MDk2XVs2NF07CnN0YXRpYyBWTEMgKmludHJhX3RhYmxlLCAq
aW50ZXJfdGFibGU7IAojZWxzZQpzdGF0aWMgVkxDIGNvZWZmX1ZMQ1syXVsyXVs2NF1bNjRd
OwojZW5kaWYKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBWZWN0b3IgTGVuZ3RoIENv
ZGluZyBJbml0aWFsaXphdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnZvaWQKaW5p
dF92bGNfdGFibGVzKHZvaWQpCnsKCXVpbnQzMl90IGksIGosIGludHJhLCBsYXN0LCBydW4s
ICBydW5fZXNjLCBsZXZlbCwgbGV2ZWxfZXNjLCBlc2NhcGUsIGVzY2FwZV9sZW4sIG9mZnNl
dDsKCiNpZmRlZiBCSUdMVVQKCWludHJhX3RhYmxlID0gKFZMQyopY29lZmZfVkxDWzFdOwoJ
aW50ZXJfdGFibGUgPSAoVkxDKiljb2VmZl9WTENbMF07IAojZW5kaWYKCgoJZm9yIChpbnRy
YSA9IDA7IGludHJhIDwgMjsgaW50cmErKykKCQlmb3IgKGkgPSAwOyBpIDwgNDA5NjsgaSsr
KQoJCQlEQ1QzRFtpbnRyYV1baV0uZXZlbnQubGV2ZWwgPSAwOwoKCWZvciAoaW50cmEgPSAw
OyBpbnRyYSA8IDI7IGludHJhKyspCgkJZm9yIChsYXN0ID0gMDsgbGFzdCA8IDI7IGxhc3Qr
KykKCQl7CgkJCWZvciAocnVuID0gMDsgcnVuIDwgNjMgKyBsYXN0OyBydW4rKykKCQkJCWZv
ciAobGV2ZWwgPSAwOyBsZXZlbCA8ICh1aW50MzJfdCkoMzIgPDwgaW50cmEpOyBsZXZlbCsr
KQoJCQkJewojaWZkZWYgQklHTFVUCgkJCQkJb2Zmc2V0ID0gTEVWRUxPRkZTRVQ7CiNlbHNl
CgkJCQkJb2Zmc2V0ID0gIWludHJhICogTEVWRUxPRkZTRVQ7CiNlbmRpZgoJCQkJCWNvZWZm
X1ZMQ1tpbnRyYV1bbGFzdF1bbGV2ZWwgKyBvZmZzZXRdW3J1bl0ubGVuID0gMTI4OwoJCQkJ
fQoJCX0KCglmb3IgKGludHJhID0gMDsgaW50cmEgPCAyOyBpbnRyYSsrKQoJCWZvciAoaSA9
IDA7IGkgPCAxMDI7IGkrKykKCQl7CiNpZmRlZiBCSUdMVVQKCQkJb2Zmc2V0ID0gTEVWRUxP
RkZTRVQ7CiNlbHNlCgkJCW9mZnNldCA9ICFpbnRyYSAqIExFVkVMT0ZGU0VUOwojZW5kaWYK
CQkJZm9yIChqID0gMDsgaiA8ICh1aW50MzJfdCkoMSA8PCAoMTIgLSBjb2VmZl90YWJbaW50
cmFdW2ldLnZsYy5sZW4pKTsgaisrKQoJCQl7CgkJCQlEQ1QzRFtpbnRyYV1bKGNvZWZmX3Rh
YltpbnRyYV1baV0udmxjLmNvZGUgPDwgKDEyIC0gY29lZmZfdGFiW2ludHJhXVtpXS52bGMu
bGVuKSkgfCBqXS5sZW4JID0gY29lZmZfdGFiW2ludHJhXVtpXS52bGMubGVuOwoJCQkJRENU
M0RbaW50cmFdWyhjb2VmZl90YWJbaW50cmFdW2ldLnZsYy5jb2RlIDw8ICgxMiAtIGNvZWZm
X3RhYltpbnRyYV1baV0udmxjLmxlbikpIHwgal0uZXZlbnQgPSBjb2VmZl90YWJbaW50cmFd
W2ldLmV2ZW50OwoJCQl9CgoJCQljb2VmZl9WTENbaW50cmFdW2NvZWZmX3RhYltpbnRyYV1b
aV0uZXZlbnQubGFzdF1bY29lZmZfdGFiW2ludHJhXVtpXS5ldmVudC5sZXZlbCArIG9mZnNl
dF1bY29lZmZfdGFiW2ludHJhXVtpXS5ldmVudC5ydW5dLmNvZGUKCQkJCT0gY29lZmZfdGFi
W2ludHJhXVtpXS52bGMuY29kZSA8PCAxOwoJCQljb2VmZl9WTENbaW50cmFdW2NvZWZmX3Rh
YltpbnRyYV1baV0uZXZlbnQubGFzdF1bY29lZmZfdGFiW2ludHJhXVtpXS5ldmVudC5sZXZl
bCArIG9mZnNldF1bY29lZmZfdGFiW2ludHJhXVtpXS5ldmVudC5ydW5dLmxlbgoJCQkJPSBj
b2VmZl90YWJbaW50cmFdW2ldLnZsYy5sZW4gKyAxOwojaWZuZGVmIEJJR0xVVAoJCQlpZiAo
IWludHJhKQojZW5kaWYKCQkJewoJCQkJY29lZmZfVkxDW2ludHJhXVtjb2VmZl90YWJbaW50
cmFdW2ldLmV2ZW50Lmxhc3RdW29mZnNldCAtIGNvZWZmX3RhYltpbnRyYV1baV0uZXZlbnQu
bGV2ZWxdW2NvZWZmX3RhYltpbnRyYV1baV0uZXZlbnQucnVuXS5jb2RlCgkJCQkJPSAoY29l
ZmZfdGFiW2ludHJhXVtpXS52bGMuY29kZSA8PCAxKSB8IDE7CgkJCQljb2VmZl9WTENbaW50
cmFdW2NvZWZmX3RhYltpbnRyYV1baV0uZXZlbnQubGFzdF1bb2Zmc2V0IC0gY29lZmZfdGFi
W2ludHJhXVtpXS5ldmVudC5sZXZlbF1bY29lZmZfdGFiW2ludHJhXVtpXS5ldmVudC5ydW5d
LmxlbgoJCQkJCT0gY29lZmZfdGFiW2ludHJhXVtpXS52bGMubGVuICsgMTsKCQkJfQoJCX0K
Cglmb3IgKGludHJhID0gMDsgaW50cmEgPCAyOyBpbnRyYSsrKQoJCWZvciAobGFzdCA9IDA7
IGxhc3QgPCAyOyBsYXN0KyspCgkJCWZvciAocnVuID0gMDsgcnVuIDwgNjMgKyBsYXN0OyBy
dW4rKykKCQkJewoJCQkJZm9yIChsZXZlbCA9IDE7IGxldmVsIDwgKHVpbnQzMl90KSgzMiA8
PCBpbnRyYSk7IGxldmVsKyspCgkJCQl7CgkJCQkJaWYgKGxldmVsIDw9IG1heF9sZXZlbFtp
bnRyYV1bbGFzdF1bcnVuXSAmJiBydW4gPD0gbWF4X3J1bltpbnRyYV1bbGFzdF1bbGV2ZWxd
KQoJCQkJCSAgICBjb250aW51ZTsKCiNpZmRlZiBCSUdMVVQKCQkJCQlvZmZzZXQgPSBMRVZF
TE9GRlNFVDsKI2Vsc2UKCQkJCQlvZmZzZXQgPSAhaW50cmEgKiBMRVZFTE9GRlNFVDsKI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgICAgbGV2ZWxfZXNjID0gbGV2ZWwgLSBtYXhfbGV2ZWxb
aW50cmFdW2xhc3RdW3J1bl07CgkJCQkJcnVuX2VzYyA9IHJ1biAtIDEgLSBtYXhfcnVuW2lu
dHJhXVtsYXN0XVtsZXZlbF07CgoJCQkJCWlmIChsZXZlbF9lc2MgPD0gbWF4X2xldmVsW2lu
dHJhXVtsYXN0XVtydW5dICYmIHJ1biA8PSBtYXhfcnVuW2ludHJhXVtsYXN0XVtsZXZlbF9l
c2NdKQoJCQkJCXsKCQkJCQkJZXNjYXBlICAgICA9IEVTQ0FQRTE7CgkJCQkJCWVzY2FwZV9s
ZW4gPSA3ICsgMTsKCQkJCQkJcnVuX2VzYyAgICA9IHJ1bjsKCQkJCQl9CgkJCQkJZWxzZQoJ
CQkJCXsKCQkJCQkJaWYgKHJ1bl9lc2MgPD0gbWF4X3J1bltpbnRyYV1bbGFzdF1bbGV2ZWxd
ICYmIGxldmVsIDw9IG1heF9sZXZlbFtpbnRyYV1bbGFzdF1bcnVuX2VzY10pCgkJCQkJCXsK
CQkJCQkJCWVzY2FwZSAgICAgPSBFU0NBUEUyOwoJCQkJCQkJZXNjYXBlX2xlbiA9IDcgKyAy
OwoJCQkJCQkJbGV2ZWxfZXNjICA9IGxldmVsOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJ
ewojaWZuZGVmIEJJR0xVVAoJCQkJCQkJaWYgKCFpbnRyYSkKI2VuZGlmCgkJCQkJCQl7CgkJ
CQkJCQkJY29lZmZfVkxDW2ludHJhXVtsYXN0XVtsZXZlbCArIG9mZnNldF1bcnVuXS5jb2Rl
CgkJCQkJCQkJCT0gKEVTQ0FQRTMgPDwgMjEpIHwgKGxhc3QgPDwgMjApIHwgKHJ1biA8PCAx
NCkgfCAoMSA8PCAxMykgfCAoKGxldmVsICYgMHhmZmYpIDw8IDEpIHwgMTsKCQkJCQkJCQlj
b2VmZl9WTENbaW50cmFdW2xhc3RdW2xldmVsICsgb2Zmc2V0XVtydW5dLmxlbiA9IDMwOwoJ
CQkJCQkJCQljb2VmZl9WTENbaW50cmFdW2xhc3RdW29mZnNldCAtIGxldmVsXVtydW5dLmNv
ZGUKCQkJCQkJCQkJPSAoRVNDQVBFMyA8PCAyMSkgfCAobGFzdCA8PCAyMCkgfCAocnVuIDw8
IDE0KSB8ICgxIDw8IDEzKSB8ICgoLWxldmVsICYgMHhmZmYpIDw8IDEpIHwgMTsKCQkJCQkJ
CQljb2VmZl9WTENbaW50cmFdW2xhc3RdW29mZnNldCAtIGxldmVsXVtydW5dLmxlbiA9IDMw
OwoJCQkJCQkJfQoJCQkJCQkJY29udGludWU7CgkJCQkJCX0KCQkJCQl9CgoJCQkJCWNvZWZm
X1ZMQ1tpbnRyYV1bbGFzdF1bbGV2ZWwgKyBvZmZzZXRdW3J1bl0uY29kZQoJCQkJCQk9IChl
c2NhcGUgPDwgY29lZmZfVkxDW2ludHJhXVtsYXN0XVtsZXZlbF9lc2MgKyBvZmZzZXRdW3J1
bl9lc2NdLmxlbikKCQkJCQkJfCAgY29lZmZfVkxDW2ludHJhXVtsYXN0XVtsZXZlbF9lc2Mg
KyBvZmZzZXRdW3J1bl9lc2NdLmNvZGU7CgkJCQkJY29lZmZfVkxDW2ludHJhXVtsYXN0XVts
ZXZlbCArIG9mZnNldF1bcnVuXS5sZW4KCQkJCQkJPSBjb2VmZl9WTENbaW50cmFdW2xhc3Rd
W2xldmVsX2VzYyArIG9mZnNldF1bcnVuX2VzY10ubGVuICsgZXNjYXBlX2xlbjsKI2lmbmRl
ZiBCSUdMVVQKCQkJCQlpZiAoIWludHJhKQojZW5kaWYKCQkJCQl7CgkJCQkJCWNvZWZmX1ZM
Q1tpbnRyYV1bbGFzdF1bb2Zmc2V0IC0gbGV2ZWxdW3J1bl0uY29kZQoJCQkJCQkJPSAoZXNj
YXBlIDw8IGNvZWZmX1ZMQ1tpbnRyYV1bbGFzdF1bbGV2ZWxfZXNjICsgb2Zmc2V0XVtydW5f
ZXNjXS5sZW4pCgkJCQkJCQl8ICBjb2VmZl9WTENbaW50cmFdW2xhc3RdW2xldmVsX2VzYyAr
IG9mZnNldF1bcnVuX2VzY10uY29kZSB8IDE7CgkJCQkJCWNvZWZmX1ZMQ1tpbnRyYV1bbGFz
dF1bb2Zmc2V0IC0gbGV2ZWxdW3J1bl0ubGVuCgkJCQkJCQk9IGNvZWZmX1ZMQ1tpbnRyYV1b
bGFzdF1bbGV2ZWxfZXNjICsgb2Zmc2V0XVtydW5fZXNjXS5sZW4gKyBlc2NhcGVfbGVuOwoJ
CQkJCX0KCQkJCX0KCiNpZmRlZiBCSUdMVVQKCQkJCWZvciAobGV2ZWwgPSAodWludDMyX3Qp
KDMyIDw8IGludHJhKTsgbGV2ZWwgPCAyMDQ4OyBsZXZlbCsrKQoJCQkJewoJCQkJCWNvZWZm
X1ZMQ1tpbnRyYV1bbGFzdF1bbGV2ZWwgKyBvZmZzZXRdW3J1bl0uY29kZQoJCQkJCQk9IChF
U0NBUEUzIDw8IDIxKSB8IChsYXN0IDw8IDIwKSB8IChydW4gPDwgMTQpIHwgKDEgPDwgMTMp
IHwgKChsZXZlbCAmIDB4ZmZmKSA8PCAxKSB8IDE7CgkJCQkJY29lZmZfVkxDW2ludHJhXVts
YXN0XVtsZXZlbCArIG9mZnNldF1bcnVuXS5sZW4gPSAzMDsKCgkJCQkJY29lZmZfVkxDW2lu
dHJhXVtsYXN0XVtvZmZzZXQgLSBsZXZlbF1bcnVuXS5jb2RlCgkJCQkJCT0gKEVTQ0FQRTMg
PDwgMjEpIHwgKGxhc3QgPDwgMjApIHwgKHJ1biA8PCAxNCkgfCAoMSA8PCAxMykgfCAoKC1s
ZXZlbCAmIDB4ZmZmKSA8PCAxKSB8IDE7CgkJCQkJY29lZmZfVkxDW2ludHJhXVtsYXN0XVtv
ZmZzZXQgLSBsZXZlbF1bcnVuXS5sZW4gPSAzMDsKCQkJCX0KI2Vsc2UKCQkJCWlmICghaW50
cmEpCgkJCQl7CgkJCQkJY29lZmZfVkxDW2ludHJhXVtsYXN0XVswXVtydW5dLmNvZGUKCQkJ
CQkJPSAoRVNDQVBFMyA8PCAyMSkgfCAobGFzdCA8PCAyMCkgfCAocnVuIDw8IDE0KSB8ICgx
IDw8IDEzKSB8ICgoLTMyICYgMHhmZmYpIDw8IDEpIHwgMTsKCQkJCQljb2VmZl9WTENbaW50
cmFdW2xhc3RdWzBdW3J1bl0ubGVuID0gMzA7CgkJCQl9CiNlbmRpZgoJCQl9CgoJLyogU2h1
dCB1cCB0aGUgY29tcGlsZXIgLS0gZ2NjIDMuMyBwcmUgcmVsZWFzZSAqLwoJaSA9IGRjX3Ro
cmVzaG9sZFswXTsKCn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBMb2NhbCBpbmxp
bmVkIGZ1bmN0aW9ucyBmb3IgTUIgY29kaW5nCiAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoK
c3RhdGljIF9faW5saW5lIHZvaWQKQ29kZVZlY3RvcihCaXRzdHJlYW0gKiBicywKCQkgICBp
bnQzMl90IHZhbHVlLAoJCSAgIGludDMyX3QgZl9jb2RlLAoJCSAgIFN0YXRpc3RpY3MgKiBw
U3RhdCkKewoKCWNvbnN0IGludCBzY2FsZV9mYWN0b3IgPSAxIDw8IChmX2NvZGUgLSAxKTsK
CWNvbnN0IGludCBjbXAgPSBzY2FsZV9mYWN0b3IgPDwgNTsKCglpZiAodmFsdWUgPCAoLTEg
KiBjbXApKQoJCXZhbHVlICs9IDY0ICogc2NhbGVfZmFjdG9yOwoKCWlmICh2YWx1ZSA+IChj
bXAgLSAxKSkKCQl2YWx1ZSAtPSA2NCAqIHNjYWxlX2ZhY3RvcjsKCglwU3RhdC0+aU12U3Vt
ICs9IHZhbHVlICogdmFsdWU7CglwU3RhdC0+aU12Q291bnQrKzsKCglpZiAodmFsdWUgPT0g
MCkgewoJCUJpdHN0cmVhbVB1dEJpdHMoYnMsIG1iX21vdGlvbl90YWJsZVszMl0uY29kZSwK
CQkJCQkJIG1iX21vdGlvbl90YWJsZVszMl0ubGVuKTsKCX0gZWxzZSB7CgkJdWludDE2X3Qg
bGVuZ3RoLCBjb2RlLCBtdl9yZXMsIHNpZ247CgoJCWxlbmd0aCA9IDE2IDw8IGZfY29kZTsK
CQlmX2NvZGUtLTsKCgkJc2lnbiA9ICh2YWx1ZSA8IDApOwoKCQlpZiAodmFsdWUgPj0gbGVu
Z3RoKQoJCQl2YWx1ZSAtPSAyICogbGVuZ3RoOwoJCWVsc2UgaWYgKHZhbHVlIDwgLWxlbmd0
aCkKCQkJdmFsdWUgKz0gMiAqIGxlbmd0aDsKCgkJaWYgKHNpZ24pCgkJCXZhbHVlID0gLXZh
bHVlOwoKCQl2YWx1ZS0tOwoJCW12X3JlcyA9IHZhbHVlICYgKCgxIDw8IGZfY29kZSkgLSAx
KTsKCQljb2RlID0gKCh2YWx1ZSAtIG12X3JlcykgPj4gZl9jb2RlKSArIDE7CgoJCWlmIChz
aWduKQoJCQljb2RlID0gLWNvZGU7CgoJCWNvZGUgKz0gMzI7CgkJQml0c3RyZWFtUHV0Qml0
cyhicywgbWJfbW90aW9uX3RhYmxlW2NvZGVdLmNvZGUsCgkJCQkJCSBtYl9tb3Rpb25fdGFi
bGVbY29kZV0ubGVuKTsKCgkJaWYgKGZfY29kZSkKCQkJQml0c3RyZWFtUHV0Qml0cyhicywg
bXZfcmVzLCBmX2NvZGUpOwoJfQoKfQoKI2lmZGVmIEJJR0xVVAoKc3RhdGljIF9faW5saW5l
IHZvaWQKQ29kZUNvZWZmKEJpdHN0cmVhbSAqIGJzLAoJCSAgY29uc3QgaW50MTZfdCBxY29l
ZmZbNjRdLAoJCSAgVkxDICogdGFibGUsCgkJICBjb25zdCB1aW50MTZfdCAqIHppZ3phZywK
CQkgIHVpbnQxNl90IGludHJhKQp7CgoJdWludDMyX3QgaiwgbGFzdDsKCXNob3J0IHY7CglW
TEMgKnZsYzsKCglqID0gaW50cmE7CglsYXN0ID0gaW50cmE7CgoJd2hpbGUgKGogPCA2NCAm
JiAodiA9IHFjb2VmZlt6aWd6YWdbal1dKSA9PSAwKQoJCWorKzsKCglkbyB7CgkJdmxjID0g
dGFibGUgKyA2NCAqIDIwNDggKyAodiA8PCA2KSArIGogLSBsYXN0OwoJCWxhc3QgPSArK2o7
CgoJCS8qIGNvdW50IHplcm9lcyAqLwoJCXdoaWxlIChqIDwgNjQgJiYgKHYgPSBxY29lZmZb
emlnemFnW2pdXSkgPT0gMCkKCQkJaisrOwoKCQkvKiB3cml0ZSBjb2RlICovCgkJaWYgKGog
IT0gNjQpIHsKCQkJQml0c3RyZWFtUHV0Qml0cyhicywgdmxjLT5jb2RlLCB2bGMtPmxlbik7
CgkJfSBlbHNlIHsKCQkJdmxjICs9IDY0ICogNDA5NjsKCQkJQml0c3RyZWFtUHV0Qml0cyhi
cywgdmxjLT5jb2RlLCB2bGMtPmxlbik7CgkJCWJyZWFrOwoJCX0KCX0gd2hpbGUgKDEpOwoK
fQoKI2Vsc2UKCnN0YXRpYyBfX2lubGluZSB2b2lkCkNvZGVDb2VmZkludGVyKEJpdHN0cmVh
bSAqIGJzLAoJCSAgY29uc3QgaW50MTZfdCBxY29lZmZbNjRdLAoJCSAgY29uc3QgdWludDE2
X3QgKiB6aWd6YWcpCnsKCXVpbnQzMl90IGksIHJ1biwgcHJldl9ydW4sIGNvZGUsIGxlbjsK
CWludDMyX3QgbGV2ZWwsIHByZXZfbGV2ZWwsIGxldmVsX3NoaWZ0ZWQ7CgoJaQk9IDA7Cgly
dW4gPSAwOwoKCXdoaWxlICghKGxldmVsID0gcWNvZWZmW3ppZ3phZ1tpKytdXSkpCgkJcnVu
Kys7CgoJcHJldl9sZXZlbCA9IGxldmVsOwoJcHJldl9ydW4gICA9IHJ1bjsKCXJ1biA9IDA7
CgoJd2hpbGUgKGkgPCA2NCkKCXsKCQlpZiAoKGxldmVsID0gcWNvZWZmW3ppZ3phZ1tpKytd
XSkgIT0gMCkKCQl7CgkJCWxldmVsX3NoaWZ0ZWQgPSBwcmV2X2xldmVsICsgMzI7CgkJCWlm
ICghKGxldmVsX3NoaWZ0ZWQgJiAtNjQpKQoJCQl7CgkJCQljb2RlID0gY29lZmZfVkxDWzBd
WzBdW2xldmVsX3NoaWZ0ZWRdW3ByZXZfcnVuXS5jb2RlOwoJCQkJbGVuCSA9IGNvZWZmX1ZM
Q1swXVswXVtsZXZlbF9zaGlmdGVkXVtwcmV2X3J1bl0ubGVuOwoJCQl9CgkJCWVsc2UKCQkJ
ewoJCQkJY29kZSA9IChFU0NBUEUzIDw8IDIxKSB8IChwcmV2X3J1biA8PCAxNCkgfCAoMSA8
PCAxMykgfCAoKHByZXZfbGV2ZWwgJiAweGZmZikgPDwgMSkgfCAxOwoJCQkJbGVuICA9IDMw
OwoJCQl9CgkJCUJpdHN0cmVhbVB1dEJpdHMoYnMsIGNvZGUsIGxlbik7CgkJCXByZXZfbGV2
ZWwgPSBsZXZlbDsKCQkJcHJldl9ydW4gICA9IHJ1bjsKCQkJcnVuID0gMDsKCQl9CgkJZWxz
ZQoJCQlydW4rKzsKCX0KCglsZXZlbF9zaGlmdGVkID0gcHJldl9sZXZlbCArIDMyOwoJaWYg
KCEobGV2ZWxfc2hpZnRlZCAmIC02NCkpCgl7CgkJY29kZSA9IGNvZWZmX1ZMQ1swXVsxXVts
ZXZlbF9zaGlmdGVkXVtwcmV2X3J1bl0uY29kZTsKCQlsZW4JID0gY29lZmZfVkxDWzBdWzFd
W2xldmVsX3NoaWZ0ZWRdW3ByZXZfcnVuXS5sZW47Cgl9CgllbHNlCgl7CgkJY29kZSA9IChF
U0NBUEUzIDw8IDIxKSB8ICgxIDw8IDIwKSB8IChwcmV2X3J1biA8PCAxNCkgfCAoMSA8PCAx
MykgfCAoKHByZXZfbGV2ZWwgJiAweGZmZikgPDwgMSkgfCAxOwoJCWxlbiAgPSAzMDsKCX0K
CUJpdHN0cmVhbVB1dEJpdHMoYnMsIGNvZGUsIGxlbik7Cn0KCnN0YXRpYyBfX2lubGluZSB2
b2lkCkNvZGVDb2VmZkludHJhKEJpdHN0cmVhbSAqIGJzLAoJCSAgY29uc3QgaW50MTZfdCBx
Y29lZmZbNjRdLAoJCSAgY29uc3QgdWludDE2X3QgKiB6aWd6YWcpCnsKCXVpbnQzMl90IGks
IGFic19sZXZlbCwgcnVuLCBwcmV2X3J1biwgY29kZSwgbGVuOwoJaW50MzJfdCBsZXZlbCwg
cHJldl9sZXZlbDsKCglpCT0gMTsKCXJ1biA9IDA7CgoJd2hpbGUgKCEobGV2ZWwgPSBxY29l
ZmZbemlnemFnW2krK11dKSkKCQlydW4rKzsKCglwcmV2X2xldmVsID0gbGV2ZWw7CglwcmV2
X3J1biAgID0gcnVuOwoJcnVuID0gMDsKCgl3aGlsZSAoaSA8IDY0KQoJewoJCWlmICgobGV2
ZWwgPSBxY29lZmZbemlnemFnW2krK11dKSAhPSAwKQoJCXsKCQkJYWJzX2xldmVsID0gQUJT
KHByZXZfbGV2ZWwpOwoJCQlhYnNfbGV2ZWwgPSBhYnNfbGV2ZWwgPCA2NCA/IGFic19sZXZl
bCA6IDA7CgkJCWNvZGUJICA9IGNvZWZmX1ZMQ1sxXVswXVthYnNfbGV2ZWxdW3ByZXZfcnVu
XS5jb2RlOwoJCQlsZW4JCSAgPSBjb2VmZl9WTENbMV1bMF1bYWJzX2xldmVsXVtwcmV2X3J1
bl0ubGVuOwoJCQlpZiAobGVuICE9IDEyOCkKCQkJCWNvZGUgfD0gKHByZXZfbGV2ZWwgPCAw
KTsKCQkJZWxzZQoJCQl7CgkJICAgICAgICBjb2RlID0gKEVTQ0FQRTMgPDwgMjEpIHwgKHBy
ZXZfcnVuIDw8IDE0KSB8ICgxIDw8IDEzKSB8ICgocHJldl9sZXZlbCAmIDB4ZmZmKSA8PCAx
KSB8IDE7CgkJCQlsZW4gID0gMzA7CgkJCX0KCQkJQml0c3RyZWFtUHV0Qml0cyhicywgY29k
ZSwgbGVuKTsKCQkJcHJldl9sZXZlbCA9IGxldmVsOwoJCQlwcmV2X3J1biAgID0gcnVuOwoJ
CQlydW4gPSAwOwoJCX0KCQllbHNlCgkJCXJ1bisrOwoJfQoKCWFic19sZXZlbCA9IEFCUyhw
cmV2X2xldmVsKTsKCWFic19sZXZlbCA9IGFic19sZXZlbCA8IDY0ID8gYWJzX2xldmVsIDog
MDsKCWNvZGUJICA9IGNvZWZmX1ZMQ1sxXVsxXVthYnNfbGV2ZWxdW3ByZXZfcnVuXS5jb2Rl
OwoJbGVuCQkgID0gY29lZmZfVkxDWzFdWzFdW2Fic19sZXZlbF1bcHJldl9ydW5dLmxlbjsK
CWlmIChsZW4gIT0gMTI4KQoJCWNvZGUgfD0gKHByZXZfbGV2ZWwgPCAwKTsKCWVsc2UKCXsK
CQljb2RlID0gKEVTQ0FQRTMgPDwgMjEpIHwgKDEgPDwgMjApIHwgKHByZXZfcnVuIDw8IDE0
KSB8ICgxIDw8IDEzKSB8ICgocHJldl9sZXZlbCAmIDB4ZmZmKSA8PCAxKSB8IDE7CgkJbGVu
ICA9IDMwOwoJfQoJQml0c3RyZWFtUHV0Qml0cyhicywgY29kZSwgbGVuKTsKfQoKI2VuZGlm
CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKICogTG9jYWwgZnVuY3Rpb25zCiAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqLwoKc3RhdGljIHZvaWQKQ29kZUJsb2NrSW50cmEoY29uc3QgRlJB
TUVJTkZPICogZnJhbWUsCgkJCSAgIGNvbnN0IE1BQ1JPQkxPQ0sgKiBwTUIsCgkJCSAgIGlu
dDE2X3QgcWNvZWZmWzYgKiA2NF0sCgkJCSAgIEJpdHN0cmVhbSAqIGJzLAoJCQkgICBTdGF0
aXN0aWNzICogcFN0YXQpCnsKCgl1aW50MzJfdCBpLCBtY2JwYywgY2JweSwgYml0czsKCglj
YnB5ID0gcE1CLT5jYnAgPj4gMjsKCgkvKiB3cml0ZSBtY2JwYyAqLwoJaWYgKGZyYW1lLT5j
b2RpbmdfdHlwZSA9PSBJX1ZPUCkgewoJCW1jYnBjID0gKChwTUItPm1vZGUgPj4gMSkgJiAz
KSB8ICgocE1CLT5jYnAgJiAzKSA8PCAyKTsKCQlCaXRzdHJlYW1QdXRCaXRzKGJzLCBtY2Jw
Y19pbnRyYV90YWJbbWNicGNdLmNvZGUsCgkJCQkJCSBtY2JwY19pbnRyYV90YWJbbWNicGNd
Lmxlbik7Cgl9IGVsc2UgewoJCW1jYnBjID0gKHBNQi0+bW9kZSAmIDcpIHwgKChwTUItPmNi
cCAmIDMpIDw8IDMpOwoJCUJpdHN0cmVhbVB1dEJpdHMoYnMsIG1jYnBjX2ludGVyX3RhYltt
Y2JwY10uY29kZSwKCQkJCQkJIG1jYnBjX2ludGVyX3RhYlttY2JwY10ubGVuKTsKCX0KCgkv
KiBhYyBwcmVkaWN0aW9uIGZsYWcgKi8KCWlmIChwTUItPmFjcHJlZF9kaXJlY3Rpb25zWzBd
KQoJCUJpdHN0cmVhbVB1dEJpdHMoYnMsIDEsIDEpOwoJZWxzZQoJCUJpdHN0cmVhbVB1dEJp
dHMoYnMsIDAsIDEpOwoKCS8qIHdyaXRlIGNicHkgKi8KCUJpdHN0cmVhbVB1dEJpdHMoYnMs
IGNicHlfdGFiW2NicHldLmNvZGUsIGNicHlfdGFiW2NicHldLmxlbik7CgoJLyogd3JpdGUg
ZHF1YW50ICovCglpZiAocE1CLT5tb2RlID09IE1PREVfSU5UUkFfUSkKCQlCaXRzdHJlYW1Q
dXRCaXRzKGJzLCBwTUItPmRxdWFudCwgMik7CgoJLyogd3JpdGUgaW50ZXJsYWNpbmcgKi8K
CWlmIChmcmFtZS0+Z2xvYmFsX2ZsYWdzICYgWFZJRF9JTlRFUkxBQ0lORykgewoJCUJpdHN0
cmVhbVB1dEJpdChicywgcE1CLT5maWVsZF9kY3QpOwoJfQoJLyogY29kZSBibG9jayBjb2Vm
ZnMgKi8KCWZvciAoaSA9IDA7IGkgPCA2OyBpKyspIHsKCQlpZiAoaSA8IDQpCgkJCUJpdHN0
cmVhbVB1dEJpdHMoYnMsIGRjeV90YWJbcWNvZWZmW2kgKiA2NCArIDBdICsgMjU1XS5jb2Rl
LAoJCQkJCQkJIGRjeV90YWJbcWNvZWZmW2kgKiA2NCArIDBdICsgMjU1XS5sZW4pOwoJCWVs
c2UKCQkJQml0c3RyZWFtUHV0Qml0cyhicywgZGNjX3RhYltxY29lZmZbaSAqIDY0ICsgMF0g
KyAyNTVdLmNvZGUsCgkJCQkJCQkgZGNjX3RhYltxY29lZmZbaSAqIDY0ICsgMF0gKyAyNTVd
Lmxlbik7CgoJCWlmIChwTUItPmNicCAmICgxIDw8ICg1IC0gaSkpKSB7CgkJCWJpdHMgPSBC
aXRzdHJlYW1Qb3MoYnMpOwoKI2lmZGVmIEJJR0xVVAoJCQlDb2RlQ29lZmYoYnMsICZxY29l
ZmZbaSAqIDY0XSwgaW50cmFfdGFibGUsCgkJCQkJICBzY2FuX3RhYmxlc1twTUItPmFjcHJl
ZF9kaXJlY3Rpb25zW2ldXSwgMSk7CiNlbHNlCgkJCUNvZGVDb2VmZkludHJhKGJzLCAmcWNv
ZWZmW2kgKiA2NF0sIHNjYW5fdGFibGVzW3BNQi0+YWNwcmVkX2RpcmVjdGlvbnNbaV1dKTsK
I2VuZGlmCgkJCWJpdHMgPSBCaXRzdHJlYW1Qb3MoYnMpIC0gYml0czsKCQkJcFN0YXQtPmlU
ZXh0Qml0cyArPSBiaXRzOwoJCX0KCX0KCn0KCgpzdGF0aWMgdm9pZApDb2RlQmxvY2tJbnRl
cihjb25zdCBGUkFNRUlORk8gKiBmcmFtZSwKCQkJICAgY29uc3QgTUFDUk9CTE9DSyAqIHBN
QiwKCQkJICAgaW50MTZfdCBxY29lZmZbNiAqIDY0XSwKCQkJICAgQml0c3RyZWFtICogYnMs
CgkJCSAgIFN0YXRpc3RpY3MgKiBwU3RhdCkKewoKCWludDMyX3QgaTsKCXVpbnQzMl90IGJp
dHMsIG1jYnBjLCBjYnB5OwoKCW1jYnBjID0gKHBNQi0+bW9kZSAmIDcpIHwgKChwTUItPmNi
cCAmIDMpIDw8IDMpOwoJY2JweSA9IDE1IC0gKHBNQi0+Y2JwID4+IDIpOwoKCS8qIHdyaXRl
IG1jYnBjICovCglCaXRzdHJlYW1QdXRCaXRzKGJzLCBtY2JwY19pbnRlcl90YWJbbWNicGNd
LmNvZGUsCgkJCQkJIG1jYnBjX2ludGVyX3RhYlttY2JwY10ubGVuKTsKCgkvKiB3cml0ZSBj
YnB5ICovCglCaXRzdHJlYW1QdXRCaXRzKGJzLCBjYnB5X3RhYltjYnB5XS5jb2RlLCBjYnB5
X3RhYltjYnB5XS5sZW4pOwoKCS8qIHdyaXRlIGRxdWFudCAqLwoJaWYgKHBNQi0+bW9kZSA9
PSBNT0RFX0lOVEVSX1EpCgkJQml0c3RyZWFtUHV0Qml0cyhicywgcE1CLT5kcXVhbnQsIDIp
OwoKCS8qIGludGVybGFjaW5nICovCglpZiAoZnJhbWUtPmdsb2JhbF9mbGFncyAmIFhWSURf
SU5URVJMQUNJTkcpIHsKCQlpZiAocE1CLT5jYnApIHsKCQkJQml0c3RyZWFtUHV0Qml0KGJz
LCBwTUItPmZpZWxkX2RjdCk7CgkJCURQUklOVEYoRFBSSU5URl9ERUJVRywgImNvZGVwOiBm
aWVsZF9kY3Q6ICVkIiwgcE1CLT5maWVsZF9kY3QpOwoJCX0KCgkJLyogaWYgaW50ZXIgYmxv
Y2ssIHdyaXRlIGZpZWxkIE1FIGZsYWcgKi8KCQlpZiAocE1CLT5tb2RlID09IE1PREVfSU5U
RVIgfHwgcE1CLT5tb2RlID09IE1PREVfSU5URVJfUSkgewoJCQlCaXRzdHJlYW1QdXRCaXQo
YnMsIHBNQi0+ZmllbGRfcHJlZCk7CgkJCURQUklOVEYoRFBSSU5URl9ERUJVRywgImNvZGVw
OiBmaWVsZF9wcmVkOiAlZCIsIHBNQi0+ZmllbGRfcHJlZCk7CgoJCQkvKiB3cml0ZSBmaWVs
ZCBwcmVkaWN0aW9uIHJlZmVyZW5jZXMgKi8KCQkJaWYgKHBNQi0+ZmllbGRfcHJlZCkgewoJ
CQkJQml0c3RyZWFtUHV0Qml0KGJzLCBwTUItPmZpZWxkX2Zvcl90b3ApOwoJCQkJQml0c3Ry
ZWFtUHV0Qml0KGJzLCBwTUItPmZpZWxkX2Zvcl9ib3QpOwoJCQl9CgkJfQoJfQoJLyogY29k
ZSBtb3Rpb24gdmVjdG9yKHMpICovCglmb3IgKGkgPSAwOyBpIDwgKHBNQi0+bW9kZSA9PSBN
T0RFX0lOVEVSNFYgPyA0IDogMSk7IGkrKykgewoJCUNvZGVWZWN0b3IoYnMsIHBNQi0+cG12
c1tpXS54LCBmcmFtZS0+ZmNvZGUsIHBTdGF0KTsKCQlDb2RlVmVjdG9yKGJzLCBwTUItPnBt
dnNbaV0ueSwgZnJhbWUtPmZjb2RlLCBwU3RhdCk7Cgl9CgoJYml0cyA9IEJpdHN0cmVhbVBv
cyhicyk7CgoJLyogY29kZSBibG9jayBjb2VmZnMgKi8KCWZvciAoaSA9IDA7IGkgPCA2OyBp
KyspCgkJaWYgKHBNQi0+Y2JwICYgKDEgPDwgKDUgLSBpKSkpCiNpZmRlZiBCSUdMVVQKCQkJ
Q29kZUNvZWZmKGJzLCAmcWNvZWZmW2kgKiA2NF0sIGludGVyX3RhYmxlLCBzY2FuX3RhYmxl
c1swXSwgMCk7CiNlbHNlCgkJCUNvZGVDb2VmZkludGVyKGJzLCAmcWNvZWZmW2kgKiA2NF0s
IHNjYW5fdGFibGVzWzBdKTsKI2VuZGlmCgoJYml0cyA9IEJpdHN0cmVhbVBvcyhicykgLSBi
aXRzOwoJcFN0YXQtPmlUZXh0Qml0cyArPSBiaXRzOwoKfQoKLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqIE1hY3JvIEJsb2NrIGJpdHN0cmVhbSBlbmNvZGluZyBmdW5jdGlvbnMKICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiovCgp2b2lkCk1CQ29kaW5nKGNvbnN0IEZSQU1FSU5GTyAq
IGZyYW1lLAoJCSBNQUNST0JMT0NLICogcE1CLAoJCSBpbnQxNl90IHFjb2VmZls2ICogNjRd
LAoJCSBCaXRzdHJlYW0gKiBicywKCQkgU3RhdGlzdGljcyAqIHBTdGF0KQp7CgoJaWYgKGZy
YW1lLT5jb2RpbmdfdHlwZSA9PSBQX1ZPUCkgewoJCQlCaXRzdHJlYW1QdXRCaXQoYnMsIDAp
OwkvKiBjb2RlZCAqLwoJfQoKCWlmIChwTUItPm1vZGUgPT0gTU9ERV9JTlRSQSB8fCBwTUIt
Pm1vZGUgPT0gTU9ERV9JTlRSQV9RKQoJCUNvZGVCbG9ja0ludHJhKGZyYW1lLCBwTUIsIHFj
b2VmZiwgYnMsIHBTdGF0KTsKCWVsc2UKCQlDb2RlQmxvY2tJbnRlcihmcmFtZSwgcE1CLCBx
Y29lZmYsIGJzLCBwU3RhdCk7Cgp9CgoKdm9pZApNQlNraXAoQml0c3RyZWFtICogYnMpCnsK
CUJpdHN0cmVhbVB1dEJpdChicywgMSk7CS8qIG5vdCBjb2RlZCAqLwoJcmV0dXJuOwp9Cgov
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKICogZGVjb2Rpbmcgc3R1ZmYgc3RhcnRzIGhlcmUK
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBGb3IgSVZPUCBhZGRiaXRzID09IDAK
ICogRm9yIFBWT1AgYWRkYml0cyA9PSBmY29kZSAtIDEKICogRm9yIEJWT1AgYWRkYml0cyA9
PSBtYXgoZmNvZGUsYmNvZGUpIC0gMQogKiByZXR1cm5zIHRydWUgb3IgZmFsc2UKICovCgpp
bnQgCmNoZWNrX3Jlc3luY19tYXJrZXIoQml0c3RyZWFtICogYnMsIGludCBhZGRiaXRzKQp7
Cgl1aW50MzJfdCBuYml0czsKCXVpbnQzMl90IGNvZGU7Cgl1aW50MzJfdCBuYml0c3Jlc3lu
Y21hcmtlciA9IE5VTUJJVFNfVlBfUkVTWU5DX01BUktFUiArIGFkZGJpdHM7CgoJbmJpdHMg
PSBCaXRzdHJlYW1OdW1CaXRzVG9CeXRlQWxpZ24oYnMpOwoJY29kZSA9IEJpdHN0cmVhbVNo
b3dCaXRzKGJzLCBuYml0cyk7CgoJaWYgKGNvZGUgPT0gKCgodWludDMyX3QpMSA8PCAobmJp
dHMgLSAxKSkgLSAxKSkKCXsKCQlyZXR1cm4gQml0c3RyZWFtU2hvd0JpdHNGcm9tQnl0ZUFs
aWduKGJzLCBuYml0c3Jlc3luY21hcmtlcikgPT0gUkVTWU5DX01BUktFUjsKCX0KCglyZXR1
cm4gMDsKfQoKCgppbnQKZ2V0X21jYnBjX2ludHJhKEJpdHN0cmVhbSAqIGJzKQp7CgoJdWlu
dDMyX3QgaW5kZXg7CgoJaW5kZXggPSBCaXRzdHJlYW1TaG93Qml0cyhicywgOSk7CglpbmRl
eCA+Pj0gMzsKCglCaXRzdHJlYW1Ta2lwKGJzLCBtY2JwY19pbnRyYV90YWJsZVtpbmRleF0u
bGVuKTsKCglyZXR1cm4gbWNicGNfaW50cmFfdGFibGVbaW5kZXhdLmNvZGU7Cgp9CgppbnQK
Z2V0X21jYnBjX2ludGVyKEJpdHN0cmVhbSAqIGJzKQp7CgoJdWludDMyX3QgaW5kZXg7CgkK
CWluZGV4ID0gQ0xJUChCaXRzdHJlYW1TaG93Qml0cyhicywgOSksIDI1Nik7CgoJQml0c3Ry
ZWFtU2tpcChicywgbWNicGNfaW50ZXJfdGFibGVbaW5kZXhdLmxlbik7CgoJcmV0dXJuIG1j
YnBjX2ludGVyX3RhYmxlW2luZGV4XS5jb2RlOwoKfQoKaW50CmdldF9jYnB5KEJpdHN0cmVh
bSAqIGJzLAoJCSBpbnQgaW50cmEpCnsKCglpbnQgY2JweTsKCXVpbnQzMl90IGluZGV4ID0g
Qml0c3RyZWFtU2hvd0JpdHMoYnMsIDYpOwoKCUJpdHN0cmVhbVNraXAoYnMsIGNicHlfdGFi
bGVbaW5kZXhdLmxlbik7CgljYnB5ID0gY2JweV90YWJsZVtpbmRleF0uY29kZTsKCglpZiAo
IWludHJhKQoJCWNicHkgPSAxNSAtIGNicHk7CgoJcmV0dXJuIGNicHk7Cgp9CgppbnQKZ2V0
X212X2RhdGEoQml0c3RyZWFtICogYnMpCnsKCgl1aW50MzJfdCBpbmRleDsKCglpZiAoQml0
c3RyZWFtR2V0Qml0KGJzKSkKCQlyZXR1cm4gMDsKCglpbmRleCA9IEJpdHN0cmVhbVNob3dC
aXRzKGJzLCAxMik7CgoJaWYgKGluZGV4ID49IDUxMikgewoJCWluZGV4ID0gKGluZGV4ID4+
IDgpIC0gMjsKCQlCaXRzdHJlYW1Ta2lwKGJzLCBUTU5NVnRhYjBbaW5kZXhdLmxlbik7CgkJ
cmV0dXJuIFRNTk1WdGFiMFtpbmRleF0uY29kZTsKCX0KCglpZiAoaW5kZXggPj0gMTI4KSB7
CgkJaW5kZXggPSAoaW5kZXggPj4gMikgLSAzMjsKCQlCaXRzdHJlYW1Ta2lwKGJzLCBUTU5N
VnRhYjFbaW5kZXhdLmxlbik7CgkJcmV0dXJuIFRNTk1WdGFiMVtpbmRleF0uY29kZTsKCX0K
CglpbmRleCAtPSA0OwoKCUJpdHN0cmVhbVNraXAoYnMsIFRNTk1WdGFiMltpbmRleF0ubGVu
KTsKCXJldHVybiBUTU5NVnRhYjJbaW5kZXhdLmNvZGU7Cgp9CgppbnQKZ2V0X212KEJpdHN0
cmVhbSAqIGJzLAoJICAgaW50IGZjb2RlKQp7CgoJaW50IGRhdGE7CglpbnQgcmVzOwoJaW50
IG12OwoJaW50IHNjYWxlX2ZhYyA9IDEgPDwgKGZjb2RlIC0gMSk7CgoJZGF0YSA9IGdldF9t
dl9kYXRhKGJzKTsKCglpZiAoc2NhbGVfZmFjID09IDEgfHwgZGF0YSA9PSAwKQoJCXJldHVy
biBkYXRhOwoKCXJlcyA9IEJpdHN0cmVhbUdldEJpdHMoYnMsIGZjb2RlIC0gMSk7CgltdiA9
ICgoQUJTKGRhdGEpIC0gMSkgKiBzY2FsZV9mYWMpICsgcmVzICsgMTsKCglyZXR1cm4gZGF0
YSA8IDAgPyAtbXYgOiBtdjsKCn0KCmludApnZXRfZGNfZGlmKEJpdHN0cmVhbSAqIGJzLAoJ
CSAgIHVpbnQzMl90IGRjX3NpemUpCnsKCglpbnQgY29kZSA9IEJpdHN0cmVhbUdldEJpdHMo
YnMsIGRjX3NpemUpOwoJaW50IG1zYiA9IGNvZGUgPj4gKGRjX3NpemUgLSAxKTsKCglpZiAo
bXNiID09IDApCgkJcmV0dXJuICgtMSAqIChjb2RlIF4gKCgxIDw8IGRjX3NpemUpIC0gMSkp
KTsKCglyZXR1cm4gY29kZTsKCn0KCmludApnZXRfZGNfc2l6ZV9sdW0oQml0c3RyZWFtICog
YnMpCnsKCglpbnQgY29kZSwgaTsKCgljb2RlID0gQml0c3RyZWFtU2hvd0JpdHMoYnMsIDEx
KTsKCglmb3IgKGkgPSAxMTsgaSA+IDM7IGktLSkgewoJCWlmIChjb2RlID09IDEpIHsKCQkJ
Qml0c3RyZWFtU2tpcChicywgaSk7CgkJCXJldHVybiBpICsgMTsKCQl9CgkJY29kZSA+Pj0g
MTsKCX0KCglCaXRzdHJlYW1Ta2lwKGJzLCBkY19sdW1fdGFiW2NvZGVdLmxlbik7CglyZXR1
cm4gZGNfbHVtX3RhYltjb2RlXS5jb2RlOwoKfQoKCmludApnZXRfZGNfc2l6ZV9jaHJvbShC
aXRzdHJlYW0gKiBicykKewoKCXVpbnQzMl90IGNvZGUsIGk7CgoJY29kZSA9IEJpdHN0cmVh
bVNob3dCaXRzKGJzLCAxMik7CgoJZm9yIChpID0gMTI7IGkgPiAyOyBpLS0pIHsKCQlpZiAo
Y29kZSA9PSAxKSB7CgkJCUJpdHN0cmVhbVNraXAoYnMsIGkpOwoJCQlyZXR1cm4gaTsKCQl9
CgkJY29kZSA+Pj0gMTsKCX0KCglyZXR1cm4gMyAtIEJpdHN0cmVhbUdldEJpdHMoYnMsIDIp
OwoKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIExvY2FsIGlubGluZWQgZnVuY3Rp
b24gdG8gImRlY29kZSIgd3JpdHRlbiB2bGMgY29kZXMKICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCgpzdGF0aWMgX19pbmxpbmUgaW50CmdldF9jb2VmZihCaXRzdHJlYW0gKiBicywKCQkg
IGludCAqcnVuLAoJCSAgaW50ICpsYXN0LAoJCSAgaW50IGludHJhLAoJCSAgaW50IHNob3J0
X3ZpZGVvX2hlYWRlcikKewoKCXVpbnQzMl90IG1vZGU7CglpbnQzMl90IGxldmVsOwoJUkVW
RVJTRV9FVkVOVCAqcmV2ZXJzZV9ldmVudDsKCglpZiAoc2hvcnRfdmlkZW9faGVhZGVyKQkJ
LyogaW50ZXItVkxDcyB3aWxsIGJlIHVzZWQgZm9yIGJvdGggaW50cmEgYW5kIGludGVyIGJs
b2NrcyAqLwoJCWludHJhID0gMDsKCglpZiAoQml0c3RyZWFtU2hvd0JpdHMoYnMsIDcpICE9
IEVTQ0FQRSkgewoJCXJldmVyc2VfZXZlbnQgPSAmRENUM0RbaW50cmFdW0JpdHN0cmVhbVNo
b3dCaXRzKGJzLCAxMildOwoKCQlpZiAoKGxldmVsID0gcmV2ZXJzZV9ldmVudC0+ZXZlbnQu
bGV2ZWwpID09IDApCgkJCWdvdG8gZXJyb3I7CgoJCSpsYXN0ID0gcmV2ZXJzZV9ldmVudC0+
ZXZlbnQubGFzdDsKCQkqcnVuICA9IHJldmVyc2VfZXZlbnQtPmV2ZW50LnJ1bjsKCgkJQml0
c3RyZWFtU2tpcChicywgcmV2ZXJzZV9ldmVudC0+bGVuKTsKCgkJcmV0dXJuIEJpdHN0cmVh
bUdldEJpdHMoYnMsIDEpID8gLWxldmVsIDogbGV2ZWw7Cgl9CgoJQml0c3RyZWFtU2tpcChi
cywgNyk7CgoJaWYgKHNob3J0X3ZpZGVvX2hlYWRlcikgewoJCS8qIGVzY2FwZSBtb2RlIDQg
LSBILjI2MyB0eXBlLCBvbmx5IHVzZWQgaWYgc2hvcnRfdmlkZW9faGVhZGVyID0gMSAgKi8K
CQkqbGFzdCA9IEJpdHN0cmVhbUdldEJpdChicyk7CgkJKnJ1biA9IEJpdHN0cmVhbUdldEJp
dHMoYnMsIDYpOwoJCWxldmVsID0gQml0c3RyZWFtR2V0Qml0cyhicywgOCk7CgoJCWlmIChs
ZXZlbCA9PSAwIHx8IGxldmVsID09IDEyOCkKCQkJRFBSSU5URihEUFJJTlRGX0VSUk9SLCAi
SWxsZWdhbCBMRVZFTCBmb3IgRVNDQVBFIG1vZGUgNDogJWQiLCBsZXZlbCk7CgoJCXJldHVy
biAobGV2ZWwgPDwgMjQpID4+IDI0OwoJfQoKCW1vZGUgPSBCaXRzdHJlYW1TaG93Qml0cyhi
cywgMik7CgoJaWYgKG1vZGUgPCAzKSB7CgkJQml0c3RyZWFtU2tpcChicywgKG1vZGUgPT0g
MikgPyAyIDogMSk7CgoJCXJldmVyc2VfZXZlbnQgPSAmRENUM0RbaW50cmFdW0JpdHN0cmVh
bVNob3dCaXRzKGJzLCAxMildOwoKCQlpZiAoKGxldmVsID0gcmV2ZXJzZV9ldmVudC0+ZXZl
bnQubGV2ZWwpID09IDApCgkJCWdvdG8gZXJyb3I7CgoJCSpsYXN0ID0gcmV2ZXJzZV9ldmVu
dC0+ZXZlbnQubGFzdDsKCQkqcnVuICA9IHJldmVyc2VfZXZlbnQtPmV2ZW50LnJ1bjsKCgkJ
Qml0c3RyZWFtU2tpcChicywgcmV2ZXJzZV9ldmVudC0+bGVuKTsKCgkJaWYgKG1vZGUgPCAy
KQkJCS8qIGZpcnN0IGVzY2FwZSBtb2RlLCBsZXZlbCBpcyBvZmZzZXQgKi8KCQkJbGV2ZWwg
Kz0gbWF4X2xldmVsW2ludHJhXVsqbGFzdF1bKnJ1bl07CgkJZWxzZQkJCQkJLyogc2Vjb25k
IGVzY2FwZSBtb2RlLCBydW4gaXMgb2Zmc2V0ICovCgkJCSpydW4gKz0gbWF4X3J1bltpbnRy
YV1bKmxhc3RdW2xldmVsXSArIDE7CgoJCXJldHVybiBCaXRzdHJlYW1HZXRCaXRzKGJzLCAx
KSA/IC1sZXZlbCA6IGxldmVsOwoJfQoKCS8qIHRoaXJkIGVzY2FwZSBtb2RlIC0gZml4ZWQg
bGVuZ3RoIGNvZGVzICovCglCaXRzdHJlYW1Ta2lwKGJzLCAyKTsKCSpsYXN0ID0gQml0c3Ry
ZWFtR2V0Qml0cyhicywgMSk7CgkqcnVuID0gQml0c3RyZWFtR2V0Qml0cyhicywgNik7CglC
aXRzdHJlYW1Ta2lwKGJzLCAxKTsJCS8qIG1hcmtlciAqLwoJbGV2ZWwgPSBCaXRzdHJlYW1H
ZXRCaXRzKGJzLCAxMik7CglCaXRzdHJlYW1Ta2lwKGJzLCAxKTsJCS8qIG1hcmtlciAqLwoK
CXJldHVybiAobGV2ZWwgPDwgMjApID4+IDIwOwoKICBlcnJvcjoKCSpydW4gPSBWTENfRVJS
T1I7CglyZXR1cm4gMDsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIE1CIHJlYWRp
bmcgZnVuY3Rpb25zCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKdm9pZApnZXRfaW50cmFf
YmxvY2soQml0c3RyZWFtICogYnMsCgkJCQlpbnQxNl90ICogYmxvY2ssCgkJCQlpbnQgZGly
ZWN0aW9uLAoJCQkJaW50IGNvZWZmKQp7CgoJY29uc3QgdWludDE2X3QgKnNjYW4gPSBzY2Fu
X3RhYmxlc1tkaXJlY3Rpb25dOwoJaW50IGxldmVsOwoJaW50IHJ1bjsKCWludCBsYXN0OwoK
CWRvIHsKCQlsZXZlbCA9IGdldF9jb2VmZihicywgJnJ1biwgJmxhc3QsIDEsIDApOwoJCWlm
IChydW4gPT0gLTEpIHsKCQkJRFBSSU5URihEUFJJTlRGX0RFQlVHLCAiZmF0YWw6IGludmFs
aWQgcnVuIik7CgkJCWJyZWFrOwoJCX0KCQljb2VmZiArPSBydW47CgkJYmxvY2tbc2Nhbltj
b2VmZl1dID0gbGV2ZWw7CgoJCURQUklOVEYoRFBSSU5URl9DT0VGRiwiYmxvY2tbJWldICVp
Iiwgc2Nhbltjb2VmZl0sIGxldmVsKTsKCQkvKkRQUklOVEYoRFBSSU5URl9DT0VGRiwiYmxv
Y2tbJWldICVpICUwOHgiLCBzY2FuW2NvZWZmXSwgbGV2ZWwsIEJpdHN0cmVhbVNob3dCaXRz
KGJzLCAzMikpOyAqLwoKCQlpZiAobGV2ZWwgPCAtMjA0NyB8fCBsZXZlbCA+IDIwNDcpIHsK
CQkJRFBSSU5URihEUFJJTlRGX0RFQlVHLCAid2FybmluZzogaW50cmFfb3ZlcmZsb3c6ICVk
IiwgbGV2ZWwpOwoJCX0KCQljb2VmZisrOwoJfSB3aGlsZSAoIWxhc3QpOwoKfQoKdm9pZApn
ZXRfaW50ZXJfYmxvY2soQml0c3RyZWFtICogYnMsCgkJCQlpbnQxNl90ICogYmxvY2spCnsK
Cgljb25zdCB1aW50MTZfdCAqc2NhbiA9IHNjYW5fdGFibGVzWzBdOwoJaW50IHA7CglpbnQg
bGV2ZWw7CglpbnQgcnVuOwoJaW50IGxhc3Q7CgoJcCA9IDA7CglkbyB7CgkJbGV2ZWwgPSBn
ZXRfY29lZmYoYnMsICZydW4sICZsYXN0LCAwLCAwKTsKCQlpZiAocnVuID09IC0xKSB7CgkJ
CURQUklOVEYoRFBSSU5URl9FUlJPUiwgImZhdGFsOiBpbnZhbGlkIHJ1biIpOwoJCQlicmVh
azsKCQl9CgkJcCArPSBydW47CgoJCWJsb2NrW3NjYW5bcF1dID0gbGV2ZWw7CgoJCURQUklO
VEYoRFBSSU5URl9DT0VGRiwiYmxvY2tbJWldICVpIiwgc2NhbltwXSwgbGV2ZWwpOwoKCQlp
ZiAobGV2ZWwgPCAtMjA0NyB8fCBsZXZlbCA+IDIwNDcpIHsKCQkJRFBSSU5URihEUFJJTlRG
X0RFQlVHLCAid2FybmluZzogaW50ZXJfb3ZlcmZsb3c6ICVkIiwgbGV2ZWwpOwoJCX0KCQlw
Kys7Cgl9IHdoaWxlICghbGFzdCk7Cgp9Cj==


More information about the XviD-devel mailing list