From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9837 invoked by alias); 27 May 2017 21:35:14 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 9824 invoked by uid 89); 27 May 2017 21:35:13 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-qt0-f174.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=SVEq585dHJxgYrgk9YjejyHRBzYlf/IVz7DDsdzyQMQ=; b=Fkui6IjNIov9dUBQ2zOquxF2tBXIv2mQ6TkIj+0g+Q2xl4WkeSg+zeP83H3qYc7kSt J4dWVwsgecBzPSVEXQtO9J8cuEbAk7n8okKdDCliKN7nnBB31xne+jAvwpne8UKvhFaL K3LXvgxiELV2sh6CCa1NsTNXHCOgP71ehkB+jO+/jL9OHiCDTw1Q92Aqdp05F7HxW26N WqcSXqFIPoCsQ0nXMzkMIYDFc1QWfj0lmc792YUKDo6BWu/8WtnrDJ7XvXrNsa0JXkyx Y3yPDOR7Zl+ZZ4vD6ywE9S+xMqKMWtseQ8qm4l8FtCgu6BflQEpD4G8najw/z8p+dk+w peyg== X-Gm-Message-State: AODbwcDPLwHuil+NyeXT4Ld/A2gc/C8zAWp6emtgjztftPbVWVT75M1/ WfXYZ6b0VI5JQJ+5YmzgZAhGNFO6EA== X-Received: by 10.200.44.36 with SMTP id d33mr10171730qta.19.1495920912333; Sat, 27 May 2017 14:35:12 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <9c563a4b-424b-242f-b82f-4650ab2637f7@redhat.com> <28e34264-e8c5-5570-c48c-9125893808b2@redhat.com> From: "H.J. Lu" Date: Sat, 27 May 2017 21:35:00 -0000 Message-ID: Subject: Re: memcpy performance regressions 2.19 -> 2.24(5) To: Erich Elsen Cc: "Carlos O'Donell" , GNU C Library Content-Type: multipart/mixed; boundary="001a1140298c97c6250550883a2e" X-SW-Source: 2017-05/txt/msg00822.txt.bz2 --001a1140298c97c6250550883a2e Content-Type: text/plain; charset="UTF-8" Content-length: 260 On Fri, May 26, 2017 at 5:31 PM, Erich Elsen wrote: > Sorry for misinterpreting. Here is the full patch. > This is what I have on hjl/tunables/master, which depends on https://sourceware.org/ml/libc-alpha/2017-05/msg00573.html -- H.J. --001a1140298c97c6250550883a2e Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-TUNABLES-to-control-IFUNC-selection-and-cache-si.patch" Content-Disposition: attachment; filename="0001-Add-TUNABLES-to-control-IFUNC-selection-and-cache-si.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j37smzdj1 Content-length: 26104 RnJvbSBiZDZkN2IyOTk1NzVhODhkNjkyNDZjNzBmYzNhZDhhNjgyMzVkZWI1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjMgTWF5IDIwMTcgMjA6 MjI6MTMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBBZGQgVFVOQUJMRVMgdG8g Y29udHJvbCBJRlVOQyBzZWxlY3Rpb24gYW5kIGNhY2hlIHNpemVzCgpUaGUg Y3VycmVudCBJRlVOQyBzZWxlY3Rpb24gaXMgYmFzZWQgb24gbWljcm9iZW5j aG1hcmtzIGluIGdsaWJjLiAgSXQKc2hvdWxkIGdpdmUgdGhlIGJlc3QgcGVy Zm9ybWFuY2UgZm9yIG1vc3Qgd29ya2xvYWRzLiAgQnV0IG90aGVyIGNob2lj ZXMKbWF5IGhhdmUgYmV0dGVyIHBlcmZvcm1hbmNlIGZvciBhIHBhcnRpY3Vs YXIgd29ya2xvYWQgb3Igb24gdGhlIGhhcmR3YXJlCndoaWNoIHdhc24ndCBh dmFpbGFibGUgYXQgdGhlIHNlbGVjdGlvbiB3YXMgbWFkZS4gIFRoZSBlbnZp cm9ubWVudAp2YXJpYWJsZSwgR0xJQkNfSUZVTkM9LXh4eCx5eXksLXp6ei4u Li4sIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSBDUFUvQVJDSApmZWF0dXJlIHl5 eSwgZGlzYWJsZSBDUFUvQVJDSCBmZWF0dXJlIHl5eSBhbmQgenp6LCB3aGVy ZSB0aGUgZmVhdHVyZQpuYW1lIGlzIGNhc2Utc2Vuc2l0aXZlIGFuZCBoYXMg dG8gbWF0Y2ggdGhlIG9uZXMgaW4gY3B1LWZlYXR1cmVzLmguICBJdApjYW4g YmUgdXNlZCBieSBnbGliYyBkZXZlbG9wZXJzIHRvIG92ZXJyaWRlIHRoZSBJ RlVOQyBzZWxlY3Rpb24gdG8gdHVuZQpmb3IgYSBuZXcgcHJvY2Vzc29yIG9y IGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIGEgcGFydGljdWxhciB3b3JrbG9h ZC4KSXQgaXNuJ3QgaW50ZW5kZWQgZm9yIG5vcm1hbCBlbmQgdXNlcnMuCgpO T1RFOiB0aGUgSUZVTkMgc2VsZWN0aW9uIG1heSBjaGFuZ2Ugb3ZlciB0aW1l LiAgUGxlYXNlIGNoZWNrIGFsbAptdWx0aWFyY2ggaW1wbGVtZW50YXRpb25z IHdoZW4gZXhwZXJpbWVudGluZy4KCjIwMTctMDUtMjcgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KCSAgICBFcmljaCBFbHNlbiAgPGVyaWNo ZUBnb29nbGUuY29tPgoKCSogZWxmL2RsLXR1bmFibGVzLmxpc3Q6IEFkZCBh ICJ0dW5lIiBuYW1lc3BhY2UuCgkqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L3g4Ni9kbC1zeXNkZXAuYzogTmV3IGZpbGUuCgkqIHN5c2RlcHMveDg2L2Nw dS10dW5hYmxlcy5jOiBMaWtld2lzZS4KCSogc3lzZGVwcy94ODYvY2FjaGVp bmZvLmMgKFRVTkFCTEVfTkFNRVNQQUNFKTogTmV3LgoJSW5jbHVkZSA8ZWxm L2RsLXR1bmFibGVzLmg+IGZvciBUVU5BQkxFUyBpcyBvbi4KCUluY2x1ZGUg PHN0cmluZy5oPiBhbmQgPHN0ZGxpYi5oPiBpZiBUVU5BQkxFUyBpcyBvZmYu CgkoX19lbnZpcm9uKTogTmV3LgoJKGluaXRfY2FjaGVpbmZvKTogVXNlIFRV TkFCTEVTIHRvIHNldCBkYXRhIGNhY2hlIHNpemUsIHNoYXJlZAoJY2FjaGUg c2l6ZSBhbmQgbm9uIHRlbXBvcmFsIHRocmVzaG9sZCBpZiBUVU5BQkxFUyBp cyBvbi4gIFNlYXJjaAoJdGhlIGVudmlyb25tZW50IHN0cmluZ3MgdG8gc2V0 IGRhdGEgY2FjaGUgc2l6ZSwgc2hhcmVkIGNhY2hlCglzaXplIGFuZCBub24g dGVtcG9yYWwgdGhyZXNob2xkIGlmIFRVTkFCTEVTIGlzIG9mZi4KCSogc3lz ZGVwcy94ODYvY3B1LWZlYXR1cmVzLmMgKFRVTkFCTEVfTkFNRVNQQUNFKTog TmV3LgoJKERMX1RVTkFCTEVfQ0FMTEJBQ0sgKHNldF9pZnVuYykpOiBMaWtl d2lzZS4KCUluY2x1ZGUgPGVsZi9kbC10dW5hYmxlcy5oPiBmb3IgVFVOQUJM RVMgaXMgb24uCglJbmNsdWRlIDxzdHJpbmcuaD4gYW5kIDx1bmlzdGQuaD4g aWYgVFVOQUJMRVMgaXMgb2ZmLgoJKF9fZW52aXJvbik6IE5ldy4KCShfZGxf eDg2X3NldF9pZnVuYyk6IExpa2V3aXNlLgoJKGluaXRfY3B1X2ZlYXR1cmVz KTogVXNlIFRVTkFCTEVfU0VUX1ZBTF9XSVRIX0NBTExCQUNLIGlmCglUVU5B QkxFUyBpcyBvbi4gIENhbGwgX2RsX3g4Nl9zZXRfaWZ1bmMgZm9yIEdMSUJD X0lGVU5DPSBpZgoJVFVOQUJMRVMgaXMgb2ZmLgoJKiBzeXNkZXBzL3g4Ni9j cHUtZmVhdHVyZXMuaCAoREVGQVVMVF9NRU1DTVApOiBOZXcuCi0tLQogZWxm L2RsLXR1bmFibGVzLmxpc3QgICAgICAgICAgICAgICAgICAgIHwgIDIyICsr Kwogc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2L2RsLXN5c2RlcC5jIHwg IDIxICsrKwogc3lzZGVwcy94ODYvY2FjaGVpbmZvLmMgICAgICAgICAgICAg ICAgIHwgIDU0ICsrKysrLQogc3lzZGVwcy94ODYvY3B1LWZlYXR1cmVzLmMg ICAgICAgICAgICAgIHwgIDM2ICsrKysKIHN5c2RlcHMveDg2L2NwdS1mZWF0 dXJlcy5oICAgICAgICAgICAgICB8ICAxMiArKwogc3lzZGVwcy94ODYvY3B1 LXR1bmFibGVzLmMgICAgICAgICAgICAgIHwgMzIyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDQ2NiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2L2RsLXN5c2RlcC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3lzZGVwcy94ODYvY3B1LXR1bmFibGVzLmMKCmRp ZmYgLS1naXQgYS9lbGYvZGwtdHVuYWJsZXMubGlzdCBiL2VsZi9kbC10dW5h Ymxlcy5saXN0CmluZGV4IGI5ZjE0ODguLjA0MDEwODcgMTAwNjQ0Ci0tLSBh L2VsZi9kbC10dW5hYmxlcy5saXN0CisrKyBiL2VsZi9kbC10dW5hYmxlcy5s aXN0CkBAIC03Nyw0ICs3NywyNiBAQCBnbGliYyB7CiAgICAgICBzZWN1cml0 eV9sZXZlbDogU1hJRF9JR05PUkUKICAgICB9CiAgIH0KKyAgdHVuZSB7Cisg ICAgaWZ1bmMgeworICAgICAgdHlwZTogU1RSSU5HCisgICAgICBlbnZfYWxp YXM6IEdMSUJDX0lGVU5DCisgICAgICBzZWN1cml0eV9sZXZlbDogU1hJRF9J R05PUkUKKyAgICB9CisgICAgbm9uX3RlbXBvcmFsX3RocmVzaG9sZCB7Cisg ICAgICB0eXBlOiBTSVpFX1QKKyAgICAgIGVudl9hbGlhczogR0xJQkNfTk9O X1RFTVBPUkFMX1RIUkVTSE9MRAorICAgICAgc2VjdXJpdHlfbGV2ZWw6IFNY SURfSUdOT1JFCisgICAgfQorICAgIGRhdGFfY2FjaGVfc2l6ZSB7CisgICAg ICB0eXBlOiBTSVpFX1QKKyAgICAgIGVudl9hbGlhczogR0xJQkNfREFUQV9D QUNIRV9TSVpFCisgICAgICBzZWN1cml0eV9sZXZlbDogU1hJRF9JR05PUkUK KyAgICB9CisgICAgc2hhcmVkX2NhY2hlX3NpemUgeworICAgICAgdHlwZTog U0laRV9UCisgICAgICBlbnZfYWxpYXM6IEdMSUJDX1NIQVJFRF9DQUNIRV9T SVpFCisgICAgICBzZWN1cml0eV9sZXZlbDogU1hJRF9JR05PUkUKKyAgICB9 CisgIH0KIH0KZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L3g4Ni9kbC1zeXNkZXAuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4 Ni9kbC1zeXNkZXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi42NGViMGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzZGVwcy91bml4 L3N5c3YvbGludXgveDg2L2RsLXN5c2RlcC5jCkBAIC0wLDAgKzEsMjEgQEAK Ky8qIE9wZXJhdGluZyBzeXN0ZW0gc3VwcG9ydCBmb3IgcnVuLXRpbWUgZHlu YW1pYyBsaW5rZXIuICBYODYgdmVyc2lvbi4KKyAgIENvcHlyaWdodCAoQykg MjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorCisgICBUaGUg R05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgorICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRo ZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMg TGlicmFyeTsgaWYgbm90LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKyNpbmNs dWRlIDxzeXNkZXBzL3g4Ni9jcHUtdHVuYWJsZXMuYz4KKyNpbmNsdWRlIDxz eXNkZXBzL3VuaXgvc3lzdi9saW51eC9kbC1zeXNkZXAuYz4KZGlmZiAtLWdp dCBhL3N5c2RlcHMveDg2L2NhY2hlaW5mby5jIGIvc3lzZGVwcy94ODYvY2Fj aGVpbmZvLmMKaW5kZXggMmQ4NGFmMS4uMGE1MTJiYSAxMDA2NDQKLS0tIGEv c3lzZGVwcy94ODYvY2FjaGVpbmZvLmMKKysrIGIvc3lzZGVwcy94ODYvY2Fj aGVpbmZvLmMKQEAgLTI1LDYgKzI1LDE1IEBACiAjaW5jbHVkZSA8Y3B1aWQu aD4KICNpbmNsdWRlIDxpbml0LWFyY2guaD4KIAorI2lmIEhBVkVfVFVOQUJM RVMKKyMgZGVmaW5lIFRVTkFCTEVfTkFNRVNQQUNFIHR1bmUKKyMgaW5jbHVk ZSA8ZWxmL2RsLXR1bmFibGVzLmg+CisjZWxzZQorIyBpbmNsdWRlIDxzdHJp bmcuaD4KKyMgaW5jbHVkZSA8c3RkbGliLmg+CitleHRlcm4gY2hhciAqKl9f ZW52aXJvbjsKKyNlbmRpZgorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVs XzAyX2NhY2hlX2luZm8KIHsKICAgdW5zaWduZWQgY2hhciBpZHg7CkBAIC03 NTIsNiArNzYxLDQzIEBAIGludGVsX2J1Z19ub19jYWNoZV9pbmZvOgogI2Vu ZGlmCiAgICAgfQogCisgIC8qIERhdGEgY2FjaGUgc2l6ZSBmb3IgdXNlIGlu IG1lbW9yeSBhbmQgc3RyaW5nIHJvdXRpbmVzLCB0eXBpY2FsbHkKKyAgICAg TDEgc2l6ZS4gICovCisgIGxvbmcgaW50IGRhdGFfY2FjaGVfc2l6ZSA9IDA7 CisgIC8qIFNoYXJlZCBjYWNoZSBzaXplIGZvciB1c2UgaW4gbWVtb3J5IGFu ZCBzdHJpbmcgcm91dGluZXMsIHR5cGljYWxseQorICAgICBMMiBvciBMMyBz aXplLiAgKi8KKyAgbG9uZyBpbnQgc2hhcmVkX2NhY2hlX3NpemUgPSAwOwor ICAvKiBUaHJlc2hvbGQgdG8gdXNlIG5vbiB0ZW1wb3JhbCBzdG9yZS4gICov CisgIGxvbmcgaW50IG5vbl90ZW1wb3JhbF90aHJlc2hvbGQgPSAwOworCisj aWYgSEFWRV9UVU5BQkxFUworICBUVU5BQkxFX1NFVF9WQUwgKG5vbl90ZW1w b3JhbF90aHJlc2hvbGQsICZub25fdGVtcG9yYWxfdGhyZXNob2xkKTsKKyAg VFVOQUJMRV9TRVRfVkFMIChkYXRhX2NhY2hlX3NpemUsICZkYXRhX2NhY2hl X3NpemUpOworICBUVU5BQkxFX1NFVF9WQUwgKHNoYXJlZF9jYWNoZV9zaXpl LCAmc2hhcmVkX2NhY2hlX3NpemUpOworI2Vsc2UKKyAgaWYgKF9fZ2xpYmNf bGlrZWx5IChfX2Vudmlyb24gIT0gTlVMTCkKKyAgICAgICYmICFfX2J1aWx0 aW5fZXhwZWN0IChfX2xpYmNfZW5hYmxlX3NlY3VyZSwgMCkpCisgICAgewor ICAgICAgY2hhciAqKnJ1bnAgPSBfX2Vudmlyb247CisgICAgICBjaGFyICpl bnZsaW5lOworCisgICAgICB3aGlsZSAoKnJ1bnAgIT0gTlVMTCkKKwl7CisJ ICBlbnZsaW5lID0gKnJ1bnA7CisJICBpZiAoIW1lbWNtcCAoZW52bGluZSwg IkdMSUJDX05PTl9URU1QT1JBTF9USFJFU0hPTEQ9IiwgMjkpKQorCSAgICBu b25fdGVtcG9yYWxfdGhyZXNob2xkID0gc3RydG9sICgmZW52bGluZVsyOV0s IE5VTEwsIDApOworCSAgZWxzZSBpZiAoIW1lbWNtcCAoZW52bGluZSwgIkdM SUJDX0RBVEFfQ0FDSEVfU0laRT0iLCAyMikpCisJICAgIGRhdGFfY2FjaGVf c2l6ZSA9IHN0cnRvbCAoJmVudmxpbmVbMjJdLCBOVUxMLCAwKTsKKwkgIGVs c2UgaWYgKCFtZW1jbXAgKGVudmxpbmUsICJHTElCQ19TSEFSRURfQ0FDSEVf U0laRT0iLCAyNCkpCisJICAgIHNoYXJlZF9jYWNoZV9zaXplID0gc3RydG9s ICgmZW52bGluZVsyNF0sIE5VTEwsIDApOworCSAgcnVucCsrOworCX0KKyAg ICB9CisjZW5kaWYKKworICBpZiAoZGF0YV9jYWNoZV9zaXplICE9IDApCisg ICAgZGF0YSA9IGRhdGFfY2FjaGVfc2l6ZTsKKwogICBpZiAoZGF0YSA+IDAp CiAgICAgewogICAgICAgX194ODZfcmF3X2RhdGFfY2FjaGVfc2l6ZV9oYWxm ID0gZGF0YSAvIDI7CkBAIC03NjIsNiArODA4LDkgQEAgaW50ZWxfYnVnX25v X2NhY2hlX2luZm86CiAgICAgICBfX3g4Nl9kYXRhX2NhY2hlX3NpemUgPSBk YXRhOwogICAgIH0KIAorICBpZiAoc2hhcmVkX2NhY2hlX3NpemUgIT0gMCkK KyAgICBzaGFyZWQgPSBzaGFyZWRfY2FjaGVfc2l6ZTsKKwogICBpZiAoc2hh cmVkID4gMCkKICAgICB7CiAgICAgICBfX3g4Nl9yYXdfc2hhcmVkX2NhY2hl X3NpemVfaGFsZiA9IHNoYXJlZCAvIDI7CkBAIC03NzUsNyArODI0LDEwIEBA IGludGVsX2J1Z19ub19jYWNoZV9pbmZvOgogICAvKiBUaGUgbGFyZ2UgbWVt Y3B5IG1pY3JvIGJlbmNobWFyayBpbiBnbGliYyBzaG93cyB0aGF0IDYgdGlt ZXMgb2YKICAgICAgc2hhcmVkIGNhY2hlIHNpemUgaXMgdGhlIGFwcHJveGlt YXRlIHZhbHVlIGFib3ZlIHdoaWNoIG5vbi10ZW1wb3JhbAogICAgICBzdG9y ZSBiZWNvbWVzIGZhc3Rlci4gICovCi0gIF9feDg2X3NoYXJlZF9ub25fdGVt cG9yYWxfdGhyZXNob2xkID0gX194ODZfc2hhcmVkX2NhY2hlX3NpemUgKiA2 OworICBfX3g4Nl9zaGFyZWRfbm9uX3RlbXBvcmFsX3RocmVzaG9sZAorICAg ID0gKG5vbl90ZW1wb3JhbF90aHJlc2hvbGQgIT0gMAorICAgICAgID8gbm9u X3RlbXBvcmFsX3RocmVzaG9sZAorICAgICAgIDogX194ODZfc2hhcmVkX2Nh Y2hlX3NpemUgKiA2KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zeXNk ZXBzL3g4Ni9jcHUtZmVhdHVyZXMuYyBiL3N5c2RlcHMveDg2L2NwdS1mZWF0 dXJlcy5jCmluZGV4IGI0ODFmNTAuLjk3Njk1YTIgMTAwNjQ0Ci0tLSBhL3N5 c2RlcHMveDg2L2NwdS1mZWF0dXJlcy5jCisrKyBiL3N5c2RlcHMveDg2L2Nw dS1mZWF0dXJlcy5jCkBAIC0yMCw2ICsyMCwxOSBAQAogI2luY2x1ZGUgPGNw dS1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPGRsLWh3Y2FwLmg+CiAKKyNpZiBI QVZFX1RVTkFCTEVTCisjIGRlZmluZSBUVU5BQkxFX05BTUVTUEFDRSB0dW5l CisjIGluY2x1ZGUgPGVsZi9kbC10dW5hYmxlcy5oPgorCitleHRlcm4gdm9p ZCBETF9UVU5BQkxFX0NBTExCQUNLIChzZXRfaWZ1bmMpICh0dW5hYmxlX3Zh bF90ICopCisgIGF0dHJpYnV0ZV9oaWRkZW47CisjZWxzZQorIyBpbmNsdWRl IDxzdHJpbmcuaD4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CitleHRlcm4gY2hh ciAqKl9fZW52aXJvbiBhdHRyaWJ1dGVfaGlkZGVuOworZXh0ZXJuIHZvaWQg X2RsX3g4Nl9zZXRfaWZ1bmMgKGNvbnN0IGNoYXIgKikgYXR0cmlidXRlX2hp ZGRlbjsKKyNlbmRpZgorCiBzdGF0aWMgdm9pZAogZ2V0X2NvbW1vbl9pbmRl Y2VzIChzdHJ1Y3QgY3B1X2ZlYXR1cmVzICpjcHVfZmVhdHVyZXMsCiAJCSAg ICB1bnNpZ25lZCBpbnQgKmZhbWlseSwgdW5zaWduZWQgaW50ICptb2RlbCwK QEAgLTMxMiw2ICszMjUsMjkgQEAgbm9fY3B1aWQ6CiAgIGNwdV9mZWF0dXJl cy0+bW9kZWwgPSBtb2RlbDsKICAgY3B1X2ZlYXR1cmVzLT5raW5kID0ga2lu ZDsKIAorI2lmIEhBVkVfVFVOQUJMRVMKKyAgVFVOQUJMRV9TRVRfVkFMX1dJ VEhfQ0FMTEJBQ0sgKGlmdW5jLCBOVUxMLCBzZXRfaWZ1bmMpOworI2Vsc2UK KyAgaWYgKF9fZ2xpYmNfbGlrZWx5IChfX2Vudmlyb24gIT0gTlVMTCkKKyAg ICAgICYmICFfX2J1aWx0aW5fZXhwZWN0IChfX2xpYmNfZW5hYmxlX3NlY3Vy ZSwgMCkpCisgICAgeworICAgICAgY2hhciAqKnJ1bnAgPSBfX2Vudmlyb247 CisgICAgICBjaGFyICplbnZsaW5lOworCisgICAgICB3aGlsZSAoKnJ1bnAg IT0gTlVMTCkKKwl7CisJICBlbnZsaW5lID0gKnJ1bnA7CisJICBpZiAoIURF RkFVTFRfTUVNQ01QIChlbnZsaW5lLCAiR0xJQkNfSUZVTkM9IiwKKwkJCSAg ICAgICBzaXplb2YgKCJHTElCQ19JRlVOQz0iKSAtIDEpKQorCSAgeworCSAg ICBfZGxfeDg2X3NldF9pZnVuYyAoZW52bGluZSArIHNpemVvZiAoIkdMSUJD X0lGVU5DPSIpIC0gMSk7CisJICAgIGJyZWFrOworCSAgfQorCSAgcnVucCsr OworCX0KKyAgICB9CisjZW5kaWYKKwogI2lmIElTX0lOIChydGxkKQogICAv KiBSZXVzZSBkbF9wbGF0Zm9ybSwgZGxfaHdjYXAgYW5kIGRsX2h3Y2FwX21h c2sgZm9yIHg4Ni4gICovCiAgIEdMUk8oZGxfcGxhdGZvcm0pID0gTlVMTDsK ZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L2NwdS1mZWF0dXJlcy5oIGIvc3lz ZGVwcy94ODYvY3B1LWZlYXR1cmVzLmgKaW5kZXggMzFjN2M4MC4uODUxZDEz NyAxMDA2NDQKLS0tIGEvc3lzZGVwcy94ODYvY3B1LWZlYXR1cmVzLmgKKysr IGIvc3lzZGVwcy94ODYvY3B1LWZlYXR1cmVzLmgKQEAgLTIyNyw2ICsyMjcs MTggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBjcHVfZmVhdHVyZXMgKl9fZ2V0 X2NwdV9mZWF0dXJlcyAodm9pZCkKICMgIGRlZmluZSBfX2dldF9jcHVfZmVh dHVyZXMoKQkoJkdMUk8oZGxfeDg2X2NwdV9mZWF0dXJlcykpCiAjIGVuZGlm CiAKKy8qIFdlIGNhbid0IHVzZSBJRlVOQyBtZW1jbXAgaW4gaW5pdF9jcHVf ZmVhdHVyZXMgZnJvbSBsaWJjLmEgc2luY2UKKyAgIElGVU5DIG11c3QgYmUg c2V0IHVwIGJ5IGluaXRfY3B1X2ZlYXR1cmVzLiAgKi8KKyMgaWYgZGVmaW5l ZCBVU0VfTVVMVElBUkNIICYmICFkZWZpbmVkIFNIQVJFRAorIyAgaWZkZWYg X194ODZfNjRfXworIyAgIGRlZmluZSBERUZBVUxUX01FTUNNUAlfX21lbWNt cF9zc2UyCisjICBlbHNlCisjICAgZGVmaW5lIERFRkFVTFRfTUVNQ01QCV9f bWVtY21wX2lhMzIKKyMgIGVuZGlmCitleHRlcm4gX190eXBlb2YgKG1lbWNt cCkgREVGQVVMVF9NRU1DTVA7CisjIGVsc2UKKyMgIGRlZmluZSBERUZBVUxU X01FTUNNUAltZW1jbXAKKyMgZW5kaWYKIAogLyogT25seSB1c2VkIGRpcmVj dGx5IGluIGNwdS1mZWF0dXJlcy5jLiAgKi8KICMgZGVmaW5lIENQVV9GRUFU VVJFU19DUFVfUChwdHIsIG5hbWUpIFwKZGlmZiAtLWdpdCBhL3N5c2RlcHMv eDg2L2NwdS10dW5hYmxlcy5jIGIvc3lzZGVwcy94ODYvY3B1LXR1bmFibGVz LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk4Zjhl NwotLS0gL2Rldi9udWxsCisrKyBiL3N5c2RlcHMveDg2L2NwdS10dW5hYmxl cy5jCkBAIC0wLDAgKzEsMzIyIEBACisvKiBDUFUgZmVhdHVyZSB0dW5pbmcu CisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4K KyAgIENvcHlyaWdodCAoQykgMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCisgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgIHZlcnNpb24gMi4x IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFs b25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCisgICA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVk ZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9UVU5BQkxFUworIyBkZWZpbmUgVFVO QUJMRV9OQU1FU1BBQ0UgdHVuZQorIyBpbmNsdWRlIDxlbGYvZGwtdHVuYWJs ZXMuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGNwdS1mZWF0dXJlcy5oPgorI2lu Y2x1ZGUgPGxkc29kZWZzLmg+CisKKyNkZWZpbmUgQ0hFQ0tfR0xJQkNfSUZV TkNfQ1BVX09GRihmLCBjcHVfZmVhdHVyZXMsIG5hbWUsIGxlbikJCVwKKyAg X1N0YXRpY19hc3NlcnQgKHNpemVvZiAoI25hbWUpIC0gMSA9PSBsZW4sICNu YW1lICIgIT0gIiAjbGVuKTsJXAorICBpZiAoIURFRkFVTFRfTUVNQ01QIChm LCAjbmFtZSwgbGVuKSkJCQkJCVwKKyAgICB7CQkJCQkJCQkJXAorICAgICAg Y3B1X2ZlYXR1cmVzLT5jcHVpZFtpbmRleF9jcHVfIyNuYW1lXS5yZWdfIyNu YW1lCQkJXAorCSY9IH5iaXRfY3B1XyMjbmFtZTsJCQkJCQlcCisgICAgICBi cmVhazsJCQkJCQkJCVwKKyAgICB9CisKKy8qIERpc2FibGUgYW4gQVJDSCBm ZWF0dXJlIE5BTUUuICBXZSBkb24ndCBlbmFibGUgYW4gQVJDSCBmZWF0dXJl IHdoaWNoCisgICBpc24ndCBhdmFpbGFibGUuICAqLworI2RlZmluZSBDSEVD S19HTElCQ19JRlVOQ19BUkNIX09GRihmLCBjcHVfZmVhdHVyZXMsIG5hbWUs IGxlbikJCVwKKyAgX1N0YXRpY19hc3NlcnQgKHNpemVvZiAoI25hbWUpIC0g MSA9PSBsZW4sICNuYW1lICIgIT0gIiAjbGVuKTsJXAorICBpZiAoIURFRkFV TFRfTUVNQ01QIChmLCAjbmFtZSwgbGVuKSkJCQkJCVwKKyAgICB7CQkJCQkJ CQkJXAorICAgICAgY3B1X2ZlYXR1cmVzLT5mZWF0dXJlW2luZGV4X2FyY2hf IyNuYW1lXQkJCQlcCisJJj0gfmJpdF9hcmNoXyMjbmFtZTsJCQkJCQlcCisg ICAgICBicmVhazsJCQkJCQkJCVwKKyAgICB9CisKKy8qIEVuYWJsZS9kaXNh YmxlIGFuIEFSQ0ggZmVhdHVyZSBOQU1FLiAgKi8KKyNkZWZpbmUgQ0hFQ0tf R0xJQkNfSUZVTkNfQVJDSF9CT1RIKGYsIGNwdV9mZWF0dXJlcywgbmFtZSwg ZGlzYWJsZSwJXAorCQkJCSAgICBsZW4pCQkJCVwKKyAgX1N0YXRpY19hc3Nl cnQgKHNpemVvZiAoI25hbWUpIC0gMSA9PSBsZW4sICNuYW1lICIgIT0gIiAj bGVuKTsJXAorICBpZiAoIURFRkFVTFRfTUVNQ01QIChmLCAjbmFtZSwgbGVu KSkJCQkJCVwKKyAgICB7CQkJCQkJCQkJXAorICAgICAgaWYgKGRpc2FibGUp CQkJCQkJCVwKKwljcHVfZmVhdHVyZXMtPmZlYXR1cmVbaW5kZXhfYXJjaF8j I25hbWVdCQkJXAorCSAgJj0gfmJpdF9hcmNoXyMjbmFtZTsJCQkJCQlcCisg ICAgICBlbHNlCQkJCQkJCQlcCisJY3B1X2ZlYXR1cmVzLT5mZWF0dXJlW2lu ZGV4X2FyY2hfIyNuYW1lXQkJCVwKKwkgIHw9IGJpdF9hcmNoXyMjbmFtZTsJ CQkJCQlcCisgICAgICBicmVhazsJCQkJCQkJCVwKKyAgICB9CisKKy8qIEVu YWJsZS9kaXNhYmxlIGFuIEFSQ0ggZmVhdHVyZSBOQU1FLiAgRW5hYmxlIGFu IEFSQ0ggZmVhdHVyZSBvbmx5CisgICBpZiB0aGUgQVJDSCBmZWF0dXJlIE5F RUQgaXMgYWxzbyBlbmFibGVkLiAgKi8KKyNkZWZpbmUgQ0hFQ0tfR0xJQkNf SUZVTkNfQVJDSF9ORUVEX0FSQ0hfQk9USChmLCBjcHVfZmVhdHVyZXMsIG5h bWUsCVwKKwkJCQkJICAgICAgbmVlZCwgZGlzYWJsZSwgbGVuKQlcCisgIF9T dGF0aWNfYXNzZXJ0IChzaXplb2YgKCNuYW1lKSAtIDEgPT0gbGVuLCAjbmFt ZSAiICE9ICIgI2xlbik7CVwKKyAgaWYgKCFERUZBVUxUX01FTUNNUCAoZiwg I25hbWUsIGxlbikpCQkJCQlcCisgICAgewkJCQkJCQkJCVwKKyAgICAgIGlm IChkaXNhYmxlKQkJCQkJCQlcCisJY3B1X2ZlYXR1cmVzLT5mZWF0dXJlW2lu ZGV4X2FyY2hfIyNuYW1lXQkJCVwKKwkgICY9IH5iaXRfYXJjaF8jI25hbWU7 CQkJCQkJXAorICAgICAgZWxzZSBpZiAoQ1BVX0ZFQVRVUkVTX0FSQ0hfUCAo Y3B1X2ZlYXR1cmVzLCBuZWVkKSkJCVwKKwljcHVfZmVhdHVyZXMtPmZlYXR1 cmVbaW5kZXhfYXJjaF8jI25hbWVdCQkJXAorCSAgfD0gYml0X2FyY2hfIyNu YW1lOwkJCQkJCVwKKyAgICAgIGJyZWFrOwkJCQkJCQkJXAorICAgIH0KKwor LyogRW5hYmxlL2Rpc2FibGUgYW4gQVJDSCBmZWF0dXJlIE5BTUUuICBFbmFi bGUgYW4gQVJDSCBmZWF0dXJlIG9ubHkKKyAgIGlmIHRoZSBDUFUgZmVhdHVy ZSBORUVEIGlzIGFsc28gZW5hYmxlZC4gICovCisjZGVmaW5lIENIRUNLX0dM SUJDX0lGVU5DX0FSQ0hfTkVFRF9DUFVfQk9USChmLCBjcHVfZmVhdHVyZXMs IG5hbWUsCVwKKwkJCQkJICAgICBuZWVkLCBkaXNhYmxlLCBsZW4pCVwKKyAg X1N0YXRpY19hc3NlcnQgKHNpemVvZiAoI25hbWUpIC0gMSA9PSBsZW4sICNu YW1lICIgIT0gIiAjbGVuKTsJXAorICBpZiAoIURFRkFVTFRfTUVNQ01QIChm LCAjbmFtZSwgbGVuKSkJCQkJCVwKKyAgICB7CQkJCQkJCQkJXAorICAgICAg aWYgKGRpc2FibGUpCQkJCQkJCVwKKwljcHVfZmVhdHVyZXMtPmZlYXR1cmVb aW5kZXhfYXJjaF8jI25hbWVdCQkJXAorCSAgJj0gfmJpdF9hcmNoXyMjbmFt ZTsJCQkJCQlcCisgICAgICBlbHNlIGlmIChDUFVfRkVBVFVSRVNfQ1BVX1Ag KGNwdV9mZWF0dXJlcywgbmVlZCkpCQkJXAorCWNwdV9mZWF0dXJlcy0+ZmVh dHVyZVtpbmRleF9hcmNoXyMjbmFtZV0JCQlcCisJICB8PSBiaXRfYXJjaF8j I25hbWU7CQkJCQkJXAorICAgICAgYnJlYWs7CQkJCQkJCQlcCisgICAgfQor CisjaWYgSEFWRV9UVU5BQkxFUworc3RhdGljCisjZWxzZQorYXR0cmlidXRl X2hpZGRlbgorI2VuZGlmCit2b2lkCitfZGxfeDg2X3NldF9pZnVuYyAoY29u c3QgY2hhciAqcCkKK3sKKyAgLyogVGhlIGN1cnJlbnQgSUZVTkMgc2VsZWN0 aW9uIGlzIGJhc2VkIG9uIG1pY3JvYmVuY2htYXJrcyBpbiBnbGliYy4KKyAg ICAgSXQgc2hvdWxkIGdpdmUgdGhlIGJlc3QgcGVyZm9ybWFuY2UgZm9yIG1v c3Qgd29ya2xvYWRzLiAgQnV0IG90aGVyCisgICAgIGNob2ljZXMgbWF5IGhh dmUgYmV0dGVyIHBlcmZvcm1hbmNlIGZvciBhIHBhcnRpY3VsYXIgd29ya2xv YWQgb3Igb24KKyAgICAgdGhlIGhhcmR3YXJlIHdoaWNoIHdhc24ndCBhdmFp bGFibGUgd2hlbiB0aGUgc2VsZWN0aW9uIHdhcyBtYWRlLgorICAgICBUaGUg ZW52aXJvbm1lbnQgdmFyaWFibGUsIEdMSUJDX0lGVU5DPS14eHgseXl5LC16 enouLi4uLCBjYW4gYmUKKyAgICAgdXNlZCB0byBlbmFibGUgQ1BVL0FSQ0gg ZmVhdHVyZSB5eXksIGRpc2FibGUgQ1BVL0FSQ0ggZmVhdHVyZSB5eXkKKyAg ICAgYW5kIHp6eiwgd2hlcmUgdGhlIGZlYXR1cmUgbmFtZSBpcyBjYXNlLXNl bnNpdGl2ZSBhbmQgaGFzIHRvIG1hdGNoCisgICAgIHRoZSBvbmVzIGluIGNw dS1mZWF0dXJlcy5oLiAgSXQgY2FuIGJlIHVzZWQgYnkgZ2xpYmMgZGV2ZWxv cGVycyB0bworICAgICB0dW5lIGZvciBhIG5ldyBwcm9jZXNzb3Igb3Igb3Zl cnJpZGUgdGhlIElGVU5DIHNlbGVjdGlvbiB0byBpbXByb3ZlCisgICAgIHBl cmZvcm1hbmNlIGZvciBhIHBhcnRpY3VsYXIgd29ya2xvYWQuCisKKyAgICAg U2luY2UgYWxsIENQVS9BUkNIIGZlYXR1cmVzIGFyZSBoYXJkd2FyZSBvcHRp bWl6YXRpb25zIHdpdGhvdXQKKyAgICAgc2VjdXJpdHkgaW1wbGljYXRpb24s IGV4Y2VwdCBmb3IgUHJlZmVyX01BUF8zMkJJVF9FWEVDLCB3aGljaCBjYW4K KyAgICAgb25seSBiZSBkaXNhYmxlZCwgd2UgY2hlY2sgR0xJQkNfSUZVTkMg Zm9yIHByb2dyYW1zLCBpbmNsdWRpbmcKKyAgICAgc2V0KmlkIG9uZXMuCisK KyAgICAgTk9URTogdGhlIElGVU5DIHNlbGVjdGlvbiBtYXkgY2hhbmdlIG92 ZXIgdGltZS4gIFBsZWFzZSBjaGVjayBhbGwKKyAgICAgbXVsdGlhcmNoIGlt cGxlbWVudGF0aW9ucyB3aGVuIGV4cGVyaW1lbnRpbmcuICAqLworCisgIHN0 cnVjdCBjcHVfZmVhdHVyZXMgKmNwdV9mZWF0dXJlcyA9ICZHTFJPKGRsX3g4 Nl9jcHVfZmVhdHVyZXMpOworICBjb25zdCBjaGFyICplbmQgPSBwICsgc3Ry bGVuIChwKTsKKyAgc2l6ZV90IGxlbjsKKworICBkbworICAgIHsKKyAgICAg IGNvbnN0IGNoYXIgKmMsICpuOworICAgICAgYm9vbCBkaXNhYmxlOworICAg ICAgc2l6ZV90IG5sOworCisgICAgICBmb3IgKGMgPSBwOyAqYyAhPSAnLCc7 IGMrKykKKwlpZiAoYyA+PSBlbmQpCisJICBicmVhazsKKworICAgICAgbGVu ID0gYyAtIHA7CisgICAgICBkaXNhYmxlID0gKnAgPT0gJy0nOworICAgICAg aWYgKGRpc2FibGUpCisJeworCSAgbiA9IHAgKyAxOworCSAgbmwgPSBsZW4g LSAxOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBuID0gcDsKKwkgIG5sID0g bGVuOworCX0KKyAgICAgIHN3aXRjaCAobmwpCisJeworCWRlZmF1bHQ6CisJ ICBicmVhazsKKwljYXNlIDM6CisJICBpZiAoZGlzYWJsZSkKKwkgICAgewor CSAgICAgIENIRUNLX0dMSUJDX0lGVU5DX0NQVV9PRkYgKG4sIGNwdV9mZWF0 dXJlcywgQVZYLCAzKTsKKwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19DUFVf T0ZGIChuLCBjcHVfZmVhdHVyZXMsIENYOCwgMyk7CisJICAgICAgQ0hFQ0tf R0xJQkNfSUZVTkNfQ1BVX09GRiAobiwgY3B1X2ZlYXR1cmVzLCBGTUEsIDMp OworCSAgICAgIENIRUNLX0dMSUJDX0lGVU5DX0NQVV9PRkYgKG4sIGNwdV9m ZWF0dXJlcywgSFRULCAzKTsKKwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19D UFVfT0ZGIChuLCBjcHVfZmVhdHVyZXMsIFJUTSwgMyk7CisJICAgIH0KKwkg IGJyZWFrOworCWNhc2UgNDoKKwkgIGlmIChkaXNhYmxlKQorCSAgICB7CisJ ICAgICAgQ0hFQ0tfR0xJQkNfSUZVTkNfQ1BVX09GRiAobiwgY3B1X2ZlYXR1 cmVzLCBBVlgyLCA0KTsKKwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19DUFVf T0ZGIChuLCBjcHVfZmVhdHVyZXMsIEJNSTEsIDQpOworCSAgICAgIENIRUNL X0dMSUJDX0lGVU5DX0NQVV9PRkYgKG4sIGNwdV9mZWF0dXJlcywgQk1JMiwg NCk7CisJICAgICAgQ0hFQ0tfR0xJQkNfSUZVTkNfQ1BVX09GRiAobiwgY3B1 X2ZlYXR1cmVzLCBDTU9WLCA0KTsKKwkgICAgICBDSEVDS19HTElCQ19JRlVO Q19DUFVfT0ZGIChuLCBjcHVfZmVhdHVyZXMsIEVSTVMsIDQpOworCSAgICAg IENIRUNLX0dMSUJDX0lGVU5DX0NQVV9PRkYgKG4sIGNwdV9mZWF0dXJlcywg Rk1BNCwgNCk7CisJICAgICAgQ0hFQ0tfR0xJQkNfSUZVTkNfQ1BVX09GRiAo biwgY3B1X2ZlYXR1cmVzLCBTU0UyLCA0KTsKKwkgICAgICBDSEVDS19HTElC Q19JRlVOQ19BUkNIX09GRiAobiwgY3B1X2ZlYXR1cmVzLCBJNTg2LCA0KTsK KwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19BUkNIX09GRiAobiwgY3B1X2Zl YXR1cmVzLCBJNjg2LCA0KTsKKwkgICAgfQorCSAgYnJlYWs7CisJY2FzZSA1 OgorCSAgaWYgKGRpc2FibGUpCisJICAgIHsKKwkgICAgICBDSEVDS19HTElC Q19JRlVOQ19DUFVfT0ZGIChuLCBjcHVfZmVhdHVyZXMsIExaQ05ULCA1KTsK KwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19DUFVfT0ZGIChuLCBjcHVfZmVh dHVyZXMsIE1PVkJFLCA1KTsKKwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19D UFVfT0ZGIChuLCBjcHVfZmVhdHVyZXMsIFNTU0UzLCA1KTsKKwkgICAgfQor CSAgYnJlYWs7CisJY2FzZSA2OgorCSAgaWYgKGRpc2FibGUpCisJICAgIHsK KwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19DUFVfT0ZGIChuLCBjcHVfZmVh dHVyZXMsIFBPUENOVCwgNik7CisJICAgICAgQ0hFQ0tfR0xJQkNfSUZVTkNf Q1BVX09GRiAobiwgY3B1X2ZlYXR1cmVzLCBTU0U0XzEsIDYpOworCSAgICAg IENIRUNLX0dMSUJDX0lGVU5DX0NQVV9PRkYgKG4sIGNwdV9mZWF0dXJlcywg U1NFNF8yLCA2KTsKKwkgICAgfQorCSAgYnJlYWs7CisJY2FzZSA3OgorCSAg aWYgKGRpc2FibGUpCisJICAgIHsKKwkgICAgICBDSEVDS19HTElCQ19JRlVO Q19DUFVfT0ZGIChuLCBjcHVfZmVhdHVyZXMsIEFWWDUxMkYsIDcpOworCSAg ICAgIENIRUNLX0dMSUJDX0lGVU5DX0NQVV9PRkYgKG4sIGNwdV9mZWF0dXJl cywgT1NYU0FWRSwgNyk7CisJICAgIH0KKwkgIGJyZWFrOworCWNhc2UgODoK KwkgIGlmIChkaXNhYmxlKQorCSAgICB7CisJICAgICAgQ0hFQ0tfR0xJQkNf SUZVTkNfQ1BVX09GRiAobiwgY3B1X2ZlYXR1cmVzLCBBVlg1MTJDRCwgOCk7 CisJICAgICAgQ0hFQ0tfR0xJQkNfSUZVTkNfQ1BVX09GRiAobiwgY3B1X2Zl YXR1cmVzLCBBVlg1MTJCVywgOCk7CisJICAgICAgQ0hFQ0tfR0xJQkNfSUZV TkNfQ1BVX09GRiAobiwgY3B1X2ZlYXR1cmVzLCBBVlg1MTJEUSwgOCk7CisJ ICAgICAgQ0hFQ0tfR0xJQkNfSUZVTkNfQ1BVX09GRiAobiwgY3B1X2ZlYXR1 cmVzLCBBVlg1MTJFUiwgOCk7CisJICAgICAgQ0hFQ0tfR0xJQkNfSUZVTkNf Q1BVX09GRiAobiwgY3B1X2ZlYXR1cmVzLCBBVlg1MTJQRiwgOCk7CisJICAg ICAgQ0hFQ0tfR0xJQkNfSUZVTkNfQ1BVX09GRiAobiwgY3B1X2ZlYXR1cmVz LCBBVlg1MTJWTCwgOCk7CisJICAgIH0KKwkgIENIRUNLX0dMSUJDX0lGVU5D X0FSQ0hfQk9USCAobiwgY3B1X2ZlYXR1cmVzLCBTbG93X0JTRiwKKwkJCQkg ICAgICAgZGlzYWJsZSwgOCk7CisJICBicmVhazsKKwljYXNlIDEwOgorCSAg aWYgKGRpc2FibGUpCisJICAgIHsKKwkgICAgICBDSEVDS19HTElCQ19JRlVO Q19BUkNIX09GRiAobiwgY3B1X2ZlYXR1cmVzLCBBVlhfVXNhYmxlLAorCQkJ CQkgIDEwKTsKKwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19BUkNIX09GRiAo biwgY3B1X2ZlYXR1cmVzLCBGTUFfVXNhYmxlLAorCQkJCQkgIDEwKTsKKwkg ICAgfQorCSAgYnJlYWs7CisJY2FzZSAxMToKKwkgIGlmIChkaXNhYmxlKQor CSAgICB7CisJICAgICAgQ0hFQ0tfR0xJQkNfSUZVTkNfQVJDSF9PRkYgKG4s IGNwdV9mZWF0dXJlcywgQVZYMl9Vc2FibGUsCisJCQkJCSAgMTEpOworCSAg ICAgIENIRUNLX0dMSUJDX0lGVU5DX0FSQ0hfT0ZGIChuLCBjcHVfZmVhdHVy ZXMsIEZNQTRfVXNhYmxlLAorCQkJCQkgIDExKTsKKwkgICAgfQorCSAgQ0hF Q0tfR0xJQkNfSUZVTkNfQVJDSF9CT1RIIChuLCBjcHVfZmVhdHVyZXMsIFBy ZWZlcl9FUk1TLAorCQkJCSAgICAgICBkaXNhYmxlLCAxMSk7CisJICBDSEVD S19HTElCQ19JRlVOQ19BUkNIX05FRURfQ1BVX0JPVEggKG4sIGNwdV9mZWF0 dXJlcywKKwkJCQkJCVNsb3dfU1NFNF8yLCBTU0U0XzIsCisJCQkJCQlkaXNh YmxlLCAxMSk7CisJICBicmVhazsKKwljYXNlIDE0OgorCSAgaWYgKGRpc2Fi bGUpCisJICAgIHsKKwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19BUkNIX09G RiAobiwgY3B1X2ZlYXR1cmVzLAorCQkJCQkgIEFWWDUxMkZfVXNhYmxlLCAx NCk7CisJICAgIH0KKwkgIGJyZWFrOworCWNhc2UgMTU6CisJICBpZiAoZGlz YWJsZSkKKwkgICAgeworCSAgICAgIENIRUNLX0dMSUJDX0lGVU5DX0FSQ0hf T0ZGIChuLCBjcHVfZmVhdHVyZXMsCisJCQkJCSAgQVZYNTEyRFFfVXNhYmxl LCAxNSk7CisJICAgIH0KKwkgIENIRUNLX0dMSUJDX0lGVU5DX0FSQ0hfQk9U SCAobiwgY3B1X2ZlYXR1cmVzLCBGYXN0X1JlcF9TdHJpbmcsCisJCQkJICAg ICAgIGRpc2FibGUsIDE1KTsKKwkgIGJyZWFrOworCWNhc2UgMTY6CisJICAg IHsKKwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19BUkNIX05FRURfQVJDSF9C T1RICisJCShuLCBjcHVfZmVhdHVyZXMsIFByZWZlcl9Ob19BVlg1MTIsIEFW WDUxMkZfVXNhYmxlLAorCQkgZGlzYWJsZSwgMTYpOworCSAgICB9CisJICBi cmVhazsKKwljYXNlIDE4OgorCSAgICB7CisJICAgICAgQ0hFQ0tfR0xJQkNf SUZVTkNfQVJDSF9CT1RIIChuLCBjcHVfZmVhdHVyZXMsCisJCQkJCSAgIEZh c3RfQ29weV9CYWNrd2FyZCwgZGlzYWJsZSwKKwkJCQkJICAgMTgpOworCSAg ICB9CisJICBicmVhazsKKwljYXNlIDE5OgorCSAgICB7CisJICAgICAgQ0hF Q0tfR0xJQkNfSUZVTkNfQVJDSF9CT1RIIChuLCBjcHVfZmVhdHVyZXMsCisJ CQkJCSAgIEZhc3RfVW5hbGlnbmVkX0xvYWQsIGRpc2FibGUsCisJCQkJCSAg IDE5KTsKKwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19BUkNIX0JPVEggKG4s IGNwdV9mZWF0dXJlcywKKwkJCQkJICAgRmFzdF9VbmFsaWduZWRfQ29weSwg ZGlzYWJsZSwKKwkJCQkJICAgMTkpOworCSAgICB9CisJICBicmVhazsKKwlj YXNlIDIwOgorCSAgICB7CisJICAgICAgQ0hFQ0tfR0xJQkNfSUZVTkNfQVJD SF9ORUVEX0FSQ0hfQk9USAorCQkobiwgY3B1X2ZlYXR1cmVzLCBQcmVmZXJf Tm9fVlpFUk9VUFBFUiwgQVZYX1VzYWJsZSwKKwkJIGRpc2FibGUsIDIwKTsK KwkgICAgfQorCSAgYnJlYWs7CisJY2FzZSAyMToKKwkgICAgeworCSAgICAg IENIRUNLX0dMSUJDX0lGVU5DX0FSQ0hfQk9USCAobiwgY3B1X2ZlYXR1cmVz LAorCQkJCQkgICBQcmVmZXJfTUFQXzMyQklUX0VYRUMsIGRpc2FibGUsCisJ CQkJCSAgIDIxKTsKKwkgICAgfQorCSAgYnJlYWs7CisJY2FzZSAyMzoKKwkg ICAgeworCSAgICAgIENIRUNLX0dMSUJDX0lGVU5DX0FSQ0hfTkVFRF9BUkNI X0JPVEgKKwkJKG4sIGNwdV9mZWF0dXJlcywgQVZYX0Zhc3RfVW5hbGlnbmVk X0xvYWQsIEFWWF9Vc2FibGUsCisJCSBkaXNhYmxlLCAyMyk7CisJICAgIH0K KwkgIGJyZWFrOworCWNhc2UgMjY6CisJICAgIHsKKwkgICAgICBDSEVDS19H TElCQ19JRlVOQ19BUkNIX05FRURfQ1BVX0JPVEgKKwkJKG4sIGNwdV9mZWF0 dXJlcywgUHJlZmVyX1BNSU5VQl9mb3Jfc3RyaW5nb3AsIFNTRTIsCisJCSBk aXNhYmxlLCAyNik7CisJICAgIH0KKwkgIGJyZWFrOworCWNhc2UgMjc6CisJ ICAgIHsKKwkgICAgICBDSEVDS19HTElCQ19JRlVOQ19BUkNIX0JPVEggKG4s IGNwdV9mZWF0dXJlcywKKwkJCQkJICAgVXNlX2RsX3J1bnRpbWVfcmVzb2x2 ZV9zbG93LAorCQkJCQkgICBkaXNhYmxlLCAyNyk7CisJICAgIH0KKwkgIGJy ZWFrOworCX0KKyAgICAgIHAgKz0gbGVuICsgMTsKKyAgICB9CisgIHdoaWxl IChwIDwgZW5kKTsKK30KKworI2lmIEhBVkVfVFVOQUJMRVMKK2F0dHJpYnV0 ZV9oaWRkZW4KK3ZvaWQKK0RMX1RVTkFCTEVfQ0FMTEJBQ0sgKHNldF9pZnVu YykgKHR1bmFibGVfdmFsX3QgKnZhbHApCit7CisgIF9kbF94ODZfc2V0X2lm dW5jICh2YWxwLT5zdHJ2YWwpOworfQorI2VuZGlmCi0tIAoyLjkuNAoK --001a1140298c97c6250550883a2e--