Get better insight in the IL content by just writing the method your self and looking at it with ildasm.exe. Use View + Show bytes in ildasm to see the byte values, note that they are in hex:
.method public hidebysig newslot virtual
instance bool Equals(object obj) cil managed
// SIG: 20 01 02 1C
{
// Method begins at RVA 0x2052
// Code size 8 (0x8)
.maxstack 8
IL_0000: /* 02 | */ ldarg.0
IL_0001: /* 03 | */ ldarg.1
IL_0002: /* 28 | (0A)000010 */ call bool [mscorlib]System.Runtime.CompilerServices.RuntimeHelpers::Equals(object,
object)
IL_0007: /* 2A | */ ret
} // end of method Program::Equals
You'll now see that the byte at IL_0003 is part of a method token, the least significant byte of it. And note how the value I got is drastically different from the one you got. Which is because I just wrote a very small program with very little code to test it, it has a very small manifest. The disassembler is being helpful, instead of only displaying the token value it actually did the lookup in the metadata table and replaced the token with the method name.
A token is an index in the assembly manifest's metadata tables. Such an index will change when the code in the assembly changes and requires an addition to the tables. You can read more about it in the CLI spec, ECMA 335.