/*mod.obbfuscated.c #obbe                  A @   @                      = <   */char *msg =       /*  2   */"This C source "  /*     */"code file is a " /*  8   */"Protracker "     /*  @   */"module.\n"       /* (                          B @  @*/"This Protracker "/*       */"module is a "    /*1   1*/"C source code "  /*   ,    */"file which "     /*    */"implements a\n"  /* (   */"pattern data "   /* (  
 */"scrambler.";     /* (  	                                                                                                                                                                                                                                                                                                                                                                                                                       Cheers to everyone at        GERP 2015             ð @  ð 	
                                                                                                              M.K. ´›	        ª/         ª+       ¿ Ö[:0ÉS]	Å»    ‘ þ-Q   â^Ó  6 ð^Ã Ö  Ö]A¦@  ÖàG              x›   À x�5 þ+}½X       x›    À x�   x�I   À x�   	      X     Í0 ÖÐG Ö+T    À¬]@
  ¬}E         É   Ö ÖT  â-9ST  Ö+@T    Gü]     D  	    üÍT   G@À : Ö]'¬@  ÖÐG  	    ªÍ         4 �À  ÖÐ7 ®Â.^Â    W    G   Ç  
                   ¬ Ö]D¬p  ÖpG      ÖÍa þð7 Ö+ �Œ   x� Ö+@]B   GüT  x›     	       S         Ö^ÂM0 Öà7      ªÍ$ þà7     	          "   É        þÍ0 þð7 Ö+ ÖT   	S]P   x�B   8        ¬ÍU ÖpG Ö+ ÖT   	S]  Ö+
 þT   ¬]T Ö+ þ]  	¬T   ÅË   ÇÍC:¾Ã}km  âf      ÖÍX ÖÐ'      	  E þ    X­'       9    ´«@T    üT        É   þ+    })   Ö+ ÖT   	S]T þ+    S¶    }@  âp6  SÍE   8 ÖÀ €» þT   c¬T  Ö+ ÖT   	S]E¬	¬T hM1 Öà7 þ/ Ö[SMa âÐGÅ â[hMb âpG . Ö+ ‡-c Ê   þ¿ ÖT Ð;.]  ª/        ª+      ¿ Ö[	:0ÉS]@à@/³à@G x�S Ö+T   	¬]"  
    3    
  5          ¬< ¦M\     %      	    8            @ �À  ÖÐG      ÖÍ Öð7       É  4    b        Ö+  Ö]W  ST       �Í Öà7        Y     x› Ö,  x�2  ¬Í&   G þÀ   	  Y ÖÐ  ÖàG x›     4    x›      É x�` Ö¬TrM` Öp7 þ+  
 ª}H  
 Ö+ þ^Ä   É¬]Gà»      V      x�R Öð7  ¬Í   G þÀ  âT :@Ç}]E@
 þT ¬M2 ÖpY¬ x›   Ç x�     SýR   @	@VüM7 þ          Ì  X      ¾Í âð8  ÖT \; h]P Ö]0:@ÉST      SÝ          Y   Êš$              þí       P¬@      Ö+
 â]1  }T €ü]@@  ÖÐY Ö+SÆ\0Ì ÖÍ2    @ý   Ö+ Ö]5  ST  Ö   ÖMX               x›   À x�% Ö Ö]'h@  Öp7¬S3XMS  x›         ª+ ð^Äü0Ì x�       R   ¬S=8 �@ P  .Ñü;	@M$ þ               ¾»  
:@G þ-®ÂT     %   x�b    âÐG    x�a    âpG       x› x�c             ¬Ë    ÉÍB: Ö]:@ÉST        Í0 ÖpY  SÍ   8 ÖÀ       ÖÍQ ÖÐ'   x�   8     
  8              �Í    . ðT :0™S]        	         È      SË	   É ÖÍ3   x›   À x�@ þ+  G@  ÖÐ7                  ÊÍ ÊðG      x�( âp8     þí9     x�a        SË   É ÖÍF —œ0    @    ¬» Ö]B¬0ÀST     C        :  âT :@Ç}]E    Y      
@ þ]   	¬T     %   G        ÖÍ2 âð8 �®Á.^Â    @ ´«	 ð^Äü0Ì x�€ þ](  ¬T     R   Ì  ¬kh½9.f þf        Ì  !  SÍB   8 ÖÀ  Ö» ÖT    ST : ´]4¬@  Öp7     ª@       }Ë   Ç âÍF �» Ö]:@ÉST         6    )         Ö	 ÖTsí ÖàG   x�0   É x�   SË   É ÖÍ7 x› x�F      : âT :0Ç}]5            SÍ   G ÖÀ  x›	               É  7       T           G       x�G  ¦»       X       ›  	 Ö   íI          þ-      �Í1 Öp7» âT’:@L - þ/ Ö[SMa âðG â â[hMb âàG    c         þ¿ ÖT Ð;.]        É  b@ þ]#@@  ÖðY þ+  8@  ÊpG Ö+  þT   ¬] Ö+ þ]Q  	¬T  Ö+T   	¬]! ðœ     0        C ÖÀ  þÐ7€» þT   2¬T        R    €  þ]    G¬T  þ+  F@  ÖÐ7    x›  ( x�   SË   É ÖÍE      �ÍY ÖpX Ö+T   	¬](¦®Ä  	¦0ÀS½)      ÖÍG âà8 þ  Dü0À â            ´« þT   P¬T  ª+ ð^Äü0Ì x�      ÖÍ@ ÖðY Ö+ þT   	¬]U     Öý	   ÖT ¬M Öà7¬]2 �@ SP        H   ¬ Ö]Q¬@  Öp7  SË   É ÖÍF   ¬Í1   G þÀ   S\ ¦M¬\  â0@T‘:MD€ þT    G¬]  ¬VüMT þ     x› Ö,  x�1}hm".f þf       Í ÊpG Ö/       5 Ö/  
       ÖT ¬M# Öð7  	    ´Í( Öð7 þ  ÖTsüM5 þà7      ´ÍQ ÖÐ7     ¦M'    Ö+T   	¬]      �Í@ ÖÐ7 ´« ð^Äü0Ì x�'   x�1   À x� .	 ðT :0™S]H    @ýa   ´«	T   R¬T     W            !       Ö+ ÖT   S]#  }Ë   Ç âÍD Ê« ÖT   $ST ü»  €0Ì     Ö]S}@  þ   Ê«	 þT   ¬T    x�b    âðG   x�a    âàG  ²    c               þ+  S@  þÐ7 Ö
 Ö4 ST :M Ö ÖT  â-TST    x�S                   Êœ3    U        
Sý	  
      �Í ÖðY        É  R þ»  %ü0À ¾®Ä      ¬M" ,  Ö+ â]  }T  Ö+@]8   GüT   	¬Í   G þÀ     C                 x�"        È  &      ÖÍ ÖpG   Ö^Â ÖÍ  ÖÐ7      	  : â]@@  âp6  	  :@É  8» âT :0Ç}]    :@Ç      P@      Ö]GS@  ÖàG  
  	  	  Y:®Ä  €0À@½X:  %€0Ì  » Ö]):0ÉST   ¬3SÝSS.»  8\0À Ö®Ä¬» Ö]&   ÀST  þ	 Ö]9¬@  þp7 Ö+    V       þí2    
  G �À  ÖÐ'           þ+  SM    ª®Á    `     �» Ö]5:@ÉST  Ö ÖT   	S]       ÖË  !       R    ´«T   5¬T ¬» ÖT   0ST      Öý9     Ê« þT   S¬T       Öý(   @®ÂT   	        x�    þ  `ü0À â      ¬L   H    
   Ç  A  
0 â[:0Ç}] ´«  ÖT   2ST     P        ¬» ÖT   8ST     3       ´« ÖT   S]WÅ Ö]a þ.Â âÐGÅ â]b þ.Â âpG¬ ÖT’¦@8S]A      ÊÍS ÊÐG       Í ÊàG       Í ÖÐX  SË   É ÖÍ � ÖT SM þ  š9    D     ´« ÖT   ST    .ÍY   É ÖÀ  ´«@T   AüT        É  H       É  H x›	      L          Öp7  
     F     üÍB   G@À ¬ Ö]P   ÀST  þ+  @  ÖàG         x�3 âT :@Ç}]%:»  `:0Ì    : âT :@Ç}]» âT :0Ç}]	  }Ë   Ç âÍ þ+  "Å@  âÐ8ü ¬T ¬M8 þà7¬»  þ]   À¬T      Öý(         �Í` Öà7 þ+  
 ª}   
  SË   É ÖÍC Êœ  	  0     ‡« â]  }T   
P  
@     c   x�      Ö» ÖT   ST     	:@É    
     É      A ´À  Öð7              .Í9   É ÖÀ  Ö  Ö]   ÀST ¬ Ö]¬p  ÖðG   x�`   À x�  Ö+ â]9  }T      þíQ   Ö+T   	Å]# ‡š        @» þT   F¬T   SÍ$   G ÖÀ    x�@   À x�     C            	  D    :
  :0Ì      5 ‡À  ÊðG     ÖýW    €» þT   ¬T     6              É           x�I    	:@É   Ö+	]"  ¬T     x›  b âÐG    x›  a âpG . Ö+ ‡-c Ê      
 ÖÝ!  
 Ö+ T   	¬]@ �  @@  âp8 Ê®Ã þ[ü0Ì.]H              }Ë   Ç âÍ)     ªÀ  ÖðG  T ”M ÊpG � â]6@  âp6      Sýb ÖðG       Ë  Y Ö  :M  @» þT   6¬T   ¬Ë   Ç þÍ x›      X   ](}@  âà8    G  	   þ+  B¬@  Öp7š9          
  M  ¬khf\½b þf Ö Ö]Eà  ÖÐG    Y   Y        �Í Öð7 x›     4   .  V\0ÀS      Q              ªÍ& ÖÐG        ›   âT :@Ç}]V   x›   À x�     Sý4               Å®Ä  :0À½       Ì  )   x�   É       H   Ç  
0      ÖýQ ÖpG          H x›  @MV ,  Ö Ö]Uh@  Öà7    FX@G     x›   À x�             ‡š4    7          Öý ÖÐG  üÍ6   G@À  Ö]:@ÉST        É  X ´«@T    Àü]S¬
 Ö]bX@  ÖðG þ+  ' ªp  ÖÐG   x›   À x�    D ´À  ÖÐ7 Ö» ÖT :­QST     x›   À x�W  SË   É ÖÍ:®Ä  €0À@½        F     Ö+T    À¬]B            x› Ö]b þ.Â âàGÅ â]a þ.Â âàG       x› x�c    	           7         x›     (    —š             ÖÝb ÖàG Ê«	 ÖT   bST  þ+ ð]S”@  ÊàG¬¬]h@  Öà7 â+  :0À  þ+    }7   Ö+@T    Gü]( Ö+
]@  ¬T @üVüMG þ      A   G   ¬ Ö[¦@ÈS] Ö+T    §@]Y       Ì  œ9  
  P           É  5     SÝc ÖÐG@ þ](  	¬T  �» âT :@Ç}]E ´« þT   ¬]@
]”@  ÊàG Ö+]  ÅT €+::@É  H     ‘    ‘@ þ]R€0À¬T  Ö» ÖT   UST ¬ Ö]Y¬@  Öp7  
  #   Ç       x�2   À x�  �]5@  âð8¬ Ö]G¬@  ÖÐ7    9   Ç      ¬Ë
   Ç þÍ Ö+¬Í4¦0Ì þÆ  ]@  ÖÐX               x›      É x�    A}@  âÐ8@ þT   	¬]1    x›   À x�3 Ö¬]D@  Öp7 Ö ÖTs¬M' Öà7        G      5  	       ÖÝD   Ö Ö]à  ÖÐG ´«  4¦0Ì    ¬» ÖT’ x�2STs:¬]S@  ÖpG       Ç         b ,  ´«  \0Ì      ¬Í    G þÀ      ÊÀ  ÊðG    x›   À x�     :@É     x�   8   »	 Ö]!:0ÉST  x› Ö]b þ.Â âðGÅ â]a þ.Â âðG    c          - þ.Ó                           �» Ö]D:@ÉST  x›      É x�@ þ+  ¬@  ÖÐGà¾Ã}k@m& ðf    x›	   À x�B    P   È ¾¬  
 â^Ó  	 ð^Ã ´« ÖT   ST      ÖÀ  ÖÐX€» þT   Q¬T  Ö Ö]¦@8ST    x�"   É x�  x›  
   G   x›     É       ¬M4   : Ö]}@  þ        ÖÍC Öp7¬ ÖT    8S]) Ö  
í  
 ´]'¬@  Öð7  ¬^Â ÖÍ3 ÖÐG@]@@  ÖàX            ´«   ¦0Ì     Ö   :M     ¬Í   G þÀ    x�3   É    x›     #                € þ]  ¬T   SSSÝ¬S      x�" Öp7    #   G         A      x�         Ö^Â ÖÍ$ ÖàG x›  0   Ç     ´«@T    Àü]' x›     C     ¬Í4   G þÀ     W         Ê«T   ¬T     
:@Ç  R âT :@Ç}]" x›  T   Ç  
 €» þT   U¬T     )   É  
 Ö  :M2         `    Ö+
 ÖT ¦@8S]B          S       $   œ(    !     x›  x�6  › x� ü .Ñ:@Ç þ-     ªMV   x› x�A   É x�  x›      L  P þ+  bü@  þp7¬´‘hk.o þm&  ²  	  c              ¦®Ä  ¦0ÀS½ ¾ â]C}@  þ     x›   À x�YŸ°               @    @» þT   8¬T @ þT   	¬]'     Sý8 ÖÐG  üÍ   G@À ¬» Ö]7:0ÌST     @ý9   ´«  4\0Ì            8  4}»      -` x›     G          þÍ! þÐ7 Êœ        ¬ ÖT    8S]   â^Ó ð^Ã    Ö   ÖM%    
 x�   É     SÍ    8 ÖÀ        C      ¬\  ÖÝP                      þí&         x�) âÐ8 þ+  ¬@  Öp7         x�(œ8    P          ÖÍ7 ÖÐ7 Ö¬^Âí% ÖàG Ö+T   	Å]% Ö+@T    Àü]¬» Ö]7¬0ÀST  x›     H       @ý6        '   É        þÍ þÐ7    x�T   É          x› x� Ö» Ö]I   ÀST  Êš    I    ¦¾ÃSkmU âf: Ö[:0ÉS]9 Ö¬]@  ÖÐ7 þ+  S@  ÖÐ7    '            I     	   þí   Ö
   :M    x›     E    Ö+SÆ\0Ì ÖÍE                    É  H¬»	 ÖT’¦@8S]    $   Ç      b   Ç   Ö ÖTsíV ÖðG Ö	 Ö]   ÀST € þ]H€@G¬T  x›     `   ¬
 ÖT’¦@8S]I Ö+	    E  ®Ã þ^Ä  ¬]!     ¬M9       $      s Ö
   ÖM%   ÖST í1¬T ¬khf.fü½ Ö+
 ÖT ¦@8S]!       þ-  ÖT \;h]#  	     A    Ö+ ÖT   	S]9Å .Ñ   þ-4 þ+  r ª}c ÖÐG þ+    }G        �Í ÊðG       B         x�R   Ö+ â]C  }T        É  (¬ þ]H   À¬T   	  a     ®Â  
      ¬}[¬}3ÅP \  a þ@  ÖðY     ªM'   x›  
@   G  `      ªÍ ÖÐG  
    Öý ÖÐG    X                  }Ë   Ç âÍ      ÍD ÖÐY              
    ÖÝ    �®ÃP    D þ+    ªp  ÖàG     ÖÝ      8           x�"   À x�   	SÍ   8 ÖÀ € þ]I€@G¬T   
  A         @ ¾À  ÖÐ' ´«T    À¬]U    @Ý6   Ê«T   ¬T ]}@  âà8 þ	¬TrSM þp7  SÍ   8 ÖÀ  ðœ     T        V       ¬¬T SM3 ÖÐG �  W:@É     x›
   À x�  �» Ö]a:@ÉST  �]7¬@  ÖÐ'@] @@  ÊÐG    
:@Y  9    E   É  
    
0    2    X           Í ÖÐG    #      Ö  
í$  
 Ö+ þT   	¬]       E    þ/   ª} ÖàG€» þ]V  ¬T       ÖÍ7 ÖÐX¬¬]h@  Öp7. x›ú@G x�       ªÍ ÖÐG   x�P   É     	¬ÍS   8À ]a¬@  Öà'  
     "        ¬   Ç x�¬» ÖT   IST  Ö   íR    Ö   íY    x› x�!   Ç          @      ]@@  ÊðG  ¬Í   G þÀ  x› x�      ®Â[
  	Å]€ þT €@G¬] Êš9    F          ÖÝ      x�"   À x�       ÖÍ ÖÐ7       É  X     �À  Öp7®Â[  	Å] ´«T    À¬]B  	    ª@            É         x›
 x�     0   È        4        ª+ þ]"ü0Ì.T ¬¬T ¬} ÖÐG      x�   @®Â þT      x›     U   «	        Œ ðš(    R     þ+
    ª}4     
  ¬   Ç x�` Ö]:@ÉST     7    Öð7    C   Ç  
@     @ý     Ö+ ÖT   	S]Y  ¬ÍA   G þÀ       	  Q       þ-U Ö+¬Í¦0Ì þÆ     þíF       3            	            É  B x›      Ç x�€» þT   (¬T @¬VXM` þ   Ö ÖTsí	 ÖðG ´« ÖT   !ST    ¬Í   G þÀ  þ+  0X@GXdr  	   ¦MQ     
              ÖÍU ÖÐX             &             SÝP ÖÐG ´« þT   6¬T         Ç x�1®Ã þ^Ä  ¬]#      ÖýS   þ+  þ]VÅ@  âp6  	    ÖÍF ÖÐ7 x› x�`   Ç          ÍW ÖÐX€ þ]F   G¬T   }Ë   Ç âÍ$+  8€0À@     Y   Ç            Ì  1:»
  Q:0Ì     ´« þT   ¬]8¬» ðT :0™S]W Ö+
 ÖT ¦@8S]c Ö]):@ÉST  Ê«@T   AüT   ¬Í   G þÀ  þ+
    }7             � ]G}@  ÖÐ' xœ          
 x�D   À x�  Ö+ ÖT   	S] þ+  SM  ¬ þ]&   À¬T  x›     3     	   ÖÝP    ¬Í9   G þÀ ¬]WÅ@ }P  Ö^ÂM8 ÖàG  SÍG   8 ÖÀ       	  6    T                $    ¬» ÖT   RST     1            B ´À  ÖÐ7+   €0À@  Ö Ö]Y¦@8ST        È   þ+   #¬@  ÖÐ7       x› x�2    x› Ö,  x�       ÍA âð6      	  3: Ö[:0ÉS]¬» Ö]1   ÀST     $ ‡À  ÖpX      ¾ÍQ Öp7      �ÍV Öà7      ‡Í0 Öà'  
¬^Ñ ªÍH þp7 Ö Ö]7à  ÖàG Ö» Ö]2   ÀST :  T€0Ì   x›     F    Ö+ ÖT   S] Ö   í%    þ+ ð]X¬@  ÖpX                X                Ç x�A¬  S¬}  S    x›   À x�G x›     X         ÖÍ) ÖÐ7       Í6 ÖàY¬Å=1¬p }P   
    Öý6 ÖÐG  ÅË   ÇÍC  	    ÖÍG ÖÐ7 þ»  Tü0À ¾®Ä    EX@G       I   G       x�W   8   .»   &\0À Ö®Ä Ö+ þ^Ä   É¬]3  ^ÃM ÖÐX    #          I   É  
 Ö+@T    Àü]6 þ+  )¬@  Öp7   	:@Ç  %  
  0   G    Ö Ö]Fh@  ÖÐ7       !   @» þT   Y¬T   
  V ¾À  ÖÐ'  ^ÃMV ÊðG x›  XM ,        É                         x�W       Ê«	@T   6üT S+ þÍ8¦0ÀS €»	 þT   I¬T        G    }Ë   Ç âÍ$ ´« ÖT   S]  
  X   Y         É  Aš4    C      ü=Iü@  þ   þ+
  C@  ÖÐ' Êš         Ö+ ÖT ¦@8S]3 Êœ    #     þ+  @  ÖÐX     ÖÝ3     Ö» ÖT :­8ST @» þ]&€0À¬T   	    x�V    �» âT :@Ç}]1       &             `  
P  
@    c    MH          Ì         U  @ þ]€0À¬T š9    S    S+ þÍI¦0ÀS     @Ý5     Ö+ ÖT ¦@8S]   x›   À x�@»
 þ]9€0À¬T       ´Í( ÖÐ7    V   X„E  ¬^Ñ �Í# Öp7  
     É  S Ö¬]B@  Öð7@ü3 XM1@S   	      W¬ Ö]0   ÀST                   Ç     x›   À x�U    @ÝT   þ+S='S@ P    x›	   À x�`€ þ]¬@  ÖàY     SýP ÖÐG   x�"   À x�     C ÖÐ  ÖÐG    x›  V x�   
   ÍR ÖÐG þ ¬])S@  þð7ü»   €0Ì    (¾Ã”k@mTf: âT :0Ç}] Ö» ÖT   ST ¬  S¬}8  S    $}@  âÐ6   x�F   À x�     x›   À x�%     @ý      	  T     ‡« â]  }T  Ö ÖTs¬M` Öà7 Ö+T   	¬]V Ö+]  ÅT     Y   Ì      F   G   ª+ þ]Tü0Ì.T         É   Ö+T    §@]9 þ+]BS@ SP     H              	   ðš    $        6SÀ  ÖÐG  	                R    X¬L    ¬ Ö]I¬0ÀST       Öý(           P Ö+ ÖT ¦@8S]1  	     É  U  	¬^Â ÖÝ2 ÖÐG       	  7  T   Å]9  SÍ`   8 ÖÀ ]¬@  Öp'    V             SÝW    �  hMG Öð7     x�@  Z    	           &       Ö¬]¬@  ÖàG  T   Å]"  
    Í$ ÖðY@ü] þ@  ÖàY þ+  r:M# ÖÐG   SÍD   G ÖÀ € þT €@G¬]c@¬S XMXüS  ´œ           �À  Öà' x›     a   œ          
 x›   Ç x�       @   @®Á^Â         x�7              ¬» Ö]@:0ÌST  þ+    ª}%     ¬ÍE   8À    Ö^Â ÖÍ# Öà7     SÝH ÖpG           Ö Ö]h@  ÖÐ7    	             ¾Í4 þp7 þ+  }@  ÖàY þ+ â]T}@  âà6      x�     
 x›   Ç x�U �]¬@  Öà'      ‡Í$ ÖàX¬ Ö]!  ST   }Ë   Ç âÍ)        	¬ x›   Ç x�    & ´À  ÖÐ7 �]D@  âÐ8    
 ÖÝ   
  	          SË   É ÖÍ%   x�3 âÀ  Öp7      Öý$     ]@  ÊàG(»
       þ+  T:@  ÖÐG¬¬T hM Öà7  T ¬MA ÖàX  	   @Ý&     ]@@  ÖÐX    @Ý         ¾À  ÖðY                      @]¬@  ÖpX€» þ]c  ¬T  ðœ   	            �ÍQ ÖðG â»
  
0    & Ö¬4 í2ST   
0 â[:0Ç}]E Ê« ÖT   QST   SË   É ÖÍG¬ Ö] ¬0ÀST  Ê« ÖT   2ST .   '\0ÀS      :@É  ¬ Ö]:0ÌST     
0    c  
     Ç           É  &@  ¬}!   Ö   ÖM5  T ¬M ÖðG þ+  7@  Öà7      ´Í ÖÐ7           —œ0    !        
Sý5  
  }Ë   Ç âÍI  @Í5   ÈÀ     x› Ö,  x�@	 ¾]'Å@  âÐ8     ÖÝU  ¬ Ö]1X@  ÖpG   x�I       
   Öý   Ö ¬^Â¦M ÖàG       É  Y x›         Ö ÖTs¬M) ÖàG Ö¬]!@  ÖÐ7            €	 þT    G¬]	 þ+   þ@  ÖpY¬ Ö]Y¬@  Öp7 Ö+ ÖT   	S]       Ç  W      ¾Í# âÐ8        É        ÖÍ ÖÐ7      ÖÍ ÖàG   x›   À x�'Å®Ä  :0À½0 ðœ)    1      ¬Ë   ÉÍB       B           c        þí%        ÖÍ  Öà7         ¬ Ö]F  ST  þ+  4@  ÖÐ'        Q         ÖÍ3 ÖÐ7€» þT   a¬T ¬» ÖT’ x�SSTs x›	 x�#  › x� :»      S
¬]'@  ÖpG   x›    À x�C       G        ÖÍ ÖÐY      ‡Í) Öp' Ö^ÂM ÖÐ7 þ+ ¬:@Y:½: Ö]Q:@ÉST  â+
  ):0À        É  R  
   x�    }Ë   Ç âÍ     "  	         É  R  
    ‡ÍW ÊÐG      ¾Í7 âÐ6         x�W¬ Ö]:0ÌST       3         D   ¬»
 ðT :0™S]a    }@  âÐ8    SX@G  ü Ö]5ü@  þp7      ÖýD      x›	   À x�4    ¬@      x›      É x�0 �]}@  Öp'     	    x�5     @ÝA    x›              ÖÍ ÖÐG¬S XMESS     "@      Ö¬TrM ÖÐ7 ðš)  	  C     x›     P             	 þ+h]@  Öp7       É  U  ¬^Ñ �Í6 Öp7   â^Ó ð^Ã        SÝ! ÖpG Ö ÖT   	S]       &   ¬» þ]I   À¬T                x›   À x� Ö
¬](à  ÖàG x›     6    þ+ ¾\@M âp8    2       x›
 x�U   É x�                    Sý( ÖðG  	  %         �  }@     :  :0Ì   þ+  €½)     x�   É    Ê®Ã þ[ü0Ì.]0  SÍ   G ÖÀ   ÿÞÐòêÛâßÝÜÚØÖÔÓÑÐÎËÉÇÅÂ¿½»ºººººººº»¼½½½¿ÀÂÃÅÇÉËÎÐÑÐÁ´¹¾Ãð)1,6GIHPNQMOUSVY\_bcefhijkkjhYB;)íÇºÙØÎÚÕÑÓÒÒñ&**&øíåèí    ¥öÐÎçêêÞ4YUEÄ—Gðÿ_hý$*
 ûõèåÝÛÑÐÀ„ß€¯À€€° €ˆ¦ßæ›Çßß»ÛßÃ í0ýØ/,:÷|?màg`7hH+@DçP ýÚúáÝÀ²·Í¨««²ƒ›¢ŒŒ•š„€·Œ€ËÀ€€ÿð€Ï ¢“öµì²Ëÿ(À×`ð#C÷?V SUh-{PHK8xmPmHw~0oD ?+å((èÕùÍò°²² £ˆž€§€€§€€‡ €€Ô€€ €ûê€�7°€À °èè3¿’ÿ¼ß ž÷P Õ+Ì$;7\?x@U(7}Pmh1ãW `.H_gD ,(ÿÜü¹ò ŸÐ€µ€Òª°€½Ð€¿ ¯Û€€ÓÈŠèˆ³óÌ€¹ü ï Ï ¬÷ÔœÿX°çÜ+ çGJE+h?`_ed`=@ýdìJ5D;V Èo ÿaçÓ(8Ø7nÔÿ&àÿí; ä÷ ð²ÌåºØ€&€¿Ö€Ÿä€€¶„€è€§®€Ÿ€¿à€óü÷Ð/(70P>k+}lS_H{|~U`/Ov0×~*4$ÿ0ÛØ@èŸ- �ðïà€ï €É€´¯è€× ˆ€ð€‡Ì˜•€€·Ø™ËÄ� €³â¨Ÿ ØÐ» ¿(§3Ð°ïkà3ç] ÿ"tØKHGD*(<+?oÉxÍPíè ?Ðß,ïçØ¯ �€ôÈà€?À€äß¸—Ø§½À�èÆÝœ‡ �ËÐÉäæè¯ìû´Õ à@€OÐï÷»@¦GÚÿ
ÿù2ç-ñ#Ò/	ß[Ð	ßP‹4üÊ? Û)ß ûýBšÿHÀ ÏMàÃ÷P˜ì÷èüÛýùàÒç.°ïôÙüØ×÷Ø ÅÍÏ=ë÷û(êò ÿ4Ç Àý§Ç	üåðÿÛïNë?ä÷T2ïo<ûcp ?H'!MßW÷ßêøÙåø×ë¿÷¯Òä‘òð·ÀúÒ¯à·Åì©àÜÖÿÕüŸ÷˜ÐïÄ$¶ê û ç(×ëBÒWè7@ïU+@/?8$kÿH((C?$ Pè ÿ èýò·ê÷¨÷ÐßÙ¥ñ¥Ç˜È­Ø¹À¿Â°ÇÐÃÚÜÏÕÎ÷áÈøíðÿ2â/çÿ; M'8ÿJ?2b'@2O : /ìÿðàîàèÛô×àÏÌÚ²×ØÀß°ß¤ßôœÛÐïÔÝ¾ýð Ñþã÷àÿ íï3è( ÿóDßñ   ÷Ùú,Ìáì÷!èÿ<Ý øøûü÷ÔìÝíìôíÝÃú Õàìææóèñëõæóí ë	øÿä	 ä2ÿÿæÓøùúñ   å+èý ïÚ ïÿêðÿÿúý ÿþô$û!ù 2
ù'ù"÷ÿù ôìûìåüòâûàîÞüâÛùæâãí÷ÙîðçäûÞÈÚüàçôí Ýñøïøð  è&ûèýæã í
îÿôîäßýõù	
ú
ø ÿ ÿÿüóýõÿü÷úüåóåìñüýåÿóðõöõüÿ õ
íúèøõþõÿüñôüôùúöÿßëìûþôýî ü
öû ÿ
þú öøôùôçâùèòðãðûêãóàïðíòâñúá÷øû ý
öù"		  ü þøüþý í õû ðæýöí ÷ýõòûåúòøóüûøøõõí	øì	ù öøòþ
 û 
ýûÿþ	ÿ	ÿ÷úñìýñèûýùòúõøð÷óûèÿóðî èûí÷ûøìòþõüúûð  È¾¸½Î»kUjVÊÑ;  È¸Î»kUž¸½VÊÑ  j-[D[JSH`OXY\w@+<öõÐž¹ÈÄÚ  0))"'!-%)*,9û

ûèÏÜãâí  SdPMcUC^i-<{|``||t|jYrfHmo*QX ßÛæßÔ¶ª¬¡—’‘‘“„‰˜„€�“ƒœ´‰ƒ•±ñÎ€¼¯¢èØ×ç   $*06;AFKPUY]beiloruwy{|}~~~~}|{ywurolieb]YUPKFA;60*$ úôíçáÛÕÏÉÄ¾¹´¯ª¦¢�š–“��Šˆ†„ƒ‚��€��‚ƒ„†ˆŠ��“–š�¢¦ª¯´¹¾ÄÉÏÕÛáçíôú    «<Jþ{�™êÇ}ÑóòŒç%œÎþüm!7(²”3³ä
EËŸ¨àŸ)´ïW\_†³�9‚‰}q©ÜgÐ"F«ñéž0o¶îùu.¥”Yi€Mè…žY@X×ûŽ<šE¹F_ÎâÆ8Â�$µVK=Í�Y„ŒŸÌ$<,kÎ-öªÚdÃ7ý©·ŽäÓŠ›ù1~Î-Møïƒž±îÚÐ2°Ãsš$fáÞŽˆ],G•E_üw7æf{F}Ö¡ûm8@]m½xÓ	ev'
¡gq²ç£À»9šŽ•Sæë‘ŠZ¶Ù×R?Ò´Ç]	žOÜL…Sè¬¥6¢D„$€J5C?xØ“–ûÙy¼Ó
Þå\�Ç‘Ô,Rà·op›Ø�`þD]ïGÖ&qÿšj}âlq*R�ë­Ê5.ÃýY÷*ÚDÊGÛ§gz‚�“±¼`íUÛ�f'y±x§¶�˜û Dn¥^ˆ&®(V èfíîDw’`Ø{`´iak»»Ì¢DÙþ‘tF:~YŒ!ñÇèðFó¶{ôÑ›í›-t=Ï‹o§ÀQ�Mín¡~ÄßGÚ NÙ¯‚ûpv|\àã¼øœ‡/‘ZÔàzÖ•é|Á_Ó7\o{ÝKt“³¸Ä�	úZ
š	¯•Û%Yt|olìÊ,1Æ¾›\Íº9qŽˆœs8ÇÄxðMûÒwYSÁ9<÷ï‰ês+Ò!)îÙVÈ$šaŽºàè=ë§‹ÞK1Ô9�êÝ#ý¾k²½ÒÔŽ5Ë¡)BwÍ2¥Ó«z4¾œf²äî¿ ÅýT©ÖPì°ß,×¹Ç»Jô’D†æ”È¯ìKIÀ®–—O—“°µ›·:š²Üðºº+qtT±‹Ý‹•Ê:…º$”ÜDûo{L€8éz¶¨DÎû¯ÆƒZ]lù}Äæmþ—á‰ »¨™"¾ìØîÛy%~™>gÐñ„ºë€ÅÖ)æ?‚8%¦81Žð§Kul)HÖÝèÛá&d´l£LyÞöþò\šÖÊ-x5vÔ„ª1Ö¢UÐ‰@Þ�7<íUQ©ùÆUFcP<ÖÜUÁºÆS')^B3=êGüw€'t^p]ï/4Ën0¦w©ÔâÞ”ùù\ˆZ©ÎÇH„]åó9¢bÏbmâÖ”‰ï‘^%®a=« ËÊ×ê¼˜ #-™A^ß6BX‚ƒÃ¸G›‹5£?ØXÙè@†2pá¥%Œ,¡ôŸ)¸ÔÅ,4ÿÇV1ïËŒÈ`Í.vœbd_1xò–ºg™tÀÂu¼^ûL—~¦5@±†œþ!¥4rl°~C_Ä‘ÅªÏ±™ªkJÍO ¸rÇ­–ô©ÄÄ:åˆ:�mG�øŸ÷IyòãÒ{qŸF[Ê…kifÜË�xðNÎ“š-@ˆn‹g••®ãð¾¶‚÷0ª£ˆd‚¸p»÷?S°‰$4lã¸Ã(pjGTb/ùÆëœ‘Ô‚fôùTºªwµ6Î:pt‹¼è�¼{Ó-Xl#.û‘slƒm±t‰%"¼—‡­â¿N>Ú–,xn÷lLa‡jOgÅvŒ3{–¼½27€¶	Oð L'‘É'Oç GCî6#žÄƒß©j§b}öÖò‘çÏ=»Œ9¢
b_X¢¹Ï=s#*:6¾t%Ae7}ÉÚ£´aßzSÏSr1ƒ~­¢(·ëîÛ��G	1gÝ‰N vÌmÓÎ.>UÌÁ=®ŒkÜDõTÜ'3÷vwêÑFÚ3Òu“¢?i'†%1\›>�gE†>à¥½àdwòzZæå‚û*‰µgØ8àÂà «Ü�qÇE)×�&n¯¬í«Mbˆû×'Øp'¥kÛå5ké_çs[»u!6Ç(ÕÅýŽ ¤ß�Å²F»ÀÅÄrÌÔÈ¶¢aÓÓ šw-¸&eýŽùßM£Ð:Mo½D8?j·š%L
*Â²]Ú_±ì ÍÔQü€}d^)uù7ÌN¶ä“îÀãwÕªw�ñJTãDÖ(„�Ghë)BŽêî
™+eÒ“UÙ#œM¬Â)�aòœOÐW$ç1vöÄ2©ã¡¤ÈóI;AÞÃ�@äûÔFÕ…ö�=Yj¤5§€&"{EDîUÐ@¼Nªº¾ ýF#…ÊvÈfI·gù¹ŠW¢#¨{nß)ÄþXþâ;›½¿J¶;O¾õFU6áÉy‹Yf«’Ï�¢	½WsPk•·ÔŽBwÞÚo1;w!œ™Ý°ý}õ,Ú"•‡È�d•*Ü§Ùz Ïö  ¢35WÑ´Ü‰(�]@&LY·žv®¢Žêp{ÈÛðB²jêÐÏ�òÍ¼ÇMÅG×ÔìHPL²És[éÂð+2,–É¦4rwè¸åGµx Å+s(¼ó·œ×~óŒ DŒÙ“íIîî÷ÂÁ»†ˆý <ÛNfÏ/p–,Î€Òò•²eð8M^`ÊM÷äºÉBuÆ²Þ©‚ûÊ=h±/Y­íØ«]âæ´ú¯,³»F+wvz¿5]eäÑEbÒÿrs¯nûAÛ£z¢Ô”w–ˆ•ü[¦~öê�ÅÕ¥Dy�mbýä­çê‰ˆ²â²tñ”c“MmwÐØm¾²Óö0-?˜‰þ!´Ý>Š%,ëÈ±K[6$lžX¬\F�ëµ¸z|=UByTÔ¡l8×Ðó�U[»ñè�©&Ø$MKÔÖcA‰O…"Ä¾Ï«fÄ‹zà°“×Ï}ê¯¨@âÏ}%jB--mM©ëÕv))‹öïÁ0Ñ—kpB¶y6/è’|SS:f�ùG'?ûVÀ‘#à*f©Ô*mµ2qdZ‰eƒ5�öí%«Î'­[h˜à\J—‹s„!ãE¤k«×Àì‚z}“§z-øm,þøüx@ðÇd_ lÒ¡|»šâpa hþS¥„¿ü´¨S�æ]–-´¥uÊ1Y4»øÜ–Ð	ý‡âHƒñCSÚd!ÆäæEhT<|V7FÅ{­S+5sHœéðÜ²Kt©¬_ZUêÕV|-&>&*Üý* ÂW/ßB—šºÚR\ýM¹×H½ÿSPÉÔÕ‡ðêŠ¡ÔË‚ò;6zMy07 f¯EXjôa´:xû<:	cJÎ°*wà½bìÝJ€„aÙ¢'c¤ç"2áÜÎdÉÀ÷�'I¶j/JžgKˆ`}¢]@Ül;·ùîõÂz/dm–‹?Ý­—$¯êâŒlÐoÊð9¶¨åÁeÇ¯õ…JX*Òìº)Î+°8²·Ã|½¢éÁ‘Ûuã5xøvé QÆ°™ŽØÎF`þñ½ßBZftF�’mÜÆ{@d Ÿé:?ú•,hJFÝ=€öÉújËÍcÒ}L’‘òÒE¼˜ˆÅ�Ùù¿\¢ã©<>ô›ÈXl_ a¶,RsÑx3‚lXÖã“ë5œçd5ÓU ;±ø!!ûÿÆX÷™©2Úcx“lŽÑ î	fä_>‰æ~ùŒê-@ÈRð-‚œöa WÒûK@íu¬¤BµBßÓÿ¨þL˜#X÷+´õ^¼ÖJ«!2>umMŸÇy¥›µ‘Ë°ÖØ‹eo'K§Ê}õÖ¹_˜ž¢¿ôxOFòª�|¦úéÒ@õp/7äÓ3ŠVt‘¶öx¬C›Ç”Á]ðD¡Í§ß¯Sí£S2ÞN±J¿ELX€ÃæËÑ7#Mõa%¡\nçY¸¡sÌG§Öá¹%RÁtöXxþ7AÂ%1þÊ¬ù\ÒíÜ7Iºg\ÕõbÝ} åÐoŒØ(l4eú4›„‘Žó£çîüÒˆ´•ã$‰v¼–9S÷xŽÖ)ƒ{^ï­z¼ü$e,z½i­ÌxBvíË½ø²6yPªþ‡hžŠ6{{�VÓà3ªÖ ¶	™exµéH¹Ÿ‡ÛUÅÌ†knâ;N¦ªrìåƒ3´;léÛÅÏ÷¾}<Z­c¯2NŸaBàÿuG“GSrõŒªÑf>]OVðÎO±Ó	gïÓ±ßÚq«ç_Œœ“ÝÃ¹IÖ†W¹}c1õñ3Ÿm#3ö–è±ðŒâH¥Í†	æˆ”E½ÐPéÿ©ÓâÃÃ˜xBËÆ‘õÎíQŒ˜/�äJõÙµvtØO¡/gP‹~ªE/ü=k‰g 6­Î–›Snüª'_:ÝŠs¯ÃÑârû-…Ê
I‰‰Ýt¥#Ë²„ú+#Áö×A¶DÃç¥  ÐêâÝÚÖÓÐËÇÂ½ºººº»½½ÀÃÇËÐÐ´¾ð16IPQOSY_cfikjY;ÇÙÎÕÓÒ&*í  RTEIIPURQNNUWUYceB%)øë»ŸÄöÜ  SdPMcUC^i-<{|``||t|jYrfHmo*QX ßÛæßÔ¶ª¬¡—’‘‘“„‰˜„€�“ƒœ´‰ƒ•±ñÎ€¼¯¢èØ×ç  SdPMcUC^i-<{|``||t|jYrfHmo*QX ßÛæßÔ¶ª¬¡—’‘‘“„‰˜„€�“ƒœ´‰ƒ•±ñÎ€¼¯¢èØ×ç  SdPMcUC^i-<{|``||t|jYrfHmo*QX ßÛæßÔ¶ª¬¡—’‘‘“„‰˜„€�“ƒœ´‰ƒ•±ñÎ€¼¯¢èØ×ç  */
/* This is mod.obbfuscated.c. Compile with a C99 compiler. */

#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifdef DEBUG
#define dprintf printf("%s():%d  ", __func__, __LINE__); printf
#else
#define dprintf if(0) printf
#endif

static const uint8_t CMD_JUMP = 0x7;
static const long O_MK = 1080;
static const long O_SONGLEN = 950;
static const long O_SONGPOS = 952;
static const long O_PATTERNDATA = 1084;
static const int POSLEN = 128;
static const int LLEN = 4*4;
static const int PLEN = 0x40*4*4;

/* Module state */
static struct {
  /* Each source line has a "next" line where the linear succession is copied. */
  int *nextline;
  /* Allocation state */
  int *linepool;
  /* Source pattern data, destination pattern data */
  uint8_t *srcp, *dstp;
  uint8_t songlen; /* 1..64 (128) (number of positions) */
  uint8_t hipattern; /* 0..63 */
} p = {NULL, NULL, NULL, NULL, 0, 0};

/* Source file, destination file */
FILE *sf = NULL, *df = NULL;

void init(void)
{
  fseek(sf, O_SONGLEN, SEEK_SET);
  p.songlen = fgetc(sf);
  /* Truncate because PT supports only 64 patterns. */
  p.songlen = 64 < p.songlen ? 64 : p.songlen;
  p.srcp = malloc(p.songlen*PLEN);
  p.dstp = malloc(p.songlen*PLEN);
  /* Make a linear copy of file pattern data to p.srcp */
  for (int i = 0; i < p.songlen; i++) {
    fseek(sf, O_SONGPOS+i, SEEK_SET);
    int j = fgetc(sf);
    fseek(sf, O_PATTERNDATA+j*PLEN, SEEK_SET);
    fread(p.srcp+i*PLEN, 1, PLEN, sf);
  }

  fseek(sf, O_SONGPOS, SEEK_SET);
  for (int i = 0; i < POSLEN; i++) {
    int j = fgetc(sf);
    p.hipattern = j > p.hipattern ? j : p.hipattern;
  }

  p.linepool = malloc(p.songlen*0x40*sizeof(int));
  p.nextline = malloc(p.songlen*0x40*sizeof(int));
  for (int i = 0; i < p.songlen*0x40; i++) {
    p.linepool[i] = i;
    p.nextline[i] = -1;
  }
}

/* Allocate a line having number n in any pattern, or nothing. */
int lines_allocmod(int n)
{
  n%=0x40;
  while (n < p.songlen*0x40) {
    if (-1 != p.linepool[n]) {
      p.linepool[n] = -1;
      return n;
    }
    n+=0x40;
  }
  return -1;
}

/* Allocate any line. */
int lines_allocany(void)
{
  for(int i = 0; i < p.songlen*0x40; i++) {
    int n = p.linepool[i];
    if (-1 != n) {
      p.linepool[i] = -1;
      return n;
    }
  }
  return -1;
}

static const int JUMP_NONE = -2;
static const int JUMP_ANY = -1;

int jumptype(int l)
{
  int absval, abs=0, any=0;
  uint8_t *entry = &p.srcp[l*4*4];

  for (int i = 0; i < 4; i++) {
    if (0 == ((entry[2] & 0xf) | entry[3])) {
      any++;
    } else if (CMD_JUMP == (entry[2] & 0xf)) {
      abs=1;
      absval=entry[3] % 0x40;
    }
    entry+=4;
  }

  if (abs && any) {
    return absval;
  } else if (1 < any) {
    return JUMP_ANY;
  } else {
    return JUMP_NONE;
  }
}

/* Find and allocate absolute line allocations. */
void pass1(void)
{
  int i, jt, n=0;

  lines_allocmod(0);
  for (i = 0; i < p.songlen*0x40-1; i++) {
    /* Get preference */
    jt = jumptype(i);
    if (0 <= jt) {
      /* Absolute allocation */
      n = lines_allocmod(jt);
      if (-1 == n) {
        printf("ABS: i=0x%04x, n=0x%04x, jt=0x%04x: allocation: FAIL\n", i, n, jt);
      } else {
        dprintf("ABS: i=0x%04x, n=0x%04x, jt=0x%04x: allocation: PASS\n", i, n, jt);
        p.nextline[i] = n;
      }
    } else if (JUMP_ANY == jt) {
      /* This is an ANY allocation: processed in next pass. */
    } else {
      printf("NONE: i=0x%04x, n=0x%04x, jt=0x%04x: allocation: FAIL\n", i, n, jt);
    }
  }
  /* Force jump from last line to first. */
  p.nextline[i] = 0;
}

/* Arrange the n elements of array in random order. */
void shuffle(int *array, int n)
{
  for (int i = 0; i < n-1; i++) {
    int j = i + rand() / (RAND_MAX / (n - i) + 1);
    int t = array[j];
    array[j] = array[i];
    array[i] = t;
  }
}

void pass2(void)
{
  /* First randomize the remaining lines */
  shuffle(p.linepool, p.songlen*64);

  for (int i = 0; i < p.songlen*0x40; i++) {
    /* Get preference */
    int jt = jumptype(i);
    int n = p.nextline[i];
    if (JUMP_NONE != jt) {
      /* Absolute or any allocation */
      if (-1 == n) {
        /* Not already allocated (could also be unresolved absolute jumps. */
        int a;
        a = lines_allocany();
        dprintf("ANY: i=0x%04x, a=0x%04x: allocation: PASS\n", i, a);
        p.nextline[i] = a;
      }
    } else {
      printf("NONE: i=0x%04x, n=0x%04x, jt=0x%04x: allocation: FAIL\n", i, n, jt);
    }
  }
  {
    int a;
    while (-1 != (a = lines_allocany())) {
      printf("Unallocated line: a=0x%04x: FAIL\n", a);
    }
  }
  /* Verify */
  for (int i = 0; i < p.songlen*0x40; i++) {
    /* Get preference */
    int m = p.nextline[i];
    if (m == -1) {
      printf("i=0x%04x has no next line installed: FAIL\n", i);
    }
    for (int j = 0; j < p.songlen*0x40; j++) {
      int n = p.nextline[j];
      if ((m == n) && (i != j)) {
        printf("Loop detected: i=0x%02x, j=0x%02x, n=0x%02x: FAIL\n", i, j, n);
      }
    }
  }
}

void setjump(uint8_t *entry, int jt, int dline)
{
  uint8_t pos = dline/64;
  uint8_t row = dline%64;

  /* B command must be BEFORE D command */
  if (JUMP_NONE == jt) {
    /* do nothing */
  } else if (JUMP_ANY == jt) {
    int found = 0;
    for (int i = 0; i < 4; i++) {
      if (0 == ((entry[2] & 0x0f) | entry[3])) {
        if (0 == found) {
          entry[2] |= 0x0b;
          entry[3] = pos;
        } else if (1 == found) {
          entry[2] |= 0x0d;
          /* Next position of the song and the row row. */
          /* Silly decimal representation! */
          entry[3] = (row/10)*16 | (row%10);
        }
        found++;
      }
      entry+=4;
    }
  } else { /* JUMP_ABS */
    int bdone = 0;
    for (int i = 0; i < 4; i++) {
      uint8_t cmd = entry[2] & 0x0f;
      if (CMD_JUMP == cmd) {
        entry[2] &= 0xf0;
        entry[3] = 0x00;
      }
      if ((0 == (cmd | entry[3])) || (CMD_JUMP == cmd)) {
        if (0 == bdone) {
          entry[2] |= 0x0b;
          entry[3] = pos;
        } else if (1 == bdone)  {
          entry[2] |= 0x0d;
          entry[3] = (row/10)*16 | (row%10);
        }
        bdone++;
      }
      entry+=4;
    }
  }
}

/* Copy each source line to destination. */
void pass3(void)
{
  int dl;

  dl = 0;
  for (int sl = 0; sl < p.songlen*64; sl++) {
    memcpy(&p.dstp[dl*LLEN], &p.srcp[sl*LLEN], LLEN);

    int next = p.nextline[sl];
    int jt = jumptype(sl);
    setjump(&p.dstp[dl*LLEN], jt, next);
    dl = next;
  }
}

void dump(void)
{
  char c;
  int i;
  fseek(sf, 0, SEEK_SET);
  for(i = 0; i < O_SONGLEN; i++) {
    c = fgetc(sf);
    fputc(c, df);
  }
  fputc(p.songlen, df);
  fputc(127, df);
  for (i = 0; i < p.songlen; i++) {
    fputc(i, df);
  }
  for (;i < POSLEN; i++) {
    fputc(0, df);
  }
  fwrite("M.K.", 1, 4, df);
  fwrite(p.dstp, PLEN, p.songlen, df);
  fseek(sf, O_PATTERNDATA+(p.hipattern+1)*PLEN, SEEK_SET);
  while ( EOF != (i = fgetc(sf))) {
    fputc(i, df);
  }
}

void tryopen(int argc, char *argv[])
{
  if (argc < 3) {
    printf("%s SOURCE DEST\n", argv[0]);
    exit(EXIT_FAILURE);
  }

  if (NULL == (sf = fopen(argv[1], "r"))) {
    printf("%s: open failed\n", argv[1]);
    exit(EXIT_FAILURE);
  }

  if (NULL == (df = fopen(argv[2], "wb"))) {
    printf("%s: open failed\n", argv[2]);
    exit(EXIT_FAILURE);
  }

  fseek(sf, O_MK, SEEK_SET);
  char buf[4];
  fread(buf, 1, 4, sf);
  if (strncmp(buf, "M.K.", 4)) {
    puts("No Protracker magic string");
    exit(EXIT_FAILURE);
  }
}

int main(int argc, char *argv[])
{
  puts(msg);
  tryopen(argc, argv);
  init();
  pass1();
  pass2();
  pass3();
  dump();

  return EXIT_SUCCESS;
}
