Subject: Re: NetBSD 3.1 VIA Padlock RNG
To: None <port-i386@netbsd.org>
From: Daniel de Kok <danieldk@pobox.com>
List: port-i386
Date: 01/09/2007 17:56:52
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--0-785907764-1168361812=:102
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

> I have slightly modified Allen Briggs' VIA C3 RNG support patch [1] for
> NetBSD 3.1. It seems to work well:

Whoops, sorry for messing up the feature flags.

-- Daniel
--0-785907764-1168361812=:102
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=padlock-rng2.diff
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.64.0701091756520.102@liza.taickim.net>
Content-Description: 
Content-Disposition: attachment; filename=padlock-rng2.diff

SW5kZXg6IGFyY2gvaTM4Ni9pMzg2L2NwdS5jDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9hcmNoL2kzODYv
aTM4Ni9jcHUuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjAuMTAuMQ0K
ZGlmZiAtdSAtcjEuMjAuMTAuMSBjcHUuYw0KLS0tIGFyY2gvaTM4Ni9pMzg2
L2NwdS5jCTE4IEp1bCAyMDA1IDIwOjQ5OjAwIC0wMDAwCTEuMjAuMTAuMQ0K
KysrIGFyY2gvaTM4Ni9pMzg2L2NwdS5jCTkgSmFuIDIwMDcgMTY6MjE6Mzkg
LTAwMDANCkBAIC03Nyw2ICs3Nyw3IEBADQogI2luY2x1ZGUgIm9wdF9tdWx0
aXByb2Nlc3Nvci5oIg0KICNpbmNsdWRlICJvcHRfbXBiaW9zLmgiCQkvKiBm
b3IgTVBERUJVRyAqLw0KICNpbmNsdWRlICJvcHRfbXRyci5oIg0KKyNpbmNs
dWRlICJvcHRfdmlhcGFkbG9jay5oIg0KIA0KICNpbmNsdWRlICJsYXBpYy5o
Ig0KICNpbmNsdWRlICJpb2FwaWMuaCINCkBAIC00NzEsNiArNDcyLDEyIEBA
DQogCQl9DQogCX0NCiAjZW5kaWYgLyogTVRSUiAqLw0KKyNpZmRlZiBWSUFf
Uk5HDQorCWlmIChjaS0+Y2lfZXh0X2ZlYXR1cmVzICYgQ1BVSURfRkVBVF9W
Uk5HKSB7DQorCQljaS0+Y2lfdnAudnBfY2kgPSBjaTsNCisJCXZpYV9ybmdf
YXR0YWNoKCZjaS0+Y2lfdnApOw0KKwl9DQorI2VuZGlmIC8qIFZJQV9STkcg
Ki8NCiANCiAjaWZkZWYgTVVMVElQUk9DRVNTT1INCiAJY2ktPmNpX2ZsYWdz
IHw9IENQVUZfUlVOTklORzsNCkluZGV4OiBhcmNoL2kzODYvaTM4Ni9pZGVu
dGNwdS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2
c3Jvb3Qvc3JjL3N5cy9hcmNoL2kzODYvaTM4Ni9pZGVudGNwdS5jLHYNCnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4xNy4yLjMNCmRpZmYgLXUgLXIxLjE3LjIu
MyBpZGVudGNwdS5jDQotLS0gYXJjaC9pMzg2L2kzODYvaWRlbnRjcHUuYwkx
IEphbiAyMDA2IDIzOjI1OjU5IC0wMDAwCTEuMTcuMi4zDQorKysgYXJjaC9p
Mzg2L2kzODYvaWRlbnRjcHUuYwk5IEphbiAyMDA3IDE2OjIxOjQwIC0wMDAw
DQpAQCAtMSw3ICsxLDcgQEANCiAvKgkkTmV0QlNEOiBpZGVudGNwdS5jLHYg
MS4xNy4yLjMgMjAwNi8wMS8wMSAyMzoyNTo1OSByaXogRXhwICQJKi8NCiAN
CiAvKi0NCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTksIDIwMDAsIDIwMDEgVGhl
IE5ldEJTRCBGb3VuZGF0aW9uLCBJbmMuDQorICogQ29weXJpZ2h0IChjKSAx
OTk5LCAyMDAwLCAyMDAxLCAyMDA0IFRoZSBOZXRCU0QgRm91bmRhdGlvbiwg
SW5jLg0KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogICoNCiAgKiBUaGlz
IGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNvZnR3YXJlIGNvbnRyaWJ1dGVkIHRv
IFRoZSBOZXRCU0QgRm91bmRhdGlvbg0KQEAgLTYzMyw2ICs2MzMsOCBAQA0K
IHZvaWQNCiB2aWFfY3B1X3Byb2JlKHN0cnVjdCBjcHVfaW5mbyAqY2kpDQog
ew0KKwl1X2ludCBtb2RlbCA9IENQVUlEMk1PREVMKGNpLT5jaV9zaWduYXR1
cmUpOw0KKwl1X2ludCBzdGVwcGluZyA9IENQVUlEMlNURVBQSU5HKGNpLT5j
aV9zaWduYXR1cmUpOw0KIAl1X2ludCBkZXNjc1s0XTsNCiAJdV9pbnQgbGZ1
bmM7DQogDQpAQCAtNjQ5LDYgKzY1MSwzOCBAQA0KIAkJQ1BVSUQoMHg4MDAw
MDAwMSwgZGVzY3NbMF0sIGRlc2NzWzFdLCBkZXNjc1syXSwgZGVzY3NbM10p
Ow0KIAkJY2ktPmNpX2ZlYXR1cmVfZmxhZ3MgfD0gZGVzY3NbM107DQogCX0N
CisNCisJaWYgKG1vZGVsID49IDB4OSkgew0KKwkJLyogTmVoZW1pYWggb3Ig
RXN0aGVyICovDQorCQlDUFVJRCgweGMwMDAwMDAwLCBkZXNjc1swXSwgZGVz
Y3NbMV0sIGRlc2NzWzJdLCBkZXNjc1szXSk7DQorCQlsZnVuYyA9IGRlc2Nz
WzBdOw0KKwkJaWYgKGxmdW5jID09IDB4YzAwMDAwMDEpIHsNCisJCQlDUFVJ
RChsZnVuYywgZGVzY3NbMF0sIGRlc2NzWzFdLCBkZXNjc1syXSwgZGVzY3Nb
M10pOw0KKwkJCWxmdW5jID0gZGVzY3NbM107DQorCQkJaWYgKG1vZGVsID4g
MHg5IHx8IHN0ZXBwaW5nID49IDMpCS8qIFJORyAqLw0KKwkJCQlpZiAoKGxm
dW5jICYgMHgwYykgPT0gMHgwYykNCisJCQkJCWNpLT5jaV9leHRfZmVhdHVy
ZXMgfD0gQ1BVSURfRkVBVF9WUk5HOw0KKwkJCWlmIChtb2RlbCA+IDB4OSB8
fCBzdGVwcGluZyA+PSA4KSB7CS8qIEFDRSAqLw0KKwkJCQlpZiAoKGxmdW5j
ICYgMHhjMCkgPT0gMHhjMCkgew0KKwkJCQkJY2ktPmNpX2V4dF9mZWF0dXJl
cyB8PSBDUFVJRF9GRUFUX1ZBQ0U7DQorCQkJCX0NCisNCisJCQkJLyoNCisJ
CQkJICogSWYgd2UgaGF2ZSB0aGUgUk5HIGFuZCB3ZSdyZSBvbiBFc3RoZXIN
CisJCQkJICogb3IgTmVoZW1pYWggc3RlcHBpbmcgPj0gOCwgZW5hYmxlIGJv
dGgNCisJCQkJICogUk5HIHNvdXJjZXMuICBFYXJsaWVyIHN0ZXBwaW5ncyBo
YXZlDQorCQkJCSAqIG9ubHkgb25lIHNvdXJjZS4NCisJCQkJICovDQorCQkJ
CWlmIChjaS0+Y2lfZXh0X2ZlYXR1cmVzICYgQ1BVSURfRkVBVF9WUk5HKSB7
DQorCQkJCQl1X2ludCBtc3I7DQorDQorCQkJCSAgICAJbXNyID0gcmRtc3Io
TVNSX1ZJQV9STkcpICYgfjB4MWY7DQorCQkJCQl3cm1zcihNU1JfVklBX1JO
RywNCisJCQkJCQltc3IgfCBNU1JfVklBX1JOR18yTk9JU0UpOw0KKwkJCQl9
DQorCQkJfQ0KKwkJfQ0KKwl9DQogfQ0KIA0KIGNvbnN0IGNoYXIgKg0KQEAg
LTEyOTEsNiArMTMyNSwxMiBAQA0KIAkJcHJpbnRmKCIlczogZmVhdHVyZXMz
ICVzXG4iLCBjcHVuYW1lLCBidWYpOw0KIAl9DQogDQorCWlmIChjaS0+Y2lf
ZXh0X2ZlYXR1cmVzKSB7DQorCQliaXRtYXNrX3NucHJpbnRmKGNpLT5jaV9l
eHRfZmVhdHVyZXMsDQorCQkgICAgQ1BVSURfRkVBVF9GTEFHUywgYnVmLCBz
aXplb2YoYnVmKSk7DQorCQlwcmludGYoIiVzOiBleHQuIGZlYXR1cmVzICVz
XG4iLCBjcHVuYW1lLCBidWYpOw0KKwl9DQorDQogCWlmICgqY3B1X2JyYW5k
X3N0cmluZyAhPSAnXDAnKQ0KIAkJcHJpbnRmKCIlczogXCIlc1wiXG4iLCBj
cHVuYW1lLCBjcHVfYnJhbmRfc3RyaW5nKTsNCiANCkluZGV4OiBhcmNoL2kz
ODYvaW5jbHVkZS9jcHUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNT
IGZpbGU6IC9jdnNyb290L3NyYy9zeXMvYXJjaC9pMzg2L2luY2x1ZGUvY3B1
Lmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjExNw0KZGlmZiAtdSAtcjEu
MTE3IGNwdS5oDQotLS0gYXJjaC9pMzg2L2luY2x1ZGUvY3B1LmgJMjEgRmVi
IDIwMDUgMTU6MTA6NTEgLTAwMDAJMS4xMTcNCisrKyBhcmNoL2kzODYvaW5j
bHVkZS9jcHUuaAk5IEphbiAyMDA3IDE2OjIxOjQwIC0wMDAwDQpAQCAtNTMs
NiArNTMsNyBAQA0KICNpbmNsdWRlIDxtYWNoaW5lL3Rzcy5oPg0KICNpbmNs
dWRlIDxtYWNoaW5lL2ludHJkZWZzLmg+DQogI2luY2x1ZGUgPHg4Ni9jYWNo
ZWluZm8uaD4NCisjaW5jbHVkZSA8eDg2L3ZpYV9wYWRsb2NrLmg+DQogDQog
I2luY2x1ZGUgPHN5cy9kZXZpY2UuaD4NCiAjaW5jbHVkZSA8c3lzL2xvY2su
aD4JCQkvKiB3aWxsIGFsc28gZ2V0IExPQ0tERUJVRyAqLw0KQEAgLTEyMSw2
ICsxMjIsNyBAQA0KIAl1X2ludDMyX3QJY2lfZmVhdHVyZV9mbGFnczsvKiBY
ODYgJWVkeCBDUFVJRCBmZWF0dXJlIGJpdHMgKi8NCiAJdV9pbnQzMl90CWNp
X2ZlYXR1cmUyX2ZsYWdzOy8qIFg4NiAlZWN4IENQVUlEIGZlYXR1cmUgYml0
cyAqLw0KIAl1X2ludDMyX3QJY2lfZmVhdHVyZTNfZmxhZ3M7LyogWDg2IGV4
dGVuZGVkIGZlYXR1cmUgYml0cyAqLw0KKwl1X2ludDMyX3QJY2lfZXh0X2Zl
YXR1cmVzOy8qIGZlYXR1cmUgYml0cyBub3QgaW4gYmFzZSBDUFVJRCAqLyAN
CiAJdV9pbnQzMl90CWNpX2NwdV9jbGFzczsJIC8qIENQVSBjbGFzcyAqLw0K
IAl1X2ludDMyX3QJY2lfYnJhbmRfaWQ7CSAvKiBJbnRlbCBicmFuZCBpZCAq
Lw0KIAl1X2ludDMyX3QJY2lfdmVuZG9yWzRdOwkgLyogdmVuZG9yIHN0cmlu
ZyAqLw0KQEAgLTE0OCw2ICsxNTAsOCBAQA0KIAljaGFyICpjaV9kZGJpcGlf
c3RhY2s7DQogDQogCXN0cnVjdCBldmNudCBjaV9pcGlfZXZlbnRzW1g4Nl9O
SVBJXTsNCisNCisJc3RydWN0IHZpYV9wYWRsb2NrCWNpX3ZwOwkvKiBWSUEg
UGFkTG9jayBwcml2YXRlIHN0b3JhZ2UgKi8NCiB9Ow0KIA0KIC8qDQpJbmRl
eDogYXJjaC94ODYvY29uZi9maWxlcy54ODYNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2FyY2gveDg2L2Nv
bmYvZmlsZXMueDg2LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMg0KZGlm
ZiAtdSAtcjEuMTIgZmlsZXMueDg2DQotLS0gYXJjaC94ODYvY29uZi9maWxl
cy54ODYJMjAgT2N0IDIwMDQgMDQ6MjA6MDUgLTAwMDAJMS4xMg0KKysrIGFy
Y2gveDg2L2NvbmYvZmlsZXMueDg2CTkgSmFuIDIwMDcgMTY6MjE6NDQgLTAw
MDANCkBAIC03LDYgKzcsOSBAQA0KICMgTVRSUiBzdXBwb3J0DQogZGVmZmxh
ZyAgICAgICAgICAgICAgICAgTVRSUg0KIA0KKyMgVklBIFBhZExvY2sgKFJO
RyBhbmQgY3J5cHRvIGFjY2VsZXJhdG9yKSBzdXBwb3J0DQorZGVmZmxhZyBv
cHRfdmlhcGFkbG9jay5oIFZJQV9STkcgVklBX0FDRQ0KKw0KIGRlZmluZSAg
Y3B1YnVzIHsgW2FwaWQgPSAtMV0gfQ0KIA0KIGZpbGUJYXJjaC94ODYveDg2
L2FwaWMuYwkJaW9hcGljIHwgbGFwaWMNCkBAIC0yMCw2ICsyMyw3IEBADQog
ZmlsZQlhcmNoL3g4Ni94ODYvbG9ja19tYWNoZGVwLmMJbG9ja2RlYnVnDQog
ZmlsZQlhcmNoL3g4Ni94ODYvbXRycl9pNjg2LmMJbXRycg0KIGZpbGUJYXJj
aC94ODYveDg2L3NvZnRpbnRyLmMNCitmaWxlCWFyY2gveDg2L3g4Ni92aWFf
cGFkbG9jay5jCXZpYV9ybmcgfCB2aWFfYWNlDQogZmlsZQlhcmNoL3g4Ni94
ODYveDg2X2F1dG9jb25mLmMNCiANCiBkZWZpbmUgbGFwaWMNCkluZGV4OiBh
cmNoL3g4Ni9pbmNsdWRlL3NwZWNpYWxyZWcuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KUkNTIGZpbGU6IC9jdnNyb290L3NyYy9zeXMvYXJjaC94ODYv
aW5jbHVkZS9zcGVjaWFscmVnLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAx
LjgNCmRpZmYgLXUgLXIxLjggc3BlY2lhbHJlZy5oDQotLS0gYXJjaC94ODYv
aW5jbHVkZS9zcGVjaWFscmVnLmgJMjEgRmViIDIwMDUgMTU6MTA6NTEgLTAw
MDAJMS44DQorKysgYXJjaC94ODYvaW5jbHVkZS9zcGVjaWFscmVnLmgJOSBK
YW4gMjAwNyAxNjoyMTo0NSAtMDAwMA0KQEAgLTE1NCw2ICsxNTQsMTYgQEAN
CiAJCQkJICAgICJcMDM3M0ROT1cyXDA0MDNETk9XIg0KIA0KIC8qDQorICog
IkZlYXR1cmVzIiB0aGF0IGFyZSBjb3BpZWQgZnJvbSBlbHNld2hlcmUgLS0g
bm90IG5lY2Vzc2FyaWx5IHRpZWQgdG8NCisgKiBhIHNwZWNpZmljIENQVUlE
IHJlc3BvbnNlDQorICovDQorDQorI2RlZmluZSBDUFVJRF9GRUFUX1ZSTkcJ
MHgwMDAwMDAwMQkvKiBWSUEgQzMgUmFuZG9tIE51bWJlciBHZW5lcmF0b3Ig
Ki8NCisjZGVmaW5lIENQVUlEX0ZFQVRfVkFDRQkweDAwMDAwMDAyCS8qIFZJ
QSBDMyBBRVMgQ3J5cHRvIEV4dGVuc2lvbiAqLw0KKw0KKyNkZWZpbmUgQ1BV
SURfRkVBVF9GTEFHUwkiXDIwXDAxVlJOR1wwMlZBQ0UiDQorDQorLyoNCiAg
KiBDUFVJRCAiZmVhdHVyZXMiIGJpdHMgaW4gJWVjeA0KICAqLw0KIA0KQEAg
LTI3NSw2ICsyODUsMTYgQEANCiAjZGVmaW5lIE1TUl9NQzNfTUlTQwkJMHg0
MTMNCiANCiAvKg0KKyAqIFZJQSAiTmVoZW1pYWgiIE1TUnMNCisgKi8NCisj
ZGVmaW5lIE1TUl9WSUFfUk5HCQkweDExMGINCisjZGVmaW5lIE1TUl9WSUFf
Uk5HX0VOQUJMRQkweDAwMDAwMDQwDQorI2RlZmluZSBNU1JfVklBX1JOR19O
T0lTRV9NQVNLCTB4MDAwMDAzMDANCisjZGVmaW5lIE1TUl9WSUFfUk5HX05P
SVNFX0EJMHgwMDAwMDAwMA0KKyNkZWZpbmUgTVNSX1ZJQV9STkdfTk9JU0Vf
QgkweDAwMDAwMTAwDQorI2RlZmluZSBNU1JfVklBX1JOR18yTk9JU0UJMHgw
MDAwMDMwMA0KKw0KKy8qDQogICogQU1EIEs2L0s3IE1TUnMuDQogICovDQog
I2RlZmluZQlNU1JfSzZfVVdDQ1IJCTB4YzAwMDAwODUNCkluZGV4OiBhcmNo
L3g4Ni9pbmNsdWRlL3ZpYV9wYWRsb2NrLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NClJDUyBmaWxlOiBhcmNoL3g4Ni9pbmNsdWRlL3ZpYV9wYWRsb2Nr
LmgNCmRpZmYgLU4gYXJjaC94ODYvaW5jbHVkZS92aWFfcGFkbG9jay5oDQot
LS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDANCisrKyBh
cmNoL3g4Ni9pbmNsdWRlL3ZpYV9wYWRsb2NrLmgJOSBKYW4gMjAwNyAxNjoy
MTo0NSAtMDAwMA0KQEAgLTAsMCArMSw1MyBAQA0KKy8qCSROZXRCU0QkCSov
DQorDQorLyotDQorICogQ29weXJpZ2h0IChjKSAyMDA0IFRoZSBOZXRCU0Qg
Rm91bmRhdGlvbiwgSW5jLg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQor
ICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICogMy4gQWxs
IGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9y
IHVzZSBvZiB0aGlzIHNvZnR3YXJlDQorICogICAgbXVzdCBkaXNwbGF5IHRo
ZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50Og0KKyAqCVRoaXMgcHJvZHVj
dCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE5ldEJTRA0K
KyAqCUZvdW5kYXRpb24sIEluYy4gYW5kIGl0cyBjb250cmlidXRvcnMuDQor
ICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiBUaGUgTmV0QlNEIEZvdW5kYXRp
b24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisgKiAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQNCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorICoNCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBORVRCU0QgRk9VTkRBVElP
TiwgSU5DLiBBTkQgQ09OVFJJQlVUT1JTDQorICogYGBBUyBJUycnIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEDQorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVINCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEZPVU5EQVRJT04gT1IgQ09OVFJJQlVUT1JTDQorICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GDQorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQ0KKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFDQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICov
DQorDQorI2lmbmRlZiBfWDg2X1ZJQV9QQURMT0NLX0hfDQorI2RlZmluZSBf
WDg2X1ZJQV9QQURMT0NLX0hfDQorDQorI2luY2x1ZGUgPHN5cy9jYWxsb3V0
Lmg+DQorI2luY2x1ZGUgPHN5cy9ybmQuaD4NCisNCitzdHJ1Y3QgY3B1X2lu
Zm87DQorDQorc3RydWN0IHZpYV9wYWRsb2NrIHsNCisJc3RydWN0IGNwdV9p
bmZvCQkqdnBfY2k7DQorCXN0cnVjdCBjYWxsb3V0CQl2cF9ybmdfY2g7DQor
CXJuZHNvdXJjZV9lbGVtZW50X3QJdnBfcm5nX3NyYzsNCisJaW50CQkJdnBf
ZnJlcTsNCit9Ow0KKw0KK3ZvaWQJdmlhX3JuZ19hdHRhY2goc3RydWN0IHZp
YV9wYWRsb2NrICp2cCk7DQorDQorI2VuZGlmCS8qIF9YODZfVklBX1BBRExP
Q0tfSF8gKi8NCkluZGV4OiBhcmNoL3g4Ni94ODYvdmlhX3BhZGxvY2suYw0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IGFyY2gveDg2L3g4
Ni92aWFfcGFkbG9jay5jDQpkaWZmIC1OIGFyY2gveDg2L3g4Ni92aWFfcGFk
bG9jay5jDQotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAw
MDANCisrKyBhcmNoL3g4Ni94ODYvdmlhX3BhZGxvY2suYwk5IEphbiAyMDA3
IDE2OjIxOjQ1IC0wMDAwDQpAQCAtMCwwICsxLDE1NiBAQA0KKy8qCSROZXRC
U0QkCSovDQorDQorLyotDQorICogQ29weXJpZ2h0IChjKSAyMDA0IFRoZSBO
ZXRCU0QgRm91bmRhdGlvbiwgSW5jLg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICog
My4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1
cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlDQorICogICAgbXVzdCBkaXNw
bGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50Og0KKyAqCVRoaXMg
cHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE5l
dEJTRA0KKyAqCUZvdW5kYXRpb24sIEluYy4gYW5kIGl0cyBjb250cmlidXRv
cnMuDQorICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiBUaGUgTmV0QlNEIEZv
dW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisgKiAgICBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQNCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorICoNCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBORVRCU0QgRk9V
TkRBVElPTiwgSU5DLiBBTkQgQ09OVFJJQlVUT1JTDQorICogYGBBUyBJUycn
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEDQorICogVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVINCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEZPVU5EQVRJT04gT1IgQ09OVFJJQlVUT1JT
DQorICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GDQorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTDQorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFDQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
DQorICovDQorDQorI2luY2x1ZGUgPHN5cy9jZGVmcy5oPg0KK19fS0VSTkVM
X1JDU0lEKDAsICIkTmV0QlNEJCIpOw0KKw0KKyNpbmNsdWRlICJvcHRfdmlh
cGFkbG9jay5oIg0KKw0KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4NCisjaW5j
bHVkZSA8c3lzL2tlcm5lbC5oPg0KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4N
CisjaW5jbHVkZSA8c3lzL2NhbGxvdXQuaD4NCisjaW5jbHVkZSA8c3lzL2Rl
dmljZS5oPg0KKyNpbmNsdWRlIDxzeXMvcm5kLmg+DQorDQorI2luY2x1ZGUg
PG1hY2hpbmUvY3B1Lmg+DQorI2luY2x1ZGUgPHg4Ni9zcGVjaWFscmVnLmg+
DQorDQorI2lmZGVmIFZJQV9STkcNCitzdGF0aWMgaW5saW5lIGludCB2aWFf
cm5nX2dldF80Ynl0ZXModm9pZCAqKTsNCisNCisvKg0KKyAqIEdyYWIgNCBi
eXRlcyBvZiByYW5kb20gZGF0YS4gIFVzZXMgdGhlICJyYXRlIiBjb2RlIHRv
IGdldCA0IGJ5dGVzDQorICogb2YgZGF0YSBpZiBhdCBsZWFzdCA4IGJ5dGVz
IG9mIGVudHJvcHkgYXJlIGF2YWlsYWJsZS4gIFRoaXMgaXMgYQ0KKyAqIGNv
bXByb21pc2UgYmV0d2VlbiB0aGUgbW9zdCBkYXRhIHdlIGNhbiBnZXQgaW4g
b25lIHNob3QgKDggYnl0ZXMpLA0KKyAqIGFuZCB0aGUgYmVzdCByYW5kb20g
ZGF0YSB3ZSBjYW4gZ2V0IGluIG9uZSBzaG90ICgxIGJ5dGUpLg0KKyAqLw0K
K3N0YXRpYyBpbmxpbmUgaW50DQordmlhX3JuZ19nZXRfNGJ5dGVzKHZvaWQg
KmJ1ZikNCit7DQorCXVfaW50MzJfdAlydj0wOw0KKw0KKwlfX2FzbSBfX3Zv
bGF0aWxlKA0KKwkJIm1vdmwgJDEsICUlZWR4XG4iDQorCQkiLmJ5dGUJMHgw
ZiwgMHhhNywgMHhjMCINCisJCTogIj1hIiAocnYpLCAiK0QiIChidWYpDQor
CQk6IA0KKwkJOiAibWVtb3J5IiwgIiVlZHgiKTsNCisNCisJcmV0dXJuIChy
diAmIDB4MWYpOw0KK30NCisNCit2b2lkIHZpYV9ybmdfY2FsbG91dCh2b2lk
ICp2KTsNCisNCit2b2lkDQordmlhX3JuZ19hdHRhY2goc3RydWN0IHZpYV9w
YWRsb2NrICp2cCkNCit7DQorCWludAkJY250LCB0b3RhbCwgbjsNCisJdV9p
bnQzMl90CXJuZGJ1ZiwgY3IwOw0KKw0KKwkvKg0KKwkgKiBEbyBzb21lIGlu
aXRpYWwgdGVzdGluZyBieSBwdWxsaW5nIHNvbWUgYXJiaXRyYXJ5IGFtb3Vu
dCBvZg0KKwkgKiByYW5kb21uZXNzIG9mZiB0aGUgdG9wLiAgSWYgd2UgY2Fu
J3QgZ2V0IGF0IGxlYXN0IDMyIGJ5dGVzLA0KKwkgKiB0aGVuIHNvbWV0aGlu
ZyBpcyB0ZXJyaWJseSB3cm9uZywgc28gZG9uJ3QgZW5hYmxlIHRoaXMgYXMg
YW4NCisJICogZW50cm9weSBzb3VyY2UuICBJZiB3ZSBkbyBnZXQgYXQgbGVh
c3QgMzIgYnl0ZXMsIHRoZW4gYXNzdW1lDQorCSAqIHdlJ3JlIHdvcmtpbmcg
T0sgYW5kIHN0YXJ0IHRoZSBjYWxsb3V0Lg0KKwkgKi8NCisJY3IwID0gcmNy
MCgpOw0KKwlsY3IwKGNyMCAmIH4oQ1IwX0VNIHwgQ1IwX1RTKSk7DQorDQor
CWZvciAoY250PTAsIHRvdGFsPTAgOyBjbnQgPCAxMDAwICYmIHRvdGFsIDwg
MzIgOyBjbnQrKywgdG90YWwgKz0gbikgew0KKwkJbiA9IHZpYV9ybmdfZ2V0
XzRieXRlcygmcm5kYnVmKTsNCisJCWlmIChuID09IDApIHsNCisJCQlkZWxh
eSgxKTsNCisJCX0NCisJfQ0KKw0KKwlsY3IwKGNyMCk7DQorDQorCWlmICh0
b3RhbCA8IDMyKSB7DQorCQlhcHJpbnRfZXJyb3IoIiVzOiBSTkcgZmFpbGVk
IHN0YXJ0dXAgdGVzdFxuIiwNCisJCQl2cC0+dnBfY2ktPmNpX2Rldi0+ZHZf
eG5hbWUpOw0KKwl9IGVsc2Ugew0KKwkJLyoNCisJCSAqIEdvdCByYW5kb21u
ZXNzLiAgRW5hYmxlIGVudHJvcHkgc291cmNlLg0KKwkJICogRnJlcXVlbmN5
IGlzIGF0IG1vc3QgMTAwIHRpbWVzIC8gc2VjLg0KKwkJICovDQorCQl2cC0+
dnBfZnJlcSA9IGh6ID4gMTAwID8gaHogLyAxMDAgOiAxOw0KKw0KKwkJY2Fs
bG91dF9pbml0KCZ2cC0+dnBfcm5nX2NoKTsNCisJCXJuZF9hdHRhY2hfc291
cmNlKCZ2cC0+dnBfcm5nX3NyYywgdnAtPnZwX2NpLT5jaV9kZXYtPmR2X3hu
YW1lLA0KKwkJCQkgIFJORF9UWVBFX1JORywgUk5EX0ZMQUdfTk9fRVNUSU1B
VEUpOw0KKwkJdmlhX3JuZ19jYWxsb3V0KHZwKTsNCisNCisJCWFwcmludF92
ZXJib3NlKCIlczogb24tYm9hcmQgUk5HIGF0dGFjaGVkXG4iLA0KKwkJCXZw
LT52cF9jaS0+Y2lfZGV2LT5kdl94bmFtZSk7DQorCX0NCit9DQorDQordm9p
ZA0KK3ZpYV9ybmdfY2FsbG91dCh2b2lkICp2KQ0KK3sNCisJc3RydWN0IHZp
YV9wYWRsb2NrICp2cCA9IChzdHJ1Y3QgdmlhX3BhZGxvY2sgKikgdjsNCisJ
dV9pbnQzMl90CSpyLCBybmRidWZbNF0sIGNyMDsNCisJaW50CQludywgbmI7
DQorDQorCWNyMCA9IHJjcjAoKTsNCisJbGNyMChjcjAgJiB+KENSMF9FTSB8
IENSMF9UUykpOw0KKw0KKwkvKg0KKwkgKiBQdWxsIDQtYnl0ZSBjaHVua3Mg
YXMgbG9uZyBhcyB0aGV5J3JlIGF2YWlsYWJsZSwgdXAgdG8NCisJICogMTYg
Ynl0ZXMgdG90YWwuICBXaHkgMTY/ICBCZWNhdXNlIGEgKHNtYWxsKSBzYW1w
bGUgc2hvd2VkDQorCSAqIG1lIHRoYXQsIGF0IGxlYXN0IHdpdGggYSAxLjJH
SHogTmVoZW1pYWgsIHdlIHdvdWxkIGhhdmUgdG8NCisJICogd2FpdCBmb3Ig
bW9yZSBkYXRhIHRoYW4gdGhhdC4NCisJICovDQorCW53ID0gMDsNCisJciA9
IHJuZGJ1ZjsNCisJZG8gew0KKwkJbmIgPSB2aWFfcm5nX2dldF80Ynl0ZXMo
cik7DQorCQlpZiAobmIgPT0gNCkgew0KKwkJCXIrKzsgbncrKzsNCisJCX0N
CisJfSB3aGlsZSAobncgPCA0ICYmIG5iID4gMCk7DQorDQorCWxjcjAoY3Iw
KTsNCisNCisJaWYgKG53KSB7DQorCQluYiA9IG53ICogNDsNCisJCXJuZF9h
ZGRfZGF0YSgmdnAtPnZwX3JuZ19zcmMsIHJuZGJ1ZiwgbmIsIG5iICogTkJC
WSk7DQorCX0NCisNCisJY2FsbG91dF9yZXNldCgmdnAtPnZwX3JuZ19jaCwg
dnAtPnZwX2ZyZXEsIHZpYV9ybmdfY2FsbG91dCwgdnApOw0KK30NCisjZW5k
aWYgLyogVklBX1JORyAqLw0K

--0-785907764-1168361812=:102--