USDT is a non-standard ERC20. Its transfer function has no return value. This means that when Solidity calls the function it will revert when it attempts to decode the boolean return value that is expected for ERC20s. We always recommend using our SafeERC20 library to avoid this issue.
Unfortunately the withdraw mechanism in the contract will not work for USDT. You should consider Tether's official token recovery process. One of the possible conditions for recovery is precisely "Contracts that did not properly implement the SafeERC20 library for withdrawals".