From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 20/29] drm/i915: gvt: vGPU framebuffer format decoder Date: Thu, 28 Jan 2016 18:21:42 +0800 Message-ID: <1453976511-27322-21-git-send-email-zhi.a.wang@intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id CC45A6E7FB for ; Thu, 28 Jan 2016 02:24:51 -0800 (PST) In-Reply-To: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTml1IEJpbmcgPGJpbmcubml1QGludGVsLmNvbT4KCkdWVC1nIHN1cHBvcnRzIGFuIGlu ZGlyZWN0IGRpc3BsYXkgbW9kZSBieSBtYXBwaW5nIGd1ZXN0IGRpc3BsYXkgZnJhbWVidWZmZXIK aW50byBob3N0IGdyYXBoaWNzIG1lbW9yeSBzcGFjZSBhcyBhIEdFTSBvYmplY3QsIHNvIHRoYXQg aG9zdCB3aW5kb3dzIHN5c3RlbQovIEdMIGNhbiBlYXNpbHkgbWFuaXB1bGF0ZSBpdCBsaWtlIGEg Y29tbW9uIEdFTSBvYmplY3QuCgpGb3IgZXhhbXBsZSwgdXNlIGFuIEVHTCBleHRlbnNpb24gdG8g d3JhcCBhIGd1ZXN0IGZyYW1lYnVmZmVyIEdFTSBvYmplY3QgaW50bwphbiBFR0wgaW1hZ2UsIG9y IGp1c3QgdXNlIGk5MTUgTU1BUF9HVFQgaW9jdGwgdG8gbWFwIGl0IGludG8gaG9zdCBhcGVydHVy ZSwKc28gdGhhdCB1c2Vyc3BhY2UgYXBwbGljYXRpb24gY2FuIGVhc2lseSB1c2UgdGhlbS4KClRv IGNyZWF0ZSB0aGlzIHNwZWNpYWwgR0VNIG9iamVjdCwgR1ZULWcgaGFzIHRvIGtub3cgdGhlIHN1 cmZhY2UgZm9ybWF0IG9mCmd1ZXN0IGZyYW1lYnVmZmVyLCBsaWtlIFJHQi9OVjEyLCBzdHJpZGUs IHRpbGluZyBmb3JtYXQuIHZHUFUgZnJhbWVidWZmZXIKZm9ybWF0IGRlY29kZXIgd2lsbCBleHRy YWN0IHRoZXNlIGluZm9ybWF0aW9uIGZyb20gZ3Vlc3QgdmlydHVhbCBwbGFuZQpyZWdpc3RlcnMg YW5kIGV4cG9zZSB0aGVtIHRvIEdWVCBHRU0gb2JqZWN0IGxvZ2ljcy4KClNpZ25lZC1vZmYtYnk6 IEJpbmcgTml1IDxiaW5nLm5pdUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L01ha2VmaWxlICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2Rl Y29kZXIuYyB8IDI5NSArKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZ3Z0LmggICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9y ZWcuaCAgICAgICAgfCA0MDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBm aWxlcyBjaGFuZ2VkLCA3MDAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvTWFrZWZpbGUKaW5kZXggOGY1OWJiYy4uYjBhM2ExYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9NYWtlZmlsZQpAQCAtMSw1ICsxLDYgQEAKIEdWVF9TT1VSQ0UgOj0gZ3Z0Lm8gcGFyYW1z Lm8gYXBlcnR1cmVfZ20ubyBtbWlvLm8gaGFuZGxlcnMubyBpbnN0YW5jZS5vIFwKLQkJdHJhY2Vf cG9pbnRzLm8gaW50ZXJydXB0Lm8gZ3R0Lm8gY2ZnX3NwYWNlLm8gb3ByZWdpb24ubyB1dGlsaXR5 Lm8gZmJfZGVjb2Rlci5vCisJCXRyYWNlX3BvaW50cy5vIGludGVycnVwdC5vIGd0dC5vIGNmZ19z cGFjZS5vIG9wcmVnaW9uLm8gdXRpbGl0eS5vIFwKKwkJZmJfZGVjb2Rlci5vCiAKIGNjZmxhZ3Mt eQkJCSs9IC1JJChzcmMpIC1JJChzcmMpLy4uIC1XYWxsIC1XZXJyb3IgLVduby11bnVzZWQtZnVu Y3Rpb24KIGk5MTVfZ3Z0LXkJCQk6PSAkKEdWVF9TT1VSQ0UpCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2ZiX2RlY29kZXIuYwppbmRleCBhMjE5ODE5Li5kZmI4Y2IzIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9mYl9kZWNvZGVyLmMKQEAgLTIzLDEyICsyMywzMDMgQEAKIAogI2luY2x1ZGUgImd2dC5o IgogCi1pbnQgZ3Z0X2RlY29kZV9mYl9mb3JtYXQoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsIGlu dCB2bWlkLCBzdHJ1Y3QgZ3Z0X2ZiX2Zvcm1hdCAqZmIpCisjZGVmaW5lIEZPUk1BVF9OVU0JMTYK K3N0cnVjdCBwaXhlbF9mb3JtYXQgeworCWludAlkcm1fZm9ybWF0OwkvKiBQaXhlbCBmb3JtYXQg aW4gRFJNIGRlZmluaXRpb24gKi8KKwlpbnQJYnBwOwkJLyogQml0cyBwZXIgcGl4ZWwsIDAgaW5k aWNhdGVzIGludmFsaWQgKi8KKwljaGFyCSpkZXNjOwkJLyogVGhlIGRlc2NyaXB0aW9uICovCit9 OworCisvKiBub24tc3VwcG9ydGVkIGZvcm1hdCBoYXMgYnBwIGRlZmF1bHQgdG8gMCAqLworc3Rh dGljIHN0cnVjdCBwaXhlbF9mb3JtYXQgcHJpbWFyeV9waXhlbF9mb3JtYXRzW0ZPUk1BVF9OVU1d ID0geworCVswYjAwMTBdICA9IHtEUk1fRk9STUFUX0M4LCA4LCAiOC1iaXQgSW5kZXhlZCJ9LAor CVswYjAxMDFdICA9IHtEUk1fRk9STUFUX1JHQjU2NSwgMTYsICIxNi1iaXQgQkdSWCAoNTo2OjUg TVNCLVI6RzpCKSJ9LAorCVswYjAxMTBdICA9IHtEUk1fRk9STUFUX1hSR0I4ODg4LCAzMiwgIjMy LWJpdCBCR1JYICg4Ojg6ODo4IE1TQi1YOlI6RzpCKSJ9LAorCVswYjEwMDBdICA9IHtEUk1fRk9S TUFUX1hCR1IyMTAxMDEwLCAzMiwgIjMyLWJpdCBSR0JYICgyOjEwOjEwOjEwIE1TQi1YOkI6RzpS KSJ9LAorCVswYjEwMTBdID0ge0RSTV9GT1JNQVRfWFJHQjIxMDEwMTAsIDMyLCAiMzItYml0IEJH UlggKDI6MTA6MTA6MTAgTVNCLVg6UjpHOkIpIn0sCisJWzBiMTExMF0gPSB7RFJNX0ZPUk1BVF9Y QkdSODg4OCwgMzIsICIzMi1iaXQgUkdCWCAoODo4Ojg6OCBNU0ItWDpCOkc6UikifSwKK307CisK Ky8qIG5vbi1zdXBwb3J0ZWQgZm9ybWF0IGhhcyBicHAgZGVmYXVsdCB0byAwICovCitzdGF0aWMg c3RydWN0IHBpeGVsX2Zvcm1hdCBza2xfcGl4ZWxfZm9ybWF0c1tGT1JNQVRfTlVNXSA9IHsKKwlb MGIxMTAwXSAgPSB7RFJNX0ZPUk1BVF9DOCwgOCwgIjgtYml0IEluZGV4ZWQifSwKKwlbMGIxMTEw XSAgPSB7RFJNX0ZPUk1BVF9SR0I1NjUsIDE2LCAiMTYtYml0IEJHUlggKDU6Njo1IE1TQi1SOkc6 QikifSwKKwlbMGIwMTAwXSAgPSB7RFJNX0ZPUk1BVF9YUkdCODg4OCwgMzIsICIzMi1iaXQgQkdS WCAoODo4Ojg6OCBNU0ItWDpSOkc6QikifSwKKwlbMGIxMDEwXSAgPSB7RFJNX0ZPUk1BVF9YUkdC MjEwMTAxMCwgMzIsICIzMi1iaXQgQkdSWCAoMjoxMDoxMDoxMCBNU0ItWDpSOkc6QikifSwKK307 CisKK3N0YXRpYyBBVE9NSUNfTk9USUZJRVJfSEVBRChndnRfZmJfbm90aWZpZXJfbGlzdCk7CisK K2ludCBndnRfZGVjb2RlX3ByaW1hcnlfcGxhbmVfZm9ybWF0KHN0cnVjdCB2Z3RfZGV2aWNlICp2 Z3QsCisJaW50IHBpcGUsIHN0cnVjdCBndnRfcHJpbWFyeV9wbGFuZV9mb3JtYXQgKnBsYW5lKQog eworCXUzMgl2YWwsIGZtdDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdmd0LT5wZGV2LT5k ZXZfcHJpdi0+ZGV2OworCisJdmFsID0gX192cmVnKHZndCwgR1ZUX0RTUENOVFIocGlwZSkpOwor CXBsYW5lLT5lbmFibGVkID0gISEodmFsICYgRElTUExBWV9QTEFORV9FTkFCTEUpOworCWlmICgh cGxhbmUtPmVuYWJsZWQpCisJCXJldHVybiAwOworCisJaWYgKElTX1NLWUxBS0UoZGV2KSkgewor CQlwbGFuZS0+dGlsZWQgPSAhISh2YWwgJiBQTEFORV9DVExfVElMRURfTUFTSyk7CisJCWZtdCA9 ICh2YWwgJiBQTEFORV9DVExfRk9STUFUX01BU0spID4+IDI0OworCX0gZWxzZSB7CisJCXBsYW5l LT50aWxlZCA9ICEhKHZhbCAmIERJU1BQTEFORV9USUxFRCk7CisJCWZtdCA9ICh2YWwgJiBESVNQ UExBTkVfUElYRk9STUFUX01BU0spID4+IF9QUklfUExBTkVfRk1UX1NISUZUOworCX0KKworCWlm ICgoSVNfU0tZTEFLRShkZXYpICYmICFza2xfcGl4ZWxfZm9ybWF0c1tmbXRdLmJwcCkKKwkJCXx8 ICghSVNfU0tZTEFLRShkZXYpICYmICFwcmltYXJ5X3BpeGVsX2Zvcm1hdHNbZm10XS5icHApKSB7 CisJCWd2dF9lcnIoIk5vbi1zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICgweCV4KVxuIiwgZm10KTsK KwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcGxhbmUtPmh3X2Zvcm1hdCA9IGZtdDsKKwlwbGFu ZS0+YnBwID0gcHJpbWFyeV9waXhlbF9mb3JtYXRzW2ZtdF0uYnBwOworCXBsYW5lLT5kcm1fZm9y bWF0ID0gcHJpbWFyeV9waXhlbF9mb3JtYXRzW2ZtdF0uZHJtX2Zvcm1hdDsKKworCXBsYW5lLT5i YXNlID0gX192cmVnKHZndCwgR1ZUX0RTUFNVUkYocGlwZSkpICYgR1RUX1BBR0VfTUFTSzsKKwlw bGFuZS0+c3RyaWRlID0gX192cmVnKHZndCwgR1ZUX0RTUFNUUklERShwaXBlKSkgJgorCQlfUFJJ X1BMQU5FX1NUUklERV9NQVNLOworCXBsYW5lLT53aWR0aCA9IChfX3ZyZWcodmd0LCBHVlRfUElQ RVNSQyhwaXBlKSkgJiBfUElQRV9IX1NSQ1NaX01BU0spID4+CisJCV9QSVBFX0hfU1JDU1pfU0hJ RlQ7CisJcGxhbmUtPndpZHRoICs9IDE7CisJcGxhbmUtPmhlaWdodCA9IChfX3ZyZWcodmd0LCBH VlRfUElQRVNSQyhwaXBlKSkgJgorCQkJX1BJUEVfVl9TUkNTWl9NQVNLKSA+PiBfUElQRV9WX1NS Q1NaX1NISUZUOworCXBsYW5lLT5oZWlnaHQgKz0gMTsJLyogcmF3IGhlaWdodCBpcyBvbmUgbWlu dXMgdGhlIHJlYWwgdmFsdWUgKi8KKworCXZhbCA9IF9fdnJlZyh2Z3QsIEdWVF9EU1BUSUxFT0ZG KHBpcGUpKTsKKwlwbGFuZS0+eF9vZmZzZXQgPSAodmFsICYgX1BSSV9QTEFORV9YX09GRl9NQVNL KSA+PgorCQlfUFJJX1BMQU5FX1hfT0ZGX1NISUZUOworCXBsYW5lLT55X29mZnNldCA9ICh2YWwg JiBfUFJJX1BMQU5FX1lfT0ZGX01BU0spID4+CisJCV9QUklfUExBTkVfWV9PRkZfU0hJRlQ7CisK IAlyZXR1cm4gMDsKIH0KIAotaW50IGd2dF9mYl9ub3RpZmllcl9jYWxsX2NoYWluKHVuc2lnbmVk IGxvbmcgdmFsLCB2b2lkICpkYXRhKQorI2RlZmluZSBDVVJTT1JfTU9ERV9OVU0JKDEgPDwgNikK K3N0cnVjdCBjdXJzb3JfbW9kZV9mb3JtYXQgeworCWludAlkcm1fZm9ybWF0OwkvKiBQaXhlbCBm b3JtYXQgaW4gRFJNIGRlZmluaXRpb24gKi8KKwl1OAlicHA7CQkvKiBCaXRzIHBlciBwaXhlbDsg MCBpbmRpY2F0ZXMgaW52YWxpZCAqLworCXUzMgl3aWR0aDsJCS8qIEluIHBpeGVsICovCisJdTMy CWhlaWdodDsJCS8qIEluIGxpbmVzICovCisJY2hhcgkqZGVzYzsJCS8qIFRoZSBkZXNjcmlwdGlv biAqLworfTsKKworLyogbm9uLXN1cHBvcnRlZCBmb3JtYXQgaGFzIGJwcCBkZWZhdWx0IHRvIDAg Ki8KK3N0YXRpYyBzdHJ1Y3QgY3Vyc29yX21vZGVfZm9ybWF0IGN1cnNvcl9waXhlbF9mb3JtYXRz W0NVUlNPUl9NT0RFX05VTV0gPSB7CisJWzBiMTAwMDEwXSAgPSB7RFJNX0ZPUk1BVF9BUkdCODg4 OCwgMzIsIDEyOCwgMTI4LCIxMjh4MTI4IDMyYnBwIEFSR0IifSwKKwlbMGIxMDAwMTFdICA9IHtE Uk1fRk9STUFUX0FSR0I4ODg4LCAzMiwgMjU2LCAyNTYsICIyNTZ4MjU2IDMyYnBwIEFSR0IifSwK KwlbMGIxMDAxMTFdICA9IHtEUk1fRk9STUFUX0FSR0I4ODg4LCAzMiwgNjQsIDY0LCAiNjR4NjQg MzJicHAgQVJHQiJ9LAorCVswYjAwMDExMV0gID0ge0RSTV9GT1JNQVRfQVJHQjg4ODgsIDMyLCA2 NCwgNjQsICI2NHg2NCAzMmJwcCBBUkdCIn0sLy9hY3R1YWxseSBpbnZlcnRlZC4uLiBmaWd1cmUg dGhpcyBvdXQgbGF0ZXIKK307CisKK2ludCBndnRfZGVjb2RlX2N1cnNvcl9wbGFuZV9mb3JtYXQo c3RydWN0IHZndF9kZXZpY2UgKnZndCwKKwlpbnQgcGlwZSwgc3RydWN0IGd2dF9jdXJzb3JfcGxh bmVfZm9ybWF0ICpwbGFuZSkKIHsKKwl1MzIgdmFsLCBtb2RlOworCXUzMiBhbHBoYV9wbGFuZSwg YWxwaGFfZm9yY2U7CisKKwl2YWwgPSBfX3ZyZWcodmd0LCBHVlRfQ1VSQ05UUihwaXBlKSk7CisJ bW9kZSA9IHZhbCAmIF9DVVJTT1JfTU9ERTsKKwlwbGFuZS0+ZW5hYmxlZCA9IChtb2RlICE9IF9D VVJTT1JfTU9ERV9ESVNBQkxFKTsKKwlpZiAoIXBsYW5lLT5lbmFibGVkKQorCQlyZXR1cm4gMDsK KworCWlmICghY3Vyc29yX3BpeGVsX2Zvcm1hdHNbbW9kZV0uYnBwKSB7CisJCWd2dF9lcnIoIk5v bi1zdXBwb3J0ZWQgY3Vyc29yIG1vZGUgKDB4JXgpXG4iLCBtb2RlKTsKKwkJcmV0dXJuIC1FSU5W QUw7CisJfQorCXBsYW5lLT5tb2RlID0gbW9kZTsKKwlwbGFuZS0+YnBwID0gY3Vyc29yX3BpeGVs X2Zvcm1hdHNbbW9kZV0uYnBwOworCXBsYW5lLT5kcm1fZm9ybWF0ID0gY3Vyc29yX3BpeGVsX2Zv cm1hdHNbbW9kZV0uZHJtX2Zvcm1hdDsKKwlwbGFuZS0+d2lkdGggPSBjdXJzb3JfcGl4ZWxfZm9y bWF0c1ttb2RlXS53aWR0aDsKKwlwbGFuZS0+aGVpZ2h0ID0gY3Vyc29yX3BpeGVsX2Zvcm1hdHNb bW9kZV0uaGVpZ2h0OworCisJYWxwaGFfcGxhbmUgPSAodmFsICYgX0NVUlNPUl9BTFBIQV9QTEFO RV9NQVNLKSA+PgorCQkJCV9DVVJTT1JfQUxQSEFfUExBTkVfU0hJRlQ7CisJYWxwaGFfZm9yY2Ug PSAodmFsICYgX0NVUlNPUl9BTFBIQV9GT1JDRV9NQVNLKSA+PgorCQkJCV9DVVJTT1JfQUxQSEFf Rk9SQ0VfU0hJRlQ7CisJaWYgKGFscGhhX3BsYW5lIHx8IGFscGhhX2ZvcmNlKQorCQlndnRfd2Fy bigiYWxwaGFfcGxhbmU9MHgleCwgYWxwaGFfZm9yY2U9MHgleFxuIiwKKwkJCWFscGhhX3BsYW5l LCBhbHBoYV9mb3JjZSk7CisKKwlwbGFuZS0+YmFzZSA9IF9fdnJlZyh2Z3QsIEdWVF9DVVJCQVNF KHBpcGUpKSAmIEdUVF9QQUdFX01BU0s7CisKKwl2YWwgPSBfX3ZyZWcodmd0LCBHVlRfQ1VSUE9T KHBpcGUpKTsKKwlwbGFuZS0+eF9wb3MgPSAodmFsICYgX0NVUlNPUl9QT1NfWF9NQVNLKSA+PiBf Q1VSU09SX1BPU19YX1NISUZUOworCXBsYW5lLT54X3NpZ24gPSAodmFsICYgX0NVUlNPUl9TSUdO X1hfTUFTSykgPj4gX0NVUlNPUl9TSUdOX1hfU0hJRlQ7CisJcGxhbmUtPnlfcG9zID0gKHZhbCAm IF9DVVJTT1JfUE9TX1lfTUFTSykgPj4gX0NVUlNPUl9QT1NfWV9TSElGVDsKKwlwbGFuZS0+eV9z aWduID0gKHZhbCAmIF9DVVJTT1JfU0lHTl9ZX01BU0spID4+IF9DVVJTT1JfU0lHTl9ZX1NISUZU OworCXBsYW5lLT54X2hvdCA9IF9fdnJlZyh2Z3QsIF92Z3RpZl9yZWcoeGhvdCkpOworCXBsYW5l LT55X2hvdCA9IF9fdnJlZyh2Z3QsIF92Z3RpZl9yZWcoeGhvdCkpOworCisJcmV0dXJuIDA7Cit9 CisKKyNkZWZpbmUgRk9STUFUX05VTV9TUlJJVEUJKDEgPDwgMykKKworc3RhdGljIHN0cnVjdCBw aXhlbF9mb3JtYXQgc3ByaXRlX3BpeGVsX2Zvcm1hdHNbRk9STUFUX05VTV9TUlJJVEVdID0gewor CVswYjAwMF0gID0ge0RSTV9GT1JNQVRfWVVWNDIyLCAxNiwgIllVViAxNi1iaXQgNDoyOjIgcGFj a2VkIn0sCisJWzBiMDAxXSAgPSB7RFJNX0ZPUk1BVF9YUkdCMjEwMTAxMCwgMzIsICJSR0IgMzIt Yml0IDI6MTA6MTA6MTAifSwKKwlbMGIwMTBdICA9IHtEUk1fRk9STUFUX1hSR0I4ODg4LCAzMiwg IlJHQiAzMi1iaXQgODo4Ojg6OCJ9LAorCVswYjEwMF0gPSB7RFJNX0ZPUk1BVF9BWVVWLCAzMiwg IllVViAzMi1iaXQgNDo0OjQgcGFja2VkICg4Ojg6ODo4IE1TQi1YOlk6VTpWKSJ9LAorfTsKKwor aW50IGd2dF9kZWNvZGVfc3ByaXRlX3BsYW5lX2Zvcm1hdChzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0 LAorCWludCBwaXBlLCBzdHJ1Y3QgZ3Z0X3Nwcml0ZV9wbGFuZV9mb3JtYXQgKnBsYW5lKQorewor CXUzMiB2YWwsIGZtdDsKKwl1MzIgd2lkdGg7CisJdTMyIGNvbG9yX29yZGVyLCB5dXZfb3JkZXI7 CisJaW50IGRybV9mb3JtYXQ7CisKKwl2YWwgPSBfX3ZyZWcodmd0LCBHVlRfU1BSQ1RMKHBpcGUp KTsKKwlwbGFuZS0+ZW5hYmxlZCA9ICEhKHZhbCAmIFNQUklURV9FTkFCTEUpOworCWlmICghcGxh bmUtPmVuYWJsZWQpCisJCXJldHVybiAwOworCisJcGxhbmUtPnRpbGVkID0gISEodmFsICYgU1BS SVRFX1RJTEVEKTsKKwljb2xvcl9vcmRlciA9ICEhKHZhbCAmIFNQUklURV9SR0JfT1JERVJfUkdC WCk7CisJeXV2X29yZGVyID0gKHZhbCAmIFNQUklURV9ZVVZfQllURV9PUkRFUl9NQVNLKSA+Pgor CQkJCV9TUFJJVEVfWVVWX09SREVSX1NISUZUOworCisJZm10ID0gKHZhbCAmIFNQUklURV9QSVhG T1JNQVRfTUFTSykgPj4gX1NQUklURV9GTVRfU0hJRlQ7CisJaWYgKCFzcHJpdGVfcGl4ZWxfZm9y bWF0c1tmbXRdLmJwcCkgeworCQlndnRfZXJyKCJOb24tc3VwcG9ydGVkIHBpeGVsIGZvcm1hdCAo MHgleClcbiIsIGZtdCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlwbGFuZS0+aHdfZm9ybWF0 ID0gZm10OworCXBsYW5lLT5icHAgPSBzcHJpdGVfcGl4ZWxfZm9ybWF0c1tmbXRdLmJwcDsKKwlk cm1fZm9ybWF0ID0gc3ByaXRlX3BpeGVsX2Zvcm1hdHNbZm10XS5kcm1fZm9ybWF0OworCisJLyog T3JkZXIgb2YgUkdCIHZhbHVlcyBpbiBhbiBSR0J4eHggYnVmZmVyIG1heSBiZSBvcmRlcmVkIFJH QiBvcgorCSAqIEJHUiBkZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9mIHRoZSBjb2xvcl9vcmRlciBm aWVsZAorCSAqLworCWlmICghY29sb3Jfb3JkZXIpIHsKKwkJaWYgKGRybV9mb3JtYXQgPT0gRFJN X0ZPUk1BVF9YUkdCMjEwMTAxMCkKKwkJCWRybV9mb3JtYXQgPSBEUk1fRk9STUFUX1hCR1IyMTAx MDEwOworCQllbHNlIGlmIChkcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfWFJHQjg4ODgpCisJCQlk cm1fZm9ybWF0ID0gRFJNX0ZPUk1BVF9YQkdSODg4ODsKKwl9CisKKwlpZiAoZHJtX2Zvcm1hdCA9 PSBEUk1fRk9STUFUX1lVVjQyMikgeworCQlzd2l0Y2ggKHl1dl9vcmRlcil7CisJCWNhc2UJMDoK KwkJCWRybV9mb3JtYXQgPSBEUk1fRk9STUFUX1lVWVY7CisJCQlicmVhazsKKwkJY2FzZQkxOgor CQkJZHJtX2Zvcm1hdCA9IERSTV9GT1JNQVRfVVlWWTsKKwkJCWJyZWFrOworCQljYXNlCTI6CisJ CQlkcm1fZm9ybWF0ID0gRFJNX0ZPUk1BVF9ZVllVOworCQkJYnJlYWs7CisJCWNhc2UJMzoKKwkJ CWRybV9mb3JtYXQgPSBEUk1fRk9STUFUX1ZZVVk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJ CS8qIHl1dl9vcmRlciBoYXMgb25seSAyIGJpdHMgKi8KKwkJCUJVRygpOworCQkJYnJlYWs7CisJ CX0KKwl9CisKKwlwbGFuZS0+ZHJtX2Zvcm1hdCA9IGRybV9mb3JtYXQ7CisKKwlwbGFuZS0+YmFz ZSA9IF9fdnJlZyh2Z3QsIEdWVF9TUFJTVVJGKHBpcGUpKSAmIEdUVF9QQUdFX01BU0s7CisJcGxh bmUtPndpZHRoID0gX192cmVnKHZndCwgR1ZUX1NQUlNUUklERShwaXBlKSkgJgorCQkJCV9TUFJJ VEVfU1RSSURFX01BU0s7CisJcGxhbmUtPndpZHRoIC89IHBsYW5lLT5icHAgLyA4OwkvKiByYXcg d2lkdGggaW4gYnl0ZXMgKi8KKworCXZhbCA9IF9fdnJlZyh2Z3QsIEdWVF9TUFJTSVpFKHBpcGUp KTsKKwlwbGFuZS0+aGVpZ2h0ID0gKHZhbCAmIF9TUFJJVEVfU0laRV9IRUlHSFRfTUFTSykgPj4K KwkJX1NQUklURV9TSVpFX0hFSUdIVF9TSElGVDsKKwl3aWR0aCA9ICh2YWwgJiBfU1BSSVRFX1NJ WkVfV0lEVEhfTUFTSykgPj4gX1NQUklURV9TSVpFX1dJRFRIX1NISUZUOworCXBsYW5lLT5oZWln aHQgKz0gMTsJLyogcmF3IGhlaWdodCBpcyBvbmUgbWludXMgdGhlIHJlYWwgdmFsdWUgKi8KKwl3 aWR0aCArPSAxOwkJLyogcmF3IHdpZHRoIGlzIG9uZSBtaW51cyB0aGUgcmVhbCB2YWx1ZSAqLwor CWlmIChwbGFuZS0+d2lkdGggIT0gd2lkdGgpCisJCWd2dF93YXJuKCJzcHJpdGVfcGxhbmU6IHBs YW5lLT53aWR0aD0lZCwgd2lkdGg9JWRcbiIsCisJCQlwbGFuZS0+d2lkdGgsIHdpZHRoKTsKKwor CXZhbCA9IF9fdnJlZyh2Z3QsIEdWVF9TUFJQT1MocGlwZSkpOworCXBsYW5lLT54X3BvcyA9ICh2 YWwgJiBfU1BSSVRFX1BPU19YX01BU0spID4+IF9TUFJJVEVfUE9TX1hfU0hJRlQ7CisJcGxhbmUt PnlfcG9zID0gKHZhbCAmIF9TUFJJVEVfUE9TX1lfTUFTSykgPj4gX1NQUklURV9QT1NfWV9TSElG VDsKKworCXZhbCA9IF9fdnJlZyh2Z3QsIEdWVF9TUFJPRkZTRVQocGlwZSkpOworCXBsYW5lLT54 X29mZnNldCA9ICh2YWwgJiBfU1BSSVRFX09GRlNFVF9TVEFSVF9YX01BU0spID4+CisJCQkgICBf U1BSSVRFX09GRlNFVF9TVEFSVF9YX1NISUZUOworCXBsYW5lLT55X29mZnNldCA9ICh2YWwgJiBf U1BSSVRFX09GRlNFVF9TVEFSVF9ZX01BU0spID4+CisJCQkgICBfU1BSSVRFX09GRlNFVF9TVEFS VF9ZX1NISUZUOwogCXJldHVybiAwOwogfQorCisvKgorICogRGVjb2RlIGZyYW1lYnVmZmVyIGlu Zm9ybWF0aW9uIGZyb20gcmF3IHZNTUlPCisgKgorICogSU5QVVQ6CisgKiAgIFtkb21pZF0gLSBz cGVjaWZ5IHRoZSBWTQorICogT1VUUFVUOgorICogICBbZm9ybWF0XSAtIGNvbnRhaW4gdGhlIGRl Y29kZWQgZm9ybWF0IGluZm8KKyAqCisgKiBOT1RFOiBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRv IHBvbGwgdGhpcyBpbnRlcmZhY2UsIGFuZCByZWNvbnN0cnVjdAorICogcHJldmlvdXMgcmVmZXJl bmNlIHRvIHRoZSBuZXcgZm9ybWF0IGluZm9ybWF0aW9uCisgKi8KKworaW50IGd2dF9kZWNvZGVf ZmJfZm9ybWF0KHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LCBpbnQgdm1pZCwgc3RydWN0IGd2dF9m Yl9mb3JtYXQgKmZiKQoreworCWludCBpOworCXN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QgPSBOVUxM OworCWludCByZXQgPSAwOworCisJaWYgKCFmYikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBU T0RPOiB1c2UgZmluZS1ncmFpbmVkIHJlZmNudCBsYXRlciAqLworCW11dGV4X2xvY2soJnBkZXYt PmxvY2spOworCisJZm9yX2VhY2hfb25saW5lX2luc3RhbmNlKHBkZXYsIHZndCwgaSkKKwkJaWYg KHZndC0+dm1faWQgPT0gdm1pZCkKKwkJCWJyZWFrOworCisJaWYgKCF2Z3QpIHsKKwkJZ3Z0X2Vy cigiSW52YWxpZCBkb21haW4gSUQgKCVkKVxuIiwgdm1pZCk7CisJCW11dGV4X3VubG9jaygmcGRl di0+bG9jayk7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBJOTE1 X01BWF9QSVBFUzsgaSsrKSB7CisJCXN0cnVjdCBndnRfcGlwZV9mb3JtYXQgKnBpcGUgPSAmZmIt PnBpcGVzW2ldOworCQl1MzIgZGRpX2Z1bmNfY3RsID0gX192cmVnKHZndCwgX0dWVF9UUkFOU19E RElfRlVOQ19DVEwoaSkpOworCisJCWlmICghKGRkaV9mdW5jX2N0bCAmIFRSQU5TX0RESV9GVU5D X0VOQUJMRSkpIHsKKwkJCXBpcGUtPmRkaV9wb3J0ID0gRERJX1BPUlRfTk9ORTsKKwkJfSBlbHNl IHsKKwkJCXUzMiBwb3J0ID0gKGRkaV9mdW5jX2N0bCAmIFRSQU5TX0RESV9QT1JUX01BU0spID4+ CisJCQkJCQlUUkFOU19ERElfUE9SVF9TSElGVDsKKwkJCWlmIChwb3J0IDw9IERESV9QT1JUX0Up CisJCQkJcGlwZS0+ZGRpX3BvcnQgPSBwb3J0OworCQkJZWxzZQorCQkJCXBpcGUtPmRkaV9wb3J0 ID0gRERJX1BPUlRfTk9ORTsKKwkJfQorCisJCXJldCB8PSBndnRfZGVjb2RlX3ByaW1hcnlfcGxh bmVfZm9ybWF0KHZndCwgaSwgJnBpcGUtPnByaW1hcnkpOworCQlyZXQgfD0gZ3Z0X2RlY29kZV9z cHJpdGVfcGxhbmVfZm9ybWF0KHZndCwgaSwgJnBpcGUtPnNwcml0ZSk7CisJCXJldCB8PSBndnRf ZGVjb2RlX2N1cnNvcl9wbGFuZV9mb3JtYXQodmd0LCBpLCAmcGlwZS0+Y3Vyc29yKTsKKworCQlp ZiAocmV0KSB7CisJCQlndnRfZXJyKCJEZWNvZGUgZm9ybWF0IGVycm9yIGZvciBwaXBlKCVkKVxu IiwgaSk7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwltdXRleF91 bmxvY2soJnBkZXYtPmxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworaW50IGd2dF9mYl9ub3Rp Zmllcl9jYWxsX2NoYWluKHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICpkYXRhKQoreworCXJldHVy biBhdG9taWNfbm90aWZpZXJfY2FsbF9jaGFpbigmZ3Z0X2ZiX25vdGlmaWVyX2xpc3QsIHZhbCwg ZGF0YSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKaW5kZXggY2Y4OGJkNi4uNDU2YjMzMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9ndnQuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgImd0dC5oIgog I2luY2x1ZGUgImNmZ19zcGFjZS5oIgogI2luY2x1ZGUgIm9wcmVnaW9uLmgiCisjaW5jbHVkZSAi ZmJfZGVjb2Rlci5oIgogCiAjZGVmaW5lIEdWVF9NQVhfVkdQVSA4CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9y ZWcuaAppbmRleCAzZmI0NDk1Li5jNjZhMmRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlZy5oCkBAIC02 OCw2ICs2OCw0MDcgQEAKICNkZWZpbmUgICAgX1JFR0JJVF9CRFdfR01DSF9HTVNfU0hJRlQgICA4 CiAjZGVmaW5lICAgIF9SRUdCSVRfQkRXX0dNQ0hfR01TX01BU0sgICAgMHhmZgogCisjZGVmaW5l CV9QUklfUExBTkVfRk1UX1NISUZUCTI2CisjZGVmaW5lCV9QUklfUExBTkVfVElMRV9TSElGVAkx MAorCisjZGVmaW5lCV9QUklfUExBTkVfU1RSSURFX1NISUZUCTYKKyNkZWZpbmUJX1BSSV9QTEFO RV9TVFJJREVfTUFTSwkoMHgzZmYgPDwgX1BSSV9QTEFORV9TVFJJREVfU0hJRlQpCisKKyNkZWZp bmUJX1BSSV9QTEFORV9YX09GRl9TSElGVAkwCisjZGVmaW5lCV9QUklfUExBTkVfWF9PRkZfTUFT SwkoMHgxZmZmIDw8IF9QUklfUExBTkVfWF9PRkZfU0hJRlQpCisjZGVmaW5lCV9QUklfUExBTkVf WV9PRkZfU0hJRlQJMTYKKyNkZWZpbmUJX1BSSV9QTEFORV9ZX09GRl9NQVNLCSgweGZmZiA8PCBf UFJJX1BMQU5FX1lfT0ZGX1NISUZUKQorCisjZGVmaW5lICAgICBfUElQRV9WX1NSQ1NaX1NISUZU CTAKKyNkZWZpbmUgICAgIF9QSVBFX1ZfU1JDU1pfTUFTSwkoMHhmZmYgPDwgX1BJUEVfVl9TUkNT Wl9TSElGVCkKKyNkZWZpbmUgICAgIF9QSVBFX0hfU1JDU1pfU0hJRlQJMTYKKyNkZWZpbmUgICAg IF9QSVBFX0hfU1JDU1pfTUFTSwkoMHgxZmZmIDw8IF9QSVBFX0hfU1JDU1pfU0hJRlQpCisKKyNk ZWZpbmUgX0NVUlNPUl9NT0RFCTB4M2YKKyNkZWZpbmUgX0NVUlNPUl9NT0RFX0RJU0FCTEUJMHgw MAorI2RlZmluZSBfQ1VSU09SX0FMUEhBX0ZPUkNFX1NISUZUCTgKKyNkZWZpbmUgX0NVUlNPUl9B TFBIQV9GT1JDRV9NQVNLCSgweDMgPDwgX0NVUlNPUl9BTFBIQV9GT1JDRV9TSElGVCkKKyNkZWZp bmUgX0NVUlNPUl9BTFBIQV9QTEFORV9TSElGVAkxMAorI2RlZmluZSBfQ1VSU09SX0FMUEhBX1BM QU5FX01BU0sJKDB4MyA8PCBfQ1VSU09SX0FMUEhBX1BMQU5FX1NISUZUKQorI2RlZmluZSBfQ1VS U09SX1BPU19YX1NISUZUCTAKKyNkZWZpbmUgX0NVUlNPUl9QT1NfWF9NQVNLCSgweDFmZmYgPDwg X0NVUlNPUl9QT1NfWF9TSElGVCkKKyNkZWZpbmUgX0NVUlNPUl9TSUdOX1hfU0hJRlQJMTUKKyNk ZWZpbmUgX0NVUlNPUl9TSUdOX1hfTUFTSwkoMSA8PCBfQ1VSU09SX1NJR05fWF9TSElGVCkKKyNk ZWZpbmUgX0NVUlNPUl9QT1NfWV9TSElGVAkJMTYKKyNkZWZpbmUgX0NVUlNPUl9QT1NfWV9NQVNL CSgweGZmZiA8PCBfQ1VSU09SX1BPU19ZX1NISUZUKQorI2RlZmluZSBfQ1VSU09SX1NJR05fWV9T SElGVAkzMQorI2RlZmluZSBfQ1VSU09SX1NJR05fWV9NQVNLCSgxIDw8IF9DVVJTT1JfU0lHTl9Z X1NISUZUKQorCisjZGVmaW5lIEdWVF9DVVJDTlRSKHBpcGUpCV9QSVBFKHBpcGUsIF9DVVJBQ05U UiwgX0NVUkJDTlRSX0lWQikKKyNkZWZpbmUgR1ZUX0NVUkJBU0UocGlwZSkJX1BJUEUocGlwZSwg X0NVUkFCQVNFLCBfQ1VSQkJBU0VfSVZCKQorI2RlZmluZSBHVlRfQ1VSUE9TKHBpcGUpCV9QSVBF KHBpcGUsIF9DVVJBUE9TLCBfQ1VSQlBPU19JVkIpCisKKyNkZWZpbmUJX1NQUklURV9GTVRfU0hJ RlQJMjUKKyNkZWZpbmUJX1NQUklURV9DT0xPUl9PUkRFUl9TSElGVAkyMAorI2RlZmluZQlfU1BS SVRFX1lVVl9PUkRFUl9TSElGVAkxNgorCisjZGVmaW5lCV9TUFJJVEVfU1RSSURFX1NISUZUCTYK KyNkZWZpbmUJX1NQUklURV9TVFJJREVfTUFTSwkoMHgxZmYgPDwgX1NQUklURV9TVFJJREVfU0hJ RlQpCisKKyNkZWZpbmUJX1NQUklURV9QT1NfWF9TSElGVAkwCisjZGVmaW5lCV9TUFJJVEVfUE9T X1lfU0hJRlQJMTYKKyNkZWZpbmUJX1NQUklURV9QT1NfWF9NQVNLCSgweDFmZmYgPDwgX1NQUklU RV9QT1NfWF9TSElGVCkKKyNkZWZpbmUJX1NQUklURV9QT1NfWV9NQVNLCSgweGZmZiA8PCBfU1BS SVRFX1BPU19ZX1NISUZUKQorCisjZGVmaW5lCV9TUFJJVEVfU0laRV9XSURUSF9TSElGVAkwCisj ZGVmaW5lCV9TUFJJVEVfU0laRV9IRUlHSFRfU0hJRlQJMTYKKyNkZWZpbmUJX1NQUklURV9TSVpF X1dJRFRIX01BU0sJKDB4MWZmZiA8PCBfU1BSSVRFX1NJWkVfV0lEVEhfU0hJRlQpCisjZGVmaW5l CV9TUFJJVEVfU0laRV9IRUlHSFRfTUFTSwkoMHhmZmYgPDwgX1NQUklURV9TSVpFX0hFSUdIVF9T SElGVCkKKworI2RlZmluZQlfU1BSSVRFX09GRlNFVF9TVEFSVF9YX1NISUZUCTAKKyNkZWZpbmUJ X1NQUklURV9PRkZTRVRfU1RBUlRfWV9TSElGVAkxNgorI2RlZmluZQlfU1BSSVRFX09GRlNFVF9T VEFSVF9YX01BU0sJKDB4MWZmZiA8PCBfU1BSSVRFX09GRlNFVF9TVEFSVF9YX1NISUZUKQorI2Rl ZmluZQlfU1BSSVRFX09GRlNFVF9TVEFSVF9ZX01BU0sJKDB4ZmZmIDw8IF9TUFJJVEVfT0ZGU0VU X1NUQVJUX1lfU0hJRlQpCisKKyNkZWZpbmUgR1ZUX1NQUkNUTChwaXBlKQlfUElQRShwaXBlLCBf U1BSQV9DVEwsIF9QTEFORV9DVExfMl9CKQorI2RlZmluZSBHVlRfU1BSU1RSSURFKHBpcGUpCV9Q SVBFKHBpcGUsIF9TUFJBX1NUUklERSwgX1BMQU5FX1NUUklERV8yX0IpCisjZGVmaW5lIEdWVF9T UFJQT1MocGlwZSkJX1BJUEUocGlwZSwgX1BMQU5FX1BPU18yX0EsIF9QTEFORV9QT1NfMl9CKQor I2RlZmluZSBHVlRfU1BSU0laRShwaXBlKQlfUElQRShwaXBlLCBfUExBTkVfU0laRV8yX0EsIF9Q TEFORV9TSVpFXzJfQikKKyNkZWZpbmUgR1ZUX1NQUk9GRlNFVChwaXBlKQlfUElQRShwaXBlLCBf UExBTkVfT0ZGU0VUXzJfQSwgX1BMQU5FX09GRlNFVF8yX0IpCisKKyNkZWZpbmUgR1ZUX0RTUENO VFIocGlwZSkgX1BJUEUocGlwZSwgX0RTUEFDTlRSLCAweDcxMTgwKQorI2RlZmluZSBHVlRfRFNQ Q05UUlBJUEUoZHNwY250cikgX0dWVF9HRVRfUElQRShkc3BjbnRyLCBfRFNQQUNOVFIsIDB4NzEx ODApCisKKyNkZWZpbmUgR1ZUX0RTUExJTk9GRihwaXBlKSBfUElQRShwaXBlLCBfRFNQQUFERFIs IDB4NzExODQpCisjZGVmaW5lIEdWVF9EU1BTVFJJREUocGlwZSkgX1BJUEUocGlwZSwgX0RTUEFT VFJJREUsIDB4NzExODgpCisjZGVmaW5lIEdWVF9EU1BUSUxFT0ZGKHBpcGUpIF9QSVBFKHBpcGUs IF9EU1BBVElMRU9GRiwgMHg3MTFBNCkKKworI2RlZmluZSBHVlRfRFNQU1VSRihwaXBlKSBfUElQ RShwaXBlLCBfRFNQQVNVUkYsIDB4NzExOUMpCisjZGVmaW5lIEdWVF9EU1BTVVJGUElQRShkc3Bz dXJmKSBfR1ZUX0dFVF9QSVBFKGRzcHN1cmYsIF9EU1BBU1VSRiwgMHg3MTE5QykKKworI2RlZmlu ZSBHVlRfRFNQU1VSRkxJVkUocGlwZSkgX1BJUEUocGlwZSwgX0RTUEFTVVJGTElWRSwgMHg3MTFB QykKKyNkZWZpbmUgR1ZUX0RTUFNVUkZMSVZFUElQRShkc3BzdXJmKSBfR1ZUX0dFVF9QSVBFKGRz cHN1cmYsIF9EU1BBU1VSRkxJVkUsIDB4NzExQUMpCisKKyNkZWZpbmUgR1ZUX0RTUFBPUyhwaXBl KSBfUElQRShwaXBlLCBfRFNQQVBPUywgMHg3MTE4QykKKyNkZWZpbmUgR1ZUX0RTUFNJWkUocGlw ZSkgX1BJUEUocGlwZSwgX0RTUEFTSVpFLCAweDcxMTkwKQorCisjZGVmaW5lIEdWVF9DVVJTVVJG KHBpcGUpIF9QSVBFKHBpcGUsIF9DVVJBQkFTRSwgX0NVUkJCQVNFX0lWQikKKyNkZWZpbmUgR1ZU X0NVUkNOVFIocGlwZSkgX1BJUEUocGlwZSwgX0NVUkFDTlRSLCBfQ1VSQkNOVFJfSVZCKQorI2Rl ZmluZSBHVlRfQ1VSUE9TKHBpcGUpCV9QSVBFKHBpcGUsIF9DVVJBUE9TLCBfQ1VSQlBPU19JVkIp CisjZGVmaW5lIEdWVF9DVVJTVVJGTElWRShwaXBlKSBfUElQRShwaXBlLCAweDcwMEFDLCAweDcx MEFDKQorCisjZGVmaW5lIEdWVF9DVVJTVVJGUElQRShjdXJzdXJmKSBfR1ZUX0dFVF9QSVBFKGN1 cnN1cmYsIF9DVVJBQkFTRSwgX0NVUkJCQVNFX0lWQikKKyNkZWZpbmUgR1ZUX0NVUkNOVFJQSVBF KGN1cmNudHIpIF9HVlRfR0VUX1BJUEUoY3VyY250ciwgX0NVUkFDTlRSLF9DVVJCQ05UUl9JVkIp CisKKyNkZWZpbmUgR1ZUX1NQUlNVUkYocGlwZSkgX1BJUEUocGlwZSwgX1NQUkFfU1VSRiwgX1NQ UkJfU1VSRikKKyNkZWZpbmUgR1ZUX1NQUlNVUkZMSVZFKHBpcGUpIF9QSVBFKHBpcGUsIF9TUFJB X1NVUkZMSVZFLCBfU1BSQl9TVVJGTElWRSkKKyNkZWZpbmUgR1ZUX1NQUlNVUkZQSVBFKHNwcnN1 cmYpIF9HVlRfR0VUX1BJUEUoc3Byc3VyZiwgX1NQUkFfU1VSRiwgX1NQUkJfU1VSRikKKworI2Rl ZmluZSBHVlRfU1BSQ05UUihwaXBlKSBfUElQRShwaXBlLCBfU1BSQV9DVEwsIF9TUFJCX0NUTCkK KyNkZWZpbmUgR1ZUX1NQUkNOVFJQSVBFKHNwcmNudHIpIF9HVlRfR0VUX1BJUEUoc3ByY250ciwg X1NQUkFfQ1RMLCBfU1BSQl9DVEwpCisKKy8qCisgKiBXZSB1c2UgX0lNTSBpbnN0ZWFkIG9mIF9J TkRFWCwgdG8gYXZvaWQgc3dpdGNoaW5nIGhhcmR3YXJlCisgKiBzdGF0dXMgcGFnZQorICovCisj ZGVmaW5lIE1JX1NUT1JFX0RBVEFfSU1NCQkoKDB4MjA8PDIzKSB8IDIpCisjZGVmaW5lIE1JX1NU T1JFX0RBVEFfSU1NX1FXT1JECQkoKDB4MjA8PDIzKSB8IDMpCisjZGVmaW5lICAgTUlfU0RJX1VT RV9HVFQJCSgxPDwyMikKKyNkZWZpbmUgTUlfTFJJX0NNRAkJCSgweDIyPDwyMyB8IDEpCisjZGVm aW5lICAgTUlfTFJJX0JZVEUwX0RJU0FCTEUJCSgxPDw4KQorI2RlZmluZSAgIE1JX0xSSV9CWVRF MV9ESVNBQkxFCQkoMTw8OSkKKyNkZWZpbmUgICBNSV9MUklfQllURTJfRElTQUJMRQkJKDE8PDEw KQorI2RlZmluZSAgIE1JX0xSSV9CWVRFM19ESVNBQkxFCQkoMTw8MTEpCisKKyNkZWZpbmUgICBN SV9XQUlUX0ZPUl9QTEFORV9DX0ZMSVBfUEVORElORyAgICAgICgxPDwxNSkKKyNkZWZpbmUgICBN SV9XQUlUX0ZPUl9QTEFORV9CX0ZMSVBfUEVORElORyAgICAgICgxPDw5KQorI2RlZmluZSAgIE1J X1dBSVRfRk9SX1BMQU5FX0FfRkxJUF9QRU5ESU5HICAgICAgKDE8PDEpCisKKyNkZWZpbmUgICBN SV9XQUlUX0ZPUl9TUFJJVEVfQ19GTElQX1BFTkRJTkcgICAgICAoMTw8MjApCisjZGVmaW5lICAg TUlfV0FJVF9GT1JfU1BSSVRFX0JfRkxJUF9QRU5ESU5HICAgICAgKDE8PDEwKQorI2RlZmluZSAg IE1JX1dBSVRfRk9SX1NQUklURV9BX0ZMSVBfUEVORElORyAgICAgICgxPDwyKQorCisjZGVmaW5l CVBJUEVfQ09OVFJPTF9EQ19GTFVTSF9FTkFCTEUJCQkoMTw8NSkKKyNkZWZpbmUgRFVNTVlfM0QJ CSgweDZkODAwMDA1KQorI2RlZmluZSBQUklNX1RSSUxJU1QJCSgweDQpCisKKy8qCisgKiBEaXNw bGF5IGVuZ2luZSByZWdzCisgKi8KKworI2RlZmluZSBfUkVHX1NXRgkJMHg0ZjAwMAorI2RlZmlu ZSBfUkVHX1BJUEVfTUlTQ19DCTB4NzIwMzAKKworLyogQ1BVIHBhbmVsIGZpdHRlciAqLworI2Rl ZmluZSBfUkVHX1BGX0NUTF8yCQkJMHg2OTA4MAorI2RlZmluZSBfUkVHX1BGX1dJTl9TWl8yCQkw eDY5MDc0CisjZGVmaW5lIF9SRUdfUEZfV0lOX1BPU18yCQkweDY5MDcwCisKKyNkZWZpbmUgR1ZU X0hUT1RBTChwaXBlKQlfUElQRShwaXBlLCBfSFRPVEFMX0EsIF9IVE9UQUxfQikKKyNkZWZpbmUg R1ZUX0hCTEFOSyhwaXBlKQlfUElQRShwaXBlLCBfSEJMQU5LX0EsIF9IQkxBTktfQikKKyNkZWZp bmUgR1ZUX0hTWU5DKHBpcGUpCQlfUElQRShwaXBlLCBfSFNZTkNfQSwgX0hTWU5DX0IpCisjZGVm aW5lIEdWVF9WVE9UQUwocGlwZSkJX1BJUEUocGlwZSwgX1ZUT1RBTF9BLCBfVlRPVEFMX0IpCisj ZGVmaW5lIEdWVF9WQkxBTksocGlwZSkJX1BJUEUocGlwZSwgX1ZCTEFOS19BLCBfVkJMQU5LX0Ip CisjZGVmaW5lIEdWVF9WU1lOQyhwaXBlKQkJX1BJUEUocGlwZSwgX1ZTWU5DX0EsIF9WU1lOQ19C KQorI2RlZmluZSBHVlRfQkNMUlBBVChwaXBlKQlfUElQRShwaXBlLCBfQkNMUlBBVF9BLCBfQkNM UlBBVF9CKQorI2RlZmluZSBHVlRfVlNZTkNTSElGVChwaXBlKQlfUElQRShwaXBlLCBfVlNZTkNT SElGVF9BLCBfVlNZTkNTSElGVF9CKQorI2RlZmluZSBHVlRfUElQRVNSQyhwaXBlKQlfUElQRShw aXBlLCBfUElQRUFTUkMsIF9QSVBFQlNSQykKKworI2RlZmluZSBHVlRfUENIX0RQTEwocGlwZSkJ X1BJUEUocGlwZSwgX1JFR19QQ0hfRFBMTF9BLCBfUkVHX1BDSF9EUExMX0IpCisKKyNkZWZpbmUg R1ZUX1BDSF9GUDAocGlwZSkJX1BJUEUocGlwZSwgX1JFR19QQ0hfRlBBMCwgX1JFR19QQ0hfRlBC MCkKKyNkZWZpbmUgR1ZUX1BDSF9GUDEocGlwZSkJX1BJUEUocGlwZSwgX1JFR19QQ0hfRlBBMSwg X1JFR19QQ0hfRlBCMSkKKworLyogUElQRSBDIHRpbWluZyByZWdzIGFyZSBzYW1lIHN0YXJ0IGZy b20gMHg2MTAwMCAqLworI2RlZmluZSBfUkVHX1BJUEVDX0RBVEFfTTEJCTB4NjIwMzAKKyNkZWZp bmUgX1JFR19QSVBFQ19EQVRBX04xCQkweDYyMDM0CisjZGVmaW5lIF9SRUdfUElQRUNfTElOS19N MQkJMHg2MjA0MAorI2RlZmluZSBfUkVHX1BJUEVDX0xJTktfTjEJCTB4NjIwNDQKKworI2RlZmlu ZSBfUkVHX1BJUEVDX0RBVEFfTTIJCTB4NjIwMzgKKyNkZWZpbmUgX1JFR19QSVBFQ19EQVRBX04y CQkweDYyMDNjCisjZGVmaW5lIF9SRUdfUElQRUNfTElOS19NMgkJMHg2MjA0OAorI2RlZmluZSBf UkVHX1BJUEVDX0xJTktfTjIJCTB4NjIwNGMKKworI2RlZmluZSBHVlRfUElQRV9EQVRBX00xKHBp cGUpIF9QSVBFKHBpcGUsIF9SRUdfUElQRUFfREFUQV9NMSwgX1JFR19QSVBFQl9EQVRBX00xKQor I2RlZmluZSBHVlRfUElQRV9EQVRBX04xKHBpcGUpIF9QSVBFKHBpcGUsIF9SRUdfUElQRUFfREFU QV9OMSwgX1JFR19QSVBFQl9EQVRBX04xKQorI2RlZmluZSBHVlRfUElQRV9EQVRBX00yKHBpcGUp IF9QSVBFKHBpcGUsIF9SRUdfUElQRUFfREFUQV9NMiwgX1JFR19QSVBFQl9EQVRBX00yKQorI2Rl ZmluZSBHVlRfUElQRV9EQVRBX04yKHBpcGUpIF9QSVBFKHBpcGUsIF9SRUdfUElQRUFfREFUQV9O MiwgX1JFR19QSVBFQl9EQVRBX04yKQorI2RlZmluZSBHVlRfUElQRV9MSU5LX00xKHBpcGUpIF9Q SVBFKHBpcGUsIF9SRUdfUElQRUFfTElOS19NMSwgX1JFR19QSVBFQl9MSU5LX00xKQorI2RlZmlu ZSBHVlRfUElQRV9MSU5LX04xKHBpcGUpIF9QSVBFKHBpcGUsIF9SRUdfUElQRUFfTElOS19OMSwg X1JFR19QSVBFQl9MSU5LX04xKQorI2RlZmluZSBHVlRfUElQRV9MSU5LX00yKHBpcGUpIF9QSVBF KHBpcGUsIF9SRUdfUElQRUFfTElOS19NMiwgX1JFR19QSVBFQl9MSU5LX00yKQorI2RlZmluZSBH VlRfUElQRV9MSU5LX04yKHBpcGUpIF9QSVBFKHBpcGUsIF9SRUdfUElQRUFfTElOS19OMiwgX1JF R19QSVBFQl9MSU5LX04yKQorCisvKiBGRElfUlgsIEZESV9YIGlzIGhhcmQtd2lyZWQgdG8gVHJh bnNjb2Rlcl9YICovCisKKyNkZWZpbmUgX1JFR19GRElfUlhDX0NUTAkJCTB4ZjIwMGMKKyNkZWZp bmUgX1JFR0JJVF9GRElfUlhfUE9SVF9XSURUSF9NQVNLCQkoMHg3IDw8IDE5KQorI2RlZmluZSBf UkVHQklUX0ZESV9SWF9GRElfQVVUT19UUkFJTl9FTkFCTEUJKDB4MSA8PCAxMCkKKworI2RlZmlu ZSBfUkVHX0ZESV9SWENfSUlSCQkJMHhmMjAxNAorI2RlZmluZSBfUkVHX0ZESV9SWENfSU1SCQkJ MHhmMjAxOAorCisjZGVmaW5lIEdWVF9GRElfUlhfSUlSKHBpcGUpIF9QSVBFKHBpcGUsIF9GRElf UlhBX0lJUiwgX0ZESV9SWEJfSUlSKQorI2RlZmluZSBHVlRfRkRJX1JYX0lNUihwaXBlKSBfUElQ RShwaXBlLCBfRkRJX1JYQV9JTVIsIF9GRElfUlhCX0lNUikKKworI2RlZmluZSBfUkVHQklUX0ZE SV9SWF9JTlRFUl9MQU5FX0FMSUdOCQkoMTw8MTApCisjZGVmaW5lIF9SRUdCSVRfRkRJX1JYX1NZ TUJPTF9MT0NLCQkoMSA8PCA5KSAvKiB0cmFpbiAyKi8KKyNkZWZpbmUgX1JFR0JJVF9GRElfUlhf QklUX0xPQ0sJCQkoMSA8PCA4KSAvKiB0cmFpbiAxKi8KKyNkZWZpbmUgX1JFR0JJVF9GRElfUlhf VFJBSU5fUEFUVEVSTl8yX0ZBSUwJKDE8PDcpCisjZGVmaW5lIF9SRUdCSVRfRkRJX1JYX0ZTX0NP REVfRVJSCQkoMTw8NikKKyNkZWZpbmUgX1JFR0JJVF9GRElfUlhfRkVfQ09ERV9FUlIJCSgxPDw1 KQorI2RlZmluZSBfUkVHQklUX0ZESV9SWF9TWU1CT0xfRVJSX1JBVEVfQUJPVkUJKDE8PDQpCisj ZGVmaW5lIF9SRUdCSVRfRkRJX1JYX0hEQ1BfTElOS19GQUlMCQkoMTw8MykKKyNkZWZpbmUgX1JF R0JJVF9GRElfUlhfUElYRUxfRklGT19PVkVSRkxPVwkoMTw8MikKKyNkZWZpbmUgX1JFR0JJVF9G RElfUlhfQ1JPU1NfQ0xPQ0tfT1ZFUkZMT1cJKDE8PDEpCisjZGVmaW5lIF9SRUdCSVRfRkRJX1JY X1NZTUJPTF9RVUVVRV9PVkVSRkxPVwkoMTw8MCkKKworCisjZGVmaW5lIEdWVF9GRElfUlhfQ1RM X0JQQ19NQVNLCQkoMHg3IDw8IDE2KQorI2RlZmluZSBHVlRfRkRJX1JYX0NUTChwaXBlKSBfUElQ RShwaXBlLCBfRkRJX1JYQV9DVEwsIF9GRElfUlhCX0NUTCkKKworI2RlZmluZSBHVlRfRkRJX1JY X1RVU0laRTEocGlwZSkgX1BJUEUocGlwZSwgX1JFR19GRElfUlhBX1RVU0laRTEsX1JFR19GRElf UlhCX1RVU0laRTEpCisKKy8qIENQVTogRkRJX1RYICovCisjZGVmaW5lIF9SRUdfRkRJX1RYQ19D VEwJCTB4NjIxMDAKKworI2RlZmluZSBfUkVHQklUX0ZESV9UWF9FTkFCTEUJCQkJKDEgPDwgMzEp CisjZGVmaW5lIF9SRUdCSVRfRkRJX1RYX1BMTF9FTkFCTEUJCQkoMSA8PCAxNCkKKyNkZWZpbmUg X1JFR0JJVF9GRElfVFhfRU5IQU5DRV9GUkFNRV9FTkFCTEUJCSgxPDwxOCkKKworI2RlZmluZSBH VlRfRkRJX1RYX0NUTChwaXBlKSBfUElQRShwaXBlLCBfRkRJX1RYQV9DVEwsIF9GRElfVFhCX0NU TCkKKworLyogQ1JUICovCisjZGVmaW5lIF9SRUdCSVRfQURQQV9EQUNfRU5BQkxFCQkJKDEgPDwg MzEpCisjZGVmaW5lIFBPUlRfVFJBTlNfU0VMX1NISUZUCQkJMjkKKyNkZWZpbmUgR1ZUX1BPUlRf VFJBTlNfU0VMX0NQVChwaXBlKQkJKChwaXBlKSA8PCBQT1JUX1RSQU5TX1NFTF9TSElGVCkKKyNk ZWZpbmUgX1JFR0JJVF9BRFBBX1ZTWU5DX0FDVElWRV9ISUdICQkoMSA8PCA0KQorI2RlZmluZSBf UkVHQklUX0FEUEFfSFNZTkNfQUNUSVZFX0hJR0gJCSgxIDw8IDMpCisKKy8qSW50ZXJtZWRpYXRl IFBpeGVsIFN0b3JhZ2UqLwordW5pb24gX1BDSF9QUF9DVEwKK3sKKwl1aW50MzJfdCBkYXRhOwor CXN0cnVjdAorCXsKKwkJdWludDMyX3QgcG93ZXJfc3RhdGVfdGFyZ2V0CTogMTsgLy8gYml0IDAK KwkJdWludDMyX3QgcG93ZXJfZG93bl9vbl9yZXNldAk6IDE7IC8vIGJpdCAxCisJCXVpbnQzMl90 IGJhY2tsaWdodF9lbmFibGUJOiAxOyAvLyBiaXQgMgorCQl1aW50MzJfdCBlZHBfdmRkX292ZXJy aWRlX2Zvcl9hdXggOiAxOyAvLyBiaXQgMworCQl1aW50MzJfdCByZXNlcnZlIDogMTI7CQkJLy8g Yml0cyAxNTo0CisJCXVpbnQzMl90IHdyaXRlX3Byb3RlY3Rfa2V5IDoxNjsgLy8gYml0cyAzMTox NiAweEFCQ0QgdG8gZGlzYWJsZSBwcm90ZWN0ZWQpCisJfTsKK307CisKK3VuaW9uIF9QQ0hfUFBf U1RBVVRTCit7CisJdWludDMyX3QgZGF0YTsKKwlzdHJ1Y3QKKwl7CisJCXVpbnQzMl90IHJlc2Vy djEJOiA0OwkvLyBiaXQgMzowCisJCXVpbnQzMl90IHJlc2VydjIJOiAyMzsJLy8gYml0IDI2OjQK KwkJdWludDMyX3QgcG93ZXJfY3ljbGVfZGVsYXlfYWN0aXZlCToxOwkvLyBiaXQgMjcKKwkJdWlu dDMyX3QgcG93ZXJfc2VxdWVuY2VfcHJvZ3Jlc3MJOjI7CS8vIGJpdHMgMjk6MjgKKwkJdWludDMy X3QgcmVxdWlyZV9hc3NldF9zdGF0dXMJCToxOwkvLyBiaXQgMzAKKwkJdWludDMyX3QgcGFuZWxf cG93ZXJlX29uX3N0YXR1ZQkJOjE7CS8vIGJpdCAzMSAoMCAtIERpc2FibGUsIDEgLSBFbmFibGUp CisJfTsKK307CisKKy8qIFBlci10cmFuc2NvZGVyIERJUCBjb250cm9scyAqLworCisjZGVmaW5l IEdWVF9UUkFOU0NPTkYocGxhbmUpCV9QSVBFKHBsYW5lLCBfUENIX1RSQU5TQUNPTkYsIF9QQ0hf VFJBTlNCQ09ORikKKwordW5pb24gX1RSQU5TX0NPTkZJRworeworCXVpbnQzMl90IGRhdGE7CisJ c3RydWN0CisJeworCQl1aW50MzJfdCByZXNlcnZlMSA6IDEwOwkJCS8vIGJpdCA5OjAKKwkJdWlu dDMyX3QgeHZ5Y2NfY29sb3JfcmFuZ2VfbGltaXQgOiAxOwkvLyBiaXQgMTAKKwkJdWludDMyX3Qg cmVzZXJ2ZTIgOiAxMDsJCQkvLyBiaXQgMjA6MTEKKwkJdWludDMyX3QgaW50ZXJsYWNlZF9tb2Rl OiAzOwkJLy8gYml0IDIzOjIxCisJCXVpbnQzMl90IHJlc2VydmUzIDogNjsJCQkvLyBiaXQgMjk6 MjQKKwkJdWludDMyX3QgdHJhbnNjb2Rlcl9zdGF0ZSA6IDE7CQkvLyBiaXQgMzAKKwkJdWludDMy X3QgdHJhbnNjb2Rlcl9lbmFibGUgOiAxOwkJLy8gYml0IDMxCisJfTsKK307CisKKyNkZWZpbmUg X1JFR19UUkFOU0NfVklERU9fRElQX0NUTAkweEUyMjAwCisjZGVmaW5lIF9SRUdfVFJBTlNDX1ZJ REVPX0RJUF9EQVRBCTB4RTIyMDgKKyNkZWZpbmUgX1JFR19UUkFOU0NfVklERU9fRElQX0dDUAkw eEUyMjEwCisKKy8qIGVEUCAqLworI2RlZmluZSBfUkVHX1BJUEVfRURQX0NPTkYJMHg3ZjAwOAor CisvKiBiaXQgZmllbGRzIG9mIHBpcGVzdGF0ICovCisjZGVmaW5lIEdWVF9QSVBFRFNMKHBpcGUp CV9QSVBFKHBpcGUsIF9QSVBFQURTTCwgMHg3MTAwMCkKKyNkZWZpbmUgR1ZUX1BJUEVDT05GKHBp cGUpCV9QSVBFKHBpcGUsIF9QSVBFQUNPTkYsIDB4NzEwMDgpCisjZGVmaW5lIEdWVF9QSVBFU1RB VChwaXBlKQlfUElQRShwaXBlLCBfUElQRUFTVEFULCAweDcxMDI0KQorI2RlZmluZSBHVlRfUElQ RV9GUk1DT1VOVChwaXBlKQlfUElQRShwaXBlLCBfUElQRUFfRlJNQ09VTlRfRzRYLCAweDcxMDQw KQorI2RlZmluZSBHVlRfUElQRV9GTElQQ09VTlQocGlwZSkgX1BJUEUocGlwZSwgX1BJUEVBX0ZM SVBDT1VOVF9HNFgsIDB4NzEwNDQpCisKKyNkZWZpbmUgR1ZUX1BJUEVDT05GUElQRShwaXBlY29u ZikgX0dWVF9HRVRfUElQRShwaXBlY29uZiwgX1BJUEVBQ09ORiwgMHg3MTAwOCkKKyNkZWZpbmUg R1ZUX0ZSTUNPVU5UUElQRShmcm1jb3VudCkgX0dWVF9HRVRfUElQRShmcm1jb3VudCwgX1BJUEVB X0ZSTUNPVU5UX0c0WCwgMHg3MTA0MCkKKworI2RlZmluZSBHVlRfUEFMRVRURShwaXBlKSBfUElQ RShwaXBlLCBfUEFMRVRURV9BX09GRlNFVCwgX1BBTEVUVEVfQl9PRkZTRVQpCisKKy8qIGxlZ2Fj eSBwYWxldHRlICovCisjZGVmaW5lIF9SRUdfTEdDX1BBTEVUVEVfQwkJMHg0YjAwMAorCisvKiBE aXNwbGF5IFBvcnQgKi8KKyNkZWZpbmUgX1JFR19EUF9UUF9DVExfQwkJMHg2NDI0MAorI2RlZmlu ZSBfUkVHX0RQX1RQX0NUTF9ECQkweDY0MzQwCisjZGVmaW5lIF9SRUdfRFBfVFBfQ1RMX0UJCTB4 NjQ0NDAKKyNkZWZpbmUgIF9SRUdCSVRfRFBfVFBfRkRJX0FVVE9fVFJBSU5fRU5BQkxFCSgxIDw8 IDE1KQorI2RlZmluZSAgX0RESV9CVUZDVExfREVURUNUX01BU0sJMHgxCisjZGVmaW5lICBfUkVH QklUX0RESV9CVUZfRU5BQkxFCQkoMSA8PCAzMSkKKyNkZWZpbmUgIF9SRUdCSVRfRERJX0JVRl9J U19JRExFCSgxPDw3KQorI2RlZmluZSBfUkVHX0RESV9CVUZfQ1RMX0MJCTB4NjQyMDAKKyNkZWZp bmUgX1JFR19ERElfQlVGX0NUTF9ECQkweDY0MzAwCisjZGVmaW5lIF9SRUdfRERJX0JVRl9DVExf RQkJMHg2NDQwMAorI2RlZmluZSBfUkVHX0RQX1RQX1NUQVRVU19DCQkJMHg2NDI0NAorI2RlZmlu ZSBfUkVHX0RQX1RQX1NUQVRVU19ECQkJMHg2NDM0NAorI2RlZmluZSBfUkVHX0RQX1RQX1NUQVRV U19FCQkJMHg2NDQ0NAorI2RlZmluZSBHVlRfRFBfVFBfQ1RMKHBvcnQpCQlfUE9SVChwb3J0LCBf RFBfVFBfQ1RMX0EsIFwKKwkJX0RQX1RQX0NUTF9CKQorCisjZGVmaW5lIERQX1RQX1BPUlQocmVn KQkJX0dWVF9HRVRfUE9SVChyZWcsIF9EUF9UUF9DVExfQSwgXAorCQlfRFBfVFBfQ1RMX0IpCisK KyNkZWZpbmUgRFJNX01PREVfRFBNU19PTgkJMAorCisjZGVmaW5lIF9QQ0hfRFBBX0FVWF9DSF9D VEwJMHg2NDAxMAorI2RlZmluZSBfUENIX0RQQl9BVVhfQ0hfQ1RMCTB4ZTQxMTAKKyNkZWZpbmUg X1BDSF9EUENfQVVYX0NIX0NUTAkweGU0MjEwCisjZGVmaW5lIF9QQ0hfRFBEX0FVWF9DSF9DVEwJ MHhlNDMxMAorCisvKiBEUENEICovCisjZGVmaW5lIERQX1NFVF9QT1dFUgkJMHg2MDAKKyNkZWZp bmUgRFBfU0VUX1BPV0VSX0QwCQkweDEKKyNkZWZpbmUgQVVYX05BVElWRV9XUklURQkweDgKKyNk ZWZpbmUgQVVYX05BVElWRV9SRUFECQkweDkKKworI2RlZmluZSBBVVhfTkFUSVZFX1JFUExZX01B U0sJKDB4MyA8PCA0KQorI2RlZmluZSBBVVhfTkFUSVZFX1JFUExZX0FDSwkoMHgwIDw8IDQpCisj ZGVmaW5lIEFVWF9OQVRJVkVfUkVQTFlfTkFLCSgweDEgPDwgNCkKKyNkZWZpbmUgQVVYX05BVElW RV9SRVBMWV9ERUZFUgkoMHgyIDw8IDQpCisKKyNkZWZpbmUgQVVYX0JVUlNUX1NJWkUJCTE2CisK Ky8qIERQQ0QgMHgxMDYgKi8KKworI2RlZmluZSBEUF9UUkFJTklOR19QQVRURVJOX1NFVAkJCTB4 MTAyCisjZGVmaW5lIERQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRQkJMAorI2RlZmluZSBEUF9U UkFJTklOR19QQVRURVJOXzEJCQkxCisjZGVmaW5lIERQX1RSQUlOSU5HX1BBVFRFUk5fMgkJCTIK KyNkZWZpbmUgRFBfTElOS19TQ1JBTUJMSU5HX0RJU0FCTEUJCSgxIDw8IDUpCisKKyNkZWZpbmUg RFBfTElOS19DT05GSUdVUkFUSU9OX1NJWkUJCTkKKyNkZWZpbmUgICAgRFBfTElOS19CV19TRVQJ CQkweDEwMAorIyBkZWZpbmUgRFBfU0VUX0FOU0lfOEIxMEIJCQkoMSA8PCAwKQorCisjZGVmaW5l IERQX0xJTktfU1RBVFVTX1NJWkUJCQk2CisjZGVmaW5lIERQX1RSQUlOX01BWF9TV0lOR19SRUFD SEVECQkoMSA8PCAyKQorCisjZGVmaW5lIERQX1RSQUlOSU5HX0xBTkUwX1NFVAkJCTB4MTAzCisK KyNkZWZpbmUgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19NQVNLCQkweDMKKyNkZWZpbmUgRFBfVFJB SU5fVk9MVEFHRV9TV0lOR19TSElGVAkJMAorI2RlZmluZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5H XzQwMAkJKDAgPDwgMCkKKyNkZWZpbmUgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR182MDAJCSgxIDw8 IDApCisjZGVmaW5lIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfODAwCQkoMiA8PCAwKQorI2RlZmlu ZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HXzEyMDAJCSgzIDw8IDApCisKKyNkZWZpbmUgRFBfVFJB SU5fUFJFX0VNUEhBU0lTX01BU0sJCSgzIDw8IDMpCisjZGVmaW5lIERQX1RSQUlOX1BSRV9FTVBI QVNJU18wCQkJKDAgPDwgMykKKyNkZWZpbmUgRFBfVFJBSU5fUFJFX0VNUEhBU0lTXzNfNQkJKDEg PDwgMykKKyNkZWZpbmUgRFBfVFJBSU5fUFJFX0VNUEhBU0lTXzYJCQkoMiA8PCAzKQorI2RlZmlu ZSBEUF9UUkFJTl9QUkVfRU1QSEFTSVNfOV81CQkoMyA8PCAzKQorCisjZGVmaW5lIERQX1RSQUlO X1BSRV9FTVBIQVNJU19TSElGVAkJMworI2RlZmluZSBEUF9UUkFJTl9NQVhfUFJFX0VNUEhBU0lT X1JFQUNIRUQJKDEgPDwgNSkKKworI2RlZmluZSBEUF9MQU5FMF8xX1NUQVRVUwkJCTB4MjAyCisj ZGVmaW5lIERQX0xBTkVfQ1JfRE9ORQkJCQkoMSA8PCAwKQorCisjZGVmaW5lIERQX0xBTkVfQUxJ R05fU1RBVFVTX1VQREFURUQJCTB4MjA0CisjZGVmaW5lIERQX0lOVEVSTEFORV9BTElHTl9ET05F CQkJKDEgPDwgMCkKKyNkZWZpbmUgRFBfTEFORV9DSEFOTkVMX0VRX0RPTkUJCQkoMSA8PCAxKQor I2RlZmluZSBEUF9MQU5FX1NZTUJPTF9MT0NLRUQJCQkoMSA8PCAyKQorCisjZGVmaW5lIERQX0FE SlVTVF9SRVFVRVNUX0xBTkUwXzEJCTB4MjA2CisKKyNkZWZpbmUgRFBfQURKVVNUX1ZPTFRBR0Vf U1dJTkdfTEFORTBfU0hJRlQgMAorI2RlZmluZSBEUF9BREpVU1RfVk9MVEFHRV9TV0lOR19MQU5F MV9TSElGVCA0CisjZGVmaW5lIERQX0FESlVTVF9QUkVfRU1QSEFTSVNfTEFORTBfU0hJRlQgIDIK KyNkZWZpbmUgRFBfQURKVVNUX1BSRV9FTVBIQVNJU19MQU5FMV9TSElGVCAgNgorLyogSXJvbmxh a2UgKi8KKyNkZWZpbmUJX1JFR19DUFVfVkdBQ05UUkwJQ1BVX1ZHQUNOVFJMCisjZGVmaW5lIF9S RUdCSVRfVkdBX0RJU1BMQVlfRElTQUJMRQkoMVVMIDw8IDMxKQorI2RlZmluZSBfUkVHX0RQRkNf Q0JfQkFTRQkJMHg0MzIwMAorI2RlZmluZSBfUkVHX0RQRkNfQ09OVFJPTAkJMHg0MzIwOAorI2Rl ZmluZSBfUkVHX0RQRkNfUkVDT01QX0NUTAkJMHg0MzIwYworI2RlZmluZSBfUkVHX0RQRkNfQ1BV X0ZFTkNFX09GRlNFVAkweDQzMjE4CisjZGVmaW5lIF9SRUdfRFBGQ19DT05UUk9MX1NBCQkweDEw MDEwMAorI2RlZmluZSBfUkVHX0RQRkNfQ1BVX0ZFTkNFX09GRlNFVF9TQQkweDEwMDEwNAorCisj ZGVmaW5lIF9SRUdfQ1NDX0FfQ09FRkZJQ0lFTlRTCQkweDQ5MDEwCisjZGVmaW5lIF9SRUdfQ1ND X0FfTU9ERQkJCTB4NDkwMjgKKyNkZWZpbmUgX1JFR19QUkVDU0NfQV9ISUdIX0NPTE9SX0NIQU5O RUxfT0ZGU0VUCQkweDQ5MDMwCisjZGVmaW5lIF9SRUdfUFJFQ1NDX0FfTUVESVVNX0NPTE9SX0NI QU5ORUxfT0ZGU0VUCTB4NDkwMzQKKyNkZWZpbmUgX1JFR19QUkVDU0NfQV9MT1dfQ09MT1JfQ0hB Tk5FTF9PRkZTRVQJCTB4NDkwMzgKKworI2RlZmluZSBfUkVHX0NTQ19CX0NPRUZGSUNJRU5UUwkJ MHg0OTExMAorI2RlZmluZSBfUkVHX0NTQ19CX01PREUJCQkweDQ5MTI4CisjZGVmaW5lIF9SRUdf UFJFQ1NDX0JfSElHSF9DT0xPUl9DSEFOTkVMX09GRlNFVAkJMHg0OTEzMAorI2RlZmluZSBfUkVH X1BSRUNTQ19CX01FRElVTV9DT0xPUl9DSEFOTkVMX09GRlNFVAkweDQ5MTM0CisjZGVmaW5lIF9S RUdfUFJFQ1NDX0JfTE9XX0NPTE9SX0NIQU5ORUxfT0ZGU0VUCQkweDQ5MTM4CisKKyNkZWZpbmUg X1JFR19DU0NfQ19DT0VGRklDSUVOVFMJCTB4NDkyMTAKKyNkZWZpbmUgX1JFR19DU0NfQ19NT0RF CQkJMHg0OTIyOAorI2RlZmluZSBfUkVHX1BSRUNTQ19DX0hJR0hfQ09MT1JfQ0hBTk5FTF9PRkZT RVQJCTB4NDkyMzAKKyNkZWZpbmUgX1JFR19QUkVDU0NfQ19NRURJVU1fQ09MT1JfQ0hBTk5FTF9P RkZTRVQJMHg0OTIzNAorI2RlZmluZSBfUkVHX1BSRUNTQ19DX0xPV19DT0xPUl9DSEFOTkVMX09G RlNFVAkJMHg0OTIzOAorCisjZGVmaW5lIF9SRUdfRFBfQlVGVFJBTlMJCTB4ZTRmMDAKKworI2Rl ZmluZSBfUENIX0dNQlVTMAkJCTB4YzUxMDAKKyNkZWZpbmUgX1BDSF9HTUJVUzEJCQkweGM1MTA0 CiAjZGVmaW5lIF9QQ0hfR01CVVMyCQkJMHhjNTEwOAogCiAjZGVmaW5lIF9HRU42X0dEUlNUCQkJ MHg5NDFjCkBAIC0xMDUsNCArNTA2LDcgQEAKICNkZWZpbmUgX0dFTjhfREVfUElQRV9JSVIocGlw ZSkgKDB4NDQ0MDggKyAoMHgxMCAqIChwaXBlKSkpCiAjZGVmaW5lIF9HRU44X0RFX1BJUEVfSUVS KHBpcGUpICgweDQ0NDBjICsgKDB4MTAgKiAocGlwZSkpKQogCisjZGVmaW5lIF9HVlRfVFJBTlNf RERJX0ZVTkNfQ1RMKHRyYW4pICAgX1RSQU5TKHRyYW4sIF9UUkFOU19ERElfRlVOQ19DVExfQSwg XAorCQlfVFJBTlNfRERJX0ZVTkNfQ1RMX0IpCisKICNlbmRpZgotLSAKMS45LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==