From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MGsJm-0001fA-36 for qemu-devel@nongnu.org; Wed, 17 Jun 2009 06:24:34 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MGsJh-0001cZ-0N for qemu-devel@nongnu.org; Wed, 17 Jun 2009 06:24:33 -0400 Received: from [199.232.76.173] (port=48364 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MGsJg-0001cP-Jw for qemu-devel@nongnu.org; Wed, 17 Jun 2009 06:24:28 -0400 Received: from mail-ew0-f220.google.com ([209.85.219.220]:59407) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MGsJf-0006BX-Fu for qemu-devel@nongnu.org; Wed, 17 Jun 2009 06:24:28 -0400 Received: by ewy20 with SMTP id 20so254505ewy.34 for ; Wed, 17 Jun 2009 03:24:26 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <5b31733c0906170255p65c995a3r6e3f5ab060440fde@mail.gmail.com> References: <200707021527.54435.uli@suse.de> <200707031645.51832.uli@suse.de> <5b31733c0906151211o1c95245ay38f2d09c123ea0c9@mail.gmail.com> <200906161825.18981.paul@codesourcery.com> <20090616190214.GM11893@shareable.org> <5b31733c0906161349l62255380rbd63647e7d9ee415@mail.gmail.com> <5b31733c0906170255p65c995a3r6e3f5ab060440fde@mail.gmail.com> Date: Wed, 17 Jun 2009 12:24:25 +0200 Message-ID: <5b31733c0906170324s663cd361q8c27098be17021a2@mail.gmail.com> Subject: Re: [Qemu-devel] [PATCH] ARM7TDMI emulation From: Filip Navara Content-Type: multipart/mixed; boundary=0016e6de04d5152d2f046c88b264 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jamie Lokier Cc: Paul Brook , qemu-devel@nongnu.org --0016e6de04d5152d2f046c88b264 Content-Type: multipart/alternative; boundary=0016e6de04d5152d28046c88b262 --0016e6de04d5152d28046c88b262 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On Wed, Jun 17, 2009 at 11:55 AM, Filip Navara wrote: > On Tue, Jun 16, 2009 at 10:49 PM, Filip Navara wrote: > >> Do you know of a good summary reference which lists which instructions >>> are available in each ARM architecture level from ARMv4 up to ARMv7 >>> and it's variants? >>> >> >> My main reference are the technical reference manuals for ARM processors >> downloaded from Atmel site. I'm not sure about the license, but it states >> "This document is Open Access. This document has no restriction on >> distribution." Other reference sources are Skyeye emulation (has to be taken >> with grain of salt and checked against the manuals, but it makes distinction >> between v4, v5 and v5e) and Paul Brook. >> >> I've certainly missed handling BLX (at least on three places) in the patch >> and possibly more. I'll post an updated patch soon. >> > > ... and here's the updated patch. Comments welcome. > > I've added more checks for V5+ instructions and fixed about every LDR/LDM > place I found to not call gen_bx to set r15. > > Best regards, > Filip Navara > Damn it, forgot to attach it. Thanks Laurent! --0016e6de04d5152d28046c88b262 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
On Wed, Jun 17, 2009 at 11:55 AM, Filip Navara <= span dir=3D"ltr"><filip.navara= @gmail.com> wrote:
On Tue, Jun 16, 2009 at 10:49 = PM, Filip Navara <filip.navara@gmail.com> wrote:
Do= you know of a good summary reference which lists which instructions
are available in each ARM architecture level from ARMv4 up to ARMv7
and it's variants?

My main referen= ce are the technical reference manuals for ARM processors downloaded from A= tmel site. I'm not sure about the license, but it states "This doc= ument is Open Access. This document has no restriction on distribution.&quo= t; Other reference sources are Skyeye emulation (has to be taken with grain= of salt and checked against the manuals, but it makes distinction between = v4, v5 and v5e) and Paul Brook.

I've certainly missed handling BLX (at least on thr= ee places) in the patch and possibly more. I'll post an updated patch s= oon.

... and here's t= he updated patch. Comments welcome.=A0

I've added more checks for V5+ instructions and fix= ed about every LDR/LDM place I found to not call gen_bx to set r15.

Best regards,
Filip Navara

Damn it, forgot to attach it. Thanks Laurent!
--0016e6de04d5152d28046c88b262-- --0016e6de04d5152d2f046c88b264 Content-Type: application/octet-stream; name="0001-ARM7TDMI-emulation-ignore-bit-0-on-POP-PC-no-BLX-no-.patch" Content-Disposition: attachment; filename="0001-ARM7TDMI-emulation-ignore-bit-0-on-POP-PC-no-BLX-no-.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fw1wbou80 RnJvbSBlNGFkNDkzOTE3OGE0NjRkNTBlZGNiZGY3ZjFmYWE5OGUzZTljYzNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcCBOYXZhcmEgPGZpbGlwLm5hdmFyYUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTUgSnVuIDIwMDkgMjE6MDU6MTkgKzAyMDAKU3ViamVjdDogW1BBVENIXSBB Uk03VERNSSBlbXVsYXRpb24gKGlnbm9yZSBiaXQgMCBvbiBQT1AgUEMsIG5vIEJMWCwgbm8gQ1Ax NSwgYmFzZS11cGRhdGVkIGRhdGEgYWJvcnRzKS4gQmFzZWQgb24gcGF0Y2ggYnkgVWxyaWNoIEhl Y2h0IDx1bGlAc3VzZS5kZT4uCgotLS0KIHRhcmdldC1hcm0vY3B1LmggICAgICAgfCAgICA2ICsr LQogdGFyZ2V0LWFybS9oZWxwZXIuYyAgICB8ICAgMjQgKysrKysrKysrKwogdGFyZ2V0LWFybS90 cmFuc2xhdGUuYyB8ICAxMTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS90YXJnZXQtYXJtL2NwdS5oIGIvdGFyZ2V0LWFybS9jcHUuaApp bmRleCBmOTg2NTVmLi5kMDA0Nzc3IDEwMDY0NAotLS0gYS90YXJnZXQtYXJtL2NwdS5oCisrKyBi L3RhcmdldC1hcm0vY3B1LmgKQEAgLTMzMSw2ICszMzEsNyBAQCBlbnVtIGFybV9mZWF0dXJlcyB7 CiAgICAgQVJNX0ZFQVRVUkVfQVVYQ1IsICAvKiBBUk0xMDI2IEF1eGlsaWFyeSBjb250cm9sIHJl Z2lzdGVyLiAgKi8KICAgICBBUk1fRkVBVFVSRV9YU0NBTEUsIC8qIEludGVsIFhTY2FsZSBleHRl bnNpb25zLiAgKi8KICAgICBBUk1fRkVBVFVSRV9JV01NWFQsIC8qIEludGVsIGl3TU1YdCBleHRl bnNpb24uICAqLworICAgIEFSTV9GRUFUVVJFX1Y1LAogICAgIEFSTV9GRUFUVVJFX1Y2LAogICAg IEFSTV9GRUFUVVJFX1Y2SywKICAgICBBUk1fRkVBVFVSRV9WNywKQEAgLTM0MSw3ICszNDIsOSBA QCBlbnVtIGFybV9mZWF0dXJlcyB7CiAgICAgQVJNX0ZFQVRVUkVfRElWLAogICAgIEFSTV9GRUFU VVJFX00sIC8qIE1pY3JvY29udHJvbGxlciBwcm9maWxlLiAgKi8KICAgICBBUk1fRkVBVFVSRV9P TUFQQ1AsIC8qIE9NQVAgc3BlY2lmaWMgQ1AxNSBvcHMgaGFuZGxpbmcuICAqLwotICAgIEFSTV9G RUFUVVJFX1RIVU1CMkVFCisgICAgQVJNX0ZFQVRVUkVfVEhVTUIyRUUsCisgICAgQVJNX0ZFQVRV UkVfQ1AxNSwgLyogQVJNN1RETUksIEFSTTdURE1JLVMsIEFSTTdFSi1TLCBhbmQgQVJNOVRETUkg Y29yZXMgZG8gbm90IGhhdmUgYSBDUDE1ICovCisgICAgQVJNX0ZFQVRVUkVfQUJPUlRfQlUgLyog YmFzZSB1cGRhdGVkIGFib3J0IG1vZGVsLCBlLmcuIEFSTXhURE1JICovCiB9OwogCiBzdGF0aWMg aW5saW5lIGludCBhcm1fZmVhdHVyZShDUFVBUk1TdGF0ZSAqZW52LCBpbnQgZmVhdHVyZSkKQEAg LTM2Nyw2ICszNzAsNyBAQCB2b2lkIGNwdV9hcm1fc2V0X2NwX2lvKENQVUFSTVN0YXRlICplbnYs IGludCBjcG51bSwKICNkZWZpbmUgSVNfTShlbnYpIGFybV9mZWF0dXJlKGVudiwgQVJNX0ZFQVRV UkVfTSkKICNkZWZpbmUgQVJNX0NQVUlEKGVudikgKGVudi0+Y3AxNS5jMF9jcHVpZCkKIAorI2Rl ZmluZSBBUk1fQ1BVSURfQVJNN1RETUkgICAgMHg0MTgwNzAwMCAvKiBndWVzczsgbm8gQ1AxNSBv biBBUk03VERNSSAqLwogI2RlZmluZSBBUk1fQ1BVSURfQVJNMTAyNiAgICAgMHg0MTA2YTI2Mgog I2RlZmluZSBBUk1fQ1BVSURfQVJNOTI2ICAgICAgMHg0MTA2OTI2NQogI2RlZmluZSBBUk1fQ1BV SURfQVJNOTQ2ICAgICAgMHg0MTA1OTQ2MQpkaWZmIC0tZ2l0IGEvdGFyZ2V0LWFybS9oZWxwZXIu YyBiL3RhcmdldC1hcm0vaGVscGVyLmMKaW5kZXggNzAxNjI5YS4uMzg4NzVkNCAxMDA2NDQKLS0t IGEvdGFyZ2V0LWFybS9oZWxwZXIuYworKysgYi90YXJnZXQtYXJtL2hlbHBlci5jCkBAIC0zNywx OSArMzcsMjggQEAgc3RhdGljIHZvaWQgY3B1X3Jlc2V0X21vZGVsX2lkKENQVUFSTVN0YXRlICpl bnYsIHVpbnQzMl90IGlkKQogewogICAgIGVudi0+Y3AxNS5jMF9jcHVpZCA9IGlkOwogICAgIHN3 aXRjaCAoaWQpIHsKKyAgICBjYXNlIEFSTV9DUFVJRF9BUk03VERNSToKKyAgICAgICAgc2V0X2Zl YXR1cmUoZW52LCBBUk1fRkVBVFVSRV9BQk9SVF9CVSk7CisgICAgICAgIGJyZWFrOwogICAgIGNh c2UgQVJNX0NQVUlEX0FSTTkyNjoKKyAgICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVS RV9WNSk7CiAgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfVkZQKTsKKyAgICAg ICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVSRV9DUDE1KTsKICAgICAgICAgZW52LT52ZnAu eHJlZ3NbQVJNX1ZGUF9GUFNJRF0gPSAweDQxMDExMDkwOwogICAgICAgICBlbnYtPmNwMTUuYzBf Y2FjaGV0eXBlID0gMHgxZGQyMGQyOwogICAgICAgICBlbnYtPmNwMTUuYzFfc3lzID0gMHgwMDA5 MDA3ODsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBUk1fQ1BVSURfQVJNOTQ2OgorICAgICAg ICBzZXRfZmVhdHVyZShlbnYsIEFSTV9GRUFUVVJFX1Y1KTsKKyAgICAgICAgc2V0X2ZlYXR1cmUo ZW52LCBBUk1fRkVBVFVSRV9DUDE1KTsKICAgICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVB VFVSRV9NUFUpOwogICAgICAgICBlbnYtPmNwMTUuYzBfY2FjaGV0eXBlID0gMHgwZjAwNDAwNjsK ICAgICAgICAgZW52LT5jcDE1LmMxX3N5cyA9IDB4MDAwMDAwNzg7CiAgICAgICAgIGJyZWFrOwog ICAgIGNhc2UgQVJNX0NQVUlEX0FSTTEwMjY6CisgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJN X0ZFQVRVUkVfVjUpOwogICAgICAgICBzZXRfZmVhdHVyZShlbnYsIEFSTV9GRUFUVVJFX1ZGUCk7 CisgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfQ1AxNSk7CiAgICAgICAgIHNl dF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfQVVYQ1IpOwogICAgICAgICBlbnYtPnZmcC54cmVn c1tBUk1fVkZQX0ZQU0lEXSA9IDB4NDEwMTEwYTA7CiAgICAgICAgIGVudi0+Y3AxNS5jMF9jYWNo ZXR5cGUgPSAweDFkZDIwZDI7CkBAIC01Nyw4ICs2NiwxMCBAQCBzdGF0aWMgdm9pZCBjcHVfcmVz ZXRfbW9kZWxfaWQoQ1BVQVJNU3RhdGUgKmVudiwgdWludDMyX3QgaWQpCiAgICAgICAgIGJyZWFr OwogICAgIGNhc2UgQVJNX0NQVUlEX0FSTTExMzZfUjI6CiAgICAgY2FzZSBBUk1fQ1BVSURfQVJN MTEzNjoKKyAgICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVSRV9WNSk7CiAgICAgICAg IHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfVjYpOwogICAgICAgICBzZXRfZmVhdHVyZShl bnYsIEFSTV9GRUFUVVJFX1ZGUCk7CisgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRV UkVfQ1AxNSk7CiAgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfQVVYQ1IpOwog ICAgICAgICBlbnYtPnZmcC54cmVnc1tBUk1fVkZQX0ZQU0lEXSA9IDB4NDEwMTIwYjQ7CiAgICAg ICAgIGVudi0+dmZwLnhyZWdzW0FSTV9WRlBfTVZGUjBdID0gMHgxMTExMTExMTsKQEAgLTY4LDkg Kzc5LDExIEBAIHN0YXRpYyB2b2lkIGNwdV9yZXNldF9tb2RlbF9pZChDUFVBUk1TdGF0ZSAqZW52 LCB1aW50MzJfdCBpZCkKICAgICAgICAgZW52LT5jcDE1LmMwX2NhY2hldHlwZSA9IDB4MWRkMjBk MjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBUk1fQ1BVSURfQVJNMTFNUENPUkU6CisgICAg ICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfVjUpOwogICAgICAgICBzZXRfZmVhdHVy ZShlbnYsIEFSTV9GRUFUVVJFX1Y2KTsKICAgICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVB VFVSRV9WNkspOwogICAgICAgICBzZXRfZmVhdHVyZShlbnYsIEFSTV9GRUFUVVJFX1ZGUCk7Cisg ICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfQ1AxNSk7CiAgICAgICAgIHNldF9m ZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfQVVYQ1IpOwogICAgICAgICBlbnYtPnZmcC54cmVnc1tB Uk1fVkZQX0ZQU0lEXSA9IDB4NDEwMTIwYjQ7CiAgICAgICAgIGVudi0+dmZwLnhyZWdzW0FSTV9W RlBfTVZGUjBdID0gMHgxMTExMTExMTsKQEAgLTgwLDkgKzkzLDExIEBAIHN0YXRpYyB2b2lkIGNw dV9yZXNldF9tb2RlbF9pZChDUFVBUk1TdGF0ZSAqZW52LCB1aW50MzJfdCBpZCkKICAgICAgICAg ZW52LT5jcDE1LmMwX2NhY2hldHlwZSA9IDB4MWRkMjBkMjsKICAgICAgICAgYnJlYWs7CiAgICAg Y2FzZSBBUk1fQ1BVSURfQ09SVEVYQTg6CisgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZF QVRVUkVfVjUpOwogICAgICAgICBzZXRfZmVhdHVyZShlbnYsIEFSTV9GRUFUVVJFX1Y2KTsKICAg ICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVSRV9WNkspOwogICAgICAgICBzZXRfZmVh dHVyZShlbnYsIEFSTV9GRUFUVVJFX1Y3KTsKKyAgICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1f RkVBVFVSRV9DUDE1KTsKICAgICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVSRV9BVVhD Uik7CiAgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfVEhVTUIyKTsKICAgICAg ICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVSRV9WRlApOwpAQCAtMTAxLDYgKzExNiw3IEBA IHN0YXRpYyB2b2lkIGNwdV9yZXNldF9tb2RlbF9pZChDUFVBUk1TdGF0ZSAqZW52LCB1aW50MzJf dCBpZCkKICAgICAgICAgZW52LT5jcDE1LmMwX2Njc2lkWzJdID0gMHhmMDAwMDAwMDsgLyogTm8g TDIgaWNhY2hlLiAqLwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFSTV9DUFVJRF9DT1JURVhN MzoKKyAgICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVSRV9WNSk7CiAgICAgICAgIHNl dF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfVjYpOwogICAgICAgICBzZXRfZmVhdHVyZShlbnYs IEFSTV9GRUFUVVJFX1RIVU1CMik7CiAgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRV UkVfVjcpOwpAQCAtMTA4LDYgKzEyNCw3IEBAIHN0YXRpYyB2b2lkIGNwdV9yZXNldF9tb2RlbF9p ZChDUFVBUk1TdGF0ZSAqZW52LCB1aW50MzJfdCBpZCkKICAgICAgICAgc2V0X2ZlYXR1cmUoZW52 LCBBUk1fRkVBVFVSRV9ESVYpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFSTV9DUFVJRF9B Tlk6IC8qIEZvciB1c2Vyc3BhY2UgZW11bGF0aW9uLiAgKi8KKyAgICAgICAgc2V0X2ZlYXR1cmUo ZW52LCBBUk1fRkVBVFVSRV9WNSk7CiAgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRV UkVfVjYpOwogICAgICAgICBzZXRfZmVhdHVyZShlbnYsIEFSTV9GRUFUVVJFX1Y2Syk7CiAgICAg ICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfVjcpOwpAQCAtMTIwLDYgKzEzNyw4IEBA IHN0YXRpYyB2b2lkIGNwdV9yZXNldF9tb2RlbF9pZChDUFVBUk1TdGF0ZSAqZW52LCB1aW50MzJf dCBpZCkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBUk1fQ1BVSURfVEk5MTVUOgogICAgIGNh c2UgQVJNX0NQVUlEX1RJOTI1VDoKKyAgICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVS RV9WNSk7CisgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfQ1AxNSk7CiAgICAg ICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfT01BUENQKTsKICAgICAgICAgZW52LT5j cDE1LmMwX2NwdWlkID0gQVJNX0NQVUlEX1RJOTI1VDsgLyogRGVwZW5kcyBvbiB3aXJpbmcuICAq LwogICAgICAgICBlbnYtPmNwMTUuYzBfY2FjaGV0eXBlID0gMHg1MTA5MTQ5OwpAQCAtMTMyLDYg KzE1MSw4IEBAIHN0YXRpYyB2b2lkIGNwdV9yZXNldF9tb2RlbF9pZChDUFVBUk1TdGF0ZSAqZW52 LCB1aW50MzJfdCBpZCkKICAgICBjYXNlIEFSTV9DUFVJRF9QWEEyNjA6CiAgICAgY2FzZSBBUk1f Q1BVSURfUFhBMjYxOgogICAgIGNhc2UgQVJNX0NQVUlEX1BYQTI2MjoKKyAgICAgICAgc2V0X2Zl YXR1cmUoZW52LCBBUk1fRkVBVFVSRV9WNSk7CisgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJN X0ZFQVRVUkVfQ1AxNSk7CiAgICAgICAgIHNldF9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfWFND QUxFKTsKICAgICAgICAgLyogSlRBR19JRCBpcyAoKGlkIDw8IDI4KSB8IDB4MDkyNjUwMTMpICov CiAgICAgICAgIGVudi0+Y3AxNS5jMF9jYWNoZXR5cGUgPSAweGQxNzIxNzI7CkBAIC0xNDMsNiAr MTY0LDggQEAgc3RhdGljIHZvaWQgY3B1X3Jlc2V0X21vZGVsX2lkKENQVUFSTVN0YXRlICplbnYs IHVpbnQzMl90IGlkKQogICAgIGNhc2UgQVJNX0NQVUlEX1BYQTI3MF9CMToKICAgICBjYXNlIEFS TV9DUFVJRF9QWEEyNzBfQzA6CiAgICAgY2FzZSBBUk1fQ1BVSURfUFhBMjcwX0M1OgorICAgICAg ICBzZXRfZmVhdHVyZShlbnYsIEFSTV9GRUFUVVJFX1Y1KTsKKyAgICAgICAgc2V0X2ZlYXR1cmUo ZW52LCBBUk1fRkVBVFVSRV9DUDE1KTsKICAgICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVB VFVSRV9YU0NBTEUpOwogICAgICAgICAvKiBKVEFHX0lEIGlzICgoaWQgPDwgMjgpIHwgMHgwOTI2 NTAxMykgKi8KICAgICAgICAgc2V0X2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVSRV9JV01NWFQpOwpA QCAtMjc3LDYgKzMwMCw3IEBAIHN0cnVjdCBhcm1fY3B1X3QgewogfTsKIAogc3RhdGljIGNvbnN0 IHN0cnVjdCBhcm1fY3B1X3QgYXJtX2NwdV9uYW1lc1tdID0geworICAgIHsgQVJNX0NQVUlEX0FS TTdURE1JLCAiYXJtN3RkbWkifSwKICAgICB7IEFSTV9DUFVJRF9BUk05MjYsICJhcm05MjYifSwK ICAgICB7IEFSTV9DUFVJRF9BUk05NDYsICJhcm05NDYifSwKICAgICB7IEFSTV9DUFVJRF9BUk0x MDI2LCAiYXJtMTAyNiJ9LApkaWZmIC0tZ2l0IGEvdGFyZ2V0LWFybS90cmFuc2xhdGUuYyBiL3Rh cmdldC1hcm0vdHJhbnNsYXRlLmMKaW5kZXggYWRhYzE5YS4uOGM2MDFiMSAxMDA2NDQKLS0tIGEv dGFyZ2V0LWFybS90cmFuc2xhdGUuYworKysgYi90YXJnZXQtYXJtL3RyYW5zbGF0ZS5jCkBAIC0z NSw5ICszNSwxMCBAQAogI2RlZmluZSBHRU5fSEVMUEVSIDEKICNpbmNsdWRlICJoZWxwZXJzLmgi CiAKKyNkZWZpbmUgRU5BQkxFX0FSQ0hfNSAgICAgYXJtX2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVS RV9WNSkKICNkZWZpbmUgRU5BQkxFX0FSQ0hfNUogICAgMAogI2RlZmluZSBFTkFCTEVfQVJDSF82 ICAgICBhcm1fZmVhdHVyZShlbnYsIEFSTV9GRUFUVVJFX1Y2KQotI2RlZmluZSBFTkFCTEVfQVJD SF82SyAgIGFybV9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfVjZLKQorI2RlZmluZSBFTkFCTEVf QVJDSF82SyAgICBhcm1fZmVhdHVyZShlbnYsIEFSTV9GRUFUVVJFX1Y2SykKICNkZWZpbmUgRU5B QkxFX0FSQ0hfNlQyICAgYXJtX2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVSRV9USFVNQjIpCiAjZGVm aW5lIEVOQUJMRV9BUkNIXzcgICAgIGFybV9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfVjcpCiAK QEAgLTI1OTYsOCArMjU5NywxMCBAQCBzdGF0aWMgaW50IGRpc2FzX2NwMTVfaW5zbihDUFVTdGF0 ZSAqZW52LCBEaXNhc0NvbnRleHQgKnMsIHVpbnQzMl90IGluc24pCiAgICAgVENHdiB0bXA7CiAK ICAgICAvKiBNIHByb2ZpbGUgY29yZXMgdXNlIG1lbW9yeSBtYXBwZWQgcmVnaXN0ZXJzIGluc3Rl YWQgb2YgY3AxNS4gICovCi0gICAgaWYgKGFybV9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfTSkp Ci0JcmV0dXJuIDE7CisgICAgaWYgKGFybV9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfTSkgfHwK KyAgICAgICAgIWFybV9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVfQ1AxNSkpIHsKKwkgICAgcmV0 dXJuIDE7CisgICAgfQogCiAgICAgaWYgKChpbnNuICYgKDEgPDwgMjUpKSA9PSAwKSB7CiAgICAg ICAgIGlmIChpbnNuICYgKDEgPDwgMjApKSB7CkBAIC01NzU0LDkgKzU3NTcsMTAgQEAgc3RhdGlj IHZvaWQgZGlzYXNfYXJtX2luc24oQ1BVU3RhdGUgKiBlbnYsIERpc2FzQ29udGV4dCAqcykKICAg ICAgICAgICAgICAgICBnb3RvIGlsbGVnYWxfb3A7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg ICAgIH0KLSAgICAgICAgaWYgKChpbnNuICYgMHgwZDcwZjAwMCkgPT0gMHgwNTUwZjAwMCkKKyAg ICAgICAgaWYgKChpbnNuICYgMHgwZDcwZjAwMCkgPT0gMHgwNTUwZjAwMCkgeworICAgICAgICAg ICAgQVJDSCg1KTsKICAgICAgICAgICAgIHJldHVybjsgLyogUExEICovCi0gICAgICAgIGVsc2Ug aWYgKChpbnNuICYgMHgwZmZmZmRmZikgPT0gMHgwMTAxMDAwMCkgeworICAgICAgICB9IGVsc2Ug aWYgKChpbnNuICYgMHgwZmZmZmRmZikgPT0gMHgwMTAxMDAwMCkgewogICAgICAgICAgICAgQVJD SCg2KTsKICAgICAgICAgICAgIC8qIHNldGVuZCAqLwogICAgICAgICAgICAgaWYgKGluc24gJiAo MSA8PCA5KSkgewpAQCAtNTg2OCw3ICs1ODcyLDcgQEAgc3RhdGljIHZvaWQgZGlzYXNfYXJtX2lu c24oQ1BVU3RhdGUgKiBlbnYsIERpc2FzQ29udGV4dCAqcykKICAgICAgICAgfSBlbHNlIGlmICgo aW5zbiAmIDB4MGUwMDAwMDApID09IDB4MGEwMDAwMDApIHsKICAgICAgICAgICAgIC8qIGJyYW5j aCBsaW5rIGFuZCBjaGFuZ2UgdG8gdGh1bWIgKGJseCA8b2Zmc2V0PikgKi8KICAgICAgICAgICAg IGludDMyX3Qgb2Zmc2V0OwotCisgICAgICAgICAgICBBUkNIKDUpOwogICAgICAgICAgICAgdmFs ID0gKHVpbnQzMl90KXMtPnBjOwogICAgICAgICAgICAgdG1wID0gbmV3X3RtcCgpOwogICAgICAg ICAgICAgdGNnX2dlbl9tb3ZpX2kzMih0bXAsIHZhbCk7CkBAIC01ODkwLDggKzU4OTQsMTAgQEAg c3RhdGljIHZvaWQgZGlzYXNfYXJtX2luc24oQ1BVU3RhdGUgKiBlbnYsIERpc2FzQ29udGV4dCAq cykKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICgoaW5zbiAmIDB4MGZlMDAwMDAp ID09IDB4MGM0MDAwMDApIHsKICAgICAgICAgICAgIC8qIENvcHJvY2Vzc29yIGRvdWJsZSByZWdp c3RlciB0cmFuc2Zlci4gICovCisgICAgICAgICAgICBBUkNIKDUpOwogICAgICAgICB9IGVsc2Ug aWYgKChpbnNuICYgMHgwZjAwMDAxMCkgPT0gMHgwZTAwMDAxMCkgewogICAgICAgICAgICAgLyog QWRkaXRpb25hbCBjb3Byb2Nlc3NvciByZWdpc3RlciB0cmFuc2Zlci4gICovCisgICAgICAgICAg ICBBUkNIKDUpOwogICAgICAgICB9IGVsc2UgaWYgKChpbnNuICYgMHgwZmYxMDAyMCkgPT0gMHgw MTAwMDAwMCkgewogICAgICAgICAgICAgdWludDMyX3QgbWFzazsKICAgICAgICAgICAgIHVpbnQz Ml90IHZhbDsKQEAgLTYwMTcsNyArNjAyMyw3IEBAIHN0YXRpYyB2b2lkIGRpc2FzX2FybV9pbnNu KENQVVN0YXRlICogZW52LCBEaXNhc0NvbnRleHQgKnMpCiAgICAgICAgIGNhc2UgMHgzOgogICAg ICAgICAgICAgaWYgKG9wMSAhPSAxKQogICAgICAgICAgICAgICBnb3RvIGlsbGVnYWxfb3A7Ci0K KyAgICAgICAgICAgIEFSQ0goNSk7CiAgICAgICAgICAgICAvKiBicmFuY2ggbGluay9leGNoYW5n ZSB0aHVtYiAoYmx4KSAqLwogICAgICAgICAgICAgdG1wID0gbG9hZF9yZWcocywgcm0pOwogICAg ICAgICAgICAgdG1wMiA9IG5ld190bXAoKTsKQEAgLTYwNDAsNiArNjA0Niw3IEBAIHN0YXRpYyB2 b2lkIGRpc2FzX2FybV9pbnNuKENQVVN0YXRlICogZW52LCBEaXNhc0NvbnRleHQgKnMpCiAgICAg ICAgICAgICBzdG9yZV9yZWcocywgcmQsIHRtcCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgY2FzZSA3OiAvKiBia3B0ICovCisgICAgICAgICAgICBBUkNIKDUpOwogICAgICAgICAgICAg Z2VuX3NldF9jb25kZXhlYyhzKTsKICAgICAgICAgICAgIGdlbl9zZXRfcGNfaW0ocy0+cGMgLSA0 KTsKICAgICAgICAgICAgIGdlbl9leGNlcHRpb24oRVhDUF9CS1BUKTsKQEAgLTY3NzYsNyArNjc4 Myw3IEBAIHN0YXRpYyB2b2lkIGRpc2FzX2FybV9pbnNuKENQVVN0YXRlICogZW52LCBEaXNhc0Nv bnRleHQgKnMpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaW5zbiAmICgxIDw8IDIw KSkgewogICAgICAgICAgICAgICAgIC8qIENvbXBsZXRlIHRoZSBsb2FkLiAgKi8KLSAgICAgICAg ICAgICAgICBpZiAocmQgPT0gMTUpCisgICAgICAgICAgICAgICAgaWYgKHJkID09IDE1ICYmIEVO QUJMRV9BUkNIXzUpCiAgICAgICAgICAgICAgICAgICAgIGdlbl9ieChzLCB0bXApOwogICAgICAg ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgc3RvcmVfcmVnKHMsIHJkLCB0bXAp OwpAQCAtNjc4Niw2ICs2NzkzLDcgQEAgc3RhdGljIHZvaWQgZGlzYXNfYXJtX2luc24oQ1BVU3Rh dGUgKiBlbnYsIERpc2FzQ29udGV4dCAqcykKICAgICAgICAgY2FzZSAweDA5OgogICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgIGludCBqLCBuLCB1c2VyLCBsb2FkZWRfYmFzZTsKKyAgICAg ICAgICAgICAgICBpbnQgY3JlbWVudCA9IDA7CiAgICAgICAgICAgICAgICAgVENHdiBsb2FkZWRf dmFyOwogICAgICAgICAgICAgICAgIC8qIGxvYWQvc3RvcmUgbXVsdGlwbGUgd29yZHMgKi8KICAg ICAgICAgICAgICAgICAvKiBYWFg6IHN0b3JlIGNvcnJlY3QgYmFzZSBpZiB3cml0ZSBiYWNrICov CkBAIC02ODI2LDYgKzY4MzQsMzggQEAgc3RhdGljIHZvaWQgZGlzYXNfYXJtX2luc24oQ1BVU3Rh dGUgKiBlbnYsIERpc2FzQ29udGV4dCAqcykKICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19n ZW5fYWRkaV9pMzIoYWRkciwgYWRkciwgLSgobiAtIDEpICogNCkpOwogICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGluc24gJiAo MSA8PCAyMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogd3JpdGUgYmFjayAqLworICAgICAg ICAgICAgICAgICAgICBpZiAoaW5zbiAmICgxIDw8IDIzKSkgeworICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKGluc24gJiAoMSA8PCAyNCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBwcmUgaW5jcmVtZW50ICovCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvc3QgaW5jcmVtZW50ICovCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY3JlbWVudCA9IDQ7CisgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoaW5zbiAmICgxIDw8IDI0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IHByZSBkZWNyZW1lbnQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiAhPSAx KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZW1lbnQgPSAtKChuIC0gMSkg KiA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvc3QgZGVjcmVt ZW50ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlbWVudCA9IC0obiAqIDQpOwor ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgIGlmIChhcm1fZmVhdHVyZShlbnYsIEFSTV9GRUFUVVJFX0FCT1JUX0JVKSkg eworICAgICAgICAgICAgICAgICAgICAgICAgLyogYmFzZS11cGRhdGVkIGFib3J0IG1vZGVsOiB1 cGRhdGUgYmFzZSByZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBiZWZvcmUgYW4gYWJvcnQgY2FuIGhhcHBlbiAqLworICAgICAgICAg ICAgICAgICAgICAgICAgY3JlbWVudCArPSAobiAtIDEpICogNDsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHRtcCA9IG5ld190bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5f YWRkaV9pMzIodG1wLCBhZGRyLCBjcmVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0 b3JlX3JlZyhzLCBybiwgdG1wKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg ICAgICAgfQorCiAgICAgICAgICAgICAgICAgaiA9IDA7CiAgICAgICAgICAgICAgICAgZm9yKGk9 MDtpPDE2O2krKykgewogICAgICAgICAgICAgICAgICAgICBpZiAoaW5zbiAmICgxIDw8IGkpKSB7 CkBAIC02ODMzLDcgKzY4NzMsMTEgQEAgc3RhdGljIHZvaWQgZGlzYXNfYXJtX2luc24oQ1BVU3Rh dGUgKiBlbnYsIERpc2FzQ29udGV4dCAqcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiBsb2FkICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gZ2VuX2xkMzIoYWRk ciwgSVNfVVNFUihzKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMTUp IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX2J4KHMsIHRtcCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFTkFCTEVfQVJDSF81KSB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fYngocywgdG1wKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0b3JlX3JlZyhzLCBpLCB0bXApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1c2VyKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9oZWxwZXJfc2V0X3VzZXJfcmVn KHRjZ19jb25zdF9pMzIoaSksIHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlYWRfdG1wKHRtcCk7CkBAIC02ODY0LDI1ICs2OTA4LDggQEAgc3RhdGljIHZvaWQgZGlzYXNf YXJtX2luc24oQ1BVU3RhdGUgKiBlbnYsIERpc2FzQ29udGV4dCAqcykKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0Y2dfZ2VuX2FkZGlfaTMyKGFkZHIsIGFkZHIsIDQpOwogICAgICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpbnNu ICYgKDEgPDwgMjEpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIHdyaXRlIGJhY2sgKi8KLSAg ICAgICAgICAgICAgICAgICAgaWYgKGluc24gJiAoMSA8PCAyMykpIHsKLSAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChpbnNuICYgKDEgPDwgMjQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogcHJlIGluY3JlbWVudCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3N0IGluY3JlbWVudCAqLwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fYWRkaV9pMzIoYWRkciwgYWRkciwgNCk7 Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zbiAmICgxIDw8IDI0KSkgewotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIHByZSBkZWNyZW1lbnQgKi8KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAobiAhPSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfZ2VuX2FkZGlfaTMyKGFkZHIsIGFkZHIsIC0oKG4gLSAxKSAqIDQpKTsKLSAgICAgICAg ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog cG9zdCBkZWNyZW1lbnQgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2Fk ZGlfaTMyKGFkZHIsIGFkZHIsIC0obiAqIDQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghYXJtX2ZlYXR1cmUo ZW52LCBBUk1fRkVBVFVSRV9BQk9SVF9CVSkgJiYgKGluc24gJiAoMSA8PCAyMSkpKSB7CisgICAg ICAgICAgICAgICAgICAgIHRjZ19nZW5fYWRkaV9pMzIoYWRkciwgYWRkciwgY3JlbWVudCk7CiAg ICAgICAgICAgICAgICAgICAgIHN0b3JlX3JlZyhzLCBybiwgYWRkcik7CiAgICAgICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgZGVhZF90bXAoYWRkcik7CkBAIC03MDQz LDYgKzcwNzAsNyBAQCBzdGF0aWMgaW50IGRpc2FzX3RodW1iMl9pbnNuKENQVVN0YXRlICplbnYs IERpc2FzQ29udGV4dCAqcywgdWludDE2X3QgaW5zbl9odzEpCiAgICAgICAgICAgIDE2LWJpdCBp bnN0cnVjdGlvbnMgdG8gZ2V0IGNvcnJlY3QgcHJlZmV0Y2ggYWJvcnQgYmVoYXZpb3IuICAqLwog ICAgICAgICBpbnNuID0gaW5zbl9odzE7CiAgICAgICAgIGlmICgoaW5zbiAmICgxIDw8IDEyKSkg PT0gMCkgeworICAgICAgICAgICAgQVJDSCg1KTsKICAgICAgICAgICAgIC8qIFNlY29uZCBoYWxm IG9mIGJseC4gICovCiAgICAgICAgICAgICBvZmZzZXQgPSAoKGluc24gJiAweDdmZikgPDwgMSk7 CiAgICAgICAgICAgICB0bXAgPSBsb2FkX3JlZyhzLCAxNCk7CkBAIC03MTAwLDYgKzcxMjgsNyBA QCBzdGF0aWMgaW50IGRpc2FzX3RodW1iMl9pbnNuKENQVVN0YXRlICplbnYsIERpc2FzQ29udGV4 dCAqcywgdWludDE2X3QgaW5zbl9odzEpCiAgICAgICAgICAgICAvKiBPdGhlciBsb2FkL3N0b3Jl LCB0YWJsZSBicmFuY2guICAqLwogICAgICAgICAgICAgaWYgKGluc24gJiAweDAxMjAwMDAwKSB7 CiAgICAgICAgICAgICAgICAgLyogTG9hZC9zdG9yZSBkb3VibGV3b3JkLiAgKi8KKyAgICAgICAg ICAgICAgICBBUkNIKDUpOwogICAgICAgICAgICAgICAgIGlmIChybiA9PSAxNSkgewogICAgICAg ICAgICAgICAgICAgICBhZGRyID0gbmV3X3RtcCgpOwogICAgICAgICAgICAgICAgICAgICB0Y2df Z2VuX21vdmlfaTMyKGFkZHIsIHMtPnBjICYgfjMpOwpAQCAtNzMxMyw3ICs3MzQyLDcgQEAgc3Rh dGljIGludCBkaXNhc190aHVtYjJfaW5zbihDUFVTdGF0ZSAqZW52LCBEaXNhc0NvbnRleHQgKnMs IHVpbnQxNl90IGluc25faHcxKQogICAgICAgICAgICAgICAgICAgICBpZiAoaW5zbiAmICgxIDw8 IDIwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogTG9hZC4gICovCiAgICAgICAgICAg ICAgICAgICAgICAgICB0bXAgPSBnZW5fbGQzMihhZGRyLCBJU19VU0VSKHMpKTsKLSAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChpID09IDE1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoaSA9PSAxNSAmJiBFTkFCTEVfQVJDSF81KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2VuX2J4KHMsIHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX3JlZyhzLCBpLCB0bXApOwpAQCAtNzY1Miw2 ICs3NjgxLDcgQEAgc3RhdGljIGludCBkaXNhc190aHVtYjJfaW5zbihDUFVTdGF0ZSAqZW52LCBE aXNhc0NvbnRleHQgKnMsIHVpbnQxNl90IGluc25faHcxKQogICAgICAgICAgICAgICAgICAgICBn ZW5fam1wKHMsIG9mZnNldCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg ICAgICAgICAgLyogYmx4ICovCisgICAgICAgICAgICAgICAgICAgIEFSQ0goNSk7CiAgICAgICAg ICAgICAgICAgICAgIG9mZnNldCAmPSB+KHVpbnQzMl90KTI7CiAgICAgICAgICAgICAgICAgICAg IGdlbl9ieF9pbShzLCBvZmZzZXQpOwogICAgICAgICAgICAgICAgIH0KQEAgLTgwMDcsNyArODAz Nyw3IEBAIHN0YXRpYyBpbnQgZGlzYXNfdGh1bWIyX2luc24oQ1BVU3RhdGUgKmVudiwgRGlzYXND b250ZXh0ICpzLCB1aW50MTZfdCBpbnNuX2h3MSkKICAgICAgICAgICAgICAgICBjYXNlIDI6IHRt cCA9IGdlbl9sZDMyKGFkZHIsIHVzZXIpOyBicmVhazsKICAgICAgICAgICAgICAgICBkZWZhdWx0 OiBnb3RvIGlsbGVnYWxfb3A7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm IChycyA9PSAxNSkgeworICAgICAgICAgICAgICAgIGlmIChycyA9PSAxNSAmJiBFTkFCTEVfQVJD SF81KSB7CiAgICAgICAgICAgICAgICAgICAgIGdlbl9ieChzLCB0bXApOwogICAgICAgICAgICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHN0b3JlX3JlZyhzLCBycywgdG1wKTsK QEAgLTgwNTAsNiArODA4MCw3IEBAIHN0YXRpYyB2b2lkIGRpc2FzX3RodW1iX2luc24oQ1BVU3Rh dGUgKmVudiwgRGlzYXNDb250ZXh0ICpzKQogICAgIFRDR3YgdG1wOwogICAgIFRDR3YgdG1wMjsK ICAgICBUQ0d2IGFkZHI7CisgICAgaW50IGNyZW1lbnQ7CiAKICAgICBpZiAocy0+Y29uZGV4ZWNf bWFzaykgewogICAgICAgICBjb25kID0gcy0+Y29uZGV4ZWNfY29uZDsKQEAgLTgxNzEsNiArODIw Miw3IEBAIHN0YXRpYyB2b2lkIGRpc2FzX3RodW1iX2luc24oQ1BVU3RhdGUgKmVudiwgRGlzYXND b250ZXh0ICpzKQogICAgICAgICAgICAgY2FzZSAzOi8qIGJyYW5jaCBbYW5kIGxpbmtdIGV4Y2hh bmdlIHRodW1iIHJlZ2lzdGVyICovCiAgICAgICAgICAgICAgICAgdG1wID0gbG9hZF9yZWcocywg cm0pOwogICAgICAgICAgICAgICAgIGlmIChpbnNuICYgKDEgPDwgNykpIHsKKyAgICAgICAgICAg ICAgICAgICAgQVJDSCg1KTsKICAgICAgICAgICAgICAgICAgICAgdmFsID0gKHVpbnQzMl90KXMt PnBjIHwgMTsKICAgICAgICAgICAgICAgICAgICAgdG1wMiA9IG5ld190bXAoKTsKICAgICAgICAg ICAgICAgICAgICAgdGNnX2dlbl9tb3ZpX2kzMih0bXAyLCB2YWwpOwpAQCAtODUyMyw4ICs4NTU1 LDEzIEBAIHN0YXRpYyB2b2lkIGRpc2FzX3RodW1iX2luc24oQ1BVU3RhdGUgKmVudiwgRGlzYXND b250ZXh0ICpzKQogICAgICAgICAgICAgLyogd3JpdGUgYmFjayB0aGUgbmV3IHN0YWNrIHBvaW50 ZXIgKi8KICAgICAgICAgICAgIHN0b3JlX3JlZyhzLCAxMywgYWRkcik7CiAgICAgICAgICAgICAv KiBzZXQgdGhlIG5ldyBQQyB2YWx1ZSAqLwotICAgICAgICAgICAgaWYgKChpbnNuICYgMHgwOTAw KSA9PSAweDA5MDApCi0gICAgICAgICAgICAgICAgZ2VuX2J4KHMsIHRtcCk7CisgICAgICAgICAg ICBpZiAoKGluc24gJiAweDA5MDApID09IDB4MDkwMCkgeworICAgICAgICAgICAgICAgIGlmIChF TkFCTEVfQVJDSF81KSB7CisgICAgICAgICAgICAgICAgICAgIGdlbl9ieChzLCB0bXApOworICAg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN0b3JlX3JlZyhzLCAx NSwgdG1wKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBi cmVhazsKIAogICAgICAgICBjYXNlIDE6IGNhc2UgMzogY2FzZSA5OiBjYXNlIDExOiAvKiBjemIg Ki8KQEAgLTg2MTMsNiArODY1MCwxOSBAQCBzdGF0aWMgdm9pZCBkaXNhc190aHVtYl9pbnNuKENQ VVN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqcykKICAgICAgICAgLyogbG9hZC9zdG9yZSBtdWx0 aXBsZSAqLwogICAgICAgICBybiA9IChpbnNuID4+IDgpICYgMHg3OwogICAgICAgICBhZGRyID0g bG9hZF9yZWcocywgcm4pOworICAgICAgICBpZiAoYXJtX2ZlYXR1cmUoZW52LCBBUk1fRkVBVFVS RV9BQk9SVF9CVSkgJiYgKGluc24gJiAoMSA8PCBybikpID09IDApIHsKKyAgICAgICAgICAgIC8q IGJhc2UtdXBkYXRlZCBhYm9ydCBtb2RlbDogdXBkYXRlIGJhc2UgcmVnaXN0ZXIKKyAgICAgICAg ICAgICAgIGJlZm9yZSBhbiBhYm9ydCBjYW4gaGFwcGVuICovCisgICAgICAgICAgICBjcmVtZW50 ID0gMDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgICAgICAg ICAgICBpZiAoaW5zbiAmICgxIDw8IGkpKSB7CisgICAgICAgICAgICAgICAgICAgIGNyZW1lbnQg Kz0gNDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0bXAg PSBuZXdfdG1wKCk7CisgICAgICAgICAgICB0Y2dfZ2VuX2FkZGlfaTMyKHRtcCwgYWRkciwgY3Jl bWVudCk7CisgICAgICAgICAgICBzdG9yZV9yZWcocywgcm4sIHRtcCk7CisgICAgICAgIH0KICAg ICAgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgewogICAgICAgICAgICAgaWYgKGluc24gJiAo MSA8PCBpKSkgewogICAgICAgICAgICAgICAgIGlmIChpbnNuICYgKDEgPDwgMTEpKSB7CkBAIC04 NjI5LDcgKzg2NzksNyBAQCBzdGF0aWMgdm9pZCBkaXNhc190aHVtYl9pbnNuKENQVVN0YXRlICpl bnYsIERpc2FzQ29udGV4dCAqcykKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAv KiBCYXNlIHJlZ2lzdGVyIHdyaXRlYmFjay4gICovCi0gICAgICAgIGlmICgoaW5zbiAmICgxIDw8 IHJuKSkgPT0gMCkgeworICAgICAgICBpZiAoIWFybV9mZWF0dXJlKGVudiwgQVJNX0ZFQVRVUkVf QUJPUlRfQlUpICYmIChpbnNuICYgKDEgPDwgcm4pKSA9PSAwKSB7CiAgICAgICAgICAgICBzdG9y ZV9yZWcocywgcm4sIGFkZHIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZGVhZF90 bXAoYWRkcik7Ci0tIAoxLjYuMy5tc3lzZ2l0LjAKCg== --0016e6de04d5152d2f046c88b264--