done
echo "\
-s/^\([ ]\?loc[r_].*[0-9A-F]:\)[^:]\(.*\;\)/\1:\t\2/g;\
+s/^\([ +-]\?loc[r_].*[0-9A-F]:\)[^:]\(.*\;\)/\1:\t\2/g;\
s/dd[[:blank:]]rva/dd/;\
s/\<fldcw\>\t\[esp+4+var_4\]/fldcw\tword ptr \[esp\]/;\
s/\<large \(.*fs:\)/\1/;\
# manual fixup:
# - 'end start' -> 'end'
-# - 'lea ecx, [ecx+0]' -> align
+# - 'mov edi, edi', 'lea ...' -> align
# - add 'near ptr' to some jumps
-# - 'cmp [ebp+edx+0], cl' -> 'cmp [edx+ebp+0], cl'
+# - 'cmp [ebp+edx+0], cl' -> 'cmp [ebp+edx*1+0], cl'
# - 0FFxxh constants - masm treats a byte, ONLY sometimes prefix with 'word ptr'
# - jmp near:
# - jmp _strchr
+# - search for 'dword_xx+N', make byte/word, also word->byte
+# - get rid of type propagation, regenerate as 'simple' var_
+# - convert ds:0[eax*4] -> [eax*4+0] (h hotkey)
+# - rm function chunks - they're funcs reached by tailcalls (usually)