LyoKICogbnRmc2VuZGlhbi5oCiAqCiAqIENvcHlyaWdodCAoQykgMTk5OCwgMTk5OSBNYXJ0aW4gdm9uIEz2d2lzCiAqIENvcHlyaWdodCAoQykgMTk5OCBKb3NlcGggTWFsaWNraQogKiBDb3B5cmlnaHQgKEMpIDE5OTkgV2VybmVyIFNlaWxlcgogKiBDb3B5cmlnaHQgKEMpIDIwMDEgQW50b24gQWx0YXBhcm1ha292IChBSUEpCiAqLwojaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgoKI2RlZmluZSBDUFVfVE9fTEUxNihhKSBfX2NwdV90b19sZTE2KGEpCiNkZWZpbmUgQ1BVX1RPX0xFMzIoYSkgX19jcHVfdG9fbGUzMihhKQojZGVmaW5lIENQVV9UT19MRTY0KGEpIF9fY3B1X3RvX2xlNjQoYSkKCiNkZWZpbmUgTEUxNl9UT19DUFUoYSkgX19jcHVfdG9fbGUxNihhKQojZGVmaW5lIExFMzJfVE9fQ1BVKGEpIF9fY3B1X3RvX2xlMzIoYSkKI2RlZmluZSBMRTY0X1RPX0NQVShhKSBfX2NwdV90b19sZTY0KGEpCgojZGVmaW5lIE5URlNfR0VUVTgocCkgICAgICAoKihudGZzX3U4KikocCkpCiNkZWZpbmUgTlRGU19HRVRVMTYocCkgICAgICgobnRmc191MTYpTEUxNl9UT19DUFUoKihudGZzX3UxNiopKHApKSkKI2RlZmluZSBOVEZTX0dFVFUyNChwKSAgICAgKChudGZzX3UzMilOVEZTX0dFVFUxNihwKSB8IFwKCQkJICAgKChudGZzX3UzMilOVEZTX0dFVFU4KCgoY2hhciopKHApKSArIDIpIDw8IDE2KSkKI2RlZmluZSBOVEZTX0dFVFUzMihwKSAgICAgKChudGZzX3UzMilMRTMyX1RPX0NQVSgqKG50ZnNfdTMyKikocCkpKQojZGVmaW5lIE5URlNfR0VUVTQwKHApICAgICAoKG50ZnNfdTY0KU5URlNfR0VUVTMyKHApIHwgXAoJCQkgICAoKChudGZzX3U2NClOVEZTX0dFVFU4KCgoY2hhciopKHApKSArIDQpKSA8PCAzMikpCiNkZWZpbmUgTlRGU19HRVRVNDgocCkgICAgICgobnRmc191NjQpTlRGU19HRVRVMzIocCkgfCBcCgkJCSAgICgoKG50ZnNfdTY0KU5URlNfR0VUVTE2KCgoY2hhciopKHApKSArIDQpKSA8PCAzMikpCiNkZWZpbmUgTlRGU19HRVRVNTYocCkgICAgICgobnRmc191NjQpTlRGU19HRVRVMzIocCkgfCBcCgkJCSAgICgoKG50ZnNfdTY0KU5URlNfR0VUVTI0KCgoY2hhciopKHApKSArIDQpKSA8PCAzMikpCiNkZWZpbmUgTlRGU19HRVRVNjQocCkgICAgICgobnRmc191NjQpTEU2NF9UT19DUFUoKihudGZzX3U2NCopKHApKSkKIAogLyogTWFjcm9zIHdyaXRpbmcgdW5zaWduZWQgaW50ZWdlcnMgKi8KI2RlZmluZSBOVEZTX1BVVFU4KHAsdikgICAgICAoKCoobnRmc191OCopKHApKSA9ICh2KSkKI2RlZmluZSBOVEZTX1BVVFUxNihwLHYpICAgICAoKCoobnRmc191MTYqKShwKSkgPSBDUFVfVE9fTEUxNih2KSkKI2RlZmluZSBOVEZTX1BVVFUyNChwLHYpICAgICBOVEZTX1BVVFUxNihwLCAodikgJiAweEZGRkYpO1wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVEZTX1BVVFU4KCgoY2hhciopKHApKSArIDIsICh2KSA+PiAxNikKI2RlZmluZSBOVEZTX1BVVFUzMihwLHYpICAgICAoKCoobnRmc191MzIqKShwKSkgPSBDUFVfVE9fTEUzMih2KSkKI2RlZmluZSBOVEZTX1BVVFU2NChwLHYpICAgICAoKCoobnRmc191NjQqKShwKSkgPSBDUFVfVE9fTEU2NCh2KSkKIAogLyogTWFjcm9zIHJlYWRpbmcgc2lnbmVkIGludGVnZXJzICovCiNkZWZpbmUgTlRGU19HRVRTOChwKSAgICAgICAgKCgqKG50ZnNfczgqKShwKSkpCiNkZWZpbmUgTlRGU19HRVRTMTYocCkgICAgICAgKChudGZzX3MxNilMRTE2X1RPX0NQVSgqKHNob3J0KikocCkpKQojZGVmaW5lIE5URlNfR0VUUzI0KHApICAgICAgIChOVEZTX0dFVFUyNChwKSA8IDB4ODAwMDAwID8gXAoJCQkJCShpbnQpTlRGU19HRVRVMjQocCkgOiBcCgkJCQkJKGludCkoTlRGU19HRVRVMjQocCkgLSAweDEwMDAwMDApKQojZGVmaW5lIE5URlNfR0VUUzMyKHApICAgICAgICgobnRmc19zMzIpTEUzMl9UT19DUFUoKihpbnQqKShwKSkpCiNkZWZpbmUgTlRGU19HRVRTNDAocCkgICAgICAgKCgobnRmc19zNjQpTlRGU19HRVRVMzIocCkpIHwgXAoJCQkgICAgICgoKG50ZnNfczY0KU5URlNfR0VUUzgoKChjaGFyKikocCkpICsgNCkpIDw8IDMyKSkKI2RlZmluZSBOVEZTX0dFVFM0OChwKSAgICAgICAoKChudGZzX3M2NClOVEZTX0dFVFUzMihwKSkgfCBcCgkJCSAgICAgKCgobnRmc19zNjQpTlRGU19HRVRTMTYoKChjaGFyKikocCkpICsgNCkpIDw8IDMyKSkKI2RlZmluZSBOVEZTX0dFVFM1NihwKSAgICAgICAoKChudGZzX3M2NClOVEZTX0dFVFUzMihwKSkgfCBcCgkJCSAgICAgKCgobnRmc19zNjQpTlRGU19HRVRTMjQoKChjaGFyKikocCkpICsgNCkpIDw8IDMyKSkKI2RlZmluZSBOVEZTX0dFVFM2NChwKQkgICAgICgobnRmc19zNjQpTlRGU19HRVRVNjQocCkpCiAKI2RlZmluZSBOVEZTX1BVVFM4KHAsdikgICAgICBOVEZTX1BVVFU4KHAsdikKI2RlZmluZSBOVEZTX1BVVFMxNihwLHYpICAgICBOVEZTX1BVVFUxNihwLHYpCiNkZWZpbmUgTlRGU19QVVRTMjQocCx2KSAgICAgTlRGU19QVVRVMjQocCx2KQojZGVmaW5lIE5URlNfUFVUUzMyKHAsdikgICAgIE5URlNfUFVUVTMyKHAsdikKI2RlZmluZSBOVEZTX1BVVFM2NChwLHYpICAgICBOVEZTX1BVVFU2NChwLHYpCgo=