At first glance, a couple of thoughts. You are using both the original/older cursors as well as the newer Data Access cursors. Although doing so is technical feasible, and possibly even supported, it creates readability and maintainability issues because the syntax for the two types of cursors are different. I recommend just using one type of cursor, specifically the newer Data Access cursors.
Second, you appear to be re-creating the insert cursor every time you want to insert a record, even a duplicate of a previous record. Without running your code, I may be mistaken. If I am not, you might want to refactor the code so the insert cursor isn't being recreated if it doesn't need to be. Creating cursors is an expensive operation, so reusing/resetting a cursor is desirable if possible.