From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KytXo-0005Yd-1i for qemu-devel@nongnu.org; Sat, 08 Nov 2008 14:32:28 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KytXm-0005Xv-TZ for qemu-devel@nongnu.org; Sat, 08 Nov 2008 14:32:27 -0500 Received: from [199.232.76.173] (port=36062 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KytXm-0005Xq-Jv for qemu-devel@nongnu.org; Sat, 08 Nov 2008 14:32:26 -0500 Received: from rv-out-0708.google.com ([209.85.198.248]:15407) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KytXl-0007UV-Pn for qemu-devel@nongnu.org; Sat, 08 Nov 2008 14:32:26 -0500 Received: by rv-out-0708.google.com with SMTP id f25so1714980rvb.22 for ; Sat, 08 Nov 2008 11:32:23 -0800 (PST) Message-ID: <761ea48b0811081132x315b9f1q3b064c7af3f965c9@mail.gmail.com> Date: Sat, 8 Nov 2008 20:32:20 +0100 From: "Laurent Desnogues" In-Reply-To: <761ea48b0811081113v344ced80n99ad94359b9b0e74@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_71237_795593.1226172740485" References: <761ea48b0811081113v344ced80n99ad94359b9b0e74@mail.gmail.com> Subject: [Qemu-devel] Re: [RFC] TCG new op: setcond Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_71237_795593.1226172740485 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Same patch with a fix shown by DEBUG_TCGV. Thanks to Aurelien. Laurent Signed-off-by: Laurent Desnogues On Sat, Nov 8, 2008 at 8:13 PM, Laurent Desnogues wrote: > > this patch implements a new TCG op, setcond, that sets a temp > to 1 if the condition is true, else to 0. The benefit is the potential > removal of brcond instructions, and helpers size reduction which > can lead to using TCG instead of helpers. > > setcond(i)_i{32,64} have been implemented only for x86_64 and > i386 TCG back-ends. > > One ARM helper was converted to TCG using setcond. Alpha > and MIPS are also patched to use setcond. > > On my TODO list: > > - implement it in all backends (arm, ppc, ppc64, sparc) > - use it at least once in every frontend > > Comments starting with // in the patch are questions and/or > TODO. > > Please feel free to comment. > > > Laurent > > Signed-off-by: Laurent Desnogues > ------=_Part_71237_795593.1226172740485 Content-Type: text/x-patch; name=setcond-3-fixed.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fnankaoo2 Content-Disposition: attachment; filename=setcond-3-fixed.patch SW5kZXg6IHRhcmdldC1hbHBoYS90cmFuc2xhdGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0YXJnZXQtYWxw aGEvdHJhbnNsYXRlLmMJKHJldmlzaW9uIDU2NTApCisrKyB0YXJnZXQtYWxwaGEvdHJhbnNsYXRl LmMJKHdvcmtpbmcgY29weSkKQEAgLTUwNCwzMCArNTA0LDIwIEBACiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHJhLCBpbnQgcmIsIGludCByYywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgaXNsaXQsIHVpbnQ4X3QgbGl0KQogewotICAgIGludCBs MSwgbDI7CiAgICAgVENHdiB0bXA7CiAKICAgICBpZiAodW5saWtlbHkocmMgPT0gMzEpKQotICAg IHJldHVybjsKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbDEgPSBnZW5fbmV3X2xhYmVsKCk7Ci0g ICAgbDIgPSBnZW5fbmV3X2xhYmVsKCk7Ci0KICAgICBpZiAocmEgIT0gMzEpIHsKICAgICAgICAg dG1wID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0k2NCk7CiAgICAgICAgIHRjZ19nZW5fbW92X2k2 NCh0bXAsIGNwdV9pcltyYV0pOwogICAgIH0gZWxzZQogICAgICAgICB0bXAgPSB0Y2dfY29uc3Rf aTY0KDApOwogICAgIGlmIChpc2xpdCkKLSAgICAgICAgdGNnX2dlbl9icmNvbmRpX2k2NChjb25k LCB0bXAsIGxpdCwgbDEpOworICAgICAgICB0Y2dfZ2VuX3NldGNvbmRpX2k2NChjb25kLCBjcHVf aXJbcmNdLCB0bXAsIGxpdCk7CiAgICAgZWxzZQotICAgICAgICB0Y2dfZ2VuX2JyY29uZF9pNjQo Y29uZCwgdG1wLCBjcHVfaXJbcmJdLCBsMSk7Ci0KLSAgICB0Y2dfZ2VuX21vdmlfaTY0KGNwdV9p cltyY10sIDApOwotICAgIHRjZ19nZW5fYnIobDIpOwotICAgIGdlbl9zZXRfbGFiZWwobDEpOwot ICAgIHRjZ19nZW5fbW92aV9pNjQoY3B1X2lyW3JjXSwgMSk7Ci0gICAgZ2VuX3NldF9sYWJlbChs Mik7CisgICAgICAgIHRjZ19nZW5fc2V0Y29uZF9pNjQoY29uZCwgY3B1X2lyW3JjXSwgdG1wLCBj cHVfaXJbcmJdKTsKIH0KIAogc3RhdGljIGFsd2F5c19pbmxpbmUgaW50IHRyYW5zbGF0ZV9vbmUg KERpc2FzQ29udGV4dCAqY3R4LCB1aW50MzJfdCBpbnNuKQpJbmRleDogdGFyZ2V0LW1pcHMvdHJh bnNsYXRlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0LW1pcHMvdHJhbnNsYXRlLmMJKHJldmlzaW9u IDU2NTApCisrKyB0YXJnZXQtbWlwcy90cmFuc2xhdGUuYwkod29ya2luZyBjb3B5KQpAQCAtNzcx LDE1ICs3NzEsNyBAQAogI2RlZmluZSBPUF9DT05EKG5hbWUsIGNvbmQpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCiBzdGF0aWMgaW5saW5lIHZvaWQgZ2x1ZShnZW5fb3BfLCBu YW1lKSAoVENHdiB0MCwgVENHdiB0MSkgICAgIFwKIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGludCBsMSA9IGdlbl9u ZXdfbGFiZWwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaW50IGwy ID0gZ2VuX25ld19sYWJlbCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgIHRjZ19nZW5fYnJjb25kX3RsKGNvbmQsIHQwLCB0MSwgbDEpOyAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgdGNnX2dlbl9tb3ZpX3RsKHQwLCAwKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICB0Y2dfZ2VuX2JyKGwyKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdlbl9zZXRfbGFiZWwobDEpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGNnX2dlbl9tb3ZpX3Rs KHQwLCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnZW5fc2V0 X2xhYmVsKGwyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg IHRjZ19nZW5fc2V0Y29uZF90bChjb25kLCB0MCwgdDAsIHQxKTsgICAgICAgICAgICAgICAgICAg ICBcCiB9CiBPUF9DT05EKGVxLCBUQ0dfQ09ORF9FUSk7CiBPUF9DT05EKG5lLCBUQ0dfQ09ORF9O RSk7CkBAIC03OTIsMTUgKzc4NCw3IEBACiAjZGVmaW5lIE9QX0NPTkRJKG5hbWUsIGNvbmQpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIHN0YXRpYyBpbmxpbmUgdm9pZCBnbHVl KGdlbl9vcF8sIG5hbWUpIChUQ0d2IHQsIHRhcmdldF91bG9uZyB2YWwpIFwKIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg IGludCBsMSA9IGdlbl9uZXdfbGFiZWwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgaW50IGwyID0gZ2VuX25ld19sYWJlbCgpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgIHRjZ19nZW5fYnJjb25kaV90bChjb25kLCB0LCB2YWws IGwxKTsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGNnX2dlbl9tb3ZpX3RsKHQsIDApOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0Y2dfZ2VuX2JyKGwyKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdlbl9zZXRf bGFiZWwobDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg dGNnX2dlbl9tb3ZpX3RsKHQsIDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICBnZW5fc2V0X2xhYmVsKGwyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgIHRjZ19nZW5fc2V0Y29uZGlfdGwoY29uZCwgdCwgdCwgdmFsKTsgICAg ICAgICAgICAgICAgICAgICBcCiB9CiBPUF9DT05ESShsdGksIFRDR19DT05EX0xUKTsKIE9QX0NP TkRJKGx0aXUsIFRDR19DT05EX0xUVSk7CkBAIC04MDksMTUgKzc5Myw3IEBACiAjZGVmaW5lIE9Q X0NPTkRaKG5hbWUsIGNvbmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIHN0 YXRpYyBpbmxpbmUgdm9pZCBnbHVlKGdlbl9vcF8sIG5hbWUpIChUQ0d2IHQpICAgICAgICAgICAg ICAgXAogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgaW50IGwxID0gZ2VuX25ld19sYWJlbCgpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICBpbnQgbDIgPSBnZW5fbmV3X2xhYmVsKCk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGNnX2dlbl9icmNvbmRp X3RsKGNvbmQsIHQsIDAsIGwxKTsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0Y2dfZ2Vu X21vdmlfdGwodCwgMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg IHRjZ19nZW5fYnIobDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgZ2VuX3NldF9sYWJlbChsMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICB0Y2dfZ2VuX21vdmlfdGwodCwgMSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgIGdlbl9zZXRfbGFiZWwobDIpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdGNnX2dlbl9zZXRjb25kaV90bChjb25k LCB0LCB0LCAwKTsgICAgICAgICAgICAgICAgICAgICAgIFwKIH0KIE9QX0NPTkRaKGdleiwgVENH X0NPTkRfR0UpOwogT1BfQ09ORFooZ3R6LCBUQ0dfQ09ORF9HVCk7CkluZGV4OiB0Y2cvdGNnLW9w LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gdGNnL3RjZy1vcC5oCShyZXZpc2lvbiA1NjUwKQorKysgdGNnL3Rj Zy1vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDIxIEBACiAgICAgKmdlbl9vcHBh cmFtX3B0cisrID0gYXJnNjsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fb3A3aShp bnQgb3BjLCBUQ0d2IGFyZzEsIFRDR3YgYXJnMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVENHdiBhcmczLCBUQ0d2IGFyZzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRDR3YgYXJnNSwgVENHdiBhcmc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUQ0dBcmcgYXJnNykKK3sKKyAgICAqZ2VuX29wY19wdHIrKyA9IG9wYzsKKyAgICAqZ2VuX29w cGFyYW1fcHRyKysgPSBHRVRfVENHVihhcmcxKTsKKyAgICAqZ2VuX29wcGFyYW1fcHRyKysgPSBH RVRfVENHVihhcmcyKTsKKyAgICAqZ2VuX29wcGFyYW1fcHRyKysgPSBHRVRfVENHVihhcmczKTsK KyAgICAqZ2VuX29wcGFyYW1fcHRyKysgPSBHRVRfVENHVihhcmc0KTsKKyAgICAqZ2VuX29wcGFy YW1fcHRyKysgPSBHRVRfVENHVihhcmc1KTsKKyAgICAqZ2VuX29wcGFyYW1fcHRyKysgPSBHRVRf VENHVihhcmc2KTsKKyAgICAqZ2VuX29wcGFyYW1fcHRyKysgPSBhcmc3OworfQorCiBzdGF0aWMg aW5saW5lIHZvaWQgZ2VuX3NldF9sYWJlbChpbnQgbikKIHsKICAgICB0Y2dfZ2VuX29wMWkoSU5E RVhfb3Bfc2V0X2xhYmVsLCBuKTsKQEAgLTQ5OSw2ICs1MTQsMjAgQEAKICAgICB9CiB9CiAKK3N0 YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX3NldGNvbmRfaTMyKGludCBjb25kLCBUQ0d2IHJldCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR3YgYXJnMSwgVENHdiBh cmcyKQoreworICAgIHRjZ19nZW5fb3A0aShJTkRFWF9vcF9zZXRjb25kX2kzMiwgcmV0LCBhcmcx LCBhcmcyLCBjb25kKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fc2V0Y29uZGlf aTMyKGludCBjb25kLCBUQ0d2IHJldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUQ0d2IGFyZzEsIGludDMyX3QgYXJnMikKK3sKKyAgICBUQ0d2IHQwID0gdGNnX2Nv bnN0X2kzMihhcmcyKTsKKyAgICB0Y2dfZ2VuX3NldGNvbmRfaTMyKGNvbmQsIHJldCwgYXJnMSwg dDApOworICAgIHRjZ190ZW1wX2ZyZWUodDApOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgdGNn X2dlbl9icmNvbmRfaTMyKGludCBjb25kLCBUQ0d2IGFyZzEsIFRDR3YgYXJnMiwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsYWJlbF9pbmRleCkKIHsKQEAgLTc1 NCw2ICs3ODMsMTQgQEAKICAgICB0Y2dfZ2VuX3NoaWZ0aV9pNjQocmV0LCBhcmcxLCBhcmcyLCAx LCAxKTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fc2V0Y29uZF9pNjQoaW50IGNv bmQsIFRDR3YgcmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENH diBhcmcxLCBUQ0d2IGFyZzIpCit7CisgICAgdGNnX2dlbl9vcDdpKElOREVYX29wX3NldGNvbmQy X2kzMiwKKyAgICAgICAgICAgICAgICAgcmV0LCBUQ0dWX0hJR0gocmV0KSwgYXJnMSwgVENHVl9I SUdIKGFyZzEpLAorICAgICAgICAgICAgICAgICBhcmcyLCBUQ0dWX0hJR0goYXJnMiksIGNvbmQp OworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9icmNvbmRfaTY0KGludCBjb25kLCBU Q0d2IGFyZzEsIFRDR3YgYXJnMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBsYWJlbF9pbmRleCkKIHsKQEAgLTk3Miw2ICsxMDA5LDEyIEBACiAgICAgfQogfQog CitzdGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9zZXRjb25kX2k2NChpbnQgY29uZCwgVENHdiBy ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0d2IGFyZzEsIFRD R3YgYXJnMikKK3sKKyAgICB0Y2dfZ2VuX29wNGkoSU5ERVhfb3Bfc2V0Y29uZF9pNjQsIHJldCwg YXJnMSwgYXJnMiwgY29uZCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX2JyY29u ZF9pNjQoaW50IGNvbmQsIFRDR3YgYXJnMSwgVENHdiBhcmcyLCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGxhYmVsX2luZGV4KQogewpAQCAtMTA3Myw2ICsxMTE2 LDE1IEBACiAgICAgICAgIHRjZ190ZW1wX2ZyZWUodDApOwogICAgIH0KIH0KKworc3RhdGljIGlu bGluZSB2b2lkIHRjZ19nZW5fc2V0Y29uZGlfaTY0KGludCBjb25kLCBUQ0d2IHJldCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0d2IGFyZzEsIGludDMyX3QgYXJn MikKK3sKKyAgICBUQ0d2IHQwID0gdGNnX2NvbnN0X2k2NChhcmcyKTsKKyAgICB0Y2dfZ2VuX3Nl dGNvbmRfaTY0KGNvbmQsIHJldCwgYXJnMSwgdDApOworICAgIHRjZ190ZW1wX2ZyZWUodDApOwor fQorCiBzdGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9icmNvbmRpX2k2NChpbnQgY29uZCwgVENH diBhcmcxLCBpbnQ2NF90IGFyZzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgbGFiZWxfaW5kZXgpCiB7CkBAIC0xMDg4LDcgKzExNDAsNiBAQAogICAgIHRjZ190 ZW1wX2ZyZWUodDApOwogfQogCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCiAvKiBvcHRpb25hbCBvcGVyYXRpb25zICovCiAKQEAgLTE4NjQsNiArMTkxNSw4IEBA CiAjZGVmaW5lIHRjZ19nZW5fc2hyaV90bCB0Y2dfZ2VuX3NocmlfaTY0CiAjZGVmaW5lIHRjZ19n ZW5fc2FyX3RsIHRjZ19nZW5fc2FyX2k2NAogI2RlZmluZSB0Y2dfZ2VuX3NhcmlfdGwgdGNnX2dl bl9zYXJpX2k2NAorI2RlZmluZSB0Y2dfZ2VuX3NldGNvbmRfdGwgdGNnX2dlbl9zZXRjb25kX2k2 NAorI2RlZmluZSB0Y2dfZ2VuX3NldGNvbmRpX3RsIHRjZ19nZW5fc2V0Y29uZGlfaTY0CiAjZGVm aW5lIHRjZ19nZW5fYnJjb25kX3RsIHRjZ19nZW5fYnJjb25kX2k2NAogI2RlZmluZSB0Y2dfZ2Vu X2JyY29uZGlfdGwgdGNnX2dlbl9icmNvbmRpX2k2NAogI2RlZmluZSB0Y2dfZ2VuX211bF90bCB0 Y2dfZ2VuX211bF9pNjQKQEAgLTE5MjcsNiArMTk4MCw4IEBACiAjZGVmaW5lIHRjZ19nZW5fc2hy aV90bCB0Y2dfZ2VuX3NocmlfaTMyCiAjZGVmaW5lIHRjZ19nZW5fc2FyX3RsIHRjZ19nZW5fc2Fy X2kzMgogI2RlZmluZSB0Y2dfZ2VuX3NhcmlfdGwgdGNnX2dlbl9zYXJpX2kzMgorI2RlZmluZSB0 Y2dfZ2VuX3NldGNvbmRfdGwgdGNnX2dlbl9zZXRjb25kX2kzMgorI2RlZmluZSB0Y2dfZ2VuX3Nl dGNvbmRpX3RsIHRjZ19nZW5fc2V0Y29uZGlfaTMyCiAjZGVmaW5lIHRjZ19nZW5fYnJjb25kX3Rs IHRjZ19nZW5fYnJjb25kX2kzMgogI2RlZmluZSB0Y2dfZ2VuX2JyY29uZGlfdGwgdGNnX2dlbl9i cmNvbmRpX2kzMgogI2RlZmluZSB0Y2dfZ2VuX211bF90bCB0Y2dfZ2VuX211bF9pMzIKSW5kZXg6 IHRjZy90Y2ctb3BjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGNnL3RjZy1vcGMuaAkocmV2aXNpb24gNTY1 MCkKKysrIHRjZy90Y2ctb3BjLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDEwICs3NiwxMyBAQAog REVGMihzaHJfaTMyLCAxLCAyLCAwLCAwKQogREVGMihzYXJfaTMyLCAxLCAyLCAwLCAwKQogCitE RUYyKHNldGNvbmRfaTMyLCAxLCAyLCAxLCAwKQorCiBERUYyKGJyY29uZF9pMzIsIDAsIDIsIDIs IFRDR19PUEZfQkJfRU5EIHwgVENHX09QRl9TSURFX0VGRkVDVFMpCiAjaWYgVENHX1RBUkdFVF9S RUdfQklUUyA9PSAzMgogREVGMihhZGQyX2kzMiwgMiwgNCwgMCwgMCkKIERFRjIoc3ViMl9pMzIs IDIsIDQsIDAsIDApCitERUYyKHNldGNvbmQyX2kzMiwgMiwgNCwgMSwgMCkKIERFRjIoYnJjb25k Ml9pMzIsIDAsIDQsIDIsIFRDR19PUEZfQkJfRU5EIHwgVENHX09QRl9TSURFX0VGRkVDVFMpCiBE RUYyKG11bHUyX2kzMiwgMiwgMiwgMCwgMCkKICNlbmRpZgpAQCAtMTI5LDYgKzEzMiw4IEBACiBE RUYyKHNocl9pNjQsIDEsIDIsIDAsIDApCiBERUYyKHNhcl9pNjQsIDEsIDIsIDAsIDApCiAKK0RF RjIoc2V0Y29uZF9pNjQsIDEsIDIsIDEsIDApCisKIERFRjIoYnJjb25kX2k2NCwgMCwgMiwgMiwg VENHX09QRl9CQl9FTkQgfCBUQ0dfT1BGX1NJREVfRUZGRUNUUykKICNpZmRlZiBUQ0dfVEFSR0VU X0hBU19leHQ4c19pNjQKIERFRjIoZXh0OHNfaTY0LCAxLCAxLCAwLCAwKQpJbmRleDogdGNnL2kz ODYvdGNnLXRhcmdldC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRjZy9pMzg2L3RjZy10YXJnZXQuYwkocmV2 aXNpb24gNTY1MCkKKysrIHRjZy9pMzg2L3RjZy10YXJnZXQuYwkod29ya2luZyBjb3B5KQpAQCAt MTYyLDYgKzE2Miw3IEBACiAjZGVmaW5lIFNISUZUX1NIUiA1CiAjZGVmaW5lIFNISUZUX1NBUiA3 CiAKKy8qIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyBhcHBseSB0byBzZXRjYyBpbnN0cnVjdGlvbiB0 b28uICovCiAjZGVmaW5lIEpDQ19KTVAgKC0xKQogI2RlZmluZSBKQ0NfSk8gIDB4MAogI2RlZmlu ZSBKQ0NfSk5PIDB4MQpAQCAtMzI3LDYgKzMyOCwxMTQgQEAKICAgICB9CiB9CiAKKy8vIFRPRE8g Y29uc3RfYXJnIG9wdGltaXphdGlvbj8KK3N0YXRpYyB2b2lkIHRjZ19vdXRfc2V0Y29uZChUQ0dD b250ZXh0ICpzLCBpbnQgY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcg cmV0LCBUQ0dBcmcgYXJnMSwgVENHQXJnIGFyZzIpCit7CisgICAgLyogY21wICovCisgICAgdGNn X291dF9tb2RybShzLCAweDAxIHwgKEFSSVRIX0NNUCA8PCAzKSwgYXJnMiwgYXJnMSk7CisgICAg Lyogc2V0Y2MgKi8KKyAgICB0Y2dfb3V0X21vZHJtKHMsICgweDkwICsgdGNnX2NvbmRfdG9famNj W2NvbmRdKSB8IFBfRVhULCAwLCByZXQpOworICAgIC8qIHplcm8gZXh0ZW5kIHJldCB3aXRoIG1v dnpibCBzaW5jZSBzZXRjYyBvbmx5IHNldHMgdGhlIGxvd2VyIDggYml0cyAqLworICAgIHRjZ19v dXRfbW9kcm0ocywgMHhiNiB8IFBfRVhULCByZXQsIHJldCk7Cit9CisKKy8vIFRPRE8gY29uc3Rf YXJnIG9wdGltaXphdGlvbj8KK3N0YXRpYyB2b2lkIHRjZ19vdXRfc2V0Y29uZDJfYnJjb25kKFRD R0NvbnRleHQgKnMsIGludCBjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVENHQXJnIGFyZzEsIFRDR0FyZyBhcmcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGxhYmVsX2luZGV4KQoreworICAgIC8qIGNtcCAqLworICAgIHRjZ19vdXRf bW9kcm0ocywgMHgwMSB8IChBUklUSF9DTVAgPDwgMyksIGFyZzIsIGFyZzEpOworICAgIC8qIGpj YyAqLworICAgIHRjZ19vdXRfanh4KHMsIHRjZ19jb25kX3RvX2pjY1tjb25kXSwgbGFiZWxfaW5k ZXgpOworfQorCisvLyBUT0RPIGNvbnN0X2FyZyBvcHRpbWl6YXRpb24/CisvLyBUT0RPIHVzZSBj bW92IChpNjg2IG9ubHkuLi4pPworLyogYXJnczoKKyAqICAgMCBsb3cocmV0KQorICogICAxIGhp Z2gocmV0KQorICogICAyIGxvdyhhcmcxKQorICogICAzIGhpKGFyZzEpCisgKiAgIDQgbG93KGFy ZzIpCisgKiAgIDUgaGkoYXJnMikKKyAqICAgNiBjb25kaXRpb24KKyAqIE5vdGU6ICB0aGlzIGlz IGJhc2ljYWxseSBhIGNvcHkgb2YgdGNnX291dF9icmNvbmQyCisgKi8KK3N0YXRpYyB2b2lkIHRj Z19vdXRfc2V0Y29uZDIoVENHQ29udGV4dCAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgVENHQXJnICphcmdzKQoreworICAgIGludCBsYWJlbF96ZXJvLCBsYWJlbF9vbmU7 CisKKyAgICBsYWJlbF96ZXJvID0gZ2VuX25ld19sYWJlbCgpOworICAgIGxhYmVsX29uZSA9IGdl bl9uZXdfbGFiZWwoKTsKKyAgICBzd2l0Y2ggKGFyZ3NbNl0pIHsKKyAgICBjYXNlIFRDR19DT05E X0VROgorICAgICAgICB0Y2dfb3V0X3NldGNvbmQyX2JyY29uZChzLCBUQ0dfQ09ORF9ORSwgYXJn c1syXSwgYXJnc1s0XSwgbGFiZWxfemVybyk7CisgICAgICAgIHRjZ19vdXRfc2V0Y29uZDJfYnJj b25kKHMsIFRDR19DT05EX0VRLCBhcmdzWzNdLCBhcmdzWzVdLCBsYWJlbF9vbmUpOworICAgICAg ICBicmVhazsKKyAgICBjYXNlIFRDR19DT05EX05FOgorICAgICAgICB0Y2dfb3V0X3NldGNvbmQy X2JyY29uZChzLCBUQ0dfQ09ORF9ORSwgYXJnc1syXSwgYXJnc1s0XSwgbGFiZWxfb25lKTsKKyAg ICAgICAgdGNnX291dF9zZXRjb25kMl9icmNvbmQocywgVENHX0NPTkRfTkUsIGFyZ3NbM10sIGFy Z3NbNV0sIGxhYmVsX29uZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVENHX0NPTkRfTFQ6 CisgICAgICAgIHRjZ19vdXRfc2V0Y29uZDJfYnJjb25kKHMsIFRDR19DT05EX0xULCBhcmdzWzNd LCBhcmdzWzVdLCBsYWJlbF9vbmUpOworICAgICAgICB0Y2dfb3V0X2p4eChzLCBKQ0NfSk5FLCBs YWJlbF96ZXJvKTsKKyAgICAgICAgdGNnX291dF9zZXRjb25kMl9icmNvbmQocywgVENHX0NPTkRf TFRVLCBhcmdzWzJdLCBhcmdzWzRdLCBsYWJlbF9vbmUpOworICAgICAgICBicmVhazsKKyAgICBj YXNlIFRDR19DT05EX0xFOgorICAgICAgICB0Y2dfb3V0X3NldGNvbmQyX2JyY29uZChzLCBUQ0df Q09ORF9MVCwgYXJnc1szXSwgYXJnc1s1XSwgbGFiZWxfb25lKTsKKyAgICAgICAgdGNnX291dF9q eHgocywgSkNDX0pORSwgbGFiZWxfemVybyk7CisgICAgICAgIHRjZ19vdXRfc2V0Y29uZDJfYnJj b25kKHMsIFRDR19DT05EX0xFVSwgYXJnc1syXSwgYXJnc1s0XSwgbGFiZWxfb25lKTsKKyAgICAg ICAgYnJlYWs7CisgICAgY2FzZSBUQ0dfQ09ORF9HVDoKKyAgICAgICAgdGNnX291dF9zZXRjb25k Ml9icmNvbmQocywgVENHX0NPTkRfR1QsIGFyZ3NbM10sIGFyZ3NbNV0sIGxhYmVsX29uZSk7Cisg ICAgICAgIHRjZ19vdXRfanh4KHMsIEpDQ19KTkUsIGxhYmVsX3plcm8pOworICAgICAgICB0Y2df b3V0X3NldGNvbmQyX2JyY29uZChzLCBUQ0dfQ09ORF9HVFUsIGFyZ3NbMl0sIGFyZ3NbNF0sIGxh YmVsX29uZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVENHX0NPTkRfR0U6CisgICAgICAg IHRjZ19vdXRfc2V0Y29uZDJfYnJjb25kKHMsIFRDR19DT05EX0dULCBhcmdzWzNdLCBhcmdzWzVd LCBsYWJlbF9vbmUpOworICAgICAgICB0Y2dfb3V0X2p4eChzLCBKQ0NfSk5FLCBsYWJlbF96ZXJv KTsKKyAgICAgICAgdGNnX291dF9zZXRjb25kMl9icmNvbmQocywgVENHX0NPTkRfR0VVLCBhcmdz WzJdLCBhcmdzWzRdLCBsYWJlbF9vbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRDR19D T05EX0xUVToKKyAgICAgICAgdGNnX291dF9zZXRjb25kMl9icmNvbmQocywgVENHX0NPTkRfTFRV LCBhcmdzWzNdLCBhcmdzWzVdLCBsYWJlbF9vbmUpOworICAgICAgICB0Y2dfb3V0X2p4eChzLCBK Q0NfSk5FLCBsYWJlbF96ZXJvKTsKKyAgICAgICAgdGNnX291dF9zZXRjb25kMl9icmNvbmQocywg VENHX0NPTkRfTFRVLCBhcmdzWzJdLCBhcmdzWzRdLCBsYWJlbF9vbmUpOworICAgICAgICBicmVh azsKKyAgICBjYXNlIFRDR19DT05EX0xFVToKKyAgICAgICAgdGNnX291dF9zZXRjb25kMl9icmNv bmQocywgVENHX0NPTkRfTFRVLCBhcmdzWzNdLCBhcmdzWzVdLCBsYWJlbF9vbmUpOworICAgICAg ICB0Y2dfb3V0X2p4eChzLCBKQ0NfSk5FLCBsYWJlbF96ZXJvKTsKKyAgICAgICAgdGNnX291dF9z ZXRjb25kMl9icmNvbmQocywgVENHX0NPTkRfTEVVLCBhcmdzWzJdLCBhcmdzWzRdLCBsYWJlbF9v bmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRDR19DT05EX0dUVToKKyAgICAgICAgdGNn X291dF9zZXRjb25kMl9icmNvbmQocywgVENHX0NPTkRfR1RVLCBhcmdzWzNdLCBhcmdzWzVdLCBs YWJlbF9vbmUpOworICAgICAgICB0Y2dfb3V0X2p4eChzLCBKQ0NfSk5FLCBsYWJlbF96ZXJvKTsK KyAgICAgICAgdGNnX291dF9zZXRjb25kMl9icmNvbmQocywgVENHX0NPTkRfR1RVLCBhcmdzWzJd LCBhcmdzWzRdLCBsYWJlbF9vbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRDR19DT05E X0dFVToKKyAgICAgICAgdGNnX291dF9zZXRjb25kMl9icmNvbmQocywgVENHX0NPTkRfR1RVLCBh cmdzWzNdLCBhcmdzWzVdLCBsYWJlbF9vbmUpOworICAgICAgICB0Y2dfb3V0X2p4eChzLCBKQ0Nf Sk5FLCBsYWJlbF96ZXJvKTsKKyAgICAgICAgdGNnX291dF9zZXRjb25kMl9icmNvbmQocywgVENH X0NPTkRfR0VVLCBhcmdzWzJdLCBhcmdzWzRdLCBsYWJlbF9vbmUpOworICAgICAgICBicmVhazsK KyAgICBkZWZhdWx0OgorICAgICAgICB0Y2dfYWJvcnQoKTsKKyAgICB9CisgICAgdGNnX291dF9s YWJlbChzLCBsYWJlbF96ZXJvLCAodGNnX3RhcmdldF9sb25nKXMtPmNvZGVfcHRyKTsKKyAgICAv KiBjbGVhciBsb3dlciBwYXJ0IG9mIHJlc3VsdCAqLworICAgIHRjZ19vdXRfbW9kcm0ocywgMHgw MSB8IChBUklUSF9YT1IgPDwgMyksIGFyZ3NbMF0sIGFyZ3NbMF0pOworICAgIC8qIGJyYW5jaCBv dmVyIG5leHQgaW5zdHJ1Y3Rpb24gd2hpY2ggaXMgNSBieXRlcyBsb25nICovCisgICAgdGNnX291 dDgocywgMHhlYik7CisgICAgdGNnX291dDgocywgNSk7CisgICAgLyogc2V0IGxvd2VyIHBhcnQg b2YgcmVzdWx0IHRvIDEgKi8KKyAgICB0Y2dfb3V0X2xhYmVsKHMsIGxhYmVsX29uZSwgKHRjZ190 YXJnZXRfbG9uZylzLT5jb2RlX3B0cik7CisgICAgdGNnX291dDgocywgMHhiOCArIGFyZ3NbMF0p OworICAgIHRjZ19vdXQzMihzLCAxKTsKKyAgICAvKiBjbGVhciBoaWdoZXIgcGFydCBvZiByZXN1 bHQgKi8KKyAgICB0Y2dfb3V0X21vZHJtKHMsIDB4MDEgfCAoQVJJVEhfWE9SIDw8IDMpLCBhcmdz WzFdLCBhcmdzWzFdKTsKK30KKwogc3RhdGljIHZvaWQgdGNnX291dF9icmNvbmQoVENHQ29udGV4 dCAqcywgaW50IGNvbmQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzEs IFRDR0FyZyBhcmcyLCBpbnQgY29uc3RfYXJnMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBsYWJlbF9pbmRleCkKQEAgLTEwMTMsNiArMTEyMiwxMiBAQAogICAgICAgICBlbHNlCiAg ICAgICAgICAgICB0Y2dfb3V0X21vZHJtKHMsIDB4MDEgfCAoQVJJVEhfU0JCIDw8IDMpLCBhcmdz WzVdLCBhcmdzWzFdKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJTkRFWF9vcF9zZXRjb25k X2kzMjoKKyAgICAgICAgdGNnX291dF9zZXRjb25kKHMsIGFyZ3NbM10sIGFyZ3NbMF0sIGFyZ3Nb MV0sIGFyZ3NbMl0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElOREVYX29wX3NldGNvbmQy X2kzMjoKKyAgICAgICAgdGNnX291dF9zZXRjb25kMihzLCBhcmdzKTsKKyAgICAgICAgYnJlYWs7 CiAgICAgY2FzZSBJTkRFWF9vcF9icmNvbmRfaTMyOgogICAgICAgICB0Y2dfb3V0X2JyY29uZChz LCBhcmdzWzJdLCBhcmdzWzBdLCBhcmdzWzFdLCBjb25zdF9hcmdzWzFdLCBhcmdzWzNdKTsKICAg ICAgICAgYnJlYWs7CkBAIC0xMDg4LDYgKzEyMDMsMTEgQEAKICAgICB7IElOREVYX29wX3Nocl9p MzIsIHsgInIiLCAiMCIsICJjaSIgfSB9LAogICAgIHsgSU5ERVhfb3Bfc2FyX2kzMiwgeyAiciIs ICIwIiwgImNpIiB9IH0sCiAKKyAgICAvLyBUT0RPIGFkZCAnaScgdG8gdGhpcmQgInIiIChzZWNv bmQgaW5wdXQgYXJndW1lbnQpCisgICAgeyBJTkRFWF9vcF9zZXRjb25kX2kzMiwgeyAicSIsICJy IiwgInIiIH0gfSwKKyAgICAvLyBUT0RPIGFkZCAnaScKKyAgICB7IElOREVYX29wX3NldGNvbmQy X2kzMiwgeyAiciIsICJyIiwgInIiLCAiciIsICJyIiwgInIiIH0gfSwKKwogICAgIHsgSU5ERVhf b3BfYnJjb25kX2kzMiwgeyAiciIsICJyaSIgfSB9LAogCiAgICAgeyBJTkRFWF9vcF9hZGQyX2kz MiwgeyAiciIsICJyIiwgIjAiLCAiMSIsICJyaSIsICJyaSIgfSB9LApJbmRleDogdGNnL1JFQURN RQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSB0Y2cvUkVBRE1FCShyZXZpc2lvbiA1NjUwKQorKysgdGNnL1JFQURN RQkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3NywxMCBAQAogCiA2NCBiaXQgYnl0ZSBzd2Fw CiAKKyogc2V0Y29uZF9pMzIvaTY0IGNvbmQsIHQwLCB0MSwgdDIKKworU2V0IHQwIHRvIDEgaWYg dDEgY29uZCB0MiBpcyB0cnVlLCBlbHNlIHQwIGlzIHNldCB0byAwLiAoY2YgYnJjb25kIGZvciBj b25kLikKKwogKiBkaXNjYXJkX2kzMi9pNjQgdDAKIAogSW5kaWNhdGUgdGhhdCB0aGUgdmFsdWUg b2YgdDAgd29uJ3QgYmUgdXNlZCBsYXRlci4gSXQgaXMgdXNlZnVsIHRvCkluZGV4OiB0Y2cvdGNn LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gdGNnL3RjZy5jCShyZXZpc2lvbiA1NjUwKQorKysgdGNnL3RjZy5j CSh3b3JraW5nIGNvcHkpCkBAIC04NzcsNiArODc3LDEyIEBACiAjZWxpZiBUQ0dfVEFSR0VUX1JF R19CSVRTID09IDY0CiAgICAgICAgICAgICAgICAgfHwgYyA9PSBJTkRFWF9vcF9icmNvbmRfaTY0 CiAjZW5kaWYKKyAgICAgICAgICAgICAgICB8fCBjID09IElOREVYX29wX3NldGNvbmRfaTMyCisj aWYgVENHX1RBUkdFVF9SRUdfQklUUyA9PSAzMgorICAgICAgICAgICAgICAgIHx8IGMgPT0gSU5E RVhfb3Bfc2V0Y29uZDJfaTMyCisjZWxpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09IDY0CisgICAg ICAgICAgICAgICAgfHwgYyA9PSBJTkRFWF9vcF9zZXRjb25kX2k2NAorI2VuZGlmCiAgICAgICAg ICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3Nba10gPCBBUlJBWV9TSVpFKGNv bmRfbmFtZSkgJiYgY29uZF9uYW1lW2FyZ3Nba11dKQogICAgICAgICAgICAgICAgICAgICBmcHJp bnRmKG91dGZpbGUsICIsJXMiLCBjb25kX25hbWVbYXJnc1trKytdXSk7CkluZGV4OiB0Y2cveDg2 XzY0L3RjZy10YXJnZXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0Y2cveDg2XzY0L3RjZy10YXJnZXQuYwko cmV2aXNpb24gNTY1MCkKKysrIHRjZy94ODZfNjQvdGNnLXRhcmdldC5jCSh3b3JraW5nIGNvcHkp CkBAIC0xOTgsNiArMTk4LDcgQEAKICNkZWZpbmUgU0hJRlRfU0hSIDUKICNkZWZpbmUgU0hJRlRf U0FSIDcKIAorLyogVGhlIGZvbGxvd2luZyBkZWZpbmVzIGFwcGx5IHRvIHNldGNjIGluc3RydWN0 aW9uIHRvby4gKi8KICNkZWZpbmUgSkNDX0pNUCAoLTEpCiAjZGVmaW5lIEpDQ19KTyAgMHgwCiAj ZGVmaW5lIEpDQ19KTk8gMHgxCkBAIC00NjQsNiArNDY1LDI2IEBACiAgICAgfQogfQogCisvLyBU T0RPIGNvbnN0X2FyZyBvcHRpbWl6YXRpb24KK3N0YXRpYyB2b2lkIHRjZ19vdXRfc2V0Y29uZChU Q0dDb250ZXh0ICpzLCBpbnQgY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dB cmcgcmV0LCBUQ0dBcmcgYXJnMSwgVENHQXJnIGFyZzIsIGludCByZXh3KQoreworICAgIC8qIGNt cCAqLworICAgIHRjZ19vdXRfbW9kcm0ocywgMHgwMSB8IChBUklUSF9DTVAgPDwgMykgfCByZXh3 LCBhcmcyLCBhcmcxKTsKKyAgICAvKiBzZXRjYyAqLworICAgIC8vIFRPRE8gdGhpcyBzaG91bGQg dXNlIHRjZ19vdXRfbW9kcm0KKyAgICAvLyAgICAgIGhvd2V2ZXIgY3VycmVudGx5IHRjZ19vdXRf bW9kcm0gb3V0cHV0cyBhbiBleHRyYSBieXRlIGZvciBbYWJjZF1sCisgICAgLy90Y2dfb3V0X21v ZHJtKHMsICgweDkwICsgdGNnX2NvbmRfdG9famNjW2NvbmRdKSB8IFBfRVhUIHwgUF9SRVhCLCBy ZXQsIDApOworICAgIGlmIChyZXQgPiAzKQorICAgICAgICB0Y2dfb3V0OChzLCAweDQwICsgKHJl dCA+PiAzKSk7CisgICAgdGNnX291dDgocywgMHgwZik7CisgICAgdGNnX291dDgocywgMHg5MCAr IHRjZ19jb25kX3RvX2pjY1tjb25kXSk7CisgICAgdGNnX291dDgocywgMHhjMCArIChyZXQgJiA3 KSk7CisgICAgLyogemVybyBleHRlbmQgcmV0IHdpdGggbW92emJsIHNpbmNlIHNldGNjIG9ubHkg c2V0cyB0aGUgbG93ZXIgOCBiaXRzICovCisgICAgLy8gVE9ETyB0aGF0IGRvZXNuJ3QgbG9vayBw cmV0dHkKKyAgICB0Y2dfb3V0X21vZHJtKHMsIDB4YjYgfCBQX0VYVCB8IChyZXh3ID8gcmV4dyA6 IFBfUkVYQiksIHJldCwgcmV0KTsKK30KKwogc3RhdGljIHZvaWQgdGNnX291dF9icmNvbmQoVENH Q29udGV4dCAqcywgaW50IGNvbmQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJn IGFyZzEsIFRDR0FyZyBhcmcyLCBpbnQgY29uc3RfYXJnMiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBsYWJlbF9pbmRleCwgaW50IHJleHcpCkBAIC0xMDY1LDYgKzEwODYsMTQgQEAK ICAgICAgICAgYyA9IFNISUZUX1NBUjsKICAgICAgICAgZ290byBnZW5fc2hpZnQ2NDsKICAgICAg ICAgCisgICAgY2FzZSBJTkRFWF9vcF9zZXRjb25kX2kzMjoKKyAgICAgICAgdGNnX291dF9zZXRj b25kKHMsIGFyZ3NbM10sIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIDApOworICAgICAgICBi cmVhazsKKworICAgIGNhc2UgSU5ERVhfb3Bfc2V0Y29uZF9pNjQ6CisgICAgICAgIHRjZ19vdXRf c2V0Y29uZChzLCBhcmdzWzNdLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBQX1JFWFcpOwor ICAgICAgICBicmVhazsKKwogICAgIGNhc2UgSU5ERVhfb3BfYnJjb25kX2kzMjoKICAgICAgICAg dGNnX291dF9icmNvbmQocywgYXJnc1syXSwgYXJnc1swXSwgYXJnc1sxXSwgY29uc3RfYXJnc1sx XSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbM10sIDApOwpAQCAtMTIyNSw2ICsxMjU0 LDkgQEAKICAgICB7IElOREVYX29wX3Nocl9pMzIsIHsgInIiLCAiMCIsICJjaSIgfSB9LAogICAg IHsgSU5ERVhfb3Bfc2FyX2kzMiwgeyAiciIsICIwIiwgImNpIiB9IH0sCiAKKyAgICAvLyBUT0RP IGFkZCAnaScgdG8gdGhpcmQgInIiIChzZWNvbmQgaW5wdXQgYXJndW1lbnQpCisgICAgeyBJTkRF WF9vcF9zZXRjb25kX2kzMiwgeyAiciIsICJyIiwgInIiIH0gfSwKKwogICAgIHsgSU5ERVhfb3Bf YnJjb25kX2kzMiwgeyAiciIsICJyaSIgfSB9LAogCiAgICAgeyBJTkRFWF9vcF9tb3ZfaTY0LCB7 ICJyIiwgInIiIH0gfSwKQEAgLTEyNTQsNiArMTI4Niw5IEBACiAgICAgeyBJTkRFWF9vcF9zaHJf aTY0LCB7ICJyIiwgIjAiLCAiY2kiIH0gfSwKICAgICB7IElOREVYX29wX3Nhcl9pNjQsIHsgInIi LCAiMCIsICJjaSIgfSB9LAogCisgICAgLy8gVE9ETyBhZGQgJ2knIHRvIHRoaXJkICJyIiAoc2Vj b25kIGlucHV0IGFyZ3VtZW50KQorICAgIHsgSU5ERVhfb3Bfc2V0Y29uZF9pNjQsIHsgInIiLCAi ciIsICJyIiB9IH0sCisKICAgICB7IElOREVYX29wX2JyY29uZF9pNjQsIHsgInIiLCAicmUiIH0g fSwKIAogICAgIHsgSU5ERVhfb3BfYnN3YXBfaTMyLCB7ICJyIiwgIjAiIH0gfSwKSW5kZXg6IHRh cmdldC1hcm0vdHJhbnNsYXRlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0LWFybS90cmFuc2xhdGUu YwkocmV2aXNpb24gNTY1MCkKKysrIHRhcmdldC1hcm0vdHJhbnNsYXRlLmMJKHdvcmtpbmcgY29w eSkKQEAgLTIwMSw3ICsyMDEsNiBAQAogCiAjZGVmaW5lIGdlbl9vcF9hZGRsX1QwX1QxX2NjKCkg Z2VuX2hlbHBlcl9hZGRfY2MoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsxXSkKICNkZWZpbmUg Z2VuX29wX2FkY2xfVDBfVDFfY2MoKSBnZW5faGVscGVyX2FkY19jYyhjcHVfVFswXSwgY3B1X1Rb MF0sIGNwdV9UWzFdKQotI2RlZmluZSBnZW5fb3Bfc3VibF9UMF9UMV9jYygpIGdlbl9oZWxwZXJf c3ViX2NjKGNwdV9UWzBdLCBjcHVfVFswXSwgY3B1X1RbMV0pCiAjZGVmaW5lIGdlbl9vcF9zYmNs X1QwX1QxX2NjKCkgZ2VuX2hlbHBlcl9zYmNfY2MoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsx XSkKICNkZWZpbmUgZ2VuX29wX3JzYmxfVDBfVDFfY2MoKSBnZW5faGVscGVyX3N1Yl9jYyhjcHVf VFswXSwgY3B1X1RbMV0sIGNwdV9UWzBdKQogI2RlZmluZSBnZW5fb3BfcnNjbF9UMF9UMV9jYygp IGdlbl9oZWxwZXJfc2JjX2NjKGNwdV9UWzBdLCBjcHVfVFsxXSwgY3B1X1RbMF0pCkBAIC0yNDMs NiArMjQyLDM2IEBACiAgICAgZGVhZF90bXAodG1wKTsKIH0KIAorLy8jZGVmaW5lIGdlbl9vcF9z dWJsX1QwX1QxX2NjKCkgZ2VuX2hlbHBlcl9zdWJfY2MoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVf VFsxXSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3Bfc3VibF9UMF9UMV9jYyh2b2lkKQorewor ICAgIFRDR3YgdG1wMzJfcmVzOworICAgIFRDR3YgdG1wMTsKKyAgICBUQ0d2IHRtcDI7CisKKyAg ICB0bXAzMl9yZXMgPSBuZXdfdG1wKCk7CisgICAgdGNnX2dlbl9zdWJfaTMyKHRtcDMyX3Jlcywg Y3B1X1RbMF0sIGNwdV9UWzFdKTsKKyAgICB0Y2dfZ2VuX3N0X2kzMih0bXAzMl9yZXMsIGNwdV9l bnYsIG9mZnNldG9mKENQVVN0YXRlLCBORikpOworICAgIHRjZ19nZW5fc3RfaTMyKHRtcDMyX3Jl cywgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIFpGKSk7CisKKyAgICB0bXAxID0gbmV3X3Rt cCgpOworCisgICAgdGNnX2dlbl9zZXRjb25kX2kzMihUQ0dfQ09ORF9HRVUsIHRtcDEsIGNwdV9U WzBdLCBjcHVfVFsxXSk7CisgICAgdGNnX2dlbl9zdF9pMzIodG1wMSwgY3B1X2Vudiwgb2Zmc2V0 b2YoQ1BVU3RhdGUsIENGKSk7CisKKyAgICB0bXAyID0gbmV3X3RtcCgpOworICAgIHRjZ19nZW5f eG9yX2kzMih0bXAxLCBjcHVfVFswXSwgY3B1X1RbMV0pOworICAgIHRjZ19nZW5feG9yX2kzMih0 bXAyLCBjcHVfVFswXSwgdG1wMzJfcmVzKTsKKyAgICB0Y2dfZ2VuX2FuZF9pMzIodG1wMSwgdG1w MSwgdG1wMik7CisgICAgZGVhZF90bXAodG1wMik7CisgICAgdGNnX2dlbl9zdF9pMzIodG1wMSwg Y3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIFZGKSk7CisgICAgZGVhZF90bXAodG1wMSk7CisK KyAgICB0Y2dfZ2VuX21vdl9pMzIoY3B1X1RbMF0sIHRtcDMyX3Jlcyk7CisKKyAgICBkZWFkX3Rt cCh0bXAzMl9yZXMpOworfQorCiBzdGF0aWMgdm9pZCBnZW5fc211bF9kdWFsKFRDR3YgYSwgVENH diBiKQogewogICAgIFRDR3YgdG1wMSA9IG5ld190bXAoKTsK ------=_Part_71237_795593.1226172740485--