[OpenAFS-devel] 2004-06-15 snap on FC2: no good still (sys_call_table, Error -1 in basic initialization)

Rainer Schöpf rainer.schoepf@proteosys.com
Tue, 15 Jun 2004 22:38:57 +0200 (CEST)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--34210304-1864826655-1087331937=:11043
Content-Type: TEXT/PLAIN; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT

On Tue, 15 Jun 2004, Matthew Miller wrote:

 > afsd loads file, but an attempt to do `ls /afs` gives me a segfault and the
 > following oops. Any subsequent attempts to list /afs hang indefinitely (and
 > unkillably). I'll try your new patch.

That looks like my Oops :-) The problem is again caused by setting
CONFIG_REGPARM=y: afs_xdr_vector calls a function declared to have a
variable number of parameters, so the compiler puts all params on the
stack. The function called (afs_xdr_char) is defined to have a fixed
number of parameters, so that the compiler expects them in the processor
registers. With CONFIG_REGPARM undefined the params are always on the
stack.

I changed all relevant function definitions to have the attribute
regparm(0). Diffs of my changes are attached.

  Rainer Schöpf
--34210304-1864826655-1087331937=:11043
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="xdr.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.58.0406152238570.11043@wintermute.proteosys>
Content-Description: 
Content-Disposition: attachment; filename="xdr.patch"

KioqIC4vc3JjL2ZzaW50L2Fmc2F1eC5jfglXZWQgSnVsIDE2IDAxOjE1OjA3
IDIwMDMNCi0tLSAuL3NyYy9mc2ludC9hZnNhdXguYwlGcmkgSnVuIDExIDIz
OjU1OjA4IDIwMDQNCioqKioqKioqKioqKioqKg0KKioqIDEwMywxMDkgKioq
Kg0KICAgKi8NCiAgI2lmbmRlZglBRlNfU1VONV9FTlYNCiAgI2lmbmRlZiBB
RlNfSFBVWDExMF9FTlYNCiEgYm9vbF90DQogIHhkcl93cmFwc3RyaW5nKFhE
UiAqIHhkcnMsIGNoYXIgKipjcHApDQogIHsNCiAgICAgIGlmICh4ZHJfc3Ry
aW5nKHhkcnMsIGNwcCwgMTAyNCkpIHsNCi0tLSAxMDMsMTA5IC0tLS0NCiAg
ICovDQogICNpZm5kZWYJQUZTX1NVTjVfRU5WDQogICNpZm5kZWYgQUZTX0hQ
VVgxMTBfRU5WDQohIGJvb2xfdCBMSU5VWF9SRUdQQVJNXzANCiAgeGRyX3dy
YXBzdHJpbmcoWERSICogeGRycywgY2hhciAqKmNwcCkNCiAgew0KICAgICAg
aWYgKHhkcl9zdHJpbmcoeGRycywgY3BwLCAxMDI0KSkgew0KKioqIC4vc3Jj
L3J4L3hkci5jfglGcmkgSnVuIDExIDIzOjU3OjM2IDIwMDQNCi0tLSAuL3Ny
Yy9yeC94ZHIuYwlGcmkgSnVuIDExIDIzOjU3OjQxIDIwMDQNCioqKioqKioq
KioqKioqKg0KKioqIDg1LDkxICoqKioNCiAgICogWERSIGFmc19pbnQzMiBp
bnRlZ2Vycw0KICAgKiBzYW1lIGFzIHhkcl91X2xvbmcgLSBvcGVuIGNvZGVk
IHRvIHNhdmUgYSBwcm9jIGNhbGwhDQogICAqLw0KISBib29sX3QNCiAgeGRy
X2ludChyZWdpc3RlciBYRFIgKiB4ZHJzLCBpbnQgKmlwKQ0KICB7DQogIA0K
LS0tIDg1LDkxIC0tLS0NCiAgICogWERSIGFmc19pbnQzMiBpbnRlZ2Vycw0K
ICAgKiBzYW1lIGFzIHhkcl91X2xvbmcgLSBvcGVuIGNvZGVkIHRvIHNhdmUg
YSBwcm9jIGNhbGwhDQogICAqLw0KISBib29sX3QgTElOVVhfUkVHUEFSTV8w
DQogIHhkcl9pbnQocmVnaXN0ZXIgWERSICogeGRycywgaW50ICppcCkNCiAg
ew0KICANCioqKioqKioqKioqKioqKg0KKioqIDEwNSwxMTEgKioqKg0KICAg
KiBYRFIgdW5zaWduZWQgYWZzX2ludDMyIGludGVnZXJzDQogICAqIHNhbWUg
YXMgeGRyX2xvbmcgLSBvcGVuIGNvZGVkIHRvIHNhdmUgYSBwcm9jIGNhbGwh
DQogICAqLw0KISBib29sX3QNCiAgeGRyX3VfaW50KHJlZ2lzdGVyIFhEUiAq
IHhkcnMsIHVfaW50ICogdXApDQogIHsNCiAgDQotLS0gMTA1LDExMSAtLS0t
DQogICAqIFhEUiB1bnNpZ25lZCBhZnNfaW50MzIgaW50ZWdlcnMNCiAgICog
c2FtZSBhcyB4ZHJfbG9uZyAtIG9wZW4gY29kZWQgdG8gc2F2ZSBhIHByb2Mg
Y2FsbCENCiAgICovDQohIGJvb2xfdCBMSU5VWF9SRUdQQVJNXzANCiAgeGRy
X3VfaW50KHJlZ2lzdGVyIFhEUiAqIHhkcnMsIHVfaW50ICogdXApDQogIHsN
CiAgDQoqKioqKioqKioqKioqKioNCioqKiAxMjYsMTMyICoqKioNCiAgICog
WERSIGFmc19pbnQzMiBpbnRlZ2Vycw0KICAgKiBzYW1lIGFzIHhkcl91X2xv
bmcgLSBvcGVuIGNvZGVkIHRvIHNhdmUgYSBwcm9jIGNhbGwhDQogICAqLw0K
ISBib29sX3QNCiAgeGRyX2ludChyZWdpc3RlciBYRFIgKiB4ZHJzLCBpbnQg
KmxwKQ0KICB7DQogIA0KLS0tIDEyNiwxMzIgLS0tLQ0KICAgKiBYRFIgYWZz
X2ludDMyIGludGVnZXJzDQogICAqIHNhbWUgYXMgeGRyX3VfbG9uZyAtIG9w
ZW4gY29kZWQgdG8gc2F2ZSBhIHByb2MgY2FsbCENCiAgICovDQohIGJvb2xf
dCBMSU5VWF9SRUdQQVJNXzANCiAgeGRyX2ludChyZWdpc3RlciBYRFIgKiB4
ZHJzLCBpbnQgKmxwKQ0KICB7DQogIA0KKioqKioqKioqKioqKioqDQoqKiog
MTQ2LDE1MiAqKioqDQogICAqIFhEUiB1bnNpZ25lZCBhZnNfaW50MzIgaW50
ZWdlcnMNCiAgICogc2FtZSBhcyB4ZHJfbG9uZyAtIG9wZW4gY29kZWQgdG8g
c2F2ZSBhIHByb2MgY2FsbCENCiAgICovDQohIGJvb2xfdA0KICB4ZHJfdV9p
bnQocmVnaXN0ZXIgWERSICogeGRycywgdV9pbnQgKiB1bHApDQogIHsNCiAg
DQotLS0gMTQ2LDE1MiAtLS0tDQogICAqIFhEUiB1bnNpZ25lZCBhZnNfaW50
MzIgaW50ZWdlcnMNCiAgICogc2FtZSBhcyB4ZHJfbG9uZyAtIG9wZW4gY29k
ZWQgdG8gc2F2ZSBhIHByb2MgY2FsbCENCiAgICovDQohIGJvb2xfdCBMSU5V
WF9SRUdQQVJNXzANCiAgeGRyX3VfaW50KHJlZ2lzdGVyIFhEUiAqIHhkcnMs
IHVfaW50ICogdWxwKQ0KICB7DQogIA0KKioqKioqKioqKioqKioqDQoqKiog
MTY3LDE3MyAqKioqDQogICAqIFhEUiBhZnNfaW50MzIgaW50ZWdlcnMNCiAg
ICogc2FtZSBhcyB4ZHJfdV9sb25nIC0gb3BlbiBjb2RlZCB0byBzYXZlIGEg
cHJvYyBjYWxsIQ0KICAgKi8NCiEgYm9vbF90DQogIHhkcl9sb25nKHJlZ2lz
dGVyIFhEUiAqIHhkcnMsIGxvbmcgKmxwKQ0KICB7DQogIA0KLS0tIDE2Nywx
NzMgLS0tLQ0KICAgKiBYRFIgYWZzX2ludDMyIGludGVnZXJzDQogICAqIHNh
bWUgYXMgeGRyX3VfbG9uZyAtIG9wZW4gY29kZWQgdG8gc2F2ZSBhIHByb2Mg
Y2FsbCENCiAgICovDQohIGJvb2xfdCBMSU5VWF9SRUdQQVJNXzANCiAgeGRy
X2xvbmcocmVnaXN0ZXIgWERSICogeGRycywgbG9uZyAqbHApDQogIHsNCiAg
DQoqKioqKioqKioqKioqKioNCioqKiAxODcsMTkzICoqKioNCiAgICogWERS
IHVuc2lnbmVkIGFmc19pbnQzMiBpbnRlZ2Vycw0KICAgKiBzYW1lIGFzIHhk
cl9sb25nIC0gb3BlbiBjb2RlZCB0byBzYXZlIGEgcHJvYyBjYWxsIQ0KICAg
Ki8NCiEgYm9vbF90DQogIHhkcl91X2xvbmcocmVnaXN0ZXIgWERSICogeGRy
cywgdV9sb25nICogdWxwKQ0KICB7DQogIA0KLS0tIDE4NywxOTMgLS0tLQ0K
ICAgKiBYRFIgdW5zaWduZWQgYWZzX2ludDMyIGludGVnZXJzDQogICAqIHNh
bWUgYXMgeGRyX2xvbmcgLSBvcGVuIGNvZGVkIHRvIHNhdmUgYSBwcm9jIGNh
bGwhDQogICAqLw0KISBib29sX3QgTElOVVhfUkVHUEFSTV8wDQogIHhkcl91
X2xvbmcocmVnaXN0ZXIgWERSICogeGRycywgdV9sb25nICogdWxwKQ0KICB7
DQogIA0KKioqKioqKioqKioqKioqDQoqKiogMjAzLDIwOSAqKioqDQogIC8q
DQogICAqIFhEUiBjaGFycw0KICAgKi8NCiEgYm9vbF90DQogIHhkcl9jaGFy
KHJlZ2lzdGVyIFhEUiAqIHhkcnMsIGNoYXIgKnNwKQ0KICB7DQogICAgICBh
ZnNfaW50MzIgbDsNCi0tLSAyMDMsMjA5IC0tLS0NCiAgLyoNCiAgICogWERS
IGNoYXJzDQogICAqLw0KISBib29sX3QgTElOVVhfUkVHUEFSTV8wDQogIHhk
cl9jaGFyKHJlZ2lzdGVyIFhEUiAqIHhkcnMsIGNoYXIgKnNwKQ0KICB7DQog
ICAgICBhZnNfaW50MzIgbDsNCioqKioqKioqKioqKioqKg0KKioqIDIzMCwy
MzYgKioqKg0KICAvKg0KICAgKiBYRFIgdW5zaWduZWQgY2hhcnMNCiAgICov
DQohIGJvb2xfdA0KICB4ZHJfdV9jaGFyKHJlZ2lzdGVyIFhEUiAqIHhkcnMs
IHVfY2hhciAqIHVzcCkNCiAgew0KICAgICAgYWZzX3VpbnQzMiBsOw0KLS0t
IDIzMCwyMzYgLS0tLQ0KICAvKg0KICAgKiBYRFIgdW5zaWduZWQgY2hhcnMN
CiAgICovDQohIGJvb2xfdCBMSU5VWF9SRUdQQVJNXzANCiAgeGRyX3VfY2hh
cihyZWdpc3RlciBYRFIgKiB4ZHJzLCB1X2NoYXIgKiB1c3ApDQogIHsNCiAg
ICAgIGFmc191aW50MzIgbDsNCioqKioqKioqKioqKioqKg0KKioqIDI1OCwy
NjQgKioqKg0KICAvKg0KICAgKiBYRFIgc2hvcnQgaW50ZWdlcnMNCiAgICov
DQohIGJvb2xfdA0KICB4ZHJfc2hvcnQocmVnaXN0ZXIgWERSICogeGRycywg
c2hvcnQgKnNwKQ0KICB7DQogICAgICBhZnNfaW50MzIgbDsNCi0tLSAyNTgs
MjY0IC0tLS0NCiAgLyoNCiAgICogWERSIHNob3J0IGludGVnZXJzDQogICAq
Lw0KISBib29sX3QgTElOVVhfUkVHUEFSTV8wDQogIHhkcl9zaG9ydChyZWdp
c3RlciBYRFIgKiB4ZHJzLCBzaG9ydCAqc3ApDQogIHsNCiAgICAgIGFmc19p
bnQzMiBsOw0KKioqKioqKioqKioqKioqDQoqKiogMjg1LDI5MSAqKioqDQog
IC8qDQogICAqIFhEUiB1bnNpZ25lZCBzaG9ydCBpbnRlZ2Vycw0KICAgKi8N
CiEgYm9vbF90DQogIHhkcl91X3Nob3J0KHJlZ2lzdGVyIFhEUiAqIHhkcnMs
IHVfc2hvcnQgKiB1c3ApDQogIHsNCiAgICAgIGFmc191aW50MzIgbDsNCi0t
LSAyODUsMjkxIC0tLS0NCiAgLyoNCiAgICogWERSIHVuc2lnbmVkIHNob3J0
IGludGVnZXJzDQogICAqLw0KISBib29sX3QgTElOVVhfUkVHUEFSTV8wDQog
IHhkcl91X3Nob3J0KHJlZ2lzdGVyIFhEUiAqIHhkcnMsIHVfc2hvcnQgKiB1
c3ApDQogIHsNCiAgICAgIGFmc191aW50MzIgbDsNCioqKioqKioqKioqKioq
Kg0KKioqIDMxMywzMTkgKioqKg0KICAvKg0KICAgKiBYRFIgYm9vbGVhbnMN
CiAgICovDQohIGJvb2xfdA0KICB4ZHJfYm9vbChyZWdpc3RlciBYRFIgKiB4
ZHJzLCBib29sX3QgKiBicCkNCiAgew0KICAgICAgYWZzX2ludDMyIGxiOw0K
LS0tIDMxMywzMTkgLS0tLQ0KICAvKg0KICAgKiBYRFIgYm9vbGVhbnMNCiAg
ICovDQohIGJvb2xfdCBMSU5VWF9SRUdQQVJNXzANCiAgeGRyX2Jvb2wocmVn
aXN0ZXIgWERSICogeGRycywgYm9vbF90ICogYnApDQogIHsNCiAgICAgIGFm
c19pbnQzMiBsYjsNCioqKioqKioqKioqKioqKg0KKioqIDM0MCwzNDYgKioq
Kg0KICAvKg0KICAgKiBYRFIgZW51bWVyYXRpb25zDQogICAqLw0KISBib29s
X3QNCiAgeGRyX2VudW0ocmVnaXN0ZXIgWERSICogeGRycywgZW51bV90ICog
ZXApDQogIHsNCiAgICAgIGVudW0gc2l6ZWNoZWNrIHsgU0laRVZBTCB9Owkv
KiB1c2VkIHRvIGZpbmQgdGhlIHNpemUgb2YgYW4gZW51bSAqLw0KLS0tIDM0
MCwzNDYgLS0tLQ0KICAvKg0KICAgKiBYRFIgZW51bWVyYXRpb25zDQogICAq
Lw0KISBib29sX3QgTElOVVhfUkVHUEFSTV8wDQogIHhkcl9lbnVtKHJlZ2lz
dGVyIFhEUiAqIHhkcnMsIGVudW1fdCAqIGVwKQ0KICB7DQogICAgICBlbnVt
IHNpemVjaGVjayB7IFNJWkVWQUwgfTsJLyogdXNlZCB0byBmaW5kIHRoZSBz
aXplIG9mIGFuIGVudW0gKi8NCioqKioqKioqKioqKioqKg0KKioqIDM1OCwz
NjQgKioqKg0KICAgKiBBbGxvd3MgdGhlIHNwZWNpZmljYXRpb24gb2YgYSBm
aXhlZCBzaXplIHNlcXVlbmNlIG9mIG9wYXF1ZSBieXRlcy4NCiAgICogY3Ag
cG9pbnRzIHRvIHRoZSBvcGFxdWUgb2JqZWN0IGFuZCBjbnQgZ2l2ZXMgdGhl
IGJ5dGUgbGVuZ3RoLg0KICAgKi8NCiEgYm9vbF90DQogIHhkcl9vcGFxdWUo
cmVnaXN0ZXIgWERSICogeGRycywgY2FkZHJfdCBjcCwgcmVnaXN0ZXIgdV9p
bnQgY250KQ0KICB7DQogICAgICByZWdpc3RlciB1X2ludCBybmR1cDsNCi0t
LSAzNTgsMzY0IC0tLS0NCiAgICogQWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9u
IG9mIGEgZml4ZWQgc2l6ZSBzZXF1ZW5jZSBvZiBvcGFxdWUgYnl0ZXMuDQog
ICAqIGNwIHBvaW50cyB0byB0aGUgb3BhcXVlIG9iamVjdCBhbmQgY250IGdp
dmVzIHRoZSBieXRlIGxlbmd0aC4NCiAgICovDQohIGJvb2xfdCBMSU5VWF9S
RUdQQVJNXzANCiAgeGRyX29wYXF1ZShyZWdpc3RlciBYRFIgKiB4ZHJzLCBj
YWRkcl90IGNwLCByZWdpc3RlciB1X2ludCBjbnQpDQogIHsNCiAgICAgIHJl
Z2lzdGVyIHVfaW50IHJuZHVwOw0KKioqKioqKioqKioqKioqDQoqKiogNDA4
LDQxNCAqKioqDQogICAqICpjcHAgaXMgYSBwb2ludGVyIHRvIHRoZSBieXRl
cywgKnNpemVwIGlzIHRoZSBjb3VudC4NCiAgICogSWYgKmNwcCBpcyBOVUxM
IG1heHNpemUgYnl0ZXMgYXJlIGFsbG9jYXRlZA0KICAgKi8NCiEgYm9vbF90
DQogIHhkcl9ieXRlcyhyZWdpc3RlciBYRFIgKiB4ZHJzLCBjaGFyICoqY3Bw
LCByZWdpc3RlciB1X2ludCAqIHNpemVwLA0KICAJICB1X2ludCBtYXhzaXpl
KQ0KICB7DQotLS0gNDA4LDQxNCAtLS0tDQogICAqICpjcHAgaXMgYSBwb2lu
dGVyIHRvIHRoZSBieXRlcywgKnNpemVwIGlzIHRoZSBjb3VudC4NCiAgICog
SWYgKmNwcCBpcyBOVUxMIG1heHNpemUgYnl0ZXMgYXJlIGFsbG9jYXRlZA0K
ICAgKi8NCiEgYm9vbF90IExJTlVYX1JFR1BBUk1fMA0KICB4ZHJfYnl0ZXMo
cmVnaXN0ZXIgWERSICogeGRycywgY2hhciAqKmNwcCwgcmVnaXN0ZXIgdV9p
bnQgKiBzaXplcCwNCiAgCSAgdV9pbnQgbWF4c2l6ZSkNCiAgew0KKioqKioq
KioqKioqKioqDQoqKiogNDcwLDQ3NiAqKioqDQogIAlzdHJ1Y3QgeGRyX2Rp
c2NyaW0gKmNob2ljZXM7CSogW3ZhbHVlLCB4ZHIgcHJvY10gZm9yIGVhY2gg
YXJtICoNCiAgCXhkcnByb2NfdCBkZmF1bHQ7CSogZGVmYXVsdCB4ZHIgcm91
dGluZSAqDQogICovDQohIGJvb2xfdA0KICB4ZHJfdW5pb24ocmVnaXN0ZXIg
WERSICogeGRycywgZW51bV90ICogZHNjbXAsIGNhZGRyX3QgdW5wLA0KICAJ
ICBzdHJ1Y3QgeGRyX2Rpc2NyaW0gKiBjaG9pY2VzLCB4ZHJwcm9jX3QgZGZh
dWx0KQ0KICB7DQotLS0gNDcwLDQ3NiAtLS0tDQogIAlzdHJ1Y3QgeGRyX2Rp
c2NyaW0gKmNob2ljZXM7CSogW3ZhbHVlLCB4ZHIgcHJvY10gZm9yIGVhY2gg
YXJtICoNCiAgCXhkcnByb2NfdCBkZmF1bHQ7CSogZGVmYXVsdCB4ZHIgcm91
dGluZSAqDQogICovDQohIGJvb2xfdCBMSU5VWF9SRUdQQVJNXzANCiAgeGRy
X3VuaW9uKHJlZ2lzdGVyIFhEUiAqIHhkcnMsIGVudW1fdCAqIGRzY21wLCBj
YWRkcl90IHVucCwNCiAgCSAgc3RydWN0IHhkcl9kaXNjcmltICogY2hvaWNl
cywgeGRycHJvY190IGRmYXVsdCkNCiAgew0KKioqKioqKioqKioqKioqDQoq
KiogNTE1LDUyMSAqKioqDQogICAqIHN0b3JhZ2UgaXMgYWxsb2NhdGVkLiAg
VGhlIGxhc3QgcGFyYW1ldGVyIGlzIHRoZSBtYXggYWxsb3dlZCBsZW5ndGgN
CiAgICogb2YgdGhlIHN0cmluZyBhcyBzcGVjaWZpZWQgYnkgYSBwcm90b2Nv
bC4NCiAgICovDQohIGJvb2xfdA0KICB4ZHJfc3RyaW5nKHJlZ2lzdGVyIFhE
UiAqIHhkcnMsIGNoYXIgKipjcHAsIHVfaW50IG1heHNpemUpDQogIHsNCiAg
ICAgIHJlZ2lzdGVyIGNoYXIgKnNwID0gKmNwcDsJLyogc3AgaXMgdGhlIGFj
dHVhbCBzdHJpbmcgcG9pbnRlciAqLw0KLS0tIDUxNSw1MjEgLS0tLQ0KICAg
KiBzdG9yYWdlIGlzIGFsbG9jYXRlZC4gIFRoZSBsYXN0IHBhcmFtZXRlciBp
cyB0aGUgbWF4IGFsbG93ZWQgbGVuZ3RoDQogICAqIG9mIHRoZSBzdHJpbmcg
YXMgc3BlY2lmaWVkIGJ5IGEgcHJvdG9jb2wuDQogICAqLw0KISBib29sX3Qg
TElOVVhfUkVHUEFSTV8wDQogIHhkcl9zdHJpbmcocmVnaXN0ZXIgWERSICog
eGRycywgY2hhciAqKmNwcCwgdV9pbnQgbWF4c2l6ZSkNCiAgew0KICAgICAg
cmVnaXN0ZXIgY2hhciAqc3AgPSAqY3BwOwkvKiBzcCBpcyB0aGUgYWN0dWFs
IHN0cmluZyBwb2ludGVyICovDQoqKioqKioqKioqKioqKioNCioqKiA1ODAs
NTg2ICoqKioNCiAgICogcm91dGluZXMgbGlrZSBjbG50X2NhbGwNCiAgICov
DQogICNpZm5kZWYJS0VSTkVMDQohIGJvb2xfdA0KICB4ZHJfd3JhcHN0cmlu
ZyhyZWdpc3RlciBYRFIgKiB4ZHJzLCBjaGFyICoqY3BwKQ0KICB7DQogICAg
ICBpZiAoeGRyX3N0cmluZyh4ZHJzLCBjcHAsIEJVRlNJWikpIHsNCi0tLSA1
ODAsNTg2IC0tLS0NCiAgICogcm91dGluZXMgbGlrZSBjbG50X2NhbGwNCiAg
ICovDQogICNpZm5kZWYJS0VSTkVMDQohIGJvb2xfdCBMSU5VWF9SRUdQQVJN
XzANCiAgeGRyX3dyYXBzdHJpbmcocmVnaXN0ZXIgWERSICogeGRycywgY2hh
ciAqKmNwcCkNCiAgew0KICAgICAgaWYgKHhkcl9zdHJpbmcoeGRycywgY3Bw
LCBCVUZTSVopKSB7DQoqKiogLi9zcmMvcngveGRyX2Fmc3V1aWQuY34JU2F0
IE1heSAxNSAwNjo1MzozMCAyMDA0DQotLS0gLi9zcmMvcngveGRyX2Fmc3V1
aWQuYwlGcmkgSnVuIDExIDIzOjA4OjAyIDIwMDQNCioqKioqKioqKioqKioq
Kg0KKioqIDM3LDQzICoqKioNCiAgI2VuZGlmDQogICNlbmRpZg0KICANCiEg
aW50DQogIHhkcl9hZnNVVUlEKFhEUiAqIHhkcnMsIGFmc1VVSUQgKiBvYmpw
KQ0KICB7DQogICAgICBpZiAoIXhkcl9hZnNfdWludDMyKHhkcnMsICZvYmpw
LT50aW1lX2xvdykpIHsNCi0tLSAzNyw0MyAtLS0tDQogICNlbmRpZg0KICAj
ZW5kaWYNCiAgDQohIGludCBMSU5VWF9SRUdQQVJNXzANCiAgeGRyX2Fmc1VV
SUQoWERSICogeGRycywgYWZzVVVJRCAqIG9ianApDQogIHsNCiAgICAgIGlm
ICgheGRyX2Fmc191aW50MzIoeGRycywgJm9ianAtPnRpbWVfbG93KSkgew0K
KioqIC4vc3JjL3J4L3hkcl9pbnQzMi5jfglXZWQgSnVsIDE2IDAxOjE2OjEy
IDIwMDMNCi0tLSAuL3NyYy9yeC94ZHJfaW50MzIuYwlGcmkgSnVuIDExIDIz
OjA4OjM1IDIwMDQNCioqKioqKioqKioqKioqKg0KKioqIDUwLDU2ICoqKioN
CiAgICogWERSIGFmc19pbnQzMiBpbnRlZ2Vycw0KICAgKiBzYW1lIGFzIHhk
cl91X2xvbmcgLSBvcGVuIGNvZGVkIHRvIHNhdmUgYSBwcm9jIGNhbGwhDQog
ICAqLw0KISBib29sX3QNCiAgeGRyX2Fmc19pbnQzMihyZWdpc3RlciBYRFIg
KiB4ZHJzLCBhZnNfaW50MzIgKiBscCkNCiAgew0KICANCi0tLSA1MCw1NiAt
LS0tDQogICAqIFhEUiBhZnNfaW50MzIgaW50ZWdlcnMNCiAgICogc2FtZSBh
cyB4ZHJfdV9sb25nIC0gb3BlbiBjb2RlZCB0byBzYXZlIGEgcHJvYyBjYWxs
IQ0KICAgKi8NCiEgYm9vbF90IExJTlVYX1JFR1BBUk1fMA0KICB4ZHJfYWZz
X2ludDMyKHJlZ2lzdGVyIFhEUiAqIHhkcnMsIGFmc19pbnQzMiAqIGxwKQ0K
ICB7DQogIA0KKioqKioqKioqKioqKioqDQoqKiogNzAsNzYgKioqKg0KICAg
KiBYRFIgdW5zaWduZWQgYWZzX2ludDMyIGludGVnZXJzDQogICAqIHNhbWUg
YXMgeGRyX2xvbmcgLSBvcGVuIGNvZGVkIHRvIHNhdmUgYSBwcm9jIGNhbGwh
DQogICAqLw0KISBib29sX3QNCiAgeGRyX2Fmc191aW50MzIocmVnaXN0ZXIg
WERSICogeGRycywgYWZzX3VpbnQzMiAqIHVscCkNCiAgew0KICANCi0tLSA3
MCw3NiAtLS0tDQogICAqIFhEUiB1bnNpZ25lZCBhZnNfaW50MzIgaW50ZWdl
cnMNCiAgICogc2FtZSBhcyB4ZHJfbG9uZyAtIG9wZW4gY29kZWQgdG8gc2F2
ZSBhIHByb2MgY2FsbCENCiAgICovDQohIGJvb2xfdCBMSU5VWF9SRUdQQVJN
XzANCiAgeGRyX2Fmc191aW50MzIocmVnaXN0ZXIgWERSICogeGRycywgYWZz
X3VpbnQzMiAqIHVscCkNCiAgew0KICANCioqKiAuL3NyYy9yeC94ZHJfaW50
NjQuY34JTW9uIERlYyAgOCAwNDoxNDowOCAyMDAzDQotLS0gLi9zcmMvcngv
eGRyX2ludDY0LmMJRnJpIEp1biAxMSAyMzoxMzo1OSAyMDA0DQoqKioqKioq
KioqKioqKioNCioqKiAzMCw0MiAqKioqDQogIC8qDQogICAqIFhEUiBhZnNf
aW50NjQgaW50ZWdlcnMNCiAgICovDQohIGJvb2xfdA0KICB4ZHJfaW50NjQo
cmVnaXN0ZXIgWERSICogeGRycywgYWZzX2ludDY0ICogdWxwKQ0KICB7DQog
ICAgICByZXR1cm4geGRyX2Fmc19pbnQ2NCh4ZHJzLCB1bHApOw0KICB9DQog
IA0KISBib29sX3QNCiAgeGRyX2Fmc19pbnQ2NChyZWdpc3RlciBYRFIgKiB4
ZHJzLCBhZnNfaW50NjQgKiB1bHApDQogIHsNCiAgICAgIGFmc19pbnQzMiBo
aWdoOw0KLS0tIDMwLDQyIC0tLS0NCiAgLyoNCiAgICogWERSIGFmc19pbnQ2
NCBpbnRlZ2Vycw0KICAgKi8NCiEgYm9vbF90IExJTlVYX1JFR1BBUk1fMA0K
ICB4ZHJfaW50NjQocmVnaXN0ZXIgWERSICogeGRycywgYWZzX2ludDY0ICog
dWxwKQ0KICB7DQogICAgICByZXR1cm4geGRyX2Fmc19pbnQ2NCh4ZHJzLCB1
bHApOw0KICB9DQogIA0KISBib29sX3QgTElOVVhfUkVHUEFSTV8wDQogIHhk
cl9hZnNfaW50NjQocmVnaXN0ZXIgWERSICogeGRycywgYWZzX2ludDY0ICog
dWxwKQ0KICB7DQogICAgICBhZnNfaW50MzIgaGlnaDsNCioqKioqKioqKioq
KioqKg0KKioqIDY3LDc5ICoqKioNCiAgLyoNCiAgICogWERSIGFmc19pbnQ2
NCBpbnRlZ2Vycw0KICAgKi8NCiEgYm9vbF90DQogIHhkcl91aW50NjQocmVn
aXN0ZXIgWERSICogeGRycywgYWZzX3VpbnQ2NCAqIHVscCkNCiAgew0KICAg
ICAgcmV0dXJuIHhkcl9hZnNfdWludDY0KHhkcnMsIHVscCk7DQogIH0NCiAg
DQohIGJvb2xfdA0KICB4ZHJfYWZzX3VpbnQ2NChyZWdpc3RlciBYRFIgKiB4
ZHJzLCBhZnNfdWludDY0ICogdWxwKQ0KICB7DQogICAgICBhZnNfdWludDMy
IGhpZ2g7DQotLS0gNjcsNzkgLS0tLQ0KICAvKg0KICAgKiBYRFIgYWZzX2lu
dDY0IGludGVnZXJzDQogICAqLw0KISBib29sX3QgTElOVVhfUkVHUEFSTV8w
DQogIHhkcl91aW50NjQocmVnaXN0ZXIgWERSICogeGRycywgYWZzX3VpbnQ2
NCAqIHVscCkNCiAgew0KICAgICAgcmV0dXJuIHhkcl9hZnNfdWludDY0KHhk
cnMsIHVscCk7DQogIH0NCiAgDQohIGJvb2xfdCBMSU5VWF9SRUdQQVJNXzAN
CiAgeGRyX2Fmc191aW50NjQocmVnaXN0ZXIgWERSICogeGRycywgYWZzX3Vp
bnQ2NCAqIHVscCkNCiAgew0KICAgICAgYWZzX3VpbnQzMiBoaWdoOw0KKioq
KioqKioqKioqKioqDQoqKiogMTA1LDExNyAqKioqDQogIC8qDQogICAqIFhE
UiBhZnNfaW50NjQgaW50ZWdlcnMNCiAgICovDQohIGJvb2xfdA0KICB4ZHJf
aW50NjQocmVnaXN0ZXIgWERSICogeGRycywgYWZzX2ludDY0ICogdWxwKQ0K
ICB7DQogICAgICByZXR1cm4geGRyX2Fmc19pbnQ2NCh4ZHJzLCB1bHApOw0K
ICB9DQogIA0KISBib29sX3QNCiAgeGRyX2Fmc19pbnQ2NChyZWdpc3RlciBY
RFIgKiB4ZHJzLCBhZnNfaW50NjQgKiB1bHApDQogIHsNCiAgICAgIGlmICh4
ZHJzLT54X29wID09IFhEUl9ERUNPREUpIHsNCi0tLSAxMDUsMTE3IC0tLS0N
CiAgLyoNCiAgICogWERSIGFmc19pbnQ2NCBpbnRlZ2Vycw0KICAgKi8NCiEg
Ym9vbF90IExJTlVYX1JFR1BBUk1fMA0KICB4ZHJfaW50NjQocmVnaXN0ZXIg
WERSICogeGRycywgYWZzX2ludDY0ICogdWxwKQ0KICB7DQogICAgICByZXR1
cm4geGRyX2Fmc19pbnQ2NCh4ZHJzLCB1bHApOw0KICB9DQogIA0KISBib29s
X3QgTElOVVhfUkVHUEFSTV8wDQogIHhkcl9hZnNfaW50NjQocmVnaXN0ZXIg
WERSICogeGRycywgYWZzX2ludDY0ICogdWxwKQ0KICB7DQogICAgICBpZiAo
eGRycy0+eF9vcCA9PSBYRFJfREVDT0RFKSB7DQoqKioqKioqKioqKioqKioN
CioqKiAxMzIsMTQ0ICoqKioNCiAgLyoNCiAgICogWERSIGFmc191aW50NjQg
aW50ZWdlcnMNCiAgICovDQohIGJvb2xfdA0KICB4ZHJfdWludDY0KHJlZ2lz
dGVyIFhEUiAqIHhkcnMsIGFmc191aW50NjQgKiB1bHApDQogIHsNCiAgICAg
IHJldHVybiB4ZHJfYWZzX3VpbnQ2NCh4ZHJzLCB1bHApOw0KICB9DQogIA0K
ISBib29sX3QNCiAgeGRyX2Fmc191aW50NjQocmVnaXN0ZXIgWERSICogeGRy
cywgYWZzX3VpbnQ2NCAqIHVscCkNCiAgew0KICAgICAgaWYgKHhkcnMtPnhf
b3AgPT0gWERSX0RFQ09ERSkgew0KLS0tIDEzMiwxNDQgLS0tLQ0KICAvKg0K
ICAgKiBYRFIgYWZzX3VpbnQ2NCBpbnRlZ2Vycw0KICAgKi8NCiEgYm9vbF90
IExJTlVYX1JFR1BBUk1fMA0KICB4ZHJfdWludDY0KHJlZ2lzdGVyIFhEUiAq
IHhkcnMsIGFmc191aW50NjQgKiB1bHApDQogIHsNCiAgICAgIHJldHVybiB4
ZHJfYWZzX3VpbnQ2NCh4ZHJzLCB1bHApOw0KICB9DQogIA0KISBib29sX3Qg
TElOVVhfUkVHUEFSTV8wDQogIHhkcl9hZnNfdWludDY0KHJlZ2lzdGVyIFhE
UiAqIHhkcnMsIGFmc191aW50NjQgKiB1bHApDQogIHsNCiAgICAgIGlmICh4
ZHJzLT54X29wID09IFhEUl9ERUNPREUpIHsNCioqKiAuL3NyYy9yeC94ZHJf
ZmxvYXQuY34JV2VkIEp1bCAxNiAwMToxNjoxMiAyMDAzDQotLS0gLi9zcmMv
cngveGRyX2Zsb2F0LmMJRnJpIEp1biAxMSAyMzoxMzoxMSAyMDA0DQoqKioq
KioqKioqKioqKioNCioqKiA1Myw1OSAqKioqDQogICAqIGluIHRoZSBzeXN0
ZW0gbGlicmFyaWVzLg0KICAgKi8NCiAgDQohIGJvb2xfdA0KICB4ZHJfZmxv
YXQocmVnaXN0ZXIgWERSICogeGRycywgcmVnaXN0ZXIgZmxvYXQgKmZwKQ0K
ICB7DQogICNpZmRlZiBBRlNfTlQ0MF9FTlYNCi0tLSA1Myw1OSAtLS0tDQog
ICAqIGluIHRoZSBzeXN0ZW0gbGlicmFyaWVzLg0KICAgKi8NCiAgDQohIGJv
b2xfdCBMSU5VWF9SRUdQQVJNXzANCiAgeGRyX2Zsb2F0KHJlZ2lzdGVyIFhE
UiAqIHhkcnMsIHJlZ2lzdGVyIGZsb2F0ICpmcCkNCiAgew0KICAjaWZkZWYg
QUZTX05UNDBfRU5WDQoqKioqKioqKioqKioqKioNCioqKiA3NCw4MCAqKioq
DQogICNlbmRpZg0KICB9DQogIA0KISBib29sX3QNCiAgeGRyX2RvdWJsZShy
ZWdpc3RlciBYRFIgKiB4ZHJzLCBkb3VibGUgKmRwKQ0KICB7DQogICNpZmRl
ZiBBRlNfTlQ0MF9FTlYNCi0tLSA3NCw4MCAtLS0tDQogICNlbmRpZg0KICB9
DQogIA0KISBib29sX3QgTElOVVhfUkVHUEFSTV8wDQogIHhkcl9kb3VibGUo
cmVnaXN0ZXIgWERSICogeGRycywgZG91YmxlICpkcCkNCiAgew0KICAjaWZk
ZWYgQUZTX05UNDBfRU5WDQoqKiogLi9zcmMvcngveGRyLmh+CVRodSBNYXIg
MTEgMDA6MDE6NTQgMjAwNA0KLS0tIC4vc3JjL3J4L3hkci5oCUZyaSBKdW4g
MTEgMjM6MjM6MDMgMjAwNA0KKioqKioqKioqKioqKioqDQoqKiogNjMsNjgg
KioqKg0KLS0tIDYzLDc0IC0tLS0NCiAgI2RlZmluZSBtZW1fZnJlZShwdHIs
IGJzaXplKQlmcmVlKHB0cikNCiAgI2VuZGlmDQogIA0KKyAjaWYgZGVmaW5l
ZChBRlNfSTM4Nl9MSU5VWDI2X0VOVikNCisgI2RlZmluZSBMSU5VWF9SRUdQ
QVJNXzAgX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpDQorICNlbHNlDQor
ICNkZWZpbmUgTElOVVhfUkVHUEFSTV8wDQorICNlbmRpZg0KKyANCiAgI2lm
IGRlZmluZWQoQUZTX0FNRDY0X0xJTlVYMjRfRU5WKSB8fCAoZGVmaW5lZChL
RVJORUwpICYmICFkZWZpbmVkKFVLRVJORUwpKQ0KICAjZGVmaW5lIHhkcl92
b2lkIGFmc194ZHJfdm9pZA0KICAjZGVmaW5lIHhkcl9pbnQgYWZzX3hkcl9p
bnQNCioqKiAuL3NyYy9yeC94ZHJfcHJvdG90eXBlcy5ofglXZWQgSnVsIDE2
IDAxOjE2OjEyIDIwMDMNCi0tLSAuL3NyYy9yeC94ZHJfcHJvdG90eXBlcy5o
CUZyaSBKdW4gMTEgMjM6MjQ6MjEgMjAwNA0KKioqKioqKioqKioqKioqDQoq
KiogMTksMzUgKioqKg0KICAjZW5kaWYNCiAgDQogIC8qIHhkcl9hZnN1dWlk
LmMgKi8NCiEgZXh0ZXJuIGludCB4ZHJfYWZzVVVJRChYRFIgKiB4ZHJzLCBh
ZnNVVUlEICogb2JqcCk7DQogIA0KICAvKiB4ZHJfaW50MzIuYyAqLw0KISBl
eHRlcm4gYm9vbF90IHhkcl9hZnNfaW50MzIocmVnaXN0ZXIgWERSICogeGRy
cywgYWZzX2ludDMyICogaXApOw0KISBleHRlcm4gYm9vbF90IHhkcl9hZnNf
dWludDMyKHJlZ2lzdGVyIFhEUiAqIHhkcnMsIGFmc191aW50MzIgKiB1cCk7
DQogIA0KICAvKiB4ZHJfaW50NjQuYyAqLw0KISBleHRlcm4gYm9vbF90IHhk
cl9pbnQ2NChyZWdpc3RlciBYRFIgKiB4ZHJzLCBhZnNfaW50NjQgKiB1bHAp
Ow0KISBleHRlcm4gYm9vbF90IHhkcl9hZnNfaW50NjQocmVnaXN0ZXIgWERS
ICogeGRycywgYWZzX2ludDY0ICogdWxwKTsNCiEgZXh0ZXJuIGJvb2xfdCB4
ZHJfdWludDY0KHJlZ2lzdGVyIFhEUiAqIHhkcnMsIGFmc191aW50NjQgKiB1
bHApOw0KISBleHRlcm4gYm9vbF90IHhkcl9hZnNfdWludDY0KHJlZ2lzdGVy
IFhEUiAqIHhkcnMsIGFmc191aW50NjQgKiB1bHApOw0KICANCiAgLyogeGRy
X3J4LmMgKi8NCiAgZXh0ZXJuIHZvaWQgeGRycnhfY3JlYXRlKHJlZ2lzdGVy
IFhEUiAqIHhkcnMsIHJlZ2lzdGVyIHN0cnVjdCByeF9jYWxsICpjYWxsLA0K
LS0tIDE5LDM1IC0tLS0NCiAgI2VuZGlmDQogIA0KICAvKiB4ZHJfYWZzdXVp
ZC5jICovDQohIGV4dGVybiBpbnQgTElOVVhfUkVHUEFSTV8wIHhkcl9hZnNV
VUlEKFhEUiAqIHhkcnMsIGFmc1VVSUQgKiBvYmpwKTsNCiAgDQogIC8qIHhk
cl9pbnQzMi5jICovDQohIGV4dGVybiBib29sX3QgTElOVVhfUkVHUEFSTV8w
IHhkcl9hZnNfaW50MzIocmVnaXN0ZXIgWERSICogeGRycywgYWZzX2ludDMy
ICogaXApOw0KISBleHRlcm4gYm9vbF90IExJTlVYX1JFR1BBUk1fMCB4ZHJf
YWZzX3VpbnQzMihyZWdpc3RlciBYRFIgKiB4ZHJzLCBhZnNfdWludDMyICog
dXApOw0KICANCiAgLyogeGRyX2ludDY0LmMgKi8NCiEgZXh0ZXJuIGJvb2xf
dCBMSU5VWF9SRUdQQVJNXzAgeGRyX2ludDY0KHJlZ2lzdGVyIFhEUiAqIHhk
cnMsIGFmc19pbnQ2NCAqIHVscCk7DQohIGV4dGVybiBib29sX3QgTElOVVhf
UkVHUEFSTV8wIHhkcl9hZnNfaW50NjQocmVnaXN0ZXIgWERSICogeGRycywg
YWZzX2ludDY0ICogdWxwKTsNCiEgZXh0ZXJuIGJvb2xfdCBMSU5VWF9SRUdQ
QVJNXzAgeGRyX3VpbnQ2NChyZWdpc3RlciBYRFIgKiB4ZHJzLCBhZnNfdWlu
dDY0ICogdWxwKTsNCiEgZXh0ZXJuIGJvb2xfdCBMSU5VWF9SRUdQQVJNXzAg
eGRyX2Fmc191aW50NjQocmVnaXN0ZXIgWERSICogeGRycywgYWZzX3VpbnQ2
NCAqIHVscCk7DQogIA0KICAvKiB4ZHJfcnguYyAqLw0KICBleHRlcm4gdm9p
ZCB4ZHJyeF9jcmVhdGUocmVnaXN0ZXIgWERSICogeGRycywgcmVnaXN0ZXIg
c3RydWN0IHJ4X2NhbGwgKmNhbGwsDQoqKioqKioqKioqKioqKioNCioqKiA0
Nyw3NCAqKioqDQogIA0KICAvKiB4ZHIuYyAqLw0KICBleHRlcm4gYm9vbF90
IHhkcl92b2lkKHZvaWQpOw0KISBleHRlcm4gYm9vbF90IHhkcl9sb25nKHJl
Z2lzdGVyIFhEUiAqIHhkcnMsIGxvbmcgKmxwKTsNCiEgZXh0ZXJuIGJvb2xf
dCB4ZHJfdV9sb25nKHJlZ2lzdGVyIFhEUiAqIHhkcnMsIHVfbG9uZyAqIHVs
cCk7DQohIGV4dGVybiBib29sX3QgeGRyX2ludChyZWdpc3RlciBYRFIgKiB4
ZHJzLCBpbnQgKmlwKTsNCiEgZXh0ZXJuIGJvb2xfdCB4ZHJfdV9pbnQocmVn
aXN0ZXIgWERSICogeGRycywgdV9pbnQgKiB1cCk7DQohIGV4dGVybiBib29s
X3QgeGRyX2NoYXIocmVnaXN0ZXIgWERSICogeGRycywgY2hhciAqc3ApOw0K
ISBleHRlcm4gYm9vbF90IHhkcl91X2NoYXIocmVnaXN0ZXIgWERSICogeGRy
cywgdV9jaGFyICogdXNwKTsNCiEgZXh0ZXJuIGJvb2xfdCB4ZHJfc2hvcnQo
cmVnaXN0ZXIgWERSICogeGRycywgc2hvcnQgKnNwKTsNCiEgZXh0ZXJuIGJv
b2xfdCB4ZHJfdV9zaG9ydChyZWdpc3RlciBYRFIgKiB4ZHJzLCB1X3Nob3J0
ICogdXNwKTsNCiEgZXh0ZXJuIGJvb2xfdCB4ZHJfYm9vbChyZWdpc3RlciBY
RFIgKiB4ZHJzLCBib29sX3QgKiBicCk7DQohIGV4dGVybiBib29sX3QgeGRy
X2VudW0ocmVnaXN0ZXIgWERSICogeGRycywgZW51bV90ICogZXApOw0KISBl
eHRlcm4gYm9vbF90IHhkcl9vcGFxdWUocmVnaXN0ZXIgWERSICogeGRycywg
Y2FkZHJfdCBjcCwgcmVnaXN0ZXIgdV9pbnQgY250KTsNCiEgZXh0ZXJuIGJv
b2xfdCB4ZHJfYnl0ZXMocmVnaXN0ZXIgWERSICogeGRycywgY2hhciAqKmNw
cCwNCiAgCQkJcmVnaXN0ZXIgdV9pbnQgKiBzaXplcCwgdV9pbnQgbWF4c2l6
ZSk7DQohIGV4dGVybiBib29sX3QgeGRyX3VuaW9uKHJlZ2lzdGVyIFhEUiAq
IHhkcnMsIGVudW1fdCAqIGRzY21wLCBjYWRkcl90IHVucCwNCiAgCQkJc3Ry
dWN0IHhkcl9kaXNjcmltICpjaG9pY2VzLCB4ZHJwcm9jX3QgZGZhdWx0KTsN
CiEgZXh0ZXJuIGJvb2xfdCB4ZHJfc3RyaW5nKHJlZ2lzdGVyIFhEUiAqIHhk
cnMsIGNoYXIgKipjcHAsIHVfaW50IG1heHNpemUpOw0KISBleHRlcm4gYm9v
bF90IHhkcl93cmFwc3RyaW5nKHJlZ2lzdGVyIFhEUiAqIHhkcnMsIGNoYXIg
KipjcHApOw0KICANCiAgDQogIC8qIHhkcl9mbG9hdC5jICovDQohIGV4dGVy
biBib29sX3QgeGRyX2Zsb2F0KHJlZ2lzdGVyIFhEUiAqIHhkcnMsIHJlZ2lz
dGVyIGZsb2F0ICpmcCk7DQohIGV4dGVybiBib29sX3QgeGRyX2RvdWJsZShy
ZWdpc3RlciBYRFIgKiB4ZHJzLCBkb3VibGUgKmRwKTsNCiAgDQogIC8qIHhk
cl9tZW0uYyAqLw0KICBleHRlcm4gdm9pZCB4ZHJtZW1fY3JlYXRlKHJlZ2lz
dGVyIFhEUiAqIHhkcnMsIGNhZGRyX3QgYWRkciwgdV9pbnQgc2l6ZSwNCi0t
LSA0Nyw3NCAtLS0tDQogIA0KICAvKiB4ZHIuYyAqLw0KICBleHRlcm4gYm9v
bF90IHhkcl92b2lkKHZvaWQpOw0KISBleHRlcm4gYm9vbF90IExJTlVYX1JF
R1BBUk1fMCB4ZHJfbG9uZyhyZWdpc3RlciBYRFIgKiB4ZHJzLCBsb25nICps
cCk7DQohIGV4dGVybiBib29sX3QgTElOVVhfUkVHUEFSTV8wIHhkcl91X2xv
bmcocmVnaXN0ZXIgWERSICogeGRycywgdV9sb25nICogdWxwKTsNCiEgZXh0
ZXJuIGJvb2xfdCBMSU5VWF9SRUdQQVJNXzAgeGRyX2ludChyZWdpc3RlciBY
RFIgKiB4ZHJzLCBpbnQgKmlwKTsNCiEgZXh0ZXJuIGJvb2xfdCBMSU5VWF9S
RUdQQVJNXzAgeGRyX3VfaW50KHJlZ2lzdGVyIFhEUiAqIHhkcnMsIHVfaW50
ICogdXApOw0KISBleHRlcm4gYm9vbF90IExJTlVYX1JFR1BBUk1fMCB4ZHJf
Y2hhcihyZWdpc3RlciBYRFIgKiB4ZHJzLCBjaGFyICpzcCk7DQohIGV4dGVy
biBib29sX3QgTElOVVhfUkVHUEFSTV8wIHhkcl91X2NoYXIocmVnaXN0ZXIg
WERSICogeGRycywgdV9jaGFyICogdXNwKTsNCiEgZXh0ZXJuIGJvb2xfdCBM
SU5VWF9SRUdQQVJNXzAgeGRyX3Nob3J0KHJlZ2lzdGVyIFhEUiAqIHhkcnMs
IHNob3J0ICpzcCk7DQohIGV4dGVybiBib29sX3QgTElOVVhfUkVHUEFSTV8w
IHhkcl91X3Nob3J0KHJlZ2lzdGVyIFhEUiAqIHhkcnMsIHVfc2hvcnQgKiB1
c3ApOw0KISBleHRlcm4gYm9vbF90IExJTlVYX1JFR1BBUk1fMCB4ZHJfYm9v
bChyZWdpc3RlciBYRFIgKiB4ZHJzLCBib29sX3QgKiBicCk7DQohIGV4dGVy
biBib29sX3QgTElOVVhfUkVHUEFSTV8wIHhkcl9lbnVtKHJlZ2lzdGVyIFhE
UiAqIHhkcnMsIGVudW1fdCAqIGVwKTsNCiEgZXh0ZXJuIGJvb2xfdCBMSU5V
WF9SRUdQQVJNXzAgeGRyX29wYXF1ZShyZWdpc3RlciBYRFIgKiB4ZHJzLCBj
YWRkcl90IGNwLCByZWdpc3RlciB1X2ludCBjbnQpOw0KISBleHRlcm4gYm9v
bF90IExJTlVYX1JFR1BBUk1fMCB4ZHJfYnl0ZXMocmVnaXN0ZXIgWERSICog
eGRycywgY2hhciAqKmNwcCwNCiAgCQkJcmVnaXN0ZXIgdV9pbnQgKiBzaXpl
cCwgdV9pbnQgbWF4c2l6ZSk7DQohIGV4dGVybiBib29sX3QgTElOVVhfUkVH
UEFSTV8wIHhkcl91bmlvbihyZWdpc3RlciBYRFIgKiB4ZHJzLCBlbnVtX3Qg
KiBkc2NtcCwgY2FkZHJfdCB1bnAsDQogIAkJCXN0cnVjdCB4ZHJfZGlzY3Jp
bSAqY2hvaWNlcywgeGRycHJvY190IGRmYXVsdCk7DQohIGV4dGVybiBib29s
X3QgTElOVVhfUkVHUEFSTV8wIHhkcl9zdHJpbmcocmVnaXN0ZXIgWERSICog
eGRycywgY2hhciAqKmNwcCwgdV9pbnQgbWF4c2l6ZSk7DQohIGV4dGVybiBi
b29sX3QgTElOVVhfUkVHUEFSTV8wIHhkcl93cmFwc3RyaW5nKHJlZ2lzdGVy
IFhEUiAqIHhkcnMsIGNoYXIgKipjcHApOw0KICANCiAgDQogIC8qIHhkcl9m
bG9hdC5jICovDQohIGV4dGVybiBib29sX3QgTElOVVhfUkVHUEFSTV8wIHhk
cl9mbG9hdChyZWdpc3RlciBYRFIgKiB4ZHJzLCByZWdpc3RlciBmbG9hdCAq
ZnApOw0KISBleHRlcm4gYm9vbF90IExJTlVYX1JFR1BBUk1fMCB4ZHJfZG91
YmxlKHJlZ2lzdGVyIFhEUiAqIHhkcnMsIGRvdWJsZSAqZHApOw0KICANCiAg
LyogeGRyX21lbS5jICovDQogIGV4dGVybiB2b2lkIHhkcm1lbV9jcmVhdGUo
cmVnaXN0ZXIgWERSICogeGRycywgY2FkZHJfdCBhZGRyLCB1X2ludCBzaXpl
LA0K

--34210304-1864826655-1087331937=:11043--