Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int __userpurge SendPacket<eax>(int lpvCClientSocket<ecx>, int dwEbp<ebp>, int a3)
- {
- LPVOID lpvUnknownAddress; // eax@1
- DWORD dwReturnAddress1; // eax@13
- unsigned int v5; // eax@14
- unsigned int dwUpperLimit; // ebx@14
- int v7; // eax@17
- int v8; // edi@17
- unsigned int dwReturnAddress2; // eax@20
- unsigned int dwReturnAddress3; // eax@23
- unsigned int dwReturnAddress4; // eax@26
- unsigned int dwReturnAddress5; // eax@29
- int result; // eax@32
- char v14; // zf@32
- *(_DWORD *)(dwEbp - 0x18) = lpvCClientSocket;
- lpvUnknownAddress = *(LPVOID *)((char *)&lpv0x400000 + dword_40003C + 28);// [[40003c]+400000+1c] => 00712600
- *(_DWORD *)(dwEbp - 20) = (_DWORD)&off_401000 + (_DWORD)lpvUnknownAddress;// 00712600 + 401000 => B13600
- *(_DWORD *)(dwEbp - 16) = 0;
- while ( !__SETO__(&off_401000, -(signed int)lpvUnknownAddress)
- && __SETO__(&off_401000, -(signed int)lpvUnknownAddress) )
- ;
- while ( !__SETO__(&off_401000, -(signed int)lpvUnknownAddress)
- && __SETO__(&off_401000, -(signed int)lpvUnknownAddress) )
- ;
- dwReturnAddress1 = *(_DWORD *)(dwEbp + 4);
- *(_DWORD *)(dwEbp - 16) = dwReturnAddress1;
- if ( (signed int)dwReturnAddress1 < (signed int)0x401000u
- || (signed int)dwReturnAddress1 > (signed int)((char *)loc_7FFFFC + 4198404) )
- JUMPOUT(v0);
- g_dwLastReturnAddress = *(_DWORD *)(dwEbp - 16);// store last return address
- *(_DWORD *)(dwEbp - 60) = *(_DWORD *)(dwEbp + 4);
- v5 = *(_DWORD *)(dwEbp - 60); // return address
- dwUpperLimit = *(_DWORD *)(dwEbp - 20); // upper address limit
- if ( v5 <= (unsigned int)&off_401000 || v5 >= dwUpperLimit )
- v0();
- v8 = *(_DWORD *)(dwEbp - 24);
- ZFatalSection__Lock((void *)(dwEbp - 20), v8 + 0x7C);// ZFatalSection__Lock(0xB13600, lpvCClientSocket + 0x7C)
- v7 = *(_DWORD *)(v8 + 8);
- *(_DWORD *)(dwEbp - 4) = 0;
- if ( v7 )
- {
- if ( v7 != -1 )
- {
- if ( !*(_DWORD *)(v8 + 20) )
- {
- // begin check
- *(_DWORD *)(dwEbp - 56) = *(_DWORD *)(dwEbp + 4);
- dwReturnAddress2 = *(_DWORD *)(dwEbp - 56);
- if ( dwReturnAddress2 <= (unsigned int)&off_401000 || dwReturnAddress2 >= dwUpperLimit )
- v0();
- // end check
- //
- //
- COutPacket__MakeBufferList(*(_DWORD *)(dwEbp + 8), v8 + 0x50, 0x5Fu, v8 + 0x84, 1, *(_DWORD *)(v8 + 0x84));// COutPacket__MakeBufferList(lpvPacket, lpvCClientSocket + 0x50, 0x5F, lpvCClientSocket + 0x84, 1, *(DWORD*)(lpvCClientSocket + 0x84))
- //
- //
- // begin check
- *(_DWORD *)(dwEbp - 52) = *(_DWORD *)(dwEbp + 4);
- dwReturnAddress3 = *(_DWORD *)(dwEbp - 52);
- if ( dwReturnAddress3 <= (unsigned int)&off_401000 || dwReturnAddress3 >= dwUpperLimit )
- v0();
- // end check
- //
- //
- *(_DWORD *)(v8 + 0x84) = CIGCipher__innoHash(v8 + 0x84, 4, 0);// CIGCipher__innoHash(lpvCClientSocket + 0x84, 4, 0)
- //
- //
- // begin check
- *(_DWORD *)(dwEbp - 48) = *(_DWORD *)(dwEbp + 4);
- dwReturnAddress4 = *(_DWORD *)(dwEbp - 48);
- if ( dwReturnAddress4 <= (unsigned int)&off_401000 || dwReturnAddress4 >= dwUpperLimit )
- v0();
- // end check
- //
- //
- CClientSocket__Flush(v8); // CClientSocket__Flush(lpvCClientSocket)
- //
- //
- // begin check
- *(_DWORD *)(dwEbp - 44) = *(_DWORD *)(dwEbp + 4);
- dwReturnAddress5 = *(_DWORD *)(dwEbp - 44);
- if ( dwReturnAddress5 <= (unsigned int)&off_401000 || dwReturnAddress5 >= dwUpperLimit )
- v0();
- // end check
- }
- }
- }
- result = *(_DWORD *)(dwEbp - 20);
- v14 = *(_DWORD *)(result + 4)-- == 1;
- if ( v14 )
- *(_DWORD *)result = 0;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement