Anonymous
public text v1 · immutableextern long rough_sqrt(long n);
#pragma aux rough_sqrt = \
"bsr ecx,eax" \
"sub ecx,15" \
"jle frac" \
"shr ecx,1" \
"shr eax,cl" \
"jmp done" \
"frac:" \
"bsr cx,ax" \
"neg cx" \
"add cx,16" \
"shr cx,1" \
"shl eax,cl" \
"done:" \
parm [eax] \
value [eax] \
modify [eax ecx]