/* vim: set filetype=c ts=8 noexpandtab: */ #define NULL 0 #define _CRT_SECURE_NO_DEPRECATE #define STATIC_ASSERT(E) typedef char __static_assert_[(E)?1:-1] #define EXPECT_SIZE(S,SIZE) STATIC_ASSERT(sizeof(S)==(SIZE)) #pragma pack(push, 1) struct PlayerID { int binaryAddress; short port; short __pad; }; EXPECT_SIZE(struct PlayerID, 0x8); struct CList { void *values; int list_size; int allocation_size; }; EXPECT_SIZE(struct CList, 0xC); struct COrdenedList { struct CList _parent; }; EXPECT_SIZE(struct COrdenedList, 0xC); struct CRangeList { struct COrdenedList _parent; }; EXPECT_SIZE(struct CRangeList, 0xC); struct CRaknetTimeNS { int lo32; int hi32; }; EXPECT_SIZE(struct CRaknetTimeNS, 0x8); struct CQueue { void *array; void *head; void *tail; int allocationSize; }; EXPECT_SIZE(struct CQueue, 0x10); struct CReliabilityLayer { /*000*/ char _pad0[0xC]; /*00C*/ struct CQueue outputQueue; /*01C*/ void *acknowlegements; // DataStructures::RangeList /*020*/ char _pad20[0x20]; /*040*/ void *resendList; /*044*/ char _pad44[0x24]; /*068*/ void* sendPacketSet; // DataStructures::Queue // (sizeof one element = 16 0x10) // TODO this would be too big? /*06C*/ char _pad6C[0x4C]; /*0B8*/ struct CRaknetTimeNS lastAckTime; /*0C0*/ char _padC0[0x114]; /*1D4*/ short waitingForOrderedPacketWriteIndex[32]; /*214*/ short waitingForSequencedPacketWriteIndex[32]; /*254*/ short waitingForOrderedPacketReadIndex[32]; /*294*/ short waitingForSequencedPacketReadIndex[32]; /*2D4*/ char _pad2D4[0xC]; /*2E0*/ int timeoutTimeMS; /*2E4*/ char _pad2E4[0x68]; /*35C*/ int statistics_acknowlegementsSent; /*360*/ char _pad360[0x2C]; /*38C*/ int statistics_numberOfUnsplitMessages; /*390*/ int statistics_numberOfSplitMessages; /*394*/ char _pad394[0x2C]; /*3B0*/ int statistics_sequencedMessagesOutOfOrder; /*3B4*/ int statistics_sequencedMessagesInOrder; /*3B8*/ int statistics_orderedMessagesOutOfOrder; /*3BC*/ int statistics_orderedMessagesInOrder; /*3C0*/ int statistics_packetsReceived; /*3C4*/ char _pad3C4[0x4]; /*3C8*/ unsigned int statistics_bitsReceivedLo32; /*3CC*/ unsigned int statistics_bitsReceivedHi32; /*3D0*/ char _pad3D0[0x10]; /*3E0*/ int statistics_messagesReceived; /*3E4*/ char _pad3E4[0x4]; /*3E8*/ int statistics_duplicateMessagesReceived; /*3EC*/ char _pad3EC[0x28]; /*414*/ int someCounter; /*418*/ char _pad418[0xC]; /*424*/ struct CQueue hasReceivedPacketQueue; /*434*/ short receivedPacketsBaseIndex; /*436*/ char resetReceivedPackets; /*437*/ char _pad437[0x11]; /*448*/ struct CRaknetTimeNS histogramStartTime; /*450*/ int histogramReceiveMarker; /*454*/ char _pad454[0x8]; /*45C*/ int histogramAckCount; /*460*/ char _pad460[0x24]; /*484*/ void *encryptor; /*488*/ char _pad488[0x274]; /*6FC*/ int receivePacketCount; /*700*/ char _pad700[0x8]; /*708*/ char freeThreadedMemoryOnNextUpdate; /*709*/ char _pad709[0x1F]; /*728*/ void *internalPacketPool; }; EXPECT_SIZE(struct CReliabilityLayer, 0x72C); #pragma pack(pop) void __stdcall __RangeList__ctor(struct CRangeList *this); void __stdcall __RangeList__dtor(struct CRangeList *this);