//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// IAR ARM ANSI C/C++ Compiler V4.40A/W32 EVALUATION   28/Mar/2008  19:07:27 /
// Copyright 1999-2005 IAR Systems. All rights reserved.                     /
//                                                                           /
//    Cpu mode        =  interwork                                           /
//    Endian          =  little                                              /
//    Stack alignment =  4                                                   /
//    Source file     =  E:\Ivo\arm\IVOPLAY\MAIN.c                           /
//    Command line    =  E:\Ivo\arm\IVOPLAY\MAIN.c -D X65 -lC                /
//                       E:\Ivo\arm\IVOPLAY\Release\List\ -lA                /
//                       E:\Ivo\arm\IVOPLAY\Release\List\ -o                 /
//                       E:\Ivo\arm\IVOPLAY\Release\Obj\ -s9 --no_cse        /
//                       --no_unroll --no_inline --no_code_motion --no_tbaa  /
//                       --no_clustering --no_scheduling --cpu_mode arm      /
//                       --endian little --cpu ARM926EJ-S --stack_align 4    /
//                       --interwork -e --fpu None --dlib_config             /
//                       D:\arm\ARM\LIB\dl5tpainl8n.h -I D:\arm\ARM\INC\     /
//    List file       =  E:\Ivo\arm\IVOPLAY\Release\List\MAIN.s79            /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME MAIN

        RTMODEL "StackAlign4", "USED"
        RTMODEL "__cpu_mode", "__pcs__interwork"
        RTMODEL "__data_model", "absolute"
        RTMODEL "__endian", "little"
        RTMODEL "__rt_version", "6"

        RSEG CSTACK:DATA:NOROOT(2)

        EXTERN ??div32_a

        PUBWEAK `?*?DATA_ID`
        MULTWEAK ??CLOSECURENTCSM??rT
        MULTWEAK ??CheckDoubleRun??rT
        MULTWEAK ??Cleaner??rA
        MULTWEAK ??CloseGUI??rT
        MULTWEAK ??CreateMenuFindPlaylist??rA
        MULTWEAK ??CreatePlaylist??rT
        MULTWEAK ??CreateSaveAsDialog??rT
??DataTable10 EQU 0
??DataTable100 EQU 0
??DataTable101 EQU 0
??DataTable102 EQU 0
??DataTable104 EQU 0
??DataTable105 EQU 0
??DataTable106 EQU 0
??DataTable115 EQU 0
??DataTable118 EQU 0
??DataTable119 EQU 0
??DataTable12 EQU 0
??DataTable120 EQU 0
??DataTable121 EQU 0
??DataTable122 EQU 0
??DataTable128 EQU 0
??DataTable13 EQU 0
??DataTable130 EQU 0
??DataTable131 EQU 0
??DataTable132 EQU 0
??DataTable133 EQU 0
??DataTable134 EQU 0
??DataTable136 EQU 0
??DataTable137 EQU 0
??DataTable138 EQU 0
??DataTable139 EQU 0
??DataTable140 EQU 0
??DataTable141 EQU 0
??DataTable142 EQU 0
??DataTable143 EQU 0
??DataTable144 EQU 0
??DataTable146 EQU 0
??DataTable147 EQU 0
??DataTable148 EQU 0
??DataTable149 EQU 0
??DataTable15 EQU 0
??DataTable150 EQU 0
??DataTable151 EQU 0
??DataTable152 EQU 0
??DataTable153 EQU 0
??DataTable155 EQU 0
??DataTable156 EQU 0
??DataTable157 EQU 0
??DataTable158 EQU 0
??DataTable159 EQU 0
??DataTable16 EQU 0
??DataTable160 EQU 0
??DataTable161 EQU 0
??DataTable162 EQU 0
??DataTable163 EQU 0
??DataTable164 EQU 0
??DataTable166 EQU 0
??DataTable167 EQU 0
??DataTable168 EQU 0
??DataTable169 EQU 0
??DataTable170 EQU 0
??DataTable171 EQU 0
??DataTable173 EQU 0
??DataTable174 EQU 0
??DataTable175 EQU 0
??DataTable177 EQU 0
??DataTable179 EQU 0
??DataTable18 EQU 0
??DataTable180 EQU 0
??DataTable181 EQU 0
??DataTable182 EQU 0
??DataTable183 EQU 0
??DataTable184 EQU 0
??DataTable185 EQU 0
??DataTable187 EQU 0
??DataTable188 EQU 0
??DataTable19 EQU 0
??DataTable191 EQU 0
??DataTable198 EQU 0
??DataTable199 EQU 0
??DataTable203 EQU 0
??DataTable204 EQU 0
??DataTable205 EQU 0
??DataTable206 EQU 0
??DataTable208 EQU 0
??DataTable209 EQU 0
??DataTable21 EQU 0
??DataTable210 EQU 0
??DataTable211 EQU 0
??DataTable212 EQU 0
??DataTable213 EQU 0
??DataTable214 EQU 0
??DataTable215 EQU 0
??DataTable216 EQU 0
??DataTable217 EQU 0
??DataTable218 EQU 0
??DataTable219 EQU 0
??DataTable22 EQU 0
??DataTable220 EQU 0
??DataTable221 EQU 0
??DataTable222 EQU 0
??DataTable223 EQU 0
??DataTable224 EQU 0
??DataTable225 EQU 0
??DataTable226 EQU 0
??DataTable229 EQU 0
??DataTable234 EQU 0
??DataTable235 EQU 0
??DataTable236 EQU 0
??DataTable237 EQU 0
??DataTable238 EQU 0
??DataTable239 EQU 0
??DataTable24 EQU 0
??DataTable240 EQU 0
??DataTable241 EQU 0
??DataTable242 EQU 0
??DataTable243 EQU 0
??DataTable244 EQU 0
??DataTable245 EQU 0
??DataTable246 EQU 0
??DataTable247 EQU 0
??DataTable248 EQU 0
??DataTable25 EQU 0
??DataTable251 EQU 0
??DataTable253 EQU 0
??DataTable254 EQU 0
??DataTable255 EQU 0
??DataTable256 EQU 0
??DataTable257 EQU 0
??DataTable258 EQU 0
??DataTable259 EQU 0
??DataTable260 EQU 0
??DataTable261 EQU 0
??DataTable262 EQU 0
??DataTable263 EQU 0
??DataTable264 EQU 0
??DataTable265 EQU 0
??DataTable266 EQU 0
??DataTable267 EQU 0
??DataTable268 EQU 0
??DataTable269 EQU 0
??DataTable27 EQU 0
??DataTable270 EQU 0
??DataTable271 EQU 0
??DataTable272 EQU 0
??DataTable273 EQU 0
??DataTable274 EQU 0
??DataTable275 EQU 0
??DataTable276 EQU 0
??DataTable277 EQU 0
??DataTable278 EQU 0
??DataTable28 EQU 0
??DataTable280 EQU 0
??DataTable281 EQU 0
??DataTable282 EQU 0
??DataTable283 EQU 0
??DataTable284 EQU 0
??DataTable285 EQU 0
??DataTable286 EQU 0
??DataTable288 EQU 0
??DataTable289 EQU 0
??DataTable290 EQU 0
??DataTable291 EQU 0
??DataTable292 EQU 0
??DataTable293 EQU 0
??DataTable294 EQU 0
??DataTable30 EQU 0
??DataTable302 EQU 0
??DataTable304 EQU 0
??DataTable305 EQU 0
??DataTable306 EQU 0
??DataTable307 EQU 0
??DataTable308 EQU 0
??DataTable309 EQU 0
??DataTable31 EQU 0
??DataTable311 EQU 0
??DataTable313 EQU 0
??DataTable315 EQU 0
??DataTable316 EQU 0
??DataTable317 EQU 0
??DataTable318 EQU 0
??DataTable319 EQU 0
??DataTable320 EQU 0
??DataTable321 EQU 0
??DataTable322 EQU 0
??DataTable323 EQU 0
??DataTable324 EQU 0
??DataTable325 EQU 0
??DataTable326 EQU 0
??DataTable327 EQU 0
??DataTable328 EQU 0
??DataTable329 EQU 0
??DataTable33 EQU 0
??DataTable332 EQU 0
??DataTable333 EQU 0
??DataTable335 EQU 0
??DataTable337 EQU 0
??DataTable34 EQU 0
??DataTable341 EQU 0
??DataTable342 EQU 0
??DataTable344 EQU 0
??DataTable345 EQU 0
??DataTable346 EQU 0
??DataTable347 EQU 0
??DataTable348 EQU 0
??DataTable349 EQU 0
??DataTable350 EQU 0
??DataTable351 EQU 0
??DataTable352 EQU 0
??DataTable353 EQU 0
??DataTable354 EQU 0
??DataTable355 EQU 0
??DataTable356 EQU 0
??DataTable357 EQU 0
??DataTable358 EQU 0
??DataTable359 EQU 0
??DataTable36 EQU 0
??DataTable360 EQU 0
??DataTable362 EQU 0
??DataTable363 EQU 0
??DataTable364 EQU 0
??DataTable365 EQU 0
??DataTable366 EQU 0
??DataTable367 EQU 0
??DataTable368 EQU 0
??DataTable369 EQU 0
??DataTable37 EQU 0
??DataTable370 EQU 0
??DataTable371 EQU 0
??DataTable372 EQU 0
??DataTable373 EQU 0
??DataTable378 EQU 0
??DataTable379 EQU 0
??DataTable380 EQU 0
??DataTable381 EQU 0
??DataTable382 EQU 0
??DataTable383 EQU 0
??DataTable384 EQU 0
??DataTable387 EQU 0
??DataTable388 EQU 0
??DataTable389 EQU 0
??DataTable39 EQU 0
??DataTable394 EQU 0
??DataTable396 EQU 0
??DataTable397 EQU 0
??DataTable398 EQU 0
??DataTable399 EQU 0
??DataTable40 EQU 0
??DataTable400 EQU 0
??DataTable401 EQU 0
??DataTable402 EQU 0
??DataTable403 EQU 0
??DataTable404 EQU 0
??DataTable405 EQU 0
??DataTable406 EQU 0
??DataTable407 EQU 0
??DataTable409 EQU 0
??DataTable410 EQU 0
??DataTable414 EQU 0
??DataTable42 EQU 0
??DataTable427 EQU 0
??DataTable428 EQU 0
??DataTable43 EQU 0
??DataTable433 EQU 0
??DataTable434 EQU 0
??DataTable435 EQU 0
??DataTable436 EQU 0
??DataTable437 EQU 0
??DataTable439 EQU 0
??DataTable440 EQU 0
??DataTable441 EQU 0
??DataTable443 EQU 0
??DataTable444 EQU 0
??DataTable445 EQU 0
??DataTable446 EQU 0
??DataTable447 EQU 0
??DataTable448 EQU 0
??DataTable449 EQU 0
??DataTable45 EQU 0
??DataTable450 EQU 0
??DataTable451 EQU 0
??DataTable452 EQU 0
??DataTable453 EQU 0
??DataTable454 EQU 0
??DataTable455 EQU 0
??DataTable456 EQU 0
??DataTable458 EQU 0
??DataTable459 EQU 0
??DataTable46 EQU 0
??DataTable460 EQU 0
??DataTable464 EQU 0
??DataTable465 EQU 0
??DataTable466 EQU 0
??DataTable470 EQU 0
??DataTable471 EQU 0
??DataTable474 EQU 0
??DataTable476 EQU 0
??DataTable477 EQU 0
??DataTable478 EQU 0
??DataTable48 EQU 0
??DataTable485 EQU 0
??DataTable487 EQU 0
??DataTable488 EQU 0
??DataTable489 EQU 0
??DataTable49 EQU 0
??DataTable490 EQU 0
??DataTable491 EQU 0
??DataTable493 EQU 0
??DataTable495 EQU 0
??DataTable497 EQU 0
??DataTable498 EQU 0
??DataTable499 EQU 0
??DataTable500 EQU 0
??DataTable501 EQU 0
??DataTable502 EQU 0
??DataTable503 EQU 0
??DataTable51 EQU 0
??DataTable519 EQU 0
??DataTable52 EQU 0
??DataTable520 EQU 0
??DataTable521 EQU 0
??DataTable522 EQU 0
??DataTable523 EQU 0
??DataTable524 EQU 0
??DataTable527 EQU 0
??DataTable528 EQU 0
??DataTable529 EQU 0
??DataTable53 EQU 0
??DataTable530 EQU 0
??DataTable531 EQU 0
??DataTable532 EQU 0
??DataTable533 EQU 0
??DataTable535 EQU 0
??DataTable536 EQU 0
??DataTable538 EQU 0
??DataTable539 EQU 0
??DataTable54 EQU 0
??DataTable541 EQU 0
??DataTable542 EQU 0
??DataTable543 EQU 0
??DataTable544 EQU 0
??DataTable545 EQU 0
??DataTable547 EQU 0
??DataTable548 EQU 0
??DataTable549 EQU 0
??DataTable55 EQU 0
??DataTable550 EQU 0
??DataTable551 EQU 0
??DataTable552 EQU 0
??DataTable553 EQU 0
??DataTable554 EQU 0
??DataTable555 EQU 0
??DataTable556 EQU 0
??DataTable557 EQU 0
??DataTable558 EQU 0
??DataTable559 EQU 0
??DataTable56 EQU 0
??DataTable561 EQU 0
??DataTable562 EQU 0
??DataTable563 EQU 0
??DataTable564 EQU 0
??DataTable565 EQU 0
??DataTable566 EQU 0
??DataTable567 EQU 0
??DataTable568 EQU 0
??DataTable569 EQU 0
??DataTable57 EQU 0
??DataTable570 EQU 0
??DataTable571 EQU 0
??DataTable572 EQU 0
??DataTable573 EQU 0
??DataTable575 EQU 0
??DataTable576 EQU 0
??DataTable577 EQU 0
??DataTable578 EQU 0
??DataTable579 EQU 0
??DataTable580 EQU 0
??DataTable581 EQU 0
??DataTable582 EQU 0
??DataTable583 EQU 0
??DataTable584 EQU 0
??DataTable585 EQU 0
??DataTable586 EQU 0
??DataTable587 EQU 0
??DataTable590 EQU 0
??DataTable591 EQU 0
??DataTable592 EQU 0
??DataTable593 EQU 0
??DataTable595 EQU 0
??DataTable596 EQU 0
??DataTable597 EQU 0
??DataTable598 EQU 0
??DataTable599 EQU 0
??DataTable600 EQU 0
??DataTable601 EQU 0
??DataTable602 EQU 0
??DataTable61 EQU 0
??DataTable610 EQU 0
??DataTable612 EQU 0
??DataTable613 EQU 0
??DataTable615 EQU 0
??DataTable619 EQU 0
??DataTable620 EQU 0
??DataTable621 EQU 0
??DataTable622 EQU 0
??DataTable623 EQU 0
??DataTable624 EQU 0
??DataTable625 EQU 0
??DataTable626 EQU 0
??DataTable627 EQU 0
??DataTable628 EQU 0
??DataTable629 EQU 0
??DataTable63 EQU 0
??DataTable630 EQU 0
??DataTable631 EQU 0
??DataTable632 EQU 0
??DataTable633 EQU 0
??DataTable634 EQU 0
??DataTable635 EQU 0
??DataTable636 EQU 0
??DataTable637 EQU 0
??DataTable638 EQU 0
??DataTable639 EQU 0
??DataTable640 EQU 0
??DataTable641 EQU 0
??DataTable642 EQU 0
??DataTable643 EQU 0
??DataTable644 EQU 0
??DataTable645 EQU 0
??DataTable646 EQU 0
??DataTable647 EQU 0
??DataTable648 EQU 0
??DataTable649 EQU 0
??DataTable650 EQU 0
??DataTable651 EQU 0
??DataTable652 EQU 0
??DataTable653 EQU 0
??DataTable654 EQU 0
??DataTable655 EQU 0
??DataTable656 EQU 0
??DataTable657 EQU 0
??DataTable658 EQU 0
??DataTable659 EQU 0
??DataTable66 EQU 0
??DataTable660 EQU 0
??DataTable661 EQU 0
??DataTable663 EQU 0
??DataTable664 EQU 0
??DataTable665 EQU 0
??DataTable666 EQU 0
??DataTable667 EQU 0
??DataTable668 EQU 0
??DataTable669 EQU 0
??DataTable67 EQU 0
??DataTable670 EQU 0
??DataTable671 EQU 0
??DataTable672 EQU 0
??DataTable673 EQU 0
??DataTable674 EQU 0
??DataTable675 EQU 0
??DataTable676 EQU 0
??DataTable677 EQU 0
??DataTable678 EQU 0
??DataTable679 EQU 0
??DataTable68 EQU 0
??DataTable680 EQU 0
??DataTable681 EQU 0
??DataTable682 EQU 0
??DataTable683 EQU 0
??DataTable684 EQU 0
??DataTable685 EQU 0
??DataTable687 EQU 0
??DataTable688 EQU 0
??DataTable689 EQU 0
??DataTable69 EQU 0
??DataTable690 EQU 0
??DataTable691 EQU 0
??DataTable692 EQU 0
??DataTable693 EQU 0
??DataTable694 EQU 0
??DataTable695 EQU 0
??DataTable697 EQU 0
??DataTable698 EQU 0
??DataTable699 EQU 0
??DataTable7 EQU 0
??DataTable70 EQU 0
??DataTable700 EQU 0
??DataTable701 EQU 0
??DataTable702 EQU 0
??DataTable703 EQU 0
??DataTable704 EQU 0
??DataTable705 EQU 0
??DataTable707 EQU 0
??DataTable708 EQU 0
??DataTable709 EQU 0
??DataTable71 EQU 0
??DataTable710 EQU 0
??DataTable712 EQU 0
??DataTable713 EQU 0
??DataTable714 EQU 0
??DataTable716 EQU 0
??DataTable717 EQU 0
??DataTable718 EQU 0
??DataTable719 EQU 0
??DataTable720 EQU 0
??DataTable721 EQU 0
??DataTable722 EQU 0
??DataTable723 EQU 0
??DataTable724 EQU 0
??DataTable725 EQU 0
??DataTable726 EQU 0
??DataTable727 EQU 0
??DataTable728 EQU 0
??DataTable729 EQU 0
??DataTable73 EQU 0
??DataTable732 EQU 0
??DataTable733 EQU 0
??DataTable734 EQU 0
??DataTable735 EQU 0
??DataTable736 EQU 0
??DataTable737 EQU 0
??DataTable738 EQU 0
??DataTable739 EQU 0
??DataTable740 EQU 0
??DataTable741 EQU 0
??DataTable742 EQU 0
??DataTable743 EQU 0
??DataTable744 EQU 0
??DataTable745 EQU 0
??DataTable746 EQU 0
??DataTable747 EQU 0
??DataTable748 EQU 0
??DataTable749 EQU 0
??DataTable750 EQU 0
??DataTable751 EQU 0
??DataTable753 EQU 0
??DataTable754 EQU 0
??DataTable755 EQU 0
??DataTable757 EQU 0
??DataTable758 EQU 0
??DataTable76 EQU 0
??DataTable761 EQU 0
??DataTable764 EQU 0
??DataTable765 EQU 0
??DataTable766 EQU 0
??DataTable767 EQU 0
??DataTable768 EQU 0
??DataTable769 EQU 0
??DataTable77 EQU 0
??DataTable770 EQU 0
??DataTable771 EQU 0
??DataTable775 EQU 0
??DataTable779 EQU 0
??DataTable78 EQU 0
??DataTable780 EQU 0
??DataTable781 EQU 0
??DataTable782 EQU 0
??DataTable783 EQU 0
??DataTable784 EQU 0
??DataTable785 EQU 0
??DataTable786 EQU 0
??DataTable788 EQU 0
??DataTable792 EQU 0
??DataTable798 EQU 0
??DataTable799 EQU 0
??DataTable800 EQU 0
??DataTable801 EQU 0
??DataTable802 EQU 0
??DataTable803 EQU 0
??DataTable804 EQU 0
??DataTable805 EQU 0
??DataTable806 EQU 0
??DataTable807 EQU 0
??DataTable808 EQU 0
??DataTable809 EQU 0
??DataTable810 EQU 0
??DataTable811 EQU 0
??DataTable812 EQU 0
??DataTable813 EQU 0
??DataTable814 EQU 0
??DataTable815 EQU 0
??DataTable816 EQU 0
??DataTable817 EQU 0
??DataTable820 EQU 0
??DataTable821 EQU 0
??DataTable822 EQU 0
??DataTable823 EQU 0
??DataTable824 EQU 0
??DataTable825 EQU 0
??DataTable826 EQU 0
??DataTable827 EQU 0
??DataTable828 EQU 0
??DataTable830 EQU 0
??DataTable831 EQU 0
??DataTable832 EQU 0
??DataTable833 EQU 0
??DataTable834 EQU 0
??DataTable835 EQU 0
??DataTable836 EQU 0
??DataTable837 EQU 0
??DataTable838 EQU 0
??DataTable839 EQU 0
??DataTable84 EQU 0
??DataTable840 EQU 0
??DataTable841 EQU 0
??DataTable842 EQU 0
??DataTable849 EQU 0
??DataTable85 EQU 0
??DataTable850 EQU 0
??DataTable851 EQU 0
??DataTable853 EQU 0
??DataTable854 EQU 0
??DataTable856 EQU 0
??DataTable86 EQU 0
??DataTable863 EQU 0
??DataTable864 EQU 0
??DataTable865 EQU 0
??DataTable866 EQU 0
??DataTable867 EQU 0
??DataTable868 EQU 0
??DataTable87 EQU 0
??DataTable872 EQU 0
??DataTable873 EQU 0
??DataTable875 EQU 0
??DataTable876 EQU 0
??DataTable877 EQU 0
??DataTable878 EQU 0
??DataTable88 EQU 0
??DataTable883 EQU 0
??DataTable885 EQU 0
??DataTable886 EQU 0
??DataTable888 EQU 0
??DataTable890 EQU 0
??DataTable892 EQU 0
??DataTable896 EQU 0
??DataTable898 EQU 0
??DataTable899 EQU 0
??DataTable9 EQU 0
??DataTable90 EQU 0
??DataTable900 EQU 0
??DataTable901 EQU 0
??DataTable902 EQU 0
??DataTable903 EQU 0
??DataTable904 EQU 0
??DataTable905 EQU 0
??DataTable906 EQU 0
??DataTable907 EQU 0
??DataTable908 EQU 0
??DataTable909 EQU 0
??DataTable910 EQU 0
??DataTable911 EQU 0
??DataTable912 EQU 0
??DataTable913 EQU 0
??DataTable914 EQU 0
??DataTable915 EQU 0
??DataTable916 EQU 0
??DataTable917 EQU 0
??DataTable918 EQU 0
??DataTable919 EQU 0
??DataTable92 EQU 0
??DataTable920 EQU 0
??DataTable921 EQU 0
??DataTable922 EQU 0
??DataTable923 EQU 0
??DataTable924 EQU 0
??DataTable925 EQU 0
??DataTable926 EQU 0
??DataTable927 EQU 0
??DataTable928 EQU 0
??DataTable929 EQU 0
??DataTable93 EQU 0
??DataTable931 EQU 0
??DataTable932 EQU 0
??DataTable933 EQU 0
??DataTable934 EQU 0
??DataTable935 EQU 0
??DataTable94 EQU 0
??DataTable940 EQU 0
??DataTable941 EQU 0
??DataTable942 EQU 0
??DataTable943 EQU 0
??DataTable944 EQU 0
??DataTable945 EQU 0
??DataTable946 EQU 0
??DataTable947 EQU 0
??DataTable948 EQU 0
??DataTable949 EQU 0
??DataTable950 EQU 0
??DataTable951 EQU 0
??DataTable952 EQU 0
??DataTable954 EQU 0
??DataTable957 EQU 0
??DataTable958 EQU 0
??DataTable959 EQU 0
??DataTable960 EQU 0
??DataTable961 EQU 0
??DataTable962 EQU 0
??DataTable963 EQU 0
??DataTable964 EQU 0
??DataTable966 EQU 0
??DataTable968 EQU 0
??DataTable97 EQU 0
??DataTable971 EQU 0
??DataTable972 EQU 0
??DataTable973 EQU 0
??DataTable974 EQU 0
??DataTable975 EQU 0
??DataTable976 EQU 0
??DataTable977 EQU 0
??DataTable979 EQU 0
??DataTable98 EQU 0
??DataTable980 EQU 0
??DataTable982 EQU 0
??DataTable984 EQU 0
??DataTable985 EQU 0
??DataTable986 EQU 0
??DataTable99 EQU 0
??DataTable994 EQU 0
        MULTWEAK ??ElfKiller??rT
        MULTWEAK ??GetFon??rT
        MULTWEAK ??GetKatalogbackgroundcolour??rT
        MULTWEAK ??GetKatalogfontcolour??rT
        MULTWEAK ??InitConfig??rA
        MULTWEAK ??IsFile??rT
        MULTWEAK ??LoadM3uPlaylist??rT
        MULTWEAK ??LoadParams??rT
        MULTWEAK ??LoadPlaylist??rT
        MULTWEAK ??MenuKeys??rT
        MULTWEAK ??MessStop??rT
        MULTWEAK ??Message??rT
        MULTWEAK ??OnKey??rT
        MULTWEAK ??OnRedraw??rT
        MULTWEAK ??PersheShchoStuknuloVGolovu??rT
        MULTWEAK ??Play??rT
        MULTWEAK ??PlayNext??rT
        MULTWEAK ??PlayPrevious??rT
        MULTWEAK ??Play_PauseResume??rT
        MULTWEAK ??ReadLastPlaylist??rT
        MULTWEAK ??SaveOnlyPlaylistParams??rT
        MULTWEAK ??SaveParams??rT
        MULTWEAK ??SavePlaylist??rT
        MULTWEAK ??Scrolling??rT
        MULTWEAK ??ScrollingInFile??rT
        MULTWEAK ??ShowMainMenu??rA
        MULTWEAK ??ShowMess??rT
        MULTWEAK ??ShowPlayerMenu??rT
        MULTWEAK ??UpdateCSMname??rT
        MULTWEAK ??VolumeDown??rT
        MULTWEAK ??VolumeMute??rT
        MULTWEAK ??VolumeUp??rT
        MULTWEAK ??VporiadkuvatySpysok??rT
        MULTWEAK ??WhatToDo??rT
        MULTWEAK ??WriteLastPlaylist??rT
        MULTWEAK ??ZapovnytyTaVidsortuvatyKatalog??rT
        MULTWEAK ??findlisttime??rT
        MULTWEAK ??findmp3length??rT
        MULTWEAK ??findtegs??rT
        MULTWEAK ??kill_data??rA
        MULTWEAK ??main??rT
        MULTWEAK ??maincsm_onclose??rT
        MULTWEAK ??maincsm_oncreate??rT
        MULTWEAK ??maincsm_onmessage??rT
        MULTWEAK ??method??rT
        MULTWEAK ??my_keyhook??rT
        MULTWEAK ??onClose2??rT
        MULTWEAK ??onClose??rT
        MULTWEAK ??onCreate2??rT
        MULTWEAK ??onCreate??rT
        MULTWEAK ??onFocus2??rT
        MULTWEAK ??onFocus??rT
        MULTWEAK ??onUnfocus2??rT
        MULTWEAK ??onUnfocus??rT
        MULTWEAK ??patch_header2??rT
        MULTWEAK ??patch_input??rT
        MULTWEAK ??r??rT
        MULTWEAK ??rA??div32_a
        MULTWEAK ??readskinparamsfromfile??rT
        MULTWEAK ??sf_inp_ghook??rT
        MULTWEAK ??sf_inp_locret??rT
        MULTWEAK ??sf_inp_onkey??rT
        MULTWEAK ??showvolume??rT
        MULTWEAK ??skins??rT
        MULTWEAK ??strcmp_nocase??rT
        MULTWEAK ??timepp??rT
        MULTWEAK ??toupper??rT
        MULTWEAK ??whattoplaynext??rT
        MULTWEAK ??whattoplayprev??rT
        PUBWEAK ?init?tab?DATA_I
        PUBWEAK ?init?tab?DATA_Z
        PUBLIC ArrayOfSkins
        PUBLIC CLOSECURENTCSM
        FUNCTION CLOSECURENTCSM,0201H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC CanPlayNext
        PUBLIC Canvas
        PUBLIC CheckDoubleRun
        FUNCTION CheckDoubleRun,0203H
        LOCFRAME CSTACK, 20, STACK
        PUBLIC CloseGUI
        FUNCTION CloseGUI,0601H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC CreatePlaylist
        FUNCTION CreatePlaylist,0203H
        LOCFRAME CSTACK, 588, STACK
        PUBLIC CreateSaveAsDialog
        FUNCTION CreateSaveAsDialog,0203H
        LOCFRAME CSTACK, 64, STACK
        PUBLIC CurentVolume
        PUBLIC ElfKiller
        FUNCTION ElfKiller,0603H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC GetFon
        FUNCTION GetFon,0201H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC GetKatalogbackgroundcolour
        FUNCTION GetKatalogbackgroundcolour,0201H
        PUBLIC GetKatalogfontcolour
        FUNCTION GetKatalogfontcolour,0201H
        PUBLIC IsFile
        FUNCTION IsFile,0203H
        PUBLIC JaPerekliuchyvPisniu
        PUBLIC LastPlaylist
        PUBLIC LoadM3uPlaylist
        FUNCTION LoadM3uPlaylist,0203H
        LOCFRAME CSTACK, 21128, STACK
        PUBLIC LoadParams
        FUNCTION LoadParams,0201H
        LOCFRAME CSTACK, 16, STACK
        PUBLIC LoadPlaylist
        FUNCTION LoadPlaylist,0203H
        LOCFRAME CSTACK, 20596, STACK
        PUBLIC MAINCSM
        PUBLIC MAINCSM_ID
        PUBLIC MAINGUI_ID
        PUBLIC MenuKeys
        FUNCTION MenuKeys,0603H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC MessStop
        FUNCTION MessStop,0601H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC Message
        FUNCTION Message,0203H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC MessageTimer
        PUBLIC NameOfCurentTrack
        PUBLIC NeedToStop
        PUBLIC NumberOfSkins
        PUBLIC NumberOfTracks
        PUBLIC OnKey
        FUNCTION OnKey,0603H
        LOCFRAME CSTACK, 288, STACK
        PUBLIC OnRedraw
        FUNCTION OnRedraw,0603H
        LOCFRAME CSTACK, 352, STACK
        PUBLIC PLAYERGUI_ID
        PUBLIC PLAY_ID
        PUBLIC PersheShchoStuknuloVGolovu
        FUNCTION PersheShchoStuknuloVGolovu,0601H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC Play
        FUNCTION Play,0203H
        LOCFRAME CSTACK, 940, STACK
        PUBLIC PlayNext
        FUNCTION PlayNext,0601H
        LOCFRAME CSTACK, 260, STACK
        PUBLIC PlayNextTimer
        PUBLIC PlayPrevious
        FUNCTION PlayPrevious,0601H
        LOCFRAME CSTACK, 260, STACK
        PUBLIC Play_PauseResume
        FUNCTION Play_PauseResume,0201H
        LOCFRAME CSTACK, 260, STACK
        PUBLIC PlayerMenu
        PUBLIC PlaylistToSave
        PUBLIC ReadLastPlaylist
        FUNCTION ReadLastPlaylist,0201H
        LOCFRAME CSTACK, 760, STACK
        PUBLIC RedrawTimer
        PUBLIC SaveOnlyPlaylistParams
        FUNCTION SaveOnlyPlaylistParams,0203H
        LOCFRAME CSTACK, 16, STACK
        PUBLIC SaveParams
        FUNCTION SaveParams,0201H
        LOCFRAME CSTACK, 16, STACK
        PUBLIC SavePlaylist
        FUNCTION SavePlaylist,0603H
        LOCFRAME CSTACK, 36, STACK
        PUBLIC Scroll
        PUBLIC Scrolling
        FUNCTION Scrolling,0601H
        LOCFRAME CSTACK, 292, STACK
        PUBLIC ScrollingInFile
        FUNCTION ScrollingInFile,0601H
        LOCFRAME CSTACK, 292, STACK
        PUBLIC ShowMess
        FUNCTION ShowMess,0201H
        LOCFRAME CSTACK, 28, STACK
        PUBLIC ShowPlayerMenu
        FUNCTION ShowPlayerMenu,0201H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC TimeTimer
        PUBLIC UpdateCSMname
        FUNCTION UpdateCSMname,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC VolumeDown
        FUNCTION VolumeDown,0201H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC VolumeMute
        FUNCTION VolumeMute,0201H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC VolumeUp
        FUNCTION VolumeUp,0201H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC VporiadkuvatySpysok
        FUNCTION VporiadkuvatySpysok,0201H
        LOCFRAME CSTACK, 28, STACK
        PUBLIC WhatToDo
        FUNCTION WhatToDo,0203H
        LOCFRAME CSTACK, 284, STACK
        PUBLIC WhatToView
        PUBLIC WriteLastPlaylist
        FUNCTION WriteLastPlaylist,0201H
        LOCFRAME CSTACK, 320, STACK
        PUBLIC ZapovnytyTaVidsortuvatyKatalog
        FUNCTION ZapovnytyTaVidsortuvatyKatalog,0203H
        LOCFRAME CSTACK, 856, STACK
        PUBLIC calbum
        PUBLIC cartist
        PUBLIC color1
        PUBLIC color2
        PUBLIC cp
        PUBLIC ctrack
        PUBLIC curentfolder
        PUBLIC curskin
        PUBLIC findlisttime
        FUNCTION findlisttime,0603H
        LOCFRAME CSTACK, 276, STACK
        PUBLIC findmp3length
        FUNCTION findmp3length,0203H
        LOCFRAME CSTACK, 44, STACK
        PUBLIC findtegs
        FUNCTION findtegs,0201H
        LOCFRAME CSTACK, 188, STACK
        PUBLIC gipc
        PUBLIC gui_methods
        PUBLIC gui_methods2
        PUBLIC identyfikator
        PUBLIC ipc_my_name
        PUBLIC ipc_xtask_name
        PUBLIC katalog
        PUBLIC katalogbackgroundcolour
        PUBLIC katalogcurent
        PUBLIC katalogfontcolour
        PUBLIC kataloglength
        PUBLIC katalogselected
        PUBLIC katalogselectedcolour
        PUBLIC longpress
        PUBLIC main
        FUNCTION main,0a03H
        LOCFRAME CSTACK, 788, STACK
        PUBLIC maincsm_name_body
        PUBLIC maincsm_onclose
        FUNCTION maincsm_onclose,0603H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC maincsm_oncreate
        FUNCTION maincsm_oncreate,0603H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC maincsm_onmessage
        FUNCTION maincsm_onmessage,0603H
        LOCFRAME CSTACK, 728, STACK
        PUBLIC menu_sk
        PUBLIC menu_skt
        PUBLIC method
        FUNCTION method,0603H
        PUBLIC minus11
        PUBLIC my_keyhook
        FUNCTION my_keyhook,0603H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC name
        PUBLIC nextx
        PUBLIC nexty
        PUBLIC notplayed
        PUBLIC onClose
        FUNCTION onClose,0603H
        PUBLIC onClose2
        FUNCTION onClose2,0603H
        PUBLIC onCreate
        FUNCTION onCreate,0603H
        PUBLIC onCreate2
        FUNCTION onCreate2,0603H
        PUBLIC onFocus
        FUNCTION onFocus,0603H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC onFocus2
        FUNCTION onFocus2,0603H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC onUnfocus
        FUNCTION onUnfocus,0603H
        PUBLIC onUnfocus2
        FUNCTION onUnfocus2,0603H
        PUBLIC patch_header2
        FUNCTION patch_header2,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC patch_input
        FUNCTION patch_input,0203H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC pisniashchozberigaetsia
        PUBLIC play_stopx
        PUBLIC play_stopy
        PUBLIC playing
        PUBLIC playlistmode
        PUBLIC playlistname
        PUBLIC pracuje
        PUBLIC press
        PUBLIC prevx
        PUBLIC prevy
        PUBLIC progressbarcolour
        PUBLIC progressbarx1
        PUBLIC progressbarx2
        PUBLIC progressbary1
        PUBLIC r
        FUNCTION r,0601H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC random
        PUBLIC randomx
        PUBLIC randomy
        PUBLIC readskinparamsfromfile
        FUNCTION readskinparamsfromfile,0201H
        LOCFRAME CSTACK, 20464, STACK
        PUBLIC ringoff
        PUBLIC ringoffx
        PUBLIC ringoffy
        PUBLIC selected
        PUBLIC sf_inp_desc
        PUBLIC sf_inp_ghook
        FUNCTION sf_inp_ghook,0603H
        LOCFRAME CSTACK, 52, STACK
        PUBLIC sf_inp_hdr
        PUBLIC sf_inp_locret
        FUNCTION sf_inp_locret,0603H
        PUBLIC sf_inp_onkey
        FUNCTION sf_inp_onkey,0603H
        LOCFRAME CSTACK, 48, STACK
        PUBLIC showvolume
        FUNCTION showvolume,0201H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC skins
        FUNCTION skins,0201H
        LOCFRAME CSTACK, 576, STACK
        PUBLIC songfont
        PUBLIC songtextattribute
        PUBLIC songtextbackground
        PUBLIC songtextcolor
        PUBLIC songx1
        PUBLIC songx2
        PUBLIC songy1
        PUBLIC songy2
        PUBLIC spysok
        PUBLIC spysokfont
        PUBLIC spysokselected
        PUBLIC spysoktextattribute
        PUBLIC spysoktextbackground
        PUBLIC spysoktextcolor
        PUBLIC spysokx1
        PUBLIC spysokx2
        PUBLIC spysoky1
        PUBLIC spysoky2
        PUBLIC strcmp_nocase
        FUNCTION strcmp_nocase,0203H
        LOCFRAME CSTACK, 16, STACK
        PUBLIC texttoview
        PUBLIC timefont
        PUBLIC timehms
        PUBLIC timelength
        PUBLIC timemin
        PUBLIC timepp
        FUNCTION timepp,0601H
        LOCFRAME CSTACK, 20, STACK
        PUBLIC timesec
        PUBLIC timetextattribute
        PUBLIC timetextbackground
        PUBLIC timetextcolor
        PUBLIC timex1
        PUBLIC timex2
        PUBLIC timey1
        PUBLIC timey2
        PUBLIC top
        PUBLIC toupper
        FUNCTION toupper,0203H
        PUBLIC toview
        PUBLIC tracksfont
        PUBLIC trackstextattribute
        PUBLIC trackstextbackground
        PUBLIC trackstextcolor
        PUBLIC tracksx1
        PUBLIC tracksx2
        PUBLIC tracksy1
        PUBLIC tracksy2
        PUBLIC volmx
        PUBLIC volmy
        PUBLIC volpx
        PUBLIC volpy
        PUBLIC volumex
        PUBLIC volumey
        PUBLIC whattoplaynext
        FUNCTION whattoplaynext,0201H
        LOCFRAME CSTACK, 24, STACK
        PUBLIC whattoplayprev
        FUNCTION whattoplayprev,0201H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC wss
        PUBLIC xdisp
        PUBLIC xdispnapriamok
        PUBLIC zir
        
        CFI Names cfiNames0
        CFI StackFrame CFA R13 HUGEDATA
        CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
        CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, CPSR:32, R13:32
        CFI Resource R14:32, SPSR:32
        CFI VirtualResource ?RET:32
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 2
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon0
        
        
        CFI Common cfiCommon1 Using cfiNames0
        CFI CodeAlign 4
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon1
        
Cleaner             SYMBOL "Cleaner"
CreateMenuFindPlaylist SYMBOL "CreateMenuFindPlaylist"
InitConfig          SYMBOL "InitConfig"
ShowMainMenu        SYMBOL "ShowMainMenu"
kill_data           SYMBOL "kill_data"
CLOSECURENTCSM      SYMBOL "CLOSECURENTCSM"
??CLOSECURENTCSM??rT SYMBOL "??rT", CLOSECURENTCSM
CheckDoubleRun      SYMBOL "CheckDoubleRun"
??CheckDoubleRun??rT SYMBOL "??rT", CheckDoubleRun
??Cleaner??rA       SYMBOL "??rA", Cleaner
CloseGUI            SYMBOL "CloseGUI"
??CloseGUI??rT      SYMBOL "??rT", CloseGUI
??CreateMenuFindPlaylist??rA SYMBOL "??rA", CreateMenuFindPlaylist
CreatePlaylist      SYMBOL "CreatePlaylist"
??CreatePlaylist??rT SYMBOL "??rT", CreatePlaylist
CreateSaveAsDialog  SYMBOL "CreateSaveAsDialog"
??CreateSaveAsDialog??rT SYMBOL "??rT", CreateSaveAsDialog
ElfKiller           SYMBOL "ElfKiller"
??ElfKiller??rT     SYMBOL "??rT", ElfKiller
GetFon              SYMBOL "GetFon"
??GetFon??rT        SYMBOL "??rT", GetFon
GetKatalogbackgroundcolour SYMBOL "GetKatalogbackgroundcolour"
??GetKatalogbackgroundcolour??rT SYMBOL "??rT", GetKatalogbackgroundcolour
GetKatalogfontcolour SYMBOL "GetKatalogfontcolour"
??GetKatalogfontcolour??rT SYMBOL "??rT", GetKatalogfontcolour
??InitConfig??rA    SYMBOL "??rA", InitConfig
IsFile              SYMBOL "IsFile"
??IsFile??rT        SYMBOL "??rT", IsFile
LoadM3uPlaylist     SYMBOL "LoadM3uPlaylist"
??LoadM3uPlaylist??rT SYMBOL "??rT", LoadM3uPlaylist
LoadParams          SYMBOL "LoadParams"
??LoadParams??rT    SYMBOL "??rT", LoadParams
LoadPlaylist        SYMBOL "LoadPlaylist"
??LoadPlaylist??rT  SYMBOL "??rT", LoadPlaylist
MenuKeys            SYMBOL "MenuKeys"
??MenuKeys??rT      SYMBOL "??rT", MenuKeys
MessStop            SYMBOL "MessStop"
??MessStop??rT      SYMBOL "??rT", MessStop
Message             SYMBOL "Message"
??Message??rT       SYMBOL "??rT", Message
OnKey               SYMBOL "OnKey"
??OnKey??rT         SYMBOL "??rT", OnKey
OnRedraw            SYMBOL "OnRedraw"
??OnRedraw??rT      SYMBOL "??rT", OnRedraw
PersheShchoStuknuloVGolovu SYMBOL "PersheShchoStuknuloVGolovu"
??PersheShchoStuknuloVGolovu??rT SYMBOL "??rT", PersheShchoStuknuloVGolovu
Play                SYMBOL "Play"
??Play??rT          SYMBOL "??rT", Play
PlayNext            SYMBOL "PlayNext"
??PlayNext??rT      SYMBOL "??rT", PlayNext
PlayPrevious        SYMBOL "PlayPrevious"
??PlayPrevious??rT  SYMBOL "??rT", PlayPrevious
Play_PauseResume    SYMBOL "Play_PauseResume"
??Play_PauseResume??rT SYMBOL "??rT", Play_PauseResume
ReadLastPlaylist    SYMBOL "ReadLastPlaylist"
??ReadLastPlaylist??rT SYMBOL "??rT", ReadLastPlaylist
SaveOnlyPlaylistParams SYMBOL "SaveOnlyPlaylistParams"
??SaveOnlyPlaylistParams??rT SYMBOL "??rT", SaveOnlyPlaylistParams
SaveParams          SYMBOL "SaveParams"
??SaveParams??rT    SYMBOL "??rT", SaveParams
SavePlaylist        SYMBOL "SavePlaylist"
??SavePlaylist??rT  SYMBOL "??rT", SavePlaylist
Scrolling           SYMBOL "Scrolling"
??Scrolling??rT     SYMBOL "??rT", Scrolling
ScrollingInFile     SYMBOL "ScrollingInFile"
??ScrollingInFile??rT SYMBOL "??rT", ScrollingInFile
??ShowMainMenu??rA  SYMBOL "??rA", ShowMainMenu
ShowMess            SYMBOL "ShowMess"
??ShowMess??rT      SYMBOL "??rT", ShowMess
ShowPlayerMenu      SYMBOL "ShowPlayerMenu"
??ShowPlayerMenu??rT SYMBOL "??rT", ShowPlayerMenu
UpdateCSMname       SYMBOL "UpdateCSMname"
??UpdateCSMname??rT SYMBOL "??rT", UpdateCSMname
VolumeDown          SYMBOL "VolumeDown"
??VolumeDown??rT    SYMBOL "??rT", VolumeDown
VolumeMute          SYMBOL "VolumeMute"
??VolumeMute??rT    SYMBOL "??rT", VolumeMute
VolumeUp            SYMBOL "VolumeUp"
??VolumeUp??rT      SYMBOL "??rT", VolumeUp
VporiadkuvatySpysok SYMBOL "VporiadkuvatySpysok"
??VporiadkuvatySpysok??rT SYMBOL "??rT", VporiadkuvatySpysok
WhatToDo            SYMBOL "WhatToDo"
??WhatToDo??rT      SYMBOL "??rT", WhatToDo
WriteLastPlaylist   SYMBOL "WriteLastPlaylist"
??WriteLastPlaylist??rT SYMBOL "??rT", WriteLastPlaylist
ZapovnytyTaVidsortuvatyKatalog SYMBOL "ZapovnytyTaVidsortuvatyKatalog"
??ZapovnytyTaVidsortuvatyKatalog??rT SYMBOL "??rT", ZapovnytyTaVidsortuvatyKatalog
findlisttime        SYMBOL "findlisttime"
??findlisttime??rT  SYMBOL "??rT", findlisttime
findmp3length       SYMBOL "findmp3length"
??findmp3length??rT SYMBOL "??rT", findmp3length
findtegs            SYMBOL "findtegs"
??findtegs??rT      SYMBOL "??rT", findtegs
??kill_data??rA     SYMBOL "??rA", kill_data
main                SYMBOL "main"
??main??rT          SYMBOL "??rT", main
maincsm_onclose     SYMBOL "maincsm_onclose"
??maincsm_onclose??rT SYMBOL "??rT", maincsm_onclose
maincsm_oncreate    SYMBOL "maincsm_oncreate"
??maincsm_oncreate??rT SYMBOL "??rT", maincsm_oncreate
maincsm_onmessage   SYMBOL "maincsm_onmessage"
??maincsm_onmessage??rT SYMBOL "??rT", maincsm_onmessage
method              SYMBOL "method"
??method??rT        SYMBOL "??rT", method
my_keyhook          SYMBOL "my_keyhook"
??my_keyhook??rT    SYMBOL "??rT", my_keyhook
onClose2            SYMBOL "onClose2"
??onClose2??rT      SYMBOL "??rT", onClose2
onClose             SYMBOL "onClose"
??onClose??rT       SYMBOL "??rT", onClose
onCreate2           SYMBOL "onCreate2"
??onCreate2??rT     SYMBOL "??rT", onCreate2
onCreate            SYMBOL "onCreate"
??onCreate??rT      SYMBOL "??rT", onCreate
onFocus2            SYMBOL "onFocus2"
??onFocus2??rT      SYMBOL "??rT", onFocus2
onFocus             SYMBOL "onFocus"
??onFocus??rT       SYMBOL "??rT", onFocus
onUnfocus2          SYMBOL "onUnfocus2"
??onUnfocus2??rT    SYMBOL "??rT", onUnfocus2
onUnfocus           SYMBOL "onUnfocus"
??onUnfocus??rT     SYMBOL "??rT", onUnfocus
patch_header2       SYMBOL "patch_header2"
??patch_header2??rT SYMBOL "??rT", patch_header2
patch_input         SYMBOL "patch_input"
??patch_input??rT   SYMBOL "??rT", patch_input
r                   SYMBOL "r"
??r??rT             SYMBOL "??rT", r
readskinparamsfromfile SYMBOL "readskinparamsfromfile"
??readskinparamsfromfile??rT SYMBOL "??rT", readskinparamsfromfile
sf_inp_ghook        SYMBOL "sf_inp_ghook"
??sf_inp_ghook??rT  SYMBOL "??rT", sf_inp_ghook
sf_inp_locret       SYMBOL "sf_inp_locret"
??sf_inp_locret??rT SYMBOL "??rT", sf_inp_locret
sf_inp_onkey        SYMBOL "sf_inp_onkey"
??sf_inp_onkey??rT  SYMBOL "??rT", sf_inp_onkey
showvolume          SYMBOL "showvolume"
??showvolume??rT    SYMBOL "??rT", showvolume
skins               SYMBOL "skins"
??skins??rT         SYMBOL "??rT", skins
strcmp_nocase       SYMBOL "strcmp_nocase"
??strcmp_nocase??rT SYMBOL "??rT", strcmp_nocase
timepp              SYMBOL "timepp"
??timepp??rT        SYMBOL "??rT", timepp
toupper             SYMBOL "toupper"
??toupper??rT       SYMBOL "??rT", toupper
whattoplaynext      SYMBOL "whattoplaynext"
??whattoplaynext??rT SYMBOL "??rT", whattoplaynext
whattoplayprev      SYMBOL "whattoplayprev"
??whattoplayprev??rT SYMBOL "??rT", whattoplayprev

        EXTERN Cleaner
        FUNCTION Cleaner,0200H
        EXTERN CreateMenuFindPlaylist
        FUNCTION CreateMenuFindPlaylist,0200H
        EXTERN ELF_BEGIN
        EXTERN EnableHook
        EXTERN EnableIconOnIdle
        EXTERN IDLEICON_X
        EXTERN IDLEICON_Y
        EXTERN InitConfig
        FUNCTION InitConfig,0200H
        EXTERN JaLiuBLiuPYVo
        FUNCTION JaLiuBLiuPYVo,0600H
        EXTERN Key0
        EXTERN Key1
        EXTERN Key2
        EXTERN Key3
        EXTERN Key4
        EXTERN Key5
        EXTERN Key6
        EXTERN Key7
        EXTERN Key8
        EXTERN Key9
        EXTERN KeyR
        EXTERN KeyZ
        EXTERN RedrawTime
        EXTERN ShowMainMenu
        FUNCTION ShowMainMenu,0200H
        EXTERN entime
        EXTERN format_1
        EXTERN format_2
        EXTERN format_3
        EXTERN format_4
        EXTERN kill_data
        FUNCTION kill_data,0602H
        EXTERN playerfolder
        EXTERN profile1
        EXTERN profile2
        EXTERN profile3
        EXTERN profile4
        EXTERN profile5
        EXTERN profile6
        EXTERN profile7
        EXTERN profile8
        EXTERN successed_config_filename


        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\next.png">`:
        DATA
        DC8 "\\next.png"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\prev.png">`:
        DATA
        DC8 "\\prev.png"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%i:%i%i">`:
        DATA
        DC8 "%i:%i%i"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%i:%i%i/%i:%i%i">`:
        DATA
        DC8 "%i:%i%i/%i:%i%i"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\progressbar.png">`:
        DATA
        DC8 "\\progressbar.png"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\minus.png">`:
        DATA
        DC8 "\\minus.png"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\plus.png">`:
        DATA
        DC8 "\\plus.png"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\off.png">`:
        DATA
        DC8 "\\off.png"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\random.png">`:
        DATA
        DC8 "\\random.png"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\play.png">`:
        DATA
        DC8 "\\play.png"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\stop.png">`:
        DATA
        DC8 "\\stop.png"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%i%c%i">`:
        DATA
        DC8 "%i%c%i"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%splaylists\\\\%s.ipl">`:
        DATA
        DC8 "%splaylists\\%s.ipl"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%s\\r%s\\r%s">`:
        DATA
        DC8 "%s\015%s\015%s"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%sskins\\\\%s\\\\VOL%i.png">`:
        DATA
        DC8 "%sskins\\%s\\VOL%i.png"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\background.png">`:
        DATA
        DC8 "\\background.png"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\\\fon.png">`:
        DATA
        DC8 "\\fon.png"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%sskins\\\\%s%s">`:
        DATA
        DC8 "%sskins\\%s%s"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(0)
        DATA
        DC8 "%t"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%c%c%c">`:
        DATA
        DC8 "%c%c%c"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%s\\\\*">`:
        DATA
        DC8 "%s\\*"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(0)
        DATA
        DC8 ".."

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\307\\341\\345\\360\\345\\343\\362\\350">`:
        DATA
        DC8 "\307\341\345\360\345\343\362\350"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%s%c">`:
        DATA
        DC8 "%s%c"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%sskins\\\\%s\\\\params.txt">`:
        DATA
        DC8 "%sskins\\%s\\params.txt"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "Full name">`:
        DATA
        DC8 "Full name"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\302\\342\\345\\344i\\362\\374 i\\354\\'\\`:
        DATA
        DC8 "\302\342\345\344i\362\374 i\354'\377:"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "Back">`:
        DATA
        DC8 "Back"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "Select">`:
        DATA
        DC8 "Select"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "media">`:
        DATA
        DC8 "media"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
        DATA
        DC8 "ipl"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
        DATA
        DC8 "imy"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
        DATA
        DC8 "new"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\321\\362\\342\\356\\360i\\362\\374 \\361`:
        DATA
        DC8 "\321\362\342\356\360i\362\374 \361\357\350\361\356\352, \342\350\352\356\360\350\361\362\356\342\363\376\367\350 \364\340\351\353\356\342\363 \361\350\361\362\345\354\363"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "Not found!    ">`:
        DATA
        DC8 "Not found!    "
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%sskins\\\\">`:
        DATA
        DC8 "%sskins\\"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%t - %t - %t">`:
        DATA
        DC8 "%t - %t - %t"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\312\\356\\355\\364i\\343\\363\\360\\340\\`:
        DATA
        DC8 "\312\356\355\364i\343\363\360\340\366i\376 \356\355\356\342\353\345\355\356!"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "File not found!">`:
        DATA
        DC8 "File not found!"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "Not found!">`:
        DATA
        DC8 "Not found!"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "Mixed">`:
        DATA
        DC8 "Mixed"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "pLay">`:
        DATA
        DC8 "pLay"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "control_panel">`:
        DATA
        DC8 "control_panel"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "control_panel|remove_...">`:
        DATA
        DC8 "control_panel|remove_point|"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "Ivoplay">`:
        DATA
        DC8 "Ivoplay"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%s\\\\%s">`:
        DATA
        DC8 "%s\\%s"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\324\\340\\351\\353\\350 \\344\\356\\344\\`:
        DATA
        DC8 "\324\340\351\353\350 \344\356\344\340\355\356 \344\356 \361\357\350\361\352\363!"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
        DATA
        DC8 "%s\\"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\315\\345\\354\\356\\346\\353\\350\\342\\3`:
        DATA
        DC8 "\315\345\354\356\346\353\350\342\356 \342\350\344\340\353\350\362\350 \356\361\362\340\355\355i\351 \364\340\351\353!"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\312\\345\\360\\363\\342\\340\\355\\355\\3`:
        DATA
        DC8 0CAH, 0E5H, 0F0H, 0F3H, 0E2H, 0E0H, 0EDH, 0EDH
        DC8 0FFH, 3AH, 0DH, 2AH, 2DH, 0E7H, 0E1H, 0E5H
        DC8 0F0H, 0E5H, 0E3H, 0F2H, 0E8H, 0DH, 35H, 2DH
        DC8 0E2H, 0E8H, 0E4H, 0B3H, 0EBH, 0E8H, 0F2H, 0E8H
        DC8 0DH, 32H, 2CH, 38H, 2DH, 0EFH, 0E5H, 0F0H
        DC8 0E5H, 0ECH, 0B3H, 0F1H, 0F2H, 0E8H, 0F2H, 0E8H
        DC8 0DH, 23H, 2DH, 0E3H, 0F0H, 0E0H, 0F2H, 0E8H
        DC8 0
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%t\\r%t\\r%t">`:
        DATA
        DC8 "%t\015%t\015%t"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%splaylists\\\\standart.ipl">`:
        DATA
        DC8 "%splaylists\\standart.ipl"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "*.%s">`:
        DATA
        DC8 "*.%s"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "Full time">`:
        DATA
        DC8 "Full time"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%s:\\r%s%s\\r%s: %i:%i%i">`:
        DATA
        DC8 "%s:\015%s%s\015%s: %i:%i%i"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "ffff">`:
        DATA
        DC8 "ffff"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "4:\\\\Zbin\\\\etc\\\\ivoplay.bcfg">`:
        DATA
        DC8 "4:\\Zbin\\etc\\ivoplay.bcfg"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(0)
        DATA
        DC8 ""

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "0:\\\\Zbin\\\\etc\\\\ivoplay.bcfg">`:
        DATA
        DC8 "0:\\Zbin\\etc\\ivoplay.bcfg"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%slastplaylist.cfg">`:
        DATA
        DC8 "%slastplaylist.cfg"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%c%c%c%s">`:
        DATA
        DC8 "%c%c%c%s"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%sparams.txt">`:
        DATA
        DC8 "%sparams.txt"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
        DATA
        DC8 ""
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%s - %s - %s">`:
        DATA
        DC8 "%s - %s - %s"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%s%s">`:
        DATA
        DC8 "%s%s"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\321\\357\\350\\361\\356\\352 \\355\\345 `:
        DATA
        DC8 "\321\357\350\361\356\352 \355\345 \347\341\345\360\345\346\345\355\356! \304\356\361\362\363\357 \344\356 \364\340\351\353\363 \347\340\341\356\360\356\355\345\355\356."
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\321\\357\\350\\361\\356\\352 \\347\\341\\`:
        DATA
        DC8 "\321\357\350\361\356\352 \347\341\345\360\345\346\345\355\356!"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%c%c%c%c%c">`:
        DATA
        DC8 "%c%c%c%c%c"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "%c%c">`:
        DATA
        DC8 "%c%c"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(0)
`?<Constant "*">`:
        DATA
        DC8 2AH

        RSEG DATA_C:CONST:SORT:NOROOT(0)
        DATA
        DC8 "OK"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\302\\350\\341i\\360">`:
        DATA
        DC8 "\302\350\341i\360"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\304\\356\\344\\340\\362\\350">`:
        DATA
        DC8 "\304\356\344\340\362\350"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "\\302\\350\\344\\340\\353\\350\\362\\350">`:
        DATA
        DC8 "\302\350\344\340\353\350\362\350"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
        DATA
        DC8 "..."
// E:\Ivo\arm\IVOPLAY\MAIN.c
//    1 //Параметры оптимизации - максимальная оптимизация по скорости, при этом все флаги выключены. Иначе может быть кака
//    2 #include "mainmenu.h"
//    3 #include "..\inc\swilib.h"
//    4 #include "..\inc\xtask_ipc.h"
//    5 #include "conf_loader.h"
//    6 #include "language.h"
//    7 #include "main.h"

        RSEG DATA_C:CONST:SORT:NOROOT(0)
// static char const __data pt[3]
pt:
        DATA
        DC8 "%t"

        RSEG DATA_C:CONST:SORT:NOROOT(0)
// static char const __data pp[1]
pp:
        DATA
        DC8 ""

        RSEG DATA_C:CONST:SORT:NOROOT(0)
// static char const __data p_i[3]
p_i:
        DATA
        DC8 "%i"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
// static char const __data pp_s[4]
pp_s:
        DATA
        DC8 " %s"
//    8 #include "playlists.h"
//    9 
//   10 //#include "..\inc\MATH.h"
//   11 //#define PI 3.1415926535
//   12 extern const unsigned int IDLEICON_X,IDLEICON_Y,EnableIconOnIdle;
//   13 #ifdef X75
//   14 #define MAXVOLUME 14
//   15 #else
//   16 #define MAXVOLUME 4
//   17 #endif

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   18 int pisniashchozberigaetsia=0,identyfikator;
pisniashchozberigaetsia:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
identyfikator:
        DS8 4

        RSEG DATA_C:CONST:SORT:NOROOT(2)
//   19 const char ipc_my_name[32]="Ivoplay";
ipc_my_name:
        DATA
        DC8 "Ivoplay"
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   20 GBSTMR RedrawTimer,TimeTimer,PlayerMenu,PlayNextTimer,Scroll;
RedrawTimer:
        DS8 16

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
TimeTimer:
        DS8 16

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
PlayerMenu:
        DS8 16

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
PlayNextTimer:
        DS8 16

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
Scroll:
        DS8 16

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//   21 int CanPlayNext=1;
CanPlayNext:
        DS8 4
        REQUIRE `?<Initializer for CanPlayNext>`

        RSEG DATA_C:CONST:SORT:NOROOT(2)
//   22 const char ipc_xtask_name[]=IPC_XTASK_NAME;
ipc_xtask_name:
        DATA
        DC8 "XTask"
        DC8 0, 0

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   23 IPC_REQ gipc;
gipc:
        DS8 12

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   24 int top,selected;
top:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
selected:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   25 char spysok[2][255][128];//Максимальное количество песен - 255 (1 байт при сохранении)
spysok:
        DS8 65280

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   26 int spysokselected[255];
spysokselected:
        DS8 1020

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   27 long timelength[255];
timelength:
        DS8 1020

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   28 int curskin=0;// Текущий скин
curskin:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   29 char ArrayOfSkins[100][20];//Скинов 100 максимум
ArrayOfSkins:
        DS8 2000

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   30 int playlistmode=0;//0-запуск файла без параметрів, 1- зі списком ipl, 2 - з m3u, 3 - режим медіатеки, 4 - з мс
playlistmode:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   31 char LastPlaylist[256],playlistname[255];
LastPlaylist:
        DS8 256

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
playlistname:
        DS8 256

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   32 int notplayed[255];//Масив. Отмечается, какая песня игралась, а какая нет (при случайном порядке)
notplayed:
        DS8 1020

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//   33 char calbum[128]=" ",ctrack[128]=" ",cartist[128]=" "; //Теги
calbum:
        DS8 128
        REQUIRE `?<Initializer for calbum>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
ctrack:
        DS8 128
        REQUIRE `?<Initializer for ctrack>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
cartist:
        DS8 128
        REQUIRE `?<Initializer for cartist>`

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   34 char NameOfCurentTrack[128]="";
NameOfCurentTrack:
        DS8 128

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   35 int random=0,NumberOfSkins=0;
random:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
NumberOfSkins:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   36 int timehms[3];//Time:hour,minute,second
timehms:
        DS8 12

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   37 int timesec=0,timemin=0,JaPerekliuchyvPisniu=0,NeedToStop=0,WhatToView=0;
timesec:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
timemin:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
JaPerekliuchyvPisniu:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
NeedToStop:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
WhatToView:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   38 int cp=0,NumberOfTracks=0,CurentVolume=4,playing=0,ringoff=0,pracuje=0;
cp:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
NumberOfTracks:
        DS8 4

        RSEG DATA_I:DATA:SORT:NOROOT(2)
CurentVolume:
        DS8 4
        REQUIRE `?<Initializer for CurentVolume>`

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
playing:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
ringoff:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
pracuje:
        DS8 4

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//   39 int PLAY_ID=0xFFFF;
PLAY_ID:
        DS8 4
        REQUIRE `?<Initializer for PLAY_ID>`
//   40 extern const char playerfolder[128],folder[128];
//   41 extern const char format_1[4],format_2[4],format_3[4],format_4[4];
//   42 extern const int Key1,Key2,Key3,Key4,Key5,Key6,Key7,Key8,Key9,Key0,KeyZ,KeyR;//Настройки клавиш. Лучше бы их в файл вынести, но пока так
//   43 extern const unsigned int RedrawTime;//Время перерисовки
//   44 extern const int entime;//А перерисовывать ли?
//   45 extern const unsigned int profile1,profile2,profile3,profile4,profile5,profile6,profile7,profile8;

        RSEG DATA_C:CONST:SORT:NOROOT(2)
//   46 const int minus11=-11;
minus11:
        DATA
        DC32 -11

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   47 unsigned short maincsm_name_body[140];
maincsm_name_body:
        DS8 280

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   48 unsigned int MAINCSM_ID = 0;
MAINCSM_ID:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   49 unsigned int MAINGUI_ID = 0;
MAINGUI_ID:
        DS8 4
//   50 extern const int EnableHook;

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//   51 int xdisp=1;
xdisp:
        DS8 4
        REQUIRE `?<Initializer for xdisp>`

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   52 char PlaylistToSave[255];
PlaylistToSave:
        DS8 256

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock0 Using cfiCommon0
        CFI NoFunction
        THUMB
??toupper??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock0
        REQUIRE toupper
//   53 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon1
        CFI Function toupper
        ARM
//   54 int toupper(int c)
//   55 {
//   56   if ((c>='a')&&(c<='z')) c+='A'-'a';
toupper:
        CMP      R0,#+97
        BXLT     LR
        CMP      R0,#+123
        SUBLT    R0,R0,#+32
//   57   return(c);
        BX       LR               ;; return
        CFI EndBlock cfiBlock1
//   58 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock2 Using cfiCommon0
        CFI NoFunction
        THUMB
??strcmp_nocase??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock2
        REQUIRE strcmp_nocase
//   59 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock3 Using cfiCommon1
        CFI Function strcmp_nocase
        ARM
//   60 int strcmp_nocase(const char *s1,const char *s2)
//   61 {
strcmp_nocase:
        PUSH     {R4-R6,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R6 Frame(CFA, -8)
        CFI R5 Frame(CFA, -12)
        CFI R4 Frame(CFA, -16)
        CFI CFA R13+16
        MOV      R4,R0
        MOV      R5,R1
//   62   int i;
//   63   int c;
//   64   while(!(i=(c=toupper(*s1++))-toupper(*s2++))) if (!c) break;
??strcmp_nocase_0:
        LDRB     R0,[R4], #+1
        BL       toupper
        MOV      R6,R0
        LDRB     R0,[R5], #+1
        BL       toupper
        SUBS     R0,R6,R0
        POPNE    {R4-R6,PC}
        CMP      R6,#+0
        BNE      ??strcmp_nocase_0
//   65   return(i);
        POP      {R4-R6,PC}       ;; return
        CFI EndBlock cfiBlock3
//   66 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock4 Using cfiCommon0
        CFI NoFunction
        THUMB
??CLOSECURENTCSM??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock4
        REQUIRE CLOSECURENTCSM
//   67 
//   68 typedef struct
//   69 {
//   70   WSHDR *ws1;
//   71   WSHDR *ws2;
//   72 }rr;

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//   73 rr wss;
wss:
        DS8 8
//   74 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock5 Using cfiCommon1
        CFI Function CLOSECURENTCSM
        ARM
//   75 void CLOSECURENTCSM()
//   76 {
CLOSECURENTCSM:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//   77   CloseCSM(MAINCSM_ID);
        LDR      R0,??DataTable0  ;; MAINCSM_ID
        LDR      R0,[R0, #+0]
        SWI      +508
//   78 }
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock5

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable0:
        DC32     MAINCSM_ID

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock6 Using cfiCommon0
        CFI NoFunction
        THUMB
??readskinparamsfromfile??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock6
        REQUIRE readskinparamsfromfile
//   79 
//   80 typedef struct
//   81 {
//   82   CSM_RAM csm;
//   83   int gui_id;
//   84 }MAIN_CSM;
//   85 
//   86 /*typedef struct
//   87 {
//   88   char *backgroundname;
//   89   int progressbarconst;
//   90   char *progressbarname;
//   91   WSHDR *PLAYLIST;
//   92   WSHDR *TRACK;
//   93   WSHDR *NUMBEROFTRACKS;
//   94   char *offname;
//   95   char *randomname;
//   96   char *plusname;
//   97   char *minusname;
//   98   char *stopname;
//   99   char *playname;
//  100   char *prevname;
//  101   char *nextname;
//  102 }RedrawStruct;
//  103 RedrawStruct pisnia;*/
//  104 
//  105 
//  106 

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  107 int spysokx1=1,spysoky1=50,spysokx2=132,spysoky2=176,spysokfont=8,spysoktextattribute=2,spysoktextcolor=1,spysoktextbackground=23;
spysokx1:
        DS8 4
        REQUIRE `?<Initializer for spysokx1>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
spysoky1:
        DS8 4
        REQUIRE `?<Initializer for spysoky1>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
spysokx2:
        DS8 4
        REQUIRE `?<Initializer for spysokx2>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
spysoky2:
        DS8 4
        REQUIRE `?<Initializer for spysoky2>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
spysokfont:
        DS8 4
        REQUIRE `?<Initializer for spysokfont>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
spysoktextattribute:
        DS8 4
        REQUIRE `?<Initializer for spysoktextattribute>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
spysoktextcolor:
        DS8 4
        REQUIRE `?<Initializer for spysoktextcolor>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
spysoktextbackground:
        DS8 4
        REQUIRE `?<Initializer for spysoktextbackground>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  108 int timex1=1,timey1=134,timex2=132,timey2=176,timefont=7,timetextattribute=2,timetextcolor=1,timetextbackground=23;
timex1:
        DS8 4
        REQUIRE `?<Initializer for timex1>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
timey1:
        DS8 4
        REQUIRE `?<Initializer for timey1>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
timex2:
        DS8 4
        REQUIRE `?<Initializer for timex2>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
timey2:
        DS8 4
        REQUIRE `?<Initializer for timey2>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
timefont:
        DS8 4
        REQUIRE `?<Initializer for timefont>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
timetextattribute:
        DS8 4
        REQUIRE `?<Initializer for timetextattribute>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
timetextcolor:
        DS8 4
        REQUIRE `?<Initializer for timetextcolor>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
timetextbackground:
        DS8 4
        REQUIRE `?<Initializer for timetextbackground>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  109 int songx1=1,songy1=67,songx2=132,songy2=176,songfont=7,songtextattribute=0,songtextcolor=1,songtextbackground=23;
songx1:
        DS8 4
        REQUIRE `?<Initializer for songx1>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
songy1:
        DS8 4
        REQUIRE `?<Initializer for songy1>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
songx2:
        DS8 4
        REQUIRE `?<Initializer for songx2>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
songy2:
        DS8 4
        REQUIRE `?<Initializer for songy2>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
songfont:
        DS8 4
        REQUIRE `?<Initializer for songfont>`

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
songtextattribute:
        DS8 4

        RSEG DATA_I:DATA:SORT:NOROOT(2)
songtextcolor:
        DS8 4
        REQUIRE `?<Initializer for songtextcolor>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
songtextbackground:
        DS8 4
        REQUIRE `?<Initializer for songtextbackground>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  110 int tracksx1=1,tracksy1=1,tracksx2=132,tracksy2=176,tracksfont=7,trackstextattribute=4,trackstextcolor=1,trackstextbackground=23;
tracksx1:
        DS8 4
        REQUIRE `?<Initializer for tracksx1>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
tracksy1:
        DS8 4
        REQUIRE `?<Initializer for tracksy1>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
tracksx2:
        DS8 4
        REQUIRE `?<Initializer for tracksx2>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
tracksy2:
        DS8 4
        REQUIRE `?<Initializer for tracksy2>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
tracksfont:
        DS8 4
        REQUIRE `?<Initializer for tracksfont>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
trackstextattribute:
        DS8 4
        REQUIRE `?<Initializer for trackstextattribute>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
trackstextcolor:
        DS8 4
        REQUIRE `?<Initializer for trackstextcolor>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
trackstextbackground:
        DS8 4
        REQUIRE `?<Initializer for trackstextbackground>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  111 int volumex=1,volumey=157;
volumex:
        DS8 4
        REQUIRE `?<Initializer for volumex>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
volumey:
        DS8 4
        REQUIRE `?<Initializer for volumey>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  112 int randomx=2,randomy=2;
randomx:
        DS8 4
        REQUIRE `?<Initializer for randomx>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
randomy:
        DS8 4
        REQUIRE `?<Initializer for randomy>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  113 int ringoffx=25,ringoffy=2;
ringoffx:
        DS8 4
        REQUIRE `?<Initializer for ringoffx>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
ringoffy:
        DS8 4
        REQUIRE `?<Initializer for ringoffy>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  114 int prevx=45,prevy=18;
prevx:
        DS8 4
        REQUIRE `?<Initializer for prevx>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
prevy:
        DS8 4
        REQUIRE `?<Initializer for prevy>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  115 int nextx=74,nexty=18;
nextx:
        DS8 4
        REQUIRE `?<Initializer for nextx>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
nexty:
        DS8 4
        REQUIRE `?<Initializer for nexty>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  116 int volpx=61,volpy=5;
volpx:
        DS8 4
        REQUIRE `?<Initializer for volpx>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
volpy:
        DS8 4
        REQUIRE `?<Initializer for volpy>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  117 int volmx=61,volmy=30;
volmx:
        DS8 4
        REQUIRE `?<Initializer for volmx>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
volmy:
        DS8 4
        REQUIRE `?<Initializer for volmy>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  118 int play_stopx=62,play_stopy=19;
play_stopx:
        DS8 4
        REQUIRE `?<Initializer for play_stopx>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
play_stopy:
        DS8 4
        REQUIRE `?<Initializer for play_stopy>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  119 int progressbarx1=2,progressbary1=165,progressbarx2=132,progressbarcolour=20;
progressbarx1:
        DS8 4
        REQUIRE `?<Initializer for progressbarx1>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
progressbary1:
        DS8 4
        REQUIRE `?<Initializer for progressbary1>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
progressbarx2:
        DS8 4
        REQUIRE `?<Initializer for progressbarx2>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
progressbarcolour:
        DS8 4
        REQUIRE `?<Initializer for progressbarcolour>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  120 int katalogbackgroundcolour=9,katalogfontcolour=1,katalogselectedcolour=14;
katalogbackgroundcolour:
        DS8 4
        REQUIRE `?<Initializer for katalogbackgroundcolour>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
katalogfontcolour:
        DS8 4
        REQUIRE `?<Initializer for katalogfontcolour>`

        RSEG DATA_I:DATA:SORT:NOROOT(2)
katalogselectedcolour:
        DS8 4
        REQUIRE `?<Initializer for katalogselectedcolour>`

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//  121 char name[256];
name:
        DS8 256

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock7 Using cfiCommon1
        CFI Function readskinparamsfromfile
        ARM
//  122 void readskinparamsfromfile()
//  123 {
readskinparamsfromfile:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        SUB      SP,SP,#+996
        CFI CFA R13+1008
        SUB      SP,SP,#+19456
        CFI CFA R13+20464
//  124   int f;
//  125   char list[20000];
//  126   sprintf(name,"%sskins\\%s\\params.txt",playerfolder,ArrayOfSkins[curskin]);
        LDR      R0,??readskinparamsfromfile_0  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??readskinparamsfromfile_0+0x4  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??readskinparamsfromfile_0+0x8  ;; playerfolder
        LDR      R1,??readskinparamsfromfile_0+0xC  ;; `?<Constant "%sskins\\\\%s\\\\params.txt">`
        LDR      R0,??readskinparamsfromfile_0+0x10  ;; name
        SWI      +22
//  127   unsigned int err;
//  128   f=fopen(name, A_ReadOnly+A_MMCStream, P_READ, & err );
        ADD      R3,SP,#+8
        MOV      R2,#+128
        MOV      R1,#+32
        LDR      R0,??readskinparamsfromfile_0+0x10  ;; name
        SWI      +10
        MOV      R4,R0
//  129   if (f!=-1)
        CMN      R4,#+1
        BEQ      ??readskinparamsfromfile_1
//  130   {
//  131   DIR_ENTRY de;
//  132   FindFirstFile(&de,name,&err);
        ADD      R2,SP,#+8
        LDR      R1,??readskinparamsfromfile_0+0x10  ;; name
        ADD      R0,SP,#+12
        SWI      +107
//  133   fread(f,list,de.file_size,&err);
        ADD      R3,SP,#+8
        LDR      R2,[SP, #+32]
        ADD      R1,SP,#+452
        MOV      R0,R4
        SWI      +11
//  134   char num[5];
//  135   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
//  136   int i=0;
        MOV      R0,#+0
        LDR      R1,[SP, #+32]
        CMP      R1,#+0
        BEQ      ??readskinparamsfromfile_2
        ADD      R1,SP,#+452
??readskinparamsfromfile_3:
        LDRB     R2,[R1], #+1
        CMP      R2,#+13
        BEQ      ??readskinparamsfromfile_2
//  137 while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
        ADD      R0,R0,#+1
        LDR      R2,[SP, #+32]
        CMP      R0,R2
        BCC      ??readskinparamsfromfile_3
//  138   i=i+2;  
??readskinparamsfromfile_2:
        ADD      R5,R0,#+2
        B        ??readskinparamsfromfile_4
//  139 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_5:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_4:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_6
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_5
//  140   sscanf(num,p_i,&spysokx1);
??readskinparamsfromfile_6:
        LDR      R2,??readskinparamsfromfile_0+0x1C  ;; spysokx1
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  141   i=i+2;
        ADD      R5,R5,#+2
//  142   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_7
//  143 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_8:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_7:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_9
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_8
//  144   sscanf(num,p_i,&spysoky1);
??readskinparamsfromfile_9:
        LDR      R2,??readskinparamsfromfile_0+0x24  ;; spysoky1
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  145   i=i+2;
        ADD      R5,R5,#+2
//  146   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_10
//  147 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_11:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_10:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_12
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_11
//  148   sscanf(num,p_i,&spysokx2);
??readskinparamsfromfile_12:
        LDR      R2,??readskinparamsfromfile_0+0x28  ;; spysokx2
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  149   i=i+2;
        ADD      R5,R5,#+2
//  150   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_13
//  151 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_14:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_13:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_15
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_14
//  152   sscanf(num,p_i,&spysoky2);
??readskinparamsfromfile_15:
        LDR      R2,??readskinparamsfromfile_0+0x2C  ;; spysoky2
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  153   i=i+2;
        ADD      R5,R5,#+2
//  154   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_16
//  155 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_17:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_16:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_18
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_17
//  156   sscanf(num,p_i,&spysokfont);
??readskinparamsfromfile_18:
        LDR      R2,??readskinparamsfromfile_0+0x30  ;; spysokfont
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  157   i=i+2;
        ADD      R5,R5,#+2
//  158   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_19
//  159 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_20:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_19:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_21
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_20
//  160   sscanf(num,p_i,&spysoktextattribute);
??readskinparamsfromfile_21:
        LDR      R2,??readskinparamsfromfile_0+0x34  ;; spysoktextattribute
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  161   i=i+2;
        ADD      R5,R5,#+2
//  162   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_22
//  163 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_23:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_22:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_24
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_23
//  164   sscanf(num,p_i,&spysoktextcolor);
??readskinparamsfromfile_24:
        LDR      R2,??readskinparamsfromfile_0+0x38  ;; spysoktextcolor
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  165   i=i+2;
        ADD      R5,R5,#+2
//  166   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_25
//  167 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_26:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_25:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_27
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_26
//  168   sscanf(num,p_i,&spysoktextbackground);
??readskinparamsfromfile_27:
        LDR      R2,??readskinparamsfromfile_0+0x3C  ;; spysoktextbackground
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  169   i=i+2;
        ADD      R5,R5,#+2
//  170   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_28
        B        ??readskinparamsfromfile_29
//  171  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_30:
        ADD      R5,R5,#+1
??readskinparamsfromfile_28:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_29
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_30
//  172   i=i+2;
??readskinparamsfromfile_29:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_31
//  173 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_32:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_31:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_33
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_32
//  174   sscanf(num,p_i,&timex1);
??readskinparamsfromfile_33:
        LDR      R2,??readskinparamsfromfile_0+0x40  ;; timex1
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  175   i=i+2;
        ADD      R5,R5,#+2
//  176   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_34
//  177 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_35:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_34:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_36
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_35
//  178   sscanf(num,p_i,&timey1);
??readskinparamsfromfile_36:
        LDR      R2,??readskinparamsfromfile_0+0x44  ;; timey1
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  179   i=i+2;
        ADD      R5,R5,#+2
//  180   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_37
//  181 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_38:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_37:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_39
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_38
//  182   sscanf(num,p_i,&timex2);
??readskinparamsfromfile_39:
        LDR      R2,??readskinparamsfromfile_0+0x48  ;; timex2
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  183   i=i+2;
        ADD      R5,R5,#+2
//  184   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_40
//  185 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_41:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_40:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_42
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_41
//  186   sscanf(num,p_i,&timey2);
??readskinparamsfromfile_42:
        LDR      R2,??readskinparamsfromfile_0+0x4C  ;; timey2
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  187   i=i+2;
        ADD      R5,R5,#+2
//  188   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_43
//  189 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_44:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_43:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_45
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_44
//  190   sscanf(num,p_i,&timefont);
??readskinparamsfromfile_45:
        LDR      R2,??readskinparamsfromfile_0+0x50  ;; timefont
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  191   i=i+2;
        ADD      R5,R5,#+2
//  192   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_46
//  193 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_47:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_46:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_48
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_47
//  194   sscanf(num,p_i,&timetextattribute);
??readskinparamsfromfile_48:
        LDR      R2,??readskinparamsfromfile_0+0x54  ;; timetextattribute
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  195   i=i+2;
        ADD      R5,R5,#+2
//  196   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_49
//  197 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_50:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_49:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_51
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_50
//  198   sscanf(num,p_i,&timetextcolor);
??readskinparamsfromfile_51:
        LDR      R2,??readskinparamsfromfile_0+0x58  ;; timetextcolor
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  199   i=i+2;
        ADD      R5,R5,#+2
//  200   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_52
//  201 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_53:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_52:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_54
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_53
//  202   sscanf(num,p_i,&timetextbackground);
??readskinparamsfromfile_54:
        LDR      R2,??readskinparamsfromfile_0+0x5C  ;; timetextbackground
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  203   i=i+2;
        ADD      R5,R5,#+2
//  204   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_55
        B        ??readskinparamsfromfile_56
//  205  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_57:
        ADD      R5,R5,#+1
??readskinparamsfromfile_55:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_56
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_57
//  206   i=i+2;
??readskinparamsfromfile_56:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_58
//  207 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_59:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_58:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_60
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_59
//  208   sscanf(num,p_i,&songx1);
??readskinparamsfromfile_60:
        LDR      R2,??readskinparamsfromfile_0+0x60  ;; songx1
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  209   i=i+2;
        ADD      R5,R5,#+2
//  210   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_61
//  211 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_62:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_61:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_63
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_62
//  212   sscanf(num,p_i,&songy1);
??readskinparamsfromfile_63:
        LDR      R2,??readskinparamsfromfile_0+0x64  ;; songy1
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  213   i=i+2;
        ADD      R5,R5,#+2
//  214   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_64
//  215 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_65:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_64:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_66
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_65
//  216   sscanf(num,p_i,&songx2);
??readskinparamsfromfile_66:
        LDR      R2,??readskinparamsfromfile_0+0x68  ;; songx2
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  217   i=i+2;
        ADD      R5,R5,#+2
//  218   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_67
//  219 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_68:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_67:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_69
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_68
//  220   sscanf(num,p_i,&songy2);
??readskinparamsfromfile_69:
        LDR      R2,??readskinparamsfromfile_70  ;; songy2
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  221   i=i+2;
        ADD      R5,R5,#+2
//  222   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_71
//  223 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_72:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_71:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_73
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_72
//  224   sscanf(num,p_i,&songfont);
??readskinparamsfromfile_73:
        LDR      R2,??readskinparamsfromfile_70+0x4  ;; songfont
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  225   i=i+2;
        ADD      R5,R5,#+2
//  226   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_74
//  227 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_75:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_74:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_76
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_75
//  228   sscanf(num,p_i,&songtextattribute);
??readskinparamsfromfile_76:
        LDR      R2,??readskinparamsfromfile_70+0x8  ;; songtextattribute
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  229   i=i+2;
        ADD      R5,R5,#+2
//  230   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_77
//  231 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_78:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_77:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_79
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_78
//  232   sscanf(num,p_i,&songtextcolor);
??readskinparamsfromfile_79:
        LDR      R2,??readskinparamsfromfile_70+0xC  ;; songtextcolor
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  233   i=i+2;
        ADD      R5,R5,#+2
//  234   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_80
//  235 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_81:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_80:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_82
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_81
//  236   sscanf(num,p_i,&songtextbackground);
??readskinparamsfromfile_82:
        LDR      R2,??readskinparamsfromfile_70+0x10  ;; songtextbackground
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  237   i=i+2;
        ADD      R5,R5,#+2
//  238   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_83
        B        ??readskinparamsfromfile_84
//  239  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_85:
        ADD      R5,R5,#+1
??readskinparamsfromfile_83:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_84
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_85
//  240   i=i+2;
??readskinparamsfromfile_84:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_86
//  241 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_87:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_86:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_88
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_87
//  242   sscanf(num,p_i,&tracksx1);
??readskinparamsfromfile_88:
        LDR      R2,??readskinparamsfromfile_70+0x14  ;; tracksx1
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  243   i=i+2;
        ADD      R5,R5,#+2
//  244   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_89
//  245 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_90:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_89:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_91
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_90
//  246   sscanf(num,p_i,&tracksy1);
??readskinparamsfromfile_91:
        LDR      R2,??readskinparamsfromfile_70+0x18  ;; tracksy1
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  247   i=i+2;
        ADD      R5,R5,#+2
//  248   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_92
//  249 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_93:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_92:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_94
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_93
//  250   sscanf(num,p_i,&tracksx2);
??readskinparamsfromfile_94:
        LDR      R2,??readskinparamsfromfile_70+0x1C  ;; tracksx2
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  251   i=i+2;
        ADD      R5,R5,#+2
//  252   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_95
//  253 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_96:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_95:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_97
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_96
//  254   sscanf(num,p_i,&tracksy2);
??readskinparamsfromfile_97:
        LDR      R2,??readskinparamsfromfile_70+0x20  ;; tracksy2
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  255   i=i+2;
        ADD      R5,R5,#+2
//  256   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_98
//  257 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_99:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_98:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_100
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_99
//  258   sscanf(num,p_i,&tracksfont);
??readskinparamsfromfile_100:
        LDR      R2,??readskinparamsfromfile_70+0x24  ;; tracksfont
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  259   i=i+2;
        ADD      R5,R5,#+2
//  260   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_101
//  261 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_102:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_101:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_103
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_102
//  262   sscanf(num,p_i,&trackstextattribute);
??readskinparamsfromfile_103:
        LDR      R2,??readskinparamsfromfile_70+0x28  ;; trackstextattribute
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  263   i=i+2;
        ADD      R5,R5,#+2
//  264   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_104
//  265 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_105:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_104:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_106
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_105
//  266   sscanf(num,p_i,&trackstextcolor);
??readskinparamsfromfile_106:
        LDR      R2,??readskinparamsfromfile_70+0x2C  ;; trackstextcolor
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  267   i=i+2;
        ADD      R5,R5,#+2
//  268   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_107
//  269 while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_108:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_107:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_109
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_108
//  270   sscanf(num,p_i,&trackstextbackground);
??readskinparamsfromfile_109:
        LDR      R2,??DataTable1  ;; trackstextbackground
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  271   i=i+2;
        ADD      R5,R5,#+2
//  272   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_110
        B        ??readskinparamsfromfile_111
//  273  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_112:
        ADD      R5,R5,#+1
??readskinparamsfromfile_110:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_111
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_112
//  274   i=i+2;
??readskinparamsfromfile_111:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_113
//  275   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_114:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_113:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_115
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_114
//  276   sscanf(num,p_i,&volumex);
??readskinparamsfromfile_115:
        LDR      R2,??DataTable2  ;; volumex
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  277   i=i+2;
        ADD      R5,R5,#+2
//  278   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_116
//  279   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_117:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_116:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_118
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_117
//  280   sscanf(num,p_i,&volumey);
??readskinparamsfromfile_118:
        LDR      R2,??DataTable3  ;; volumey
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  281   i=i+2;
        ADD      R0,R5,#+2
        LDR      R1,[SP, #+32]
        CMP      R0,R1
        BCC      ??readskinparamsfromfile_119
        B        ??readskinparamsfromfile_120
//  282  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_121:
        ADD      R0,R0,#+1
??readskinparamsfromfile_119:
        LDR      R1,[SP, #+32]
        CMP      R0,R1
        BCS      ??readskinparamsfromfile_120
        ADD      R1,SP,#+452
        LDRB     R1,[R0, +R1]
        CMP      R1,#+13
        BNE      ??readskinparamsfromfile_121
//  283   i=i+2;
??readskinparamsfromfile_120:
        ADD      R5,R0,#+2
//  284   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_122
//  285   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_123:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_122:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_124
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_123
//  286   sscanf(num,p_i,&randomx);
??readskinparamsfromfile_124:
        LDR      R2,??DataTable4  ;; randomx
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  287   i=i+2;
        ADD      R5,R5,#+2
//  288   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_125
//  289   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_126:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_125:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_127
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_126
//  290   sscanf(num,p_i,&randomy);
??readskinparamsfromfile_127:
        LDR      R2,??DataTable5  ;; randomy
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  291   i=i+2;
        ADD      R5,R5,#+2
//  292   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_128
        B        ??readskinparamsfromfile_129
//  293  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_130:
        ADD      R5,R5,#+1
??readskinparamsfromfile_128:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_129
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_130
//  294   i=i+2;
??readskinparamsfromfile_129:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_131
//  295   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_132:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??readskinparamsfromfile_0+0x18  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_131:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_133
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_132
//  296   sscanf(num,p_i,&ringoffx);
??readskinparamsfromfile_133:
        LDR      R2,??DataTable6  ;; ringoffx
        LDR      R1,??readskinparamsfromfile_0+0x20  ;; p_i
        MOV      R0,SP
        SWI      +501
//  297   i=i+2;
        ADD      R5,R5,#+2
//  298   sprintf(num,pp);
        LDR      R1,??readskinparamsfromfile_0+0x14  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_134
        DATA
??readskinparamsfromfile_0:
        DC32     curskin
        DC32     ArrayOfSkins
        DC32     playerfolder
        DC32     `?<Constant "%sskins\\\\%s\\\\params.txt">`
        DC32     name
        DC32     pp
        DC32     `?<Constant "%s%c">`
        DC32     spysokx1
        DC32     p_i
        DC32     spysoky1
        DC32     spysokx2
        DC32     spysoky2
        DC32     spysokfont
        DC32     spysoktextattribute
        DC32     spysoktextcolor
        DC32     spysoktextbackground
        DC32     timex1
        DC32     timey1
        DC32     timex2
        DC32     timey2
        DC32     timefont
        DC32     timetextattribute
        DC32     timetextcolor
        DC32     timetextbackground
        DC32     songx1
        DC32     songy1
        DC32     songx2
        ARM
//  299   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_135:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_134:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_136
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_135
//  300   sscanf(num,p_i,&ringoffy);
??readskinparamsfromfile_136:
        LDR      R2,??DataTable8  ;; ringoffy
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  301   i=i+2;
        ADD      R5,R5,#+2
//  302   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_137
        B        ??readskinparamsfromfile_138
//  303  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_139:
        ADD      R5,R5,#+1
??readskinparamsfromfile_137:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_138
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_139
//  304   i=i+2;
??readskinparamsfromfile_138:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_140
//  305   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_141:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_140:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_142
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_141
//  306   sscanf(num,p_i,&prevx);
??readskinparamsfromfile_142:
        LDR      R2,??DataTable11  ;; prevx
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  307   i=i+2;
        ADD      R5,R5,#+2
//  308   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_143
//  309   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_144:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_143:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_145
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_144
//  310   sscanf(num,p_i,&prevy);
??readskinparamsfromfile_145:
        LDR      R2,??DataTable14  ;; prevy
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  311   i=i+2;
        ADD      R5,R5,#+2
//  312   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_146
        B        ??readskinparamsfromfile_147
//  313  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_148:
        ADD      R5,R5,#+1
??readskinparamsfromfile_146:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_147
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_148
//  314   i=i+2;
??readskinparamsfromfile_147:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_149
//  315   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_150:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_149:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_151
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_150
//  316   sscanf(num,p_i,&nextx);
??readskinparamsfromfile_151:
        LDR      R2,??DataTable17  ;; nextx
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  317   i=i+2;
        ADD      R5,R5,#+2
//  318   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_152
//  319   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_153:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_152:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_154
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_153
//  320   sscanf(num,p_i,&nexty);
??readskinparamsfromfile_154:
        LDR      R2,??DataTable20  ;; nexty
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  321   i=i+2;
        ADD      R5,R5,#+2
//  322   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_155
        B        ??readskinparamsfromfile_156
//  323  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_157:
        ADD      R5,R5,#+1
??readskinparamsfromfile_155:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_156
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_157
//  324   i=i+2;
??readskinparamsfromfile_156:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_158
//  325   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_159:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_158:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_160
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_159
//  326   sscanf(num,p_i,&volpx);
??readskinparamsfromfile_160:
        LDR      R2,??DataTable23  ;; volpx
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  327   i=i+2;
        ADD      R5,R5,#+2
//  328   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_161
//  329   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_162:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_161:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_163
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_162
//  330   sscanf(num,p_i,&volpy);
??readskinparamsfromfile_163:
        LDR      R2,??DataTable26  ;; volpy
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  331   i=i+2;
        ADD      R5,R5,#+2
//  332   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_164
        B        ??readskinparamsfromfile_165
//  333  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_166:
        ADD      R5,R5,#+1
??readskinparamsfromfile_164:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_165
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_166
//  334   i=i+2;
??readskinparamsfromfile_165:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_167
//  335   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_168:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_167:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_169
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_168
//  336   sscanf(num,p_i,&volmx);
??readskinparamsfromfile_169:
        LDR      R2,??DataTable29  ;; volmx
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  337   i=i+2;
        ADD      R5,R5,#+2
//  338   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_170
//  339   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_171:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_170:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_172
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_171
//  340   sscanf(num,p_i,&volmy);
??readskinparamsfromfile_172:
        LDR      R2,??DataTable32  ;; volmy
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  341   i=i+2;
        ADD      R5,R5,#+2
//  342   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_173
        B        ??readskinparamsfromfile_174
//  343  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_175:
        ADD      R5,R5,#+1
??readskinparamsfromfile_173:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_174
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_175
//  344   i=i+2;
??readskinparamsfromfile_174:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_176
//  345   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_177:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_176:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_178
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_177
//  346   sscanf(num,p_i,&play_stopx);
??readskinparamsfromfile_178:
        LDR      R2,??DataTable35  ;; play_stopx
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  347   i=i+2;
        ADD      R5,R5,#+2
//  348   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_179
//  349   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_180:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_179:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_181
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_180
//  350   sscanf(num,p_i,&play_stopy);
??readskinparamsfromfile_181:
        LDR      R2,??DataTable38  ;; play_stopy
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  351   i=i+2;
        ADD      R5,R5,#+2
//  352   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_182
        B        ??readskinparamsfromfile_183
//  353  while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_184:
        ADD      R5,R5,#+1
??readskinparamsfromfile_182:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_183
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_184
//  354   i=i+2;
??readskinparamsfromfile_183:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_185
//  355   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_186:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_185:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_187
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_186
//  356   sscanf(num,p_i,&progressbarx1);
??readskinparamsfromfile_187:
        LDR      R2,??DataTable41  ;; progressbarx1
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  357   i=i+2;
        ADD      R5,R5,#+2
//  358   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_188
//  359   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_189:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_188:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_190
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_189
//  360   sscanf(num,p_i,&progressbary1);
??readskinparamsfromfile_190:
        LDR      R2,??DataTable44  ;; progressbary1
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  361   i=i+2;
        ADD      R5,R5,#+2
//  362   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_191
//  363   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_192:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_191:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_193
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_192
//  364   sscanf(num,p_i,&progressbarx2);
??readskinparamsfromfile_193:
        LDR      R2,??DataTable47  ;; progressbarx2
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  365   i=i+2;
        ADD      R5,R5,#+2
//  366   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_194
//  367   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_195:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_194:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_196
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_195
//  368   sscanf(num,p_i,&progressbarcolour);
??readskinparamsfromfile_196:
        LDR      R2,??DataTable50  ;; progressbarcolour
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  369   i=i+2;
        ADD      R5,R5,#+2
//  370   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCC      ??readskinparamsfromfile_197
        B        ??readskinparamsfromfile_198
//  371    while ((i<de.file_size)&&(list[i]!=0x0D)) {i++;}
??readskinparamsfromfile_199:
        ADD      R5,R5,#+1
??readskinparamsfromfile_197:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_198
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_199
//  372   i=i+2;
??readskinparamsfromfile_198:
        ADD      R5,R5,#+2
        B        ??readskinparamsfromfile_200
//  373   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_201:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_200:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_202
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_201
//  374   sscanf(num,p_i,&katalogbackgroundcolour);
??readskinparamsfromfile_202:
        LDR      R2,??DataTable117  ;; katalogbackgroundcolour
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  375   i=i+2;
        ADD      R5,R5,#+2
//  376   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_203
//  377   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_204:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_203:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_205
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_204
//  378   sscanf(num,p_i,&katalogfontcolour);
??readskinparamsfromfile_205:
        LDR      R2,??DataTable75  ;; katalogfontcolour
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  379   i=i+2;
        ADD      R5,R5,#+2
//  380   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
        B        ??readskinparamsfromfile_206
//  381   while ((i<de.file_size)&&(list[i]!=0x0D)) {sprintf(num,"%s%c",num,list[i]);i++;}
??readskinparamsfromfile_207:
        ADD      R0,SP,#+452
        LDRB     R3,[R5, +R0]
        MOV      R2,SP
        LDR      R1,??DataTable58  ;; `?<Constant "%s%c">`
        MOV      R0,SP
        SWI      +22
        ADD      R5,R5,#+1
??readskinparamsfromfile_206:
        LDR      R0,[SP, #+32]
        CMP      R5,R0
        BCS      ??readskinparamsfromfile_208
        ADD      R0,SP,#+452
        LDRB     R0,[R5, +R0]
        CMP      R0,#+13
        BNE      ??readskinparamsfromfile_207
//  382   sscanf(num,p_i,&katalogselectedcolour);
??readskinparamsfromfile_208:
        LDR      R2,??DataTable59  ;; katalogselectedcolour
        LDR      R1,??readskinparamsfromfile_70+0x30  ;; p_i
        MOV      R0,SP
        SWI      +501
//  383   i=i+2;
//  384   sprintf(num,pp);
        LDR      R1,??DataTable60  ;; pp
        MOV      R0,SP
        SWI      +22
//  385   FindClose(&de,&err);
        ADD      R1,SP,#+8
        ADD      R0,SP,#+12
        SWI      +109
//  386   }
//  387   fclose(f,&err);
??readskinparamsfromfile_1:
        ADD      R1,SP,#+8
        MOV      R0,R4
        SWI      +13
//  388 }
        ADD      SP,SP,#+996      ;; stack cleaning
        CFI CFA R13+19468
        ADD      SP,SP,#+19456
        CFI CFA R13+12
        POP      {R4,R5,PC}       ;; return
        DATA
??readskinparamsfromfile_70:
        DC32     songy2
        DC32     songfont
        DC32     songtextattribute
        DC32     songtextcolor
        DC32     songtextbackground
        DC32     tracksx1
        DC32     tracksy1
        DC32     tracksx2
        DC32     tracksy2
        DC32     tracksfont
        DC32     trackstextattribute
        DC32     trackstextcolor
        DC32     p_i
        CFI EndBlock cfiBlock7

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable1:
        DC32     trackstextbackground

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable2:
        DC32     volumex

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable3:
        DC32     volumey

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable4:
        DC32     randomx

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable5:
        DC32     randomy

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable6:
        DC32     ringoffx

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable8:
        DC32     ringoffy

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable11:
        DC32     prevx

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable14:
        DC32     prevy

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable17:
        DC32     nextx

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable20:
        DC32     nexty

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable23:
        DC32     volpx

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable26:
        DC32     volpy

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable29:
        DC32     volmx

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable32:
        DC32     volmy

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable35:
        DC32     play_stopx

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable38:
        DC32     play_stopy

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable41:
        DC32     progressbarx1

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable44:
        DC32     progressbary1

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable47:
        DC32     progressbarx2

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable50:
        DC32     progressbarcolour

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable58:
        DC32     `?<Constant "%s%c">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable59:
        DC32     katalogselectedcolour

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable60:
        DC32     pp

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock8 Using cfiCommon0
        CFI NoFunction
        THUMB
??patch_input??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock8
        REQUIRE patch_input
//  389 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock9 Using cfiCommon1
        CFI Function patch_input
        ARM
//  390 void patch_input(INPUTDIA_DESC* inp)
//  391 {
patch_input:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        MOV      R4,R0
//  392   inp->rc.x=0;
        MOV      R0,#+0
        STRH     R0,[R4, #+24]
//  393   inp->rc.y=HeaderH()+1+YDISP;
        SWI      +33162
        ADD      R0,R0,#+1
        STRH     R0,[R4, #+26]
//  394   inp->rc.x2=ScreenW()-1;
        SWI      +33160
        SUB      R0,R0,#+1
        STRH     R0,[R4, #+28]
//  395   inp->rc.y2=ScreenH()-SoftkeyH()-1;
        SWI      +33161
        MOV      R5,R0
        SWI      +33163
        SUB      R0,R5,R0
        SUB      R0,R0,#+1
        STRH     R0,[R4, #+30]
//  396 }
        POP      {R4,R5,PC}       ;; return
        CFI EndBlock cfiBlock9

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock10 Using cfiCommon0
        CFI NoFunction
        THUMB
??patch_header2??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock10
        REQUIRE patch_header2
//  397 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock11 Using cfiCommon1
        CFI Function patch_header2
        ARM
//  398 void patch_header2(HEADER_DESC* head)
//  399 {
patch_header2:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        MOV      R4,R0
//  400   head->rc.x=0;
        MOV      R0,#+0
        STRH     R0,[R4, #+0]
//  401   head->rc.y=YDISP;
        STRH     R0,[R4, #+2]
//  402   head->rc.x2=ScreenW()-1;
        SWI      +33160
        SUB      R0,R0,#+1
        STRH     R0,[R4, #+4]
//  403   head->rc.y2=HeaderH()+YDISP;
        SWI      +33162
        STRH     R0,[R4, #+6]
//  404 }
        POP      {R4,PC}          ;; return
        CFI EndBlock cfiBlock11

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock12 Using cfiCommon0
        CFI NoFunction
        THUMB
??sf_inp_onkey??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock12
        REQUIRE sf_inp_onkey
//  405 

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  406 SOFTKEY_DESC menu_sk[]=
menu_sk:
        DS8 24
        REQUIRE `?<Initializer for menu_sk>`
//  407 {
//  408   {0x0018,0x0000,(int)"Select"},
//  409   {0x0001,0x0000,(int)"Back"},
//  410   {0x003D,0x0000,(int)LGP_DOIT_PIC}
//  411 };
//  412 

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  413 SOFTKEYSTAB menu_skt=
menu_skt:
        DS8 8
        REQUIRE `?<Initializer for menu_skt>`
//  414 {
//  415   menu_sk,0
//  416 };
//  417 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock13 Using cfiCommon1
        CFI Function sf_inp_onkey
        ARM
//  418 int sf_inp_onkey(GUI *data, GUI_MSG *msg)
//  419 {
sf_inp_onkey:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
        SUB      SP,SP,#+44
        CFI CFA R13+48
//  420   if (msg->keys==0xFFF)
        LDRSH    R1,[R1, #+2]
        MOV      R2,#+255
        ORR      R2,R2,#0xF00
        CMP      R1,R2
        BNE      ??sf_inp_onkey_0
//  421   {
//  422     EDITCONTROL ec;
//  423     ExtractEditControl(data,1,&ec);
        MOV      R2,SP
        MOV      R1,#+1
        SWI      +361
//  424     ws_2str(ec.pWS,PlaylistToSave,255);
        MOV      R2,#+255
        LDR      R1,??DataTable62  ;; PlaylistToSave
        LDR      R0,[SP, #+40]
        SWI      +163
//  425     SUBPROC((void *)SavePlaylist);
        LDR      R0,??sf_inp_onkey_1  ;; SavePlaylist
        SWI      +369
//  426     return(1); //Close
        MOV      R0,#+1
        ADD      SP,SP,#+44
        CFI CFA R13+4
        POP      {PC}
        CFI CFA R13+48
//  427   }
//  428   return(0);
??sf_inp_onkey_0:
        MOV      R0,#+0
        ADD      SP,SP,#+44       ;; stack cleaning
        CFI CFA R13+4
        POP      {PC}             ;; return
        DATA
??sf_inp_onkey_1:
        DC32     SavePlaylist
        CFI EndBlock cfiBlock13
//  429 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock14 Using cfiCommon0
        CFI NoFunction
        THUMB
??sf_inp_ghook??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock14
        REQUIRE sf_inp_ghook
//  430 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock15 Using cfiCommon1
        CFI Function sf_inp_ghook
        ARM
//  431 void sf_inp_ghook(GUI *data, int cmd)
//  432 {
sf_inp_ghook:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        SUB      SP,SP,#+44
        CFI CFA R13+52
        MOV      R4,R0
//  433   static SOFTKEY_DESC sk={0x0FFF,0x0000,(int)LG_SAVE};
//  434   EDITCONTROL ec;
//  435   if (cmd==7)
        CMP      R1,#+7
        BNE      ??sf_inp_ghook_0
//  436   {
//  437     SetSoftKey(data,&sk,SET_SOFT_KEY_N);
        MOV      R2,#+1
        LDR      R1,??sf_inp_ghook_1  ;; ??sk
        SWI      +360
//  438     ExtractEditControl(data,1,&ec);
        MOV      R2,SP
        MOV      R1,#+1
        MOV      R0,R4
        SWI      +361
//  439   }
//  440 }
??sf_inp_ghook_0:
        ADD      SP,SP,#+44       ;; stack cleaning
        CFI CFA R13+8
        POP      {R4,PC}          ;; return
        DATA
??sf_inp_ghook_1:
        DC32     ??sk
        CFI EndBlock cfiBlock15

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock16 Using cfiCommon0
        CFI NoFunction
        THUMB
??sf_inp_locret??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock16
        REQUIRE sf_inp_locret

        RSEG DATA_I:DATA:SORT:NOROOT(2)
??sk:
        DS8 8
        REQUIRE `?<Initializer for sk>`
//  441 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock17 Using cfiCommon1
        CFI Function sf_inp_locret
        ARM
//  442 void sf_inp_locret(void){}
sf_inp_locret:
        BX       LR               ;; return
        CFI EndBlock cfiBlock17

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock18 Using cfiCommon0
        CFI NoFunction
        THUMB
??CreateSaveAsDialog??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock18
        REQUIRE CreateSaveAsDialog
//  443 

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  444 HEADER_DESC sf_inp_hdr={0,0,0,0,NULL,(int)LG_ENTER_NAME,LGP_NULL};
sf_inp_hdr:
        DS8 20
        REQUIRE `?<Initializer for sf_inp_hdr>`
//  445 

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  446 INPUTDIA_DESC sf_inp_desc=
sf_inp_desc:
        DS8 56
        REQUIRE `?<Initializer for sf_inp_desc>`
//  447 {
//  448   1,
//  449   sf_inp_onkey,
//  450   sf_inp_ghook,
//  451   (void *)sf_inp_locret,
//  452   0,
//  453   &menu_skt,
//  454   {0,0,0,0},
//  455   4,
//  456   100,
//  457   101,
//  458   0,
//  459   0,
//  460   0x40000000
//  461 };
//  462 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock19 Using cfiCommon1
        CFI Function CreateSaveAsDialog
        ARM
//  463 void CreateSaveAsDialog(void)
//  464 {
CreateSaveAsDialog:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        SUB      SP,SP,#+44
        CFI CFA R13+56
//  465   void *ma=malloc_adr();
        SWI      +32788
        MOV      R4,R0
//  466   void *eq;
//  467   EDITCONTROL ec;
//  468   utf8_2ws(wss.ws2,PlaylistToSave,126);
        MOV      R2,#+126
        LDR      R1,??DataTable62  ;; PlaylistToSave
        LDR      R0,??DataTable64  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +483
//  469   PrepareEditControl(&ec);
        MOV      R0,SP
        SWI      +356
//  470   eq=AllocEQueue(ma,mfree_adr());
        SWI      +32789
        MOV      R1,R0
        MOV      R0,R4
        SWI      +355
        MOV      R5,R0
//  471   ConstructEditControl(&ec,3,0x40,wss.ws2,128);
        MOV      R0,#+128
        PUSH     {R0}
        CFI CFA R13+60
        LDR      R0,??DataTable64  ;; wss + 4
        LDR      R3,[R0, #+0]
        MOV      R2,#+64
        MOV      R1,#+3
        ADD      R0,SP,#+4
        SWI      +357
//  472   AddEditControlToEditQend(eq,&ec,ma);
        MOV      R2,R4
        ADD      R1,SP,#+4
        MOV      R0,R5
        SWI      +358
//  473   
//  474   patch_header2(&sf_inp_hdr);
        LDR      R0,??CreateSaveAsDialog_0  ;; sf_inp_hdr
        BL       patch_header2
//  475   patch_input(&sf_inp_desc);
        LDR      R0,??CreateSaveAsDialog_0+0x4  ;; sf_inp_desc
        BL       patch_input
//  476   CreateInputTextDialog(&sf_inp_desc,&sf_inp_hdr,eq,1,0);
        MOV      R0,#+0
        PUSH     {R0}
        CFI CFA R13+64
        MOV      R3,#+1
        MOV      R2,R5
        LDR      R1,??CreateSaveAsDialog_0  ;; sf_inp_hdr
        LDR      R0,??CreateSaveAsDialog_0+0x4  ;; sf_inp_desc
        SWI      +359
//  477 }
        ADD      SP,SP,#+52       ;; stack cleaning
        CFI CFA R13+12
        POP      {R4,R5,PC}       ;; return
        DATA
??CreateSaveAsDialog_0:
        DC32     sf_inp_hdr
        DC32     sf_inp_desc
        CFI EndBlock cfiBlock19

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable62:
        DC32     PlaylistToSave

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable64:
        DC32     wss + 4

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock20 Using cfiCommon0
        CFI NoFunction
        THUMB
??VporiadkuvatySpysok??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock20
        REQUIRE VporiadkuvatySpysok
//  478 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock21 Using cfiCommon1
        CFI Function VporiadkuvatySpysok
        ARM
//  479 void VporiadkuvatySpysok()
//  480 {
VporiadkuvatySpysok:
        PUSH     {R4-R9,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R9 Frame(CFA, -8)
        CFI R8 Frame(CFA, -12)
        CFI R7 Frame(CFA, -16)
        CFI R6 Frame(CFA, -20)
        CFI R5 Frame(CFA, -24)
        CFI R4 Frame(CFA, -28)
        CFI CFA R13+28
//  481   for (int i=0;i<NumberOfTracks-1;i++)
        MOV      R4,#+0
        LDR      R6,??DataTable65  ;; spysok + 32640
        LDR      R5,??DataTable74  ;; spysok
        B        ??VporiadkuvatySpysok_0
//  482   {
//  483     for (int j=i+1;j<NumberOfTracks;j++)
//  484     {
//  485       if (strcmp(spysok[1][i],spysok[1][j])>0)
??VporiadkuvatySpysok_1:
        MOV      R1,R8
        MOV      R0,R6
        SWI      +25
        CMP      R0,#+1
        BLT      ??VporiadkuvatySpysok_2
//  486       {
//  487         sprintf(name,spysok[0][i]);
        MOV      R1,R5
        LDR      R0,??DataTable116  ;; name
        SWI      +22
//  488         sprintf(spysok[0][i],spysok[0][j]);
        MOV      R1,R9
        MOV      R0,R5
        SWI      +22
//  489         sprintf(spysok[0][j],name);
        LDR      R1,??DataTable116  ;; name
        MOV      R0,R9
        SWI      +22
//  490         sprintf(name,spysok[1][i]);
        MOV      R1,R6
        LDR      R0,??DataTable116  ;; name
        SWI      +22
//  491         sprintf(spysok[1][i],spysok[1][j]);
        MOV      R1,R8
        MOV      R0,R6
        SWI      +22
//  492         sprintf(spysok[1][j],name);
        LDR      R1,??DataTable116  ;; name
        MOV      R0,R8
        SWI      +22
//  493       }
//  494     }
??VporiadkuvatySpysok_2:
        ADD      R7,R7,#+1
        ADD      R9,R9,#+128
        ADD      R8,R8,#+128
??VporiadkuvatySpysok_3:
        LDR      R0,??DataTable72  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R7,R0
        BLT      ??VporiadkuvatySpysok_1
        ADD      R4,R4,#+1
        ADD      R5,R5,#+128
        ADD      R6,R6,#+128
??VporiadkuvatySpysok_0:
        LDR      R0,??DataTable72  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        SUB      R0,R0,#+1
        CMP      R4,R0
        POPGE    {R4-R9,PC}
        ADD      R7,R4,#+1
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable74  ;; spysok
        ADD      R1,R1,R7, LSL #+7
        ADD      R8,R0,R1
        LDR      R0,??DataTable74  ;; spysok
        ADD      R9,R0,R7, LSL #+7
        B        ??VporiadkuvatySpysok_3
        CFI EndBlock cfiBlock21
//  495   }
//  496 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable65:
        DC32     spysok + 32640

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable72:
        DC32     NumberOfTracks

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable74:
        DC32     spysok

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock22 Using cfiCommon0
        CFI NoFunction
        THUMB
??GetKatalogfontcolour??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock22
        REQUIRE GetKatalogfontcolour
//  497     

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock23 Using cfiCommon1
        CFI Function GetKatalogfontcolour
        ARM
//  498 int GetKatalogfontcolour()
//  499 {
//  500   return(katalogfontcolour);
GetKatalogfontcolour:
        LDR      R0,??DataTable75  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        BX       LR               ;; return
        CFI EndBlock cfiBlock23
//  501 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable75:
        DC32     katalogfontcolour

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock24 Using cfiCommon0
        CFI NoFunction
        THUMB
??ZapovnytyTaVidsortuvatyKatalog??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock24
        REQUIRE ZapovnytyTaVidsortuvatyKatalog
//  502 

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//  503 char katalog[256][128];
katalog:
        DS8 32768

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//  504 int kataloglength,katalogcurent;
kataloglength:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
katalogcurent:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//  505 int katalogselected[256];
katalogselected:
        DS8 1024

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  506 char curentfolder[255]="4:";
curentfolder:
        DS8 256
        REQUIRE `?<Initializer for curentfolder>`
//  507 /*
//  508 char folders[128][128];
//  509 int kfolders;
//  510 char files[128][128];
//  511 int kfiles;
//  512 
//  513 void VporiadkuvatyKatalog()
//  514 {
//  515   if (kfiles>1)
//  516   {
//  517     for (int i=0;i<kfiles-1;i++)
//  518     {
//  519       for (int j=i+1;j<kfiles;j++)
//  520       {
//  521         if (strcmp(files[i],files[j])>0)
//  522         {
//  523           sprintf(name,files[i]);
//  524           sprintf(files[i],files[j]);
//  525           sprintf(files[j],name);
//  526         }
//  527       }
//  528     }
//  529   }
//  530   if (kfolders>1)
//  531   {
//  532     for (int i=0;i<kfolders-1;i++)
//  533     {
//  534       for (int j=i+1;j<kfolders;j++)
//  535       {
//  536         if (strcmp(folders[i],folders[j])>0)
//  537         {
//  538           sprintf(name,folders[i]);
//  539           sprintf(folders[i],folders[j]);
//  540           sprintf(folders[j],name);
//  541         }
//  542       }
//  543     }
//  544   }
//  545 }
//  546 */

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock25 Using cfiCommon1
        CFI Function ZapovnytyTaVidsortuvatyKatalog
        ARM
//  547 void ZapovnytyTaVidsortuvatyKatalog(char *folder)
//  548 {
ZapovnytyTaVidsortuvatyKatalog:
        PUSH     {R4-R7,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R7 Frame(CFA, -8)
        CFI R6 Frame(CFA, -12)
        CFI R5 Frame(CFA, -16)
        CFI R4 Frame(CFA, -20)
        CFI CFA R13+20
        SUB      SP,SP,#+832
        CFI CFA R13+852
        MOV      R4,R0
//  549   DIR_ENTRY de;
//  550   unsigned int err;
//  551   char path[256];
//  552   kataloglength=1;
        LDR      R0,??DataTable95  ;; kataloglength
        MOV      R1,#+1
        STR      R1,[R0, #+0]
//  553   sprintf(katalog[0],"..");
        ADR      R1,??ZapovnytyTaVidsortuvatyKatalog_0  ;; ".."
        LDR      R0,??DataTable96  ;; katalog
        SWI      +22
//  554   /*kfolders=0;
//  555   kfiles=0;*/
//  556   sprintf(path,"%s\\*",folder);
        MOV      R2,R4
        LDR      R1,??ZapovnytyTaVidsortuvatyKatalog_0+0x4  ;; `?<Constant "%s\\\\*">`
        ADD      R0,SP,#+448
        SWI      +22
//  557   katalogcurent=0;
        LDR      R0,??DataTable89  ;; katalogcurent
        MOV      R1,#+0
        STR      R1,[R0, #+0]
//  558   if (FindFirstFile(&de,path,&err))
        ADD      R2,SP,#+4
        ADD      R1,SP,#+448
        ADD      R0,SP,#+8
        SWI      +107
        CMP      R0,#+0
        BEQ      ??ZapovnytyTaVidsortuvatyKatalog_1
//  559   {
//  560     do
//  561     {
//  562       char extension[3];
//  563       char file_name[128];
//  564       sprintf(file_name,de.file_name);
??ZapovnytyTaVidsortuvatyKatalog_2:
        ADD      R1,SP,#+177
        ADD      R0,SP,#+704
        SWI      +22
//  565       if (IsFile(file_name))
        ADD      R0,SP,#+704
        BL       IsFile
        CMP      R0,#+0
        BEQ      ??ZapovnytyTaVidsortuvatyKatalog_3
//  566       {
//  567         sprintf(extension,"%c%c%c",file_name[strlen(file_name)-3],file_name[strlen(file_name)-2],file_name[strlen(file_name)-1]);
        ADD      R0,SP,#+704
        SWI      +27
        MOV      R4,R0
        ADD      R0,SP,#+704
        SWI      +27
        MOV      R5,R0
        ADD      R0,SP,#+704
        SWI      +27
        ADD      R1,SP,#+704
        ADD      R1,R4,R1
        LDRB     R1,[R1, #-1]
        PUSH     {R1}
        CFI CFA R13+856
        ADD      R1,SP,#+708
        ADD      R1,R5,R1
        LDRB     R3,[R1, #-2]
        ADD      R1,SP,#+708
        ADD      R0,R0,R1
        LDRB     R2,[R0, #-3]
        LDR      R1,??DataTable79  ;; `?<Constant "%c%c%c">`
        ADD      R0,SP,#+4
        SWI      +22
//  568         if (((strcmp(extension,format_1))==0)||((strcmp(extension,format_2))==0)||((strcmp(extension,format_3))==0)||((strcmp(extension,format_4))==0))
        LDR      R1,??DataTable80  ;; format_1
        ADD      R0,SP,#+4
        SWI      +25
        CMP      R0,#+0
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+852
        BEQ      ??ZapovnytyTaVidsortuvatyKatalog_3
        LDR      R1,??DataTable81  ;; format_2
        MOV      R0,SP
        SWI      +25
        CMP      R0,#+0
        BEQ      ??ZapovnytyTaVidsortuvatyKatalog_3
        LDR      R1,??DataTable82  ;; format_3
        MOV      R0,SP
        SWI      +25
        CMP      R0,#+0
        BEQ      ??ZapovnytyTaVidsortuvatyKatalog_3
        LDR      R1,??DataTable83  ;; format_4
        MOV      R0,SP
        SWI      +25
        CMP      R0,#+0
        BNE      ??ZapovnytyTaVidsortuvatyKatalog_4
//  569         {
//  570           sprintf(katalog[kataloglength],file_name);
??ZapovnytyTaVidsortuvatyKatalog_3:
        ADD      R1,SP,#+704
        LDR      R0,??DataTable95  ;; kataloglength
        LDR      R0,[R0, #+0]
        LDR      R2,??DataTable96  ;; katalog
        ADD      R0,R2,R0, LSL #+7
        SWI      +22
//  571           kataloglength++;
        LDR      R0,??DataTable95  ;; kataloglength
        LDR      R1,??DataTable95  ;; kataloglength
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
//  572         }
//  573       }
//  574       else
//  575       {
//  576         sprintf(katalog[kataloglength],file_name);
//  577         kataloglength++;
//  578       }
//  579     }
//  580     while(FindNextFile(&de,&err));
??ZapovnytyTaVidsortuvatyKatalog_4:
        ADD      R1,SP,#+4
        ADD      R0,SP,#+8
        SWI      +108
        CMP      R0,#+0
        BNE      ??ZapovnytyTaVidsortuvatyKatalog_2
//  581   }
//  582   FindClose(&de,&err);
??ZapovnytyTaVidsortuvatyKatalog_1:
        ADD      R1,SP,#+4
        ADD      R0,SP,#+8
        SWI      +109
//  583   /*for (int i=1;i<kataloglength;i++)
//  584   {
//  585     if (IsFile(katalog[i]))
//  586       {
//  587         sprintf(files[kfiles],katalog[i]);
//  588         kfiles++;
//  589       }
//  590       else
//  591       {
//  592         sprintf(folders[kfolders],katalog[i]);
//  593         kfolders++;
//  594       }
//  595   }
//  596   VporiadkuvatyKatalog();
//  597   kataloglength=1+kfolders+kfiles;
//  598   for (int i=1;i<kfolders+1;i++)
//  599   {
//  600     sprintf(katalog[i],folders[i+1]);
//  601   }
//  602   for (int i=kfolders+1;i<kataloglength;i++)
//  603   {
//  604     sprintf(katalog[i],files[i+1-kfolders]);
//  605   }
//  606   sprintf(name," %i %i",kfiles,kfolders);
//  607   ShowMSG(1,(int)name);*/
//  608   if (kataloglength>1) {katalogcurent=1;}
        LDR      R0,??DataTable95  ;; kataloglength
        LDR      R0,[R0, #+0]
        CMP      R0,#+2
        LDRGE    R0,??DataTable89  ;; katalogcurent
        MOVGE    R1,#+1
        STRGE    R1,[R0, #+0]
//  609   
//  610   if (kataloglength>2)
        LDR      R0,??DataTable95  ;; kataloglength
        LDR      R0,[R0, #+0]
        CMP      R0,#+3
        BLT      ??ZapovnytyTaVidsortuvatyKatalog_5
//  611   {
//  612     for (int i=1;i<kataloglength-1;i++)
        MOV      R4,#+1
        LDR      R5,??DataTable91  ;; katalog + 128
        B        ??ZapovnytyTaVidsortuvatyKatalog_6
//  613     {
//  614       for (int j=i+1;j<kataloglength;j++)
//  615       {
//  616         if (strcmp_nocase(katalog[i],katalog[j])>0)
??ZapovnytyTaVidsortuvatyKatalog_7:
        MOV      R1,R6
        MOV      R0,R5
        BL       strcmp_nocase
        CMP      R0,#+1
        BLT      ??ZapovnytyTaVidsortuvatyKatalog_8
//  617         {
//  618           sprintf(name,katalog[i]);
        MOV      R1,R5
        LDR      R0,??DataTable116  ;; name
        SWI      +22
//  619           sprintf(katalog[i],katalog[j]);
        MOV      R1,R6
        MOV      R0,R5
        SWI      +22
//  620           sprintf(katalog[j],name);
        LDR      R1,??DataTable116  ;; name
        MOV      R0,R6
        SWI      +22
//  621         }
//  622       }
??ZapovnytyTaVidsortuvatyKatalog_8:
        ADD      R7,R7,#+1
        ADD      R6,R6,#+128
??ZapovnytyTaVidsortuvatyKatalog_9:
        LDR      R0,??DataTable95  ;; kataloglength
        LDR      R0,[R0, #+0]
        CMP      R7,R0
        BLT      ??ZapovnytyTaVidsortuvatyKatalog_7
        ADD      R4,R4,#+1
        ADD      R5,R5,#+128
??ZapovnytyTaVidsortuvatyKatalog_6:
        LDR      R0,??DataTable95  ;; kataloglength
        LDR      R0,[R0, #+0]
        SUB      R0,R0,#+1
        CMP      R4,R0
        BGE      ??ZapovnytyTaVidsortuvatyKatalog_5
        ADD      R7,R4,#+1
        LDR      R0,??DataTable96  ;; katalog
        ADD      R6,R0,R7, LSL #+7
        B        ??ZapovnytyTaVidsortuvatyKatalog_9
//  623     }
//  624   }
//  625 }
??ZapovnytyTaVidsortuvatyKatalog_5:
        ADD      SP,SP,#+832      ;; stack cleaning
        CFI CFA R13+20
        POP      {R4-R7,PC}       ;; return
        DATA
??ZapovnytyTaVidsortuvatyKatalog_0:
        DC8      "..",+0
        DC32     `?<Constant "%s\\\\*">`
        CFI EndBlock cfiBlock25

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable79:
        DC32     `?<Constant "%c%c%c">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable80:
        DC32     format_1

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable81:
        DC32     format_2

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable82:
        DC32     format_3

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable83:
        DC32     format_4

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable89:
        DC32     katalogcurent

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable91:
        DC32     katalog + 128

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable95:
        DC32     kataloglength

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable96:
        DC32     katalog

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock26 Using cfiCommon0
        CFI NoFunction
        THUMB
??ShowMess??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock26
        REQUIRE ShowMess
//  626     
//  627 

        RSEG DATA_C:CONST:SORT:NOROOT(2)
//  628 const char color1[4]={0x50,0x00,0x00,0x20};
color1:
        DATA
        DC8 80, 0, 0, 32

        RSEG DATA_C:CONST:SORT:NOROOT(2)
//  629 const char color2[4]={0x99,0x99,0x99,0x50};
color2:
        DATA
        DC8 153, 153, 153, 80

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//  630 GBSTMR MessageTimer;
MessageTimer:
        DS8 16

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//  631 int toview=0;
toview:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
//  632 char *texttoview;
texttoview:
        DS8 4

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock27 Using cfiCommon1
        CFI Function ShowMess
        ARM
//  633 void ShowMess()
//  634 {
ShowMess:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//  635   if (toview)
        LDR      R0,??DataTable107  ;; toview
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        POPEQ    {PC}
//  636   {
//  637     int textfontsize=FONT_MEDIUM;
//  638     DrawRectangle(0,0,132,176,0,color1,color1);
        LDR      R0,??ShowMess_0+0x4  ;; color1
        PUSH     {R0}
        CFI CFA R13+8
        PUSH     {R0}
        CFI CFA R13+12
        MOV      R0,#+0
        PUSH     {R0}
        CFI CFA R13+16
        MOV      R3,#+176
        MOV      R2,#+132
        MOV      R1,#+0
        SWI      +436
//  639     DrawRectangle(10,10,120,166,0,GetPaletteAdrByColorIndex(1),color2);
        MOV      R0,#+1
        SWI      +302
        LDR      R1,??ShowMess_0+0x8  ;; color2
        PUSH     {R1}
        CFI CFA R13+20
        PUSH     {R0}
        CFI CFA R13+24
        MOV      R0,#+0
        PUSH     {R0}
        CFI CFA R13+28
        MOV      R3,#+166
        MOV      R2,#+120
        MOV      R1,#+10
        MOV      R0,R1
        SWI      +436
//  640     utf8_2ws(wss.ws1,texttoview,320);
        MOV      R2,#+320
        LDR      R0,??DataTable108  ;; texttoview
        LDR      R1,[R0, #+0]
        LDR      R0,??DataTable103  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
//  641     if ((Get_WS_width(wss.ws1,7))==0){wsprintf(wss.ws1,"%t",texttoview);}
        MOV      R1,#+7
        LDR      R0,??DataTable103  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +520
        CMP      R0,#+0
        ADD      SP,SP,#+24       ;; stack cleaning
        CFI CFA R13+4
        BNE      ??ShowMess_1
        LDR      R0,??DataTable108  ;; texttoview
        LDR      R2,[R0, #+0]
        ADR      R1,??ShowMess_0  ;; "%t"
        LDR      R0,??DataTable103  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  642     DrawString(wss.ws1,12,52,120,164,textfontsize,TEXT_ALIGNMIDDLE,GetPaletteAdrByColorIndex(1),color2);
??ShowMess_1:
        MOV      R0,#+1
        SWI      +302
        LDR      R1,??ShowMess_0+0x8  ;; color2
        PUSH     {R1}
        CFI CFA R13+8
        PUSH     {R0}
        CFI CFA R13+12
        MOV      R0,#+2
        PUSH     {R0}
        CFI CFA R13+16
        PUSH     {R0}
        CFI CFA R13+20
        MOV      R0,#+164
        PUSH     {R0}
        CFI CFA R13+24
        MOV      R3,#+120
        MOV      R2,#+52
        MOV      R1,#+12
        LDR      R0,??DataTable103  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+20       ;; stack cleaning
        CFI CFA R13+4
//  643   }
//  644 }
        POP      {PC}             ;; return
        DATA
??ShowMess_0:
        DC8      "%t",+0
        DC32     color1
        DC32     color2
        CFI EndBlock cfiBlock27

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable103:
        DC32     wss

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock28 Using cfiCommon0
        CFI NoFunction
        THUMB
??MessStop??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock28
        REQUIRE MessStop
//  645 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock29 Using cfiCommon1
        CFI Function MessStop
        ARM
//  646 void MessStop()
//  647 {
MessStop:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//  648   if (toview)
        LDR      R0,??DataTable107  ;; toview
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        POPEQ    {PC}
//  649   {
//  650     toview=0;
        LDR      R0,??DataTable107  ;; toview
        MOV      R1,#+0
        STR      R1,[R0, #+0]
//  651     if (IsGuiOnTop(MAINGUI_ID)==1)
        LDR      R0,??DataTable109  ;; MAINGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +309
        CMP      R0,#+1
        POPNE    {PC}
//  652     {
//  653       REDRAW();
        SWI      +370
//  654     }
//  655   }
//  656 }
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock29

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock30 Using cfiCommon0
        CFI NoFunction
        THUMB
??Message??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock30
        REQUIRE Message
//  657 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock31 Using cfiCommon1
        CFI Function Message
        ARM
//  658 void Message(char *text)
//  659 {
Message:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//  660   toview=1;
        LDR      R1,??DataTable107  ;; toview
        MOV      R2,#+1
        STR      R2,[R1, #+0]
//  661   texttoview=text;
        LDR      R1,??DataTable108  ;; texttoview
        STR      R0,[R1, #+0]
//  662   GBS_StartTimerProc(&MessageTimer,1000,MessStop);
        LDR      R2,??Message_0   ;; MessStop
        MOV      R1,#+1000
        LDR      R0,??Message_0+0x4  ;; MessageTimer
        SWI      +77
//  663   if (IsGuiOnTop(MAINGUI_ID)==1)
        LDR      R0,??DataTable109  ;; MAINGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +309
        CMP      R0,#+1
        POPNE    {PC}
//  664     {
//  665       REDRAW();
        SWI      +370
//  666     }
//  667 }
        POP      {PC}             ;; return
        DATA
??Message_0:
        DC32     MessStop
        DC32     MessageTimer
        CFI EndBlock cfiBlock31

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable107:
        DC32     toview

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable108:
        DC32     texttoview

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable109:
        DC32     MAINGUI_ID

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock32 Using cfiCommon0
        CFI NoFunction
        THUMB
??GetFon??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock32
        REQUIRE GetFon
//  668 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock33 Using cfiCommon1
        CFI Function GetFon
        ARM
//  669 char *GetFon()
//  670 {
GetFon:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//  671   sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\fon.png");
        LDR      R0,??DataTable110  ;; `?<Constant "\\\\fon.png">`
        PUSH     {R0}
        CFI CFA R13+8
        LDR      R0,??DataTable111  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??DataTable112  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??DataTable113  ;; playerfolder
        LDR      R1,??DataTable114  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??DataTable116  ;; name
        SWI      +22
//  672   return(name);
        LDR      R0,??DataTable116  ;; name
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+4
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock33
//  673 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable110:
        DC32     `?<Constant "\\\\fon.png">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable111:
        DC32     curskin

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable112:
        DC32     ArrayOfSkins

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable113:
        DC32     playerfolder

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable114:
        DC32     `?<Constant "%sskins\\\\%s%s">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable116:
        DC32     name

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock34 Using cfiCommon0
        CFI NoFunction
        THUMB
??GetKatalogbackgroundcolour??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock34
        REQUIRE GetKatalogbackgroundcolour
//  674 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock35 Using cfiCommon1
        CFI Function GetKatalogbackgroundcolour
        ARM
//  675 int GetKatalogbackgroundcolour()
//  676 {
//  677   return(katalogbackgroundcolour);
GetKatalogbackgroundcolour:
        LDR      R0,??DataTable117  ;; katalogbackgroundcolour
        LDR      R0,[R0, #+0]
        BX       LR               ;; return
        CFI EndBlock cfiBlock35
//  678 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable117:
        DC32     katalogbackgroundcolour

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock36 Using cfiCommon0
        CFI NoFunction
        THUMB
??OnRedraw??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock36
        REQUIRE OnRedraw
//  679 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock37 Using cfiCommon1
        CFI Function OnRedraw
        ARM
//  680 void OnRedraw(MAIN_GUI *data) // OnRedraw
//  681 {
OnRedraw:
        PUSH     {R4-R9,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R9 Frame(CFA, -8)
        CFI R8 Frame(CFA, -12)
        CFI R7 Frame(CFA, -16)
        CFI R6 Frame(CFA, -20)
        CFI R5 Frame(CFA, -24)
        CFI R4 Frame(CFA, -28)
        CFI CFA R13+28
        SUB      SP,SP,#+272
        CFI CFA R13+300
//  682   switch(WhatToView)
        LDR      R0,??OnRedraw_0  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??OnRedraw_1
        SUBS     R0,R0,#+1
        BEQ      ??OnRedraw_2
        SUBS     R0,R0,#+1
        BEQ      ??OnRedraw_3
        SUBS     R0,R0,#+1
        BEQ      ??OnRedraw_4
        B        ??OnRedraw_5
//  683   {
//  684 case 0:
//  685   if (IsUnlocked())
??OnRedraw_1:
        SWI      +67
        CMP      R0,#+0
        BEQ      ??OnRedraw_6
//  686   {
//  687     sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\background.png");
        LDR      R0,??OnRedraw_0+0x4  ;; `?<Constant "\\\\background.png">`
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_0+0x8  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??OnRedraw_0+0xC  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??OnRedraw_0+0x10  ;; playerfolder
        LDR      R1,??OnRedraw_0+0x14  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
//  688     DrawImg(0,0,(int)name);
        LDR      R2,??OnRedraw_0+0x18  ;; name
        MOV      R1,#+0
        MOV      R0,#+0
        SWI      +35
//  689     sprintf(name,"%sskins\\%s\\VOL%i.png",playerfolder,ArrayOfSkins[curskin],CurentVolume);
        LDR      R0,??OnRedraw_0+0x1C  ;; CurentVolume
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+308
        LDR      R0,??OnRedraw_0+0x8  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??OnRedraw_0+0xC  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??OnRedraw_0+0x10  ;; playerfolder
        LDR      R1,??OnRedraw_0+0x20  ;; `?<Constant "%sskins\\\\%s\\\\VOL%i.png">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
//  690     DrawImg(volumex,volumey,(int)name);
        LDR      R2,??OnRedraw_0+0x18  ;; name
        LDR      R0,??OnRedraw_0+0x28  ;; volumey
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x2C  ;; volumex
        LDR      R0,[R0, #+0]
        SWI      +35
//  691     utf8_2ws(wss.ws1,playlistname,40);
        MOV      R2,#+40
        LDR      R1,??OnRedraw_0+0x30  ;; playlistname
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
//  692     DrawString(wss.ws1,spysokx1,spysoky1,spysokx2,spysoky2,spysokfont,spysoktextattribute,
//  693     GetPaletteAdrByColorIndex(spysoktextcolor),GetPaletteAdrByColorIndex(spysoktextbackground));
        LDR      R0,??OnRedraw_0+0x38  ;; spysoktextbackground
        LDR      R0,[R0, #+0]
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_0+0x3C  ;; spysoktextcolor
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+312
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_0+0x40  ;; spysoktextattribute
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+320
        LDR      R0,??OnRedraw_0+0x44  ;; spysokfont
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+324
        LDR      R0,??OnRedraw_0+0x48  ;; spysoky2
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+328
        LDR      R0,??OnRedraw_0+0x4C  ;; spysokx2
        LDR      R3,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x50  ;; spysoky1
        LDR      R2,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x54  ;; spysokx1
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
//  694   //utf8_2ws(wss.ws1,NameOfCurentTrack,320);
//  695   sprintf(name,"%s\r%s\r%s",ctrack,cartist,calbum);
        LDR      R0,??OnRedraw_0+0x58  ;; calbum
        PUSH     {R0}
        CFI CFA R13+332
        LDR      R3,??OnRedraw_0+0x5C  ;; cartist
        LDR      R2,??OnRedraw_0+0x60  ;; ctrack
        LDR      R1,??OnRedraw_0+0x64  ;; `?<Constant "%s\\r%s\\r%s">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
//  696   utf8_2ws(wss.ws1,name,320);
        MOV      R2,#+320
        LDR      R1,??OnRedraw_0+0x18  ;; name
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
//  697   if (name[0]!=' ')
        LDR      R0,??OnRedraw_0+0x18  ;; name
        LDRB     R0,[R0, #+0]
        CMP      R0,#+32
        ADD      SP,SP,#+32       ;; stack cleaning
        CFI CFA R13+300
        BEQ      ??OnRedraw_7
//  698   {
//  699     wsprintf(wss.ws2,"%t\r%t\r%t",ctrack,cartist,calbum);
        LDR      R0,??OnRedraw_0+0x58  ;; calbum
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R3,??OnRedraw_0+0x5C  ;; cartist
        LDR      R2,??OnRedraw_0+0x60  ;; ctrack
        LDR      R1,??OnRedraw_0+0x68  ;; `?<Constant "%t\\r%t\\r%t">`
        LDR      R0,??OnRedraw_0+0x6C  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +292
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+300
        B        ??OnRedraw_8
//  700   }
//  701   else
//  702     {
//  703       wsprintf(wss.ws2,pp);
??OnRedraw_7:
        LDR      R1,??OnRedraw_0+0x70  ;; pp
        LDR      R0,??OnRedraw_0+0x6C  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +292
//  704     }
//  705   if (Get_WS_width(wss.ws1,7)<Get_WS_width(wss.ws2,7))
??OnRedraw_8:
        MOV      R1,#+7
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +520
        MOV      R4,R0
        MOV      R1,#+7
        LDR      R0,??OnRedraw_0+0x6C  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +520
        CMP      R4,R0
        LDR      R0,??OnRedraw_0+0x74  ;; songtextbackground
        LDR      R0,[R0, #+0]
        BGE      ??OnRedraw_9
//  706   {
//  707   DrawString(wss.ws2,songx1,songy1,songx2,songy2,songfont,songtextattribute,
//  708     GetPaletteAdrByColorIndex(songtextcolor),GetPaletteAdrByColorIndex(songtextbackground));
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_0+0x78  ;; songtextcolor
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        LDR      R0,??OnRedraw_0+0x7C  ;; songtextattribute
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+312
        LDR      R0,??OnRedraw_0+0x80  ;; songfont
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_0+0x84  ;; songy2
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+320
        LDR      R0,??OnRedraw_0+0x88  ;; songx2
        LDR      R3,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x8C  ;; songy1
        LDR      R2,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x90  ;; songx1
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x6C  ;; wss + 4
        B        ??OnRedraw_10
        CFI CFA R13+300
//  709   }
//  710   else
//  711   {
//  712   DrawString(wss.ws1,songx1,songy1,songx2,songy2,songfont,songtextattribute,
//  713     GetPaletteAdrByColorIndex(songtextcolor),GetPaletteAdrByColorIndex(songtextbackground));
??OnRedraw_9:
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_0+0x78  ;; songtextcolor
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        LDR      R0,??OnRedraw_0+0x7C  ;; songtextattribute
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+312
        LDR      R0,??OnRedraw_0+0x80  ;; songfont
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_0+0x84  ;; songy2
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+320
        LDR      R0,??OnRedraw_0+0x88  ;; songx2
        LDR      R3,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x8C  ;; songy1
        LDR      R2,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x90  ;; songx1
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x34  ;; wss
??OnRedraw_10:
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+20       ;; stack cleaning
        CFI CFA R13+300
//  714   }
//  715   wsprintf(wss.ws1,"%i%c%i",cp+1,'/',NumberOfTracks);
        LDR      R0,??OnRedraw_11+0x4  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+304
        MOV      R3,#+47
        LDR      R0,??OnRedraw_11+0x8  ;; cp
        LDR      R0,[R0, #+0]
        ADD      R2,R0,#+1
        LDR      R1,??OnRedraw_11+0xC  ;; `?<Constant "%i%c%i">`
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  716   DrawString(wss.ws1,tracksx1,tracksy1,tracksx2,tracksy2,tracksfont,trackstextattribute,
//  717   GetPaletteAdrByColorIndex(trackstextcolor),GetPaletteAdrByColorIndex(trackstextbackground));  
        LDR      R0,??OnRedraw_11+0x10  ;; trackstextbackground
        LDR      R0,[R0, #+0]
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_11+0x14  ;; trackstextcolor
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+308
        PUSH     {R0}
        CFI CFA R13+312
        LDR      R0,??OnRedraw_11+0x18  ;; trackstextattribute
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_11+0x1C  ;; tracksfont
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+320
        LDR      R0,??OnRedraw_11+0x20  ;; tracksy2
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+324
        LDR      R0,??OnRedraw_11+0x24  ;; tracksx2
        LDR      R3,[R0, #+0]
        LDR      R0,??OnRedraw_11+0x28  ;; tracksy1
        LDR      R2,[R0, #+0]
        LDR      R0,??OnRedraw_11+0x2C  ;; tracksx1
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
//  718     if (playing==1) {sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\stop.png");}
        LDR      R0,??OnRedraw_11+0x30  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        ADD      SP,SP,#+24       ;; stack cleaning
        CFI CFA R13+300
        LDREQ    R0,??OnRedraw_11+0x34  ;; `?<Constant "\\\\stop.png">`
//  719     else {sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\play.png");}
        LDRNE    R0,??OnRedraw_11+0x38  ;; `?<Constant "\\\\play.png">`
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_0+0x8  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??OnRedraw_0+0xC  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??OnRedraw_0+0x10  ;; playerfolder
        LDR      R1,??OnRedraw_0+0x14  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+300
//  720     DrawImg(play_stopx,play_stopy,(int)name);
        LDR      R2,??OnRedraw_0+0x18  ;; name
        LDR      R0,??OnRedraw_11+0x3C  ;; play_stopy
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_11+0x40  ;; play_stopx
        LDR      R0,[R0, #+0]
        SWI      +35
//  721 
//  722   if (random==1) {
        LDR      R0,??OnRedraw_11+0x44  ;; random
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??OnRedraw_12
//  723                    sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\random.png");
        LDR      R0,??OnRedraw_11+0x48  ;; `?<Constant "\\\\random.png">`
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_0+0x8  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??OnRedraw_0+0xC  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??OnRedraw_0+0x10  ;; playerfolder
        LDR      R1,??OnRedraw_0+0x14  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
//  724                    DrawImg(randomx,randomy,(int)name);
        LDR      R2,??OnRedraw_0+0x18  ;; name
        LDR      R0,??OnRedraw_11+0x4C  ;; randomy
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_11+0x50  ;; randomx
        LDR      R0,[R0, #+0]
        SWI      +35
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+300
//  725                  }
//  726   if (ringoff!=0)
??OnRedraw_12:
        LDR      R0,??OnRedraw_11+0x54  ;; ringoff
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??OnRedraw_13
//  727   {
//  728     sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\off.png");
        LDR      R0,??OnRedraw_11+0x58  ;; `?<Constant "\\\\off.png">`
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_0+0x8  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??OnRedraw_0+0xC  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??OnRedraw_0+0x10  ;; playerfolder
        LDR      R1,??OnRedraw_0+0x14  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
//  729     DrawImg(ringoffx,ringoffy,(int)name);
        LDR      R2,??OnRedraw_0+0x18  ;; name
        LDR      R0,??OnRedraw_11+0x5C  ;; ringoffy
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_11+0x60  ;; ringoffx
        LDR      R0,[R0, #+0]
        SWI      +35
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+300
        B        ??OnRedraw_14
//  730   }
//  731   else
//  732    {
//  733     sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\plus.png");
??OnRedraw_13:
        LDR      R0,??OnRedraw_11+0x64  ;; `?<Constant "\\\\plus.png">`
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_0+0x8  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??OnRedraw_0+0xC  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??OnRedraw_0+0x10  ;; playerfolder
        LDR      R1,??OnRedraw_0+0x14  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
//  734     if (CurentVolume<MAXVOLUME){DrawImg(volpx,volpy,(int)name);}
        LDR      R0,??OnRedraw_0+0x1C  ;; CurentVolume
        LDR      R0,[R0, #+0]
        CMP      R0,#+4
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+300
        BGE      ??OnRedraw_15
        LDR      R2,??OnRedraw_0+0x18  ;; name
        LDR      R0,??OnRedraw_11+0x68  ;; volpy
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_11+0x6C  ;; volpx
        LDR      R0,[R0, #+0]
        SWI      +35
//  735     sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\minus.png");
??OnRedraw_15:
        LDR      R0,??OnRedraw_11+0x70  ;; `?<Constant "\\\\minus.png">`
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_0+0x8  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??OnRedraw_0+0xC  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??OnRedraw_0+0x10  ;; playerfolder
        LDR      R1,??OnRedraw_0+0x14  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
//  736     if (CurentVolume>0) {DrawImg(volmx,volmy,(int)name);}
        LDR      R0,??OnRedraw_0+0x1C  ;; CurentVolume
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+300
        BLT      ??OnRedraw_14
        LDR      R2,??OnRedraw_0+0x18  ;; name
        LDR      R0,??OnRedraw_11+0x74  ;; volmy
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_11+0x78  ;; volmx
        LDR      R0,[R0, #+0]
        SWI      +35
//  737    }
//  738     int y;
//  739     sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\progressbar.png");
??OnRedraw_14:
        LDR      R0,??OnRedraw_11+0x7C  ;; `?<Constant "\\\\progressbar.png">`
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_0+0x8  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??OnRedraw_0+0xC  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??OnRedraw_0+0x10  ;; playerfolder
        LDR      R1,??OnRedraw_0+0x14  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
//  740     if (timelength[cp]!=0)
        LDR      R0,??OnRedraw_11+0x8  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??OnRedraw_11+0x80  ;; timelength
        LDR      R0,[R1, +R0, LSL #+2]
        CMP      R0,#+0
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+300
        BEQ      ??OnRedraw_16
//  741     {
//  742       if ((timemin*60+timesec)<=timelength[cp]) 
        LDR      R0,??OnRedraw_11+0x8  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R0,[R1, +R0, LSL #+2]
        LDR      R1,??OnRedraw_11+0x84  ;; timemin
        LDR      R1,[R1, #+0]
        MOV      R2,#+60
        LDR      R3,??OnRedraw_11+0x88  ;; timesec
        LDR      R3,[R3, #+0]
        MLA      R1,R2,R1,R3
        CMP      R0,R1
        LDR      R0,??OnRedraw_0+0x18  ;; name
        BLT      ??OnRedraw_17
//  743       {
//  744         y=progressbarx1+((progressbarx2-progressbarx1-GetImgWidth((int)name))*(timemin*60+timesec))/timelength[cp];
        SWI      +34
        LDR      R1,??OnRedraw_11+0x8C  ;; progressbarx1
        LDR      R2,[R1, #+0]
        LDR      R1,??OnRedraw_11+0x90  ;; progressbarx2
        LDR      R1,[R1, #+0]
        SUB      R1,R1,R2
        SUB      R0,R1,R0
        LDR      R1,??OnRedraw_11+0x84  ;; timemin
        LDR      R1,[R1, #+0]
        MOV      R3,#+60
        LDR      R4,??OnRedraw_11+0x88  ;; timesec
        LDR      R4,[R4, #+0]
        MLA      R1,R3,R1,R4
        MUL      R0,R1,R0
        LDR      R1,??OnRedraw_11+0x8  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R3,??OnRedraw_11+0x80  ;; timelength
        LDR      R1,[R3, +R1, LSL #+2]
        _BLF     ??div32_a,??rA??div32_a
        ADD      R4,R1,R2
        B        ??OnRedraw_18
//  745       }
//  746       else 
//  747       {
//  748         y=progressbarx2-progressbarx1-GetImgWidth((int)name);
??OnRedraw_17:
        SWI      +34
        LDR      R1,??OnRedraw_11+0x90  ;; progressbarx2
        LDR      R1,[R1, #+0]
        LDR      R2,??OnRedraw_11+0x8C  ;; progressbarx1
        LDR      R2,[R2, #+0]
        SUB      R1,R1,R2
        SUB      R4,R1,R0
//  749       }
//  750         DrawRectangle(progressbarx1,progressbary1+2,y-GetImgWidth((int)name),progressbary1-1+GetImgHeight((int)name),0,
//  751         GetPaletteAdrByColorIndex(progressbarcolour),GetPaletteAdrByColorIndex(progressbarcolour));
??OnRedraw_18:
        LDR      R0,??OnRedraw_11+0x94  ;; progressbarcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        MOV      R5,R0
        LDR      R0,??OnRedraw_11+0x94  ;; progressbarcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        MOV      R6,R0
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +33
        MOV      R7,R0
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +34
        PUSH     {R5}
        CFI CFA R13+304
        PUSH     {R6}
        CFI CFA R13+308
        MOV      R1,#+0
        PUSH     {R1}
        CFI CFA R13+312
        LDR      R1,??OnRedraw_11+0x98  ;; progressbary1
        LDR      R1,[R1, #+0]
        ADD      R1,R7,R1
        SUB      R3,R1,#+1
        SUB      R2,R4,R0
        LDR      R0,??OnRedraw_11+0x98  ;; progressbary1
        LDR      R0,[R0, #+0]
        ADD      R1,R0,#+2
        LDR      R0,??OnRedraw_11+0x8C  ;; progressbarx1
        LDR      R0,[R0, #+0]
        SWI      +436
//  752         DrawImg(y,progressbary1+1,(int)name);
        LDR      R2,??OnRedraw_0+0x18  ;; name
        LDR      R0,??OnRedraw_11+0x98  ;; progressbary1
        LDR      R0,[R0, #+0]
        ADD      R1,R0,#+1
        MOV      R0,R4
        SWI      +35
        ADD      SP,SP,#+12       ;; stack cleaning
        CFI CFA R13+300
//  753     }    
//  754   if (entime==1)
??OnRedraw_16:
        LDR      R0,??OnRedraw_11+0x9C  ;; entime
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??OnRedraw_19
//  755   {if (timelength[cp]!=0)
        LDR      R0,??OnRedraw_11+0x8  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??OnRedraw_11+0x80  ;; timelength
        LDR      R0,[R1, +R0, LSL #+2]
        CMP      R0,#+0
        BEQ      ??OnRedraw_20
//  756   {
//  757     wsprintf(wss.ws1,"%i:%i%i/%i:%i%i",timemin,timesec/10,timesec%10,timelength[cp]/60,(timelength[cp]%60)/10,(timelength[cp]%60)%10);
        LDR      R0,??OnRedraw_11+0x8  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R0,[R1, +R0, LSL #+2]
        LDR      R1,??OnRedraw_11+0xA0  ;; 0x88888889
        SMULL    R2,R3,R0,R1
        ADD      R3,R3,R0
        ASR      R3,R3,#+5
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+60
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        LDR      R1,??OnRedraw_11+0xA4  ;; 0x66666667
        SMULL    R2,R3,R0,R1
        ASR      R3,R3,#+2
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+10
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_11+0x8  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??OnRedraw_11+0x80  ;; timelength
        LDR      R0,[R1, +R0, LSL #+2]
        LDR      R1,??OnRedraw_11+0xA0  ;; 0x88888889
        SMULL    R2,R3,R0,R1
        ADD      R3,R3,R0
        ASR      R3,R3,#+5
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+60
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        LDR      R1,??OnRedraw_11+0xA4  ;; 0x66666667
        SMULL    R2,R3,R1,R0
        ASR      R3,R3,#+2
        ADD      R0,R3,R0, LSR #+31
        PUSH     {R0}
        CFI CFA R13+308
        LDR      R0,??OnRedraw_11+0x8  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??OnRedraw_11+0x80  ;; timelength
        LDR      R0,[R1, +R0, LSL #+2]
        LDR      R1,??OnRedraw_11+0xA0  ;; 0x88888889
        SMULL    R2,R3,R1,R0
        ADD      R3,R3,R0
        ASR      R3,R3,#+5
        ADD      R0,R3,R0, LSR #+31
        PUSH     {R0}
        CFI CFA R13+312
        LDR      R0,??OnRedraw_11+0x88  ;; timesec
        LDR      R0,[R0, #+0]
        LDR      R1,??OnRedraw_11+0xA4  ;; 0x66666667
        SMULL    R2,R3,R0,R1
        ASR      R3,R3,#+2
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+10
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_11+0x88  ;; timesec
        LDR      R0,[R0, #+0]
        SMULL    R2,R3,R1,R0
        ASR      R3,R3,#+2
        ADD      R3,R3,R0, LSR #+31
        LDR      R0,??OnRedraw_11+0x84  ;; timemin
        LDR      R2,[R0, #+0]
        LDR      R1,??OnRedraw_11+0xA8  ;; `?<Constant "%i:%i%i/%i:%i%i">`
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  758     DrawString(wss.ws1,timex1,timey1,timex2,timey2,timefont,timetextattribute,
//  759     GetPaletteAdrByColorIndex(timetextcolor),GetPaletteAdrByColorIndex(timetextbackground));
        LDR      R0,??OnRedraw_11+0xAC  ;; timetextbackground
        LDR      R0,[R0, #+0]
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_11+0xB0  ;; timetextcolor
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+320
        PUSH     {R0}
        CFI CFA R13+324
        LDR      R0,??OnRedraw_11+0xB4  ;; timetextattribute
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+328
        LDR      R0,??OnRedraw_11+0xB8  ;; timefont
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+332
        LDR      R0,??OnRedraw_11+0xBC  ;; timey2
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+336
        LDR      R0,??OnRedraw_11+0xC0  ;; timex2
        LDR      R3,[R0, #+0]
        LDR      R0,??OnRedraw_11+0xC4  ;; timey1
        LDR      R2,[R0, #+0]
        LDR      R0,??OnRedraw_11+0xC8  ;; timex1
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+36       ;; stack cleaning
        CFI CFA R13+300
        B        ??OnRedraw_19
//  760   }
//  761   else
//  762   {
//  763   wsprintf(wss.ws1,"%i:%i%i",timemin,timesec/10,timesec%10);
??OnRedraw_20:
        LDR      R0,??OnRedraw_11+0x88  ;; timesec
        LDR      R0,[R0, #+0]
        LDR      R1,??OnRedraw_11+0xA4  ;; 0x66666667
        SMULL    R2,R3,R0,R1
        ASR      R3,R3,#+2
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+10
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_11+0x88  ;; timesec
        LDR      R0,[R0, #+0]
        SMULL    R2,R3,R1,R0
        ASR      R3,R3,#+2
        ADD      R3,R3,R0, LSR #+31
        LDR      R0,??OnRedraw_11+0x84  ;; timemin
        LDR      R2,[R0, #+0]
        LDR      R1,??OnRedraw_11+0xCC  ;; `?<Constant "%i:%i%i">`
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  764   DrawString(wss.ws1,timex1,timey1,timex2,timey2,timefont,timetextattribute,
//  765   GetPaletteAdrByColorIndex(timetextcolor),GetPaletteAdrByColorIndex(timetextbackground));
        LDR      R0,??OnRedraw_11+0xAC  ;; timetextbackground
        LDR      R0,[R0, #+0]
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_11+0xB0  ;; timetextcolor
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+308
        PUSH     {R0}
        CFI CFA R13+312
        LDR      R0,??OnRedraw_11+0xB4  ;; timetextattribute
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_11+0xB8  ;; timefont
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+320
        LDR      R0,??OnRedraw_11+0xBC  ;; timey2
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+324
        LDR      R0,??OnRedraw_11+0xC0  ;; timex2
        LDR      R3,[R0, #+0]
        LDR      R0,??OnRedraw_11+0xC4  ;; timey1
        LDR      R2,[R0, #+0]
        LDR      R0,??OnRedraw_11+0xC8  ;; timex1
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+24       ;; stack cleaning
        CFI CFA R13+300
//  766   }
//  767   }
//  768    sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\prev.png");
??OnRedraw_19:
        LDR      R0,??OnRedraw_21  ;; `?<Constant "\\\\prev.png">`
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_0+0x8  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??OnRedraw_0+0xC  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??OnRedraw_0+0x10  ;; playerfolder
        LDR      R1,??OnRedraw_0+0x14  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
//  769    DrawImg(prevx,prevy,(int)name);
        LDR      R2,??OnRedraw_0+0x18  ;; name
        LDR      R0,??OnRedraw_21+0x8  ;; prevy
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_21+0xC  ;; prevx
        LDR      R0,[R0, #+0]
        SWI      +35
//  770    sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\next.png");
        LDR      R0,??OnRedraw_21+0x10  ;; `?<Constant "\\\\next.png">`
        PUSH     {R0}
        CFI CFA R13+308
        LDR      R0,??OnRedraw_0+0x8  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??OnRedraw_0+0xC  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??OnRedraw_0+0x10  ;; playerfolder
        LDR      R1,??OnRedraw_0+0x14  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??OnRedraw_0+0x18  ;; name
        SWI      +22
//  771    DrawImg(nextx,nexty,(int)name);
        LDR      R2,??OnRedraw_0+0x18  ;; name
        LDR      R0,??OnRedraw_21+0x14  ;; nexty
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_21+0x18  ;; nextx
        LDR      R0,[R0, #+0]
        SWI      +35
        B        ??OnRedraw_22
        CFI CFA R13+300
//  772   }
//  773   else
//  774     {
//  775       DrawRectangle(0,0,132,176,0,GetPaletteAdrByColorIndex(1),GetPaletteAdrByColorIndex(1));
??OnRedraw_6:
        MOV      R0,#+1
        SWI      +302
        MOV      R4,R0
        MOV      R0,#+1
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+0
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R3,#+176
        MOV      R2,#+132
        MOV      R1,#+0
        SWI      +436
//  776       TTime ktime;
//  777       TDate date;
//  778       GetDateTime(&date,&ktime);
        ADD      R1,SP,#+12
        ADD      R0,SP,#+20
        SWI      +180
//  779       wsprintf(wss.ws1,"%i:%i%i",ktime.hour,ktime.min/10,ktime.min%10);
        LDRB     R0,[SP, #+13]
        LDR      R1,??OnRedraw_11+0xA4  ;; 0x66666667
        SMULL    R2,R3,R0,R1
        ASR      R3,R3,#+2
        MOV      R2,#+10
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        PUSH     {R0}
        CFI CFA R13+316
        LDRB     R0,[SP, #+17]
        SMULL    R2,R3,R1,R0
        ASR      R3,R3,#+2
        LDRB     R2,[SP, #+16]
        LDR      R1,??OnRedraw_11+0xCC  ;; `?<Constant "%i:%i%i">`
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  780       DrawString(wss.ws1,0,88,132,176,FONT_LARGE_BOLD,TEXT_ALIGNMIDDLE,GetPaletteAdrByColorIndex(12),GetPaletteAdrByColorIndex(1));
        MOV      R0,#+1
        SWI      +302
        MOV      R4,R0
        MOV      R0,#+12
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+320
        PUSH     {R0}
        CFI CFA R13+324
        MOV      R0,#+2
        PUSH     {R0}
        CFI CFA R13+328
        MOV      R0,#+1
        PUSH     {R0}
        CFI CFA R13+332
        MOV      R0,#+176
        PUSH     {R0}
        CFI CFA R13+336
        MOV      R3,#+132
        MOV      R2,#+88
        MOV      R1,#+0
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+36       ;; stack cleaning
        CFI CFA R13+300
//  781       utf8_2ws(wss.ws1,NameOfCurentTrack,320);
        MOV      R2,#+320
        LDR      R1,??OnRedraw_21+0x1C  ;; NameOfCurentTrack
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
//  782       DrawString(wss.ws1,2,2,130,88,FONT_MEDIUM,TEXT_ALIGNMIDDLE,GetPaletteAdrByColorIndex(12),GetPaletteAdrByColorIndex(1));
        MOV      R0,#+1
        SWI      +302
        MOV      R4,R0
        MOV      R0,#+12
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+2
        PUSH     {R0}
        CFI CFA R13+312
        PUSH     {R0}
        CFI CFA R13+316
        MOV      R0,#+88
        PUSH     {R0}
        CFI CFA R13+320
        MOV      R3,#+130
        MOV      R2,#+2
        MOV      R1,R2
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+20       ;; stack cleaning
        CFI CFA R13+300
        B        ??OnRedraw_23
//  783     }
//  784   break;
//  785 case 1:
//  786   {
//  787     DrawImg(0,0,(int)GetFon());
??OnRedraw_2:
        BL       GetFon
        MOV      R2,R0
        MOV      R1,#+0
        MOV      R0,#+0
        SWI      +35
//  788     int bottom;
//  789     if (NumberOfTracks>9)
        LDR      R0,??OnRedraw_11+0x4  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R0,#+10
        BLT      ??OnRedraw_24
//  790     {
//  791     if((selected-4)>=0){top=selected-4;}else{top=0;}
        LDR      R0,??OnRedraw_21+0x24  ;; selected
        LDR      R0,[R0, #+0]
        SUBS     R0,R0,#+4
        BMI      ??OnRedraw_25
        LDR      R0,??OnRedraw_21+0x24  ;; selected
        LDR      R0,[R0, #+0]
        SUB      R0,R0,#+4
        B        ??OnRedraw_26
??OnRedraw_25:
        MOV      R0,#+0
??OnRedraw_26:
        LDR      R1,??OnRedraw_21+0x28  ;; top
        STR      R0,[R1, #+0]
//  792     if (top+10<NumberOfTracks){bottom=NumberOfTracks;}
//  793     bottom=top+9;
        ADD      R4,R0,#+9
//  794     if(bottom>NumberOfTracks)
        LDR      R0,??OnRedraw_11+0x4  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R0,R4
        BGE      ??OnRedraw_27
//  795     {
//  796       while (bottom!=NumberOfTracks) {bottom--;top--;}
??OnRedraw_28:
        LDR      R0,??OnRedraw_11+0x4  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R4,R0
        BEQ      ??OnRedraw_27
        SUB      R4,R4,#+1
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R1,??OnRedraw_21+0x28  ;; top
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
        B        ??OnRedraw_28
//  797     }
//  798     }
//  799     else
//  800     {
//  801       top=0;
??OnRedraw_24:
        LDR      R0,??OnRedraw_21+0x28  ;; top
        MOV      R1,#+0
        STR      R1,[R0, #+0]
//  802       bottom=NumberOfTracks;
        LDR      R0,??OnRedraw_11+0x4  ;; NumberOfTracks
        LDR      R4,[R0, #+0]
//  803     }
//  804     int bkcolor=1;
//  805     if (NumberOfTracks!=0)
        CMP      R4,#+0
        BEQ      ??OnRedraw_29
//  806     {
//  807     for (int i=top;i<bottom;i++)
??OnRedraw_27:
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R5,[R0, #+0]
        CMP      R5,R4
        BGE      ??OnRedraw_30
        LDR      R0,??OnRedraw_21+0x2C  ;; spysokselected
        ADD      R6,R0,R5, LSL #+2
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??OnRedraw_21+0x30  ;; spysok
        ADD      R1,R1,R5, LSL #+7
        ADD      R7,R0,R1
//  808     {
//  809       char t[256];
//  810       int j;
//  811       if (spysok[1][i][0]==0x1F)
??OnRedraw_31:
        LDRB     R0,[R7, #+0]
        CMP      R0,#+31
        BNE      ??OnRedraw_32
//  812       {
//  813         j=28;
        MOV      R9,#+28
//  814         sprintf(t,spysok[1][i]);
        MOV      R1,R7
        ADD      R0,SP,#+16
        SWI      +22
//  815         t[0]=' ';
        MOV      R1,#+32
        STRB     R1,[SP, #+16]
        B        ??OnRedraw_33
//  816       }
//  817       else
//  818       {
//  819         j=16;
??OnRedraw_32:
        MOV      R9,#+16
//  820         sprintf(t,pp_s,spysok[1][i]);
        MOV      R2,R7
        LDR      R1,??OnRedraw_21+0x34  ;; pp_s
        ADD      R0,SP,#+16
        SWI      +22
//  821       }
//  822       t[strlen(t)-4]=0;
??OnRedraw_33:
        ADD      R0,SP,#+16
        SWI      +27
        ADD      R1,SP,#+16
        ADD      R0,R0,R1
        MOV      R1,#+0
        STRB     R1,[R0, #-4]
//  823       ////////////////////////
//  824         int colour=katalogfontcolour;
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R8,[R0, #+0]
//  825         if (spysokselected[i]==1){colour=katalogselectedcolour;}
        LDR      R0,[R6, #+0]
        CMP      R0,#+1
        LDREQ    R0,??OnRedraw_21+0x3C  ;; katalogselectedcolour
        LDREQ    R8,[R0, #+0]
//  826         utf8_2ws(wss.ws2,t,320);
        MOV      R2,#+320
        ADD      R1,SP,#+16
        LDR      R0,??OnRedraw_0+0x6C  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +483
//  827         if (i!=selected)
        LDR      R0,??OnRedraw_21+0x24  ;; selected
        LDR      R0,[R0, #+0]
        CMP      R5,R0
        BEQ      ??OnRedraw_34
//  828         {
//  829         utf8_2ws(wss.ws1,t,j);
        MOV      R2,R9
        ADD      R1,SP,#+16
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
//  830         if ((Get_WS_width(wss.ws1,7))!=(Get_WS_width(wss.ws2,7)))
        MOV      R1,#+7
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +520
        MOV      R9,R0
        MOV      R1,#+7
        LDR      R0,??OnRedraw_0+0x6C  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +520
        CMP      R9,R0
        BEQ      ??OnRedraw_35
//  831         {
//  832           wsprintf(wss.ws2,"...");
        ADR      R1,??OnRedraw_0+0x24  ;; "..."
        LDR      R0,??OnRedraw_0+0x6C  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +292
//  833           wstrcat(wss.ws1,wss.ws2);
        LDR      R0,??OnRedraw_0+0x6C  ;; wss + 4
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +289
//  834           //utf8_2ws(wss.ws2,t,320);
//  835           //if ((Get_WS_width(wss.ws1,7))>=(Get_WS_width(wss.ws2,7))){wss.ws1=wss.ws2;}
//  836         }
//  837         DrawString(wss.ws1,-4,(i-top)*15+22,106,(i-top+1)*15+18,7,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(colour),GetPaletteAdrByColorIndex(23));
??OnRedraw_35:
        MOV      R0,#+23
        SWI      +302
        MOV      R9,R0
        MOV      R0,R8
        SWI      +302
        PUSH     {R9}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+1
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R0,[R0, #+0]
        SUB      R0,R5,R0
        RSB      R0,R0,R0, LSL #+4
        ADD      R0,R0,#+33
        PUSH     {R0}
        CFI CFA R13+320
        MOV      R3,#+106
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R0,[R0, #+0]
        SUB      R0,R5,R0
        RSB      R0,R0,R0, LSL #+4
        ADD      R2,R0,#+22
        MVN      R1,#+3
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+20       ;; stack cleaning
        CFI CFA R13+300
        B        ??OnRedraw_36
//  838         }
//  839         else
//  840       {
//  841         DrawScrollString(wss.ws2,-4,(i-top)*15+22,106,(i-top+1)*15+18,xdisp,7,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(colour),GetPaletteAdrByColorIndex(katalogbackgroundcolour));
??OnRedraw_34:
        LDR      R0,??OnRedraw_21+0x40  ;; katalogbackgroundcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        MOV      R9,R0
        MOV      R0,R8
        SWI      +302
        PUSH     {R9}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+1
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_21+0x44  ;; xdisp
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+320
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R0,[R0, #+0]
        SUB      R0,R5,R0
        RSB      R0,R0,R0, LSL #+4
        ADD      R0,R0,#+33
        PUSH     {R0}
        CFI CFA R13+324
        MOV      R3,#+106
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R0,[R0, #+0]
        SUB      R0,R5,R0
        RSB      R0,R0,R0, LSL #+4
        ADD      R2,R0,#+22
        MVN      R1,#+3
        LDR      R0,??OnRedraw_0+0x6C  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +519
        ADD      SP,SP,#+24       ;; stack cleaning
        CFI CFA R13+300
//  842       }
//  843       ///////////////////////
//  844     }
??OnRedraw_36:
        ADD      R5,R5,#+1
        ADD      R7,R7,#+128
        ADD      R6,R6,#+4
        CMP      R5,R4
        BLT      ??OnRedraw_31
//  845     for (int i=top;i<bottom;i++)
??OnRedraw_30:
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R5,[R0, #+0]
        CMP      R5,R4
        BGE      ??OnRedraw_29
//  846     {
//  847       if (timelength[i]!=-1)
??OnRedraw_37:
        LDR      R0,??OnRedraw_11+0x80  ;; timelength
        LDR      R0,[R0, +R5, LSL #+2]
        CMN      R0,#+1
        BEQ      ??OnRedraw_38
//  848       {wsprintf(wss.ws1,"%i:%i%i",timelength[i]/60,(timelength[i]%60)/10,(timelength[i]%60)%10);}
        LDR      R0,??OnRedraw_11+0x80  ;; timelength
        LDR      R0,[R0, +R5, LSL #+2]
        LDR      R1,??OnRedraw_11+0xA0  ;; 0x88888889
        SMULL    R2,R3,R0,R1
        ADD      R3,R3,R0
        ASR      R3,R3,#+5
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+60
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        LDR      R1,??OnRedraw_11+0xA4  ;; 0x66666667
        SMULL    R2,R3,R0,R1
        ASR      R3,R3,#+2
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+10
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??OnRedraw_11+0x80  ;; timelength
        LDR      R0,[R0, +R5, LSL #+2]
        LDR      R1,??OnRedraw_11+0xA0  ;; 0x88888889
        SMULL    R2,R3,R0,R1
        ADD      R3,R3,R0
        ASR      R3,R3,#+5
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+60
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        LDR      R1,??OnRedraw_11+0xA4  ;; 0x66666667
        SMULL    R2,R3,R1,R0
        ASR      R3,R3,#+2
        ADD      R3,R3,R0, LSR #+31
        LDR      R0,??OnRedraw_11+0x80  ;; timelength
        LDR      R0,[R0, +R5, LSL #+2]
        LDR      R1,??OnRedraw_11+0xA0  ;; 0x88888889
        SMULL    R2,R6,R1,R0
        ADD      R6,R6,R0
        ASR      R6,R6,#+5
        ADD      R2,R6,R0, LSR #+31
        LDR      R1,??OnRedraw_11+0xCC  ;; `?<Constant "%i:%i%i">`
        LDR      R0,??OnRedraw_0+0x34  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+300
        B        ??OnRedraw_39
        DATA
??OnRedraw_0:
        DC32     WhatToView
        DC32     `?<Constant "\\\\background.png">`
        DC32     curskin
        DC32     ArrayOfSkins
        DC32     playerfolder
        DC32     `?<Constant "%sskins\\\\%s%s">`
        DC32     name
        DC32     CurentVolume
        DC32     `?<Constant "%sskins\\\\%s\\\\VOL%i.png">`
        DC8      "..."
        DC32     volumey
        DC32     volumex
        DC32     playlistname
        DC32     wss
        DC32     spysoktextbackground
        DC32     spysoktextcolor
        DC32     spysoktextattribute
        DC32     spysokfont
        DC32     spysoky2
        DC32     spysokx2
        DC32     spysoky1
        DC32     spysokx1
        DC32     calbum
        DC32     cartist
        DC32     ctrack
        DC32     `?<Constant "%s\\r%s\\r%s">`
        DC32     `?<Constant "%t\\r%t\\r%t">`
        DC32     wss + 4
        DC32     pp
        DC32     songtextbackground
        DC32     songtextcolor
        DC32     songtextattribute
        DC32     songfont
        DC32     songy2
        DC32     songx2
        DC32     songy1
        DC32     songx1
        ARM
//  849       else
//  850       {wsprintf(wss.ws1,"...");}
??OnRedraw_38:
        ADR      R1,??OnRedraw_11  ;; "..."
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  851       if (i==selected)
??OnRedraw_39:
        LDR      R0,??OnRedraw_21+0x24  ;; selected
        LDR      R0,[R0, #+0]
        CMP      R5,R0
//  852       {
//  853         bkcolor=katalogbackgroundcolour;
        LDREQ    R0,??OnRedraw_21+0x40  ;; katalogbackgroundcolour
        LDREQ    R0,[R0, #+0]
//  854       }
//  855       else
//  856       {
//  857         bkcolor=23;
        MOVNE    R0,#+23
//  858       }
//  859       DrawString(wss.ws1,96,(i-top)*15+22,130,(i-top+1)*15+21,7,TEXT_ALIGNRIGHT,GetPaletteAdrByColorIndex(katalogfontcolour),GetPaletteAdrByColorIndex(bkcolor));
        SWI      +302
        MOV      R6,R0
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R6}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+4
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R0,[R0, #+0]
        SUB      R0,R5,R0
        RSB      R0,R0,R0, LSL #+4
        ADD      R0,R0,#+36
        PUSH     {R0}
        CFI CFA R13+320
        MOV      R3,#+130
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R0,[R0, #+0]
        SUB      R0,R5,R0
        RSB      R0,R0,R0, LSL #+4
        ADD      R2,R0,#+22
        MOV      R1,#+96
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
//  860     }
        ADD      R5,R5,#+1
        CMP      R5,R4
        ADD      SP,SP,#+20       ;; stack cleaning
        CFI CFA R13+300
        BLT      ??OnRedraw_37
//  861     }
//  862     wsprintf(wss.ws1,"%i%c%i",selected+1,'/',NumberOfTracks);
??OnRedraw_29:
        LDR      R0,??OnRedraw_11+0x4  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+304
        MOV      R3,#+47
        LDR      R0,??OnRedraw_21+0x24  ;; selected
        LDR      R0,[R0, #+0]
        ADD      R2,R0,#+1
        LDR      R1,??OnRedraw_11+0xC  ;; `?<Constant "%i%c%i">`
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  863     DrawString(wss.ws1,1,3,128,176,7,TEXT_ALIGNRIGHT,GetPaletteAdrByColorIndex(katalogfontcolour),GetPaletteAdrByColorIndex(23)); 
        MOV      R0,#+23
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+308
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R0,#+4
        PUSH     {R0}
        CFI CFA R13+316
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+320
        MOV      R0,#+176
        PUSH     {R0}
        CFI CFA R13+324
        MOV      R3,#+128
        MOV      R2,#+3
        MOV      R1,#+1
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
//  864     utf8_2ws(wss.ws1,playlistname,320);
        MOV      R2,#+320
        LDR      R1,??OnRedraw_21+0x4C  ;; playlistname
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
//  865     DrawString(wss.ws1,1,3,90,15,FONT_SMALL_BOLD,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(katalogfontcolour),GetPaletteAdrByColorIndex(23));
        MOV      R0,#+23
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+328
        PUSH     {R0}
        CFI CFA R13+332
        MOV      R0,#+1
        PUSH     {R0}
        CFI CFA R13+336
        MOV      R0,#+8
        PUSH     {R0}
        CFI CFA R13+340
        MOV      R0,#+15
        PUSH     {R0}
        CFI CFA R13+344
        MOV      R3,#+90
        MOV      R2,#+3
        MOV      R1,#+1
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+44       ;; stack cleaning
        CFI CFA R13+300
//  866     wsprintf(wss.ws1,pt,LG_REMOVE);
        LDR      R2,??OnRedraw_21+0x50  ;; `?<Constant "\\302\\350\\344\\340\\353\\350\\362\\350">`
        LDR      R1,??OnRedraw_21+0x54  ;; pt
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  867     DrawString(wss.ws1,1,163,130,176,7,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(katalogfontcolour),GetPaletteAdrByColorIndex(23));
        MOV      R0,#+23
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+1
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+316
        MOV      R0,#+176
        PUSH     {R0}
        CFI CFA R13+320
        MOV      R3,#+130
        MOV      R2,#+163
        MOV      R1,#+1
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
//  868     wsprintf(wss.ws1,pt,LG_ADD);
        LDR      R2,??OnRedraw_21+0x58  ;; `?<Constant "\\304\\356\\344\\340\\362\\350">`
        LDR      R1,??OnRedraw_21+0x54  ;; pt
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  869     DrawString(wss.ws1,1,163,130,176,7,TEXT_ALIGNRIGHT,GetPaletteAdrByColorIndex(katalogfontcolour),GetPaletteAdrByColorIndex(23));
        MOV      R0,#+23
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+324
        PUSH     {R0}
        CFI CFA R13+328
        MOV      R0,#+4
        PUSH     {R0}
        CFI CFA R13+332
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+336
        MOV      R0,#+176
        PUSH     {R0}
        CFI CFA R13+340
        MOV      R3,#+130
        MOV      R2,#+163
        MOV      R1,#+1
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+40       ;; stack cleaning
        CFI CFA R13+300
//  870     DrawLine(0,17,132,17,0,GetPaletteAdrByColorIndex(katalogfontcolour));
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R0}
        CFI CFA R13+304
        MOV      R0,#+0
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R3,#+17
        MOV      R2,#+132
        MOV      R1,#+17
        SWI      +435
//  871     DrawLine(92,17,92,0,0,GetPaletteAdrByColorIndex(katalogfontcolour));
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R0,#+0
        PUSH     {R0}
        CFI CFA R13+316
        MOV      R3,R0
        MOV      R2,#+92
        MOV      R1,#+17
        MOV      R0,R2
        SWI      +435
        ADD      SP,SP,#+16       ;; stack cleaning
        CFI CFA R13+300
??OnRedraw_23:
        BL       ShowMess
        ADD      SP,SP,#+272
        CFI CFA R13+28
        POP      {R4-R9,PC}
        DATA
??OnRedraw_11:
        DC8      "..."
        DC32     NumberOfTracks
        DC32     cp
        DC32     `?<Constant "%i%c%i">`
        DC32     trackstextbackground
        DC32     trackstextcolor
        DC32     trackstextattribute
        DC32     tracksfont
        DC32     tracksy2
        DC32     tracksx2
        DC32     tracksy1
        DC32     tracksx1
        DC32     playing
        DC32     `?<Constant "\\\\stop.png">`
        DC32     `?<Constant "\\\\play.png">`
        DC32     play_stopy
        DC32     play_stopx
        DC32     random
        DC32     `?<Constant "\\\\random.png">`
        DC32     randomy
        DC32     randomx
        DC32     ringoff
        DC32     `?<Constant "\\\\off.png">`
        DC32     ringoffy
        DC32     ringoffx
        DC32     `?<Constant "\\\\plus.png">`
        DC32     volpy
        DC32     volpx
        DC32     `?<Constant "\\\\minus.png">`
        DC32     volmy
        DC32     volmx
        DC32     `?<Constant "\\\\progressbar.png">`
        DC32     timelength
        DC32     timemin
        DC32     timesec
        DC32     progressbarx1
        DC32     progressbarx2
        DC32     progressbarcolour
        DC32     progressbary1
        DC32     entime
        DC32     0x88888889
        DC32     0x66666667
        DC32     `?<Constant "%i:%i%i/%i:%i%i">`
        DC32     timetextbackground
        DC32     timetextcolor
        DC32     timetextattribute
        DC32     timefont
        DC32     timey2
        DC32     timex2
        DC32     timey1
        DC32     timex1
        DC32     `?<Constant "%i:%i%i">`
        CFI CFA R13+300
        ARM
//  872   }break;
//  873   case 2:
//  874     {
//  875       DrawRectangle(0,0,132,176,0,GetPaletteAdrByColorIndex(1),GetPaletteAdrByColorIndex(1));
??OnRedraw_3:
        MOV      R0,#+1
        SWI      +302
        MOV      R4,R0
        MOV      R0,#+1
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+0
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R3,#+176
        MOV      R2,#+132
        MOV      R1,#+0
        SWI      +436
//  876       utf8_2ws(wss.ws1,playlistname,320);
        MOV      R2,#+320
        LDR      R1,??OnRedraw_21+0x4C  ;; playlistname
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
//  877       DrawString(wss.ws1,1,3,130,40,7,TEXT_ALIGNMIDDLE,GetPaletteAdrByColorIndex(12),GetPaletteAdrByColorIndex(1));
        MOV      R0,#+1
        SWI      +302
        MOV      R4,R0
        MOV      R0,#+12
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+316
        PUSH     {R0}
        CFI CFA R13+320
        MOV      R0,#+2
        PUSH     {R0}
        CFI CFA R13+324
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+328
        MOV      R0,#+40
        PUSH     {R0}
        CFI CFA R13+332
        MOV      R3,#+130
        MOV      R2,#+3
        MOV      R1,#+1
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
//  878       utf8_2ws(wss.ws1,spysok[1][pisniashchozberigaetsia],100);
        MOV      R2,#+100
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable233  ;; pisniashchozberigaetsia
        LDR      R1,[R1, #+0]
        LDR      R3,??OnRedraw_21+0x30  ;; spysok
        ADD      R1,R3,R1, LSL #+7
        ADD      R1,R0,R1
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
//  879       DrawString(wss.ws1,1,40,130,80,7,TEXT_ALIGNMIDDLE,GetPaletteAdrByColorIndex(12),GetPaletteAdrByColorIndex(1));
        MOV      R0,#+1
        SWI      +302
        MOV      R4,R0
        MOV      R0,#+12
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+336
        PUSH     {R0}
        CFI CFA R13+340
        MOV      R0,#+2
        PUSH     {R0}
        CFI CFA R13+344
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+348
        MOV      R0,#+80
        PUSH     {R0}
        CFI CFA R13+352
        MOV      R3,#+130
        MOV      R2,#+40
        MOV      R1,#+1
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+52       ;; stack cleaning
        CFI CFA R13+300
//  880       DrawRectangle(0,80,132,100,0,GetPaletteAdrByColorIndex(12),GetPaletteAdrByColorIndex(1));
        MOV      R0,#+1
        SWI      +302
        MOV      R4,R0
        MOV      R0,#+12
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+0
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R3,#+100
        MOV      R2,#+132
        MOV      R1,#+80
        SWI      +436
//  881       DrawRectangle(0,80,132*(pisniashchozberigaetsia+1)/NumberOfTracks,100,0,GetPaletteAdrByColorIndex(12),GetPaletteAdrByColorIndex(12));
        MOV      R0,#+12
        SWI      +302
        MOV      R4,R0
        MOV      R0,#+12
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+316
        PUSH     {R0}
        CFI CFA R13+320
        MOV      R0,#+0
        PUSH     {R0}
        CFI CFA R13+324
        MOV      R3,#+100
        LDR      R0,??DataTable233  ;; pisniashchozberigaetsia
        LDR      R0,[R0, #+0]
        ADD      R0,R0,#+1
        MOV      R1,#+132
        MUL      R0,R1,R0
        LDR      R1,??DataTable227  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        _BLF     ??div32_a,??rA??div32_a
        MOV      R2,R1
        MOV      R1,#+80
        MOV      R0,#+0
        SWI      +436
//  882       wsprintf(wss.ws1,"%i%c%i",pisniashchozberigaetsia+1,'/',NumberOfTracks);
        LDR      R0,??DataTable227  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+328
        MOV      R3,#+47
        LDR      R0,??DataTable233  ;; pisniashchozberigaetsia
        LDR      R0,[R0, #+0]
        ADD      R2,R0,#+1
        LDR      R1,??OnRedraw_21+0x5C  ;; `?<Constant "%i%c%i">`
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  883       DrawString(wss.ws1,0,84,132,100,7,TEXT_ALIGNMIDDLE,GetPaletteAdrByColorIndex(1),GetPaletteAdrByColorIndex(12));
        MOV      R0,#+12
        SWI      +302
        MOV      R4,R0
        MOV      R0,#+1
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+332
        PUSH     {R0}
        CFI CFA R13+336
        MOV      R0,#+2
        PUSH     {R0}
        CFI CFA R13+340
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+344
        MOV      R0,#+100
        PUSH     {R0}
        CFI CFA R13+348
        MOV      R3,#+132
        MOV      R2,#+84
        MOV      R1,#+0
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+48       ;; stack cleaning
        CFI CFA R13+300
        B        ??OnRedraw_23
//  884     }break;
//  885 case 3:
//  886   {
//  887     sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\fon.png");
??OnRedraw_4:
        LDR      R0,??DataTable123  ;; `?<Constant "\\\\fon.png">`
        PUSH     {R0}
        CFI CFA R13+304
        LDR      R0,??DataTable124  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??DataTable125  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??DataTable126  ;; playerfolder
        LDR      R1,??DataTable127  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??DataTable129  ;; name
        SWI      +22
//  888     DrawImg(0,0,(int)name);
        LDR      R2,??DataTable129  ;; name
        MOV      R1,#+0
        MOV      R0,#+0
        SWI      +35
//  889     int bottom;
//  890     if (kataloglength>9)
        LDR      R0,??DataTable135  ;; kataloglength
        LDR      R0,[R0, #+0]
        CMP      R0,#+10
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+300
        BLT      ??OnRedraw_40
//  891     {
//  892     if((katalogcurent-4)>=0){top=katalogcurent-4;}else{top=0;}
        LDR      R0,??DataTable200  ;; katalogcurent
        LDR      R0,[R0, #+0]
        SUBS     R0,R0,#+4
        BMI      ??OnRedraw_41
        LDR      R0,??DataTable200  ;; katalogcurent
        LDR      R0,[R0, #+0]
        SUB      R0,R0,#+4
        B        ??OnRedraw_42
??OnRedraw_41:
        MOV      R0,#+0
??OnRedraw_42:
        LDR      R1,??OnRedraw_21+0x28  ;; top
        STR      R0,[R1, #+0]
//  893     if (top+10<kataloglength){bottom=kataloglength;}
//  894     bottom=top+9;
        ADD      R4,R0,#+9
//  895     if(bottom>kataloglength)
        LDR      R0,??DataTable135  ;; kataloglength
        LDR      R0,[R0, #+0]
        CMP      R0,R4
        BGE      ??OnRedraw_43
//  896     {
//  897       while (bottom!=kataloglength) {bottom--;top--;}
??OnRedraw_44:
        LDR      R0,??DataTable135  ;; kataloglength
        LDR      R0,[R0, #+0]
        CMP      R4,R0
        BEQ      ??OnRedraw_43
        SUB      R4,R4,#+1
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R1,??OnRedraw_21+0x28  ;; top
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
        B        ??OnRedraw_44
//  898     }
//  899     }
//  900     else
//  901     {
//  902       top=0;
??OnRedraw_40:
        LDR      R0,??OnRedraw_21+0x28  ;; top
        MOV      R1,#+0
        STR      R1,[R0, #+0]
//  903       bottom=kataloglength;
        LDR      R0,??DataTable135  ;; kataloglength
        LDR      R4,[R0, #+0]
//  904     }
//  905     for (int i=top;i<bottom;i++)
??OnRedraw_43:
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R5,[R0, #+0]
        CMP      R5,R4
        BGE      ??OnRedraw_45
//  906     {
//  907       char t[256];
//  908       int j;
//  909       if (katalog[i][0]==0x1F)
??OnRedraw_46:
        LDR      R0,??DataTable176  ;; katalog
        LDRB     R0,[R0, +R5, LSL #+7]
        CMP      R0,#+31
        BNE      ??OnRedraw_47
//  910       {
//  911         j=34;
        MOV      R6,#+34
//  912         sprintf(t,katalog[i]);
        LDR      R0,??DataTable176  ;; katalog
        ADD      R1,R0,R5, LSL #+7
        ADD      R0,SP,#+16
        SWI      +22
//  913         t[0]=' ';
        MOV      R1,#+32
        STRB     R1,[SP, #+16]
        B        ??OnRedraw_48
//  914       }
//  915       else
//  916       {
//  917         j=20;
??OnRedraw_47:
        MOV      R6,#+20
//  918         sprintf(t,pp_s,katalog[i]);
        LDR      R0,??DataTable176  ;; katalog
        ADD      R2,R0,R5, LSL #+7
        LDR      R1,??OnRedraw_21+0x34  ;; pp_s
        ADD      R0,SP,#+16
        SWI      +22
//  919       }
//  920       ////////////////////////
//  921         
//  922         utf8_2ws(wss.ws2,t,320);
??OnRedraw_48:
        MOV      R2,#+320
        ADD      R1,SP,#+16
        LDR      R0,??DataTable145  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +483
//  923       int colour;
//  924       if (katalogselected[i]==1){colour=katalogselectedcolour;}else{colour=katalogfontcolour;};
        LDR      R0,??DataTable192  ;; katalogselected
        LDR      R0,[R0, +R5, LSL #+2]
        CMP      R0,#+1
        LDREQ    R0,??OnRedraw_21+0x3C  ;; katalogselectedcolour
        LDRNE    R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R7,[R0, #+0]
//  925         if (i!=katalogcurent)
        LDR      R0,??DataTable200  ;; katalogcurent
        LDR      R0,[R0, #+0]
        CMP      R5,R0
        BEQ      ??OnRedraw_49
//  926         {
//  927         utf8_2ws(wss.ws1,t,j);
        MOV      R2,R6
        ADD      R1,SP,#+16
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
//  928         if ((Get_WS_width(wss.ws1,7))!=(Get_WS_width(wss.ws2,7)))
        MOV      R1,#+7
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +520
        MOV      R6,R0
        MOV      R1,#+7
        LDR      R0,??DataTable145  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +520
        CMP      R6,R0
        BEQ      ??OnRedraw_50
//  929         {
//  930           wsprintf(wss.ws2,"...");
        ADR      R1,??OnRedraw_21+0x4  ;; "..."
        LDR      R0,??DataTable145  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +292
//  931           wstrcat(wss.ws1,wss.ws2);
        LDR      R0,??DataTable145  ;; wss + 4
        LDR      R1,[R0, #+0]
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +289
//  932           //utf8_2ws(wss.ws2,t,320);
//  933           //if ((Get_WS_width(wss.ws1,7))>=(Get_WS_width(wss.ws2,7))){wss.ws1=wss.ws2;}
//  934         }
//  935         DrawString(wss.ws1,-4,(i-top)*15+22,130,(i-top+1)*15+18,7,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(colour),GetPaletteAdrByColorIndex(23));
??OnRedraw_50:
        MOV      R0,#+23
        SWI      +302
        MOV      R6,R0
        MOV      R0,R7
        SWI      +302
        PUSH     {R6}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+1
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R0,[R0, #+0]
        SUB      R0,R5,R0
        RSB      R0,R0,R0, LSL #+4
        ADD      R0,R0,#+33
        PUSH     {R0}
        CFI CFA R13+320
        MOV      R3,#+130
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R0,[R0, #+0]
        SUB      R0,R5,R0
        RSB      R0,R0,R0, LSL #+4
        ADD      R2,R0,#+22
        MVN      R1,#+3
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+20       ;; stack cleaning
        CFI CFA R13+300
        B        ??OnRedraw_51
//  936         }
//  937         else
//  938       {
//  939         DrawScrollString(wss.ws2,-4,(i-top)*15+22,130,(i-top+1)*15+18,xdisp,7,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(colour),GetPaletteAdrByColorIndex(23));
??OnRedraw_49:
        MOV      R0,#+23
        SWI      +302
        MOV      R6,R0
        MOV      R0,R7
        SWI      +302
        PUSH     {R6}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+1
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+316
        LDR      R0,??OnRedraw_21+0x44  ;; xdisp
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+320
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R0,[R0, #+0]
        SUB      R0,R5,R0
        RSB      R0,R0,R0, LSL #+4
        ADD      R0,R0,#+33
        PUSH     {R0}
        CFI CFA R13+324
        MOV      R3,#+130
        LDR      R0,??OnRedraw_21+0x28  ;; top
        LDR      R0,[R0, #+0]
        SUB      R0,R5,R0
        RSB      R0,R0,R0, LSL #+4
        ADD      R2,R0,#+22
        MVN      R1,#+3
        LDR      R0,??DataTable145  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +519
        ADD      SP,SP,#+24       ;; stack cleaning
        CFI CFA R13+300
//  940       }
//  941       ///////////////////////
//  942     }
??OnRedraw_51:
        ADD      R5,R5,#+1
        CMP      R5,R4
        BLT      ??OnRedraw_46
//  943     //utf8_2ws(wss.ws1,playlistname,320);
//  944     //DrawString(wss.ws1,1,3,90,15,FONT_SMALL_BOLD,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(color),GetPaletteAdrByColorIndex(background));
//  945     wsprintf(wss.ws1,pt,LG_SELECT);
??OnRedraw_45:
        LDR      R2,??OnRedraw_21+0x60  ;; `?<Constant "\\302\\350\\341i\\360">`
        LDR      R1,??OnRedraw_21+0x54  ;; pt
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  946     DrawString(wss.ws1,1,163,130,176,7,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(katalogfontcolour),GetPaletteAdrByColorIndex(23));
        MOV      R0,#+23
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+304
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R0,#+1
        PUSH     {R0}
        CFI CFA R13+312
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+316
        MOV      R0,#+176
        PUSH     {R0}
        CFI CFA R13+320
        MOV      R3,#+130
        MOV      R2,#+163
        MOV      R1,#+1
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
//  947     wsprintf(wss.ws1,"OK");
        ADR      R1,??OnRedraw_21+0x20  ;; "OK"
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
//  948     DrawString(wss.ws1,1,163,130,176,7,TEXT_ALIGNRIGHT,GetPaletteAdrByColorIndex(katalogfontcolour),GetPaletteAdrByColorIndex(23));
        MOV      R0,#+23
        SWI      +302
        MOV      R4,R0
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R4}
        CFI CFA R13+324
        PUSH     {R0}
        CFI CFA R13+328
        MOV      R0,#+4
        PUSH     {R0}
        CFI CFA R13+332
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+336
        MOV      R0,#+176
        PUSH     {R0}
        CFI CFA R13+340
        MOV      R3,#+130
        MOV      R2,#+163
        MOV      R1,#+1
        LDR      R0,??OnRedraw_21+0x48  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +332
        ADD      SP,SP,#+40       ;; stack cleaning
        CFI CFA R13+300
//  949     DrawLine(0,17,132,17,0,GetPaletteAdrByColorIndex(katalogfontcolour));
        LDR      R0,??OnRedraw_21+0x38  ;; katalogfontcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        PUSH     {R0}
        CFI CFA R13+304
        MOV      R0,#+0
        PUSH     {R0}
        CFI CFA R13+308
        MOV      R3,#+17
        MOV      R2,#+132
        MOV      R1,#+17
        SWI      +435
??OnRedraw_22:
        ADD      SP,SP,#+8        ;; stack cleaning
        CFI CFA R13+300
//  950   }break;
//  951   }
//  952   ShowMess();
??OnRedraw_5:
        BL       ShowMess
//  953 }
        ADD      SP,SP,#+272      ;; stack cleaning
        CFI CFA R13+28
        POP      {R4-R9,PC}       ;; return
        DATA
??OnRedraw_21:
        DC32     `?<Constant "\\\\prev.png">`
        DC8      "..."
        DC32     prevy
        DC32     prevx
        DC32     `?<Constant "\\\\next.png">`
        DC32     nexty
        DC32     nextx
        DC32     NameOfCurentTrack
        DC8      "OK",+0
        DC32     selected
        DC32     top
        DC32     spysokselected
        DC32     spysok
        DC32     pp_s
        DC32     katalogfontcolour
        DC32     katalogselectedcolour
        DC32     katalogbackgroundcolour
        DC32     xdisp
        DC32     wss
        DC32     playlistname
        DC32     `?<Constant "\\302\\350\\344\\340\\353\\350\\362\\350">`
        DC32     pt
        DC32     `?<Constant "\\304\\356\\344\\340\\362\\350">`
        DC32     `?<Constant "%i%c%i">`
        DC32     `?<Constant "\\302\\350\\341i\\360">`
        CFI EndBlock cfiBlock37

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable123:
        DC32     `?<Constant "\\\\fon.png">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable124:
        DC32     curskin

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable125:
        DC32     ArrayOfSkins

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable126:
        DC32     playerfolder

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable127:
        DC32     `?<Constant "%sskins\\\\%s%s">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable129:
        DC32     name

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable135:
        DC32     kataloglength

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable145:
        DC32     wss + 4

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock38 Using cfiCommon0
        CFI NoFunction
        THUMB
??Scrolling??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock38
        REQUIRE Scrolling
//  954 

        RSEG DATA_I:DATA:SORT:NOROOT(2)
//  955 int xdispnapriamok=3;
xdispnapriamok:
        DS8 4
        REQUIRE `?<Initializer for xdispnapriamok>`

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock39 Using cfiCommon1
        CFI Function Scrolling
        ARM
//  956 void Scrolling()
//  957 {
Scrolling:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        SUB      SP,SP,#+256
        CFI CFA R13+268
//  958   if (NumberOfTracks!=0)
        LDR      R0,??DataTable227  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??Scrolling_0
//  959   {
//  960   char t[256];
//  961   if (spysok[1][selected][0]==0x1F)
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable172  ;; selected
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable279  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        LDRB     R0,[R0, +R1]
        CMP      R0,#+31
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable172  ;; selected
        LDR      R1,[R1, #+0]
        ADD      R1,R2,R1, LSL #+7
        BNE      ??Scrolling_1
//  962   {
//  963     sprintf(t,spysok[1][selected]);
        ADD      R1,R0,R1
        MOV      R0,SP
        SWI      +22
//  964     t[0]=' ';
        MOV      R1,#+32
        STRB     R1,[SP, #+0]
        B        ??Scrolling_2
//  965   }
//  966   else
//  967   {
//  968     sprintf(t,pp_s,spysok[1][selected]);
??Scrolling_1:
        ADD      R2,R0,R1
        LDR      R1,??DataTable178  ;; pp_s
        MOV      R0,SP
        SWI      +22
//  969   }
//  970   t[strlen(t)-4]=0;
??Scrolling_2:
        MOV      R0,SP
        SWI      +27
        MOV      R1,SP
        ADD      R0,R0,R1
        MOV      R1,#+0
        STRB     R1,[R0, #-4]
//  971   utf8_2ws(wss.ws1,t,320);
        MOV      R2,#+320
        MOV      R1,SP
        LDR      R0,??DataTable202  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
//  972   int colour=katalogfontcolour;
        LDR      R0,??DataTable194  ;; katalogfontcolour
        LDR      R4,[R0, #+0]
//  973   if (spysokselected[selected]==1){colour=katalogselectedcolour;}
        LDR      R0,??DataTable172  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable154  ;; spysokselected
        LDR      R0,[R1, +R0, LSL #+2]
        CMP      R0,#+1
        LDREQ    R0,??DataTable193  ;; katalogselectedcolour
        LDREQ    R4,[R0, #+0]
//  974   int y=Get_WS_width(wss.ws1,7);
        MOV      R1,#+7
        LDR      R0,??DataTable202  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +520
//  975   if (y>110)
        CMP      R0,#+111
        BLT      ??Scrolling_3
//  976   {
//  977     int ds=y-110;
//  978     if ((xdisp>ds+3)||(xdisp==1)){xdispnapriamok=-xdispnapriamok;}
        SUB      R0,R0,#+107
        LDR      R1,??DataTable197  ;; xdisp
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        BLT      ??Scrolling_4
        CMP      R1,#+1
        BNE      ??Scrolling_5
??Scrolling_4:
        LDR      R0,??DataTable186  ;; xdispnapriamok
        LDR      R1,??DataTable186  ;; xdispnapriamok
        LDR      R1,[R1, #+0]
        RSB      R1,R1,#+0
        STR      R1,[R0, #+0]
//  979     xdisp+=xdispnapriamok;
??Scrolling_5:
        LDR      R0,??DataTable197  ;; xdisp
        LDR      R1,??DataTable197  ;; xdisp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable186  ;; xdispnapriamok
        LDR      R2,[R2, #+0]
        ADD      R1,R2,R1
        STR      R1,[R0, #+0]
//  980   }
//  981   if ((IsGuiOnTop(MAINGUI_ID)==1)&&(WhatToView==1))
??Scrolling_3:
        LDR      R0,??DataTable300  ;; MAINGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +309
        CMP      R0,#+1
        BNE      ??Scrolling_0
        LDR      R0,??DataTable301  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??Scrolling_0
//  982   {
//  983     GBS_StartTimerProc(&Scroll,35,Scrolling);
        LDR      R2,??DataTable165  ;; Scrolling
        MOV      R1,#+35
        LDR      R0,??DataTable190  ;; Scroll
        SWI      +77
//  984     if(!toview)
        LDR      R0,??DataTable195  ;; toview
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??Scrolling_0
//  985     {
//  986       DrawScrollString(wss.ws1,-4,(selected-top)*15+22,106,(selected-top+1)*15+18,xdisp,7,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(colour),GetPaletteAdrByColorIndex(katalogbackgroundcolour));
        LDR      R0,??DataTable196  ;; katalogbackgroundcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        MOV      R5,R0
        MOV      R0,R4
        SWI      +302
        PUSH     {R5}
        CFI CFA R13+272
        PUSH     {R0}
        CFI CFA R13+276
        MOV      R0,#+1
        PUSH     {R0}
        CFI CFA R13+280
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+284
        LDR      R0,??DataTable197  ;; xdisp
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+288
        LDR      R0,??DataTable172  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable201  ;; top
        LDR      R1,[R1, #+0]
        SUB      R0,R0,R1
        RSB      R0,R0,R0, LSL #+4
        ADD      R0,R0,#+33
        PUSH     {R0}
        CFI CFA R13+292
        MOV      R3,#+106
        LDR      R0,??DataTable172  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable201  ;; top
        LDR      R1,[R1, #+0]
        SUB      R0,R0,R1
        RSB      R0,R0,R0, LSL #+4
        ADD      R2,R0,#+22
        MVN      R1,#+3
        LDR      R0,??DataTable202  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +519
        ADD      SP,SP,#+24       ;; stack cleaning
        CFI CFA R13+268
//  987     }
//  988   }
//  989   }
//  990 }
??Scrolling_0:
        ADD      SP,SP,#+256      ;; stack cleaning
        CFI CFA R13+12
        POP      {R4,R5,PC}       ;; return
        CFI EndBlock cfiBlock39

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable154:
        DC32     spysokselected

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable165:
        DC32     Scrolling

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable172:
        DC32     selected

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock40 Using cfiCommon0
        CFI NoFunction
        THUMB
??ScrollingInFile??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock40
        REQUIRE ScrollingInFile
//  991 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock41 Using cfiCommon1
        CFI Function ScrollingInFile
        ARM
//  992 void ScrollingInFile()
//  993 {
ScrollingInFile:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        SUB      SP,SP,#+256
        CFI CFA R13+268
//  994   char t[256];
//  995   if (katalog[katalogcurent][0]==0x1F)
        LDR      R0,??DataTable200  ;; katalogcurent
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable176  ;; katalog
        LDRB     R0,[R1, +R0, LSL #+7]
        CMP      R0,#+31
        LDR      R0,??DataTable200  ;; katalogcurent
        LDR      R0,[R0, #+0]
        BNE      ??ScrollingInFile_0
//  996   {
//  997     sprintf(t,katalog[katalogcurent]);
        ADD      R1,R1,R0, LSL #+7
        MOV      R0,SP
        SWI      +22
//  998     t[0]=' ';
        MOV      R1,#+32
        STRB     R1,[SP, #+0]
        B        ??ScrollingInFile_1
//  999   }
// 1000   else
// 1001   {
// 1002     sprintf(t,pp_s,katalog[katalogcurent]);
??ScrollingInFile_0:
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable178  ;; pp_s
        MOV      R0,SP
        SWI      +22
// 1003   }
// 1004   utf8_2ws(wss.ws1,t,320);
??ScrollingInFile_1:
        MOV      R2,#+320
        MOV      R1,SP
        LDR      R0,??DataTable202  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +483
// 1005   int y=Get_WS_width(wss.ws1,7);
        MOV      R1,#+7
        LDR      R0,??DataTable202  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +520
// 1006   if (y>136)
        CMP      R0,#+137
        BLT      ??ScrollingInFile_2
// 1007   {
// 1008     int ds=y-136;
// 1009     if ((xdisp>ds+3)||(xdisp==1)){xdispnapriamok=-xdispnapriamok;}
        MVN      R1,#+132
        ADD      R0,R1,R0
        LDR      R1,??DataTable197  ;; xdisp
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        BLT      ??ScrollingInFile_3
        CMP      R1,#+1
        BNE      ??ScrollingInFile_4
??ScrollingInFile_3:
        LDR      R0,??DataTable186  ;; xdispnapriamok
        LDR      R1,??DataTable186  ;; xdispnapriamok
        LDR      R1,[R1, #+0]
        RSB      R1,R1,#+0
        STR      R1,[R0, #+0]
// 1010     xdisp+=xdispnapriamok;
??ScrollingInFile_4:
        LDR      R0,??DataTable197  ;; xdisp
        LDR      R1,??DataTable197  ;; xdisp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable186  ;; xdispnapriamok
        LDR      R2,[R2, #+0]
        ADD      R1,R2,R1
        STR      R1,[R0, #+0]
// 1011   }
// 1012   if ((IsGuiOnTop(MAINGUI_ID)==1)&&(WhatToView==3))
??ScrollingInFile_2:
        LDR      R0,??DataTable300  ;; MAINGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +309
        CMP      R0,#+1
        BNE      ??ScrollingInFile_5
        LDR      R0,??DataTable301  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+3
        BNE      ??ScrollingInFile_5
// 1013   {
// 1014     GBS_StartTimerProc(&Scroll,35,ScrollingInFile);
        LDR      R2,??DataTable189  ;; ScrollingInFile
        MOV      R1,#+35
        LDR      R0,??DataTable190  ;; Scroll
        SWI      +77
// 1015     int colour;
// 1016     if (katalogselected[katalogcurent]==1){colour=katalogselectedcolour;}else{colour=katalogfontcolour;};
        LDR      R0,??DataTable200  ;; katalogcurent
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable192  ;; katalogselected
        LDR      R0,[R1, +R0, LSL #+2]
        CMP      R0,#+1
        LDREQ    R0,??DataTable193  ;; katalogselectedcolour
        LDRNE    R0,??DataTable194  ;; katalogfontcolour
        LDR      R4,[R0, #+0]
// 1017     if(!toview)
        LDR      R0,??DataTable195  ;; toview
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??ScrollingInFile_5
// 1018     {
// 1019       DrawScrollString(wss.ws1,-4,(katalogcurent-top)*15+22,130,(katalogcurent-top+1)*15+18,xdisp,7,TEXT_ALIGNLEFT,GetPaletteAdrByColorIndex(colour),GetPaletteAdrByColorIndex(katalogbackgroundcolour));
        LDR      R0,??DataTable196  ;; katalogbackgroundcolour
        LDR      R0,[R0, #+0]
        SWI      +302
        MOV      R5,R0
        MOV      R0,R4
        SWI      +302
        PUSH     {R5}
        CFI CFA R13+272
        PUSH     {R0}
        CFI CFA R13+276
        MOV      R0,#+1
        PUSH     {R0}
        CFI CFA R13+280
        MOV      R0,#+7
        PUSH     {R0}
        CFI CFA R13+284
        LDR      R0,??DataTable197  ;; xdisp
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+288
        LDR      R0,??DataTable200  ;; katalogcurent
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable201  ;; top
        LDR      R1,[R1, #+0]
        SUB      R0,R0,R1
        RSB      R0,R0,R0, LSL #+4
        ADD      R0,R0,#+33
        PUSH     {R0}
        CFI CFA R13+292
        MOV      R3,#+130
        LDR      R0,??DataTable200  ;; katalogcurent
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable201  ;; top
        LDR      R1,[R1, #+0]
        SUB      R0,R0,R1
        RSB      R0,R0,R0, LSL #+4
        ADD      R2,R0,#+22
        MVN      R1,#+3
        LDR      R0,??DataTable202  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +519
        ADD      SP,SP,#+24       ;; stack cleaning
        CFI CFA R13+268
// 1020     }
// 1021   }
// 1022 }
??ScrollingInFile_5:
        ADD      SP,SP,#+256      ;; stack cleaning
        CFI CFA R13+12
        POP      {R4,R5,PC}       ;; return
        CFI EndBlock cfiBlock41

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable176:
        DC32     katalog

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable178:
        DC32     pp_s

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable186:
        DC32     xdispnapriamok

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable189:
        DC32     ScrollingInFile

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable190:
        DC32     Scroll

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable192:
        DC32     katalogselected

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable193:
        DC32     katalogselectedcolour

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable194:
        DC32     katalogfontcolour

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable195:
        DC32     toview

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable196:
        DC32     katalogbackgroundcolour

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable197:
        DC32     xdisp

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable200:
        DC32     katalogcurent

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable201:
        DC32     top

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable202:
        DC32     wss

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock42 Using cfiCommon0
        CFI NoFunction
        THUMB
??SaveOnlyPlaylistParams??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock42
        REQUIRE SaveOnlyPlaylistParams
// 1023 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock43 Using cfiCommon1
        CFI Function SaveOnlyPlaylistParams
        ARM
// 1024 void SaveOnlyPlaylistParams(char *playy)
// 1025 {
SaveOnlyPlaylistParams:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        SUB      SP,SP,#+8
        CFI CFA R13+16
// 1026   int f;
// 1027   char g[3];
// 1028   unsigned int err;
// 1029   g[0]=NumberOfTracks;
        LDR      R2,??DataTable227  ;; NumberOfTracks
        LDR      R2,[R2, #+0]
        STRB     R2,[SP, #+0]
// 1030   g[1]=random;
        LDR      R2,??DataTable303  ;; random
        LDR      R2,[R2, #+0]
        STRB     R2,[SP, #+1]
// 1031   g[2]=cp;
        LDR      R2,??DataTable330  ;; cp
        LDR      R2,[R2, #+0]
        STRB     R2,[SP, #+2]
// 1032   f=fopen(playy, A_ReadWrite/*+A_MMCStream*/, P_WRITE, & err );
        ADD      R3,SP,#+4
        MOV      R2,#+256
        MOV      R1,#+2
        SWI      +10
        MOV      R4,R0
// 1033   fwrite(f,g,3,&err);
        ADD      R3,SP,#+4
        MOV      R2,#+3
        MOV      R1,SP
        SWI      +12
// 1034   fclose(f,&err);
        ADD      R1,SP,#+4
        MOV      R0,R4
        SWI      +13
// 1035 }
        ADD      SP,SP,#+8        ;; stack cleaning
        CFI CFA R13+8
        POP      {R4,PC}          ;; return
        CFI EndBlock cfiBlock43

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock44 Using cfiCommon0
        CFI NoFunction
        THUMB
??SavePlaylist??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock44
        REQUIRE SavePlaylist
// 1036 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock45 Using cfiCommon1
        CFI Function SavePlaylist
        ARM
// 1037 void SavePlaylist(void)
// 1038 {
SavePlaylist:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        SUB      SP,SP,#+16
        CFI CFA R13+24
// 1039   int f;
// 1040   WhatToView=2;
        LDR      R0,??DataTable301  ;; WhatToView
        MOV      R1,#+2
        STR      R1,[R0, #+0]
// 1041   char s[1]="*";
        ADD      R0,SP,#+4
        LDR      R1,??SavePlaylist_0  ;; `?<Constant "*">`
        LDRB     R2,[R1, #0]
        STRB     R2,[R0, #+0]
// 1042   char g[5];
// 1043   char h[3];
// 1044   sprintf(h,"%c%c",0x0D,0x0A);
        MOV      R3,#+10
        MOV      R2,#+13
        LDR      R1,??DataTable207  ;; `?<Constant "%c%c">`
        ADD      R0,SP,#+5
        SWI      +22
// 1045   unsigned int err;
// 1046   if((f=fopen(PlaylistToSave, A_WriteOnly+/*A_MMCStream+*/A_Create, P_WRITE, & err ))!=-1)
        MOV      R3,SP
        MOV      R2,#+256
        ORR      R1,R2,#0x1
        LDR      R0,??DataTable231  ;; PlaylistToSave
        SWI      +10
        MOV      R4,R0
        CMN      R4,#+1
        BEQ      ??SavePlaylist_1
// 1047   {
// 1048     sprintf(g,"%c%c%c%c%c",NumberOfTracks,random,cp,0x0D,0x0A);
        MOV      R0,#+10
        PUSH     {R0}
        CFI CFA R13+28
        MOV      R0,#+13
        PUSH     {R0}
        CFI CFA R13+32
        LDR      R0,??DataTable330  ;; cp
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+36
        LDR      R0,??DataTable303  ;; random
        LDR      R3,[R0, #+0]
        LDR      R0,??DataTable227  ;; NumberOfTracks
        LDR      R2,[R0, #+0]
        LDR      R1,??SavePlaylist_0+0x4  ;; `?<Constant "%c%c%c%c%c">`
        ADD      R0,SP,#+20
        SWI      +22
// 1049     fwrite(f,g,5,&err);
        ADD      R3,SP,#+12
        MOV      R2,#+5
        ADD      R1,SP,#+20
        MOV      R0,R4
        SWI      +12
// 1050     for (pisniashchozberigaetsia=0;pisniashchozberigaetsia<NumberOfTracks;pisniashchozberigaetsia++)
        LDR      R0,??DataTable233  ;; pisniashchozberigaetsia
        MOV      R1,#+0
        STR      R1,[R0, #+0]
        LDR      R0,??DataTable227  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        ADD      SP,SP,#+12       ;; stack cleaning
        CFI CFA R13+24
        BGE      ??SavePlaylist_2
        B        ??SavePlaylist_3
// 1051     {
// 1052       fwrite(f,spysok[0][pisniashchozberigaetsia],strlen(spysok[0][pisniashchozberigaetsia]),&err);
??SavePlaylist_4:
        LDR      R0,??DataTable233  ;; pisniashchozberigaetsia
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable279  ;; spysok
        ADD      R0,R1,R0, LSL #+7
        SWI      +27
        MOV      R3,SP
        MOV      R2,R0
        LDR      R0,??DataTable233  ;; pisniashchozberigaetsia
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable279  ;; spysok
        ADD      R1,R1,R0, LSL #+7
        MOV      R0,R4
        SWI      +12
// 1053       fwrite(f,s,1,&err);
        MOV      R3,SP
        MOV      R2,#+1
        ADD      R1,SP,#+4
        MOV      R0,R4
        SWI      +12
// 1054       fwrite(f,spysok[1][pisniashchozberigaetsia],strlen(spysok[1][pisniashchozberigaetsia]),&err);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable233  ;; pisniashchozberigaetsia
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable279  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R0,R0,R1
        SWI      +27
        MOV      R2,R0
        MOV      R3,SP
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable233  ;; pisniashchozberigaetsia
        LDR      R1,[R1, #+0]
        LDR      R12,??DataTable279  ;; spysok
        ADD      R1,R12,R1, LSL #+7
        ADD      R1,R0,R1
        MOV      R0,R4
        SWI      +12
// 1055       fwrite(f,h,2,&err);
        MOV      R3,SP
        MOV      R2,#+2
        ADD      R1,SP,#+5
        MOV      R0,R4
        SWI      +12
// 1056       if ((IsGuiOnTop(MAINGUI_ID)==1)&&(WhatToView==2)) {REDRAW();}
        LDR      R0,??DataTable300  ;; MAINGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +309
        CMP      R0,#+1
        BNE      ??SavePlaylist_5
        LDR      R0,??DataTable301  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+2
        BNE      ??SavePlaylist_5
        SWI      +370
// 1057     }
??SavePlaylist_5:
        LDR      R0,??DataTable233  ;; pisniashchozberigaetsia
        LDR      R1,??DataTable233  ;; pisniashchozberigaetsia
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
??SavePlaylist_2:
        LDR      R0,??DataTable233  ;; pisniashchozberigaetsia
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable227  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        BLT      ??SavePlaylist_4
// 1058     fclose(f,&err);
??SavePlaylist_3:
        MOV      R1,SP
        MOV      R0,R4
        SWI      +13
// 1059     playlistmode=1;
        LDR      R0,??DataTable228  ;; playlistmode
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 1060     const char *p=strrchr(LastPlaylist,'\\')+1;
        MOV      R1,#+92
        LDR      R0,??DataTable232  ;; LastPlaylist
        SWI      +279
        ADD      R1,R0,#+1
// 1061     sprintf(playlistname,p);
        LDR      R0,??DataTable230  ;; playlistname
        SWI      +22
// 1062     sprintf(LastPlaylist,PlaylistToSave);
        LDR      R1,??DataTable231  ;; PlaylistToSave
        LDR      R0,??DataTable232  ;; LastPlaylist
        SWI      +22
// 1063     Message(WAS_SAVED);
        LDR      R0,??SavePlaylist_0+0x8  ;; `?<Constant "\\321\\357\\350\\361\\356\\352 \\347\\341\\`
        B        ??SavePlaylist_6
// 1064   }
// 1065   else
// 1066   {
// 1067     fclose(f,&err);
??SavePlaylist_1:
        MOV      R1,SP
        SWI      +13
// 1068     Message(LG_ERROR_CREATE_PLAYLIST);
        LDR      R0,??SavePlaylist_0+0xC  ;; `?<Constant "\\321\\357\\350\\361\\356\\352 \\355\\345 `
??SavePlaylist_6:
        BL       Message
// 1069   }
// 1070   pisniashchozberigaetsia=0;
        LDR      R0,??DataTable233  ;; pisniashchozberigaetsia
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1071   WhatToView=1;
        LDR      R0,??DataTable301  ;; WhatToView
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 1072   if (IsGuiOnTop(MAINGUI_ID)==1){REDRAW();}
        LDR      R0,??DataTable300  ;; MAINGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +309
        CMP      R0,#+1
        BNE      ??SavePlaylist_7
        SWI      +370
// 1073 }
??SavePlaylist_7:
        ADD      SP,SP,#+16       ;; stack cleaning
        CFI CFA R13+8
        POP      {R4,PC}          ;; return
        DATA
??SavePlaylist_0:
        DC32     `?<Constant "*">`
        DC32     `?<Constant "%c%c%c%c%c">`
        DC32     `?<Constant "\\321\\357\\350\\361\\356\\352 \\347\\341\\`
        DC32     `?<Constant "\\321\\357\\350\\361\\356\\352 \\355\\345 `
        CFI EndBlock cfiBlock45

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable207:
        DC32     `?<Constant "%c%c">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable227:
        DC32     NumberOfTracks

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable228:
        DC32     playlistmode

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable230:
        DC32     playlistname

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable231:
        DC32     PlaylistToSave

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable232:
        DC32     LastPlaylist

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable233:
        DC32     pisniashchozberigaetsia

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock46 Using cfiCommon0
        CFI NoFunction
        THUMB
??findmp3length??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock46
        REQUIRE findmp3length
// 1074 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock47 Using cfiCommon1
        CFI Function findmp3length
        ARM
// 1075 int findmp3length(char *playy)
// 1076 {
findmp3length:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        SUB      SP,SP,#+36
        CFI CFA R13+44
        MOV      R4,R0
// 1077    #ifdef NEWSGOLD 
// 1078    return(0); 
// 1079    #else
// 1080    TWavLen wl;
// 1081    zeromem(&wl, sizeof(wl));
        MOV      R1,#+36
        MOV      R0,SP
        SWI      +285
// 1082    wl.type=0x2000;
        MOV      R1,#+8192
        STRH     R1,[SP, #+0]
// 1083    wl.wfilename=AllocWS(128);
        MOV      R0,#+128
        SWI      +293
        STR      R0,[SP, #+4]
// 1084    str_2ws(wl.wfilename,playy,128); 
        MOV      R2,#+128
        MOV      R1,R4
        SWI      +364
// 1085    GetWavLen(&wl); 
        MOV      R0,SP
        SWI      +69
// 1086    return (wl.length/1000);
        LDR      R0,[SP, #+24]
        LDR      R1,??findmp3length_0  ;; 0x10624dd3
        SMULL    R2,R3,R1,R0
        ASR      R3,R3,#+6
        ADD      R0,R3,R0, LSR #+31
        ADD      SP,SP,#+36       ;; stack cleaning
        CFI CFA R13+8
        POP      {R4,PC}          ;; return
        DATA
??findmp3length_0:
        DC32     0x10624dd3
        CFI EndBlock cfiBlock47
// 1087    #endif 
// 1088 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock48 Using cfiCommon0
        CFI NoFunction
        THUMB
??timepp??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock48
        REQUIRE timepp
// 1089 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock49 Using cfiCommon1
        CFI Function timepp
        ARM
// 1090 void timepp()
// 1091 {
timepp:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
        SUB      SP,SP,#+16
        CFI CFA R13+20
// 1092     TTime ktime;
// 1093     TDate date;
// 1094     GetDateTime(&date,&ktime);
        MOV      R1,SP
        ADD      R0,SP,#+8
        SWI      +180
// 1095     if (playing!=0)
        LDR      R0,??DataTable374  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??timepp_0
// 1096       {
// 1097         if (timehms[2]!=ktime.sec)
        LDR      R0,??DataTable287  ;; timehms + 8
        LDR      R0,[R0, #+0]
        LDRB     R1,[SP, #+2]
        CMP      R0,R1
        BEQ      ??timepp_1
// 1098           {
// 1099             timesec++;
        LDR      R0,??DataTable249  ;; timesec
        LDR      R0,[R0, #+0]
        ADD      R0,R0,#+1
// 1100             if(timesec==60)
        CMP      R0,#+60
        BNE      ??timepp_2
// 1101               {
// 1102                 timesec=0;
        MOV      R0,#+0
// 1103                 timemin++;
        LDR      R1,??DataTable250  ;; timemin
        LDR      R2,??DataTable250  ;; timemin
        LDR      R2,[R2, #+0]
        ADD      R2,R2,#+1
        STR      R2,[R1, #+0]
??timepp_2:
        LDR      R1,??DataTable249  ;; timesec
        STR      R0,[R1, #+0]
// 1104               }
// 1105             if ((IsGuiOnTop(MAINGUI_ID)==1)&&(WhatToView==0))
        LDR      R0,??DataTable300  ;; MAINGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +309
        CMP      R0,#+1
        BNE      ??timepp_1
        LDR      R0,??DataTable301  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??timepp_1
// 1106               {
// 1107                 REDRAW();
        SWI      +370
// 1108               }
// 1109           }
// 1110         if ((entime)&&(playing==1)) {GBS_StartTimerProc(&TimeTimer,RedrawTime,timepp);}
??timepp_1:
        LDR      R0,??DataTable390  ;; entime
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??timepp_3
        LDR      R0,??DataTable374  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??timepp_3
        LDR      R2,??DataTable391  ;; timepp
        LDR      R0,??DataTable392  ;; RedrawTime
        LDR      R1,[R0, #+0]
        LDR      R0,??DataTable393  ;; TimeTimer
        SWI      +77
        B        ??timepp_3
// 1111       }
// 1112     else
// 1113       {
// 1114         timesec=0;
??timepp_0:
        LDR      R0,??DataTable249  ;; timesec
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1115         timemin=0;
        LDR      R0,??DataTable250  ;; timemin
        STR      R1,[R0, #+0]
// 1116       }
// 1117     if (NeedToStop==1){Play_PauseResume();NeedToStop=0;}
??timepp_3:
        LDR      R0,??DataTable252  ;; NeedToStop
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??timepp_4
        BL       Play_PauseResume
        LDR      R0,??DataTable252  ;; NeedToStop
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1118     timehms[2]=ktime.sec;
??timepp_4:
        LDR      R0,??DataTable287  ;; timehms + 8
        LDRB     R1,[SP, #+2]
        STR      R1,[R0, #+0]
// 1119 }
        ADD      SP,SP,#+16       ;; stack cleaning
        CFI CFA R13+4
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock49

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable249:
        DC32     timesec

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable250:
        DC32     timemin

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable252:
        DC32     NeedToStop

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock50 Using cfiCommon0
        CFI NoFunction
        THUMB
??findtegs??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock50
        REQUIRE findtegs
// 1120 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock51 Using cfiCommon1
        CFI Function findtegs
        ARM
// 1121 void findtegs()
// 1122 {
findtegs:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        SUB      SP,SP,#+172
        CFI CFA R13+184
// 1123   int f;
// 1124   char file[128];
// 1125   unsigned int err;
// 1126   sprintf(name,"%s%s",spysok[0][cp],spysok[1][cp]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable330  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable279  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??DataTable330  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable279  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable386  ;; `?<Constant "%s%s">`
        LDR      R0,??DataTable338  ;; name
        SWI      +22
// 1127   FSTATS stat; 
// 1128   f=fopen(name, A_ReadOnly+A_BIN, P_READ, &err); 
        MOV      R3,SP
        MOV      R2,#+128
        MOV      R1,#+32768
        LDR      R0,??DataTable338  ;; name
        SWI      +10
        MOV      R4,R0
// 1129   GetFileStats(name, &stat, &err); 
        MOV      R2,SP
        ADD      R1,SP,#+132
        LDR      R0,??DataTable338  ;; name
        SWI      +132
// 1130   lseek(f,(stat.size-128), 0, &err, &err); 
        MOV      R0,SP
        PUSH     {R0}
        CFI CFA R13+188
        ADD      R3,SP,#+4
        MOV      R2,#+0
        LDR      R0,[SP, #+140]
        MVN      R1,#+127
        ADD      R1,R1,R0
        MOV      R0,R4
        SWI      +15
// 1131   fread(f, file, 128, &err);
        ADD      R3,SP,#+4
        MOV      R2,#+128
        ADD      R1,SP,#+8
        MOV      R0,R4
        SWI      +11
// 1132   fclose(f, &err);
        ADD      R1,SP,#+4
        MOV      R0,R4
        SWI      +13
// 1133 
// 1134   sprintf(calbum,pp);
        LDR      R1,??DataTable314  ;; pp
        LDR      R0,??DataTable296  ;; calbum
        SWI      +22
// 1135   sprintf(ctrack,pp);
        LDR      R1,??DataTable314  ;; pp
        LDR      R0,??DataTable298  ;; ctrack
        SWI      +22
// 1136   sprintf(cartist,pp);
        LDR      R1,??DataTable314  ;; pp
        LDR      R0,??DataTable297  ;; cartist
        SWI      +22
// 1137   if ((file[0]=='T')&&(file[1]=='A')&&(file[2]=='G'))
        LDRB     R0,[SP, #+8]
        CMP      R0,#+84
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+184
        LDRBEQ   R0,[SP, #+5]
        CMPEQ    R0,#+65
        LDRBEQ   R0,[SP, #+6]
        CMPEQ    R0,#+71
        BNE      ??findtegs_0
// 1138   {
// 1139   int i;
// 1140   for (i=3;(file[i]!=0)&&(i<33);i++)
        MOV      R4,#+3
        ADD      R5,SP,#+7
        B        ??findtegs_1
// 1141     {
// 1142       sprintf(ctrack,"%s%c",ctrack,file[i]);
??findtegs_2:
        LDRB     R3,[R5], #+1
        LDR      R2,??DataTable298  ;; ctrack
        LDR      R1,??DataTable312  ;; `?<Constant "%s%c">`
        LDR      R0,??DataTable298  ;; ctrack
        SWI      +22
// 1143     }
        ADD      R4,R4,#+1
??findtegs_1:
        LDRB     R0,[R5, #+0]
        CMP      R0,#+0
        BEQ      ??findtegs_3
        CMP      R4,#+33
        BLT      ??findtegs_2
// 1144   for (i=33;(file[i]!=0)&&(i<63);i++)
??findtegs_3:
        MOV      R4,#+33
        ADD      R5,SP,#+37
        B        ??findtegs_4
// 1145     {
// 1146       sprintf(cartist,"%s%c",cartist,file[i]);
??findtegs_5:
        LDRB     R3,[R5], #+1
        LDR      R2,??DataTable297  ;; cartist
        LDR      R1,??DataTable312  ;; `?<Constant "%s%c">`
        LDR      R0,??DataTable297  ;; cartist
        SWI      +22
// 1147     }
        ADD      R4,R4,#+1
??findtegs_4:
        LDRB     R0,[R5, #+0]
        CMP      R0,#+0
        BEQ      ??findtegs_6
        CMP      R4,#+63
        BLT      ??findtegs_5
// 1148   for (i=63;(file[i]!=0)&&(i<93);i++)
??findtegs_6:
        MOV      R4,#+63
        ADD      R5,SP,#+67
        B        ??findtegs_7
// 1149     {
// 1150       sprintf(calbum,"%s%c",calbum,file[i]);
??findtegs_8:
        LDRB     R3,[R5], #+1
        LDR      R2,??DataTable296  ;; calbum
        LDR      R1,??DataTable312  ;; `?<Constant "%s%c">`
        LDR      R0,??DataTable296  ;; calbum
        SWI      +22
// 1151     }
        ADD      R4,R4,#+1
??findtegs_7:
        LDRB     R0,[R5, #+0]
        CMP      R0,#+0
        BEQ      ??findtegs_0
        CMP      R4,#+93
        BLT      ??findtegs_8
// 1152   }
// 1153   if (strlen(ctrack)==0)
??findtegs_0:
        LDR      R0,??DataTable298  ;; ctrack
        SWI      +27
        CMP      R0,#+0
        BNE      ??findtegs_9
// 1154   {
// 1155     sprintf(ctrack,spysok[1][cp]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable330  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable279  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R1,R0,R1
        LDR      R0,??DataTable298  ;; ctrack
        SWI      +22
// 1156     if (ctrack[0]==0x1F){ctrack[0]=' ';}
        LDR      R0,??DataTable298  ;; ctrack
        LDRB     R0,[R0, #+0]
        CMP      R0,#+31
        LDREQ    R0,??DataTable298  ;; ctrack
        MOVEQ    R1,#+32
        STRBEQ   R1,[R0, #+0]
// 1157     ctrack[strlen(ctrack)-4]=0;
        LDR      R0,??DataTable298  ;; ctrack
        SWI      +27
        LDR      R1,??DataTable298  ;; ctrack
        ADD      R0,R0,R1
        MOV      R1,#+0
        STRB     R1,[R0, #-4]
// 1158   }
// 1159   
// 1160   /*f=fopen("0:\\1.txt", A_WriteOnly+A_Create, P_WRITE, &err); 
// 1161   fwrite(f, file, 128, &err);
// 1162   fclose(f, &err);*/
// 1163   
// 1164 }
??findtegs_9:
        ADD      SP,SP,#+172      ;; stack cleaning
        CFI CFA R13+12
        POP      {R4,R5,PC}       ;; return
        CFI EndBlock cfiBlock51

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable279:
        DC32     spysok

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock52 Using cfiCommon0
        CFI NoFunction
        THUMB
??Play??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock52
        REQUIRE Play
// 1165 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock53 Using cfiCommon1
        CFI Function Play
        ARM
// 1166 void Play(char *fname)
// 1167 {           DIR_ENTRY de;
Play:
        PUSH     {R4-R7,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R7 Frame(CFA, -8)
        CFI R6 Frame(CFA, -12)
        CFI R5 Frame(CFA, -16)
        CFI R4 Frame(CFA, -20)
        CFI CFA R13+20
        SUB      SP,SP,#+912
        CFI CFA R13+932
        MOV      R6,R0
// 1168             unsigned int err;
// 1169             char s[256];
// 1170             sprintf(s,fname);
        MOV      R1,R6
        ADD      R0,SP,#+488
        SWI      +22
// 1171             if(FindFirstFile(&de,s,&err))
        MOV      R2,SP
        ADD      R1,SP,#+488
        ADD      R0,SP,#+48
        SWI      +107
        CMP      R0,#+0
        BEQ      ??Play_0
// 1172 {
// 1173   if (!IsCalling())
        SWI      +110
        CMP      R0,#+0
        BNE      ??Play_1
// 1174   {
// 1175     FSTATS fstats;
// 1176     unsigned int err;
// 1177     if (GetFileStats(fname,&fstats,&err)!=-1)
        ADD      R2,SP,#+4
        ADD      R1,SP,#+872
        MOV      R0,R6
        SWI      +132
        CMN      R0,#+1
        BEQ      ??Play_1
// 1178     {
// 1179       PLAYFILE_OPT _sfo1;
// 1180       WSHDR* sndPath=AllocWS(128);
        MOV      R0,#+128
        SWI      +293
        MOV      R4,R0
// 1181       WSHDR* sndFName=AllocWS(128);
        MOV      R0,#+128
        SWI      +293
        MOV      R5,R0
// 1182       char s[128];
// 1183       const char *p=strrchr(fname,'\\')+1;
        MOV      R1,#+92
        MOV      R0,R6
        SWI      +279
        ADD      R7,R0,#+1
// 1184       str_2ws(sndFName,p,128);
        MOV      R2,#+128
        MOV      R1,R7
        MOV      R0,R5
        SWI      +364
// 1185       strncpy(s,fname,p-fname);
        SUB      R2,R7,R6
        MOV      R1,R6
        ADD      R0,SP,#+744
        SWI      +278
// 1186       s[p-fname]='\0';
        SUB      R0,R7,R6
        ADD      R1,SP,#+744
        MOV      R2,#+0
        STRB     R2,[R0, +R1]
// 1187       str_2ws(sndPath,s,128);
        MOV      R2,#+128
        MOV      R0,R4
        SWI      +364
// 1188       zeromem(&_sfo1,sizeof(PLAYFILE_OPT));
        MOV      R1,#+24
        ADD      R0,SP,#+16
        SWI      +285
// 1189       _sfo1.repeat_num=1;
        MOV      R1,#+1
        STRH     R1,[SP, #+16]
// 1190       _sfo1.time_between_play=0;
        MOV      R1,#+0
        STR      R1,[SP, #+20]
// 1191       _sfo1.play_first=0;
        STR      R1,[SP, #+24]
// 1192       _sfo1.volume=1;
        MOV      R1,#+1
        STR      R1,[SP, #+28]
// 1193 #ifdef X75
// 1194     _sfo1.unk4=0x80000000;
// 1195     _sfo1.unk5=1;
// 1196     PLAY_ID=PlayFile(0xC, sndPath, sndFName, 0, MMI_CEPID, MSG_PLAYFILE_REPORT, &_sfo1);
// 1197 #else
// 1198     _sfo1.unk5=1;
        STR      R1,[SP, #+32]
// 1199     PLAY_ID=PlayFile(0xC, sndPath, sndFName, MMI_CEPID, MSG_PLAYFILE_REPORT, &_sfo1);
        ADD      R0,SP,#+16
        PUSH     {R0}
        CFI CFA R13+936
        MOV      R0,#+103
        ORR      R0,R0,#0x100
        PUSH     {R0}
        CFI CFA R13+940
        MOV      R3,#+9
        ORR      R3,R3,#0x4200
        MOV      R2,R5
        MOV      R1,R4
        MOV      R0,#+12
        SWI      +74
        LDR      R1,??DataTable412  ;; PLAY_ID
        STR      R0,[R1, #+0]
// 1200 #endif      
// 1201     CanPlayNext=0;
        LDR      R0,??DataTable361  ;; CanPlayNext
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1202       FreeWS(sndPath);
        MOV      R0,R4
        SWI      +297
// 1203       FreeWS(sndFName);
        MOV      R0,R5
        SWI      +297
// 1204       TTime ktime;
// 1205       TDate date;
// 1206       GetDateTime(&date,&ktime);
        ADD      R1,SP,#+16
        ADD      R0,SP,#+48
        SWI      +180
// 1207       timehms[2]=ktime.sec;
        LDR      R0,??DataTable287  ;; timehms + 8
        LDRB     R1,[SP, #+18]
        STR      R1,[R0, #+0]
// 1208       if (ringoff==0){PlayMelody_ChangeVolume(PLAY_ID,CurentVolume);}
        LDR      R0,??DataTable408  ;; ringoff
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        ADD      SP,SP,#+8        ;; stack cleaning
        CFI CFA R13+932
        BNE      ??Play_2
        LDR      R0,??DataTable411  ;; CurentVolume
        LDR      R1,[R0, #+0]
        LDR      R0,??DataTable412  ;; PLAY_ID
        LDR      R0,[R0, #+0]
        SWI      +549
// 1209       findtegs();
??Play_2:
        BL       findtegs
// 1210       if ((timelength[cp]==-1)||(timelength[cp]==0))
        LDR      R0,??DataTable330  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable295  ;; timelength
        LDR      R0,[R1, +R0, LSL #+2]
        CMN      R0,#+1
        BEQ      ??Play_3
        LDR      R0,??DataTable330  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R0,[R1, +R0, LSL #+2]
        CMP      R0,#+0
        BNE      ??Play_4
// 1211         {
// 1212           timelength[cp]=findmp3length(s);
??Play_3:
        ADD      R0,SP,#+744
        BL       findmp3length
        LDR      R1,??DataTable330  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable295  ;; timelength
        STR      R0,[R2, +R1, LSL #+2]
// 1213         }
// 1214         else
// 1215         {
// 1216           timelength[cp]=timelength[cp];
// 1217         }
// 1218       sprintf(NameOfCurentTrack,"%s - %s - %s",ctrack,cartist,calbum);
??Play_4:
        LDR      R0,??DataTable296  ;; calbum
        PUSH     {R0}
        CFI CFA R13+936
        LDR      R3,??DataTable297  ;; cartist
        LDR      R2,??DataTable298  ;; ctrack
        LDR      R1,??Play_5      ;; `?<Constant "%s - %s - %s">`
        LDR      R0,??DataTable299  ;; NameOfCurentTrack
        SWI      +22
// 1219       UpdateCSMname();
        BL       UpdateCSMname
// 1220       if ((IsGuiOnTop(MAINGUI_ID)==1)&&(WhatToView==0)){REDRAW();}
        LDR      R0,??DataTable300  ;; MAINGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +309
        CMP      R0,#+1
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+932
        BNE      ??Play_1
        LDR      R0,??DataTable301  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??Play_1
        SWI      +370
        B        ??Play_1
// 1221     }
// 1222   }
// 1223 }
// 1224        else 
// 1225        {
// 1226          PlayNext();
??Play_0:
        BL       PlayNext
// 1227        }
// 1228    FindClose(&de,&err);
??Play_1:
        MOV      R1,SP
        ADD      R0,SP,#+48
        SWI      +109
// 1229 }
        ADD      SP,SP,#+912      ;; stack cleaning
        CFI CFA R13+20
        POP      {R4-R7,PC}       ;; return
        DATA
??Play_5:
        DC32     `?<Constant "%s - %s - %s">`
        CFI EndBlock cfiBlock53

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable287:
        DC32     timehms + 8

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable295:
        DC32     timelength

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable296:
        DC32     calbum

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable297:
        DC32     cartist

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable298:
        DC32     ctrack

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable299:
        DC32     NameOfCurentTrack

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable300:
        DC32     MAINGUI_ID

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable301:
        DC32     WhatToView

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock54 Using cfiCommon0
        CFI NoFunction
        THUMB
??LoadPlaylist??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock54
        REQUIRE LoadPlaylist
// 1230 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock55 Using cfiCommon1
        CFI Function LoadPlaylist
        ARM
// 1231 void LoadPlaylist(char *playy)
// 1232 {
LoadPlaylist:
        PUSH     {R4-R7,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R7 Frame(CFA, -8)
        CFI R6 Frame(CFA, -12)
        CFI R5 Frame(CFA, -16)
        CFI R4 Frame(CFA, -20)
        CFI CFA R13+20
        SUB      SP,SP,#+96
        CFI CFA R13+116
        SUB      SP,SP,#+20480
        CFI CFA R13+20596
// 1233   int f,count=0;
// 1234   char list[20000];
// 1235   char t[1];
// 1236   unsigned int err;
// 1237   char ddd[128];
// 1238   sprintf(ddd,playy);
        MOV      R1,R0
        ADD      R0,SP,#+4064
        ADD      R0,R0,#+16384
        SWI      +22
// 1239   
// 1240   f=fopen(ddd, A_ReadOnly, P_READ, & err );
        ADD      R3,SP,#+4
        MOV      R2,#+128
        MOV      R1,#+0
        ADD      R0,SP,#+4064
        ADD      R0,R0,#+16384
        SWI      +10
        MOV      R4,R0
// 1241   DIR_ENTRY de;
// 1242   FindFirstFile(&de,ddd,&err);
        ADD      R2,SP,#+4
        ADD      R1,SP,#+4064
        ADD      R1,R1,#+16384
        ADD      R0,SP,#+552
        ADD      R0,R0,#+19456
        SWI      +107
// 1243   fread(f,list,de.file_size,&err);
        ADD      R3,SP,#+4
        ADD      R2,SP,#+19968
        LDR      R2,[R2, #+60]
        ADD      R1,SP,#+8
        MOV      R0,R4
        SWI      +11
// 1244   fclose(f,&err);
        ADD      R1,SP,#+4
        MOV      R0,R4
        SWI      +13
// 1245   FindClose(&de,&err);
        ADD      R1,SP,#+4
        ADD      R0,SP,#+552
        ADD      R0,R0,#+19456
        SWI      +109
// 1246   NumberOfTracks=list[0];
        LDR      R0,??DataTable376  ;; NumberOfTracks
        LDRB     R1,[SP, #+8]
        STR      R1,[R0, #+0]
// 1247   random=list[1];
        LDR      R0,??DataTable303  ;; random
        LDRB     R1,[SP, #+9]
        STR      R1,[R0, #+0]
// 1248   cp=list[2];
        LDR      R0,??DataTable330  ;; cp
        LDRB     R1,[SP, #+10]
        STR      R1,[R0, #+0]
// 1249   t[0]=list[5];
        LDRB     R1,[SP, #+13]
        STRB     R1,[SP, #+0]
// 1250   count=5;
        MOV      R7,#+5
// 1251   
// 1252   for (int i=0;i<NumberOfTracks;i++)//Вот так грузится ipl
        MOV      R4,#+0
        LDR      R5,??DataTable385  ;; spysok
        LDR      R6,??DataTable310  ;; spysok + 32640
        B        ??LoadPlaylist_0
// 1253   {
// 1254   while (t[0]!='*')
// 1255   {
// 1256     sprintf(spysok[0][i],"%s%c",spysok[0][i],t[0]);
// 1257     count++;
// 1258     t[0]=list[count];
// 1259   }
// 1260   count++;t[0]=list[count];
// 1261   while (t[0]!=0x0D)
// 1262   {
// 1263     sprintf(spysok[1][i],"%s%c",spysok[1][i],t[0]);
??LoadPlaylist_1:
        MOV      R3,R0
        MOV      R2,R6
        LDR      R1,??DataTable312  ;; `?<Constant "%s%c">`
        MOV      R0,R6
        SWI      +22
// 1264     count++;
??LoadPlaylist_2:
        ADD      R7,R7,#+1
// 1265     t[0]=list[count];
        ADD      R1,SP,#+8
        LDRB     R1,[R7, +R1]
        STRB     R1,[SP, #+0]
// 1266   }
        LDRB     R0,[SP, #+0]
        CMP      R0,#+13
        BNE      ??LoadPlaylist_1
// 1267   count++;
// 1268   count++;
        ADD      R7,R7,#+2
// 1269   t[0]=list[count];
        ADD      R1,SP,#+8
        LDRB     R1,[R7, +R1]
        STRB     R1,[SP, #+0]
        ADD      R4,R4,#+1
        ADD      R6,R6,#+128
        ADD      R5,R5,#+128
??LoadPlaylist_0:
        LDR      R0,??DataTable376  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R4,R0
        BLT      ??LoadPlaylist_3
// 1270   }
// 1271 }
        ADD      SP,SP,#+96       ;; stack cleaning
        CFI CFA R13+20500
        ADD      SP,SP,#+20480
        CFI CFA R13+20
        POP      {R4-R7,PC}       ;; return
        CFI CFA R13+20596
??LoadPlaylist_4:
        MOV      R3,R0
        MOV      R2,R5
        LDR      R1,??DataTable312  ;; `?<Constant "%s%c">`
        MOV      R0,R5
        SWI      +22
        ADD      R7,R7,#+1
        ADD      R1,SP,#+8
        LDRB     R1,[R7, +R1]
        STRB     R1,[SP, #+0]
??LoadPlaylist_3:
        LDRB     R0,[SP, #+0]
        CMP      R0,#+42
        BNE      ??LoadPlaylist_4
        B        ??LoadPlaylist_2
        CFI EndBlock cfiBlock55

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable303:
        DC32     random

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock56 Using cfiCommon0
        CFI NoFunction
        THUMB
??LoadM3uPlaylist??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock56
        REQUIRE LoadM3uPlaylist
// 1272 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock57 Using cfiCommon1
        CFI Function LoadM3uPlaylist
        ARM
// 1273 void LoadM3uPlaylist(char *playy)
// 1274 {
LoadM3uPlaylist:
        PUSH     {R4-R8,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R8 Frame(CFA, -8)
        CFI R7 Frame(CFA, -12)
        CFI R6 Frame(CFA, -16)
        CFI R5 Frame(CFA, -20)
        CFI R4 Frame(CFA, -24)
        CFI CFA R13+24
        SUB      SP,SP,#+624
        CFI CFA R13+648
        SUB      SP,SP,#+20480
        CFI CFA R13+21128
        MOV      R4,R0
// 1275   int f,count=0;
// 1276   char list[20000];
// 1277   char t[1];
// 1278   unsigned int err;
// 1279   char ddd[128];
// 1280   sprintf(ddd,playy);
        MOV      R1,R4
        ADD      R0,SP,#+496
        ADD      R0,R0,#+20480
        SWI      +22
// 1281   
// 1282   f=fopen(ddd, A_ReadOnly+A_MMCStream, P_READ, & err );
        MOV      R3,SP
        MOV      R2,#+128
        MOV      R1,#+32
        ADD      R0,SP,#+496
        ADD      R0,R0,#+20480
        SWI      +10
        MOV      R5,R0
// 1283   DIR_ENTRY de;
// 1284   FindFirstFile(&de,playy,&err);
        MOV      R2,SP
        MOV      R1,R4
        ADD      R0,SP,#+552
        ADD      R0,R0,#+19456
        SWI      +107
// 1285   fread(f,list,de.file_size,&err);
        MOV      R3,SP
        ADD      R2,SP,#+19968
        LDR      R2,[R2, #+60]
        ADD      R1,SP,#+8
        MOV      R0,R5
        SWI      +11
// 1286   fclose(f,&err);
        MOV      R1,SP
        MOV      R0,R5
        SWI      +13
// 1287   t[0]=list[9];
        LDRB     R1,[SP, #+17]
        STRB     R1,[SP, #+4]
// 1288   count=9;
        MOV      R4,#+9
// 1289   char temp[400]="";
        ADD      R0,SP,#+4064
        ADD      R0,R0,#+16384
        MOV      R1,#+0
        MOV      R2,#+400
??LoadM3uPlaylist_0:
        SUBS     R2,R2,#+4
        STR      R1,[R0, R2]
        BNE      ??LoadM3uPlaylist_0
// 1290 
// 1291   //А так м3у
// 1292   for (int i=0;(count<de.file_size);i++)
        MOV      R5,#+0
        LDR      R6,??DataTable310  ;; spysok + 32640
        LDR      R7,??DataTable385  ;; spysok
        B        ??LoadM3uPlaylist_1
// 1293   {
// 1294     sprintf(temp,pp);//Обнуляем
// 1295   while (t[0]!=0x0D)
// 1296   {
// 1297     sprintf(temp,"%s%c",temp,t[0]);
??LoadM3uPlaylist_2:
        MOV      R3,R0
        ADD      R2,SP,#+4064
        ADD      R2,R2,#+16384
        LDR      R1,??DataTable312  ;; `?<Constant "%s%c">`
        ADD      R0,SP,#+4064
        ADD      R0,R0,#+16384
        SWI      +22
// 1298     count++;
        ADD      R4,R4,#+1
// 1299     t[0]=list[count];
        LDRB     R1,[R8], #+1
        STRB     R1,[SP, #+4]
// 1300   }
??LoadM3uPlaylist_3:
        LDRB     R0,[SP, #+4]
        CMP      R0,#+13
        BNE      ??LoadM3uPlaylist_2
// 1301   count++;
// 1302   count++;
        ADD      R4,R4,#+2
// 1303   
// 1304   
// 1305       char s[128];
// 1306       const char *p=strrchr(temp,'\\')+1;
        MOV      R1,#+92
        ADD      R0,SP,#+4064
        ADD      R0,R0,#+16384
        SWI      +279
        ADD      R8,R0,#+1
// 1307       sprintf(spysok[1][i],p);
        MOV      R1,R8
        MOV      R0,R6
        SWI      +22
// 1308       strncpy(s,temp,p-temp);
        ADD      R0,SP,#+4064
        ADD      R0,R0,#+16384
        SUB      R2,R8,R0
        ADD      R1,SP,#+4064
        ADD      R1,R1,#+16384
        ADD      R0,SP,#+368
        ADD      R0,R0,#+20480
        SWI      +278
// 1309       s[p-temp]='\0';
        ADD      R0,SP,#+4064
        ADD      R0,R0,#+16384
        SUB      R0,R8,R0
        ADD      R1,SP,#+368
        ADD      R1,R1,#+20480
        MOV      R2,#+0
        STRB     R2,[R0, +R1]
// 1310       sprintf(spysok[0][i],s,128);
        MOV      R2,#+128
        ADD      R1,SP,#+368
        ADD      R1,R1,#+20480
        MOV      R0,R7
        SWI      +22
// 1311       
// 1312   t[0]=list[count];
        ADD      R1,SP,#+8
        LDRB     R1,[R4, +R1]
        STRB     R1,[SP, #+4]
// 1313   NumberOfTracks=i+1;
        LDR      R0,??DataTable376  ;; NumberOfTracks
        ADD      R1,R5,#+1
        STR      R1,[R0, #+0]
        ADD      R5,R5,#+1
        ADD      R7,R7,#+128
        ADD      R6,R6,#+128
??LoadM3uPlaylist_1:
        ADD      R0,SP,#+19968
        LDR      R0,[R0, #+60]
        CMP      R4,R0
        BCS      ??LoadM3uPlaylist_4
        LDR      R1,??DataTable314  ;; pp
        ADD      R0,SP,#+4064
        ADD      R0,R0,#+16384
        SWI      +22
        ADD      R0,SP,#+8
        ADD      R0,R4,R0
        ADD      R8,R0,#+1
        B        ??LoadM3uPlaylist_3
// 1314   }
// 1315   FindClose(&de,&err);
??LoadM3uPlaylist_4:
        MOV      R1,SP
        ADD      R0,SP,#+552
        ADD      R0,R0,#+19456
        SWI      +109
// 1316 }
        ADD      SP,SP,#+624      ;; stack cleaning
        CFI CFA R13+20504
        ADD      SP,SP,#+20480
        CFI CFA R13+24
        POP      {R4-R8,PC}       ;; return
        CFI EndBlock cfiBlock57

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable310:
        DC32     spysok + 32640

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable312:
        DC32     `?<Constant "%s%c">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable314:
        DC32     pp

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock58 Using cfiCommon0
        CFI NoFunction
        THUMB
??whattoplaynext??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock58
        REQUIRE whattoplaynext
// 1317 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock59 Using cfiCommon1
        CFI Function whattoplaynext
        ARM
// 1318 int whattoplaynext()
// 1319 {
whattoplaynext:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        SUB      SP,SP,#+16
        CFI CFA R13+24
// 1320   int neprograni=0;
        MOV      R4,#+0
// 1321   for (int i=0;i<NumberOfTracks;i++) {if (notplayed[i]==0){neprograni++;}}
        LDR      R0,??DataTable376  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BLT      ??whattoplaynext_0
        LDR      R0,??DataTable331  ;; notplayed
        LDR      R1,??DataTable376  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
??whattoplaynext_1:
        LDR      R2,[R0, #+0]
        CMP      R2,#+0
        ADDEQ    R4,R4,#+1
        ADD      R0,R0,#+4
        SUBS     R1,R1,#+1
        BNE      ??whattoplaynext_1
// 1322   if (neprograni>0)
        CMP      R4,#+1
        BLT      ??whattoplaynext_2
// 1323   {
// 1324     TTime time;
// 1325     TDate date;
// 1326     GetDateTime(&date,&time);
        MOV      R1,SP
        ADD      R0,SP,#+8
        SWI      +180
// 1327     int l=time.min*5+time.sec;//Типа случайно :)
// 1328     //while (neprograni<l){l=l-neprograni;}
// 1329     l=l%neprograni;
        LDRB     R0,[SP, #+1]
        ADD      R0,R0,R0, LSL #+2
        LDRB     R1,[SP, #+2]
        ADD      R0,R1,R0
        MOV      R1,R4
        _BLF     ??div32_a,??rA??div32_a
        MOV      R1,R0
// 1330     neprograni=0;
        MOV      R4,#+0
// 1331     for (int i=0;i<NumberOfTracks;i++)
        MOV      R0,#+0
        LDR      R2,??DataTable376  ;; NumberOfTracks
        LDR      R2,[R2, #+0]
        CMP      R2,#+1
        BLT      ??whattoplaynext_3
        LDR      R2,??DataTable331  ;; notplayed
// 1332     {
// 1333       if (notplayed[i]==0)
??whattoplaynext_4:
        LDR      R3,[R2, #+0]
        CMP      R3,#+0
// 1334       {
// 1335         neprograni++;
        ADDEQ    R4,R4,#+1
// 1336         if (l==neprograni)
        CMPEQ    R1,R4
        BNE      ??whattoplaynext_5
// 1337         {
// 1338           notplayed[i]=cp;
        LDR      R1,??DataTable331  ;; notplayed
        LDR      R2,??DataTable330  ;; cp
        LDR      R2,[R2, #+0]
        STR      R2,[R1, +R0, LSL #+2]
// 1339           if (notplayed[cp]==0) 
        LDR      R1,??DataTable330  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable331  ;; notplayed
        LDR      R1,[R2, +R1, LSL #+2]
        CMP      R1,#+0
        BNE      ??whattoplaynext_6
// 1340           {
// 1341             notplayed[cp]=10000;
        LDR      R1,??DataTable330  ;; cp
        LDR      R1,[R1, #+0]
        MOV      R3,#+16
        ORR      R3,R3,#0x2700
        STR      R3,[R2, +R1, LSL #+2]
// 1342           }
// 1343           return(i);
        B        ??whattoplaynext_7
// 1344         }
// 1345       }
// 1346     }
??whattoplaynext_5:
        ADD      R0,R0,#+1
        ADD      R2,R2,#+4
        LDR      R3,??DataTable376  ;; NumberOfTracks
        LDR      R3,[R3, #+0]
        CMP      R0,R3
        BLT      ??whattoplaynext_4
// 1347   }
// 1348   else 
// 1349   {
// 1350     for (int i=0;i<NumberOfTracks;i++){notplayed[i]=0;}
// 1351     return(whattoplaynext());
// 1352     //Все песни проиграны
// 1353   }
// 1354   return(255);
??whattoplaynext_3:
        MOV      R0,#+255
??whattoplaynext_7:
        ADD      SP,SP,#+16
        CFI CFA R13+8
        POP      {R4,PC}
        CFI CFA R13+24
??whattoplaynext_2:
        LDR      R0,??DataTable331  ;; notplayed
        LDR      R1,??DataTable376  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        MOV      R2,#+0
??whattoplaynext_8:
        STR      R2,[R0], #+4
        SUBS     R1,R1,#+1
        BNE      ??whattoplaynext_8
??whattoplaynext_0:
        BL       whattoplaynext
??whattoplaynext_6:
        ADD      SP,SP,#+16       ;; stack cleaning
        CFI CFA R13+8
        POP      {R4,PC}          ;; return
        CFI EndBlock cfiBlock59
// 1355 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock60 Using cfiCommon0
        CFI NoFunction
        THUMB
??whattoplayprev??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock60
        REQUIRE whattoplayprev
// 1356 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock61 Using cfiCommon1
        CFI Function whattoplayprev
        ARM
// 1357 int whattoplayprev()
// 1358 {
// 1359   if(notplayed[cp]!=10000)
whattoplayprev:
        LDR      R0,??DataTable330  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable331  ;; notplayed
        LDR      R0,[R1, +R0, LSL #+2]
        MOV      R1,#+16
        ORR      R1,R1,#0x2700
        CMP      R0,R1
        BEQ      ??whattoplayprev_0
// 1360   {
// 1361     return(notplayed[cp]);
        LDR      R0,??DataTable330  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable331  ;; notplayed
        LDR      R0,[R1, +R0, LSL #+2]
        BX       LR
// 1362   }
// 1363   else
// 1364   {
// 1365     return(whattoplaynext());
??whattoplayprev_0:
        B        whattoplaynext   ;; tailcall
        CFI EndBlock cfiBlock61
// 1366   }
// 1367 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable330:
        DC32     cp

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable331:
        DC32     notplayed

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock62 Using cfiCommon0
        CFI NoFunction
        THUMB
??r??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock62
        REQUIRE r
// 1368 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock63 Using cfiCommon1
        CFI Function r
        ARM
// 1369 void r()
// 1370 {
r:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 1371   REDRAW();
        SWI      +370
// 1372 }
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock63

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock64 Using cfiCommon0
        CFI NoFunction
        THUMB
??showvolume??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock64
        REQUIRE showvolume
// 1373 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock65 Using cfiCommon1
        CFI Function showvolume
        ARM
// 1374 void showvolume()
// 1375 {
showvolume:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 1376   sprintf(name,"%sskins\\%s\\VOL%i.png",playerfolder,ArrayOfSkins[curskin],CurentVolume);
        LDR      R0,??DataTable411  ;; CurentVolume
        LDR      R0,[R0, #+0]
        PUSH     {R0}
        CFI CFA R13+8
        LDR      R0,??DataTable473  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??DataTable334  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??DataTable468  ;; playerfolder
        LDR      R1,??DataTable336  ;; `?<Constant "%sskins\\\\%s\\\\VOL%i.png">`
        LDR      R0,??DataTable338  ;; name
        SWI      +22
// 1377   DrawImg(volumex,volumey,(int)name);
        LDR      R2,??DataTable338  ;; name
        LDR      R0,??DataTable339  ;; volumey
        LDR      R1,[R0, #+0]
        LDR      R0,??DataTable340  ;; volumex
        LDR      R0,[R0, #+0]
        SWI      +35
// 1378   //sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\plus.png");
// 1379   if ((IsGuiOnTop(MAINGUI_ID)==1)&&(WhatToView==0)&&(IsUnlocked()))
        LDR      R0,??DataTable395  ;; MAINGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +309
        CMP      R0,#+1
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+4
        BNE      ??showvolume_0
        LDR      R0,??DataTable413  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??showvolume_0
        SWI      +67
        CMP      R0,#+0
        BEQ      ??showvolume_0
// 1380   {
// 1381     REDRAW();
        SWI      +370
        POP      {PC}
// 1382   }
// 1383   else
// 1384   {
// 1385     GBS_StartTimerProc(&RedrawTimer,262,r);
??showvolume_0:
        LDR      R2,??showvolume_1  ;; r
        MOV      R1,#+6
        ORR      R1,R1,#0x100
        LDR      R0,??DataTable343  ;; RedrawTimer
        SWI      +77
// 1386   }
// 1387 }
        POP      {PC}             ;; return
        DATA
??showvolume_1:
        DC32     r
        CFI EndBlock cfiBlock65

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable334:
        DC32     ArrayOfSkins

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable336:
        DC32     `?<Constant "%sskins\\\\%s\\\\VOL%i.png">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable338:
        DC32     name

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable339:
        DC32     volumey

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable340:
        DC32     volumex

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable343:
        DC32     RedrawTimer

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock66 Using cfiCommon0
        CFI NoFunction
        THUMB
??PlayNext??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock66
        REQUIRE PlayNext
// 1388 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock67 Using cfiCommon1
        CFI Function PlayNext
        ARM
// 1389 void PlayNext()
// 1390 {
PlayNext:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
        SUB      SP,SP,#+256
        CFI CFA R13+260
// 1391   if ((CanPlayNext)&&(NumberOfTracks!=0))
        LDR      R0,??DataTable361  ;; CanPlayNext
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??PlayNext_0
        LDR      R0,??DataTable376  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??PlayNext_0
// 1392   {
// 1393   if (random==0)
        LDR      R0,??DataTable461  ;; random
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??PlayNext_1
// 1394      {
// 1395        if (cp>NumberOfTracks-2)
        LDR      R0,??DataTable376  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        SUB      R0,R0,#+2
        LDR      R1,??DataTable462  ;; cp
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        LDR      R0,??DataTable462  ;; cp
        BGE      ??PlayNext_2
// 1396         {
// 1397           cp=0;
        MOV      R1,#+0
??PlayNext_3:
        STR      R1,[R0, #+0]
        B        ??PlayNext_4
// 1398         }
// 1399        else 
// 1400          {
// 1401            cp++;
??PlayNext_2:
        LDR      R1,??DataTable462  ;; cp
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        B        ??PlayNext_3
// 1402          }
// 1403      }
// 1404   else 
// 1405     {
// 1406       cp=whattoplaynext();
??PlayNext_1:
        BL       whattoplaynext
        LDR      R1,??DataTable462  ;; cp
        STR      R0,[R1, #+0]
// 1407     }
// 1408   char s[256];
// 1409   sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
??PlayNext_4:
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable462  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable385  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??DataTable462  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable385  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable386  ;; `?<Constant "%s%s">`
        MOV      R0,SP
        SWI      +22
// 1410   playing=1;
        LDR      R0,??DataTable374  ;; playing
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 1411   JaPerekliuchyvPisniu=1;
        LDR      R0,??DataTable375  ;; JaPerekliuchyvPisniu
        STR      R1,[R0, #+0]
// 1412   Play(s);
        MOV      R0,SP
        BL       Play
        ADD      SP,SP,#+256
        CFI CFA R13+4
        POP      {PC}
        CFI CFA R13+260
// 1413   }
// 1414   else
// 1415   {
// 1416     if (NumberOfTracks!=0)
??PlayNext_0:
        LDR      R0,??DataTable376  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??PlayNext_5
// 1417     {
// 1418       GBS_StartTimerProc(&PlayNextTimer,30,PlayNext);
        LDR      R2,??PlayNext_6  ;; PlayNext
        MOV      R1,#+30
        LDR      R0,??DataTable377  ;; PlayNextTimer
        SWI      +77
// 1419     }
// 1420   }
// 1421 }
??PlayNext_5:
        ADD      SP,SP,#+256      ;; stack cleaning
        CFI CFA R13+4
        POP      {PC}             ;; return
        DATA
??PlayNext_6:
        DC32     PlayNext
        CFI EndBlock cfiBlock67

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock68 Using cfiCommon0
        CFI NoFunction
        THUMB
??PlayPrevious??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock68
        REQUIRE PlayPrevious
// 1422 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock69 Using cfiCommon1
        CFI Function PlayPrevious
        ARM
// 1423 void PlayPrevious()
// 1424 {
PlayPrevious:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
        SUB      SP,SP,#+256
        CFI CFA R13+260
// 1425   if ((CanPlayNext)&&(NumberOfTracks!=0))
        LDR      R0,??DataTable361  ;; CanPlayNext
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??PlayPrevious_0
        LDR      R0,??DataTable376  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??PlayPrevious_0
// 1426   {
// 1427   if (random==0)
        LDR      R0,??DataTable461  ;; random
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??PlayPrevious_1
// 1428    {
// 1429      if (cp<1) 
        LDR      R0,??DataTable462  ;; cp
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        LDR      R0,??DataTable462  ;; cp
        LDRGE    R1,??DataTable462  ;; cp
// 1430        {
// 1431          cp=NumberOfTracks-1;
        LDRLT    R1,??DataTable376  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
        B        ??PlayPrevious_2
// 1432        }
// 1433      else 
// 1434        {
// 1435          cp--;
// 1436        }
// 1437    }
// 1438   else
// 1439     {
// 1440       cp=whattoplayprev();
??PlayPrevious_1:
        BL       whattoplayprev
        LDR      R1,??DataTable462  ;; cp
        STR      R0,[R1, #+0]
// 1441     }
// 1442     char s[256];
// 1443     sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
??PlayPrevious_2:
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable462  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable385  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??DataTable462  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable385  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable386  ;; `?<Constant "%s%s">`
        MOV      R0,SP
        SWI      +22
// 1444     playing=1;
        LDR      R0,??DataTable374  ;; playing
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 1445     JaPerekliuchyvPisniu=1;
        LDR      R0,??DataTable375  ;; JaPerekliuchyvPisniu
        STR      R1,[R0, #+0]
// 1446     Play(s);
        MOV      R0,SP
        BL       Play
        ADD      SP,SP,#+256
        CFI CFA R13+4
        POP      {PC}
        CFI CFA R13+260
// 1447   }
// 1448   else
// 1449   {
// 1450    if (NumberOfTracks!=0){GBS_StartTimerProc(&PlayNextTimer,30,PlayPrevious);}
??PlayPrevious_0:
        LDR      R0,??DataTable376  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??PlayPrevious_3
        LDR      R2,??PlayPrevious_4  ;; PlayPrevious
        MOV      R1,#+30
        LDR      R0,??DataTable377  ;; PlayNextTimer
        SWI      +77
// 1451   }
// 1452 }
??PlayPrevious_3:
        ADD      SP,SP,#+256      ;; stack cleaning
        CFI CFA R13+4
        POP      {PC}             ;; return
        DATA
??PlayPrevious_4:
        DC32     PlayPrevious
        CFI EndBlock cfiBlock69

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable361:
        DC32     CanPlayNext

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable374:
        DC32     playing

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable375:
        DC32     JaPerekliuchyvPisniu

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable376:
        DC32     NumberOfTracks

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable377:
        DC32     PlayNextTimer

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock70 Using cfiCommon0
        CFI NoFunction
        THUMB
??Play_PauseResume??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock70
        REQUIRE Play_PauseResume
// 1453 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock71 Using cfiCommon1
        CFI Function Play_PauseResume
        ARM
// 1454 void Play_PauseResume()
// 1455 {
Play_PauseResume:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
        SUB      SP,SP,#+256
        CFI CFA R13+260
// 1456   if (playing==1)
        LDR      R0,??DataTable479  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??Play_PauseResume_0
// 1457     {
// 1458       PlayMelody_PausePlayback(PLAY_ID);
        LDR      R0,??DataTable412  ;; PLAY_ID
        LDR      R0,[R0, #+0]
        SWI      +551
// 1459       playing=2;
        LDR      R0,??DataTable479  ;; playing
        MOV      R1,#+2
        B        ??Play_PauseResume_1
// 1460     }
// 1461   else
// 1462     {
// 1463       if (playing==0)
??Play_PauseResume_0:
        LDR      R0,??DataTable479  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??Play_PauseResume_2
// 1464         {
// 1465           char s[256];
// 1466           sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable462  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable385  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??DataTable462  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable385  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable386  ;; `?<Constant "%s%s">`
        MOV      R0,SP
        SWI      +22
// 1467           playing=1;
        LDR      R0,??DataTable479  ;; playing
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 1468           Play(s);
        MOV      R0,SP
        BL       Play
        B        ??Play_PauseResume_3
// 1469         }
// 1470       else
// 1471         {
// 1472           if (playing==2)
??Play_PauseResume_2:
        LDR      R0,??DataTable479  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+2
        BNE      ??Play_PauseResume_3
// 1473             {
// 1474               PlayMelody_ResumePlayBack(PLAY_ID);
        LDR      R0,??DataTable412  ;; PLAY_ID
        LDR      R0,[R0, #+0]
        SWI      +552
// 1475               if (entime==1){GBS_StartTimerProc(&TimeTimer,RedrawTime,timepp);}
        LDR      R0,??DataTable390  ;; entime
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??Play_PauseResume_4
        LDR      R2,??DataTable391  ;; timepp
        LDR      R0,??DataTable392  ;; RedrawTime
        LDR      R1,[R0, #+0]
        LDR      R0,??DataTable393  ;; TimeTimer
        SWI      +77
// 1476               playing=1;
??Play_PauseResume_4:
        LDR      R0,??DataTable479  ;; playing
        MOV      R1,#+1
??Play_PauseResume_1:
        STR      R1,[R0, #+0]
// 1477             }
// 1478         }
// 1479     }
// 1480   if ((IsGuiOnTop(MAINGUI_ID)==1)&&(WhatToView==0)){REDRAW();}
??Play_PauseResume_3:
        LDR      R0,??DataTable395  ;; MAINGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +309
        CMP      R0,#+1
        BNE      ??Play_PauseResume_5
        LDR      R0,??DataTable413  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??Play_PauseResume_5
        SWI      +370
// 1481 }
??Play_PauseResume_5:
        ADD      SP,SP,#+256      ;; stack cleaning
        CFI CFA R13+4
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock71

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable385:
        DC32     spysok

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable386:
        DC32     `?<Constant "%s%s">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable390:
        DC32     entime

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable391:
        DC32     timepp

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable392:
        DC32     RedrawTime

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable393:
        DC32     TimeTimer

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable395:
        DC32     MAINGUI_ID

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock72 Using cfiCommon0
        CFI NoFunction
        THUMB
??VolumeDown??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock72
        REQUIRE VolumeDown
// 1482 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock73 Using cfiCommon1
        CFI Function VolumeDown
        ARM
// 1483 void VolumeDown()
// 1484 {
VolumeDown:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 1485   ringoff=0;
        LDR      R0,??DataTable408  ;; ringoff
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1486   if (CurentVolume!=0)
        LDR      R0,??DataTable411  ;; CurentVolume
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??VolumeDown_0
// 1487     {
// 1488       CurentVolume--;
        LDR      R0,??DataTable411  ;; CurentVolume
        LDR      R1,??DataTable411  ;; CurentVolume
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
// 1489       PlayMelody_ChangeVolume(PLAY_ID,CurentVolume);
        LDR      R0,??DataTable412  ;; PLAY_ID
        LDR      R0,[R0, #+0]
        SWI      +549
// 1490     }
// 1491   showvolume();
??VolumeDown_0:
        POP      {LR}             ;; Pop
        CFI ?RET R14
        CFI CFA R13+0
        B        showvolume       ;; tailcall
        CFI EndBlock cfiBlock73
// 1492 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock74 Using cfiCommon0
        CFI NoFunction
        THUMB
??VolumeMute??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock74
        REQUIRE VolumeMute
// 1493 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock75 Using cfiCommon1
        CFI Function VolumeMute
        ARM
// 1494 void VolumeMute()
// 1495 {
VolumeMute:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 1496   if (ringoff==0)
        LDR      R0,??DataTable408  ;; ringoff
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??VolumeMute_0
// 1497     {
// 1498       PlayMelody_ChangeVolume(PLAY_ID,0);
        MOV      R1,#+0
        LDR      R0,??DataTable412  ;; PLAY_ID
        LDR      R0,[R0, #+0]
        SWI      +549
// 1499       ringoff=1;
        LDR      R0,??DataTable408  ;; ringoff
        MOV      R1,#+1
        STR      R1,[R0, #+0]
        SWI      +370
        POP      {PC}
// 1500       REDRAW();
// 1501     }
// 1502   else
// 1503     {
// 1504       PlayMelody_ChangeVolume(PLAY_ID,CurentVolume);
??VolumeMute_0:
        LDR      R0,??DataTable411  ;; CurentVolume
        LDR      R1,[R0, #+0]
        LDR      R0,??DataTable412  ;; PLAY_ID
        LDR      R0,[R0, #+0]
        SWI      +549
// 1505       ringoff=0;
        LDR      R0,??DataTable408  ;; ringoff
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1506       REDRAW();
        SWI      +370
// 1507     }
// 1508 }
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock75

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock76 Using cfiCommon0
        CFI NoFunction
        THUMB
??VolumeUp??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock76
        REQUIRE VolumeUp
// 1509 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock77 Using cfiCommon1
        CFI Function VolumeUp
        ARM
// 1510 void VolumeUp()
// 1511 {
VolumeUp:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 1512   ringoff=0;
        LDR      R0,??DataTable408  ;; ringoff
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1513   if(CurentVolume!=MAXVOLUME)
        LDR      R0,??DataTable411  ;; CurentVolume
        LDR      R0,[R0, #+0]
        CMP      R0,#+4
        BEQ      ??VolumeUp_0
// 1514     {
// 1515       CurentVolume++;
        LDR      R0,??DataTable411  ;; CurentVolume
        LDR      R1,??DataTable411  ;; CurentVolume
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 1516       PlayMelody_ChangeVolume(PLAY_ID,CurentVolume);
        LDR      R0,??DataTable412  ;; PLAY_ID
        LDR      R0,[R0, #+0]
        SWI      +549
// 1517     }
// 1518   showvolume();
??VolumeUp_0:
        POP      {LR}             ;; Pop
        CFI ?RET R14
        CFI CFA R13+0
        B        showvolume       ;; tailcall
        CFI EndBlock cfiBlock77
// 1519 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable408:
        DC32     ringoff

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable411:
        DC32     CurentVolume

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable412:
        DC32     PLAY_ID

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock78 Using cfiCommon0
        CFI NoFunction
        THUMB
??onCreate2??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock78
        REQUIRE onCreate2
// 1520 ////////////////////////////////////////////////////
// 1521 /*void OnRedraw2(MAIN_GUI *data) // OnRedraw
// 1522 {
// 1523   sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\background.png");
// 1524   DrawImg(0,0,(int)name);
// 1525 }*/
// 1526 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock79 Using cfiCommon1
        CFI Function onCreate2
        ARM
// 1527 void onCreate2(MAIN_GUI *data, void *(*malloc_adr)(int)) //Create
// 1528 {
// 1529   data->gui.state=1;
onCreate2:
        MOV      R1,#+1
        STRB     R1,[R0, #+12]
// 1530 }
        BX       LR               ;; return
        CFI EndBlock cfiBlock79

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock80 Using cfiCommon0
        CFI NoFunction
        THUMB
??onClose2??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock80
        REQUIRE onClose2
// 1531 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock81 Using cfiCommon1
        CFI Function onClose2
        ARM
// 1532 void onClose2(MAIN_GUI *data, void (*mfree_adr)(void *)) //Close
// 1533 {
// 1534   data->gui.state=0;
onClose2:
        MOV      R1,#+0
        STRB     R1,[R0, #+12]
// 1535 }
        BX       LR               ;; return
        CFI EndBlock cfiBlock81

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock82 Using cfiCommon0
        CFI NoFunction
        THUMB
??onFocus2??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock82
        REQUIRE onFocus2
// 1536 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock83 Using cfiCommon1
        CFI Function onFocus2
        ARM
// 1537 void onFocus2(MAIN_GUI *data, void *(*malloc_adr)(int), void (*mfree_adr)(void *))//Focus
// 1538 {
onFocus2:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 1539   data->gui.state=2;
        MOV      R1,#+2
        STRB     R1,[R0, #+12]
// 1540   WhatToView=0;
        LDR      R0,??DataTable413  ;; WhatToView
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1541   DisableIDLETMR();
        SWI      +383
// 1542 }
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock83

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable413:
        DC32     WhatToView

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock84 Using cfiCommon0
        CFI NoFunction
        THUMB
??onUnfocus2??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock84
        REQUIRE onUnfocus2
// 1543 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock85 Using cfiCommon1
        CFI Function onUnfocus2
        ARM
// 1544 void onUnfocus2(MAIN_GUI *data, void (*mfree_adr)(void *)) //Unfocus
// 1545 {
// 1546   if (data->gui.state!=2) return;
onUnfocus2:
        LDRB     R1,[R0, #+12]
        CMP      R1,#+2
// 1547   data->gui.state=1;
        MOVEQ    R1,#+1
        STRBEQ   R1,[R0, #+12]
// 1548 }
        BX       LR               ;; return
        CFI EndBlock cfiBlock85

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock86 Using cfiCommon0
        CFI NoFunction
        THUMB
??CloseGUI??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock86
        REQUIRE CloseGUI
// 1549 

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
// 1550 int PLAYERGUI_ID;
PLAYERGUI_ID:
        DS8 4

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock87 Using cfiCommon1
        CFI Function CloseGUI
        ARM
// 1551 void CloseGUI()
// 1552 {
CloseGUI:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 1553   GeneralFunc_flag1 (PLAYERGUI_ID,1);
        MOV      R1,#+1
        LDR      R0,??DataTable430  ;; PLAYERGUI_ID
        LDR      R0,[R0, #+0]
        SWI      +317
// 1554 }
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock87

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock88 Using cfiCommon0
        CFI NoFunction
        THUMB
??MenuKeys??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock88
        REQUIRE MenuKeys
// 1555 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock89 Using cfiCommon1
        CFI Function MenuKeys
        ARM
// 1556 int MenuKeys(MAIN_GUI *data, GUI_MSG *msg) //OnKey
// 1557 {
MenuKeys:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 1558   if ((msg->gbsmsg->msg==KEY_DOWN))
        LDR      R0,[R1, #+4]
        LDRSH    R0,[R0, #+2]
        MOV      R2,#+147
        ORR      R2,R2,#0x100
        CMP      R0,R2
        BNE      ??MenuKeys_1
// 1559   {
// 1560     switch(msg->gbsmsg->submess)
        LDR      R0,[R1, #+4]
        LDR      R0,[R0, #+4]
        SUB      R0,R0,#+12
        CMP      R0,#+45
        BHI      ??MenuKeys_2
        ADR      R1,??MenuKeys_0
        LDRB     R1,[R1, R0]
        ADD      PC,PC,R1, LSL #+2
        DATA
??MenuKeys_0:
        DC8      +39,+40,+40,+40
        DC8      +40,+40,+40,+40
        DC8      +40,+40,+40,+40
        DC8      +40,+40,+40,+40
        DC8      +40,+40,+40,+40
        DC8      +40,+40,+40,+37
        DC8      +40,+40,+40,+40
        DC8      +40,+40,+35,+40
        DC8      +40,+40,+40,+40
        DC8      +33,+11,+15,+17
        DC8      +19,+21,+23,+25
        DC8      +29,+31,+0,+0
        ARM
// 1561     {
// 1562     case '1':{WhatToDo(Key1);}break;
??MenuKeys_3:
        LDR      R0,??DataTable415  ;; Key1
??MenuKeys_4:
        LDR      R0,[R0, #+0]
        BL       WhatToDo
        B        ??MenuKeys_2
// 1563     case '2':{WhatToDo(Key2);}break;
??MenuKeys_5:
        LDR      R0,??DataTable416  ;; Key2
        B        ??MenuKeys_4
// 1564     case '3':{WhatToDo(Key3);}break;
??MenuKeys_6:
        LDR      R0,??DataTable417  ;; Key3
??MenuKeys_7:
        B        ??MenuKeys_4
// 1565     case '4':{WhatToDo(Key4);}break;
??MenuKeys_8:
        LDR      R0,??DataTable418  ;; Key4
        B        ??MenuKeys_4
// 1566     case '5':{WhatToDo(Key5);}break;
??MenuKeys_9:
        LDR      R0,??DataTable419  ;; Key5
        B        ??MenuKeys_4
// 1567     case '6':{WhatToDo(Key6);}break;
??MenuKeys_10:
        LDR      R0,??DataTable420  ;; Key6
        B        ??MenuKeys_4
// 1568     case '7':{WhatToDo(Key7);}break;
??MenuKeys_11:
        LDR      R0,??DataTable421  ;; Key7
??MenuKeys_12:
        LDR      R0,[R0, #+0]
        BL       WhatToDo
        B        ??MenuKeys_2
// 1569     case '8':{WhatToDo(Key8);}break;
??MenuKeys_13:
        LDR      R0,??DataTable422  ;; Key8
        B        ??MenuKeys_4
// 1570     case '9':{WhatToDo(Key9);}break;
??MenuKeys_14:
        LDR      R0,??DataTable423  ;; Key9
        B        ??MenuKeys_4
// 1571     case '0':{WhatToDo(Key0);}break;
??MenuKeys_15:
        LDR      R0,??DataTable424  ;; Key0
        B        ??MenuKeys_4
// 1572     case '*':{WhatToDo(KeyZ);}break;
??MenuKeys_16:
        LDR      R0,??DataTable425  ;; KeyZ
        B        ??MenuKeys_12
// 1573     case '#':{WhatToDo(KeyR);}break;
??MenuKeys_17:
        LDR      R0,??DataTable426  ;; KeyR
        B        ??MenuKeys_4
// 1574     case RED_BUTTON:CloseGUI();break;
??MenuKeys_18:
        BL       CloseGUI
// 1575     }
// 1576     GBS_StartTimerProc(&PlayerMenu,500,CloseGUI);
??MenuKeys_2:
        LDR      R2,??DataTable431  ;; CloseGUI
        MOV      R1,#+500
        LDR      R0,??DataTable432  ;; PlayerMenu
        SWI      +77
// 1577     REDRAW();
        SWI      +370
// 1578   }
// 1579   return(0);
??MenuKeys_1:
        MOV      R0,#+0
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock89
// 1580 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable415:
        DC32     Key1

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable416:
        DC32     Key2

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable417:
        DC32     Key3

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable418:
        DC32     Key4

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable419:
        DC32     Key5

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable420:
        DC32     Key6

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable421:
        DC32     Key7

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable422:
        DC32     Key8

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable423:
        DC32     Key9

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable424:
        DC32     Key0

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable425:
        DC32     KeyZ

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable426:
        DC32     KeyR

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock90 Using cfiCommon0
        CFI NoFunction
        THUMB
??method??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock90
        REQUIRE method
// 1581 
// 1582 #ifdef NEWSGOLD
// 1583 void onDestroy(MAIN_GUI *data, void (*mfree_adr)(void *))
// 1584 {
// 1585   mfree_adr(data);
// 1586 }
// 1587 #else
// 1588 extern void kill_data(void *p, void (*func_p)(void *));
// 1589 #endif
// 1590 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock91 Using cfiCommon1
        CFI Function method
        ARM
// 1591 int method(void){return(0);}
method:
        MOV      R0,#+0
        BX       LR               ;; return
        CFI EndBlock cfiBlock91

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock92 Using cfiCommon0
        CFI NoFunction
        THUMB
??ShowPlayerMenu??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock92
        REQUIRE ShowPlayerMenu
// 1592 

        RSEG DATA_C:CONST:SORT:NOROOT(2)
// 1593 const void * const gui_methods2[11]={
gui_methods2:
        DATA
        DC32 OnRedraw, onCreate2, onClose2, onFocus2, onUnfocus2, MenuKeys, 0H
        DC32 kill_data, method, method, 0H
// 1594   (void *)OnRedraw,	//Redraw
// 1595   (void *)onCreate2,	//Create
// 1596   (void *)onClose2,	//Close
// 1597   (void *)onFocus2,	//Focus
// 1598   (void *)onUnfocus2,	//Unfocus
// 1599   (void *)MenuKeys,	//OnKey
// 1600   0,
// 1601   #ifdef NEWSGOLD
// 1602   (void *)onDestroy,	//Destroy
// 1603   #else
// 1604   (void *)kill_data,	//Destroy
// 1605   #endif
// 1606   (void *)method,
// 1607   (void *)method,
// 1608   0
// 1609 };
// 1610 

        RSEG DATA_C:CONST:SORT:NOROOT(2)
// 1611 const RECT Canvas={0,0,131,175};
Canvas:
        DATA
        DC16 0, 0, 131, 175
// 1612 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock93 Using cfiCommon1
        CFI Function ShowPlayerMenu
        ARM
// 1613 void ShowPlayerMenu()
// 1614 {
ShowPlayerMenu:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
// 1615   MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI));
        MOV      R0,#+60
        SWI      +20
        MOV      R4,R0
// 1616   zeromem(main_gui,sizeof(MAIN_GUI));
        MOV      R1,#+60
        SWI      +285
// 1617   main_gui->gui.canvas=(void *)(&Canvas);
        LDR      R0,??DataTable429  ;; Canvas
        STR      R0,[R4, #+0]
// 1618   main_gui->gui.flag30=2;
        MOV      R0,#+2
        STR      R0,[R4, #+44]
// 1619   main_gui->gui.methods=(void *)gui_methods2;
        LDR      R0,??ShowPlayerMenu_0  ;; gui_methods2
        STR      R0,[R4, #+4]
// 1620   main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr();
        SWI      +32789
        STR      R0,[R4, #+28]
// 1621   PLAYERGUI_ID=CreateGUI(main_gui);
        MOV      R0,R4
        SWI      +311
        LDR      R1,??DataTable430  ;; PLAYERGUI_ID
        STR      R0,[R1, #+0]
// 1622   GBS_StartTimerProc(&PlayerMenu,500,CloseGUI);
        LDR      R2,??DataTable431  ;; CloseGUI
        MOV      R1,#+500
        LDR      R0,??DataTable432  ;; PlayerMenu
        SWI      +77
// 1623 }
        POP      {R4,PC}          ;; return
        DATA
??ShowPlayerMenu_0:
        DC32     gui_methods2
        CFI EndBlock cfiBlock93

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable429:
        DC32     Canvas

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable430:
        DC32     PLAYERGUI_ID

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable431:
        DC32     CloseGUI

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable432:
        DC32     PlayerMenu

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock94 Using cfiCommon0
        CFI NoFunction
        THUMB
??my_keyhook??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock94
        REQUIRE my_keyhook
// 1624 
// 1625 ////////////////////////

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
// 1626 int press=0;//0-отпущена,1-нажата коротко,2-зажата
press:
        DS8 4
// 1627 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock95 Using cfiCommon1
        CFI Function my_keyhook
        ARM
// 1628 int my_keyhook(int submsg, int msg)
// 1629 {
my_keyhook:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        MOV      R4,R0
        MOV      R5,R1
// 1630   if ((submsg!=0x14 && submsg!=0x15 &&  submsg!=0x27)||(EnableHook==2)||((!IsUnlocked())&&(EnableHook==1))) return(0);//Хук на кнопку гарнитуры и боковые кнопки
        CMP      R4,#+20
        CMPNE    R4,#+21
        CMPNE    R4,#+39
        BNE      ??my_keyhook_0
        LDR      R0,??my_keyhook_1  ;; EnableHook
        LDR      R0,[R0, #+0]
        CMP      R0,#+2
        BEQ      ??my_keyhook_0
        SWI      +67
        CMP      R0,#+0
        BNE      ??my_keyhook_2
        LDR      R0,??my_keyhook_1  ;; EnableHook
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??my_keyhook_2
??my_keyhook_0:
        MOV      R0,#+0
        POP      {R4,R5,PC}
// 1631   switch(msg)
??my_keyhook_2:
        MOV      R0,#+147
        ORR      R0,R0,#0x100
        CMP      R5,R0
        BEQ      ??my_keyhook_3
        CMP      R5,#+404
        BEQ      ??my_keyhook_4
        ADD      R0,R0,#+2
        CMP      R5,R0
        BEQ      ??my_keyhook_5
        B        ??my_keyhook_6
// 1632   {
// 1633     case(KEY_UP):
// 1634       {
// 1635         switch(submsg)
??my_keyhook_4:
        SUBS     R4,R4,#+20
        BEQ      ??my_keyhook_7
        SUBS     R4,R4,#+1
        BEQ      ??my_keyhook_8
        SUBS     R4,R4,#+18
        BEQ      ??my_keyhook_9
        B        ??my_keyhook_6
// 1636             {
// 1637            case 0x14: 
// 1638              if (press==1)
??my_keyhook_7:
        LDR      R0,??my_keyhook_1+0x4  ;; press
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??my_keyhook_10
// 1639              {
// 1640                VolumeUp();
        BL       VolumeUp
        B        ??my_keyhook_11
// 1641              }
// 1642              else 
// 1643              {
// 1644                if (press<5)
??my_keyhook_10:
        LDR      R0,??my_keyhook_1+0x4  ;; press
        LDR      R0,[R0, #+0]
        CMP      R0,#+5
        BGE      ??my_keyhook_6
// 1645                {
// 1646                  PlayNext();
??my_keyhook_12:
        BL       PlayNext
??my_keyhook_11:
        MOV      R0,#+2
        POP      {R4,R5,PC}
// 1647                }
// 1648              };break;//Верхня
// 1649            case 0x15: 
// 1650              if (press==1)
??my_keyhook_8:
        LDR      R0,??my_keyhook_1+0x4  ;; press
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??my_keyhook_13
// 1651              {
// 1652                VolumeDown();
        BL       VolumeDown
        B        ??my_keyhook_11
// 1653              }
// 1654              else 
// 1655              {
// 1656                if (press<5)
??my_keyhook_13:
        LDR      R0,??my_keyhook_1+0x4  ;; press
        LDR      R0,[R0, #+0]
        CMP      R0,#+5
        BGE      ??my_keyhook_6
// 1657                {
// 1658                  PlayPrevious();
        BL       PlayPrevious
        B        ??my_keyhook_11
// 1659                }
// 1660              }
// 1661              break;//Нижня
// 1662            case 0x27: if (press==1){Play_PauseResume();}else {if (press>1){PlayNext();}};break;//Гарнітура
??my_keyhook_9:
        LDR      R0,??my_keyhook_1+0x4  ;; press
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??my_keyhook_14
        BL       Play_PauseResume
        B        ??my_keyhook_11
??my_keyhook_14:
        LDR      R0,??my_keyhook_1+0x4  ;; press
        LDR      R0,[R0, #+0]
        CMP      R0,#+2
        BLT      ??my_keyhook_6
        B        ??my_keyhook_12
// 1663             }
// 1664       }
// 1665       break;    
// 1666   case(KEY_DOWN):press=1;break;
??my_keyhook_3:
        LDR      R0,??my_keyhook_1+0x4  ;; press
        MOV      R1,#+1
        STR      R1,[R0, #+0]
        B        ??my_keyhook_11
// 1667   case(LONG_PRESS):
// 1668     {
// 1669       press++;
??my_keyhook_5:
        LDR      R0,??my_keyhook_1+0x4  ;; press
        LDR      R1,??my_keyhook_1+0x4  ;; press
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 1670       if (press==5)
        CMP      R1,#+5
        BNE      ??my_keyhook_6
// 1671       {
// 1672         if (submsg==0x14)
        CMP      R4,#+20
        BNE      ??my_keyhook_15
// 1673         {
// 1674           gipc.name_to=ipc_xtask_name;
        LDR      R0,??DataTable508  ;; gipc
        LDR      R1,??DataTable504  ;; ipc_xtask_name
        STR      R1,[R0, #+0]
// 1675           gipc.name_from=ipc_my_name;
        LDR      R0,??DataTable505  ;; gipc + 4
        LDR      R1,??DataTable506  ;; ipc_my_name
        STR      R1,[R0, #+0]
// 1676           gipc.data=(void *)MAINCSM_ID;
        LDR      R0,??DataTable507  ;; gipc + 8
        LDR      R1,??DataTable438  ;; MAINCSM_ID
        LDR      R1,[R1, #+0]
        STR      R1,[R0, #+0]
// 1677           GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc);
        LDR      R3,??DataTable508  ;; gipc
        MOV      R2,#+2
        ORR      R1,R2,#0x3F0
        MOV      R0,#+9
        ORR      R0,R0,#0x4200
        SWI      +256
        B        ??my_keyhook_11
// 1678         }
// 1679         else
// 1680         {
// 1681           if (submsg==0x15)
??my_keyhook_15:
        CMP      R4,#+21
        BNE      ??my_keyhook_6
// 1682           {
// 1683             if (IsUnlocked()){ShowPlayerMenu();}
        SWI      +67
        CMP      R0,#+0
        BEQ      ??my_keyhook_6
        BL       ShowPlayerMenu
// 1684           }
// 1685         }
// 1686       }
// 1687       
// 1688     }break;
// 1689   }
// 1690   return(2);
??my_keyhook_6:
        MOV      R0,#+2
        POP      {R4,R5,PC}       ;; return
        DATA
??my_keyhook_1:
        DC32     EnableHook
        DC32     press
        CFI EndBlock cfiBlock95
// 1691 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable438:
        DC32     MAINCSM_ID

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock96 Using cfiCommon0
        CFI NoFunction
        THUMB
??SaveParams??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock96
        REQUIRE SaveParams
// 1692 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock97 Using cfiCommon1
        CFI Function SaveParams
        ARM
// 1693 void SaveParams()
// 1694 {
SaveParams:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        SUB      SP,SP,#+8
        CFI CFA R13+16
// 1695   int f;
// 1696   char h[2];
// 1697   sprintf(h,"%c%c",CurentVolume,curskin);
        LDR      R0,??DataTable473  ;; curskin
        LDR      R3,[R0, #+0]
        LDR      R0,??DataTable472  ;; CurentVolume
        LDR      R2,[R0, #+0]
        LDR      R1,??DataTable442  ;; `?<Constant "%c%c">`
        ADD      R0,SP,#+4
        SWI      +22
// 1698   unsigned int err;
// 1699   sprintf(name,"%sparams.txt",playerfolder);
        LDR      R2,??DataTable468  ;; playerfolder
        LDR      R1,??DataTable469  ;; `?<Constant "%sparams.txt">`
        LDR      R0,??DataTable594  ;; name
        SWI      +22
// 1700   f=fopen(name, A_WriteOnly+A_MMCStream+A_Create, P_WRITE, & err );
        MOV      R3,SP
        MOV      R2,#+256
        ORR      R1,R2,#0x21
        LDR      R0,??DataTable594  ;; name
        SWI      +10
        MOV      R4,R0
// 1701   fwrite(f,h,2,&err);
        MOV      R3,SP
        MOV      R2,#+2
        ADD      R1,SP,#+4
        SWI      +12
// 1702   fclose(f,&err);
        MOV      R1,SP
        MOV      R0,R4
        SWI      +13
// 1703 }
        ADD      SP,SP,#+8        ;; stack cleaning
        CFI CFA R13+8
        POP      {R4,PC}          ;; return
        CFI EndBlock cfiBlock97

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable442:
        DC32     `?<Constant "%c%c">`

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock98 Using cfiCommon0
        CFI NoFunction
        THUMB
??WriteLastPlaylist??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock98
        REQUIRE WriteLastPlaylist
// 1704 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock99 Using cfiCommon1
        CFI Function WriteLastPlaylist
        ARM
// 1705 void WriteLastPlaylist()
// 1706 {
WriteLastPlaylist:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        SUB      SP,SP,#+304
        CFI CFA R13+312
// 1707   int f;
// 1708   char h[300];
// 1709   sprintf(h,"%c%c%c%s",random+1,(cp+1)%256,strlen(LastPlaylist),LastPlaylist);
        LDR      R0,??DataTable467  ;; LastPlaylist
        SWI      +27
        LDR      R1,??DataTable462  ;; cp
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        LDR      R2,??DataTable467  ;; LastPlaylist
        PUSH     {R2}
        CFI CFA R13+316
        PUSH     {R0}
        CFI CFA R13+320
        LDR      R0,??DataTable462  ;; cp
        LDR      R0,[R0, #+0]
        ADD      R0,R0,#+1
        ASR      R2,R1,#+7
        ADD      R1,R1,R2, LSR #+24
        ASR      R1,R1,#+8
        SUB      R3,R0,R1, LSL #+8
        LDR      R0,??DataTable461  ;; random
        LDR      R0,[R0, #+0]
        ADD      R2,R0,#+1
        LDR      R1,??WriteLastPlaylist_0  ;; `?<Constant "%c%c%c%s">`
        ADD      R0,SP,#+12
        SWI      +22
// 1710   unsigned int err;
// 1711   sprintf(name,"%slastplaylist.cfg",playerfolder);
        LDR      R2,??DataTable468  ;; playerfolder
        LDR      R1,??DataTable457  ;; `?<Constant "%slastplaylist.cfg">`
        LDR      R0,??DataTable594  ;; name
        SWI      +22
// 1712   if ((f=fopen(name, A_WriteOnly+A_Create, P_WRITE, & err ))!=-1)
        ADD      R3,SP,#+8
        MOV      R2,#+256
        ORR      R1,R2,#0x1
        LDR      R0,??DataTable594  ;; name
        SWI      +10
        MOV      R4,R0
        CMN      R4,#+1
        ADD      SP,SP,#+8        ;; stack cleaning
        CFI CFA R13+312
        BEQ      ??WriteLastPlaylist_1
// 1713   {
// 1714     fwrite(f,h,strlen(h),&err);
        ADD      R0,SP,#+4
        SWI      +27
        MOV      R2,R0
        MOV      R3,SP
        ADD      R1,SP,#+4
        MOV      R0,R4
        SWI      +12
// 1715   }
// 1716   fclose(f,&err);
??WriteLastPlaylist_1:
        MOV      R1,SP
        MOV      R0,R4
        SWI      +13
// 1717 }
        ADD      SP,SP,#+304      ;; stack cleaning
        CFI CFA R13+8
        POP      {R4,PC}          ;; return
        DATA
??WriteLastPlaylist_0:
        DC32     `?<Constant "%c%c%c%s">`
        CFI EndBlock cfiBlock99

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock100 Using cfiCommon0
        CFI NoFunction
        THUMB
??ReadLastPlaylist??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock100
        REQUIRE ReadLastPlaylist
// 1718 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock101 Using cfiCommon1
        CFI Function ReadLastPlaylist
        ARM
// 1719 void ReadLastPlaylist()
// 1720 {
ReadLastPlaylist:
        PUSH     {R4-R6,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R6 Frame(CFA, -8)
        CFI R5 Frame(CFA, -12)
        CFI R4 Frame(CFA, -16)
        CFI CFA R13+16
        SUB      SP,SP,#+744
        CFI CFA R13+760
// 1721   int f;
// 1722   char h[300];
// 1723   unsigned int err;
// 1724   sprintf(name,"%slastplaylist.cfg",playerfolder);
        LDR      R2,??DataTable468  ;; playerfolder
        LDR      R1,??DataTable457  ;; `?<Constant "%slastplaylist.cfg">`
        LDR      R0,??DataTable594  ;; name
        SWI      +22
// 1725   if ((f=fopen(name, A_ReadOnly+A_MMCStream, P_READ, & err ))!=-1)
        MOV      R3,SP
        MOV      R2,#+128
        MOV      R1,#+32
        LDR      R0,??DataTable594  ;; name
        SWI      +10
        MOV      R4,R0
        CMN      R4,#+1
        BEQ      ??ReadLastPlaylist_0
// 1726   {
// 1727     DIR_ENTRY de;
// 1728     FindFirstFile(&de,name,&err);
        MOV      R2,SP
        LDR      R1,??DataTable594  ;; name
        ADD      R0,SP,#+4
        SWI      +107
// 1729     if (de.file_size!=0)
        LDR      R0,[SP, #+24]
        CMP      R0,#+0
        BEQ      ??ReadLastPlaylist_1
// 1730     {
// 1731       fread(f,h,de.file_size,&err);
        MOV      R3,SP
        MOV      R2,R0
        ADD      R1,SP,#+444
        MOV      R0,R4
        SWI      +11
// 1732       random=h[0]-1;
        LDR      R0,??DataTable461  ;; random
        LDRB     R1,[SP, #+444]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
// 1733       cp=h[1]-1;
        LDR      R0,??DataTable462  ;; cp
        LDRB     R1,[SP, #+445]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
// 1734       sprintf(LastPlaylist,pp);
        LDR      R1,??DataTable463  ;; pp
        LDR      R0,??DataTable467  ;; LastPlaylist
        SWI      +22
// 1735       for (int i=0;i<h[2];i++)
        MOV      R5,#+0
        ADD      R6,SP,#+191
        ADD      R6,R6,#+256
        B        ??ReadLastPlaylist_2
// 1736       {
// 1737         sprintf(LastPlaylist,"%s%c",LastPlaylist,h[i+3]);
??ReadLastPlaylist_3:
        LDRB     R3,[R6], #+1
        LDR      R2,??DataTable467  ;; LastPlaylist
        LDR      R1,??DataTable589  ;; `?<Constant "%s%c">`
        LDR      R0,??DataTable467  ;; LastPlaylist
        SWI      +22
// 1738       }
        ADD      R5,R5,#+1
??ReadLastPlaylist_2:
        LDRB     R0,[SP, #+446]
        CMP      R5,R0
        BLT      ??ReadLastPlaylist_3
// 1739     }
// 1740     FindClose(&de,&err);
??ReadLastPlaylist_1:
        MOV      R1,SP
        ADD      R0,SP,#+4
        SWI      +109
// 1741   }
// 1742   fclose(f,&err);
??ReadLastPlaylist_0:
        MOV      R1,SP
        MOV      R0,R4
        SWI      +13
// 1743 }
        ADD      SP,SP,#+744      ;; stack cleaning
        CFI CFA R13+16
        POP      {R4-R6,PC}       ;; return
        CFI EndBlock cfiBlock101

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable457:
        DC32     `?<Constant "%slastplaylist.cfg">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable461:
        DC32     random

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable462:
        DC32     cp

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable463:
        DC32     pp

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable467:
        DC32     LastPlaylist

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock102 Using cfiCommon0
        CFI NoFunction
        THUMB
??LoadParams??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock102
        REQUIRE LoadParams
// 1744 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock103 Using cfiCommon1
        CFI Function LoadParams
        ARM
// 1745 void LoadParams()
// 1746 {
LoadParams:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        SUB      SP,SP,#+8
        CFI CFA R13+16
// 1747   int f;
// 1748   char h[2];
// 1749   unsigned int err;
// 1750   sprintf(name,"%sparams.txt",playerfolder);
        LDR      R2,??DataTable468  ;; playerfolder
        LDR      R1,??DataTable469  ;; `?<Constant "%sparams.txt">`
        LDR      R0,??DataTable594  ;; name
        SWI      +22
// 1751   f=fopen(name, A_ReadOnly+A_MMCStream, P_READ, & err );
        ADD      R3,SP,#+4
        MOV      R2,#+128
        MOV      R1,#+32
        LDR      R0,??DataTable594  ;; name
        SWI      +10
        MOVS     R4,R0
// 1752   if (f>-1)
        BMI      ??LoadParams_0
// 1753   {
// 1754     fread(f,h,2,&err);
        ADD      R3,SP,#+4
        MOV      R2,#+2
        MOV      R1,SP
        SWI      +11
// 1755     CurentVolume=h[0];
        LDR      R0,??DataTable472  ;; CurentVolume
        LDRB     R1,[SP, #+0]
        STR      R1,[R0, #+0]
// 1756     curskin=h[1];
        LDR      R0,??DataTable473  ;; curskin
        LDRB     R1,[SP, #+1]
        STR      R1,[R0, #+0]
// 1757   }
// 1758   fclose(f,&err);
??LoadParams_0:
        ADD      R1,SP,#+4
        MOV      R0,R4
        SWI      +13
// 1759 }
        ADD      SP,SP,#+8        ;; stack cleaning
        CFI CFA R13+8
        POP      {R4,PC}          ;; return
        CFI EndBlock cfiBlock103

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable468:
        DC32     playerfolder

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable469:
        DC32     `?<Constant "%sparams.txt">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable472:
        DC32     CurentVolume

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable473:
        DC32     curskin

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock104 Using cfiCommon0
        CFI NoFunction
        THUMB
??onCreate??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock104
        REQUIRE onCreate
// 1760 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock105 Using cfiCommon1
        CFI Function onCreate
        ARM
// 1761 void onCreate(MAIN_GUI *data, void *(*malloc_adr)(int)) //Create
// 1762 {
// 1763   data->gui.state=1;
onCreate:
        MOV      R1,#+1
        STRB     R1,[R0, #+12]
// 1764 }
        BX       LR               ;; return
        CFI EndBlock cfiBlock105

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock106 Using cfiCommon0
        CFI NoFunction
        THUMB
??onClose??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock106
        REQUIRE onClose
// 1765 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock107 Using cfiCommon1
        CFI Function onClose
        ARM
// 1766 void onClose(MAIN_GUI *data, void (*mfree_adr)(void *)) //Close
// 1767 {
// 1768   data->gui.state=0;
onClose:
        MOV      R1,#+0
        STRB     R1,[R0, #+12]
// 1769 }
        BX       LR               ;; return
        CFI EndBlock cfiBlock107

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock108 Using cfiCommon0
        CFI NoFunction
        THUMB
??onFocus??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock108
        REQUIRE onFocus
// 1770 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock109 Using cfiCommon1
        CFI Function onFocus
        ARM
// 1771 void onFocus(MAIN_GUI *data, void *(*malloc_adr)(int), void (*mfree_adr)(void *))//Focus
// 1772 {
onFocus:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 1773   data->gui.state=2;
        MOV      R1,#+2
        STRB     R1,[R0, #+12]
// 1774   DisableIDLETMR();
        SWI      +383
// 1775 }
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock109

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock110 Using cfiCommon0
        CFI NoFunction
        THUMB
??onUnfocus??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock110
        REQUIRE onUnfocus
// 1776 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock111 Using cfiCommon1
        CFI Function onUnfocus
        ARM
// 1777 void onUnfocus(MAIN_GUI *data, void (*mfree_adr)(void *)) //Unfocus
// 1778 {
// 1779   if (data->gui.state!=2) return;
onUnfocus:
        LDRB     R1,[R0, #+12]
        CMP      R1,#+2
// 1780   data->gui.state=1;
        MOVEQ    R1,#+1
        STRBEQ   R1,[R0, #+12]
// 1781 }
        BX       LR               ;; return
        CFI EndBlock cfiBlock111

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock112 Using cfiCommon0
        CFI NoFunction
        THUMB
??WhatToDo??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock112
        REQUIRE WhatToDo
// 1782 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock113 Using cfiCommon1
        CFI Function WhatToDo
        ARM
// 1783 void WhatToDo(int param)
// 1784 {
WhatToDo:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        SUB      SP,SP,#+256
        CFI CFA R13+264
// 1785   switch (param)
        CMP      R0,#+21
        BHI      ??WhatToDo_2
        ADR      R1,??WhatToDo_0
        MOV      R0,R0, LSL #+1
        LDRH     R1,[R1, R0]
        ADD      PC,PC,R1, LSL #+2
        DATA
??WhatToDo_0:
        DC16     +27,+10,+46,+48
        DC16     +50,+56,+70,+85
        DC16     +87,+89,+99,+101
        DC16     +103,+124,+289,+126
        DC16     +128,+145,+186,+188
        DC16     +218,+288
        ARM
// 1786   {
// 1787   case 1:if (playing!=0){PlayMelody_StopPlayback(PLAY_ID);
??WhatToDo_3:
        LDR      R0,??DataTable479  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??WhatToDo_4
        LDR      R0,??DataTable475  ;; PLAY_ID
        LDR      R0,[R0, #+0]
        SWI      +550
// 1788                          timemin=0;
        LDR      R0,??DataTable517  ;; timemin
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1789                          timesec=0;
        LDR      R0,??DataTable518  ;; timesec
        STR      R1,[R0, #+0]
// 1790                          REDRAW();
        SWI      +370
// 1791                          playing=0;
        LDR      R0,??DataTable479  ;; playing
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1792                          break;
        B        ??WhatToDo_5
// 1793                         }
// 1794         else
// 1795   case 0:if (playing!=0){NeedToStop=1;}else{Play_PauseResume();}if (entime==1){GBS_StartTimerProc(&TimeTimer,RedrawTime,timepp);}break;
??WhatToDo_4:
        LDR      R0,??DataTable479  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??WhatToDo_6
        LDR      R0,??DataTable480  ;; NeedToStop
        MOV      R1,#+1
        STR      R1,[R0, #+0]
        B        ??WhatToDo_7
??WhatToDo_6:
        BL       Play_PauseResume
??WhatToDo_7:
        LDR      R0,??DataTable481  ;; entime
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??WhatToDo_2
        LDR      R2,??DataTable482  ;; timepp
        LDR      R0,??DataTable483  ;; RedrawTime
        LDR      R1,[R0, #+0]
        LDR      R0,??DataTable484  ;; TimeTimer
        SWI      +77
        B        ??WhatToDo_5
// 1796   case 2:VolumeUp();break;
??WhatToDo_8:
        BL       VolumeUp
        B        ??WhatToDo_5
// 1797   case 3:VolumeDown();break;
??WhatToDo_9:
        BL       VolumeDown
        B        ??WhatToDo_5
// 1798   case 4:{random=1-random;REDRAW();};break;
??WhatToDo_10:
        LDR      R0,??DataTable486  ;; random
        LDR      R1,??DataTable486  ;; random
        LDR      R1,[R1, #+0]
        RSB      R1,R1,#+1
        STR      R1,[R0, #+0]
        B        ??WhatToDo_11
// 1799   case 5:{Cleaner();if (curskin!=0){curskin--;}else{curskin=NumberOfSkins-1;}readskinparamsfromfile();REDRAW();};break;
??WhatToDo_12:
        _BLF     Cleaner,??Cleaner??rA
        LDR      R0,??DataTable494  ;; curskin
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        LDR      R0,??DataTable494  ;; curskin
        LDRNE    R1,??DataTable494  ;; curskin
        LDREQ    R1,??DataTable492  ;; NumberOfSkins
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
??WhatToDo_13:
        STR      R1,[R0, #+0]
        BL       readskinparamsfromfile
??WhatToDo_11:
        SWI      +370
??WhatToDo_5:
        ADD      SP,SP,#+256
        CFI CFA R13+8
        POP      {R4,PC}
        CFI CFA R13+264
// 1800   case 6:{Cleaner();if (curskin!=NumberOfSkins-1){curskin++;}else{curskin=0;}readskinparamsfromfile();REDRAW();};break;
??WhatToDo_14:
        _BLF     Cleaner,??Cleaner??rA
        LDR      R0,??DataTable494  ;; curskin
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable492  ;; NumberOfSkins
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        CMP      R0,R1
        LDR      R0,??DataTable494  ;; curskin
        BEQ      ??WhatToDo_15
        LDR      R1,??DataTable494  ;; curskin
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        B        ??WhatToDo_13
??WhatToDo_15:
        MOV      R1,#+0
        B        ??WhatToDo_13
// 1801   case 7:PlayPrevious();break;
??WhatToDo_16:
        BL       PlayPrevious
        B        ??WhatToDo_5
// 1802   case 8:PlayNext();break;
??WhatToDo_17:
        BL       PlayNext
        B        ??WhatToDo_5
// 1803   case 9:{wsprintf(wss.ws1,"0:\\Zbin\\etc\\ivoplay.bcfg");ExecuteFile(wss.ws1,0,"");}break;
??WhatToDo_18:
        LDR      R1,??WhatToDo_19+0x4  ;; `?<Constant "0:\\\\Zbin\\\\etc\\\\ivoplay.bcfg">`
??WhatToDo_20:
        LDR      R0,??DataTable496  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +292
        ADR      R2,??WhatToDo_19  ;; ""
        MOV      R1,#+0
        LDR      R0,??DataTable496  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +148
        B        ??WhatToDo_5
// 1804   case 10:{CreateMenuFindPlaylist();}break;
??WhatToDo_21:
        _BLF     CreateMenuFindPlaylist,??CreateMenuFindPlaylist??rA
        B        ??WhatToDo_5
// 1805   case 11:VolumeMute();break;
??WhatToDo_22:
        BL       VolumeMute
        B        ??WhatToDo_5
// 1806   case 12:{gipc.name_to=ipc_xtask_name;
??WhatToDo_23:
        LDR      R0,??DataTable508  ;; gipc
        LDR      R1,??DataTable504  ;; ipc_xtask_name
        STR      R1,[R0, #+0]
// 1807            gipc.name_from=ipc_my_name;
        LDR      R0,??DataTable505  ;; gipc + 4
        LDR      R1,??DataTable506  ;; ipc_my_name
        STR      R1,[R0, #+0]
// 1808            gipc.data=0;
        LDR      R0,??DataTable507  ;; gipc + 8
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1809            GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc);
        LDR      R3,??DataTable508  ;; gipc
        MOV      R2,#+1
        MOV      R1,#+242
        ORR      R1,R1,#0x300
        MOV      R0,#+9
        ORR      R0,R0,#0x4200
        SWI      +256
// 1810            if (IsUnlocked()) {KbdLock();}
        SWI      +67
        CMP      R0,#+0
        BEQ      ??WhatToDo_2
        SWI      +169
        B        ??WhatToDo_5
// 1811           }break;
// 1812   case 13:CLOSECURENTCSM();break;
??WhatToDo_24:
        BL       CLOSECURENTCSM
        B        ??WhatToDo_5
// 1813   case 15:ShowMainMenu();break;
??WhatToDo_25:
        _BLF     ShowMainMenu,??ShowMainMenu??rA
        B        ??WhatToDo_5
// 1814   case 16:{gipc.name_to=ipc_xtask_name;
??WhatToDo_26:
        LDR      R0,??DataTable508  ;; gipc
        LDR      R1,??DataTable504  ;; ipc_xtask_name
        STR      R1,[R0, #+0]
// 1815            gipc.name_from=ipc_my_name;
        LDR      R0,??DataTable505  ;; gipc + 4
        LDR      R1,??DataTable506  ;; ipc_my_name
        STR      R1,[R0, #+0]
// 1816            gipc.data=0;
        LDR      R0,??DataTable507  ;; gipc + 8
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1817            GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_IDLE,&gipc);
        LDR      R3,??DataTable508  ;; gipc
        MOV      R2,#+1
        MOV      R1,#+242
        ORR      R1,R1,#0x300
        MOV      R0,#+9
        ORR      R0,R0,#0x4200
        SWI      +256
        B        ??WhatToDo_5
// 1818           }break;
// 1819   case 17:
// 1820     if (IsUnlocked()) 
??WhatToDo_27:
        SWI      +67
        CMP      R0,#+0
        BEQ      ??WhatToDo_28
// 1821     {
// 1822       KbdLock();
        SWI      +169
        B        ??WhatToDo_11
// 1823     }
// 1824     else 
// 1825   {
// 1826     KbdUnlock();
??WhatToDo_28:
        SWI      +185
// 1827       int z;
// 1828       switch(GetProfile()+1)
        SWI      +182
        ADD      R0,R0,#+1
        MOV      R0,R0, LSL #+16
        MOV      R0,R0, LSR #+16
        SUB      R0,R0,#+1
        CMP      R0,#+7
        BHI      ??WhatToDo_29
        ADR      R1,??WhatToDo_1
        LDRB     R1,[R1, R0]
        ADD      PC,PC,R1, LSL #+2
        DATA
??WhatToDo_1:
        DC8      +1,+3,+5,+7
        DC8      +9,+11,+13,+15
        ARM
// 1829       {
// 1830       case 1:z=profile1;break;
??WhatToDo_30:
        LDR      R0,??DataTable509  ;; profile1
        B        ??WhatToDo_31
// 1831       case 2:z=profile2;break;
??WhatToDo_32:
        LDR      R0,??DataTable510  ;; profile2
        B        ??WhatToDo_31
// 1832       case 3:z=profile3;break;
??WhatToDo_33:
        LDR      R0,??DataTable511  ;; profile3
        B        ??WhatToDo_31
// 1833       case 4:z=profile4;break;
??WhatToDo_34:
        LDR      R0,??DataTable512  ;; profile4
        B        ??WhatToDo_31
// 1834       case 5:z=profile5;break;
??WhatToDo_35:
        LDR      R0,??DataTable513  ;; profile5
        B        ??WhatToDo_31
// 1835       case 6:z=profile6;break;
??WhatToDo_36:
        LDR      R0,??DataTable514  ;; profile6
        B        ??WhatToDo_31
// 1836       case 7:z=profile7;break;
??WhatToDo_37:
        LDR      R0,??DataTable515  ;; profile7
        B        ??WhatToDo_31
// 1837       case 8:z=profile8;break;
??WhatToDo_38:
        LDR      R0,??DataTable516  ;; profile8
??WhatToDo_31:
        LDR      R4,[R0, #+0]
// 1838       }
// 1839       SetIllumination(0,1,z,0);
??WhatToDo_29:
        MOV      R3,#+0
        MOV      R2,R4, LSL #+16
        MOV      R2,R2, LSR #+16
        MOV      R1,#+1
        MOV      R0,#+0
        SWI      +8
// 1840   }
// 1841   REDRAW();
        B        ??WhatToDo_11
// 1842   break;
// 1843   case 18:{wsprintf(wss.ws1,"4:\\Zbin\\etc\\ivoplay.bcfg");ExecuteFile(wss.ws1,0,"");}break;
??WhatToDo_39:
        LDR      R1,??WhatToDo_19+0x8  ;; `?<Constant "4:\\\\Zbin\\\\etc\\\\ivoplay.bcfg">`
        B        ??WhatToDo_20
// 1844   case 19:{if ((timemin==0)&&(timesec<5)){PlayPrevious();}else
??WhatToDo_40:
        LDR      R0,??DataTable517  ;; timemin
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??WhatToDo_41
        LDR      R0,??DataTable518  ;; timesec
        LDR      R0,[R0, #+0]
        CMP      R0,#+5
        BLT      ??WhatToDo_16
// 1845                                                            {
// 1846                                                              char s[256];
// 1847                                                              sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
??WhatToDo_41:
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable540  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable606  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??DataTable540  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable606  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable607  ;; `?<Constant "%s%s">`
        MOV      R0,SP
        SWI      +22
// 1848                                                              playing=1;
        LDR      R0,??DataTable479  ;; playing
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 1849                                                              JaPerekliuchyvPisniu=1;
        LDR      R0,??DataTable525  ;; JaPerekliuchyvPisniu
        STR      R1,[R0, #+0]
// 1850                                                              Play(s);
        MOV      R0,SP
        BL       Play
        B        ??WhatToDo_5
// 1851                                                            }
// 1852           }break;
// 1853   case 20:
// 1854     {
// 1855       char *s="ffff";
??WhatToDo_42:
        LDR      R4,??DataTable526  ;; `?<Constant "ffff">`
// 1856       sprintf(s,"%s:\r%s%s\r%s: %i:%i%i",LG_FULL_NAME,spysok[0][cp],spysok[1][cp],LG_FULL_TIME,timelength[cp]/60,(timelength[cp]%60)/10,(timelength[cp]%60)%10);
        LDR      R0,??DataTable540  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable608  ;; timelength
        LDR      R0,[R1, +R0, LSL #+2]
        LDR      R1,??DataTable537  ;; 0x88888889
        SMULL    R2,R3,R0,R1
        ADD      R3,R3,R0
        ASR      R3,R3,#+5
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+60
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        LDR      R1,??DataTable534  ;; 0x66666667
        SMULL    R2,R3,R0,R1
        ASR      R3,R3,#+2
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+10
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        PUSH     {R0}
        CFI CFA R13+268
        LDR      R0,??DataTable540  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable608  ;; timelength
        LDR      R0,[R1, +R0, LSL #+2]
        LDR      R1,??DataTable537  ;; 0x88888889
        SMULL    R2,R3,R0,R1
        ADD      R3,R3,R0
        ASR      R3,R3,#+5
        ADD      R3,R3,R0, LSR #+31
        MOV      R2,#+60
        MUL      R3,R2,R3
        SUB      R0,R0,R3
        LDR      R1,??DataTable534  ;; 0x66666667
        SMULL    R2,R3,R1,R0
        ASR      R3,R3,#+2
        ADD      R0,R3,R0, LSR #+31
        PUSH     {R0}
        CFI CFA R13+272
        LDR      R0,??DataTable540  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable608  ;; timelength
        LDR      R0,[R1, +R0, LSL #+2]
        LDR      R1,??DataTable537  ;; 0x88888889
        SMULL    R2,R3,R1,R0
        ADD      R3,R3,R0
        ASR      R3,R3,#+5
        ADD      R0,R3,R0, LSR #+31
        PUSH     {R0}
        CFI CFA R13+276
        LDR      R0,??WhatToDo_19+0xC  ;; `?<Constant "Full time">`
        PUSH     {R0}
        CFI CFA R13+280
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable540  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable606  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R0,R0,R1
        PUSH     {R0}
        CFI CFA R13+284
        LDR      R0,??DataTable540  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable606  ;; spysok
        ADD      R3,R1,R0, LSL #+7
        LDR      R2,??WhatToDo_19+0x10  ;; `?<Constant "Full name">`
        LDR      R1,??WhatToDo_19+0x14  ;; `?<Constant "%s:\\r%s%s\\r%s: %i:%i%i">`
        MOV      R0,R4
        SWI      +22
// 1857       Message(s);
        MOV      R0,R4
        BL       Message
        ADD      SP,SP,#+20       ;; stack cleaning
        CFI CFA R13+264
        B        ??WhatToDo_5
// 1858     };break;
// 1859   case 21:
// 1860     {
// 1861       ShowPlayerMenu();
??WhatToDo_43:
        BL       ShowPlayerMenu
// 1862     }
// 1863   }
// 1864 }
??WhatToDo_2:
        ADD      SP,SP,#+256      ;; stack cleaning
        CFI CFA R13+8
        POP      {R4,PC}          ;; return
        DATA
??WhatToDo_19:
        DC8      "",+0,+0,+0
        DC32     `?<Constant "0:\\\\Zbin\\\\etc\\\\ivoplay.bcfg">`
        DC32     `?<Constant "4:\\\\Zbin\\\\etc\\\\ivoplay.bcfg">`
        DC32     `?<Constant "Full time">`
        DC32     `?<Constant "Full name">`
        DC32     `?<Constant "%s:\\r%s%s\\r%s: %i:%i%i">`
        CFI EndBlock cfiBlock113

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable475:
        DC32     PLAY_ID

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable479:
        DC32     playing

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable480:
        DC32     NeedToStop

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable481:
        DC32     entime

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable482:
        DC32     timepp

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable483:
        DC32     RedrawTime

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable484:
        DC32     TimeTimer

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable486:
        DC32     random

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable492:
        DC32     NumberOfSkins

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable494:
        DC32     curskin

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable496:
        DC32     wss

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable504:
        DC32     ipc_xtask_name

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable505:
        DC32     gipc + 4

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable506:
        DC32     ipc_my_name

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable507:
        DC32     gipc + 8

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable508:
        DC32     gipc

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable509:
        DC32     profile1

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable510:
        DC32     profile2

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable511:
        DC32     profile3

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable512:
        DC32     profile4

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable513:
        DC32     profile5

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable514:
        DC32     profile6

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable515:
        DC32     profile7

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable516:
        DC32     profile8

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable517:
        DC32     timemin

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable518:
        DC32     timesec

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable525:
        DC32     JaPerekliuchyvPisniu

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable526:
        DC32     `?<Constant "ffff">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable534:
        DC32     0x66666667

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable537:
        DC32     0x88888889

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable540:
        DC32     cp

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock114 Using cfiCommon0
        CFI NoFunction
        THUMB
??IsFile??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock114
        REQUIRE IsFile
// 1865 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock115 Using cfiCommon1
        CFI Function IsFile
        ARM
// 1866 int IsFile(char *name)
// 1867 { int i;
// 1868 i=0;
IsFile:
        MOV      R1,#+0
// 1869 while(i<200){
// 1870 if(name[i]==0)break;
??IsFile_0:
        LDRB     R2,[R0, #+0]
        CMP      R2,#+0
        BEQ      ??IsFile_1
// 1871 if(name[i]=='.')return(1);  
        LDRB     R2,[R0], #+1
        CMP      R2,#+46
        MOVEQ    R0,#+1
        BXEQ     LR
// 1872 i++; 
        ADD      R1,R1,#+1
// 1873 }
        CMP      R1,#+200
        BLT      ??IsFile_0
// 1874 return(0);  
??IsFile_1:
        MOV      R0,#+0
        BX       LR               ;; return
        CFI EndBlock cfiBlock115
// 1875 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock116 Using cfiCommon0
        CFI NoFunction
        THUMB
??CreatePlaylist??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock116
        REQUIRE CreatePlaylist
// 1876 

        RSEG DATA_C:CONST:SORT:NOROOT(0)
// 1877 extern const char zir[]="*";
zir:
        DATA
        DC8 "*"
// 1878 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock117 Using cfiCommon1
        CFI Function CreatePlaylist
        ARM
// 1879 void CreatePlaylist(char *foldder)//Прочесываем папки рекурсивно
// 1880 {
CreatePlaylist:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        SUB      SP,SP,#+580
        CFI CFA R13+588
        MOV      R4,R0
// 1881   DIR_ENTRY de;
// 1882   unsigned int err;
// 1883   char path[128];
// 1884   sprintf(path,"%s%c",foldder,'\\');
        MOV      R3,#+92
        MOV      R2,R4
        LDR      R1,??DataTable589  ;; `?<Constant "%s%c">`
        ADD      R0,SP,#+12
        SWI      +22
// 1885   strcpy(name,path);
        ADD      R1,SP,#+12
        LDR      R0,??DataTable594  ;; name
        SWI      +26
// 1886   NumberOfTracks=0;
        LDR      R0,??DataTable603  ;; NumberOfTracks
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 1887   /*  
// 1888   strcat(name,zir);
// 1889   if (FindFirstFile(&de,name,&err))
// 1890   {
// 1891     do
// 1892     {
// 1893       strcpy(name,path);
// 1894       strcat(name,de.file_name);
// 1895       if (!IsFile(name)){CreatePlaylist(name);}
// 1896     }
// 1897     while(FindNextFile(&de,&err));
// 1898   }
// 1899 */
// 1900   char format[5];
// 1901   if (strlen(format_1)!=0)
        LDR      R0,??DataTable546  ;; format_1
        SWI      +27
        CMP      R0,#+0
        BEQ      ??CreatePlaylist_0
// 1902   {
// 1903   sprintf(format,"*.%s",format_1);
        LDR      R2,??DataTable546  ;; format_1
        LDR      R1,??CreatePlaylist_1  ;; `?<Constant "*.%s">`
        ADD      R0,SP,#+4
        SWI      +22
// 1904   
// 1905   sprintf(path,"%s%c",foldder,'\\');
        MOV      R3,#+92
        MOV      R2,R4
        LDR      R1,??DataTable589  ;; `?<Constant "%s%c">`
        ADD      R0,SP,#+12
        SWI      +22
// 1906   strcpy(name,path);
        ADD      R1,SP,#+12
        LDR      R0,??DataTable594  ;; name
        SWI      +26
// 1907   
// 1908   strcat(name,format);
        ADD      R1,SP,#+4
        LDR      R0,??DataTable594  ;; name
        SWI      +23
// 1909   if (FindFirstFile(&de,name,&err))
        MOV      R2,SP
        LDR      R1,??DataTable594  ;; name
        ADD      R0,SP,#+140
        SWI      +107
        CMP      R0,#+0
        BEQ      ??CreatePlaylist_0
// 1910   {
// 1911     do
// 1912     {
// 1913       strcpy(name,path);
??CreatePlaylist_2:
        ADD      R1,SP,#+12
        LDR      R0,??DataTable594  ;; name
        SWI      +26
// 1914       strcat(name,de.file_name);
        ADD      R1,SP,#+53
        ADD      R1,R1,#+256
        LDR      R0,??DataTable594  ;; name
        SWI      +23
// 1915       sprintf(spysok[1][NumberOfTracks],de.file_name);
        ADD      R1,SP,#+53
        ADD      R1,R1,#+256
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable603  ;; NumberOfTracks
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable606  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 1916       sprintf(spysok[0][NumberOfTracks],path);
        ADD      R1,SP,#+12
        LDR      R0,??DataTable603  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        LDR      R2,??DataTable606  ;; spysok
        ADD      R0,R2,R0, LSL #+7
        SWI      +22
// 1917       NumberOfTracks++;
        LDR      R0,??DataTable603  ;; NumberOfTracks
        LDR      R1,??DataTable603  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 1918     }
// 1919     while(FindNextFile(&de,&err));
        MOV      R1,SP
        ADD      R0,SP,#+140
        SWI      +108
        CMP      R0,#+0
        BNE      ??CreatePlaylist_2
// 1920   }
// 1921   }
// 1922   
// 1923   if (strlen(format_2)!=0)
??CreatePlaylist_0:
        LDR      R0,??DataTable560  ;; format_2
        SWI      +27
        CMP      R0,#+0
        BEQ      ??CreatePlaylist_3
// 1924   {
// 1925   sprintf(format,"*.%s",format_2);
        LDR      R2,??DataTable560  ;; format_2
        LDR      R1,??CreatePlaylist_1  ;; `?<Constant "*.%s">`
        ADD      R0,SP,#+4
        SWI      +22
// 1926   
// 1927   sprintf(path,"%s%c",foldder,'\\');
        MOV      R3,#+92
        MOV      R2,R4
        LDR      R1,??DataTable589  ;; `?<Constant "%s%c">`
        ADD      R0,SP,#+12
        SWI      +22
// 1928   strcpy(name,path);
        ADD      R1,SP,#+12
        LDR      R0,??DataTable594  ;; name
        SWI      +26
// 1929   
// 1930   strcat(name,format);
        ADD      R1,SP,#+4
        LDR      R0,??DataTable594  ;; name
        SWI      +23
// 1931   if (FindFirstFile(&de,name,&err))
        MOV      R2,SP
        LDR      R1,??DataTable594  ;; name
        ADD      R0,SP,#+140
        SWI      +107
        CMP      R0,#+0
        BEQ      ??CreatePlaylist_3
// 1932   {
// 1933     do
// 1934     {
// 1935       strcpy(name,path);
??CreatePlaylist_4:
        ADD      R1,SP,#+12
        LDR      R0,??DataTable594  ;; name
        SWI      +26
// 1936       strcat(name,de.file_name);
        ADD      R1,SP,#+53
        ADD      R1,R1,#+256
        LDR      R0,??DataTable594  ;; name
        SWI      +23
// 1937       sprintf(spysok[1][NumberOfTracks],de.file_name);
        ADD      R1,SP,#+53
        ADD      R1,R1,#+256
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable603  ;; NumberOfTracks
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable606  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 1938       sprintf(spysok[0][NumberOfTracks],path);
        ADD      R1,SP,#+12
        LDR      R0,??DataTable603  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        LDR      R2,??DataTable606  ;; spysok
        ADD      R0,R2,R0, LSL #+7
        SWI      +22
// 1939       NumberOfTracks++;
        LDR      R0,??DataTable603  ;; NumberOfTracks
        LDR      R1,??DataTable603  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 1940     }
// 1941     while(FindNextFile(&de,&err));
        MOV      R1,SP
        ADD      R0,SP,#+140
        SWI      +108
        CMP      R0,#+0
        BNE      ??CreatePlaylist_4
// 1942   }
// 1943   }
// 1944 
// 1945   if (strlen(format_3)!=0)
??CreatePlaylist_3:
        LDR      R0,??DataTable574  ;; format_3
        SWI      +27
        CMP      R0,#+0
        BEQ      ??CreatePlaylist_5
// 1946   {
// 1947   sprintf(format,"*.%s",format_3);
        LDR      R2,??DataTable574  ;; format_3
        LDR      R1,??CreatePlaylist_1  ;; `?<Constant "*.%s">`
        ADD      R0,SP,#+4
        SWI      +22
// 1948   
// 1949   sprintf(path,"%s%c",foldder,'\\');
        MOV      R3,#+92
        MOV      R2,R4
        LDR      R1,??DataTable589  ;; `?<Constant "%s%c">`
        ADD      R0,SP,#+12
        SWI      +22
// 1950   strcpy(name,path);
        ADD      R1,SP,#+12
        LDR      R0,??DataTable594  ;; name
        SWI      +26
// 1951   
// 1952   strcat(name,format);
        ADD      R1,SP,#+4
        LDR      R0,??DataTable594  ;; name
        SWI      +23
// 1953   if (FindFirstFile(&de,name,&err))
        MOV      R2,SP
        LDR      R1,??DataTable594  ;; name
        ADD      R0,SP,#+140
        SWI      +107
        CMP      R0,#+0
        BEQ      ??CreatePlaylist_5
// 1954   {
// 1955     do
// 1956     {
// 1957       strcpy(name,path);
??CreatePlaylist_6:
        ADD      R1,SP,#+12
        LDR      R0,??DataTable594  ;; name
        SWI      +26
// 1958       strcat(name,de.file_name);
        ADD      R1,SP,#+53
        ADD      R1,R1,#+256
        LDR      R0,??DataTable594  ;; name
        SWI      +23
// 1959       sprintf(spysok[1][NumberOfTracks],de.file_name);
        ADD      R1,SP,#+53
        ADD      R1,R1,#+256
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable603  ;; NumberOfTracks
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable606  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 1960       sprintf(spysok[0][NumberOfTracks],path);
        ADD      R1,SP,#+12
        LDR      R0,??DataTable603  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        LDR      R2,??DataTable606  ;; spysok
        ADD      R0,R2,R0, LSL #+7
        SWI      +22
// 1961       NumberOfTracks++;
        LDR      R0,??DataTable603  ;; NumberOfTracks
        LDR      R1,??DataTable603  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 1962     }
// 1963     while(FindNextFile(&de,&err));
        MOV      R1,SP
        ADD      R0,SP,#+140
        SWI      +108
        CMP      R0,#+0
        BNE      ??CreatePlaylist_6
// 1964   }
// 1965   }
// 1966   
// 1967   if (strlen(format_4)!=0)
??CreatePlaylist_5:
        LDR      R0,??DataTable588  ;; format_4
        SWI      +27
        CMP      R0,#+0
        BEQ      ??CreatePlaylist_7
// 1968   {
// 1969   sprintf(format,"*.%s",format_4);
        LDR      R2,??DataTable588  ;; format_4
        LDR      R1,??CreatePlaylist_1  ;; `?<Constant "*.%s">`
        ADD      R0,SP,#+4
        SWI      +22
// 1970   
// 1971   sprintf(path,"%s%c",foldder,'\\');
        MOV      R3,#+92
        MOV      R2,R4
        LDR      R1,??DataTable589  ;; `?<Constant "%s%c">`
        ADD      R0,SP,#+12
        SWI      +22
// 1972   strcpy(name,path);
        ADD      R1,SP,#+12
        LDR      R0,??DataTable594  ;; name
        SWI      +26
// 1973   
// 1974   strcat(name,format);
        ADD      R1,SP,#+4
        LDR      R0,??DataTable594  ;; name
        SWI      +23
// 1975   if (FindFirstFile(&de,name,&err))
        MOV      R2,SP
        LDR      R1,??DataTable594  ;; name
        ADD      R0,SP,#+140
        SWI      +107
        CMP      R0,#+0
        BEQ      ??CreatePlaylist_7
// 1976   {
// 1977     do
// 1978     {
// 1979       strcpy(name,path);
??CreatePlaylist_8:
        ADD      R1,SP,#+12
        LDR      R0,??DataTable594  ;; name
        SWI      +26
// 1980       strcat(name,de.file_name);
        ADD      R1,SP,#+53
        ADD      R1,R1,#+256
        LDR      R0,??DataTable594  ;; name
        SWI      +23
// 1981       sprintf(spysok[1][NumberOfTracks],de.file_name);
        ADD      R1,SP,#+53
        ADD      R1,R1,#+256
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable603  ;; NumberOfTracks
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable606  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 1982       sprintf(spysok[0][NumberOfTracks],path);
        ADD      R1,SP,#+12
        LDR      R0,??DataTable603  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        LDR      R2,??DataTable606  ;; spysok
        ADD      R0,R2,R0, LSL #+7
        SWI      +22
// 1983       NumberOfTracks++;
        LDR      R0,??DataTable603  ;; NumberOfTracks
        LDR      R1,??DataTable603  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 1984     }
// 1985     while(FindNextFile(&de,&err));
        MOV      R1,SP
        ADD      R0,SP,#+140
        SWI      +108
        CMP      R0,#+0
        BNE      ??CreatePlaylist_8
// 1986   }
// 1987   }
// 1988   
// 1989   FindClose(&de,&err);
??CreatePlaylist_7:
        MOV      R1,SP
        ADD      R0,SP,#+140
        SWI      +109
// 1990 }
        ADD      SP,SP,#+580      ;; stack cleaning
        CFI CFA R13+8
        POP      {R4,PC}          ;; return
        DATA
??CreatePlaylist_1:
        DC32     `?<Constant "*.%s">`
        CFI EndBlock cfiBlock117

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable546:
        DC32     format_1

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable560:
        DC32     format_2

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable574:
        DC32     format_3

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable588:
        DC32     format_4

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable589:
        DC32     `?<Constant "%s%c">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable594:
        DC32     name

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock118 Using cfiCommon0
        CFI NoFunction
        THUMB
??findlisttime??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock118
        REQUIRE findlisttime
// 1991 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock119 Using cfiCommon1
        CFI Function findlisttime
        ARM
// 1992 void findlisttime(void)
// 1993 {
findlisttime:
        PUSH     {R4-R7,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R7 Frame(CFA, -8)
        CFI R6 Frame(CFA, -12)
        CFI R5 Frame(CFA, -16)
        CFI R4 Frame(CFA, -20)
        CFI CFA R13+20
        SUB      SP,SP,#+256
        CFI CFA R13+276
// 1994   char s[256];
// 1995   for (int i=1;(i<NumberOfTracks)&&(pracuje);i++)
        MOV      R4,#+1
        LDR      R7,??findlisttime_0  ;; timelength + 4
        LDR      R6,??findlisttime_0+0x4  ;; spysok + 32768
        LDR      R5,??findlisttime_0+0x8  ;; spysok + 128
        B        ??findlisttime_1
// 1996   {
// 1997     sprintf(s,"%s%s",spysok[0][i],spysok[1][i]);
??findlisttime_2:
        MOV      R3,R6
        MOV      R2,R5
        LDR      R1,??DataTable607  ;; `?<Constant "%s%s">`
        MOV      R0,SP
        SWI      +22
// 1998     if (timelength[i]==-1){timelength[i]=findmp3length(s);}
        LDR      R0,[R7, #+0]
        CMN      R0,#+1
        BNE      ??findlisttime_3
        MOV      R0,SP
        BL       findmp3length
        STR      R0,[R7, #+0]
// 1999     if (WhatToView==1){REDRAW();}
??findlisttime_3:
        LDR      R0,??DataTable609  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??findlisttime_4
        SWI      +370
// 2000   }
??findlisttime_4:
        ADD      R4,R4,#+1
        ADD      R5,R5,#+128
        ADD      R6,R6,#+128
        ADD      R7,R7,#+4
??findlisttime_1:
        LDR      R0,??DataTable603  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R4,R0
        BGE      ??findlisttime_5
        LDR      R0,??DataTable604  ;; pracuje
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??findlisttime_2
// 2001   sprintf(s,"%s%s",spysok[0][0],spysok[1][0]);
??findlisttime_5:
        LDR      R3,??DataTable605  ;; spysok + 32640
        LDR      R2,??DataTable606  ;; spysok
        LDR      R1,??DataTable607  ;; `?<Constant "%s%s">`
        MOV      R0,SP
        SWI      +22
// 2002   timelength[0]=findmp3length(s);
        MOV      R0,SP
        BL       findmp3length
        LDR      R1,??DataTable608  ;; timelength
        STR      R0,[R1, #+0]
// 2003   if (WhatToView==1){REDRAW();}
        LDR      R0,??DataTable609  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??findlisttime_6
        SWI      +370
// 2004 }
??findlisttime_6:
        ADD      SP,SP,#+256      ;; stack cleaning
        CFI CFA R13+20
        POP      {R4-R7,PC}       ;; return
        DATA
??findlisttime_0:
        DC32     timelength + 4
        DC32     spysok + 32768
        DC32     spysok + 128
        CFI EndBlock cfiBlock119

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable603:
        DC32     NumberOfTracks

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable604:
        DC32     pracuje

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable605:
        DC32     spysok + 32640

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable606:
        DC32     spysok

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable607:
        DC32     `?<Constant "%s%s">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable608:
        DC32     timelength

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable609:
        DC32     WhatToView

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock120 Using cfiCommon0
        CFI NoFunction
        THUMB
??OnKey??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock120
        REQUIRE OnKey
// 2005 

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
// 2006 int longpress=0;
longpress:
        DS8 4

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock121 Using cfiCommon1
        CFI Function OnKey
        ARM
// 2007 int OnKey(MAIN_GUI *data, GUI_MSG *msg) //OnKey
// 2008 {
OnKey:
        PUSH     {R4-R10,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R10 Frame(CFA, -8)
        CFI R9 Frame(CFA, -12)
        CFI R8 Frame(CFA, -16)
        CFI R7 Frame(CFA, -20)
        CFI R6 Frame(CFA, -24)
        CFI R5 Frame(CFA, -28)
        CFI R4 Frame(CFA, -32)
        CFI CFA R13+32
        SUB      SP,SP,#+256
        CFI CFA R13+288
        MOV      R4,R1
// 2009     if (!toview)
        LDR      R0,??OnKey_4     ;; toview
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??OnKey_5
// 2010     {
// 2011     switch(WhatToView)
        LDR      R0,??OnKey_4+0x4  ;; WhatToView
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??OnKey_6
        SUBS     R0,R0,#+1
        BEQ      ??OnKey_7
        SUBS     R0,R0,#+2
        BEQ      ??OnKey_8
        B        ??OnKey_9
// 2012       {
// 2013       case 0:
// 2014       {
// 2015   if ((msg->gbsmsg->msg==KEY_DOWN)&&(IsUnlocked()))
??OnKey_6:
        LDR      R0,[R4, #+4]
        LDRSH    R0,[R0, #+2]
        MOV      R1,#+147
        ORR      R1,R1,#0x100
        CMP      R0,R1
        BNE      ??OnKey_10
        SWI      +67
        CMP      R0,#+0
        BEQ      ??OnKey_10
// 2016   {
// 2017     switch(msg->gbsmsg->submess)
        LDR      R0,[R4, #+4]
        LDR      R0,[R0, #+4]
        SUB      R0,R0,#+1
        CMP      R0,#+61
        BHI      ??OnKey_10
        ADR      R1,??OnKey_0
        LDRB     R1,[R1, R0]
        ADD      PC,PC,R1, LSL #+2
        DATA
??OnKey_0:
        DC8      +17,+112,+112,+111
        DC8      +112,+112,+112,+112
        DC8      +112,+112,+87,+15
        DC8      +112,+112,+112,+112
        DC8      +112,+112,+112,+112
        DC8      +112,+112,+112,+112
        DC8      +112,+23,+112,+112
        DC8      +112,+112,+112,+112
        DC8      +112,+112,+52,+112
        DC8      +112,+112,+112,+112
        DC8      +112,+50,+112,+112
        DC8      +112,+112,+112,+48
        DC8      +25,+28,+31,+33
        DC8      +35,+39,+42,+44
        DC8      +46,+112,+54,+71
        DC8      +83,+85,+0,+0
        ARM
// 2018     {
// 2019     case RED_BUTTON:
// 2020       {
// 2021         WhatToDo(13);
??OnKey_11:
        MOV      R0,#+13
        BL       WhatToDo
// 2022       }
// 2023     case LEFT_SOFT:if (playing!=0){
??OnKey_12:
        LDR      R0,??OnKey_4+0x8  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
// 2024                                    WhatToDo(1);
        MOVNE    R0,#+1
??OnKey_13:
        BL       WhatToDo
// 2025                                    break;
        B        ??OnKey_10
// 2026                                   }
// 2027     case ENTER_BUTTON:
// 2028         WhatToDo(0);
??OnKey_14:
        MOV      R0,#+0
        B        ??OnKey_13
// 2029           break;
// 2030     case '1':{WhatToDo(Key1);}break;
??OnKey_15:
        LDR      R0,??OnKey_4+0xC  ;; Key1
??OnKey_16:
        LDR      R0,[R0, #+0]
        B        ??OnKey_13
// 2031     case '2':{WhatToDo(Key2);}break;
??OnKey_17:
        LDR      R0,??OnKey_4+0x10  ;; Key2
??OnKey_18:
        LDR      R0,[R0, #+0]
        B        ??OnKey_13
// 2032     case '3':{WhatToDo(Key3);}break;
??OnKey_19:
        LDR      R0,??OnKey_4+0x14  ;; Key3
        B        ??OnKey_16
// 2033     case '4':{WhatToDo(Key4);}break;
??OnKey_20:
        LDR      R0,??OnKey_4+0x18  ;; Key4
        B        ??OnKey_18
// 2034     case '5':{WhatToDo(Key5);}break;
??OnKey_21:
        LDR      R0,??OnKey_4+0x1C  ;; Key5
??OnKey_22:
        LDR      R0,[R0, #+0]
        BL       WhatToDo
        B        ??OnKey_10
// 2035     case '6':{WhatToDo(Key6);}break;
??OnKey_23:
        LDR      R0,??OnKey_4+0x20  ;; Key6
??OnKey_24:
        LDR      R0,[R0, #+0]
        B        ??OnKey_13
// 2036     case '7':{WhatToDo(Key7);}break;
??OnKey_25:
        LDR      R0,??OnKey_4+0x24  ;; Key7
        B        ??OnKey_16
// 2037     case '8':{WhatToDo(Key8);}break;
??OnKey_26:
        LDR      R0,??OnKey_4+0x28  ;; Key8
        B        ??OnKey_18
// 2038     case '9':{WhatToDo(Key9);}break;
??OnKey_27:
        LDR      R0,??OnKey_4+0x2C  ;; Key9
        B        ??OnKey_22
// 2039     case '0':{WhatToDo(Key0);}break;
??OnKey_28:
        LDR      R0,??OnKey_4+0x30  ;; Key0
        B        ??OnKey_24
// 2040     case '*':{WhatToDo(KeyZ);}break;
??OnKey_29:
        LDR      R0,??OnKey_4+0x34  ;; KeyZ
        B        ??OnKey_16
// 2041     case '#':{WhatToDo(KeyR);}break;
??OnKey_30:
        LDR      R0,??OnKey_4+0x38  ;; KeyR
        B        ??OnKey_18
// 2042     case UP_BUTTON:
// 2043       ringoff=0;
??OnKey_31:
        LDR      R0,??OnKey_4+0x3C  ;; ringoff
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 2044       if (ringoff==1)
// 2045         {
// 2046           PlayMelody_ChangeVolume(PLAY_ID,CurentVolume);
// 2047         }
// 2048       else
// 2049         {
// 2050           if (CurentVolume!=MAXVOLUME)
        LDR      R0,??OnKey_4+0x40  ;; CurentVolume
        LDR      R0,[R0, #+0]
        CMP      R0,#+4
        BEQ      ??OnKey_32
// 2051               {
// 2052                 CurentVolume++;
        LDR      R0,??OnKey_4+0x40  ;; CurentVolume
        LDR      R1,??OnKey_4+0x40  ;; CurentVolume
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
??OnKey_33:
        STR      R1,[R0, #+0]
// 2053                 PlayMelody_ChangeVolume(PLAY_ID,CurentVolume);
        LDR      R0,??OnKey_4+0x44  ;; PLAY_ID
        LDR      R0,[R0, #+0]
        SWI      +549
// 2054               }
// 2055         }
// 2056       REDRAW();
??OnKey_32:
        SWI      +370
        B        ??OnKey_10
// 2057       break;
// 2058     case DOWN_BUTTON:
// 2059       ringoff=0;
??OnKey_34:
        LDR      R0,??OnKey_4+0x3C  ;; ringoff
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 2060       if (ringoff==1)
// 2061         {
// 2062           PlayMelody_ChangeVolume(PLAY_ID,CurentVolume);
// 2063         }
// 2064       else
// 2065         {
// 2066           if (CurentVolume!=0)
        LDR      R0,??OnKey_4+0x40  ;; CurentVolume
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??OnKey_32
// 2067             {
// 2068               CurentVolume--;
        LDR      R0,??OnKey_4+0x40  ;; CurentVolume
        LDR      R1,??OnKey_4+0x40  ;; CurentVolume
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        B        ??OnKey_33
// 2069               PlayMelody_ChangeVolume(PLAY_ID,CurentVolume);
// 2070             }
// 2071         }
// 2072       REDRAW();
// 2073       break;
// 2074     case LEFT_BUTTON:
// 2075       {
// 2076         PlayPrevious();
??OnKey_35:
        BL       PlayPrevious
        B        ??OnKey_10
// 2077       }
// 2078       break;
// 2079     case RIGHT_BUTTON:
// 2080       {
// 2081         PlayNext();
??OnKey_36:
        BL       PlayNext
        B        ??OnKey_10
// 2082       }
// 2083       break;
// 2084     case GREEN_BUTTON: 
// 2085       WhatToView=1;
??OnKey_37:
        LDR      R0,??OnKey_4+0x4  ;; WhatToView
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2086       selected=cp;
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R1,??OnKey_4+0x4C  ;; cp
        LDR      R1,[R1, #+0]
        STR      R1,[R0, #+0]
// 2087       for (int i=0;i<256;i++){spysokselected[i]=0;}
        LDR      R0,??OnKey_4+0x50  ;; spysokselected
        MOV      R1,#+256
        MOV      R2,#+0
??OnKey_38:
        STR      R2,[R0], #+4
        SUBS     R1,R1,#+1
        BNE      ??OnKey_38
// 2088       xdisp=1;
        LDR      R0,??OnKey_4+0x54  ;; xdisp
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2089       xdispnapriamok=-3;
        LDR      R0,??OnKey_4+0x58  ;; xdispnapriamok
        MVN      R1,#+2
        STR      R1,[R0, #+0]
// 2090       GBS_StartTimerProc(&Scroll,50,Scrolling);
        LDR      R2,??OnKey_4+0x5C  ;; Scrolling
        MOV      R1,#+50
        LDR      R0,??OnKey_4+0x60  ;; Scroll
        SWI      +77
// 2091       REDRAW();
        B        ??OnKey_32
// 2092       break;
// 2093     case RIGHT_SOFT:
// 2094       {
// 2095         ShowMainMenu();
??OnKey_39:
        _BLF     ShowMainMenu,??ShowMainMenu??rA
// 2096       }
// 2097       break;
// 2098     }
// 2099   }
// 2100   if (msg->gbsmsg->msg==KEY_UP){longpress=0;}
??OnKey_10:
        LDR      R0,[R4, #+4]
        LDRSH    R0,[R0, #+2]
        CMP      R0,#+404
        LDREQ    R0,??OnKey_4+0x64  ;; longpress
        MOVEQ    R1,#+0
        STREQ    R1,[R0, #+0]
// 2101   if (msg->gbsmsg->msg==LONG_PRESS)
        LDR      R0,[R4, #+4]
        LDRSH    R0,[R0, #+2]
        MOV      R1,#+149
        ORR      R1,R1,#0x100
        CMP      R0,R1
        BNE      ??OnKey_9
// 2102   {if (!IsUnlocked())
        SWI      +67
        CMP      R0,#+0
        BNE      ??OnKey_40
// 2103   {
// 2104       int z;
// 2105       switch(GetProfile()+1)
        SWI      +182
        ADD      R0,R0,#+1
        MOV      R0,R0, LSL #+16
        MOV      R0,R0, LSR #+16
        SUB      R0,R0,#+1
        CMP      R0,#+7
        BHI      ??OnKey_41
        ADR      R1,??OnKey_1
        LDRB     R1,[R1, R0]
        ADD      PC,PC,R1, LSL #+2
        DATA
??OnKey_1:
        DC8      +1,+3,+5,+7
        DC8      +9,+11,+13,+15
        ARM
// 2106       {
// 2107       case 1:z=profile1;break;
??OnKey_42:
        LDR      R0,??OnKey_4+0x68  ;; profile1
        B        ??OnKey_43
// 2108       case 2:z=profile2;break;
??OnKey_44:
        LDR      R0,??OnKey_4+0x6C  ;; profile2
        B        ??OnKey_43
// 2109       case 3:z=profile3;break;
??OnKey_45:
        LDR      R0,??OnKey_4+0x70  ;; profile3
        B        ??OnKey_43
// 2110       case 4:z=profile4;break;
??OnKey_46:
        LDR      R0,??OnKey_4+0x74  ;; profile4
        B        ??OnKey_43
// 2111       case 5:z=profile5;break;
??OnKey_47:
        LDR      R0,??OnKey_4+0x78  ;; profile5
        B        ??OnKey_43
// 2112       case 6:z=profile6;break;
??OnKey_48:
        LDR      R0,??OnKey_4+0x7C  ;; profile6
        B        ??OnKey_43
// 2113       case 7:z=profile7;break;
??OnKey_49:
        LDR      R0,??OnKey_50    ;; profile7
        B        ??OnKey_43
// 2114       case 8:z=profile8;break;
??OnKey_51:
        LDR      R0,??OnKey_50+0x4  ;; profile8
??OnKey_43:
        LDR      R5,[R0, #+0]
// 2115       }
// 2116       SetIllumination(0,1,z,0);
??OnKey_41:
        MOV      R3,#+0
        MOV      R2,R5, LSL #+16
        MOV      R2,R2, LSR #+16
        MOV      R1,#+1
        MOV      R0,#+0
        SWI      +8
// 2117       SetIllumination(0,1,0,2000);
        MOV      R3,#+2000
        MOV      R2,#+0
        MOV      R1,#+1
        MOV      R0,R2
        SWI      +8
// 2118   }
// 2119   else 
// 2120   {
// 2121     switch(msg->gbsmsg->submess)
// 2122     {
// 2123       case'*':
// 2124         {
// 2125           /*if (longpress!=1){WhatToDo(17);}
// 2126            longpress=1;*/
// 2127        }break;
// 2128     }
// 2129   }
// 2130     switch(msg->gbsmsg->submess)
??OnKey_40:
        LDR      R0,[R4, #+4]
        LDR      R0,[R0, #+4]
        CMP      R0,#+35
        BNE      ??OnKey_9
// 2131     {
// 2132       case'#':
// 2133         {
// 2134           if (longpress!=1){WhatToDo(17);}
        LDR      R0,??OnKey_4+0x64  ;; longpress
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BEQ      ??OnKey_52
        MOV      R0,#+17
        BL       WhatToDo
// 2135            longpress=1;
??OnKey_52:
        LDR      R0,??OnKey_4+0x64  ;; longpress
        MOV      R1,#+1
        STR      R1,[R0, #+0]
        B        ??OnKey_9
// 2136        }break;
// 2137     }
// 2138   }
// 2139     }break;
// 2140     
// 2141   case 1:
// 2142     {
// 2143   if ((msg->gbsmsg->msg==KEY_DOWN)&&(IsUnlocked()))
??OnKey_7:
        LDR      R0,[R4, #+4]
        LDRSH    R0,[R0, #+2]
        MOV      R1,#+147
        ORR      R1,R1,#0x100
        CMP      R0,R1
        BNE      ??OnKey_9
        SWI      +67
        CMP      R0,#+0
        BEQ      ??OnKey_53
// 2144   {
// 2145       switch(msg->gbsmsg->submess)
        LDR      R0,[R4, #+4]
        LDR      R0,[R0, #+4]
        SUB      R0,R0,#+1
        CMP      R0,#+59
        BHI      ??OnKey_9
        ADR      R1,??OnKey_2
        MOV      R0,R0, LSL #+1
        LDRH     R1,[R1, R0]
        ADD      PC,PC,R1, LSL #+2
        DATA
??OnKey_2:
        DC16     +502,+944,+944,+490
        DC16     +944,+944,+944,+944
        DC16     +944,+944,+944,+29
        DC16     +944,+944,+944,+944
        DC16     +944,+944,+944,+944
        DC16     +944,+944,+944,+944
        DC16     +944,+616,+944,+944
        DC16     +944,+944,+944,+944
        DC16     +944,+944,+644,+944
        DC16     +944,+944,+944,+944
        DC16     +944,+57,+944,+944
        DC16     +944,+944,+944,+487
        DC16     +944,+92,+944,+944
        DC16     +83,+944,+944,+287
        DC16     +944,+944,+476,+31
        ARM
// 2146     {
// 2147       case RED_BUTTON:
// 2148       {
// 2149         WhatToView=0;
??OnKey_54:
        LDR      R0,??OnKey_4+0x4  ;; WhatToView
        B        ??OnKey_55
// 2150         REDRAW();
// 2151       }break;
// 2152       case DOWN_BUTTON:
// 2153       {
// 2154         selected++;
??OnKey_56:
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2155         if(selected>NumberOfTracks-1){selected=0;}
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        SUB      R0,R0,#+1
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        BGE      ??OnKey_57
        LDR      R0,??OnKey_4+0x48  ;; selected
        MOV      R1,#+0
??OnKey_58:
        STR      R1,[R0, #+0]
// 2156         xdisp=1;
??OnKey_57:
        LDR      R0,??OnKey_4+0x54  ;; xdisp
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2157         xdispnapriamok=-3;
        LDR      R0,??OnKey_4+0x58  ;; xdispnapriamok
        MVN      R1,#+2
        STR      R1,[R0, #+0]
// 2158         GBS_StartTimerProc(&Scroll,50,Scrolling);
        LDR      R2,??OnKey_4+0x5C  ;; Scrolling
??OnKey_59:
        MOV      R1,#+50
        LDR      R0,??OnKey_4+0x60  ;; Scroll
        SWI      +77
// 2159         REDRAW();
        B        ??OnKey_60
// 2160       }break;
// 2161     /*case '9':
// 2162       {
// 2163         backgroundselected++;
// 2164       }
// 2165       break;*/
// 2166       case '*':
// 2167       {
// 2168         switch(playlistmode)
??OnKey_61:
        LDR      R0,??DataTable611  ;; playlistmode
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??OnKey_62
        SUBS     R0,R0,#+1
        BEQ      ??OnKey_63
        SUB      R0,R0,#+1
        CMP      R0,#+1
        BLS      ??OnKey_64
        B        ??OnKey_9
// 2169         {
// 2170         case 0:
// 2171           {
// 2172             sprintf(PlaylistToSave,"%splaylists\\standart.ipl",playerfolder);
??OnKey_62:
        LDR      R2,??DataTable617  ;; playerfolder
        LDR      R1,??OnKey_50+0xC  ;; `?<Constant "%splaylists\\\\standart.ipl">`
        LDR      R0,??DataTable618  ;; PlaylistToSave
        SWI      +22
// 2173             CreateSaveAsDialog();
??OnKey_65:
        BL       CreateSaveAsDialog
        B        ??OnKey_9
// 2174           };break;
// 2175         case 1:
// 2176           {
// 2177             sprintf(PlaylistToSave,LastPlaylist);
??OnKey_63:
        LDR      R1,??DataTable614  ;; LastPlaylist
        LDR      R0,??DataTable618  ;; PlaylistToSave
        SWI      +22
// 2178             CreateSaveAsDialog();
        B        ??OnKey_65
// 2179           };break;
// 2180         case 2:
// 2181           {
// 2182             sprintf(PlaylistToSave,"%splaylists\\%s.ipl",playerfolder,playlistname);
??OnKey_64:
        LDR      R3,??DataTable616  ;; playlistname
        LDR      R2,??DataTable617  ;; playerfolder
        LDR      R1,??OnKey_50+0x10  ;; `?<Constant "%splaylists\\\\%s.ipl">`
        LDR      R0,??DataTable618  ;; PlaylistToSave
        SWI      +22
// 2183             CreateSaveAsDialog();
        B        ??OnKey_65
// 2184           };break;
// 2185         case 3:
// 2186           {
// 2187             sprintf(PlaylistToSave,"%splaylists\\%s.ipl",playerfolder,playlistname);
// 2188             CreateSaveAsDialog();
// 2189           };break;
// 2190         }
// 2191       }break;
// 2192     case '5':
// 2193       {
// 2194         spysokselected[selected]=1-spysokselected[selected];
??OnKey_66:
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R1,??OnKey_4+0x50  ;; spysokselected
        MOV      R2,R0
        LDR      R3,??OnKey_4+0x50  ;; spysokselected
        LDR      R2,[R3, +R2, LSL #+2]
        RSB      R2,R2,#+1
        STR      R2,[R1, +R0, LSL #+2]
// 2195         selected++;
        B        ??OnKey_56
// 2196         if(selected>NumberOfTracks-1){selected=0;}
// 2197         xdisp=1;
// 2198         xdispnapriamok=-3;
// 2199         GBS_StartTimerProc(&Scroll,50,Scrolling);
// 2200         REDRAW();
// 2201       }break;
// 2202     case '2':
// 2203       {
// 2204         int y=0;
??OnKey_67:
        MOV      R0,#+0
// 2205         for (int i=0;(i<NumberOfTracks)&&(!y);i++){if(spysokselected[i]){y=1;}}
        MOV      R1,#+0
        LDR      R2,??DataTable662  ;; NumberOfTracks
        LDR      R2,[R2, #+0]
        CMP      R2,#+1
        BLT      ??OnKey_68
        LDR      R2,??OnKey_4+0x50  ;; spysokselected
??OnKey_69:
        LDR      R3,[R2, #+0]
        CMP      R3,#+0
        MOVNE    R0,#+1
        ADD      R1,R1,#+1
        ADD      R2,R2,#+4
        LDR      R3,??DataTable662  ;; NumberOfTracks
        LDR      R3,[R3, #+0]
        CMP      R1,R3
        BGE      ??OnKey_70
        CMP      R0,#+0
        BEQ      ??OnKey_69
// 2206           if (!y)
??OnKey_70:
        CMP      R0,#+0
        BNE      ??OnKey_71
// 2207           {
// 2208             int j=selected;
??OnKey_68:
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R4,[R0, #+0]
// 2209             selected--;
        SUB      R1,R4,#+1
        STR      R1,[R0, #+0]
// 2210             if(selected<0){selected=NumberOfTracks-1;}
        CMP      R1,#+0
        BPL      ??OnKey_72
        LDR      R1,??DataTable662  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2211             sprintf(name,spysok[0][selected]);
??OnKey_72:
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable752  ;; spysok
        ADD      R1,R1,R0, LSL #+7
        LDR      R0,??DataTable696  ;; name
        SWI      +22
// 2212             sprintf(spysok[0][selected],spysok[0][j]);
        LDR      R0,??DataTable752  ;; spysok
        ADD      R1,R0,R4, LSL #+7
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R2,??DataTable752  ;; spysok
        ADD      R0,R2,R0, LSL #+7
        SWI      +22
// 2213             sprintf(spysok[0][j],name);
        LDR      R1,??DataTable696  ;; name
        LDR      R0,??DataTable752  ;; spysok
        ADD      R0,R0,R4, LSL #+7
        SWI      +22
// 2214             sprintf(name,spysok[1][selected]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable752  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R1,R0,R1
        LDR      R0,??DataTable696  ;; name
        SWI      +22
// 2215             sprintf(spysok[1][selected],spysok[1][j]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable752  ;; spysok
        ADD      R1,R1,R4, LSL #+7
        ADD      R1,R0,R1
        LDR      R2,??OnKey_4+0x48  ;; selected
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable752  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 2216             sprintf(spysok[1][j],name);
        LDR      R1,??DataTable696  ;; name
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable752  ;; spysok
        ADD      R2,R2,R4, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 2217             long y=timelength[selected];
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable711  ;; timelength
        LDR      R0,[R1, +R0, LSL #+2]
// 2218             timelength[selected]=timelength[j];
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable711  ;; timelength
        LDR      R3,??DataTable711  ;; timelength
        LDR      R3,[R3, +R4, LSL #+2]
        STR      R3,[R2, +R1, LSL #+2]
// 2219             timelength[j]=y;
        LDR      R1,??DataTable711  ;; timelength
        STR      R0,[R1, +R4, LSL #+2]
// 2220             y=notplayed[selected];
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable706  ;; notplayed
        LDR      R0,[R1, +R0, LSL #+2]
// 2221             notplayed[selected]=notplayed[j];
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable706  ;; notplayed
        LDR      R3,??DataTable706  ;; notplayed
        LDR      R3,[R3, +R4, LSL #+2]
        STR      R3,[R2, +R1, LSL #+2]
// 2222             notplayed[j]=y;
        LDR      R1,??DataTable706  ;; notplayed
        STR      R0,[R1, +R4, LSL #+2]
// 2223             if (cp==j){cp=selected;}
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R0,[R0, #+0]
        CMP      R0,R4
        BNE      ??OnKey_73
??OnKey_74:
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        B        ??OnKey_58
// 2224             else
// 2225             {
// 2226               if (cp==selected){cp=j;}
??OnKey_73:
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        BNE      ??OnKey_57
        LDR      R0,??OnKey_4+0x4C  ;; cp
        STR      R4,[R0, #+0]
        B        ??OnKey_57
// 2227             }
// 2228           }
// 2229           else
// 2230           {
// 2231             for (int i=0;i<NumberOfTracks;i++)
??OnKey_71:
        MOV      R4,#+0
        LDR      R9,??OnKey_4+0x50  ;; spysokselected
        LDR      R8,??DataTable711  ;; timelength
        LDR      R7,??DataTable706  ;; notplayed
        LDR      R6,??DataTable752  ;; spysok
        LDR      R5,??DataTable686  ;; spysok + 32640
        B        ??OnKey_75
// 2232             {
// 2233               if(spysokselected[i])
// 2234               {
// 2235                 int j=i;
// 2236                 int t=i-1;
// 2237                 if (t<0){t=NumberOfTracks-1;}
// 2238                 sprintf(name,spysok[0][t]);
// 2239                 sprintf(spysok[0][t],spysok[0][j]);
// 2240                 sprintf(spysok[0][j],name);
// 2241                 sprintf(name,spysok[1][t]);
// 2242                 sprintf(spysok[1][t],spysok[1][j]);
// 2243                 sprintf(spysok[1][j],name);
// 2244                 long y=timelength[t];
// 2245                 timelength[t]=timelength[j];
// 2246                 timelength[j]=y;
// 2247                 y=notplayed[t];
// 2248                 notplayed[t]=notplayed[j];
// 2249                 notplayed[j]=y;
// 2250                 y=spysokselected[t];
// 2251                 spysokselected[t]=spysokselected[j];
// 2252                 spysokselected[j]=y;
// 2253                 if (cp==j){cp=i;}
// 2254                 else
// 2255                 {
// 2256                   if (cp==t){cp=j;}
??OnKey_76:
        LDR      R0,[R0, #+0]
        CMP      R0,R10
        BNE      ??OnKey_77
        LDR      R0,??OnKey_4+0x4C  ;; cp
??OnKey_78:
        STR      R4,[R0, #+0]
// 2257                 }
??OnKey_77:
        ADD      R4,R4,#+1
        ADD      R5,R5,#+128
        ADD      R6,R6,#+128
        ADD      R7,R7,#+4
        ADD      R8,R8,#+4
        ADD      R9,R9,#+4
??OnKey_75:
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R4,R0
        BGE      ??OnKey_57
        LDR      R0,[R9, #+0]
        CMP      R0,#+0
        BEQ      ??OnKey_77
        SUBS     R10,R4,#+1
        LDRMI    R0,??DataTable662  ;; NumberOfTracks
        LDRMI    R0,[R0, #+0]
        SUBMI    R10,R0,#+1
        LDR      R0,??DataTable752  ;; spysok
        ADD      R1,R0,R10, LSL #+7
        LDR      R0,??DataTable696  ;; name
        SWI      +22
        MOV      R1,R6
        LDR      R0,??DataTable752  ;; spysok
        ADD      R0,R0,R10, LSL #+7
        SWI      +22
        LDR      R1,??DataTable696  ;; name
        MOV      R0,R6
        SWI      +22
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable752  ;; spysok
        ADD      R1,R1,R10, LSL #+7
        ADD      R1,R0,R1
        LDR      R0,??DataTable696  ;; name
        SWI      +22
        MOV      R1,R5
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable752  ;; spysok
        ADD      R2,R2,R10, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
        LDR      R1,??DataTable696  ;; name
        MOV      R0,R5
        SWI      +22
        LDR      R0,??DataTable711  ;; timelength
        LDR      R0,[R0, +R10, LSL #+2]
        LDR      R1,??DataTable711  ;; timelength
        LDR      R2,[R8, #+0]
        STR      R2,[R1, +R10, LSL #+2]
        STR      R0,[R8, #+0]
        LDR      R0,??DataTable706  ;; notplayed
        LDR      R0,[R0, +R10, LSL #+2]
        LDR      R1,??DataTable706  ;; notplayed
        LDR      R2,[R7, #+0]
        STR      R2,[R1, +R10, LSL #+2]
        STR      R0,[R7, #+0]
        LDR      R0,??OnKey_4+0x50  ;; spysokselected
        LDR      R0,[R0, +R10, LSL #+2]
        LDR      R1,??OnKey_4+0x50  ;; spysokselected
        LDR      R2,[R9, #+0]
        STR      R2,[R1, +R10, LSL #+2]
        STR      R0,[R9, #+0]
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R0,[R0, #+0]
        CMP      R0,R4
        LDR      R0,??OnKey_4+0x4C  ;; cp
        BNE      ??OnKey_76
        B        ??OnKey_78
// 2258               }
// 2259             }
// 2260           }
// 2261            xdisp=1;
// 2262            xdispnapriamok=-3;
// 2263            GBS_StartTimerProc(&Scroll,50,Scrolling);
// 2264            REDRAW();
// 2265       };break;
// 2266     case '8':
// 2267       {
// 2268         int y=0;
??OnKey_79:
        MOV      R0,#+0
// 2269         for (int i=0;(i<NumberOfTracks)&&(!y);i++){if(spysokselected[i]){y=1;}}
        MOV      R1,#+0
        LDR      R2,??DataTable662  ;; NumberOfTracks
        LDR      R2,[R2, #+0]
        CMP      R2,#+1
        BLT      ??OnKey_80
        LDR      R2,??OnKey_4+0x50  ;; spysokselected
??OnKey_81:
        LDR      R3,[R2, #+0]
        CMP      R3,#+0
        MOVNE    R0,#+1
        ADD      R1,R1,#+1
        ADD      R2,R2,#+4
        LDR      R3,??DataTable662  ;; NumberOfTracks
        LDR      R3,[R3, #+0]
        CMP      R1,R3
        BGE      ??OnKey_82
        CMP      R0,#+0
        BEQ      ??OnKey_81
// 2270           if (!y)
??OnKey_82:
        CMP      R0,#+0
        BNE      ??OnKey_83
// 2271           {
// 2272             int j=selected;
??OnKey_80:
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R4,[R0, #+0]
// 2273             selected++;
        ADD      R1,R4,#+1
        STR      R1,[R0, #+0]
// 2274             if(selected>NumberOfTracks-1){selected=0;}
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        SUB      R0,R0,#+1
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        LDRLT    R0,??OnKey_4+0x48  ;; selected
        MOVLT    R1,#+0
        STRLT    R1,[R0, #+0]
// 2275             sprintf(name,spysok[0][selected]);
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable752  ;; spysok
        ADD      R1,R1,R0, LSL #+7
        LDR      R0,??DataTable696  ;; name
        SWI      +22
// 2276             sprintf(spysok[0][selected],spysok[0][j]);
        LDR      R0,??DataTable752  ;; spysok
        ADD      R1,R0,R4, LSL #+7
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R2,??DataTable752  ;; spysok
        ADD      R0,R2,R0, LSL #+7
        SWI      +22
// 2277             sprintf(spysok[0][j],name);
        LDR      R1,??DataTable696  ;; name
        LDR      R0,??DataTable752  ;; spysok
        ADD      R0,R0,R4, LSL #+7
        SWI      +22
// 2278             sprintf(name,spysok[1][selected]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable752  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R1,R0,R1
        LDR      R0,??DataTable696  ;; name
        SWI      +22
// 2279             sprintf(spysok[1][selected],spysok[1][j]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable752  ;; spysok
        ADD      R1,R1,R4, LSL #+7
        ADD      R1,R0,R1
        LDR      R2,??OnKey_4+0x48  ;; selected
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable752  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 2280             sprintf(spysok[1][j],name);
        LDR      R1,??DataTable696  ;; name
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable752  ;; spysok
        ADD      R2,R2,R4, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 2281             long y=timelength[selected];
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable711  ;; timelength
        LDR      R0,[R1, +R0, LSL #+2]
// 2282             timelength[selected]=timelength[j];
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable711  ;; timelength
        LDR      R3,??DataTable711  ;; timelength
        LDR      R3,[R3, +R4, LSL #+2]
        STR      R3,[R2, +R1, LSL #+2]
// 2283             timelength[j]=y;
        LDR      R1,??DataTable711  ;; timelength
        STR      R0,[R1, +R4, LSL #+2]
// 2284             y=notplayed[selected];
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable706  ;; notplayed
        LDR      R0,[R1, +R0, LSL #+2]
// 2285             notplayed[selected]=notplayed[j];
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable706  ;; notplayed
        LDR      R3,??DataTable706  ;; notplayed
        LDR      R3,[R3, +R4, LSL #+2]
        STR      R3,[R2, +R1, LSL #+2]
// 2286             notplayed[j]=y;
        LDR      R1,??DataTable706  ;; notplayed
        STR      R0,[R1, +R4, LSL #+2]
// 2287             if (cp==j){cp=selected;}
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R0,[R0, #+0]
        CMP      R0,R4
        BEQ      ??OnKey_74
// 2288             else
// 2289             {
// 2290               if (cp==selected){cp=j;}
        B        ??OnKey_73
// 2291             }
// 2292           }
// 2293           else
// 2294           {
// 2295             for (int i=0;i<NumberOfTracks;i++)
??OnKey_83:
        MOV      R4,#+0
        LDR      R9,??OnKey_4+0x50  ;; spysokselected
        LDR      R8,??DataTable711  ;; timelength
        LDR      R7,??DataTable706  ;; notplayed
        LDR      R6,??DataTable752  ;; spysok
        LDR      R5,??DataTable686  ;; spysok + 32640
        B        ??OnKey_84
// 2296             {
// 2297               if(spysokselected[i])
// 2298               {
// 2299                 int j=i;
// 2300                 int t=i+1;
// 2301                 if (t>NumberOfTracks-1){t=0;}
// 2302                 sprintf(name,spysok[0][t]);
// 2303                 sprintf(spysok[0][t],spysok[0][j]);
// 2304                 sprintf(spysok[0][j],name);
// 2305                 sprintf(name,spysok[1][t]);
// 2306                 sprintf(spysok[1][t],spysok[1][j]);
// 2307                 sprintf(spysok[1][j],name);
// 2308                 long y=timelength[t];
// 2309                 timelength[t]=timelength[j];
// 2310                 timelength[j]=y;
// 2311                 y=notplayed[t];
// 2312                 notplayed[t]=notplayed[j];
// 2313                 notplayed[j]=y;
// 2314                 y=spysokselected[t];
// 2315                 spysokselected[t]=spysokselected[j];
// 2316                 spysokselected[j]=y;
// 2317                 if (cp==j){cp=i;}
// 2318                 else
// 2319                 {
// 2320                   if (cp==t){cp=j;}
??OnKey_85:
        LDR      R0,[R0, #+0]
        CMP      R0,R10
        BNE      ??OnKey_86
        LDR      R0,??OnKey_4+0x4C  ;; cp
??OnKey_87:
        STR      R4,[R0, #+0]
// 2321                 }
??OnKey_86:
        ADD      R4,R4,#+1
        ADD      R5,R5,#+128
        ADD      R6,R6,#+128
        ADD      R7,R7,#+4
        ADD      R8,R8,#+4
        ADD      R9,R9,#+4
??OnKey_84:
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R4,R0
        BGE      ??OnKey_57
        LDR      R0,[R9, #+0]
        CMP      R0,#+0
        BEQ      ??OnKey_86
        ADD      R10,R4,#+1
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        SUB      R0,R0,#+1
        CMP      R0,R10
        MOVLT    R10,#+0
        LDR      R0,??DataTable752  ;; spysok
        ADD      R1,R0,R10, LSL #+7
        LDR      R0,??DataTable696  ;; name
        SWI      +22
        MOV      R1,R6
        LDR      R0,??DataTable752  ;; spysok
        ADD      R0,R0,R10, LSL #+7
        SWI      +22
        LDR      R1,??DataTable696  ;; name
        MOV      R0,R6
        SWI      +22
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable752  ;; spysok
        ADD      R1,R1,R10, LSL #+7
        ADD      R1,R0,R1
        LDR      R0,??DataTable696  ;; name
        SWI      +22
        MOV      R1,R5
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable752  ;; spysok
        ADD      R2,R2,R10, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
        LDR      R1,??DataTable696  ;; name
        MOV      R0,R5
        SWI      +22
        LDR      R0,??DataTable711  ;; timelength
        LDR      R0,[R0, +R10, LSL #+2]
        LDR      R1,??DataTable711  ;; timelength
        LDR      R2,[R8, #+0]
        STR      R2,[R1, +R10, LSL #+2]
        STR      R0,[R8, #+0]
        LDR      R0,??DataTable706  ;; notplayed
        LDR      R0,[R0, +R10, LSL #+2]
        LDR      R1,??DataTable706  ;; notplayed
        LDR      R2,[R7, #+0]
        STR      R2,[R1, +R10, LSL #+2]
        STR      R0,[R7, #+0]
        LDR      R0,??OnKey_4+0x50  ;; spysokselected
        LDR      R0,[R0, +R10, LSL #+2]
        LDR      R1,??OnKey_4+0x50  ;; spysokselected
        LDR      R2,[R9, #+0]
        STR      R2,[R1, +R10, LSL #+2]
        STR      R0,[R9, #+0]
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R0,[R0, #+0]
        CMP      R0,R4
        LDR      R0,??OnKey_4+0x4C  ;; cp
        BNE      ??OnKey_85
        B        ??OnKey_87
// 2322               }
// 2323             }
// 2324           }
// 2325            xdisp=1;
// 2326            xdispnapriamok=-3;
// 2327            GBS_StartTimerProc(&Scroll,50,Scrolling);
// 2328            REDRAW();
// 2329       };break;
// 2330     case UP_BUTTON:
// 2331       {
// 2332         selected--;
??OnKey_88:
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2333         if(selected<0){selected=NumberOfTracks-1;}
        CMP      R1,#+0
        BPL      ??OnKey_57
        LDR      R1,??DataTable662  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        B        ??OnKey_58
// 2334         xdisp=1;
// 2335         xdispnapriamok=-3;
// 2336         GBS_StartTimerProc(&Scroll,50,Scrolling);
// 2337         REDRAW();
// 2338       }break;
// 2339     case '0':Message(LG_PLAYLIST_HELP);break;
??OnKey_89:
        LDR      R0,??OnKey_50+0x14  ;; `?<Constant "\\312\\345\\360\\363\\342\\340\\355\\355\\3`
??OnKey_90:
        BL       Message
        B        ??OnKey_9
// 2340       case RIGHT_SOFT:
// 2341         {
// 2342           ZapovnytyTaVidsortuvatyKatalog(curentfolder);
??OnKey_91:
        LDR      R0,??DataTable772  ;; curentfolder
        BL       ZapovnytyTaVidsortuvatyKatalog
// 2343           WhatToView=3;
        LDR      R0,??OnKey_4+0x4  ;; WhatToView
        MOV      R1,#+3
        STR      R1,[R0, #+0]
// 2344           for (int i=0;i<256;i++){katalogselected[i]=0;}
        LDR      R0,??DataTable773  ;; katalogselected
        MOV      R1,#+256
        MOV      R2,#+0
??OnKey_92:
        STR      R2,[R0], #+4
        SUBS     R1,R1,#+1
        BNE      ??OnKey_92
// 2345           REDRAW();
        B        ??OnKey_60
// 2346         }break;
// 2347       case LEFT_SOFT:
// 2348       {
// 2349         if (NumberOfTracks!=1)
??OnKey_93:
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BEQ      ??OnKey_94
// 2350         {
// 2351         for (int i=selected;i<NumberOfTracks;i++)
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R4,[R0, #+0]
        LDR      R0,??DataTable711  ;; timelength
        ADD      R5,R0,R4, LSL #+2
        LDR      R0,??DataTable706  ;; notplayed
        ADD      R6,R0,R4, LSL #+2
        LDR      R0,??DataTable752  ;; spysok
        ADD      R7,R0,R4, LSL #+7
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable752  ;; spysok
        ADD      R1,R1,R4, LSL #+7
        ADD      R8,R0,R1
        B        ??OnKey_95
// 2352         {
// 2353           sprintf(spysok[0][i],spysok[0][i+1]);
??OnKey_96:
        ADD      R1,R7,#+128
        MOV      R0,R7
        SWI      +22
// 2354           sprintf(spysok[1][i],spysok[1][i+1]);
        ADD      R1,R8,#+128
        MOV      R0,R8
        SWI      +22
// 2355           timelength[i]=timelength[i+1];
        LDR      R0,[R5, #+4]
        STR      R0,[R5], #+4
// 2356           notplayed[i]=notplayed[i+1];
        LDR      R0,[R6, #+4]
        STR      R0,[R6], #+4
// 2357         }
        ADD      R4,R4,#+1
        ADD      R8,R8,#+128
        ADD      R7,R7,#+128
??OnKey_95:
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        CMP      R4,R0
        BLT      ??OnKey_96
// 2358         timelength[NumberOfTracks]=-1;
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable711  ;; timelength
        MVN      R2,#+0
        STR      R2,[R1, +R0, LSL #+2]
// 2359         sprintf(spysok[1][NumberOfTracks],pp);
        LDR      R1,??DataTable715  ;; pp
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable662  ;; NumberOfTracks
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable752  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 2360         sprintf(spysok[0][NumberOfTracks],pp);
        LDR      R1,??DataTable715  ;; pp
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        LDR      R2,??DataTable752  ;; spysok
        ADD      R0,R2,R0, LSL #+7
        SWI      +22
// 2361         if (cp==selected)
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        BNE      ??OnKey_97
// 2362         {
// 2363         cp--;
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R1,??OnKey_4+0x4C  ;; cp
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2364         char s[256];
// 2365         sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??OnKey_4+0x4C  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable752  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable752  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable730  ;; `?<Constant "%s%s">`
        MOV      R0,SP
        SWI      +22
// 2366         playing=1;
        LDR      R0,??OnKey_4+0x8  ;; playing
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2367         JaPerekliuchyvPisniu=1;
        LDR      R0,??DataTable731  ;; JaPerekliuchyvPisniu
        STR      R1,[R0, #+0]
// 2368         Play(s);
        MOV      R0,SP
        BL       Play
// 2369         }
// 2370         if (cp>selected){cp--;}
??OnKey_97:
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R0,[R0, #+0]
        LDR      R1,??OnKey_4+0x4C  ;; cp
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        BGE      ??OnKey_98
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R1,??OnKey_4+0x4C  ;; cp
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2371         if (selected!=0){selected--;}
??OnKey_98:
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??OnKey_99
        LDR      R0,??OnKey_4+0x48  ;; selected
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2372         NumberOfTracks--;
??OnKey_99:
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R1,??DataTable662  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        B        ??OnKey_100
// 2373         REDRAW();
// 2374         }
// 2375         else
// 2376         {
// 2377           Message(LG_CANT_REMOVE_LAST_FILE);
??OnKey_94:
        LDR      R0,??OnKey_50+0x18  ;; `?<Constant "\\315\\345\\354\\356\\346\\353\\350\\342\\3`
        B        ??OnKey_90
// 2378         }
// 2379       }break;
// 2380     case ENTER_BUTTON:
// 2381       {
// 2382         char s[256];
// 2383         cp=selected;
??OnKey_101:
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        STR      R1,[R0, #+0]
// 2384         sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??OnKey_4+0x4C  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable752  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable752  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable730  ;; `?<Constant "%s%s">`
        MOV      R0,SP
        SWI      +22
// 2385         playing=1;
        LDR      R0,??OnKey_4+0x8  ;; playing
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2386         JaPerekliuchyvPisniu=1;
        LDR      R0,??DataTable731  ;; JaPerekliuchyvPisniu
        STR      R1,[R0, #+0]
// 2387         Play(s);
        MOV      R0,SP
        BL       Play
// 2388         WhatToView=0;
        LDR      R0,??OnKey_4+0x4  ;; WhatToView
        MOV      R1,#+0
        B        ??OnKey_100
// 2389         REDRAW();
// 2390       }break;
// 2391     case '#':
// 2392       {
// 2393         char s[256];
// 2394         cp=selected;
??OnKey_102:
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R1,??OnKey_4+0x48  ;; selected
        LDR      R1,[R1, #+0]
        STR      R1,[R0, #+0]
// 2395         sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??OnKey_4+0x4C  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable752  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??OnKey_4+0x4C  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable752  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable730  ;; `?<Constant "%s%s">`
        MOV      R0,SP
        SWI      +22
// 2396         playing=1;
        LDR      R0,??OnKey_4+0x8  ;; playing
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2397         JaPerekliuchyvPisniu=1;
        LDR      R0,??DataTable731  ;; JaPerekliuchyvPisniu
        STR      R1,[R0, #+0]
// 2398         Play(s);
        MOV      R0,SP
        BL       Play
        B        ??OnKey_9
// 2399       }break;
// 2400     }
// 2401   }
// 2402       }break;
// 2403   case 3:
// 2404     {
// 2405   if ((msg->gbsmsg->msg==KEY_DOWN)&&(IsUnlocked()))
??OnKey_8:
        LDR      R0,[R4, #+4]
        LDRSH    R0,[R0, #+2]
        MOV      R1,#+147
        ORR      R1,R1,#0x100
        CMP      R0,R1
        BNE      ??OnKey_9
        SWI      +67
        CMP      R0,#+0
        BEQ      ??OnKey_53
// 2406   {
// 2407       switch(msg->gbsmsg->submess)
        LDR      R0,[R4, #+4]
        LDR      R0,[R0, #+4]
        SUB      R0,R0,#+1
        CMP      R0,#+59
        BHI      ??OnKey_9
        ADR      R1,??OnKey_3
        MOV      R0,R0, LSL #+1
        LDRH     R1,[R1, R0]
        ADD      PC,PC,R1, LSL #+2
        DATA
??OnKey_3:
        DC16     +98,+255,+255,+118
        DC16     +255,+255,+255,+255
        DC16     +255,+255,+163,+29
        DC16     +255,+255,+255,+255
        DC16     +255,+255,+255,+255
        DC16     +255,+255,+255,+255
        DC16     +255,+184,+255,+255
        DC16     +255,+255,+255,+255
        DC16     +255,+255,+255,+255
        DC16     +255,+255,+255,+255
        DC16     +255,+255,+255,+255
        DC16     +255,+255,+255,+255
        DC16     +255,+255,+255,+255
        DC16     +255,+255,+255,+255
        DC16     +255,+255,+32,+83
        ARM
// 2408     {
// 2409       
// 2410       case RED_BUTTON:
// 2411       {
// 2412         WhatToView=1;
??OnKey_103:
        LDR      R0,??OnKey_4+0x4  ;; WhatToView
        MOV      R1,#+1
        B        ??OnKey_100
// 2413         REDRAW();
// 2414       }break;
// 2415       
// 2416       case UP_BUTTON:
// 2417       {
// 2418         katalogcurent--;
??OnKey_104:
        LDR      R0,??DataTable762  ;; katalogcurent
        LDR      R1,??DataTable762  ;; katalogcurent
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2419         if(katalogcurent<0){katalogcurent=kataloglength-1;}
        CMP      R1,#+0
        BPL      ??OnKey_105
        LDR      R1,??DataTable760  ;; kataloglength
        LDR      R1,[R1, #+0]
        SUB      R1,R1,#+1
??OnKey_106:
        STR      R1,[R0, #+0]
// 2420         xdisp=1;
??OnKey_105:
        LDR      R0,??OnKey_4+0x54  ;; xdisp
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2421         xdispnapriamok=-3;
        LDR      R0,??OnKey_4+0x58  ;; xdispnapriamok
        MVN      R1,#+2
        STR      R1,[R0, #+0]
// 2422         GBS_StartTimerProc(&Scroll,50,ScrollingInFile);
        LDR      R2,??DataTable774  ;; ScrollingInFile
        B        ??OnKey_59
        DATA
??OnKey_4:
        DC32     toview
        DC32     WhatToView
        DC32     playing
        DC32     Key1
        DC32     Key2
        DC32     Key3
        DC32     Key4
        DC32     Key5
        DC32     Key6
        DC32     Key7
        DC32     Key8
        DC32     Key9
        DC32     Key0
        DC32     KeyZ
        DC32     KeyR
        DC32     ringoff
        DC32     CurentVolume
        DC32     PLAY_ID
        DC32     selected
        DC32     cp
        DC32     spysokselected
        DC32     xdisp
        DC32     xdispnapriamok
        DC32     Scrolling
        DC32     Scroll
        DC32     longpress
        DC32     profile1
        DC32     profile2
        DC32     profile3
        DC32     profile4
        DC32     profile5
        DC32     profile6
        ARM
// 2423         REDRAW();
// 2424       }break;
// 2425       
// 2426       case DOWN_BUTTON:
// 2427       {
// 2428         katalogcurent++;
??OnKey_107:
        LDR      R0,??DataTable762  ;; katalogcurent
        LDR      R1,??DataTable762  ;; katalogcurent
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2429         if(katalogcurent>kataloglength-1){katalogcurent=0;}
        LDR      R0,??DataTable760  ;; kataloglength
        LDR      R0,[R0, #+0]
        SUB      R0,R0,#+1
        LDR      R1,??DataTable762  ;; katalogcurent
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        BGE      ??OnKey_105
        LDR      R0,??DataTable762  ;; katalogcurent
        MOV      R1,#+0
        B        ??OnKey_106
// 2430         xdisp=1;
// 2431         xdispnapriamok=-3;
// 2432         GBS_StartTimerProc(&Scroll,50,ScrollingInFile);
// 2433         REDRAW();
// 2434       }break;
// 2435       
// 2436     //case '9':ShowMSG(1,(int)curentfolder);break;
// 2437       
// 2438     case LEFT_SOFT:
// 2439       {
// 2440         if ((katalogcurent!=0)&&(IsFile(katalog[katalogcurent])))
??OnKey_108:
        LDR      R0,??DataTable762  ;; katalogcurent
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??OnKey_53
        LDR      R0,??DataTable762  ;; katalogcurent
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable763  ;; katalog
        ADD      R0,R1,R0, LSL #+7
        BL       IsFile
        CMP      R0,#+0
        BEQ      ??OnKey_53
// 2441         {
// 2442           katalogselected[katalogcurent]=1-katalogselected[katalogcurent];
        LDR      R0,??DataTable762  ;; katalogcurent
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable773  ;; katalogselected
        MOV      R2,R0
        LDR      R3,??DataTable773  ;; katalogselected
        LDR      R2,[R3, +R2, LSL #+2]
        RSB      R2,R2,#+1
        STR      R2,[R1, +R0, LSL #+2]
// 2443           katalogcurent++;
        B        ??OnKey_107
// 2444           if(katalogcurent>kataloglength-1){katalogcurent=0;}
// 2445           xdisp=1;
// 2446           xdispnapriamok=-3;
// 2447           GBS_StartTimerProc(&Scroll,50,ScrollingInFile);
// 2448           REDRAW();
// 2449         }
// 2450       }break;
// 2451       
// 2452     case RIGHT_SOFT:
// 2453       {
// 2454         for (int i=1;i<kataloglength;i++)
??OnKey_109:
        MOV      R4,#+1
        LDR      R5,??OnKey_50+0x1C  ;; katalogselected + 4
        LDR      R6,??DataTable759  ;; katalog + 128
        B        ??OnKey_110
// 2455         {
// 2456           if (katalogselected[i]==1)
??OnKey_111:
        LDR      R0,[R5, #+0]
        CMP      R0,#+1
        BNE      ??OnKey_112
// 2457           {
// 2458             sprintf(spysok[0][NumberOfTracks],"%s\\",curentfolder);
        LDR      R2,??DataTable772  ;; curentfolder
        ADR      R1,??OnKey_50+0x8  ;; "%s\\"
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R0,[R0, #+0]
        LDR      R3,??DataTable752  ;; spysok
        ADD      R0,R3,R0, LSL #+7
        SWI      +22
// 2459             sprintf(spysok[1][NumberOfTracks],katalog[i]);
        MOV      R1,R6
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable662  ;; NumberOfTracks
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable752  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 2460             NumberOfTracks++;
        LDR      R0,??DataTable662  ;; NumberOfTracks
        LDR      R1,??DataTable662  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2461           }
// 2462         }
??OnKey_112:
        ADD      R4,R4,#+1
        ADD      R6,R6,#+128
        ADD      R5,R5,#+4
??OnKey_110:
        LDR      R0,??DataTable760  ;; kataloglength
        LDR      R0,[R0, #+0]
        CMP      R4,R0
        BLT      ??OnKey_111
// 2463         SUBPROC((void *)findlisttime);
        LDR      R0,??DataTable756  ;; findlisttime
        SWI      +369
// 2464         for (int i=0;i<256;i++){katalogselected[i]=0;}
        LDR      R0,??DataTable773  ;; katalogselected
        MOV      R1,#+256
        MOV      R2,#+0
??OnKey_113:
        STR      R2,[R0], #+4
        SUBS     R1,R1,#+1
        BNE      ??OnKey_113
// 2465         Message(LG_ADDED);
        LDR      R0,??OnKey_50+0x20  ;; `?<Constant "\\324\\340\\351\\353\\350 \\344\\356\\344\\`
        B        ??OnKey_90
// 2466       }break;
// 2467     
// 2468     case GREEN_BUTTON:
// 2469       {
// 2470         for (int i=1;i<kataloglength;i++)
??OnKey_114:
        MOV      R4,#+1
        LDR      R0,??DataTable760  ;; kataloglength
        LDR      R0,[R0, #+0]
        CMP      R0,#+2
        BLT      ??OnKey_60
        LDR      R5,??OnKey_50+0x1C  ;; katalogselected + 4
        LDR      R6,??DataTable759  ;; katalog + 128
??OnKey_115:
        LDR      R0,??DataTable760  ;; kataloglength
        LDR      R0,[R0, #+0]
        CMP      R4,R0
        BGE      ??OnKey_60
// 2471         {
// 2472           if (IsFile(katalog[i]))
        MOV      R0,R6
        BL       IsFile
        CMP      R0,#+0
// 2473           {
// 2474             katalogselected[i]=1-katalogselected[i];
        LDRNE    R0,[R5, #+0]
        RSBNE    R0,R0,#+1
        STRNE    R0,[R5, #+0]
// 2475           }
// 2476         }
        ADD      R4,R4,#+1
        ADD      R6,R6,#+128
        ADD      R5,R5,#+4
        B        ??OnKey_115
// 2477         REDRAW();
// 2478       }break;
// 2479       
// 2480     case ENTER_BUTTON:
// 2481       {
// 2482         if (katalogcurent!=0)
??OnKey_116:
        LDR      R0,??DataTable762  ;; katalogcurent
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??OnKey_117
// 2483         {
// 2484           char t[255];
// 2485           sprintf(t,"%s\\%s",curentfolder,katalog[katalogcurent]);
        LDR      R0,??DataTable762  ;; katalogcurent
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable763  ;; katalog
        ADD      R3,R1,R0, LSL #+7
        LDR      R2,??DataTable772  ;; curentfolder
        LDR      R1,??OnKey_50+0x24  ;; `?<Constant "%s\\\\%s">`
        MOV      R0,SP
        SWI      +22
// 2486           if(!IsFile(t))
        MOV      R0,SP
        BL       IsFile
        CMP      R0,#+0
        BNE      ??OnKey_9
// 2487           {
// 2488             sprintf(curentfolder,t);
        MOV      R1,SP
        LDR      R0,??DataTable772  ;; curentfolder
        SWI      +22
// 2489             for (int i=0;i<256;i++){katalogselected[i]=0;}
        LDR      R0,??DataTable773  ;; katalogselected
        MOV      R1,#+256
        MOV      R2,#+0
??OnKey_118:
        STR      R2,[R0], #+4
        SUBS     R1,R1,#+1
        BNE      ??OnKey_118
// 2490             ZapovnytyTaVidsortuvatyKatalog(curentfolder);
        LDR      R0,??DataTable772  ;; curentfolder
        BL       ZapovnytyTaVidsortuvatyKatalog
// 2491             GBS_StartTimerProc(&Scroll,50,ScrollingInFile);
        LDR      R2,??DataTable774  ;; ScrollingInFile
        B        ??OnKey_59
// 2492             REDRAW();
// 2493           }
// 2494           else
// 2495           {
// 2496             //katalogselected[katalogcurent]=1-katalogselected[katalogcurent];
// 2497           }
// 2498         }
// 2499         else
// 2500         {
// 2501           int i;
// 2502           for (i=strlen(curentfolder);(curentfolder[i]!='\\')&&(i!=0);i--);
??OnKey_117:
        LDR      R0,??DataTable772  ;; curentfolder
        SWI      +27
        LDR      R1,??DataTable772  ;; curentfolder
        ADD      R1,R0,R1
        B        ??OnKey_119
??OnKey_120:
        SUB      R0,R0,#+1
??OnKey_119:
        LDRB     R2,[R1], #-1
        CMP      R2,#+92
        CMPNE    R0,#+0
        BNE      ??OnKey_120
// 2503           curentfolder[i]=0;
        LDR      R1,??DataTable772  ;; curentfolder
        MOV      R2,#+0
        STRB     R2,[R0, +R1]
// 2504           ZapovnytyTaVidsortuvatyKatalog(curentfolder);
        LDR      R0,??DataTable772  ;; curentfolder
        BL       ZapovnytyTaVidsortuvatyKatalog
// 2505           for (int i=0;i<256;i++){katalogselected[i]=0;}
        LDR      R0,??DataTable773  ;; katalogselected
        MOV      R1,#+256
        MOV      R2,#+0
??OnKey_121:
        STR      R2,[R0], #+4
        SUBS     R1,R1,#+1
        BNE      ??OnKey_121
// 2506           GBS_StartTimerProc(&Scroll,50,ScrollingInFile);
        LDR      R2,??DataTable774  ;; ScrollingInFile
        MOV      R1,#+50
        LDR      R0,??DataTable797  ;; Scroll
        SWI      +77
// 2507           REDRAW();
        B        ??OnKey_60
// 2508         }
// 2509       }break;
// 2510       
// 2511     }
// 2512   }
// 2513     }
// 2514   break;
// 2515   }
// 2516     }
// 2517     else
// 2518     {
// 2519       if (msg->gbsmsg->msg==KEY_DOWN)
??OnKey_5:
        LDR      R0,[R4, #+4]
        LDRSH    R0,[R0, #+2]
        MOV      R1,#+147
        ORR      R1,R1,#0x100
        CMP      R0,R1
        BNE      ??OnKey_9
// 2520       {
// 2521         switch(msg->gbsmsg->submess)
        LDR      R0,[R4, #+4]
        LDR      R0,[R0, #+4]
        SUBS     R0,R0,#+4
        SUBSNE   R0,R0,#+8
        SUBSNE   R0,R0,#+14
        BNE      ??OnKey_9
// 2522         {
// 2523         case RED_BUTTON:case ENTER_BUTTON:case RIGHT_SOFT:
// 2524           {
// 2525             toview=0;
        LDR      R0,??DataTable776  ;; toview
??OnKey_55:
        MOV      R1,#+0
??OnKey_100:
        STR      R1,[R0, #+0]
// 2526             REDRAW();
??OnKey_60:
        SWI      +370
// 2527           }break;
// 2528         }
// 2529       }
// 2530     }
// 2531   return(0);
??OnKey_9:
        MOV      R0,#+0
??OnKey_53:
        ADD      SP,SP,#+256      ;; stack cleaning
        CFI CFA R13+32
        POP      {R4-R10,PC}      ;; return
        DATA
??OnKey_50:
        DC32     profile7
        DC32     profile8
        DC8      "%s\\"
        DC32     `?<Constant "%splaylists\\\\standart.ipl">`
        DC32     `?<Constant "%splaylists\\\\%s.ipl">`
        DC32     `?<Constant "\\312\\345\\360\\363\\342\\340\\355\\355\\3`
        DC32     `?<Constant "\\315\\345\\354\\356\\346\\353\\350\\342\\3`
        DC32     katalogselected + 4
        DC32     `?<Constant "\\324\\340\\351\\353\\350 \\344\\356\\344\\`
        DC32     `?<Constant "%s\\\\%s">`
        CFI EndBlock cfiBlock121
// 2532 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable611:
        DC32     playlistmode

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable614:
        DC32     LastPlaylist

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable616:
        DC32     playlistname

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable617:
        DC32     playerfolder

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable618:
        DC32     PlaylistToSave

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable662:
        DC32     NumberOfTracks

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable686:
        DC32     spysok + 32640

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable696:
        DC32     name

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable706:
        DC32     notplayed

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable711:
        DC32     timelength

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable715:
        DC32     pp

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable730:
        DC32     `?<Constant "%s%s">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable731:
        DC32     JaPerekliuchyvPisniu

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable752:
        DC32     spysok

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable756:
        DC32     findlisttime

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable759:
        DC32     katalog + 128

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable760:
        DC32     kataloglength

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable762:
        DC32     katalogcurent

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable763:
        DC32     katalog

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable772:
        DC32     curentfolder

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable773:
        DC32     katalogselected

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable774:
        DC32     ScrollingInFile

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable776:
        DC32     toview

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock122 Using cfiCommon0
        CFI NoFunction
        THUMB
??maincsm_oncreate??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock122
        REQUIRE maincsm_oncreate
// 2533 

        RSEG DATA_C:CONST:SORT:NOROOT(2)
// 2534 const void * const gui_methods[11]={
gui_methods:
        DATA
        DC32 OnRedraw, onCreate, onClose, onFocus, onUnfocus, OnKey, 0H
        DC32 kill_data, method, method, 0H
// 2535   (void *)OnRedraw,	//Redraw
// 2536   (void *)onCreate,	//Create
// 2537   (void *)onClose,	//Close
// 2538   (void *)onFocus,	//Focus
// 2539   (void *)onUnfocus,	//Unfocus
// 2540   (void *)OnKey,	//OnKey
// 2541   0,
// 2542   #ifdef NEWSGOLD
// 2543   (void *)onDestroy,	//Destroy
// 2544   #else
// 2545   (void *)kill_data,	//Destroy
// 2546   #endif
// 2547   (void *)method,
// 2548   (void *)method,
// 2549   0
// 2550 };

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock123 Using cfiCommon1
        CFI Function maincsm_oncreate
        ARM
// 2551 void maincsm_oncreate(CSM_RAM *data)
// 2552 {
maincsm_oncreate:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        MOV      R4,R0
// 2553   MAIN_GUI *main_gui=malloc(sizeof(MAIN_GUI));
        MOV      R0,#+60
        SWI      +20
        MOV      R5,R0
// 2554   MAIN_CSM*csm=(MAIN_CSM*)data;
// 2555   zeromem(main_gui,sizeof(MAIN_GUI));
        MOV      R1,#+60
        SWI      +285
// 2556   main_gui->gui.canvas=(void *)(&Canvas);
        LDR      R0,??DataTable777  ;; Canvas
        STR      R0,[R5, #+0]
// 2557   main_gui->gui.flag30=2;
        MOV      R0,#+2
        STR      R0,[R5, #+44]
// 2558   main_gui->gui.methods=(void *)gui_methods;
        LDR      R0,??maincsm_oncreate_0  ;; gui_methods
        STR      R0,[R5, #+4]
// 2559   main_gui->gui.item_ll.data_mfree=(void (*)(void *))mfree_adr();
        SWI      +32789
        STR      R0,[R5, #+28]
// 2560   csm->csm.state=0;
        MOV      R0,#+0
        STR      R0,[R4, #+16]
// 2561   csm->csm.unk1=0;
        STR      R0,[R4, #+20]
// 2562   csm->gui_id=CreateGUI(main_gui);
        MOV      R0,R5
        SWI      +311
        STR      R0,[R4, #+40]
// 2563   MAINGUI_ID=csm->gui_id;
        LDR      R0,??DataTable778  ;; MAINGUI_ID
        LDR      R1,[R4, #+40]
        STR      R1,[R0, #+0]
// 2564   wss.ws1=AllocWS(256);
        MOV      R0,#+256
        SWI      +293
        LDR      R1,??DataTable794  ;; wss
        STR      R0,[R1, #+0]
// 2565   wss.ws2=AllocWS(256);
        MOV      R0,#+256
        SWI      +293
        LDR      R1,??DataTable795  ;; wss + 4
        STR      R0,[R1, #+0]
// 2566   /*
// 2567   pisnia.PLAYLIST=AllocWS(256);
// 2568   pisnia.TRACK=AllocWS(256);
// 2569   pisnia.NUMBEROFTRACKS=AllocWS(256);
// 2570  */
// 2571 }
        POP      {R4,R5,PC}       ;; return
        DATA
??maincsm_oncreate_0:
        DC32     gui_methods
        CFI EndBlock cfiBlock123

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable777:
        DC32     Canvas

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable778:
        DC32     MAINGUI_ID

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock124 Using cfiCommon0
        CFI NoFunction
        THUMB
??ElfKiller??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock124
        REQUIRE ElfKiller
// 2572 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock125 Using cfiCommon1
        CFI Function ElfKiller
        ARM
// 2573 void ElfKiller(void)
// 2574 {
ElfKiller:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 2575   extern void kill_data(void *p, void (*func_p)(void *));
// 2576   extern void *ELF_BEGIN;
// 2577   kill_data(&ELF_BEGIN,(void (*)(void *))mfree_adr());
        SWI      +32789
        MOV      R1,R0
        LDR      R0,??ElfKiller_0  ;; ELF_BEGIN
        POP      {LR}             ;; Pop
        CFI ?RET R14
        CFI CFA R13+0
        _BF      kill_data,??kill_data??rA  ;; tailcall
        DATA
??ElfKiller_0:
        DC32     ELF_BEGIN
        CFI EndBlock cfiBlock125
// 2578 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock126 Using cfiCommon0
        CFI NoFunction
        THUMB
??PersheShchoStuknuloVGolovu??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock126
        REQUIRE PersheShchoStuknuloVGolovu
// 2579 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock127 Using cfiCommon1
        CFI Function PersheShchoStuknuloVGolovu
        ARM
// 2580 void PersheShchoStuknuloVGolovu()
// 2581 {
PersheShchoStuknuloVGolovu:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 2582   gipc.name_from="Ivoplay";
        LDR      R0,??DataTable844  ;; gipc + 4
        LDR      R1,??PersheShchoStuknuloVGolovu_0  ;; `?<Constant "Ivoplay">`
        STR      R1,[R0, #+0]
// 2583   gipc.name_to="control_panel|remove_point|";
        LDR      R0,??DataTable848  ;; gipc
        LDR      R1,??PersheShchoStuknuloVGolovu_0+0x4  ;; `?<Constant "control_panel|remove_...">`
        STR      R1,[R0, #+0]
// 2584   gipc.data=0;
        LDR      R0,??DataTable846  ;; gipc + 8
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 2585   GBS_SendMessage(MMI_CEPID,MSG_IPC,0,&gipc);
        LDR      R3,??DataTable848  ;; gipc
        MOV      R2,#+0
        MOV      R1,#+242
        ORR      R1,R1,#0x300
        MOV      R0,#+9
        ORR      R0,R0,#0x4200
        SWI      +256
// 2586   GBS_DelTimer(&Scroll);
        LDR      R0,??DataTable797  ;; Scroll
        SWI      +396
// 2587 }
        POP      {PC}             ;; return
        DATA
??PersheShchoStuknuloVGolovu_0:
        DC32     `?<Constant "Ivoplay">`
        DC32     `?<Constant "control_panel|remove_...">`
        CFI EndBlock cfiBlock127

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock128 Using cfiCommon0
        CFI NoFunction
        THUMB
??maincsm_onclose??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock128
        REQUIRE maincsm_onclose
// 2588 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock129 Using cfiCommon1
        CFI Function maincsm_onclose
        ARM
// 2589 void maincsm_onclose(CSM_RAM *csm)
// 2590 {
maincsm_onclose:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 2591   WriteLastPlaylist();
        BL       WriteLastPlaylist
// 2592   PlayMelody_StopPlayback(PLAY_ID);
        LDR      R0,??DataTable862  ;; PLAY_ID
        LDR      R0,[R0, #+0]
        SWI      +550
// 2593   GBS_DelTimer(&RedrawTimer);
        LDR      R0,??DataTable787  ;; RedrawTimer
        SWI      +396
// 2594   GBS_DelTimer(&TimeTimer);
        LDR      R0,??DataTable859  ;; TimeTimer
        SWI      +396
// 2595   GBS_DelTimer(&PlayerMenu);
        LDR      R0,??DataTable789  ;; PlayerMenu
        SWI      +396
// 2596   GBS_DelTimer(&PlayNextTimer);
        LDR      R0,??DataTable790  ;; PlayNextTimer
        SWI      +396
// 2597   RemoveKeybMsgHook((void *)my_keyhook);
        LDR      R0,??DataTable791  ;; my_keyhook
        SWI      +301
// 2598   SaveParams();
        BL       SaveParams
// 2599   Cleaner();
        _BLF     Cleaner,??Cleaner??rA
// 2600   if (playlistmode==1){SaveOnlyPlaylistParams(LastPlaylist);}
        LDR      R0,??DataTable818  ;; playlistmode
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??maincsm_onclose_0
        LDR      R0,??DataTable793  ;; LastPlaylist
        BL       SaveOnlyPlaylistParams
// 2601   FreeWS(wss.ws1);
??maincsm_onclose_0:
        LDR      R0,??DataTable794  ;; wss
        LDR      R0,[R0, #+0]
        SWI      +297
// 2602   FreeWS(wss.ws2);
        LDR      R0,??DataTable795  ;; wss + 4
        LDR      R0,[R0, #+0]
        SWI      +297
// 2603   pracuje=0;
        LDR      R0,??DataTable796  ;; pracuje
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 2604   GBS_StartTimerProc(&Scroll,30,PersheShchoStuknuloVGolovu); 
        LDR      R2,??maincsm_onclose_1  ;; PersheShchoStuknuloVGolovu
        MOV      R1,#+30
        LDR      R0,??DataTable797  ;; Scroll
        SWI      +77
// 2605   SUBPROC((void *)ElfKiller);
        LDR      R0,??maincsm_onclose_1+0x4  ;; ElfKiller
        SWI      +369
// 2606 }
        POP      {PC}             ;; return
        DATA
??maincsm_onclose_1:
        DC32     PersheShchoStuknuloVGolovu
        DC32     ElfKiller
        CFI EndBlock cfiBlock129

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable787:
        DC32     RedrawTimer

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable789:
        DC32     PlayerMenu

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable790:
        DC32     PlayNextTimer

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable791:
        DC32     my_keyhook

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable793:
        DC32     LastPlaylist

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable794:
        DC32     wss

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable795:
        DC32     wss + 4

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable796:
        DC32     pracuje

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable797:
        DC32     Scroll

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock130 Using cfiCommon0
        CFI NoFunction
        THUMB
??CheckDoubleRun??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock130
        REQUIRE CheckDoubleRun
// 2607 //////////////////////////

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock131 Using cfiCommon1
        CFI Function CheckDoubleRun
        ARM
// 2608 void CheckDoubleRun(void)
// 2609 {
CheckDoubleRun:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
        SUB      SP,SP,#+16
        CFI CFA R13+20
// 2610   int csm_id;
// 2611   if ((csm_id=(int)(gipc.data))!=-1)
        LDR      R0,??DataTable846  ;; gipc + 8
        LDR      R0,[R0, #+0]
        CMN      R0,#+1
        BEQ      ??CheckDoubleRun_0
// 2612   {
// 2613     gipc.name_to=ipc_my_name;
        LDR      R1,??DataTable848  ;; gipc
        LDR      R2,??DataTable845  ;; ipc_my_name
        STR      R2,[R1, #+0]
// 2614     gipc.name_from=ipc_my_name;
        LDR      R1,??DataTable844  ;; gipc + 4
        STR      R2,[R1, #+0]
// 2615     gipc.data=(void *)csm_id;
        LDR      R1,??DataTable846  ;; gipc + 8
        STR      R0,[R1, #+0]
// 2616     TTime ktime;
// 2617     TDate date;
// 2618     GetDateTime(&date,&ktime);
        MOV      R1,SP
        ADD      R0,SP,#+8
        SWI      +180
// 2619     GBS_SendMessage(MMI_CEPID,MSG_IPC,ktime.min*60+ktime.sec,&gipc);  
        LDR      R3,??DataTable848  ;; gipc
        LDRB     R0,[SP, #+1]
        MOV      R1,#+60
        LDRB     R2,[SP, #+2]
        MLA      R2,R1,R0,R2
        MOV      R1,#+242
        ORR      R1,R1,#0x300
        MOV      R0,#+9
        ORR      R0,R0,#0x4200
        SWI      +256
// 2620     //LockSched();
// 2621     //CloseCSM(MAINCSM_ID);
// 2622     //UnlockSched();
// 2623   }
// 2624   else
// 2625   {
// 2626   }
// 2627 }
??CheckDoubleRun_0:
        ADD      SP,SP,#+16       ;; stack cleaning
        CFI CFA R13+4
        POP      {PC}             ;; return
        CFI EndBlock cfiBlock131

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock132 Using cfiCommon0
        CFI NoFunction
        THUMB
??maincsm_onmessage??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock132
        REQUIRE maincsm_onmessage
// 2628 /////////////////////////////////
// 2629 
// 2630 
// 2631 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock133 Using cfiCommon1
        CFI Function maincsm_onmessage
        ARM
// 2632 int maincsm_onmessage(CSM_RAM *data, GBS_MSG *msg)
// 2633 {
maincsm_onmessage:
        PUSH     {R4-R7,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R7 Frame(CFA, -8)
        CFI R6 Frame(CFA, -12)
        CFI R5 Frame(CFA, -16)
        CFI R4 Frame(CFA, -20)
        CFI CFA R13+20
        SUB      SP,SP,#+700
        CFI CFA R13+720
        MOV      R4,R0
        MOV      R5,R1
// 2634   MAIN_CSM *csm=(MAIN_CSM*)data;
// 2635   
// 2636 /////////////////////
// 2637   if (msg->msg==MSG_IPC)
        LDRSH    R0,[R5, #+2]
        MOV      R1,#+242
        ORR      R1,R1,#0x300
        CMP      R0,R1
        BNE      ??maincsm_onmessage_0
// 2638     {
// 2639       IPC_REQ *ipc;
// 2640       if ((ipc=(IPC_REQ*)msg->data0))
        LDR      R6,[R5, #+8]
        CMP      R6,#+0
        BEQ      ??maincsm_onmessage_1
// 2641       {
// 2642         /*if ((ipc->name_to[0]=='I')&&(ipc->name_to[1]=='v'))
// 2643         {
// 2644           ShowMSG(1,(int)ipc->name_to);*/
// 2645           /*if (!strcmp("control_panel|punkt1",ipc->name_from))
// 2646           {
// 2647             Play_PauseResume();
// 2648             //ShowMSG(1,(int)ipc->name_to);
// 2649           }
// 2650         }*/
// 2651         if (strcmp_nocase(ipc->name_to,ipc_my_name)==0)
        LDR      R1,??DataTable845  ;; ipc_my_name
        LDR      R0,[R6, #+0]
        BL       strcmp_nocase
        CMP      R0,#+0
        BNE      ??maincsm_onmessage_1
// 2652         {
// 2653           if (strcmp_nocase(ipc->name_from,"control_panel")==0)
        LDR      R1,??maincsm_onmessage_2  ;; `?<Constant "control_panel">`
        LDR      R0,[R6, #+4]
        BL       strcmp_nocase
        CMP      R0,#+0
        BNE      ??maincsm_onmessage_3
// 2654           {
// 2655               gipc.name_to=ipc_xtask_name;
        LDR      R0,??DataTable848  ;; gipc
        LDR      R1,??DataTable843  ;; ipc_xtask_name
        STR      R1,[R0, #+0]
// 2656               gipc.name_from=ipc_my_name;
        LDR      R0,??DataTable844  ;; gipc + 4
        LDR      R1,??DataTable845  ;; ipc_my_name
        STR      R1,[R0, #+0]
// 2657               gipc.data=(void *)MAINCSM_ID;
        LDR      R0,??DataTable846  ;; gipc + 8
        LDR      R1,??DataTable847  ;; MAINCSM_ID
        LDR      R1,[R1, #+0]
        STR      R1,[R0, #+0]
// 2658               GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc);
        LDR      R3,??DataTable848  ;; gipc
        MOV      R2,#+2
        ORR      R1,R2,#0x3F0
        MOV      R0,#+9
        ORR      R0,R0,#0x4200
        SWI      +256
// 2659           }
// 2660 	if ((msg->submess)!=-identyfikator)
??maincsm_onmessage_3:
        LDR      R0,[R5, #+4]
        LDR      R1,??DataTable895  ;; identyfikator
        LDR      R1,[R1, #+0]
        RSB      R1,R1,#+0
        CMP      R0,R1
        BEQ      ??maincsm_onmessage_4
// 2661 	{
// 2662 	  if (((msg->submess)!=identyfikator)&&((msg->submess)>0))
        LDR      R1,??DataTable895  ;; identyfikator
        LDR      R1,[R1, #+0]
        CMP      R0,R1
        BEQ      ??maincsm_onmessage_5
        CMP      R0,#+1
        BLT      ??maincsm_onmessage_5
// 2663           {
// 2664             GBS_SendMessage(MMI_CEPID,MSG_IPC,-identyfikator,&gipc);  
        LDR      R3,??DataTable848  ;; gipc
        RSB      R2,R1,#+0
??maincsm_onmessage_6:
        MOV      R1,#+242
        ORR      R1,R1,#0x300
        MOV      R0,#+9
        ORR      R0,R0,#0x4200
        SWI      +256
        B        ??maincsm_onmessage_0
// 2665           }
// 2666           else
// 2667           {
// 2668             if ((msg->submess)<0)
??maincsm_onmessage_5:
        CMP      R0,#+0
        BPL      ??maincsm_onmessage_0
// 2669             {
// 2670               CloseCSM(MAINCSM_ID);
        LDR      R0,??DataTable847  ;; MAINCSM_ID
        LDR      R0,[R0, #+0]
        SWI      +508
// 2671                 int csm_id;
// 2672                 if (((csm_id=(int)(gipc.data))!=-1)&&((playlistmode==3)||(playlistmode==4)))
        LDR      R0,??DataTable846  ;; gipc + 8
        LDR      R6,[R0, #+0]
        CMN      R6,#+1
        BEQ      ??maincsm_onmessage_0
        LDR      R0,??DataTable818  ;; playlistmode
        LDR      R0,[R0, #+0]
        CMP      R0,#+3
        BEQ      ??maincsm_onmessage_7
        LDR      R0,??DataTable818  ;; playlistmode
        LDR      R0,[R0, #+0]
        CMP      R0,#+4
        BNE      ??maincsm_onmessage_0
// 2673                 {
// 2674                   char *s="ffff";
??maincsm_onmessage_7:
        LDR      R7,??DataTable819  ;; `?<Constant "ffff">`
// 2675                   sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable987  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable988  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??DataTable987  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable988  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable989  ;; `?<Constant "%s%s">`
        MOV      R0,R7
        SWI      +22
// 2676                   char *r=s;
// 2677                   gipc.name_to=r;
        LDR      R0,??DataTable848  ;; gipc
        STR      R7,[R0, #+0]
// 2678                   gipc.name_from="pLay";
        LDR      R0,??DataTable844  ;; gipc + 4
        LDR      R1,??maincsm_onmessage_2+0x4  ;; `?<Constant "pLay">`
        STR      R1,[R0, #+0]
// 2679                   gipc.data=(void *)csm_id;
        LDR      R0,??DataTable846  ;; gipc + 8
        STR      R6,[R0, #+0]
// 2680                   GBS_SendMessage(MMI_CEPID,MSG_IPC,0,&gipc); 
        LDR      R3,??DataTable848  ;; gipc
        MOV      R2,#+0
        B        ??maincsm_onmessage_6
// 2681                 }
// 2682             }
// 2683           }
// 2684         }
// 2685         else
// 2686         {
// 2687           if((ipc->name_from[0]=='p')&&(ipc->name_from[1]=='L')&&(ipc->name_from[2]=='a')&&(ipc->name_from[3]=='y'))
??maincsm_onmessage_4:
        LDR      R0,[R6, #+4]
        LDRB     R0,[R0, #+0]
        CMP      R0,#+112
        BNE      ??maincsm_onmessage_0
        LDR      R0,[R6, #+4]
        LDRB     R0,[R0, #+1]
        CMP      R0,#+76
        BNE      ??maincsm_onmessage_0
        LDR      R0,[R6, #+4]
        LDRB     R0,[R0, #+2]
        CMP      R0,#+97
        BNE      ??maincsm_onmessage_0
        LDR      R0,[R6, #+4]
        LDRB     R0,[R0, #+3]
        CMP      R0,#+121
        BNE      ??maincsm_onmessage_0
// 2688           {
// 2689             char u[256];
// 2690             for (int i=0;i<strlen(ipc->name_to);i++)
        MOV      R7,#+0
        B        ??maincsm_onmessage_8
// 2691             {
// 2692               sprintf(u,"%s%c",u,ipc->name_to[i]);
??maincsm_onmessage_9:
        LDR      R0,[R6, #+0]
        LDRB     R3,[R7, +R0]
        ADD      R2,SP,#+444
        LDR      R1,??DataTable829  ;; `?<Constant "%s%c">`
        ADD      R0,SP,#+444
        SWI      +22
// 2693             }
        ADD      R7,R7,#+1
??maincsm_onmessage_8:
        LDR      R0,[R6, #+0]
        SWI      +27
        CMP      R7,R0
        BCC      ??maincsm_onmessage_9
// 2694             DIR_ENTRY de;
// 2695             unsigned int err;
// 2696             if(FindFirstFile(&de,u,&err))
        MOV      R2,SP
        ADD      R1,SP,#+444
        ADD      R0,SP,#+4
        SWI      +107
        CMP      R0,#+0
        BEQ      ??maincsm_onmessage_10
// 2697             {
// 2698               cp=NumberOfTracks;
        LDR      R0,??DataTable987  ;; cp
        LDR      R1,??DataTable970  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        STR      R1,[R0, #+0]
// 2699               NumberOfTracks++;
        LDR      R0,??DataTable970  ;; NumberOfTracks
        LDR      R1,??DataTable970  ;; NumberOfTracks
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2700               sprintf(playlistname,"Mixed");
        LDR      R1,??maincsm_onmessage_2+0x8  ;; `?<Constant "Mixed">`
        LDR      R0,??DataTable995  ;; playlistname
        SWI      +22
// 2701               //playlistname=LG_MIXED;
// 2702       const char *o=strrchr(u,'\\')+1;
        MOV      R1,#+92
        ADD      R0,SP,#+444
        SWI      +279
        ADD      R6,R0,#+1
// 2703       sprintf(spysok[1][cp],o);
        MOV      R1,R6
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable987  ;; cp
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable988  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +22
// 2704       strncpy(spysok[0][cp],u,o-u);
        ADD      R0,SP,#+444
        SUB      R2,R6,R0
        ADD      R1,SP,#+444
        LDR      R0,??DataTable987  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R3,??DataTable988  ;; spysok
        ADD      R0,R3,R0, LSL #+7
        SWI      +278
// 2705       spysok[0][cp][o-u]='\0';
        ADD      R0,SP,#+444
        SUB      R0,R6,R0
        LDR      R1,??DataTable987  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable988  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        MOV      R2,#+0
        STRB     R2,[R0, +R1]
// 2706       JaPerekliuchyvPisniu=1;
        LDR      R0,??DataTable991  ;; JaPerekliuchyvPisniu
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2707             Play(u);
        ADD      R0,SP,#+444
        BL       Play
// 2708   gipc.name_to=ipc_xtask_name;
        LDR      R0,??DataTable848  ;; gipc
        LDR      R1,??DataTable843  ;; ipc_xtask_name
        STR      R1,[R0, #+0]
// 2709   gipc.name_from=ipc_my_name;
        LDR      R0,??DataTable844  ;; gipc + 4
        LDR      R1,??DataTable845  ;; ipc_my_name
        STR      R1,[R0, #+0]
// 2710   gipc.data=(void *)MAINCSM_ID;
        LDR      R0,??DataTable846  ;; gipc + 8
        LDR      R1,??DataTable847  ;; MAINCSM_ID
        LDR      R1,[R1, #+0]
        STR      R1,[R0, #+0]
// 2711   GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_XTASK_SHOW_CSM,&gipc);
        LDR      R3,??DataTable848  ;; gipc
        MOV      R2,#+2
        ORR      R1,R2,#0x3F0
        MOV      R0,#+9
        ORR      R0,R0,#0x4200
        SWI      +256
        B        ??maincsm_onmessage_11
// 2712       //ShowMSG(1,(int)u);
// 2713             }
// 2714             else
// 2715             {
// 2716               sprintf(playlistname,"Not found!");
??maincsm_onmessage_10:
        LDR      R1,??maincsm_onmessage_2+0xC  ;; `?<Constant "Not found!">`
        LDR      R0,??DataTable995  ;; playlistname
        SWI      +22
// 2717               sprintf(spysok[1][0],"File not found!");
        LDR      R1,??DataTable930  ;; `?<Constant "File not found!">`
        LDR      R0,??DataTable967  ;; spysok + 32640
        SWI      +22
// 2718             }
// 2719             FindClose(&de,&err);
??maincsm_onmessage_11:
        MOV      R1,SP
        ADD      R0,SP,#+4
        SWI      +109
// 2720           }
// 2721         }
// 2722         }
// 2723       }
// 2724     }
// 2725             
// 2726             
// 2727 /////////////////////
// 2728   
// 2729   
// 2730   
// 2731   if (msg->msg==MSG_PLAYFILE_REPORT)
??maincsm_onmessage_0:
        LDRSH    R0,[R5, #+2]
        MOV      R1,#+103
        ORR      R1,R1,#0x100
        CMP      R0,R1
        BNE      ??maincsm_onmessage_12
// 2732     {
// 2733       switch(msg->submess&0xFFFF)
        LDR      R0,[R5, #+4]
        MOV      R0,R0, LSL #+16
        MOV      R0,R0, LSR #+16
        SUBS     R0,R0,#+4
        BEQ      ??maincsm_onmessage_13
        SUBS     R0,R0,#+1
        SUBSNE   R0,R0,#+2
        BEQ      ??maincsm_onmessage_14
        SUBS     R0,R0,#+26
        BEQ      ??maincsm_onmessage_15
        B        ??maincsm_onmessage_12
// 2734       {
// 2735       case 4: 
// 2736         {
// 2737           CanPlayNext=1;
??maincsm_onmessage_13:
        LDR      R0,??DataTable852  ;; CanPlayNext
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2738           timesec=0;
        LDR      R0,??DataTable860  ;; timesec
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 2739           timemin=0;
        LDR      R0,??DataTable861  ;; timemin
        STR      R1,[R0, #+0]
// 2740           if ((entime)&&(playing==1)) 
        LDR      R0,??DataTable855  ;; entime
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??maincsm_onmessage_12
        LDR      R0,??DataTable990  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??maincsm_onmessage_12
// 2741           {
// 2742             GBS_StartTimerProc(&TimeTimer,RedrawTime,timepp);
        LDR      R2,??DataTable857  ;; timepp
        LDR      R0,??DataTable858  ;; RedrawTime
        LDR      R1,[R0, #+0]
        LDR      R0,??DataTable859  ;; TimeTimer
        SWI      +77
        B        ??maincsm_onmessage_12
// 2743           }
// 2744         }break;
// 2745       case 5:
// 2746       case 7:
// 2747         {
// 2748             timesec=0;
??maincsm_onmessage_14:
        LDR      R0,??DataTable860  ;; timesec
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 2749             timemin=0;
        LDR      R0,??DataTable861  ;; timemin
        STR      R1,[R0, #+0]
// 2750             PLAY_ID=0;
        LDR      R0,??DataTable862  ;; PLAY_ID
        STR      R1,[R0, #+0]
// 2751             if (playing==1)
        LDR      R0,??DataTable990  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
        BNE      ??maincsm_onmessage_12
// 2752               {
// 2753                 PlayNext();
        BL       PlayNext
        B        ??maincsm_onmessage_12
// 2754               }
// 2755         }
// 2756         break;
// 2757         
// 2758       case 33: if (playing!=0) 
??maincsm_onmessage_15:
        LDR      R0,??DataTable990  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??maincsm_onmessage_1
// 2759       {
// 2760         if (JaPerekliuchyvPisniu==0)
        LDR      R0,??DataTable991  ;; JaPerekliuchyvPisniu
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
// 2761         {
// 2762           playing=0;
        LDREQ    R0,??DataTable990  ;; playing
// 2763         }
// 2764         else 
// 2765         {
// 2766           JaPerekliuchyvPisniu=0;
        LDRNE    R0,??DataTable991  ;; JaPerekliuchyvPisniu
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 2767         }
// 2768       }
// 2769         break;
// 2770       }
// 2771     }
// 2772   
// 2773   if ((msg->msg==MSG_GUI_DESTROYED)&&((int)msg->data0==csm->gui_id))
??maincsm_onmessage_12:
        LDRSH    R0,[R5, #+2]
        CMP      R0,#+152
        BNE      ??maincsm_onmessage_16
        LDR      R0,[R5, #+8]
        LDR      R1,[R4, #+40]
        CMP      R0,R1
        BNE      ??maincsm_onmessage_1
// 2774   {
// 2775     csm->csm.state=-3;
        MVN      R0,#+2
        STR      R0,[R4, #+16]
// 2776   }
// 2777   if (msg->msg==MSG_RECONFIGURE_REQ)
??maincsm_onmessage_16:
        LDRSH    R0,[R5, #+2]
        MOV      R1,#+241
        ORR      R1,R1,#0x300
        CMP      R0,R1
        BNE      ??maincsm_onmessage_1
// 2778   {
// 2779     extern const char *successed_config_filename;
// 2780     if (strcmp(successed_config_filename,(char *)msg->data0)==0)
        LDR      R1,[R5, #+8]
        LDR      R0,??maincsm_onmessage_2+0x10  ;; successed_config_filename
        LDR      R0,[R0, #+0]
        SWI      +25
        CMP      R0,#+0
        BNE      ??maincsm_onmessage_1
// 2781     {
// 2782       Message(LG_CONFIG_UPDATED);
        LDR      R0,??maincsm_onmessage_2+0x14  ;; `?<Constant "\\312\\356\\355\\364i\\343\\363\\360\\340\\`
        BL       Message
// 2783       InitConfig();
        _BLF     InitConfig,??InitConfig??rA
// 2784     }
// 2785   }
// 2786 
// 2787  if (EnableIconOnIdle)
??maincsm_onmessage_1:
        LDR      R0,??maincsm_onmessage_2+0x18  ;; EnableIconOnIdle
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BEQ      ??maincsm_onmessage_17
// 2788  {
// 2789     CSM_RAM *icsm=FindCSMbyID(CSM_root()->idle_id);
        SWI      +33030
        LDR      R0,[R0, #+4]
        SWI      +264
// 2790     if (IsGuiOnTop((((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4])))
        LDR      R0,[R0, #+40]
        SWI      +309
        CMP      R0,#+0
        BEQ      ??maincsm_onmessage_17
// 2791     {
// 2792       GUI *igui=GetTopGUI();
// 2793       if (igui)
        SWI      +333
        CMP      R0,#+0
        BEQ      ??maincsm_onmessage_17
// 2794       {
// 2795 	void *canvasdata=BuildCanvas();
        SWI      +33009
        MOV      R4,R0
// 2796         if (playing!=1) 
        LDR      R0,??DataTable990  ;; playing
        LDR      R0,[R0, #+0]
        CMP      R0,#+1
// 2797         {
// 2798           sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\stop.png");
        LDRNE    R0,??DataTable869  ;; `?<Constant "\\\\stop.png">`
// 2799         }
// 2800         else 
// 2801         {
// 2802           sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\play.png");
        LDREQ    R0,??DataTable870  ;; `?<Constant "\\\\play.png">`
        PUSH     {R0}
        CFI CFA R13+724
        LDR      R0,??DataTable871  ;; curskin
        LDR      R0,[R0, #+0]
        MOV      R1,#+20
        LDR      R2,??DataTable889  ;; ArrayOfSkins
        MLA      R3,R1,R0,R2
        LDR      R2,??DataTable884  ;; playerfolder
        LDR      R1,??DataTable874  ;; `?<Constant "%sskins\\\\%s%s">`
        LDR      R0,??DataTable887  ;; name
        SWI      +22
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+720
// 2803         }
// 2804 	DrawCanvas(canvasdata,IDLEICON_X,IDLEICON_Y,IDLEICON_X+GetImgWidth((int)name)-1,IDLEICON_Y+GetImgHeight((int)name)-1,1);
        LDR      R0,??DataTable887  ;; name
        SWI      +33
        MOV      R5,R0
        LDR      R0,??DataTable887  ;; name
        SWI      +34
        MOV      R1,#+1
        PUSH     {R1}
        CFI CFA R13+724
        LDR      R1,??maincsm_onmessage_2+0x1C  ;; IDLEICON_Y
        LDR      R1,[R1, #+0]
        ADD      R1,R5,R1
        SUB      R1,R1,#+1
        PUSH     {R1}
        CFI CFA R13+728
        LDR      R1,??maincsm_onmessage_2+0x20  ;; IDLEICON_X
        LDR      R1,[R1, #+0]
        ADD      R0,R0,R1
        SUB      R3,R0,#+1
        LDR      R0,??maincsm_onmessage_2+0x1C  ;; IDLEICON_Y
        LDR      R2,[R0, #+0]
        MOV      R0,R4
        SWI      +37
// 2805 	DrawImg(IDLEICON_X,IDLEICON_Y,(int)name);
        LDR      R2,??DataTable887  ;; name
        LDR      R0,??maincsm_onmessage_2+0x1C  ;; IDLEICON_Y
        LDR      R1,[R0, #+0]
        LDR      R0,??maincsm_onmessage_2+0x20  ;; IDLEICON_X
        LDR      R0,[R0, #+0]
        SWI      +35
        ADD      SP,SP,#+8        ;; stack cleaning
        CFI CFA R13+720
// 2806       }
// 2807     }
// 2808  }
// 2809   return(1);
??maincsm_onmessage_17:
        MOV      R0,#+1
        ADD      SP,SP,#+700      ;; stack cleaning
        CFI CFA R13+20
        POP      {R4-R7,PC}       ;; return
        DATA
??maincsm_onmessage_2:
        DC32     `?<Constant "control_panel">`
        DC32     `?<Constant "pLay">`
        DC32     `?<Constant "Mixed">`
        DC32     `?<Constant "Not found!">`
        DC32     successed_config_filename
        DC32     `?<Constant "\\312\\356\\355\\364i\\343\\363\\360\\340\\`
        DC32     EnableIconOnIdle
        DC32     IDLEICON_Y
        DC32     IDLEICON_X
        CFI EndBlock cfiBlock133
// 2810   
// 2811 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable818:
        DC32     playlistmode

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable819:
        DC32     `?<Constant "ffff">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable829:
        DC32     `?<Constant "%s%c">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable843:
        DC32     ipc_xtask_name

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable844:
        DC32     gipc + 4

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable845:
        DC32     ipc_my_name

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable846:
        DC32     gipc + 8

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable847:
        DC32     MAINCSM_ID

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable848:
        DC32     gipc

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable852:
        DC32     CanPlayNext

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable855:
        DC32     entime

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable857:
        DC32     timepp

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable858:
        DC32     RedrawTime

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable859:
        DC32     TimeTimer

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable860:
        DC32     timesec

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable861:
        DC32     timemin

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable862:
        DC32     PLAY_ID

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable869:
        DC32     `?<Constant "\\\\stop.png">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable870:
        DC32     `?<Constant "\\\\play.png">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable871:
        DC32     curskin

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable874:
        DC32     `?<Constant "%sskins\\\\%s%s">`

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock134 Using cfiCommon0
        CFI NoFunction
        THUMB
??UpdateCSMname??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock134
        REQUIRE UpdateCSMname
// 2812 
// 2813 const struct
// 2814 {
// 2815   CSM_DESC maincsm;
// 2816   WSHDR maincsm_name;

        RSEG DATA_C:CONST:SORT:NOROOT(2)
// 2817 }MAINCSM =
MAINCSM:
        DATA
        DC32 maincsm_onmessage, maincsm_oncreate, maincsm_onclose, 44, 1
        DC32 minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0
        DC16 139
        DC8 0, 0
// 2818 {
// 2819   {
// 2820   maincsm_onmessage,
// 2821   maincsm_oncreate,
// 2822 #ifdef NEWSGOLD
// 2823   0,
// 2824   0,
// 2825   0,
// 2826   0,
// 2827 #endif
// 2828   maincsm_onclose,
// 2829   sizeof(MAIN_CSM),
// 2830   1,
// 2831   &minus11
// 2832   },
// 2833   {
// 2834     maincsm_name_body,
// 2835     NAMECSM_MAGIC1,
// 2836     NAMECSM_MAGIC2,
// 2837     0x0,
// 2838     139
// 2839   }
// 2840 };
// 2841 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock135 Using cfiCommon1
        CFI Function UpdateCSMname
        ARM
// 2842 void UpdateCSMname(void)
// 2843 {
UpdateCSMname:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
// 2844   utf8_2ws((WSHDR *)(&MAINCSM.maincsm_name),NameOfCurentTrack,320);
        MOV      R2,#+320
        LDR      R1,??DataTable879  ;; NameOfCurentTrack
        LDR      R0,??UpdateCSMname_0  ;; MAINCSM + 24
        SWI      +483
// 2845   if (Get_WS_width((WSHDR *)(&MAINCSM.maincsm_name),7)==0)
        MOV      R1,#+7
        LDR      R0,??UpdateCSMname_0  ;; MAINCSM + 24
        SWI      +520
        CMP      R0,#+0
        POPNE    {PC}
// 2846   {
// 2847     wsprintf((WSHDR *)(&MAINCSM.maincsm_name),"%t - %t - %t",ctrack,cartist,calbum);
        LDR      R0,??DataTable880  ;; calbum
        PUSH     {R0}
        CFI CFA R13+8
        LDR      R3,??DataTable881  ;; cartist
        LDR      R2,??DataTable882  ;; ctrack
        LDR      R1,??UpdateCSMname_0+0x4  ;; `?<Constant "%t - %t - %t">`
        LDR      R0,??UpdateCSMname_0  ;; MAINCSM + 24
        SWI      +292
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+4
// 2848   }
// 2849 }
        POP      {PC}             ;; return
        DATA
??UpdateCSMname_0:
        DC32     MAINCSM + 24
        DC32     `?<Constant "%t - %t - %t">`
        CFI EndBlock cfiBlock135

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable879:
        DC32     NameOfCurentTrack

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable880:
        DC32     calbum

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable881:
        DC32     cartist

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable882:
        DC32     ctrack

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock136 Using cfiCommon0
        CFI NoFunction
        THUMB
??skins??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock136
        REQUIRE skins
// 2850 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock137 Using cfiCommon1
        CFI Function skins
        ARM
// 2851 void skins()
// 2852 {
skins:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
        SUB      SP,SP,#+572
        CFI CFA R13+576
// 2853   DIR_ENTRY de;
// 2854   NumberOfSkins=0;
        LDR      R0,??DataTable891  ;; NumberOfSkins
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 2855   unsigned int err;
// 2856   char path[128];
// 2857   sprintf(path,"%sskins\\",playerfolder);
        LDR      R2,??DataTable884  ;; playerfolder
        LDR      R1,??skins_0     ;; `?<Constant "%sskins\\\\">`
        ADD      R0,SP,#+444
        SWI      +22
// 2858   strcpy(name,path);
        ADD      R1,SP,#+444
        LDR      R0,??DataTable887  ;; name
        SWI      +26
// 2859   strcat(name,zir);
        LDR      R1,??skins_0+0x4  ;; zir
        LDR      R0,??DataTable887  ;; name
        SWI      +23
// 2860   if (FindFirstFile(&de,name,&err))
        MOV      R2,SP
        LDR      R1,??DataTable887  ;; name
        ADD      R0,SP,#+4
        SWI      +107
        CMP      R0,#+0
        BEQ      ??skins_1
// 2861   {
// 2862     do
// 2863     {
// 2864       sprintf(ArrayOfSkins[NumberOfSkins],de.file_name);
??skins_2:
        ADD      R1,SP,#+173
        LDR      R0,??DataTable891  ;; NumberOfSkins
        LDR      R0,[R0, #+0]
        MOV      R2,#+20
        LDR      R3,??DataTable889  ;; ArrayOfSkins
        MLA      R0,R2,R0,R3
        SWI      +22
// 2865       NumberOfSkins++;
        LDR      R0,??DataTable891  ;; NumberOfSkins
        LDR      R1,??DataTable891  ;; NumberOfSkins
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
        STR      R1,[R0, #+0]
// 2866     }
// 2867     while(FindNextFile(&de,&err));
        MOV      R1,SP
        ADD      R0,SP,#+4
        SWI      +108
        CMP      R0,#+0
        BNE      ??skins_2
// 2868   }
// 2869   FindClose(&de,&err);
??skins_1:
        MOV      R1,SP
        ADD      R0,SP,#+4
        SWI      +109
// 2870 }
        ADD      SP,SP,#+572      ;; stack cleaning
        CFI CFA R13+4
        POP      {PC}             ;; return
        DATA
??skins_0:
        DC32     `?<Constant "%sskins\\\\">`
        DC32     zir
        CFI EndBlock cfiBlock137

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable884:
        DC32     playerfolder

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable887:
        DC32     name

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable889:
        DC32     ArrayOfSkins

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable891:
        DC32     NumberOfSkins

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock138 Using cfiCommon0
        CFI NoFunction
        THUMB
??main??rT:
        BX       PC
        Nop      
        CFI EndBlock cfiBlock138
        REQUIRE main
// 2871 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock139 Using cfiCommon1
        CFI Function main
        ARM
// 2872 int main(char *exename, char *fname)
// 2873 {
main:
        PUSH     {R4-R7,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R7 Frame(CFA, -8)
        CFI R6 Frame(CFA, -12)
        CFI R5 Frame(CFA, -16)
        CFI R4 Frame(CFA, -20)
        CFI CFA R13+20
        SUB      SP,SP,#+764
        CFI CFA R13+784
        MOV      R4,R1
// 2874   if (!pracuje)
        LDR      R0,??DataTable894  ;; pracuje
        LDR      R0,[R0, #+0]
        CMP      R0,#+0
        BNE      ??main_0
// 2875   {
// 2876     GBS_StartTimerProc(&PlayerMenu,250,JaLiuBLiuPYVo);
        LDR      R2,??main_1+0x4  ;; JaLiuBLiuPYVo
        MOV      R1,#+250
        LDR      R0,??DataTable893  ;; PlayerMenu
        SWI      +77
// 2877     pracuje=1;
        LDR      R0,??DataTable894  ;; pracuje
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2878     TTime ktime;
// 2879     TDate date;
// 2880     GetDateTime(&date,&ktime);
        ADD      R1,SP,#+8
        ADD      R0,SP,#+16
        SWI      +180
// 2881     identyfikator=ktime.min*60+ktime.sec;
        LDR      R0,??DataTable895  ;; identyfikator
        LDRB     R1,[SP, #+9]
        MOV      R2,#+60
        LDRB     R3,[SP, #+10]
        MLA      R1,R2,R1,R3
        STR      R1,[R0, #+0]
// 2882   CheckDoubleRun();
        BL       CheckDoubleRun
// 2883   sprintf(LastPlaylist,fname);
        MOV      R1,R4
        LDR      R0,??DataTable983  ;; LastPlaylist
        SWI      +22
// 2884   InitConfig();
        _BLF     InitConfig,??InitConfig??rA
// 2885   LoadParams();
        BL       LoadParams
// 2886   skins();
        BL       skins
// 2887   readskinparamsfromfile();
        BL       readskinparamsfromfile
// 2888   AddKeybMsgHook_end((void *)my_keyhook);
        LDR      R0,??DataTable897  ;; my_keyhook
        SWI      +300
// 2889 mitka:
// 2890   if ((LastPlaylist[0]=='0')||(LastPlaylist[0]=='4'))
??main_2:
        LDR      R0,??DataTable983  ;; LastPlaylist
        LDRB     R0,[R0, #+0]
        CMP      R0,#+48
        BEQ      ??main_3
        LDR      R0,??DataTable983  ;; LastPlaylist
        LDRB     R0,[R0, #+0]
        CMP      R0,#+52
        BNE      ??main_4
// 2891   {
// 2892       char extension[3];
// 2893       sprintf(extension,"%c%c%c",LastPlaylist[strlen(LastPlaylist)-3],LastPlaylist[strlen(LastPlaylist)-2],LastPlaylist[strlen(LastPlaylist)-1]);
??main_3:
        LDR      R0,??DataTable983  ;; LastPlaylist
        SWI      +27
        MOV      R4,R0
        LDR      R0,??DataTable983  ;; LastPlaylist
        SWI      +27
        MOV      R5,R0
        LDR      R0,??DataTable983  ;; LastPlaylist
        SWI      +27
        LDR      R1,??DataTable983  ;; LastPlaylist
        ADD      R1,R4,R1
        LDRB     R1,[R1, #-1]
        PUSH     {R1}
        CFI CFA R13+788
        LDR      R1,??DataTable983  ;; LastPlaylist
        ADD      R1,R5,R1
        LDRB     R3,[R1, #-2]
        LDR      R1,??DataTable983  ;; LastPlaylist
        ADD      R0,R0,R1
        LDRB     R2,[R0, #-3]
        LDR      R1,??DataTable978  ;; `?<Constant "%c%c%c">`
        ADD      R0,SP,#+4
        SWI      +22
// 2894       if (strcmp_nocase(extension,"ipl")==0)
        ADR      R1,??main_5      ;; "ipl"
        ADD      R0,SP,#+4
        BL       strcmp_nocase
        CMP      R0,#+0
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+784
        BNE      ??main_6
// 2895       {
// 2896       playlistmode=1;
        LDR      R0,??DataTable981  ;; playlistmode
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2897       LoadPlaylist(LastPlaylist);
        LDR      R0,??DataTable983  ;; LastPlaylist
        BL       LoadPlaylist
// 2898       const char *p=strrchr(LastPlaylist,'\\')+1;
??main_7:
        MOV      R1,#+92
        LDR      R0,??DataTable983  ;; LastPlaylist
        SWI      +279
        ADD      R1,R0,#+1
// 2899       sprintf(playlistname,p);
        LDR      R0,??DataTable995  ;; playlistname
        SWI      +22
// 2900       char s[256];
// 2901       sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable987  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable988  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??DataTable987  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable988  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable989  ;; `?<Constant "%s%s">`
        ADD      R0,SP,#+464
        SWI      +22
// 2902       playing=1;
        LDR      R0,??DataTable990  ;; playing
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2903       Play(s);
        ADD      R0,SP,#+464
        BL       Play
        B        ??main_8
// 2904       }
// 2905       else 
// 2906     {
// 2907         if (((extension[0]=='M')||(extension[0]=='m'))&&((extension[2]=='u')||(extension[2]=='U')))
??main_6:
        LDRB     R0,[SP, #+0]
        CMP      R0,#+77
        CMPNE    R0,#+109
        BNE      ??main_9
        LDRB     R0,[SP, #+2]
        CMP      R0,#+117
        CMPNE    R0,#+85
        BNE      ??main_9
// 2908       {
// 2909           playlistmode=2;
        LDR      R0,??DataTable981  ;; playlistmode
        MOV      R1,#+2
        STR      R1,[R0, #+0]
// 2910           LoadM3uPlaylist(LastPlaylist);
        LDR      R0,??DataTable983  ;; LastPlaylist
        BL       LoadM3uPlaylist
// 2911           const char *p=strrchr(LastPlaylist,'\\')+1;
        B        ??main_7
// 2912           sprintf(playlistname,p);
// 2913           char s[256];
// 2914           sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
// 2915           playing=1;
// 2916           Play(s);
// 2917       } else
// 2918       {
// 2919         if (strcmp_nocase(extension,"imy")==0)
??main_9:
        ADR      R1,??main_5+0x4  ;; "imy"
        MOV      R0,SP
        BL       strcmp_nocase
        CMP      R0,#+0
        BNE      ??main_10
// 2920           {
// 2921             playlistmode=3;
        LDR      R0,??DataTable981  ;; playlistmode
        MOV      R1,#+3
        STR      R1,[R0, #+0]
// 2922             char s[256];
// 2923             sprintf(s,LastPlaylist);
        LDR      R1,??DataTable983  ;; LastPlaylist
        ADD      R0,SP,#+464
        SWI      +22
// 2924             NumberOfTracks=1;
        LDR      R0,??DataTable970  ;; NumberOfTracks
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2925             playing=1;
        LDR      R0,??DataTable990  ;; playing
        STR      R1,[R0, #+0]
// 2926             s[strlen(s)-4]=0;
        ADD      R0,SP,#+464
        SWI      +27
        ADD      R1,SP,#+464
        ADD      R0,R0,R1
        MOV      R1,#+0
        STRB     R1,[R0, #-4]
// 2927             s[0]='4';
        MOV      R1,#+52
        STRB     R1,[SP, #+464]
// 2928             DIR_ENTRY de;
// 2929             unsigned int err;
// 2930             if(FindFirstFile(&de,s,&err))
        ADD      R2,SP,#+4
        ADD      R1,SP,#+464
        ADD      R0,SP,#+24
        SWI      +107
        CMP      R0,#+0
        BEQ      ??main_11
// 2931             {
// 2932               CreatePlaylist(de.folder_name);
        ADD      R0,SP,#+64
        BL       CreatePlaylist
// 2933               VporiadkuvatySpysok();
        BL       VporiadkuvatySpysok
// 2934               cp=0;
        LDR      R0,??DataTable987  ;; cp
        MOV      R1,#+0
        B        ??main_12
// 2935               while (strcmp(spysok[1][cp],de.file_name)!=0)
// 2936               {
// 2937                 cp++;
??main_13:
        LDR      R0,??DataTable987  ;; cp
        LDR      R1,??DataTable987  ;; cp
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
??main_12:
        STR      R1,[R0, #+0]
// 2938               }
        ADD      R1,SP,#+193
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable987  ;; cp
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable988  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +25
        CMP      R0,#+0
        BNE      ??main_13
// 2939               const char *p=strrchr(de.folder_name,'\\')+1;
        MOV      R1,#+92
        ADD      R0,SP,#+64
        SWI      +279
        ADD      R1,R0,#+1
// 2940                           sprintf(playlistname,p);
        LDR      R0,??DataTable995  ;; playlistname
        SWI      +22
// 2941             Play(s);
        ADD      R0,SP,#+464
??main_14:
        BL       Play
        B        ??main_15
// 2942             }
// 2943             else
// 2944             {
// 2945               sprintf(playlistname,"Not found!    ");
??main_11:
        LDR      R1,??main_1+0x8  ;; `?<Constant "Not found!    ">`
        LDR      R0,??DataTable995  ;; playlistname
        SWI      +22
// 2946               sprintf(spysok[1][0],"File not found!");
        LDR      R1,??DataTable930  ;; `?<Constant "File not found!">`
        LDR      R0,??DataTable967  ;; spysok + 32640
        SWI      +22
// 2947             }
// 2948             FindClose(&de,&err);
??main_15:
        ADD      R1,SP,#+4
        ADD      R0,SP,#+24
        SWI      +109
        B        ??main_8
// 2949           }
// 2950         else
// 2951         {
// 2952           if (strcmp_nocase(extension,"new")==0)
??main_10:
        ADR      R1,??main_5+0x8  ;; "new"
        MOV      R0,SP
        BL       strcmp_nocase
        CMP      R0,#+0
        BNE      ??main_16
// 2953           {
// 2954             Message(LG_CREATE_PLAYLIST_PLEASE);
        LDR      R0,??main_1+0xC  ;; `?<Constant "\\321\\362\\342\\356\\360i\\362\\374 \\361`
        BL       Message
// 2955             ZapovnytyTaVidsortuvatyKatalog(curentfolder);
        LDR      R0,??DataTable953  ;; curentfolder
        BL       ZapovnytyTaVidsortuvatyKatalog
// 2956             playlistmode=0;
        LDR      R0,??DataTable981  ;; playlistmode
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 2957             WhatToView=3;
        LDR      R0,??DataTable955  ;; WhatToView
        MOV      R1,#+3
        STR      R1,[R0, #+0]
// 2958             for (int i=0;i<256;i++){katalogselected[i]=0;}
        LDR      R0,??DataTable956  ;; katalogselected
        MOV      R1,#+256
        MOV      R2,#+0
??main_17:
        STR      R2,[R0], #+4
        SUBS     R1,R1,#+1
        BEQ      ??main_8
        B        ??main_17
// 2959           }else
// 2960         {
// 2961           if ((strcmp_nocase(extension,format_1)==0)||(strcmp_nocase(extension,format_2)==0)||(strcmp_nocase(extension,format_3)==0)||(strcmp_nocase(extension,format_4)==0))
??main_16:
        LDR      R1,??DataTable936  ;; format_1
        MOV      R0,SP
        BL       strcmp_nocase
        CMP      R0,#+0
        BEQ      ??main_18
        LDR      R1,??DataTable937  ;; format_2
        MOV      R0,SP
        BL       strcmp_nocase
        CMP      R0,#+0
        BEQ      ??main_18
        LDR      R1,??DataTable938  ;; format_3
        MOV      R0,SP
        BL       strcmp_nocase
        CMP      R0,#+0
        BEQ      ??main_18
        LDR      R1,??DataTable939  ;; format_4
        MOV      R0,SP
        BL       strcmp_nocase
        CMP      R0,#+0
        BNE      ??main_8
// 2962           {
// 2963             playlistmode=4;
??main_18:
        LDR      R0,??DataTable981  ;; playlistmode
        MOV      R1,#+4
        STR      R1,[R0, #+0]
// 2964             NumberOfTracks=1;
        LDR      R0,??DataTable970  ;; NumberOfTracks
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 2965             playing=1;
        LDR      R0,??DataTable990  ;; playing
        STR      R1,[R0, #+0]
// 2966             DIR_ENTRY de;
// 2967             unsigned int err;
// 2968             if(FindFirstFile(&de,LastPlaylist,&err))
        ADD      R2,SP,#+4
        LDR      R1,??DataTable983  ;; LastPlaylist
        ADD      R0,SP,#+24
        SWI      +107
        CMP      R0,#+0
        BEQ      ??main_11
// 2969             {
// 2970               CreatePlaylist(de.folder_name);
        ADD      R0,SP,#+64
        BL       CreatePlaylist
// 2971               VporiadkuvatySpysok();
        BL       VporiadkuvatySpysok
// 2972               cp=0;
        LDR      R0,??DataTable987  ;; cp
        MOV      R1,#+0
        B        ??main_19
// 2973               while (strcmp(spysok[1][cp],de.file_name)!=0)
// 2974               {
// 2975                 cp++;
??main_20:
        LDR      R0,??DataTable987  ;; cp
        LDR      R1,??DataTable987  ;; cp
        LDR      R1,[R1, #+0]
        ADD      R1,R1,#+1
??main_19:
        STR      R1,[R0, #+0]
// 2976               }
        ADD      R1,SP,#+193
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R2,??DataTable987  ;; cp
        LDR      R2,[R2, #+0]
        LDR      R3,??DataTable988  ;; spysok
        ADD      R2,R3,R2, LSL #+7
        ADD      R0,R0,R2
        SWI      +25
        CMP      R0,#+0
        BNE      ??main_20
// 2977               const char *p=strrchr(de.folder_name,'\\')+1;
        MOV      R1,#+92
        ADD      R0,SP,#+64
        SWI      +279
        ADD      R1,R0,#+1
// 2978                           sprintf(playlistname,p);
        LDR      R0,??DataTable995  ;; playlistname
        SWI      +22
// 2979             Play(LastPlaylist);
        LDR      R0,??DataTable983  ;; LastPlaylist
        B        ??main_14
        DATA
??main_5:
        DC8      "ipl"
        DC8      "imy"
        DC8      "new"
        ARM
// 2980             }
// 2981             else
// 2982             {
// 2983               sprintf(playlistname,"Not found!    ");
// 2984               sprintf(spysok[1][0],"File not found!");
// 2985             }
// 2986             FindClose(&de,&err);
// 2987           }
// 2988         }
// 2989         }
// 2990       }
// 2991     }
// 2992   }else
// 2993   {
// 2994           ReadLastPlaylist();
??main_4:
        BL       ReadLastPlaylist
// 2995           if ((LastPlaylist[0]=='0')||(LastPlaylist[0]=='4')){goto mitka;}
        LDR      R0,??DataTable983  ;; LastPlaylist
        LDRB     R0,[R0, #+0]
        CMP      R0,#+48
        BEQ      ??main_2
        LDR      R0,??DataTable983  ;; LastPlaylist
        LDRB     R0,[R0, #+0]
        CMP      R0,#+52
        BEQ      ??main_2
// 2996           else
// 2997           {
// 2998             Message(LG_CREATE_PLAYLIST_PLEASE);
        LDR      R0,??main_1+0xC  ;; `?<Constant "\\321\\362\\342\\356\\360i\\362\\374 \\361`
        BL       Message
// 2999             ZapovnytyTaVidsortuvatyKatalog(curentfolder);
        LDR      R0,??DataTable953  ;; curentfolder
        BL       ZapovnytyTaVidsortuvatyKatalog
// 3000             playlistmode=0;
        LDR      R0,??DataTable981  ;; playlistmode
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 3001             WhatToView=3;
        LDR      R0,??DataTable955  ;; WhatToView
        MOV      R1,#+3
        STR      R1,[R0, #+0]
// 3002             for (int i=0;i<256;i++){katalogselected[i]=0;}
        LDR      R0,??DataTable956  ;; katalogselected
        MOV      R1,#+256
        MOV      R2,#+0
??main_21:
        STR      R2,[R0], #+4
        SUBS     R1,R1,#+1
        BNE      ??main_21
// 3003           }
// 3004   }
// 3005   for (int i=0;i<255;i++){notplayed[i]=0;timelength[i]=-1;}
??main_8:
        LDR      R0,??DataTable992  ;; notplayed
        LDR      R1,??DataTable993  ;; timelength
        MOV      R2,#+255
??main_22:
        MOV      R3,#+0
        STR      R3,[R0], #+4
        MVN      R3,R3
        STR      R3,[R1], #+4
        SUBS     R2,R2,#+1
        BNE      ??main_22
// 3006   if (playlistname[0]==0x1F){playlistname[0]=' ';}
        LDR      R0,??DataTable995  ;; playlistname
        LDRB     R0,[R0, #+0]
        CMP      R0,#+31
        LDREQ    R0,??DataTable995  ;; playlistname
        MOVEQ    R1,#+32
        STRBEQ   R1,[R0, #+0]
// 3007   if (playlistmode!=3) {playlistname[strlen(playlistname)-4]=0;}
        LDR      R0,??DataTable981  ;; playlistmode
        LDR      R0,[R0, #+0]
        CMP      R0,#+3
        BEQ      ??main_23
        LDR      R0,??DataTable995  ;; playlistname
        SWI      +27
        LDR      R1,??DataTable995  ;; playlistname
        ADD      R0,R0,R1
        MOV      R1,#+0
        STRB     R1,[R0, #-4]
// 3008   char dummy[sizeof(MAIN_CSM)];
// 3009   UpdateCSMname();
??main_23:
        BL       UpdateCSMname
// 3010   SUBPROC((void *)findlisttime);
        LDR      R0,??DataTable996  ;; findlisttime
        SWI      +369
// 3011   MAINCSM_ID = CreateCSM(&MAINCSM.maincsm,dummy,0);
        MOV      R2,#+0
        ADD      R1,SP,#+720
        LDR      R0,??main_1+0x10  ;; MAINCSM
        SWI      +263
        LDR      R1,??DataTable965  ;; MAINCSM_ID
        STR      R0,[R1, #+0]
        MOV      R0,#+0
        ADD      SP,SP,#+764
        CFI CFA R13+20
        POP      {R4-R7,PC}
        CFI CFA R13+784
// 3012   }
// 3013   else
// 3014   {
// 3015     for (int i=0;i<255;i++)
??main_0:
        LDR      R5,??DataTable988  ;; spysok
        LDR      R6,??DataTable967  ;; spysok + 32640
        MOV      R7,#+255
// 3016     {
// 3017       sprintf(spysok[0][i],pp);
??main_24:
        LDR      R1,??DataTable969  ;; pp
        MOV      R0,R5
        SWI      +22
// 3018       sprintf(spysok[1][i],pp);
        LDR      R1,??DataTable969  ;; pp
        MOV      R0,R6
        SWI      +22
// 3019     }
        ADD      R6,R6,#+128
        ADD      R5,R5,#+128
        SUBS     R7,R7,#+1
        BNE      ??main_24
// 3020     NumberOfTracks=0;
        LDR      R0,??DataTable970  ;; NumberOfTracks
        MOV      R1,#+0
        STR      R1,[R0, #+0]
// 3021     sprintf(LastPlaylist,fname);
        MOV      R1,R4
        LDR      R0,??DataTable983  ;; LastPlaylist
        SWI      +22
// 3022       char extension[3];
// 3023       sprintf(extension,"%c%c%c",LastPlaylist[strlen(LastPlaylist)-3],LastPlaylist[strlen(LastPlaylist)-2],LastPlaylist[strlen(LastPlaylist)-1]);
        LDR      R0,??DataTable983  ;; LastPlaylist
        SWI      +27
        MOV      R4,R0
        LDR      R0,??DataTable983  ;; LastPlaylist
        SWI      +27
        MOV      R5,R0
        LDR      R0,??DataTable983  ;; LastPlaylist
        SWI      +27
        LDR      R1,??DataTable983  ;; LastPlaylist
        ADD      R1,R4,R1
        LDRB     R1,[R1, #-1]
        PUSH     {R1}
        CFI CFA R13+788
        LDR      R1,??DataTable983  ;; LastPlaylist
        ADD      R1,R5,R1
        LDRB     R3,[R1, #-2]
        LDR      R1,??DataTable983  ;; LastPlaylist
        ADD      R0,R0,R1
        LDRB     R2,[R0, #-3]
        LDR      R1,??DataTable978  ;; `?<Constant "%c%c%c">`
        ADD      R0,SP,#+4
        SWI      +22
// 3024       if (strcmp_nocase(extension,"ipl")==0)
        ADR      R1,??main_1      ;; "ipl"
        ADD      R0,SP,#+4
        BL       strcmp_nocase
        CMP      R0,#+0
        ADD      SP,SP,#+4        ;; stack cleaning
        CFI CFA R13+784
        BNE      ??main_25
// 3025       {
// 3026       playlistmode=1;
        LDR      R0,??DataTable981  ;; playlistmode
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 3027       LoadPlaylist(LastPlaylist);
        LDR      R0,??DataTable983  ;; LastPlaylist
        BL       LoadPlaylist
// 3028       sprintf(playlistname,"media");
        LDR      R1,??main_1+0x14  ;; `?<Constant "media">`
        B        ??main_26
// 3029       //for (int i=strlen(LastPlaylist)-1;LastPlaylist[i]!='\\';i--){sprintf(playlistname,"%c%s",LastPlaylist[i],playlistname);}
// 3030       char s[256];
// 3031       sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
// 3032       playing=1;
// 3033       JaPerekliuchyvPisniu=1;
// 3034       Play(s);
// 3035       }
// 3036       else 
// 3037         if (((extension[0]=='M')||(extension[0]=='m'))&&((extension[2]=='u')||(extension[2]=='U')))
??main_25:
        LDRB     R0,[SP, #+0]
        CMP      R0,#+77
        CMPNE    R0,#+109
        BNE      ??main_27
        LDRB     R0,[SP, #+2]
        CMP      R0,#+117
        CMPNE    R0,#+85
        BNE      ??main_27
// 3038       {
// 3039           playlistmode=2;
        LDR      R0,??DataTable981  ;; playlistmode
        MOV      R1,#+2
        STR      R1,[R0, #+0]
// 3040           LoadM3uPlaylist(LastPlaylist);
        LDR      R0,??DataTable983  ;; LastPlaylist
        BL       LoadM3uPlaylist
// 3041           const char *p=strrchr(LastPlaylist,'\\')+1;
        MOV      R1,#+92
        LDR      R0,??DataTable983  ;; LastPlaylist
        SWI      +279
        ADD      R1,R0,#+1
// 3042           sprintf(playlistname,p);
??main_26:
        LDR      R0,??DataTable995  ;; playlistname
        SWI      +22
// 3043           char s[256];
// 3044           sprintf(s,"%s%s",spysok[0][cp],spysok[1][cp]);
        MOV      R0,#+128
        ORR      R0,R0,#0x7F00
        LDR      R1,??DataTable987  ;; cp
        LDR      R1,[R1, #+0]
        LDR      R2,??DataTable988  ;; spysok
        ADD      R1,R2,R1, LSL #+7
        ADD      R3,R0,R1
        LDR      R0,??DataTable987  ;; cp
        LDR      R0,[R0, #+0]
        LDR      R1,??DataTable988  ;; spysok
        ADD      R2,R1,R0, LSL #+7
        LDR      R1,??DataTable989  ;; `?<Constant "%s%s">`
        ADD      R0,SP,#+464
        SWI      +22
// 3045           playing=1;
        LDR      R0,??DataTable990  ;; playing
        MOV      R1,#+1
        STR      R1,[R0, #+0]
// 3046           JaPerekliuchyvPisniu=1;
        LDR      R0,??DataTable991  ;; JaPerekliuchyvPisniu
        STR      R1,[R0, #+0]
// 3047           Play(s);
        ADD      R0,SP,#+464
        BL       Play
// 3048       }
// 3049   for (int i=0;i<255;i++){notplayed[i]=0;timelength[i]=-1;}
??main_27:
        LDR      R0,??DataTable992  ;; notplayed
        LDR      R1,??DataTable993  ;; timelength
        MOV      R2,#+255
??main_28:
        MOV      R3,#+0
        STR      R3,[R0], #+4
        MVN      R3,R3
        STR      R3,[R1], #+4
        SUBS     R2,R2,#+1
        BNE      ??main_28
// 3050   if (playlistname[0]==0x1F){playlistname[0]=' ';}
        LDR      R0,??DataTable995  ;; playlistname
        LDRB     R0,[R0, #+0]
        CMP      R0,#+31
        LDREQ    R0,??DataTable995  ;; playlistname
        MOVEQ    R1,#+32
        STRBEQ   R1,[R0, #+0]
// 3051   UpdateCSMname();
        BL       UpdateCSMname
// 3052   SUBPROC((void *)findlisttime);
        LDR      R0,??DataTable996  ;; findlisttime
        SWI      +369
// 3053   }
// 3054 
// 3055   return 0;
        MOV      R0,#+0
        ADD      SP,SP,#+764      ;; stack cleaning
        CFI CFA R13+20
        POP      {R4-R7,PC}       ;; return
        DATA
??main_1:
        DC8      "ipl"
        DC32     JaLiuBLiuPYVo
        DC32     `?<Constant "Not found!    ">`
        DC32     `?<Constant "\\321\\362\\342\\356\\360i\\362\\374 \\361`
        DC32     MAINCSM
        DC32     `?<Constant "media">`
        CFI EndBlock cfiBlock139
// 3056 }

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable893:
        DC32     PlayerMenu

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable894:
        DC32     pracuje

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable895:
        DC32     identyfikator

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable897:
        DC32     my_keyhook

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable930:
        DC32     `?<Constant "File not found!">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable936:
        DC32     format_1

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable937:
        DC32     format_2

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable938:
        DC32     format_3

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable939:
        DC32     format_4

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable953:
        DC32     curentfolder

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable955:
        DC32     WhatToView

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable956:
        DC32     katalogselected

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable965:
        DC32     MAINCSM_ID

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable967:
        DC32     spysok + 32640

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable969:
        DC32     pp

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable970:
        DC32     NumberOfTracks

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable978:
        DC32     `?<Constant "%c%c%c">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable981:
        DC32     playlistmode

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable983:
        DC32     LastPlaylist

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable987:
        DC32     cp

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable988:
        DC32     spysok

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable989:
        DC32     `?<Constant "%s%s">`

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable990:
        DC32     playing

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable991:
        DC32     JaPerekliuchyvPisniu

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable992:
        DC32     notplayed

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable993:
        DC32     timelength

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable995:
        DC32     playlistname

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable996:
        DC32     findlisttime

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock140 Using cfiCommon1
        CFI NoFunction
        ARM
??rA??div32_a:
        LDR      R12,??Subroutine70_0  ;; ??div32_a
        MOV      PC,R12
        DATA
??Subroutine70_0:
        DC32     ??div32_a
        CFI EndBlock cfiBlock140

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock141 Using cfiCommon1
        CFI NoFunction
        ARM
??Cleaner??rA:
        LDR      R12,??Subroutine71_0  ;; Cleaner
        BX       R12
        DATA
??Subroutine71_0:
        DC32     Cleaner
        CFI EndBlock cfiBlock141

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock142 Using cfiCommon1
        CFI NoFunction
        ARM
??CreateMenuFindPlaylist??rA:
        LDR      R12,??Subroutine72_0  ;; CreateMenuFindPlaylist
        BX       R12
        DATA
??Subroutine72_0:
        DC32     CreateMenuFindPlaylist
        CFI EndBlock cfiBlock142

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock143 Using cfiCommon1
        CFI NoFunction
        ARM
??ShowMainMenu??rA:
        LDR      R12,??Subroutine73_0  ;; ShowMainMenu
        BX       R12
        DATA
??Subroutine73_0:
        DC32     ShowMainMenu
        CFI EndBlock cfiBlock143

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock144 Using cfiCommon1
        CFI NoFunction
        ARM
??kill_data??rA:
        LDR      R12,??Subroutine74_0  ;; kill_data
        BX       R12
        DATA
??Subroutine74_0:
        DC32     kill_data
        CFI EndBlock cfiBlock144

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock145 Using cfiCommon1
        CFI NoFunction
        ARM
??InitConfig??rA:
        LDR      R12,??Subroutine75_0  ;; InitConfig
        BX       R12
        DATA
??Subroutine75_0:
        DC32     InitConfig
        CFI EndBlock cfiBlock145

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for CanPlayNext>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for calbum>`:
        DATA
        DC8 " "
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for ctrack>`:
        DATA
        DC8 " "
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for cartist>`:
        DATA
        DC8 " "
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for CurentVolume>`:
        DATA
        DC32 4

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for PLAY_ID>`:
        DATA
        DC32 65535

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for xdisp>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for spysokx1>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for spysoky1>`:
        DATA
        DC32 50

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for spysokx2>`:
        DATA
        DC32 132

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for spysoky2>`:
        DATA
        DC32 176

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for spysokfont>`:
        DATA
        DC32 8

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for spysoktextattribute>`:
        DATA
        DC32 2

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for spysoktextcolor>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for spysoktextbackground>`:
        DATA
        DC32 23

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for timex1>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for timey1>`:
        DATA
        DC32 134

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for timex2>`:
        DATA
        DC32 132

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for timey2>`:
        DATA
        DC32 176

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for timefont>`:
        DATA
        DC32 7

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for timetextattribute>`:
        DATA
        DC32 2

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for timetextcolor>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for timetextbackground>`:
        DATA
        DC32 23

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for songx1>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for songy1>`:
        DATA
        DC32 67

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for songx2>`:
        DATA
        DC32 132

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for songy2>`:
        DATA
        DC32 176

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for songfont>`:
        DATA
        DC32 7

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for songtextcolor>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for songtextbackground>`:
        DATA
        DC32 23

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for tracksx1>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for tracksy1>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for tracksx2>`:
        DATA
        DC32 132

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for tracksy2>`:
        DATA
        DC32 176

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for tracksfont>`:
        DATA
        DC32 7

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for trackstextattribute>`:
        DATA
        DC32 4

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for trackstextcolor>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for trackstextbackground>`:
        DATA
        DC32 23

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for volumex>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for volumey>`:
        DATA
        DC32 157

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for randomx>`:
        DATA
        DC32 2

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for randomy>`:
        DATA
        DC32 2

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for ringoffx>`:
        DATA
        DC32 25

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for ringoffy>`:
        DATA
        DC32 2

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for prevx>`:
        DATA
        DC32 45

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for prevy>`:
        DATA
        DC32 18

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for nextx>`:
        DATA
        DC32 74

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for nexty>`:
        DATA
        DC32 18

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for volpx>`:
        DATA
        DC32 61

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for volpy>`:
        DATA
        DC32 5

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for volmx>`:
        DATA
        DC32 61

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for volmy>`:
        DATA
        DC32 30

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for play_stopx>`:
        DATA
        DC32 62

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for play_stopy>`:
        DATA
        DC32 19

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for progressbarx1>`:
        DATA
        DC32 2

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for progressbary1>`:
        DATA
        DC32 165

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for progressbarx2>`:
        DATA
        DC32 132

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for progressbarcolour>`:
        DATA
        DC32 20

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for katalogbackgroundcolour>`:
        DATA
        DC32 9

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for katalogfontcolour>`:
        DATA
        DC32 1

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for katalogselectedcolour>`:
        DATA
        DC32 14

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for menu_sk>`:
        DATA
        DC16 24, 0
        DC32 `?<Constant "Select">`
        DC16 1, 0
        DC32 `?<Constant "Back">`
        DC16 61, 0
        DC32 2147467515

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for menu_skt>`:
        DATA
        DC32 menu_sk, 0

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for sk>`:
        DATA
        DC16 4095, 0
        DC32 `?<Constant "\\307\\341\\345\\360\\345\\343\\362\\350">`

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for sf_inp_hdr>`:
        DATA
        DC16 0, 0, 0, 0
        DC32 0H, `?<Constant "\\302\\342\\345\\344i\\362\\374 i\\354\\'\\`
        DC32 32767

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for sf_inp_desc>`:
        DATA
        DC32 1, sf_inp_onkey, sf_inp_ghook, sf_inp_locret, 0, menu_skt
        DC16 0, 0, 0, 0
        DC32 4, 100, 101, 0, 0, 1073741824

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for curentfolder>`:
        DATA
        DC8 "4:"
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
        DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?<Initializer for xdispnapriamok>`:
        DATA
        DC32 3

        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?*?DATA_ID`:

        RSEG INITTAB:CODE:ROOT(2)
        DATA
?init?tab?DATA_I:
        DCD      sfe(DATA_I) - sfb(DATA_I), sfb(DATA_I), sfb(DATA_ID)

        RSEG INITTAB:CODE:ROOT(2)
        DATA
?init?tab?DATA_Z:
        DCD      sfe(DATA_Z) - sfb(DATA_Z), sfb(DATA_Z), sfb(DATA_Z)

        END
// 
//  34 132 bytes in segment CODE
//   1 676 bytes in segment DATA_C
//     992 bytes in segment DATA_I
//     992 bytes in segment DATA_ID
// 105 804 bytes in segment DATA_Z
//      24 bytes in segment INITTAB
// 
//  33 780 bytes of CODE  memory (+ 376 bytes shared)
//   2 668 bytes of CONST memory
// 106 796 bytes of DATA  memory
//
//Errors: none
//Warnings: none
