////////////////////////////////////////////////////////////////////////////// // / // IAR ARM ANSI C/C++ Compiler V4.40A/W32 EVALUATION 28/Mar/2008 19:09:04 / // 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 NEWSGOLD -lC / // E:\Ivo\arm\IVOPLAY\NewSGold\List\ -lA / // E:\Ivo\arm\IVOPLAY\NewSGold\List\ -o / // E:\Ivo\arm\IVOPLAY\NewSGold\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\NewSGold\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 ??DataTable4 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 ??DataTable6 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 ??onDestroy??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, 984, 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, 21524, STACK PUBLIC LoadParams FUNCTION LoadParams,0201H LOCFRAME CSTACK, 16, STACK PUBLIC LoadPlaylist FUNCTION LoadPlaylist,0203H LOCFRAME CSTACK, 20992, 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, 1348, 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, 1156, 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, 1252, 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 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, 1184, 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, 1124, 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 onDestroy FUNCTION onDestroy,0603H LOCFRAME CSTACK, 4, STACK 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, 20860, 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, 972, 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 onDestroy SYMBOL "onDestroy" ??onDestroy??rT SYMBOL "??rT", onDestroy 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,0202H 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) `?`: DATA DC8 "\\next.png" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\\prev.png" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%i:%i%i" RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%i:%i%i/%i:%i%i" RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\\progressbar.png" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\\minus.png" DC8 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\\plus.png" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\\off.png" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\\random.png" RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\\play.png" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\\stop.png" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%i%c%i" DC8 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%splaylists\\%s.ipl" DC8 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%s\015%s\015%s" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%sskins\\%s\\VOL%i.png" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\\background.png" RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\\fon.png" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: 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) `?`: DATA DC8 "%c%c%c" DC8 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%s\\*" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(0) DATA DC8 ".." RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%s%c" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%sskins\\%s\\params.txt" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "Full name" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "Back" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "Select" DC8 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: 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) `?`: DATA DC8 "Not found! " DC8 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%sskins\\" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%t - %t - %t" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "File not found!" RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "Not found!" DC8 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "Mixed" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "pLay" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "control_panel" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "control_panel|remove_point|" RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "Ivoplay" RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%s\\%s" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%t\015%t\015%t" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%splaylists\\standart.ipl" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "*.%s" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "Full time" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%s:\015%s%s\015%s: %i:%i%i" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "ffff" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: 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) `?`: DATA DC8 "0:\\Zbin\\etc\\ivoplay.bcfg" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%slastplaylist.cfg" DC8 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%c%c%c%s" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: 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) `?`: DATA DC8 "%s - %s - %s" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%s%s" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%c%c%c%c%c" DC8 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "%c%c" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(0) `?`: DATA DC8 2AH RSEG DATA_C:CONST:SORT:NOROOT(0) DATA DC8 "OK" RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\302\373\341\356\360" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\304\356\341\340\342\350\362\374" DC8 0, 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "\323\344\340\353\350\362\374" 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 `?` 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 `?` RSEG DATA_I:DATA:SORT:NOROOT(2) ctrack: DS8 128 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) cartist: DS8 128 REQUIRE `?` 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 `?` 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 `?` // 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 `?` 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 `?` RSEG DATA_I:DATA:SORT:NOROOT(2) spysoky1: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) spysokx2: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) spysoky2: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) spysokfont: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) spysoktextattribute: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) spysoktextcolor: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) spysoktextbackground: DS8 4 REQUIRE `?` 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 `?` RSEG DATA_I:DATA:SORT:NOROOT(2) timey1: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) timex2: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) timey2: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) timefont: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) timetextattribute: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) timetextcolor: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) timetextbackground: DS8 4 REQUIRE `?` 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 `?` RSEG DATA_I:DATA:SORT:NOROOT(2) songy1: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) songx2: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) songy2: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) songfont: DS8 4 REQUIRE `?` RSEG DATA_Z:DATA:SORT:NOROOT(2) songtextattribute: DS8 4 RSEG DATA_I:DATA:SORT:NOROOT(2) songtextcolor: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) songtextbackground: DS8 4 REQUIRE `?` 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 `?` RSEG DATA_I:DATA:SORT:NOROOT(2) tracksy1: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) tracksx2: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) tracksy2: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) tracksfont: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) trackstextattribute: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) trackstextcolor: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) trackstextbackground: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) // 111 int volumex=1,volumey=157; volumex: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) volumey: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) // 112 int randomx=2,randomy=2; randomx: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) randomy: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) // 113 int ringoffx=25,ringoffy=2; ringoffx: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) ringoffy: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) // 114 int prevx=45,prevy=18; prevx: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) prevy: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) // 115 int nextx=74,nexty=18; nextx: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) nexty: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) // 116 int volpx=61,volpy=5; volpx: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) volpy: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) // 117 int volmx=61,volmy=30; volmx: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) volmy: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) // 118 int play_stopx=62,play_stopy=19; play_stopx: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) play_stopy: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) // 119 int progressbarx1=2,progressbary1=165,progressbarx2=132,progressbarcolour=20; progressbarx1: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) progressbary1: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) progressbarx2: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) progressbarcolour: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) // 120 int katalogbackgroundcolour=9,katalogfontcolour=1,katalogselectedcolour=14; katalogbackgroundcolour: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) katalogfontcolour: DS8 4 REQUIRE `?` RSEG DATA_I:DATA:SORT:NOROOT(2) katalogselectedcolour: DS8 4 REQUIRE `?` 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,#+368 CFI CFA R13+380 SUB SP,SP,#+20480 CFI CFA R13+20860 // 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 ;; `?` 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,#+556 ADD R0,R0,#+19456 SWI +107 // 133 fread(f,list,de.file_size,&err); ADD R3,SP,#+8 ADD R2,SP,#+19968 LDR R2,[R2, #+84] ADD R1,SP,#+12 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 ADD R1,SP,#+19968 LDR R1,[R1, #+84] CMP R1,#+0 BEQ ??readskinparamsfromfile_2 ADD R1,SP,#+12 ??readskinparamsfromfile_3: LDRB R2,[R1], #+1 CMP R2,#+13 BEQ ??readskinparamsfromfile_2 // 137 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_4: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_6 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_7: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_9 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_10: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_12 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_13: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_15 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_16: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_18 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_19: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_21 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_22: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_24 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_25: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_27 ADD R0,SP,#+12 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_28 B ??readskinparamsfromfile_29 // 171 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_31: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_33 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_34: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_36 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_37: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_39 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_40: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_42 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_43: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_45 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_46: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_48 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_49: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_51 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_52: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_54 ADD R0,SP,#+12 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_55 B ??readskinparamsfromfile_56 // 205 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_58: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_60 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_61: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_63 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_64: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_66 ADD R0,SP,#+12 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_67: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_69 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_68 // 220 sscanf(num,p_i,&songy2); ??readskinparamsfromfile_69: LDR R2,??readskinparamsfromfile_0+0x6C ;; 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_70 // 223 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_70: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_72 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_71 // 224 sscanf(num,p_i,&songfont); ??readskinparamsfromfile_72: LDR R2,??readskinparamsfromfile_0+0x70 ;; 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_73 // 227 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_73: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_75 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_74 // 228 sscanf(num,p_i,&songtextattribute); ??readskinparamsfromfile_75: LDR R2,??readskinparamsfromfile_0+0x74 ;; 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_76 // 231 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_76: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_78 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_77 // 232 sscanf(num,p_i,&songtextcolor); ??readskinparamsfromfile_78: LDR R2,??readskinparamsfromfile_79 ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_80: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_82 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_81 // 236 sscanf(num,p_i,&songtextbackground); ??readskinparamsfromfile_82: LDR R2,??readskinparamsfromfile_79+0x4 ;; 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_83 B ??readskinparamsfromfile_84 // 239 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_86: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_88 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_87 // 242 sscanf(num,p_i,&tracksx1); ??readskinparamsfromfile_88: LDR R2,??readskinparamsfromfile_79+0x8 ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_89: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_91 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_90 // 246 sscanf(num,p_i,&tracksy1); ??readskinparamsfromfile_91: LDR R2,??readskinparamsfromfile_79+0xC ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_92: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_94 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_93 // 250 sscanf(num,p_i,&tracksx2); ??readskinparamsfromfile_94: LDR R2,??readskinparamsfromfile_79+0x10 ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_95: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_97 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_96 // 254 sscanf(num,p_i,&tracksy2); ??readskinparamsfromfile_97: LDR R2,??readskinparamsfromfile_79+0x14 ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_98: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_100 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_99 // 258 sscanf(num,p_i,&tracksfont); ??readskinparamsfromfile_100: LDR R2,??readskinparamsfromfile_79+0x18 ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_101: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_103 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_102 // 262 sscanf(num,p_i,&trackstextattribute); ??readskinparamsfromfile_103: LDR R2,??readskinparamsfromfile_79+0x1C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_104: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_106 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_105 // 266 sscanf(num,p_i,&trackstextcolor); ??readskinparamsfromfile_106: LDR R2,??readskinparamsfromfile_79+0x20 ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_107: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_109 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_108 // 270 sscanf(num,p_i,&trackstextbackground); ??readskinparamsfromfile_109: LDR R2,??readskinparamsfromfile_79+0x24 ;; 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_110 B ??readskinparamsfromfile_111 // 273 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_113: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_115 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_114 // 276 sscanf(num,p_i,&volumex); ??readskinparamsfromfile_115: LDR R2,??readskinparamsfromfile_79+0x28 ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_116: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_118 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_117 // 280 sscanf(num,p_i,&volumey); ??readskinparamsfromfile_118: LDR R2,??DataTable1 ;; volumey LDR R1,??readskinparamsfromfile_0+0x20 ;; p_i MOV R0,SP SWI +501 // 281 i=i+2; ADD R0,R5,#+2 ADD R1,SP,#+19968 LDR R1,[R1, #+84] CMP R0,R1 BCC ??readskinparamsfromfile_119 B ??readskinparamsfromfile_120 // 282 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_122: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_124 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_123 // 286 sscanf(num,p_i,&randomx); ??readskinparamsfromfile_124: LDR R2,??DataTable2 ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_125: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_127 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_126 // 290 sscanf(num,p_i,&randomy); ??readskinparamsfromfile_127: LDR R2,??DataTable3 ;; 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_128 B ??readskinparamsfromfile_129 DATA ??readskinparamsfromfile_0: DC32 curskin DC32 ArrayOfSkins DC32 playerfolder DC32 `?` DC32 name DC32 pp DC32 `?` 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 DC32 songy2 DC32 songfont DC32 songtextattribute ARM // 293 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_131: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_133 ADD R0,SP,#+12 LDRB R0,[R5, +R0] CMP R0,#+13 BNE ??readskinparamsfromfile_132 // 296 sscanf(num,p_i,&ringoffx); ??readskinparamsfromfile_133: LDR R2,??DataTable5 ;; ringoffx LDR R1,??readskinparamsfromfile_79+0x2C ;; p_i MOV R0,SP SWI +501 // 297 i=i+2; ADD R5,R5,#+2 // 298 sprintf(num,pp); LDR R1,??DataTable60 ;; pp MOV R0,SP SWI +22 B ??readskinparamsfromfile_134 // 299 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_134: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_136 ADD R0,SP,#+12 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_79+0x2C ;; 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_137 B ??readskinparamsfromfile_138 // 303 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_140: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_142 ADD R0,SP,#+12 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_79+0x2C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_143: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_145 ADD R0,SP,#+12 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_79+0x2C ;; 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_146 B ??readskinparamsfromfile_147 // 313 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_149: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_151 ADD R0,SP,#+12 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_79+0x2C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_152: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_154 ADD R0,SP,#+12 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_79+0x2C ;; 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_155 B ??readskinparamsfromfile_156 // 323 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_158: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_160 ADD R0,SP,#+12 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_79+0x2C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_161: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_163 ADD R0,SP,#+12 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_79+0x2C ;; 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_164 B ??readskinparamsfromfile_165 // 333 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_167: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_169 ADD R0,SP,#+12 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_79+0x2C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_170: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_172 ADD R0,SP,#+12 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_79+0x2C ;; 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_173 B ??readskinparamsfromfile_174 // 343 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_176: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_178 ADD R0,SP,#+12 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_79+0x2C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_179: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_181 ADD R0,SP,#+12 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_79+0x2C ;; 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_182 B ??readskinparamsfromfile_183 // 353 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_185: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_187 ADD R0,SP,#+12 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_79+0x2C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_188: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_190 ADD R0,SP,#+12 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_79+0x2C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_191: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_193 ADD R0,SP,#+12 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_79+0x2C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_194: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_196 ADD R0,SP,#+12 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_79+0x2C ;; 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 ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCC ??readskinparamsfromfile_197 B ??readskinparamsfromfile_198 // 371 while ((i` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_200: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_202 ADD R0,SP,#+12 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_79+0x2C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_203: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_205 ADD R0,SP,#+12 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_79+0x2C ;; 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` MOV R0,SP SWI +22 ADD R5,R5,#+1 ??readskinparamsfromfile_206: ADD R0,SP,#+19968 LDR R0,[R0, #+84] CMP R5,R0 BCS ??readskinparamsfromfile_208 ADD R0,SP,#+12 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_79+0x2C ;; 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,#+556 ADD R0,R0,#+19456 SWI +109 // 386 } // 387 fclose(f,&err); ??readskinparamsfromfile_1: ADD R1,SP,#+8 MOV R0,R4 SWI +13 // 388 } ADD SP,SP,#+368 ;; stack cleaning CFI CFA R13+20492 ADD SP,SP,#+20480 CFI CFA R13+12 POP {R4,R5,PC} ;; return DATA ??readskinparamsfromfile_79: DC32 songtextcolor DC32 songtextbackground DC32 tracksx1 DC32 tracksy1 DC32 tracksx2 DC32 tracksy2 DC32 tracksfont DC32 trackstextattribute DC32 trackstextcolor DC32 trackstextbackground DC32 volumex DC32 p_i CFI EndBlock cfiBlock7 RSEG CODE:CODE:NOROOT(2) DATA ??DataTable1: DC32 volumey RSEG CODE:CODE:NOROOT(2) DATA ??DataTable2: DC32 randomx RSEG CODE:CODE:NOROOT(2) DATA ??DataTable3: DC32 randomy RSEG CODE:CODE:NOROOT(2) DATA ??DataTable5: 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 `?` 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 `?` // 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 `?` // 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,#+0 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 `?` // 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 `?` // 445 RSEG DATA_I:DATA:SORT:NOROOT(2) // 446 INPUTDIA_DESC sf_inp_desc= sf_inp_desc: DS8 56 REQUIRE `?` // 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;i0) ??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 `?` // 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;i0) // 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;i0) // 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,#+204 CFI CFA R13+224 SUB SP,SP,#+1024 CFI CFA R13+1248 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 ;; `?` ADD R0,SP,#+844 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,#+844 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,#+189 ADD R0,SP,#+76 ADD R0,R0,#+1024 SWI +22 // 565 if (IsFile(file_name)) ADD R0,SP,#+76 ADD R0,R0,#+1024 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,#+76 ADD R0,R0,#+1024 SWI +27 MOV R4,R0 ADD R0,SP,#+76 ADD R0,R0,#+1024 SWI +27 MOV R5,R0 ADD R0,SP,#+76 ADD R0,R0,#+1024 SWI +27 ADD R1,SP,#+76 ADD R1,R1,#+1024 ADD R1,R4,R1 LDRB R1,[R1, #-1] PUSH {R1} CFI CFA R13+1252 ADD R1,SP,#+1104 ADD R1,R5,R1 LDRB R3,[R1, #-2] ADD R1,SP,#+1104 ADD R0,R0,R1 LDRB R2,[R0, #-3] LDR R1,??DataTable79 ;; `?` 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+1248 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,#+76 ADD R1,R1,#+1024 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;i1) {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;i0) ??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,#+204 ;; stack cleaning CFI CFA R13+1044 ADD SP,SP,#+1024 CFI CFA R13+20 POP {R4-R7,PC} ;; return DATA ??ZapovnytyTaVidsortuvatyKatalog_0: DC8 "..",+0 DC32 `?` CFI EndBlock cfiBlock25 RSEG CODE:CODE:NOROOT(2) DATA ??DataTable79: DC32 `?` 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 MOV R0,#+4 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 ;; `?` 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 ;; `?` 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 `?` 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 `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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)` 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 ;; `?` // 719 else {sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\play.png");} LDRNE R0,??OnRedraw_11+0x38 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` LDR R0,??OnRedraw_0+0x18 ;; name SWI +22 // 734 if (CurentVolume` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` LDR R0,??OnRedraw_0+0x18 ;; name SWI +22 // 769 DrawImg(prevx,prevy,(int)name); LDR R2,??OnRedraw_0+0x18 ;; name LDR R0,??OnRedraw_21+0x4 ;; 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 MOV R0,#+4 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+10NumberOfTracks) 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=(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` 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 `?` DC32 curskin DC32 ArrayOfSkins DC32 playerfolder DC32 `?` DC32 name DC32 CurentVolume DC32 `?` 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 `?` DC32 `?` 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 ;; `?` 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,#+12 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 ;; `?` 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 ;; `?` 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 `?` DC32 trackstextbackground DC32 trackstextcolor DC32 trackstextattribute DC32 tracksfont DC32 tracksy2 DC32 tracksx2 DC32 tracksy1 DC32 tracksx1 DC32 playing DC32 `?` DC32 `?` DC32 play_stopy DC32 play_stopx DC32 random DC32 `?` DC32 randomy DC32 randomx DC32 ringoff DC32 `?` DC32 ringoffy DC32 ringoffx DC32 `?` DC32 volpy DC32 volpx DC32 `?` DC32 volmy DC32 volmx DC32 `?` DC32 timelength DC32 timemin DC32 timesec DC32 progressbarx1 DC32 progressbarx2 DC32 progressbarcolour DC32 progressbary1 DC32 entime DC32 0x88888889 DC32 0x66666667 DC32 `?` DC32 timetextbackground DC32 timetextcolor DC32 timetextattribute DC32 timefont DC32 timey2 DC32 timex2 DC32 timey1 DC32 timex1 DC32 `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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+10kataloglength) 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=(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 ;; `?` 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 `?` DC32 prevy DC8 "..." DC32 prevx DC32 `?` 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 `?` DC32 pt DC32 `?` DC32 `?` DC32 `?` CFI EndBlock cfiBlock37 RSEG CODE:CODE:NOROOT(2) DATA ??DataTable123: DC32 `?` 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 `?` 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 `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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` DC32 `?` DC32 `?` 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 { // 1077 #ifdef NEWSGOLD // 1078 return(0); findmp3length: MOV R0,#+0 BX LR ;; return CFI EndBlock cfiBlock47 // 1079 #else // 1080 TWavLen wl; // 1081 zeromem(&wl, sizeof(wl)); // 1082 wl.type=0x2000; // 1083 wl.wfilename=AllocWS(128); // 1084 str_2ws(wl.wfilename,playy,128); // 1085 GetWavLen(&wl); // 1086 return (wl.length/1000); // 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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,#+296 CFI CFA R13+316 SUB SP,SP,#+1024 CFI CFA R13+1340 MOV R6,R0 // 1168 unsigned int err; // 1169 char s[256]; // 1170 sprintf(s,fname); MOV R1,R6 ADD R0,SP,#+896 SWI +22 // 1171 if(FindFirstFile(&de,s,&err)) MOV R2,SP ADD R1,SP,#+896 ADD R0,SP,#+60 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,#+1280 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,#+1152 SWI +278 // 1186 s[p-fname]='\0'; SUB R0,R7,R6 ADD R1,SP,#+1152 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,#+36 ADD R0,SP,#+24 SWI +285 // 1189 _sfo1.repeat_num=1; MOV R1,#+1 STRH R1,[SP, #+24] // 1190 _sfo1.time_between_play=0; MOV R1,#+0 STR R1,[SP, #+28] // 1191 _sfo1.play_first=0; STR R1,[SP, #+32] // 1192 _sfo1.volume=1; MOV R1,#+1 STR R1,[SP, #+36] // 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, #+40] // 1199 PLAY_ID=PlayFile(0xC, sndPath, sndFName, MMI_CEPID, MSG_PLAYFILE_REPORT, &_sfo1); ADD R0,SP,#+24 PUSH {R0} CFI CFA R13+1344 MOV R0,#+188 ORR R0,R0,#0x7000 PUSH {R0} CFI CFA R13+1348 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,#+24 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+1340 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,#+1152 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+1344 LDR R3,??DataTable297 ;; cartist LDR R2,??DataTable298 ;; ctrack LDR R1,??Play_5 ;; `?` 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+1340 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,#+60 SWI +109 // 1229 } ADD SP,SP,#+296 ;; stack cleaning CFI CFA R13+1044 ADD SP,SP,#+1024 CFI CFA R13+20 POP {R4-R7,PC} ;; return DATA ??Play_5: DC32 `?` 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,#+492 CFI CFA R13+512 SUB SP,SP,#+20480 CFI CFA R13+20992 // 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,#+364 ADD R0,R0,#+20480 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,#+364 ADD R0,R0,#+20480 SWI +10 MOV R4,R0 // 1241 DIR_ENTRY de; // 1242 FindFirstFile(&de,ddd,&err); ADD R2,SP,#+4 ADD R1,SP,#+364 ADD R1,R1,#+20480 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, #+80] 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` 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,#+492 ;; stack cleaning CFI CFA R13+20500 ADD SP,SP,#+20480 CFI CFA R13+20 POP {R4-R7,PC} ;; return CFI CFA R13+20992 ??LoadPlaylist_4: MOV R3,R0 MOV R2,R5 LDR R1,??DataTable312 ;; `?` 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,#+1020 CFI CFA R13+1044 SUB SP,SP,#+20480 CFI CFA R13+21524 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,#+892 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,#+892 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, #+80] 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,#+364 ADD R0,R0,#+20480 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` ADD R0,SP,#+364 ADD R0,R0,#+20480 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,#+364 ADD R0,R0,#+20480 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,#+364 ADD R0,R0,#+20480 SUB R2,R8,R0 ADD R1,SP,#+364 ADD R1,R1,#+20480 ADD R0,SP,#+764 ADD R0,R0,#+20480 SWI +278 // 1309 s[p-temp]='\0'; ADD R0,SP,#+364 ADD R0,R0,#+20480 SUB R0,R8,R0 ADD R1,SP,#+764 ADD R1,R1,#+20480 MOV R2,#+0 STRB R2,[R0, +R1] // 1310 sprintf(spysok[0][i],s,128); MOV R2,#+128 ADD R1,SP,#+764 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, #+80] CMP R4,R0 BCS ??LoadM3uPlaylist_4 LDR R1,??DataTable314 ;; pp ADD R0,SP,#+364 ADD R0,R0,#+20480 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,#+1020 ;; 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 `?` 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;i0) 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` 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 `?` 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 ;; `?` 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 ;; `?` 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 ;; `?` 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 `?` 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] LDR R0,[R0, #+4] 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, #+8] 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 ??onDestroy??rT: BX PC Nop CFI EndBlock cfiBlock90 REQUIRE onDestroy // 1581 // 1582 #ifdef NEWSGOLD RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock91 Using cfiCommon1 CFI Function onDestroy ARM // 1583 void onDestroy(MAIN_GUI *data, void (*mfree_adr)(void *)) // 1584 { // 1585 mfree_adr(data); onDestroy: MOV PC,R1 ;; tailcall CFI EndBlock cfiBlock91 // 1586 } RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock92 Using cfiCommon0 CFI NoFunction THUMB ??method??rT: BX PC Nop CFI EndBlock cfiBlock92 REQUIRE method // 1587 #else // 1588 extern void kill_data(void *p, void (*func_p)(void *)); // 1589 #endif // 1590 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock93 Using cfiCommon1 CFI Function method ARM // 1591 int method(void){return(0);} method: MOV R0,#+0 BX LR ;; return CFI EndBlock cfiBlock93 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock94 Using cfiCommon0 CFI NoFunction THUMB ??ShowPlayerMenu??rT: BX PC Nop CFI EndBlock cfiBlock94 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 onDestroy, 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 cfiBlock95 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,#+64 SWI +20 MOV R4,R0 // 1616 zeromem(main_gui,sizeof(MAIN_GUI)); MOV R1,#+64 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, #+48] // 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, #+32] // 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 cfiBlock95 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 cfiBlock96 Using cfiCommon0 CFI NoFunction THUMB ??my_keyhook??rT: BX PC Nop CFI EndBlock cfiBlock96 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 cfiBlock97 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 MOV R1,#+176 ORR R1,R1,#0xDE00 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 cfiBlock97 // 1691 } RSEG CODE:CODE:NOROOT(2) DATA ??DataTable438: DC32 MAINCSM_ID RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock98 Using cfiCommon0 CFI NoFunction THUMB ??SaveParams??rT: BX PC Nop CFI EndBlock cfiBlock98 REQUIRE SaveParams // 1692 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock99 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 ;; `?` ADD R0,SP,#+4 SWI +22 // 1698 unsigned int err; // 1699 sprintf(name,"%sparams.txt",playerfolder); LDR R2,??DataTable468 ;; playerfolder LDR R1,??DataTable469 ;; `?` 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 cfiBlock99 RSEG CODE:CODE:NOROOT(2) DATA ??DataTable442: DC32 `?` RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock100 Using cfiCommon0 CFI NoFunction THUMB ??WriteLastPlaylist??rT: BX PC Nop CFI EndBlock cfiBlock100 REQUIRE WriteLastPlaylist // 1704 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock101 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 ;; `?` ADD R0,SP,#+12 SWI +22 // 1710 unsigned int err; // 1711 sprintf(name,"%slastplaylist.cfg",playerfolder); LDR R2,??DataTable468 ;; playerfolder LDR R1,??DataTable457 ;; `?` 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 `?` CFI EndBlock cfiBlock101 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock102 Using cfiCommon0 CFI NoFunction THUMB ??ReadLastPlaylist??rT: BX PC Nop CFI EndBlock cfiBlock102 REQUIRE ReadLastPlaylist // 1718 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock103 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,#+116 CFI CFA R13+132 SUB SP,SP,#+1024 CFI CFA R13+1156 // 1721 int f; // 1722 char h[300]; // 1723 unsigned int err; // 1724 sprintf(name,"%slastplaylist.cfg",playerfolder); LDR R2,??DataTable468 ;; playerfolder LDR R1,??DataTable457 ;; `?` 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, #+44] CMP R0,#+0 BEQ ??ReadLastPlaylist_1 // 1730 { // 1731 fread(f,h,de.file_size,&err); MOV R3,SP MOV R2,R0 ADD R1,SP,#+840 MOV R0,R4 SWI +11 // 1732 random=h[0]-1; LDR R0,??DataTable461 ;; random LDRB R1,[SP, #+840] SUB R1,R1,#+1 STR R1,[R0, #+0] // 1733 cp=h[1]-1; LDR R0,??DataTable462 ;; cp LDRB R1,[SP, #+841] 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` LDR R0,??DataTable467 ;; LastPlaylist SWI +22 // 1738 } ADD R5,R5,#+1 ??ReadLastPlaylist_2: LDRB R0,[SP, #+842] 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,#+116 ;; stack cleaning CFI CFA R13+1040 ADD SP,SP,#+1024 CFI CFA R13+16 POP {R4-R6,PC} ;; return CFI EndBlock cfiBlock103 RSEG CODE:CODE:NOROOT(2) DATA ??DataTable457: DC32 `?` 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 cfiBlock104 Using cfiCommon0 CFI NoFunction THUMB ??LoadParams??rT: BX PC Nop CFI EndBlock cfiBlock104 REQUIRE LoadParams // 1744 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock105 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 ;; `?` 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 cfiBlock105 RSEG CODE:CODE:NOROOT(2) DATA ??DataTable468: DC32 playerfolder RSEG CODE:CODE:NOROOT(2) DATA ??DataTable469: DC32 `?` 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 cfiBlock106 Using cfiCommon0 CFI NoFunction THUMB ??onCreate??rT: BX PC Nop CFI EndBlock cfiBlock106 REQUIRE onCreate // 1760 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock107 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 cfiBlock107 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock108 Using cfiCommon0 CFI NoFunction THUMB ??onClose??rT: BX PC Nop CFI EndBlock cfiBlock108 REQUIRE onClose // 1765 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock109 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 cfiBlock109 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock110 Using cfiCommon0 CFI NoFunction THUMB ??onFocus??rT: BX PC Nop CFI EndBlock cfiBlock110 REQUIRE onFocus // 1770 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock111 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 cfiBlock111 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock112 Using cfiCommon0 CFI NoFunction THUMB ??onUnfocus??rT: BX PC Nop CFI EndBlock cfiBlock112 REQUIRE onUnfocus // 1776 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock113 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 cfiBlock113 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock114 Using cfiCommon0 CFI NoFunction THUMB ??WhatToDo??rT: BX PC Nop CFI EndBlock cfiBlock114 REQUIRE WhatToDo // 1782 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock115 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 ;; `?` ??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,#+176 ORR R1,R1,#0xDE00 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,#+176 ORR R1,R1,#0xDE00 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 ;; `?` 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 ;; `?` 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 ;; `?` // 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 ;; `?` 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 ;; `?` LDR R1,??WhatToDo_19+0x14 ;; `?` 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 `?` DC32 `?` DC32 `?` DC32 `?` DC32 `?` CFI EndBlock cfiBlock115 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 `?` 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 cfiBlock116 Using cfiCommon0 CFI NoFunction THUMB ??IsFile??rT: BX PC Nop CFI EndBlock cfiBlock116 REQUIRE IsFile // 1865 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock117 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 cfiBlock117 // 1875 } RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock118 Using cfiCommon0 CFI NoFunction THUMB ??CreatePlaylist??rT: BX PC Nop CFI EndBlock cfiBlock118 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 cfiBlock119 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,#+976 CFI CFA R13+984 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 ;; `?` 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 ;; `?` ADD R0,SP,#+4 SWI +22 // 1904 // 1905 sprintf(path,"%s%c",foldder,'\\'); MOV R3,#+92 MOV R2,R4 LDR R1,??DataTable589 ;; `?` 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,#+65 ADD R1,R1,#+256 LDR R0,??DataTable594 ;; name SWI +23 // 1915 sprintf(spysok[1][NumberOfTracks],de.file_name); ADD R1,SP,#+65 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 ;; `?` ADD R0,SP,#+4 SWI +22 // 1926 // 1927 sprintf(path,"%s%c",foldder,'\\'); MOV R3,#+92 MOV R2,R4 LDR R1,??DataTable589 ;; `?` 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,#+65 ADD R1,R1,#+256 LDR R0,??DataTable594 ;; name SWI +23 // 1937 sprintf(spysok[1][NumberOfTracks],de.file_name); ADD R1,SP,#+65 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 ;; `?` ADD R0,SP,#+4 SWI +22 // 1948 // 1949 sprintf(path,"%s%c",foldder,'\\'); MOV R3,#+92 MOV R2,R4 LDR R1,??DataTable589 ;; `?` 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,#+65 ADD R1,R1,#+256 LDR R0,??DataTable594 ;; name SWI +23 // 1959 sprintf(spysok[1][NumberOfTracks],de.file_name); ADD R1,SP,#+65 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 ;; `?` ADD R0,SP,#+4 SWI +22 // 1970 // 1971 sprintf(path,"%s%c",foldder,'\\'); MOV R3,#+92 MOV R2,R4 LDR R1,??DataTable589 ;; `?` 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,#+65 ADD R1,R1,#+256 LDR R0,??DataTable594 ;; name SWI +23 // 1981 sprintf(spysok[1][NumberOfTracks],de.file_name); ADD R1,SP,#+65 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,#+976 ;; stack cleaning CFI CFA R13+8 POP {R4,PC} ;; return DATA ??CreatePlaylist_1: DC32 `?` CFI EndBlock cfiBlock119 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 `?` RSEG CODE:CODE:NOROOT(2) DATA ??DataTable594: DC32 name RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock120 Using cfiCommon0 CFI NoFunction THUMB ??findlisttime??rT: BX PC Nop CFI EndBlock cfiBlock120 REQUIRE findlisttime // 1991 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock121 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` 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 ;; `?` 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 cfiBlock121 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 `?` 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 cfiBlock122 Using cfiCommon0 CFI NoFunction THUMB ??OnKey??rT: BX PC Nop CFI EndBlock cfiBlock122 REQUIRE OnKey // 2005 RSEG DATA_Z:DATA:SORT:NOROOT(2) // 2006 int longpress=0; longpress: DS8 4 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock123 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] LDR R0,[R0, #+4] 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, #+8] 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] LDR R0,[R0, #+4] 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] LDR R0,[R0, #+4] 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, #+8] 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] LDR R0,[R0, #+4] 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, #+8] 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 ;; `?` 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 ;; `?` 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;(iNumberOfTracks-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;iNumberOfTracks-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 ;; `?` 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 ;; `?` 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 ;; `?` 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] LDR R0,[R0, #+4] 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, #+8] 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` 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] LDR R0,[R0, #+4] 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, #+8] 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 `?` DC32 `?` DC32 `?` CFI EndBlock cfiBlock123 // 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 `?` 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 cfiBlock124 Using cfiCommon0 CFI NoFunction THUMB ??maincsm_oncreate??rT: BX PC Nop CFI EndBlock cfiBlock124 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 onDestroy, 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 cfiBlock125 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,#+64 SWI +20 MOV R5,R0 // 2554 MAIN_CSM*csm=(MAIN_CSM*)data; // 2555 zeromem(main_gui,sizeof(MAIN_GUI)); MOV R1,#+64 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, #+48] // 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, #+32] // 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 cfiBlock125 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 cfiBlock126 Using cfiCommon0 CFI NoFunction THUMB ??ElfKiller??rT: BX PC Nop CFI EndBlock cfiBlock126 REQUIRE ElfKiller // 2572 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock127 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 cfiBlock127 // 2578 } RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock128 Using cfiCommon0 CFI NoFunction THUMB ??PersheShchoStuknuloVGolovu??rT: BX PC Nop CFI EndBlock cfiBlock128 REQUIRE PersheShchoStuknuloVGolovu // 2579 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock129 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 ;; `?` STR R1,[R0, #+0] // 2583 gipc.name_to="control_panel|remove_point|"; LDR R0,??DataTable848 ;; gipc LDR R1,??PersheShchoStuknuloVGolovu_0+0x4 ;; `?` 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,#+176 ORR R1,R1,#0xDE00 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 `?` DC32 `?` CFI EndBlock cfiBlock129 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock130 Using cfiCommon0 CFI NoFunction THUMB ??maincsm_onclose??rT: BX PC Nop CFI EndBlock cfiBlock130 REQUIRE maincsm_onclose // 2588 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock131 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 cfiBlock131 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 cfiBlock132 Using cfiCommon0 CFI NoFunction THUMB ??CheckDoubleRun??rT: BX PC Nop CFI EndBlock cfiBlock132 REQUIRE CheckDoubleRun // 2607 ////////////////////////// RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock133 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,#+176 ORR R1,R1,#0xDE00 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 cfiBlock133 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock134 Using cfiCommon0 CFI NoFunction THUMB ??maincsm_onmessage??rT: BX PC Nop CFI EndBlock cfiBlock134 REQUIRE maincsm_onmessage // 2628 ///////////////////////////////// // 2629 // 2630 // 2631 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock135 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,#+72 CFI CFA R13+92 SUB SP,SP,#+1024 CFI CFA R13+1116 MOV R4,R0 MOV R5,R1 // 2634 MAIN_CSM *csm=(MAIN_CSM*)data; // 2635 // 2636 ///////////////////// // 2637 if (msg->msg==MSG_IPC) LDR R0,[R5, #+4] MOV R1,#+176 ORR R1,R1,#0xDE00 CMP R0,R1 BNE ??maincsm_onmessage_0 // 2638 { // 2639 IPC_REQ *ipc; // 2640 if ((ipc=(IPC_REQ*)msg->data0)) LDR R6,[R5, #+12] 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 ;; `?` 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 MOV R1,#+176 ORR R1,R1,#0xDE00 MOV R0,#+9 ORR R0,R0,#0x4200 SWI +256 // 2659 } // 2660 if ((msg->submess)!=-identyfikator) ??maincsm_onmessage_3: LDR R0,[R5, #+8] 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,#+176 ORR R1,R1,#0xDE00 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 ;; `?` // 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 ;; `?` 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 ;; `?` 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;iname_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,#+840 LDR R1,??DataTable829 ;; `?` ADD R0,SP,#+840 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,#+840 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 ;; `?` LDR R0,??DataTable995 ;; playlistname SWI +22 // 2701 //playlistname=LG_MIXED; // 2702 const char *o=strrchr(u,'\\')+1; MOV R1,#+92 ADD R0,SP,#+840 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,#+840 SUB R2,R6,R0 ADD R1,SP,#+840 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,#+840 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,#+840 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 MOV R1,#+176 ORR R1,R1,#0xDE00 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 ;; `?` LDR R0,??DataTable995 ;; playlistname SWI +22 // 2717 sprintf(spysok[1][0],"File not found!"); LDR R1,??DataTable930 ;; `?` 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: LDR R0,[R5, #+4] MOV R1,#+188 ORR R1,R1,#0x7000 CMP R0,R1 BNE ??maincsm_onmessage_12 // 2732 { // 2733 switch(msg->submess&0xFFFF) LDR R0,[R5, #+8] 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: LDR R0,[R5, #+4] MOV R1,#+14 ORR R1,R1,#0x6400 CMP R0,R1 BNE ??maincsm_onmessage_16 LDR R0,[R5, #+12] 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: LDR R0,[R5, #+4] MOV R1,#+175 ORR R1,R1,#0xDE00 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, #+12] 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 ;; `?idle_id); SWI +33030 LDR R0,[R0, #+4] SWI +264 // 2790 if (IsGuiOnTop((((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]))) LDR R0,[R0, #+44] 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 ;; `?` // 2799 } // 2800 else // 2801 { // 2802 sprintf(name,"%sskins\\%s%s",playerfolder,ArrayOfSkins[curskin],"\\play.png"); LDREQ R0,??DataTable870 ;; `?` PUSH {R0} CFI CFA R13+1120 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 ;; `?` LDR R0,??DataTable887 ;; name SWI +22 ADD SP,SP,#+4 ;; stack cleaning CFI CFA R13+1116 // 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+1120 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+1124 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+1116 // 2806 } // 2807 } // 2808 } // 2809 return(1); ??maincsm_onmessage_17: MOV R0,#+1 ADD SP,SP,#+72 ;; stack cleaning CFI CFA R13+1044 ADD SP,SP,#+1024 CFI CFA R13+20 POP {R4-R7,PC} ;; return DATA ??maincsm_onmessage_2: DC32 `?` DC32 `?` DC32 `?` DC32 `?` DC32 successed_config_filename DC32 `?` RSEG CODE:CODE:NOROOT(2) DATA ??DataTable829: DC32 `?` 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 `?` RSEG CODE:CODE:NOROOT(2) DATA ??DataTable870: DC32 `?` RSEG CODE:CODE:NOROOT(2) DATA ??DataTable871: DC32 curskin RSEG CODE:CODE:NOROOT(2) DATA ??DataTable874: DC32 `?` RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock136 Using cfiCommon0 CFI NoFunction THUMB ??UpdateCSMname??rT: BX PC Nop CFI EndBlock cfiBlock136 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, 0, 0, 0, 0, maincsm_onclose DC32 44, 1, 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 cfiBlock137 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 + 40 SWI +483 // 2845 if (Get_WS_width((WSHDR *)(&MAINCSM.maincsm_name),7)==0) MOV R1,#+7 LDR R0,??UpdateCSMname_0 ;; MAINCSM + 40 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 ;; `?` LDR R0,??UpdateCSMname_0 ;; MAINCSM + 40 SWI +292 ADD SP,SP,#+4 ;; stack cleaning CFI CFA R13+4 // 2848 } // 2849 } POP {PC} ;; return DATA ??UpdateCSMname_0: DC32 MAINCSM + 40 DC32 `?` CFI EndBlock cfiBlock137 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 cfiBlock138 Using cfiCommon0 CFI NoFunction THUMB ??skins??rT: BX PC Nop CFI EndBlock cfiBlock138 REQUIRE skins // 2850 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock139 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,#+968 CFI CFA R13+972 // 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 ;; `?` ADD R0,SP,#+840 SWI +22 // 2858 strcpy(name,path); ADD R1,SP,#+840 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,#+185 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,#+968 ;; stack cleaning CFI CFA R13+4 POP {PC} ;; return DATA ??skins_0: DC32 `?` DC32 zir CFI EndBlock cfiBlock139 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 cfiBlock140 Using cfiCommon0 CFI NoFunction THUMB ??main??rT: BX PC Nop CFI EndBlock cfiBlock140 REQUIRE main // 2871 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock141 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,#+136 CFI CFA R13+156 SUB SP,SP,#+1024 CFI CFA R13+1180 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+1184 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 ;; `?` 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+1180 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 ;; `?` ADD R0,SP,#+860 SWI +22 // 2902 playing=1; LDR R0,??DataTable990 ;; playing MOV R1,#+1 STR R1,[R0, #+0] // 2903 Play(s); ADD R0,SP,#+860 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,#+860 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,#+860 SWI +27 ADD R1,SP,#+860 ADD R0,R0,R1 MOV R1,#+0 STRB R1,[R0, #-4] // 2927 s[0]='4'; MOV R1,#+52 STRB R1,[SP, #+860] // 2928 DIR_ENTRY de; // 2929 unsigned int err; // 2930 if(FindFirstFile(&de,s,&err)) ADD R2,SP,#+4 ADD R1,SP,#+860 ADD R0,SP,#+24 SWI +107 CMP R0,#+0 BEQ ??main_11 // 2931 { // 2932 CreatePlaylist(de.folder_name); ADD R0,SP,#+76 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,#+205 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,#+76 SWI +279 ADD R1,R0,#+1 // 2940 sprintf(playlistname,p); LDR R0,??DataTable995 ;; playlistname SWI +22 // 2941 Play(s); ADD R0,SP,#+860 ??main_14: BL Play B ??main_15 // 2942 } // 2943 else // 2944 { // 2945 sprintf(playlistname,"Not found! "); ??main_11: LDR R1,??main_1+0x8 ;; `?` LDR R0,??DataTable995 ;; playlistname SWI +22 // 2946 sprintf(spysok[1][0],"File not found!"); LDR R1,??DataTable930 ;; `?` 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 ;; `?` 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+1180 BNE ??main_26 // 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 ;; `?` B ??main_27 // 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_26: LDRB R0,[SP, #+0] CMP R0,#+77 CMPNE R0,#+109 BNE ??main_28 LDRB R0,[SP, #+2] CMP R0,#+117 CMPNE R0,#+85 BNE ??main_28 // 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_27: 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 ;; `?` ADD R0,SP,#+860 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,#+860 BL Play // 3048 } // 3049 for (int i=0;i<255;i++){notplayed[i]=0;timelength[i]=-1;} ??main_28: LDR R0,??DataTable992 ;; notplayed LDR R1,??DataTable993 ;; timelength MOV R2,#+255 ??main_29: MOV R3,#+0 STR R3,[R0], #+4 MVN R3,R3 STR R3,[R1], #+4 SUBS R2,R2,#+1 BNE ??main_29 // 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; ??main_24: MOV R0,#+0 ADD SP,SP,#+136 ;; stack cleaning CFI CFA R13+1044 ADD SP,SP,#+1024 CFI CFA R13+20 POP {R4-R7,PC} ;; return DATA ??main_1: DC8 "ipl" DC32 JaLiuBLiuPYVo DC32 `?` DC32 `?` CFI EndBlock cfiBlock141 // 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 `?` 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 `?` 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 `?` 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 cfiBlock142 Using cfiCommon1 CFI NoFunction ARM ??rA??div32_a: LDR R12,??Subroutine71_0 ;; ??div32_a MOV PC,R12 DATA ??Subroutine71_0: DC32 ??div32_a CFI EndBlock cfiBlock142 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock143 Using cfiCommon1 CFI NoFunction ARM ??Cleaner??rA: LDR R12,??Subroutine72_0 ;; Cleaner BX R12 DATA ??Subroutine72_0: DC32 Cleaner CFI EndBlock cfiBlock143 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock144 Using cfiCommon1 CFI NoFunction ARM ??CreateMenuFindPlaylist??rA: LDR R12,??Subroutine73_0 ;; CreateMenuFindPlaylist BX R12 DATA ??Subroutine73_0: DC32 CreateMenuFindPlaylist CFI EndBlock cfiBlock144 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock145 Using cfiCommon1 CFI NoFunction ARM ??ShowMainMenu??rA: LDR R12,??Subroutine74_0 ;; ShowMainMenu BX R12 DATA ??Subroutine74_0: DC32 ShowMainMenu CFI EndBlock cfiBlock145 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock146 Using cfiCommon1 CFI NoFunction ARM ??kill_data??rA: LDR R12,??Subroutine75_0 ;; kill_data BX R12 DATA ??Subroutine75_0: DC32 kill_data CFI EndBlock cfiBlock146 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock147 Using cfiCommon1 CFI NoFunction ARM ??InitConfig??rA: LDR R12,??Subroutine76_0 ;; InitConfig BX R12 DATA ??Subroutine76_0: DC32 InitConfig CFI EndBlock cfiBlock147 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID: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 RSEG DATA_ID: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 RSEG DATA_ID: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 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 4 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 65535 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 50 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 132 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 176 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 8 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 2 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 23 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 134 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 132 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 176 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 7 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 2 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 23 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 67 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 132 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 176 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 7 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 23 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 132 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 176 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 7 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 4 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 23 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 157 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 2 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 2 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 25 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 2 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 45 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 18 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 74 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 18 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 61 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 5 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 61 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 30 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 62 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 19 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 2 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 165 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 132 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 20 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 9 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 1 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 14 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC16 24, 0 DC32 `?` DC16 1, 0 DC32 `?` DC16 61, 0 DC32 2147467515 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC32 menu_sk, 0 RSEG DATA_ID:CONST:SORT:NOROOT(2) `?`: DATA DC16 4095, 0 DC32 `?`: DATA DC16 0, 0, 0, 0 DC32 0H, `?`: 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) `?`: 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) `?`: 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 488 bytes in segment CODE // 1 684 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 // // 34 132 bytes of CODE memory (+ 380 bytes shared) // 2 676 bytes of CONST memory // 106 796 bytes of DATA memory // //Errors: none //Warnings: none