/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: June 7, 1992 11:38:02 am PDT */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: VoicePlaybackImpl, module: VoicePlaybackImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1090799768,1827756208] VoicePlaybackImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2;} W3;
typedef W3 *W3Pt;
#define SOURCE(p, l) /* source p, l */
#define IOP2(op, x, y)  ( (word) ((x) op (y)) )
#define MAX(cast, x, y)  ( ( cast x) > ( cast y) ? (x) : (y) )
#define MIN(cast, x, y)  ( ( cast x) < ( cast y) ? (x) : (y) )
static void NoName←Q2244();
static void VoicePlaybackImpl←P0();
static void PlayBackProcess←P60();
static void Wait←P120();
static void PlayBackNext←P180();
static void RemoveCue←P240();
static void QueuePlayBackCue←P300();
static void AppendRequest←P360();
static void AbortCues←P420();
static void PlayBackMenuProc←P480();
static void PlaySlabSection←P540();
static void PlayWholeSlab←P600();
static word PlayRopeWithoutCue←P660();
static word PlayBackInProgress←P720();
static void PauseProc←P780();
static void CancelPlayBack←P840();
static void GetCurrentPlayBackPos←P900();
static void SetPlayBackState←P960();
static word RemoveViewerReferences←P1020();
static word RedrawViewer←P1080();
static word NoName←Q2304();
static struct {unsigned f; char r[16];} string1 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[4];} string2 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\013\170\373\103\300\170\332\235\162\100\164\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\101\004\110\230\300\154\361\130\260\100\230\000\000"};
static struct {unsigned f; char r[4];} string5 = {131074, "\0040\000"};
static struct {unsigned f; char r[48];} string6 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\101\004\110\230\300\154\361\130\260\100\230\005\004\162\145\163\164\214\216\257\300\101\004\110\230\300\154\361\130\260\100\230\261\000\000\000"};
static struct {unsigned f; char r[4];} string7 = {131074, "\004\003\000"};
static struct {unsigned f; char r[4];} string8 = {131076, "\216\251\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\312\131\110\115\300\370\314\351\125\100\200\000\000"};
static struct {unsigned f; char r[24];} string10 = {1507351, "\006\012\000\001\010\001\024\001\034\001\040\001\044\001\064\001\070\001\074\001\100\100\001"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\312\131\110\115\300\370\314\351\125\101\064\000\000"};
static struct {unsigned f; char r[44];} string12 = {2687020, "Stop recording before trying to play back\000\000"};
static struct {unsigned f; char r[16];} string13 = {983056, "voiceViewerInfo"};
static struct {unsigned f; char r[16];} string14 = {786448, "ButtonParams\000\000\000"};
static struct {unsigned f; char r[4];} string15 = {65540, "w\000\000"};
static struct {unsigned f; char r[4];} string16 = {4, "\000\000\000"};
static struct {unsigned f; char r[12];} string17 = {655372, "TiogaVoice\000"};
static struct {unsigned f; char r[8];} string18 = {458760, "success"};
static struct {unsigned f; char r[36];} string19 = {2228260, "Not a voice window or no selection\000"};
static struct {unsigned f; char r[16];} string20 = {851984, "\257\300\101\004\110\230\300\154\361\130\260\100\164\000\000"};
static struct {unsigned f; char r[12];} string21 = {655370, "\006\002\040\003\001\100\234\004\100\377\000"};
static struct {unsigned f; char r[16];} string22 = {851984, "\257\300\212\174\364\337\300\361\376\000\156\100\150\000\000"};
static struct {unsigned f; char r[16];} string23 = {851984, "\257\300\074\270\063\045\300\023\342\016\224\100\150\000\000"};
static struct {unsigned f; char r[16];} string24 = {851984, "\257\300\240\236\274\315\300\111\163\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string25 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {unsigned f; char r[16];} string26 = {851984, "\257\300\136\253\306\024\300\100\114\357\174\100\150\000\000"};
static struct {unsigned f; char r[16];} string27 = {1416195943, "aVoicePrivate"};
static struct {unsigned f; char r[16];} string28 = {851984, "\257\300\312\131\110\115\300\370\314\351\125\100\150\000\000"};
static struct {unsigned f; char r[16];} string29 = {851984, "\257\300\354\332\367\333\300\361\203\205\173\100\150\000\000"};
static struct {unsigned f; char r[16];} string30 = {851984, "\257\300\244\340\135\243\300\261\211\021\257\100\150\000\000"};
static struct {
   word f0[47]; word f47; word f48; word f49; 
   word f50; word f51; word f52; word f53; 
   word f54; word f55; word f56; word f57; 
   word f58; word f59; word f60; word f61; 
   word f62; word f63; word f64; word f65; 
   word f66; word f67; word f68; word f69; 
   word f70; word f71; word f72; word f73; 
   word f74; word f75; word f76; word f77; 
   word f78; word f79; word f80; word f81; 
   word f82; word f83; word f84[10]; 
   } globalframe = {
   {0}, (word) RedrawViewer←P1080, 0, (word) RemoveViewerReferences←P1020, 
   0, (word) SetPlayBackState←P960, 0, (word) GetCurrentPlayBackPos←P900, 
   0, (word) CancelPlayBack←P840, 0, (word) PauseProc←P780, 
   0, (word) PlayBackInProgress←P720, 0, (word) PlayRopeWithoutCue←P660, 
   0, (word) PlayWholeSlab←P600, 0, (word) PlaySlabSection←P540, 
   0, (word) PlayBackMenuProc←P480, 0, (word) AbortCues←P420, 
   0, (word) AppendRequest←P360, 0, (word) QueuePlayBackCue←P300, 
   0, (word) RemoveCue←P240, 0, (word) PlayBackNext←P180, 
   0, (word) Wait←P120, 0, (word) PlayBackProcess←P60, 
   0, (word) VoicePlaybackImpl←P0, {0}
   };

static void NoName←Q2244()
   {
   register ptr gf←c0217 =  (ptr) &globalframe;
   word var←c25472;
   (* (( (ptr) gf←c0217)+30) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0217)+31) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string2);
   (* (( (ptr) gf←c0217)+32) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5);
   (* (( (ptr) gf←c0217)+33) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7);
   (* (( (ptr) gf←c0217)+34) ) = (word) XR←GetTypeIndex((word) &string8, 0, (word) &string2);
   (* (( (ptr) gf←c0217)+35) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
   (* (( (ptr) gf←c0217)+37) ) = (word) XR←GetTypeIndexS((word) (&string11));
   (*  (ptr) (( (bPt) gf←c0217)+156) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0217)+30) ), (word) &string12);
   (*  (ptr) (( (bPt) gf←c0217)+160) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0217)+34) ), (word) &string13);
   (*  (ptr) (( (bPt) gf←c0217)+164) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0217)+34) ), (word) &string14);
   (*  (ptr) (( (bPt) gf←c0217)+168) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0217)+30) ), (word) &string15);
   (*  (ptr) (( (bPt) gf←c0217)+172) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0217)+30) ), (word) &string16);
   (*  (ptr) (( (bPt) gf←c0217)+176) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0217)+34) ), (word) &string17);
   (*  (ptr) (( (bPt) gf←c0217)+180) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0217)+34) ), (word) &string18);
   (*  (ptr) (( (bPt) gf←c0217)+184) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0217)+30) ), (word) &string19);
   (void) XR←DeclareGlobalFrame((word) "VoicePlaybackImpl", &globalframe, (word) XR←GetTypeIndex((word) &string20, 0, (word) &string21)
      , (word) (( (bPt) gf←c0217)+332)/* var←c23200 */ );
   var←c25472 = (word) XR←ImportInterface((word) "BasicTime", (word) XR←GetTypeIndexS((word) (&string22)), 24);
   (* (( (ptr) gf←c0217)+85)/* var←c23232 */  ) = var←c25472;
   (void) XR←ImportProcS(var←c25472, 67372033);
   (void) XR←ImportProcS(var←c25472, 67109632);
   (void) XR←ImportProcS(var←c25472, 67372545);
   var←c25472 = (word) XR←ImportInterface((word) "MessageWindow", (word) XR←GetTypeIndexS((word) (&string23)), 7);
   (* (( (ptr) gf←c0217)+89)/* var←c23584 */  ) = var←c25472;
   (void) XR←ImportProcS(var←c25472, 512);
   (void) XR←ImportProcS(var←c25472, 524546);
   var←c25472 = (word) XR←ImportInterface((word) "Process", (word) XR←GetTypeIndexS((word) (&string24)), 22);
   (* (( (ptr) gf←c0217)+86)/* var←c23264 */  ) = var←c25472;
   (void) XR←ImportProcS(var←c25472, 526081);
   (void) XR←ImportProcS(var←c25472, 525570);
   (void) XR←ImportProcS(var←c25472, 67371521);
   (void) XR←ImportProcS(var←c25472, 264449);
   var←c25472 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string25)), 43);
   (* (( (ptr) gf←c0217)+92)/* var←c24000 */  ) = var←c25472;
   (void) XR←ImportProcS(var←c25472, 67373569);
   var←c25472 = (word) XR←ImportInterface((word) "TiogaOps", (word) XR←GetTypeIndexS((word) (&string26)), 128);
   (* (( (ptr) gf←c0217)+90)/* var←c23648 */  ) = var←c25472;
   (void) XR←ImportProcS(var←c25472, 2374919);
   (void) XR←ImportProcS(var←c25472, 279297);
   (void) XR←ImportProcS(var←c25472, 67390721);
   (void) XR←ImportProcS(var←c25472, 67393793);
   (void) XR←ImportProcS(var←c25472, 67393281);
   (void) XR←ImportProcS(var←c25472, 1064451);
   (void) XR←ImportProcS(var←c25472, 537148161);
   var←c25472 = (word) XR←ImportInterface((word) &string27, (word) XR←GetTypeIndexS((word) (&string28)), 84);
   (* (( (ptr) gf←c0217)+87)/* var←c23392 */  ) = var←c25472;
   (void) XR←ImportProcS(var←c25472, 799747);
   (void) XR←ImportProcS(var←c25472, 275713);
   (void) XR←ImportProcS(var←c25472, 67635202);
   (void) XR←ImportProcS(var←c25472, 20224);
   (void) XR←ImportProcS(var←c25472, 67117568);
   (void) XR←ImportProcS(var←c25472, 1050884);
   (void) XR←ImportProcS(var←c25472, 265473);
   var←c25472 = (word) XR←ImportInterface((word) "ViewerOps", (word) XR←GetTypeIndexS((word) (&string29)), 43);
   (* (( (ptr) gf←c0217)+88)/* var←c23552 */  ) = var←c25472;
   (void) XR←ImportProcS(var←c25472, 67639554);
   var←c25472 = (word) XR←ImportInterface((word) "VoiceRope", (word) XR←GetTypeIndexS((word) (&string30)), 20);
   (* (( (ptr) gf←c0217)+91)/* var←c23776 */  ) = var←c25472;
   (void) XR←ImportProcS(var←c25472, 67635714);
   (void) XR←ImportProcS(var←c25472, 67635458);
   (void) XR←ImportProcS(var←c25472, 67637762);
   (void) XR←ImportProcS(var←c25472, 136054535);
   (void) XR←ImportProcS(var←c25472, 67110144);
   var←c25472 = (word) XR←ExportInterface((word) &string27, (word) XR←GetTypeIndexS((word) (&string28)), 84);
   (* (( (ptr) gf←c0217)+93)/* var←c25504 */  ) = var←c25472;
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+268)/* var←c22944 */ , 134484993);
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+228)/* var←c22784 */ , 134485249);
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+260)/* var←c22912 */ , 1054212);
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+252)/* var←c22880 */ , 268033);
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+244)/* var←c22848 */ , 67377153);
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+236)/* var←c22816 */ , 67115264);
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+220)/* var←c22752 */ , 6656);
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+212)/* var←c22720 */ , 201333504);
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+204)/* var←c22688 */ , 531458);
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+196)/* var←c22656 */ , 67378433);
   (void) XR←ExportProcS(var←c25472, (word) (( (bPt) gf←c0217)+188)/* var←c22624 */ , 69213704);
   }

static void VoicePlaybackImpl←P0(formal←c040, formal←c039)
   word formal←c040;
   word formal←c039;
   {
   register ptr gf←c25536 =  (ptr) &globalframe;
   /* VoicePlaybackImpl: */ 
SOURCE(968, 19565)
SOURCE(2745, 75)
   {
      word pd31;
      pd31 = (* (( (ptr) (* (( (ptr) gf←c25536)+85)/* var←c23232 */  ))+10) );
      (* (( (ptr) gf←c25536)+18)/* aVeryLongTime←v3084 */  ) = (word) ( *( (fPt) ((*  (ptr) pd31 ))))(300000000, pd31);
      };
SOURCE(2822, 118)
   {
      word pd32;
      pd32 = (* (( (ptr) (* (( (ptr) gf←c25536)+85)/* var←c23232 */  ))+10) );
      (* (( (ptr) gf←c25536)+19)/* oneSoundCharTime←v3112 */  ) = (word) ( *( (fPt) ((*  (ptr) pd32 ))))(250000, pd32);
      };
SOURCE(2942, 79)
   {
      word pd33;
      pd33 = (* (( (ptr) (* (( (ptr) gf←c25536)+85)/* var←c23232 */  ))+10) );
      (* (( (ptr) gf←c25536)+20)/* waitForReportTime←v3140 */  ) = (word) ( *( (fPt) ((*  (ptr) pd33 ))))(100000000, pd33);
      };
   }

static void PlayBackProcess←P60()
   {
   register ptr gf←c25568 =  (ptr) &globalframe;
   word moreToDo←v5604;
   word nextWakeUp←v5632;
   /* PlayBackProcess: */ 
SOURCE(3036, 515)
SOURCE(3112, 32)
   {
      word pd34;
      pd34 = (* (( (ptr) (* (( (ptr) gf←c25568)+86)/* var←c23264 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd34 ))))(6, pd34);
      };
SOURCE(3147, 39)
   {
      W2 var←c23296;
      (void) PlayBackNext←P180((word) (&var←c23296));
      nextWakeUp←v5632 = var←c23296.f1;
      moreToDo←v5604 = var←c23296.f0;
      };
SOURCE(3189, 362)
   lab←L100002: ;
   if (moreToDo←v5604) {
      }
   else {
      goto lab←L100000;
      };
   {
      word now←v5676;
SOURCE(3207, 50)
      {
         word pd35;
         pd35 = (* (( (ptr) (* (( (ptr) gf←c25568)+85)/* var←c23232 */  ))+7) );
         now←v5676 = (word) ( *( (fPt) ((*  (ptr) pd35 ))))(pd35);
         };
SOURCE(3259, 248)
      if (((nextWakeUp←v5632 - now←v5676) < (* (( (ptr) gf←c25568)+18)/* aVeryLongTime←v3084 */  ))) {
SOURCE(3300, 209)
         {
            word timeout←v5720;
SOURCE(3345, 98)
            {
               word var←c23328;
               {
                  word pd36;
                  pd36 = (* (( (ptr) (* (( (ptr) gf←c25568)+85)/* var←c23232 */  ))+8) );
                  var←c23328 = ((word) ( *( (fPt) ((*  (ptr) pd36 ))))((nextWakeUp←v5632 - now←v5676), pd36) / 1000);
                  };
               {
                  word pd37;
                  pd37 = (* (( (ptr) (* (( (ptr) gf←c25568)+86)/* var←c23264 */  ))+6) );
                  timeout←v5720 = (word) ( *( (fPt) ((*  (ptr) pd37 ))))(var←c23328, pd37);
                  };
               };
SOURCE(3453, 45)
SOURCE(3455, 41)
            {
               word pd38;
               pd38 = (* (( (ptr) (* (( (ptr) gf←c25568)+86)/* var←c23264 */  ))+9) );
               (void) ( *( (fPt) ((*  (ptr) pd38 ))))((word) (( (bPt) gf←c25568)+84)/* playBackCue←v3196 */ , timeout←v5720, pd38);
               };
SOURCE(3501, 6)
            (void) Wait←P120();
            };
         };
SOURCE(3512, 39)
      {
         W2 var←c23360;
         (void) PlayBackNext←P180((word) (&var←c23360));
         nextWakeUp←v5632 = var←c23360.f1;
         moreToDo←v5604 = var←c23360.f0;
         };
      };
   goto lab←L100002;
   lab←L100000: ;
   }

static void Wait←P120()
   {
   register ptr gf←c25600 =  (ptr) &globalframe;
   /* Wait: */ 
SOURCE(3591, 51)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c25600)+16)/* LOCK←v2888 */ ));
SOURCE(3626, 16)
   (void) (XR←Wait((word) (( (bPt) gf←c25600)+16)/* LOCK←v2888 */ , (word) (( (bPt) gf←c25600)+84)/* playBackCue←v3196 */ ));
SOURCE(3591, 51)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c25600)+16)/* LOCK←v2888 */ ));
   return;
   }

static void PlayBackNext←P180(formal←c055)
   word formal←c055;
   {
   register ptr gf←c25632 =  (ptr) &globalframe;
   word moreToDo←v4360;
   word nextWakeUp←v4388;
   word currRequest←v5764;
   /* PlayBackNext: */ 
SOURCE(3648, 1851)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c25632)+16)/* LOCK←v2888 */ ));
SOURCE(3648, 1851)
   moreToDo←v4360 = 1;
SOURCE(3742, 56)
   currRequest←v5764 = (*  (ptr) (* (( (ptr) gf←c25632)+9) ) );
SOURCE(3801, 312)
   if ((0 != (* (( (ptr) gf←c25632)+11) ))) {
SOURCE(3831, 22)
      (void) RemoveCue←P240(currRequest←v5764);
SOURCE(3855, 25)
      (* (( (ptr) gf←c25632)+9) ) = 0;
SOURCE(3882, 29)
      (* (( (ptr) gf←c25632)+8) ) = 0;
SOURCE(3913, 27)
      (* (( (ptr) gf←c25632)+11) ) = 0;
SOURCE(3942, 62)
      {
         word pd39;
         pd39 = (* (( (ptr) (* (( (ptr) gf←c25632)+87)/* var←c23392 */  ))+17) );
         (void) ( *( (fPt) ((*  (ptr) pd39 ))))((* ((( (ptr) currRequest←v5764)+4)) ), pd39);
         };
SOURCE(4006, 22)
      (void) (XR←Broadcast((word) (( (bPt) gf←c25632)+48)/* abortCleared←v2972 */ ));
SOURCE(4030, 83)
      moreToDo←v4360 = 0;
      nextWakeUp←v4388 = 0;
      goto lab←L100004;
      };
SOURCE(4117, 660)
   lab←L100007: ;
   if (((* (( (ptr) currRequest←v5764)+1) ) == 2) ||  ( (0 == (* (( (ptr) currRequest←v5764)+2) )) ? ( (int)(* (( (ptr) currRequest←v5764)+9)
    ) >  (int)(* (( (ptr) currRequest←v5764)+8) )) : 0 ) ) {
      }
   else {
      goto lab←L100005;
      };
   {
      word prevRequest←v5808 = 0;
SOURCE(4267, 22)
      (void) RemoveCue←P240(currRequest←v5764);
SOURCE(4291, 62)
      {
         word pd40;
         pd40 = (* (( (ptr) (* (( (ptr) gf←c25632)+87)/* var←c23392 */  ))+17) );
         (void) ( *( (fPt) ((*  (ptr) pd40 ))))((* ((( (ptr) currRequest←v5764)+4)) ), pd40);
         };
SOURCE(4355, 46)
      (* (( (ptr) gf←c25632)+9) ) = (* (( (ptr) (* (( (ptr) gf←c25632)+9) ))+1) );
SOURCE(4403, 105)
      if (((* (( (ptr) gf←c25632)+9) ) == 0)) {
SOURCE(4439, 29)
         (* (( (ptr) gf←c25632)+8) ) = 0;
SOURCE(4470, 38)
         moreToDo←v4360 = 0;
         nextWakeUp←v4388 = 0;
         goto lab←L100004;
         };
SOURCE(4513, 25)
      prevRequest←v5808 = currRequest←v5764;
SOURCE(4540, 39)
      currRequest←v5764 = (*  (ptr) (* (( (ptr) gf←c25632)+9) ) );
SOURCE(4581, 196)
      if ((0 == (* (( (ptr) prevRequest←v5808)+2) ))) {
SOURCE(4626, 151)
         if (( (int)(* (( (ptr) currRequest←v5764)+6) ) >  (int)(* (( (ptr) currRequest←v5764)+8) ))) {
SOURCE(4670, 30)
            (* (( (ptr) currRequest←v5764)+1) ) = 2;
            }
         else {
SOURCE(4701, 50)
            {
               word pd41;
               pd41 = (* (( (ptr) (* (( (ptr) gf←c25632)+85)/* var←c23232 */  ))+7) );
               (* (( (ptr) currRequest←v5764)+10) ) = (word) ( *( (fPt) ((*  (ptr) pd41 ))))(pd41);
               };
SOURCE(4753, 24)
            (* (( (ptr) currRequest←v5764)+1) ) = 1;
            };
         };
      };
   goto lab←L100007;
   lab←L100005: ;
SOURCE(4790, 648)
   if ( ( ((* (( (ptr) currRequest←v5764)+1) ) == 1) ?  ( (0 != (* (( (ptr) currRequest←v5764)+3) )) ? 1 : (0 == (* (( (ptr) currRequest←v5764)+2)
    )) )  : 0 ) ) {
SOURCE(4891, 51)
      (* (( (ptr) currRequest←v5764)+9) ) = ((* (( (ptr) currRequest←v5764)+9) ) + 1);
SOURCE(4944, 299)
      if ((0 != (* (( (ptr) currRequest←v5764)+3) ))) {
SOURCE(4974, 136)
         if (( (int)((* (( (ptr) currRequest←v5764)+9) ) - 2) >=  (int)(* (( (ptr) currRequest←v5764)+6) ))) {
SOURCE(5028, 82)
            {
               word pd42;
               pd42 = (* (( (ptr) (* (( (ptr) gf←c25632)+87)/* var←c23392 */  ))+13) );
               (void) ( *( (fPt) ((*  (ptr) pd42 ))))((* (( (ptr) currRequest←v5764)+5) ), ((* (( (ptr) currRequest←v5764)+9) ) - 2), 1, (* (
                     ( (ptr) gf←c25632)+43) ), pd42);
               };
            };
SOURCE(5112, 131)
         if (( (int)(* (( (ptr) currRequest←v5764)+9) ) <=  (int)(* (( (ptr) currRequest←v5764)+8) ))) {
SOURCE(5162, 81)
            {
               word pd43;
               pd43 = (* (( (ptr) (* (( (ptr) gf←c25632)+87)/* var←c23392 */  ))+13) );
               (void) ( *( (fPt) ((*  (ptr) pd43 ))))((* (( (ptr) currRequest←v5764)+5) ), (* (( (ptr) currRequest←v5764)+9) ), 1, (* (( (ptr) gf←c25632)+42)
                   ), pd43);
               };
            };
         };
SOURCE(5248, 110)
      (* (( (ptr) gf←c25632)+10) ) = ((* (( (ptr) currRequest←v5764)+10) ) + ((((* (( (ptr) currRequest←v5764)+9) ) - (* (( (ptr) currRequest←v5764)+6)
       )) + 1) * (* (( (ptr) gf←c25632)+19)/* oneSoundCharTime←v3112 */  )));
      }
   else {
SOURCE(5367, 71)
      {
         word pd44;
         pd44 = (* (( (ptr) (* (( (ptr) gf←c25632)+85)/* var←c23232 */  ))+7) );
         (* (( (ptr) gf←c25632)+10) ) = ((word) ( *( (fPt) ((*  (ptr) pd44 ))))(pd44) + (* (( (ptr) gf←c25632)+20)/* waitForReportTime←v3140 */  ));
         };
      };
SOURCE(5440, 59)
   nextWakeUp←v4388 = (* (( (ptr) gf←c25632)+10) );
   moreToDo←v4360 = 1;
   /* removed tail goto */ 
   lab←L100004: ;
   (void) (XR←MonitorExit((word) (( (bPt) gf←c25632)+16)/* LOCK←v2888 */ ));
   (*  (ptr) formal←c055 ) = moreToDo←v4360;
   (* (( (ptr) formal←c055)+1) ) = nextWakeUp←v4388;
   return;
   }

static void RemoveCue←P240(request←v4448)
   word request←v4448;
   {
   register ptr gf←c25664 =  (ptr) &globalframe;
   /* RemoveCue: */ 
SOURCE(5504, 250)
SOURCE(5560, 34)
   if ((0 == (* (( (ptr) request←v4448)+3) ))) {
SOURCE(5588, 6)
      return;
      };
SOURCE(5596, 158)
   if ( ( ( (int)(* (( (ptr) request←v4448)+6) ) <=  (int)(* (( (ptr) request←v4448)+9) )) ? ( (int)((* (( (ptr) request←v4448)+9)
    ) - 1) <=  (int)(* (( (ptr) request←v4448)+8) )) : 0 ) ) {
SOURCE(5680, 74)
      {
         word pd45;
         pd45 = (* (( (ptr) (* (( (ptr) gf←c25664)+87)/* var←c23392 */  ))+13) );
         (void) ( *( (fPt) ((*  (ptr) pd45 ))))((* (( (ptr) request←v4448)+5) ), ((* (( (ptr) request←v4448)+9) ) - 1), 2, (* (( (ptr) gf←c25664)+43)
             ), pd45);
         };
      };
   }

static void QueuePlayBackCue←P300(request←v4508)
   word request←v4508;
   {
   register ptr gf←c25696 =  (ptr) &globalframe;
   /* QueuePlayBackCue: */ 
SOURCE(5760, 375)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c25696)+16)/* LOCK←v2888 */ ));
SOURCE(5820, 80)
   lab←L100010: ;
   if (((0 != (* (( (ptr) gf←c25696)+8) )) && (0 != (* (( (ptr) gf←c25696)+11) )))) {
      }
   else {
      goto lab←L100008;
      };
SOURCE(5875, 25)
   (void) (XR←Wait((word) (( (bPt) gf←c25696)+16)/* LOCK←v2888 */ , (word) (( (bPt) gf←c25696)+48)/* abortCleared←v2972 */ )
   );
   goto lab←L100010;
   lab←L100008: ;
SOURCE(5902, 233)
   if ((0 != (* (( (ptr) gf←c25696)+8) ))) {
SOURCE(5933, 28)
      (void) AppendRequest←P360(request←v4508);
      }
   else {
SOURCE(5963, 40)
      {
         word var←c23456;
         var←c23456 = XR←NewObject(8, (* (( (ptr) gf←c25696)+33) ));
         (*  (ptr) var←c23456 ) = request←v4508;
         (* (( (ptr) gf←c25696)+9) ) = var←c23456;
         };
SOURCE(6005, 51)
      {
         word pd46;
         pd46 = (* (( (ptr) (* (( (ptr) gf←c25696)+85)/* var←c23232 */  ))+7) );
         (* (( (ptr) gf←c25696)+10) ) = (word) ( *( (fPt) ((*  (ptr) pd46 ))))(pd46);
         };
SOURCE(6058, 28)
      (* (( (ptr) gf←c25696)+8) ) = 1;
SOURCE(6096, 39)
SOURCE(6097, 38)
      {
         W2 var←c23488;
         {
            W2 var←c061;
            word var←c060;
            var←c060 = XR←ExtensionAlloc(4);
            {
               word tmpAddr47;
               tmpAddr47 = (word) var←c060;
               (*  (ptr) tmpAddr47 ) = ( ((word)  (fPt) NoName←Q2304) );
               (* (( (ptr) tmpAddr47) + 1) ) = 0;
               (* (( (ptr) tmpAddr47) + 2) ) = (word) (( (bPt) gf←c25696)+324)/* var←c23168 */ ;
               (* (( (ptr) tmpAddr47) + 3) ) = 0;
               };
            (void) XR←Fork((word) &var←c061, var←c060);
            var←c23488 = var←c061;
            };
         {
            word pd48;
            pd48 = (* (( (ptr) (* (( (ptr) gf←c25696)+86)/* var←c23264 */  ))+11) );
            (void) ( *( (fPt) ((*  (ptr) pd48 ))))(var←c23488, pd48);
            };
         };
      };
SOURCE(5760, 375)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c25696)+16)/* LOCK←v2888 */ ));
   return;
   }

static void AppendRequest←P360(request←v4568)
   word request←v4568;
   {
   register ptr gf←c25728 =  (ptr) &globalframe;
   word hangOffPoint←v5852;
   word oneElementList←v5880;
   /* AppendRequest: */ 
SOURCE(6145, 293)
SOURCE(6205, 14)
   hangOffPoint←v5852 = (* (( (ptr) gf←c25728)+9) );
SOURCE(6266, 16)
   oneElementList←v5880 = XR←NewObject(8, (* (( (ptr) gf←c25728)+33) ));
   (*  (ptr) oneElementList←v5880 ) = request←v4568;
SOURCE(6328, 73)
   lab←L100013: ;
   if (((* (( (ptr) hangOffPoint←v5852)+1) ) != 0)) {
      }
   else {
      goto lab←L100011;
      };
SOURCE(6361, 40)
   hangOffPoint←v5852 = (* (( (ptr) hangOffPoint←v5852)+1) );
   goto lab←L100013;
   lab←L100011: ;
SOURCE(6403, 35)
   (* (( (ptr) hangOffPoint←v5852)+1) ) = oneElementList←v5880;
   }

static void AbortCues←P420()
   {
   register ptr gf←c25760 =  (ptr) &globalframe;
   /* AbortCues: */ 
SOURCE(6442, 109)
SOURCE(6471, 80)
   if ((0 != (* (( (ptr) gf←c25760)+8) ))) {
SOURCE(6502, 26)
      (* (( (ptr) gf←c25760)+11) ) = 1;
SOURCE(6530, 21)
      (void) (XR←Broadcast((word) (( (bPt) gf←c25760)+84)/* playBackCue←v3196 */ ));
      };
   }

static void PlayBackMenuProc←P480(formal←c077, viewer←v15544)
   word formal←c077;
   word viewer←v15544;
   {
   register ptr gf←c25792 =  (ptr) &globalframe;
   word recordAtom←v15588;
   word quit←v15616;
   word buttonParams←v6092;
   word mouseButton←v6120;
   /* PlayBackMenuProc: */ 
SOURCE(6556, 1040)
SOURCE(6556, 1040)
   recordAtom←v15588 = 1;
SOURCE(6556, 1040)
   quit←v15616 = 0;
SOURCE(6606, 97)
   {
      word pd49;
      pd49 = (* (( (ptr) (* (( (ptr) gf←c25792)+88)/* var←c23552 */  ))+29) );
      buttonParams←v6092 = XR←Narrow((word) ( *( (fPt) ((*  (ptr) pd49 ))))(viewer←v15544, (* (( (ptr) gf←c25792)+41) ), pd49), (* (
            ( (ptr) gf←c25792)+37) ));
      };
SOURCE(6705, 100)
   mouseButton←v6120 =  ( (buttonParams←v6092 != 0) ? (*  (ptr) buttonParams←v6092 ) : 0 ) ;
SOURCE(6807, 153)
   {
      word pd50;
      pd50 = (* (( (ptr) (* (( (ptr) gf←c25792)+87)/* var←c23392 */  ))+38) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd50 ))))(pd50))) {
SOURCE(6857, 71)
         {
            word pd51;
            pd51 = (* (( (ptr) (* (( (ptr) gf←c25792)+89)/* var←c23584 */  ))+5) );
            (void) ( *( (fPt) ((*  (ptr) pd51 ))))((* (( (ptr) gf←c25792)+39) ), 1, pd51);
            };
SOURCE(6930, 21)
         {
            word pd52;
            pd52 = (* (( (ptr) (* (( (ptr) gf←c25792)+89)/* var←c23584 */  ))+6) );
            (void) ( *( (fPt) ((*  (ptr) pd52 ))))(pd52);
            };
SOURCE(6953, 7)
         goto lab←L100014;
         };
      };
SOURCE(6965, 631)
   if ((mouseButton←v6120 == 2)) {
SOURCE(7007, 57)
      (void) PlayWholeSlab←P600(viewer←v15544);
      }
   else {
SOURCE(7064, 534)
      {
         word v←v6164 = 0;
         W2 start←v6192;
         W2 end←v6220;
SOURCE(7091, 33)
         start←v6192.f0 = 0;
         start←v6192.f1 = 0;
         end←v6220 = start←v6192;
SOURCE(7126, 61)
         {
            W8 var←c23680;
            {
               word pd53;
               pd53 = (* (( (ptr) (* (( (ptr) gf←c25792)+90)/* var←c23648 */  ))+63) );
               (void) ( *( (fPt) ((*  (ptr) pd53 ))))((word) &var←c23680, 0, pd53);
               };
            end←v6220 = (*  (W2Pt) (( (ptr) &var←c23680)+3) );
            start←v6192 = (*  (W2Pt) (( (ptr) &var←c23680)+1) );
            v←v6164 = var←c23680.f0;
            };
SOURCE(7190, 406)
         if ((v←v6164 == 0)) {
SOURCE(7223, 57)
            (void) PlayWholeSlab←P600(viewer←v15544);
            }
         else {
SOURCE(7280, 316)
            {
               word pd54;
               pd54 = (* (( (ptr) (* (( (ptr) gf←c25792)+88)/* var←c23552 */  ))+29) );
               if (((word) ( *( (fPt) ((*  (ptr) pd54 ))))(v←v6164, (* (( (ptr) gf←c25792)+40) ), pd54) != 0)) {
SOURCE(7337, 30)
                  if ((start←v6192.f0 != end←v6220.f0)) {
SOURCE(7367, 5)
                     (void) XR←RaiseUnnamedError();
                     };
SOURCE(7423, 30)
                  {
                     word pd55;
                     pd55 = (* (( (ptr) (* (( (ptr) gf←c25792)+90)/* var←c23648 */  ))+66) );
                     (void) ( *( (fPt) ((*  (ptr) pd55 ))))(v←v6164, start←v6192, 0, pd55);
                     };
SOURCE(7500, 54)
                  (void) PlaySlabSection←P540(v←v6164, start←v6192.f0, start←v6192.f1, end←v6220.f1);
                  }
               else {
SOURCE(7563, 33)
                  {
                     word pd56;
                     pd56 = (* (( (ptr) (* (( (ptr) gf←c25792)+87)/* var←c23392 */  ))+83) );
                     (void) ( *( (fPt) ((*  (ptr) pd56 ))))(pd56);
                     };
                  };
               };
            };
         };
      };
   /* removed tail goto */ 
   lab←L100014: ;
   (*  (ptr) formal←c077 ) = recordAtom←v15588;
   (* (( (ptr) formal←c077)+1) ) = quit←v15616;
   return;
   }

static void PlaySlabSection←P540(viewer←v4644, node←v4672, from←v4700, to←v4728)
   word viewer←v4644;
   word node←v4672;
   word from←v4700;
   word to←v4728;
   {
   register ptr gf←c25824 =  (ptr) &globalframe;
   word nb←v6264 = 0;
   word viewerInfo←v6292;
   word newRequest←v6320 = 0;
   word var←c23712;
   word var←c0237;
   /* PlaySlabSection: */ 
SOURCE(7605, 987)
SOURCE(7726, 136)
   {
      word pd57;
      pd57 = (* (( (ptr) (* (( (ptr) gf←c25824)+88)/* var←c23552 */  ))+29) );
      viewerInfo←v6292 = XR←Narrow((word) ( *( (fPt) ((*  (ptr) pd57 ))))(viewer←v4644, (* (( (ptr) gf←c25824)+40) ), pd57), (* (
            ( (ptr) gf←c25824)+35) ));
      };
SOURCE(7893, 31)
   if ((viewerInfo←v6292 == 0)) {
SOURCE(7918, 6)
      return;
      };
SOURCE(7976, 63)
   {
      word pd58;
      pd58 = (* (( (ptr) (* (( (ptr) gf←c25824)+90)/* var←c23648 */  ))+93) );
      var←c23712 = (word) ( *( (fPt) ((*  (ptr) pd58 ))))(viewer←v4644, pd58);
      };
   {
      word pd59;
      pd59 = (* (( (ptr) (* (( (ptr) gf←c25824)+90)/* var←c23648 */  ))+91) );
      var←c0237 = (word) ( *( (fPt) ((*  (ptr) pd59 ))))(var←c23712, pd59);
      };
   if ((node←v4672 != var←c0237)) {
SOURCE(8039, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(8046, 146)
   {
      word var←c23744;
      word var←c23808;
      {
         word pd60;
         pd60 = (* (( (ptr) (* (( (ptr) gf←c25824)+91)/* var←c23776 */  ))+9) );
         var←c23744 = (word) ( *( (fPt) ((*  (ptr) pd60 ))))(pd60);
         };
      var←c23808 = XR←NewObject(48, (* (( (ptr) gf←c25824)+32) ));
      (*  (ptr) var←c23808 ) = var←c23744;
      (* (( (ptr) var←c23808)+2) ) = 1;
      (* (( (ptr) var←c23808)+3) ) = 1;
      (* (( (ptr) var←c23808)+4) ) = viewer←v4644;
      (* (( (ptr) var←c23808)+5) ) = node←v4672;
      (* (( (ptr) var←c23808)+6) ) = from←v4700;
      (* (( (ptr) var←c23808)+8) ) = to←v4728;
      (* (( (ptr) var←c23808)+9) ) = (from←v4700 - 1);
      newRequest←v6320 = var←c23808;
      };
SOURCE(8195, 28)
   (void) QueuePlayBackCue←P300(newRequest←v6320);
SOURCE(8225, 299)
   {
      W2 var←c23904;
      {
         word var←c23840;
         {
            word var←c23872;
            var←c23872 = XR←NewObject(12, (* (( (ptr) gf←c25824)+31) ));
            (*  (ptr) var←c23872 ) = (* (( (ptr) viewerInfo←v6292)+2) );
            (* (( (ptr) var←c23872)+1) ) = IOP2( * ,  (int)from←v4700,  (int)2000);
            (* (( (ptr) var←c23872)+2) ) = IOP2( * ,  (int)(to←v4728 - from←v4700),  (int)2000);
            var←c23840 = var←c23872;
            };
         {
            W2 var←c091;
            {
               word pd61;
               pd61 = (* (( (ptr) (* (( (ptr) gf←c25824)+91)/* var←c23776 */  ))+11) );
               (void) ( *( (fPt) ((*  (ptr) pd61 ))))((word) &var←c091, (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c25824)+87)/* var←c23392 */  ))+6)
                   ) ), var←c23840, 1, 0, (*  (ptr) newRequest←v6320 )
                  , 0, (* (( (ptr) gf←c25824)+44) ), pd61);
               };
            var←c23904 = var←c091;
            };
         };
      nb←v6264 = var←c23904.f0;
      };
SOURCE(8526, 66)
   if ((nb←v6264 != (* (( (ptr) gf←c25824)+45) ))) {
SOURCE(8548, 44)
      (void) SetPlayBackState←P960((*  (ptr) newRequest←v6320 ), 2);
      };
   }

static void PlayWholeSlab←P600(viewer←v4788)
   word viewer←v4788;
   {
   register ptr gf←c25856 =  (ptr) &globalframe;
   word viewerInfo←v6364;
   /* PlayWholeSlab: */ 
SOURCE(8598, 910)
SOURCE(8660, 136)
   {
      word pd62;
      pd62 = (* (( (ptr) (* (( (ptr) gf←c25856)+88)/* var←c23552 */  ))+29) );
      viewerInfo←v6364 = XR←Narrow((word) ( *( (fPt) ((*  (ptr) pd62 ))))(viewer←v4788, (* (( (ptr) gf←c25856)+40) ), pd62), (* (
            ( (ptr) gf←c25856)+35) ));
      };
SOURCE(8798, 710)
   if ((viewerInfo←v6364 == 0)) {
SOURCE(8823, 70)
      {
         word pd63;
         pd63 = (* (( (ptr) (* (( (ptr) gf←c25856)+89)/* var←c23584 */  ))+5) );
         (void) ( *( (fPt) ((*  (ptr) pd63 ))))((* (( (ptr) gf←c25856)+46) ), 1, pd63);
         };
      }
   else {
SOURCE(8893, 617)
      {
         word nb←v6408 = 0;
         word node←v6436;
         word nodeLength←v6464;
         word newRequest←v6492;
SOURCE(8913, 72)
         {
            word var←c23936;
            {
               word pd64;
               pd64 = (* (( (ptr) (* (( (ptr) gf←c25856)+90)/* var←c23648 */  ))+93) );
               var←c23936 = (word) ( *( (fPt) ((*  (ptr) pd64 ))))(viewer←v4788, pd64);
               };
            {
               word pd65;
               pd65 = (* (( (ptr) (* (( (ptr) gf←c25856)+90)/* var←c23648 */  ))+91) );
               node←v6436 = (word) ( *( (fPt) ((*  (ptr) pd65 ))))(var←c23936, pd65);
               };
            };
SOURCE(8987, 47)
         {
            word var←c23968;
            {
               word pd66;
               pd66 = (* (( (ptr) (* (( (ptr) gf←c25856)+90)/* var←c23648 */  ))+81) );
               var←c23968 = (word) ( *( (fPt) ((*  (ptr) pd66 ))))(node←v6436, pd66);
               };
            {
               word pd67;
               pd67 = (* (( (ptr) (* (( (ptr) gf←c25856)+92)/* var←c24000 */  ))+14) );
               nodeLength←v6464 = (word) ( *( (fPt) ((*  (ptr) pd67 ))))(var←c23968, pd67);
               };
            };
SOURCE(9036, 173)
         {
            word var←c24032;
            word var←c24064;
            {
               word pd68;
               pd68 = (* (( (ptr) (* (( (ptr) gf←c25856)+91)/* var←c23776 */  ))+9) );
               var←c24032 = (word) ( *( (fPt) ((*  (ptr) pd68 ))))(pd68);
               };
            var←c24064 = XR←NewObject(48, (* (( (ptr) gf←c25856)+32) ));
            (*  (ptr) var←c24064 ) = var←c24032;
            (* (( (ptr) var←c24064)+2) ) = 1;
            (* (( (ptr) var←c24064)+3) ) = 1;
            (* (( (ptr) var←c24064)+4) ) = viewer←v4788;
            (* (( (ptr) var←c24064)+5) ) = node←v6436;
            (* (( (ptr) var←c24064)+8) ) = (nodeLength←v6464 - 1);
            (* (( (ptr) var←c24064)+9) ) =  (word) -1;
            (* (( (ptr) var←c24064)+11) ) = (* (( (ptr) viewerInfo←v6364)+6) );
            newRequest←v6492 = var←c24064;
            };
SOURCE(9213, 28)
         (void) QueuePlayBackCue←P300(newRequest←v6492);
SOURCE(9243, 197)
         {
            W2 var←c24160;
            {
               word var←c24096;
               {
                  word var←c24128;
                  var←c24128 = XR←NewObject(12, (* (( (ptr) gf←c25856)+31) ));
                  (*  (W3Pt) var←c24128 ) = (*  (W3Pt) (( (ptr) viewerInfo←v6364)+2) );
                  var←c24096 = var←c24128;
                  };
               {
                  W2 var←c0105;
                  {
                     word pd69;
                     pd69 = (* (( (ptr) (* (( (ptr) gf←c25856)+91)/* var←c23776 */  ))+11) );
                     (void) ( *( (fPt) ((*  (ptr) pd69 ))))((word) &var←c0105, (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c25856)+87)/* var←c23392 */  ))+6)
                         ) ), var←c24096, 1, 0, (*  (ptr) newRequest←v6492 )
                        , 0, (* (( (ptr) gf←c25856)+44) ), pd69);
                     };
                  var←c24160 = var←c0105;
                  };
               };
            nb←v6408 = var←c24160.f0;
            };
SOURCE(9442, 66)
         if ((nb←v6408 != (* (( (ptr) gf←c25856)+45) ))) {
SOURCE(9464, 44)
            (void) SetPlayBackState←P960((*  (ptr) newRequest←v6492 ), 2);
            };
         };
      };
   }

static word PlayRopeWithoutCue←P660(voiceID←v4848)
   word voiceID←v4848;
   {
   register ptr gf←c25888 =  (ptr) &globalframe;
   word badRope←v4892;
   word nb←v6536 = 0;
   word fullRope←v6564;
   word newRequest←v6592 = 0;
   /* PlayRopeWithoutCue: */ 
SOURCE(9516, 923)
SOURCE(9635, 84)
   fullRope←v6564 = XR←NewObject(12, (* (( (ptr) gf←c25888)+31) ));
   (*  (ptr) fullRope←v6564 ) = voiceID←v4848;
SOURCE(9750, 88)
   {
      word pd70;
      pd70 = (* (( (ptr) (* (( (ptr) gf←c25888)+91)/* var←c23776 */  ))+22) );
      (* (( (ptr) fullRope←v6564)+2) ) = (word) ( *( (fPt) ((*  (ptr) pd70 ))))((*  (ptr) (* (( (ptr) (* (( (ptr) gf←c25888)+87)
            /* var←c23392 */  ))+6) ) ), fullRope←v6564, pd70);
      };
SOURCE(9840, 94)
   {
      word var←c24224;
      var←c24224 = (* (( (ptr) fullRope←v6564)+2) );
      if (( (int)var←c24224 ==  (int) (word) -1)) {
         badRope←v4892 = 0;
         }
      else {
         if (( (int)var←c24224 ==  (int)0)) {
            badRope←v4892 = 1;
            }
         else {
            badRope←v4892 = 2;
            };
         };
      };
SOURCE(9936, 29)
   if ((badRope←v4892 < 2)) {
SOURCE(9959, 6)
      return(badRope←v4892);
      };
SOURCE(9968, 225)
   {
      word var←c24256;
      word var←c24288;
      {
         word pd71;
         pd71 = (* (( (ptr) (* (( (ptr) gf←c25888)+91)/* var←c23776 */  ))+9) );
         var←c24256 = (word) ( *( (fPt) ((*  (ptr) pd71 ))))(pd71);
         };
      var←c24288 = XR←NewObject(48, (* (( (ptr) gf←c25888)+32) ));
      (*  (ptr) var←c24288 ) = var←c24256;
      (* (( (ptr) var←c24288)+2) ) = 1;
      (* (( (ptr) var←c24288)+8) ) = IOP2( / ,  (int)(* (( (ptr) fullRope←v6564)+2) ),  (int)2000);
      (* (( (ptr) var←c24288)+9) ) =  (word) -1;
      (* (( (ptr) var←c24288)+11) ) = IOP2( % ,  (int)(* (( (ptr) fullRope←v6564)+2) ),  (int)2000);
      newRequest←v6592 = var←c24288;
      };
SOURCE(10195, 28)
   (void) QueuePlayBackCue←P300(newRequest←v6592);
SOURCE(10225, 146)
   {
      W2 var←c24320;
      {
         word pd72;
         pd72 = (* (( (ptr) (* (( (ptr) gf←c25888)+91)/* var←c23776 */  ))+11) );
         (void) ( *( (fPt) ((*  (ptr) pd72 ))))((word) &var←c24320, (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c25888)+87)/* var←c23392 */  ))+6)
             ) ), fullRope←v6564, 1, 0, (*  (ptr) newRequest←v6592 )
            , 0, (* (( (ptr) gf←c25888)+44) ), pd72);
         };
      nb←v6536 = var←c24320.f0;
      };
SOURCE(10373, 66)
   if ((nb←v6536 != (* (( (ptr) gf←c25888)+45) ))) {
SOURCE(10395, 44)
      (void) SetPlayBackState←P960((*  (ptr) newRequest←v6592 ), 2);
      };
SOURCE(9516, 923)
   return(badRope←v4892);
   }

static word PlayBackInProgress←P720()
   {
   register ptr gf←c25920 =  (ptr) &globalframe;
   word var←c4952;
   /* PlayBackInProgress: */ 
SOURCE(10445, 110)
SOURCE(10499, 56)
   {
      word tc73;
      if ((0 != (* (( (ptr) gf←c25920)+8) ))) {
         tc73 =  (word) (0 == (* (( (ptr) gf←c25920)+11) ));
         }
      else {
         tc73 =  (word) 0;
         };
      return(tc73);
      };
   }

static void PauseProc←P780(formal←c0125, viewer←v15676)
   word formal←c0125;
   word viewer←v15676;
   {
   register ptr gf←c25952 =  (ptr) &globalframe;
   word recordAtom←v15720;
   word quit←v15748;
   word buttonParams←v6636;
   word mouseButton←v6664;
   /* PauseProc: */ 
SOURCE(10695, 398)
SOURCE(10695, 398)
   recordAtom←v15720 = 1;
SOURCE(10695, 398)
   quit←v15748 = 0;
SOURCE(10738, 97)
   {
      word pd74;
      pd74 = (* (( (ptr) (* (( (ptr) gf←c25952)+88)/* var←c23552 */  ))+29) );
      buttonParams←v6636 = XR←Narrow((word) ( *( (fPt) ((*  (ptr) pd74 ))))(viewer←v15676, (* (( (ptr) gf←c25952)+41) ), pd74), (* (
            ( (ptr) gf←c25952)+37) ));
      };
SOURCE(10837, 100)
   mouseButton←v6664 =  ( (buttonParams←v6636 != 0) ? (*  (ptr) buttonParams←v6636 ) : 0 ) ;
SOURCE(10939, 154)
   {
      word var←c24352;
      var←c24352 = mouseButton←v6664;
      if ((var←c24352 == 0)) {
SOURCE(10971, 54)
         {
            word var←c24384;
            word pd75;
            pd75 = (* (( (ptr) (* (( (ptr) gf←c25952)+91)/* var←c23776 */  ))+13) );
            var←c24384 = (word) ( *( (fPt) ((*  (ptr) pd75 ))))((*  (ptr) (* (( (ptr) (* (( (ptr) gf←c25952)+87)/* var←c23392 */  ))+6)
                ) ), 0, pd75);
            };
         }
      else {
         if ((var←c24352 == 1)) {
SOURCE(11038, 55)
            {
               word var←c24416;
               word pd76;
               pd76 = (* (( (ptr) (* (( (ptr) gf←c25952)+91)/* var←c23776 */  ))+14) );
               var←c24416 = (word) ( *( (fPt) ((*  (ptr) pd76 ))))((*  (ptr) (* (( (ptr) (* (( (ptr) gf←c25952)+87)/* var←c23392 */  ))+6)
                   ) ), 0, pd76);
               };
            };
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0125 ) = recordAtom←v15720;
   (* (( (ptr) formal←c0125)+1) ) = quit←v15748;
   return;
   }

static void CancelPlayBack←P840()
   {
   register ptr gf←c25984 =  (ptr) &globalframe;
   /* CancelPlayBack: */ 
SOURCE(11108, 50)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c25984)+16)/* LOCK←v2888 */ ));
SOURCE(11146, 12)
   (void) AbortCues←P420();
SOURCE(11108, 50)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c25984)+16)/* LOCK←v2888 */ ));
   return;
   }

static void GetCurrentPlayBackPos←P900(formal←c0133)
   word formal←c0133;
   {
   register ptr gf←c26016 =  (ptr) &globalframe;
   word display←v5028;
   word viewer←v5056;
   word currentPos←v5084;
   /* GetCurrentPlayBackPos: */ 
SOURCE(11162, 321)
SOURCE(11162, 321)
   display←v5028 = 0;
SOURCE(11162, 321)
   viewer←v5056 = 0;
SOURCE(11162, 321)
   currentPos←v5084 =  (word) -1;
SOURCE(11288, 195)
   if (((* (( (ptr) gf←c26016)+9) ) != 0)) {
SOURCE(11320, 165)
      {
         word currRequest←v6708;
SOURCE(11322, 56)
         currRequest←v6708 = (*  (ptr) (* (( (ptr) gf←c26016)+9) ) );
SOURCE(11380, 103)
         if (((* (( (ptr) currRequest←v6708)+1) ) == 1)) {
SOURCE(11412, 71)
            display←v5028 = (* (( (ptr) currRequest←v6708)+3) );
            viewer←v5056 = (* (( (ptr) currRequest←v6708)+4) );
            currentPos←v5084 = (* (( (ptr) currRequest←v6708)+9) );
            goto lab←L100016;
            };
         };
      };
   /* removed tail goto */ 
   lab←L100016: ;
   (*  (ptr) formal←c0133 ) = display←v5028;
   (* (( (ptr) formal←c0133)+1) ) = viewer←v5056;
   (* (( (ptr) formal←c0133)+2) ) = currentPos←v5084;
   return;
   }

static void SetPlayBackState←P960(reqID←v5144, newState←v5172)
   word reqID←v5144;
   word newState←v5172;
   {
   register ptr gf←c26048 =  (ptr) &globalframe;
   /* SetPlayBackState: */ 
SOURCE(11492, 846)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c26048)+16)/* LOCK←v2888 */ ));
SOURCE(11611, 727)
   {
      register word playQ←v6752;
      playQ←v6752 = (* (( (ptr) gf←c26048)+9) );
      lab←L100020: ;
      if ((playQ←v6752 != 0)) {
         }
      else {
         goto lab←L100017;
         };
SOURCE(11695, 643)
      if (((*  (ptr) (*  (ptr) playQ←v6752 ) ) == reqID←v5144)) {
SOURCE(11735, 28)
         (* (( (ptr) (*  (ptr) playQ←v6752 ))+1) ) = newState←v5172;
SOURCE(11801, 72)
         if ((newState←v5172 == 1)) {
SOURCE(11823, 50)
            {
               word pd77;
               pd77 = (* (( (ptr) (* (( (ptr) gf←c26048)+85)/* var←c23232 */  ))+7) );
               (* (( (ptr) (*  (ptr) playQ←v6752 ))+10) ) = (word) ( *( (fPt) ((*  (ptr) pd77 ))))(pd77);
               };
            };
SOURCE(11875, 77)
         if ((newState←v5172 == 3)) {
SOURCE(11901, 51)
            {
               word pd78;
               pd78 = (* (( (ptr) (* (( (ptr) gf←c26048)+85)/* var←c23232 */  ))+7) );
               (* (( (ptr) (*  (ptr) playQ←v6752 ))+7) ) = (word) ( *( (fPt) ((*  (ptr) pd78 ))))(pd78);
               };
            };
SOURCE(11954, 173)
         if ((newState←v5172 == 4)) {
SOURCE(11983, 101)
            {
               word var←c24544;
               {
                  word pd79;
                  pd79 = (* (( (ptr) (* (( (ptr) gf←c26048)+85)/* var←c23232 */  ))+7) );
                  var←c24544 = (((* (( (ptr) (*  (ptr) playQ←v6752 ))+10) ) + (word) ( *( (fPt) ((*  (ptr) pd79 ))))(pd79)) - (* (( (ptr) (*  (ptr) playQ←v6752 ))+7)
                   ));
                  };
               (* (( (ptr) (*  (ptr) playQ←v6752 ))+10) ) = var←c24544;
               };
SOURCE(12086, 24)
            (* (( (ptr) (*  (ptr) playQ←v6752 ))+1) ) = 1;
SOURCE(12112, 15)
            newState←v5172 = 1;
            };
SOURCE(12134, 133)
         if ((playQ←v6752 != (* (( (ptr) gf←c26048)+9) ))) {
SOURCE(12169, 98)
            {
               register word pQ←v6796;
               pQ←v6796 = (* (( (ptr) gf←c26048)+9) );
               lab←L100024: ;
               if ((pQ←v6796 != playQ←v6752)) {
                  }
               else {
                  goto lab←L100021;
                  };
SOURCE(12246, 21)
               (* (( (ptr) (*  (ptr) pQ←v6796 ))+1) ) = 2;
               pQ←v6796 = (* (( (ptr) pQ←v6796)+1) );
               goto lab←L100024;
               lab←L100021: ;
               };
            };
SOURCE(12309, 21)
         (void) (XR←Broadcast((word) (( (bPt) gf←c26048)+84)/* playBackCue←v3196 */ ));
SOURCE(12332, 6)
         (void) (XR←MonitorExit((word) (( (bPt) gf←c26048)+16)/* LOCK←v2888 */ ));
         return;
         };
      playQ←v6752 = (* (( (ptr) playQ←v6752)+1) );
      goto lab←L100020;
      lab←L100017: ;
      };
SOURCE(11492, 846)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c26048)+16)/* LOCK←v2888 */ ));
   return;
   }

static word RemoveViewerReferences←P1020(viewer←v5232)
   word viewer←v5232;
   {
   register ptr gf←c26080 =  (ptr) &globalframe;
   word okay←v5276;
   /* RemoveViewerReferences: */ 
SOURCE(12356, 401)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c26080)+16)/* LOCK←v2888 */ ));
SOURCE(12356, 401)
   okay←v5276 = 1;
SOURCE(12464, 40)
   if (((* (( (ptr) gf←c26080)+9) ) == 0)) {
SOURCE(12498, 6)
      (void) (XR←MonitorExit((word) (( (bPt) gf←c26080)+16)/* LOCK←v2888 */ ));
      return(okay←v5276);
      };
SOURCE(12506, 102)
   if ( ( (0 != (* (( (ptr) (*  (ptr) (* (( (ptr) gf←c26080)+9) ) ))+3) )) ? ((* (( (ptr) (*  (ptr) (* (( (ptr) gf←c26080)+9)
       ) ))+4) ) == viewer←v5232) : 0 ) ) {
SOURCE(12594, 14)
      (void) (XR←MonitorExit((word) (( (bPt) gf←c26080)+16)/* LOCK←v2888 */ ));
      return(0);
      };
SOURCE(12610, 147)
   {
      register word l←v6840;
      l←v6840 = (* (( (ptr) (* (( (ptr) gf←c26080)+9) ))+1) );
      lab←L100028: ;
      if ((l←v6840 != 0)) {
         }
      else {
         goto lab←L100025;
         };
SOURCE(12693, 64)
      if (((* (( (ptr) (*  (ptr) l←v6840 ))+4) ) == viewer←v5232)) {
SOURCE(12725, 32)
         (* (( (ptr) (*  (ptr) l←v6840 ))+3) ) = 0;
         };
      l←v6840 = (* (( (ptr) l←v6840)+1) );
      goto lab←L100028;
      lab←L100025: ;
      };
SOURCE(12356, 401)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c26080)+16)/* LOCK←v2888 */ ));
   return(okay←v5276);
   }

static word RedrawViewer←P1080(viewer←v5336, newContents←v5364, unchangedHead←v5392, deleteChars←v5420, insertChars←v5448, timeRemnant←v5476, age←v5504, selectionsAfterRedraw←v5532)
   word viewer←v5336;
   word newContents←v5364;
   word unchangedHead←v5392;
   word deleteChars←v5420;
   word insertChars←v5448;
   word timeRemnant←v5476;
   word age←v5504;
   word selectionsAfterRedraw←v5532;
   {
   register ptr gf←c26112 =  (ptr) &globalframe;
   word newNode←v5576;
   word pViewer←v6968 = 0;
   word sViewer←v6996 = 0;
   W2 pStart←v7024;
   W2 pEnd←v7052;
   W2 sStart←v7080;
   W2 sEnd←v7108;
   word pLevel←v7136 = 1;
   word sLevel←v7164 = 1;
   word pCaretBefore←v7192;
   word sCaretBefore←v7220;
   word pPendingDelete←v7248;
   word sPendingDelete←v7276;
   /* RedrawViewer: */ 
SOURCE(12761, 7772)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c26112)+16)/* LOCK←v2888 */ ));
SOURCE(12761, 7772)
   newNode←v5576 = 0;
SOURCE(13071, 49)
   pStart←v7024.f0 = 0;
   pStart←v7024.f1 = 0;
   pEnd←v7052 = pStart←v7024;
   sStart←v7080 = pEnd←v7052;
   sEnd←v7108 = sStart←v7080;
SOURCE(13237, 149)
   {
      W8 var←c24608;
      {
         word pd80;
         pd80 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+63) );
         (void) ( *( (fPt) ((*  (ptr) pd80 ))))((word) &var←c24608, 0, pd80);
         };
      pPendingDelete←v7248 = var←c24608.f7;
      pCaretBefore←v7192 = var←c24608.f6;
      pLevel←v7136 = var←c24608.f5;
      pEnd←v7052 = (*  (W2Pt) (( (ptr) &var←c24608)+3) );
      pStart←v7024 = (*  (W2Pt) (( (ptr) &var←c24608)+1) );
      pViewer←v6968 = var←c24608.f0;
      };
SOURCE(13388, 151)
   {
      W8 var←c24640;
      {
         word pd81;
         pd81 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+63) );
         (void) ( *( (fPt) ((*  (ptr) pd81 ))))((word) &var←c24640, 1, pd81);
         };
      sPendingDelete←v7276 = var←c24640.f7;
      sCaretBefore←v7220 = var←c24640.f6;
      sLevel←v7164 = var←c24640.f5;
      sEnd←v7108 = (*  (W2Pt) (( (ptr) &var←c24640)+3) );
      sStart←v7080 = (*  (W2Pt) (( (ptr) &var←c24640)+1) );
      sViewer←v6996 = var←c24640.f0;
      };
SOURCE(13542, 69)
   {
      word pd82;
      pd82 = (* (( (ptr) (* (( (ptr) gf←c26112)+87)/* var←c23392 */  ))+12) );
      newNode←v5576 = (word) ( *( (fPt) ((*  (ptr) pd82 ))))(viewer←v5336, newContents←v5364, pd82);
      };
SOURCE(13614, 2346)
   {
      word var←c24672;
      var←c24672 = selectionsAfterRedraw←v5532;
      switch (var←c24672) {
         case 0: 
SOURCE(13771, 1296)
            {
               word lastCharInNode←v7320;
SOURCE(13774, 60)
               {
                  word var←c24704;
                  {
                     word pd83;
                     pd83 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+81) );
                     var←c24704 = (word) ( *( (fPt) ((*  (ptr) pd83 ))))(newNode←v5576, pd83);
                     };
                  {
                     word pd84;
                     pd84 = (* (( (ptr) (* (( (ptr) gf←c26112)+92)/* var←c24000 */  ))+14) );
                     lastCharInNode←v7320 = ((word) ( *( (fPt) ((*  (ptr) pd84 ))))(var←c24704, pd84) - 1);
                     };
                  };
SOURCE(13836, 609)
               if ((pViewer←v6968 == viewer←v5336)) {
SOURCE(13864, 581)
                  if ((pStart←v7024.f0 != pEnd←v7052.f0)) {
SOURCE(13896, 39)
                     {
                        word pd85;
                        pd85 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+71) );
                        (void) ( *( (fPt) ((*  (ptr) pd85 ))))(0, pd85);
                        };
                     }
                  else {
SOURCE(13938, 33)
                     pStart←v7024.f0 = newNode←v5576;
                     pEnd←v7052.f0 = newNode←v5576;
SOURCE(13973, 93)
                     if (( (int)pStart←v7024.f1 >=  (int)unchangedHead←v5392)) {
SOURCE(14011, 55)
                        pStart←v7024.f1 = ((pStart←v7024.f1 - deleteChars←v5420) + insertChars←v5448);
                        };
SOURCE(14068, 87)
                     if (( (int)pEnd←v7052.f1 >=  (int)unchangedHead←v5392)) {
SOURCE(14104, 51)
                        pEnd←v7052.f1 = ((pEnd←v7052.f1 - deleteChars←v5420) + insertChars←v5448);
                        };
SOURCE(14157, 67)
                     if (( (int)pStart←v7024.f1 >  (int)lastCharInNode←v7320)) {
SOURCE(14195, 29)
                        pStart←v7024.f1 = lastCharInNode←v7320;
                        };
SOURCE(14226, 63)
                     if (( (int)pEnd←v7052.f1 >  (int)lastCharInNode←v7320)) {
SOURCE(14262, 27)
                        pEnd←v7052.f1 = lastCharInNode←v7320;
                        };
SOURCE(14291, 154)
                     {
                        word pd86;
                        pd86 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+65) );
                        (void) ( *( (fPt) ((*  (ptr) pd86 ))))(pViewer←v6968, pStart←v7024, pEnd←v7052, pLevel←v7136, pCaretBefore←v7192, pPendingDelete←v7248
                           , 0, pd86);
                        };
                     };
                  };
SOURCE(14450, 613)
               if ((sViewer←v6996 == viewer←v5336)) {
SOURCE(14478, 585)
                  if ((sStart←v7080.f0 != sEnd←v7108.f0)) {
SOURCE(14510, 41)
                     {
                        word pd87;
                        pd87 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+71) );
                        (void) ( *( (fPt) ((*  (ptr) pd87 ))))(1, pd87);
                        };
                     }
                  else {
SOURCE(14554, 33)
                     sStart←v7080.f0 = newNode←v5576;
                     sEnd←v7108.f0 = newNode←v5576;
SOURCE(14589, 93)
                     if (( (int)sStart←v7080.f1 >=  (int)unchangedHead←v5392)) {
SOURCE(14627, 55)
                        sStart←v7080.f1 = ((sStart←v7080.f1 - deleteChars←v5420) + insertChars←v5448);
                        };
SOURCE(14684, 87)
                     if (( (int)sEnd←v7108.f1 >=  (int)unchangedHead←v5392)) {
SOURCE(14720, 51)
                        sEnd←v7108.f1 = ((sEnd←v7108.f1 - deleteChars←v5420) + insertChars←v5448);
                        };
SOURCE(14773, 67)
                     if (( (int)sStart←v7080.f1 >  (int)lastCharInNode←v7320)) {
SOURCE(14811, 29)
                        sStart←v7080.f1 = lastCharInNode←v7320;
                        };
SOURCE(14842, 63)
                     if (( (int)sEnd←v7108.f1 >  (int)lastCharInNode←v7320)) {
SOURCE(14878, 27)
                        sEnd←v7108.f1 = lastCharInNode←v7320;
                        };
SOURCE(14907, 156)
                     {
                        word pd88;
                        pd88 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+65) );
                        (void) ( *( (fPt) ((*  (ptr) pd88 ))))(sViewer←v6996, sStart←v7080, sEnd←v7108, sLevel←v7164, sCaretBefore←v7220, sPendingDelete←v7276
                           , 1, pd88);
                        };
                     };
                  };
               };
            break;
         case 1: 
SOURCE(15087, 58)
            if ((pViewer←v6968 == viewer←v5336)) {
SOURCE(15112, 33)
               {
                  word pd89;
                  pd89 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+71) );
                  (void) ( *( (fPt) ((*  (ptr) pd89 ))))(0, pd89);
                  };
               };
SOURCE(15147, 61)
            if ((sViewer←v6996 == viewer←v5336)) {
SOURCE(15172, 36)
               {
                  word pd90;
                  pd90 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+71) );
                  (void) ( *( (fPt) ((*  (ptr) pd90 ))))(1, pd90);
                  };
               };
            break;
         case 2: 
SOURCE(15230, 732)
            {
               word nodeLength←v7364;
SOURCE(15233, 52)
               {
                  word var←c24800;
                  {
                     word pd91;
                     pd91 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+81) );
                     var←c24800 = (word) ( *( (fPt) ((*  (ptr) pd91 ))))(newNode←v5576, pd91);
                     };
                  {
                     word pd92;
                     pd92 = (* (( (ptr) (* (( (ptr) gf←c26112)+92)/* var←c24000 */  ))+14) );
                     nodeLength←v7364 = (word) ( *( (fPt) ((*  (ptr) pd92 ))))(var←c24800, pd92);
                     };
                  };
SOURCE(15287, 60)
               if ((sViewer←v6996 == viewer←v5336)) {
SOURCE(15312, 35)
                  {
                     word pd93;
                     pd93 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+71) );
                     (void) ( *( (fPt) ((*  (ptr) pd93 ))))(1, pd93);
                     };
                  };
SOURCE(15349, 611)
               if (( (int)nodeLength←v7364 ==  (int)0)) {
SOURCE(15372, 71)
                  {
                     word pd94;
                     pd94 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+71) );
                     (void) ( *( (fPt) ((*  (ptr) pd94 ))))(0, pd94);
                     };
                  }
               else {
SOURCE(15446, 16)
                  pViewer←v6968 = viewer←v5336;
SOURCE(15464, 33)
                  pStart←v7024.f0 = newNode←v5576;
                  pEnd←v7052.f0 = newNode←v5576;
SOURCE(15499, 265)
                  if (( (int)insertChars←v5448 ==  (int)0)) {
SOURCE(15554, 94)
                     {
                        word var←c24864;
                        if (( (int)unchangedHead←v5392 >  (int)nodeLength←v7364)) {
                           var←c24864 = nodeLength←v7364;
                           }
                        else {
                           var←c24864 = unchangedHead←v5392;
                           };
                        pEnd←v7052.f1 = var←c24864;
                        pStart←v7024.f1 = var←c24864;
                        };
SOURCE(15650, 15)
                     pLevel←v7136 = 0;
                     }
                  else {
SOURCE(15675, 28)
                     pStart←v7024.f1 = unchangedHead←v5392;
SOURCE(15705, 43)
                     pEnd←v7052.f1 = ((unchangedHead←v5392 + insertChars←v5448) - 1);
SOURCE(15750, 14)
                     pLevel←v7136 = 1;
                     };
SOURCE(15767, 37)
                  pPendingDelete←v7248 = 0;
                  pCaretBefore←v7192 = 0;
SOURCE(15806, 154)
                  {
                     word pd95;
                     pd95 = (* (( (ptr) (* (( (ptr) gf←c26112)+90)/* var←c23648 */  ))+65) );
                     (void) ( *( (fPt) ((*  (ptr) pd95 ))))(pViewer←v6968, pStart←v7024, pEnd←v7052, pLevel←v7136, pCaretBefore←v7192, pPendingDelete←v7248
                        , 0, pd95);
                     };
                  };
               };
            break;
         default: 
SOURCE(15977, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(15984, 116)
   if ( ( (0 != age←v5504) ? ( (int)insertChars←v5448 !=  (int)0) : 0 ) ) {
SOURCE(16016, 45)
      {
         word pd96;
         pd96 = (* (( (ptr) (* (( (ptr) gf←c26112)+87)/* var←c23392 */  ))+57) );
         (void) ( *( (fPt) ((*  (ptr) pd96 ))))(viewer←v5336, pd96);
         };
      }
   else {
SOURCE(16061, 39)
      {
         word pd97;
         pd97 = (* (( (ptr) (* (( (ptr) gf←c26112)+87)/* var←c23392 */  ))+56) );
         (void) ( *( (fPt) ((*  (ptr) pd97 ))))(viewer←v5336, 0, 0, pd97);
         };
      };
SOURCE(16102, 1868)
   if (((* (( (ptr) gf←c26112)+9) ) != 0)) {
SOURCE(16136, 1834)
      {
         register word p←v7408;
         p←v7408 = (* (( (ptr) gf←c26112)+9) );
         lab←L100032: ;
         if (((* (( (ptr) p←v7408)+1) ) != 0)) {
            }
         else {
            goto lab←L100029;
            };
         {
            word currRequest←v7536;
SOURCE(16219, 43)
            currRequest←v7536 = (*  (ptr) (* (( (ptr) p←v7408)+1) ) );
SOURCE(16264, 1706)
            if ( ( (0 != (* (( (ptr) currRequest←v7536)+3) )) ? ((* (( (ptr) currRequest←v7536)+4) ) == viewer←v5336) : 0 ) ) {
SOURCE(16327, 26)
               (* (( (ptr) currRequest←v7536)+5) ) = newNode←v5576;
SOURCE(16416, 1554)
               if (( (int)(* (( (ptr) currRequest←v7536)+8) ) >=  (int)unchangedHead←v5392)) {
SOURCE(16492, 1478)
                  {
                     word newRequests←v7580;
SOURCE(16495, 13)
                     newRequests←v7580 = (* (( (ptr) (* (( (ptr) p←v7408)+1) ))+1) );
SOURCE(16548, 496)
                     if (( (int)(* (( (ptr) currRequest←v7536)+8) ) >=  (int)(unchangedHead←v5392 + deleteChars←v5420))) {
SOURCE(16627, 417)
                        {
                           word start←v7708;
                           word end←v7736;
SOURCE(16630, 97)
                           {
/*1*/   word x98;
/*1*/   start←v7708 = ((x98 = (* (( (ptr) currRequest←v7536)+6) ),
/*1*/      MAX((int)(word), (unchangedHead←v5392 + deleteChars←v5420), x98)) + (insertChars←v5448 - deleteChars←v5420));
/*1*/   };
SOURCE(16729, 56)
                           end←v7736 = ((* (( (ptr) currRequest←v7536)+8) ) + (insertChars←v5448 - deleteChars←v5420));
SOURCE(16787, 257)
                           {
/*1*/   word var←c24896;
/*1*/   word var←c24960;
/*1*/   {
/*1*/      word var←c24928;
/*1*/      var←c24928 = XR←NewObject(48, (* (( (ptr) gf←c26112)+32) ));
/*1*/      (*  (ptr) var←c24928 ) = (*  (ptr) currRequest←v7536 );
/*1*/      (* (( (ptr) var←c24928)+2) ) = 1;
/*1*/      (* (( (ptr) var←c24928)+3) ) = 1;
/*1*/      (* (( (ptr) var←c24928)+4) ) = viewer←v5336;
/*1*/      (* (( (ptr) var←c24928)+5) ) = newNode←v5576;
/*1*/      (* (( (ptr) var←c24928)+6) ) = start←v7708;
/*1*/      (* (( (ptr) var←c24928)+8) ) = end←v7736;
/*1*/      (* (( (ptr) var←c24928)+9) ) = (start←v7708 - 1);
/*1*/      (* (( (ptr) var←c24928)+11) ) = timeRemnant←v5476;
/*1*/      var←c24896 = var←c24928;
/*1*/      };
/*1*/   var←c24960 = XR←NewObject(8, (* (( (ptr) gf←c26112)+33) ));
/*1*/   (*  (ptr) var←c24960 ) = var←c24896;
/*1*/   (* (( (ptr) var←c24960)+1) ) = newRequests←v7580;
/*1*/   newRequests←v7580 = var←c24960;
/*1*/   };
                           };
                        };
SOURCE(17048, 491)
                     if (( (int)(* (( (ptr) currRequest←v7536)+6) ) <  (int)(unchangedHead←v5392 + deleteChars←v5420))) {
SOURCE(17198, 341)
                        {
                           word start←v7780;
                           word end←v7808;
SOURCE(17201, 50)
                           {
/*1*/   word x99;
/*1*/   start←v7780 = (x99 = (* (( (ptr) currRequest←v7536)+6) ),
/*1*/      MAX((int)(word), unchangedHead←v5392, x99));
/*1*/   };
SOURCE(17254, 65)
                           {
/*1*/   word x100;
/*1*/   word x101;
/*1*/   end←v7808 = (x100 = ((unchangedHead←v5392 + deleteChars←v5420) - 1),
/*1*/      x101 = (* (( (ptr) currRequest←v7536)+8) ),
/*1*/      MIN((int)(word), x100, x101));
/*1*/   };
SOURCE(17321, 218)
                           {
/*1*/   word var←c24992;
/*1*/   word var←c25056;
/*1*/   {
/*1*/      word var←c25024;
/*1*/      var←c25024 = XR←NewObject(48, (* (( (ptr) gf←c26112)+32) ));
/*1*/      (*  (ptr) var←c25024 ) = (*  (ptr) currRequest←v7536 );
/*1*/      (* (( (ptr) var←c25024)+6) ) = start←v7780;
/*1*/      (* (( (ptr) var←c25024)+8) ) = end←v7808;
/*1*/      (* (( (ptr) var←c25024)+9) ) = (start←v7780 - 1);
/*1*/      var←c24992 = var←c25024;
/*1*/      };
/*1*/   var←c25056 = XR←NewObject(8, (* (( (ptr) gf←c26112)+33) ));
/*1*/   (*  (ptr) var←c25056 ) = var←c24992;
/*1*/   (* (( (ptr) var←c25056)+1) ) = newRequests←v7580;
/*1*/   newRequests←v7580 = var←c25056;
/*1*/   };
                           };
                        };
SOURCE(17543, 402)
                     if (( (int)(* (( (ptr) currRequest←v7536)+6) ) <  (int)unchangedHead←v5392)) {
SOURCE(17609, 336)
                        {
                           word start←v7852;
                           word end←v7880;
SOURCE(17612, 30)
                           start←v7852 = (* (( (ptr) currRequest←v7536)+6) );
SOURCE(17644, 51)
                           {
/*1*/   word x102;
/*1*/   end←v7880 = (x102 = (* (( (ptr) currRequest←v7536)+8) ),
/*1*/      MIN((int)(word), (unchangedHead←v5392 - 1), x102));
/*1*/   };
SOURCE(17697, 248)
                           {
/*1*/   word var←c25088;
/*1*/   word var←c25152;
/*1*/   {
/*1*/      word var←c25120;
/*1*/      var←c25120 = XR←NewObject(48, (* (( (ptr) gf←c26112)+32) ));
/*1*/      (*  (ptr) var←c25120 ) = (*  (ptr) currRequest←v7536 );
/*1*/      (* (( (ptr) var←c25120)+3) ) = 1;
/*1*/      (* (( (ptr) var←c25120)+4) ) = viewer←v5336;
/*1*/      (* (( (ptr) var←c25120)+5) ) = newNode←v5576;
/*1*/      (* (( (ptr) var←c25120)+6) ) = start←v7852;
/*1*/      (* (( (ptr) var←c25120)+8) ) = end←v7880;
/*1*/      (* (( (ptr) var←c25120)+9) ) = (start←v7852 - 1);
/*1*/      var←c25088 = var←c25120;
/*1*/      };
/*1*/   var←c25152 = XR←NewObject(8, (* (( (ptr) gf←c26112)+33) ));
/*1*/   (*  (ptr) var←c25152 ) = var←c25088;
/*1*/   (* (( (ptr) var←c25152)+1) ) = newRequests←v7580;
/*1*/   newRequests←v7580 = var←c25152;
/*1*/   };
                           };
                        };
SOURCE(17949, 21)
                     (* (( (ptr) p←v7408)+1) ) = newRequests←v7580;
                     };
                  };
               };
            };
         p←v7408 = (* (( (ptr) p←v7408)+1) );
         goto lab←L100032;
         lab←L100029: ;
         };
      };
SOURCE(17985, 2548)
   if (((* (( (ptr) gf←c26112)+9) ) != 0)) {
SOURCE(18019, 2520)
      {
         word currRequest←v7924;
         word currentPosFound←v7952 = 0;
SOURCE(18021, 56)
         currRequest←v7924 = (*  (ptr) (* (( (ptr) gf←c26112)+9) ) );
SOURCE(18113, 2420)
         if ( ( (0 != (* (( (ptr) currRequest←v7924)+3) )) ? ((* (( (ptr) currRequest←v7924)+4) ) == viewer←v5336) : 0 ) ) {
SOURCE(18173, 2364)
            {
               word newRequests←v7996;
SOURCE(18175, 13)
               newRequests←v7996 = (* (( (ptr) (* (( (ptr) gf←c26112)+9) ))+1) );
SOURCE(18240, 26)
               (* (( (ptr) currRequest←v7924)+5) ) = newNode←v5576;
SOURCE(18268, 1964)
               if (( (int)(* (( (ptr) currRequest←v7924)+8) ) >=  (int)unchangedHead←v5392)) {
SOURCE(18311, 616)
                  if (( (int)(* (( (ptr) currRequest←v7924)+8) ) >=  (int)(unchangedHead←v5392 + deleteChars←v5420))) {
SOURCE(18366, 563)
                     {
                        word start←v8124;
                        word end←v8152;
                        word currentPos←v8180;
SOURCE(18368, 97)
                        {
                           word x103;
                           start←v8124 = ((x103 = (* (( (ptr) currRequest←v7924)+6) ),
/*1*/   MAX((int)(word), (unchangedHead←v5392 + deleteChars←v5420), x103)) + (insertChars←v5448 - deleteChars←v5420));
                           };
SOURCE(18467, 56)
                        end←v8152 = ((* (( (ptr) currRequest←v7924)+8) ) + (insertChars←v5448 - deleteChars←v5420));
SOURCE(18525, 87)
                        {
                           word x104;
                           currentPos←v8180 = (x104 = ((* (( (ptr) currRequest←v7924)+9) ) + (insertChars←v5448 - deleteChars←v5420)),
/*1*/   MAX((int)(word), (start←v8124 - 1), x104));
                           };
SOURCE(18615, 259)
                        {
                           word var←c25184;
                           word var←c25248;
                           {
/*1*/   word var←c25216;
/*1*/   var←c25216 = XR←NewObject(48, (* (( (ptr) gf←c26112)+32) ));
/*1*/   (*  (ptr) var←c25216 ) = (*  (ptr) currRequest←v7924 );
/*1*/   (* (( (ptr) var←c25216)+2) ) = 1;
/*1*/   (* (( (ptr) var←c25216)+3) ) = 1;
/*1*/   (* (( (ptr) var←c25216)+4) ) = viewer←v5336;
/*1*/   (* (( (ptr) var←c25216)+5) ) = newNode←v5576;
/*1*/   (* (( (ptr) var←c25216)+6) ) = start←v8124;
/*1*/   (* (( (ptr) var←c25216)+8) ) = end←v8152;
/*1*/   (* (( (ptr) var←c25216)+9) ) = currentPos←v8180;
/*1*/   (* (( (ptr) var←c25216)+11) ) = timeRemnant←v5476;
/*1*/   var←c25184 = var←c25216;
/*1*/   };
                           var←c25248 = XR←NewObject(8, (* (( (ptr) gf←c26112)+33) ));
                           (*  (ptr) var←c25248 ) = var←c25184;
                           (* (( (ptr) var←c25248)+1) ) = newRequests←v7996;
                           newRequests←v7996 = var←c25248;
                           };
SOURCE(18876, 51)
                        if (( (int)currentPos←v8180 !=  (int)(start←v8124 - 1))) {
SOURCE(18905, 22)
                           currentPosFound←v7952 = 1;
                           };
                        };
                     };
SOURCE(18933, 663)
                  if ( ( (0 == currentPosFound←v7952) ? ( (int)(* (( (ptr) currRequest←v7924)+6) ) <  (int)(unchangedHead←v5392 + deleteChars←v5420)) : 0 ) ) {
SOURCE(19012, 586)
                     {
                        word start←v8224;
                        word end←v8252;
                        word currentPos←v8280;
SOURCE(19014, 50)
                        {
                           word x105;
                           start←v8224 = (x105 = (* (( (ptr) currRequest←v7924)+6) ),
/*1*/   MAX((int)(word), unchangedHead←v5392, x105));
                           };
SOURCE(19067, 65)
                        {
                           word x106;
                           word x107;
                           end←v8252 = (x106 = ((unchangedHead←v5392 + deleteChars←v5420) - 1),
/*1*/   x107 = (* (( (ptr) currRequest←v7924)+8) ),
/*1*/   MIN((int)(word), x106, x107));
                           };
SOURCE(19134, 56)
                        {
                           word x108;
                           currentPos←v8280 = (x108 = (* (( (ptr) currRequest←v7924)+9) ),
/*1*/   MAX((int)(word), (start←v8224 - 1), x108));
                           };
SOURCE(19292, 251)
                        {
                           word var←c25280;
                           word var←c25344;
                           {
/*1*/   word var←c25312;
/*1*/   var←c25312 = XR←NewObject(48, (* (( (ptr) gf←c26112)+32) ));
/*1*/   (*  (ptr) var←c25312 ) = (*  (ptr) currRequest←v7924 );
/*1*/   (* (( (ptr) var←c25312)+4) ) = viewer←v5336;
/*1*/   (* (( (ptr) var←c25312)+5) ) = newNode←v5576;
/*1*/   (* (( (ptr) var←c25312)+6) ) = start←v8224;
/*1*/   (* (( (ptr) var←c25312)+8) ) = end←v8252;
/*1*/   (* (( (ptr) var←c25312)+9) ) = currentPos←v8280;
/*1*/   var←c25280 = var←c25312;
/*1*/   };
                           var←c25344 = XR←NewObject(8, (* (( (ptr) gf←c26112)+33) ));
                           (*  (ptr) var←c25344 ) = var←c25280;
                           (* (( (ptr) var←c25344)+1) ) = newRequests←v7996;
                           newRequests←v7996 = var←c25344;
                           };
SOURCE(19545, 51)
                        if (( (int)currentPos←v8280 !=  (int)(start←v8224 - 1))) {
SOURCE(19574, 22)
                           currentPosFound←v7952 = 1;
                           };
                        };
                     };
SOURCE(19602, 455)
                  if ( ( (0 == currentPosFound←v7952) ? ( (int)(* (( (ptr) currRequest←v7924)+6) ) <  (int)unchangedHead←v5392) : 0 ) ) {
SOURCE(19667, 390)
                     {
                        word start←v8324;
                        word end←v8352;
                        word currentPos←v8380;
SOURCE(19669, 30)
                        start←v8324 = (* (( (ptr) currRequest←v7924)+6) );
SOURCE(19701, 51)
                        {
                           word x109;
                           end←v8352 = (x109 = (* (( (ptr) currRequest←v7924)+8) ),
/*1*/   MIN((int)(word), (unchangedHead←v5392 - 1), x109));
                           };
SOURCE(19754, 40)
                        currentPos←v8380 = (* (( (ptr) currRequest←v7924)+9) );
SOURCE(19796, 261)
                        {
                           word var←c25376;
                           word var←c25440;
                           {
/*1*/   word var←c25408;
/*1*/   var←c25408 = XR←NewObject(48, (* (( (ptr) gf←c26112)+32) ));
/*1*/   (*  (ptr) var←c25408 ) = (*  (ptr) currRequest←v7924 );
/*1*/   (* (( (ptr) var←c25408)+1) ) = (* (( (ptr) currRequest←v7924)+1) );
/*1*/   (* (( (ptr) var←c25408)+3) ) = 1;
/*1*/   (* (( (ptr) var←c25408)+4) ) = viewer←v5336;
/*1*/   (* (( (ptr) var←c25408)+5) ) = newNode←v5576;
/*1*/   (* (( (ptr) var←c25408)+6) ) = start←v8324;
/*1*/   (* (( (ptr) var←c25408)+8) ) = end←v8352;
/*1*/   (* (( (ptr) var←c25408)+9) ) = currentPos←v8380;
/*1*/   var←c25376 = var←c25408;
/*1*/   };
                           var←c25440 = XR←NewObject(8, (* (( (ptr) gf←c26112)+33) ));
                           (*  (ptr) var←c25440 ) = var←c25376;
                           (* (( (ptr) var←c25440)+1) ) = newRequests←v7996;
                           newRequests←v7996 = var←c25440;
                           };
                        };
                     };
SOURCE(20060, 43)
                  (* (( (ptr) (*  (ptr) newRequests←v7996 ))+1) ) = (* (( (ptr) currRequest←v7924)+1) );
SOURCE(20105, 51)
                  (* (( (ptr) (*  (ptr) newRequests←v7996 ))+10) ) = (* (( (ptr) currRequest←v7924)+10) );
SOURCE(20158, 33)
                  (* (( (ptr) gf←c26112)+9) ) = newRequests←v7996;
SOURCE(20193, 39)
                  currRequest←v7924 = (*  (ptr) (* (( (ptr) gf←c26112)+9) ) );
                  };
SOURCE(20238, 295)
               if ( ( (0 != (* (( (ptr) currRequest←v7924)+3) )) ? ( (int)(* (( (ptr) currRequest←v7924)+9) ) >=  (int)(* (( (ptr) currRequest←v7924)+6)
                )) : 0 ) ) {
SOURCE(20312, 223)
                  {
                     word start←v8424;
                     word len←v8452;
SOURCE(20314, 61)
                     {
                        word x110;
                        word x111;
                        start←v8424 = (x110 = (* (( (ptr) currRequest←v7924)+6) ),
                           x111 = ((* (( (ptr) currRequest←v7924)+9) ) - 1),
                           MAX((int)(word), x110, x111));
                        };
SOURCE(20377, 63)
                     {
                        word x112;
                        word x113;
                        len←v8452 = ((x112 = (* (( (ptr) currRequest←v7924)+8) ),
                           x113 = (* (( (ptr) currRequest←v7924)+9) ),
                           MIN((int)(word), x112, x113)) - start←v8424);
                        };
SOURCE(20442, 91)
                     {
                        word pd114;
                        pd114 = (* (( (ptr) (* (( (ptr) gf←c26112)+87)/* var←c23392 */  ))+13) );
                        (void) ( *( (fPt) ((*  (ptr) pd114 ))))((* (( (ptr) currRequest←v7924)+5) ), start←v8424, len←v8452, (* (( (ptr) gf←c26112)+42)
                            ), pd114);
                        };
                     };
                  };
               };
            };
         };
      };
SOURCE(12761, 7772)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c26112)+16)/* LOCK←v2888 */ ));
   return(newNode←v5576);
   }

static word NoName←Q2304(formal←c062)
   word formal←c062;
   {
   word var←c063;
   /* intermediary proc for a FORK, nArgs: 0, nRets: 0 */ 
   var←c063 = (* (( (ptr) formal←c062)+2) );
   formal←c062 = XR←ExtensionFree(formal←c062);
   (void) ( *( (fPt) ((*  (ptr) var←c063 ))))(var←c063);
   return(0);
   }

/* file: VoicePlaybackImpl, module: VoicePlaybackImpl, compiled at: June 7, 1992 11:38:01 am PDT */ 
extern void XR←install←VoicePlaybackImpl() {
   NoName←Q2244();
   }
extern void XR←run←VoicePlaybackImpl() { XR←Start(&globalframe); }