From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eliezer Tamir" Subject: [PATCH 5/8][BNX2X] resubmit as attachments: bnx2x_init.h Date: Mon, 08 Oct 2007 18:16:36 +0200 Message-ID: <470A57E4.9060705@broadcom.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=------------090702050809010608090206 To: davem@davemloft.net, jeff@garzik.org, "netdev@vger.kernel.org" , "Michael Chan" Return-path: Received: from mms2.broadcom.com ([216.31.210.18]:1570 "EHLO mms2.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752035AbXJHQPY (ORCPT ); Mon, 8 Oct 2007 12:15:24 -0400 Sender: netdev-owner@vger.kernel.org List-Id: netdev.vger.kernel.org This is a multi-part message in MIME format. --------------090702050809010608090206 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit bnx2x_init.h - code that does chip init --------------090702050809010608090206 Content-Type: text/plain; name=0005-add-bnx2x_init.h.txt Content-Transfer-Encoding: base64 Content-Disposition: inline; filename=0005-add-bnx2x_init.h.txt RnJvbSA4ZWY5OTVhMzEwMjgwMGQ3MGI2NzdhZWZiNmU3NjljMGQzNmUxNzhjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFbGllemVyIFRhbWlyIDxlbGllemVydEBicm9hZGNv bS5jb20+CkRhdGU6IE1vbiwgOCBPY3QgMjAwNyAxMTo1MzoxNyArMDIwMApTdWJqZWN0OiBb UEFUQ0ggNS84XSBhZGQgYm54MnhfaW5pdC5oCgpTaWduZWQtb2ZmLWJ5OiBFbGllemVyIFRh bWlyIDxlbGllemVydEBicm9hZGNvbS5jb20+Ci0tLQogZHJpdmVycy9uZXQvYm54MnhfaW5p dC5oIHwgIDU1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiAxIGZpbGVzIGNoYW5nZWQsIDU1NSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JueDJ4X2luaXQuaCBiL2RyaXZlcnMvbmV0 L2JueDJ4X2luaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDZm MDY0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uZXQvYm54MnhfaW5pdC5oCkBAIC0w LDAgKzEsNTU1IEBACisvKiBibngyeF9pbml0Lmg6IEJyb2FkY29tIEV2ZXJlc3QgbmV0d29y ayBkcml2ZXIuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA3IEJyb2FkY29tIENvcnBvcmF0 aW9uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFdyaXR0ZW4gYnk6IEVsaWV6ZXIg VGFtaXIgPGVsaWV6ZXJ0QGJyb2FkY29tLmNvbT4KKyAqLyAgICAgICAgIAorI2lmbmRlZiBF VkVSRVNUX0lOSVRfRlVOQ1RJT05TX0gKKyNkZWZpbmUgRVZFUkVTVF9JTklUX0ZVTkNUSU9O U19ICisKKyNkZWZpbmUgQ09NTU9OIDB4MQorI2RlZmluZSBQT1JUMCAgMHgyCisjZGVmaW5l IFBPUlQxICAweDQKKworI2RlZmluZSBJTklUX0VNVUxBVElPTiAJMHgxCisjZGVmaW5lIElO SVRfRlBHQSAJMHgyCisjZGVmaW5lIElOSVRfQVNJQyAJMHg0CisjZGVmaW5lIElOSVRfSEFS RFdBUkUgCTB4NworCisjZGVmaW5lIEJMQ05VTV9QUlMgICAgICAwCisjZGVmaW5lIEJMQ05V TV9TUkNIICAgICAxCisjZGVmaW5lIEJMQ05VTV9UU0RNICAgICAyCisjZGVmaW5lIEJMQ05V TV9UQ00gICAgICAzCisjZGVmaW5lIEJMQ05VTV9CUkIxICAgICA0CisjZGVmaW5lIEJMQ05V TV9UU0VNICAgICA1CisjZGVmaW5lIEJMQ05VTV9QWFBDUyAgICA2CisjZGVmaW5lIEJMQ05V TV9FTUFDMCAgICA3CisjZGVmaW5lIEJMQ05VTV9FTUFDMSAgICA4CisjZGVmaW5lIEJMQ05V TV9EQlUgICAgICA5CisjZGVmaW5lIEJMQ05VTV9NSVNDICAgICAxMAorI2RlZmluZSBCTENO VU1fREJHICAgICAgMTEKKyNkZWZpbmUgQkxDTlVNX05JRyAgICAgIDEyCisjZGVmaW5lIEJM Q05VTV9NQ1AgICAgICAxMworI2RlZmluZSBCTENOVU1fVVBCICAgICAgMTQKKyNkZWZpbmUg QkxDTlVNX0NTRE0gICAgIDE1CisjZGVmaW5lIEJMQ05VTV9VU0RNICAgICAxNgorI2RlZmlu ZSBCTENOVU1fQ0NNICAgICAgMTcKKyNkZWZpbmUgQkxDTlVNX1VDTSAgICAgIDE4CisjZGVm aW5lIEJMQ05VTV9VU0VNICAgICAxOQorI2RlZmluZSBCTENOVU1fQ1NFTSAgICAgMjAKKyNk ZWZpbmUgQkxDTlVNX1hQQiAgICAgIDIxCisjZGVmaW5lIEJMQ05VTV9EUSAgICAgICAyMgor I2RlZmluZSBCTENOVU1fVElNRVJTICAgMjMKKyNkZWZpbmUgQkxDTlVNX1hTRE0gICAgIDI0 CisjZGVmaW5lIEJMQ05VTV9RTSAgICAgICAyNQorI2RlZmluZSBCTENOVU1fUEJGICAgICAg MjYKKyNkZWZpbmUgQkxDTlVNX1hDTSAgICAgIDI3CisjZGVmaW5lIEJMQ05VTV9YU0VNICAg ICAyOAorI2RlZmluZSBCTENOVU1fQ0RVICAgICAgMjkKKyNkZWZpbmUgQkxDTlVNX0RNQUUg ICAgIDMwCisjZGVmaW5lIEJMQ05VTV9QWFAgICAgICAzMQorI2RlZmluZSBCTENOVU1fQ0ZD ICAgICAgMzIKKyNkZWZpbmUgQkxDTlVNX0hDICAgICAgIDMzCisjZGVmaW5lIEJMQ05VTV9Q WFAyICAgICAzNAorI2RlZmluZSBCTENOVU1fTUlTQ19BRVUgMzUKKworCitzdGF0aWMgdm9p ZCBibngyeF9yZWdfd3JfaW5kKHN0cnVjdCBibngyeCAqYnAsIHUzMiBhZGRyLCB1MzIgdmFs KTsKKworc3RhdGljIHZvaWQgYm54Mnhfd3JpdGVfZG1hZShzdHJ1Y3QgYm54MnggKmJwLCBk bWFfYWRkcl90IGRtYV9hZGRyLAorCQkJICAgICB1MzIgd2JfYWRkciwgdTMyIHdiX2xlbik7 CisKK3N0YXRpYyBpbnQgYm54MnhfZ3VuemlwKHN0cnVjdCBibngyeCAqYnAsIHU4ICp6YnVm LCBpbnQgbGVuKTsKKworCisjZGVmaW5lIE1FTV9XUihibG9ja19hZGRyLCByZWcsIHZhbHVl LCBsZW4zMikgXAorZG8geyBcCisJaW50IF9faTsgXAorCWZvciAoX19pID0gMDsgX19pIDwg bGVuMzI7IF9faSsrKSB7IFwKKwkJUkVHX1dSKGJwLCBibG9ja19hZGRyLCByZWcgKyBfX2kq NCwgKCgodTMyICopKHZhbHVlKSlbX19pXSkpOyBcCisJCWlmICghKF9faSAlIDEwMDAwKSkg eyBcCisJCQl0b3VjaF9zb2Z0bG9ja3VwX3dhdGNoZG9nKCk7IFwKKwkJCWNwdV9yZWxheCgp OyBcCisJCX0gXAorCX0gXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBNRU1fSU5EKGJsb2Nr X2FkZHIsIHJlZywgdmFsdWUsIGxlbjMyKSBcCitkbyB7IFwKKwlpbnQgX19pOyBcCisJZm9y IChfX2kgPSAwOyBfX2kgPCBsZW4zMjsgX19pKyspIHsgXAorCQlSRUdfV1JfSU5EKGJwLCBi bG9ja19hZGRyLCByZWcgKyBfX2kqNCwgXAorCQkoKCh1MzIgKikodmFsdWUpKVtfX2ldKSk7 IFwKKwkJaWYgKCEoX19pICUgMTAwMDApKSB7IFwKKwkJCXRvdWNoX3NvZnRsb2NrdXBfd2F0 Y2hkb2coKTsgXAorCQkJY3B1X3JlbGF4KCk7IFwKKwkJfSBcCisJfSBcCit9IHdoaWxlICgw KQorCisjZGVmaW5lIF9ETUFFX1dSKGJsb2NrX2FkZHIsIHJlZywgbGVuMzIpIFwKK2RvIHsg XAorCWludCBfX2xlbjMyID0gbGVuMzIsIG9mZnNldCA9IDA7IFwKKwl3aGlsZSAoX19sZW4z MiA+IERNQUVfTEVOX01BWCkgeyBcCisvKgkJRFAoTkVUSUZfTVNHX0RNQUUsICJETUFFX1dS OiBvZmZzZXQgJWQgIGxlbjMyICVkXG4iLCBcCisJCSAgIG9mZnNldCwgX19sZW4zMik7ICov IFwKKwkJYm54Mnhfd3JpdGVfZG1hZShicCwgYnAtPmd1bnppcF9tYXBwaW5nICsgb2Zmc2V0 LCBcCisJCQkJIGJsb2NrX2FkZHIgKyByZWcgKyBvZmZzZXQsIERNQUVfTEVOX01BWCk7IFwK KwkJb2Zmc2V0ICs9IERNQUVfTEVOX01BWCAqIDQ7IFwKKwkJX19sZW4zMiAtPSBETUFFX0xF Tl9NQVg7IFwKKwl9IFwKKy8qCURQKE5FVElGX01TR19ETUFFLCAiRE1BRV9XUjogb2Zmc2V0 ICVkICBsZW4zMiAlZFxuIiwgb2Zmc2V0LCBcCisJICAgX19sZW4zMik7ICovIFwKKwlibngy eF93cml0ZV9kbWFlKGJwLCBicC0+Z3VuemlwX21hcHBpbmcgKyBvZmZzZXQsIFwKKwkJCSBi bG9ja19hZGRyICsgcmVnICsgb2Zmc2V0LCBfX2xlbjMyKTsgXAorfSB3aGlsZSAoMCkKKwor I2RlZmluZSBETUFFX1dSKGJsb2NrX2FkZHIsIHJlZywgdmFsdWUsIGxlbjMyKSBcCitkbyB7 IFwKKy8qCURQKE5FVElGX01TR19ETUFFLCAiRE1BRV9XUjogYmxvY2sgMHgleCAgcmVnIDB4 JWx4ICBsZW4zMiAlZFxuIiwgXAorCSAgIGJsb2NrX2FkZHIsIHJlZywgbGVuMzIpOyAqLyBc CisJbWVtY3B5KGJwLT5ndW56aXBfYnVmLCB2YWx1ZSwgKGxlbjMyKSAqIDQpOyBcCisJX0RN QUVfV1IoYmxvY2tfYWRkciwgcmVnLCBsZW4zMik7IFwKK30gd2hpbGUgKDApCisKKyNkZWZp bmUgRE1BRV9DTFIoYnAsIGJsb2NrX2FkZHIsIHJlZywgbGVuMzIpIFwKK2RvIHsgXAorLyoJ RFAoTkVUSUZfTVNHX0RNQUUsICJETUFFX0NMUjogYmxvY2sgMHgleCAgcmVnIDB4JWx4ICBs ZW4zMiAlZFxuIiwgXAorCSAgIGJsb2NrX2FkZHIsIHJlZywgbGVuMzIpOyAqLyBcCisJbWVt c2V0KGJwLT5ndW56aXBfYnVmLCAwLCAobGVuMzIpICogNCk7IFwKKwlfRE1BRV9XUihibG9j a19hZGRyLCByZWcsIGxlbjMyKTsgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBHVU5aSVBf RE1BRV9XUihibG9ja19hZGRyLCByZWcsIHZhbHVlLCBsZW44KSBcCitkbyB7IFwKKy8qCURQ KE5FVElGX01TR19ETUFFLCAiR1VOWklQX0RNQUVfV1I6IGJsb2NrIDB4JXggIHJlZyAweCVs eCAgbGVuOCAlZFxuIiwgXAorCSAgIGJsb2NrX2FkZHIsIHJlZywgbGVuOCk7ICovIFwKKwli bngyeF9ndW56aXAoYnAsICh1OCAqKSh2YWx1ZSksIGxlbjgpOyBcCisvKglEUChORVRJRl9N U0dfRE1BRSwgIiAgPT0+IG91dGxlbiAlZFxuIiwgYnAtPmd1bnppcF9vdXRsZW4pOyAqLyBc CisJX0RNQUVfV1IoYmxvY2tfYWRkciwgcmVnLCBicC0+Z3VuemlwX291dGxlbik7IFwKK30g d2hpbGUgKDApCisKKworI2RlZmluZSBJTklUX0lOVEVSTkFMMF9NRU1fV1IoYmxvY2tfYmFy LCBibG9jaywgcmVnLCBcCisJCQkgICAgICBwYXJ0LCBodywgdmFsdWUsIG9mZiwgbGVuKSBc CisJSU5JVF9NRU1fV1IoYmxvY2ssIHJlZywgcGFydCwgaHcsIHZhbHVlLCBvZmYsIGxlbik7 CisKKyNkZWZpbmUgSU5JVF9SRUdfV1IoYmxvY2ssIHJlZywgdmFsdWUsIHBhcnQsIGh3KSBc CitkbyB7IFwKKwkgaWYgKChfYmxvY2sgPT0gQkxDTlVNXyMjYmxvY2spICYmIChfcGFydCA9 PSBwYXJ0KSAmJiAoX2h3ICYgaHcpKSB7IFwKKwkJUkVHX1dSKGJwLCBHUkNCQVNFXyMjYmxv Y2ssIHJlZywgdmFsdWUpOyBcCisJCXVzYWdlKys7IFwKKwkgfSBcCit9IHdoaWxlICgwKQor CisjZGVmaW5lIElOSVRfUkVHX1JEKGJsb2NrLCByZWcsIHZhbHVlLCBwYXJ0LCBodykgXAor ZG8geyBcCisJdTMyIHZhbDsgXAorCWlmICgoX2Jsb2NrID09IEJMQ05VTV8jI2Jsb2NrKSAm JiAoX3BhcnQgPT0gcGFydCkgJiYgKF9odyAmIGh3KSkgeyBcCisJCXZhbCA9IFJFR19SRChi cCwgR1JDQkFTRV8jI2Jsb2NrLCByZWcpOyBcCisJCXVzYWdlKys7IFwKKwl9IFwKK30gd2hp bGUgKDApCisKKyNkZWZpbmUgSU5JVF9NRU1fV1IoYmxvY2ssIHJlZywgcGFydCwgaHcsIHZh bHVlLCBvZmYsIGxlbikgXAorZG8geyBcCisJaWYgKChfYmxvY2sgPT0gQkxDTlVNXyMjYmxv Y2spICYmIChfcGFydCA9PSBwYXJ0KSAmJiAoX2h3ICYgaHcpKSB7IFwKKwkJTUVNX1dSKEdS Q0JBU0VfIyNibG9jaywgcmVnICsgKG9mZjw8MiksIHZhbHVlLCBsZW4pOyBcCisJCXVzYWdl Kys7IFwKKwl9IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgSU5JVF9NRU1fSU5EKGJsb2Nr LCByZWcsIHBhcnQsIGh3LCB2YWx1ZSwgb2ZmLCBsZW4pIFwKK2RvIHsgXAorCWlmICgoX2Js b2NrID09IEJMQ05VTV8jI2Jsb2NrKSAmJiAoX3BhcnQgPT0gcGFydCkgJiYgKF9odyAmIGh3 KSkgeyBcCisJCU1FTV9JTkQoR1JDQkFTRV8jI2Jsb2NrLCByZWcgKyAob2ZmPDwyKSwgdmFs dWUsIGxlbik7IFwKKwkJdXNhZ2UrKzsgXAorCX0gXAorfSB3aGlsZSAoMCkKKworI2RlZmlu ZSBJTklUX01FTV9XQihibG9jaywgcmVnLCBwYXJ0LCBodywgdmFsdWUsIG9mZiwgbGVuKSBc CitkbyB7IFwKKwlpZiAoKF9ibG9jayA9PSBCTENOVU1fIyNibG9jaykgJiYgKF9wYXJ0ID09 IHBhcnQpICYmIChfaHcgJiBodykpIHsgXAorCQlETUFFX1dSKEdSQ0JBU0VfIyNibG9jaywg cmVnICsgKG9mZjw8MiksIHZhbHVlLCBsZW4pOyBcCisJCXVzYWdlKys7IFwKKwl9IFwKK30g d2hpbGUgKDApCisKKyNkZWZpbmUgSU5JVF9NRU1fQ0xSKGJsb2NrLCByZWcsIHBhcnQsIGh3 LCBvZmYsIGxlbikgXAorZG8geyBcCisJaWYgKChfYmxvY2sgPT0gQkxDTlVNXyMjYmxvY2sp ICYmIChfcGFydCA9PSBwYXJ0KSAmJiAoX2h3ICYgaHcpKSB7IFwKKwkJRE1BRV9DTFIoYnAs IEdSQ0JBU0VfIyNibG9jaywgcmVnICsgKG9mZjw8MiksIGxlbik7IFwKKwkJdXNhZ2UrKzsg XAorCX0gXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBJTklUX0dVTlpJUF9ETUFFKGJsb2Nr LCByZWcsIHBhcnQsIGh3LCB2YWx1ZSwgb2ZmLCBsZW4pIFwKK2RvIHsgXAorCWlmICgoX2Js b2NrID09IEJMQ05VTV8jI2Jsb2NrKSAmJiAoX3BhcnQgPT0gcGFydCkgJiYgKF9odyAmIGh3 KSkgeyBcCisJCUdVTlpJUF9ETUFFX1dSKEdSQ0JBU0VfIyNibG9jaywgcmVnICsgKG9mZjw8 MiksIHZhbHVlLCBsZW4pOyBcCisJCXVzYWdlKys7IFwKKwl9IFwKK30gd2hpbGUgKDApCisK Kworc3RhdGljIHZvaWQgYm54MnhfaW5pdF9zdGFnZShzdHJ1Y3QgYm54MnggKmJwLCBpbnQg X2Jsb2NrLCBpbnQgX3BhcnQpCit7CisJaW50IF9odzsKKwlpbnQgdXNhZ2UgPSAwOworCisJ c3dpdGNoIChDSElQX1JFVihicCkpIHsKKwljYXNlIENISVBfUkVWX0VNVUw6CisJCV9odyA9 IElOSVRfRU1VTEFUSU9OOworCQlicmVhazsKKwljYXNlIENISVBfUkVWX0ZQR0E6CisJCV9o dyA9IElOSVRfRlBHQTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJX2h3ID0gSU5JVF9BU0lD OworCX0KKworCXRvdWNoX3NvZnRsb2NrdXBfd2F0Y2hkb2coKTsKKworI2RlZmluZSBTVE9S QUdFX0NMQVNTIHN0YXRpYyBjb25zdCB1MzIKKyNpZmRlZiBfX0JJR19FTkRJQU4KKyNpbmNs dWRlICJibngyeF9hc21fYmUuaCIKKyNlbHNlCisjaW5jbHVkZSAiYm54MnhfYXNtLmgiCisj ZW5kaWYKKyNpbmNsdWRlICJibngyeF9pbml0X3ZhbHVlcy5oIgorCisJRFAoTkVUSUZfTVNH X0hXLCAiQmxvY2sgJWQsIFBhcnQgJWQsIGh3ICVkIC0gIHVzYWdlICVkXG4iLAorCSAgIF9i bG9jaywgX3BhcnQsIF9odywgdXNhZ2UpOworfQorCisjdW5kZWYgSU5JVF9JTlRFUk5BTDBf TUVNX1dSCisjdW5kZWYgSU5JVF9SRUdfV1IKKyN1bmRlZiBJTklUX1JFR19SRAorI3VuZGVm IElOSVRfTUVNX1dSCisjdW5kZWYgSU5JVF9NRU1fSU5ECisjdW5kZWYgSU5JVF9NRU1fV0IK KyN1bmRlZiBJTklUX01FTV9DTFIKKyN1bmRlZiBJTklUX0dVTlpJUF9ETUFFCisKKworc3Rh dGljIHZvaWQgYm54MnhfemVyb19pbnRtZW0oc3RydWN0IGJueDJ4ICpicCkKK3sKKyNkZWZp bmUgU1RPUk1fSU5UTUVNX1NJWkUJCTIyNTI4CisKKwl1MzIgc3Rvcm1zWzRdID0gezB4MWEw MDAwLCAvKlQqLworCQkweDIyMDAwMCwgLypDKi8KKwkJMHgyYTAwMDAsIC8qWCovCisJCTB4 MzIwMDAwfTsvKlUqLworCXUzMiBpOworCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewor CQlETUFFX0NMUihicCwgc3Rvcm1zW2ldLCAwVUwsIFNUT1JNX0lOVE1FTV9TSVpFIC8gNCk7 CisJfQorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIFBYUAorKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworI2RlZmluZSBOVU1fV1JfUQkJCTEzCisjZGVmaW5lIE5VTV9S RF9RCQkJMjkKKyNkZWZpbmUgTUFYX1JEX09SRAkJCTMKKyNkZWZpbmUgTUFYX1dSX09SRAkJ CTIKKworc3RydWN0IGFyYl9saW5lIHsKKwlpbnQgbDsKKwlpbnQgYWRkOworCWludCB1Ym91 bmQ7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGFyYl9saW5lIHJlYWRfYXJiX2RhdGFb TlVNX1JEX1FdW01BWF9SRF9PUkQgKyAxXSA9IHsKKwl7eyA4ICwgNjQgLCAyNX0sIHsgMTYg LCA2NCAsIDI1fSwgeyAzMiAsIDY0ICwgMjV9LCB7IDY0ICwgNjQgLCA0MX19LAorCXt7IDQg LCA4ICwgNH0sICAgeyA0ICwgOCAsIDR9LCAgICB7IDQgLCA4ICwgNH0sICAgIHsgNCAsIDgg LCA0fX0sCisJe3sgNCAsIDMgLCAzfSwgICB7IDQgLCAzICwgM30sICAgIHsgNCAsIDMgLCAz fSwgICAgeyA0ICwgMyAsIDN9fSwKKwl7eyA4ICwgMyAsIDZ9LCAgIHsgMTYgLCAzICwgMTF9 LCAgeyAxNiAsIDMgLCAxMX0sICB7IDE2ICwgMyAsIDExfX0sCisJe3sgOCAsIDY0ICwgMjV9 LCB7IDE2ICwgNjQgLCAyNX0sIHsgMzIgLCA2NCAsIDI1fSwgeyA2NCAsIDY0ICwgNDF9fSwK Kwl7eyA4ICwgMyAsIDZ9LCAgIHsgMTYgLCAzICwgMTF9LCAgeyAzMiAsIDMgLCAyMX0sICB7 IDY0ICwgMyAsIDQxfX0sCisJe3sgOCAsIDMgLCA2fSwgICB7IDE2ICwgMyAsIDExfSwgIHsg MzIgLCAzICwgMjF9LCAgeyA2NCAsIDMgLCA0MX19LAorCXt7IDggLCAzICwgNn0sICAgeyAx NiAsIDMgLCAxMX0sICB7IDMyICwgMyAsIDIxfSwgIHsgNjQgLCAzICwgNDF9fSwKKwl7eyA4 ICwgMyAsIDZ9LCAgIHsgMTYgLCAzICwgMTF9LCAgeyAzMiAsIDMgLCAyMX0sICB7IDY0ICwg MyAsIDQxfX0sCisJe3sgOCAsIDMgLCA2fSwgICB7IDE2ICwgMyAsIDExfSwgIHsgMzIgLCAz ICwgMjF9LCAgeyAzMiAsIDMgLCAyMX19LAorCXt7IDggLCAzICwgNn0sICAgeyAxNiAsIDMg LCAxMX0sICB7IDMyICwgMyAsIDIxfSwgIHsgMzIgLCAzICwgMjF9fSwKKwl7eyA4ICwgMyAs IDZ9LCAgIHsgMTYgLCAzICwgMTF9LCAgeyAzMiAsIDMgLCAyMX0sICB7IDMyICwgMyAsIDIx fX0sCisJe3sgOCAsIDMgLCA2fSwgICB7IDE2ICwgMyAsIDExfSwgIHsgMzIgLCAzICwgMjF9 LCAgeyAzMiAsIDMgLCAyMX19LAorCXt7IDggLCAzICwgNn0sICAgeyAxNiAsIDMgLCAxMX0s ICB7IDMyICwgMyAsIDIxfSwgIHsgMzIgLCAzICwgMjF9fSwKKwl7eyA4ICwgMyAsIDZ9LCAg IHsgMTYgLCAzICwgMTF9LCAgeyAzMiAsIDMgLCAyMX0sICB7IDMyICwgMyAsIDIxfX0sCisJ e3sgOCAsIDMgLCA2fSwgICB7IDE2ICwgMyAsIDExfSwgIHsgMzIgLCAzICwgMjF9LCAgeyAz MiAsIDMgLCAyMX19LAorCXt7IDggLCAzICwgNn0sICAgeyAxNiAsIDMgLCAxMX0sICB7IDMy ICwgMyAsIDIxfSwgIHsgMzIgLCAzICwgMjF9fSwKKwl7eyA4ICwgMyAsIDZ9LCAgIHsgMTYg LCAzICwgMTF9LCAgeyAzMiAsIDMgLCAyMX0sICB7IDMyICwgMyAsIDIxfX0sCisJe3sgOCAs IDMgLCA2fSwgICB7IDE2ICwgMyAsIDExfSwgIHsgMzIgLCAzICwgMjF9LCAgeyAzMiAsIDMg LCAyMX19LAorCXt7IDggLCAzICwgNn0sICAgeyAxNiAsIDMgLCAxMX0sICB7IDMyICwgMyAs IDIxfSwgIHsgMzIgLCAzICwgMjF9fSwKKwl7eyA4ICwgMyAsIDZ9LCAgIHsgMTYgLCAzICwg MTF9LCAgeyAzMiAsIDMgLCAyMX0sICB7IDMyICwgMyAsIDIxfX0sCisJe3sgOCAsIDMgLCA2 fSwgICB7IDE2ICwgMyAsIDExfSwgIHsgMzIgLCAzICwgMjF9LCAgeyAzMiAsIDMgLCAyMX19 LAorCXt7IDggLCAzICwgNn0sICAgeyAxNiAsIDMgLCAxMX0sICB7IDMyICwgMyAsIDIxfSwg IHsgMzIgLCAzICwgMjF9fSwKKwl7eyA4ICwgMyAsIDZ9LCAgIHsgMTYgLCAzICwgMTF9LCAg eyAzMiAsIDMgLCAyMX0sICB7IDMyICwgMyAsIDIxfX0sCisJe3sgOCAsIDMgLCA2fSwgICB7 IDE2ICwgMyAsIDExfSwgIHsgMzIgLCAzICwgMjF9LCAgeyAzMiAsIDMgLCAyMX19LAorCXt7 IDggLCAzICwgNn0sICAgeyAxNiAsIDMgLCAxMX0sICB7IDMyICwgMyAsIDIxfSwgIHsgMzIg LCAzICwgMjF9fSwKKwl7eyA4ICwgMyAsIDZ9LCAgIHsgMTYgLCAzICwgMTF9LCAgeyAzMiAs IDMgLCAyMX0sICB7IDMyICwgMyAsIDIxfX0sCisJe3sgOCAsIDMgLCA2fSwgICB7IDE2ICwg MyAsIDExfSwgIHsgMzIgLCAzICwgMjF9LCAgeyAzMiAsIDMgLCAyMX19LAorCXt7IDggLCA2 NCAsIDI1fSwgeyAxNiAsIDY0ICwgNDF9LCB7IDMyICwgNjQgLCA4MX0sIHsgNjQgLCA2NCAs IDEyMH19fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhcmJfbGluZSB3cml0ZV9hcmJfZGF0 YVtOVU1fV1JfUV1bTUFYX1dSX09SRCArIDFdID0geworCXt7IDQgLCA2ICwgM30sICAgeyA0 ICwgNiAsIDN9LCAgICB7IDQgLCA2ICwgM319LAorCXt7IDQgLCAyICwgM30sICAgeyA0ICwg MiAsIDN9LCAgICB7IDQgLCAyICwgM319LAorCXt7IDggLCAyICwgNn0sICAgeyAxNiAsIDIg LCAxMX0sICB7IDE2ICwgMiAsIDExfX0sCisJe3sgOCAsIDIgLCA2fSwgICB7IDE2ICwgMiAs IDExfSwgIHsgMzIgLCAyICwgMjF9fSwKKwl7eyA4ICwgMiAsIDZ9LCAgIHsgMTYgLCAyICwg MTF9LCAgeyAzMiAsIDIgLCAyMX19LAorCXt7IDggLCAyICwgNn0sICAgeyAxNiAsIDIgLCAx MX0sICB7IDMyICwgMiAsIDIxfX0sCisJe3sgOCAsIDY0ICwgMjV9LCB7IDE2ICwgNjQgLCAy NX0sIHsgMzIgLCA2NCAsIDI1fX0sCisJe3sgOCAsIDIgLCA2fSwgICB7IDE2ICwgMiAsIDEx fSwgIHsgMTYgLCAyICwgMTF9fSwKKwl7eyA4ICwgMiAsIDZ9LCAgIHsgMTYgLCAyICwgMTF9 LCAgeyAxNiAsIDIgLCAxMX19LAorCXt7IDggLCA5ICwgNn0sICAgeyAxNiAsIDkgLCAxMX0s ICB7IDMyICwgOSAsIDIxfX0sCisJe3sgOCAsIDQ3ICwgMTl9LCB7IDE2ICwgNDcgLCAxOX0s IHsgMzIgLCA0NyAsIDIxfX0sCisJe3sgOCAsIDkgLCA2fSwgICB7IDE2ICwgOSAsIDExfSwg IHsgMTYgLCA5ICwgMTF9fSwKKwl7eyA4ICwgNjQgLCAyNX0sIHsgMTYgLCA2NCAsIDQxfSwg eyAzMiAsIDY0ICwgODF9fX07CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJiX2xpbmUgcmVh ZF9hcmJfYWRkcltOVU1fUkRfUS0xXSA9IHsKKwl7UFhQMl9SRUdJU1RFUlNfUlFfQldfUkRf TDAsIFBYUDJfUkVHSVNURVJTX1JRX0JXX1JEX0FERDAgICwKKwkJUFhQMl9SRUdJU1RFUlNf UlFfQldfUkRfVUJPVU5EMH0sCisJe1BYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0wxLCBQWFAy X1JFR0lTVEVSU19QU1dSUV9CV19BREQxICAsCisJCVBYUDJfUkVHSVNURVJTX1BTV1JRX0JX X1VCMX0sCisJe1BYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0wyLCBQWFAyX1JFR0lTVEVSU19Q U1dSUV9CV19BREQyICAsCisJCVBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX1VCMn0sCisJe1BY UDJfUkVHSVNURVJTX1BTV1JRX0JXX0wzLCBQWFAyX1JFR0lTVEVSU19QU1dSUV9CV19BREQz ICAsCisJCVBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX1VCM30sCisJe1BYUDJfUkVHSVNURVJT X1JRX0JXX1JEX0w0LCBQWFAyX1JFR0lTVEVSU19SUV9CV19SRF9BREQ0ICAsCisJCVBYUDJf UkVHSVNURVJTX1JRX0JXX1JEX1VCT1VORDR9LAorCXtQWFAyX1JFR0lTVEVSU19SUV9CV19S RF9MNSwgUFhQMl9SRUdJU1RFUlNfUlFfQldfUkRfQURENSAgLAorCQlQWFAyX1JFR0lTVEVS U19SUV9CV19SRF9VQk9VTkQ1fSwKKwl7UFhQMl9SRUdJU1RFUlNfUFNXUlFfQldfTDYsIFBY UDJfUkVHSVNURVJTX1BTV1JRX0JXX0FERDYgICwKKwkJUFhQMl9SRUdJU1RFUlNfUFNXUlFf QldfVUI2fSwKKwl7UFhQMl9SRUdJU1RFUlNfUFNXUlFfQldfTDcsIFBYUDJfUkVHSVNURVJT X1BTV1JRX0JXX0FERDcgICwKKwkJUFhQMl9SRUdJU1RFUlNfUFNXUlFfQldfVUI3fSwKKwl7 UFhQMl9SRUdJU1RFUlNfUFNXUlFfQldfTDgsIFBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0FE RDggICwKKwkJUFhQMl9SRUdJU1RFUlNfUFNXUlFfQldfVUI4fSwKKwl7UFhQMl9SRUdJU1RF UlNfUFNXUlFfQldfTDksIFBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0FERDkgICwKKwkJUFhQ Ml9SRUdJU1RFUlNfUFNXUlFfQldfVUI5fSwKKwl7UFhQMl9SRUdJU1RFUlNfUFNXUlFfQldf TDEwLCBQWFAyX1JFR0lTVEVSU19QU1dSUV9CV19BREQxMCAsCisJCVBYUDJfUkVHSVNURVJT X1BTV1JRX0JXX1VCMTB9LAorCXtQWFAyX1JFR0lTVEVSU19QU1dSUV9CV19MMTEsIFBYUDJf UkVHSVNURVJTX1BTV1JRX0JXX0FERDExICwKKwkJUFhQMl9SRUdJU1RFUlNfUFNXUlFfQldf VUIxMX0sCisJe1BYUDJfUkVHSVNURVJTX1JRX0JXX1JEX0wxMiwgUFhQMl9SRUdJU1RFUlNf UlFfQldfUkRfQUREMTIgLAorCQlQWFAyX1JFR0lTVEVSU19SUV9CV19SRF9VQk9VTkQxMn0s CisJe1BYUDJfUkVHSVNURVJTX1JRX0JXX1JEX0wxMywgUFhQMl9SRUdJU1RFUlNfUlFfQldf UkRfQUREMTMgLAorCQlQWFAyX1JFR0lTVEVSU19SUV9CV19SRF9VQk9VTkQxM30sCisJe1BY UDJfUkVHSVNURVJTX1JRX0JXX1JEX0wxNCwgUFhQMl9SRUdJU1RFUlNfUlFfQldfUkRfQURE MTQgLAorCQlQWFAyX1JFR0lTVEVSU19SUV9CV19SRF9VQk9VTkQxNH0sCisJe1BYUDJfUkVH SVNURVJTX1JRX0JXX1JEX0wxNSwgUFhQMl9SRUdJU1RFUlNfUlFfQldfUkRfQUREMTUgLAor CQlQWFAyX1JFR0lTVEVSU19SUV9CV19SRF9VQk9VTkQxNX0sCisJe1BYUDJfUkVHSVNURVJT X1JRX0JXX1JEX0wxNiwgUFhQMl9SRUdJU1RFUlNfUlFfQldfUkRfQUREMTYgLAorCQlQWFAy X1JFR0lTVEVSU19SUV9CV19SRF9VQk9VTkQxNn0sCisJe1BYUDJfUkVHSVNURVJTX1JRX0JX X1JEX0wxNywgUFhQMl9SRUdJU1RFUlNfUlFfQldfUkRfQUREMTcgLAorCQlQWFAyX1JFR0lT VEVSU19SUV9CV19SRF9VQk9VTkQxN30sCisJe1BYUDJfUkVHSVNURVJTX1JRX0JXX1JEX0wx OCwgUFhQMl9SRUdJU1RFUlNfUlFfQldfUkRfQUREMTggLAorCQlQWFAyX1JFR0lTVEVSU19S UV9CV19SRF9VQk9VTkQxOH0sCisJe1BYUDJfUkVHSVNURVJTX1JRX0JXX1JEX0wxOSwgUFhQ Ml9SRUdJU1RFUlNfUlFfQldfUkRfQUREMTkgLAorCQlQWFAyX1JFR0lTVEVSU19SUV9CV19S RF9VQk9VTkQxOX0sCisJe1BYUDJfUkVHSVNURVJTX1JRX0JXX1JEX0wyMCwgUFhQMl9SRUdJ U1RFUlNfUlFfQldfUkRfQUREMjAgLAorCQlQWFAyX1JFR0lTVEVSU19SUV9CV19SRF9VQk9V TkQyMH0sCisJe1BYUDJfUkVHSVNURVJTX1JRX0JXX1JEX0wyMiwgUFhQMl9SRUdJU1RFUlNf UlFfQldfUkRfQUREMjIgLAorCQlQWFAyX1JFR0lTVEVSU19SUV9CV19SRF9VQk9VTkQyMn0s CisJe1BYUDJfUkVHSVNURVJTX1JRX0JXX1JEX0wyMywgUFhQMl9SRUdJU1RFUlNfUlFfQldf UkRfQUREMjMgLAorCQlQWFAyX1JFR0lTVEVSU19SUV9CV19SRF9VQk9VTkQyM30sCisJe1BY UDJfUkVHSVNURVJTX1JRX0JXX1JEX0wyNCwgUFhQMl9SRUdJU1RFUlNfUlFfQldfUkRfQURE MjQgLAorCQlQWFAyX1JFR0lTVEVSU19SUV9CV19SRF9VQk9VTkQyNH0sCisJe1BYUDJfUkVH SVNURVJTX1JRX0JXX1JEX0wyNSwgUFhQMl9SRUdJU1RFUlNfUlFfQldfUkRfQUREMjUgLAor CQlQWFAyX1JFR0lTVEVSU19SUV9CV19SRF9VQk9VTkQyNX0sCisJe1BYUDJfUkVHSVNURVJT X1JRX0JXX1JEX0wyNiwgUFhQMl9SRUdJU1RFUlNfUlFfQldfUkRfQUREMjYgLAorCQlQWFAy X1JFR0lTVEVSU19SUV9CV19SRF9VQk9VTkQyNn0sCisJe1BYUDJfUkVHSVNURVJTX1JRX0JX X1JEX0wyNywgUFhQMl9SRUdJU1RFUlNfUlFfQldfUkRfQUREMjcgLAorCQlQWFAyX1JFR0lT VEVSU19SUV9CV19SRF9VQk9VTkQyN30sCisJe1BYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0wy OCwgUFhQMl9SRUdJU1RFUlNfUFNXUlFfQldfQUREMjggLAorCQlQWFAyX1JFR0lTVEVSU19Q U1dSUV9CV19VQjI4fX07CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJiX2xpbmUgd3JpdGVf YXJiX2FkZHJbTlVNX1dSX1EtMV0gPSB7CisJe1BYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0wx LCBQWFAyX1JFR0lTVEVSU19QU1dSUV9CV19BREQxICAsCisJCVBYUDJfUkVHSVNURVJTX1BT V1JRX0JXX1VCMX0sCisJe1BYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0wyLCBQWFAyX1JFR0lT VEVSU19QU1dSUV9CV19BREQyICAsCisJCVBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX1VCMn0s CisJe1BYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0wzLCBQWFAyX1JFR0lTVEVSU19QU1dSUV9C V19BREQzICAsCisJCVBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX1VCM30sCisJe1BYUDJfUkVH SVNURVJTX1BTV1JRX0JXX0w2LCBQWFAyX1JFR0lTVEVSU19QU1dSUV9CV19BREQ2ICAsCisJ CVBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX1VCNn0sCisJe1BYUDJfUkVHSVNURVJTX1BTV1JR X0JXX0w3LCBQWFAyX1JFR0lTVEVSU19QU1dSUV9CV19BREQ3ICAsCisJCVBYUDJfUkVHSVNU RVJTX1BTV1JRX0JXX1VCN30sCisJe1BYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0w4LCBQWFAy X1JFR0lTVEVSU19QU1dSUV9CV19BREQ4ICAsCisJCVBYUDJfUkVHSVNURVJTX1BTV1JRX0JX X1VCOH0sCisJe1BYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0w5LCBQWFAyX1JFR0lTVEVSU19Q U1dSUV9CV19BREQ5ICAsCisJCVBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX1VCOX0sCisJe1BY UDJfUkVHSVNURVJTX1BTV1JRX0JXX0wxMCwgUFhQMl9SRUdJU1RFUlNfUFNXUlFfQldfQURE MTAgLAorCQlQWFAyX1JFR0lTVEVSU19QU1dSUV9CV19VQjEwfSwKKwl7UFhQMl9SRUdJU1RF UlNfUFNXUlFfQldfTDExLCBQWFAyX1JFR0lTVEVSU19QU1dSUV9CV19BREQxMSAsCisJCVBY UDJfUkVHSVNURVJTX1BTV1JRX0JXX1VCMTF9LAorCXtQWFAyX1JFR0lTVEVSU19QU1dSUV9C V19MMjgsIFBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX0FERDI4ICwKKwkJUFhQMl9SRUdJU1RF UlNfUFNXUlFfQldfVUIyOH0sCisJe1BYUDJfUkVHSVNURVJTX1JRX0JXX1dSX0wyOSwgUFhQ Ml9SRUdJU1RFUlNfUlFfQldfV1JfQUREMjkgLAorCQlQWFAyX1JFR0lTVEVSU19SUV9CV19X Ul9VQk9VTkQyOX0sCisJe1BYUDJfUkVHSVNURVJTX1JRX0JXX1dSX0wzMCwgUFhQMl9SRUdJ U1RFUlNfUlFfQldfV1JfQUREMzAgLAorCQlQWFAyX1JFR0lTVEVSU19SUV9CV19XUl9VQk9V TkQzMH19OworCitzdGF0aWMgdm9pZCBibngyeF9pbml0X3B4cChzdHJ1Y3QgYm54MnggKmJw LCBpbnQgcl9vcmRlciwgaW50IHdfb3JkZXIpCit7CisJaW50IGksIHZhbDsKKworCWlmIChy X29yZGVyID4gTUFYX1JEX09SRCkgeworCQlEUChORVRJRl9NU0dfSFcsICJyZWFkIG9yZGVy IG9mICVkICBvcmRlciBhZGp1c3RlZCB0byAlZFxuIiwKKwkJICAgcl9vcmRlciwgTUFYX1JE X09SRCk7CisJCXJfb3JkZXIgPSBNQVhfUkRfT1JEOworCX0KKworCWlmICh3X29yZGVyID4g TUFYX1dSX09SRCkgeworCQlEUChORVRJRl9NU0dfSFcsICJ3cml0ZSBvcmRlciBvZiAlZCAg b3JkZXIgYWRqdXN0ZWQgdG8gJWRcbiIsCisJCSAgIHdfb3JkZXIsIE1BWF9XUl9PUkQpOwor CQl3X29yZGVyID0gTUFYX1dSX09SRDsKKwl9CisKKwlEUChORVRJRl9NU0dfSFcsICJyZWFk IG9yZGVyICVkICB3cml0ZSBvcmRlciAlZFxuIiwgcl9vcmRlciwgd19vcmRlcik7CisKKwlm b3IgKGkgPSAwOyBpIDwgTlVNX1JEX1EtMTsgaSsrKSB7CisJCVJFR19XUihicCwgR1JDQkFT RV9QWFAyLCByZWFkX2FyYl9hZGRyW2ldLmwsCisJCSAgICAgICByZWFkX2FyYl9kYXRhW2ld W3Jfb3JkZXJdLmwpOworCQlSRUdfV1IoYnAsIEdSQ0JBU0VfUFhQMiwgcmVhZF9hcmJfYWRk cltpXS5hZGQsCisJCSAgICAgICByZWFkX2FyYl9kYXRhW2ldW3Jfb3JkZXJdLmFkZCk7CisJ CVJFR19XUihicCwgR1JDQkFTRV9QWFAyLCByZWFkX2FyYl9hZGRyW2ldLnVib3VuZCwKKwkJ ICAgICAgIHJlYWRfYXJiX2RhdGFbaV1bcl9vcmRlcl0udWJvdW5kKTsKKwl9CisKKwlmb3Ig KGkgPSAwOyBpIDwgTlVNX1dSX1EtMTsgaSsrKSB7CisJCWlmICgod3JpdGVfYXJiX2FkZHJb aV0ubCA9PSBQWFAyX1JFR0lTVEVSU19SUV9CV19XUl9MMjkpIHx8CisJCSAgICAod3JpdGVf YXJiX2FkZHJbaV0ubCA9PSBQWFAyX1JFR0lTVEVSU19SUV9CV19XUl9MMzApKSB7CisKKwkJ CVJFR19XUihicCwgR1JDQkFTRV9QWFAyLCB3cml0ZV9hcmJfYWRkcltpXS5sLAorCQkJICAg ICAgIHdyaXRlX2FyYl9kYXRhW2ldW3dfb3JkZXJdLmwpOworCisJCQlSRUdfV1IoYnAsIEdS Q0JBU0VfUFhQMiwgd3JpdGVfYXJiX2FkZHJbaV0uYWRkLAorCQkJICAgICAgIHdyaXRlX2Fy Yl9kYXRhW2ldW3dfb3JkZXJdLmFkZCk7CisKKwkJCVJFR19XUihicCwgR1JDQkFTRV9QWFAy LCB3cml0ZV9hcmJfYWRkcltpXS51Ym91bmQsCisJCQkgICAgICAgd3JpdGVfYXJiX2RhdGFb aV1bd19vcmRlcl0udWJvdW5kKTsKKwkJfSBlbHNlIHsKKworCQkJdmFsID0gUkVHX1JEKGJw LCBHUkNCQVNFX1BYUDIsIHdyaXRlX2FyYl9hZGRyW2ldLmwpOworCQkJUkVHX1dSKGJwLCBH UkNCQVNFX1BYUDIsIHdyaXRlX2FyYl9hZGRyW2ldLmwsCisJCQkgICAgICAgdmFsIHwgKHdy aXRlX2FyYl9kYXRhW2ldW3dfb3JkZXJdLmwgPDwgMTApKTsKKworCQkJdmFsID0gUkVHX1JE KGJwLCBHUkNCQVNFX1BYUDIsIHdyaXRlX2FyYl9hZGRyW2ldLmFkZCk7CisJCQlSRUdfV1Io YnAsIEdSQ0JBU0VfUFhQMiwgd3JpdGVfYXJiX2FkZHJbaV0uYWRkLAorCQkJICAgICAgIHZh bCB8ICh3cml0ZV9hcmJfZGF0YVtpXVt3X29yZGVyXS5hZGQgPDwgMTApKTsKKworCQkJdmFs ID0gUkVHX1JEKGJwLCBHUkNCQVNFX1BYUDIsCisJCQkJICAgICB3cml0ZV9hcmJfYWRkcltp XS51Ym91bmQpOworCQkJUkVHX1dSKGJwLCBHUkNCQVNFX1BYUDIsIHdyaXRlX2FyYl9hZGRy W2ldLnVib3VuZCwKKwkJCSAgICAgICB2YWwgfCAod3JpdGVfYXJiX2RhdGFbaV1bd19vcmRl cl0udWJvdW5kIDw8IDcpKTsKKwkJfQorCX0KKworCXZhbCA9ICB3cml0ZV9hcmJfZGF0YVtO VU1fV1JfUS0xXVt3X29yZGVyXS5hZGQ7CisJdmFsICs9IHdyaXRlX2FyYl9kYXRhW05VTV9X Ul9RLTFdW3dfb3JkZXJdLnVib3VuZCA8PCAxMDsKKwl2YWwgKz0gd3JpdGVfYXJiX2RhdGFb TlVNX1dSX1EtMV1bd19vcmRlcl0ubCA8PCAxNzsKKwlSRUdfV1IoYnAsIEdSQ0JBU0VfUFhQ MiwgUFhQMl9SRUdJU1RFUlNfUFNXUlFfQldfUkQsIHZhbCk7CisKKwl2YWwgPSAgcmVhZF9h cmJfZGF0YVtOVU1fUkRfUS0xXVtyX29yZGVyXS5hZGQ7CisJdmFsICs9IHJlYWRfYXJiX2Rh dGFbTlVNX1JEX1EtMV1bcl9vcmRlcl0udWJvdW5kIDw8IDEwOworCXZhbCArPSByZWFkX2Fy Yl9kYXRhW05VTV9SRF9RLTFdW3Jfb3JkZXJdLmwgPDwgMTc7CisJUkVHX1dSKGJwLCBHUkNC QVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1BTV1JRX0JXX1dSLCB2YWwpOworCisJUkVHX1dS KGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNURVJTX1JRX1dSX01CUzAsIHdfb3JkZXIp OworCVJFR19XUihicCwgR1JDQkFTRV9QWFAyLCBQWFAyX1JFR0lTVEVSU19SUV9XUl9NQlMw ICsgOCwgd19vcmRlcik7CisJUkVHX1dSKGJwLCBHUkNCQVNFX1BYUDIsIFBYUDJfUkVHSVNU RVJTX1JRX1JEX01CUzAsIHJfb3JkZXIpOworCVJFR19XUihicCwgR1JDQkFTRV9QWFAyLCBQ WFAyX1JFR0lTVEVSU19SUV9SRF9NQlMwICsgOCwgcl9vcmRlcik7Cit9CisKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyogQ0RVCisqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisj ZGVmaW5lIENEVV9SRUdJT05fTlVNQkVSX1hDTV9BRwkyCisjZGVmaW5lIENEVV9SRUdJT05f TlVNQkVSX1VDTV9BRwk0CisKKy8qKgorICogU3RyaW5nLXRvLWNvbXByZXNzIFszMTo4XSA9 IENJRCAoYWxsIDI0IGJpdHMpCisgKiBTdHJpbmctdG8tY29tcHJlc3MgWzc6NF0gPSBSZWdp b24KKyAqIFN0cmluZy10by1jb21wcmVzcyBbMzowXSA9IFR5cGUKKyAqLworI2RlZmluZSBD RFVfVkFMSURfREFUQShfY2lkLCBfcmVnaW9uLCBfdHlwZSkgXAorCQkoKChfY2lkKSA8PCA4 KSB8ICgoKF9yZWdpb24pICYgMHhmKSA8PCA0KSB8ICgoKF90eXBlKSAmIDB4ZikpKQorI2Rl ZmluZSBDRFVfQ1JDOChfY2lkLCBfcmVnaW9uLCBfdHlwZSkgXAorCQkJY2FsY19jcmM4KENE VV9WQUxJRF9EQVRBKF9jaWQsIF9yZWdpb24sIF90eXBlKSwgMHhmZikKKyNkZWZpbmUgQ0RV X1JTUlZEX1ZBTFVFX1RZUEVfQShfY2lkLCBfcmVnaW9uLCBfdHlwZSkgXAorCQkJKDB4ODAg fCAoQ0RVX0NSQzgoX2NpZCwgX3JlZ2lvbiwgX3R5cGUpICYgMHg3ZikpCisjZGVmaW5lIENE VV9SU1JWRF9WQUxVRV9UWVBFX0IoX2NyYywgX3R5cGUpIFwKKwkoMHg4MCB8ICgoX3R5cGUp ICYgMHhmIDw8IDMpIHwgKENEVV9DUkM4KF9jaWQsIF9yZWdpb24sIF90eXBlKSAmIDB4Nykp CisjZGVmaW5lIENEVV9SU1JWRF9JTlZBTElEQVRFX0NPTlRFWFRfVkFMVUUoX3ZhbCkJKChf dmFsKSAmIH4weDgwKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIERlc2NyaXB0 aW9uOgorICogICAgICAgICBDYWxjdWxhdGVzIGNyYyA4IG9uIGEgd29yZCB2YWx1ZTogcG9s eW5vbWlhbCAwLTEtMi04CisgKiAgICAgICAgIENvZGUgd2FzIHRyYW5zbGF0ZWQgZnJvbSBW ZXJpbG9nLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdTggY2FsY19jcmM4 KHUzMiBkYXRhLCB1OCBjcmMpCit7CisJdTggRFszMl07CisJdTggTmV3Q1JDWzhdOworCXU4 IENbOF07CisJdTggY3JjX3JlczsKKwl1OCBpOworCisJLyogc3BsaXQgdGhlIGRhdGEgaW50 byAzMSBiaXRzICovCisJZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsKKwkJRFtpXSA9IGRh dGEgJiAxOworCQlkYXRhID0gZGF0YSA+PiAxOworCX0KKworCS8qIHNwbGl0IHRoZSBjcmMg aW50byA4IGJpdHMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrICkgeworCQlDW2ldID0g Y3JjICYgMTsKKwkJY3JjID0gY3JjID4+IDE7CisJfQorCisJTmV3Q1JDWzBdID0gRFszMV0g XiBEWzMwXSBeIERbMjhdIF4gRFsyM10gXiBEWzIxXSBeIERbMTldIF4gRFsxOF0gXgorCQlE WzE2XSBeIERbMTRdIF4gRFsxMl0gXiBEWzhdIF4gRFs3XSBeIERbNl0gXiBEWzBdIF4gQ1s0 XSBeCisJCUNbNl0gXiBDWzddOworCU5ld0NSQ1sxXSA9IERbMzBdIF4gRFsyOV0gXiBEWzI4 XSBeIERbMjRdIF4gRFsyM10gXiBEWzIyXSBeIERbMjFdIF4KKwkJRFsyMF0gXiBEWzE4XSBe IERbMTddIF4gRFsxNl0gXiBEWzE1XSBeIERbMTRdIF4gRFsxM10gXgorCQlEWzEyXSBeIERb OV0gXiBEWzZdIF4gRFsxXSBeIERbMF0gXiBDWzBdIF4gQ1s0XSBeIENbNV0gXiBDWzZdOwor CU5ld0NSQ1syXSA9IERbMjldIF4gRFsyOF0gXiBEWzI1XSBeIERbMjRdIF4gRFsyMl0gXiBE WzE3XSBeIERbMTVdIF4KKwkJRFsxM10gXiBEWzEyXSBeIERbMTBdIF4gRFs4XSBeIERbNl0g XiBEWzJdIF4gRFsxXSBeIERbMF0gXgorCQlDWzBdIF4gQ1sxXSBeIENbNF0gXiBDWzVdOwor CU5ld0NSQ1szXSA9IERbMzBdIF4gRFsyOV0gXiBEWzI2XSBeIERbMjVdIF4gRFsyM10gXiBE WzE4XSBeIERbMTZdIF4KKwkJRFsxNF0gXiBEWzEzXSBeIERbMTFdIF4gRFs5XSBeIERbN10g XiBEWzNdIF4gRFsyXSBeIERbMV0gXgorCQlDWzFdIF4gQ1syXSBeIENbNV0gXiBDWzZdOwor CU5ld0NSQ1s0XSA9IERbMzFdIF4gRFszMF0gXiBEWzI3XSBeIERbMjZdIF4gRFsyNF0gXiBE WzE5XSBeIERbMTddIF4KKwkJRFsxNV0gXiBEWzE0XSBeIERbMTJdIF4gRFsxMF0gXiBEWzhd IF4gRFs0XSBeIERbM10gXiBEWzJdIF4KKwkJQ1swXSBeIENbMl0gXiBDWzNdIF4gQ1s2XSBe IENbN107CisJTmV3Q1JDWzVdID0gRFszMV0gXiBEWzI4XSBeIERbMjddIF4gRFsyNV0gXiBE WzIwXSBeIERbMThdIF4gRFsxNl0gXgorCQlEWzE1XSBeIERbMTNdIF4gRFsxMV0gXiBEWzld IF4gRFs1XSBeIERbNF0gXiBEWzNdIF4gQ1sxXSBeCisJCUNbM10gXiBDWzRdIF4gQ1s3XTsK KwlOZXdDUkNbNl0gPSBEWzI5XSBeIERbMjhdIF4gRFsyNl0gXiBEWzIxXSBeIERbMTldIF4g RFsxN10gXiBEWzE2XSBeCisJCURbMTRdIF4gRFsxMl0gXiBEWzEwXSBeIERbNl0gXiBEWzVd IF4gRFs0XSBeIENbMl0gXiBDWzRdIF4KKwkJQ1s1XTsKKwlOZXdDUkNbN10gPSBEWzMwXSBe IERbMjldIF4gRFsyN10gXiBEWzIyXSBeIERbMjBdIF4gRFsxOF0gXiBEWzE3XSBeCisJCURb MTVdIF4gRFsxM10gXiBEWzExXSBeIERbN10gXiBEWzZdIF4gRFs1XSBeIENbM10gXiBDWzVd IF4KKwkJQ1s2XTsKKworCWNyY19yZXMgPSAwOworCWZvciAoaSA9IDA7IGkgPCA4OyBpKysp IHsKKwkJY3JjX3JlcyB8PSAoTmV3Q1JDW2ldIDw8IGkpOworCX0KKworCXJldHVybiBjcmNf cmVzOworfQorCisKKyNlbmRpZiAvKiBFVkVSRVNUX0lOSVRfRlVOQ1RJT05TX0ggKi8KKwot LSAKMS40LjIKCg== --------------090702050809010608090206--