From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C249C433EF for ; Tue, 12 Oct 2021 10:20:23 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D59EA6101D for ; Tue, 12 Oct 2021 10:20:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org D59EA6101D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:54056 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1maEtR-0001bO-Fl for qemu-devel@archiver.kernel.org; Tue, 12 Oct 2021 06:20:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50266) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1maEkv-0000X6-93 for qemu-devel@nongnu.org; Tue, 12 Oct 2021 06:11:33 -0400 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:12878) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1maEks-0006y1-CQ for qemu-devel@nongnu.org; Tue, 12 Oct 2021 06:11:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1634033490; x=1665569490; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=COjVNNEs1WBrot3xH6k/9y1BeG3mdPMZPJkwKH5HmOM=; b=fwhEumtZve1BdIDflSrzSwGwIXj9fEn1OOqyMgKCERAwonlVLYtwDnEE OB3PPPJIHcUenMK72EbybmRDtKOyKKt2vNIW8i0bx15jTz6sh7wap4Ddk Bb1O2jt7HH8pn0wglMYQTtRmdN7geoheI/aijBzmZFGr8oJtys4Sbd3hy s=; Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by alexa-out-sd-01.qualcomm.com with ESMTP; 12 Oct 2021 03:11:24 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg02-sd.qualcomm.com with ESMTP; 12 Oct 2021 03:11:23 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 563C41632; Tue, 12 Oct 2021 05:11:22 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v4 12/30] Hexagon HVX (target/hexagon) TCG generation Date: Tue, 12 Oct 2021 05:10:50 -0500 Message-Id: <1634033468-23566-13-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1634033468-23566-1-git-send-email-tsimpson@quicinc.com> References: <1634033468-23566-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.38; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-01.qualcomm.com X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ale@rev.ng, bcain@quicinc.com, tsimpson@quicinc.com, richard.henderson@linaro.org, f4bug@amsat.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" U2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0K IHRhcmdldC9oZXhhZ29uL3RyYW5zbGF0ZS5oIHwgIDYxICsrKysrKysrKysrKwogdGFyZ2V0L2hl eGFnb24vZ2VucHRyLmMgICAgfCAgMTUgKysrCiB0YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuYyB8 IDI0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDMgZmls ZXMgY2hhbmdlZCwgMzE1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvdGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmggYi90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUu aAppbmRleCA3MDNmZDEzLi5mY2NmYjk0IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi90cmFu c2xhdGUuaAorKysgYi90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuaApAQCAtMjksNiArMjksNyBA QCB0eXBlZGVmIHN0cnVjdCBEaXNhc0NvbnRleHQgewogICAgIHVpbnQzMl90IG1lbV9pZHg7CiAg ICAgdWludDMyX3QgbnVtX3BhY2tldHM7CiAgICAgdWludDMyX3QgbnVtX2luc25zOworICAgIHVp bnQzMl90IG51bV9odnhfaW5zbnM7CiAgICAgaW50IHJlZ19sb2dbUkVHX1dSSVRFU19NQVhdOwog ICAgIGludCByZWdfbG9nX2lkeDsKICAgICBERUNMQVJFX0JJVE1BUChyZWdzX3dyaXR0ZW4sIFRP VEFMX1BFUl9USFJFQURfUkVHUyk7CkBAIC0zNyw2ICszOCwyMCBAQCB0eXBlZGVmIHN0cnVjdCBE aXNhc0NvbnRleHQgewogICAgIERFQ0xBUkVfQklUTUFQKHByZWdzX3dyaXR0ZW4sIE5VTV9QUkVH Uyk7CiAgICAgdWludDhfdCBzdG9yZV93aWR0aFtTVE9SRVNfTUFYXTsKICAgICBib29sIHMxX3N0 b3JlX3Byb2Nlc3NlZDsKKyAgICBpbnQgZnV0dXJlX3ZyZWdzX2lkeDsKKyAgICBpbnQgZnV0dXJl X3ZyZWdzX251bVtWRUNUT1JfVEVNUFNfTUFYXTsKKyAgICBpbnQgdG1wX3ZyZWdzX2lkeDsKKyAg ICBpbnQgdG1wX3ZyZWdzX251bVtWRUNUT1JfVEVNUFNfTUFYXTsKKyAgICBpbnQgdnJlZ19sb2db TlVNX1ZSRUdTXTsKKyAgICBib29sIHZyZWdfaXNfcHJlZGljYXRlZFtOVU1fVlJFR1NdOworICAg IGludCB2cmVnX2xvZ19pZHg7CisgICAgREVDTEFSRV9CSVRNQVAodnJlZ3NfdXBkYXRlZF90bXAs IE5VTV9WUkVHUyk7CisgICAgREVDTEFSRV9CSVRNQVAodnJlZ3NfdXBkYXRlZCwgTlVNX1ZSRUdT KTsKKyAgICBERUNMQVJFX0JJVE1BUCh2cmVnc19zZWxlY3QsIE5VTV9WUkVHUyk7CisgICAgaW50 IHFyZWdfbG9nW05VTV9RUkVHU107CisgICAgYm9vbCBxcmVnX2lzX3ByZWRpY2F0ZWRbTlVNX1FS RUdTXTsKKyAgICBpbnQgcXJlZ19sb2dfaWR4OworICAgIGJvb2wgcHJlX2NvbW1pdDsKIH0gRGlz YXNDb250ZXh0OwogCiBzdGF0aWMgaW5saW5lIHZvaWQgY3R4X2xvZ19yZWdfd3JpdGUoRGlzYXND b250ZXh0ICpjdHgsIGludCBybnVtKQpAQCAtNjcsNiArODIsNDYgQEAgc3RhdGljIGlubGluZSBi b29sIGlzX3ByZWxvYWRlZChEaXNhc0NvbnRleHQgKmN0eCwgaW50IG51bSkKICAgICByZXR1cm4g dGVzdF9iaXQobnVtLCBjdHgtPnJlZ3Nfd3JpdHRlbik7CiB9CiAKK2ludHB0cl90IGN0eF9mdXR1 cmVfdnJlZ19vZmYoRGlzYXNDb250ZXh0ICpjdHgsIGludCByZWdudW0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBudW0sIGJvb2wgYWxsb2Nfb2spOworaW50cHRyX3QgY3R4X3Rt cF92cmVnX29mZihEaXNhc0NvbnRleHQgKmN0eCwgaW50IHJlZ251bSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IG51bSwgYm9vbCBhbGxvY19vayk7CisKK3N0YXRpYyBpbmxpbmUgdm9p ZCBjdHhfbG9nX3ZyZWdfd3JpdGUoRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBybnVtLCBWUmVnV3JpdGVUeXBlIHR5cGUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfcHJlZGljYXRlZCkKK3sK KyAgICBpZiAodHlwZSAhPSBFWFRfVE1QKSB7CisgICAgICAgIGN0eC0+dnJlZ19sb2dbY3R4LT52 cmVnX2xvZ19pZHhdID0gcm51bTsKKyAgICAgICAgY3R4LT52cmVnX2lzX3ByZWRpY2F0ZWRbY3R4 LT52cmVnX2xvZ19pZHhdID0gaXNfcHJlZGljYXRlZDsKKyAgICAgICAgY3R4LT52cmVnX2xvZ19p ZHgrKzsKKworICAgICAgICBzZXRfYml0KHJudW0sIGN0eC0+dnJlZ3NfdXBkYXRlZCk7CisgICAg fQorICAgIGlmICh0eXBlID09IEVYVF9ORVcpIHsKKyAgICAgICAgc2V0X2JpdChybnVtLCBjdHgt PnZyZWdzX3NlbGVjdCk7CisgICAgfQorICAgIGlmICh0eXBlID09IEVYVF9UTVApIHsKKyAgICAg ICAgc2V0X2JpdChybnVtLCBjdHgtPnZyZWdzX3VwZGF0ZWRfdG1wKTsKKyAgICB9Cit9CisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBjdHhfbG9nX3ZyZWdfd3JpdGVfcGFpcihEaXNhc0NvbnRleHQgKmN0 eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm51bSwg VlJlZ1dyaXRlVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgaXNfcHJlZGljYXRlZCkKK3sKKyAgICBjdHhfbG9nX3ZyZWdfd3JpdGUoY3R4 LCBybnVtIF4gMCwgdHlwZSwgaXNfcHJlZGljYXRlZCk7CisgICAgY3R4X2xvZ192cmVnX3dyaXRl KGN0eCwgcm51bSBeIDEsIHR5cGUsIGlzX3ByZWRpY2F0ZWQpOworfQorCitzdGF0aWMgaW5saW5l IHZvaWQgY3R4X2xvZ19xcmVnX3dyaXRlKERpc2FzQ29udGV4dCAqY3R4LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm51bSwgYm9vbCBpc19wcmVkaWNhdGVkKQor eworICAgIGN0eC0+cXJlZ19sb2dbY3R4LT5xcmVnX2xvZ19pZHhdID0gcm51bTsKKyAgICBjdHgt PnFyZWdfaXNfcHJlZGljYXRlZFtjdHgtPnFyZWdfbG9nX2lkeF0gPSBpc19wcmVkaWNhdGVkOwor ICAgIGN0eC0+cXJlZ19sb2dfaWR4Kys7Cit9CisKIGV4dGVybiBUQ0d2IGhleF9ncHJbVE9UQUxf UEVSX1RIUkVBRF9SRUdTXTsKIGV4dGVybiBUQ0d2IGhleF9wcmVkW05VTV9QUkVHU107CiBleHRl cm4gVENHdiBoZXhfbmV4dF9QQzsKQEAgLTg1LDYgKzE0MCwxMiBAQCBleHRlcm4gVENHdiBoZXhf ZGN6ZXJvX2FkZHI7CiBleHRlcm4gVENHdiBoZXhfbGxzY19hZGRyOwogZXh0ZXJuIFRDR3YgaGV4 X2xsc2NfdmFsOwogZXh0ZXJuIFRDR3ZfaTY0IGhleF9sbHNjX3ZhbF9pNjQ7CitleHRlcm4gVENH diBoZXhfVlJlZ3NfdXBkYXRlZDsKK2V4dGVybiBUQ0d2IGhleF9RUmVnc191cGRhdGVkOworZXh0 ZXJuIFRDR3YgaGV4X3ZzdG9yZV9hZGRyW1ZTVE9SRVNfTUFYXTsKK2V4dGVybiBUQ0d2IGhleF92 c3RvcmVfc2l6ZVtWU1RPUkVTX01BWF07CitleHRlcm4gVENHdiBoZXhfdnN0b3JlX3BlbmRpbmdb VlNUT1JFU19NQVhdOwogCitib29sIGlzX2dhdGhlcl9zdG9yZV9pbnNuKEluc24gKmluc24sIFBh Y2tldCAqcGt0KTsKIHZvaWQgcHJvY2Vzc19zdG9yZShEaXNhc0NvbnRleHQgKmN0eCwgUGFja2V0 ICpwa3QsIGludCBzbG90X251bSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29u L2dlbnB0ci5jIGIvdGFyZ2V0L2hleGFnb24vZ2VucHRyLmMKaW5kZXggNGEyMWZhNS4uZDE2ZmY3 NCAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24vZ2VucHRyLmMKKysrIGIvdGFyZ2V0L2hleGFn b24vZ2VucHRyLmMKQEAgLTE2NSw2ICsxNjUsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3Jl YWRfY3RybF9yZWcoRGlzYXNDb250ZXh0ICpjdHgsIGNvbnN0IGludCByZWdfbnVtLAogICAgIH0g ZWxzZSBpZiAocmVnX251bSA9PSBIRVhfUkVHX1FFTVVfSU5TTl9DTlQpIHsKICAgICAgICAgdGNn X2dlbl9hZGRpX3RsKGRlc3QsIGhleF9ncHJbSEVYX1JFR19RRU1VX0lOU05fQ05UXSwKICAgICAg ICAgICAgICAgICAgICAgICAgIGN0eC0+bnVtX2luc25zKTsKKyAgICB9IGVsc2UgaWYgKHJlZ19u dW0gPT0gSEVYX1JFR19RRU1VX0hWWF9DTlQpIHsKKyAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGRl c3QsIGhleF9ncHJbSEVYX1JFR19RRU1VX0hWWF9DTlRdLAorICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LT5udW1faHZ4X2luc25zKTsKICAgICB9IGVsc2UgewogICAgICAgICB0Y2dfZ2VuX21v dl90bChkZXN0LCBoZXhfZ3ByW3JlZ19udW1dKTsKICAgICB9CkBAIC0xOTEsNiArMTk0LDEyIEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fcmVhZF9jdHJsX3JlZ19wYWlyKERpc2FzQ29udGV4dCAq Y3R4LCBjb25zdCBpbnQgcmVnX251bSwKICAgICAgICAgdGNnX2dlbl9jb25jYXRfaTMyX2k2NChk ZXN0LCBwa3RfY250LCBpbnNuX2NudCk7CiAgICAgICAgIHRjZ190ZW1wX2ZyZWUocGt0X2NudCk7 CiAgICAgICAgIHRjZ190ZW1wX2ZyZWUoaW5zbl9jbnQpOworICAgIH0gZWxzZSBpZiAocmVnX251 bSA9PSBIRVhfUkVHX1FFTVVfSFZYX0NOVCkgeworICAgICAgICBUQ0d2IGh2eF9jbnQgPSB0Y2df dGVtcF9uZXcoKTsKKyAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGh2eF9jbnQsIGhleF9ncHJbSEVY X1JFR19RRU1VX0hWWF9DTlRdLAorICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5udW1faHZ4 X2luc25zKTsKKyAgICAgICAgdGNnX2dlbl9jb25jYXRfaTMyX2k2NChkZXN0LCBodnhfY250LCBo ZXhfZ3ByW3JlZ19udW0gKyAxXSk7CisgICAgICAgIHRjZ190ZW1wX2ZyZWUoaHZ4X2NudCk7CiAg ICAgfSBlbHNlIHsKICAgICAgICAgdGNnX2dlbl9jb25jYXRfaTMyX2k2NChkZXN0LAogICAgICAg ICAgICAgaGV4X2dwcltyZWdfbnVtXSwKQEAgLTIyNiw2ICsyMzUsOSBAQCBzdGF0aWMgaW5saW5l IHZvaWQgZ2VuX3dyaXRlX2N0cmxfcmVnKERpc2FzQ29udGV4dCAqY3R4LCBpbnQgcmVnX251bSwK ICAgICAgICAgaWYgKHJlZ19udW0gPT0gSEVYX1JFR19RRU1VX0lOU05fQ05UKSB7CiAgICAgICAg ICAgICBjdHgtPm51bV9pbnNucyA9IDA7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHJlZ19udW0g PT0gSEVYX1JFR19RRU1VX0hWWF9DTlQpIHsKKyAgICAgICAgICAgIGN0eC0+bnVtX2h2eF9pbnNu cyA9IDA7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTI0Nyw2ICsyNTksOSBAQCBzdGF0aWMg aW5saW5lIHZvaWQgZ2VuX3dyaXRlX2N0cmxfcmVnX3BhaXIoRGlzYXNDb250ZXh0ICpjdHgsIGlu dCByZWdfbnVtLAogICAgICAgICAgICAgY3R4LT5udW1fcGFja2V0cyA9IDA7CiAgICAgICAgICAg ICBjdHgtPm51bV9pbnNucyA9IDA7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHJlZ19udW0gPT0g SEVYX1JFR19RRU1VX0hWWF9DTlQpIHsKKyAgICAgICAgICAgIGN0eC0+bnVtX2h2eF9pbnNucyA9 IDA7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL3Ry YW5zbGF0ZS5jIGIvdGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmMKaW5kZXggNGYwNWNlMy4uZTMz ZTM5YyAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmMKKysrIGIvdGFyZ2V0 L2hleGFnb24vdHJhbnNsYXRlLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJxZW11L29z ZGVwLmgiCiAjaW5jbHVkZSAiY3B1LmgiCiAjaW5jbHVkZSAidGNnL3RjZy1vcC5oIgorI2luY2x1 ZGUgInRjZy90Y2ctb3AtZ3ZlYy5oIgogI2luY2x1ZGUgImV4ZWMvY3B1X2xkc3QuaCIKICNpbmNs dWRlICJleGVjL2xvZy5oIgogI2luY2x1ZGUgImludGVybmFsLmgiCkBAIC00NywxMSArNDgsNjAg QEAgVENHdiBoZXhfZGN6ZXJvX2FkZHI7CiBUQ0d2IGhleF9sbHNjX2FkZHI7CiBUQ0d2IGhleF9s bHNjX3ZhbDsKIFRDR3ZfaTY0IGhleF9sbHNjX3ZhbF9pNjQ7CitUQ0d2IGhleF9WUmVnc191cGRh dGVkOworVENHdiBoZXhfUVJlZ3NfdXBkYXRlZDsKK1RDR3YgaGV4X3ZzdG9yZV9hZGRyW1ZTVE9S RVNfTUFYXTsKK1RDR3YgaGV4X3ZzdG9yZV9zaXplW1ZTVE9SRVNfTUFYXTsKK1RDR3YgaGV4X3Zz dG9yZV9wZW5kaW5nW1ZTVE9SRVNfTUFYXTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBo ZXhhZ29uX3ByZWRuYW1lc1tdID0gewogICAicDAiLCAicDEiLCAicDIiLCAicDMiCiB9OwogCitp bnRwdHJfdCBjdHhfZnV0dXJlX3ZyZWdfb2ZmKERpc2FzQ29udGV4dCAqY3R4LCBpbnQgcmVnbnVt LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtLCBib29sIGFsbG9jX29rKQorewor ICAgIGludHB0cl90IG9mZnNldDsKKworICAgIC8qIFNlZSBpZiBpdCBpcyBhbHJlYWR5IGFsbG9j YXRlZCAqLworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3R4LT5mdXR1cmVfdnJlZ3NfaWR4OyBp KyspIHsKKyAgICAgICAgaWYgKGN0eC0+ZnV0dXJlX3ZyZWdzX251bVtpXSA9PSByZWdudW0pIHsK KyAgICAgICAgICAgIHJldHVybiBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIGZ1dHVyZV9WUmVn c1tpXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnX2Fzc2VydChhbGxvY19vayk7CisgICAg b2Zmc2V0ID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBmdXR1cmVfVlJlZ3NbY3R4LT5mdXR1 cmVfdnJlZ3NfaWR4XSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW07IGkrKykgeworICAg ICAgICBjdHgtPmZ1dHVyZV92cmVnc19udW1bY3R4LT5mdXR1cmVfdnJlZ3NfaWR4ICsgaV0gPSBy ZWdudW0rKzsKKyAgICB9CisgICAgY3R4LT5mdXR1cmVfdnJlZ3NfaWR4ICs9IG51bTsKKyAgICBn X2Fzc2VydChjdHgtPmZ1dHVyZV92cmVnc19pZHggPD0gVkVDVE9SX1RFTVBTX01BWCk7CisgICAg cmV0dXJuIG9mZnNldDsKK30KKworaW50cHRyX3QgY3R4X3RtcF92cmVnX29mZihEaXNhc0NvbnRl eHQgKmN0eCwgaW50IHJlZ251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bSwg Ym9vbCBhbGxvY19vaykKK3sKKyAgICBpbnRwdHJfdCBvZmZzZXQ7CisKKyAgICAvKiBTZWUgaWYg aXQgaXMgYWxyZWFkeSBhbGxvY2F0ZWQgKi8KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGN0eC0+ dG1wX3ZyZWdzX2lkeDsgaSsrKSB7CisgICAgICAgIGlmIChjdHgtPnRtcF92cmVnc19udW1baV0g PT0gcmVnbnVtKSB7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRl LCB0bXBfVlJlZ3NbaV0pOworICAgICAgICB9CisgICAgfQorCisgICAgZ19hc3NlcnQoYWxsb2Nf b2spOworICAgIG9mZnNldCA9IG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgdG1wX1ZSZWdzW2N0 eC0+dG1wX3ZyZWdzX2lkeF0pOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtOyBpKyspIHsK KyAgICAgICAgY3R4LT50bXBfdnJlZ3NfbnVtW2N0eC0+dG1wX3ZyZWdzX2lkeCArIGldID0gcmVn bnVtKys7CisgICAgfQorICAgIGN0eC0+dG1wX3ZyZWdzX2lkeCArPSBudW07CisgICAgZ19hc3Nl cnQoY3R4LT50bXBfdnJlZ3NfaWR4IDw9IFZFQ1RPUl9URU1QU19NQVgpOworICAgIHJldHVybiBv ZmZzZXQ7Cit9CisKIHN0YXRpYyB2b2lkIGdlbl9leGNlcHRpb25fcmF3KGludCBleGNwKQogewog ICAgIGdlbl9oZWxwZXJfcmFpc2VfZXhjZXB0aW9uKGNwdV9lbnYsIHRjZ19jb25zdGFudF9pMzIo ZXhjcCkpOwpAQCAtNjMsNiArMTEzLDggQEAgc3RhdGljIHZvaWQgZ2VuX2V4ZWNfY291bnRlcnMo RGlzYXNDb250ZXh0ICpjdHgpCiAgICAgICAgICAgICAgICAgICAgIGhleF9ncHJbSEVYX1JFR19R RU1VX1BLVF9DTlRdLCBjdHgtPm51bV9wYWNrZXRzKTsKICAgICB0Y2dfZ2VuX2FkZGlfdGwoaGV4 X2dwcltIRVhfUkVHX1FFTVVfSU5TTl9DTlRdLAogICAgICAgICAgICAgICAgICAgICBoZXhfZ3By W0hFWF9SRUdfUUVNVV9JTlNOX0NOVF0sIGN0eC0+bnVtX2luc25zKTsKKyAgICB0Y2dfZ2VuX2Fk ZGlfdGwoaGV4X2dwcltIRVhfUkVHX1FFTVVfSFZYX0NOVF0sCisgICAgICAgICAgICAgICAgICAg IGhleF9ncHJbSEVYX1JFR19RRU1VX0hWWF9DTlRdLCBjdHgtPm51bV9odnhfaW5zbnMpOwogfQog CiBzdGF0aWMgdm9pZCBnZW5fZW5kX3RiKERpc2FzQ29udGV4dCAqY3R4KQpAQCAtMTcxLDExICsy MjMsMTkgQEAgc3RhdGljIHZvaWQgZ2VuX3N0YXJ0X3BhY2tldChEaXNhc0NvbnRleHQgKmN0eCwg UGFja2V0ICpwa3QpCiAgICAgYml0bWFwX3plcm8oY3R4LT5yZWdzX3dyaXR0ZW4sIFRPVEFMX1BF Ul9USFJFQURfUkVHUyk7CiAgICAgY3R4LT5wcmVnX2xvZ19pZHggPSAwOwogICAgIGJpdG1hcF96 ZXJvKGN0eC0+cHJlZ3Nfd3JpdHRlbiwgTlVNX1BSRUdTKTsKKyAgICBjdHgtPmZ1dHVyZV92cmVn c19pZHggPSAwOworICAgIGN0eC0+dG1wX3ZyZWdzX2lkeCA9IDA7CisgICAgY3R4LT52cmVnX2xv Z19pZHggPSAwOworICAgIGJpdG1hcF96ZXJvKGN0eC0+dnJlZ3NfdXBkYXRlZF90bXAsIE5VTV9W UkVHUyk7CisgICAgYml0bWFwX3plcm8oY3R4LT52cmVnc191cGRhdGVkLCBOVU1fVlJFR1MpOwor ICAgIGJpdG1hcF96ZXJvKGN0eC0+dnJlZ3Nfc2VsZWN0LCBOVU1fVlJFR1MpOworICAgIGN0eC0+ cXJlZ19sb2dfaWR4ID0gMDsKICAgICBmb3IgKGkgPSAwOyBpIDwgU1RPUkVTX01BWDsgaSsrKSB7 CiAgICAgICAgIGN0eC0+c3RvcmVfd2lkdGhbaV0gPSAwOwogICAgIH0KICAgICB0Y2dfZ2VuX21v dmlfdGwoaGV4X3BrdF9oYXNfc3RvcmVfczEsIHBrdC0+cGt0X2hhc19zdG9yZV9zMSk7CiAgICAg Y3R4LT5zMV9zdG9yZV9wcm9jZXNzZWQgPSBmYWxzZTsKKyAgICBjdHgtPnByZV9jb21taXQgPSB0 cnVlOwogCiAgICAgaWYgKEhFWF9ERUJVRykgewogICAgICAgICAvKiBIYW5keSBwbGFjZSB0byBz ZXQgYSBicmVha3BvaW50IGJlZm9yZSB0aGUgcGFja2V0IGV4ZWN1dGVzICovCkBAIC0xOTcsNiAr MjU3LDI2IEBAIHN0YXRpYyB2b2lkIGdlbl9zdGFydF9wYWNrZXQoRGlzYXNDb250ZXh0ICpjdHgs IFBhY2tldCAqcGt0KQogICAgIGlmIChuZWVkX3ByZWRfd3JpdHRlbihwa3QpKSB7CiAgICAgICAg IHRjZ19nZW5fbW92aV90bChoZXhfcHJlZF93cml0dGVuLCAwKTsKICAgICB9CisKKyAgICBpZiAo cGt0LT5wa3RfaGFzX2h2eCkgeworICAgICAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4X1ZSZWdzX3Vw ZGF0ZWQsIDApOworICAgICAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4X1FSZWdzX3VwZGF0ZWQsIDAp OworICAgIH0KK30KKworYm9vbCBpc19nYXRoZXJfc3RvcmVfaW5zbihJbnNuICppbnNuLCBQYWNr ZXQgKnBrdCkKK3sKKyAgICBpZiAoR0VUX0FUVFJJQihpbnNuLT5vcGNvZGUsIEFfQ1ZJX05FVykg JiYKKyAgICAgICAgaW5zbi0+bmV3X3ZhbHVlX3Byb2R1Y2VyX3Nsb3QgPT0gMSkgeworICAgICAg ICAvKiBMb29rIGZvciBnYXRoZXIgaW5zdHJ1Y3Rpb24gKi8KKyAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBwa3QtPm51bV9pbnNuczsgaSsrKSB7CisgICAgICAgICAgICBJbnNuICppbiA9ICZw a3QtPmluc25baV07CisgICAgICAgICAgICBpZiAoR0VUX0FUVFJJQihpbi0+b3Bjb2RlLCBBX0NW SV9HQVRIRVIpICYmIGluLT5zbG90ID09IDEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9 CiAKIC8qCkBAIC00NDUsMTAgKzUyNSwxMDIgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19kY3plcm9h KERpc2FzQ29udGV4dCAqY3R4LCBQYWNrZXQgKnBrdCkKICAgICB9CiB9CiAKK3N0YXRpYyBib29s IHBrdF9oYXNfaHZ4X3N0b3JlKFBhY2tldCAqcGt0KQoreworICAgIGludCBpOworICAgIGZvciAo aSA9IDA7IGkgPCBwa3QtPm51bV9pbnNuczsgaSsrKSB7CisgICAgICAgIGludCBvcGNvZGUgPSBw a3QtPmluc25baV0ub3Bjb2RlOworICAgICAgICBpZiAoR0VUX0FUVFJJQihvcGNvZGUsIEFfQ1ZJ KSAmJiBHRVRfQVRUUklCKG9wY29kZSwgQV9TVE9SRSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZv aWQgZ2VuX2NvbW1pdF9odngoRGlzYXNDb250ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQoreworICAg IGludCBpOworCisgICAgLyoKKyAgICAgKiAgICBmb3IgKGkgPSAwOyBpIDwgY3R4LT52cmVnX2xv Z19pZHg7IGkrKykgeworICAgICAqICAgICAgICBpbnQgcm51bSA9IGN0eC0+dnJlZ19sb2dbaV07 CisgICAgICogICAgICAgIGlmIChjdHgtPnZyZWdfaXNfcHJlZGljYXRlZFtpXSkgeworICAgICAq ICAgICAgICAgICAgaWYgKGVudi0+VlJlZ3NfdXBkYXRlZCAmICgxIDw8IHJudW0pKSB7CisgICAg ICogICAgICAgICAgICAgICAgZW52LT5WUmVnc1tybnVtXSA9IGVudi0+ZnV0dXJlX1ZSZWdzW3Ju dW1dOworICAgICAqICAgICAgICAgICAgfQorICAgICAqICAgICAgICB9IGVsc2UgeworICAgICAq ICAgICAgICAgICAgZW52LT5WUmVnc1tybnVtXSA9IGVudi0+ZnV0dXJlX1ZSZWdzW3JudW1dOwor ICAgICAqICAgICAgICB9CisgICAgICogICAgfQorICAgICAqLworICAgIGZvciAoaSA9IDA7IGkg PCBjdHgtPnZyZWdfbG9nX2lkeDsgaSsrKSB7CisgICAgICAgIGludCBybnVtID0gY3R4LT52cmVn X2xvZ1tpXTsKKyAgICAgICAgYm9vbCBpc19wcmVkaWNhdGVkID0gY3R4LT52cmVnX2lzX3ByZWRp Y2F0ZWRbaV07CisgICAgICAgIGludHB0cl90IGRzdG9mZiA9IG9mZnNldG9mKENQVUhleGFnb25T dGF0ZSwgVlJlZ3Nbcm51bV0pOworICAgICAgICBpbnRwdHJfdCBzcmNvZmYgPSBjdHhfZnV0dXJl X3ZyZWdfb2ZmKGN0eCwgcm51bSwgMSwgZmFsc2UpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IHNp emVvZihNTVZlY3Rvcik7CisKKyAgICAgICAgaWYgKGlzX3ByZWRpY2F0ZWQpIHsKKyAgICAgICAg ICAgIFRDR3YgY21wID0gdGNnX3RlbXBfbG9jYWxfbmV3KCk7CisgICAgICAgICAgICBUQ0dMYWJl bCAqbGFiZWxfc2tpcCA9IGdlbl9uZXdfbGFiZWwoKTsKKworICAgICAgICAgICAgdGNnX2dlbl9h bmRpX3RsKGNtcCwgaGV4X1ZSZWdzX3VwZGF0ZWQsIDEgPDwgcm51bSk7CisgICAgICAgICAgICB0 Y2dfZ2VuX2JyY29uZGlfdGwoVENHX0NPTkRfRVEsIGNtcCwgMCwgbGFiZWxfc2tpcCk7CisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgdGNnX2dlbl9ndmVjX21vdihNT182NCwgZHN0b2Zm LCBzcmNvZmYsIHNpemUsIHNpemUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2VuX3Nl dF9sYWJlbChsYWJlbF9za2lwKTsKKyAgICAgICAgICAgIHRjZ190ZW1wX2ZyZWUoY21wKTsKKyAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRjZ19nZW5fZ3ZlY19tb3YoTU9fNjQsIGRzdG9m Ziwgc3Jjb2ZmLCBzaXplLCBzaXplKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAg ICogICAgZm9yIChpID0gMDsgaSA8IGN0eC0+cXJlZ19sb2dfaWR4OyBpKyspIHsKKyAgICAgKiAg ICAgICAgaW50IHJudW0gPSBjdHgtPnFyZWdfbG9nW2ldOworICAgICAqICAgICAgICBpZiAoY3R4 LT5xcmVnX2lzX3ByZWRpY2F0ZWRbaV0pIHsKKyAgICAgKiAgICAgICAgICAgIGlmIChlbnYtPlFS ZWdzX3VwZGF0ZWQpICYgKDEgPDwgcm51bSkpIHsKKyAgICAgKiAgICAgICAgICAgICAgICBlbnYt PlFSZWdzW3JudW1dID0gZW52LT5mdXR1cmVfUVJlZ3Nbcm51bV07CisgICAgICogICAgICAgICAg ICB9CisgICAgICogICAgICAgIH0gZWxzZSB7CisgICAgICogICAgICAgICAgICBlbnYtPlFSZWdz W3JudW1dID0gZW52LT5mdXR1cmVfUVJlZ3Nbcm51bV07CisgICAgICogICAgICAgIH0KKyAgICAg KiAgICB9CisgICAgICovCisgICAgZm9yIChpID0gMDsgaSA8IGN0eC0+cXJlZ19sb2dfaWR4OyBp KyspIHsKKyAgICAgICAgaW50IHJudW0gPSBjdHgtPnFyZWdfbG9nW2ldOworICAgICAgICBib29s IGlzX3ByZWRpY2F0ZWQgPSBjdHgtPnFyZWdfaXNfcHJlZGljYXRlZFtpXTsKKyAgICAgICAgaW50 cHRyX3QgZHN0b2ZmID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBRUmVnc1tybnVtXSk7Cisg ICAgICAgIGludHB0cl90IHNyY29mZiA9IG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgZnV0dXJl X1FSZWdzW3JudW1dKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBzaXplb2YoTU1RUmVnKTsKKwor ICAgICAgICBpZiAoaXNfcHJlZGljYXRlZCkgeworICAgICAgICAgICAgVENHdiBjbXAgPSB0Y2df dGVtcF9sb2NhbF9uZXcoKTsKKyAgICAgICAgICAgIFRDR0xhYmVsICpsYWJlbF9za2lwID0gZ2Vu X25ld19sYWJlbCgpOworCisgICAgICAgICAgICB0Y2dfZ2VuX2FuZGlfdGwoY21wLCBoZXhfUVJl Z3NfdXBkYXRlZCwgMSA8PCBybnVtKTsKKyAgICAgICAgICAgIHRjZ19nZW5fYnJjb25kaV90bChU Q0dfQ09ORF9FUSwgY21wLCAwLCBsYWJlbF9za2lwKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICB0Y2dfZ2VuX2d2ZWNfbW92KE1PXzY0LCBkc3RvZmYsIHNyY29mZiwgc2l6ZSwgc2l6 ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnZW5fc2V0X2xhYmVsKGxhYmVsX3NraXAp OworICAgICAgICAgICAgdGNnX3RlbXBfZnJlZShjbXApOworICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgdGNnX2dlbl9ndmVjX21vdihNT182NCwgZHN0b2ZmLCBzcmNvZmYsIHNpemUsIHNp emUpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHBrdF9oYXNfaHZ4X3N0b3JlKHBrdCkp IHsKKyAgICAgICAgZ2VuX2hlbHBlcl9jb21taXRfaHZ4X3N0b3JlcyhjcHVfZW52KTsKKyAgICB9 Cit9CisKIHN0YXRpYyB2b2lkIHVwZGF0ZV9leGVjX2NvdW50ZXJzKERpc2FzQ29udGV4dCAqY3R4 LCBQYWNrZXQgKnBrdCkKIHsKICAgICBpbnQgbnVtX2luc25zID0gcGt0LT5udW1faW5zbnM7CiAg ICAgaW50IG51bV9yZWFsX2luc25zID0gMDsKKyAgICBpbnQgbnVtX2h2eF9pbnNucyA9IDA7CiAK ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9pbnNuczsgaSsrKSB7CiAgICAgICAgIGlmICgh cGt0LT5pbnNuW2ldLmlzX2VuZGxvb3AgJiYKQEAgLTQ1NiwxMyArNjI4LDE4IEBAIHN0YXRpYyB2 b2lkIHVwZGF0ZV9leGVjX2NvdW50ZXJzKERpc2FzQ29udGV4dCAqY3R4LCBQYWNrZXQgKnBrdCkK ICAgICAgICAgICAgICFHRVRfQVRUUklCKHBrdC0+aW5zbltpXS5vcGNvZGUsIEFfSVRfTk9QKSkg ewogICAgICAgICAgICAgbnVtX3JlYWxfaW5zbnMrKzsKICAgICAgICAgfQorICAgICAgICBpZiAo R0VUX0FUVFJJQihwa3QtPmluc25baV0ub3Bjb2RlLCBBX0NWSSkpIHsKKyAgICAgICAgICAgIG51 bV9odnhfaW5zbnMrKzsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGN0eC0+bnVtX3BhY2tldHMr KzsKICAgICBjdHgtPm51bV9pbnNucyArPSBudW1fcmVhbF9pbnNuczsKKyAgICBjdHgtPm51bV9o dnhfaW5zbnMgKz0gbnVtX2h2eF9pbnNuczsKIH0KIAotc3RhdGljIHZvaWQgZ2VuX2NvbW1pdF9w YWNrZXQoRGlzYXNDb250ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQorc3RhdGljIHZvaWQgZ2VuX2Nv bW1pdF9wYWNrZXQoQ1BVSGV4YWdvblN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFja2V0ICpwa3QpCiB7CiAgICAgLyoKICAgICAg KiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHN0b3JlIGluIGEgcGFja2V0LCBtYWtlIHN1cmUg dGhleSBhcmUgYWxsIE9LCkBAIC00NzEsNiArNjQ4LDEwIEBAIHN0YXRpYyB2b2lkIGdlbl9jb21t aXRfcGFja2V0KERpc2FzQ29udGV4dCAqY3R4LCBQYWNrZXQgKnBrdCkKICAgICAgKiBkY3plcm9h IGhhcyB0byBiZSB0aGUgb25seSBzdG9yZSBvcGVyYXRpb24gaW4gdGhlIHBhY2tldCwgc28gd2Ug Z28KICAgICAgKiBhaGVhZCBhbmQgcHJvY2VzcyB0aGF0IGZpcnN0LgogICAgICAqCisgICAgICog V2hlbiB0aGVyZSBpcyBhbiBIVlggc3RvcmUsIHRoZXJlIGNhbiBhbHNvIGJlIGEgc2NhbGFyIHN0 b3JlIGluIGVpdGhlcgorICAgICAqIHNsb3QgMCBvciBzbG90MSwgc28gd2UgY3JlYXRlIGEgbWFz ayBmb3IgdGhlIGhlbHBlciB0byBpbmRpY2F0ZSB3aGF0CisgICAgICogd29yayB0byBkby4KKyAg ICAgKgogICAgICAqIFdoZW4gdGhlcmUgYXJlIHR3byBzY2FsYXIgc3RvcmVzLCB3ZSBwcm9iZSB0 aGUgb25lIGluIHNsb3QgMC4KICAgICAgKgogICAgICAqIE5vdGUgdGhhdCB3ZSBkb24ndCBjYWxs IHRoZSBwcm9iZSBoZWxwZXIgZm9yIHBhY2tldHMgd2l0aCBvbmx5IG9uZQpAQCAtNDc5LDEzICs2 NjAsMzUgQEAgc3RhdGljIHZvaWQgZ2VuX2NvbW1pdF9wYWNrZXQoRGlzYXNDb250ZXh0ICpjdHgs IFBhY2tldCAqcGt0KQogICAgICAqLwogICAgIGJvb2wgaGFzX3N0b3JlX3MwID0gcGt0LT5wa3Rf aGFzX3N0b3JlX3MwOwogICAgIGJvb2wgaGFzX3N0b3JlX3MxID0gKHBrdC0+cGt0X2hhc19zdG9y ZV9zMSAmJiAhY3R4LT5zMV9zdG9yZV9wcm9jZXNzZWQpOworICAgIGJvb2wgaGFzX2h2eF9zdG9y ZSA9IHBrdF9oYXNfaHZ4X3N0b3JlKHBrdCk7CiAgICAgaWYgKHBrdC0+cGt0X2hhc19kY3plcm9h KSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoZSBkY3plcm9hIHdpbGwgYmUgdGhlIHN0b3Jl IGluIHNsb3QgMCwgY2hlY2sgdGhhdCB3ZSBkb24ndCBoYXZlCi0gICAgICAgICAqIGEgc3RvcmUg aW4gc2xvdCAxLgorICAgICAgICAgKiBhIHN0b3JlIGluIHNsb3QgMSBvciBhbiBIVlggc3RvcmUu CiAgICAgICAgICAqLwotICAgICAgICBnX2Fzc2VydChoYXNfc3RvcmVfczAgJiYgIWhhc19zdG9y ZV9zMSk7CisgICAgICAgIGdfYXNzZXJ0KGhhc19zdG9yZV9zMCAmJiAhaGFzX3N0b3JlX3MxICYm ICFoYXNfaHZ4X3N0b3JlKTsKICAgICAgICAgcHJvY2Vzc19kY3plcm9hKGN0eCwgcGt0KTsKKyAg ICB9IGVsc2UgaWYgKGhhc19odnhfc3RvcmUpIHsKKyAgICAgICAgVENHdiBtZW1faWR4ID0gdGNn X2NvbnN0YW50X3RsKGN0eC0+bWVtX2lkeCk7CisKKyAgICAgICAgaWYgKCFoYXNfc3RvcmVfczAg JiYgIWhhc19zdG9yZV9zMSkgeworICAgICAgICAgICAgZ2VuX2hlbHBlcl9wcm9iZV9odnhfc3Rv cmVzKGNwdV9lbnYsIG1lbV9pZHgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50 IG1hc2sgPSAwOworICAgICAgICAgICAgVENHdiBtYXNrX3RjZ3Y7CisKKyAgICAgICAgICAgIGlm IChoYXNfc3RvcmVfczApIHsKKyAgICAgICAgICAgICAgICBtYXNrIHw9ICgxIDw8IDApOworICAg ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGhhc19zdG9yZV9zMSkgeworICAgICAgICAgICAg ICAgIG1hc2sgfD0gKDEgPDwgMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaGFz X2h2eF9zdG9yZSkgeworICAgICAgICAgICAgICAgIG1hc2sgfD0gKDEgPDwgMik7CisgICAgICAg ICAgICB9CisgICAgICAgICAgICBtYXNrX3RjZ3YgPSB0Y2dfY29uc3RhbnRfdGwobWFzayk7Cisg ICAgICAgICAgICBnZW5faGVscGVyX3Byb2JlX3BrdF9zY2FsYXJfaHZ4X3N0b3JlcyhjcHVfZW52 LCBtYXNrX3RjZ3YsIG1lbV9pZHgpOworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChoYXNfc3Rv cmVfczAgJiYgaGFzX3N0b3JlX3MxKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIHByb2Nlc3Nf c3RvcmVfbG9nIHdpbGwgZXhlY3V0ZSB0aGUgc2xvdCAxIHN0b3JlIGZpcnN0LApAQCAtNTAwLDYg KzcwMyw5IEBAIHN0YXRpYyB2b2lkIGdlbl9jb21taXRfcGFja2V0KERpc2FzQ29udGV4dCAqY3R4 LCBQYWNrZXQgKnBrdCkKIAogICAgIGdlbl9yZWdfd3JpdGVzKGN0eCk7CiAgICAgZ2VuX3ByZWRf d3JpdGVzKGN0eCwgcGt0KTsKKyAgICBpZiAocGt0LT5wa3RfaGFzX2h2eCkgeworICAgICAgICBn ZW5fY29tbWl0X2h2eChjdHgsIHBrdCk7CisgICAgfQogICAgIHVwZGF0ZV9leGVjX2NvdW50ZXJz KGN0eCwgcGt0KTsKICAgICBpZiAoSEVYX0RFQlVHKSB7CiAgICAgICAgIFRDR3YgaGFzX3N0MCA9 CkBAIC01MTEsNiArNzE3LDExIEBAIHN0YXRpYyB2b2lkIGdlbl9jb21taXRfcGFja2V0KERpc2Fz Q29udGV4dCAqY3R4LCBQYWNrZXQgKnBrdCkKICAgICAgICAgZ2VuX2hlbHBlcl9kZWJ1Z19jb21t aXRfZW5kKGNwdV9lbnYsIGhhc19zdDAsIGhhc19zdDEpOwogICAgIH0KIAorICAgIGlmIChwa3Qt PnZoaXN0X2luc24gIT0gTlVMTCkgeworICAgICAgICBjdHgtPnByZV9jb21taXQgPSBmYWxzZTsK KyAgICAgICAgcGt0LT52aGlzdF9pbnNuLT5nZW5lcmF0ZShlbnYsIGN0eCwgcGt0LT52aGlzdF9p bnNuLCBwa3QpOworICAgIH0KKwogICAgIGlmIChwa3QtPnBrdF9oYXNfY29mKSB7CiAgICAgICAg IGdlbl9lbmRfdGIoY3R4KTsKICAgICB9CkBAIC01MzUsNyArNzQ2LDcgQEAgc3RhdGljIHZvaWQg ZGVjb2RlX2FuZF90cmFuc2xhdGVfcGFja2V0KENQVUhleGFnb25TdGF0ZSAqZW52LCBEaXNhc0Nv bnRleHQgKmN0eCkKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBrdC5udW1faW5zbnM7IGkrKykg ewogICAgICAgICAgICAgZ2VuX2luc24oZW52LCBjdHgsICZwa3QuaW5zbltpXSwgJnBrdCk7CiAg ICAgICAgIH0KLSAgICAgICAgZ2VuX2NvbW1pdF9wYWNrZXQoY3R4LCAmcGt0KTsKKyAgICAgICAg Z2VuX2NvbW1pdF9wYWNrZXQoZW52LCBjdHgsICZwa3QpOwogICAgICAgICBjdHgtPmJhc2UucGNf bmV4dCArPSBwa3QuZW5jb2RfcGt0X3NpemVfaW5fYnl0ZXM7CiAgICAgfSBlbHNlIHsKICAgICAg ICAgZ2VuX2V4Y2VwdGlvbl9lbmRfdGIoY3R4LCBIRVhfRVhDUF9JTlZBTElEX1BBQ0tFVCk7CkBA IC01NTAsNiArNzYxLDcgQEAgc3RhdGljIHZvaWQgaGV4YWdvbl90cl9pbml0X2Rpc2FzX2NvbnRl eHQoRGlzYXNDb250ZXh0QmFzZSAqZGNiYXNlLAogICAgIGN0eC0+bWVtX2lkeCA9IE1NVV9VU0VS X0lEWDsKICAgICBjdHgtPm51bV9wYWNrZXRzID0gMDsKICAgICBjdHgtPm51bV9pbnNucyA9IDA7 CisgICAgY3R4LT5udW1faHZ4X2luc25zID0gMDsKIH0KIAogc3RhdGljIHZvaWQgaGV4YWdvbl90 cl90Yl9zdGFydChEaXNhc0NvbnRleHRCYXNlICpkYiwgQ1BVU3RhdGUgKmNwdSkKQEAgLTY1OCw2 ICs4NzAsOSBAQCBzdGF0aWMgY2hhciBzdG9yZV9hZGRyX25hbWVzW1NUT1JFU19NQVhdW05BTUVf TEVOXTsKIHN0YXRpYyBjaGFyIHN0b3JlX3dpZHRoX25hbWVzW1NUT1JFU19NQVhdW05BTUVfTEVO XTsKIHN0YXRpYyBjaGFyIHN0b3JlX3ZhbDMyX25hbWVzW1NUT1JFU19NQVhdW05BTUVfTEVOXTsK IHN0YXRpYyBjaGFyIHN0b3JlX3ZhbDY0X25hbWVzW1NUT1JFU19NQVhdW05BTUVfTEVOXTsKK3N0 YXRpYyBjaGFyIHZzdG9yZV9hZGRyX25hbWVzW1ZTVE9SRVNfTUFYXVtOQU1FX0xFTl07CitzdGF0 aWMgY2hhciB2c3RvcmVfc2l6ZV9uYW1lc1tWU1RPUkVTX01BWF1bTkFNRV9MRU5dOworc3RhdGlj IGNoYXIgdnN0b3JlX3BlbmRpbmdfbmFtZXNbVlNUT1JFU19NQVhdW05BTUVfTEVOXTsKIAogdm9p ZCBoZXhhZ29uX3RyYW5zbGF0ZV9pbml0KHZvaWQpCiB7CkBAIC03MjAsNiArOTM1LDEwIEBAIHZv aWQgaGV4YWdvbl90cmFuc2xhdGVfaW5pdCh2b2lkKQogICAgICAgICBvZmZzZXRvZihDUFVIZXhh Z29uU3RhdGUsIGxsc2NfdmFsKSwgImxsc2NfdmFsIik7CiAgICAgaGV4X2xsc2NfdmFsX2k2NCA9 IHRjZ19nbG9iYWxfbWVtX25ld19pNjQoY3B1X2VudiwKICAgICAgICAgb2Zmc2V0b2YoQ1BVSGV4 YWdvblN0YXRlLCBsbHNjX3ZhbF9pNjQpLCAibGxzY192YWxfaTY0Iik7CisgICAgaGV4X1ZSZWdz X3VwZGF0ZWQgPSB0Y2dfZ2xvYmFsX21lbV9uZXcoY3B1X2VudiwKKyAgICAgICAgb2Zmc2V0b2Yo Q1BVSGV4YWdvblN0YXRlLCBWUmVnc191cGRhdGVkKSwgIlZSZWdzX3VwZGF0ZWQiKTsKKyAgICBo ZXhfUVJlZ3NfdXBkYXRlZCA9IHRjZ19nbG9iYWxfbWVtX25ldyhjcHVfZW52LAorICAgICAgICBv ZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIFFSZWdzX3VwZGF0ZWQpLCAiUVJlZ3NfdXBkYXRlZCIp OwogICAgIGZvciAoaSA9IDA7IGkgPCBTVE9SRVNfTUFYOyBpKyspIHsKICAgICAgICAgc25wcmlu dGYoc3RvcmVfYWRkcl9uYW1lc1tpXSwgTkFNRV9MRU4sICJzdG9yZV9hZGRyXyVkIiwgaSk7CiAg ICAgICAgIGhleF9zdG9yZV9hZGRyW2ldID0gdGNnX2dsb2JhbF9tZW1fbmV3KGNwdV9lbnYsCkBA IC03NDEsNCArOTYwLDIwIEBAIHZvaWQgaGV4YWdvbl90cmFuc2xhdGVfaW5pdCh2b2lkKQogICAg ICAgICAgICAgb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBtZW1fbG9nX3N0b3Jlc1tpXS5kYXRh NjQpLAogICAgICAgICAgICAgc3RvcmVfdmFsNjRfbmFtZXNbaV0pOwogICAgIH0KKyAgICBmb3Ig KGludCBpID0gMDsgaSA8IFZTVE9SRVNfTUFYOyBpKyspIHsKKyAgICAgICAgc25wcmludGYodnN0 b3JlX2FkZHJfbmFtZXNbaV0sIE5BTUVfTEVOLCAidnN0b3JlX2FkZHJfJWQiLCBpKTsKKyAgICAg ICAgaGV4X3ZzdG9yZV9hZGRyW2ldID0gdGNnX2dsb2JhbF9tZW1fbmV3KGNwdV9lbnYsCisgICAg ICAgICAgICBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIHZzdG9yZVtpXS52YSksCisgICAgICAg ICAgICB2c3RvcmVfYWRkcl9uYW1lc1tpXSk7CisKKyAgICAgICAgc25wcmludGYodnN0b3JlX3Np emVfbmFtZXNbaV0sIE5BTUVfTEVOLCAidnN0b3JlX3NpemVfJWQiLCBpKTsKKyAgICAgICAgaGV4 X3ZzdG9yZV9zaXplW2ldID0gdGNnX2dsb2JhbF9tZW1fbmV3KGNwdV9lbnYsCisgICAgICAgICAg ICBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIHZzdG9yZVtpXS5zaXplKSwKKyAgICAgICAgICAg IHZzdG9yZV9zaXplX25hbWVzW2ldKTsKKworICAgICAgICBzbnByaW50Zih2c3RvcmVfcGVuZGlu Z19uYW1lc1tpXSwgTkFNRV9MRU4sICJ2c3RvcmVfcGVuZGluZ18lZCIsIGkpOworICAgICAgICBo ZXhfdnN0b3JlX3BlbmRpbmdbaV0gPSB0Y2dfZ2xvYmFsX21lbV9uZXcoY3B1X2VudiwKKyAgICAg ICAgICAgIG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgdnN0b3JlX3BlbmRpbmdbaV0pLAorICAg ICAgICAgICAgdnN0b3JlX3BlbmRpbmdfbmFtZXNbaV0pOworICAgIH0KIH0KLS0gCjIuNy40Cgo=