I don't have much experience with assembly and I am trying to change a step value that changes a final value, these are the opcodes that I am working with and this is how they are set:
movss xmm0,[eax+30] addss xmm0,[esi+00000094] movss [eax+30],xmm0 movss xmm0,[esi+00000098] addss xmm0,[eax+34] movss [eax+34],xmm0 movss xmm0,[esi+0000009C] addss xmm0,[eax+38] movss [eax+38],xmm0
Now so far I think the
addss lines are the ones responsible for increasing or decreasing the
xmm0 float value in:
movss [eax+30],xmm0 movss [eax+34],xmm0 movss [eax+38],xmm0
What I am trying to achieve is to multiply the step value that is being added to
xmm0 in the
addss xmm0,[esi+00000094] addss xmm0,[eax+34] addss xmm0,[eax+38]
Which I assume to be the
[esi+00000094] [eax+34] [eax+38].
I tried multiplying them by (float)2.00 (and other multiplying factors such as 1.50 and 0.20) like this
addss xmm0,[esi+00000094]*(float)2.00 addss xmm0,[eax+34]*(float)2.00 addss xmm0,[eax+38]*(float)2.00
But of course my ignorance proved that this isn't the way to do it and since I have practically 0 knowledge in this field I decided to ask for help.
A better explanation of what I think is going on here and what I am trying to do goes like this:
addss xmm0,[esi+00000094] == addss 31.00,[0.43] <- 31 being the current/old value and 0.43 being the increment value that will add to 31 movss [eax+30],xmm0 == movss [XXXXXXXXX],31.43 <- XXX being the address that holds the new value and xmm0 the one that will copy the new value to the target address/register ---what I am trying to do if I am correct--- addss 31.00,[0.43*n] <- n being a float point set by me (2.00 or 1.50 or 0.03) movss [XXXXXXXXX],31.86 <- final value is copied to the target address with the intended increment/decrement (in case of 0.### float values) effectively set by me
Can anyone tell me the correct way to to this? I don't even know if the
addss lines are the correct ones where I can modify the step value (the one that increases or decreases the last
xmm0 value in
movss [eax+30],xmm0 | movss [eax+34],xmm0 | movss [eax+38],xmm0).
I am using [CE's] auto assembler tool to achieve this, modifying memory values.