LyoKICogQ29weXJpZ2h0IKkgMjAwNiBJbnRlbCBDb3Jwb3JhdGlvbgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAogKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCiAqIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCiAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAqIFNPRlRXQVJFLgogKgogKiBBdXRob3JzOgogKiAgICBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PgogKgogKi8KCiNpZm5kZWYgX0k4MzBfQklPU19IXwojZGVmaW5lIF9JODMwX0JJT1NfSF8KCiNpbmNsdWRlICJkcm1QLmgiCgpzdHJ1Y3QgdmJ0X2hlYWRlciB7Cgl1OCBzaWduYXR1cmVbMjBdOwkJLyoqPCBBbHdheXMgc3RhcnRzIHdpdGggJ1ZCVCQnICovCgl1MTYgdmVyc2lvbjsJCQkvKio8IGRlY2ltYWwgKi8KCXUxNiBoZWFkZXJfc2l6ZTsJCS8qKjwgaW4gYnl0ZXMgKi8KCXUxNiB2YnRfc2l6ZTsJCQkvKio8IGluIGJ5dGVzICovCgl1OCB2YnRfY2hlY2tzdW07Cgl1OCByZXNlcnZlZDA7Cgl1MzIgYmRiX29mZnNldDsJCQkvKio8IGZyb20gYmVnaW5uaW5nIG9mIFZCVCAqLwoJdTMyIGFpbV9vZmZzZXRbNF07CQkvKio8IGZyb20gYmVnaW5uaW5nIG9mIFZCVCAqLwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGJkYl9oZWFkZXIgewoJdTggc2lnbmF0dXJlWzE2XTsJCS8qKjwgQWx3YXlzICdCSU9TX0RBVEFfQkxPQ0snICovCgl1MTYgdmVyc2lvbjsJCQkvKio8IGRlY2ltYWwgKi8KCXUxNiBoZWFkZXJfc2l6ZTsJCS8qKjwgaW4gYnl0ZXMgKi8KCXUxNiBiZGJfc2l6ZTsJCQkvKio8IGluIGJ5dGVzICovCn07CgovKiBzdHJpY3RseSBzcGVha2luZywgdGhpcyBpcyBhICJza2lwIiBibG9jaywgYnV0IGl0IGhhcyBpbnRlcmVzdGluZyBpbmZvICovCnN0cnVjdCB2Ymlvc19kYXRhIHsKCXU4IHR5cGU7IC8qIDAgPT0gZGVza3RvcCwgMSA9PSBtb2JpbGUgKi8KCXU4IHJlbHN0YWdlOwoJdTggY2hpcHNldDsKCXU4IGx2ZHNfcHJlc2VudDoxOwoJdTggdHZfcHJlc2VudDoxOwoJdTggcnN2ZDI6NjsgLyogZmluaXNoIGJ5dGUgKi8KCXU4IHJzdmQzWzRdOwoJdTggc2lnbm9uWzE1NV07Cgl1OCBjb3B5cmlnaHRbNjFdOwoJdTE2IGNvZGVfc2VnbWVudDsKCXU4IGRvc19ib290X21vZGU7Cgl1OCBiYW5kd2lkdGhfcGVyY2VudDsKCXU4IHJzdmQ0OyAvKiBwb3B1cCBtZW1vcnkgc2l6ZSAqLwoJdTggcmVzaXplX3BjaV9iaW9zOwoJdTggcnN2ZDU7IC8qIGlzIGNydCBhbHJlYWR5IG9uIGRkYzIgKi8KfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCi8qCiAqIFRoZXJlIGFyZSBzZXZlcmFsIHR5cGVzIG9mIEJJT1MgZGF0YSBibG9ja3MgKEJEQnMpLCBlYWNoIGJsb2NrIGhhcwogKiBhbiBJRCBhbmQgc2l6ZSBpbiB0aGUgZmlyc3QgMyBieXRlcyAoSUQgaW4gZmlyc3QsIHNpemUgaW4gbmV4dCAyKS4KICogS25vd24gdHlwZXMgYXJlIGxpc3RlZCBiZWxvdy4KICovCiNkZWZpbmUgQkRCX0dFTkVSQUxfRkVBVFVSRVMJICAxCiNkZWZpbmUgQkRCX0dFTkVSQUxfREVGSU5JVElPTlMJICAyCiNkZWZpbmUgQkRCX09MRF9UT0dHTEVfTElTVAkgIDMKI2RlZmluZSBCREJfTU9ERV9TVVBQT1JUX0xJU1QJICA0CiNkZWZpbmUgQkRCX0dFTkVSSUNfTU9ERV9UQUJMRQkgIDUKI2RlZmluZSBCREJfRVhUX01NSU9fUkVHUwkgIDYKI2RlZmluZSBCREJfU1dGX0lPCQkgIDcKI2RlZmluZSBCREJfU1dGX01NSU8JCSAgOAojZGVmaW5lIEJEQl9ET1RfQ0xPQ0tfVEFCTEUJICA5CiNkZWZpbmUgQkRCX01PREVfUkVNT1ZBTF9UQUJMRQkgMTAKI2RlZmluZSBCREJfQ0hJTERfREVWSUNFX1RBQkxFCSAxMQojZGVmaW5lIEJEQl9EUklWRVJfRkVBVFVSRVMJIDEyCiNkZWZpbmUgQkRCX0RSSVZFUl9QRVJTSVNURU5DRQkgMTMKI2RlZmluZSBCREJfRVhUX1RBQkxFX1BUUlMJIDE0CiNkZWZpbmUgQkRCX0RPVF9DTE9DS19PVkVSUklERQkgMTUKI2RlZmluZSBCREJfRElTUExBWV9TRUxFQ1QJIDE2Ci8qIDE3IHJzdmQgKi8KI2RlZmluZSBCREJfRFJJVkVSX1JPVEFUSU9OCSAxOAojZGVmaW5lIEJEQl9ESVNQTEFZX1JFTU9WRQkgMTkKI2RlZmluZSBCREJfT0VNX0NVU1RPTQkJIDIwCiNkZWZpbmUgQkRCX0VGUF9MSVNUCQkgMjEgLyogd29ya2Fyb3VuZHMgZm9yIFZHQSBoc3luYy92c3luYyAqLwojZGVmaW5lIEJEQl9TRFZPX0xWRFNfT1BUSU9OUwkgMjIKI2RlZmluZSBCREJfU0RWT19QQU5FTF9EVERTCSAyMwojZGVmaW5lIEJEQl9TRFZPX0xWRFNfUE5QX0lEUwkgMjQKI2RlZmluZSBCREJfU0RWT19MVkRTX1BPV0VSX1NFUQkgMjUKI2RlZmluZSBCREJfVFZfT1BUSU9OUwkJIDI2CiNkZWZpbmUgQkRCX0VEUAkJCSAyNwojZGVmaW5lIEJEQl9MVkRTX09QVElPTlMJIDQwCiNkZWZpbmUgQkRCX0xWRFNfTEZQX0RBVEFfUFRSUwkgNDEKI2RlZmluZSBCREJfTFZEU19MRlBfREFUQQkgNDIKI2RlZmluZSBCREJfTFZEU19CQUNLTElHSFQJIDQzCiNkZWZpbmUgQkRCX0xWRFNfUE9XRVIJCSA0NAojZGVmaW5lIEJEQl9TS0lQCQkyNTQgLyogVkJJT1MgcHJpdmF0ZSBibG9jaywgaWdub3JlICovCgpzdHJ1Y3QgYmRiX2dlbmVyYWxfZmVhdHVyZXMgewogICAgICAgIC8qIGJpdHMgMSAqLwoJdTggcGFuZWxfZml0dGluZzoyOwoJdTggZmxleGFpbToxOwoJdTggbXNnX2VuYWJsZToxOwoJdTggY2xlYXJfc2NyZWVuOjM7Cgl1OCBjb2xvcl9mbGlwOjE7CgogICAgICAgIC8qIGJpdHMgMiAqLwoJdTggZG93bmxvYWRfZXh0X3ZidDoxOwoJdTggZW5hYmxlX3NzYzoxOwoJdTggc3NjX2ZyZXE6MTsKCXU4IGVuYWJsZV9sZnBfb25fb3ZlcnJpZGU6MTsKCXU4IGRpc2FibGVfc3NjX2RkdDoxOwoJdTggcnN2ZDg6MzsgLyogZmluaXNoIGJ5dGUgKi8KCiAgICAgICAgLyogYml0cyAzICovCgl1OCBkaXNhYmxlX3Ntb290aF92aXNpb246MTsKCXU4IHNpbmdsZV9kdmk6MTsKCXU4IHJzdmQ5OjY7IC8qIGZpbmlzaCBieXRlICovCgogICAgICAgIC8qIGJpdHMgNCAqLwoJdTggbGVnYWN5X21vbml0b3JfZGV0ZWN0OwoKICAgICAgICAvKiBiaXRzIDUgKi8KCXU4IGludF9jcnRfc3VwcG9ydDoxOwoJdTggaW50X3R2X3N1cHBvcnQ6MTsKCXU4IHJzdmQxMTo2OyAvKiBmaW5pc2ggYnl0ZSAqLwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKLyogcHJlLTkxNSAqLwojZGVmaW5lIEdQSU9fUElOX0RWSV9MVkRTCTB4MDMgLyogIkRWSS9MVkRTIEREQyBHUElPIHBpbnMiICovCiNkZWZpbmUgR1BJT19QSU5fQUREX0kyQwkweDA1IC8qICJBRERDQVJEIEkyQyBHUElPIHBpbnMiICovCiNkZWZpbmUgR1BJT19QSU5fQUREX0REQwkweDA0IC8qICJBRERDQVJEIEREQyBHUElPIHBpbnMiICovCiNkZWZpbmUgR1BJT19QSU5fQUREX0REQ19JMkMJMHgwNiAvKiAiQUREQ0FSRCBEREMvSTJDIEdQSU8gcGlucyIgKi8KCi8qIFByZSA5MTUgKi8KI2RlZmluZSBERVZJQ0VfVFlQRV9OT05FCTB4MDAKI2RlZmluZSBERVZJQ0VfVFlQRV9DUlQJCTB4MDEKI2RlZmluZSBERVZJQ0VfVFlQRV9UVgkJMHgwOQojZGVmaW5lIERFVklDRV9UWVBFX0VGUAkJMHgxMgojZGVmaW5lIERFVklDRV9UWVBFX0xGUAkJMHgyMgovKiBPbiA5MTUrICovCiNkZWZpbmUgREVWSUNFX1RZUEVfQ1JUX0RQTVMJCTB4NjAwMQojZGVmaW5lIERFVklDRV9UWVBFX0NSVF9EUE1TX0hPVFBMVUcJMHg0MDAxCiNkZWZpbmUgREVWSUNFX1RZUEVfVFZfQ09NUE9TSVRFCTB4MDIwOQojZGVmaW5lIERFVklDRV9UWVBFX1RWX01BQ1JPVklTSU9OCTB4MDI4OQojZGVmaW5lIERFVklDRV9UWVBFX1RWX1JGX0NPTVBPU0lURQkweDAyMGMKI2RlZmluZSBERVZJQ0VfVFlQRV9UVl9TVklERU9fQ09NUE9TSVRFCTB4MDYwOQojZGVmaW5lIERFVklDRV9UWVBFX1RWX1NDQVJUCQkweDAyMDkKI2RlZmluZSBERVZJQ0VfVFlQRV9UVl9DT0RFQ19IT1RQTFVHX1BXUiAweDYwMDkKI2RlZmluZSBERVZJQ0VfVFlQRV9FRlBfSE9UUExVR19QV1IJMHg2MDEyCiNkZWZpbmUgREVWSUNFX1RZUEVfRUZQX0RWSV9IT1RQTFVHX1BXUgkweDYwNTIKI2RlZmluZSBERVZJQ0VfVFlQRV9FRlBfRFZJX0kJCTB4NjA1MwojZGVmaW5lIERFVklDRV9UWVBFX0VGUF9EVklfRF9EVUFMCTB4NjE1MgojZGVmaW5lIERFVklDRV9UWVBFX0VGUF9EVklfRF9IRENQCTB4NjBkMgojZGVmaW5lIERFVklDRV9UWVBFX09QRU5MRElfSE9UUExVR19QV1IJMHg2MDYyCiNkZWZpbmUgREVWSUNFX1RZUEVfT1BFTkxESV9EVUFMUElYCTB4NjE2MgojZGVmaW5lIERFVklDRV9UWVBFX0xGUF9QQU5FTExJTksJMHg1MDEyCiNkZWZpbmUgREVWSUNFX1RZUEVfTEZQX0NNT1NfUFdSCTB4NTA0MgojZGVmaW5lIERFVklDRV9UWVBFX0xGUF9MVkRTX1BXUgkweDUwNjIKI2RlZmluZSBERVZJQ0VfVFlQRV9MRlBfTFZEU19EVUFMCTB4NTE2MgojZGVmaW5lIERFVklDRV9UWVBFX0xGUF9MVkRTX0RVQUxfSERDUAkweDUxZTIKCiNkZWZpbmUgREVWSUNFX0NGR19OT05FCQkweDAwCiNkZWZpbmUgREVWSUNFX0NGR18xMkJJVF9EVk9CCTB4MDEKI2RlZmluZSBERVZJQ0VfQ0ZHXzEyQklUX0RWT0MJMHgwMgojZGVmaW5lIERFVklDRV9DRkdfMjRCSVRfRFZPQkMJMHgwOQojZGVmaW5lIERFVklDRV9DRkdfMjRCSVRfRFZPQ0IJMHgwYQojZGVmaW5lIERFVklDRV9DRkdfRFVBTF9EVk9CCTB4MTEKI2RlZmluZSBERVZJQ0VfQ0ZHX0RVQUxfRFZPQwkweDEyCiNkZWZpbmUgREVWSUNFX0NGR19EVUFMX0RWT0JDCTB4MTMKI2RlZmluZSBERVZJQ0VfQ0ZHX0RVQUxfTElOS19EVk9CQwkweDE5CiNkZWZpbmUgREVWSUNFX0NGR19EVUFMX0xJTktfRFZPQ0IJMHgxYQoKI2RlZmluZSBERVZJQ0VfV0lSRV9OT05FCTB4MDAKI2RlZmluZSBERVZJQ0VfV0lSRV9EVk9CCTB4MDEKI2RlZmluZSBERVZJQ0VfV0lSRV9EVk9DCTB4MDIKI2RlZmluZSBERVZJQ0VfV0lSRV9EVk9CQwkweDAzCiNkZWZpbmUgREVWSUNFX1dJUkVfRFZPQkIJMHgwNQojZGVmaW5lIERFVklDRV9XSVJFX0RWT0NDCTB4MDYKI2RlZmluZSBERVZJQ0VfV0lSRV9EVk9CX01BU1RFUiAweDBkCiNkZWZpbmUgREVWSUNFX1dJUkVfRFZPQ19NQVNURVIgMHgwZQoKI2RlZmluZSBERVZJQ0VfUE9SVF9EVk9BCTB4MDAgLyogbm9uZSBvbiA4NDUrICovCiNkZWZpbmUgREVWSUNFX1BPUlRfRFZPQgkweDAxCiNkZWZpbmUgREVWSUNFX1BPUlRfRFZPQwkweDAyCgpzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyB7Cgl1MTYgaGFuZGxlOwoJdTE2IGRldmljZV90eXBlOwoJdTggIGRldmljZV9pZFsxMF07IC8qIFNlZSBERVZJQ0VfVFlQRV8qIGFib3ZlICovCgl1MTYgYWRkaW5fb2Zmc2V0OwoJdTggIGR2b19wb3J0OyAvKiBTZWUgRGV2aWNlX1BPUlRfKiBhYm92ZSAqLwoJdTggIGkyY19waW47Cgl1OCAgc2xhdmVfYWRkcjsKCXU4ICBkZGNfcGluOwoJdTE2IGVkaWRfcHRyOwoJdTggIGR2b19jZmc7IC8qIFNlZSBERVZJQ0VfQ0ZHXyogYWJvdmUgKi8KCXU4ICBkdm8yX3BvcnQ7Cgl1OCAgaTJjMl9waW47Cgl1OCAgc2xhdmUyX2FkZHI7Cgl1OCAgZGRjMl9waW47Cgl1OCAgY2FwYWJpbGl0aWVzOwoJdTggIGR2b193aXJpbmc7LyogU2VlIERFVklDRV9XSVJFXyogYWJvdmUgKi8KCXU4ICBkdm8yX3dpcmluZzsKCXUxNiBleHRlbmRlZF90eXBlOwoJdTggIGR2b19mdW5jdGlvbjsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCBiZGJfZ2VuZXJhbF9kZWZpbml0aW9ucyB7CgkvKiBEREMgR1BJTyAqLwoJdTggY3J0X2RkY19nbWJ1c19waW47CgoJLyogRFBNUyBiaXRzICovCgl1OCBkcG1zX2FjcGk6MTsKCXU4IHNraXBfYm9vdF9jcnRfZGV0ZWN0OjE7Cgl1OCBkcG1zX2FpbToxOwoJdTggcnN2ZDE6NTsgLyogZmluaXNoIGJ5dGUgKi8KCgkvKiBib290IGRldmljZSBiaXRzICovCgl1OCBib290X2Rpc3BsYXlbMl07Cgl1OCBjaGlsZF9kZXZfc2l6ZTsKCgkvKgoJICogRGV2aWNlIGluZm86CgkgKiBJZiBUViBpcyBwcmVzZW50LCBpdCdsbCBiZSBhdCBkZXZpY2VzWzBdLgoJICogTFZEUyB3aWxsIGJlIG5leHQsIGVpdGhlciBkZXZpY2VzWzBdIG9yIFsxXSwgaWYgcHJlc2VudC4KCSAqIE9uIHNvbWUgcGxhdGZvcm1zIHRoZSBudW1iZXIgb2YgZGV2aWNlIGlzIDYuIEJ1dCBjb3VsZCBiZSBhcyBmZXcgYXMKCSAqIDQgaWYgYm90aCBUViBhbmQgTFZEUyBhcmUgbWlzc2luZy4KCSAqIEFuZCB0aGUgZGV2aWNlIG51bSBpcyByZWxhdGVkIHdpdGggdGhlIHNpemUgb2YgZ2VuZXJhbCBkZWZpbml0aW9uCgkgKiBibG9jay4gSXQgaXMgb2J0YWluZWQgYnkgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgoJICogbnVtYmVyID0gKGJsb2NrX3NpemUgLSBzaXplb2YoYmRiX2dlbmVyYWxfZGVmaW5pdGlvbnMpKS8KCSAqIAkJc2l6ZW9mKGNoaWxkX2RldmljZV9jb25maWcpOwoJICovCglzdHJ1Y3QgY2hpbGRfZGV2aWNlX2NvbmZpZyBkZXZpY2VzWzBdOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGJkYl9sdmRzX29wdGlvbnMgewoJdTggcGFuZWxfdHlwZTsKCXU4IHJzdmQxOwoJLyogTFZEUyBjYXBhYmlsaXRpZXMsIHN0b3JlZCBpbiBhIGR3b3JkICovCgl1OCBwZml0X21vZGU6MjsKCXU4IHBmaXRfdGV4dF9tb2RlX2VuaGFuY2VkOjE7Cgl1OCBwZml0X2dmeF9tb2RlX2VuaGFuY2VkOjE7Cgl1OCBwZml0X3JhdGlvX2F1dG86MTsKCXU4IHBpeGVsX2RpdGhlcjoxOwoJdTggbHZkc19lZGlkOjE7Cgl1OCByc3ZkMjoxOwoJdTggcnN2ZDQ7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgovKiBMRlAgcG9pbnRlciB0YWJsZSBjb250YWlucyBlbnRyaWVzIHRvIHRoZSBzdHJ1Y3QgYmVsb3cgKi8Kc3RydWN0IGJkYl9sdmRzX2xmcF9kYXRhX3B0ciB7Cgl1MTYgZnBfdGltaW5nX29mZnNldDsgLyogb2Zmc2V0cyBhcmUgZnJvbSBzdGFydCBvZiBiZGIgKi8KCXU4IGZwX3RhYmxlX3NpemU7Cgl1MTYgZHZvX3RpbWluZ19vZmZzZXQ7Cgl1OCBkdm9fdGFibGVfc2l6ZTsKCXUxNiBwYW5lbF9wbnBfaWRfb2Zmc2V0OwoJdTggcG5wX3RhYmxlX3NpemU7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgpzdHJ1Y3QgYmRiX2x2ZHNfbGZwX2RhdGFfcHRycyB7Cgl1OCBsdmRzX2VudHJpZXM7IC8qIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGx2ZHNfZGF0YV9wdHIgc3RydWN0cyAqLwoJc3RydWN0IGJkYl9sdmRzX2xmcF9kYXRhX3B0ciBwdHJbMTZdOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKLyogTEZQIGRhdGEgaGFzIDMgYmxvY2tzIHBlciBlbnRyeSAqLwpzdHJ1Y3QgbHZkc19mcF90aW1pbmcgewoJdTE2IHhfcmVzOwoJdTE2IHlfcmVzOwoJdTMyIGx2ZHNfcmVnOwoJdTMyIGx2ZHNfcmVnX3ZhbDsKCXUzMiBwcF9vbl9yZWc7Cgl1MzIgcHBfb25fcmVnX3ZhbDsKCXUzMiBwcF9vZmZfcmVnOwoJdTMyIHBwX29mZl9yZWdfdmFsOwoJdTMyIHBwX2N5Y2xlX3JlZzsKCXUzMiBwcF9jeWNsZV9yZWdfdmFsOwoJdTMyIHBmaXRfcmVnOwoJdTMyIHBmaXRfcmVnX3ZhbDsKCXUxNiB0ZXJtaW5hdG9yOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGx2ZHNfZHZvX3RpbWluZyB7Cgl1MTYgY2xvY2s7CQkvKio8IEluIDEwa2h6ICovCgl1OCBoYWN0aXZlX2xvOwoJdTggaGJsYW5rX2xvOwoJdTggaGJsYW5rX2hpOjQ7Cgl1OCBoYWN0aXZlX2hpOjQ7Cgl1OCB2YWN0aXZlX2xvOwoJdTggdmJsYW5rX2xvOwoJdTggdmJsYW5rX2hpOjQ7Cgl1OCB2YWN0aXZlX2hpOjQ7Cgl1OCBoc3luY19vZmZfbG87Cgl1OCBoc3luY19wdWxzZV93aWR0aDsKCXU4IHZzeW5jX3B1bHNlX3dpZHRoOjQ7Cgl1OCB2c3luY19vZmY6NDsKCXU4IHJzdmQwOjY7Cgl1OCBoc3luY19vZmZfaGk6MjsKCXU4IGhfaW1hZ2U7Cgl1OCB2X2ltYWdlOwoJdTggbWF4X2h2OwoJdTggaF9ib3JkZXI7Cgl1OCB2X2JvcmRlcjsKCXU4IHJzdmQxOjM7Cgl1OCBkaWdpdGFsOjI7Cgl1OCB2c3luY19wb3NpdGl2ZToxOwoJdTggaHN5bmNfcG9zaXRpdmU6MTsKCXU4IHJzdmQyOjE7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgpzdHJ1Y3QgbHZkc19wbnBfaWQgewoJdTE2IG1mZ19uYW1lOwoJdTE2IHByb2R1Y3RfY29kZTsKCXUzMiBzZXJpYWw7Cgl1OCBtZmdfd2VlazsKCXU4IG1mZ195ZWFyOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGJkYl9sdmRzX2xmcF9kYXRhX2VudHJ5IHsKCXN0cnVjdCBsdmRzX2ZwX3RpbWluZyBmcF90aW1pbmc7CglzdHJ1Y3QgbHZkc19kdm9fdGltaW5nIGR2b190aW1pbmc7CglzdHJ1Y3QgbHZkc19wbnBfaWQgcG5wX2lkOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGJkYl9sdmRzX2xmcF9kYXRhIHsKCXN0cnVjdCBiZGJfbHZkc19sZnBfZGF0YV9lbnRyeSBkYXRhWzE2XTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCBhaW1kYl9oZWFkZXIgewoJY2hhciBzaWduYXR1cmVbMTZdOwoJY2hhciBvZW1fZGV2aWNlWzIwXTsKCXUxNiBhaW1kYl92ZXJzaW9uOwoJdTE2IGFpbWRiX2hlYWRlcl9zaXplOwoJdTE2IGFpbWRiX3NpemU7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgpzdHJ1Y3QgYWltZGJfYmxvY2sgewoJdTggYWltZGJfaWQ7Cgl1MTYgYWltZGJfc2l6ZTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCB2Y2hfcGFuZWxfZGF0YSB7Cgl1MTYgZnBfdGltaW5nX29mZnNldDsKCXU4IGZwX3RpbWluZ19zaXplOwoJdTE2IGR2b190aW1pbmdfb2Zmc2V0OwoJdTggZHZvX3RpbWluZ19zaXplOwoJdTE2IHRleHRfZml0dGluZ19vZmZzZXQ7Cgl1OCB0ZXh0X2ZpdHRpbmdfc2l6ZTsKCXUxNiBncmFwaGljc19maXR0aW5nX29mZnNldDsKCXU4IGdyYXBoaWNzX2ZpdHRpbmdfc2l6ZTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCB2Y2hfYmRiXzIyIHsKCXN0cnVjdCBhaW1kYl9ibG9jayBhaW1kYl9ibG9jazsKCXN0cnVjdCB2Y2hfcGFuZWxfZGF0YSBwYW5lbHNbMTZdOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGJkYl9zZHZvX2x2ZHNfb3B0aW9ucyB7Cgl1OCBwYW5lbF9iYWNrbGlnaHQ7Cgl1OCBoNDBfc2V0X3BhbmVsX3R5cGU7Cgl1OCBwYW5lbF90eXBlOwoJdTggc3NjX2Nsa19mcmVxOwoJdTE2IGFsc19sb3dfdHJpcDsKCXUxNiBhbHNfaGlnaF90cmlwOwoJdTggc2NsYWxhcmNvZWZmX3RhYl9yb3dfbnVtOwoJdTggc2NsYWxhcmNvZWZmX3RhYl9yb3dfc2l6ZTsKCXU4IGNvZWZmaWNpZW50WzhdOwoJdTggcGFuZWxfbWlzY19iaXRzXzE7Cgl1OCBwYW5lbF9taXNjX2JpdHNfMjsKCXU4IHBhbmVsX21pc2NfYml0c18zOwoJdTggcGFuZWxfbWlzY19iaXRzXzQ7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgoKI2RlZmluZSBCREJfRFJJVkVSX0ZFQVRVUkVfTk9fTFZEUwkJMAojZGVmaW5lIEJEQl9EUklWRVJfRkVBVFVSRV9JTlRfTFZEUwkJMQojZGVmaW5lIEJEQl9EUklWRVJfRkVBVFVSRV9TRFZPX0xWRFMJCTIKI2RlZmluZSBCREJfRFJJVkVSX0ZFQVRVUkVfRURQCQkJMwoKc3RydWN0IGJkYl9kcml2ZXJfZmVhdHVyZXMgewoJdTggYm9vdF9kZXZfYWxnb3JpdGhtOjE7Cgl1OCBibG9ja19kaXNwbGF5X3N3aXRjaDoxOwoJdTggYWxsb3dfZGlzcGxheV9zd2l0Y2g6MTsKCXU4IGhvdHBsdWdfZHZvOjE7Cgl1OCBkdWFsX3ZpZXdfem9vbToxOwoJdTggaW50MTVoX2hvb2s6MTsKCXU4IHNwcml0ZV9pbl9jbG9uZToxOwoJdTggcHJpbWFyeV9sZnBfaWQ6MTsKCgl1MTYgYm9vdF9tb2RlX3g7Cgl1MTYgYm9vdF9tb2RlX3k7Cgl1OCBib290X21vZGVfYnBwOwoJdTggYm9vdF9tb2RlX3JlZnJlc2g7CgoJdTE2IGVuYWJsZV9sZnBfcHJpbWFyeToxOwoJdTE2IHNlbGVjdGl2ZV9tb2RlX3BydW5pbmc6MTsKCXUxNiBkdWFsX2ZyZXF1ZW5jeToxOwoJdTE2IHJlbmRlcl9jbG9ja19mcmVxOjE7IC8qIDA6IGhpZ2ggZnJlcTsgMTogbG93IGZyZXEgKi8KCXUxNiBudF9jbG9uZV9zdXBwb3J0OjE7Cgl1MTYgcG93ZXJfc2NoZW1lX3VpOjE7IC8qIDA6IENVSTsgMTogM3JkIHBhcnR5ICovCgl1MTYgc3ByaXRlX2Rpc3BsYXlfYXNzaWduOjE7IC8qIDA6IHNlY29uZGFyeTsgMTogcHJpbWFyeSAqLwoJdTE2IGN1aV9hc3BlY3Rfc2NhbGluZzoxOwoJdTE2IHByZXNlcnZlX2FzcGVjdF9yYXRpbzoxOwoJdTE2IHNkdm9fZGV2aWNlX3Bvd2VyX2Rvd246MTsKCXUxNiBjcnRfaG90cGx1ZzoxOwoJdTE2IGx2ZHNfY29uZmlnOjI7Cgl1MTYgdHZfaG90cGx1ZzoxOwoJdTE2IGhkbWlfY29uZmlnOjI7CgoJdTggc3RhdGljX2Rpc3BsYXk6MTsKCXU4IHJlc2VydmVkMjo3OwoJdTE2IGxlZ2FjeV9jcnRfbWF4X3g7Cgl1MTYgbGVnYWN5X2NydF9tYXhfeTsKCXU4IGxlZ2FjeV9jcnRfbWF4X3JlZnJlc2g7CgoJdTggaGRtaV90ZXJtaW5hdGlvbjsKCXU4IGN1c3RvbV92YnRfdmVyc2lvbjsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCiNkZWZpbmUgRURQXzE4QlBQCTAKI2RlZmluZSBFRFBfMjRCUFAJMQojZGVmaW5lIEVEUF8zMEJQUAkyCiNkZWZpbmUgRURQX1JBVEVfMV82MgkwCiNkZWZpbmUgRURQX1JBVEVfMl83CTEKI2RlZmluZSBFRFBfTEFORV8xCTAKI2RlZmluZSBFRFBfTEFORV8yCTEKI2RlZmluZSBFRFBfTEFORV80CTMKI2RlZmluZSBFRFBfUFJFRU1QSEFTSVNfTk9ORQkwCiNkZWZpbmUgRURQX1BSRUVNUEhBU0lTXzNfNWRCCTEKI2RlZmluZSBFRFBfUFJFRU1QSEFTSVNfNmRCCTIKI2RlZmluZSBFRFBfUFJFRU1QSEFTSVNfOV81ZEIJMwojZGVmaW5lIEVEUF9WU1dJTkdfMF80VgkJMAojZGVmaW5lIEVEUF9WU1dJTkdfMF82VgkJMQojZGVmaW5lIEVEUF9WU1dJTkdfMF84VgkJMgojZGVmaW5lIEVEUF9WU1dJTkdfMV8yVgkJMwoKc3RydWN0IGVkcF9wb3dlcl9zZXEgewoJdTE2IHQzOwoJdTE2IHQ3OwoJdTE2IHQ5OwoJdTE2IHQxMDsKCXUxNiB0MTI7Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKc3RydWN0IGVkcF9saW5rX3BhcmFtcyB7Cgl1OCByYXRlOjQ7Cgl1OCBsYW5lczo0OwoJdTggcHJlZW1waGFzaXM6NDsKCXU4IHZzd2luZzo0Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCnN0cnVjdCBiZGJfZWRwIHsKCXN0cnVjdCBlZHBfcG93ZXJfc2VxIHBvd2VyX3NlcXNbMTZdOwoJdTMyIGNvbG9yX2RlcHRoOwoJdTMyIHNkcnJzX21zYV90aW1pbmdfZGVsYXk7CglzdHJ1Y3QgZWRwX2xpbmtfcGFyYW1zIGxpbmtfcGFyYW1zWzE2XTsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7Cgpib29sIGludGVsX2luaXRfYmlvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKCi8qCiAqIERyaXZlcjwtPlZCSU9TIGludGVyYWN0aW9uIG9jY3VycyB0aHJvdWdoIHNjcmF0Y2ggYml0cyBpbgogKiBHUjE4ICYgU1dGKi4KICovCgovKiBHUjE4IGJpdHMgYXJlIHNldCBvbiBkaXNwbGF5IHN3aXRjaCBhbmQgaG90a2V5IGV2ZW50cyAqLwojZGVmaW5lIEdSMThfRFJJVkVSX1NXSVRDSF9FTgkoMTw8NykgLyogMDogVkJJT1MgY29udHJvbCwgMTogZHJpdmVyIGNvbnRyb2wgKi8KI2RlZmluZSBHUjE4X0hPVEtFWV9NQVNLCTB4NzggLyogU2VlIGFsc28gU1dGNCAxNTowICovCiNkZWZpbmUgICBHUjE4X0hLX05PTkUJCSgweDA8PDMpCiNkZWZpbmUgICBHUjE4X0hLX0xGUF9TVFJFVENICSgweDE8PDMpCiNkZWZpbmUgICBHUjE4X0hLX1RPR0dMRV9ESVNQCSgweDI8PDMpCiNkZWZpbmUgICBHUjE4X0hLX0RJU1BfU1dJVENICSgweDQ8PDMpIC8qIHNlZSBTV0YxNCAxNTowIGZvciB3aGF0IHRvIGVuYWJsZSAqLwojZGVmaW5lICAgR1IxOF9IS19QT1BVUF9ESVNBQkxFRCAoMHg2PDwzKQojZGVmaW5lICAgR1IxOF9IS19QT1BVUF9FTkFCTEVECSgweDc8PDMpCiNkZWZpbmUgICBHUjE4X0hLX1BGSVQJCSgweDg8PDMpCiNkZWZpbmUgICBHUjE4X0hLX0FQTV9DSEFOR0UJKDB4YTw8MykKI2RlZmluZSAgIEdSMThfSEtfTVVMVElQTEUJKDB4Yzw8MykKI2RlZmluZSBHUjE4X1VTRVJfSU5UX0VOCSgxPDwyKQojZGVmaW5lIEdSMThfQTAwMDBfRkxVU0hfRU4JKDE8PDEpCiNkZWZpbmUgR1IxOF9TTU1fRU4JCSgxPDwwKQoKLyogU2V0IGJ5IGRyaXZlciwgY2xlYXJlZCBieSBWQklPUyAqLwojZGVmaW5lIFNXRjAwX1lSRVNfU0hJRlQJMTYKI2RlZmluZSBTV0YwMF9YUkVTX1NISUZUCTAKI2RlZmluZSBTV0YwMF9SRVNfTUFTSwkJMHhmZmZmCgovKiBTZXQgYnkgVkJJT1MgYXQgYm9vdCB0aW1lIGFuZCBkcml2ZXIgYXQgcnVudGltZSAqLwojZGVmaW5lIFNXRjAxX1RWMl9GT1JNQVRfU0hJRlQJOAojZGVmaW5lIFNXRjAxX1RWMV9GT1JNQVRfU0hJRlQJMAojZGVmaW5lIFNXRjAxX1RWX0ZPUk1BVF9NQVNLCTB4ZmZmZgoKI2RlZmluZSBTV0YxMF9WQklPU19CTENfSTJDX0VOCSgxPDwyOSkKI2RlZmluZSBTV0YxMF9HVFRfT1ZFUlJJREVfRU4JKDE8PDI4KQojZGVmaW5lIFNXRjEwX0xGUF9EUE1TX09WUgkoMTw8MjcpIC8qIG92ZXJyaWRlIERQTVMgb24gZGlzcGxheSBzd2l0Y2ggKi8KI2RlZmluZSBTV0YxMF9BQ1RJVkVfVE9HR0xFX0xJU1RfTUFTSyAoNzw8MjQpCiNkZWZpbmUgICBTV0YxMF9PTERfVE9HR0xFCTB4MAojZGVmaW5lICAgU1dGMTBfVE9HR0xFX0xJU1RfMQkweDEKI2RlZmluZSAgIFNXRjEwX1RPR0dMRV9MSVNUXzIJMHgyCiNkZWZpbmUgICBTV0YxMF9UT0dHTEVfTElTVF8zCTB4MwojZGVmaW5lICAgU1dGMTBfVE9HR0xFX0xJU1RfNAkweDQKI2RlZmluZSBTV0YxMF9QQU5OSU5HX0VOCSgxPDwyMykKI2RlZmluZSBTV0YxMF9EUklWRVJfTE9BREVECSgxPDwyMikKI2RlZmluZSBTV0YxMF9FWFRFTkRFRF9ERVNLVE9QCSgxPDwyMSkKI2RlZmluZSBTV0YxMF9FWENMVVNJVkVfTU9ERQkoMTw8MjApCiNkZWZpbmUgU1dGMTBfT1ZFUkxBWV9FTgkoMTw8MTkpCiNkZWZpbmUgU1dGMTBfUExBTkVCX0hPTERPRkYJKDE8PDE4KQojZGVmaW5lIFNXRjEwX1BMQU5FQV9IT0xET0ZGCSgxPDwxNykKI2RlZmluZSBTV0YxMF9WR0FfSE9MRE9GRgkoMTw8MTYpCiNkZWZpbmUgU1dGMTBfQUNUSVZFX0RJU1BfTUFTSwkweGZmZmYKI2RlZmluZSAgIFNXRjEwX1BJUEVCX0xGUDIJKDE8PDE1KQojZGVmaW5lICAgU1dGMTBfUElQRUJfRUZQMgkoMTw8MTQpCiNkZWZpbmUgICBTV0YxMF9QSVBFQl9UVjIJKDE8PDEzKQojZGVmaW5lICAgU1dGMTBfUElQRUJfQ1JUMgkoMTw8MTIpCiNkZWZpbmUgICBTV0YxMF9QSVBFQl9MRlAJKDE8PDExKQojZGVmaW5lICAgU1dGMTBfUElQRUJfRUZQCSgxPDwxMCkKI2RlZmluZSAgIFNXRjEwX1BJUEVCX1RWCSgxPDw5KQojZGVmaW5lICAgU1dGMTBfUElQRUJfQ1JUCSgxPDw4KQojZGVmaW5lICAgU1dGMTBfUElQRUFfTEZQMgkoMTw8NykKI2RlZmluZSAgIFNXRjEwX1BJUEVBX0VGUDIJKDE8PDYpCiNkZWZpbmUgICBTV0YxMF9QSVBFQV9UVjIJKDE8PDUpCiNkZWZpbmUgICBTV0YxMF9QSVBFQV9DUlQyCSgxPDw0KQojZGVmaW5lICAgU1dGMTBfUElQRUFfTEZQCSgxPDwzKQojZGVmaW5lICAgU1dGMTBfUElQRUFfRUZQCSgxPDwyKQojZGVmaW5lICAgU1dGMTBfUElQRUFfVFYJKDE8PDEpCiNkZWZpbmUgICBTV0YxMF9QSVBFQV9DUlQJKDE8PDApCgojZGVmaW5lIFNXRjExX01FTU9SWV9TSVpFX1NISUZUCTE2CiNkZWZpbmUgU1dGMTFfU1ZfVEVTVF9FTgkoMTw8MTUpCiNkZWZpbmUgU1dGMTFfSVNfQUdQCQkoMTw8MTQpCiNkZWZpbmUgU1dGMTFfRElTUExBWV9IT0xET0ZGCSgxPDwxMykKI2RlZmluZSBTV0YxMV9EUE1TX1JFRFVDRUQJKDE8PDEyKQojZGVmaW5lIFNXRjExX0lTX1ZCRV9NT0RFCSgxPDwxMSkKI2RlZmluZSBTV0YxMV9QSVBFQl9BQ0NFU1MJKDE8PDEwKSAvKiAwIGhlcmUgbWVhbnMgcGlwZSBhICovCiNkZWZpbmUgU1dGMTFfRFBNU19NQVNLCQkweDA3CiNkZWZpbmUgICBTV0YxMV9EUE1TX09GRgkoMTw8MikKI2RlZmluZSAgIFNXRjExX0RQTVNfU1VTUEVORAkoMTw8MSkKI2RlZmluZSAgIFNXRjExX0RQTVNfU1RBTkRCWQkoMTw8MCkKI2RlZmluZSAgIFNXRjExX0RQTVNfT04JCTAKCiNkZWZpbmUgU1dGMTRfR0ZYX1BGSVRfRU4JKDE8PDMxKQojZGVmaW5lIFNXRjE0X1RFWFRfUEZJVF9FTgkoMTw8MzApCiNkZWZpbmUgU1dGMTRfTElEX1NUQVRVU19DTE9TRUQJKDE8PDI5KSAvKiAwIGhlcmUgbWVhbnMgb3BlbiAqLwojZGVmaW5lIFNXRjE0X1BPUFVQX0VOCQkoMTw8MjgpCiNkZWZpbmUgU1dGMTRfRElTUExBWV9IT0xET0ZGCSgxPDwyNykKI2RlZmluZSBTV0YxNF9ESVNQX0RFVEVDVF9FTgkoMTw8MjYpCiNkZWZpbmUgU1dGMTRfRE9DS0lOR19TVEFUVVNfRE9DS0VEICgxPDwyNSkgLyogMCBoZXJlIG1lYW5zIHVuZG9ja2VkICovCiNkZWZpbmUgU1dGMTRfRFJJVkVSX1NUQVRVUwkoMTw8MjQpCiNkZWZpbmUgU1dGMTRfT1NfVFlQRV9XSU45WAkoMTw8MjMpCiNkZWZpbmUgU1dGMTRfT1NfVFlQRV9XSU5OVAkoMTw8MjIpCi8qIDIxOjE5IHJzdmQgKi8KI2RlZmluZSBTV0YxNF9QTV9UWVBFX01BU0sJMHgwMDA3MDAwMAojZGVmaW5lICAgU1dGMTRfUE1fQUNQSV9WSURFTwkoMHg0IDw8IDE2KQojZGVmaW5lICAgU1dGMTRfUE1fQUNQSQkJKDB4MyA8PCAxNikKI2RlZmluZSAgIFNXRjE0X1BNX0FQTV8xMgkoMHgyIDw8IDE2KQojZGVmaW5lICAgU1dGMTRfUE1fQVBNXzExCSgweDEgPDwgMTYpCiNkZWZpbmUgU1dGMTRfSEtfUkVRVUVTVF9NQVNLCTB4MDAwMGZmZmYgLyogc2VlIEdSMTggNjozIGZvciBldmVudCB0eXBlICovCiAgICAgICAgICAvKiBpZiBHUjE4IGluZGljYXRlcyBhIGRpc3BsYXkgc3dpdGNoICovCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQl9MRlAyX0VOICgxPDwxNSkKI2RlZmluZSAgIFNXRjE0X0RTX1BJUEVCX0VGUDJfRU4gKDE8PDE0KQojZGVmaW5lICAgU1dGMTRfRFNfUElQRUJfVFYyX0VOICAoMTw8MTMpCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQl9DUlQyX0VOICgxPDwxMikKI2RlZmluZSAgIFNXRjE0X0RTX1BJUEVCX0xGUF9FTiAgKDE8PDExKQojZGVmaW5lICAgU1dGMTRfRFNfUElQRUJfRUZQX0VOICAoMTw8MTApCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQl9UVl9FTiAgICgxPDw5KQojZGVmaW5lICAgU1dGMTRfRFNfUElQRUJfQ1JUX0VOICAoMTw8OCkKI2RlZmluZSAgIFNXRjE0X0RTX1BJUEVBX0xGUDJfRU4gKDE8PDcpCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQV9FRlAyX0VOICgxPDw2KQojZGVmaW5lICAgU1dGMTRfRFNfUElQRUFfVFYyX0VOICAoMTw8NSkKI2RlZmluZSAgIFNXRjE0X0RTX1BJUEVBX0NSVDJfRU4gKDE8PDQpCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQV9MRlBfRU4gICgxPDwzKQojZGVmaW5lICAgU1dGMTRfRFNfUElQRUFfRUZQX0VOICAoMTw8MikKI2RlZmluZSAgIFNXRjE0X0RTX1BJUEVBX1RWX0VOICAgKDE8PDEpCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQV9DUlRfRU4gICgxPDwwKQogICAgICAgICAgLyogaWYgR1IxOCBpbmRpY2F0ZXMgYSBwYW5lbCBmaXR0aW5nIHJlcXVlc3QgKi8KI2RlZmluZSAgIFNXRjE0X1BGSVRfRU4JCSgxPDwwKSAvKiAwIG1lYW5zIGRpc2FibGUgKi8KICAgICAgICAgIC8qIGlmIEdSMTggaW5kaWNhdGVzIGFuIEFQTSBjaGFuZ2UgcmVxdWVzdCAqLwojZGVmaW5lICAgU1dGMTRfQVBNX0hJQkVSTkFURQkweDQKI2RlZmluZSAgIFNXRjE0X0FQTV9TVVNQRU5ECTB4MwojZGVmaW5lICAgU1dGMTRfQVBNX1NUQU5EQlkJMHgxCiNkZWZpbmUgICBTV0YxNF9BUE1fUkVTVE9SRQkweDAKCi8qIEFkZCB0aGUgZGV2aWNlIGNsYXNzIGZvciBMRlAsIFRWLCBIRE1JICovCiNkZWZpbmUJIERFVklDRV9UWVBFX0lOVF9MRlAJMHgxMDIyCiNkZWZpbmUJIERFVklDRV9UWVBFX0lOVF9UVgkweDEwMDkKI2RlZmluZQkgREVWSUNFX1RZUEVfSERNSQkweDYwRDIKI2RlZmluZQkgREVWSUNFX1RZUEVfRFAJCTB4NjhDNgojZGVmaW5lCSBERVZJQ0VfVFlQRV9lRFAJMHg3OEM2CgovKiBkZWZpbmUgdGhlIERWTyBwb3J0IGZvciBIRE1JIG91dHB1dCB0eXBlICovCiNkZWZpbmUJCURWT19CCQkxCiNkZWZpbmUJCURWT19DCQkyCiNkZWZpbmUJCURWT19ECQkzCgovKiBkZWZpbmUgdGhlIFBPUlQgZm9yIERQIG91dHB1dCB0eXBlICovCiNkZWZpbmUJCVBPUlRfSURQQgk3CiNkZWZpbmUJCVBPUlRfSURQQwk4CiNkZWZpbmUJCVBPUlRfSURQRAk5CgojZW5kaWYgLyogX0k4MzBfQklPU19IXyAqLwo=