From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH 09/17] SVM: use generic instruction decoding Date: Wed, 14 Sep 2016 18:56:44 +0100 Message-ID: References: <57D17C78020000780010D127@prv-mh.provo.novell.com> <57D1806F020000780010D18F@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bkEQY-0002uu-17 for xen-devel@lists.xenproject.org; Wed, 14 Sep 2016 17:56:54 +0000 In-Reply-To: <57D1806F020000780010D18F@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich , xen-devel Cc: Boris Ostrovsky , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org T24gMDgvMDkvMTYgMTQ6MTQsIEphbiBCZXVsaWNoIHdyb3RlOgo+IEBAIC04OSwxNDEgKzU0LDk2 IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHN2bV9uZXh0cmlwX2luc25fbGUKPiAgICAgIHJldHVy biB2bWNiLT5uZXh0cmlwIC0gdm1jYi0+cmlwOwo+ICB9Cj4gIAo+IC0vKiBGaXJzdCBieXRlOiBM ZW5ndGguIEZvbGxvd2luZyBieXRlczogT3Bjb2RlIGJ5dGVzLiAqLwo+IC0jZGVmaW5lIE1BS0Vf SU5TVFIobm0sIC4uLikgc3RhdGljIGNvbnN0IHU4IE9QQ09ERV8jI25tW10gPSB7IF9fVkFfQVJH U19fIH0KPiAtTUFLRV9JTlNUUihJTlZELCAgIDIsIDB4MGYsIDB4MDgpOwo+IC1NQUtFX0lOU1RS KFdCSU5WRCwgMiwgMHgwZiwgMHgwOSk7Cj4gLU1BS0VfSU5TVFIoQ1BVSUQsICAyLCAweDBmLCAw eGEyKTsKPiAtTUFLRV9JTlNUUihSRE1TUiwgIDIsIDB4MGYsIDB4MzIpOwo+IC1NQUtFX0lOU1RS KFdSTVNSLCAgMiwgMHgwZiwgMHgzMCk7Cj4gLU1BS0VfSU5TVFIoVk1DQUxMLCAzLCAweDBmLCAw eDAxLCAweGQ5KTsKPiAtTUFLRV9JTlNUUihITFQsICAgIDEsIDB4ZjQpOwo+IC1NQUtFX0lOU1RS KElOVDMsICAgMSwgMHhjYyk7Cj4gLU1BS0VfSU5TVFIoUkRUU0MsICAyLCAweDBmLCAweDMxKTsK PiAtTUFLRV9JTlNUUihQQVVTRSwgIDEsIDB4OTApOwo+IC1NQUtFX0lOU1RSKFhTRVRCViwgMywg MHgwZiwgMHgwMSwgMHhkMSk7Cj4gLU1BS0VfSU5TVFIoVk1SVU4sICAzLCAweDBmLCAweDAxLCAw eGQ4KTsKPiAtTUFLRV9JTlNUUihWTUxPQUQsIDMsIDB4MGYsIDB4MDEsIDB4ZGEpOwo+IC1NQUtF X0lOU1RSKFZNU0FWRSwgMywgMHgwZiwgMHgwMSwgMHhkYik7Cj4gLU1BS0VfSU5TVFIoU1RHSSwg ICAzLCAweDBmLCAweDAxLCAweGRjKTsKPiAtTUFLRV9JTlNUUihDTEdJLCAgIDMsIDB4MGYsIDB4 MDEsIDB4ZGQpOwo+IC1NQUtFX0lOU1RSKElOVkxQR0EsMywgMHgwZiwgMHgwMSwgMHhkZik7Cj4g LQo+IC1zdGF0aWMgY29uc3QgdTggKmNvbnN0IG9wY19ieXRlc1tJTlNUUl9NQVhfQ09VTlRdID0K PiAtewo+IC0gICAgW0lOU1RSX0lOVkRdICAgPSBPUENPREVfSU5WRCwKPiAtICAgIFtJTlNUUl9X QklOVkRdID0gT1BDT0RFX1dCSU5WRCwKPiAtICAgIFtJTlNUUl9DUFVJRF0gID0gT1BDT0RFX0NQ VUlELAo+IC0gICAgW0lOU1RSX1JETVNSXSAgPSBPUENPREVfUkRNU1IsCj4gLSAgICBbSU5TVFJf V1JNU1JdICA9IE9QQ09ERV9XUk1TUiwKPiAtICAgIFtJTlNUUl9WTUNBTExdID0gT1BDT0RFX1ZN Q0FMTCwKPiAtICAgIFtJTlNUUl9ITFRdICAgID0gT1BDT0RFX0hMVCwKPiAtICAgIFtJTlNUUl9J TlQzXSAgID0gT1BDT0RFX0lOVDMsCj4gLSAgICBbSU5TVFJfUkRUU0NdICA9IE9QQ09ERV9SRFRT QywKPiAtICAgIFtJTlNUUl9QQVVTRV0gID0gT1BDT0RFX1BBVVNFLAo+IC0gICAgW0lOU1RSX1hT RVRCVl0gPSBPUENPREVfWFNFVEJWLAo+IC0gICAgW0lOU1RSX1ZNUlVOXSAgPSBPUENPREVfVk1S VU4sCj4gLSAgICBbSU5TVFJfVk1MT0FEXSA9IE9QQ09ERV9WTUxPQUQsCj4gLSAgICBbSU5TVFJf Vk1TQVZFXSA9IE9QQ09ERV9WTVNBVkUsCj4gLSAgICBbSU5TVFJfU1RHSV0gICA9IE9QQ09ERV9T VEdJLAo+IC0gICAgW0lOU1RSX0NMR0ldICAgPSBPUENPREVfQ0xHSSwKPiAtICAgIFtJTlNUUl9J TlZMUEdBXSA9IE9QQ09ERV9JTlZMUEdBLAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiArICAg IHVuc2lnbmVkIGludCBvcGNvZGU7Cj4gKyAgICBzdHJ1Y3Qgewo+ICsgICAgICAgIHVuc2lnbmVk IGludCBybTozOwo+ICsgICAgICAgIHVuc2lnbmVkIGludCByZWc6MzsKPiArICAgICAgICB1bnNp Z25lZCBpbnQgbW9kOjI7Cj4gKyNkZWZpbmUgTU9EUk0obW9kLCByZWcsIHJtKSB7IHJtLCByZWcs IG1vZCB9Cj4gKyAgICB9IG1vZHJtOwo+ICt9IGNvbnN0IG9wY190YWJbSU5TVFJfTUFYX0NPVU5U XSA9IHsKPiArICAgIFtJTlNUUl9QQVVTRV0gID0geyBYODZFTVVMX09QQ19GMygwLCAweDkwKSB9 LAo+ICsgICAgW0lOU1RSX0lOVDNdICAgPSB7IFg4NkVNVUxfT1BDKCAgIDAsIDB4Y2MpIH0sCj4g KyAgICBbSU5TVFJfSExUXSAgICA9IHsgWDg2RU1VTF9PUEMoICAgMCwgMHhmNCkgfSwKPiArICAg IFtJTlNUUl9YU0VUQlZdID0geyBYODZFTVVMX09QQygweDBmLCAweDAxKSwgTU9EUk0oMywgMiwg MSkgfSwKPiArICAgIFtJTlNUUl9WTVJVTl0gID0geyBYODZFTVVMX09QQygweDBmLCAweDAxKSwg TU9EUk0oMywgMywgMCkgfSwKPiArICAgIFtJTlNUUl9WTUNBTExdID0geyBYODZFTVVMX09QQygw eDBmLCAweDAxKSwgTU9EUk0oMywgMywgMSkgfSwKPiArICAgIFtJTlNUUl9WTUxPQURdID0geyBY ODZFTVVMX09QQygweDBmLCAweDAxKSwgTU9EUk0oMywgMywgMikgfSwKPiArICAgIFtJTlNUUl9W TVNBVkVdID0geyBYODZFTVVMX09QQygweDBmLCAweDAxKSwgTU9EUk0oMywgMywgMykgfSwKPiAr ICAgIFtJTlNUUl9TVEdJXSAgID0geyBYODZFTVVMX09QQygweDBmLCAweDAxKSwgTU9EUk0oMywg MywgNCkgfSwKPiArICAgIFtJTlNUUl9DTEdJXSAgID0geyBYODZFTVVMX09QQygweDBmLCAweDAx KSwgTU9EUk0oMywgMywgNSkgfSwKPiArICAgIFtJTlNUUl9JTlZMUEdBXSA9IHsgWDg2RU1VTF9P UEMoMHgwZiwgMHgwMSksIE1PRFJNKDMsIDMsIDcpIH0sCj4gKyAgICBbSU5TVFJfSU5WRF0gICA9 IHsgWDg2RU1VTF9PUEMoMHgwZiwgMHgwOCkgfSwKPiArICAgIFtJTlNUUl9XQklOVkRdID0geyBY ODZFTVVMX09QQygweDBmLCAweDA5KSB9LAo+ICsgICAgW0lOU1RSX1dSTVNSXSAgPSB7IFg4NkVN VUxfT1BDKDB4MGYsIDB4MzApIH0sCj4gKyAgICBbSU5TVFJfUkRUU0NdICA9IHsgWDg2RU1VTF9P UEMoMHgwZiwgMHgzMSkgfSwKPiArICAgIFtJTlNUUl9SRE1TUl0gID0geyBYODZFTVVMX09QQygw eDBmLCAweDMyKSB9LAo+ICsgICAgW0lOU1RSX0NQVUlEXSAgPSB7IFg4NkVNVUxfT1BDKDB4MGYs IDB4YTIpIH0sCj4gIH07Cj4gIAo+IC1zdGF0aWMgYm9vbF90IGZldGNoKGNvbnN0IHN0cnVjdCB2 bWNiX3N0cnVjdCAqdm1jYiwgdTggKmJ1ZiwKPiAtICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIGFkZHIsIHVuc2lnbmVkIGludCBsZW4pCj4gLXsKPiAtICAgIHVpbnQzMl90IHBmZWMg PSAodm1jYl9nZXRfY3BsKHZtY2IpID09IDMpID8gUEZFQ191c2VyX21vZGUgOiAwOwo+IC0KPiAt ICAgIHN3aXRjaCAoIGh2bV9mZXRjaF9mcm9tX2d1ZXN0X3ZpcnQoYnVmLCBhZGRyLCBsZW4sIHBm ZWMpICkKPiAtICAgIHsKPiAtICAgIGNhc2UgSFZNQ09QWV9va2F5Ogo+IC0gICAgICAgIGJyZWFr Owo+IC0gICAgY2FzZSBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuOgo+IC0gICAgICAgIC8qIE9LIGp1 c3QgdG8gZ2l2ZSB1cDsgd2UnbGwgaGF2ZSBpbmplY3RlZCAjUEYgYWxyZWFkeSAqLwo+IC0gICAg ICAgIHJldHVybiAwOwo+IC0gICAgZGVmYXVsdDoKPiAtICAgICAgICAvKiBOb3QgT0s6IGZldGNo ZXMgZnJvbSBub24tUkFNIHBhZ2VzIGFyZSBub3Qgc3VwcG9ydGFibGUuICovCj4gLSAgICAgICAg Z2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgaW5zdHJ1Y3Rpb24gZmV0Y2ggYXQgJSNseCAo JSNseClcbiIsCj4gLSAgICAgICAgICAgICAgICAgdm1jYi0+cmlwLCBhZGRyKTsKPiAtICAgICAg ICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKPiAtICAgICAgICBy ZXR1cm4gMDsKPiAtICAgIH0KPiAtICAgIHJldHVybiAxOwo+IC19Cj4gLQo+ICBpbnQgX19nZXRf aW5zdHJ1Y3Rpb25fbGVuZ3RoX2Zyb21fbGlzdChzdHJ1Y3QgdmNwdSAqdiwKPiAgICAgICAgICBj b25zdCBlbnVtIGluc3RydWN0aW9uX2luZGV4ICpsaXN0LCB1bnNpZ25lZCBpbnQgbGlzdF9jb3Vu dCkKPiAgewo+ICAgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gdi0+YXJjaC5odm1fc3Zt LnZtY2I7Cj4gLSAgICB1bnNpZ25lZCBpbnQgaSwgaiwgaW5zdF9sZW4gPSAwOwo+IC0gICAgZW51 bSBpbnN0cnVjdGlvbl9pbmRleCBpbnN0ciA9IDA7Cj4gLSAgICB1OCBidWZbTUFYX0lOU1RfTEVO XTsKPiAtICAgIGNvbnN0IHU4ICpvcGNvZGUgPSBOVUxMOwo+IC0gICAgdW5zaWduZWQgbG9uZyBm ZXRjaF9hZGRyLCBmZXRjaF9saW1pdDsKPiAtICAgIHVuc2lnbmVkIGludCBmZXRjaF9sZW4sIG1h eF9sZW47Cj4gKyAgICBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCBjdHh0Owo+ICsgICAgc3RydWN0 IHg4Nl9lbXVsYXRlX3N0YXRlICpzdGF0ZTsKPiArICAgIHVuc2lnbmVkIGludCBpbnN0X2xlbiwg aiwgbW9kcm1fcm0sIG1vZHJtX3JlZzsKPiArICAgIGludCBtb2RybV9tb2Q7Cj4gIAo+ICsjaWZk ZWYgTkRFQlVHCgpQcmVzdW1hYmx5IHRoaXMgaXMganVzdCBmb3IgeW91ciB0ZXN0aW5nPwoKPiAg ICAgIGlmICggKGluc3RfbGVuID0gc3ZtX25leHRyaXBfaW5zbl9sZW5ndGgodikpICE9IDAgKQo+ ICAgICAgICAgIHJldHVybiBpbnN0X2xlbjsKPiAgCj4gICAgICBpZiAoIHZtY2ItPmV4aXRjb2Rl ID09IFZNRVhJVF9JT0lPICkKPiAgICAgICAgICByZXR1cm4gdm1jYi0+ZXhpdGluZm8yIC0gdm1j Yi0+cmlwOwo+ICsjZW5kaWYKPiAgCj4gLSAgICAvKiBGZXRjaCB1cCB0byB0aGUgbmV4dCBwYWdl IGJyZWFrOyB3ZSdsbCBmZXRjaCBmcm9tIHRoZSBuZXh0IHBhZ2UKPiAtICAgICAqIGxhdGVyIGlm IHdlIGhhdmUgdG8uICovCj4gLSAgICBmZXRjaF9hZGRyID0gc3ZtX3JpcDJwb2ludGVyKHYsICZm ZXRjaF9saW1pdCk7Cj4gLSAgICBpZiAoIHZtY2ItPnJpcCA+IGZldGNoX2xpbWl0ICkKPiAtICAg ICAgICByZXR1cm4gMDsKPiAtICAgIG1heF9sZW4gPSBtaW4oZmV0Y2hfbGltaXQgLSB2bWNiLT5y aXAgKyAxLCBNQVhfSU5TVF9MRU4gKyAwVUwpOwo+IC0gICAgZmV0Y2hfbGVuID0gbWluX3QodW5z aWduZWQgaW50LCBtYXhfbGVuLAo+IC0gICAgICAgICAgICAgICAgICAgICAgUEFHRV9TSVpFIC0g KGZldGNoX2FkZHIgJiB+UEFHRV9NQVNLKSk7Cj4gLSAgICBpZiAoICFmZXRjaCh2bWNiLCBidWYs IGZldGNoX2FkZHIsIGZldGNoX2xlbikgKQo+ICsgICAgQVNTRVJUKHYgPT0gY3VycmVudCk7Cj4g KyAgICBodm1fZW11bGF0ZV9wcmVwYXJlKCZjdHh0LCBndWVzdF9jcHVfdXNlcl9yZWdzKCkpOwo+ ICsgICAgaHZtX2VtdWxhdGVfaW5pdCgmY3R4dCwgTlVMTCwgMCk7Cj4gKyAgICBzdGF0ZSA9IHg4 Nl9kZWNvZGVfaW5zbigmY3R4dC5jdHh0LCBodm1lbXVsX2luc25fZmV0Y2gpOwo+ICsgICAgaWYg KCBJU19FUlJfT1JfTlVMTChzdGF0ZSkgKQo+ICAgICAgICAgIHJldHVybiAwOwo+ICAKPiAtICAg IHdoaWxlICggKGluc3RfbGVuIDwgbWF4X2xlbikgJiYgaXNfcHJlZml4KGJ1ZltpbnN0X2xlbl0p ICkKPiAtICAgIHsKPiAtICAgICAgICBpbnN0X2xlbisrOwo+IC0gICAgICAgIGlmICggaW5zdF9s ZW4gPj0gZmV0Y2hfbGVuICkKPiAtICAgICAgICB7Cj4gLSAgICAgICAgICAgIGlmICggIWZldGNo KHZtY2IsIGJ1ZiArIGZldGNoX2xlbiwgZmV0Y2hfYWRkciArIGZldGNoX2xlbiwKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgbWF4X2xlbiAtIGZldGNoX2xlbikgKQo+IC0gICAgICAgICAgICAg ICAgcmV0dXJuIDA7Cj4gLSAgICAgICAgICAgIGZldGNoX2xlbiA9IG1heF9sZW47Cj4gLSAgICAg ICAgfQo+ICsgICAgaW5zdF9sZW4gPSB4ODZfaW5zbl9sZW5ndGgoc3RhdGUsICZjdHh0LmN0eHQp Owo+ICsgICAgbW9kcm1fbW9kID0geDg2X2luc25fbW9kcm0oc3RhdGUsICZtb2RybV9ybSwgJm1v ZHJtX3JlZyk7Cj4gKyAgICB4ODZfZW11bGF0ZV9mcmVlX3N0YXRlKHN0YXRlKTsKCkZyb20gYW4g QVBJIHBvaW50IG9mIHZpZXcsIGl0IGlzIHdlaXJkIHRvIGhhdmUgeDg2X2VtdWxhdGVfZnJlZV9z dGF0ZSgpCndpdGhvdXQgYSBtYXRjaGluZyBhbGxvY2F0aW9uIGZ1bmN0aW9uLiAgUGVyaGFwcyB0 aGF0IGlzIGp1c3QgbWUuCgpIb3dldmVyLCB0aGUgeDg2X2luc25fbW9kcm0oKSBBUEkgaXMgZGVm aW5pdGVseSBtb3JlIHdlaXJkLiAgV291bGRuJ3QgaXQKYmUgbW9yZSBuYXR1cmFsIHRvIHRha2Ug b3B0aW9uYWwgcG9pbnRlcnMgZm9yIHRoZSBtb2QsIHJtIGFuZCByZWcgcGFydHMKaW5kaXZpZHVh bGx5PwoKCj4gLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKPiAr KysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwo+IEBAIC0zODIsNyAr MzgyLDcgQEAgc3RydWN0IG9wZXJhbmQgewo+ICAgICAgfSBtZW07Cj4gIH07Cj4gICNpZmRlZiBf X3g4Nl82NF9fCj4gLSNkZWZpbmUgUkVHX1BPSVNPTiAoKHVuc2lnbmVkIGxvbmcgKikgMHg4MDg2 MDAwMDAwMDA4MDg2VUwpIC8qIG5vbi1jYW5vbmljYWwgKi8KPiArI2RlZmluZSBSRUdfUE9JU09O ICgodm9pZCAqKTB4ODA4NjAwMDAwMDAwODA4NlVMKSAvKiBub24tY2Fub25pY2FsICovCj4gICNl bHNlCj4gICNkZWZpbmUgUkVHX1BPSVNPTiBOVUxMIC8qIDMyLWJpdCBidWlsZHMgYXJlIGZvciB1 c2VyLXNwYWNlLCBzbyBOVUxMIGlzIE9LLiAqLwo+ICAjZW5kaWYKCkdpdmVuIHRoYXQgdGhlc2Ug YXJlIG5vdyB1c2VkIGZvciBnZW5lcmFsIHBvaW50ZXIgcG9pc29uaW5nLCB0aGV5IHNob3VsZApi ZSByZW5hbWVkLiAgVGhlcmUgYXJlIG9ubHkgMyBpbnN0YW5jZXMuCgo+IEBAIC0xNjMxLDYgKzE2 MzEsMTAgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX3N0YXRlIHsKPiAgCj4gICAgICB1bnNpZ25lZCBs b25nIGVpcDsKPiAgICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzOwo+ICsKPiArI2lmbmRl ZiBOREVCVUcKPiArICAgIHZvaWQgKmNhbGxlcjsKPiArI2VuZGlmCgpQZXJoYXBzIHdvcnRoIGEg Y29tbWVudCBoZXJlPyAgSXRzIHB1cnBvc2UgaXMgcmF0aGVyIG9wYXF1ZS4KCj4gIH07Cj4gIAo+ ICAvKiBIZWxwZXIgZGVmaW5pdGlvbnMuICovCj4gQEAgLTE2NTgsNiArMTY2MiwxMSBAQCB4ODZf ZGVjb2RlX2Jhc2UoCj4gIAo+ICAgICAgc3dpdGNoICggY3R4dC0+b3Bjb2RlICkKPiAgICAgIHsK PiArICAgIGNhc2UgMHg5MDogLyogbm9wIC8gcGF1c2UgKi8KPiArICAgICAgICBpZiAoIHJlcGVf cHJlZml4KCkgKQo+ICsgICAgICAgICAgICBjdHh0LT5vcGNvZGUgfD0gWDg2RU1VTF9PUENfRjMo MCwgMCk7Cj4gKyAgICAgICAgYnJlYWs7CgpXaHkgaXMgaXQgbmVjZXNzYXJ5IHRvIHNwZWNpYWwg Y2FzZSB0aGUgcmVwIHByZWZpeCBoYW5kbGluZyBpbiB0aGlzIGNhc2U/Cgo+ICtpbnQKPiAreDg2 X2luc25fbW9kcm0oY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX3N0YXRlICpzdGF0ZSwKPiArICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50ICpybSwgdW5zaWduZWQgaW50ICpyZWcpCj4gK3sKPiAr ICAgIGNoZWNrX3N0YXRlKHN0YXRlKTsKPiArCj4gKyAgICBpZiAoICEoc3RhdGUtPmRlc2MgJiBN b2RSTSkgKQo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsKPiArICAgIGlmICggcm0gKQo+ ICsgICAgICAgICpybSA9IHN0YXRlLT5tb2RybV9ybTsKPiArICAgIGlmICggcmVnICkKPiArICAg ICAgICAqcmVnID0gc3RhdGUtPm1vZHJtX3JlZzsKPiArCj4gKyAgICByZXR1cm4gc3RhdGUtPm1v ZHJtX21vZDsKPiArfQo+ICsKPiArdW5zaWduZWQgaW50Cj4gK3g4Nl9pbnNuX2xlbmd0aChjb25z dCBzdHJ1Y3QgeDg2X2VtdWxhdGVfc3RhdGUgKnN0YXRlLAo+ICsgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCj4gK3sKPiArICAgIGNoZWNrX3N0YXRl KHN0YXRlKTsKPiArCj4gKyAgICByZXR1cm4gc3RhdGUtPmVpcCAtIGN0eHQtPnJlZ3MtPmVpcDsK CklzIGl0IHdvcnRoIHN0YXNoaW5nIGEgc3RhcnRpbmcgZWlwPyAgVGhpcyBjYWxjdWxhdGlvbiB3 aWxsIGdvIHdyb25nCmFmdGVyIHRoZSBlbXVsYXRlZCBzdGF0ZSBoYXMgYmVlbiBjb21taXR0ZWQu Cgp+QW5kcmV3CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK