From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N190D-0004aL-Oq for qemu-devel@nongnu.org; Thu, 22 Oct 2009 21:31:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N1909-0004V0-7D for qemu-devel@nongnu.org; Thu, 22 Oct 2009 21:31:37 -0400 Received: from [199.232.76.173] (port=44109 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N1908-0004Ud-UT for qemu-devel@nongnu.org; Thu, 22 Oct 2009 21:31:33 -0400 Received: from mail-px0-f179.google.com ([209.85.216.179]:49314) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1N1907-0004Gt-RL for qemu-devel@nongnu.org; Thu, 22 Oct 2009 21:31:32 -0400 Received: by pxi9 with SMTP id 9so354611pxi.4 for ; Thu, 22 Oct 2009 18:31:29 -0700 (PDT) MIME-Version: 1.0 Date: Fri, 23 Oct 2009 09:31:29 +0800 Message-ID: From: TeLeMan Content-Type: multipart/mixed; boundary=000e0cd15618d2645a0476902b17 Subject: [Qemu-devel] Re: [PATCH] tcg, tci: Add TCG and interpreter for bytecode (virtual machine) List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org --000e0cd15618d2645a0476902b17 Content-Type: text/plain; charset=UTF-8 Tested i386-softmmu only. Now tci can run windows xp sp2 and its speed is about 6 times slower than jit. -- SUN OF A BEACH --000e0cd15618d2645a0476902b17 Content-Type: text/plain; charset=US-ASCII; name="0001-tci-fix-op_sar_iXX-and-op_ext16s_iXX.patch" Content-Disposition: attachment; filename="0001-tci-fix-op_sar_iXX-and-op_ext16s_iXX.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g149fnuy0 U3ViamVjdDogW1BBVENIIDEvNV0gdGNpOiBmaXggb3Bfc2FyX2lYWCBhbmQgb3BfZXh0MTZzX2lY WAoKLS0tCiB0Y2cvdGNpLmMgfCAgICA2ICsrKy0tLQogMSBmaWxlcyBjaGFuZ2VkLCAzIGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGNnL3RjaS5jIGIvdGNnL3Rj aS5jCmluZGV4IGU0NjdiM2EuLjgxYzQxNWMgMTAwNjQ0Ci0tLSBhL3RjZy90Y2kuYworKysgYi90 Y2cvdGNpLmMKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgdWludDE2X3QgdGNpX3JlYWRfcjE2 KHVpbnQ4X3QgKip0Yl9wdHIpCiB9CiAKIC8qIFJlYWQgaW5kZXhlZCByZWdpc3RlciAoMTYgYml0 IHNpZ25lZCkgZnJvbSBieXRlY29kZS4gKi8KLXN0YXRpYyB1aW50MTZfdCB0Y2lfcmVhZF9yMTZz KHVpbnQ4X3QgKip0Yl9wdHIpCitzdGF0aWMgaW50MTZfdCB0Y2lfcmVhZF9yMTZzKHVpbnQ4X3Qg Kip0Yl9wdHIpCiB7CiAgICAgdWludDE2X3QgdmFsdWUgPSB0Y2lfcmVhZF9yZWcxNnMoKip0Yl9w dHIpOwogICAgICp0Yl9wdHIgKz0gMTsKQEAgLTU0OSw3ICs1NDksNyBAQCB1bnNpZ25lZCBsb25n IHRjZ19xZW11X3RiX2V4ZWModWludDhfdCAqdGJfcHRyKQogICAgICAgICAgICAgdDAgPSAqdGJf cHRyKys7CiAgICAgICAgICAgICB0MSA9IHRjaV9yZWFkX3JpMzIoJnRiX3B0cik7CiAgICAgICAg ICAgICB0MiA9IHRjaV9yZWFkX3JpMzIoJnRiX3B0cik7Ci0gICAgICAgICAgICB0Y2lfd3JpdGVf cmVnMzIodDAsICh0MSA+PiB0MikgfCAodDEgJiAoMVVMIDw8IDMxKSkpOworICAgICAgICAgICAg dGNpX3dyaXRlX3JlZzMyKHQwLCAoKGludDMyX3QpdDEgPj4gdDIpKTsKICAgICAgICAgICAgIGJy ZWFrOwogI2lmZGVmIFRDR19UQVJHRVRfSEFTX3JvdF9pMzIKICAgICAgICAgY2FzZSBJTkRFWF9v cF9yb3RsX2kzMjoKQEAgLTc5NCw3ICs3OTQsNyBAQCB1bnNpZ25lZCBsb25nIHRjZ19xZW11X3Ri X2V4ZWModWludDhfdCAqdGJfcHRyKQogICAgICAgICAgICAgdDAgPSAqdGJfcHRyKys7CiAgICAg ICAgICAgICB0MSA9IHRjaV9yZWFkX3JpNjQoJnRiX3B0cik7CiAgICAgICAgICAgICB0MiA9IHRj aV9yZWFkX3JpNjQoJnRiX3B0cik7Ci0gICAgICAgICAgICB0Y2lfd3JpdGVfcmVnNjQodDAsICh0 MSA+PiB0MikgfCAodDEgJiAoMVVMTCA8PCA2MykpKTsKKyAgICAgICAgICAgIHRjaV93cml0ZV9y ZWc2NCh0MCwgKChpbnQ2NF90KXQxID4+IHQyKSk7CiAgICAgICAgICAgICBicmVhazsKICNpZmRl ZiBUQ0dfVEFSR0VUX0hBU19yb3RfaTY0CiAgICAgICAgIGNhc2UgSU5ERVhfb3Bfcm90bF9pNjQ6 Ci0tIAoxLjYuMy5tc3lzZ2l0LjAKCg== --000e0cd15618d2645a0476902b17 Content-Type: text/plain; charset=US-ASCII; name="0002-tci-add-bswapXX_i32-div_i32-and-rot_i32.patch" Content-Disposition: attachment; filename="0002-tci-add-bswapXX_i32-div_i32-and-rot_i32.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g149fsvy1 U3ViamVjdDogW1BBVENIIDIvNV0gdGNpOiBhZGQgYnN3YXBYWF9pMzIsZGl2X2kzMiBhbmQgcm90 X2kzMgoKLS0tCiB0Y2cvYnl0ZWNvZGUvdGNnLXRhcmdldC5jIHwgICAyNCArKysrKysrKysrKysr KysrKysrKysrKy0KIHRjZy90Y2kuYyAgICAgICAgICAgICAgICAgfCAgIDQwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0 aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90Y2cvYnl0ZWNvZGUvdGNnLXRh cmdldC5jIGIvdGNnL2J5dGVjb2RlL3RjZy10YXJnZXQuYwppbmRleCAyYmQxMmI4Li5hYWU1NzBm IDEwMDY0NAotLS0gYS90Y2cvYnl0ZWNvZGUvdGNnLXRhcmdldC5jCisrKyBiL3RjZy9ieXRlY29k ZS90Y2ctdGFyZ2V0LmMKQEAgLTcyMiw2ICs3MjIsMTAgQEAgc3RhdGljIHZvaWQgdGNnX291dF9v cChUQ0dDb250ZXh0ICpzLCBpbnQgb3BjLCBjb25zdCBUQ0dBcmcgKmFyZ3MsCiAgICAgY2FzZSBJ TkRFWF9vcF9zaGxfaTMyOgogICAgIGNhc2UgSU5ERVhfb3Bfc2hyX2kzMjoKICAgICBjYXNlIElO REVYX29wX3Nhcl9pMzI6CisjaWZkZWYgVENHX1RBUkdFVF9IQVNfcm90X2kzMgorICAgIGNhc2Ug SU5ERVhfb3Bfcm90bF9pMzI6CisgICAgY2FzZSBJTkRFWF9vcF9yb3RyX2kzMjoKKyNlbmRpZgog ICAgICAgICB0Y2dfb3V0X29wX3Qocywgb3BjKTsKICAgICAgICAgdGNnX291dF9yKHMsIGFyZ3Nb MF0pOwogICAgICAgICB0Y2dfb3V0X3JpMzIocywgY29uc3RfYXJnc1sxXSwgYXJnc1sxXSk7CkBA IC04MTYsNyArODIwLDEwIEBAIHN0YXRpYyB2b2lkIHRjZ19vdXRfb3AoVENHQ29udGV4dCAqcywg aW50IG9wYywgY29uc3QgVENHQXJnICphcmdzLAogICAgIGNhc2UgSU5ERVhfb3BfZGl2dV9pMzI6 CiAgICAgY2FzZSBJTkRFWF9vcF9yZW1faTMyOgogICAgIGNhc2UgSU5ERVhfb3BfcmVtdV9pMzI6 Ci0gICAgICAgIFRPRE8oKTsKKyAgICAgICAgdGNnX291dF9vcF90KHMsIG9wYyk7CisgICAgICAg IHRjZ19vdXRfcihzLCBhcmdzWzBdKTsKKyAgICAgICAgdGNnX291dF9yaTMyKHMsIGNvbnN0X2Fy Z3NbMV0sIGFyZ3NbMV0pOworICAgICAgICB0Y2dfb3V0X3JpMzIocywgY29uc3RfYXJnc1syXSwg YXJnc1syXSk7CiAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICBjYXNlIElOREVYX29wX2RpdjJf aTMyOgpAQCAtMTAwMiw2ICsxMDA5LDIxIEBAIHN0YXRpYyB2b2lkIHRjZ19vdXRfb3AoVENHQ29u dGV4dCAqcywgaW50IG9wYywgY29uc3QgVENHQXJnICphcmdzLAogICAgICAgICBicmVhazsKICNl bmRpZgogI2VuZGlmIC8qIFRDR19UQVJHRVRfUkVHX0JJVFMgPT0gNjQgKi8KKyNpZiBkZWZpbmVk KFRDR19UQVJHRVRfSEFTX2Jzd2FwMzJfaTMyKQorICAgIGNhc2UgSU5ERVhfb3BfYnN3YXAzMl9p MzI6CisgICAgICAgIHRjZ19vdXRfb3BfdChzLCBvcGMpOworICAgICAgICB0Y2dfb3V0X3Iocywg YXJnc1swXSk7CisgICAgICAgIHRjZ19vdXRfcihzLCBhcmdzWzFdKTsKKyAgICAgICAgYnJlYWs7 CisjZW5kaWYKKyNpZiBkZWZpbmVkKFRDR19UQVJHRVRfSEFTX2Jzd2FwMTZfaTMyKQorICAgIGNh c2UgSU5ERVhfb3BfYnN3YXAxNl9pMzI6CisgICAgICAgIHRjZ19kdW1wX29wcyhzLCBzdGRlcnIp OworICAgICAgICB0Y2dfb3V0X29wX3Qocywgb3BjKTsKKyAgICAgICAgdGNnX291dF9yKHMsIGFy Z3NbMF0pOworICAgICAgICB0Y2dfb3V0X3IocywgYXJnc1sxXSk7CisgICAgICAgIGJyZWFrOwor I2VuZGlmCiAgICAgY2FzZSBJTkRFWF9vcF9lbmQ6CiAgICAgICAgIFRPRE8oKTsKICAgICAgICAg YnJlYWs7CmRpZmYgLS1naXQgYS90Y2cvdGNpLmMgYi90Y2cvdGNpLmMKaW5kZXggODFjNDE1Yy4u OGJiNzhlMyAxMDA2NDQKLS0tIGEvdGNnL3RjaS5jCisrKyBiL3RjZy90Y2kuYwpAQCAtNTAzLDEx ICs1MDMsMjkgQEAgdW5zaWduZWQgbG9uZyB0Y2dfcWVtdV90Yl9leGVjKHVpbnQ4X3QgKnRiX3B0 cikKICAgICAgICAgICAgIGJyZWFrOwogI2lmZGVmIFRDR19UQVJHRVRfSEFTX2Rpdl9pMzIKICAg ICAgICAgY2FzZSBJTkRFWF9vcF9kaXZfaTMyOgorICAgICAgICAgICAgdDAgPSAqdGJfcHRyKys7 CisgICAgICAgICAgICB0MSA9IHRjaV9yZWFkX3JpMzIoJnRiX3B0cik7CisgICAgICAgICAgICB0 MiA9IHRjaV9yZWFkX3JpMzIoJnRiX3B0cik7CisgICAgICAgICAgICB0Y2lfd3JpdGVfcmVnMzIo dDAsIChpbnQzMl90KXQxIC8gKGludDMyX3QpdDIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgIGNhc2UgSU5ERVhfb3BfZGl2dV9pMzI6CisgICAgICAgICAgICB0MCA9ICp0Yl9wdHIrKzsK KyAgICAgICAgICAgIHQxID0gdGNpX3JlYWRfcmkzMigmdGJfcHRyKTsKKyAgICAgICAgICAgIHQy ID0gdGNpX3JlYWRfcmkzMigmdGJfcHRyKTsKKyAgICAgICAgICAgIHRjaV93cml0ZV9yZWczMih0 MCwgdDEgLyB0Mik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJTkRFWF9vcF9y ZW1faTMyOgorICAgICAgICAgICAgdDAgPSAqdGJfcHRyKys7CisgICAgICAgICAgICB0MSA9IHRj aV9yZWFkX3JpMzIoJnRiX3B0cik7CisgICAgICAgICAgICB0MiA9IHRjaV9yZWFkX3JpMzIoJnRi X3B0cik7CisgICAgICAgICAgICB0Y2lfd3JpdGVfcmVnMzIodDAsIChpbnQzMl90KXQxICUgKGlu dDMyX3QpdDIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSU5ERVhfb3BfcmVt dV9pMzI6Ci0gICAgICAgICAgICBUT0RPKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgIHQwID0gKnRiX3B0cisrOworICAgICAgICAgICAgdDEgPSB0Y2lfcmVhZF9yaTMyKCZ0Yl9w dHIpOworICAgICAgICAgICAgdDIgPSB0Y2lfcmVhZF9yaTMyKCZ0Yl9wdHIpOworICAgICAgICAg ICAgdGNpX3dyaXRlX3JlZzMyKHQwLCB0MSAlIHQyKTsKKyAgICAgICAgICAgIGJyZWFrOwogI2Vs c2UKICAgICAgICAgY2FzZSBJTkRFWF9vcF9kaXYyX2kzMjoKICAgICAgICAgY2FzZSBJTkRFWF9v cF9kaXZ1Ml9pMzI6CkBAIC01NTMsOCArNTcxLDE2IEBAIHVuc2lnbmVkIGxvbmcgdGNnX3FlbXVf dGJfZXhlYyh1aW50OF90ICp0Yl9wdHIpCiAgICAgICAgICAgICBicmVhazsKICNpZmRlZiBUQ0df VEFSR0VUX0hBU19yb3RfaTMyCiAgICAgICAgIGNhc2UgSU5ERVhfb3Bfcm90bF9pMzI6CisgICAg ICAgICAgICB0MCA9ICp0Yl9wdHIrKzsKKyAgICAgICAgICAgIHQxID0gdGNpX3JlYWRfcmkzMigm dGJfcHRyKTsKKyAgICAgICAgICAgIHQyID0gdGNpX3JlYWRfcmkzMigmdGJfcHRyKTsKKyAgICAg ICAgICAgIHRjaV93cml0ZV9yZWczMih0MCwgKHQxPDx0Mil8KHQxPj4oMzItdDIpKSk7CisgICAg ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJTkRFWF9vcF9yb3RyX2kzMjoKLSAgICAgICAg ICAgIFRPRE8oKTsKKyAgICAgICAgICAgIHQwID0gKnRiX3B0cisrOworICAgICAgICAgICAgdDEg PSB0Y2lfcmVhZF9yaTMyKCZ0Yl9wdHIpOworICAgICAgICAgICAgdDIgPSB0Y2lfcmVhZF9yaTMy KCZ0Yl9wdHIpOworICAgICAgICAgICAgdGNpX3dyaXRlX3JlZzMyKHQwLCAodDE+PnQyKXwodDE8 PCgzMi10MikpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgIGNhc2UgSU5E RVhfb3BfYnJjb25kX2kzMjoKQEAgLTY0MCwxMiArNjY2LDE2IEBAIHVuc2lnbmVkIGxvbmcgdGNn X3FlbXVfdGJfZXhlYyh1aW50OF90ICp0Yl9wdHIpCiAjZW5kaWYKICNpZmRlZiBUQ0dfVEFSR0VU X0hBU19ic3dhcDE2X2kzMgogICAgICAgICBjYXNlIElOREVYX29wX2Jzd2FwMTZfaTMyOgotICAg ICAgICAgICAgVE9ETygpOworICAgICAgICAgICAgdDAgPSAqdGJfcHRyKys7CisgICAgICAgICAg ICB0MSA9IHRjaV9yZWFkX3IxNigmdGJfcHRyKTsKKyAgICAgICAgICAgIHRjaV93cml0ZV9yZWcz Mih0MCwgYnN3YXAxNih0MSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBU Q0dfVEFSR0VUX0hBU19ic3dhcDMyX2kzMgogICAgICAgICBjYXNlIElOREVYX29wX2Jzd2FwMzJf aTMyOgotICAgICAgICAgICAgVE9ETygpOworICAgICAgICAgICAgdDAgPSAqdGJfcHRyKys7Cisg ICAgICAgICAgICB0MSA9IHRjaV9yZWFkX3IzMigmdGJfcHRyKTsKKyAgICAgICAgICAgIHRjaV93 cml0ZV9yZWczMih0MCwgYnN3YXAzMih0MSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYK ICNpZmRlZiBUQ0dfVEFSR0VUX0hBU19ub3RfaTMyCi0tIAoxLjYuMy5tc3lzZ2l0LjAKCg== --000e0cd15618d2645a0476902b17 Content-Type: text/plain; charset=US-ASCII; name="0003-tci-support-GETPC-for-SOFTMMU.patch" Content-Disposition: attachment; filename="0003-tci-support-GETPC-for-SOFTMMU.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g149fvz22 U3ViamVjdDogW1BBVENIIDMvNV0gdGNpOiBzdXBwb3J0IEdFVFBDKCkgZm9yIFNPRlRNTVUKCi0t LQogZHluZ2VuLWV4ZWMuaCB8ICAgIDUgKysrKy0KIHRjZy90Y2kuYyAgICAgfCAgICA3ICsrKysr KysKIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9keW5nZW4tZXhlYy5oIGIvZHluZ2VuLWV4ZWMuaAppbmRleCBkNTYyMGNhLi5i YTIxM2M0IDEwMDY0NAotLS0gYS9keW5nZW4tZXhlYy5oCisrKyBiL2R5bmdlbi1leGVjLmgKQEAg LTExOSw3ICsxMTksMTAgQEAgZXh0ZXJuIGludCBwcmludGYoY29uc3QgY2hhciAqLCAuLi4pOwog CiAvKiBUaGUgcmV0dXJuIGFkZHJlc3MgbWF5IHBvaW50IHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4 dCBpbnN0cnVjdGlvbi4KICAgIFN1YnRyYWN0aW5nIG9uZSBnZXRzIHVzIHRoZSBjYWxsIGluc3Ry dWN0aW9uIGl0c2VsZi4gICovCi0jaWYgZGVmaW5lZChfX3MzOTBfXykKKyNpZiBkZWZpbmVkKENP TkZJR19UQ0dfSU5URVJQUkVURVIpCitleHRlcm4gdWludDhfdCAqIHRjaV90Yl9wdHI7CisjIGRl ZmluZSBHRVRQQygpICgodm9pZCAqKXRjaV90Yl9wdHIpCisjZWxpZiBkZWZpbmVkKF9fczM5MF9f KQogIyBkZWZpbmUgR0VUUEMoKSAoKHZvaWQqKSgoKHVuc2lnbmVkIGxvbmcpX19idWlsdGluX3Jl dHVybl9hZGRyZXNzKDApICYgMHg3ZmZmZmZmZlVMKSAtIDEpKQogI2VsaWYgZGVmaW5lZChfX2Fy bV9fKQogLyogVGh1bWIgcmV0dXJuIGFkZHJlc3NlcyBoYXZlIHRoZSBsb3cgYml0IHNldCwgc28g d2UgbmVlZCB0byBzdWJ0cmFjdCB0d28uCmRpZmYgLS1naXQgYS90Y2cvdGNpLmMgYi90Y2cvdGNp LmMKaW5kZXggOGJiNzhlMy4uMGJhNjA1YiAxMDA2NDQKLS0tIGEvdGNnL3RjaS5jCisrKyBiL3Rj Zy90Y2kuYwpAQCAtNTAsNiArNTAsMTAgQEAgc3RydWN0IENQVVg4NlN0YXRlICplbnY7CiAjZXJy b3IgVGFyZ2V0IHN1cHBvcnQgbWlzc2luZywgcGxlYXNlIGZpeCEKICNlbmRpZgogCisjaWZkZWYg Q09ORklHX1NPRlRNTVUKK3VpbnQ4X3QgKiB0Y2lfdGJfcHRyOworI2VuZGlmCisKIHN0YXRpYyB0 Y2dfdGFyZ2V0X3Vsb25nIHRjaV9yZWdbVENHX1RBUkdFVF9OQl9SRUdTXTsKIAogc3RhdGljIHRj Z190YXJnZXRfdWxvbmcgdGNpX3JlYWRfcmVnKHVpbnQzMl90IGluZGV4KQpAQCAtMzgwLDYgKzM4 NCw5IEBAIHVuc2lnbmVkIGxvbmcgdGNnX3FlbXVfdGJfZXhlYyh1aW50OF90ICp0Yl9wdHIpCiAg ICAgdGNpX3JlZ1tUQ0dfQVJFRzBdID0gKHRjZ190YXJnZXRfdWxvbmcpZW52OwogCiAgICAgZm9y ICg7OykgeworI2lmZGVmIENPTkZJR19TT0ZUTU1VCisgICAgICAgIHRjaV90Yl9wdHI9dGJfcHRy OworI2VuZGlmCiAgICAgICAgIHVpbnQ4X3Qgb3BjID0gKih1aW50OF90ICopdGJfcHRyKys7CiAg ICAgICAgIHRjZ190YXJnZXRfdWxvbmcgdDA7CiAgICAgICAgIHRjZ190YXJnZXRfdWxvbmcgdDE7 Ci0tIAoxLjYuMy5tc3lzZ2l0LjAKCg== --000e0cd15618d2645a0476902b17 Content-Type: text/plain; charset=US-ASCII; name="0004-tci-new-op_call-implementation-for-tci.patch" Content-Disposition: attachment; filename="0004-tci-new-op_call-implementation-for-tci.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g149g0bb3 U3ViamVjdDogW1BBVENIIDQvNV0gdGNpOiBuZXcgb3BfY2FsbCBpbXBsZW1lbnRhdGlvbiBmb3Ig dGNpCgotLS0KIHRjZy9ieXRlY29kZS90Y2ctdGFyZ2V0LmMgfCAgMTkxICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogdGNnL3RjZy1vcGMuaCAgICAgICAgICAg ICB8ICAgMjUgKysrKysrCiB0Y2cvdGNnLmMgICAgICAgICAgICAgICAgIHwgIDEzOSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogdGNnL3RjaS5jICAgICAgICAgICAgICAgICB8ICAx NTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiA0IGZpbGVzIGNoYW5nZWQs IDUwMCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90Y2cvYnl0 ZWNvZGUvdGNnLXRhcmdldC5jIGIvdGNnL2J5dGVjb2RlL3RjZy10YXJnZXQuYwppbmRleCBhYWU1 NzBmLi43NDRiOWU2IDEwMDY0NAotLS0gYS90Y2cvYnl0ZWNvZGUvdGNnLXRhcmdldC5jCisrKyBi L3RjZy9ieXRlY29kZS90Y2ctdGFyZ2V0LmMKQEAgLTI0OCw2ICsyNDgsMjggQEAgc3RhdGljIGNv bnN0IFRDR1RhcmdldE9wRGVmIHRjZ190YXJnZXRfb3BfZGVmc1tdID0gewogICAgIHsgSU5ERVhf b3BfYnN3YXAzMl9pMzIsIHsgInIiLCAiciIgfSB9LAogI2VuZGlmCiAKKyAgICB7IElOREVYX29w X2NhbGwwX3IwLCB7ICJpIn0gfSwKKyAgICB7IElOREVYX29wX2NhbGwxX3IwLCB7ICJpIiwicmki fSB9LAorICAgIHsgSU5ERVhfb3BfY2FsbDJfcjAsIHsgImkiLCJyaSIsInJpIn0gfSwKKyAgICB7 IElOREVYX29wX2NhbGwzX3IwLCB7ICJpIiwicmkiLCJyaSIsInJpIn0gfSwKKyAgICB7IElOREVY X29wX2NhbGw0X3IwLCB7ICJpIiwicmkiLCJyaSIsInJpIiwicmkifSB9LAorCisgICAgeyBJTkRF WF9vcF9jYWxsMF9yMSwgeyAiaSIsInIifSB9LAorICAgIHsgSU5ERVhfb3BfY2FsbDFfcjEsIHsg ImkiLCJyaSIsInIifSB9LAorICAgIHsgSU5ERVhfb3BfY2FsbDJfcjEsIHsgImkiLCJyaSIsInJp IiwiciJ9IH0sCisgICAgeyBJTkRFWF9vcF9jYWxsM19yMSwgeyAiaSIsInJpIiwicmkiLCJyaSIs InIifSB9LAorICAgIHsgSU5ERVhfb3BfY2FsbDRfcjEsIHsgImkiLCJyaSIsInJpIiwicmkiLCJy aSIsInIifSB9LAorCisjaWYgVENHX1RBUkdFVF9SRUdfQklUUyA9PSAzMgorCisgICAgeyBJTkRF WF9vcF9jYWxsMF9yMiwgeyAiaSIsInIiLCJyIn0gfSwKKyAgICB7IElOREVYX29wX2NhbGwxX3Iy LCB7ICJpIiwicmkiLCJyIiwiciJ9IH0sCisgICAgeyBJTkRFWF9vcF9jYWxsMl9yMiwgeyAiaSIs InJpIiwicmkiLCJyIiwiciJ9IH0sCisgICAgeyBJTkRFWF9vcF9jYWxsM19yMiwgeyAiaSIsInJp IiwicmkiLCJyaSIsInIiLCJyIn0gfSwKKyAgICB7IElOREVYX29wX2NhbGw0X3IyLCB7ICJpIiwi cmkiLCJyaSIsInJpIiwicmkiLCJyIiwiciJ9IH0sCisKKyNlbmRpZgorCiAgICAgeyAtMSB9LAog fTsKIApAQCAtNjU1LDYgKzY3NywxNzIgQEAgc3RhdGljIHZvaWQgdGNnX291dF9tb3ZpKFRDR0Nv bnRleHQgKnMsIFRDR1R5cGUgdHlwZSwKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHRjZ19vdXRf b3BfY2FsbChUQ0dDb250ZXh0ICpzLCBjb25zdCBUQ0dBcmcgKmFyZ3MsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgaW50ICpjb25zdF9hcmdzKQoreworICAgIGludCBuYl9pYXJn cz1hcmdzWzBdJjB4MEY7CisgICAgaW50IG5iX29hcmdzPWFyZ3NbMF0+PjQ7CisKKyAgICBhc3Nl cnQoY29uc3RfYXJnc1sxXSE9MCk7CisKKyAgICBzd2l0Y2gobmJfaWFyZ3MpCisgICAgeworICAg IGNhc2UgMDoKKyAgICAgICAgc3dpdGNoKG5iX29hcmdzKQorICAgICAgICB7CisgICAgICAgIGNh c2UgMDoKKyAgICAgICAgICAgIHRjZ19vdXRfb3BfdChzLCBJTkRFWF9vcF9jYWxsMF9yMCk7Cisg ICAgICAgICAgICB0Y2dfb3V0X2kocywgYXJnc1sxXSk7LypmdW5jKi8KKyAgICAgICAgICAgIGJy ZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICB0Y2dfb3V0X29wX3QocywgSU5ERVhf b3BfY2FsbDBfcjEpOworICAgICAgICAgICAgdGNnX291dF9pKHMsIGFyZ3NbMV0pOy8qZnVuYyov CisgICAgICAgICAgICB0Y2dfb3V0X3IocywgYXJnc1syXSk7LypyMSovCisgICAgICAgICAgICBi cmVhazsKKyNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09IDMyCisgICAgICAgIGNhc2UgMjoKKyAg ICAgICAgICAgIHRjZ19vdXRfb3BfdChzLCBJTkRFWF9vcF9jYWxsMF9yMik7CisgICAgICAgICAg ICB0Y2dfb3V0X2kocywgYXJnc1sxXSk7LypmdW5jKi8KKyAgICAgICAgICAgIHRjZ19vdXRfcihz LCBhcmdzWzJdKTsvKnIxKi8KKyAgICAgICAgICAgIHRjZ19vdXRfcihzLCBhcmdzWzNdKTsvKnIy Ki8KKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg ICAgICBUT0RPKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAg ICAgICBzd2l0Y2gobmJfb2FyZ3MpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAg ICAgICAgdGNnX291dF9vcF90KHMsIElOREVYX29wX2NhbGwxX3IwKTsKKyAgICAgICAgICAgIHRj Z19vdXRfaShzLCBhcmdzWzFdKTsvKmZ1bmMqLworICAgICAgICAgICAgdGNnX291dF9yaShzLCBj b25zdF9hcmdzWzJdLCBhcmdzWzJdKTsvKmFyZzEqLworICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgIGNhc2UgMToKKyAgICAgICAgICAgIHRjZ19vdXRfb3BfdChzLCBJTkRFWF9vcF9jYWxsMV9y MSk7CisgICAgICAgICAgICB0Y2dfb3V0X2kocywgYXJnc1sxXSk7LypmdW5jKi8KKyAgICAgICAg ICAgIHRjZ19vdXRfcmkocywgY29uc3RfYXJnc1syXSwgYXJnc1syXSk7LyphcmcxKi8KKyAgICAg ICAgICAgIHRjZ19vdXRfcihzLCBhcmdzWzNdKTsvKnIxKi8KKyAgICAgICAgICAgIGJyZWFrOwor I2lmIFRDR19UQVJHRVRfUkVHX0JJVFMgPT0gMzIKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAg ICAgdGNnX291dF9vcF90KHMsIElOREVYX29wX2NhbGwxX3IyKTsKKyAgICAgICAgICAgIHRjZ19v dXRfaShzLCBhcmdzWzFdKTsvKmZ1bmMqLworICAgICAgICAgICAgdGNnX291dF9yaShzLCBjb25z dF9hcmdzWzJdLCBhcmdzWzJdKTsvKmFyZzEqLworICAgICAgICAgICAgdGNnX291dF9yKHMsIGFy Z3NbM10pOy8qcjEqLworICAgICAgICAgICAgdGNnX291dF9yKHMsIGFyZ3NbNF0pOy8qcjIqLwor ICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg IFRPRE8oKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAg IHN3aXRjaChuYl9vYXJncykKKyAgICAgICAgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAg ICB0Y2dfb3V0X29wX3QocywgSU5ERVhfb3BfY2FsbDJfcjApOworICAgICAgICAgICAgdGNnX291 dF9pKHMsIGFyZ3NbMV0pOy8qZnVuYyovCisgICAgICAgICAgICB0Y2dfb3V0X3JpKHMsIGNvbnN0 X2FyZ3NbM10sIGFyZ3NbM10pOy8qYXJnMSovCisgICAgICAgICAgICB0Y2dfb3V0X3JpKHMsIGNv bnN0X2FyZ3NbMl0sIGFyZ3NbMl0pOy8qYXJnMiovCisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgY2FzZSAxOgorICAgICAgICAgICAgdGNnX291dF9vcF90KHMsIElOREVYX29wX2NhbGwyX3Ix KTsKKyAgICAgICAgICAgIHRjZ19vdXRfaShzLCBhcmdzWzFdKTsvKmZ1bmMqLworICAgICAgICAg ICAgdGNnX291dF9yaShzLCBjb25zdF9hcmdzWzNdLCBhcmdzWzNdKTsvKmFyZzEqLworICAgICAg ICAgICAgdGNnX291dF9yaShzLCBjb25zdF9hcmdzWzJdLCBhcmdzWzJdKTsvKmFyZzIqLworICAg ICAgICAgICAgdGNnX291dF9yKHMsIGFyZ3NbNF0pOy8qcjEqLworICAgICAgICAgICAgYnJlYWs7 CisjaWYgVENHX1RBUkdFVF9SRUdfQklUUyA9PSAzMgorICAgICAgICBjYXNlIDI6CisgICAgICAg ICAgICB0Y2dfb3V0X29wX3QocywgSU5ERVhfb3BfY2FsbDJfcjIpOworICAgICAgICAgICAgdGNn X291dF9pKHMsIGFyZ3NbMV0pOy8qZnVuYyovCisgICAgICAgICAgICB0Y2dfb3V0X3JpKHMsIGNv bnN0X2FyZ3NbM10sIGFyZ3NbM10pOy8qYXJnMSovCisgICAgICAgICAgICB0Y2dfb3V0X3JpKHMs IGNvbnN0X2FyZ3NbMl0sIGFyZ3NbMl0pOy8qYXJnMiovCisgICAgICAgICAgICB0Y2dfb3V0X3Io cywgYXJnc1s0XSk7LypyMSovCisgICAgICAgICAgICB0Y2dfb3V0X3IocywgYXJnc1s1XSk7Lypy MiovCisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAg ICAgICAgVE9ETygpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAg ICAgICAgc3dpdGNoKG5iX29hcmdzKQorICAgICAgICB7CisgICAgICAgIGNhc2UgMDoKKyAgICAg ICAgICAgIHRjZ19vdXRfb3BfdChzLCBJTkRFWF9vcF9jYWxsM19yMCk7CisgICAgICAgICAgICB0 Y2dfb3V0X2kocywgYXJnc1sxXSk7LypmdW5jKi8KKyAgICAgICAgICAgIHRjZ19vdXRfcmkocywg Y29uc3RfYXJnc1s0XSwgYXJnc1s0XSk7LyphcmcxKi8KKyAgICAgICAgICAgIHRjZ19vdXRfcmko cywgY29uc3RfYXJnc1szXSwgYXJnc1szXSk7LyphcmcyKi8KKyAgICAgICAgICAgIHRjZ19vdXRf cmkocywgY29uc3RfYXJnc1syXSwgYXJnc1syXSk7LyphcmczKi8KKyAgICAgICAgICAgIGJyZWFr OworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICB0Y2dfb3V0X29wX3QocywgSU5ERVhfb3Bf Y2FsbDNfcjEpOworICAgICAgICAgICAgdGNnX291dF9pKHMsIGFyZ3NbMV0pOy8qZnVuYyovCisg ICAgICAgICAgICB0Y2dfb3V0X3JpKHMsIGNvbnN0X2FyZ3NbNF0sIGFyZ3NbNF0pOy8qYXJnMSov CisgICAgICAgICAgICB0Y2dfb3V0X3JpKHMsIGNvbnN0X2FyZ3NbM10sIGFyZ3NbM10pOy8qYXJn MiovCisgICAgICAgICAgICB0Y2dfb3V0X3JpKHMsIGNvbnN0X2FyZ3NbMl0sIGFyZ3NbMl0pOy8q YXJnMyovCisgICAgICAgICAgICB0Y2dfb3V0X3IocywgYXJnc1s1XSk7LypyMSovCisgICAgICAg ICAgICBicmVhazsKKyNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09IDMyCisgICAgICAgIGNhc2Ug MjoKKyAgICAgICAgICAgIHRjZ19vdXRfb3BfdChzLCBJTkRFWF9vcF9jYWxsM19yMik7CisgICAg ICAgICAgICB0Y2dfb3V0X2kocywgYXJnc1sxXSk7LypmdW5jKi8KKyAgICAgICAgICAgIHRjZ19v dXRfcmkocywgY29uc3RfYXJnc1s0XSwgYXJnc1s0XSk7LyphcmcxKi8KKyAgICAgICAgICAgIHRj Z19vdXRfcmkocywgY29uc3RfYXJnc1szXSwgYXJnc1szXSk7LyphcmcyKi8KKyAgICAgICAgICAg IHRjZ19vdXRfcmkocywgY29uc3RfYXJnc1syXSwgYXJnc1syXSk7LyphcmczKi8KKyAgICAgICAg ICAgIHRjZ19vdXRfcihzLCBhcmdzWzVdKTsvKnIxKi8KKyAgICAgICAgICAgIHRjZ19vdXRfcihz LCBhcmdzWzZdKTsvKnIyKi8KKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgIGRl ZmF1bHQ6CisgICAgICAgICAgICBUT0RPKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg ICAgY2FzZSA0OgorICAgICAgICBzd2l0Y2gobmJfb2FyZ3MpCisgICAgICAgIHsKKyAgICAgICAg Y2FzZSAwOgorICAgICAgICAgICAgdGNnX291dF9vcF90KHMsIElOREVYX29wX2NhbGw0X3IwKTsK KyAgICAgICAgICAgIHRjZ19vdXRfaShzLCBhcmdzWzFdKTsvKmZ1bmMqLworICAgICAgICAgICAg dGNnX291dF9yaShzLCBjb25zdF9hcmdzWzVdLCBhcmdzWzVdKTsvKmFyZzEqLworICAgICAgICAg ICAgdGNnX291dF9yaShzLCBjb25zdF9hcmdzWzRdLCBhcmdzWzRdKTsvKmFyZzIqLworICAgICAg ICAgICAgdGNnX291dF9yaShzLCBjb25zdF9hcmdzWzNdLCBhcmdzWzNdKTsvKmFyZzMqLworICAg ICAgICAgICAgdGNnX291dF9yaShzLCBjb25zdF9hcmdzWzJdLCBhcmdzWzJdKTsvKmFyZzQqLwor ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHRjZ19vdXRf b3BfdChzLCBJTkRFWF9vcF9jYWxsNF9yMSk7CisgICAgICAgICAgICB0Y2dfb3V0X2kocywgYXJn c1sxXSk7LypmdW5jKi8KKyAgICAgICAgICAgIHRjZ19vdXRfcmkocywgY29uc3RfYXJnc1s1XSwg YXJnc1s1XSk7LyphcmcxKi8KKyAgICAgICAgICAgIHRjZ19vdXRfcmkocywgY29uc3RfYXJnc1s0 XSwgYXJnc1s0XSk7LyphcmcyKi8KKyAgICAgICAgICAgIHRjZ19vdXRfcmkocywgY29uc3RfYXJn c1szXSwgYXJnc1szXSk7LyphcmczKi8KKyAgICAgICAgICAgIHRjZ19vdXRfcmkocywgY29uc3Rf YXJnc1syXSwgYXJnc1syXSk7Lyphcmc0Ki8KKyAgICAgICAgICAgIHRjZ19vdXRfcihzLCBhcmdz WzZdKTsvKnIxKi8KKyAgICAgICAgICAgIGJyZWFrOworI2lmIFRDR19UQVJHRVRfUkVHX0JJVFMg PT0gMzIKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgdGNnX291dF9vcF90KHMsIElOREVY X29wX2NhbGw0X3IyKTsKKyAgICAgICAgICAgIHRjZ19vdXRfaShzLCBhcmdzWzFdKTsvKmZ1bmMq LworICAgICAgICAgICAgdGNnX291dF9yaShzLCBjb25zdF9hcmdzWzVdLCBhcmdzWzVdKTsvKmFy ZzEqLworICAgICAgICAgICAgdGNnX291dF9yaShzLCBjb25zdF9hcmdzWzRdLCBhcmdzWzRdKTsv KmFyZzIqLworICAgICAgICAgICAgdGNnX291dF9yaShzLCBjb25zdF9hcmdzWzNdLCBhcmdzWzNd KTsvKmFyZzMqLworICAgICAgICAgICAgdGNnX291dF9yaShzLCBjb25zdF9hcmdzWzJdLCBhcmdz WzJdKTsvKmFyZzQqLworICAgICAgICAgICAgdGNnX291dF9yKHMsIGFyZ3NbNl0pOy8qcjEqLwor ICAgICAgICAgICAgdGNnX291dF9yKHMsIGFyZ3NbN10pOy8qcjIqLworICAgICAgICAgICAgYnJl YWs7CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFRPRE8oKTsKKyAgICAg ICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBUT0RPKCk7CisgICAg fQorfQorCisKIHN0YXRpYyB2b2lkIHRjZ19vdXRfb3AoVENHQ29udGV4dCAqcywgaW50IG9wYywg Y29uc3QgVENHQXJnICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKmNv bnN0X2FyZ3MpCiB7CkBAIC02ODMsOCArODcxLDcgQEAgc3RhdGljIHZvaWQgdGNnX291dF9vcChU Q0dDb250ZXh0ICpzLCBpbnQgb3BjLCBjb25zdCBUQ0dBcmcgKmFyZ3MsCiAgICAgICAgIHRjaV9v dXRfbGFiZWwocywgYXJnc1swXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU5ERVhfb3Bf Y2FsbDoKLSAgICAgICAgdGNnX291dF9vcF90KHMsIG9wYyk7Ci0gICAgICAgIHRjZ19vdXRfcmko cywgY29uc3RfYXJnc1swXSwgYXJnc1swXSk7CisgICAgICAgIHRjZ19vdXRfb3BfY2FsbChzLGFy Z3MsY29uc3RfYXJncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU5ERVhfb3Bfam1wOgog ICAgICAgICBUT0RPKCk7CmRpZmYgLS1naXQgYS90Y2cvdGNnLW9wYy5oIGIvdGNnL3RjZy1vcGMu aAppbmRleCBiN2YzZmQ3Li4wNzBiYTM5IDEwMDY0NAotLS0gYS90Y2cvdGNnLW9wYy5oCisrKyBi L3RjZy90Y2ctb3BjLmgKQEAgLTI2OSw0ICsyNjksMjkgQEAgREVGMihxZW11X3N0NjQsIDAsIDIs IDEsIFRDR19PUEZfQ0FMTF9DTE9CQkVSIHwgVENHX09QRl9TSURFX0VGRkVDVFMpCiAKICNlbmRp ZiAvKiBUQ0dfVEFSR0VUX1JFR19CSVRTICE9IDMyICovCiAKKyNpZmRlZiBDT05GSUdfVENHX0lO VEVSUFJFVEVSCisKK0RFRjIoY2FsbDBfcjAsIDAsIDAsIDAsIDApCitERUYyKGNhbGwxX3IwLCAw LCAxLCAwLCAwKQorREVGMihjYWxsMl9yMCwgMCwgMiwgMCwgMCkKK0RFRjIoY2FsbDNfcjAsIDAs IDMsIDAsIDApCitERUYyKGNhbGw0X3IwLCAwLCA0LCAwLCAwKQorREVGMihjYWxsMF9yMSwgMSwg MCwgMCwgMCkKK0RFRjIoY2FsbDFfcjEsIDEsIDEsIDAsIDApCitERUYyKGNhbGwyX3IxLCAxLCAy LCAwLCAwKQorREVGMihjYWxsM19yMSwgMSwgMywgMCwgMCkKK0RFRjIoY2FsbDRfcjEsIDEsIDQs IDAsIDApCisKKyNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09IDMyCisKK0RFRjIoY2FsbDBfcjIs IDIsIDAsIDAsIDApCitERUYyKGNhbGwxX3IyLCAyLCAxLCAwLCAwKQorREVGMihjYWxsMl9yMiwg MiwgMiwgMCwgMCkKK0RFRjIoY2FsbDNfcjIsIDIsIDMsIDAsIDApCitERUYyKGNhbGw0X3IyLCAy LCA0LCAwLCAwKQorCisjZW5kaWYKKworI2VuZGlmCisKICN1bmRlZiBERUYyCmRpZmYgLS1naXQg YS90Y2cvdGNnLmMgYi90Y2cvdGNnLmMKaW5kZXggMmE4MmYzNy4uMjBhYWMzOCAxMDA2NDQKLS0t IGEvdGNnL3RjZy5jCisrKyBiL3RjZy90Y2cuYwpAQCAtMTY5MCw2ICsxNjkwLDE0MiBAQCBzdGF0 aWMgdm9pZCB0Y2dfcmVnX2FsbG9jX29wKFRDR0NvbnRleHQgKnMsCiAjZGVmaW5lIFNUQUNLX0RJ Uih4KSAoeCkKICNlbmRpZgogCisjaWZkZWYgQ09ORklHX1RDR19JTlRFUlBSRVRFUgorCitzdGF0 aWMgaW50IHRjZ19yZWdfYWxsb2NfY2FsbChUQ0dDb250ZXh0ICpzLCBjb25zdCBUQ0dPcERlZiAq ZGVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wYywgY29uc3QgVENHQXJn ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlYWRf aWFyZ3MpCit7CisgICAgaW50IG5iX2lhcmdzLCBuYl9vYXJncywgZmxhZ3MsIGksIHJlZywgbmJf cGFyYW1zOworICAgIFRDR0FyZyBhcmcsZnVuY19hcmc7CisgICAgVENHVGVtcCAqdHM7CisgICAg dGNnX3RhcmdldF9sb25nIGZ1bmNfYWRkcjsKKyAgICBUQ0dSZWdTZXQgYWxsb2NhdGVkX3JlZ3M7 CisgICAgY29uc3QgVENHQXJnQ29uc3RyYWludCAqYXJnX2N0OworICAgIFRDR0FyZyBuZXdfYXJn c1tUQ0dfTUFYX09QX0FSR1NdOworICAgIGludCBjb25zdF9hcmdzW1RDR19NQVhfT1BfQVJHU107 CisKKyAgICBhcmcgPSAqYXJncysrOworCisgICAgbmJfb2FyZ3MgPSBhcmcgPj4gMTY7CisgICAg bmJfaWFyZ3MgPSBhcmcgJiAweGZmZmY7CisgICAgbmJfcGFyYW1zID0gbmJfaWFyZ3MgLSAxOwor CisgICAgZmxhZ3MgPSBhcmdzW25iX29hcmdzICsgbmJfaWFyZ3NdOworCisgICAgY29uc3RfYXJn c1swXT0xOworICAgIG5ld19hcmdzWzBdPShuYl9vYXJnczw8NCl8bmJfcGFyYW1zOworCisgICAg Lyogc2F0aXNmeSBpbnB1dCBjb25zdHJhaW50cyAqLyAKKyAgICB0Y2dfcmVnc2V0X3NldChhbGxv Y2F0ZWRfcmVncywgcy0+cmVzZXJ2ZWRfcmVncyk7CisKKyAgICBmb3IoaSA9IG5iX3BhcmFtczsg aSA+PSAwOyBpLS0pIHsKKyAgICAgICAgYXJnID0gYXJnc1tuYl9vYXJncyArIGldOworICAgICAg ICB0cyA9ICZzLT50ZW1wc1thcmddOworICAgICAgICBpZiAodHMtPnZhbF90eXBlID09IFRFTVBf VkFMX01FTSkgeworICAgICAgICAgICAgcmVnID0gdGNnX3JlZ19hbGxvYyhzLCB0Y2dfdGFyZ2V0 X2F2YWlsYWJsZV9yZWdzW3RzLT50eXBlXSwgYWxsb2NhdGVkX3JlZ3MpOworICAgICAgICAgICAg dGNnX291dF9sZChzLCB0cy0+dHlwZSwgcmVnLCB0cy0+bWVtX3JlZywgdHMtPm1lbV9vZmZzZXQp OworICAgICAgICAgICAgdHMtPnZhbF90eXBlID0gVEVNUF9WQUxfUkVHOworICAgICAgICAgICAg dHMtPnJlZyA9IHJlZzsKKyAgICAgICAgICAgIHRzLT5tZW1fY29oZXJlbnQgPSAxOworICAgICAg ICAgICAgcy0+cmVnX3RvX3RlbXBbcmVnXSA9IGFyZzsKKyAgICAgICAgfSBlbHNlIGlmICh0cy0+ dmFsX3R5cGUgPT0gVEVNUF9WQUxfQ09OU1QpIHsKKyAgICAgICAgICAgIC8qIGNvbnN0YW50IGlz IE9LIGZvciBpbnN0cnVjdGlvbiAqLworICAgICAgICAgICAgY29uc3RfYXJnc1tuYl9wYXJhbXMr MS1pXSA9IDE7CisgICAgICAgICAgICBuZXdfYXJnc1tuYl9wYXJhbXMrMS1pXSA9IHRzLT52YWw7 CisgICAgICAgICAgICBnb3RvIGlhcmdfZW5kOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0 cy0+dmFsX3R5cGUgPT0gVEVNUF9WQUxfUkVHKTsKKyAgICAgICAgcmVnID0gdHMtPnJlZzsKKyAg ICAgICAgaWYgKHRjZ19yZWdzZXRfdGVzdF9yZWcodGNnX3RhcmdldF9hdmFpbGFibGVfcmVnc1t0 cy0+dHlwZV0sIHJlZykpIHsKKyAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8gOiB0aGUgY29u c3RyYWludCBpcyBzYXRpc2ZpZWQgKi8KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgYWxsb2Nh dGVfaW5fcmVnOgorICAgICAgICAgICAgLyogYWxsb2NhdGUgYSBuZXcgcmVnaXN0ZXIgbWF0Y2hp bmcgdGhlIGNvbnN0cmFpbnQgCisgICAgICAgICAgICAgICBhbmQgbW92ZSB0aGUgdGVtcG9yYXJ5 IHJlZ2lzdGVyIGludG8gaXQgKi8KKyAgICAgICAgICAgIHJlZyA9IHRjZ19yZWdfYWxsb2Mocywg dGNnX3RhcmdldF9hdmFpbGFibGVfcmVnc1t0cy0+dHlwZV0sIGFsbG9jYXRlZF9yZWdzKTsKKyAg ICAgICAgICAgIHRjZ19vdXRfbW92KHMsIHJlZywgdHMtPnJlZyk7CisgICAgICAgIH0KKyAgICAg ICAgbmV3X2FyZ3NbbmJfcGFyYW1zKzEtaV0gPSByZWc7CisgICAgICAgIGNvbnN0X2FyZ3NbbmJf cGFyYW1zKzEtaV0gPSAwOworICAgICAgICB0Y2dfcmVnc2V0X3NldF9yZWcoYWxsb2NhdGVkX3Jl Z3MsIHJlZyk7CisgICAgaWFyZ19lbmQ6IDsKKyAgICB9CisgICAgCisgICAgLyogbWFyayBkZWFk IHRlbXBvcmFyaWVzIGFuZCBmcmVlIHRoZSBhc3NvY2lhdGVkIHJlZ2lzdGVycyAqLworICAgIGZv cihpID0gMDsgaSA8IG5iX2lhcmdzOyBpKyspIHsKKyAgICAgICAgYXJnID0gYXJnc1tuYl9vYXJn cyArIGldOworICAgICAgICBpZiAoSVNfREVBRF9JQVJHKGkpKSB7CisgICAgICAgICAgICB0cyA9 ICZzLT50ZW1wc1thcmddOworICAgICAgICAgICAgaWYgKCF0cy0+Zml4ZWRfcmVnKSB7CisgICAg ICAgICAgICAgICAgaWYgKHRzLT52YWxfdHlwZSA9PSBURU1QX1ZBTF9SRUcpCisgICAgICAgICAg ICAgICAgICAgIHMtPnJlZ190b190ZW1wW3RzLT5yZWddID0gLTE7CisgICAgICAgICAgICAgICAg dHMtPnZhbF90eXBlID0gVEVNUF9WQUxfREVBRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgIH0KKworICAgIC8qIGNsb2JiZXIgY2FsbCByZWdpc3RlcnMgKi8gCisgICAgZm9yKHJlZyA9 IDA7IHJlZyA8IFRDR19UQVJHRVRfTkJfUkVHUzsgcmVnKyspIHsKKyAgICAgICAgaWYgKHRjZ19y ZWdzZXRfdGVzdF9yZWcodGNnX3RhcmdldF9jYWxsX2Nsb2JiZXJfcmVncywgcmVnKSkgeworICAg ICAgICAgICAgdGNnX3JlZ19mcmVlKHMsIHJlZyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv KiBzdG9yZSBnbG9iYWxzIGFuZCBmcmVlIGFzc29jaWF0ZWQgcmVnaXN0ZXJzICh3ZSBhc3N1bWUg dGhlIGluc24KKyAgICBjYW4gbW9kaWZ5IGFueSBnbG9iYWwuICovCisgICAgaWYgKCEoZmxhZ3Mg JiBUQ0dfQ0FMTF9DT05TVCkpIHsKKyAgICAgICAgc2F2ZV9nbG9iYWxzKHMsIGFsbG9jYXRlZF9y ZWdzKTsKKyAgICB9CisKKyAgICAvKiBzYXRpc2Z5IHRoZSBvdXRwdXQgY29uc3RyYWludHMgKi8K KyAgICB0Y2dfcmVnc2V0X3NldChhbGxvY2F0ZWRfcmVncywgcy0+cmVzZXJ2ZWRfcmVncyk7Cisg ICAgZm9yKGkgPSAwOyBpIDwgbmJfb2FyZ3M7IGkrKykgeworICAgICAgICBhcmcgPSBhcmdzW2ld OworICAgICAgICB0cyA9ICZzLT50ZW1wc1thcmddOworCisgICAgICAgIC8qIGlmIGZpeGVkIHJl Z2lzdGVyLCB3ZSB0cnkgdG8gdXNlIGl0ICovCisgICAgICAgIHJlZyA9IHRzLT5yZWc7CisgICAg ICAgIGlmICh0cy0+Zml4ZWRfcmVnICYmCisgICAgICAgICAgICB0Y2dfcmVnc2V0X3Rlc3RfcmVn KHRjZ190YXJnZXRfYXZhaWxhYmxlX3JlZ3NbdHMtPnR5cGVdLCByZWcpKSB7CisgICAgICAgICAg ICAgICAgZ290byBvYXJnX2VuZDsKKyAgICAgICAgfQorICAgICAgICByZWcgPSB0Y2dfcmVnX2Fs bG9jKHMsIHRjZ190YXJnZXRfYXZhaWxhYmxlX3JlZ3NbdHMtPnR5cGVdLCBhbGxvY2F0ZWRfcmVn cyk7CisKKyAgICAgICAgdGNnX3JlZ3NldF9zZXRfcmVnKGFsbG9jYXRlZF9yZWdzLCByZWcpOwor ICAgICAgICAvKiBpZiBhIGZpeGVkIHJlZ2lzdGVyIGlzIHVzZWQsIHRoZW4gYSBtb3ZlIHdpbGwg YmUgZG9uZSBhZnRlcndhcmRzICovCisgICAgICAgIGlmICghdHMtPmZpeGVkX3JlZykgeworICAg ICAgICAgICAgaWYgKHRzLT52YWxfdHlwZSA9PSBURU1QX1ZBTF9SRUcpCisgICAgICAgICAgICAg ICAgcy0+cmVnX3RvX3RlbXBbdHMtPnJlZ10gPSAtMTsKKyAgICAgICAgICAgIHRzLT52YWxfdHlw ZSA9IFRFTVBfVkFMX1JFRzsKKyAgICAgICAgICAgIHRzLT5yZWcgPSByZWc7CisgICAgICAgICAg ICAvKiB0ZW1wIHZhbHVlIGlzIG1vZGlmaWVkLCBzbyB0aGUgdmFsdWUga2VwdCBpbiBtZW1vcnkg aXMKKyAgICAgICAgICAgIHBvdGVudGlhbGx5IG5vdCB0aGUgc2FtZSAqLworICAgICAgICAgICAg dHMtPm1lbV9jb2hlcmVudCA9IDA7IAorICAgICAgICAgICAgcy0+cmVnX3RvX3RlbXBbcmVnXSA9 IGFyZzsKKyAgICAgICAgfQorb2FyZ19lbmQ6CisgICAgICAgIG5ld19hcmdzW2krbmJfcGFyYW1z KzJdID0gcmVnOworICAgIH0KKworCisgICAgLyogZW1pdCBpbnN0cnVjdGlvbiAqLworICAgIHRj Z19vdXRfb3Aocywgb3BjLCBuZXdfYXJncywgY29uc3RfYXJncyk7CisgICAgCisgICAgLyogbW92 ZSB0aGUgb3V0cHV0cyBpbiB0aGUgY29ycmVjdCByZWdpc3RlciBpZiBuZWVkZWQgKi8KKyAgICBm b3IoaSA9IDA7IGkgPCBuYl9vYXJnczsgaSsrKSB7CisgICAgICAgIHRzID0gJnMtPnRlbXBzW2Fy Z3NbaV1dOworICAgICAgICByZWcgPSBuZXdfYXJnc1tpK25iX3BhcmFtcysyXTsKKyAgICAgICAg aWYgKHRzLT5maXhlZF9yZWcgJiYgdHMtPnJlZyAhPSByZWcpIHsKKyAgICAgICAgICAgIHRjZ19v dXRfbW92KHMsIHRzLT5yZWcsIHJlZyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g bmJfaWFyZ3MgKyBuYl9vYXJncyArIGRlZi0+bmJfY2FyZ3MgKyAxOworfQorCisjZWxzZQorCiBz dGF0aWMgaW50IHRjZ19yZWdfYWxsb2NfY2FsbChUQ0dDb250ZXh0ICpzLCBjb25zdCBUQ0dPcERl ZiAqZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wYywgY29uc3QgVENH QXJnICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRl YWRfaWFyZ3MpCkBAIC0xODY4LDYgKzIwMDQsOSBAQCBzdGF0aWMgaW50IHRjZ19yZWdfYWxsb2Nf Y2FsbChUQ0dDb250ZXh0ICpzLCBjb25zdCBUQ0dPcERlZiAqZGVmLAogICAgIHJldHVybiBuYl9p YXJncyArIG5iX29hcmdzICsgZGVmLT5uYl9jYXJncyArIDE7CiB9CiAKKworI2VuZGlmCisKICNp ZmRlZiBDT05GSUdfUFJPRklMRVIKIAogc3RhdGljIGludDY0X3QgdGNnX3RhYmxlX29wX2NvdW50 W05CX09QU107CmRpZmYgLS1naXQgYS90Y2cvdGNpLmMgYi90Y2cvdGNpLmMKaW5kZXggMGJhNjA1 Yi4uM2U0MTY1YiAxMDA2NDQKLS0tIGEvdGNnL3RjaS5jCisrKyBiL3RjZy90Y2kuYwpAQCAtNDEs OCArNDEsMjMgQEAKICNkZWZpbmUgVFJBQ0UoKSAoKHZvaWQpMCkKICNlbmRpZgogCi10eXBlZGVm IHRjZ190YXJnZXRfdWxvbmcgKCpoZWxwZXJfZnVuY3Rpb24pKHRjZ190YXJnZXRfdWxvbmcsIHRj Z190YXJnZXRfdWxvbmcsCit0eXBlZGVmIHRjZ190YXJnZXRfdWxvbmcgKCpoZWxwZXJfZnVuY3Rp b24wKSh2b2lkKTsKK3R5cGVkZWYgdGNnX3RhcmdldF91bG9uZyAoKmhlbHBlcl9mdW5jdGlvbjEp KHRjZ190YXJnZXRfdWxvbmcpOwordHlwZWRlZiB0Y2dfdGFyZ2V0X3Vsb25nICgqaGVscGVyX2Z1 bmN0aW9uMikodGNnX3RhcmdldF91bG9uZywgdGNnX3RhcmdldF91bG9uZyk7Cit0eXBlZGVmIHRj Z190YXJnZXRfdWxvbmcgKCpoZWxwZXJfZnVuY3Rpb24zKSh0Y2dfdGFyZ2V0X3Vsb25nLCB0Y2df dGFyZ2V0X3Vsb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfdGFyZ2V0X3Vsb25nKTsKK3R5cGVkZWYgdGNnX3RhcmdldF91bG9uZyAoKmhlbHBlcl9m dW5jdGlvbjQpKHRjZ190YXJnZXRfdWxvbmcsIHRjZ190YXJnZXRfdWxvbmcsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ190YXJnZXRfdWxvbmcsIHRjZ190 YXJnZXRfdWxvbmcpOworI2lmIFRDR19UQVJHRVRfUkVHX0JJVFMgPT0gMzIKKwordHlwZWRlZiB1 aW50NjRfdCAoKmhlbHBlcl9mdW5jdGlvbjBfcjY0KSh2b2lkKTsKK3R5cGVkZWYgdWludDY0X3Qg KCpoZWxwZXJfZnVuY3Rpb24xX3I2NCkodGNnX3RhcmdldF91bG9uZyk7Cit0eXBlZGVmIHVpbnQ2 NF90ICgqaGVscGVyX2Z1bmN0aW9uMl9yNjQpKHRjZ190YXJnZXRfdWxvbmcsIHRjZ190YXJnZXRf dWxvbmcpOwordHlwZWRlZiB1aW50NjRfdCAoKmhlbHBlcl9mdW5jdGlvbjNfcjY0KSh0Y2dfdGFy Z2V0X3Vsb25nLCB0Y2dfdGFyZ2V0X3Vsb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0Y2dfdGFyZ2V0X3Vsb25nKTsKK3R5cGVkZWYgdWludDY0X3QgKCpo ZWxwZXJfZnVuY3Rpb240X3I2NCkodGNnX3RhcmdldF91bG9uZywgdGNnX3RhcmdldF91bG9uZywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNnX3RhcmdldF91 bG9uZywgdGNnX3RhcmdldF91bG9uZyk7CisjZW5kaWYKIAogI2lmIGRlZmluZWQoVEFSR0VUX0kz ODYpCiBzdHJ1Y3QgQ1BVWDg2U3RhdGUgKmVudjsKQEAgLTQyNywxNSArNDQyLDEzOCBAQCB1bnNp Z25lZCBsb25nIHRjZ19xZW11X3RiX2V4ZWModWludDhfdCAqdGJfcHRyKQogICAgICAgICBjYXNl IElOREVYX29wX3NldF9sYWJlbDoKICAgICAgICAgICAgIFRPRE8oKTsKICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICBjYXNlIElOREVYX29wX2NhbGw6Ci0gICAgICAgICAgICB0MCA9IHRjaV9y ZWFkX3JpKCZ0Yl9wdHIpOwotICAgICAgICAgICAgdDAgPSAoKGhlbHBlcl9mdW5jdGlvbil0MCko dGNpX3JlYWRfcmVnKFRDR19SRUdfUjApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGNpX3JlYWRfcmVnKFRDR19SRUdfUjEpLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGNpX3JlYWRfcmVnKFRDR19SRUdfUjIpLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNpX3JlYWRfcmVnKFRDR19SRUdfUjMpKTsKLSAg ICAgICAgICAgIC8vIFRPRE86IGZpeCBmb3IgMzIgYml0IGhvc3QgLyA2NCBiaXQgdGFyZ2V0Lgot ICAgICAgICAgICAgdGNpX3dyaXRlX3JlZyhUQ0dfUkVHX1IwLCB0MCk7CisgICAgICAgIGNhc2Ug SU5ERVhfb3BfY2FsbDBfcjA6CisgICAgICAgICAgICB0MCA9IHRjaV9yZWFkX2koJnRiX3B0cik7 CisgICAgICAgICAgICAoKGhlbHBlcl9mdW5jdGlvbjApdDApKCk7CisgICAgICAgICAgICBicmVh azsKKyAgICAgICAgY2FzZSBJTkRFWF9vcF9jYWxsMV9yMDoKKyAgICAgICAgICAgIHQwID0gdGNp X3JlYWRfaSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHQxID0gdGNpX3JlYWRfcmkoJnRiX3B0cik7 CisgICAgICAgICAgICAoKGhlbHBlcl9mdW5jdGlvbjEpdDApKHQxKTsKKyAgICAgICAgICAgIGJy ZWFrOworICAgICAgICBjYXNlIElOREVYX29wX2NhbGwyX3IwOgorICAgICAgICAgICAgdDAgPSB0 Y2lfcmVhZF9pKCZ0Yl9wdHIpOworICAgICAgICAgICAgdDEgPSB0Y2lfcmVhZF9yaSgmdGJfcHRy KTsKKyAgICAgICAgICAgIHQyID0gdGNpX3JlYWRfcmkoJnRiX3B0cik7CisgICAgICAgICAgICAo KGhlbHBlcl9mdW5jdGlvbjIpdDApKHQxLHQyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICBjYXNlIElOREVYX29wX2NhbGwzX3IwOgorICAgICAgICAgICAgdDAgPSB0Y2lfcmVhZF9pKCZ0 Yl9wdHIpOworICAgICAgICAgICAgdDEgPSB0Y2lfcmVhZF9yaSgmdGJfcHRyKTsKKyAgICAgICAg ICAgIHQyID0gdGNpX3JlYWRfcmkoJnRiX3B0cik7CisgICAgICAgICAgICB0MyA9IHRjaV9yZWFk X3JpKCZ0Yl9wdHIpOworICAgICAgICAgICAgKChoZWxwZXJfZnVuY3Rpb24zKXQwKSh0MSx0Mix0 Myk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJTkRFWF9vcF9jYWxsNF9yMDoK KyAgICAgICAgICAgIHQwID0gdGNpX3JlYWRfaSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHQxID0g dGNpX3JlYWRfcmkoJnRiX3B0cik7CisgICAgICAgICAgICB0MiA9IHRjaV9yZWFkX3JpKCZ0Yl9w dHIpOworICAgICAgICAgICAgdDMgPSB0Y2lfcmVhZF9yaSgmdGJfcHRyKTsKKyAgICAgICAgICAg IHQ0ID0gdGNpX3JlYWRfcmkoJnRiX3B0cik7CisgICAgICAgICAgICAoKGhlbHBlcl9mdW5jdGlv bjQpdDApKHQxLHQyLHQzLHQ0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElO REVYX29wX2NhbGwwX3IxOgorICAgICAgICAgICAgdDAgPSB0Y2lfcmVhZF9pKCZ0Yl9wdHIpOwor ICAgICAgICAgICAgdDAgPSAoKGhlbHBlcl9mdW5jdGlvbjApdDApKCk7CisgICAgICAgICAgICB0 NSA9ICp0Yl9wdHIrKzsKKyAgICAgICAgICAgIHRjaV93cml0ZV9yZWcodDUsdDApOworCisgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJTkRFWF9vcF9jYWxsMV9yMToKKyAgICAgICAg ICAgIHQwID0gdGNpX3JlYWRfaSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHQxID0gdGNpX3JlYWRf cmkoJnRiX3B0cik7CisgICAgICAgICAgICB0MCA9ICgoaGVscGVyX2Z1bmN0aW9uMSl0MCkodDEp OworICAgICAgICAgICAgdDUgPSAqdGJfcHRyKys7CisgICAgICAgICAgICB0Y2lfd3JpdGVfcmVn KHQ1LHQwKTsKKworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSU5ERVhfb3BfY2Fs bDJfcjE6CisgICAgICAgICAgICB0MCA9IHRjaV9yZWFkX2koJnRiX3B0cik7CisgICAgICAgICAg ICB0MSA9IHRjaV9yZWFkX3JpKCZ0Yl9wdHIpOworICAgICAgICAgICAgdDIgPSB0Y2lfcmVhZF9y aSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHQwID0gKChoZWxwZXJfZnVuY3Rpb24yKXQwKSh0MSx0 Mik7CisgICAgICAgICAgICB0NSA9ICp0Yl9wdHIrKzsKKyAgICAgICAgICAgIHRjaV93cml0ZV9y ZWcodDUsdDApOworCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJTkRFWF9vcF9j YWxsM19yMToKKyAgICAgICAgICAgIHQwID0gdGNpX3JlYWRfaSgmdGJfcHRyKTsKKyAgICAgICAg ICAgIHQxID0gdGNpX3JlYWRfcmkoJnRiX3B0cik7CisgICAgICAgICAgICB0MiA9IHRjaV9yZWFk X3JpKCZ0Yl9wdHIpOworICAgICAgICAgICAgdDMgPSB0Y2lfcmVhZF9yaSgmdGJfcHRyKTsKKyAg ICAgICAgICAgIHQwID0gKChoZWxwZXJfZnVuY3Rpb24zKXQwKSh0MSx0Mix0Myk7CisgICAgICAg ICAgICB0NSA9ICp0Yl9wdHIrKzsKKyAgICAgICAgICAgIHRjaV93cml0ZV9yZWcodDUsdDApOwor CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJTkRFWF9vcF9jYWxsNF9yMToKKyAg ICAgICAgICAgIHQwID0gdGNpX3JlYWRfaSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHQxID0gdGNp X3JlYWRfcmkoJnRiX3B0cik7CisgICAgICAgICAgICB0MiA9IHRjaV9yZWFkX3JpKCZ0Yl9wdHIp OworICAgICAgICAgICAgdDMgPSB0Y2lfcmVhZF9yaSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHQ0 ID0gdGNpX3JlYWRfcmkoJnRiX3B0cik7CisgICAgICAgICAgICB0MCA9ICgoaGVscGVyX2Z1bmN0 aW9uNCl0MCkodDEsdDIsdDMsdDQpOworICAgICAgICAgICAgdDUgPSAqdGJfcHRyKys7CisgICAg ICAgICAgICB0Y2lfd3JpdGVfcmVnKHQ1LHQwKTsKKwogICAgICAgICAgICAgYnJlYWs7CisjaWYg VENHX1RBUkdFVF9SRUdfQklUUyA9PSAzMgorICAgICAgICBjYXNlIElOREVYX29wX2NhbGwwX3Iy OgorICAgICAgICAgICAgdDAgPSB0Y2lfcmVhZF9pKCZ0Yl9wdHIpOworICAgICAgICAgICAgdTY0 ID0gKChoZWxwZXJfZnVuY3Rpb24wX3I2NCl0MCkoKTsKKyAgICAgICAgICAgIHQ1ID0gKnRiX3B0 cisrOworICAgICAgICAgICAgdGNpX3dyaXRlX3JlZyh0NSx1NjQpOworICAgICAgICAgICAgdDUg PSAqdGJfcHRyKys7CisgICAgICAgICAgICB0Y2lfd3JpdGVfcmVnKHQ1LCB1NjQ+PjMyKTsgCisK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElOREVYX29wX2NhbGwxX3IyOgorICAg ICAgICAgICAgdDAgPSB0Y2lfcmVhZF9pKCZ0Yl9wdHIpOworICAgICAgICAgICAgdDEgPSB0Y2lf cmVhZF9yaSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHU2NCA9ICgoaGVscGVyX2Z1bmN0aW9uMV9y NjQpdDApKHQxKTsKKyAgICAgICAgICAgIHQ1ID0gKnRiX3B0cisrOworICAgICAgICAgICAgdGNp X3dyaXRlX3JlZyh0NSx1NjQpOworICAgICAgICAgICAgdDUgPSAqdGJfcHRyKys7CisgICAgICAg ICAgICB0Y2lfd3JpdGVfcmVnKHQ1LCB1NjQ+PjMyKTsgCisKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBjYXNlIElOREVYX29wX2NhbGwyX3IyOgorICAgICAgICAgICAgdDAgPSB0Y2lfcmVh ZF9pKCZ0Yl9wdHIpOworICAgICAgICAgICAgdDEgPSB0Y2lfcmVhZF9yaSgmdGJfcHRyKTsKKyAg ICAgICAgICAgIHQyID0gdGNpX3JlYWRfcmkoJnRiX3B0cik7CisgICAgICAgICAgICB1NjQgPSAo KGhlbHBlcl9mdW5jdGlvbjJfcjY0KXQwKSh0MSx0Mik7CisgICAgICAgICAgICB0NSA9ICp0Yl9w dHIrKzsKKyAgICAgICAgICAgIHRjaV93cml0ZV9yZWcodDUsdTY0KTsKKyAgICAgICAgICAgIHQ1 ID0gKnRiX3B0cisrOworICAgICAgICAgICAgdGNpX3dyaXRlX3JlZyh0NSwgdTY0Pj4zMik7IAor CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJTkRFWF9vcF9jYWxsM19yMjoKKyAg ICAgICAgICAgIHQwID0gdGNpX3JlYWRfaSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHQxID0gdGNp X3JlYWRfcmkoJnRiX3B0cik7CisgICAgICAgICAgICB0MiA9IHRjaV9yZWFkX3JpKCZ0Yl9wdHIp OworICAgICAgICAgICAgdDMgPSB0Y2lfcmVhZF9yaSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHU2 NCA9ICgoaGVscGVyX2Z1bmN0aW9uM19yNjQpdDApKHQxLHQyLHQzKTsKKyAgICAgICAgICAgIHQ1 ID0gKnRiX3B0cisrOworICAgICAgICAgICAgdGNpX3dyaXRlX3JlZyh0NSx1NjQpOworICAgICAg ICAgICAgdDUgPSAqdGJfcHRyKys7CisgICAgICAgICAgICB0Y2lfd3JpdGVfcmVnKHQ1LCB1NjQ+ PjMyKTsgCisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElOREVYX29wX2NhbGw0 X3IyOgorICAgICAgICAgICAgdDAgPSB0Y2lfcmVhZF9pKCZ0Yl9wdHIpOworICAgICAgICAgICAg dDEgPSB0Y2lfcmVhZF9yaSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHQyID0gdGNpX3JlYWRfcmko JnRiX3B0cik7CisgICAgICAgICAgICB0MyA9IHRjaV9yZWFkX3JpKCZ0Yl9wdHIpOworICAgICAg ICAgICAgdDQgPSB0Y2lfcmVhZF9yaSgmdGJfcHRyKTsKKyAgICAgICAgICAgIHU2NCA9ICgoaGVs cGVyX2Z1bmN0aW9uNF9yNjQpdDApKHQxLHQyLHQzLHQ0KTsKKyAgICAgICAgICAgIHQ1ID0gKnRi X3B0cisrOworICAgICAgICAgICAgdGNpX3dyaXRlX3JlZyh0NSx1NjQpOworICAgICAgICAgICAg dDUgPSAqdGJfcHRyKys7CisgICAgICAgICAgICB0Y2lfd3JpdGVfcmVnKHQ1LCB1NjQ+PjMyKTsg CisKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgIGNhc2UgSU5ERVhfb3Bfam1w OgogICAgICAgICBjYXNlIElOREVYX29wX2JyOgogICAgICAgICAgICAgdDAgPSAqKHVpbnQ2NF90 ICopdGJfcHRyOwotLSAKMS42LjMubXN5c2dpdC4wCgo= --000e0cd15618d2645a0476902b17 Content-Type: text/plain; charset=US-ASCII; name="0005-tci-speed-optimization.patch" Content-Disposition: attachment; filename="0005-tci-speed-optimization.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g149g9dp4 U3ViamVjdDogW1BBVENIIDUvNV0gdGNpOiBzcGVlZCBvcHRpbWl6YXRpb24KCi0tLQogdGNnL3Rj aS5jIHwgICA2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMzMgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGNnL3RjaS5jIGIvdGNnL3RjaS5jCmluZGV4IDNlNDE2 NWIuLjg2MjhlNjkgMTAwNjQ0Ci0tLSBhL3RjZy90Y2kuYworKysgYi90Y2cvdGNpLmMKQEAgLTcx LDg4ICs3MSw4OCBAQCB1aW50OF90ICogdGNpX3RiX3B0cjsKIAogc3RhdGljIHRjZ190YXJnZXRf dWxvbmcgdGNpX3JlZ1tUQ0dfVEFSR0VUX05CX1JFR1NdOwogCi1zdGF0aWMgdGNnX3RhcmdldF91 bG9uZyB0Y2lfcmVhZF9yZWcodWludDMyX3QgaW5kZXgpCitzdGF0aWMgaW5saW5lIHRjZ190YXJn ZXRfdWxvbmcgdGNpX3JlYWRfcmVnKHVpbnQzMl90IGluZGV4KQogewogICAgIGFzc2VydChpbmRl eCA8IEFSUkFZX1NJWkUodGNpX3JlZykpOwogICAgIHJldHVybiB0Y2lfcmVnW2luZGV4XTsKIH0K IAotc3RhdGljIHVpbnQ4X3QgdGNpX3JlYWRfcmVnOCh1aW50MzJfdCBpbmRleCkKK3N0YXRpYyBp bmxpbmUgdWludDhfdCB0Y2lfcmVhZF9yZWc4KHVpbnQzMl90IGluZGV4KQogewogICAgIHJldHVy biAodWludDhfdCl0Y2lfcmVhZF9yZWcoaW5kZXgpOwogfQogCi1zdGF0aWMgaW50OF90IHRjaV9y ZWFkX3JlZzhzKHVpbnQzMl90IGluZGV4KQorc3RhdGljIGlubGluZSBpbnQ4X3QgdGNpX3JlYWRf cmVnOHModWludDMyX3QgaW5kZXgpCiB7CiAgICAgcmV0dXJuIChpbnQ4X3QpdGNpX3JlYWRfcmVn KGluZGV4KTsKIH0KIAotc3RhdGljIHVpbnQxNl90IHRjaV9yZWFkX3JlZzE2KHVpbnQzMl90IGlu ZGV4KQorc3RhdGljIGlubGluZSB1aW50MTZfdCB0Y2lfcmVhZF9yZWcxNih1aW50MzJfdCBpbmRl eCkKIHsKICAgICByZXR1cm4gKHVpbnQxNl90KXRjaV9yZWFkX3JlZyhpbmRleCk7CiB9CiAKLXN0 YXRpYyBpbnQxNl90IHRjaV9yZWFkX3JlZzE2cyh1aW50MzJfdCBpbmRleCkKK3N0YXRpYyBpbmxp bmUgaW50MTZfdCB0Y2lfcmVhZF9yZWcxNnModWludDMyX3QgaW5kZXgpCiB7CiAgICAgcmV0dXJu IChpbnQxNl90KXRjaV9yZWFkX3JlZyhpbmRleCk7CiB9CiAKLXN0YXRpYyB1aW50MzJfdCB0Y2lf cmVhZF9yZWczMih1aW50MzJfdCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgdGNpX3Jl YWRfcmVnMzIodWludDMyX3QgaW5kZXgpCiB7CiAgICAgcmV0dXJuICh1aW50MzJfdCl0Y2lfcmVh ZF9yZWcoaW5kZXgpOwogfQogCiAjaWYgVENHX1RBUkdFVF9SRUdfQklUUyA9PSA2NAotc3RhdGlj IGludDMyX3QgdGNpX3JlYWRfcmVnMzJzKHVpbnQzMl90IGluZGV4KQorc3RhdGljIGlubGluZSBp bnQzMl90IHRjaV9yZWFkX3JlZzMycyh1aW50MzJfdCBpbmRleCkKIHsKICAgICByZXR1cm4gKGlu dDMyX3QpdGNpX3JlYWRfcmVnKGluZGV4KTsKIH0KIAotc3RhdGljIHVpbnQ2NF90IHRjaV9yZWFk X3JlZzY0KHVpbnQzMl90IGluZGV4KQorc3RhdGljIGlubGluZSB1aW50NjRfdCB0Y2lfcmVhZF9y ZWc2NCh1aW50MzJfdCBpbmRleCkKIHsKICAgICByZXR1cm4gdGNpX3JlYWRfcmVnKGluZGV4KTsK IH0KICNlbmRpZgogCi1zdGF0aWMgdm9pZCB0Y2lfd3JpdGVfcmVnKHVpbnQzMl90IGluZGV4LCB0 Y2dfdGFyZ2V0X3Vsb25nIHZhbHVlKQorc3RhdGljIGlubGluZSB2b2lkIHRjaV93cml0ZV9yZWco dWludDMyX3QgaW5kZXgsIHRjZ190YXJnZXRfdWxvbmcgdmFsdWUpCiB7CiAgICAgYXNzZXJ0KGlu ZGV4IDwgQVJSQVlfU0laRSh0Y2lfcmVnKSk7CiAgICAgYXNzZXJ0KGluZGV4ICE9IFRDR19BUkVH MCk7CiAgICAgdGNpX3JlZ1tpbmRleF0gPSB2YWx1ZTsKIH0KIAotc3RhdGljIHZvaWQgdGNpX3dy aXRlX3JlZzgodWludDMyX3QgaW5kZXgsIHVpbnQ4X3QgdmFsdWUpCitzdGF0aWMgaW5saW5lIHZv aWQgdGNpX3dyaXRlX3JlZzgodWludDMyX3QgaW5kZXgsIHVpbnQ4X3QgdmFsdWUpCiB7CiAgICAg dGNpX3dyaXRlX3JlZyhpbmRleCwgdmFsdWUpOwogfQogCi1zdGF0aWMgdm9pZCB0Y2lfd3JpdGVf cmVnOHModWludDMyX3QgaW5kZXgsIGludDhfdCB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCB0 Y2lfd3JpdGVfcmVnOHModWludDMyX3QgaW5kZXgsIGludDhfdCB2YWx1ZSkKIHsKICAgICB0Y2lf d3JpdGVfcmVnKGluZGV4LCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRjaV93cml0ZV9yZWcx NnModWludDMyX3QgaW5kZXgsIGludDE2X3QgdmFsdWUpCitzdGF0aWMgaW5saW5lIHZvaWQgdGNp X3dyaXRlX3JlZzE2cyh1aW50MzJfdCBpbmRleCwgaW50MTZfdCB2YWx1ZSkKIHsKICAgICB0Y2lf d3JpdGVfcmVnKGluZGV4LCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRjaV93cml0ZV9yZWcx Nih1aW50MzJfdCBpbmRleCwgdWludDE2X3QgdmFsdWUpCitzdGF0aWMgaW5saW5lIHZvaWQgdGNp X3dyaXRlX3JlZzE2KHVpbnQzMl90IGluZGV4LCB1aW50MTZfdCB2YWx1ZSkKIHsKICAgICB0Y2lf d3JpdGVfcmVnKGluZGV4LCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRjaV93cml0ZV9yZWcz Mih1aW50MzJfdCBpbmRleCwgdWludDMyX3QgdmFsdWUpCitzdGF0aWMgaW5saW5lIHZvaWQgdGNp X3dyaXRlX3JlZzMyKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCB2YWx1ZSkKIHsKICAgICB0Y2lf d3JpdGVfcmVnKGluZGV4LCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRjaV93cml0ZV9yZWcz MnModWludDMyX3QgaW5kZXgsIGludDMyX3QgdmFsdWUpCitzdGF0aWMgaW5saW5lIHZvaWQgdGNp X3dyaXRlX3JlZzMycyh1aW50MzJfdCBpbmRleCwgaW50MzJfdCB2YWx1ZSkKIHsKICAgICB0Y2lf d3JpdGVfcmVnKGluZGV4LCB2YWx1ZSk7CiB9CiAKICNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09 IDY0Ci1zdGF0aWMgdm9pZCB0Y2lfd3JpdGVfcmVnNjQodWludDMyX3QgaW5kZXgsIHVpbnQ2NF90 IHZhbHVlKQorc3RhdGljIGlubGluZSB2b2lkIHRjaV93cml0ZV9yZWc2NCh1aW50MzJfdCBpbmRl eCwgdWludDY0X3QgdmFsdWUpCiB7CiAgICAgdGNpX3dyaXRlX3JlZyhpbmRleCwgdmFsdWUpOwog fQpAQCAtMTYwLDE0ICsxNjAsMTQgQEAgc3RhdGljIHZvaWQgdGNpX3dyaXRlX3JlZzY0KHVpbnQz Ml90IGluZGV4LCB1aW50NjRfdCB2YWx1ZSkKIAogI2lmIFRDR19UQVJHRVRfUkVHX0JJVFMgPT0g MzIKIC8qIENyZWF0ZSBhIDY0IGJpdCB2YWx1ZSBmcm9tIHR3byAzMiBiaXQgdmFsdWVzLiAqLwot c3RhdGljIHVpbnQ2NF90IHRjaV91aW50NjQodWludDMyX3QgaGlnaCwgdWludDMyX3QgbG93KQor c3RhdGljIGlubGluZSB1aW50NjRfdCB0Y2lfdWludDY0KHVpbnQzMl90IGhpZ2gsIHVpbnQzMl90 IGxvdykKIHsKICAgICByZXR1cm4gKCh1aW50NjRfdCloaWdoIDw8IDMyKSArIGxvdzsKIH0KICNl bmRpZgogCiAvKiBSZWFkIGNvbnN0YW50IChuYXRpdmUgc2l6ZSkgZnJvbSBieXRlY29kZS4gKi8K LXN0YXRpYyB0Y2dfdGFyZ2V0X3Vsb25nIHRjaV9yZWFkX2kodWludDhfdCAqKnRiX3B0cikKK3N0 YXRpYyBpbmxpbmUgdGNnX3RhcmdldF91bG9uZyB0Y2lfcmVhZF9pKHVpbnQ4X3QgKip0Yl9wdHIp CiB7CiAgICAgdGNnX3RhcmdldF91bG9uZyB2YWx1ZSA9ICoodGNnX3RhcmdldF91bG9uZyAqKSgq dGJfcHRyKTsKICAgICAqdGJfcHRyICs9IHNpemVvZih0Y2dfdGFyZ2V0X3Vsb25nKTsKQEAgLTE3 NSw3ICsxNzUsNyBAQCBzdGF0aWMgdGNnX3RhcmdldF91bG9uZyB0Y2lfcmVhZF9pKHVpbnQ4X3Qg Kip0Yl9wdHIpCiB9CiAKIC8qIFJlYWQgY29uc3RhbnQgKDMyIGJpdCkgZnJvbSBieXRlY29kZS4g Ki8KLXN0YXRpYyB1aW50MzJfdCB0Y2lfcmVhZF9pMzIodWludDhfdCAqKnRiX3B0cikKK3N0YXRp YyBpbmxpbmUgdWludDMyX3QgdGNpX3JlYWRfaTMyKHVpbnQ4X3QgKip0Yl9wdHIpCiB7CiAgICAg dWludDMyX3QgdmFsdWUgPSAqKHVpbnQzMl90ICopKCp0Yl9wdHIpOwogICAgICp0Yl9wdHIgKz0g NDsKQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgdWludDMyX3QgdGNpX3JlYWRfaTMyKHVpbnQ4 X3QgKip0Yl9wdHIpCiAKICNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09IDY0CiAvKiBSZWFkIGNv bnN0YW50ICg2NCBiaXQpIGZyb20gYnl0ZWNvZGUuICovCi1zdGF0aWMgdWludDY0X3QgdGNpX3Jl YWRfaTY0KHVpbnQ4X3QgKip0Yl9wdHIpCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHRjaV9yZWFk X2k2NCh1aW50OF90ICoqdGJfcHRyKQogewogICAgIHVpbnQ2NF90IHZhbHVlID0gKih1aW50NjRf dCAqKSgqdGJfcHRyKTsKICAgICAqdGJfcHRyICs9IDg7CkBAIC0xOTMsNyArMTkzLDcgQEAgc3Rh dGljIHVpbnQ2NF90IHRjaV9yZWFkX2k2NCh1aW50OF90ICoqdGJfcHRyKQogI2VuZGlmCiAKIC8q IFJlYWQgaW5kZXhlZCByZWdpc3RlciAobmF0aXZlIHNpemUpIGZyb20gYnl0ZWNvZGUuICovCi1z dGF0aWMgdGNnX3RhcmdldF91bG9uZyB0Y2lfcmVhZF9yKHVpbnQ4X3QgKip0Yl9wdHIpCitzdGF0 aWMgaW5saW5lIHRjZ190YXJnZXRfdWxvbmcgdGNpX3JlYWRfcih1aW50OF90ICoqdGJfcHRyKQog ewogICAgIHRjZ190YXJnZXRfdWxvbmcgdmFsdWUgPSB0Y2lfcmVhZF9yZWcoKip0Yl9wdHIpOwog ICAgICp0Yl9wdHIgKz0gMTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBzdGF0aWMgdGNnX3RhcmdldF91 bG9uZyB0Y2lfcmVhZF9yKHVpbnQ4X3QgKip0Yl9wdHIpCiB9CiAKIC8qIFJlYWQgaW5kZXhlZCBy ZWdpc3RlciAoOCBiaXQpIGZyb20gYnl0ZWNvZGUuICovCi1zdGF0aWMgdWludDhfdCB0Y2lfcmVh ZF9yOCh1aW50OF90ICoqdGJfcHRyKQorc3RhdGljIGlubGluZSB1aW50OF90IHRjaV9yZWFkX3I4 KHVpbnQ4X3QgKip0Yl9wdHIpCiB7CiAgICAgdWludDhfdCB2YWx1ZSA9IHRjaV9yZWFkX3JlZzgo Kip0Yl9wdHIpOwogICAgICp0Yl9wdHIgKz0gMTsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMg dWludDhfdCB0Y2lfcmVhZF9yOCh1aW50OF90ICoqdGJfcHRyKQogfQogCiAvKiBSZWFkIGluZGV4 ZWQgcmVnaXN0ZXIgKDggYml0IHNpZ25lZCkgZnJvbSBieXRlY29kZS4gKi8KLXN0YXRpYyBpbnQ4 X3QgdGNpX3JlYWRfcjhzKHVpbnQ4X3QgKip0Yl9wdHIpCitzdGF0aWMgaW5saW5lIGludDhfdCB0 Y2lfcmVhZF9yOHModWludDhfdCAqKnRiX3B0cikKIHsKICAgICBpbnQ4X3QgdmFsdWUgPSB0Y2lf cmVhZF9yZWc4cygqKnRiX3B0cik7CiAgICAgKnRiX3B0ciArPSAxOwpAQCAtMjE3LDcgKzIxNyw3 IEBAIHN0YXRpYyBpbnQ4X3QgdGNpX3JlYWRfcjhzKHVpbnQ4X3QgKip0Yl9wdHIpCiB9CiAKIC8q IFJlYWQgaW5kZXhlZCByZWdpc3RlciAoMTYgYml0KSBmcm9tIGJ5dGVjb2RlLiAqLwotc3RhdGlj IHVpbnQxNl90IHRjaV9yZWFkX3IxNih1aW50OF90ICoqdGJfcHRyKQorc3RhdGljIGlubGluZSB1 aW50MTZfdCB0Y2lfcmVhZF9yMTYodWludDhfdCAqKnRiX3B0cikKIHsKICAgICB1aW50MTZfdCB2 YWx1ZSA9IHRjaV9yZWFkX3JlZzE2KCoqdGJfcHRyKTsKICAgICAqdGJfcHRyICs9IDE7CkBAIC0y MjUsNyArMjI1LDcgQEAgc3RhdGljIHVpbnQxNl90IHRjaV9yZWFkX3IxNih1aW50OF90ICoqdGJf cHRyKQogfQogCiAvKiBSZWFkIGluZGV4ZWQgcmVnaXN0ZXIgKDE2IGJpdCBzaWduZWQpIGZyb20g Ynl0ZWNvZGUuICovCi1zdGF0aWMgaW50MTZfdCB0Y2lfcmVhZF9yMTZzKHVpbnQ4X3QgKip0Yl9w dHIpCitzdGF0aWMgaW5saW5lIGludDE2X3QgdGNpX3JlYWRfcjE2cyh1aW50OF90ICoqdGJfcHRy KQogewogICAgIHVpbnQxNl90IHZhbHVlID0gdGNpX3JlYWRfcmVnMTZzKCoqdGJfcHRyKTsKICAg ICAqdGJfcHRyICs9IDE7CkBAIC0yMzMsNyArMjMzLDcgQEAgc3RhdGljIGludDE2X3QgdGNpX3Jl YWRfcjE2cyh1aW50OF90ICoqdGJfcHRyKQogfQogCiAvKiBSZWFkIGluZGV4ZWQgcmVnaXN0ZXIg KDMyIGJpdCkgZnJvbSBieXRlY29kZS4gKi8KLXN0YXRpYyB1aW50MzJfdCB0Y2lfcmVhZF9yMzIo dWludDhfdCAqKnRiX3B0cikKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgdGNpX3JlYWRfcjMyKHVp bnQ4X3QgKip0Yl9wdHIpCiB7CiAgICAgdWludDMyX3QgdmFsdWUgPSB0Y2lfcmVhZF9yZWczMigq KnRiX3B0cik7CiAgICAgKnRiX3B0ciArPSAxOwpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB1 aW50MzJfdCB0Y2lfcmVhZF9yMzIodWludDhfdCAqKnRiX3B0cikKIAogI2lmIFRDR19UQVJHRVRf UkVHX0JJVFMgPT0gNjQKIC8qIFJlYWQgaW5kZXhlZCByZWdpc3RlciAoMzIgYml0IHNpZ25lZCkg ZnJvbSBieXRlY29kZS4gKi8KLXN0YXRpYyBpbnQzMl90IHRjaV9yZWFkX3IzMnModWludDhfdCAq KnRiX3B0cikKK3N0YXRpYyBpbmxpbmUgaW50MzJfdCB0Y2lfcmVhZF9yMzJzKHVpbnQ4X3QgKip0 Yl9wdHIpCiB7CiAgICAgaW50MzJfdCB2YWx1ZSA9IHRjaV9yZWFkX3JlZzMycygqKnRiX3B0cik7 CiAgICAgKnRiX3B0ciArPSAxOwpAQCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyBpbnQzMl90IHRj aV9yZWFkX3IzMnModWludDhfdCAqKnRiX3B0cikKIH0KIAogLyogUmVhZCBpbmRleGVkIHJlZ2lz dGVyICg2NCBiaXQpIGZyb20gYnl0ZWNvZGUuICovCi1zdGF0aWMgdWludDY0X3QgdGNpX3JlYWRf cjY0KHVpbnQ4X3QgKip0Yl9wdHIpCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHRjaV9yZWFkX3I2 NCh1aW50OF90ICoqdGJfcHRyKQogewogICAgIHVpbnQ2NF90IHZhbHVlID0gdGNpX3JlYWRfcmVn NjQoKip0Yl9wdHIpOwogICAgICp0Yl9wdHIgKz0gMTsKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0 aWMgdWludDY0X3QgdGNpX3JlYWRfcjY0KHVpbnQ4X3QgKip0Yl9wdHIpCiAjZW5kaWYKIAogLyog UmVhZCBpbmRleGVkIHJlZ2lzdGVyIG9yIGNvbnN0YW50IChuYXRpdmUgc2l6ZSkgZnJvbSBieXRl Y29kZS4gKi8KLXN0YXRpYyB0Y2dfdGFyZ2V0X3Vsb25nIHRjaV9yZWFkX3JpKHVpbnQ4X3QgKip0 Yl9wdHIpCitzdGF0aWMgaW5saW5lIHRjZ190YXJnZXRfdWxvbmcgdGNpX3JlYWRfcmkodWludDhf dCAqKnRiX3B0cikKIHsKICAgICBib29sIGNvbnN0X2FyZzsKICAgICB0Y2dfdGFyZ2V0X3Vsb25n IHZhbHVlOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyB0Y2dfdGFyZ2V0X3Vsb25nIHRjaV9y ZWFkX3JpKHVpbnQ4X3QgKip0Yl9wdHIpCiB9CiAKIC8qIFJlYWQgaW5kZXhlZCByZWdpc3RlciBv ciBjb25zdGFudCAoMzIgYml0KSBmcm9tIGJ5dGVjb2RlLiAqLwotc3RhdGljIHVpbnQzMl90IHRj aV9yZWFkX3JpMzIodWludDhfdCAqKnRiX3B0cikKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgdGNp X3JlYWRfcmkzMih1aW50OF90ICoqdGJfcHRyKQogewogICAgIGJvb2wgY29uc3RfYXJnOwogICAg IHVpbnQzMl90IHZhbHVlOwpAQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyB1aW50MzJfdCB0Y2lf cmVhZF9yaTMyKHVpbnQ4X3QgKip0Yl9wdHIpCiAKICNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09 IDY0CiAvKiBSZWFkIGluZGV4ZWQgcmVnaXN0ZXIgb3IgY29uc3RhbnQgKDY0IGJpdCkgZnJvbSBi eXRlY29kZS4gKi8KLXN0YXRpYyB1aW50NjRfdCB0Y2lfcmVhZF9yaTY0KHVpbnQ4X3QgKip0Yl9w dHIpCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHRjaV9yZWFkX3JpNjQodWludDhfdCAqKnRiX3B0 cikKIHsKICAgICBib29sIGNvbnN0X2FyZzsKICAgICB1aW50NjRfdCB2YWx1ZTsKQEAgLTMwNSw3 ICszMDUsNyBAQCBzdGF0aWMgdWludDY0X3QgdGNpX3JlYWRfcmk2NCh1aW50OF90ICoqdGJfcHRy KQogfQogI2VuZGlmCiAKLXN0YXRpYyBib29sIHRjaV9jb21wYXJlMzIodWludDMyX3QgdTAsIHVp bnQzMl90IHUxLCBUQ0dDb25kIGNvbmRpdGlvbikKK3N0YXRpYyBpbmxpbmUgYm9vbCB0Y2lfY29t cGFyZTMyKHVpbnQzMl90IHUwLCB1aW50MzJfdCB1MSwgVENHQ29uZCBjb25kaXRpb24pCiB7CiAg ICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBpbnQzMl90IGkwID0gdTA7CkBAIC0zNDcsNyAr MzQ3LDcgQEAgc3RhdGljIGJvb2wgdGNpX2NvbXBhcmUzMih1aW50MzJfdCB1MCwgdWludDMyX3Qg dTEsIFRDR0NvbmQgY29uZGl0aW9uKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBi b29sIHRjaV9jb21wYXJlNjQodWludDY0X3QgdTAsIHVpbnQ2NF90IHUxLCBUQ0dDb25kIGNvbmRp dGlvbikKK3N0YXRpYyBpbmxpbmUgYm9vbCB0Y2lfY29tcGFyZTY0KHVpbnQ2NF90IHUwLCB1aW50 NjRfdCB1MSwgVENHQ29uZCBjb25kaXRpb24pCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK ICAgICBpbnQ2NF90IGkwID0gdTA7Ci0tIAoxLjYuMy5tc3lzZ2l0LjAKCg== --000e0cd15618d2645a0476902b17--