From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id CFAC6496EB for ; Wed, 16 Jul 2025 23:59:26 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 8D67568EDAE; Thu, 17 Jul 2025 02:59:07 +0300 (EEST) Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 4418068EBA2 for ; Thu, 17 Jul 2025 02:59:01 +0300 (EEST) Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-605b9488c28so570918a12.2 for ; Wed, 16 Jul 2025 16:59:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752710340; x=1753315140; darn=ffmpeg.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=+EZ7L2EU9EVzHnpKZuqlH0MhHsyPvDRY0U0YDeU+0Ss=; b=K+1cwyvMm6lHBaZgLf3ebinc904yzbaW3nWAG8BA6GoVuKP8g0Z1RTCkCKIdXzhpPr bIEsvG6Sqs267LVwebuOMSEu5gAKjmCWTm8ZLNTYZik2JgR0OjzYvqa/oa3OwNP4LDZO jhQt4tmSe/xMhTx+P9SB5YCxJV5acp7XbEnCRnp6K8zcqUmTA88yf7nXErTFPxQVjbh7 uXaUGtqC6m5zN6H+qHRpw2bKGurP4N54FqoJKeTfPAaZEWL9EQY7gDohZYW8akiWMoSk 3OtRwgZ1D3PyarH90u5ed3+OGCXAhc6SfK8Q88gLRjYnjuGuKotg1Ry8jfExhD2n22z5 R9lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752710340; x=1753315140; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+EZ7L2EU9EVzHnpKZuqlH0MhHsyPvDRY0U0YDeU+0Ss=; b=JfGck4lFPW3Zyh9hRnM2Jy6U+p36L5Fb0TdShtNEP3O/Eyuml6xmFdlnOORP6Q2XNc 4DeOWIJy6s3DsplWCO0ztf2E/mjqpu5R2Xvjiw3RkK4mVDUIkPU5pqjdgcd1fuqF/9/S Qqc0CYqUSt1QXaQ0or3LLDTYh+JhZkZ2+fJ/LQDIxPbdaD4+j2HXqe4rps2OI22wXZIB DBQTnOnRyhFMvFNqb8lvbD8FEoULZcZXbHanvDgPTY7Xc8S93MWgNP0L6sjHAzdc8ZNk qqacBMdKlYx5Fupk2eKYnXsLMmFoYz6rJraaDe9W/wop/RwY+diBCSxjm1vw8zx2Wzi1 NSsQ== X-Gm-Message-State: AOJu0YxLJpHlSuLT9UuHHvVpE8RfP/qhvsiwePhXA0f9rw2p+GIjKvSe G9zEANIhVcstDXNm1wyRDCw7MpO3XI4518LvVmL+QWvGE8uaVBSK5bA5J4DviA== X-Gm-Gg: ASbGncvGt1F/wVqN17s/GSRtf4VyB+QM46ENLeVYP5qDyd4ogANOyBhiiWs6aT+emvY PjhO5U0flZHM1YgEftoyJ8Em4raVJ2j+r7skl4hMHn1qyepol44jv1RxX9q7fpHAYi6zOpRe9YM qBqhRBs9m3e4cRPJnpc6kQgul19TMtyv5ma8Jqx3oVF1h9wHJB2kscGyRSeRGpWc1Ji52Tx4fvL mVQu1gi3kBRnNalcRIOQp6aG/qyh3xK1prTyDAa26tKTpHbeJSGXZYIgLK0EGz64C5R05nGJO4v 90R2F9UI1anhkt+qHKw9brlKw3+oFPtvrYv9C2DoGYF8GV9KhveORyLXjPRP9kCL9gwNeuI92kl Q+m/IysyiwJ4fyZhrare0761jiSJeNJCX+iQ/4IxgxAN8V+2NsF0= X-Google-Smtp-Source: AGHT+IGevd3K75g4COjLst/WDgmdklRZorIOFE9ZAoQntGYW46y2NBRs87rbiXYIelYdZ3DGL8MiPQ== X-Received: by 2002:a17:906:255b:b0:ad5:27f5:7183 with SMTP id a640c23a62f3a-ae9ce0c5bc3mr330930966b.39.1752710339633; Wed, 16 Jul 2025 16:58:59 -0700 (PDT) Received: from Domek (89-70-223-1.dynamic.play.pl. [89.70.223.1]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ae6e7e91a1bsm1258612766b.29.2025.07.16.16.58.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jul 2025 16:58:58 -0700 (PDT) From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 17 Jul 2025 01:57:04 +0200 Message-ID: <20250716235707.66547-3-kasper93@gmail.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250716235707.66547-1-kasper93@gmail.com> References: <20250716235707.66547-1-kasper93@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/5] avcodec/sonic: move code closer to use to avoid unused warnings X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: UHV0IGRlY29kaW5nIGFuZCBlbmNvZGluZyBjb2RlIGludG8gdGhpZXIgcmVzcGVjdGl2ZSAjaWYg YmxvY2tzLgoKU2lnbmVkLW9mZi1ieTogS2FjcGVyIE1pY2hhasWCb3cgPGthc3BlcjkzQGdtYWls LmNvbT4KLS0tCiBsaWJhdmNvZGVjL3NvbmljLmMgfCAyNTcgKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTI5IGluc2VydGlvbnMo KyksIDEyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3NvbmljLmMgYi9s aWJhdmNvZGVjL3NvbmljLmMKaW5kZXggYWNlZmJiZGJmYi4uMDg1NDlhYWNmZSAxMDA2NDQKLS0t IGEvbGliYXZjb2RlYy9zb25pYy5jCisrKyBiL2xpYmF2Y29kZWMvc29uaWMuYwpAQCAtOTYsMTM0 ICs5Niw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNoaWZ0X2Rvd24oaW50IGEsaW50IGIpCiAgICAg cmV0dXJuIChhPj5iKSsoYTwwKTsKIH0KIAotc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgYXZfZmxh dHRlbiB2b2lkIHB1dF9zeW1ib2woUmFuZ2VDb2RlciAqYywgdWludDhfdCAqc3RhdGUsIGludCB2 LCBpbnQgaXNfc2lnbmVkLCB1aW50NjRfdCByY19zdGF0WzI1Nl1bMl0sIHVpbnQ2NF90IHJjX3N0 YXQyWzMyXVsyXSl7Ci0gICAgaW50IGk7Ci0KLSNkZWZpbmUgcHV0X3JhYyhDLFMsQikgXAotZG97 XAotICAgIGlmKHJjX3N0YXQpe1wKLSAgICAgICAgcmNfc3RhdFsqKFMpXVtCXSsrO1wKLSAgICAg ICAgcmNfc3RhdDJbKFMpLXN0YXRlXVtCXSsrO1wKLSAgICB9XAotICAgIHB1dF9yYWMoQyxTLEIp O1wKLX13aGlsZSgwKQotCi0gICAgaWYodil7Ci0gICAgICAgIGNvbnN0IGludCBhPSBGRkFCUyh2 KTsKLSAgICAgICAgY29uc3QgaW50IGU9IGF2X2xvZzIoYSk7Ci0gICAgICAgIHB1dF9yYWMoYywg c3RhdGUrMCwgMCk7Ci0gICAgICAgIGlmKGU8PTkpewotICAgICAgICAgICAgZm9yKGk9MDsgaTxl OyBpKyspewotICAgICAgICAgICAgICAgIHB1dF9yYWMoYywgc3RhdGUrMStpLCAxKTsgIC8vMS4u MTAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1dF9yYWMoYywgc3RhdGUrMStpLCAwKTsK LQotICAgICAgICAgICAgZm9yKGk9ZS0xOyBpPj0wOyBpLS0pewotICAgICAgICAgICAgICAgIHB1 dF9yYWMoYywgc3RhdGUrMjIraSwgKGE+PmkpJjEpOyAvLzIyLi4zMQotICAgICAgICAgICAgfQot Ci0gICAgICAgICAgICBpZihpc19zaWduZWQpCi0gICAgICAgICAgICAgICAgcHV0X3JhYyhjLCBz dGF0ZSsxMSArIGUsIHYgPCAwKTsgLy8xMS4uMjEKLSAgICAgICAgfWVsc2V7Ci0gICAgICAgICAg ICBmb3IoaT0wOyBpPGU7IGkrKyl7Ci0gICAgICAgICAgICAgICAgcHV0X3JhYyhjLCBzdGF0ZSsx K0ZGTUlOKGksOSksIDEpOyAgLy8xLi4xMAotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHV0 X3JhYyhjLCBzdGF0ZSsxKzksIDApOwotCi0gICAgICAgICAgICBmb3IoaT1lLTE7IGk+PTA7IGkt LSl7Ci0gICAgICAgICAgICAgICAgcHV0X3JhYyhjLCBzdGF0ZSsyMitGRk1JTihpLDkpLCAoYT4+ aSkmMSk7IC8vMjIuLjMxCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmKGlzX3NpZ25l ZCkKLSAgICAgICAgICAgICAgICBwdXRfcmFjKGMsIHN0YXRlKzExICsgMTAsIHYgPCAwKTsgLy8x MS4uMjEKLSAgICAgICAgfQotICAgIH1lbHNlewotICAgICAgICBwdXRfcmFjKGMsIHN0YXRlKzAs IDEpOwotICAgIH0KLSN1bmRlZiBwdXRfcmFjCi19Ci0KLXN0YXRpYyBpbmxpbmUgYXZfZmxhdHRl biBpbnQgZ2V0X3N5bWJvbChSYW5nZUNvZGVyICpjLCB1aW50OF90ICpzdGF0ZSwgaW50IGlzX3Np Z25lZCl7Ci0gICAgaWYoZ2V0X3JhYyhjLCBzdGF0ZSswKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0g ICAgZWxzZXsKLSAgICAgICAgaW50IGksIGU7Ci0gICAgICAgIHVuc2lnbmVkIGE7Ci0gICAgICAg IGU9IDA7Ci0gICAgICAgIHdoaWxlKGdldF9yYWMoYywgc3RhdGUrMSArIEZGTUlOKGUsOSkpKXsg Ly8xLi4xMAotICAgICAgICAgICAgZSsrOwotICAgICAgICAgICAgaWYgKGUgPiAzMSkKLSAgICAg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgfQotCi0gICAg ICAgIGE9IDE7Ci0gICAgICAgIGZvcihpPWUtMTsgaT49MDsgaS0tKXsKLSAgICAgICAgICAgIGEg Kz0gYSArIGdldF9yYWMoYywgc3RhdGUrMjIgKyBGRk1JTihpLDkpKTsgLy8yMi4uMzEKLSAgICAg ICAgfQotCi0gICAgICAgIGU9IC0oaXNfc2lnbmVkICYmIGdldF9yYWMoYywgc3RhdGUrMTEgKyBG Rk1JTihlLCAxMCkpKTsgLy8xMS4uMjEKLSAgICAgICAgcmV0dXJuIChhXmUpLWU7Ci0gICAgfQot fQotCi1zdGF0aWMgaW5saW5lIGludCBpbnRsaXN0X3dyaXRlKFJhbmdlQ29kZXIgKmMsIHVpbnQ4 X3QgKnN0YXRlLCBpbnQgKmJ1ZiwgaW50IGVudHJpZXMsIGludCBiYXNlXzJfcGFydCkKLXsKLSAg ICBpbnQgaTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCBlbnRyaWVzOyBpKyspCi0gICAgICAgIHB1 dF9zeW1ib2woYywgc3RhdGUsIGJ1ZltpXSwgMSwgTlVMTCwgTlVMTCk7Ci0KLSAgICByZXR1cm4g MTsKLX0KLQotc3RhdGljIGlubGluZSBpbnQgaW50bGlzdF9yZWFkKFJhbmdlQ29kZXIgKmMsIHVp bnQ4X3QgKnN0YXRlLCBpbnQgKmJ1ZiwgaW50IGVudHJpZXMsIGludCBiYXNlXzJfcGFydCkKLXsK LSAgICBpbnQgaTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCBlbnRyaWVzOyBpKyspCi0gICAgICAg IGJ1ZltpXSA9IGdldF9zeW1ib2woYywgc3RhdGUsIDEpOwotCi0gICAgcmV0dXJuIDE7Ci19Ci0K LXN0YXRpYyB2b2lkIHByZWRpY3Rvcl9pbml0X3N0YXRlKGludCAqaywgaW50ICpzdGF0ZSwgaW50 IG9yZGVyKQotewotICAgIGludCBpOwotCi0gICAgZm9yIChpID0gb3JkZXItMjsgaSA+PSAwOyBp LS0pCi0gICAgewotICAgICAgICBpbnQgaiwgcCwgeCA9IHN0YXRlW2ldOwotCi0gICAgICAgIGZv ciAoaiA9IDAsIHAgPSBpKzE7IHAgPCBvcmRlcjsgaisrLHArKykKLSAgICAgICAgICAgIHsKLSAg ICAgICAgICAgIGludCB0bXAgPSB4ICsgc2hpZnRfZG93bihrW2pdICogKHVuc2lnbmVkKXN0YXRl W3BdLCBMQVRUSUNFX1NISUZUKTsKLSAgICAgICAgICAgIHN0YXRlW3BdICs9IHNoaWZ0X2Rvd24o a1tqXSogKHVuc2lnbmVkKXgsIExBVFRJQ0VfU0hJRlQpOwotICAgICAgICAgICAgeCA9IHRtcDsK LSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIGludCBwcmVkaWN0b3JfY2FsY19lcnJvcihp bnQgKmssIGludCAqc3RhdGUsIGludCBvcmRlciwgaW50IGVycm9yKQotewotICAgIGludCBpLCB4 ID0gZXJyb3IgLSAodW5zaWduZWQpc2hpZnRfZG93bihrW29yZGVyLTFdICogICh1bnNpZ25lZClz dGF0ZVtvcmRlci0xXSwgTEFUVElDRV9TSElGVCk7Ci0KLSAgICBpbnQgKmtfcHRyID0gJihrW29y ZGVyLTJdKSwKLSAgICAgICAgKnN0YXRlX3B0ciA9ICYoc3RhdGVbb3JkZXItMl0pOwotICAgIGZv ciAoaSA9IG9yZGVyLTI7IGkgPj0gMDsgaS0tLCBrX3B0ci0tLCBzdGF0ZV9wdHItLSkKLSAgICB7 Ci0gICAgICAgIGludCBrX3ZhbHVlID0gKmtfcHRyLCBzdGF0ZV92YWx1ZSA9ICpzdGF0ZV9wdHI7 Ci0gICAgICAgIHggLT0gKHVuc2lnbmVkKXNoaWZ0X2Rvd24oa192YWx1ZSAqICh1bnNpZ25lZClz dGF0ZV92YWx1ZSwgTEFUVElDRV9TSElGVCk7Ci0gICAgICAgIHN0YXRlX3B0clsxXSA9IHN0YXRl X3ZhbHVlICsgc2hpZnRfZG93bihrX3ZhbHVlICogKHVuc2lnbmVkKXgsIExBVFRJQ0VfU0hJRlQp OwotICAgIH0KLQotICAgIC8vIGRvbid0IGRyaWZ0IHRvbyBmYXIsIHRvIGF2b2lkIG92ZXJmbG93 cwotICAgIGlmICh4ID4gIChTQU1QTEVfRkFDVE9SPDwxNikpIHggPSAgKFNBTVBMRV9GQUNUT1I8 PDE2KTsKLSAgICBpZiAoeCA8IC0oU0FNUExFX0ZBQ1RPUjw8MTYpKSB4ID0gLShTQU1QTEVfRkFD VE9SPDwxNik7Ci0KLSAgICBzdGF0ZVswXSA9IHg7Ci0KLSAgICByZXR1cm4geDsKLX0KIAogI2lm IENPTkZJR19TT05JQ19FTkNPREVSIHx8IENPTkZJR19TT05JQ19MU19FTkNPREVSCiAvLyBIZWF2 aWx5IG1vZGlmaWVkIExldmluc29uLUR1cmJpbiBhbGdvcml0aG0gd2hpY2gKQEAgLTQxOSw2ICsy OTEsNjMgQEAgc3RhdGljIGF2X2NvbGQgaW50IHNvbmljX2VuY29kZV9jbG9zZShBVkNvZGVjQ29u dGV4dCAqYXZjdHgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBhdl9hbHdheXNfaW5saW5l IGF2X2ZsYXR0ZW4gdm9pZCBwdXRfc3ltYm9sKFJhbmdlQ29kZXIgKmMsIHVpbnQ4X3QgKnN0YXRl LCBpbnQgdiwgaW50IGlzX3NpZ25lZCwgdWludDY0X3QgcmNfc3RhdFsyNTZdWzJdLCB1aW50NjRf dCByY19zdGF0MlszMl1bMl0peworICAgIGludCBpOworCisjZGVmaW5lIHB1dF9yYWMoQyxTLEIp IFwKK2Rve1wKKyAgICBpZihyY19zdGF0KXtcCisgICAgICAgIHJjX3N0YXRbKihTKV1bQl0rKztc CisgICAgICAgIHJjX3N0YXQyWyhTKS1zdGF0ZV1bQl0rKztcCisgICAgfVwKKyAgICBwdXRfcmFj KEMsUyxCKTtcCit9d2hpbGUoMCkKKworICAgIGlmKHYpeworICAgICAgICBjb25zdCBpbnQgYT0g RkZBQlModik7CisgICAgICAgIGNvbnN0IGludCBlPSBhdl9sb2cyKGEpOworICAgICAgICBwdXRf cmFjKGMsIHN0YXRlKzAsIDApOworICAgICAgICBpZihlPD05KXsKKyAgICAgICAgICAgIGZvcihp PTA7IGk8ZTsgaSsrKXsKKyAgICAgICAgICAgICAgICBwdXRfcmFjKGMsIHN0YXRlKzEraSwgMSk7 ICAvLzEuLjEwCisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdXRfcmFjKGMsIHN0YXRlKzEr aSwgMCk7CisKKyAgICAgICAgICAgIGZvcihpPWUtMTsgaT49MDsgaS0tKXsKKyAgICAgICAgICAg ICAgICBwdXRfcmFjKGMsIHN0YXRlKzIyK2ksIChhPj5pKSYxKTsgLy8yMi4uMzEKKyAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgaWYoaXNfc2lnbmVkKQorICAgICAgICAgICAgICAgIHB1dF9y YWMoYywgc3RhdGUrMTEgKyBlLCB2IDwgMCk7IC8vMTEuLjIxCisgICAgICAgIH1lbHNleworICAg ICAgICAgICAgZm9yKGk9MDsgaTxlOyBpKyspeworICAgICAgICAgICAgICAgIHB1dF9yYWMoYywg c3RhdGUrMStGRk1JTihpLDkpLCAxKTsgIC8vMS4uMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIHB1dF9yYWMoYywgc3RhdGUrMSs5LCAwKTsKKworICAgICAgICAgICAgZm9yKGk9ZS0xOyBp Pj0wOyBpLS0peworICAgICAgICAgICAgICAgIHB1dF9yYWMoYywgc3RhdGUrMjIrRkZNSU4oaSw5 KSwgKGE+PmkpJjEpOyAvLzIyLi4zMQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZihp c19zaWduZWQpCisgICAgICAgICAgICAgICAgcHV0X3JhYyhjLCBzdGF0ZSsxMSArIDEwLCB2IDwg MCk7IC8vMTEuLjIxCisgICAgICAgIH0KKyAgICB9ZWxzZXsKKyAgICAgICAgcHV0X3JhYyhjLCBz dGF0ZSswLCAxKTsKKyAgICB9CisjdW5kZWYgcHV0X3JhYworfQorCitzdGF0aWMgaW5saW5lIGlu dCBpbnRsaXN0X3dyaXRlKFJhbmdlQ29kZXIgKmMsIHVpbnQ4X3QgKnN0YXRlLCBpbnQgKmJ1Ziwg aW50IGVudHJpZXMsIGludCBiYXNlXzJfcGFydCkKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAo aSA9IDA7IGkgPCBlbnRyaWVzOyBpKyspCisgICAgICAgIHB1dF9zeW1ib2woYywgc3RhdGUsIGJ1 ZltpXSwgMSwgTlVMTCwgTlVMTCk7CisKKyAgICByZXR1cm4gMTsKK30KKwogc3RhdGljIGludCBz b25pY19lbmNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tldCAqYXZwa3Qs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVkZyYW1lICpmcmFtZSwgaW50 ICpnb3RfcGFja2V0X3B0cikKIHsKQEAgLTY4NSw2ICs2MTQsNzggQEAgc3RhdGljIGF2X2NvbGQg aW50IHNvbmljX2RlY29kZV9jbG9zZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgcmV0dXJu IDA7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYXZfZmxhdHRlbiBpbnQgZ2V0X3N5bWJvbChSYW5nZUNv ZGVyICpjLCB1aW50OF90ICpzdGF0ZSwgaW50IGlzX3NpZ25lZCl7CisgICAgaWYoZ2V0X3JhYyhj LCBzdGF0ZSswKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZWxzZXsKKyAgICAgICAgaW50IGks IGU7CisgICAgICAgIHVuc2lnbmVkIGE7CisgICAgICAgIGU9IDA7CisgICAgICAgIHdoaWxlKGdl dF9yYWMoYywgc3RhdGUrMSArIEZGTUlOKGUsOSkpKXsgLy8xLi4xMAorICAgICAgICAgICAgZSsr OworICAgICAgICAgICAgaWYgKGUgPiAzMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKKyAgICAgICAgfQorCisgICAgICAgIGE9IDE7CisgICAgICAgIGZvcihp PWUtMTsgaT49MDsgaS0tKXsKKyAgICAgICAgICAgIGEgKz0gYSArIGdldF9yYWMoYywgc3RhdGUr MjIgKyBGRk1JTihpLDkpKTsgLy8yMi4uMzEKKyAgICAgICAgfQorCisgICAgICAgIGU9IC0oaXNf c2lnbmVkICYmIGdldF9yYWMoYywgc3RhdGUrMTEgKyBGRk1JTihlLCAxMCkpKTsgLy8xMS4uMjEK KyAgICAgICAgcmV0dXJuIChhXmUpLWU7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIGludCBp bnRsaXN0X3JlYWQoUmFuZ2VDb2RlciAqYywgdWludDhfdCAqc3RhdGUsIGludCAqYnVmLCBpbnQg ZW50cmllcywgaW50IGJhc2VfMl9wYXJ0KQoreworICAgIGludCBpOworCisgICAgZm9yIChpID0g MDsgaSA8IGVudHJpZXM7IGkrKykKKyAgICAgICAgYnVmW2ldID0gZ2V0X3N5bWJvbChjLCBzdGF0 ZSwgMSk7CisKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQgcHJlZGljdG9yX2luaXRf c3RhdGUoaW50ICprLCBpbnQgKnN0YXRlLCBpbnQgb3JkZXIpCit7CisgICAgaW50IGk7CisKKyAg ICBmb3IgKGkgPSBvcmRlci0yOyBpID49IDA7IGktLSkKKyAgICB7CisgICAgICAgIGludCBqLCBw LCB4ID0gc3RhdGVbaV07CisKKyAgICAgICAgZm9yIChqID0gMCwgcCA9IGkrMTsgcCA8IG9yZGVy OyBqKysscCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgaW50IHRtcCA9IHggKyBzaGlm dF9kb3duKGtbal0gKiAodW5zaWduZWQpc3RhdGVbcF0sIExBVFRJQ0VfU0hJRlQpOworICAgICAg ICAgICAgc3RhdGVbcF0gKz0gc2hpZnRfZG93bihrW2pdKiAodW5zaWduZWQpeCwgTEFUVElDRV9T SElGVCk7CisgICAgICAgICAgICB4ID0gdG1wOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0 aWMgaW50IHByZWRpY3Rvcl9jYWxjX2Vycm9yKGludCAqaywgaW50ICpzdGF0ZSwgaW50IG9yZGVy LCBpbnQgZXJyb3IpCit7CisgICAgaW50IGksIHggPSBlcnJvciAtICh1bnNpZ25lZClzaGlmdF9k b3duKGtbb3JkZXItMV0gKiAgKHVuc2lnbmVkKXN0YXRlW29yZGVyLTFdLCBMQVRUSUNFX1NISUZU KTsKKworICAgIGludCAqa19wdHIgPSAmKGtbb3JkZXItMl0pLAorICAgICAgICAqc3RhdGVfcHRy ID0gJihzdGF0ZVtvcmRlci0yXSk7CisgICAgZm9yIChpID0gb3JkZXItMjsgaSA+PSAwOyBpLS0s IGtfcHRyLS0sIHN0YXRlX3B0ci0tKQorICAgIHsKKyAgICAgICAgaW50IGtfdmFsdWUgPSAqa19w dHIsIHN0YXRlX3ZhbHVlID0gKnN0YXRlX3B0cjsKKyAgICAgICAgeCAtPSAodW5zaWduZWQpc2hp ZnRfZG93bihrX3ZhbHVlICogKHVuc2lnbmVkKXN0YXRlX3ZhbHVlLCBMQVRUSUNFX1NISUZUKTsK KyAgICAgICAgc3RhdGVfcHRyWzFdID0gc3RhdGVfdmFsdWUgKyBzaGlmdF9kb3duKGtfdmFsdWUg KiAodW5zaWduZWQpeCwgTEFUVElDRV9TSElGVCk7CisgICAgfQorCisgICAgLy8gZG9uJ3QgZHJp ZnQgdG9vIGZhciwgdG8gYXZvaWQgb3ZlcmZsb3dzCisgICAgaWYgKHggPiAgKFNBTVBMRV9GQUNU T1I8PDE2KSkgeCA9ICAoU0FNUExFX0ZBQ1RPUjw8MTYpOworICAgIGlmICh4IDwgLShTQU1QTEVf RkFDVE9SPDwxNikpIHggPSAtKFNBTVBMRV9GQUNUT1I8PDE2KTsKKworICAgIHN0YXRlWzBdID0g eDsKKworICAgIHJldHVybiB4OworfQorCiBzdGF0aWMgaW50IHNvbmljX2RlY29kZV9mcmFtZShB VkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50ICpnb3RfZnJhbWVfcHRyLCBBVlBhY2tldCAqYXZwa3QpCiB7Ci0tIAoy LjUwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZm bXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9m Zm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwg dmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9y ZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K