+ tmp64 = ((u64)edx << 32) | eax;
+ tmp64 = (s64)tmp64 <<= LOBYTE(ecx);
+ edx = tmp64 >> 32; eax = tmp64; // allshl
+ tmp64 = ((u64)edx << 32) | eax;
+ tmp64 = (s64)tmp64 >>= LOBYTE(ecx);
+ edx = tmp64 >> 32; eax = tmp64; // allshr
+ eax = __builtin_bswap32(eax);