+TAG * swf_InsertTagBefore(SWF* swf, TAG * before,U16 id) // updates frames, if nescessary
+{ TAG * t;
+
+ t = (TAG *)malloc(sizeof(TAG));
+ if (t)
+ { memset(t,0x00,sizeof(TAG));
+ t->id = id;
+
+ if (before)
+ { t->frame = before->frame;
+ t->next = before;
+ t->prev = before->prev;
+ before->prev = t;
+ if (t->prev) t->prev->next = t;
+
+ if (id==ST_SHOWFRAME) swf_UpdateFrame(t->next,+1);
+ }
+ }
+ if(swf && swf->firstTag == before) {
+ swf->firstTag = t;
+ }
+ return t;
+}
+