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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 44947C43458 for ; Mon, 29 Jun 2026 13:19:54 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weBo4-0005et-1D; Mon, 29 Jun 2026 09:13:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1weBo2-0005df-DB for qemu-devel@nongnu.org; Mon, 29 Jun 2026 09:13:46 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1weBo0-0003GX-2K for qemu-devel@nongnu.org; Mon, 29 Jun 2026 09:13:46 -0400 Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65TATBMh2647641 for ; Mon, 29 Jun 2026 13:13:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ydI56hjj1K3zzOwtbWnVUpF9xkvs46kCuETc/C2W1YE=; b=PUMNjirJ2Ed2f2KJ TkBwXnDjp2Apt8JexU7wJ6jUfv6kkG2R2A5GCEwvwSp6UT+nnBE1Sq42qtY3iPGE k997MrUOwAaNOw9gl0gg9os4Fylx/l/BMS0JTnV6AeevuCflbUEM56lgG3ZF9pj2 508ssqzdbCcOS3L0XDlphj1bIkw+NvPwAa8TtepoS2xaIq7MABIeQmT8BHG9G1qM C02S2yy5/SNXSwdUXk338bwUrd5nLFr9rQZxJP75pLoHAq3pC73rMOiJtSiyiNfW 7/VqBTEr0Z7Kmw/ZuTYnmOfNse3wtPrguMbghmtWqIIIvKuqr7aUTcJSwPlCcmCt hKnUUA== Received: from mail-dl1-f69.google.com (mail-dl1-f69.google.com [74.125.82.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f3kyjhe66-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 29 Jun 2026 13:13:33 +0000 (GMT) Received: by mail-dl1-f69.google.com with SMTP id a92af1059eb24-1384427c3efso10313636c88.0 for ; Mon, 29 Jun 2026 06:13:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1782738812; x=1783343612; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ydI56hjj1K3zzOwtbWnVUpF9xkvs46kCuETc/C2W1YE=; b=Okhypu15e/y8FPD4jAQ520CF3Q7eg4zK6UyzTUXN8dUN/+t4rGsmzWSFot8/kbO+rg oL8PH7i968KQlR/T/wp5cIhfB4HTzM38qn1KeY9xe8HYOfxwXMs2WERn4Aiq8ZFqx3dd aaUH5oamU52COSUoQzzzKq6YErOOAxYxdlAFvxTe9gEJe2N+Ink+r690EcG0xFNik5k5 ogASFkwo3ThyAmWCAhC0hHXJpdQwS/132ycjHtxBGt/JCsI9TPS/nx/qislkOc9qly0I kkdp7R2nZhi/qLsleCx/BqZClQ0KIgL7S6tebmJl/iP5p7dpuoRAJIncMUQ5/3jNOKR9 kNVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782738812; x=1783343612; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ydI56hjj1K3zzOwtbWnVUpF9xkvs46kCuETc/C2W1YE=; b=Ly88RyCMvIK7dYP+zg4ozmy4bPbahuGBJqUwKvCycn+7iCiIl5to2i6b+SGz6Uv0nn wAk65uyYiOQaLEghhs/yfTbm1U4L7VgoLY9bZEO5NOW4DbWMyjOZmy6hWu8Q0zY9ogDs yDtKoPZlwwiEed8m+rfGDH8HoklRFRNEW71u0Zqc9apvFi2s/VlwPFrKgwNGk1wlP4Jf c4QdaM/S6sYmlImCHW71S4PwpgKMf2NHNJ2Gh/yZCiFr1Ya8ZYf6HNgdJ//LUmyWbTga T0D6v83+iUb2+ZAFK0F1EoOdmbZ+J6r9U+HZSTpkvGsXZbmgO2kNmBo/9TP0dOI4KEBK LdcQ== X-Gm-Message-State: AOJu0YzlWQvvBpQdC89IS6bJjdG42a5nwXKwG3nSPnzov1yor5DlUEnG 1hmEzUDm+Zx43QbflWs8XVNU+k0BtowI9kKPjfKU5arf6cREAHpNqmdFdPcC3JTBJHSz79XDKUX Fvj0ruwi1i5IKPc+s3KTAVw7uH5DgN2zxgX0ELEkr8DZYR7uu8ZA4LuAEMBSSo7PmSA== X-Gm-Gg: AfdE7cnuJz0QC+SmGK3WBANIMG07fXNSNn6R+a+VRX4c7+zT0iHMwkN/snpeGHqrntX cR7ihj9ygDGzCmd10to8D7zW7//i/CKX6bGzc84KMjEq7wqfE69YzHrgbrogjWDdj/Wja5NEtOp W4KAqDbMzhdljOtWilK6A3r+WRjG21ygfafzWlVQr/e1d/mEvW3wl6d+ltS2GizLszFfYVsNWvT ZjmdEvKgiLsETYIv82Lq5h1o2w89Dpqpg16cLnirrlZe5UJfVMX7ffMlS586N7oUTR3pgpcLA7q cBpBb/RwC6x6329beOeGc+PAgyyep1WJVOeV01N+FW4qFT7Zpx/+W5EBX0i6nVnpttNcXw0av6A Bm7Zi61mXnB8jIgDddmkVSJVPExlp4J0ffa2+0a7L71j/vG8JZCfUYs49CM8= X-Received: by 2002:a05:7022:ec1:b0:12d:de3e:52c1 with SMTP id a92af1059eb24-13b22719d43mr470502c88.37.1782738811872; Mon, 29 Jun 2026 06:13:31 -0700 (PDT) X-Received: by 2002:a05:7022:ec1:b0:12d:de3e:52c1 with SMTP id a92af1059eb24-13b22719d43mr470470c88.37.1782738811256; Mon, 29 Jun 2026 06:13:31 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-139e78317f3sm28459106c88.9.2026.06.29.06.13.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jun 2026 06:13:30 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, stefanha@redhat.com, peter.maydell@linaro.org Cc: brian.cain@oss.qualcomm.com, Brian Cain , Sid Manning , Taylor Simpson , Pierrick Bouvier Subject: [PULL v5 32/77] target/hexagon: Add sreg_{read,write} helpers Date: Mon, 29 Jun 2026 06:11:47 -0700 Message-Id: <20260629131232.2487780-33-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260629131232.2487780-1-brian.cain@oss.qualcomm.com> References: <20260629131232.2487780-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Proofpoint-GUID: XZMzpZdzwDThSyq1GeASxx6dUD5L_9od X-Proofpoint-ORIG-GUID: XZMzpZdzwDThSyq1GeASxx6dUD5L_9od X-Authority-Analysis: v=2.4 cv=Ftk1OWrq c=1 sm=1 tr=0 ts=6a426f7d cx=c_pps a=kVLUcbK0zfr7ocalXnG1qA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=COk6AnOGAAAA:8 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=rqZXtLhFGwB6yMrbUaoA:9 a=QEXdDO2ut3YA:10 a=vr4QvYf-bLy2KjpDp97w:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjI5MDEwOSBTYWx0ZWRfX4ljzNX8jN14z xA8vGqrh6bUAUhjSGbJpgzbE1GCiRrCSuhaLkOcKkF2uNko6tfAOAaALl1ZmjCDKvSark4aNGsO 6iScZ9yqpZJxbSETXebV7aGJDoGIpgQ= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjI5MDEwOSBTYWx0ZWRfX9BlTrnnp3tWX q888uZ7zZUJhO1hkvDiOzgZ+SIhXVHu3DgDsOg2baYtNmw7s7Xr7gk4+Q4tr8Rhwjn+hc5SxwVH tqa6O9+zwG9eNfNKvi8cYgIv8jqWeA4XV7YepqdiokNTBKcN6jpPeC3wzyBxRMiIrIdf6OBLCr6 MUAvbOVS//GHwyDWmPoWDt0+ql8c5tMFOKQq4VB8h3/AM/Cn4LEgVrOtCbILFN0D9f0kpuurqL9 XwluLJTTyL9t76lb3LuOGV8lohQq1hHsCmrRwaaXmFFDMrGPeYoGshW7eiWemvdqourdo/WEKE2 7hbuhqIKVzr0Wa9Ate9p9Nsjv0mGSS2y28eBU6hVh6nmM653q7u8KZEI4jyJOmE+To+rtoDrCJN kvZMzHWSf5/p+6iNxhzOhUUPk3NjbjXafpzs5Iz1bswQh+AL8SpvjuDXwqXqfLsXSnCTWBD8QpT 1ZdbLf0SRgwDVob558A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-29_03,2026-06-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 phishscore=0 priorityscore=1501 malwarescore=0 spamscore=0 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606290109 Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org RnJvbTogQnJpYW4gQ2FpbiA8YmNhaW5AcXVpY2luYy5jb20+CgpDby1hdXRob3JlZC1ieTogU2lk IE1hbm5pbmcgPHNpZG5leW1AcXVpY2luYy5jb20+ClJldmlld2VkLWJ5OiBUYXlsb3IgU2ltcHNv biA8bHRheWxvcnNpbXBzb25AZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBCcmlhbiBDYWluIDxi cmlhbi5jYWluQG9zcy5xdWFsY29tbS5jb20+Ci0tLQogdGFyZ2V0L2hleGFnb24vY3B1LmMgICAg ICAgIHwgICAxIC0KIHRhcmdldC9oZXhhZ29uL2NwdV9oZWxwZXIuYyB8IDM1NCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHRhcmdldC9oZXhhZ29uL29wX2hlbHBlci5jICB8 ICAzMyArKystCiAzIGZpbGVzIGNoYW5nZWQsIDM4NCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29uL2NwdV9oZWxwZXIuYwoKZGlm ZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdS5jIGIvdGFyZ2V0L2hleGFnb24vY3B1LmMKaW5k ZXggMzA1OTE5NmJjYWMuLmEwODA4M2VhMjkwIDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9j cHUuYworKysgYi90YXJnZXQvaGV4YWdvbi9jcHUuYwpAQCAtMzM0LDcgKzMzNCw2IEBAIHN0YXRp YyB2b2lkIGhleGFnb25fY3B1X3JlYWxpemUoRGV2aWNlU3RhdGUgKmRldiwgRXJyb3IgKiplcnJw KQogCiAgICAgcWVtdV9pbml0X3ZjcHUoY3MpOwogICAgIGNwdV9yZXNldChjcyk7Ci0KICAgICBt Y2MtPnBhcmVudF9yZWFsaXplKGRldiwgZXJycCk7CiB9CiAKZGlmZiAtLWdpdCBhL3RhcmdldC9o ZXhhZ29uL2NwdV9oZWxwZXIuYyBiL3RhcmdldC9oZXhhZ29uL2NwdV9oZWxwZXIuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTJiNDg2ZjRiYjUKLS0tIC9kZXYvbnVs bAorKysgYi90YXJnZXQvaGV4YWdvbi9jcHVfaGVscGVyLmMKQEAgLTAsMCArMSwzNTQgQEAKKy8q CisgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRz IHN1YnNpZGlhcmllcy4KKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v ci1sYXRlcgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5jbHVkZSAiY3B1Lmgi CisjaW5jbHVkZSAiY3B1X2hlbHBlci5oIgorI2luY2x1ZGUgInN5c3RlbS9jcHVzLmgiCisjaW5j bHVkZSAiaHcvY29yZS9ib2FyZHMuaCIKKyNpbmNsdWRlICJody9oZXhhZ29uL2hleGFnb24uaCIK KyNpbmNsdWRlICJody9oZXhhZ29uL2hleGFnb25fZ2xvYmFscmVnLmgiCisjaW5jbHVkZSAiaGV4 X2ludGVycnVwdHMuaCIKKyNpbmNsdWRlICJoZXhfbW11LmgiCisjaW5jbHVkZSAic3lzdGVtL3J1 bnN0YXRlLmgiCisjaW5jbHVkZSAiZXhlYy9jcHUtaW50ZXJydXB0LmgiCisjaW5jbHVkZSAiZXhl Yy90YXJnZXRfcGFnZS5oIgorI2luY2x1ZGUgImFjY2VsL3RjZy9jcHUtbGRzdC5oIgorI2luY2x1 ZGUgImV4ZWMvY3B1dGxiLmgiCisjaW5jbHVkZSAicWVtdS9sb2cuaCIKKyNpbmNsdWRlICJ0Y2cv dGNnLW9wLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJtYWNyb3MuaCIKKyNp bmNsdWRlICJzeXNfbWFjcm9zLmgiCisjaW5jbHVkZSAiYXJjaC5oIgorCisKK3VpbnQzMl90IGhl eGFnb25fZ2V0X3BtdV9jb3VudGVyKENQVUhleGFnb25TdGF0ZSAqY3VyX2VudiwgaW50IGluZGV4 KQoreworICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7Cit9CisKK3VpbnQ2NF90IGhleGFnb25f Z2V0X3N5c19wY3ljbGVfY291bnQoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgZ19hc3Nl cnRfbm90X3JlYWNoZWQoKTsKK30KKwordWludDMyX3QgaGV4YWdvbl9nZXRfc3lzX3BjeWNsZV9j b3VudF9oaWdoKENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIGdfYXNzZXJ0X25vdF9yZWFj aGVkKCk7Cit9CisKK3VpbnQzMl90IGhleGFnb25fZ2V0X3N5c19wY3ljbGVfY291bnRfbG93KENQ VUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7Cit9CisK K3ZvaWQgaGV4YWdvbl9zZXRfc3lzX3BjeWNsZV9jb3VudF9oaWdoKENQVUhleGFnb25TdGF0ZSAq ZW52LCB1aW50MzJfdCB2YWwpCit7CisgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKK30KKwor dm9pZCBoZXhhZ29uX3NldF9zeXNfcGN5Y2xlX2NvdW50X2xvdyhDUFVIZXhhZ29uU3RhdGUgKmVu diwgdWludDMyX3QgdmFsKQoreworICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7Cit9CisKK3Zv aWQgaGV4YWdvbl9zZXRfc3lzX3BjeWNsZV9jb3VudChDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWlu dDY0X3QgdmFsKQoreworICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7Cit9CisKK3N0YXRpYyB2 b2lkIGhleGFnb25fcmVzdW1lX3RocmVhZChDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBD UFVTdGF0ZSAqY3MgPSBlbnZfY3B1KGVudik7CisgICAgY2xlYXJfd2FpdF9tb2RlKGVudik7Cisg ICAgLyoKKyAgICAgKiBUaGUgd2FpdCBpbnN0cnVjdGlvbiBrZWVwcyB0aGUgUEMgcG9pbnRpbmcg dG8gaXRzZWxmCisgICAgICogc28gdGhhdCBpdCBoYXMgYW4gb3Bwb3J0dW5pdHkgdG8gY2hlY2sg Zm9yIGludGVycnVwdHMuCisgICAgICoKKyAgICAgKiBXaGVuIHdlIGNvbWUgb3V0IG9mIHdhaXQg bW9kZSwgYWRqdXN0IHRoZSBQQyB0byB0aGUKKyAgICAgKiBuZXh0IGV4ZWN1dGFibGUgaW5zdHJ1 Y3Rpb24uCisgICAgICovCisgICAgZW52LT5ncHJbSEVYX1JFR19QQ10gPSBlbnYtPndhaXRfbmV4 dF9wYzsKKyAgICBjcyA9IGVudl9jcHUoZW52KTsKKyAgICBBU1NFUlRfRElSRUNUX1RPX0dVRVNU X1VOU0VUKGVudiwgY3MtPmV4Y2VwdGlvbl9pbmRleCk7CisgICAgY3MtPmhhbHRlZCA9IGZhbHNl OworICAgIGNzLT5leGNlcHRpb25faW5kZXggPSBIRVhfRVZFTlRfTk9ORTsKKyAgICBxZW11X2Nw dV9raWNrKGNzKTsKK30KKwordm9pZCBoZXhhZ29uX3Jlc3VtZV90aHJlYWRzKENQVUhleGFnb25T dGF0ZSAqY3VycmVudF9lbnYsIHVpbnQzMl90IG1hc2spCit7CisgICAgQ1BVU3RhdGUgKmNzOwor ICAgIENQVUhleGFnb25TdGF0ZSAqZW52OworCisgICAgZ19hc3NlcnQoYnFsX2xvY2tlZCgpKTsK KyAgICBDUFVfRk9SRUFDSChjcykgeworICAgICAgICBlbnYgPSBjcHVfZW52KGNzKTsKKyAgICAg ICAgZ19hc3NlcnQoZW52LT50aHJlYWRJZCA8IFRIUkVBRFNfTUFYKTsKKyAgICAgICAgaWYgKCht YXNrICYgKDB4MSA8PCBlbnYtPnRocmVhZElkKSkpIHsKKyAgICAgICAgICAgIGlmIChnZXRfZXhl X21vZGUoZW52KSA9PSBIRVhfRVhFX01PREVfV0FJVCkgeworICAgICAgICAgICAgICAgIGhleGFn b25fcmVzdW1lX3RocmVhZChlbnYpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor fQorCit2b2lkIGhleGFnb25fbW9kaWZ5X3NzcihDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDMy X3QgbmV3LCB1aW50MzJfdCBvbGQpCit7CisgICAgYm9vbCBvbGRfRVgsIG9sZF9VTSwgb2xkX0dN LCBvbGRfSUU7CisgICAgYm9vbCBuZXdfRVgsIG5ld19VTSwgbmV3X0dNLCBuZXdfSUU7CisgICAg dWludDhfdCBvbGRfYXNpZCwgbmV3X2FzaWQ7CisKKyAgICBnX2Fzc2VydChicWxfbG9ja2VkKCkp OworCisgICAgb2xkX0VYID0gR0VUX1NTUl9GSUVMRChTU1JfRVgsIG9sZCk7CisgICAgb2xkX1VN ID0gR0VUX1NTUl9GSUVMRChTU1JfVU0sIG9sZCk7CisgICAgb2xkX0dNID0gR0VUX1NTUl9GSUVM RChTU1JfR00sIG9sZCk7CisgICAgb2xkX0lFID0gR0VUX1NTUl9GSUVMRChTU1JfSUUsIG9sZCk7 CisgICAgbmV3X0VYID0gR0VUX1NTUl9GSUVMRChTU1JfRVgsIG5ldyk7CisgICAgbmV3X1VNID0g R0VUX1NTUl9GSUVMRChTU1JfVU0sIG5ldyk7CisgICAgbmV3X0dNID0gR0VUX1NTUl9GSUVMRChT U1JfR00sIG5ldyk7CisgICAgbmV3X0lFID0gR0VUX1NTUl9GSUVMRChTU1JfSUUsIG5ldyk7CisK KyAgICBpZiAoKG9sZF9FWCAhPSBuZXdfRVgpIHx8CisgICAgICAgIChvbGRfVU0gIT0gbmV3X1VN KSB8fAorICAgICAgICAob2xkX0dNICE9IG5ld19HTSkpIHsKKyAgICAgICAgaGV4X21tdV9tb2Rl X2NoYW5nZShlbnYpOworICAgIH0KKworICAgIG9sZF9hc2lkID0gR0VUX1NTUl9GSUVMRChTU1Jf QVNJRCwgb2xkKTsKKyAgICBuZXdfYXNpZCA9IEdFVF9TU1JfRklFTEQoU1NSX0FTSUQsIG5ldyk7 CisgICAgaWYgKG5ld19hc2lkICE9IG9sZF9hc2lkKSB7CisgICAgICAgIENQVVN0YXRlICpjcyA9 IGVudl9jcHUoZW52KTsKKyAgICAgICAgdGxiX2ZsdXNoKGNzKTsKKyAgICB9CisKKyAgICAvKiBT ZWUgaWYgdGhlIGludGVycnVwdHMgaGF2ZSBiZWVuIGVuYWJsZWQgb3Igd2UgaGF2ZSBleGl0ZWQg RVggbW9kZSAqLworICAgIGlmICgobmV3X0lFICYmICFvbGRfSUUpIHx8CisgICAgICAgICghbmV3 X0VYICYmIG9sZF9FWCkpIHsKKyAgICAgICAgaGV4X2ludGVycnVwdF91cGRhdGUoZW52KTsKKyAg ICB9Cit9CisKK3ZvaWQgY2xlYXJfd2FpdF9tb2RlKENQVUhleGFnb25TdGF0ZSAqZW52KQorewor ICAgIEhleGFnb25DUFUgKmNwdTsKKyAgICB1aW50MzJfdCBtb2RlY3RsLCB0aHJlYWRfd2FpdF9t YXNrOworCisgICAgZ19hc3NlcnQoYnFsX2xvY2tlZCgpKTsKKworICAgIGNwdSA9IGVudl9hcmNo Y3B1KGVudik7CisgICAgaWYgKGNwdS0+Z2xvYmFscmVncykgeworICAgICAgICBtb2RlY3RsID0K KyAgICAgICAgICAgIGhleGFnb25fZ2xvYmFscmVnX3JlYWQoY3B1LT5nbG9iYWxyZWdzLCBIRVhf U1JFR19NT0RFQ1RMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYtPnRo cmVhZElkKTsKKyAgICAgICAgdGhyZWFkX3dhaXRfbWFzayA9IEdFVF9GSUVMRChNT0RFQ1RMX1cs IG1vZGVjdGwpOworICAgICAgICB0aHJlYWRfd2FpdF9tYXNrICY9IH4oMHgxIDw8IGVudi0+dGhy ZWFkSWQpOworICAgICAgICBTRVRfU1lTVEVNX0ZJRUxEKGVudiwgSEVYX1NSRUdfTU9ERUNUTCwg TU9ERUNUTF9XLCB0aHJlYWRfd2FpdF9tYXNrKTsKKyAgICB9Cit9CisKK3ZvaWQgaGV4YWdvbl9z c3Jfc2V0X2NhdXNlKENQVUhleGFnb25TdGF0ZSAqZW52LCB1aW50MzJfdCBjYXVzZSkKK3sKKyAg ICB1aW50MzJfdCBvbGQsIG5ldzsKKworICAgIGdfYXNzZXJ0KGJxbF9sb2NrZWQoKSk7CisKKyAg ICBvbGQgPSBlbnYtPnRfc3JlZ1tIRVhfU1JFR19TU1JdOworICAgIFNFVF9TWVNURU1fRklFTEQo ZW52LCBIRVhfU1JFR19TU1IsIFNTUl9FWCwgMSk7CisgICAgU0VUX1NZU1RFTV9GSUVMRChlbnYs IEhFWF9TUkVHX1NTUiwgU1NSX0NBVVNFLCBjYXVzZSk7CisgICAgbmV3ID0gZW52LT50X3NyZWdb SEVYX1NSRUdfU1NSXTsKKworICAgIGhleGFnb25fbW9kaWZ5X3NzcihlbnYsIG5ldywgb2xkKTsK K30KKworCitpbnQgZ2V0X2V4ZV9tb2RlKENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIEhl eGFnb25DUFUgKmNwdTsKKyAgICB1aW50MzJfdCBtb2RlY3RsLCB0aHJlYWRfZW5hYmxlZF9tYXNr LCB0aHJlYWRfd2FpdF9tYXNrOworICAgIHVpbnQzMl90IGlzZGJzdCwgZGVidWdtb2RlOworICAg IGJvb2wgRV9iaXQsIFdfYml0LCBEX2JpdDsKKworICAgIGdfYXNzZXJ0KGJxbF9sb2NrZWQoKSk7 CisKKyAgICBjcHUgPSBlbnZfYXJjaGNwdShlbnYpOworICAgIG1vZGVjdGwgPSBjcHUtPmdsb2Jh bHJlZ3MgPworICAgICAgICBoZXhhZ29uX2dsb2JhbHJlZ19yZWFkKGNwdS0+Z2xvYmFscmVncywg SEVYX1NSRUdfTU9ERUNUTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYtPnRo cmVhZElkKSA6IDA7CisgICAgdGhyZWFkX2VuYWJsZWRfbWFzayA9IEdFVF9GSUVMRChNT0RFQ1RM X0UsIG1vZGVjdGwpOworICAgIEVfYml0ID0gdGhyZWFkX2VuYWJsZWRfbWFzayAmICgweDEgPDwg ZW52LT50aHJlYWRJZCk7CisgICAgdGhyZWFkX3dhaXRfbWFzayA9IEdFVF9GSUVMRChNT0RFQ1RM X1csIG1vZGVjdGwpOworICAgIFdfYml0ID0gdGhyZWFkX3dhaXRfbWFzayAmICgweDEgPDwgZW52 LT50aHJlYWRJZCk7CisgICAgaXNkYnN0ID0gY3B1LT5nbG9iYWxyZWdzID8KKyAgICAgICAgaGV4 YWdvbl9nbG9iYWxyZWdfcmVhZChjcHUtPmdsb2JhbHJlZ3MsIEhFWF9TUkVHX0lTREJTVCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYtPnRocmVhZElkKSA6IDA7CisgICAgZGVi dWdtb2RlID0gR0VUX0ZJRUxEKElTREJTVF9ERUJVR01PREUsIGlzZGJzdCk7CisgICAgRF9iaXQg PSBkZWJ1Z21vZGUgJiAoMHgxIDw8IGVudi0+dGhyZWFkSWQpOworCisgICAgaWYgKCFEX2JpdCAm JiAhV19iaXQgJiYgIUVfYml0KSB7CisgICAgICAgIHJldHVybiBIRVhfRVhFX01PREVfT0ZGOwor ICAgIH0KKyAgICBpZiAoIURfYml0ICYmICFXX2JpdCAmJiBFX2JpdCkgeworICAgICAgICByZXR1 cm4gSEVYX0VYRV9NT0RFX1JVTjsKKyAgICB9CisgICAgaWYgKCFEX2JpdCAmJiBXX2JpdCAmJiBF X2JpdCkgeworICAgICAgICByZXR1cm4gSEVYX0VYRV9NT0RFX1dBSVQ7CisgICAgfQorICAgIGlm IChEX2JpdCAmJiAhV19iaXQgJiYgRV9iaXQpIHsKKyAgICAgICAgcmV0dXJuIEhFWF9FWEVfTU9E RV9ERUJVRzsKKyAgICB9CisgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKK30KKworc3RhdGlj IHVpbnQzMl90IHNldF9lbmFibGVfbWFzayhDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBI ZXhhZ29uQ1BVICpjcHU7CisgICAgdWludDMyX3QgbW9kZWN0bCwgdGhyZWFkX2VuYWJsZWRfbWFz azsKKworICAgIGdfYXNzZXJ0KGJxbF9sb2NrZWQoKSk7CisKKyAgICBjcHUgPSBlbnZfYXJjaGNw dShlbnYpOworICAgIGlmICghY3B1LT5nbG9iYWxyZWdzKSB7CisgICAgICAgIHJldHVybiAwOwor ICAgIH0KKyAgICBtb2RlY3RsID0KKyAgICAgICAgaGV4YWdvbl9nbG9iYWxyZWdfcmVhZChjcHUt Pmdsb2JhbHJlZ3MsIEhFWF9TUkVHX01PREVDVEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW52LT50aHJlYWRJZCk7CisgICAgdGhyZWFkX2VuYWJsZWRfbWFzayA9IEdFVF9GSUVM RChNT0RFQ1RMX0UsIG1vZGVjdGwpOworICAgIHRocmVhZF9lbmFibGVkX21hc2sgfD0gMHgxIDw8 IGVudi0+dGhyZWFkSWQ7CisgICAgU0VUX1NZU1RFTV9GSUVMRChlbnYsIEhFWF9TUkVHX01PREVD VEwsIE1PREVDVExfRSwgdGhyZWFkX2VuYWJsZWRfbWFzayk7CisgICAgcmV0dXJuIHRocmVhZF9l bmFibGVkX21hc2s7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBjbGVhcl9lbmFibGVfbWFzayhDUFVI ZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBIZXhhZ29uQ1BVICpjcHU7CisgICAgdWludDMyX3Qg bW9kZWN0bCwgdGhyZWFkX2VuYWJsZWRfbWFzazsKKworICAgIGdfYXNzZXJ0KGJxbF9sb2NrZWQo KSk7CisKKyAgICBjcHUgPSBlbnZfYXJjaGNwdShlbnYpOworICAgIGlmICghY3B1LT5nbG9iYWxy ZWdzKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBtb2RlY3RsID0KKyAgICAgICAg aGV4YWdvbl9nbG9iYWxyZWdfcmVhZChjcHUtPmdsb2JhbHJlZ3MsIEhFWF9TUkVHX01PREVDVEws CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LT50aHJlYWRJZCk7CisgICAgdGhy ZWFkX2VuYWJsZWRfbWFzayA9IEdFVF9GSUVMRChNT0RFQ1RMX0UsIG1vZGVjdGwpOworICAgIHRo cmVhZF9lbmFibGVkX21hc2sgJj0gfigweDEgPDwgZW52LT50aHJlYWRJZCk7CisgICAgU0VUX1NZ U1RFTV9GSUVMRChlbnYsIEhFWF9TUkVHX01PREVDVEwsIE1PREVDVExfRSwgdGhyZWFkX2VuYWJs ZWRfbWFzayk7CisgICAgcmV0dXJuIHRocmVhZF9lbmFibGVkX21hc2s7Cit9CitzdGF0aWMgdm9p ZCBkb19zdGFydF90aHJlYWQoQ1BVU3RhdGUgKmNzLCBydW5fb25fY3B1X2RhdGEgdGJkKQorewor ICAgIENQVUhleGFnb25TdGF0ZSAqZW52OworCisgICAgQlFMX0xPQ0tfR1VBUkQoKTsKKworICAg IGVudiA9IGNwdV9lbnYoY3MpOworCisgICAgaGV4YWdvbl9jcHVfc29mdF9yZXNldChlbnYpOwor CisgICAgc2V0X2VuYWJsZV9tYXNrKGVudik7CisKKyAgICBjcy0+aGFsdGVkID0gMDsKKyAgICBj cy0+ZXhjZXB0aW9uX2luZGV4ID0gSEVYX0VWRU5UX05PTkU7CisgICAgY3B1X3Jlc3VtZShjcyk7 Cit9CisKK3ZvaWQgaGV4YWdvbl9zdGFydF90aHJlYWRzKENQVUhleGFnb25TdGF0ZSAqY3VycmVu dF9lbnYsIHVpbnQzMl90IG1hc2spCit7CisgICAgQ1BVU3RhdGUgKmNzOworICAgIENQVV9GT1JF QUNIKGNzKSB7CisgICAgICAgIENQVUhleGFnb25TdGF0ZSAqZW52ID0gY3B1X2Vudihjcyk7Cisg ICAgICAgIGlmICghKG1hc2sgJiAoMHgxIDw8IGVudi0+dGhyZWFkSWQpKSkgeworICAgICAgICAg ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudF9lbnYtPnRocmVh ZElkICE9IGVudi0+dGhyZWFkSWQpIHsKKyAgICAgICAgICAgIGFzeW5jX3NhZmVfcnVuX29uX2Nw dShjcywgZG9fc3RhcnRfdGhyZWFkLCBSVU5fT05fQ1BVX05VTEwpOworICAgICAgICB9CisgICAg fQorfQorCisvKgorICogV2hlbiB3ZSBoYXZlIGFsbCB0aHJlYWRzIHN0b3BwZWQsIHRoZSByZXR1 cm4KKyAqIHZhbHVlIHRvIHRoZSBzaGVsbCBpcyByZWdpc3RlciAyIGZyb20gdGhyZWFkIDAuCisg Ki8KK3N0YXRpYyB1aW50MzJfdCBnZXRfdGhyZWFkMF9yMih2b2lkKQoreworICAgIENQVVN0YXRl ICpjczsKKyAgICBDUFVfRk9SRUFDSChjcykgeworICAgICAgICBDUFVIZXhhZ29uU3RhdGUgKnRo cmVhZCA9IGNwdV9lbnYoY3MpOworICAgICAgICBpZiAodGhyZWFkLT50aHJlYWRJZCA9PSAwKSB7 CisgICAgICAgICAgICByZXR1cm4gdGhyZWFkLT5ncHJbMl07CisgICAgICAgIH0KKyAgICB9Cisg ICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKK30KKwordm9pZCBoZXhhZ29uX3N0b3BfdGhyZWFk KENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIHVpbnQzMl90IHRocmVhZF9lbmFibGVkX21h c2s7CisgICAgQ1BVU3RhdGUgKmNzOworCisgICAgQlFMX0xPQ0tfR1VBUkQoKTsKKworICAgIHRo cmVhZF9lbmFibGVkX21hc2sgPSBjbGVhcl9lbmFibGVfbWFzayhlbnYpOworICAgIGNzID0gZW52 X2NwdShlbnYpOworICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfSEFMVCk7Cisg ICAgaWYgKCF0aHJlYWRfZW5hYmxlZF9tYXNrKSB7CisgICAgICAgIC8qIEFsbCB0aHJlYWRzIGFy ZSBzdG9wcGVkLCByZXF1ZXN0IHNodXRkb3duICovCisgICAgICAgIHFlbXVfc3lzdGVtX3NodXRk b3duX3JlcXVlc3Rfd2l0aF9jb2RlKAorICAgICAgICAgICAgU0hVVERPV05fQ0FVU0VfR1VFU1Rf U0hVVERPV04sIGdldF90aHJlYWQwX3IyKCkpOworICAgIH0KK30KKworc3RhdGljIGludCBzeXNf aW5fbW9uaXRvcl9tb2RlX3Nzcih1aW50MzJfdCBzc3IpCit7CisgICAgaWYgKChHRVRfU1NSX0ZJ RUxEKFNTUl9FWCwgc3NyKSAhPSAwKSB8fAorICAgICAgICAoKEdFVF9TU1JfRklFTEQoU1NSX0VY LCBzc3IpID09IDApICYmCisgICAgICAgICAoR0VUX1NTUl9GSUVMRChTU1JfVU0sIHNzcikgPT0g MCkpKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBzeXNfaW5fZ3Vlc3RfbW9kZV9zc3IodWludDMyX3Qgc3NyKQoreworICAgIGlmICgo R0VUX1NTUl9GSUVMRChTU1JfRVgsIHNzcikgPT0gMCkgJiYKKyAgICAgICAgKEdFVF9TU1JfRklF TEQoU1NSX1VNLCBzc3IpICE9IDApICYmCisgICAgICAgIChHRVRfU1NSX0ZJRUxEKFNTUl9HTSwg c3NyKSAhPSAwKSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgc3lzX2luX3VzZXJfbW9kZV9zc3IodWludDMyX3Qgc3NyKQoreworICAg IGlmICgoR0VUX1NTUl9GSUVMRChTU1JfRVgsIHNzcikgPT0gMCkgJiYKKyAgICAgICAgKEdFVF9T U1JfRklFTEQoU1NSX1VNLCBzc3IpICE9IDApICYmCisgICAgICAgIChHRVRfU1NSX0ZJRUxEKFNT Ul9HTSwgc3NyKSA9PSAwKSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJu IDA7Cit9CisKK2ludCBnZXRfY3B1X21vZGUoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAg dWludDMyX3Qgc3NyID0gZW52LT50X3NyZWdbSEVYX1NSRUdfU1NSXTsKKworICAgIGlmIChzeXNf aW5fbW9uaXRvcl9tb2RlX3Nzcihzc3IpKSB7CisgICAgICAgIHJldHVybiBIRVhfQ1BVX01PREVf TU9OSVRPUjsKKyAgICB9IGVsc2UgaWYgKHN5c19pbl9ndWVzdF9tb2RlX3Nzcihzc3IpKSB7Cisg ICAgICAgIHJldHVybiBIRVhfQ1BVX01PREVfR1VFU1Q7CisgICAgfSBlbHNlIGlmIChzeXNfaW5f dXNlcl9tb2RlX3Nzcihzc3IpKSB7CisgICAgICAgIHJldHVybiBIRVhfQ1BVX01PREVfVVNFUjsK KyAgICB9CisgICAgcmV0dXJuIEhFWF9DUFVfTU9ERV9NT05JVE9SOworfQpkaWZmIC0tZ2l0IGEv dGFyZ2V0L2hleGFnb24vb3BfaGVscGVyLmMgYi90YXJnZXQvaGV4YWdvbi9vcF9oZWxwZXIuYwpp bmRleCAyY2Q3ZjQ4ZWEyZi4uNGRjMmI4ZTYzYTcgMTAwNjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29u L29wX2hlbHBlci5jCisrKyBiL3RhcmdldC9oZXhhZ29uL29wX2hlbHBlci5jCkBAIC0yMCw2ICsy MCw3IEBACiAjaW5jbHVkZSAiYWNjZWwvdGNnL2NwdS1sZHN0LmgiCiAjaW5jbHVkZSAiYWNjZWwv dGNnL2NwdS1sb29wLmgiCiAjaW5jbHVkZSAiYWNjZWwvdGNnL3Byb2JlLmgiCisjaW5jbHVkZSAi cWVtdS9tYWluLWxvb3AuaCIKICNpbmNsdWRlICJjcHUuaCIKICNpbmNsdWRlICJleGVjL2hlbHBl ci1wcm90by5oIgogI2luY2x1ZGUgImZwdS9zb2Z0ZmxvYXQuaCIKQEAgLTE0NTIsMTcgKzE0NTMs NDMgQEAgdm9pZCBIRUxQRVIoc2V0aW1hc2spKENQVUhleGFnb25TdGF0ZSAqZW52LCB1aW50MzJf dCB0aWQsIHVpbnQzMl90IGltYXNrKQogCiB2b2lkIEhFTFBFUihzcmVnX3dyaXRlX21hc2tlZCko Q1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQogewotICAg IGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgQlFMX0xPQ0tfR1VBUkQoKTsKKyAgICBpZiAo cmVnIDwgSEVYX1NSRUdfR0xCX1NUQVJUKSB7CisgICAgICAgIGVudi0+dF9zcmVnW3JlZ10gPSB2 YWw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSGV4YWdvbkNQVSAqY3B1ID0gZW52X2FyY2hjcHUo ZW52KTsKKyAgICAgICAgaWYgKGNwdS0+Z2xvYmFscmVncykgeworICAgICAgICAgICAgaGV4YWdv bl9nbG9iYWxyZWdfd3JpdGVfbWFza2VkKGNwdS0+Z2xvYmFscmVncywgcmVnLCB2YWwpOworICAg ICAgICB9CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIFFFTVVfQUxXQVlTX0lOTElORSB1aW50 MzJfdCBzcmVnX3JlYWQoQ1BVSGV4YWdvblN0YXRlICplbnYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmVnKQoreworICAgIEhl eGFnb25DUFUgKmNwdTsKKworICAgIGdfYXNzZXJ0KGJxbF9sb2NrZWQoKSk7CisgICAgaWYgKHJl ZyA8IEhFWF9TUkVHX0dMQl9TVEFSVCkgeworICAgICAgICByZXR1cm4gZW52LT50X3NyZWdbcmVn XTsKKyAgICB9CisgICAgY3B1ID0gZW52X2FyY2hjcHUoZW52KTsKKyAgICByZXR1cm4gY3B1LT5n bG9iYWxyZWdzID8KKyAgICAgICAgaGV4YWdvbl9nbG9iYWxyZWdfcmVhZChjcHUtPmdsb2JhbHJl Z3MsIHJlZywgZW52LT50aHJlYWRJZCkgOiAwOwogfQogCiB1aW50MzJfdCBIRUxQRVIoc3JlZ19y ZWFkKShDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDMyX3QgcmVnKQogewotICAgIGdfYXNzZXJ0 X25vdF9yZWFjaGVkKCk7CisgICAgQlFMX0xPQ0tfR1VBUkQoKTsKKyAgICByZXR1cm4gc3JlZ19y ZWFkKGVudiwgcmVnKTsKIH0KIAogdWludDY0X3QgSEVMUEVSKHNyZWdfcmVhZF9wYWlyKShDUFVI ZXhhZ29uU3RhdGUgKmVudiwgdWludDMyX3QgcmVnKQogewotICAgIGdfYXNzZXJ0X25vdF9yZWFj aGVkKCk7CisgICAgQlFMX0xPQ0tfR1VBUkQoKTsKKworICAgIHJldHVybiBkZXBvc2l0NjQoKHVp bnQ2NF90KSBzcmVnX3JlYWQoZW52LCByZWcpLCAzMiwgMzIsCisgICAgICAgIHNyZWdfcmVhZChl bnYsIHJlZyArIDEpKTsKIH0KIAogdWludDMyX3QgSEVMUEVSKGdyZWdfcmVhZCkoQ1BVSGV4YWdv blN0YXRlICplbnYsIHVpbnQzMl90IHJlZykKLS0gCjIuMzQuMQoK