Как это происходит у разработчика (в нашем случае у уважаемого ДАРК Байта).
"Tutorial-i386.exe"+261A6: 89 75 CC - mov [ebp-34],esi // в esi урон - он в 4 байтах. записывается в стек
"Tutorial-i386.exe"+261A9: DB 45 CC - fild dword ptr [ebp-34] // Он передается, в регистр st(0)одновременно переводя его во float
// ---------- INJECTING HERE ----------
"Tutorial-i386.exe"+261AC: D8 6B 04 - fsubr dword ptr [ebx+04] // Отнимается текущее значение HP получаем в st(0) отрицательно значение
// нового значения HP
"Tutorial-i386.exe"+261AF: D9 5D D0 - fstp dword ptr [ebp-30] // Полученного значение записывается в [ebp-30], а дальше по коду, после
// некоторых манипуляций оно записывается в eax и на инструкции,
// которую юзал я, записывается в наш адрес HP