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 C088DCD98C6 for ; Thu, 11 Jun 2026 05:31:40 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXXzR-00083D-BE; Thu, 11 Jun 2026 01:30:07 -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 1wXXzO-00082o-64 for qemu-devel@nongnu.org; Thu, 11 Jun 2026 01:30:02 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXXzK-0000xK-KL for qemu-devel@nongnu.org; Thu, 11 Jun 2026 01:30:01 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65B5GPuI3817102 for ; Thu, 11 Jun 2026 05:29:47 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= 2J2ABcJjVPtkiBhxpWjWNGoytTE2wjslipK0f9+9n/s=; b=TCl46VaJTv1f549h Oz5MGjC+lhw5D2FH9IU/iYgFGzwM14HVsRCDSdh/Qw4geurDlPNyV9B4y9OJOaKi +zUOspEjr0pA7xmo9OYLEK4F4qJyBOVkIw+/LRiIfvKXBSbyAMiUv7BQvWybe5q/ 2ClHXSNdZZiNI2IrcJ9K0/NifSp/OqZtGvP0AcWxaKEXo+LK4+FFNwzQ8cucMr/a mXAPI2MIoIaD2hMbGQh7KGv5TlVLQnz6P4QID5Hqd3O9WjxoBKqFP0H+CCK1XBvt KXENRJ4eAPdVW21+JZtRlJMC7HTcZS7fvQVJuMAuNdQ14t73CX9ts6YkuFwpJKmU j0pPxQ== Received: from mail-dy1-f199.google.com (mail-dy1-f199.google.com [74.125.82.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4eqe6usrrt-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 11 Jun 2026 05:29:47 +0000 (GMT) Received: by mail-dy1-f199.google.com with SMTP id 5a478bee46e88-304c652be4eso425875eec.1 for ; Wed, 10 Jun 2026 22:29:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781155787; x=1781760587; 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=2J2ABcJjVPtkiBhxpWjWNGoytTE2wjslipK0f9+9n/s=; b=Vd0vVbxvF/c2GR7nCYlI7Ms78736/fWMgDmdMN9d9ggzEO3xzmS5WczRkO2/OChuhE PmjFBfZCuYipEa4FnakPgBJlIYJVJGQSS07MGlwuY8pAQB9NqWrOOU5iuDg/KZDjgztA Nc8FWly3lG4uJlFLV1fdLKhhRpo5TqbG6lkdUpvwNtVey6P6Yr5EWD18dyDMHuDc5VZH JzqpJQvshKxBSyrtRNHpbp9BjrzZFzvxmnSkChMxJmPGkizYAypi4gvkarr3jAescKuB WA/GyUGe6xZ6XTX1WsIJexAJXIcatSlBcXEQvsLrPWrc6D98HYSaYXB+B8sSjAply2Os ShRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781155787; x=1781760587; 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=2J2ABcJjVPtkiBhxpWjWNGoytTE2wjslipK0f9+9n/s=; b=GZZo+5B0Ej1nxAh/+UZbACoAqZnwmIoellNchfej6ffrQs/mQDqgSXRV4LT66b5ctM 5q0+QSgFb/WMGDSZz+xdouwdk37UGAHN9qrAMwgSd9SaGgmKKfp9UFyjcwWe+rJV838f 1BP4cqlG137WRYgYQfCl1Uup8vuv9k/eRr/APc+LkBxAdMzGSJblf3Ml0IQn6UVgrvym XUdj81UH8ty7OtQLixThoiDnMzGI8l8EgiorbKA2i/PNsCD53eyE7dW/oeeaLV4SDHVc dD/+sXC8kzaf9m1HnvYF77nqSyO0PHoCfquqsN1xHXU6RnZxMsQXcTH6SA6xi0p++XXp 0TIg== X-Gm-Message-State: AOJu0Yw3qOizjDQ4QNDaABjHgrAn0sWQ0WPwfs/AhpeiTQJdZ4ymYjwA VnTHqLcWNVzul5Uby/T33ekBl2jxnh/FA//P4t0W4LT0BXpG5trHhQUDV1gNLxkBDBVYxITgW4W +eKLBIaaoUXri2+t/w1W3286/ueMQVEZvXXCjhzwu+OdOjtnO8VQ1ZSDzPPkcEpfihQ== X-Gm-Gg: Acq92OH3nQsE0G/Pv/MG2YKM/i/SCUlZI20RtZ05cgn+ENXxUS3eSrFh8wfOtByJta2 DvoilKGcl5/YS1oAj0On3bVLs/jATzVGYnU0depDg1rjJH4dpkvSToL3ng8qkClaqO+t0MUpuKs udNYlu/HSjU0773Huf0ovwAeue6tNY9UzOLqIjM7DBvITpEYGn6lN1bCGcw4i9KLA+MhF74fcdE i1a5T8/XNDiNQW3kZ+F0nO0+w9S4uav/FCIiv7r93YDdqsNzrJT922sCNW7gao2IBzdpfHbfl7a 96lv5bUb/wphtPUcUzUPn93cvvf2gLRMU8TvihYu1nEHbH8J4WQsesmZanRAuvaeciRjioLjM9d N1tKdokEWWqxpafa7yoL+O6SkKORlxbyHnB/CD9sH9edi/D1JH4tesghrdNg7wHTJOgruYEBHLC nNEy3p X-Received: by 2002:a05:7022:f99:b0:12d:b8e5:5e2 with SMTP id a92af1059eb24-13842ec3600mr630274c88.23.1781155786575; Wed, 10 Jun 2026 22:29:46 -0700 (PDT) X-Received: by 2002:a05:7022:f99:b0:12d:b8e5:5e2 with SMTP id a92af1059eb24-13842ec3600mr630241c88.23.1781155786007; Wed, 10 Jun 2026 22:29:46 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-30806e8a402sm880475eec.17.2026.06.10.22.29.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 22:29:45 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, matheus.bernardino@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, ltaylorsimpson@gmail.com, philmd@mailo.org, philmd@oss.qualcomm.com, Brian Cain , Sid Manning Subject: [PATCH v8] target/hexagon: Add sreg_{read,write} helpers Date: Wed, 10 Jun 2026 22:28:49 -0700 Message-Id: <20260611052857.3911981-29-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260611052857.3911981-1-brian.cain@oss.qualcomm.com> References: <20260611052857.3911981-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Authority-Analysis: v=2.4 cv=FJ8rAeos c=1 sm=1 tr=0 ts=6a2a47cb cx=c_pps a=cFYjgdjTJScbgFmBucgdfQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=COk6AnOGAAAA:8 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=rqZXtLhFGwB6yMrbUaoA:9 a=QEXdDO2ut3YA:10 a=scEy_gLbYbu1JhEsrz4S:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjExMDA1MSBTYWx0ZWRfX31VDxzaVCbr3 FRIkuynnDHxUJh9jet1L142qqwv/Gj6ugbm8ksnIgtnuKEZL5Rp4DdRkjidzitw82Cf92IV262n 8JhiOdQ4PZRiBl2y9M26nOejZu1ihCg= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjExMDA1MSBTYWx0ZWRfX1tm9zCuUxnzn bBwtzpjY0EVQwY5AgtiPxF6/YYADR3Ktr+dFd5VSL0Ijgq6w1ltaxp6O580sxNwlVEzcxc+N7O9 S6WeWkQxVkXKiSnLwMQ/0FCcNq7s32VpnFoh1eu+FDo0kX5kXuEH1GXgiaqjglJjyD5/kfVCCQ+ g+lMt/EQmFnoo6S1iGWHkf4sfUdWO+5shJEJy74mPMCllp1VMuStRH6ps5pkV1ygirw8OIY+EPJ /jAU/peemGhXo6UTq5HeR2rPUP/NEHtAxsYsmM2+jf3LRppJPIW3785BDAIQiX29c830nVcH58t p8eD4vmnqUjKOm8d0o4Jjcz8nkdh+GBYXsuC1YNCUkAt50ZE5M3K7FprZjoXGu/vbgtLk1iMlHv fQxAjbls+rtzvA0xtNe3pOm+xTD2GJaWWrZ3dziPPN/YsUn/xtXJH1e2/S1NrppQ6NK0u56j79a BnMvc24VVzXHF6ju9nQ== X-Proofpoint-GUID: y2A0GP91KJmXbPShiIAhqz2I3mHH75H6 X-Proofpoint-ORIG-GUID: y2A0GP91KJmXbPShiIAhqz2I3mHH75H6 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-11_01,2026-06-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 adultscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 spamscore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606040000 definitions=main-2606110051 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-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, RCVD_IN_MSPIKE_H2=0.001, 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 bmRleCA4MmQwMTYxOTZkZi4uNzA2Y2IwYTVkOWYgMTAwNjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29u L29wX2hlbHBlci5jCisrKyBiL3RhcmdldC9oZXhhZ29uL29wX2hlbHBlci5jCkBAIC0xOSw2ICsx OSw3IEBACiAjaW5jbHVkZSAicWVtdS9sb2cuaCIKICNpbmNsdWRlICJhY2NlbC90Y2cvY3B1LWxk c3QuaCIKICNpbmNsdWRlICJhY2NlbC90Y2cvcHJvYmUuaCIKKyNpbmNsdWRlICJxZW11L21haW4t bG9vcC5oIgogI2luY2x1ZGUgImNwdS5oIgogI2luY2x1ZGUgImV4ZWMvaGVscGVyLXByb3RvLmgi CiAjaW5jbHVkZSAiZnB1L3NvZnRmbG9hdC5oIgpAQCAtMTQ1MSwxNyArMTQ1Miw0MyBAQCB2b2lk IEhFTFBFUihzZXRpbWFzaykoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IHRpZCwgdWlu dDMyX3QgaW1hc2spCiAKIHZvaWQgSEVMUEVSKHNyZWdfd3JpdGVfbWFza2VkKShDUFVIZXhhZ29u U3RhdGUgKmVudiwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7Ci0gICAgZ19hc3NlcnRf bm90X3JlYWNoZWQoKTsKKyAgICBCUUxfTE9DS19HVUFSRCgpOworICAgIGlmIChyZWcgPCBIRVhf U1JFR19HTEJfU1RBUlQpIHsKKyAgICAgICAgZW52LT50X3NyZWdbcmVnXSA9IHZhbDsKKyAgICB9 IGVsc2UgeworICAgICAgICBIZXhhZ29uQ1BVICpjcHUgPSBlbnZfYXJjaGNwdShlbnYpOworICAg ICAgICBpZiAoY3B1LT5nbG9iYWxyZWdzKSB7CisgICAgICAgICAgICBoZXhhZ29uX2dsb2JhbHJl Z193cml0ZV9tYXNrZWQoY3B1LT5nbG9iYWxyZWdzLCByZWcsIHZhbCk7CisgICAgICAgIH0KKyAg ICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgUUVNVV9BTFdBWVNfSU5MSU5FIHVpbnQzMl90IHNyZWdf cmVhZChDUFVIZXhhZ29uU3RhdGUgKmVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByZWcpCit7CisgICAgSGV4YWdvbkNQVSAq Y3B1OworCisgICAgZ19hc3NlcnQoYnFsX2xvY2tlZCgpKTsKKyAgICBpZiAocmVnIDwgSEVYX1NS RUdfR0xCX1NUQVJUKSB7CisgICAgICAgIHJldHVybiBlbnYtPnRfc3JlZ1tyZWddOworICAgIH0K KyAgICBjcHUgPSBlbnZfYXJjaGNwdShlbnYpOworICAgIHJldHVybiBjcHUtPmdsb2JhbHJlZ3Mg PworICAgICAgICBoZXhhZ29uX2dsb2JhbHJlZ19yZWFkKGNwdS0+Z2xvYmFscmVncywgcmVnLCBl bnYtPnRocmVhZElkKSA6IDA7CiB9CiAKIHVpbnQzMl90IEhFTFBFUihzcmVnX3JlYWQpKENQVUhl eGFnb25TdGF0ZSAqZW52LCB1aW50MzJfdCByZWcpCiB7Ci0gICAgZ19hc3NlcnRfbm90X3JlYWNo ZWQoKTsKKyAgICBCUUxfTE9DS19HVUFSRCgpOworICAgIHJldHVybiBzcmVnX3JlYWQoZW52LCBy ZWcpOwogfQogCiB1aW50NjRfdCBIRUxQRVIoc3JlZ19yZWFkX3BhaXIpKENQVUhleGFnb25TdGF0 ZSAqZW52LCB1aW50MzJfdCByZWcpCiB7Ci0gICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAg ICBCUUxfTE9DS19HVUFSRCgpOworCisgICAgcmV0dXJuIGRlcG9zaXQ2NCgodWludDY0X3QpIHNy ZWdfcmVhZChlbnYsIHJlZyksIDMyLCAzMiwKKyAgICAgICAgc3JlZ19yZWFkKGVudiwgcmVnICsg MSkpOwogfQogCiB1aW50MzJfdCBIRUxQRVIoZ3JlZ19yZWFkKShDUFVIZXhhZ29uU3RhdGUgKmVu diwgdWludDMyX3QgcmVnKQotLSAKMi4zNC4xCgo=