The main problem with __assume is that it should never be used. Literally, if you have to use it, then the code it refers to should actually be commented out.
ps. This is a bit of a simplification - I should have stated, if the assumption is wrong, it can lead to dangerous code which breaks.