Hello, this is an optional header.

void idAF::Restore( idRestoreGame *savefile ) {
	savefile->ReadObject( reinterpret_cast( self ) );
	savefile->ReadString( name );
	savefile->ReadBool( hasBindConstraints );
	savefile->ReadVec3( baseOrigin );
	savefile->ReadMat3( baseAxis );
	savefile->ReadInt( poseTime );
	savefile->ReadInt( restStartTime );
	savefile->ReadBool( isLoaded );
	savefile->ReadBool( isActive );

	animator = NULL;
	modifiedAnim = 0;

	if ( self ) {
		SetAnimator( self->GetAnimator() );
		Load( self, name );
		if ( hasBindConstraints ) {
			AddBindConstraints();
		}
	}

	savefile->ReadStaticObject( physicsObj );

	if ( self ) {
		if ( isActive ) {
			// clear all animations
			animator->ClearAllAnims( gameLocal.time, 0 );
			animator->ClearAllJoints();

			// switch to articulated figure physics
			self->RestorePhysics( &physicsObj );
			physicsObj.EnableClip();
		}
		UpdateAnimation();
	}
}

This is an optional footer, goodbye!

void idAF::Restore( idRestoreGame *savefile ) {
	savefile->ReadObject( reinterpret_cast( self ) );
	savefile->ReadString( name );
	savefile->ReadBool( hasBindConstraints );
}