sie machen etwas falsch. eax enthält bei funktionsaufrufen den rückgabewert für 32-bit werte (bei __stdcall und __cdecl afaik). das heißt, sie können sich das letzte return sparen... und natürlich müssen sie vorher den wert sichern, z.b. mit
...
mov r1, eax
}
this->value = r1;
dann wäre aber wieder das problem, dass nicht mehr gesichert ist, dass eax noch r1 enthält.