From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KvGqZ-0000Wk-6w for qemu-devel@nongnu.org; Wed, 29 Oct 2008 15:36:51 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KvGqX-0000WY-Uc for qemu-devel@nongnu.org; Wed, 29 Oct 2008 15:36:50 -0400 Received: from [199.232.76.173] (port=48117 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KvGqX-0000WP-Jr for qemu-devel@nongnu.org; Wed, 29 Oct 2008 15:36:49 -0400 Received: from wf-out-1314.google.com ([209.85.200.168]:22602) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KvGqX-0007hL-0N for qemu-devel@nongnu.org; Wed, 29 Oct 2008 15:36:49 -0400 Received: by wf-out-1314.google.com with SMTP id 27so150993wfd.4 for ; Wed, 29 Oct 2008 12:36:47 -0700 (PDT) Message-ID: Date: Wed, 29 Oct 2008 21:31:01 +0200 From: "Blue Swirl" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_6425_19299504.1225308661176" Subject: [Qemu-devel] [PATCH][RFC] Run time TCGv size check for debugging Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fabrice Bellard , "qemu-devel@nongnu.org" ------=_Part_6425_19299504.1225308661176 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, When emulating a mixed 32/64 bit Qemu target CPUs it's easy to confuse the TCGv size, passing 32 bit TCGv to a function expecting a 64 bit one and vice versa. This patch adds a run time sanity check for TCGv sizes. Because a 32 bit Qemu host does not really use 64 bit TCGvs, the patch is only functional on a 64 bit host. Of course also a pure 32 bit Qemu target is not likely to suffer from TCGv size confusion. Some use cases are not covered yet. Comments? ------=_Part_6425_19299504.1225308661176 Content-Type: plain/text; name=runtime_tcgv_size_check.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fmwd0rxl Content-Disposition: attachment; filename=runtime_tcgv_size_check.diff SW5kZXg6IHFlbXUvdGNnL3RjZy1vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy90Y2cvdGNn LW9wLmgJMjAwOC0xMC0yOSAxOToxNzoxMC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdGNnL3Rj Zy1vcC5oCTIwMDgtMTAtMjkgMTk6MTc6MTIuMDAwMDAwMDAwICswMDAwCkBAIC0xNjksMTQgKzE2 OSwyMiBAQAogICAgIHRjZ19nZW5fb3AxaShJTkRFWF9vcF9iciwgbGFiZWwpOwogfQogCi1zdGF0 aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9tb3ZfaTMyKFRDR3YgcmV0LCBUQ0d2IGFyZykKK3N0YXRp YyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX21vdl9pMzJfbm9jaGVjayhUQ0d2IHJldCwgVENHdiBhcmcp CiB7CiAgICAgaWYgKEdFVF9UQ0dWKHJldCkgIT0gR0VUX1RDR1YoYXJnKSkKICAgICAgICAgdGNn X2dlbl9vcDIoSU5ERVhfb3BfbW92X2kzMiwgcmV0LCBhcmcpOwogfQogCitzdGF0aWMgaW5saW5l IHZvaWQgdGNnX2dlbl9tb3ZfaTMyKFRDR3YgcmV0LCBUQ0d2IGFyZykKK3sKKyAgICBDSEVDS19U Q0dWXzMyKHJldCk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcpOworICAgIHRjZ19nZW5fbW92X2kz Ml9ub2NoZWNrKHJldCwgYXJnKTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fbW92 aV9pMzIoVENHdiByZXQsIGludDMyX3QgYXJnKQogeworICAgIENIRUNLX1RDR1ZfMzIocmV0KTsK ICAgICB0Y2dfZ2VuX29wMmkoSU5ERVhfb3BfbW92aV9pMzIsIHJldCwgYXJnKTsKIH0KIApAQCAt MzU3LDExICszNjUsMTYgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fYWRkX2kzMihU Q0d2IHJldCwgVENHdiBhcmcxLCBUQ0d2IGFyZzIpCiB7CisgICAgQ0hFQ0tfVENHVl8zMihyZXQp OworICAgIENIRUNLX1RDR1ZfMzIoYXJnMSk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcyKTsKICAg ICB0Y2dfZ2VuX29wMyhJTkRFWF9vcF9hZGRfaTMyLCByZXQsIGFyZzEsIGFyZzIpOwogfQogCiBz dGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9hZGRpX2kzMihUQ0d2IHJldCwgVENHdiBhcmcxLCBp bnQzMl90IGFyZzIpCiB7CisgICAgQ0hFQ0tfVENHVl8zMihyZXQpOworICAgIENIRUNLX1RDR1Zf MzIoYXJnMSk7CiAgICAgLyogc29tZSBjYXNlcyBjYW4gYmUgb3B0aW1pemVkIGhlcmUgKi8KICAg ICBpZiAoYXJnMiA9PSAwKSB7CiAgICAgICAgIHRjZ19nZW5fbW92X2kzMihyZXQsIGFyZzEpOwpA QCAtMzc0LDExICszODcsMTYgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fc3ViX2kz MihUQ0d2IHJldCwgVENHdiBhcmcxLCBUQ0d2IGFyZzIpCiB7CisgICAgQ0hFQ0tfVENHVl8zMihy ZXQpOworICAgIENIRUNLX1RDR1ZfMzIoYXJnMSk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcyKTsK ICAgICB0Y2dfZ2VuX29wMyhJTkRFWF9vcF9zdWJfaTMyLCByZXQsIGFyZzEsIGFyZzIpOwogfQog CiBzdGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9zdWJpX2kzMihUQ0d2IHJldCwgVENHdiBhcmcx LCBpbnQzMl90IGFyZzIpCiB7CisgICAgQ0hFQ0tfVENHVl8zMihyZXQpOworICAgIENIRUNLX1RD R1ZfMzIoYXJnMSk7CiAgICAgLyogc29tZSBjYXNlcyBjYW4gYmUgb3B0aW1pemVkIGhlcmUgKi8K ICAgICBpZiAoYXJnMiA9PSAwKSB7CiAgICAgICAgIHRjZ19nZW5fbW92X2kzMihyZXQsIGFyZzEp OwpAQCAtMzkxLDExICs0MDksMTYgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fYW5k X2kzMihUQ0d2IHJldCwgVENHdiBhcmcxLCBUQ0d2IGFyZzIpCiB7CisgICAgQ0hFQ0tfVENHVl8z MihyZXQpOworICAgIENIRUNLX1RDR1ZfMzIoYXJnMSk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcy KTsKICAgICB0Y2dfZ2VuX29wMyhJTkRFWF9vcF9hbmRfaTMyLCByZXQsIGFyZzEsIGFyZzIpOwog fQogCiBzdGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9hbmRpX2kzMihUQ0d2IHJldCwgVENHdiBh cmcxLCBpbnQzMl90IGFyZzIpCiB7CisgICAgQ0hFQ0tfVENHVl8zMihyZXQpOworICAgIENIRUNL X1RDR1ZfMzIoYXJnMSk7CiAgICAgLyogc29tZSBjYXNlcyBjYW4gYmUgb3B0aW1pemVkIGhlcmUg Ki8KICAgICBpZiAoYXJnMiA9PSAwKSB7CiAgICAgICAgIHRjZ19nZW5fbW92aV9pMzIocmV0LCAw KTsKQEAgLTQxMCwxMSArNDMzLDE2IEBACiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX29y X2kzMihUQ0d2IHJldCwgVENHdiBhcmcxLCBUQ0d2IGFyZzIpCiB7CisgICAgQ0hFQ0tfVENHVl8z MihyZXQpOworICAgIENIRUNLX1RDR1ZfMzIoYXJnMSk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcy KTsKICAgICB0Y2dfZ2VuX29wMyhJTkRFWF9vcF9vcl9pMzIsIHJldCwgYXJnMSwgYXJnMik7CiB9 CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX29yaV9pMzIoVENHdiByZXQsIFRDR3YgYXJn MSwgaW50MzJfdCBhcmcyKQogeworICAgIENIRUNLX1RDR1ZfMzIocmV0KTsKKyAgICBDSEVDS19U Q0dWXzMyKGFyZzEpOwogICAgIC8qIHNvbWUgY2FzZXMgY2FuIGJlIG9wdGltaXplZCBoZXJlICov CiAgICAgaWYgKGFyZzIgPT0gMHhmZmZmZmZmZikgewogICAgICAgICB0Y2dfZ2VuX21vdmlfaTMy KHJldCwgMHhmZmZmZmZmZik7CkBAIC00MjksMTEgKzQ1NywxNiBAQAogCiBzdGF0aWMgaW5saW5l IHZvaWQgdGNnX2dlbl94b3JfaTMyKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIFRDR3YgYXJnMikKIHsK KyAgICBDSEVDS19UQ0dWXzMyKHJldCk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcxKTsKKyAgICBD SEVDS19UQ0dWXzMyKGFyZzIpOwogICAgIHRjZ19nZW5fb3AzKElOREVYX29wX3hvcl9pMzIsIHJl dCwgYXJnMSwgYXJnMik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX3hvcmlfaTMy KFRDR3YgcmV0LCBUQ0d2IGFyZzEsIGludDMyX3QgYXJnMikKIHsKKyAgICBDSEVDS19UQ0dWXzMy KHJldCk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcxKTsKICAgICAvKiBzb21lIGNhc2VzIGNhbiBi ZSBvcHRpbWl6ZWQgaGVyZSAqLwogICAgIGlmIChhcmcyID09IDApIHsKICAgICAgICAgdGNnX2dl bl9tb3ZfaTMyKHJldCwgYXJnMSk7CkBAIC00NDYsMTEgKzQ3OSwxNiBAQAogCiBzdGF0aWMgaW5s aW5lIHZvaWQgdGNnX2dlbl9zaGxfaTMyKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIFRDR3YgYXJnMikK IHsKKyAgICBDSEVDS19UQ0dWXzMyKHJldCk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcxKTsKKyAg ICBDSEVDS19UQ0dWXzMyKGFyZzIpOwogICAgIHRjZ19nZW5fb3AzKElOREVYX29wX3NobF9pMzIs IHJldCwgYXJnMSwgYXJnMik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX3NobGlf aTMyKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIGludDMyX3QgYXJnMikKIHsKKyAgICBDSEVDS19UQ0dW XzMyKHJldCk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcxKTsKICAgICBpZiAoYXJnMiA9PSAwKSB7 CiAgICAgICAgIHRjZ19nZW5fbW92X2kzMihyZXQsIGFyZzEpOwogICAgIH0gZWxzZSB7CkBAIC00 NjIsMTEgKzUwMCwxNiBAQAogCiBzdGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9zaHJfaTMyKFRD R3YgcmV0LCBUQ0d2IGFyZzEsIFRDR3YgYXJnMikKIHsKKyAgICBDSEVDS19UQ0dWXzMyKHJldCk7 CisgICAgQ0hFQ0tfVENHVl8zMihhcmcxKTsKKyAgICBDSEVDS19UQ0dWXzMyKGFyZzIpOwogICAg IHRjZ19nZW5fb3AzKElOREVYX29wX3Nocl9pMzIsIHJldCwgYXJnMSwgYXJnMik7CiB9CiAKIHN0 YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX3NocmlfaTMyKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIGlu dDMyX3QgYXJnMikKIHsKKyAgICBDSEVDS19UQ0dWXzMyKHJldCk7CisgICAgQ0hFQ0tfVENHVl8z MihhcmcxKTsKICAgICBpZiAoYXJnMiA9PSAwKSB7CiAgICAgICAgIHRjZ19nZW5fbW92X2kzMihy ZXQsIGFyZzEpOwogICAgIH0gZWxzZSB7CkBAIC00NzgsMTEgKzUyMSwxNiBAQAogCiBzdGF0aWMg aW5saW5lIHZvaWQgdGNnX2dlbl9zYXJfaTMyKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIFRDR3YgYXJn MikKIHsKKyAgICBDSEVDS19UQ0dWXzMyKHJldCk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcxKTsK KyAgICBDSEVDS19UQ0dWXzMyKGFyZzIpOwogICAgIHRjZ19nZW5fb3AzKElOREVYX29wX3Nhcl9p MzIsIHJldCwgYXJnMSwgYXJnMik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX3Nh cmlfaTMyKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIGludDMyX3QgYXJnMikKIHsKKyAgICBDSEVDS19U Q0dWXzMyKHJldCk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcxKTsKICAgICBpZiAoYXJnMiA9PSAw KSB7CiAgICAgICAgIHRjZ19nZW5fbW92X2kzMihyZXQsIGFyZzEpOwogICAgIH0gZWxzZSB7CkBA IC00OTUsNiArNTQzLDggQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX2JyY29uZF9pMzIo aW50IGNvbmQsIFRDR3YgYXJnMSwgVENHdiBhcmcyLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGxhYmVsX2luZGV4KQogeworICAgIENIRUNLX1RDR1ZfMzIoYXJn MSk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcyKTsKICAgICB0Y2dfZ2VuX29wNGlpKElOREVYX29w X2JyY29uZF9pMzIsIGFyZzEsIGFyZzIsIGNvbmQsIGxhYmVsX2luZGV4KTsKIH0KIApAQCAtNTAy LDE4ICs1NTIsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBsYWJlbF9pbmRleCkKIHsKICAgICBUQ0d2IHQwID0gdGNnX2NvbnN0X2kzMihhcmcyKTsKKyAg ICBDSEVDS19UQ0dWXzMyKGFyZzEpOwogICAgIHRjZ19nZW5fYnJjb25kX2kzMihjb25kLCBhcmcx LCB0MCwgbGFiZWxfaW5kZXgpOwogICAgIHRjZ190ZW1wX2ZyZWUodDApOwogfQogCiBzdGF0aWMg aW5saW5lIHZvaWQgdGNnX2dlbl9tdWxfaTMyKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIFRDR3YgYXJn MikKIHsKKyAgICBDSEVDS19UQ0dWXzMyKHJldCk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcxKTsK KyAgICBDSEVDS19UQ0dWXzMyKGFyZzIpOwogICAgIHRjZ19nZW5fb3AzKElOREVYX29wX211bF9p MzIsIHJldCwgYXJnMSwgYXJnMik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX211 bGlfaTMyKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIGludDMyX3QgYXJnMikKIHsKICAgICBUQ0d2IHQw ID0gdGNnX2NvbnN0X2kzMihhcmcyKTsKKyAgICBDSEVDS19UQ0dWXzMyKHJldCk7CisgICAgQ0hF Q0tfVENHVl8zMihhcmcxKTsKICAgICB0Y2dfZ2VuX211bF9pMzIocmV0LCBhcmcxLCB0MCk7CiAg ICAgdGNnX3RlbXBfZnJlZSh0MCk7CiB9CkBAIC01MjEsMjcgKzU3Nyw0MiBAQAogI2lmZGVmIFRD R19UQVJHRVRfSEFTX2Rpdl9pMzIKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX2Rpdl9pMzIo VENHdiByZXQsIFRDR3YgYXJnMSwgVENHdiBhcmcyKQogeworICAgIENIRUNLX1RDR1ZfMzIocmV0 KTsKKyAgICBDSEVDS19UQ0dWXzMyKGFyZzEpOworICAgIENIRUNLX1RDR1ZfMzIoYXJnMik7CiAg ICAgdGNnX2dlbl9vcDMoSU5ERVhfb3BfZGl2X2kzMiwgcmV0LCBhcmcxLCBhcmcyKTsKIH0KIAog c3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fcmVtX2kzMihUQ0d2IHJldCwgVENHdiBhcmcxLCBU Q0d2IGFyZzIpCiB7CisgICAgQ0hFQ0tfVENHVl8zMihyZXQpOworICAgIENIRUNLX1RDR1ZfMzIo YXJnMSk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcyKTsKICAgICB0Y2dfZ2VuX29wMyhJTkRFWF9v cF9yZW1faTMyLCByZXQsIGFyZzEsIGFyZzIpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgdGNn X2dlbl9kaXZ1X2kzMihUQ0d2IHJldCwgVENHdiBhcmcxLCBUQ0d2IGFyZzIpCiB7CisgICAgQ0hF Q0tfVENHVl8zMihyZXQpOworICAgIENIRUNLX1RDR1ZfMzIoYXJnMSk7CisgICAgQ0hFQ0tfVENH Vl8zMihhcmcyKTsKICAgICB0Y2dfZ2VuX29wMyhJTkRFWF9vcF9kaXZ1X2kzMiwgcmV0LCBhcmcx LCBhcmcyKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fcmVtdV9pMzIoVENHdiBy ZXQsIFRDR3YgYXJnMSwgVENHdiBhcmcyKQogeworICAgIENIRUNLX1RDR1ZfMzIocmV0KTsKKyAg ICBDSEVDS19UQ0dWXzMyKGFyZzEpOworICAgIENIRUNLX1RDR1ZfMzIoYXJnMik7CiAgICAgdGNn X2dlbl9vcDMoSU5ERVhfb3BfcmVtdV9pMzIsIHJldCwgYXJnMSwgYXJnMik7CiB9CiAjZWxzZQog c3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fZGl2X2kzMihUQ0d2IHJldCwgVENHdiBhcmcxLCBU Q0d2IGFyZzIpCiB7CiAgICAgVENHdiB0MDsKKyAgICBDSEVDS19UQ0dWXzMyKHJldCk7CisgICAg Q0hFQ0tfVENHVl8zMihhcmcxKTsKKyAgICBDSEVDS19UQ0dWXzMyKGFyZzIpOwogICAgIHQwID0g dGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7CiAgICAgdGNnX2dlbl9zYXJpX2kzMih0MCwgYXJn MSwgMzEpOwogICAgIHRjZ19nZW5fb3A1KElOREVYX29wX2RpdjJfaTMyLCByZXQsIHQwLCBhcmcx LCB0MCwgYXJnMik7CkBAIC01NTEsNiArNjIyLDkgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2df Z2VuX3JlbV9pMzIoVENHdiByZXQsIFRDR3YgYXJnMSwgVENHdiBhcmcyKQogewogICAgIFRDR3Yg dDA7CisgICAgQ0hFQ0tfVENHVl8zMihyZXQpOworICAgIENIRUNLX1RDR1ZfMzIoYXJnMSk7Cisg ICAgQ0hFQ0tfVENHVl8zMihhcmcyKTsKICAgICB0MCA9IHRjZ190ZW1wX25ldyhUQ0dfVFlQRV9J MzIpOwogICAgIHRjZ19nZW5fc2FyaV9pMzIodDAsIGFyZzEsIDMxKTsKICAgICB0Y2dfZ2VuX29w NShJTkRFWF9vcF9kaXYyX2kzMiwgdDAsIHJldCwgYXJnMSwgdDAsIGFyZzIpOwpAQCAtNTYwLDYg KzYzNCw5IEBACiBzdGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9kaXZ1X2kzMihUQ0d2IHJldCwg VENHdiBhcmcxLCBUQ0d2IGFyZzIpCiB7CiAgICAgVENHdiB0MDsKKyAgICBDSEVDS19UQ0dWXzMy KHJldCk7CisgICAgQ0hFQ0tfVENHVl8zMihhcmcxKTsKKyAgICBDSEVDS19UQ0dWXzMyKGFyZzIp OwogICAgIHQwID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7CiAgICAgdGNnX2dlbl9tb3Zp X2kzMih0MCwgMCk7CiAgICAgdGNnX2dlbl9vcDUoSU5ERVhfb3BfZGl2dTJfaTMyLCByZXQsIHQw LCBhcmcxLCB0MCwgYXJnMik7CkBAIC01NjksNiArNjQ2LDkgQEAKIHN0YXRpYyBpbmxpbmUgdm9p ZCB0Y2dfZ2VuX3JlbXVfaTMyKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIFRDR3YgYXJnMikKIHsKICAg ICBUQ0d2IHQwOworICAgIENIRUNLX1RDR1ZfMzIocmV0KTsKKyAgICBDSEVDS19UQ0dWXzMyKGFy ZzEpOworICAgIENIRUNLX1RDR1ZfMzIoYXJnMik7CiAgICAgdDAgPSB0Y2dfdGVtcF9uZXcoVENH X1RZUEVfSTMyKTsKICAgICB0Y2dfZ2VuX21vdmlfaTMyKHQwLCAwKTsKICAgICB0Y2dfZ2VuX29w NShJTkRFWF9vcF9kaXZ1Ml9pMzIsIHQwLCByZXQsIGFyZzEsIHQwLCBhcmcyKTsKQEAgLTY5OSwx MiArNzc5LDE3IEBACiAgICAgdGNnX2dlbl9hbmRfaTMyKFRDR1ZfSElHSChyZXQpLCBUQ0dWX0hJ R0goYXJnMSksIFRDR1ZfSElHSChhcmcyKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCB0Y2df Z2VuX2FuZGlfaTY0KFRDR3YgcmV0LCBUQ0d2IGFyZzEsIGludDY0X3QgYXJnMikKK3N0YXRpYyBp bmxpbmUgdm9pZCB0Y2dfZ2VuX2FuZGlfaTY0X25vY2hlY2soVENHdiByZXQsIFRDR3YgYXJnMSwg aW50NjRfdCBhcmcyKQogewogICAgIHRjZ19nZW5fYW5kaV9pMzIocmV0LCBhcmcxLCBhcmcyKTsK ICAgICB0Y2dfZ2VuX2FuZGlfaTMyKFRDR1ZfSElHSChyZXQpLCBUQ0dWX0hJR0goYXJnMSksIGFy ZzIgPj4gMzIpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9hbmRpX2k2NChUQ0d2 IHJldCwgVENHdiBhcmcxLCBpbnQ2NF90IGFyZzIpCit7CisgICAgdGNnX2dlbl9hbmRpX2k2NF9u b2NoZWNrKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIGludDY0X3QgYXJnMikKK30KKwogc3RhdGljIGlu bGluZSB2b2lkIHRjZ19nZW5fb3JfaTY0KFRDR3YgcmV0LCBUQ0d2IGFyZzEsIFRDR3YgYXJnMikK IHsKICAgICB0Y2dfZ2VuX29yX2kzMihyZXQsIGFyZzEsIGFyZzIpOwpAQCAtODE5LDEyICs5MDQs MTUgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fbW92X2k2NChUQ0d2IHJldCwgVENH diBhcmcpCiB7CisgICAgQ0hFQ0tfVENHVl82NChyZXQpOworICAgIENIRUNLX1RDR1ZfNjQoYXJn KTsKICAgICBpZiAoR0VUX1RDR1YocmV0KSAhPSBHRVRfVENHVihhcmcpKQogICAgICAgICB0Y2df Z2VuX29wMihJTkRFWF9vcF9tb3ZfaTY0LCByZXQsIGFyZyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg dm9pZCB0Y2dfZ2VuX21vdmlfaTY0KFRDR3YgcmV0LCBpbnQ2NF90IGFyZykKIHsKKyAgICBDSEVD S19UQ0dWXzY0KHJldCk7CiAgICAgdGNnX2dlbl9vcDJpKElOREVYX29wX21vdmlfaTY0LCByZXQs IGFyZyk7CiB9CiAKQEAgLTg5NCw3MSArOTgyLDEwNiBAQAogCiBzdGF0aWMgaW5saW5lIHZvaWQg dGNnX2dlbl9hZGRfaTY0KFRDR3YgcmV0LCBUQ0d2IGFyZzEsIFRDR3YgYXJnMikKIHsKKyAgICBD SEVDS19UQ0dWXzY0KHJldCk7CisgICAgQ0hFQ0tfVENHVl82NChhcmcxKTsKKyAgICBDSEVDS19U Q0dWXzY0KGFyZzIpOwogICAgIHRjZ19nZW5fb3AzKElOREVYX29wX2FkZF9pNjQsIHJldCwgYXJn MSwgYXJnMik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX2FkZGlfaTY0KFRDR3Yg cmV0LCBUQ0d2IGFyZzEsIGludDY0X3QgYXJnMikKIHsKICAgICBUQ0d2IHQwID0gdGNnX2NvbnN0 X2k2NChhcmcyKTsKKyAgICBDSEVDS19UQ0dWXzY0KHJldCk7CisgICAgQ0hFQ0tfVENHVl82NChh cmcxKTsKICAgICB0Y2dfZ2VuX2FkZF9pNjQocmV0LCBhcmcxLCB0MCk7CiAgICAgdGNnX3RlbXBf ZnJlZSh0MCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX3N1Yl9pNjQoVENHdiBy ZXQsIFRDR3YgYXJnMSwgVENHdiBhcmcyKQogeworICAgIENIRUNLX1RDR1ZfNjQocmV0KTsKKyAg ICBDSEVDS19UQ0dWXzY0KGFyZzEpOworICAgIENIRUNLX1RDR1ZfNjQoYXJnMik7CiAgICAgdGNn X2dlbl9vcDMoSU5ERVhfb3Bfc3ViX2k2NCwgcmV0LCBhcmcxLCBhcmcyKTsKIH0KIAogc3RhdGlj IGlubGluZSB2b2lkIHRjZ19nZW5fc3ViaV9pNjQoVENHdiByZXQsIFRDR3YgYXJnMSwgaW50NjRf dCBhcmcyKQogewogICAgIFRDR3YgdDAgPSB0Y2dfY29uc3RfaTY0KGFyZzIpOworICAgIENIRUNL X1RDR1ZfNjQocmV0KTsKKyAgICBDSEVDS19UQ0dWXzY0KGFyZzEpOwogICAgIHRjZ19nZW5fc3Vi X2k2NChyZXQsIGFyZzEsIHQwKTsKICAgICB0Y2dfdGVtcF9mcmVlKHQwKTsKIH0KIAogc3RhdGlj IGlubGluZSB2b2lkIHRjZ19nZW5fYW5kX2k2NChUQ0d2IHJldCwgVENHdiBhcmcxLCBUQ0d2IGFy ZzIpCiB7CisgICAgQ0hFQ0tfVENHVl82NChyZXQpOworICAgIENIRUNLX1RDR1ZfNjQoYXJnMSk7 CisgICAgQ0hFQ0tfVENHVl82NChhcmcyKTsKICAgICB0Y2dfZ2VuX29wMyhJTkRFWF9vcF9hbmRf aTY0LCByZXQsIGFyZzEsIGFyZzIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9h bmRpX2k2NChUQ0d2IHJldCwgVENHdiBhcmcxLCBpbnQ2NF90IGFyZzIpCitzdGF0aWMgaW5saW5l IHZvaWQgdGNnX2dlbl9hbmRpX2k2NF9ub2NoZWNrKFRDR3YgcmV0LCBUQ0d2IGFyZzEsIGludDY0 X3QgYXJnMikKIHsKICAgICBUQ0d2IHQwID0gdGNnX2NvbnN0X2k2NChhcmcyKTsKICAgICB0Y2df Z2VuX2FuZF9pNjQocmV0LCBhcmcxLCB0MCk7CiAgICAgdGNnX3RlbXBfZnJlZSh0MCk7CiB9CiAK K3N0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX2FuZGlfaTY0KFRDR3YgcmV0LCBUQ0d2IGFyZzEs IGludDY0X3QgYXJnMikKK3sKKyAgICBDSEVDS19UQ0dWXzY0KHJldCk7CisgICAgQ0hFQ0tfVENH Vl82NChhcmcxKTsKKyAgICB0Y2dfZ2VuX2FuZGlfaTY0X25vY2hlY2socmV0LCBhcmcxLCBhcmcy KTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fb3JfaTY0KFRDR3YgcmV0LCBUQ0d2 IGFyZzEsIFRDR3YgYXJnMikKIHsKKyAgICBDSEVDS19UQ0dWXzY0KHJldCk7CisgICAgQ0hFQ0tf VENHVl82NChhcmcxKTsKKyAgICBDSEVDS19UQ0dWXzY0KGFyZzIpOwogICAgIHRjZ19nZW5fb3Az KElOREVYX29wX29yX2k2NCwgcmV0LCBhcmcxLCBhcmcyKTsKIH0KIAogc3RhdGljIGlubGluZSB2 b2lkIHRjZ19nZW5fb3JpX2k2NChUQ0d2IHJldCwgVENHdiBhcmcxLCBpbnQ2NF90IGFyZzIpCiB7 CiAgICAgVENHdiB0MCA9IHRjZ19jb25zdF9pNjQoYXJnMik7CisgICAgQ0hFQ0tfVENHVl82NChy ZXQpOworICAgIENIRUNLX1RDR1ZfNjQoYXJnMSk7CiAgICAgdGNnX2dlbl9vcl9pNjQocmV0LCBh cmcxLCB0MCk7CiAgICAgdGNnX3RlbXBfZnJlZSh0MCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9p ZCB0Y2dfZ2VuX3hvcl9pNjQoVENHdiByZXQsIFRDR3YgYXJnMSwgVENHdiBhcmcyKQogeworICAg IENIRUNLX1RDR1ZfNjQocmV0KTsKKyAgICBDSEVDS19UQ0dWXzY0KGFyZzEpOworICAgIENIRUNL X1RDR1ZfNjQoYXJnMik7CiAgICAgdGNnX2dlbl9vcDMoSU5ERVhfb3BfeG9yX2k2NCwgcmV0LCBh cmcxLCBhcmcyKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5feG9yaV9pNjQoVENH diByZXQsIFRDR3YgYXJnMSwgaW50NjRfdCBhcmcyKQogewogICAgIFRDR3YgdDAgPSB0Y2dfY29u c3RfaTY0KGFyZzIpOworICAgIENIRUNLX1RDR1ZfNjQocmV0KTsKKyAgICBDSEVDS19UQ0dWXzY0 KGFyZzEpOwogICAgIHRjZ19nZW5feG9yX2k2NChyZXQsIGFyZzEsIHQwKTsKICAgICB0Y2dfdGVt cF9mcmVlKHQwKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fc2hsX2k2NChUQ0d2 IHJldCwgVENHdiBhcmcxLCBUQ0d2IGFyZzIpCiB7CisgICAgQ0hFQ0tfVENHVl82NChyZXQpOwor ICAgIENIRUNLX1RDR1ZfNjQoYXJnMSk7CisgICAgQ0hFQ0tfVENHVl82NChhcmcyKTsKICAgICB0 Y2dfZ2VuX29wMyhJTkRFWF9vcF9zaGxfaTY0LCByZXQsIGFyZzEsIGFyZzIpOwogfQogCiBzdGF0 aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9zaGxpX2k2NChUQ0d2IHJldCwgVENHdiBhcmcxLCBpbnQ2 NF90IGFyZzIpCiB7CisgICAgQ0hFQ0tfVENHVl82NChyZXQpOworICAgIENIRUNLX1RDR1ZfNjQo YXJnMSk7CiAgICAgaWYgKGFyZzIgPT0gMCkgewogICAgICAgICB0Y2dfZ2VuX21vdl9pNjQocmV0 LCBhcmcxKTsKICAgICB9IGVsc2UgewpAQCAtOTcwLDExICsxMDkzLDE2IEBACiAKIHN0YXRpYyBp bmxpbmUgdm9pZCB0Y2dfZ2VuX3Nocl9pNjQoVENHdiByZXQsIFRDR3YgYXJnMSwgVENHdiBhcmcy KQogeworICAgIENIRUNLX1RDR1ZfNjQocmV0KTsKKyAgICBDSEVDS19UQ0dWXzY0KGFyZzEpOwor ICAgIENIRUNLX1RDR1ZfNjQoYXJnMik7CiAgICAgdGNnX2dlbl9vcDMoSU5ERVhfb3Bfc2hyX2k2 NCwgcmV0LCBhcmcxLCBhcmcyKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fc2hy aV9pNjQoVENHdiByZXQsIFRDR3YgYXJnMSwgaW50NjRfdCBhcmcyKQogeworICAgIENIRUNLX1RD R1ZfNjQocmV0KTsKKyAgICBDSEVDS19UQ0dWXzY0KGFyZzEpOwogICAgIGlmIChhcmcyID09IDAp IHsKICAgICAgICAgdGNnX2dlbl9tb3ZfaTY0KHJldCwgYXJnMSk7CiAgICAgfSBlbHNlIHsKQEAg LTk4NiwxMSArMTExNCwxNiBAQAogCiBzdGF0aWMgaW5saW5lIHZvaWQgdGNnX2dlbl9zYXJfaTY0 KFRDR3YgcmV0LCBUQ0d2IGFyZzEsIFRDR3YgYXJnMikKIHsKKyAgICBDSEVDS19UQ0dWXzY0KHJl dCk7CisgICAgQ0hFQ0tfVENHVl82NChhcmcxKTsKKyAgICBDSEVDS19UQ0dWXzY0KGFyZzIpOwog ICAgIHRjZ19nZW5fb3AzKElOREVYX29wX3Nhcl9pNjQsIHJldCwgYXJnMSwgYXJnMik7CiB9CiAK IHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX3NhcmlfaTY0KFRDR3YgcmV0LCBUQ0d2IGFyZzEs IGludDY0X3QgYXJnMikKIHsKKyAgICBDSEVDS19UQ0dWXzY0KHJldCk7CisgICAgQ0hFQ0tfVENH Vl82NChhcmcxKTsKICAgICBpZiAoYXJnMiA9PSAwKSB7CiAgICAgICAgIHRjZ19nZW5fbW92X2k2 NChyZXQsIGFyZzEpOwogICAgIH0gZWxzZSB7CkBAIC0xMjg0LDIwICsxNDE3LDI2IEBACiAgICBy ZWdpc3RlcnMuICBUaGlzIHdpbGwgcHJvYmFibHkgYnJlYWsgTUlQUzY0IHRhcmdldHMuICAqLwog c3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fdHJ1bmNfaTY0X2kzMihUQ0d2IHJldCwgVENHdiBh cmcpCiB7Ci0gICAgdGNnX2dlbl9tb3ZfaTMyKHJldCwgYXJnKTsKKyAgICBDSEVDS19UQ0dWXzMy KHJldCk7CisgICAgQ0hFQ0tfVENHVl82NChhcmcpOworICAgIHRjZ19nZW5fbW92X2kzMl9ub2No ZWNrKHJldCwgYXJnKTsKIH0KIAogLyogTm90ZTogd2UgYXNzdW1lIHRoZSB0YXJnZXQgc3VwcG9y dHMgbW92ZSBiZXR3ZWVuIDMyIGFuZCA2NCBiaXQKICAgIHJlZ2lzdGVycyAqLwogc3RhdGljIGlu bGluZSB2b2lkIHRjZ19nZW5fZXh0dV9pMzJfaTY0KFRDR3YgcmV0LCBUQ0d2IGFyZykKIHsKLSAg ICB0Y2dfZ2VuX2FuZGlfaTY0KHJldCwgYXJnLCAweGZmZmZmZmZmdSk7CisgICAgQ0hFQ0tfVENH Vl82NChyZXQpOworICAgIENIRUNLX1RDR1ZfMzIoYXJnKTsKKyAgICB0Y2dfZ2VuX2FuZGlfaTY0 X25vY2hlY2socmV0LCBhcmcsIDB4ZmZmZmZmZmZ1KTsKIH0KIAogLyogTm90ZTogd2UgYXNzdW1l IHRoZSB0YXJnZXQgc3VwcG9ydHMgbW92ZSBiZXR3ZWVuIDMyIGFuZCA2NCBiaXQKICAgIHJlZ2lz dGVycyAqLwogc3RhdGljIGlubGluZSB2b2lkIHRjZ19nZW5fZXh0X2kzMl9pNjQoVENHdiByZXQs IFRDR3YgYXJnKQogeworICAgIENIRUNLX1RDR1ZfNjQocmV0KTsKKyAgICBDSEVDS19UQ0dWXzMy KGFyZyk7CiAgICAgdGNnX2dlbl9leHQzMnNfaTY0KHJldCwgYXJnKTsKIH0KIApJbmRleDogcWVt dS90Y2cvdGNnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3RjZy90Y2cuaAkyMDA4LTEwLTI5 IDE5OjE3OjEwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS90Y2cvdGNnLmgJMjAwOC0xMC0yOSAx OToxNzoxMi4wMDAwMDAwMDAgKzAwMDAKQEAgLTExNiwyMCArMTE2LDM5IEBACiAgICBVc2VycyBv ZiB0Y2dfZ2VuXyogZG9uJ3QgbmVlZCB0byBrbm93IGFib3V0IGFueSBvZiB0aGlzLCBhbmQgc2hv dWxkCiAgICB0cmVhdCBUQ0d2IGFzIGFuIG9wYXF1ZSB0eXBlLiAgKi8KIAotLy8jZGVmaW5lIERF QlVHX1RDR1YgMQorI2RlZmluZSBERUJVR19UQ0dWIDEKIAogI2lmZGVmIERFQlVHX1RDR1YKIAog dHlwZWRlZiBzdHJ1Y3QKIHsKICAgICBpbnQgbjsKKyNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09 IDY0CisgICAgaW50IHNpemU7CisjZW5kaWYKIH0gVENHdjsKIAogI2RlZmluZSBNQUtFX1RDR1Yo aSkgX19leHRlbnNpb25fXyBcCiAgICh7IFRDR3YgbWFrZV90Y2d2X3RtcCA9IHtpfTsgbWFrZV90 Y2d2X3RtcDt9KQorI2RlZmluZSBNQUtFX1RDR1YzMihpKSBfX2V4dGVuc2lvbl9fIFwKKyAgICAo eyBUQ0d2IG1ha2VfdGNndl90bXAgPSB7aSwgMzJ9OyBtYWtlX3RjZ3ZfdG1wO30pCisjZGVmaW5l IE1BS0VfVENHVjY0KGkpIF9fZXh0ZW5zaW9uX18gXAorICAgICh7IFRDR3YgbWFrZV90Y2d2X3Rt cCA9IHtpLCA2NH07IG1ha2VfdGNndl90bXA7fSkKICNkZWZpbmUgR0VUX1RDR1YodCkgKCh0KS5u KQorI2RlZmluZSB0Y2dfY2hlY2tfYWJvcnQod2FudCwgZ290KSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIiVzOiVkOiB0Y2cgZmF0YWwgZXJyb3I6IGJhZCBUQ0dWIHNpemUgIiAgICAgICAgXAor ICAgICAgICAgICAgICAgICIod2FudGVkICVkICE9IGdvdCAlZClcbiIsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgd2Fu dCwgZ290KTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBhYm9ydCgpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg IH0gd2hpbGUgKDApCiAjaWYgVENHX1RBUkdFVF9SRUdfQklUUyA9PSAzMgogI2RlZmluZSBUQ0dW X0hJR0godCkgTUFLRV9UQ0dWKEdFVF9UQ0dWKHQpICsgMSkKKyNkZWZpbmUgQ0hFQ0tfVENHVl8z Mih0KSBkbyB7fSB3aGlsZSgwKQorI2RlZmluZSBDSEVDS19UQ0dWXzY0KHQpIGRvIHt9IHdoaWxl KDApCisjZWxzZQorI2RlZmluZSBDSEVDS19UQ0dWXzMyKHQpIGRvIHsgaWYgKHQuc2l6ZSAhPSAz MikgdGNnX2NoZWNrX2Fib3J0KDMyLCB0LnNpemUpO30gd2hpbGUoMCkKKyNkZWZpbmUgQ0hFQ0tf VENHVl82NCh0KSBkbyB7IGlmICh0LnNpemUgIT0gNjQpIHRjZ19jaGVja19hYm9ydCg2NCwgdC5z aXplKTt9IHdoaWxlKDApCiAjZW5kaWYKIAogI2Vsc2UgLyogIURFQlVHX1RDR1YgKi8KQEAgLTE0 MCw2ICsxNTksOCBAQAogI2lmIFRDR19UQVJHRVRfUkVHX0JJVFMgPT0gMzIKICNkZWZpbmUgVENH Vl9ISUdIKHQpICgodCkgKyAxKQogI2VuZGlmCisjZGVmaW5lIENIRUNLX1RDR1ZfMzIodCkgZG8g e30gd2hpbGUoMCkKKyNkZWZpbmUgQ0hFQ0tfVENHVl82NCh0KSBkbyB7fSB3aGlsZSgwKQogCiAj ZW5kaWYgLyogREVCVUdfVENHViAqLwogCkluZGV4OiBxZW11L3RjZy90Y2cuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBxZW11Lm9yaWcvdGNnL3RjZy5jCTIwMDgtMTAtMjkgMTk6MTc6MTAuMDAwMDAwMDAwICsw MDAwCisrKyBxZW11L3RjZy90Y2cuYwkyMDA4LTEwLTI5IDE5OjE3OjEyLjAwMDAwMDAwMCArMDAw MApAQCAtMjg5LDcgKzI4OSwxMCBAQAogICAgIHRzLT5uYW1lID0gbmFtZTsKICAgICBzLT5uYl9n bG9iYWxzKys7CiAgICAgdGNnX3JlZ3NldF9zZXRfcmVnKHMtPnJlc2VydmVkX3JlZ3MsIHJlZyk7 Ci0gICAgcmV0dXJuIE1BS0VfVENHVihpZHgpOworICAgIGlmICh0eXBlID09IFRDR19UWVBFX0kz MikKKyAgICAgICAgcmV0dXJuIE1BS0VfVENHVjMyKGlkeCk7CisgICAgZWxzZQorICAgICAgICBy ZXR1cm4gTUFLRV9UQ0dWNjQoaWR4KTsKIH0KIAogI2lmIFRDR19UQVJHRVRfUkVHX0JJVFMgPT0g MzIKQEAgLTM4Niw3ICszODksMTAgQEAKICAgICAgICAgdHMtPm5hbWUgPSBuYW1lOwogICAgICAg ICBzLT5uYl9nbG9iYWxzKys7CiAgICAgfQotICAgIHJldHVybiBNQUtFX1RDR1YoaWR4KTsKKyAg ICBpZiAodHlwZSA9PSBUQ0dfVFlQRV9JMzIpCisgICAgICAgIHJldHVybiBNQUtFX1RDR1YzMihp ZHgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIE1BS0VfVENHVjY0KGlkeCk7CiB9CiAKIFRD R3YgdGNnX3RlbXBfbmV3X2ludGVybmFsKFRDR1R5cGUgdHlwZSwgaW50IHRlbXBfbG9jYWwpCkBA IC00MzcsNyArNDQzLDEwIEBACiAgICAgICAgICAgICBzLT5uYl90ZW1wcysrOwogICAgICAgICB9 CiAgICAgfQotICAgIHJldHVybiBNQUtFX1RDR1YoaWR4KTsKKyAgICBpZiAodHlwZSA9PSBUQ0df VFlQRV9JMzIpCisgICAgICAgIHJldHVybiBNQUtFX1RDR1YzMihpZHgpOworICAgIGVsc2UKKyAg ICAgICAgcmV0dXJuIE1BS0VfVENHVjY0KGlkeCk7CiB9CiAKIHZvaWQgdGNnX3RlbXBfZnJlZShU Q0d2IGFyZykK ------=_Part_6425_19299504.1225308661176--