If you try to cast '3502033000' as an INT it will always fail - it's 1GB too big o fit.
Casting it as a BIGINT will work though:
SELECT '3502033000', CAST('3502033000' as BIGINT)
works fine for me.
So there are two things to try:
1) Find everywhere you are CASTing or CONVERTing things to INT, or using a NVARCHAR field or variable as an INT - and there are a few of them in the SP - and work out which one is causing the problem, and make that a BIGINT.
2) Stop using string data fields to store numeric values so you don't need to convert them at all.
Me? I'd go with the latter - it has the additional advantages that the data is always correct (no alpha data in a numeric field) and the SQL becomes a whole load more readable.