#include <iostream>
#include <cstring>
using namespace std;
const volatile int v1 = 0;
volatile unsigned v2 = 0;
void Fxn1()
{
if (v1) { v2 = 0x12345601; }
cout << "Fxn1" << endl;
}
void Fxn2()
{
if (v1) { v2 = 0x12345602; }
cout << "Fxn2" << endl;
}
int FindFxnConst(void(*f)())
{
const unsigned char* p = (const unsigned char*)f;
while (memcmp(p, "\x56\x34\x12", 3))
p++;
return p[-1];
}
int main()
{
Fxn1();
cout << FindFxnConst(Fxn1) << endl;
Fxn2();
cout << FindFxnConst(Fxn2) << endl;
return 0;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDxjc3RyaW5nPgoKICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CgogICAgY29uc3Qgdm9sYXRpbGUgaW50IHYxID0gMDsKICAgIHZvbGF0aWxlIHVuc2lnbmVkIHYyID0gMDsKICAgIAogICAgdm9pZCBGeG4xKCkKICAgIHsKICAgICAgaWYgKHYxKSB7IHYyID0gMHgxMjM0NTYwMTsgfQogICAgICBjb3V0IDw8ICJGeG4xIiA8PCBlbmRsOwogICAgfQogICAgCiAgICB2b2lkIEZ4bjIoKQogICAgewogICAgICBpZiAodjEpIHsgdjIgPSAweDEyMzQ1NjAyOyB9CiAgICAgIGNvdXQgPDwgIkZ4bjIiIDw8IGVuZGw7CiAgICB9CiAgICAKICAgIGludCBGaW5kRnhuQ29uc3Qodm9pZCgqZikoKSkKICAgIHsKICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilmOwogICAgICB3aGlsZSAobWVtY21wKHAsICJceDU2XHgzNFx4MTIiLCAzKSkKICAgICAgICBwKys7CiAgICAgIHJldHVybiBwWy0xXTsKICAgIH0KICAgIAogICAgaW50IG1haW4oKQogICAgewogICAgICBGeG4xKCk7CiAgICAgIGNvdXQgPDwgRmluZEZ4bkNvbnN0KEZ4bjEpIDw8IGVuZGw7CiAgICAgIEZ4bjIoKTsKICAgICAgY291dCA8PCBGaW5kRnhuQ29uc3QoRnhuMikgPDwgZW5kbDsKICAgICAgcmV0dXJuIDA7CiAgICB9Cg==