Yes, it seems that 'formpacket' is somewhat of a wrapper around the vmt function.
EDIT: Let's make a class to summarize this so far.
Code:
CData::FormPacket(uint value)
{
if(unk3 < unk2)
{
//not sure yet
return;
}
unknownImportant(unk3, 4, &unk1, &unk2, &unk3, 0, 0);
//same as above inside the if block
}
Code:
class CData
{
CPacket *packet;
uint unk1;
uint unk2;
uint unk3;
public void FormPacket(uint opcode);
virtual void func00(); //[0x980C2C]
virtual void func01(); //[0x980C2C + 0x4]
virtual void func02(); //[0x980C2C + 0x8]
virtual void unknownImportant(uint, uint, uint, uint, uint, uint, uint); //[0x980C2C + 0xC]
virtual void func03();
virtual void func04();
virtual void func05();
virtual void func06();
virtual void func07();
virtual void func08();
virtual void func09(); //[0x9802C + 0x24]
};