First thing you must be rooted
What you’ll need:
A Windows based machine
-Unzip xUltimate v2.2, and launch “Main.exe”
-If everything goes well xUltimate should recognize the phone and make a connection. You now should see a list of options.
-Run option 1. After option 1 is done, run option 2.
-Now these well take a while. Run option 3.
-IMPORTANT: After you have run option 3, you MUST navigate to the xUltimate folder and find “origi_frame” folder, and delete “guava.odex” (if you even have it). It’s a bad file, and interferes with deodexing process.
-Now run option 4, and wait.
-Exit xUltimate, and put the phone in USB mass storage.
-Go back into the xUltimate folder and copy “done_frame”, and “done_app”, and move them to the root of the sdcard.
-Open a command prompt, and do the following:
adb shell su stop mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system cp /sdcard/done_app/* /system/app/ cp /sdcard/done_frame/* /system/framework/ rm /system/app/*.odex rm /system/framework/*.odex mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system reboot
and voila your phone is deodexed
Full credit to webst3r on xda & jazux for editing it a little bit so you can understand it better.