Home » Archimedes archive » Acorn User » AU 1993-08.adf » !3DGraphic_3DGraphic » Source/SWI07
Source/SWI07
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1993-08.adf » !3DGraphic_3DGraphic |
Filename: | Source/SWI07 |
Read OK: | ✔ |
File size: | 574E bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >Source.SWI07 20REM BAU3D_Render source 30REM by DCA 40REM for 32-bit machines 50REM (c) BAU August 1993 60: 70DEF FNswi07_name 80="Render" 90: 100DEF FNswi07_vars 110poly_chunk=1024 120poly_point=FNwk(4) 130poly_point_size=FNwk(4) 140poly_faces=FNwk(4) 150angles=&10000 160ang_bits=16 170ang_acc=16 180real_ang_bits=10 190ang_shift=ang_bits-real_ang_bits 200real_angles=1<<real_ang_bits 210gwx0=FNwk(4) 220gwy0=FNwk(4) 230gwx1=FNwk(4) 240gwy1=FNwk(4) 250orgx=FNwk(4) 260orgy=FNwk(4) 270xeig=FNwk(4) 280yeig=FNwk(4) 290scr_minx=FNwk(4) 300scr_miny=FNwk(4) 310scr_maxx=FNwk(4) 320scr_maxy=FNwk(4) 330rp_ptr=FNwk(4) 340total_z=FNwk(4) 350total_zno=FNwk(4) 360 370bit_merge=64 380bit_surf=128 390 400obj_list=0 410obj_name=4 420obj_req=8 430surf_type=0 440surf_colour=4 450surf_n=8 460surf_coords=12 470surf_req=12 480subobj_next=0 490subobj_type=4 500subobj_flags=8 510subobj_offset=12 520subobj_angle=24 530subobj_surfreq=36 540subobj_bounds=36 550subobj_req=132 560slide_limit=16^2 570=0 580: 590DEF FNswi07_code 600LOCAL i,a 610[OPT pass% 620.render 630 STMFD (sp)!,{r0-r11,link} 640 MOV r0,#poly_chunk 650 BL malloc 660 LDMVSFD (sp)!,{r0-r11,pc} 670 MOV r3,r0 680 MOV r4,#poly_chunk 690 MOV r5,#0 700 FNadrl(14,poly_point) 710 STMIA r14,{r3-r5} 720 BL read_screen_limits 730 LDMIA sp,{r0-r2} 740 LDMIA r1,{r3-r5} 750 LDMIA r2,{r6-r8} 760 MOV r0,#obj_req 770 BL malloc 780 BVS render_done 790 MOV r11,r0 800 MOV r0,#0 810 STR r0,[r11,#obj_list] 820 STR r0,[r11,#obj_name] 830 MOV r9,#0 840 LDR r10,[sp] 850 BL clip 860 BVS render_done 870 MOV r10,r11 880 LDMIA sp,{r0-r2} 890 MOV r9,#0 900 MOV r11,#0 910 LDMIA r1,{r3-r5} 920 LDMIA r2,{r6-r8} 930 BL render_obj 940 MOV r11,r10 950 BL free_tree 960 BL plot_faces 970 FNadrl(10,poly_point) 980 LDMIA r10,{r4-r6} 990.free_poly_loop 1000 SUBS r6,r6,#1 1010 BMI freed_poly_list 1020 LDR r0,[r4],#4 1030 BL free 1040 B free_poly_loop 1050.freed_poly_list 1060 LDR r0,[r10] 1070 BL free 1080.render_done 1090 STRVS r0,[sp] 1100 LDMFD (sp)!,{r0-r11,pc} 1110 1120.render_obj 1130 STMFD (sp)!,{r0-r11,link} 1140 LDR r10,[r10,#obj_list] 1150.render_obj_loop 1160 CMP r10,#0 1170 LDMEQFD (sp)!,{r0-r11,pc} 1180 LDR r0,[r10,#subobj_flags] 1190 TST r0,#bit_surf 1200 BEQ render_subobj 1210.render_surf 1220 LDR r0,[r10,#subobj_type] 1230 ADD r1,sp,#4*3 1240 ADD r2,sp,#4*6 1250 MOV r3,r11 1260 MOV r4,r9 1270 BL register_polygon 1280 ADD r14,sp,#4*2 1290 LDMIA r14,{r3,r4} 1300 B render_next 1310.render_subobj 1320 SUB sp,sp,#12+12 1330 ADD r0,r10,#subobj_offset 1340 ADD r1,sp,#12+12+4*6 1350 ADD r2,sp,#12 1360 BL rotate 1370 ADD r0,sp,#12 1380 ADD r1,sp,#12+12+4*3 1390 MOV r2,r0 1400 BL add 1410 ADD r0,r10,#subobj_angle 1420 ADD r1,sp,#12+12+4*6 1430 MOV r2,sp 1440 BL add 1450 LDMIA (sp)!,{r6-r8} 1460 LDMIA (sp)!,{r3-r5} 1470 STMFD (sp)!,{r9-r11} 1480 LDR r9,[r10,#subobj_flags] 1490 LDR r10,[r10,#subobj_type] 1500 AND r14,r9,#bit_merge 1510 ORR r11,r11,r14 1520 AND r9,r9,#63 1530 BL render_obj 1540 LDMFD (sp)!,{r9-r11} 1550 ADD r14,sp,#4*3 1560 LDMIA r14,{r3-r8} 1570.render_next 1580 LDR r10,[r10,#subobj_next] 1590 B render_obj_loop 1600 1610.clip STMFD (sp)!,{r0-r11,link} 1620 SUB sp,sp,#12+12+96 1630 LDR r8,[r10,#obj_list] 1640.clip_loop 1650 CMP r8,#0 1660 BEQ clip_exit 1670 LDR r9,[sp,#12+12+96+4*9] 1680 LDR r0,[r8,#subobj_flags] 1690 TST r0,#bit_surf 1700 BEQ clip_subobj 1710.clip_surf 1720 MOV r0,#subobj_surfreq 1730 BL copy_subobj 1740 BVS clip_exit 1750 B clip_next 1760.clip_subobj 1770 ADD r0,r8,#subobj_angle 1780 ADD r1,sp,#12+12+96+6*4 1790 MOV r2,sp 1800 BL add 1810 ADD r0,r8,#subobj_offset 1820 ADD r1,sp,#12+12+96+6*4 1830 ADD r2,sp,#12 1840 BL rotate 1850 ADD r0,sp,#12 1860 ADD r1,sp,#12+12+96+3*4 1870 MOV r2,r0 1880 BL add 1890 MOV r3,#12+12 1900 ADD r4,r8,#subobj_bounds 1910.rotate_bounds 1920 MOV r0,r4 1930 MOV r1,sp 1940 ADD r2,sp,r3 1950 BL rotate 1960 ADD r0,sp,r3 1970 ADD r1,sp,#12 1980 MOV r2,r0 1990 BL add 2000 ADD r4,r4,#12 2010 ADD r3,r3,#12 2020 CMP r3,#12+12+96 2030 BLT rotate_bounds 2040 MOV r5,#0 2050 MOV r7,#0 2060.check_bound_loop1 2070 MOV r14,#1 2080 TST r9,r14,LSL r7 2090 BNE wholly_visible 2100 MOV r3,#12+12 2110 MOV r6,#0 2120.check_bound_loop2 2130 MOV r5,r5,LSL #1 2140 TST r5,#%100000000 2150 BNE was_badz 2160 ADD r0,sp,r3 2170 MOV r1,r7 2180 BL invisible 2190 BNE not_invis 2200 ADD r6,r6,#1 2210 CMP r7,#2 2220 ORRLT r5,r5,#1 2230.not_invis 2240.was_badz 2250 ADD r3,r3,#12 2260 CMP r3,#12+12+96 2270 BLT check_bound_loop2 2280 ORR r5,r5,r5,LSR #8 2290 BIC r5,r5,#&FF00 2300 CMP r6,#8 2310 BEQ clip_next 2320 CMP r5,#0 2330 BNE whacky_zeds 2340 CMP r6,#0 2350 MOVEQ r14,#1 2360 ORREQ r9,r9,r14,LSL r7 2370.whacky_zeds 2380.wholly_visible 2390 ADD r7,r7,#1 2400 CMP r7,#6 2410 BLT check_bound_loop1 2420 MOV r0,#obj_req 2430 BL malloc 2440 BVS clip_exit 2450 MOV r7,r0 2460 MOV r0,#0 2470 STR r0,[r7,#obj_list] 2480 STR r0,[r7,#obj_name] 2490 MOV r0,#subobj_req 2500 BL copy_subobj 2510 BVS clip_exit 2520 STR r7,[r0,#subobj_type] 2530 LDR r1,[r0,#subobj_flags] 2540 BIC r1,r1,#63 2550 ORR r1,r1,r9 2560 STR r1,[r0,#subobj_flags] 2570 STMFD (sp)!,{r8-r11} 2580 LDR r10,[r8,#subobj_type] 2590 MOV r11,r7 2600 ADD r0,sp,#16 2610 LDMIA r0!,{r6-r8} 2620 LDMIA r0!,{r3-r5} 2630 BL clip 2640 LDMFD (sp)!,{r8-r11} 2650 BVS clip_exit 2660.clip_next 2670 LDR r8,[r8,#subobj_next] 2680 B clip_loop 2690.clip_exit 2700 ADD sp,sp,#12+12+96 2710 ADRVS r0,clip_err 2720 STRVS r0,[sp] 2730 LDMFD (sp)!,{r0-r11,pc} 2740.clip_err 2750 DCD &184 2760 EQUS "Out of memory" 2770 DCB 0 2780 ALIGN 2790 2800.copy_subobj 2810 STMFD (sp)!,{r0-r6,link} 2820 MOV r6,r0 2830 BL malloc 2840 LDMVSFD (sp)!,{r0-r6,pc} 2850 STR r0,[sp] 2860 MOV r1,#0 2870 STR r1,[r0],#4 2880 ADD r14,r8,#4 2890 SUB r1,r6,#4 2900.copy_subobj_loop1 2910 CMP r1,#16 2920 LDMGEIA r14!,{r2-r5} 2930 STMGEIA r0!,{r2-r5} 2940 SUBGE r1,r1,#16 2950 BGE copy_subobj_loop1 2960.copy_subobj_loop2 2970 CMP r1,#4 2980 LDRGE r2,[r14],#4 2990 STRGE r2,[r0],#4 3000 BGE copy_subobj_loop2 3010 SUB r0,r0,r6 3020 ADD r1,r11,#obj_list 3030.add_subobj_to_end 3040 LDR r2,[r1] 3050 CMP r2,#0 3060 ADDNE r1,r2,#subobj_next 3070 BNE add_subobj_to_end 3080 STR r0,[r1] 3090 LDMFD (sp)!,{r0-r6,pc} 3100 3110.add STMFD (sp)!,{r0-r8,link} 3120 LDMIA r0,{r3-r5} 3130 LDMIA r1,{r6-r8} 3140 ADD r3,r3,r6 3150 ADD r4,r4,r7 3160 ADD r5,r5,r8 3170 STMIA r2,{r3-r5} 3180 LDMFD (sp)!,{r0-r8,pc} 3190 3200.free_tree 3210 STMFD (sp)!,{r0-r11,link} 3220 LDR r0,[r11,#obj_name] 3230 CMP r0,#0 3240 BLNE free 3250 LDR r8,[r11,#obj_list] 3260.free_tree_loop 3270 CMP r8,#0 3280 BEQ freed_list 3290 LDR r0,[r8,#subobj_flags] 3300 TST r0,#bit_surf 3310 BNE free_tree2 3320 MOV r10,r11 3330 LDR r11,[r8,#subobj_type] 3340 BL free_tree 3350 MOV r11,r10 3360.free_tree2 3370 LDR r7,[r8,#subobj_next] 3380 MOV r0,r8 3390 BL free 3400 MOV r8,r7 3410 B free_tree_loop 3420.freed_list 3430 MOV r0,r11 3440 BL free 3450 LDMFD (sp)!,{r0-r11,pc} 3460 3470.plot_faces 3480 STMFD (sp)!,{r0-r11,link} 3490 FNadrl(14,poly_point) 3500 LDMIA r14,{r9-r11} 3510 CMP r11,#0 3520 CMPNE r9,#0 3530 LDMEQFD (sp)!,{r0-r11,pc} 3540 MOV r0,r11 3550 MOV r1,r9 3560 ADR r2,compare 3570 SWI "XOS_HeapSort" 3580 FNadrl(14,flags) 3590 LDR r3,[r14] 3600.plot_face_loop 3610 LDR r8,[r9],#4 3620 LDR r7,[r8,#4] 3630 ADD r8,r8,#8 3640.plot_face_loop2 3650 LDMIA r8!,{r2,r6} 3660 MOV r0,r6 3670 MOV r1,r8 3680 BL swi(00) 3690 ADD r8,r8,r6,LSL #3 3700 SUBS r7,r7,#1 3710 BNE plot_face_loop2 3720 SUBS r11,r11,#1 3730 BNE plot_face_loop 3740 LDMFD (sp)!,{r0-r11,pc} 3750 3760.compare 3770 LDR r2,[r0] 3780 LDR r3,[r1] 3790 CMP r3,r2 3800 MOV pc,link 3810 3820.invisible 3830 STMFD (sp)!,{r0-r11,link} 3840 LDMIA r0,{r7-r9} 3850 FNadrl(14,s) 3860 LDMIA r14,{r10,r11} 3870 ADD pc,pc,r1,LSL #2 3880 DCD 0 3890 B check_maxz 3900 B check_minz 3910 B check_minx 3920 B check_maxx 3930 B check_miny 3940 B check_maxy 3950.check_maxz 3960 LDR r2,[r0,#8] 3970 FNadrl(3,max_z) 3980 LDR r3,[r3] 3990 CMP r2,r3 4000 BLT is_visible 4010 B is_invisible 4020.check_minz 4030 LDR r2,[r0,#8] 4040 FNadrl(3,min_z) 4050 LDR r3,[r3] 4060 CMP r2,r3 4070 BGT is_visible 4080 B is_invisible 4090.check_minx 4100 MUL r0,r10,r7 4110 ADD r1,r9,r11 4120 BL divide 4130 FNadrl(14,scr_minx) 4140 LDR r14,[r14] 4150 CMP r2,r14 4160 BGT is_visible 4170 B is_invisible 4180.check_maxx 4190 MUL r0,r10,r7 4200 ADD r1,r9,r11 4210 BL divide 4220 FNadrl(14,scr_maxx) 4230 LDR r14,[r14] 4240 CMP r2,r14 4250 BLT is_visible 4260 B is_invisible 4270.check_miny 4280 MUL r0,r10,r8 4290 ADD r1,r9,r11 4300 BL divide 4310 FNadrl(14,scr_miny) 4320 LDR r14,[r14] 4330 CMP r2,r14 4340 BGT is_visible 4350 B is_invisible 4360.check_maxy 4370 MUL r0,r10,r8 4380 ADD r1,r9,r11 4390 BL divide 4400 FNadrl(14,scr_maxy) 4410 LDR r14,[r14] 4420 CMP r2,r14 4430 BLT is_visible 4440.is_invisible 4450 CMP r0,r0 4460 LDMFD (sp)!,{r0-r11,pc} 4470.is_visible 4480 CMN pc,#0 4490 LDMFD (sp)!,{r0-r11,pc} 4500 4510.slide STMFD (sp)!,{r0-r11,link} 4520 MOV r11,r3 4530 LDMIA r0,{r5-r7} 4540 LDMIA r1,{r8-r10} 4550.slide_loop 4560 ADD r2,r5,r8 4570 ADD r3,r6,r9 4580 ADD r4,r7,r10 4590 MOV r2,r2,ASR #1 4600 MOV r3,r3,ASR #1 4610 MOV r4,r4,ASR #1 4620 SUB r0,r5,r8 4630 MOV r14,r0 4640 MUL r1,r0,r14 4650 SUB r0,r6,r9 4660 MOV r14,r0 4670 MLA r1,r0,r14,r1 4680 SUB r0,r7,r10 4690 MOV r14,r0 4700 MLA r1,r0,r14,r1 4710 CMP r1,#slide_limit 4720 BLT well_slid 4730 STMFD (sp)!,{r2-r4} 4740 MOV r0,sp 4750 MOV r1,r11 4760 BL invisible 4770 LDMEQFD (sp)!,{r5-r7} 4780 LDMNEFD (sp)!,{r8-r10} 4790 B slide_loop 4800.well_slid 4810 LDR r0,[sp,#4*2] 4820 STMIA r0,{r2-r4} 4830 LDMFD (sp)!,{r0-r11,pc} 4840 4850.register_polygon 4860 STMFD (sp)!,{r0-r11,link} 4870 MOV r10,r0 4880 LDR r9,[r10,#surf_n] 4890 FNadrl(5,vertices) 4900 MOV r3,r9 4910 MOV r4,#0 4920.rp_copy_vertices 4930 ADD r0,r10,#surf_req 4940 ADD r0,r0,r4 4950 LDR r1,[sp,#4*2] 4960 ADD r2,r5,r4 4970 BL rotate 4980 MOV r0,r2 4990 LDR r1,[sp,#4*1] 5000 BL add 5010 ADD r4,r4,#12 5020 SUBS r3,r3,#1 5030 BNE rp_copy_vertices 5040 MOV r1,#0 5050.rp_clip_loop 5060 LDR r0,[sp,#4*4] 5070 MOV r14,#1 5080 TST r0,r14,LSL r1 5090 BNE rp_no_need_to_clip 5100 MOV r3,#0 5110.rp_loop1 5120 CMP r9,#2 5130 LDMLEFD (sp)!,{r0-r11,pc} 5140 CMP r3,r9 5150 BGE done_rp_loop1 5160 ADD r0,r5,r3,LSL #3 5170 ADD r0,r0,r3,LSL #2 5180 BL invisible 5190 BNE next_rp_loop1 5200 ADD r14,r3,#1 5210 CMP r14,r9 5220 MOVEQ r14,#0 5230 ADD r0,r5,r14,LSL #3 5240 ADD r0,r0,r14,LSL #2 5250 BL invisible 5260 BNE next_rp_loop1 5270 SUBS r14,r3,#1 5280 ADDMI r14,r14,r9 5290 ADD r0,r5,r14,LSL #3 5300 ADD r0,r0,r14,LSL #2 5310 BL invisible 5320 BNE next_rp_loop1 5330 ADD r14,r3,#1 5340 CMP r14,r9 5350 BGE rp_is_last_anyway 5360 STMFD (sp)!,{r1,r7,r8,r10-r11} 5370 MOV r10,r3 5380 SUB r11,r9,#2 5390 ADD r7,r5,r3,LSL #3 5400 ADD r7,r7,r3,LSL #2 5410 ADD r8,r7,#12 5420.rp_del_loop 5430 LDMIA r8!,{r0-r2} 5440 STMIA r7!,{r0-r2} 5450 ADD r10,r10,#1 5460 CMP r10,r11 5470 BLE rp_del_loop 5480 LDMFD (sp)!,{r1,r7,r8,r10-r11} 5490.rp_is_last_anyway 5500 SUB r9,r9,#1 5510 B rp_loop1 5520.next_rp_loop1 5530 ADD r3,r3,#1 5540 B rp_loop1 5550.done_rp_loop1 5560 MOV r3,#0 5570.rp_loop2 5580 CMP r3,r9 5590 BGE done_rp_loop2 5600 ADD r0,r5,r3,LSL #3 5610 ADD r0,r0,r3,LSL #2 5620 BL invisible 5630 BNE next_rp_loop2 5640 SUBS r14,r3,#1 5650 ADDMI r14,r14,r9 5660 ADD r0,r5,r14,LSL #3 5670 ADD r0,r0,r14,LSL #2 5680 BL invisible 5690 BEQ next_rp_loop2 5700 ADD r14,r3,#1 5710 CMP r14,r9 5720 MOVEQ r14,#0 5730 ADD r0,r5,r14,LSL #3 5740 ADD r0,r0,r14,LSL #2 5750 BL invisible 5760 BEQ no_need_to_ins 5770 STMFD (sp)!,{r1,r7,r8,r10} 5780 SUB r10,r9,#1 5790 ADD r7,r5,r10,LSL #3 5800 ADD r7,r7,r10,LSL #2 5810 ADD r8,r7,#12 5820.rp_ins_loop 5830 LDMIA r7,{r0-r2} 5840 STMIA r8,{r0-r2} 5850 SUB r7,r7,#12 5860 SUB r8,r8,#12 5870 SUB r10,r10,#1 5880 CMP r10,r3 5890 BGE rp_ins_loop 5900 LDMFD (sp)!,{r1,r7,r8,r10} 5910 ADD r9,r9,#1 5920.no_need_to_ins 5930 STMFD (sp)!,{r0-r3} 5940 ADD r0,r5,r3,LSL #3 5950 ADD r0,r0,r3,LSL #2 5960 SUBS r14,r3,#1 5970 ADDMI r14,r14,r9 5980 ADD r1,r5,r14,LSL #3 5990 ADD r1,r1,r14,LSL #2 6000 MOV r2,r0 6010 LDR r3,[sp,#4] 6020 BL slide 6030 LDR r3,[sp,#12] 6040 ADD r3,r3,#1 6050 CMP r3,r9 6060 MOVEQ r3,#0 6070 ADD r0,r5,r3,LSL #3 6080 ADD r0,r0,r3,LSL #2 6090 ADD r14,r3,#1 6100 CMP r14,r9 6110 MOVEQ r14,#0 6120 ADD r1,r5,r14,LSL #3 6130 ADD r1,r1,r14,LSL #2 6140 MOV r2,r0 6150 LDR r3,[sp,#4] 6160 BL slide 6170 LDMFD (sp)!,{r0-r3} 6180 ADD r3,r3,#2 6190.next_rp_loop2 6200 ADD r3,r3,#1 6210 B rp_loop2 6220.done_rp_loop2 6230.rp_no_need_to_clip 6240 ADD r1,r1,#1 6250 CMP r1,#6 6260 BLT rp_clip_loop 6270 FNadrl(11,poly_point) 6280 LDMIA r11,{r6-r8} 6290 LDR r0,[sp,#4*3] 6300 CMP r0,#0 6310 LDREQ r0,[r10,#surf_type] 6320 CMPEQ r0,#0 6330 BNE not_new_poly 6340 MOV r0,#8 6350 BL malloc 6360 STRVS r0,[sp] 6370 LDMVSFD (sp)!,{r0-r11,pc} 6380 MOV r4,r0 6390 MOV r0,#0 6400 FNstr(0,total_z) 6410 FNstr(0,total_zno) 6420 MOV r0,#0 6430 STR r0,[r4,#4] 6440 CMP r7,r8,LSL #2 6450 BNE dont_extend_rp_table 6460 MOV r0,r6 6470 MOV r1,#poly_chunk 6480 BL realloc 6490 STRVS r0,[sp] 6500 LDMVSFD (sp)!,{r0-r11,pc} 6510 MOV r6,r0 6520 ADD r7,r7,#poly_chunk 6530 STMIA r11,{r6-r8} 6540.dont_extend_rp_table 6550 STR r4,[r6,r8,LSL #2] 6560 ADD r8,r8,#1 6570 STR r8,[r11,#8] 6580 MOV r0,#8 6590 FNstr(0,rp_ptr) 6600.not_new_poly 6610 SUB r2,r8,#1 6620 LDR r0,[r6,r2,LSL #2] 6630 MOV r1,r9,LSL #3 6640 ADD r1,r1,#8 6650 BL realloc 6660 STRVS r0,[sp] 6670 LDMVSFD (sp)!,{r0-r11,pc} 6680 STR r0,[r6,r2,LSL #2] 6690 MOV r4,r0 6700 FNldr(3,rp_ptr) 6710 LDR r0,[r10,#surf_colour] 6720 STR r0,[r4,r3] 6730 ADD r3,r3,#4 6740 STR r9,[r4,r3] 6750 ADD r3,r3,#4 6760 FNadrl(14,s) 6770 LDMIA r14,{r10,r11} 6780.persp_loop 6790 LDMIA r5!,{r6-r8} 6800 FNldr(0,total_z) 6810 ADD r0,r0,r8 6820 FNstr(0,total_z) 6830 FNldr(1,total_zno) 6840 ADD r1,r1,#1 6850 FNstr(1,total_zno) 6860 BL divide 6870 STR r2,[r4] 6880 MUL r0,r6,r10 6890 ADD r1,r8,r11 6900 BL divide 6910 STR r2,[r4,r3] 6920 ADD r3,r3,#4 6930 MUL r0,r7,r10 6940 ADD r1,r8,r11 6950 BL divide 6960 STR r2,[r4,r3] 6970 ADD r3,r3,#4 6980 SUBS r9,r9,#1 6990 BNE persp_loop 7000 LDR r0,[r4,#4] 7010 ADD r0,r0,#1 7020 STR r0,[r4,#4] 7030 FNstr(3,rp_ptr) 7040 LDMFD (sp)!,{r0-r11,pc} 7050 7060.read_screen_limits 7070 STMFD (sp)!,{r0-r11,link} 7080 ADR r0,vdu_list 7090 FNadrl(1,gwx0) 7100 SWI "XOS_ReadVduVariables" 7110 LDMIA r1,{r2-r9} 7120 MOV r2,r2,LSL r8 7130 SUB r2,r2,r6 7140 SUB r2,r2,#64 7150 MOV r3,r3,LSL r9 7160 SUB r3,r3,r7 7170 SUB r3,r3,#64 7180 MOV r4,r4,LSL r8 7190 SUB r4,r4,r6 7200 ADD r4,r4,#64 7210 MOV r5,r5,LSL r9 7220 SUB r5,r5,r7 7230 ADD r5,r5,#64 7240 FNadrl(1,scr_minx) 7250 STMIA r1,{r2-r5} 7260 LDMFD (sp)!,{r0-r11,pc} 7270 7280.vdu_list 7290 DCD 128 7300 DCD 129 7310 DCD 130 7320 DCD 131 7330 DCD 136 7340 DCD 137 7350 DCD 4 7360 DCD 5 7370 DCD -1 7380 7390.rotate STMFD (sp)!,{r0-r11,link} 7400 LDMIA r0,{r3-r5} 7410 LDR r8,[r1,#4] 7420 CMP r8,#0 7430 STMEQIA r2,{r3-r5} 7440 BEQ no_rotate 7450 FNsin(9,8) 7460 FNcos(10,8) 7470 MOVS r6,r3 7480 RSBMI r6,r6,#0 7490 MOVS r7,r4 7500 RSBMI r7,r7,#0 7510 ORR r6,r6,r7 7520 MOVS r8,r5 7530 RSBMI r8,r8,#0 7540 ORR r6,r6,r8 7550 MOV r11,#0 7560.rotate_reduce 7570 CMP r6,#(1<<(30-ang_acc)) 7580 BLT rotate_ok 7590 MOV r6,r6,ASR #1 7600 ADD r11,r11,#1 7610 CMP r11,#ang_acc 7620 BLT rotate_reduce 7630.rotate_ok 7640 MOV r3,r3,ASR r11 7650 MOV r5,r5,ASR r11 7660 RSB r11,r11,#ang_acc 7670 MUL r6,r3,r10 7680 MLA r6,r5,r9,r6 7690 RSB r9,r9,#0 7700 MUL r8,r3,r9 7710 MLA r8,r5,r10,r8 7720 MOV r6,r6,ASR r11 7730 MOV r7,r4 7740 MOV r8,r8,ASR r11 7750 STMIA r2,{r6-r8} 7760.no_rotate 7770 LDMFD (sp)!,{r0-r11,pc} 7780 7790 7800.sin_tab FNtable(4*real_angles) 7810] 7820IF pass%>4 THEN 7830 FOR i=0 TO real_angles-1 7840 a=2*PI*(i/real_angles) 7850 sin_tab!(code%+4*i)=(1<<ang_acc)*SINa 7860 NEXT 7870ENDIF 7880=0 7890: 7900DEF FNsin(reg1,reg2) 7910[OPT pass% 7920 MOV r14,reg2,LSL #(32-ang_bits) 7930 MOV r14,r14,LSR #(32-ang_bits+ang_shift) 7940 ADR reg1,sin_tab 7950 LDR reg1,[reg1,r14,LSL #2] 7960] 7970=0 7980: 7990DEF FNcos(reg1,reg2) 8000[OPT pass% 8010 ADD r14,reg2,#angles DIV 4 8020 MOV r14,r14,LSL #(32-ang_bits) 8030 MOV r14,r14,LSR #(32-ang_bits+ang_shift) 8040 ADR reg1,sin_tab 8050 LDR reg1,[reg1,r14,LSL #2] 8060] 8070=0 8080: 8090DEF FNstr(reg,off) 8100[OPT pass% 8110 ADD r14,wp,#off AND &FF00 8120 STR reg,[r14,#off AND &00FF] 8130] 8140=0 8150: 8160DEF FNldr(reg,off) 8170[OPT pass% 8180 ADD r14,wp,#off AND &FF00 8190 LDR reg,[r14,#off AND &00FF] 8200] 8210=0
� >Source.SWI07 � BAU3D_Render source � by DCA (� for 32-bit machines 2� (c) BAU August 1993 <: F� �swi07_name P ="Render" Z: d� �swi07_vars npoly_chunk=1024 xpoly_point=�wk(4) �poly_point_size=�wk(4) �poly_faces=�wk(4) �angles=&10000 �ang_bits=16 �ang_acc=16 �real_ang_bits=10 �$ang_shift=ang_bits-real_ang_bits � real_angles=1<<real_ang_bits �gwx0=�wk(4) �gwy0=�wk(4) �gwx1=�wk(4) �gwy1=�wk(4) �orgx=�wk(4) orgy=�wk(4) xeig=�wk(4) yeig=�wk(4) "scr_minx=�wk(4) ,scr_miny=�wk(4) 6scr_maxx=�wk(4) @scr_maxy=�wk(4) Jrp_ptr=�wk(4) Ttotal_z=�wk(4) ^total_zno=�wk(4) h rbit_merge=64 |bit_surf=128 � �obj_list=0 �obj_name=4 � obj_req=8 �surf_type=0 �surf_colour=4 �surf_n=8 �surf_coords=12 �surf_req=12 �subobj_next=0 �subobj_type=4 �subobj_flags=8 �subobj_offset=12 subobj_angle=24 subobj_surfreq=36 subobj_bounds=36 &subobj_req=132 0slide_limit=16^2 :=0 D: N� �swi07_code X � i,a b[OPT pass% l.render v' STMFD (sp)!,{r0-r11,link} �" MOV r0,#poly_chunk � BL malloc �% LDMVSFD (sp)!,{r0-r11,pc} � MOV r3,r0 �" MOV r4,#poly_chunk � MOV r5,#0 � �adrl(14,poly_point) � STMIA r14,{r3-r5} �& BL read_screen_limits � LDMIA sp,{r0-r2} � LDMIA r1,{r3-r5} � LDMIA r2,{r6-r8} � MOV r0,#obj_req BL malloc BVS render_done MOV r11,r0 MOV r0,#0 *& STR r0,[r11,#obj_list] 4& STR r0,[r11,#obj_name] > MOV r9,#0 H LDR r10,[sp] R BL clip \ BVS render_done f MOV r10,r11 p LDMIA sp,{r0-r2} z MOV r9,#0 � MOV r11,#0 � LDMIA r1,{r3-r5} � LDMIA r2,{r6-r8} � BL render_obj � MOV r11,r10 � BL free_tree � BL plot_faces � �adrl(10,poly_point) � LDMIA r10,{r4-r6} �.free_poly_loop � SUBS r6,r6,#1 �# BMI freed_poly_list � LDR r0,[r4],#4 BL free " B free_poly_loop .freed_poly_list $ LDR r0,[r10] . BL free 8.render_done B STRVS r0,[sp] L% LDMFD (sp)!,{r0-r11,pc} V `.render_obj j' STMFD (sp)!,{r0-r11,link} t' LDR r10,[r10,#obj_list] ~.render_obj_loop � CMP r10,#0 �% LDMEQFD (sp)!,{r0-r11,pc} �* LDR r0,[r10,#subobj_flags] � TST r0,#bit_surf �! BEQ render_subobj �.render_surf �) LDR r0,[r10,#subobj_type] � ADD r1,sp,#4*3 � ADD r2,sp,#4*6 � MOV r3,r11 � MOV r4,r9 �$ BL register_polygon ADD r14,sp,#4*2 LDMIA r14,{r3,r4} B render_next .render_subobj ( SUB sp,sp,#12+12 2) ADD r0,r10,#subobj_offset <$ ADD r1,sp,#12+12+4*6 F ADD r2,sp,#12 P BL rotate Z ADD r0,sp,#12 d$ ADD r1,sp,#12+12+4*3 n MOV r2,r0 x BL add �( ADD r0,r10,#subobj_angle �$ ADD r1,sp,#12+12+4*6 � MOV r2,sp � BL add �! LDMIA (sp)!,{r6-r8} �! LDMIA (sp)!,{r3-r5} �" STMFD (sp)!,{r9-r11} �* LDR r9,[r10,#subobj_flags] �* LDR r10,[r10,#subobj_type] �# � r14,r9,#bit_merge � �R r11,r11,r14 � � r9,r9,#63 � BL render_obj " LDMFD (sp)!,{r9-r11} ADD r14,sp,#4*3 LDMIA r14,{r3-r8} ".render_next ,* LDR r10,[r10,#subobj_next] 6# B render_obj_loop @ J'.clip STMFD (sp)!,{r0-r11,link} T# SUB sp,sp,#12+12+96 ^& LDR r8,[r10,#obj_list] h.clip_loop r CMP r8,#0 | BEQ clip_exit �) LDR r9,[sp,#12+12+96+4*9] �) LDR r0,[r8,#subobj_flags] � TST r0,#bit_surf � BEQ clip_subobj �.clip_surf �& MOV r0,#subobj_surfreq � BL copy_subobj � BVS clip_exit � B clip_next �.clip_subobj �' ADD r0,r8,#subobj_angle �' ADD r1,sp,#12+12+96+6*4 � MOV r2,sp BL add ( ADD r0,r8,#subobj_offset ' ADD r1,sp,#12+12+96+6*4 & ADD r2,sp,#12 0 BL rotate : ADD r0,sp,#12 D' ADD r1,sp,#12+12+96+3*4 N MOV r2,r0 X BL add b MOV r3,#12+12 l( ADD r4,r8,#subobj_bounds v.rotate_bounds � MOV r0,r4 � MOV r1,sp � ADD r2,sp,r3 � BL rotate � ADD r0,sp,r3 � ADD r1,sp,#12 � MOV r2,r0 � BL add � ADD r4,r4,#12 � ADD r3,r3,#12 � CMP r3,#12+12+96 �! BLT rotate_bounds � MOV r5,#0 MOV r7,#0 .check_bound_loop1 MOV r14,#1 ! TST r9,r14,LSL r7 *" BNE wholly_visible 4 MOV r3,#12+12 > MOV r6,#0 H.check_bound_loop2 R MOV r5,r5,LSL #1 \" TST r5,#%100000000 f BNE was_badz p ADD r0,sp,r3 z MOV r1,r7 � BL invisible � BNE not_invis � ADD r6,r6,#1 � CMP r7,#2 � �RLT r5,r5,#1 �.not_invis � .was_badz � ADD r3,r3,#12 � CMP r3,#12+12+96 �% BLT check_bound_loop2 �" �R r5,r5,r5,LSR #8 � BIC r5,r5,#&FF00 � CMP r6,#8 BEQ clip_next CMP r5,#0 BNE whacky_zeds $ CMP r6,#0 . �Q r14,#1 8# �REQ r9,r9,r14,LSL r7 B.whacky_zeds L.wholly_visible V ADD r7,r7,#1 ` CMP r7,#6 j% BLT check_bound_loop1 t MOV r0,#obj_req ~ BL malloc � BVS clip_exit � MOV r7,r0 � MOV r0,#0 �% STR r0,[r7,#obj_list] �% STR r0,[r7,#obj_name] �" MOV r0,#subobj_req � BL copy_subobj � BVS clip_exit �( STR r7,[r0,#subobj_type] �) LDR r1,[r0,#subobj_flags] � BIC r1,r1,#63 � �R r1,r1,r9 ) STR r1,[r0,#subobj_flags] " STMFD (sp)!,{r8-r11} ) LDR r10,[r8,#subobj_type] MOV r11,r7 ( ADD r0,sp,#16 2 LDMIA r0!,{r6-r8} < LDMIA r0!,{r3-r5} F BL clip P" LDMFD (sp)!,{r8-r11} Z BVS clip_exit d.clip_next n( LDR r8,[r8,#subobj_next] x B clip_loop �.clip_exit �# ADD sp,sp,#12+12+96 � ADRVS r0,clip_err � STRVS r0,[sp] �% LDMFD (sp)!,{r0-r11,pc} � .clip_err � DCD &184 �# EQUS "Out of memory" � DCB 0 � ALIGN � �.copy_subobj �& STMFD (sp)!,{r0-r6,link} MOV r6,r0 BL malloc $ LDMVSFD (sp)!,{r0-r6,pc} " STR r0,[sp] , MOV r1,#0 6 STR r1,[r0],#4 @ ADD r14,r8,#4 J SUB r1,r6,#4 T.copy_subobj_loop1 ^ CMP r1,#16 h LDMGEIA r14!,{r2-r5} r STMGEIA r0!,{r2-r5} | SUBGE r1,r1,#16 �% BGE copy_subobj_loop1 �.copy_subobj_loop2 � CMP r1,#4 � LDRGE r2,[r14],#4 � STRGE r2,[r0],#4 �% BGE copy_subobj_loop2 � SUB r0,r0,r6 �$ ADD r1,r11,#obj_list �.add_subobj_to_end � LDR r2,[r1] � CMP r2,#0 �& ADDNE r1,r2,#subobj_next �% BNE add_subobj_to_end STR r0,[r1] $ LDMFD (sp)!,{r0-r6,pc} &&.add STMFD (sp)!,{r0-r8,link} 0 LDMIA r0,{r3-r5} : LDMIA r1,{r6-r8} D ADD r3,r3,r6 N ADD r4,r4,r7 X ADD r5,r5,r8 b STMIA r2,{r3-r5} l$ LDMFD (sp)!,{r0-r8,pc} v �.free_tree �' STMFD (sp)!,{r0-r11,link} �& LDR r0,[r11,#obj_name] � CMP r0,#0 � BLNE free �& LDR r8,[r11,#obj_list] �.free_tree_loop � CMP r8,#0 � BEQ freed_list �) LDR r0,[r8,#subobj_flags] � TST r0,#bit_surf � BNE free_tree2 � MOV r10,r11 ) LDR r11,[r8,#subobj_type] BL free_tree MOV r11,r10 .free_tree2 *( LDR r7,[r8,#subobj_next] 4 MOV r0,r8 > BL free H MOV r8,r7 R" B free_tree_loop \.freed_list f MOV r0,r11 p BL free z% LDMFD (sp)!,{r0-r11,pc} � �.plot_faces �' STMFD (sp)!,{r0-r11,link} � �adrl(14,poly_point) � LDMIA r14,{r9-r11} � CMP r11,#0 � CMPNE r9,#0 �% LDMEQFD (sp)!,{r0-r11,pc} � MOV r0,r11 � MOV r1,r9 � ADR r2,compare �" SWI "XOS_HeapSort" � �adrl(14,flags) LDR r3,[r14] .plot_face_loop LDR r8,[r9],#4 $ LDR r7,[r8,#4] . ADD r8,r8,#8 8.plot_face_loop2 B LDMIA r8!,{r2,r6} L MOV r0,r6 V MOV r1,r8 ` BL swi(00) j# ADD r8,r8,r6,LSL #3 t SUBS r7,r7,#1 ~# BNE plot_face_loop2 � SUBS r11,r11,#1 �" BNE plot_face_loop �% LDMFD (sp)!,{r0-r11,pc} � �.compare � LDR r2,[r0] � LDR r3,[r1] � CMP r3,r2 � MOV pc,link � �.invisible �' STMFD (sp)!,{r0-r11,link} LDMIA r0,{r7-r9} �adrl(14,s) ! LDMIA r14,{r10,r11} # ADD pc,pc,r1,LSL #2 ( DCD 0 2 B check_maxz < B check_minz F B check_minx P B check_maxx Z B check_miny d B check_maxy n.check_maxz x LDR r2,[r0,#8] � �adrl(3,max_z) � LDR r3,[r3] � CMP r2,r3 � BLT is_visible � B is_invisible �.check_minz � LDR r2,[r0,#8] � �adrl(3,min_z) � LDR r3,[r3] � CMP r2,r3 � BGT is_visible � B is_invisible �.check_minx MUL r0,r10,r7 ADD r1,r9,r11 BL divide " �adrl(14,scr_minx) , LDR r14,[r14] 6 CMP r2,r14 @ BGT is_visible J B is_invisible T.check_maxx ^ MUL r0,r10,r7 h ADD r1,r9,r11 r BL divide | �adrl(14,scr_maxx) � LDR r14,[r14] � CMP r2,r14 � BLT is_visible � B is_invisible �.check_miny � MUL r0,r10,r8 � ADD r1,r9,r11 � BL divide � �adrl(14,scr_miny) � LDR r14,[r14] � CMP r2,r14 � BGT is_visible � B is_invisible .check_maxy MUL r0,r10,r8 ADD r1,r9,r11 & BL divide 0 �adrl(14,scr_maxy) : LDR r14,[r14] D CMP r2,r14 N BLT is_visible X.is_invisible b CMP r0,r0 l% LDMFD (sp)!,{r0-r11,pc} v.is_visible � CMN pc,#0 �% LDMFD (sp)!,{r0-r11,pc} � �'.slide STMFD (sp)!,{r0-r11,link} � MOV r11,r3 � LDMIA r0,{r5-r7} � LDMIA r1,{r8-r10} �.slide_loop � ADD r2,r5,r8 � ADD r3,r6,r9 � ADD r4,r7,r10 � MOV r2,r2,ASR #1 � MOV r3,r3,ASR #1 MOV r4,r4,ASR #1 SUB r0,r5,r8 MOV r14,r0 MUL r1,r0,r14 * SUB r0,r6,r9 4 MOV r14,r0 > MLA r1,r0,r14,r1 H SUB r0,r7,r10 R MOV r14,r0 \ MLA r1,r0,r14,r1 f# CMP r1,#slide_limit p BLT well_slid z! STMFD (sp)!,{r2-r4} � MOV r0,sp � MOV r1,r11 � BL invisible �! LDMEQFD (sp)!,{r5-r7} �" LDMNEFD (sp)!,{r8-r10} � B slide_loop �.well_slid � LDR r0,[sp,#4*2] � STMIA r0,{r2-r4} �% LDMFD (sp)!,{r0-r11,pc} � �.register_polygon �' STMFD (sp)!,{r0-r11,link} MOV r10,r0 $ LDR r9,[r10,#surf_n] �adrl(5,vertices) $ MOV r3,r9 . MOV r4,#0 8.rp_copy_vertices B$ ADD r0,r10,#surf_req L ADD r0,r0,r4 V LDR r1,[sp,#4*2] ` ADD r2,r5,r4 j BL rotate t MOV r0,r2 ~ LDR r1,[sp,#4*1] � BL add � ADD r4,r4,#12 � SUBS r3,r3,#1 �$ BNE rp_copy_vertices � MOV r1,#0 �.rp_clip_loop � LDR r0,[sp,#4*4] � MOV r14,#1 �! TST r0,r14,LSL r1 �& BNE rp_no_need_to_clip � MOV r3,#0 � .rp_loop1 CMP r9,#2 % LDMLEFD (sp)!,{r0-r11,pc} CMP r3,r9 ! BGE done_rp_loop1 (# ADD r0,r5,r3,LSL #3 2# ADD r0,r0,r3,LSL #2 < BL invisible F! BNE next_rp_loop1 P ADD r14,r3,#1 Z CMP r14,r9 d �Q r14,#0 n$ ADD r0,r5,r14,LSL #3 x$ ADD r0,r0,r14,LSL #2 � BL invisible �! BNE next_rp_loop1 � SUBS r14,r3,#1 � ADDMI r14,r14,r9 �$ ADD r0,r5,r14,LSL #3 �$ ADD r0,r0,r14,LSL #2 � BL invisible �! BNE next_rp_loop1 � ADD r14,r3,#1 � CMP r14,r9 �% BGE rp_is_last_anyway �, STMFD (sp)!,{r1,r7,r8,r10-r11} � MOV r10,r3 SUB r11,r9,#2 # ADD r7,r5,r3,LSL #3 # ADD r7,r7,r3,LSL #2 " ADD r8,r7,#12 ,.rp_del_loop 6 LDMIA r8!,{r0-r2} @ STMIA r7!,{r0-r2} J ADD r10,r10,#1 T CMP r10,r11 ^ BLE rp_del_loop h, LDMFD (sp)!,{r1,r7,r8,r10-r11} r.rp_is_last_anyway | SUB r9,r9,#1 � B rp_loop1 �.next_rp_loop1 � ADD r3,r3,#1 � B rp_loop1 �.done_rp_loop1 � MOV r3,#0 � .rp_loop2 � CMP r3,r9 �! BGE done_rp_loop2 �# ADD r0,r5,r3,LSL #3 �# ADD r0,r0,r3,LSL #2 � BL invisible �! BNE next_rp_loop2 SUBS r14,r3,#1 ADDMI r14,r14,r9 $ ADD r0,r5,r14,LSL #3 &$ ADD r0,r0,r14,LSL #2 0 BL invisible :! BEQ next_rp_loop2 D ADD r14,r3,#1 N CMP r14,r9 X �Q r14,#0 b$ ADD r0,r5,r14,LSL #3 l$ ADD r0,r0,r14,LSL #2 v BL invisible �" BEQ no_need_to_ins �( STMFD (sp)!,{r1,r7,r8,r10} � SUB r10,r9,#1 �$ ADD r7,r5,r10,LSL #3 �$ ADD r7,r7,r10,LSL #2 � ADD r8,r7,#12 �.rp_ins_loop � LDMIA r7,{r0-r2} � STMIA r8,{r0-r2} � SUB r7,r7,#12 � SUB r8,r8,#12 � SUB r10,r10,#1 � CMP r10,r3 BGE rp_ins_loop ( LDMFD (sp)!,{r1,r7,r8,r10} ADD r9,r9,#1 .no_need_to_ins *! STMFD (sp)!,{r0-r3} 4# ADD r0,r5,r3,LSL #3 ># ADD r0,r0,r3,LSL #2 H SUBS r14,r3,#1 R ADDMI r14,r14,r9 \$ ADD r1,r5,r14,LSL #3 f$ ADD r1,r1,r14,LSL #2 p MOV r2,r0 z LDR r3,[sp,#4] � BL slide � LDR r3,[sp,#12] � ADD r3,r3,#1 � CMP r3,r9 � �Q r3,#0 �# ADD r0,r5,r3,LSL #3 �# ADD r0,r0,r3,LSL #2 � ADD r14,r3,#1 � CMP r14,r9 � �Q r14,#0 �$ ADD r1,r5,r14,LSL #3 �$ ADD r1,r1,r14,LSL #2 � MOV r2,r0 LDR r3,[sp,#4] BL slide ! LDMFD (sp)!,{r0-r3} $ ADD r3,r3,#2 ..next_rp_loop2 8 ADD r3,r3,#1 B B rp_loop2 L.done_rp_loop2 V.rp_no_need_to_clip ` ADD r1,r1,#1 j CMP r1,#6 t BLT rp_clip_loop ~ �adrl(11,poly_point) � LDMIA r11,{r6-r8} � LDR r0,[sp,#4*3] � CMP r0,#0 �' LDREQ r0,[r10,#surf_type] � CMPEQ r0,#0 � BNE not_new_poly � MOV r0,#8 � BL malloc � STRVS r0,[sp] �% LDMVSFD (sp)!,{r0-r11,pc} � MOV r4,r0 � MOV r0,#0 �str(0,total_z) �str(0,total_zno) MOV r0,#0 STR r0,[r4,#4] ( CMP r7,r8,LSL #2 2( BNE dont_extend_rp_table < MOV r0,r6 F" MOV r1,#poly_chunk P BL realloc Z STRVS r0,[sp] d% LDMVSFD (sp)!,{r0-r11,pc} n MOV r6,r0 x% ADD r7,r7,#poly_chunk � STMIA r11,{r6-r8} �.dont_extend_rp_table �% STR r4,[r6,r8,LSL #2] � ADD r8,r8,#1 � STR r8,[r11,#8] � MOV r0,#8 � �str(0,rp_ptr) �.not_new_poly � SUB r2,r8,#1 �% LDR r0,[r6,r2,LSL #2] � MOV r1,r9,LSL #3 � ADD r1,r1,#8 � BL realloc STRVS r0,[sp] % LDMVSFD (sp)!,{r0-r11,pc} % STR r0,[r6,r2,LSL #2] " MOV r4,r0 , �ldr(3,rp_ptr) 6) LDR r0,[r10,#surf_colour] @ STR r0,[r4,r3] J ADD r3,r3,#4 T STR r9,[r4,r3] ^ ADD r3,r3,#4 h �adrl(14,s) r! LDMIA r14,{r10,r11} |.persp_loop � LDMIA r5!,{r6-r8} � �ldr(0,total_z) � ADD r0,r0,r8 � �str(0,total_z) � �ldr(1,total_zno) � ADD r1,r1,#1 � �str(1,total_zno) � BL divide � STR r2,[r4] � MUL r0,r6,r10 � ADD r1,r8,r11 � BL divide � STR r2,[r4,r3] ADD r3,r3,#4 MUL r0,r7,r10 ADD r1,r8,r11 & BL divide 0 STR r2,[r4,r3] : ADD r3,r3,#4 D SUBS r9,r9,#1 N BNE persp_loop X LDR r0,[r4,#4] b ADD r0,r0,#1 l STR r0,[r4,#4] v �str(3,rp_ptr) �% LDMFD (sp)!,{r0-r11,pc} � �.read_screen_limits �' STMFD (sp)!,{r0-r11,link} � ADR r0,vdu_list � �adrl(1,gwx0) �* SWI "XOS_ReadVduVariables" � LDMIA r1,{r2-r9} � MOV r2,r2,LSL r8 � SUB r2,r2,r6 � SUB r2,r2,#64 � MOV r3,r3,LSL r9 � SUB r3,r3,r7 SUB r3,r3,#64 MOV r4,r4,LSL r8 SUB r4,r4,r6 ADD r4,r4,#64 * MOV r5,r5,LSL r9 4 SUB r5,r5,r7 > ADD r5,r5,#64 H �adrl(1,scr_minx) R STMIA r1,{r2-r5} \% LDMFD (sp)!,{r0-r11,pc} f p .vdu_list z DCD 128 � DCD 129 � DCD 130 � DCD 131 � DCD 136 � DCD 137 � DCD 4 � DCD 5 � DCD -1 � �'.rotate STMFD (sp)!,{r0-r11,link} � LDMIA r0,{r3-r5} � LDR r8,[r1,#4] � CMP r8,#0 STMEQIA r2,{r3-r5} BEQ no_rotate �sin(9,8) $ �cos(10,8) . MOVS r6,r3 8 RSBMI r6,r6,#0 B MOVS r7,r4 L RSBMI r7,r7,#0 V �R r6,r6,r7 ` MOVS r8,r5 j RSBMI r8,r8,#0 t �R r6,r6,r8 ~ MOV r11,#0 �.rotate_reduce �) CMP r6,#(1<<(30-ang_acc)) � BLT rotate_ok � MOV r6,r6,ASR #1 � ADD r11,r11,#1 � CMP r11,#ang_acc �! BLT rotate_reduce �.rotate_ok �! MOV r3,r3,ASR r11 �! MOV r5,r5,ASR r11 �$ RSB r11,r11,#ang_acc � MUL r6,r3,r10 MLA r6,r5,r9,r6 RSB r9,r9,#0 MUL r8,r3,r9 MLA r8,r5,r10,r8 (! MOV r6,r6,ASR r11 2 MOV r7,r4 <! MOV r8,r8,ASR r11 F STMIA r2,{r6-r8} P.no_rotate Z% LDMFD (sp)!,{r0-r11,pc} d n x".sin_tab �table(4*real_angles) �] �� pass%>4 � � � i=0 � real_angles-1 � a=2*�*(i/real_angles) �) sin_tab!(code%+4*i)=(1<<ang_acc)*�a � � �� �=0 �: �� �sin(reg1,reg2) �[OPT pass% �/ MOV r14,reg2,LSL #(32-ang_bits) �8 MOV r14,r14,LSR #(32-ang_bits+ang_shift) ADR reg1,sin_tab * LDR reg1,[reg1,r14,LSL #2] ] "=0 ,: 6� �cos(reg1,reg2) @[OPT pass% J( ADD r14,reg2,#angles � 4 T. MOV r14,r14,LSL #(32-ang_bits) ^8 MOV r14,r14,LSR #(32-ang_bits+ang_shift) h ADR reg1,sin_tab r* LDR reg1,[reg1,r14,LSL #2] |] �=0 �: �� �str(reg,off) �[OPT pass% �' ADD r14,wp,#off � &FF00 �* STR reg,[r14,#off � &00FF] �] �=0 �: �� �ldr(reg,off) �[OPT pass% �' ADD r14,wp,#off � &FF00 �* LDR reg,[r14,#off � &00FF] ] =0 �
00000000 0d 00 0a 13 f4 20 3e 53 6f 75 72 63 65 2e 53 57 |..... >Source.SW| 00000010 49 30 37 0d 00 14 19 f4 20 42 41 55 33 44 5f 52 |I07..... BAU3D_R| 00000020 65 6e 64 65 72 20 73 6f 75 72 63 65 0d 00 1e 0c |ender source....| 00000030 f4 20 62 79 20 44 43 41 0d 00 28 19 f4 20 66 6f |. by DCA..(.. fo| 00000040 72 20 33 32 2d 62 69 74 20 6d 61 63 68 69 6e 65 |r 32-bit machine| 00000050 73 0d 00 32 19 f4 20 28 63 29 20 42 41 55 20 41 |s..2.. (c) BAU A| 00000060 75 67 75 73 74 20 31 39 39 33 0d 00 3c 05 3a 0d |ugust 1993..<.:.| 00000070 00 46 11 dd 20 a4 73 77 69 30 37 5f 6e 61 6d 65 |.F.. .swi07_name| 00000080 0d 00 50 0d 3d 22 52 65 6e 64 65 72 22 0d 00 5a |..P.="Render"..Z| 00000090 05 3a 0d 00 64 11 dd 20 a4 73 77 69 30 37 5f 76 |.:..d.. .swi07_v| 000000a0 61 72 73 0d 00 6e 13 70 6f 6c 79 5f 63 68 75 6e |ars..n.poly_chun| 000000b0 6b 3d 31 30 32 34 0d 00 78 15 70 6f 6c 79 5f 70 |k=1024..x.poly_p| 000000c0 6f 69 6e 74 3d a4 77 6b 28 34 29 0d 00 82 1a 70 |oint=.wk(4)....p| 000000d0 6f 6c 79 5f 70 6f 69 6e 74 5f 73 69 7a 65 3d a4 |oly_point_size=.| 000000e0 77 6b 28 34 29 0d 00 8c 15 70 6f 6c 79 5f 66 61 |wk(4)....poly_fa| 000000f0 63 65 73 3d a4 77 6b 28 34 29 0d 00 96 11 61 6e |ces=.wk(4)....an| 00000100 67 6c 65 73 3d 26 31 30 30 30 30 0d 00 a0 0f 61 |gles=&10000....a| 00000110 6e 67 5f 62 69 74 73 3d 31 36 0d 00 aa 0e 61 6e |ng_bits=16....an| 00000120 67 5f 61 63 63 3d 31 36 0d 00 b4 14 72 65 61 6c |g_acc=16....real| 00000130 5f 61 6e 67 5f 62 69 74 73 3d 31 30 0d 00 be 24 |_ang_bits=10...$| 00000140 61 6e 67 5f 73 68 69 66 74 3d 61 6e 67 5f 62 69 |ang_shift=ang_bi| 00000150 74 73 2d 72 65 61 6c 5f 61 6e 67 5f 62 69 74 73 |ts-real_ang_bits| 00000160 0d 00 c8 20 72 65 61 6c 5f 61 6e 67 6c 65 73 3d |... real_angles=| 00000170 31 3c 3c 72 65 61 6c 5f 61 6e 67 5f 62 69 74 73 |1<<real_ang_bits| 00000180 0d 00 d2 0f 67 77 78 30 3d a4 77 6b 28 34 29 0d |....gwx0=.wk(4).| 00000190 00 dc 0f 67 77 79 30 3d a4 77 6b 28 34 29 0d 00 |...gwy0=.wk(4)..| 000001a0 e6 0f 67 77 78 31 3d a4 77 6b 28 34 29 0d 00 f0 |..gwx1=.wk(4)...| 000001b0 0f 67 77 79 31 3d a4 77 6b 28 34 29 0d 00 fa 0f |.gwy1=.wk(4)....| 000001c0 6f 72 67 78 3d a4 77 6b 28 34 29 0d 01 04 0f 6f |orgx=.wk(4)....o| 000001d0 72 67 79 3d a4 77 6b 28 34 29 0d 01 0e 0f 78 65 |rgy=.wk(4)....xe| 000001e0 69 67 3d a4 77 6b 28 34 29 0d 01 18 0f 79 65 69 |ig=.wk(4)....yei| 000001f0 67 3d a4 77 6b 28 34 29 0d 01 22 13 73 63 72 5f |g=.wk(4)..".scr_| 00000200 6d 69 6e 78 3d a4 77 6b 28 34 29 0d 01 2c 13 73 |minx=.wk(4)..,.s| 00000210 63 72 5f 6d 69 6e 79 3d a4 77 6b 28 34 29 0d 01 |cr_miny=.wk(4)..| 00000220 36 13 73 63 72 5f 6d 61 78 78 3d a4 77 6b 28 34 |6.scr_maxx=.wk(4| 00000230 29 0d 01 40 13 73 63 72 5f 6d 61 78 79 3d a4 77 |)..@.scr_maxy=.w| 00000240 6b 28 34 29 0d 01 4a 11 72 70 5f 70 74 72 3d a4 |k(4)..J.rp_ptr=.| 00000250 77 6b 28 34 29 0d 01 54 12 74 6f 74 61 6c 5f 7a |wk(4)..T.total_z| 00000260 3d a4 77 6b 28 34 29 0d 01 5e 14 74 6f 74 61 6c |=.wk(4)..^.total| 00000270 5f 7a 6e 6f 3d a4 77 6b 28 34 29 0d 01 68 04 0d |_zno=.wk(4)..h..| 00000280 01 72 10 62 69 74 5f 6d 65 72 67 65 3d 36 34 0d |.r.bit_merge=64.| 00000290 01 7c 10 62 69 74 5f 73 75 72 66 3d 31 32 38 0d |.|.bit_surf=128.| 000002a0 01 86 04 0d 01 90 0e 6f 62 6a 5f 6c 69 73 74 3d |.......obj_list=| 000002b0 30 0d 01 9a 0e 6f 62 6a 5f 6e 61 6d 65 3d 34 0d |0....obj_name=4.| 000002c0 01 a4 0d 6f 62 6a 5f 72 65 71 3d 38 0d 01 ae 0f |...obj_req=8....| 000002d0 73 75 72 66 5f 74 79 70 65 3d 30 0d 01 b8 11 73 |surf_type=0....s| 000002e0 75 72 66 5f 63 6f 6c 6f 75 72 3d 34 0d 01 c2 0c |urf_colour=4....| 000002f0 73 75 72 66 5f 6e 3d 38 0d 01 cc 12 73 75 72 66 |surf_n=8....surf| 00000300 5f 63 6f 6f 72 64 73 3d 31 32 0d 01 d6 0f 73 75 |_coords=12....su| 00000310 72 66 5f 72 65 71 3d 31 32 0d 01 e0 11 73 75 62 |rf_req=12....sub| 00000320 6f 62 6a 5f 6e 65 78 74 3d 30 0d 01 ea 11 73 75 |obj_next=0....su| 00000330 62 6f 62 6a 5f 74 79 70 65 3d 34 0d 01 f4 12 73 |bobj_type=4....s| 00000340 75 62 6f 62 6a 5f 66 6c 61 67 73 3d 38 0d 01 fe |ubobj_flags=8...| 00000350 14 73 75 62 6f 62 6a 5f 6f 66 66 73 65 74 3d 31 |.subobj_offset=1| 00000360 32 0d 02 08 13 73 75 62 6f 62 6a 5f 61 6e 67 6c |2....subobj_angl| 00000370 65 3d 32 34 0d 02 12 15 73 75 62 6f 62 6a 5f 73 |e=24....subobj_s| 00000380 75 72 66 72 65 71 3d 33 36 0d 02 1c 14 73 75 62 |urfreq=36....sub| 00000390 6f 62 6a 5f 62 6f 75 6e 64 73 3d 33 36 0d 02 26 |obj_bounds=36..&| 000003a0 12 73 75 62 6f 62 6a 5f 72 65 71 3d 31 33 32 0d |.subobj_req=132.| 000003b0 02 30 14 73 6c 69 64 65 5f 6c 69 6d 69 74 3d 31 |.0.slide_limit=1| 000003c0 36 5e 32 0d 02 3a 06 3d 30 0d 02 44 05 3a 0d 02 |6^2..:.=0..D.:..| 000003d0 4e 11 dd 20 a4 73 77 69 30 37 5f 63 6f 64 65 0d |N.. .swi07_code.| 000003e0 02 58 09 ea 20 69 2c 61 0d 02 62 0e 5b 4f 50 54 |.X.. i,a..b.[OPT| 000003f0 20 70 61 73 73 25 0d 02 6c 0b 2e 72 65 6e 64 65 | pass%..l..rende| 00000400 72 0d 02 76 27 20 20 20 20 20 20 20 20 53 54 4d |r..v' STM| 00000410 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 |FD (sp)!,{r0-r| 00000420 31 31 2c 6c 69 6e 6b 7d 0d 02 80 22 20 20 20 20 |11,link}..." | 00000430 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 23 | MOV r0,#| 00000440 70 6f 6c 79 5f 63 68 75 6e 6b 0d 02 8a 1a 20 20 |poly_chunk.... | 00000450 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 6d 61 | BL ma| 00000460 6c 6c 6f 63 0d 02 94 25 20 20 20 20 20 20 20 20 |lloc...% | 00000470 4c 44 4d 56 53 46 44 20 28 73 70 29 21 2c 7b 72 |LDMVSFD (sp)!,{r| 00000480 30 2d 72 31 31 2c 70 63 7d 0d 02 9e 19 20 20 20 |0-r11,pc}.... | 00000490 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 33 2c | MOV r3,| 000004a0 72 30 0d 02 a8 22 20 20 20 20 20 20 20 20 4d 4f |r0..." MO| 000004b0 56 20 20 20 20 20 72 34 2c 23 70 6f 6c 79 5f 63 |V r4,#poly_c| 000004c0 68 75 6e 6b 0d 02 b2 19 20 20 20 20 20 20 20 20 |hunk.... | 000004d0 4d 4f 56 20 20 20 20 20 72 35 2c 23 30 0d 02 bc |MOV r5,#0...| 000004e0 20 20 20 20 20 20 20 20 20 a4 61 64 72 6c 28 31 | .adrl(1| 000004f0 34 2c 70 6f 6c 79 5f 70 6f 69 6e 74 29 0d 02 c6 |4,poly_point)...| 00000500 1f 20 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 |. STMIA | 00000510 20 72 31 34 2c 7b 72 33 2d 72 35 7d 0d 02 d0 26 | r14,{r3-r5}...&| 00000520 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 | BL | 00000530 72 65 61 64 5f 73 63 72 65 65 6e 5f 6c 69 6d 69 |read_screen_limi| 00000540 74 73 0d 02 da 1e 20 20 20 20 20 20 20 20 4c 44 |ts.... LD| 00000550 4d 49 41 20 20 20 73 70 2c 7b 72 30 2d 72 32 7d |MIA sp,{r0-r2}| 00000560 0d 02 e4 1e 20 20 20 20 20 20 20 20 4c 44 4d 49 |.... LDMI| 00000570 41 20 20 20 72 31 2c 7b 72 33 2d 72 35 7d 0d 02 |A r1,{r3-r5}..| 00000580 ee 1e 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 |.. LDMIA | 00000590 20 20 72 32 2c 7b 72 36 2d 72 38 7d 0d 02 f8 1f | r2,{r6-r8}....| 000005a0 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 000005b0 72 30 2c 23 6f 62 6a 5f 72 65 71 0d 03 02 1a 20 |r0,#obj_req.... | 000005c0 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 6d | BL m| 000005d0 61 6c 6c 6f 63 0d 03 0c 1f 20 20 20 20 20 20 20 |alloc.... | 000005e0 20 42 56 53 20 20 20 20 20 72 65 6e 64 65 72 5f | BVS render_| 000005f0 64 6f 6e 65 0d 03 16 1a 20 20 20 20 20 20 20 20 |done.... | 00000600 4d 4f 56 20 20 20 20 20 72 31 31 2c 72 30 0d 03 |MOV r11,r0..| 00000610 20 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 | . MOV | 00000620 20 20 72 30 2c 23 30 0d 03 2a 26 20 20 20 20 20 | r0,#0..*& | 00000630 20 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b 72 | STR r0,[r| 00000640 31 31 2c 23 6f 62 6a 5f 6c 69 73 74 5d 0d 03 34 |11,#obj_list]..4| 00000650 26 20 20 20 20 20 20 20 20 53 54 52 20 20 20 20 |& STR | 00000660 20 72 30 2c 5b 72 31 31 2c 23 6f 62 6a 5f 6e 61 | r0,[r11,#obj_na| 00000670 6d 65 5d 0d 03 3e 19 20 20 20 20 20 20 20 20 4d |me]..>. M| 00000680 4f 56 20 20 20 20 20 72 39 2c 23 30 0d 03 48 1c |OV r9,#0..H.| 00000690 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 000006a0 72 31 30 2c 5b 73 70 5d 0d 03 52 18 20 20 20 20 |r10,[sp]..R. | 000006b0 20 20 20 20 42 4c 20 20 20 20 20 20 63 6c 69 70 | BL clip| 000006c0 0d 03 5c 1f 20 20 20 20 20 20 20 20 42 56 53 20 |..\. BVS | 000006d0 20 20 20 20 72 65 6e 64 65 72 5f 64 6f 6e 65 0d | render_done.| 000006e0 03 66 1b 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |.f. MOV | 000006f0 20 20 20 72 31 30 2c 72 31 31 0d 03 70 1e 20 20 | r10,r11..p. | 00000700 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 73 70 | LDMIA sp| 00000710 2c 7b 72 30 2d 72 32 7d 0d 03 7a 19 20 20 20 20 |,{r0-r2}..z. | 00000720 20 20 20 20 4d 4f 56 20 20 20 20 20 72 39 2c 23 | MOV r9,#| 00000730 30 0d 03 84 1a 20 20 20 20 20 20 20 20 4d 4f 56 |0.... MOV| 00000740 20 20 20 20 20 72 31 31 2c 23 30 0d 03 8e 1e 20 | r11,#0.... | 00000750 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 | LDMIA r| 00000760 31 2c 7b 72 33 2d 72 35 7d 0d 03 98 1e 20 20 20 |1,{r3-r5}.... | 00000770 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 32 2c | LDMIA r2,| 00000780 7b 72 36 2d 72 38 7d 0d 03 a2 1e 20 20 20 20 20 |{r6-r8}.... | 00000790 20 20 20 42 4c 20 20 20 20 20 20 72 65 6e 64 65 | BL rende| 000007a0 72 5f 6f 62 6a 0d 03 ac 1b 20 20 20 20 20 20 20 |r_obj.... | 000007b0 20 4d 4f 56 20 20 20 20 20 72 31 31 2c 72 31 30 | MOV r11,r10| 000007c0 0d 03 b6 1d 20 20 20 20 20 20 20 20 42 4c 20 20 |.... BL | 000007d0 20 20 20 20 66 72 65 65 5f 74 72 65 65 0d 03 c0 | free_tree...| 000007e0 1e 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 |. BL | 000007f0 20 70 6c 6f 74 5f 66 61 63 65 73 0d 03 ca 20 20 | plot_faces... | 00000800 20 20 20 20 20 20 20 a4 61 64 72 6c 28 31 30 2c | .adrl(10,| 00000810 70 6f 6c 79 5f 70 6f 69 6e 74 29 0d 03 d4 1f 20 |poly_point).... | 00000820 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 | LDMIA r| 00000830 31 30 2c 7b 72 34 2d 72 36 7d 0d 03 de 13 2e 66 |10,{r4-r6}.....f| 00000840 72 65 65 5f 70 6f 6c 79 5f 6c 6f 6f 70 0d 03 e8 |ree_poly_loop...| 00000850 1c 20 20 20 20 20 20 20 20 53 55 42 53 20 20 20 |. SUBS | 00000860 20 72 36 2c 72 36 2c 23 31 0d 03 f2 23 20 20 20 | r6,r6,#1...# | 00000870 20 20 20 20 20 42 4d 49 20 20 20 20 20 66 72 65 | BMI fre| 00000880 65 64 5f 70 6f 6c 79 5f 6c 69 73 74 0d 03 fc 1e |ed_poly_list....| 00000890 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 000008a0 72 30 2c 5b 72 34 5d 2c 23 34 0d 04 06 18 20 20 |r0,[r4],#4.... | 000008b0 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 66 72 | BL fr| 000008c0 65 65 0d 04 10 22 20 20 20 20 20 20 20 20 42 20 |ee..." B | 000008d0 20 20 20 20 20 20 66 72 65 65 5f 70 6f 6c 79 5f | free_poly_| 000008e0 6c 6f 6f 70 0d 04 1a 14 2e 66 72 65 65 64 5f 70 |loop.....freed_p| 000008f0 6f 6c 79 5f 6c 69 73 74 0d 04 24 1c 20 20 20 20 |oly_list..$. | 00000900 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b | LDR r0,[| 00000910 72 31 30 5d 0d 04 2e 18 20 20 20 20 20 20 20 20 |r10].... | 00000920 42 4c 20 20 20 20 20 20 66 72 65 65 0d 04 38 10 |BL free..8.| 00000930 2e 72 65 6e 64 65 72 5f 64 6f 6e 65 0d 04 42 1b |.render_done..B.| 00000940 20 20 20 20 20 20 20 20 53 54 52 56 53 20 20 20 | STRVS | 00000950 72 30 2c 5b 73 70 5d 0d 04 4c 25 20 20 20 20 20 |r0,[sp]..L% | 00000960 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 | LDMFD (sp)!| 00000970 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 04 56 04 |,{r0-r11,pc}..V.| 00000980 0d 04 60 0f 2e 72 65 6e 64 65 72 5f 6f 62 6a 0d |..`..render_obj.| 00000990 04 6a 27 20 20 20 20 20 20 20 20 53 54 4d 46 44 |.j' STMFD| 000009a0 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 | (sp)!,{r0-r11| 000009b0 2c 6c 69 6e 6b 7d 0d 04 74 27 20 20 20 20 20 20 |,link}..t' | 000009c0 20 20 4c 44 52 20 20 20 20 20 72 31 30 2c 5b 72 | LDR r10,[r| 000009d0 31 30 2c 23 6f 62 6a 5f 6c 69 73 74 5d 0d 04 7e |10,#obj_list]..~| 000009e0 14 2e 72 65 6e 64 65 72 5f 6f 62 6a 5f 6c 6f 6f |..render_obj_loo| 000009f0 70 0d 04 88 1a 20 20 20 20 20 20 20 20 43 4d 50 |p.... CMP| 00000a00 20 20 20 20 20 72 31 30 2c 23 30 0d 04 92 25 20 | r10,#0...% | 00000a10 20 20 20 20 20 20 20 4c 44 4d 45 51 46 44 20 28 | LDMEQFD (| 00000a20 73 70 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d |sp)!,{r0-r11,pc}| 00000a30 0d 04 9c 2a 20 20 20 20 20 20 20 20 4c 44 52 20 |...* LDR | 00000a40 20 20 20 20 72 30 2c 5b 72 31 30 2c 23 73 75 62 | r0,[r10,#sub| 00000a50 6f 62 6a 5f 66 6c 61 67 73 5d 0d 04 a6 20 20 20 |obj_flags]... | 00000a60 20 20 20 20 20 20 54 53 54 20 20 20 20 20 72 30 | TST r0| 00000a70 2c 23 62 69 74 5f 73 75 72 66 0d 04 b0 21 20 20 |,#bit_surf...! | 00000a80 20 20 20 20 20 20 42 45 51 20 20 20 20 20 72 65 | BEQ re| 00000a90 6e 64 65 72 5f 73 75 62 6f 62 6a 0d 04 ba 10 2e |nder_subobj.....| 00000aa0 72 65 6e 64 65 72 5f 73 75 72 66 0d 04 c4 29 20 |render_surf...) | 00000ab0 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 00000ac0 30 2c 5b 72 31 30 2c 23 73 75 62 6f 62 6a 5f 74 |0,[r10,#subobj_t| 00000ad0 79 70 65 5d 0d 04 ce 1e 20 20 20 20 20 20 20 20 |ype].... | 00000ae0 41 44 44 20 20 20 20 20 72 31 2c 73 70 2c 23 34 |ADD r1,sp,#4| 00000af0 2a 33 0d 04 d8 1e 20 20 20 20 20 20 20 20 41 44 |*3.... AD| 00000b00 44 20 20 20 20 20 72 32 2c 73 70 2c 23 34 2a 36 |D r2,sp,#4*6| 00000b10 0d 04 e2 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 |.... MOV | 00000b20 20 20 20 20 72 33 2c 72 31 31 0d 04 ec 19 20 20 | r3,r11.... | 00000b30 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 34 | MOV r4| 00000b40 2c 72 39 0d 04 f6 24 20 20 20 20 20 20 20 20 42 |,r9...$ B| 00000b50 4c 20 20 20 20 20 20 72 65 67 69 73 74 65 72 5f |L register_| 00000b60 70 6f 6c 79 67 6f 6e 0d 05 00 1f 20 20 20 20 20 |polygon.... | 00000b70 20 20 20 41 44 44 20 20 20 20 20 72 31 34 2c 73 | ADD r14,s| 00000b80 70 2c 23 34 2a 32 0d 05 0a 1f 20 20 20 20 20 20 |p,#4*2.... | 00000b90 20 20 4c 44 4d 49 41 20 20 20 72 31 34 2c 7b 72 | LDMIA r14,{r| 00000ba0 33 2c 72 34 7d 0d 05 14 1f 20 20 20 20 20 20 20 |3,r4}.... | 00000bb0 20 42 20 20 20 20 20 20 20 72 65 6e 64 65 72 5f | B render_| 00000bc0 6e 65 78 74 0d 05 1e 12 2e 72 65 6e 64 65 72 5f |next.....render_| 00000bd0 73 75 62 6f 62 6a 0d 05 28 20 20 20 20 20 20 20 |subobj..( | 00000be0 20 20 53 55 42 20 20 20 20 20 73 70 2c 73 70 2c | SUB sp,sp,| 00000bf0 23 31 32 2b 31 32 0d 05 32 29 20 20 20 20 20 20 |#12+12..2) | 00000c00 20 20 41 44 44 20 20 20 20 20 72 30 2c 72 31 30 | ADD r0,r10| 00000c10 2c 23 73 75 62 6f 62 6a 5f 6f 66 66 73 65 74 0d |,#subobj_offset.| 00000c20 05 3c 24 20 20 20 20 20 20 20 20 41 44 44 20 20 |.<$ ADD | 00000c30 20 20 20 72 31 2c 73 70 2c 23 31 32 2b 31 32 2b | r1,sp,#12+12+| 00000c40 34 2a 36 0d 05 46 1d 20 20 20 20 20 20 20 20 41 |4*6..F. A| 00000c50 44 44 20 20 20 20 20 72 32 2c 73 70 2c 23 31 32 |DD r2,sp,#12| 00000c60 0d 05 50 1a 20 20 20 20 20 20 20 20 42 4c 20 20 |..P. BL | 00000c70 20 20 20 20 72 6f 74 61 74 65 0d 05 5a 1d 20 20 | rotate..Z. | 00000c80 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 30 | ADD r0| 00000c90 2c 73 70 2c 23 31 32 0d 05 64 24 20 20 20 20 20 |,sp,#12..d$ | 00000ca0 20 20 20 41 44 44 20 20 20 20 20 72 31 2c 73 70 | ADD r1,sp| 00000cb0 2c 23 31 32 2b 31 32 2b 34 2a 33 0d 05 6e 19 20 |,#12+12+4*3..n. | 00000cc0 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 00000cd0 32 2c 72 30 0d 05 78 17 20 20 20 20 20 20 20 20 |2,r0..x. | 00000ce0 42 4c 20 20 20 20 20 20 61 64 64 0d 05 82 28 20 |BL add...( | 00000cf0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00000d00 30 2c 72 31 30 2c 23 73 75 62 6f 62 6a 5f 61 6e |0,r10,#subobj_an| 00000d10 67 6c 65 0d 05 8c 24 20 20 20 20 20 20 20 20 41 |gle...$ A| 00000d20 44 44 20 20 20 20 20 72 31 2c 73 70 2c 23 31 32 |DD r1,sp,#12| 00000d30 2b 31 32 2b 34 2a 36 0d 05 96 19 20 20 20 20 20 |+12+4*6.... | 00000d40 20 20 20 4d 4f 56 20 20 20 20 20 72 32 2c 73 70 | MOV r2,sp| 00000d50 0d 05 a0 17 20 20 20 20 20 20 20 20 42 4c 20 20 |.... BL | 00000d60 20 20 20 20 61 64 64 0d 05 aa 21 20 20 20 20 20 | add...! | 00000d70 20 20 20 4c 44 4d 49 41 20 20 20 28 73 70 29 21 | LDMIA (sp)!| 00000d80 2c 7b 72 36 2d 72 38 7d 0d 05 b4 21 20 20 20 20 |,{r6-r8}...! | 00000d90 20 20 20 20 4c 44 4d 49 41 20 20 20 28 73 70 29 | LDMIA (sp)| 00000da0 21 2c 7b 72 33 2d 72 35 7d 0d 05 be 22 20 20 20 |!,{r3-r5}..." | 00000db0 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 70 | STMFD (sp| 00000dc0 29 21 2c 7b 72 39 2d 72 31 31 7d 0d 05 c8 2a 20 |)!,{r9-r11}...* | 00000dd0 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 00000de0 39 2c 5b 72 31 30 2c 23 73 75 62 6f 62 6a 5f 66 |9,[r10,#subobj_f| 00000df0 6c 61 67 73 5d 0d 05 d2 2a 20 20 20 20 20 20 20 |lags]...* | 00000e00 20 4c 44 52 20 20 20 20 20 72 31 30 2c 5b 72 31 | LDR r10,[r1| 00000e10 30 2c 23 73 75 62 6f 62 6a 5f 74 79 70 65 5d 0d |0,#subobj_type].| 00000e20 05 dc 23 20 20 20 20 20 20 20 20 80 20 20 20 20 |..# . | 00000e30 20 72 31 34 2c 72 39 2c 23 62 69 74 5f 6d 65 72 | r14,r9,#bit_mer| 00000e40 67 65 0d 05 e6 1e 20 20 20 20 20 20 20 20 84 52 |ge.... .R| 00000e50 20 20 20 20 20 72 31 31 2c 72 31 31 2c 72 31 34 | r11,r11,r14| 00000e60 0d 05 f0 1b 20 20 20 20 20 20 20 20 80 20 20 20 |.... . | 00000e70 20 20 72 39 2c 72 39 2c 23 36 33 0d 05 fa 1e 20 | r9,r9,#63.... | 00000e80 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 72 | BL r| 00000e90 65 6e 64 65 72 5f 6f 62 6a 0d 06 04 22 20 20 20 |ender_obj..." | 00000ea0 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 | LDMFD (sp| 00000eb0 29 21 2c 7b 72 39 2d 72 31 31 7d 0d 06 0e 1f 20 |)!,{r9-r11}.... | 00000ec0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00000ed0 31 34 2c 73 70 2c 23 34 2a 33 0d 06 18 1f 20 20 |14,sp,#4*3.... | 00000ee0 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 31 | LDMIA r1| 00000ef0 34 2c 7b 72 33 2d 72 38 7d 0d 06 22 10 2e 72 65 |4,{r3-r8}.."..re| 00000f00 6e 64 65 72 5f 6e 65 78 74 0d 06 2c 2a 20 20 20 |nder_next..,* | 00000f10 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 30 | LDR r10| 00000f20 2c 5b 72 31 30 2c 23 73 75 62 6f 62 6a 5f 6e 65 |,[r10,#subobj_ne| 00000f30 78 74 5d 0d 06 36 23 20 20 20 20 20 20 20 20 42 |xt]..6# B| 00000f40 20 20 20 20 20 20 20 72 65 6e 64 65 72 5f 6f 62 | render_ob| 00000f50 6a 5f 6c 6f 6f 70 0d 06 40 04 0d 06 4a 27 2e 63 |j_loop..@...J'.c| 00000f60 6c 69 70 20 20 20 53 54 4d 46 44 20 20 20 28 73 |lip STMFD (s| 00000f70 70 29 21 2c 7b 72 30 2d 72 31 31 2c 6c 69 6e 6b |p)!,{r0-r11,link| 00000f80 7d 0d 06 54 23 20 20 20 20 20 20 20 20 53 55 42 |}..T# SUB| 00000f90 20 20 20 20 20 73 70 2c 73 70 2c 23 31 32 2b 31 | sp,sp,#12+1| 00000fa0 32 2b 39 36 0d 06 5e 26 20 20 20 20 20 20 20 20 |2+96..^& | 00000fb0 4c 44 52 20 20 20 20 20 72 38 2c 5b 72 31 30 2c |LDR r8,[r10,| 00000fc0 23 6f 62 6a 5f 6c 69 73 74 5d 0d 06 68 0e 2e 63 |#obj_list]..h..c| 00000fd0 6c 69 70 5f 6c 6f 6f 70 0d 06 72 19 20 20 20 20 |lip_loop..r. | 00000fe0 20 20 20 20 43 4d 50 20 20 20 20 20 72 38 2c 23 | CMP r8,#| 00000ff0 30 0d 06 7c 1d 20 20 20 20 20 20 20 20 42 45 51 |0..|. BEQ| 00001000 20 20 20 20 20 63 6c 69 70 5f 65 78 69 74 0d 06 | clip_exit..| 00001010 86 29 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.) LDR | 00001020 20 20 72 39 2c 5b 73 70 2c 23 31 32 2b 31 32 2b | r9,[sp,#12+12+| 00001030 39 36 2b 34 2a 39 5d 0d 06 90 29 20 20 20 20 20 |96+4*9]...) | 00001040 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 72 | LDR r0,[r| 00001050 38 2c 23 73 75 62 6f 62 6a 5f 66 6c 61 67 73 5d |8,#subobj_flags]| 00001060 0d 06 9a 20 20 20 20 20 20 20 20 20 54 53 54 20 |... TST | 00001070 20 20 20 20 72 30 2c 23 62 69 74 5f 73 75 72 66 | r0,#bit_surf| 00001080 0d 06 a4 1f 20 20 20 20 20 20 20 20 42 45 51 20 |.... BEQ | 00001090 20 20 20 20 63 6c 69 70 5f 73 75 62 6f 62 6a 0d | clip_subobj.| 000010a0 06 ae 0e 2e 63 6c 69 70 5f 73 75 72 66 0d 06 b8 |....clip_surf...| 000010b0 26 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |& MOV | 000010c0 20 72 30 2c 23 73 75 62 6f 62 6a 5f 73 75 72 66 | r0,#subobj_surf| 000010d0 72 65 71 0d 06 c2 1f 20 20 20 20 20 20 20 20 42 |req.... B| 000010e0 4c 20 20 20 20 20 20 63 6f 70 79 5f 73 75 62 6f |L copy_subo| 000010f0 62 6a 0d 06 cc 1d 20 20 20 20 20 20 20 20 42 56 |bj.... BV| 00001100 53 20 20 20 20 20 63 6c 69 70 5f 65 78 69 74 0d |S clip_exit.| 00001110 06 d6 1d 20 20 20 20 20 20 20 20 42 20 20 20 20 |... B | 00001120 20 20 20 63 6c 69 70 5f 6e 65 78 74 0d 06 e0 10 | clip_next....| 00001130 2e 63 6c 69 70 5f 73 75 62 6f 62 6a 0d 06 ea 27 |.clip_subobj...'| 00001140 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00001150 72 30 2c 72 38 2c 23 73 75 62 6f 62 6a 5f 61 6e |r0,r8,#subobj_an| 00001160 67 6c 65 0d 06 f4 27 20 20 20 20 20 20 20 20 41 |gle...' A| 00001170 44 44 20 20 20 20 20 72 31 2c 73 70 2c 23 31 32 |DD r1,sp,#12| 00001180 2b 31 32 2b 39 36 2b 36 2a 34 0d 06 fe 19 20 20 |+12+96+6*4.... | 00001190 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 32 | MOV r2| 000011a0 2c 73 70 0d 07 08 17 20 20 20 20 20 20 20 20 42 |,sp.... B| 000011b0 4c 20 20 20 20 20 20 61 64 64 0d 07 12 28 20 20 |L add...( | 000011c0 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 30 | ADD r0| 000011d0 2c 72 38 2c 23 73 75 62 6f 62 6a 5f 6f 66 66 73 |,r8,#subobj_offs| 000011e0 65 74 0d 07 1c 27 20 20 20 20 20 20 20 20 41 44 |et...' AD| 000011f0 44 20 20 20 20 20 72 31 2c 73 70 2c 23 31 32 2b |D r1,sp,#12+| 00001200 31 32 2b 39 36 2b 36 2a 34 0d 07 26 1d 20 20 20 |12+96+6*4..&. | 00001210 20 20 20 20 20 41 44 44 20 20 20 20 20 72 32 2c | ADD r2,| 00001220 73 70 2c 23 31 32 0d 07 30 1a 20 20 20 20 20 20 |sp,#12..0. | 00001230 20 20 42 4c 20 20 20 20 20 20 72 6f 74 61 74 65 | BL rotate| 00001240 0d 07 3a 1d 20 20 20 20 20 20 20 20 41 44 44 20 |..:. ADD | 00001250 20 20 20 20 72 30 2c 73 70 2c 23 31 32 0d 07 44 | r0,sp,#12..D| 00001260 27 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |' ADD | 00001270 20 72 31 2c 73 70 2c 23 31 32 2b 31 32 2b 39 36 | r1,sp,#12+12+96| 00001280 2b 33 2a 34 0d 07 4e 19 20 20 20 20 20 20 20 20 |+3*4..N. | 00001290 4d 4f 56 20 20 20 20 20 72 32 2c 72 30 0d 07 58 |MOV r2,r0..X| 000012a0 17 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 |. BL | 000012b0 20 61 64 64 0d 07 62 1d 20 20 20 20 20 20 20 20 | add..b. | 000012c0 4d 4f 56 20 20 20 20 20 72 33 2c 23 31 32 2b 31 |MOV r3,#12+1| 000012d0 32 0d 07 6c 28 20 20 20 20 20 20 20 20 41 44 44 |2..l( ADD| 000012e0 20 20 20 20 20 72 34 2c 72 38 2c 23 73 75 62 6f | r4,r8,#subo| 000012f0 62 6a 5f 62 6f 75 6e 64 73 0d 07 76 12 2e 72 6f |bj_bounds..v..ro| 00001300 74 61 74 65 5f 62 6f 75 6e 64 73 0d 07 80 19 20 |tate_bounds.... | 00001310 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 00001320 30 2c 72 34 0d 07 8a 19 20 20 20 20 20 20 20 20 |0,r4.... | 00001330 4d 4f 56 20 20 20 20 20 72 31 2c 73 70 0d 07 94 |MOV r1,sp...| 00001340 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |. ADD | 00001350 20 72 32 2c 73 70 2c 72 33 0d 07 9e 1a 20 20 20 | r2,sp,r3.... | 00001360 20 20 20 20 20 42 4c 20 20 20 20 20 20 72 6f 74 | BL rot| 00001370 61 74 65 0d 07 a8 1c 20 20 20 20 20 20 20 20 41 |ate.... A| 00001380 44 44 20 20 20 20 20 72 30 2c 73 70 2c 72 33 0d |DD r0,sp,r3.| 00001390 07 b2 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 |... ADD | 000013a0 20 20 20 72 31 2c 73 70 2c 23 31 32 0d 07 bc 19 | r1,sp,#12....| 000013b0 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 000013c0 72 32 2c 72 30 0d 07 c6 17 20 20 20 20 20 20 20 |r2,r0.... | 000013d0 20 42 4c 20 20 20 20 20 20 61 64 64 0d 07 d0 1d | BL add....| 000013e0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 000013f0 72 34 2c 72 34 2c 23 31 32 0d 07 da 1d 20 20 20 |r4,r4,#12.... | 00001400 20 20 20 20 20 41 44 44 20 20 20 20 20 72 33 2c | ADD r3,| 00001410 72 33 2c 23 31 32 0d 07 e4 20 20 20 20 20 20 20 |r3,#12... | 00001420 20 20 43 4d 50 20 20 20 20 20 72 33 2c 23 31 32 | CMP r3,#12| 00001430 2b 31 32 2b 39 36 0d 07 ee 21 20 20 20 20 20 20 |+12+96...! | 00001440 20 20 42 4c 54 20 20 20 20 20 72 6f 74 61 74 65 | BLT rotate| 00001450 5f 62 6f 75 6e 64 73 0d 07 f8 19 20 20 20 20 20 |_bounds.... | 00001460 20 20 20 4d 4f 56 20 20 20 20 20 72 35 2c 23 30 | MOV r5,#0| 00001470 0d 08 02 19 20 20 20 20 20 20 20 20 4d 4f 56 20 |.... MOV | 00001480 20 20 20 20 72 37 2c 23 30 0d 08 0c 16 2e 63 68 | r7,#0.....ch| 00001490 65 63 6b 5f 62 6f 75 6e 64 5f 6c 6f 6f 70 31 0d |eck_bound_loop1.| 000014a0 08 16 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |... MOV | 000014b0 20 20 20 72 31 34 2c 23 31 0d 08 20 21 20 20 20 | r14,#1.. ! | 000014c0 20 20 20 20 20 54 53 54 20 20 20 20 20 72 39 2c | TST r9,| 000014d0 72 31 34 2c 4c 53 4c 20 72 37 0d 08 2a 22 20 20 |r14,LSL r7..*" | 000014e0 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 77 68 | BNE wh| 000014f0 6f 6c 6c 79 5f 76 69 73 69 62 6c 65 0d 08 34 1d |olly_visible..4.| 00001500 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00001510 72 33 2c 23 31 32 2b 31 32 0d 08 3e 19 20 20 20 |r3,#12+12..>. | 00001520 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 36 2c | MOV r6,| 00001530 23 30 0d 08 48 16 2e 63 68 65 63 6b 5f 62 6f 75 |#0..H..check_bou| 00001540 6e 64 5f 6c 6f 6f 70 32 0d 08 52 20 20 20 20 20 |nd_loop2..R | 00001550 20 20 20 20 4d 4f 56 20 20 20 20 20 72 35 2c 72 | MOV r5,r| 00001560 35 2c 4c 53 4c 20 23 31 0d 08 5c 22 20 20 20 20 |5,LSL #1..\" | 00001570 20 20 20 20 54 53 54 20 20 20 20 20 72 35 2c 23 | TST r5,#| 00001580 25 31 30 30 30 30 30 30 30 30 0d 08 66 1c 20 20 |%100000000..f. | 00001590 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 77 61 | BNE wa| 000015a0 73 5f 62 61 64 7a 0d 08 70 1c 20 20 20 20 20 20 |s_badz..p. | 000015b0 20 20 41 44 44 20 20 20 20 20 72 30 2c 73 70 2c | ADD r0,sp,| 000015c0 72 33 0d 08 7a 19 20 20 20 20 20 20 20 20 4d 4f |r3..z. MO| 000015d0 56 20 20 20 20 20 72 31 2c 72 37 0d 08 84 1d 20 |V r1,r7.... | 000015e0 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 69 | BL i| 000015f0 6e 76 69 73 69 62 6c 65 0d 08 8e 1d 20 20 20 20 |nvisible.... | 00001600 20 20 20 20 42 4e 45 20 20 20 20 20 6e 6f 74 5f | BNE not_| 00001610 69 6e 76 69 73 0d 08 98 1c 20 20 20 20 20 20 20 |invis.... | 00001620 20 41 44 44 20 20 20 20 20 72 36 2c 72 36 2c 23 | ADD r6,r6,#| 00001630 31 0d 08 a2 19 20 20 20 20 20 20 20 20 43 4d 50 |1.... CMP| 00001640 20 20 20 20 20 72 37 2c 23 32 0d 08 ac 1b 20 20 | r7,#2.... | 00001650 20 20 20 20 20 20 84 52 4c 54 20 20 20 72 35 2c | .RLT r5,| 00001660 72 35 2c 23 31 0d 08 b6 0e 2e 6e 6f 74 5f 69 6e |r5,#1.....not_in| 00001670 76 69 73 0d 08 c0 0d 2e 77 61 73 5f 62 61 64 7a |vis.....was_badz| 00001680 0d 08 ca 1d 20 20 20 20 20 20 20 20 41 44 44 20 |.... ADD | 00001690 20 20 20 20 72 33 2c 72 33 2c 23 31 32 0d 08 d4 | r3,r3,#12...| 000016a0 20 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 | CMP | 000016b0 20 72 33 2c 23 31 32 2b 31 32 2b 39 36 0d 08 de | r3,#12+12+96...| 000016c0 25 20 20 20 20 20 20 20 20 42 4c 54 20 20 20 20 |% BLT | 000016d0 20 63 68 65 63 6b 5f 62 6f 75 6e 64 5f 6c 6f 6f | check_bound_loo| 000016e0 70 32 0d 08 e8 22 20 20 20 20 20 20 20 20 84 52 |p2..." .R| 000016f0 20 20 20 20 20 72 35 2c 72 35 2c 72 35 2c 4c 53 | r5,r5,r5,LS| 00001700 52 20 23 38 0d 08 f2 20 20 20 20 20 20 20 20 20 |R #8... | 00001710 42 49 43 20 20 20 20 20 72 35 2c 72 35 2c 23 26 |BIC r5,r5,#&| 00001720 46 46 30 30 0d 08 fc 19 20 20 20 20 20 20 20 20 |FF00.... | 00001730 43 4d 50 20 20 20 20 20 72 36 2c 23 38 0d 09 06 |CMP r6,#8...| 00001740 1d 20 20 20 20 20 20 20 20 42 45 51 20 20 20 20 |. BEQ | 00001750 20 63 6c 69 70 5f 6e 65 78 74 0d 09 10 19 20 20 | clip_next.... | 00001760 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 35 | CMP r5| 00001770 2c 23 30 0d 09 1a 1f 20 20 20 20 20 20 20 20 42 |,#0.... B| 00001780 4e 45 20 20 20 20 20 77 68 61 63 6b 79 5f 7a 65 |NE whacky_ze| 00001790 64 73 0d 09 24 19 20 20 20 20 20 20 20 20 43 4d |ds..$. CM| 000017a0 50 20 20 20 20 20 72 36 2c 23 30 0d 09 2e 17 20 |P r6,#0.... | 000017b0 20 20 20 20 20 20 20 ec 51 20 20 20 72 31 34 2c | .Q r14,| 000017c0 23 31 0d 09 38 23 20 20 20 20 20 20 20 20 84 52 |#1..8# .R| 000017d0 45 51 20 20 20 72 39 2c 72 39 2c 72 31 34 2c 4c |EQ r9,r9,r14,L| 000017e0 53 4c 20 72 37 0d 09 42 10 2e 77 68 61 63 6b 79 |SL r7..B..whacky| 000017f0 5f 7a 65 64 73 0d 09 4c 13 2e 77 68 6f 6c 6c 79 |_zeds..L..wholly| 00001800 5f 76 69 73 69 62 6c 65 0d 09 56 1c 20 20 20 20 |_visible..V. | 00001810 20 20 20 20 41 44 44 20 20 20 20 20 72 37 2c 72 | ADD r7,r| 00001820 37 2c 23 31 0d 09 60 19 20 20 20 20 20 20 20 20 |7,#1..`. | 00001830 43 4d 50 20 20 20 20 20 72 37 2c 23 36 0d 09 6a |CMP r7,#6..j| 00001840 25 20 20 20 20 20 20 20 20 42 4c 54 20 20 20 20 |% BLT | 00001850 20 63 68 65 63 6b 5f 62 6f 75 6e 64 5f 6c 6f 6f | check_bound_loo| 00001860 70 31 0d 09 74 1f 20 20 20 20 20 20 20 20 4d 4f |p1..t. MO| 00001870 56 20 20 20 20 20 72 30 2c 23 6f 62 6a 5f 72 65 |V r0,#obj_re| 00001880 71 0d 09 7e 1a 20 20 20 20 20 20 20 20 42 4c 20 |q..~. BL | 00001890 20 20 20 20 20 6d 61 6c 6c 6f 63 0d 09 88 1d 20 | malloc.... | 000018a0 20 20 20 20 20 20 20 42 56 53 20 20 20 20 20 63 | BVS c| 000018b0 6c 69 70 5f 65 78 69 74 0d 09 92 19 20 20 20 20 |lip_exit.... | 000018c0 20 20 20 20 4d 4f 56 20 20 20 20 20 72 37 2c 72 | MOV r7,r| 000018d0 30 0d 09 9c 19 20 20 20 20 20 20 20 20 4d 4f 56 |0.... MOV| 000018e0 20 20 20 20 20 72 30 2c 23 30 0d 09 a6 25 20 20 | r0,#0...% | 000018f0 20 20 20 20 20 20 53 54 52 20 20 20 20 20 72 30 | STR r0| 00001900 2c 5b 72 37 2c 23 6f 62 6a 5f 6c 69 73 74 5d 0d |,[r7,#obj_list].| 00001910 09 b0 25 20 20 20 20 20 20 20 20 53 54 52 20 20 |..% STR | 00001920 20 20 20 72 30 2c 5b 72 37 2c 23 6f 62 6a 5f 6e | r0,[r7,#obj_n| 00001930 61 6d 65 5d 0d 09 ba 22 20 20 20 20 20 20 20 20 |ame]..." | 00001940 4d 4f 56 20 20 20 20 20 72 30 2c 23 73 75 62 6f |MOV r0,#subo| 00001950 62 6a 5f 72 65 71 0d 09 c4 1f 20 20 20 20 20 20 |bj_req.... | 00001960 20 20 42 4c 20 20 20 20 20 20 63 6f 70 79 5f 73 | BL copy_s| 00001970 75 62 6f 62 6a 0d 09 ce 1d 20 20 20 20 20 20 20 |ubobj.... | 00001980 20 42 56 53 20 20 20 20 20 63 6c 69 70 5f 65 78 | BVS clip_ex| 00001990 69 74 0d 09 d8 28 20 20 20 20 20 20 20 20 53 54 |it...( ST| 000019a0 52 20 20 20 20 20 72 37 2c 5b 72 30 2c 23 73 75 |R r7,[r0,#su| 000019b0 62 6f 62 6a 5f 74 79 70 65 5d 0d 09 e2 29 20 20 |bobj_type]...) | 000019c0 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 | LDR r1| 000019d0 2c 5b 72 30 2c 23 73 75 62 6f 62 6a 5f 66 6c 61 |,[r0,#subobj_fla| 000019e0 67 73 5d 0d 09 ec 1d 20 20 20 20 20 20 20 20 42 |gs].... B| 000019f0 49 43 20 20 20 20 20 72 31 2c 72 31 2c 23 36 33 |IC r1,r1,#63| 00001a00 0d 09 f6 1b 20 20 20 20 20 20 20 20 84 52 20 20 |.... .R | 00001a10 20 20 20 72 31 2c 72 31 2c 72 39 0d 0a 00 29 20 | r1,r1,r9...) | 00001a20 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 72 | STR r| 00001a30 31 2c 5b 72 30 2c 23 73 75 62 6f 62 6a 5f 66 6c |1,[r0,#subobj_fl| 00001a40 61 67 73 5d 0d 0a 0a 22 20 20 20 20 20 20 20 20 |ags]..." | 00001a50 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 |STMFD (sp)!,{r| 00001a60 38 2d 72 31 31 7d 0d 0a 14 29 20 20 20 20 20 20 |8-r11}...) | 00001a70 20 20 4c 44 52 20 20 20 20 20 72 31 30 2c 5b 72 | LDR r10,[r| 00001a80 38 2c 23 73 75 62 6f 62 6a 5f 74 79 70 65 5d 0d |8,#subobj_type].| 00001a90 0a 1e 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |... MOV | 00001aa0 20 20 20 72 31 31 2c 72 37 0d 0a 28 1d 20 20 20 | r11,r7..(. | 00001ab0 20 20 20 20 20 41 44 44 20 20 20 20 20 72 30 2c | ADD r0,| 00001ac0 73 70 2c 23 31 36 0d 0a 32 1f 20 20 20 20 20 20 |sp,#16..2. | 00001ad0 20 20 4c 44 4d 49 41 20 20 20 72 30 21 2c 7b 72 | LDMIA r0!,{r| 00001ae0 36 2d 72 38 7d 0d 0a 3c 1f 20 20 20 20 20 20 20 |6-r8}..<. | 00001af0 20 4c 44 4d 49 41 20 20 20 72 30 21 2c 7b 72 33 | LDMIA r0!,{r3| 00001b00 2d 72 35 7d 0d 0a 46 18 20 20 20 20 20 20 20 20 |-r5}..F. | 00001b10 42 4c 20 20 20 20 20 20 63 6c 69 70 0d 0a 50 22 |BL clip..P"| 00001b20 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 | LDMFD | 00001b30 28 73 70 29 21 2c 7b 72 38 2d 72 31 31 7d 0d 0a |(sp)!,{r8-r11}..| 00001b40 5a 1d 20 20 20 20 20 20 20 20 42 56 53 20 20 20 |Z. BVS | 00001b50 20 20 63 6c 69 70 5f 65 78 69 74 0d 0a 64 0e 2e | clip_exit..d..| 00001b60 63 6c 69 70 5f 6e 65 78 74 0d 0a 6e 28 20 20 20 |clip_next..n( | 00001b70 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 38 2c | LDR r8,| 00001b80 5b 72 38 2c 23 73 75 62 6f 62 6a 5f 6e 65 78 74 |[r8,#subobj_next| 00001b90 5d 0d 0a 78 1d 20 20 20 20 20 20 20 20 42 20 20 |]..x. B | 00001ba0 20 20 20 20 20 63 6c 69 70 5f 6c 6f 6f 70 0d 0a | clip_loop..| 00001bb0 82 0e 2e 63 6c 69 70 5f 65 78 69 74 0d 0a 8c 23 |...clip_exit...#| 00001bc0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00001bd0 73 70 2c 73 70 2c 23 31 32 2b 31 32 2b 39 36 0d |sp,sp,#12+12+96.| 00001be0 0a 96 1f 20 20 20 20 20 20 20 20 41 44 52 56 53 |... ADRVS| 00001bf0 20 20 20 72 30 2c 63 6c 69 70 5f 65 72 72 0d 0a | r0,clip_err..| 00001c00 a0 1b 20 20 20 20 20 20 20 20 53 54 52 56 53 20 |.. STRVS | 00001c10 20 20 72 30 2c 5b 73 70 5d 0d 0a aa 25 20 20 20 | r0,[sp]...% | 00001c20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 | LDMFD (sp| 00001c30 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 0a |)!,{r0-r11,pc}..| 00001c40 b4 0d 2e 63 6c 69 70 5f 65 72 72 0d 0a be 18 20 |...clip_err.... | 00001c50 20 20 20 20 20 20 20 44 43 44 20 20 20 20 20 26 | DCD &| 00001c60 31 38 34 0d 0a c8 23 20 20 20 20 20 20 20 20 45 |184...# E| 00001c70 51 55 53 20 20 20 20 22 4f 75 74 20 6f 66 20 6d |QUS "Out of m| 00001c80 65 6d 6f 72 79 22 0d 0a d2 15 20 20 20 20 20 20 |emory".... | 00001c90 20 20 44 43 42 20 20 20 20 20 30 0d 0a dc 11 20 | DCB 0.... | 00001ca0 20 20 20 20 20 20 20 41 4c 49 47 4e 0d 0a e6 04 | ALIGN....| 00001cb0 0d 0a f0 10 2e 63 6f 70 79 5f 73 75 62 6f 62 6a |.....copy_subobj| 00001cc0 0d 0a fa 26 20 20 20 20 20 20 20 20 53 54 4d 46 |...& STMF| 00001cd0 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 36 |D (sp)!,{r0-r6| 00001ce0 2c 6c 69 6e 6b 7d 0d 0b 04 19 20 20 20 20 20 20 |,link}.... | 00001cf0 20 20 4d 4f 56 20 20 20 20 20 72 36 2c 72 30 0d | MOV r6,r0.| 00001d00 0b 0e 1a 20 20 20 20 20 20 20 20 42 4c 20 20 20 |... BL | 00001d10 20 20 20 6d 61 6c 6c 6f 63 0d 0b 18 24 20 20 20 | malloc...$ | 00001d20 20 20 20 20 20 4c 44 4d 56 53 46 44 20 28 73 70 | LDMVSFD (sp| 00001d30 29 21 2c 7b 72 30 2d 72 36 2c 70 63 7d 0d 0b 22 |)!,{r0-r6,pc}.."| 00001d40 1b 20 20 20 20 20 20 20 20 53 54 52 20 20 20 20 |. STR | 00001d50 20 72 30 2c 5b 73 70 5d 0d 0b 2c 19 20 20 20 20 | r0,[sp]..,. | 00001d60 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 2c 23 | MOV r1,#| 00001d70 30 0d 0b 36 1e 20 20 20 20 20 20 20 20 53 54 52 |0..6. STR| 00001d80 20 20 20 20 20 72 31 2c 5b 72 30 5d 2c 23 34 0d | r1,[r0],#4.| 00001d90 0b 40 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 |.@. ADD | 00001da0 20 20 20 72 31 34 2c 72 38 2c 23 34 0d 0b 4a 1c | r14,r8,#4..J.| 00001db0 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 20 | SUB | 00001dc0 72 31 2c 72 36 2c 23 34 0d 0b 54 16 2e 63 6f 70 |r1,r6,#4..T..cop| 00001dd0 79 5f 73 75 62 6f 62 6a 5f 6c 6f 6f 70 31 0d 0b |y_subobj_loop1..| 00001de0 5e 1a 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |^. CMP | 00001df0 20 20 72 31 2c 23 31 36 0d 0b 68 20 20 20 20 20 | r1,#16..h | 00001e00 20 20 20 20 4c 44 4d 47 45 49 41 20 72 31 34 21 | LDMGEIA r14!| 00001e10 2c 7b 72 32 2d 72 35 7d 0d 0b 72 1f 20 20 20 20 |,{r2-r5}..r. | 00001e20 20 20 20 20 53 54 4d 47 45 49 41 20 72 30 21 2c | STMGEIA r0!,| 00001e30 7b 72 32 2d 72 35 7d 0d 0b 7c 1d 20 20 20 20 20 |{r2-r5}..|. | 00001e40 20 20 20 53 55 42 47 45 20 20 20 72 31 2c 72 31 | SUBGE r1,r1| 00001e50 2c 23 31 36 0d 0b 86 25 20 20 20 20 20 20 20 20 |,#16...% | 00001e60 42 47 45 20 20 20 20 20 63 6f 70 79 5f 73 75 62 |BGE copy_sub| 00001e70 6f 62 6a 5f 6c 6f 6f 70 31 0d 0b 90 16 2e 63 6f |obj_loop1.....co| 00001e80 70 79 5f 73 75 62 6f 62 6a 5f 6c 6f 6f 70 32 0d |py_subobj_loop2.| 00001e90 0b 9a 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 |... CMP | 00001ea0 20 20 20 72 31 2c 23 34 0d 0b a4 1f 20 20 20 20 | r1,#4.... | 00001eb0 20 20 20 20 4c 44 52 47 45 20 20 20 72 32 2c 5b | LDRGE r2,[| 00001ec0 72 31 34 5d 2c 23 34 0d 0b ae 1e 20 20 20 20 20 |r14],#4.... | 00001ed0 20 20 20 53 54 52 47 45 20 20 20 72 32 2c 5b 72 | STRGE r2,[r| 00001ee0 30 5d 2c 23 34 0d 0b b8 25 20 20 20 20 20 20 20 |0],#4...% | 00001ef0 20 42 47 45 20 20 20 20 20 63 6f 70 79 5f 73 75 | BGE copy_su| 00001f00 62 6f 62 6a 5f 6c 6f 6f 70 32 0d 0b c2 1c 20 20 |bobj_loop2.... | 00001f10 20 20 20 20 20 20 53 55 42 20 20 20 20 20 72 30 | SUB r0| 00001f20 2c 72 30 2c 72 36 0d 0b cc 24 20 20 20 20 20 20 |,r0,r6...$ | 00001f30 20 20 41 44 44 20 20 20 20 20 72 31 2c 72 31 31 | ADD r1,r11| 00001f40 2c 23 6f 62 6a 5f 6c 69 73 74 0d 0b d6 16 2e 61 |,#obj_list.....a| 00001f50 64 64 5f 73 75 62 6f 62 6a 5f 74 6f 5f 65 6e 64 |dd_subobj_to_end| 00001f60 0d 0b e0 1b 20 20 20 20 20 20 20 20 4c 44 52 20 |.... LDR | 00001f70 20 20 20 20 72 32 2c 5b 72 31 5d 0d 0b ea 19 20 | r2,[r1].... | 00001f80 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 00001f90 32 2c 23 30 0d 0b f4 26 20 20 20 20 20 20 20 20 |2,#0...& | 00001fa0 41 44 44 4e 45 20 20 20 72 31 2c 72 32 2c 23 73 |ADDNE r1,r2,#s| 00001fb0 75 62 6f 62 6a 5f 6e 65 78 74 0d 0b fe 25 20 20 |ubobj_next...% | 00001fc0 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 61 64 | BNE ad| 00001fd0 64 5f 73 75 62 6f 62 6a 5f 74 6f 5f 65 6e 64 0d |d_subobj_to_end.| 00001fe0 0c 08 1b 20 20 20 20 20 20 20 20 53 54 52 20 20 |... STR | 00001ff0 20 20 20 72 30 2c 5b 72 31 5d 0d 0c 12 24 20 20 | r0,[r1]...$ | 00002000 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 | LDMFD (s| 00002010 70 29 21 2c 7b 72 30 2d 72 36 2c 70 63 7d 0d 0c |p)!,{r0-r6,pc}..| 00002020 1c 04 0d 0c 26 26 2e 61 64 64 20 20 20 20 53 54 |....&&.add ST| 00002030 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d |MFD (sp)!,{r0-| 00002040 72 38 2c 6c 69 6e 6b 7d 0d 0c 30 1e 20 20 20 20 |r8,link}..0. | 00002050 20 20 20 20 4c 44 4d 49 41 20 20 20 72 30 2c 7b | LDMIA r0,{| 00002060 72 33 2d 72 35 7d 0d 0c 3a 1e 20 20 20 20 20 20 |r3-r5}..:. | 00002070 20 20 4c 44 4d 49 41 20 20 20 72 31 2c 7b 72 36 | LDMIA r1,{r6| 00002080 2d 72 38 7d 0d 0c 44 1c 20 20 20 20 20 20 20 20 |-r8}..D. | 00002090 41 44 44 20 20 20 20 20 72 33 2c 72 33 2c 72 36 |ADD r3,r3,r6| 000020a0 0d 0c 4e 1c 20 20 20 20 20 20 20 20 41 44 44 20 |..N. ADD | 000020b0 20 20 20 20 72 34 2c 72 34 2c 72 37 0d 0c 58 1c | r4,r4,r7..X.| 000020c0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 000020d0 72 35 2c 72 35 2c 72 38 0d 0c 62 1e 20 20 20 20 |r5,r5,r8..b. | 000020e0 20 20 20 20 53 54 4d 49 41 20 20 20 72 32 2c 7b | STMIA r2,{| 000020f0 72 33 2d 72 35 7d 0d 0c 6c 24 20 20 20 20 20 20 |r3-r5}..l$ | 00002100 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c | LDMFD (sp)!,| 00002110 7b 72 30 2d 72 38 2c 70 63 7d 0d 0c 76 04 0d 0c |{r0-r8,pc}..v...| 00002120 80 0e 2e 66 72 65 65 5f 74 72 65 65 0d 0c 8a 27 |...free_tree...'| 00002130 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 | STMFD | 00002140 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 2c 6c 69 |(sp)!,{r0-r11,li| 00002150 6e 6b 7d 0d 0c 94 26 20 20 20 20 20 20 20 20 4c |nk}...& L| 00002160 44 52 20 20 20 20 20 72 30 2c 5b 72 31 31 2c 23 |DR r0,[r11,#| 00002170 6f 62 6a 5f 6e 61 6d 65 5d 0d 0c 9e 19 20 20 20 |obj_name].... | 00002180 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 30 2c | CMP r0,| 00002190 23 30 0d 0c a8 18 20 20 20 20 20 20 20 20 42 4c |#0.... BL| 000021a0 4e 45 20 20 20 20 66 72 65 65 0d 0c b2 26 20 20 |NE free...& | 000021b0 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 38 | LDR r8| 000021c0 2c 5b 72 31 31 2c 23 6f 62 6a 5f 6c 69 73 74 5d |,[r11,#obj_list]| 000021d0 0d 0c bc 13 2e 66 72 65 65 5f 74 72 65 65 5f 6c |.....free_tree_l| 000021e0 6f 6f 70 0d 0c c6 19 20 20 20 20 20 20 20 20 43 |oop.... C| 000021f0 4d 50 20 20 20 20 20 72 38 2c 23 30 0d 0c d0 1e |MP r8,#0....| 00002200 20 20 20 20 20 20 20 20 42 45 51 20 20 20 20 20 | BEQ | 00002210 66 72 65 65 64 5f 6c 69 73 74 0d 0c da 29 20 20 |freed_list...) | 00002220 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 | LDR r0| 00002230 2c 5b 72 38 2c 23 73 75 62 6f 62 6a 5f 66 6c 61 |,[r8,#subobj_fla| 00002240 67 73 5d 0d 0c e4 20 20 20 20 20 20 20 20 20 54 |gs]... T| 00002250 53 54 20 20 20 20 20 72 30 2c 23 62 69 74 5f 73 |ST r0,#bit_s| 00002260 75 72 66 0d 0c ee 1e 20 20 20 20 20 20 20 20 42 |urf.... B| 00002270 4e 45 20 20 20 20 20 66 72 65 65 5f 74 72 65 65 |NE free_tree| 00002280 32 0d 0c f8 1b 20 20 20 20 20 20 20 20 4d 4f 56 |2.... MOV| 00002290 20 20 20 20 20 72 31 30 2c 72 31 31 0d 0d 02 29 | r10,r11...)| 000022a0 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 000022b0 72 31 31 2c 5b 72 38 2c 23 73 75 62 6f 62 6a 5f |r11,[r8,#subobj_| 000022c0 74 79 70 65 5d 0d 0d 0c 1d 20 20 20 20 20 20 20 |type].... | 000022d0 20 42 4c 20 20 20 20 20 20 66 72 65 65 5f 74 72 | BL free_tr| 000022e0 65 65 0d 0d 16 1b 20 20 20 20 20 20 20 20 4d 4f |ee.... MO| 000022f0 56 20 20 20 20 20 72 31 31 2c 72 31 30 0d 0d 20 |V r11,r10.. | 00002300 0f 2e 66 72 65 65 5f 74 72 65 65 32 0d 0d 2a 28 |..free_tree2..*(| 00002310 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00002320 72 37 2c 5b 72 38 2c 23 73 75 62 6f 62 6a 5f 6e |r7,[r8,#subobj_n| 00002330 65 78 74 5d 0d 0d 34 19 20 20 20 20 20 20 20 20 |ext]..4. | 00002340 4d 4f 56 20 20 20 20 20 72 30 2c 72 38 0d 0d 3e |MOV r0,r8..>| 00002350 18 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 |. BL | 00002360 20 66 72 65 65 0d 0d 48 19 20 20 20 20 20 20 20 | free..H. | 00002370 20 4d 4f 56 20 20 20 20 20 72 38 2c 72 37 0d 0d | MOV r8,r7..| 00002380 52 22 20 20 20 20 20 20 20 20 42 20 20 20 20 20 |R" B | 00002390 20 20 66 72 65 65 5f 74 72 65 65 5f 6c 6f 6f 70 | free_tree_loop| 000023a0 0d 0d 5c 0f 2e 66 72 65 65 64 5f 6c 69 73 74 0d |..\..freed_list.| 000023b0 0d 66 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |.f. MOV | 000023c0 20 20 20 72 30 2c 72 31 31 0d 0d 70 18 20 20 20 | r0,r11..p. | 000023d0 20 20 20 20 20 42 4c 20 20 20 20 20 20 66 72 65 | BL fre| 000023e0 65 0d 0d 7a 25 20 20 20 20 20 20 20 20 4c 44 4d |e..z% LDM| 000023f0 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 |FD (sp)!,{r0-r| 00002400 31 31 2c 70 63 7d 0d 0d 84 04 0d 0d 8e 0f 2e 70 |11,pc}.........p| 00002410 6c 6f 74 5f 66 61 63 65 73 0d 0d 98 27 20 20 20 |lot_faces...' | 00002420 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 70 | STMFD (sp| 00002430 29 21 2c 7b 72 30 2d 72 31 31 2c 6c 69 6e 6b 7d |)!,{r0-r11,link}| 00002440 0d 0d a2 20 20 20 20 20 20 20 20 20 a4 61 64 72 |... .adr| 00002450 6c 28 31 34 2c 70 6f 6c 79 5f 70 6f 69 6e 74 29 |l(14,poly_point)| 00002460 0d 0d ac 20 20 20 20 20 20 20 20 20 4c 44 4d 49 |... LDMI| 00002470 41 20 20 20 72 31 34 2c 7b 72 39 2d 72 31 31 7d |A r14,{r9-r11}| 00002480 0d 0d b6 1a 20 20 20 20 20 20 20 20 43 4d 50 20 |.... CMP | 00002490 20 20 20 20 72 31 31 2c 23 30 0d 0d c0 19 20 20 | r11,#0.... | 000024a0 20 20 20 20 20 20 43 4d 50 4e 45 20 20 20 72 39 | CMPNE r9| 000024b0 2c 23 30 0d 0d ca 25 20 20 20 20 20 20 20 20 4c |,#0...% L| 000024c0 44 4d 45 51 46 44 20 28 73 70 29 21 2c 7b 72 30 |DMEQFD (sp)!,{r0| 000024d0 2d 72 31 31 2c 70 63 7d 0d 0d d4 1a 20 20 20 20 |-r11,pc}.... | 000024e0 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 72 | MOV r0,r| 000024f0 31 31 0d 0d de 19 20 20 20 20 20 20 20 20 4d 4f |11.... MO| 00002500 56 20 20 20 20 20 72 31 2c 72 39 0d 0d e8 1e 20 |V r1,r9.... | 00002510 20 20 20 20 20 20 20 41 44 52 20 20 20 20 20 72 | ADR r| 00002520 32 2c 63 6f 6d 70 61 72 65 0d 0d f2 22 20 20 20 |2,compare..." | 00002530 20 20 20 20 20 53 57 49 20 20 20 20 20 22 58 4f | SWI "XO| 00002540 53 5f 48 65 61 70 53 6f 72 74 22 0d 0d fc 1b 20 |S_HeapSort".... | 00002550 20 20 20 20 20 20 20 a4 61 64 72 6c 28 31 34 2c | .adrl(14,| 00002560 66 6c 61 67 73 29 0d 0e 06 1c 20 20 20 20 20 20 |flags).... | 00002570 20 20 4c 44 52 20 20 20 20 20 72 33 2c 5b 72 31 | LDR r3,[r1| 00002580 34 5d 0d 0e 10 13 2e 70 6c 6f 74 5f 66 61 63 65 |4].....plot_face| 00002590 5f 6c 6f 6f 70 0d 0e 1a 1e 20 20 20 20 20 20 20 |_loop.... | 000025a0 20 4c 44 52 20 20 20 20 20 72 38 2c 5b 72 39 5d | LDR r8,[r9]| 000025b0 2c 23 34 0d 0e 24 1e 20 20 20 20 20 20 20 20 4c |,#4..$. L| 000025c0 44 52 20 20 20 20 20 72 37 2c 5b 72 38 2c 23 34 |DR r7,[r8,#4| 000025d0 5d 0d 0e 2e 1c 20 20 20 20 20 20 20 20 41 44 44 |].... ADD| 000025e0 20 20 20 20 20 72 38 2c 72 38 2c 23 38 0d 0e 38 | r8,r8,#8..8| 000025f0 14 2e 70 6c 6f 74 5f 66 61 63 65 5f 6c 6f 6f 70 |..plot_face_loop| 00002600 32 0d 0e 42 1f 20 20 20 20 20 20 20 20 4c 44 4d |2..B. LDM| 00002610 49 41 20 20 20 72 38 21 2c 7b 72 32 2c 72 36 7d |IA r8!,{r2,r6}| 00002620 0d 0e 4c 19 20 20 20 20 20 20 20 20 4d 4f 56 20 |..L. MOV | 00002630 20 20 20 20 72 30 2c 72 36 0d 0e 56 19 20 20 20 | r0,r6..V. | 00002640 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 2c | MOV r1,| 00002650 72 38 0d 0e 60 1b 20 20 20 20 20 20 20 20 42 4c |r8..`. BL| 00002660 20 20 20 20 20 20 73 77 69 28 30 30 29 0d 0e 6a | swi(00)..j| 00002670 23 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |# ADD | 00002680 20 72 38 2c 72 38 2c 72 36 2c 4c 53 4c 20 23 33 | r8,r8,r6,LSL #3| 00002690 0d 0e 74 1c 20 20 20 20 20 20 20 20 53 55 42 53 |..t. SUBS| 000026a0 20 20 20 20 72 37 2c 72 37 2c 23 31 0d 0e 7e 23 | r7,r7,#1..~#| 000026b0 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 | BNE | 000026c0 70 6c 6f 74 5f 66 61 63 65 5f 6c 6f 6f 70 32 0d |plot_face_loop2.| 000026d0 0e 88 1e 20 20 20 20 20 20 20 20 53 55 42 53 20 |... SUBS | 000026e0 20 20 20 72 31 31 2c 72 31 31 2c 23 31 0d 0e 92 | r11,r11,#1...| 000026f0 22 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 |" BNE | 00002700 20 70 6c 6f 74 5f 66 61 63 65 5f 6c 6f 6f 70 0d | plot_face_loop.| 00002710 0e 9c 25 20 20 20 20 20 20 20 20 4c 44 4d 46 44 |..% LDMFD| 00002720 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 | (sp)!,{r0-r11| 00002730 2c 70 63 7d 0d 0e a6 04 0d 0e b0 0c 2e 63 6f 6d |,pc}.........com| 00002740 70 61 72 65 0d 0e ba 1b 20 20 20 20 20 20 20 20 |pare.... | 00002750 4c 44 52 20 20 20 20 20 72 32 2c 5b 72 30 5d 0d |LDR r2,[r0].| 00002760 0e c4 1b 20 20 20 20 20 20 20 20 4c 44 52 20 20 |... LDR | 00002770 20 20 20 72 33 2c 5b 72 31 5d 0d 0e ce 19 20 20 | r3,[r1].... | 00002780 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 33 | CMP r3| 00002790 2c 72 32 0d 0e d8 1b 20 20 20 20 20 20 20 20 4d |,r2.... M| 000027a0 4f 56 20 20 20 20 20 70 63 2c 6c 69 6e 6b 0d 0e |OV pc,link..| 000027b0 e2 04 0d 0e ec 0e 2e 69 6e 76 69 73 69 62 6c 65 |.......invisible| 000027c0 0d 0e f6 27 20 20 20 20 20 20 20 20 53 54 4d 46 |...' STMF| 000027d0 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 |D (sp)!,{r0-r1| 000027e0 31 2c 6c 69 6e 6b 7d 0d 0f 00 1e 20 20 20 20 20 |1,link}.... | 000027f0 20 20 20 4c 44 4d 49 41 20 20 20 72 30 2c 7b 72 | LDMIA r0,{r| 00002800 37 2d 72 39 7d 0d 0f 0a 17 20 20 20 20 20 20 20 |7-r9}.... | 00002810 20 a4 61 64 72 6c 28 31 34 2c 73 29 0d 0f 14 21 | .adrl(14,s)...!| 00002820 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 | LDMIA | 00002830 72 31 34 2c 7b 72 31 30 2c 72 31 31 7d 0d 0f 1e |r14,{r10,r11}...| 00002840 23 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |# ADD | 00002850 20 70 63 2c 70 63 2c 72 31 2c 4c 53 4c 20 23 32 | pc,pc,r1,LSL #2| 00002860 0d 0f 28 15 20 20 20 20 20 20 20 20 44 43 44 20 |..(. DCD | 00002870 20 20 20 20 30 0d 0f 32 1e 20 20 20 20 20 20 20 | 0..2. | 00002880 20 42 20 20 20 20 20 20 20 63 68 65 63 6b 5f 6d | B check_m| 00002890 61 78 7a 0d 0f 3c 1e 20 20 20 20 20 20 20 20 42 |axz..<. B| 000028a0 20 20 20 20 20 20 20 63 68 65 63 6b 5f 6d 69 6e | check_min| 000028b0 7a 0d 0f 46 1e 20 20 20 20 20 20 20 20 42 20 20 |z..F. B | 000028c0 20 20 20 20 20 63 68 65 63 6b 5f 6d 69 6e 78 0d | check_minx.| 000028d0 0f 50 1e 20 20 20 20 20 20 20 20 42 20 20 20 20 |.P. B | 000028e0 20 20 20 63 68 65 63 6b 5f 6d 61 78 78 0d 0f 5a | check_maxx..Z| 000028f0 1e 20 20 20 20 20 20 20 20 42 20 20 20 20 20 20 |. B | 00002900 20 63 68 65 63 6b 5f 6d 69 6e 79 0d 0f 64 1e 20 | check_miny..d. | 00002910 20 20 20 20 20 20 20 42 20 20 20 20 20 20 20 63 | B c| 00002920 68 65 63 6b 5f 6d 61 78 79 0d 0f 6e 0f 2e 63 68 |heck_maxy..n..ch| 00002930 65 63 6b 5f 6d 61 78 7a 0d 0f 78 1e 20 20 20 20 |eck_maxz..x. | 00002940 20 20 20 20 4c 44 52 20 20 20 20 20 72 32 2c 5b | LDR r2,[| 00002950 72 30 2c 23 38 5d 0d 0f 82 1a 20 20 20 20 20 20 |r0,#8].... | 00002960 20 20 a4 61 64 72 6c 28 33 2c 6d 61 78 5f 7a 29 | .adrl(3,max_z)| 00002970 0d 0f 8c 1b 20 20 20 20 20 20 20 20 4c 44 52 20 |.... LDR | 00002980 20 20 20 20 72 33 2c 5b 72 33 5d 0d 0f 96 19 20 | r3,[r3].... | 00002990 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 000029a0 32 2c 72 33 0d 0f a0 1e 20 20 20 20 20 20 20 20 |2,r3.... | 000029b0 42 4c 54 20 20 20 20 20 69 73 5f 76 69 73 69 62 |BLT is_visib| 000029c0 6c 65 0d 0f aa 20 20 20 20 20 20 20 20 20 42 20 |le... B | 000029d0 20 20 20 20 20 20 69 73 5f 69 6e 76 69 73 69 62 | is_invisib| 000029e0 6c 65 0d 0f b4 0f 2e 63 68 65 63 6b 5f 6d 69 6e |le.....check_min| 000029f0 7a 0d 0f be 1e 20 20 20 20 20 20 20 20 4c 44 52 |z.... LDR| 00002a00 20 20 20 20 20 72 32 2c 5b 72 30 2c 23 38 5d 0d | r2,[r0,#8].| 00002a10 0f c8 1a 20 20 20 20 20 20 20 20 a4 61 64 72 6c |... .adrl| 00002a20 28 33 2c 6d 69 6e 5f 7a 29 0d 0f d2 1b 20 20 20 |(3,min_z).... | 00002a30 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 33 2c | LDR r3,| 00002a40 5b 72 33 5d 0d 0f dc 19 20 20 20 20 20 20 20 20 |[r3].... | 00002a50 43 4d 50 20 20 20 20 20 72 32 2c 72 33 0d 0f e6 |CMP r2,r3...| 00002a60 1e 20 20 20 20 20 20 20 20 42 47 54 20 20 20 20 |. BGT | 00002a70 20 69 73 5f 76 69 73 69 62 6c 65 0d 0f f0 20 20 | is_visible... | 00002a80 20 20 20 20 20 20 20 42 20 20 20 20 20 20 20 69 | B i| 00002a90 73 5f 69 6e 76 69 73 69 62 6c 65 0d 0f fa 0f 2e |s_invisible.....| 00002aa0 63 68 65 63 6b 5f 6d 69 6e 78 0d 10 04 1d 20 20 |check_minx.... | 00002ab0 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 72 30 | MUL r0| 00002ac0 2c 72 31 30 2c 72 37 0d 10 0e 1d 20 20 20 20 20 |,r10,r7.... | 00002ad0 20 20 20 41 44 44 20 20 20 20 20 72 31 2c 72 39 | ADD r1,r9| 00002ae0 2c 72 31 31 0d 10 18 1a 20 20 20 20 20 20 20 20 |,r11.... | 00002af0 42 4c 20 20 20 20 20 20 64 69 76 69 64 65 0d 10 |BL divide..| 00002b00 22 1e 20 20 20 20 20 20 20 20 a4 61 64 72 6c 28 |". .adrl(| 00002b10 31 34 2c 73 63 72 5f 6d 69 6e 78 29 0d 10 2c 1d |14,scr_minx)..,.| 00002b20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00002b30 72 31 34 2c 5b 72 31 34 5d 0d 10 36 1a 20 20 20 |r14,[r14]..6. | 00002b40 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 32 2c | CMP r2,| 00002b50 72 31 34 0d 10 40 1e 20 20 20 20 20 20 20 20 42 |r14..@. B| 00002b60 47 54 20 20 20 20 20 69 73 5f 76 69 73 69 62 6c |GT is_visibl| 00002b70 65 0d 10 4a 20 20 20 20 20 20 20 20 20 42 20 20 |e..J B | 00002b80 20 20 20 20 20 69 73 5f 69 6e 76 69 73 69 62 6c | is_invisibl| 00002b90 65 0d 10 54 0f 2e 63 68 65 63 6b 5f 6d 61 78 78 |e..T..check_maxx| 00002ba0 0d 10 5e 1d 20 20 20 20 20 20 20 20 4d 55 4c 20 |..^. MUL | 00002bb0 20 20 20 20 72 30 2c 72 31 30 2c 72 37 0d 10 68 | r0,r10,r7..h| 00002bc0 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |. ADD | 00002bd0 20 72 31 2c 72 39 2c 72 31 31 0d 10 72 1a 20 20 | r1,r9,r11..r. | 00002be0 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 64 69 | BL di| 00002bf0 76 69 64 65 0d 10 7c 1e 20 20 20 20 20 20 20 20 |vide..|. | 00002c00 a4 61 64 72 6c 28 31 34 2c 73 63 72 5f 6d 61 78 |.adrl(14,scr_max| 00002c10 78 29 0d 10 86 1d 20 20 20 20 20 20 20 20 4c 44 |x).... LD| 00002c20 52 20 20 20 20 20 72 31 34 2c 5b 72 31 34 5d 0d |R r14,[r14].| 00002c30 10 90 1a 20 20 20 20 20 20 20 20 43 4d 50 20 20 |... CMP | 00002c40 20 20 20 72 32 2c 72 31 34 0d 10 9a 1e 20 20 20 | r2,r14.... | 00002c50 20 20 20 20 20 42 4c 54 20 20 20 20 20 69 73 5f | BLT is_| 00002c60 76 69 73 69 62 6c 65 0d 10 a4 20 20 20 20 20 20 |visible... | 00002c70 20 20 20 42 20 20 20 20 20 20 20 69 73 5f 69 6e | B is_in| 00002c80 76 69 73 69 62 6c 65 0d 10 ae 0f 2e 63 68 65 63 |visible.....chec| 00002c90 6b 5f 6d 69 6e 79 0d 10 b8 1d 20 20 20 20 20 20 |k_miny.... | 00002ca0 20 20 4d 55 4c 20 20 20 20 20 72 30 2c 72 31 30 | MUL r0,r10| 00002cb0 2c 72 38 0d 10 c2 1d 20 20 20 20 20 20 20 20 41 |,r8.... A| 00002cc0 44 44 20 20 20 20 20 72 31 2c 72 39 2c 72 31 31 |DD r1,r9,r11| 00002cd0 0d 10 cc 1a 20 20 20 20 20 20 20 20 42 4c 20 20 |.... BL | 00002ce0 20 20 20 20 64 69 76 69 64 65 0d 10 d6 1e 20 20 | divide.... | 00002cf0 20 20 20 20 20 20 a4 61 64 72 6c 28 31 34 2c 73 | .adrl(14,s| 00002d00 63 72 5f 6d 69 6e 79 29 0d 10 e0 1d 20 20 20 20 |cr_miny).... | 00002d10 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 34 2c | LDR r14,| 00002d20 5b 72 31 34 5d 0d 10 ea 1a 20 20 20 20 20 20 20 |[r14].... | 00002d30 20 43 4d 50 20 20 20 20 20 72 32 2c 72 31 34 0d | CMP r2,r14.| 00002d40 10 f4 1e 20 20 20 20 20 20 20 20 42 47 54 20 20 |... BGT | 00002d50 20 20 20 69 73 5f 76 69 73 69 62 6c 65 0d 10 fe | is_visible...| 00002d60 20 20 20 20 20 20 20 20 20 42 20 20 20 20 20 20 | B | 00002d70 20 69 73 5f 69 6e 76 69 73 69 62 6c 65 0d 11 08 | is_invisible...| 00002d80 0f 2e 63 68 65 63 6b 5f 6d 61 78 79 0d 11 12 1d |..check_maxy....| 00002d90 20 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 | MUL | 00002da0 72 30 2c 72 31 30 2c 72 38 0d 11 1c 1d 20 20 20 |r0,r10,r8.... | 00002db0 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 2c | ADD r1,| 00002dc0 72 39 2c 72 31 31 0d 11 26 1a 20 20 20 20 20 20 |r9,r11..&. | 00002dd0 20 20 42 4c 20 20 20 20 20 20 64 69 76 69 64 65 | BL divide| 00002de0 0d 11 30 1e 20 20 20 20 20 20 20 20 a4 61 64 72 |..0. .adr| 00002df0 6c 28 31 34 2c 73 63 72 5f 6d 61 78 79 29 0d 11 |l(14,scr_maxy)..| 00002e00 3a 1d 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |:. LDR | 00002e10 20 20 72 31 34 2c 5b 72 31 34 5d 0d 11 44 1a 20 | r14,[r14]..D. | 00002e20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 00002e30 32 2c 72 31 34 0d 11 4e 1e 20 20 20 20 20 20 20 |2,r14..N. | 00002e40 20 42 4c 54 20 20 20 20 20 69 73 5f 76 69 73 69 | BLT is_visi| 00002e50 62 6c 65 0d 11 58 11 2e 69 73 5f 69 6e 76 69 73 |ble..X..is_invis| 00002e60 69 62 6c 65 0d 11 62 19 20 20 20 20 20 20 20 20 |ible..b. | 00002e70 43 4d 50 20 20 20 20 20 72 30 2c 72 30 0d 11 6c |CMP r0,r0..l| 00002e80 25 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 20 |% LDMFD | 00002e90 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 2c 70 | (sp)!,{r0-r11,p| 00002ea0 63 7d 0d 11 76 0f 2e 69 73 5f 76 69 73 69 62 6c |c}..v..is_visibl| 00002eb0 65 0d 11 80 19 20 20 20 20 20 20 20 20 43 4d 4e |e.... CMN| 00002ec0 20 20 20 20 20 70 63 2c 23 30 0d 11 8a 25 20 20 | pc,#0...% | 00002ed0 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 | LDMFD (s| 00002ee0 70 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d |p)!,{r0-r11,pc}.| 00002ef0 11 94 04 0d 11 9e 27 2e 73 6c 69 64 65 20 20 53 |......'.slide S| 00002f00 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 |TMFD (sp)!,{r0| 00002f10 2d 72 31 31 2c 6c 69 6e 6b 7d 0d 11 a8 1a 20 20 |-r11,link}.... | 00002f20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 | MOV r1| 00002f30 31 2c 72 33 0d 11 b2 1e 20 20 20 20 20 20 20 20 |1,r3.... | 00002f40 4c 44 4d 49 41 20 20 20 72 30 2c 7b 72 35 2d 72 |LDMIA r0,{r5-r| 00002f50 37 7d 0d 11 bc 1f 20 20 20 20 20 20 20 20 4c 44 |7}.... LD| 00002f60 4d 49 41 20 20 20 72 31 2c 7b 72 38 2d 72 31 30 |MIA r1,{r8-r10| 00002f70 7d 0d 11 c6 0f 2e 73 6c 69 64 65 5f 6c 6f 6f 70 |}.....slide_loop| 00002f80 0d 11 d0 1c 20 20 20 20 20 20 20 20 41 44 44 20 |.... ADD | 00002f90 20 20 20 20 72 32 2c 72 35 2c 72 38 0d 11 da 1c | r2,r5,r8....| 00002fa0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00002fb0 72 33 2c 72 36 2c 72 39 0d 11 e4 1d 20 20 20 20 |r3,r6,r9.... | 00002fc0 20 20 20 20 41 44 44 20 20 20 20 20 72 34 2c 72 | ADD r4,r| 00002fd0 37 2c 72 31 30 0d 11 ee 20 20 20 20 20 20 20 20 |7,r10... | 00002fe0 20 4d 4f 56 20 20 20 20 20 72 32 2c 72 32 2c 41 | MOV r2,r2,A| 00002ff0 53 52 20 23 31 0d 11 f8 20 20 20 20 20 20 20 20 |SR #1... | 00003000 20 4d 4f 56 20 20 20 20 20 72 33 2c 72 33 2c 41 | MOV r3,r3,A| 00003010 53 52 20 23 31 0d 12 02 20 20 20 20 20 20 20 20 |SR #1... | 00003020 20 4d 4f 56 20 20 20 20 20 72 34 2c 72 34 2c 41 | MOV r4,r4,A| 00003030 53 52 20 23 31 0d 12 0c 1c 20 20 20 20 20 20 20 |SR #1.... | 00003040 20 53 55 42 20 20 20 20 20 72 30 2c 72 35 2c 72 | SUB r0,r5,r| 00003050 38 0d 12 16 1a 20 20 20 20 20 20 20 20 4d 4f 56 |8.... MOV| 00003060 20 20 20 20 20 72 31 34 2c 72 30 0d 12 20 1d 20 | r14,r0.. . | 00003070 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 72 | MUL r| 00003080 31 2c 72 30 2c 72 31 34 0d 12 2a 1c 20 20 20 20 |1,r0,r14..*. | 00003090 20 20 20 20 53 55 42 20 20 20 20 20 72 30 2c 72 | SUB r0,r| 000030a0 36 2c 72 39 0d 12 34 1a 20 20 20 20 20 20 20 20 |6,r9..4. | 000030b0 4d 4f 56 20 20 20 20 20 72 31 34 2c 72 30 0d 12 |MOV r14,r0..| 000030c0 3e 20 20 20 20 20 20 20 20 20 4d 4c 41 20 20 20 |> MLA | 000030d0 20 20 72 31 2c 72 30 2c 72 31 34 2c 72 31 0d 12 | r1,r0,r14,r1..| 000030e0 48 1d 20 20 20 20 20 20 20 20 53 55 42 20 20 20 |H. SUB | 000030f0 20 20 72 30 2c 72 37 2c 72 31 30 0d 12 52 1a 20 | r0,r7,r10..R. | 00003100 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 00003110 31 34 2c 72 30 0d 12 5c 20 20 20 20 20 20 20 20 |14,r0..\ | 00003120 20 4d 4c 41 20 20 20 20 20 72 31 2c 72 30 2c 72 | MLA r1,r0,r| 00003130 31 34 2c 72 31 0d 12 66 23 20 20 20 20 20 20 20 |14,r1..f# | 00003140 20 43 4d 50 20 20 20 20 20 72 31 2c 23 73 6c 69 | CMP r1,#sli| 00003150 64 65 5f 6c 69 6d 69 74 0d 12 70 1d 20 20 20 20 |de_limit..p. | 00003160 20 20 20 20 42 4c 54 20 20 20 20 20 77 65 6c 6c | BLT well| 00003170 5f 73 6c 69 64 0d 12 7a 21 20 20 20 20 20 20 20 |_slid..z! | 00003180 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b | STMFD (sp)!,{| 00003190 72 32 2d 72 34 7d 0d 12 84 19 20 20 20 20 20 20 |r2-r4}.... | 000031a0 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 73 70 0d | MOV r0,sp.| 000031b0 12 8e 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |... MOV | 000031c0 20 20 20 72 31 2c 72 31 31 0d 12 98 1d 20 20 20 | r1,r11.... | 000031d0 20 20 20 20 20 42 4c 20 20 20 20 20 20 69 6e 76 | BL inv| 000031e0 69 73 69 62 6c 65 0d 12 a2 21 20 20 20 20 20 20 |isible...! | 000031f0 20 20 4c 44 4d 45 51 46 44 20 28 73 70 29 21 2c | LDMEQFD (sp)!,| 00003200 7b 72 35 2d 72 37 7d 0d 12 ac 22 20 20 20 20 20 |{r5-r7}..." | 00003210 20 20 20 4c 44 4d 4e 45 46 44 20 28 73 70 29 21 | LDMNEFD (sp)!| 00003220 2c 7b 72 38 2d 72 31 30 7d 0d 12 b6 1e 20 20 20 |,{r8-r10}.... | 00003230 20 20 20 20 20 42 20 20 20 20 20 20 20 73 6c 69 | B sli| 00003240 64 65 5f 6c 6f 6f 70 0d 12 c0 0e 2e 77 65 6c 6c |de_loop.....well| 00003250 5f 73 6c 69 64 0d 12 ca 20 20 20 20 20 20 20 20 |_slid... | 00003260 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 73 70 2c | LDR r0,[sp,| 00003270 23 34 2a 32 5d 0d 12 d4 1e 20 20 20 20 20 20 20 |#4*2].... | 00003280 20 53 54 4d 49 41 20 20 20 72 30 2c 7b 72 32 2d | STMIA r0,{r2-| 00003290 72 34 7d 0d 12 de 25 20 20 20 20 20 20 20 20 4c |r4}...% L| 000032a0 44 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 |DMFD (sp)!,{r0| 000032b0 2d 72 31 31 2c 70 63 7d 0d 12 e8 04 0d 12 f2 15 |-r11,pc}........| 000032c0 2e 72 65 67 69 73 74 65 72 5f 70 6f 6c 79 67 6f |.register_polygo| 000032d0 6e 0d 12 fc 27 20 20 20 20 20 20 20 20 53 54 4d |n...' STM| 000032e0 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 |FD (sp)!,{r0-r| 000032f0 31 31 2c 6c 69 6e 6b 7d 0d 13 06 1a 20 20 20 20 |11,link}.... | 00003300 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 30 2c | MOV r10,| 00003310 72 30 0d 13 10 24 20 20 20 20 20 20 20 20 4c 44 |r0...$ LD| 00003320 52 20 20 20 20 20 72 39 2c 5b 72 31 30 2c 23 73 |R r9,[r10,#s| 00003330 75 72 66 5f 6e 5d 0d 13 1a 1d 20 20 20 20 20 20 |urf_n].... | 00003340 20 20 a4 61 64 72 6c 28 35 2c 76 65 72 74 69 63 | .adrl(5,vertic| 00003350 65 73 29 0d 13 24 19 20 20 20 20 20 20 20 20 4d |es)..$. M| 00003360 4f 56 20 20 20 20 20 72 33 2c 72 39 0d 13 2e 19 |OV r3,r9....| 00003370 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00003380 72 34 2c 23 30 0d 13 38 15 2e 72 70 5f 63 6f 70 |r4,#0..8..rp_cop| 00003390 79 5f 76 65 72 74 69 63 65 73 0d 13 42 24 20 20 |y_vertices..B$ | 000033a0 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 30 | ADD r0| 000033b0 2c 72 31 30 2c 23 73 75 72 66 5f 72 65 71 0d 13 |,r10,#surf_req..| 000033c0 4c 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |L. ADD | 000033d0 20 20 72 30 2c 72 30 2c 72 34 0d 13 56 20 20 20 | r0,r0,r4..V | 000033e0 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 | LDR r1| 000033f0 2c 5b 73 70 2c 23 34 2a 32 5d 0d 13 60 1c 20 20 |,[sp,#4*2]..`. | 00003400 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 32 | ADD r2| 00003410 2c 72 35 2c 72 34 0d 13 6a 1a 20 20 20 20 20 20 |,r5,r4..j. | 00003420 20 20 42 4c 20 20 20 20 20 20 72 6f 74 61 74 65 | BL rotate| 00003430 0d 13 74 19 20 20 20 20 20 20 20 20 4d 4f 56 20 |..t. MOV | 00003440 20 20 20 20 72 30 2c 72 32 0d 13 7e 20 20 20 20 | r0,r2..~ | 00003450 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 2c | LDR r1,| 00003460 5b 73 70 2c 23 34 2a 31 5d 0d 13 88 17 20 20 20 |[sp,#4*1].... | 00003470 20 20 20 20 20 42 4c 20 20 20 20 20 20 61 64 64 | BL add| 00003480 0d 13 92 1d 20 20 20 20 20 20 20 20 41 44 44 20 |.... ADD | 00003490 20 20 20 20 72 34 2c 72 34 2c 23 31 32 0d 13 9c | r4,r4,#12...| 000034a0 1c 20 20 20 20 20 20 20 20 53 55 42 53 20 20 20 |. SUBS | 000034b0 20 72 33 2c 72 33 2c 23 31 0d 13 a6 24 20 20 20 | r3,r3,#1...$ | 000034c0 20 20 20 20 20 42 4e 45 20 20 20 20 20 72 70 5f | BNE rp_| 000034d0 63 6f 70 79 5f 76 65 72 74 69 63 65 73 0d 13 b0 |copy_vertices...| 000034e0 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 000034f0 20 72 31 2c 23 30 0d 13 ba 11 2e 72 70 5f 63 6c | r1,#0.....rp_cl| 00003500 69 70 5f 6c 6f 6f 70 0d 13 c4 20 20 20 20 20 20 |ip_loop... | 00003510 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 73 | LDR r0,[s| 00003520 70 2c 23 34 2a 34 5d 0d 13 ce 1a 20 20 20 20 20 |p,#4*4].... | 00003530 20 20 20 4d 4f 56 20 20 20 20 20 72 31 34 2c 23 | MOV r14,#| 00003540 31 0d 13 d8 21 20 20 20 20 20 20 20 20 54 53 54 |1...! TST| 00003550 20 20 20 20 20 72 30 2c 72 31 34 2c 4c 53 4c 20 | r0,r14,LSL | 00003560 72 31 0d 13 e2 26 20 20 20 20 20 20 20 20 42 4e |r1...& BN| 00003570 45 20 20 20 20 20 72 70 5f 6e 6f 5f 6e 65 65 64 |E rp_no_need| 00003580 5f 74 6f 5f 63 6c 69 70 0d 13 ec 19 20 20 20 20 |_to_clip.... | 00003590 20 20 20 20 4d 4f 56 20 20 20 20 20 72 33 2c 23 | MOV r3,#| 000035a0 30 0d 13 f6 0d 2e 72 70 5f 6c 6f 6f 70 31 0d 14 |0.....rp_loop1..| 000035b0 00 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |.. CMP | 000035c0 20 20 72 39 2c 23 32 0d 14 0a 25 20 20 20 20 20 | r9,#2...% | 000035d0 20 20 20 4c 44 4d 4c 45 46 44 20 28 73 70 29 21 | LDMLEFD (sp)!| 000035e0 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 14 14 19 |,{r0-r11,pc}....| 000035f0 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00003600 72 33 2c 72 39 0d 14 1e 21 20 20 20 20 20 20 20 |r3,r9...! | 00003610 20 42 47 45 20 20 20 20 20 64 6f 6e 65 5f 72 70 | BGE done_rp| 00003620 5f 6c 6f 6f 70 31 0d 14 28 23 20 20 20 20 20 20 |_loop1..(# | 00003630 20 20 41 44 44 20 20 20 20 20 72 30 2c 72 35 2c | ADD r0,r5,| 00003640 72 33 2c 4c 53 4c 20 23 33 0d 14 32 23 20 20 20 |r3,LSL #3..2# | 00003650 20 20 20 20 20 41 44 44 20 20 20 20 20 72 30 2c | ADD r0,| 00003660 72 30 2c 72 33 2c 4c 53 4c 20 23 32 0d 14 3c 1d |r0,r3,LSL #2..<.| 00003670 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 | BL | 00003680 69 6e 76 69 73 69 62 6c 65 0d 14 46 21 20 20 20 |invisible..F! | 00003690 20 20 20 20 20 42 4e 45 20 20 20 20 20 6e 65 78 | BNE nex| 000036a0 74 5f 72 70 5f 6c 6f 6f 70 31 0d 14 50 1d 20 20 |t_rp_loop1..P. | 000036b0 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 | ADD r1| 000036c0 34 2c 72 33 2c 23 31 0d 14 5a 1a 20 20 20 20 20 |4,r3,#1..Z. | 000036d0 20 20 20 43 4d 50 20 20 20 20 20 72 31 34 2c 72 | CMP r14,r| 000036e0 39 0d 14 64 17 20 20 20 20 20 20 20 20 ec 51 20 |9..d. .Q | 000036f0 20 20 72 31 34 2c 23 30 0d 14 6e 24 20 20 20 20 | r14,#0..n$ | 00003700 20 20 20 20 41 44 44 20 20 20 20 20 72 30 2c 72 | ADD r0,r| 00003710 35 2c 72 31 34 2c 4c 53 4c 20 23 33 0d 14 78 24 |5,r14,LSL #3..x$| 00003720 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00003730 72 30 2c 72 30 2c 72 31 34 2c 4c 53 4c 20 23 32 |r0,r0,r14,LSL #2| 00003740 0d 14 82 1d 20 20 20 20 20 20 20 20 42 4c 20 20 |.... BL | 00003750 20 20 20 20 69 6e 76 69 73 69 62 6c 65 0d 14 8c | invisible...| 00003760 21 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 |! BNE | 00003770 20 6e 65 78 74 5f 72 70 5f 6c 6f 6f 70 31 0d 14 | next_rp_loop1..| 00003780 96 1d 20 20 20 20 20 20 20 20 53 55 42 53 20 20 |.. SUBS | 00003790 20 20 72 31 34 2c 72 33 2c 23 31 0d 14 a0 1e 20 | r14,r3,#1.... | 000037a0 20 20 20 20 20 20 20 41 44 44 4d 49 20 20 20 72 | ADDMI r| 000037b0 31 34 2c 72 31 34 2c 72 39 0d 14 aa 24 20 20 20 |14,r14,r9...$ | 000037c0 20 20 20 20 20 41 44 44 20 20 20 20 20 72 30 2c | ADD r0,| 000037d0 72 35 2c 72 31 34 2c 4c 53 4c 20 23 33 0d 14 b4 |r5,r14,LSL #3...| 000037e0 24 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |$ ADD | 000037f0 20 72 30 2c 72 30 2c 72 31 34 2c 4c 53 4c 20 23 | r0,r0,r14,LSL #| 00003800 32 0d 14 be 1d 20 20 20 20 20 20 20 20 42 4c 20 |2.... BL | 00003810 20 20 20 20 20 69 6e 76 69 73 69 62 6c 65 0d 14 | invisible..| 00003820 c8 21 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 |.! BNE | 00003830 20 20 6e 65 78 74 5f 72 70 5f 6c 6f 6f 70 31 0d | next_rp_loop1.| 00003840 14 d2 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 |... ADD | 00003850 20 20 20 72 31 34 2c 72 33 2c 23 31 0d 14 dc 1a | r14,r3,#1....| 00003860 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00003870 72 31 34 2c 72 39 0d 14 e6 25 20 20 20 20 20 20 |r14,r9...% | 00003880 20 20 42 47 45 20 20 20 20 20 72 70 5f 69 73 5f | BGE rp_is_| 00003890 6c 61 73 74 5f 61 6e 79 77 61 79 0d 14 f0 2c 20 |last_anyway..., | 000038a0 20 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 | STMFD (| 000038b0 73 70 29 21 2c 7b 72 31 2c 72 37 2c 72 38 2c 72 |sp)!,{r1,r7,r8,r| 000038c0 31 30 2d 72 31 31 7d 0d 14 fa 1a 20 20 20 20 20 |10-r11}.... | 000038d0 20 20 20 4d 4f 56 20 20 20 20 20 72 31 30 2c 72 | MOV r10,r| 000038e0 33 0d 15 04 1d 20 20 20 20 20 20 20 20 53 55 42 |3.... SUB| 000038f0 20 20 20 20 20 72 31 31 2c 72 39 2c 23 32 0d 15 | r11,r9,#2..| 00003900 0e 23 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.# ADD | 00003910 20 20 72 37 2c 72 35 2c 72 33 2c 4c 53 4c 20 23 | r7,r5,r3,LSL #| 00003920 33 0d 15 18 23 20 20 20 20 20 20 20 20 41 44 44 |3...# ADD| 00003930 20 20 20 20 20 72 37 2c 72 37 2c 72 33 2c 4c 53 | r7,r7,r3,LS| 00003940 4c 20 23 32 0d 15 22 1d 20 20 20 20 20 20 20 20 |L #2..". | 00003950 41 44 44 20 20 20 20 20 72 38 2c 72 37 2c 23 31 |ADD r8,r7,#1| 00003960 32 0d 15 2c 10 2e 72 70 5f 64 65 6c 5f 6c 6f 6f |2..,..rp_del_loo| 00003970 70 0d 15 36 1f 20 20 20 20 20 20 20 20 4c 44 4d |p..6. LDM| 00003980 49 41 20 20 20 72 38 21 2c 7b 72 30 2d 72 32 7d |IA r8!,{r0-r2}| 00003990 0d 15 40 1f 20 20 20 20 20 20 20 20 53 54 4d 49 |..@. STMI| 000039a0 41 20 20 20 72 37 21 2c 7b 72 30 2d 72 32 7d 0d |A r7!,{r0-r2}.| 000039b0 15 4a 1e 20 20 20 20 20 20 20 20 41 44 44 20 20 |.J. ADD | 000039c0 20 20 20 72 31 30 2c 72 31 30 2c 23 31 0d 15 54 | r10,r10,#1..T| 000039d0 1b 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 |. CMP | 000039e0 20 72 31 30 2c 72 31 31 0d 15 5e 1f 20 20 20 20 | r10,r11..^. | 000039f0 20 20 20 20 42 4c 45 20 20 20 20 20 72 70 5f 64 | BLE rp_d| 00003a00 65 6c 5f 6c 6f 6f 70 0d 15 68 2c 20 20 20 20 20 |el_loop..h, | 00003a10 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 | LDMFD (sp)!| 00003a20 2c 7b 72 31 2c 72 37 2c 72 38 2c 72 31 30 2d 72 |,{r1,r7,r8,r10-r| 00003a30 31 31 7d 0d 15 72 16 2e 72 70 5f 69 73 5f 6c 61 |11}..r..rp_is_la| 00003a40 73 74 5f 61 6e 79 77 61 79 0d 15 7c 1c 20 20 20 |st_anyway..|. | 00003a50 20 20 20 20 20 53 55 42 20 20 20 20 20 72 39 2c | SUB r9,| 00003a60 72 39 2c 23 31 0d 15 86 1c 20 20 20 20 20 20 20 |r9,#1.... | 00003a70 20 42 20 20 20 20 20 20 20 72 70 5f 6c 6f 6f 70 | B rp_loop| 00003a80 31 0d 15 90 12 2e 6e 65 78 74 5f 72 70 5f 6c 6f |1.....next_rp_lo| 00003a90 6f 70 31 0d 15 9a 1c 20 20 20 20 20 20 20 20 41 |op1.... A| 00003aa0 44 44 20 20 20 20 20 72 33 2c 72 33 2c 23 31 0d |DD r3,r3,#1.| 00003ab0 15 a4 1c 20 20 20 20 20 20 20 20 42 20 20 20 20 |... B | 00003ac0 20 20 20 72 70 5f 6c 6f 6f 70 31 0d 15 ae 12 2e | rp_loop1.....| 00003ad0 64 6f 6e 65 5f 72 70 5f 6c 6f 6f 70 31 0d 15 b8 |done_rp_loop1...| 00003ae0 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 00003af0 20 72 33 2c 23 30 0d 15 c2 0d 2e 72 70 5f 6c 6f | r3,#0.....rp_lo| 00003b00 6f 70 32 0d 15 cc 19 20 20 20 20 20 20 20 20 43 |op2.... C| 00003b10 4d 50 20 20 20 20 20 72 33 2c 72 39 0d 15 d6 21 |MP r3,r9...!| 00003b20 20 20 20 20 20 20 20 20 42 47 45 20 20 20 20 20 | BGE | 00003b30 64 6f 6e 65 5f 72 70 5f 6c 6f 6f 70 32 0d 15 e0 |done_rp_loop2...| 00003b40 23 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |# ADD | 00003b50 20 72 30 2c 72 35 2c 72 33 2c 4c 53 4c 20 23 33 | r0,r5,r3,LSL #3| 00003b60 0d 15 ea 23 20 20 20 20 20 20 20 20 41 44 44 20 |...# ADD | 00003b70 20 20 20 20 72 30 2c 72 30 2c 72 33 2c 4c 53 4c | r0,r0,r3,LSL| 00003b80 20 23 32 0d 15 f4 1d 20 20 20 20 20 20 20 20 42 | #2.... B| 00003b90 4c 20 20 20 20 20 20 69 6e 76 69 73 69 62 6c 65 |L invisible| 00003ba0 0d 15 fe 21 20 20 20 20 20 20 20 20 42 4e 45 20 |...! BNE | 00003bb0 20 20 20 20 6e 65 78 74 5f 72 70 5f 6c 6f 6f 70 | next_rp_loop| 00003bc0 32 0d 16 08 1d 20 20 20 20 20 20 20 20 53 55 42 |2.... SUB| 00003bd0 53 20 20 20 20 72 31 34 2c 72 33 2c 23 31 0d 16 |S r14,r3,#1..| 00003be0 12 1e 20 20 20 20 20 20 20 20 41 44 44 4d 49 20 |.. ADDMI | 00003bf0 20 20 72 31 34 2c 72 31 34 2c 72 39 0d 16 1c 24 | r14,r14,r9...$| 00003c00 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00003c10 72 30 2c 72 35 2c 72 31 34 2c 4c 53 4c 20 23 33 |r0,r5,r14,LSL #3| 00003c20 0d 16 26 24 20 20 20 20 20 20 20 20 41 44 44 20 |..&$ ADD | 00003c30 20 20 20 20 72 30 2c 72 30 2c 72 31 34 2c 4c 53 | r0,r0,r14,LS| 00003c40 4c 20 23 32 0d 16 30 1d 20 20 20 20 20 20 20 20 |L #2..0. | 00003c50 42 4c 20 20 20 20 20 20 69 6e 76 69 73 69 62 6c |BL invisibl| 00003c60 65 0d 16 3a 21 20 20 20 20 20 20 20 20 42 45 51 |e..:! BEQ| 00003c70 20 20 20 20 20 6e 65 78 74 5f 72 70 5f 6c 6f 6f | next_rp_loo| 00003c80 70 32 0d 16 44 1d 20 20 20 20 20 20 20 20 41 44 |p2..D. AD| 00003c90 44 20 20 20 20 20 72 31 34 2c 72 33 2c 23 31 0d |D r14,r3,#1.| 00003ca0 16 4e 1a 20 20 20 20 20 20 20 20 43 4d 50 20 20 |.N. CMP | 00003cb0 20 20 20 72 31 34 2c 72 39 0d 16 58 17 20 20 20 | r14,r9..X. | 00003cc0 20 20 20 20 20 ec 51 20 20 20 72 31 34 2c 23 30 | .Q r14,#0| 00003cd0 0d 16 62 24 20 20 20 20 20 20 20 20 41 44 44 20 |..b$ ADD | 00003ce0 20 20 20 20 72 30 2c 72 35 2c 72 31 34 2c 4c 53 | r0,r5,r14,LS| 00003cf0 4c 20 23 33 0d 16 6c 24 20 20 20 20 20 20 20 20 |L #3..l$ | 00003d00 41 44 44 20 20 20 20 20 72 30 2c 72 30 2c 72 31 |ADD r0,r0,r1| 00003d10 34 2c 4c 53 4c 20 23 32 0d 16 76 1d 20 20 20 20 |4,LSL #2..v. | 00003d20 20 20 20 20 42 4c 20 20 20 20 20 20 69 6e 76 69 | BL invi| 00003d30 73 69 62 6c 65 0d 16 80 22 20 20 20 20 20 20 20 |sible..." | 00003d40 20 42 45 51 20 20 20 20 20 6e 6f 5f 6e 65 65 64 | BEQ no_need| 00003d50 5f 74 6f 5f 69 6e 73 0d 16 8a 28 20 20 20 20 20 |_to_ins...( | 00003d60 20 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 | STMFD (sp)!| 00003d70 2c 7b 72 31 2c 72 37 2c 72 38 2c 72 31 30 7d 0d |,{r1,r7,r8,r10}.| 00003d80 16 94 1d 20 20 20 20 20 20 20 20 53 55 42 20 20 |... SUB | 00003d90 20 20 20 72 31 30 2c 72 39 2c 23 31 0d 16 9e 24 | r10,r9,#1...$| 00003da0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00003db0 72 37 2c 72 35 2c 72 31 30 2c 4c 53 4c 20 23 33 |r7,r5,r10,LSL #3| 00003dc0 0d 16 a8 24 20 20 20 20 20 20 20 20 41 44 44 20 |...$ ADD | 00003dd0 20 20 20 20 72 37 2c 72 37 2c 72 31 30 2c 4c 53 | r7,r7,r10,LS| 00003de0 4c 20 23 32 0d 16 b2 1d 20 20 20 20 20 20 20 20 |L #2.... | 00003df0 41 44 44 20 20 20 20 20 72 38 2c 72 37 2c 23 31 |ADD r8,r7,#1| 00003e00 32 0d 16 bc 10 2e 72 70 5f 69 6e 73 5f 6c 6f 6f |2.....rp_ins_loo| 00003e10 70 0d 16 c6 1e 20 20 20 20 20 20 20 20 4c 44 4d |p.... LDM| 00003e20 49 41 20 20 20 72 37 2c 7b 72 30 2d 72 32 7d 0d |IA r7,{r0-r2}.| 00003e30 16 d0 1e 20 20 20 20 20 20 20 20 53 54 4d 49 41 |... STMIA| 00003e40 20 20 20 72 38 2c 7b 72 30 2d 72 32 7d 0d 16 da | r8,{r0-r2}...| 00003e50 1d 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 |. SUB | 00003e60 20 72 37 2c 72 37 2c 23 31 32 0d 16 e4 1d 20 20 | r7,r7,#12.... | 00003e70 20 20 20 20 20 20 53 55 42 20 20 20 20 20 72 38 | SUB r8| 00003e80 2c 72 38 2c 23 31 32 0d 16 ee 1e 20 20 20 20 20 |,r8,#12.... | 00003e90 20 20 20 53 55 42 20 20 20 20 20 72 31 30 2c 72 | SUB r10,r| 00003ea0 31 30 2c 23 31 0d 16 f8 1a 20 20 20 20 20 20 20 |10,#1.... | 00003eb0 20 43 4d 50 20 20 20 20 20 72 31 30 2c 72 33 0d | CMP r10,r3.| 00003ec0 17 02 1f 20 20 20 20 20 20 20 20 42 47 45 20 20 |... BGE | 00003ed0 20 20 20 72 70 5f 69 6e 73 5f 6c 6f 6f 70 0d 17 | rp_ins_loop..| 00003ee0 0c 28 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 |.( LDMFD | 00003ef0 20 20 28 73 70 29 21 2c 7b 72 31 2c 72 37 2c 72 | (sp)!,{r1,r7,r| 00003f00 38 2c 72 31 30 7d 0d 17 16 1c 20 20 20 20 20 20 |8,r10}.... | 00003f10 20 20 41 44 44 20 20 20 20 20 72 39 2c 72 39 2c | ADD r9,r9,| 00003f20 23 31 0d 17 20 13 2e 6e 6f 5f 6e 65 65 64 5f 74 |#1.. ..no_need_t| 00003f30 6f 5f 69 6e 73 0d 17 2a 21 20 20 20 20 20 20 20 |o_ins..*! | 00003f40 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b | STMFD (sp)!,{| 00003f50 72 30 2d 72 33 7d 0d 17 34 23 20 20 20 20 20 20 |r0-r3}..4# | 00003f60 20 20 41 44 44 20 20 20 20 20 72 30 2c 72 35 2c | ADD r0,r5,| 00003f70 72 33 2c 4c 53 4c 20 23 33 0d 17 3e 23 20 20 20 |r3,LSL #3..># | 00003f80 20 20 20 20 20 41 44 44 20 20 20 20 20 72 30 2c | ADD r0,| 00003f90 72 30 2c 72 33 2c 4c 53 4c 20 23 32 0d 17 48 1d |r0,r3,LSL #2..H.| 00003fa0 20 20 20 20 20 20 20 20 53 55 42 53 20 20 20 20 | SUBS | 00003fb0 72 31 34 2c 72 33 2c 23 31 0d 17 52 1e 20 20 20 |r14,r3,#1..R. | 00003fc0 20 20 20 20 20 41 44 44 4d 49 20 20 20 72 31 34 | ADDMI r14| 00003fd0 2c 72 31 34 2c 72 39 0d 17 5c 24 20 20 20 20 20 |,r14,r9..\$ | 00003fe0 20 20 20 41 44 44 20 20 20 20 20 72 31 2c 72 35 | ADD r1,r5| 00003ff0 2c 72 31 34 2c 4c 53 4c 20 23 33 0d 17 66 24 20 |,r14,LSL #3..f$ | 00004000 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00004010 31 2c 72 31 2c 72 31 34 2c 4c 53 4c 20 23 32 0d |1,r1,r14,LSL #2.| 00004020 17 70 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |.p. MOV | 00004030 20 20 20 72 32 2c 72 30 0d 17 7a 1e 20 20 20 20 | r2,r0..z. | 00004040 20 20 20 20 4c 44 52 20 20 20 20 20 72 33 2c 5b | LDR r3,[| 00004050 73 70 2c 23 34 5d 0d 17 84 19 20 20 20 20 20 20 |sp,#4].... | 00004060 20 20 42 4c 20 20 20 20 20 20 73 6c 69 64 65 0d | BL slide.| 00004070 17 8e 1f 20 20 20 20 20 20 20 20 4c 44 52 20 20 |... LDR | 00004080 20 20 20 72 33 2c 5b 73 70 2c 23 31 32 5d 0d 17 | r3,[sp,#12]..| 00004090 98 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.. ADD | 000040a0 20 20 72 33 2c 72 33 2c 23 31 0d 17 a2 19 20 20 | r3,r3,#1.... | 000040b0 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 33 | CMP r3| 000040c0 2c 72 39 0d 17 ac 16 20 20 20 20 20 20 20 20 ec |,r9.... .| 000040d0 51 20 20 20 72 33 2c 23 30 0d 17 b6 23 20 20 20 |Q r3,#0...# | 000040e0 20 20 20 20 20 41 44 44 20 20 20 20 20 72 30 2c | ADD r0,| 000040f0 72 35 2c 72 33 2c 4c 53 4c 20 23 33 0d 17 c0 23 |r5,r3,LSL #3...#| 00004100 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00004110 72 30 2c 72 30 2c 72 33 2c 4c 53 4c 20 23 32 0d |r0,r0,r3,LSL #2.| 00004120 17 ca 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 |... ADD | 00004130 20 20 20 72 31 34 2c 72 33 2c 23 31 0d 17 d4 1a | r14,r3,#1....| 00004140 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00004150 72 31 34 2c 72 39 0d 17 de 17 20 20 20 20 20 20 |r14,r9.... | 00004160 20 20 ec 51 20 20 20 72 31 34 2c 23 30 0d 17 e8 | .Q r14,#0...| 00004170 24 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |$ ADD | 00004180 20 72 31 2c 72 35 2c 72 31 34 2c 4c 53 4c 20 23 | r1,r5,r14,LSL #| 00004190 33 0d 17 f2 24 20 20 20 20 20 20 20 20 41 44 44 |3...$ ADD| 000041a0 20 20 20 20 20 72 31 2c 72 31 2c 72 31 34 2c 4c | r1,r1,r14,L| 000041b0 53 4c 20 23 32 0d 17 fc 19 20 20 20 20 20 20 20 |SL #2.... | 000041c0 20 4d 4f 56 20 20 20 20 20 72 32 2c 72 30 0d 18 | MOV r2,r0..| 000041d0 06 1e 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.. LDR | 000041e0 20 20 72 33 2c 5b 73 70 2c 23 34 5d 0d 18 10 19 | r3,[sp,#4]....| 000041f0 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 | BL | 00004200 73 6c 69 64 65 0d 18 1a 21 20 20 20 20 20 20 20 |slide...! | 00004210 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c 7b | LDMFD (sp)!,{| 00004220 72 30 2d 72 33 7d 0d 18 24 1c 20 20 20 20 20 20 |r0-r3}..$. | 00004230 20 20 41 44 44 20 20 20 20 20 72 33 2c 72 33 2c | ADD r3,r3,| 00004240 23 32 0d 18 2e 12 2e 6e 65 78 74 5f 72 70 5f 6c |#2.....next_rp_l| 00004250 6f 6f 70 32 0d 18 38 1c 20 20 20 20 20 20 20 20 |oop2..8. | 00004260 41 44 44 20 20 20 20 20 72 33 2c 72 33 2c 23 31 |ADD r3,r3,#1| 00004270 0d 18 42 1c 20 20 20 20 20 20 20 20 42 20 20 20 |..B. B | 00004280 20 20 20 20 72 70 5f 6c 6f 6f 70 32 0d 18 4c 12 | rp_loop2..L.| 00004290 2e 64 6f 6e 65 5f 72 70 5f 6c 6f 6f 70 32 0d 18 |.done_rp_loop2..| 000042a0 56 17 2e 72 70 5f 6e 6f 5f 6e 65 65 64 5f 74 6f |V..rp_no_need_to| 000042b0 5f 63 6c 69 70 0d 18 60 1c 20 20 20 20 20 20 20 |_clip..`. | 000042c0 20 41 44 44 20 20 20 20 20 72 31 2c 72 31 2c 23 | ADD r1,r1,#| 000042d0 31 0d 18 6a 19 20 20 20 20 20 20 20 20 43 4d 50 |1..j. CMP| 000042e0 20 20 20 20 20 72 31 2c 23 36 0d 18 74 20 20 20 | r1,#6..t | 000042f0 20 20 20 20 20 20 42 4c 54 20 20 20 20 20 72 70 | BLT rp| 00004300 5f 63 6c 69 70 5f 6c 6f 6f 70 0d 18 7e 20 20 20 |_clip_loop..~ | 00004310 20 20 20 20 20 20 a4 61 64 72 6c 28 31 31 2c 70 | .adrl(11,p| 00004320 6f 6c 79 5f 70 6f 69 6e 74 29 0d 18 88 1f 20 20 |oly_point).... | 00004330 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 31 | LDMIA r1| 00004340 31 2c 7b 72 36 2d 72 38 7d 0d 18 92 20 20 20 20 |1,{r6-r8}... | 00004350 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c | LDR r0,| 00004360 5b 73 70 2c 23 34 2a 33 5d 0d 18 9c 19 20 20 20 |[sp,#4*3].... | 00004370 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 30 2c | CMP r0,| 00004380 23 30 0d 18 a6 27 20 20 20 20 20 20 20 20 4c 44 |#0...' LD| 00004390 52 45 51 20 20 20 72 30 2c 5b 72 31 30 2c 23 73 |REQ r0,[r10,#s| 000043a0 75 72 66 5f 74 79 70 65 5d 0d 18 b0 19 20 20 20 |urf_type].... | 000043b0 20 20 20 20 20 43 4d 50 45 51 20 20 20 72 30 2c | CMPEQ r0,| 000043c0 23 30 0d 18 ba 20 20 20 20 20 20 20 20 20 42 4e |#0... BN| 000043d0 45 20 20 20 20 20 6e 6f 74 5f 6e 65 77 5f 70 6f |E not_new_po| 000043e0 6c 79 0d 18 c4 19 20 20 20 20 20 20 20 20 4d 4f |ly.... MO| 000043f0 56 20 20 20 20 20 72 30 2c 23 38 0d 18 ce 1a 20 |V r0,#8.... | 00004400 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 6d | BL m| 00004410 61 6c 6c 6f 63 0d 18 d8 1b 20 20 20 20 20 20 20 |alloc.... | 00004420 20 53 54 52 56 53 20 20 20 72 30 2c 5b 73 70 5d | STRVS r0,[sp]| 00004430 0d 18 e2 25 20 20 20 20 20 20 20 20 4c 44 4d 56 |...% LDMV| 00004440 53 46 44 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 |SFD (sp)!,{r0-r1| 00004450 31 2c 70 63 7d 0d 18 ec 19 20 20 20 20 20 20 20 |1,pc}.... | 00004460 20 4d 4f 56 20 20 20 20 20 72 34 2c 72 30 0d 18 | MOV r4,r0..| 00004470 f6 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |.. MOV | 00004480 20 20 72 30 2c 23 30 0d 19 00 1b 20 20 20 20 20 | r0,#0.... | 00004490 20 20 20 a4 73 74 72 28 30 2c 74 6f 74 61 6c 5f | .str(0,total_| 000044a0 7a 29 0d 19 0a 1d 20 20 20 20 20 20 20 20 a4 73 |z).... .s| 000044b0 74 72 28 30 2c 74 6f 74 61 6c 5f 7a 6e 6f 29 0d |tr(0,total_zno).| 000044c0 19 14 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |... MOV | 000044d0 20 20 20 72 30 2c 23 30 0d 19 1e 1e 20 20 20 20 | r0,#0.... | 000044e0 20 20 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b | STR r0,[| 000044f0 72 34 2c 23 34 5d 0d 19 28 20 20 20 20 20 20 20 |r4,#4]..( | 00004500 20 20 43 4d 50 20 20 20 20 20 72 37 2c 72 38 2c | CMP r7,r8,| 00004510 4c 53 4c 20 23 32 0d 19 32 28 20 20 20 20 20 20 |LSL #2..2( | 00004520 20 20 42 4e 45 20 20 20 20 20 64 6f 6e 74 5f 65 | BNE dont_e| 00004530 78 74 65 6e 64 5f 72 70 5f 74 61 62 6c 65 0d 19 |xtend_rp_table..| 00004540 3c 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |<. MOV | 00004550 20 20 72 30 2c 72 36 0d 19 46 22 20 20 20 20 20 | r0,r6..F" | 00004560 20 20 20 4d 4f 56 20 20 20 20 20 72 31 2c 23 70 | MOV r1,#p| 00004570 6f 6c 79 5f 63 68 75 6e 6b 0d 19 50 1b 20 20 20 |oly_chunk..P. | 00004580 20 20 20 20 20 42 4c 20 20 20 20 20 20 72 65 61 | BL rea| 00004590 6c 6c 6f 63 0d 19 5a 1b 20 20 20 20 20 20 20 20 |lloc..Z. | 000045a0 53 54 52 56 53 20 20 20 72 30 2c 5b 73 70 5d 0d |STRVS r0,[sp].| 000045b0 19 64 25 20 20 20 20 20 20 20 20 4c 44 4d 56 53 |.d% LDMVS| 000045c0 46 44 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 |FD (sp)!,{r0-r11| 000045d0 2c 70 63 7d 0d 19 6e 19 20 20 20 20 20 20 20 20 |,pc}..n. | 000045e0 4d 4f 56 20 20 20 20 20 72 36 2c 72 30 0d 19 78 |MOV r6,r0..x| 000045f0 25 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |% ADD | 00004600 20 72 37 2c 72 37 2c 23 70 6f 6c 79 5f 63 68 75 | r7,r7,#poly_chu| 00004610 6e 6b 0d 19 82 1f 20 20 20 20 20 20 20 20 53 54 |nk.... ST| 00004620 4d 49 41 20 20 20 72 31 31 2c 7b 72 36 2d 72 38 |MIA r11,{r6-r8| 00004630 7d 0d 19 8c 19 2e 64 6f 6e 74 5f 65 78 74 65 6e |}.....dont_exten| 00004640 64 5f 72 70 5f 74 61 62 6c 65 0d 19 96 25 20 20 |d_rp_table...% | 00004650 20 20 20 20 20 20 53 54 52 20 20 20 20 20 72 34 | STR r4| 00004660 2c 5b 72 36 2c 72 38 2c 4c 53 4c 20 23 32 5d 0d |,[r6,r8,LSL #2].| 00004670 19 a0 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 |... ADD | 00004680 20 20 20 72 38 2c 72 38 2c 23 31 0d 19 aa 1f 20 | r8,r8,#1.... | 00004690 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 72 | STR r| 000046a0 38 2c 5b 72 31 31 2c 23 38 5d 0d 19 b4 19 20 20 |8,[r11,#8].... | 000046b0 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 | MOV r0| 000046c0 2c 23 38 0d 19 be 1a 20 20 20 20 20 20 20 20 a4 |,#8.... .| 000046d0 73 74 72 28 30 2c 72 70 5f 70 74 72 29 0d 19 c8 |str(0,rp_ptr)...| 000046e0 11 2e 6e 6f 74 5f 6e 65 77 5f 70 6f 6c 79 0d 19 |..not_new_poly..| 000046f0 d2 1c 20 20 20 20 20 20 20 20 53 55 42 20 20 20 |.. SUB | 00004700 20 20 72 32 2c 72 38 2c 23 31 0d 19 dc 25 20 20 | r2,r8,#1...% | 00004710 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 | LDR r0| 00004720 2c 5b 72 36 2c 72 32 2c 4c 53 4c 20 23 32 5d 0d |,[r6,r2,LSL #2].| 00004730 19 e6 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |.. MOV | 00004740 20 20 20 72 31 2c 72 39 2c 4c 53 4c 20 23 33 0d | r1,r9,LSL #3.| 00004750 19 f0 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 |... ADD | 00004760 20 20 20 72 31 2c 72 31 2c 23 38 0d 19 fa 1b 20 | r1,r1,#8.... | 00004770 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 72 | BL r| 00004780 65 61 6c 6c 6f 63 0d 1a 04 1b 20 20 20 20 20 20 |ealloc.... | 00004790 20 20 53 54 52 56 53 20 20 20 72 30 2c 5b 73 70 | STRVS r0,[sp| 000047a0 5d 0d 1a 0e 25 20 20 20 20 20 20 20 20 4c 44 4d |]...% LDM| 000047b0 56 53 46 44 20 28 73 70 29 21 2c 7b 72 30 2d 72 |VSFD (sp)!,{r0-r| 000047c0 31 31 2c 70 63 7d 0d 1a 18 25 20 20 20 20 20 20 |11,pc}...% | 000047d0 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b 72 36 | STR r0,[r6| 000047e0 2c 72 32 2c 4c 53 4c 20 23 32 5d 0d 1a 22 19 20 |,r2,LSL #2]..". | 000047f0 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 00004800 34 2c 72 30 0d 1a 2c 1a 20 20 20 20 20 20 20 20 |4,r0..,. | 00004810 a4 6c 64 72 28 33 2c 72 70 5f 70 74 72 29 0d 1a |.ldr(3,rp_ptr)..| 00004820 36 29 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |6) LDR | 00004830 20 20 72 30 2c 5b 72 31 30 2c 23 73 75 72 66 5f | r0,[r10,#surf_| 00004840 63 6f 6c 6f 75 72 5d 0d 1a 40 1e 20 20 20 20 20 |colour]..@. | 00004850 20 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b 72 | STR r0,[r| 00004860 34 2c 72 33 5d 0d 1a 4a 1c 20 20 20 20 20 20 20 |4,r3]..J. | 00004870 20 41 44 44 20 20 20 20 20 72 33 2c 72 33 2c 23 | ADD r3,r3,#| 00004880 34 0d 1a 54 1e 20 20 20 20 20 20 20 20 53 54 52 |4..T. STR| 00004890 20 20 20 20 20 72 39 2c 5b 72 34 2c 72 33 5d 0d | r9,[r4,r3].| 000048a0 1a 5e 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 |.^. ADD | 000048b0 20 20 20 72 33 2c 72 33 2c 23 34 0d 1a 68 17 20 | r3,r3,#4..h. | 000048c0 20 20 20 20 20 20 20 a4 61 64 72 6c 28 31 34 2c | .adrl(14,| 000048d0 73 29 0d 1a 72 21 20 20 20 20 20 20 20 20 4c 44 |s)..r! LD| 000048e0 4d 49 41 20 20 20 72 31 34 2c 7b 72 31 30 2c 72 |MIA r14,{r10,r| 000048f0 31 31 7d 0d 1a 7c 0f 2e 70 65 72 73 70 5f 6c 6f |11}..|..persp_lo| 00004900 6f 70 0d 1a 86 1f 20 20 20 20 20 20 20 20 4c 44 |op.... LD| 00004910 4d 49 41 20 20 20 72 35 21 2c 7b 72 36 2d 72 38 |MIA r5!,{r6-r8| 00004920 7d 0d 1a 90 1b 20 20 20 20 20 20 20 20 a4 6c 64 |}.... .ld| 00004930 72 28 30 2c 74 6f 74 61 6c 5f 7a 29 0d 1a 9a 1c |r(0,total_z)....| 00004940 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00004950 72 30 2c 72 30 2c 72 38 0d 1a a4 1b 20 20 20 20 |r0,r0,r8.... | 00004960 20 20 20 20 a4 73 74 72 28 30 2c 74 6f 74 61 6c | .str(0,total| 00004970 5f 7a 29 0d 1a ae 1d 20 20 20 20 20 20 20 20 a4 |_z).... .| 00004980 6c 64 72 28 31 2c 74 6f 74 61 6c 5f 7a 6e 6f 29 |ldr(1,total_zno)| 00004990 0d 1a b8 1c 20 20 20 20 20 20 20 20 41 44 44 20 |.... ADD | 000049a0 20 20 20 20 72 31 2c 72 31 2c 23 31 0d 1a c2 1d | r1,r1,#1....| 000049b0 20 20 20 20 20 20 20 20 a4 73 74 72 28 31 2c 74 | .str(1,t| 000049c0 6f 74 61 6c 5f 7a 6e 6f 29 0d 1a cc 1a 20 20 20 |otal_zno).... | 000049d0 20 20 20 20 20 42 4c 20 20 20 20 20 20 64 69 76 | BL div| 000049e0 69 64 65 0d 1a d6 1b 20 20 20 20 20 20 20 20 53 |ide.... S| 000049f0 54 52 20 20 20 20 20 72 32 2c 5b 72 34 5d 0d 1a |TR r2,[r4]..| 00004a00 e0 1d 20 20 20 20 20 20 20 20 4d 55 4c 20 20 20 |.. MUL | 00004a10 20 20 72 30 2c 72 36 2c 72 31 30 0d 1a ea 1d 20 | r0,r6,r10.... | 00004a20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00004a30 31 2c 72 38 2c 72 31 31 0d 1a f4 1a 20 20 20 20 |1,r8,r11.... | 00004a40 20 20 20 20 42 4c 20 20 20 20 20 20 64 69 76 69 | BL divi| 00004a50 64 65 0d 1a fe 1e 20 20 20 20 20 20 20 20 53 54 |de.... ST| 00004a60 52 20 20 20 20 20 72 32 2c 5b 72 34 2c 72 33 5d |R r2,[r4,r3]| 00004a70 0d 1b 08 1c 20 20 20 20 20 20 20 20 41 44 44 20 |.... ADD | 00004a80 20 20 20 20 72 33 2c 72 33 2c 23 34 0d 1b 12 1d | r3,r3,#4....| 00004a90 20 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 | MUL | 00004aa0 72 30 2c 72 37 2c 72 31 30 0d 1b 1c 1d 20 20 20 |r0,r7,r10.... | 00004ab0 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 2c | ADD r1,| 00004ac0 72 38 2c 72 31 31 0d 1b 26 1a 20 20 20 20 20 20 |r8,r11..&. | 00004ad0 20 20 42 4c 20 20 20 20 20 20 64 69 76 69 64 65 | BL divide| 00004ae0 0d 1b 30 1e 20 20 20 20 20 20 20 20 53 54 52 20 |..0. STR | 00004af0 20 20 20 20 72 32 2c 5b 72 34 2c 72 33 5d 0d 1b | r2,[r4,r3]..| 00004b00 3a 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |:. ADD | 00004b10 20 20 72 33 2c 72 33 2c 23 34 0d 1b 44 1c 20 20 | r3,r3,#4..D. | 00004b20 20 20 20 20 20 20 53 55 42 53 20 20 20 20 72 39 | SUBS r9| 00004b30 2c 72 39 2c 23 31 0d 1b 4e 1e 20 20 20 20 20 20 |,r9,#1..N. | 00004b40 20 20 42 4e 45 20 20 20 20 20 70 65 72 73 70 5f | BNE persp_| 00004b50 6c 6f 6f 70 0d 1b 58 1e 20 20 20 20 20 20 20 20 |loop..X. | 00004b60 4c 44 52 20 20 20 20 20 72 30 2c 5b 72 34 2c 23 |LDR r0,[r4,#| 00004b70 34 5d 0d 1b 62 1c 20 20 20 20 20 20 20 20 41 44 |4]..b. AD| 00004b80 44 20 20 20 20 20 72 30 2c 72 30 2c 23 31 0d 1b |D r0,r0,#1..| 00004b90 6c 1e 20 20 20 20 20 20 20 20 53 54 52 20 20 20 |l. STR | 00004ba0 20 20 72 30 2c 5b 72 34 2c 23 34 5d 0d 1b 76 1a | r0,[r4,#4]..v.| 00004bb0 20 20 20 20 20 20 20 20 a4 73 74 72 28 33 2c 72 | .str(3,r| 00004bc0 70 5f 70 74 72 29 0d 1b 80 25 20 20 20 20 20 20 |p_ptr)...% | 00004bd0 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c | LDMFD (sp)!,| 00004be0 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 1b 8a 04 0d |{r0-r11,pc}.....| 00004bf0 1b 94 17 2e 72 65 61 64 5f 73 63 72 65 65 6e 5f |....read_screen_| 00004c00 6c 69 6d 69 74 73 0d 1b 9e 27 20 20 20 20 20 20 |limits...' | 00004c10 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c | STMFD (sp)!,| 00004c20 7b 72 30 2d 72 31 31 2c 6c 69 6e 6b 7d 0d 1b a8 |{r0-r11,link}...| 00004c30 1f 20 20 20 20 20 20 20 20 41 44 52 20 20 20 20 |. ADR | 00004c40 20 72 30 2c 76 64 75 5f 6c 69 73 74 0d 1b b2 19 | r0,vdu_list....| 00004c50 20 20 20 20 20 20 20 20 a4 61 64 72 6c 28 31 2c | .adrl(1,| 00004c60 67 77 78 30 29 0d 1b bc 2a 20 20 20 20 20 20 20 |gwx0)...* | 00004c70 20 53 57 49 20 20 20 20 20 22 58 4f 53 5f 52 65 | SWI "XOS_Re| 00004c80 61 64 56 64 75 56 61 72 69 61 62 6c 65 73 22 0d |adVduVariables".| 00004c90 1b c6 1e 20 20 20 20 20 20 20 20 4c 44 4d 49 41 |... LDMIA| 00004ca0 20 20 20 72 31 2c 7b 72 32 2d 72 39 7d 0d 1b d0 | r1,{r2-r9}...| 00004cb0 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 00004cc0 20 72 32 2c 72 32 2c 4c 53 4c 20 72 38 0d 1b da | r2,r2,LSL r8...| 00004cd0 1c 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 |. SUB | 00004ce0 20 72 32 2c 72 32 2c 72 36 0d 1b e4 1d 20 20 20 | r2,r2,r6.... | 00004cf0 20 20 20 20 20 53 55 42 20 20 20 20 20 72 32 2c | SUB r2,| 00004d00 72 32 2c 23 36 34 0d 1b ee 20 20 20 20 20 20 20 |r2,#64... | 00004d10 20 20 4d 4f 56 20 20 20 20 20 72 33 2c 72 33 2c | MOV r3,r3,| 00004d20 4c 53 4c 20 72 39 0d 1b f8 1c 20 20 20 20 20 20 |LSL r9.... | 00004d30 20 20 53 55 42 20 20 20 20 20 72 33 2c 72 33 2c | SUB r3,r3,| 00004d40 72 37 0d 1c 02 1d 20 20 20 20 20 20 20 20 53 55 |r7.... SU| 00004d50 42 20 20 20 20 20 72 33 2c 72 33 2c 23 36 34 0d |B r3,r3,#64.| 00004d60 1c 0c 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |.. MOV | 00004d70 20 20 20 72 34 2c 72 34 2c 4c 53 4c 20 72 38 0d | r4,r4,LSL r8.| 00004d80 1c 16 1c 20 20 20 20 20 20 20 20 53 55 42 20 20 |... SUB | 00004d90 20 20 20 72 34 2c 72 34 2c 72 36 0d 1c 20 1d 20 | r4,r4,r6.. . | 00004da0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00004db0 34 2c 72 34 2c 23 36 34 0d 1c 2a 20 20 20 20 20 |4,r4,#64..* | 00004dc0 20 20 20 20 4d 4f 56 20 20 20 20 20 72 35 2c 72 | MOV r5,r| 00004dd0 35 2c 4c 53 4c 20 72 39 0d 1c 34 1c 20 20 20 20 |5,LSL r9..4. | 00004de0 20 20 20 20 53 55 42 20 20 20 20 20 72 35 2c 72 | SUB r5,r| 00004df0 35 2c 72 37 0d 1c 3e 1d 20 20 20 20 20 20 20 20 |5,r7..>. | 00004e00 41 44 44 20 20 20 20 20 72 35 2c 72 35 2c 23 36 |ADD r5,r5,#6| 00004e10 34 0d 1c 48 1d 20 20 20 20 20 20 20 20 a4 61 64 |4..H. .ad| 00004e20 72 6c 28 31 2c 73 63 72 5f 6d 69 6e 78 29 0d 1c |rl(1,scr_minx)..| 00004e30 52 1e 20 20 20 20 20 20 20 20 53 54 4d 49 41 20 |R. STMIA | 00004e40 20 20 72 31 2c 7b 72 32 2d 72 35 7d 0d 1c 5c 25 | r1,{r2-r5}..\%| 00004e50 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 | LDMFD | 00004e60 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 |(sp)!,{r0-r11,pc| 00004e70 7d 0d 1c 66 04 0d 1c 70 0d 2e 76 64 75 5f 6c 69 |}..f...p..vdu_li| 00004e80 73 74 0d 1c 7a 17 20 20 20 20 20 20 20 20 44 43 |st..z. DC| 00004e90 44 20 20 20 20 20 31 32 38 0d 1c 84 17 20 20 20 |D 128.... | 00004ea0 20 20 20 20 20 44 43 44 20 20 20 20 20 31 32 39 | DCD 129| 00004eb0 0d 1c 8e 17 20 20 20 20 20 20 20 20 44 43 44 20 |.... DCD | 00004ec0 20 20 20 20 31 33 30 0d 1c 98 17 20 20 20 20 20 | 130.... | 00004ed0 20 20 20 44 43 44 20 20 20 20 20 31 33 31 0d 1c | DCD 131..| 00004ee0 a2 17 20 20 20 20 20 20 20 20 44 43 44 20 20 20 |.. DCD | 00004ef0 20 20 31 33 36 0d 1c ac 17 20 20 20 20 20 20 20 | 136.... | 00004f00 20 44 43 44 20 20 20 20 20 31 33 37 0d 1c b6 15 | DCD 137....| 00004f10 20 20 20 20 20 20 20 20 44 43 44 20 20 20 20 20 | DCD | 00004f20 34 0d 1c c0 15 20 20 20 20 20 20 20 20 44 43 44 |4.... DCD| 00004f30 20 20 20 20 20 35 0d 1c ca 16 20 20 20 20 20 20 | 5.... | 00004f40 20 20 44 43 44 20 20 20 20 20 2d 31 0d 1c d4 04 | DCD -1....| 00004f50 0d 1c de 27 2e 72 6f 74 61 74 65 20 53 54 4d 46 |...'.rotate STMF| 00004f60 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 |D (sp)!,{r0-r1| 00004f70 31 2c 6c 69 6e 6b 7d 0d 1c e8 1e 20 20 20 20 20 |1,link}.... | 00004f80 20 20 20 4c 44 4d 49 41 20 20 20 72 30 2c 7b 72 | LDMIA r0,{r| 00004f90 33 2d 72 35 7d 0d 1c f2 1e 20 20 20 20 20 20 20 |3-r5}.... | 00004fa0 20 4c 44 52 20 20 20 20 20 72 38 2c 5b 72 31 2c | LDR r8,[r1,| 00004fb0 23 34 5d 0d 1c fc 19 20 20 20 20 20 20 20 20 43 |#4].... C| 00004fc0 4d 50 20 20 20 20 20 72 38 2c 23 30 0d 1d 06 1e |MP r8,#0....| 00004fd0 20 20 20 20 20 20 20 20 53 54 4d 45 51 49 41 20 | STMEQIA | 00004fe0 72 32 2c 7b 72 33 2d 72 35 7d 0d 1d 10 1d 20 20 |r2,{r3-r5}.... | 00004ff0 20 20 20 20 20 20 42 45 51 20 20 20 20 20 6e 6f | BEQ no| 00005000 5f 72 6f 74 61 74 65 0d 1d 1a 15 20 20 20 20 20 |_rotate.... | 00005010 20 20 20 a4 73 69 6e 28 39 2c 38 29 0d 1d 24 16 | .sin(9,8)..$.| 00005020 20 20 20 20 20 20 20 20 a4 63 6f 73 28 31 30 2c | .cos(10,| 00005030 38 29 0d 1d 2e 19 20 20 20 20 20 20 20 20 4d 4f |8).... MO| 00005040 56 53 20 20 20 20 72 36 2c 72 33 0d 1d 38 1c 20 |VS r6,r3..8. | 00005050 20 20 20 20 20 20 20 52 53 42 4d 49 20 20 20 72 | RSBMI r| 00005060 36 2c 72 36 2c 23 30 0d 1d 42 19 20 20 20 20 20 |6,r6,#0..B. | 00005070 20 20 20 4d 4f 56 53 20 20 20 20 72 37 2c 72 34 | MOVS r7,r4| 00005080 0d 1d 4c 1c 20 20 20 20 20 20 20 20 52 53 42 4d |..L. RSBM| 00005090 49 20 20 20 72 37 2c 72 37 2c 23 30 0d 1d 56 1b |I r7,r7,#0..V.| 000050a0 20 20 20 20 20 20 20 20 84 52 20 20 20 20 20 72 | .R r| 000050b0 36 2c 72 36 2c 72 37 0d 1d 60 19 20 20 20 20 20 |6,r6,r7..`. | 000050c0 20 20 20 4d 4f 56 53 20 20 20 20 72 38 2c 72 35 | MOVS r8,r5| 000050d0 0d 1d 6a 1c 20 20 20 20 20 20 20 20 52 53 42 4d |..j. RSBM| 000050e0 49 20 20 20 72 38 2c 72 38 2c 23 30 0d 1d 74 1b |I r8,r8,#0..t.| 000050f0 20 20 20 20 20 20 20 20 84 52 20 20 20 20 20 72 | .R r| 00005100 36 2c 72 36 2c 72 38 0d 1d 7e 1a 20 20 20 20 20 |6,r6,r8..~. | 00005110 20 20 20 4d 4f 56 20 20 20 20 20 72 31 31 2c 23 | MOV r11,#| 00005120 30 0d 1d 88 12 2e 72 6f 74 61 74 65 5f 72 65 64 |0.....rotate_red| 00005130 75 63 65 0d 1d 92 29 20 20 20 20 20 20 20 20 43 |uce...) C| 00005140 4d 50 20 20 20 20 20 72 36 2c 23 28 31 3c 3c 28 |MP r6,#(1<<(| 00005150 33 30 2d 61 6e 67 5f 61 63 63 29 29 0d 1d 9c 1d |30-ang_acc))....| 00005160 20 20 20 20 20 20 20 20 42 4c 54 20 20 20 20 20 | BLT | 00005170 72 6f 74 61 74 65 5f 6f 6b 0d 1d a6 20 20 20 20 |rotate_ok... | 00005180 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 36 2c | MOV r6,| 00005190 72 36 2c 41 53 52 20 23 31 0d 1d b0 1e 20 20 20 |r6,ASR #1.... | 000051a0 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 31 | ADD r11| 000051b0 2c 72 31 31 2c 23 31 0d 1d ba 20 20 20 20 20 20 |,r11,#1... | 000051c0 20 20 20 43 4d 50 20 20 20 20 20 72 31 31 2c 23 | CMP r11,#| 000051d0 61 6e 67 5f 61 63 63 0d 1d c4 21 20 20 20 20 20 |ang_acc...! | 000051e0 20 20 20 42 4c 54 20 20 20 20 20 72 6f 74 61 74 | BLT rotat| 000051f0 65 5f 72 65 64 75 63 65 0d 1d ce 0e 2e 72 6f 74 |e_reduce.....rot| 00005200 61 74 65 5f 6f 6b 0d 1d d8 21 20 20 20 20 20 20 |ate_ok...! | 00005210 20 20 4d 4f 56 20 20 20 20 20 72 33 2c 72 33 2c | MOV r3,r3,| 00005220 41 53 52 20 72 31 31 0d 1d e2 21 20 20 20 20 20 |ASR r11...! | 00005230 20 20 20 4d 4f 56 20 20 20 20 20 72 35 2c 72 35 | MOV r5,r5| 00005240 2c 41 53 52 20 72 31 31 0d 1d ec 24 20 20 20 20 |,ASR r11...$ | 00005250 20 20 20 20 52 53 42 20 20 20 20 20 72 31 31 2c | RSB r11,| 00005260 72 31 31 2c 23 61 6e 67 5f 61 63 63 0d 1d f6 1d |r11,#ang_acc....| 00005270 20 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 | MUL | 00005280 72 36 2c 72 33 2c 72 31 30 0d 1e 00 1f 20 20 20 |r6,r3,r10.... | 00005290 20 20 20 20 20 4d 4c 41 20 20 20 20 20 72 36 2c | MLA r6,| 000052a0 72 35 2c 72 39 2c 72 36 0d 1e 0a 1c 20 20 20 20 |r5,r9,r6.... | 000052b0 20 20 20 20 52 53 42 20 20 20 20 20 72 39 2c 72 | RSB r9,r| 000052c0 39 2c 23 30 0d 1e 14 1c 20 20 20 20 20 20 20 20 |9,#0.... | 000052d0 4d 55 4c 20 20 20 20 20 72 38 2c 72 33 2c 72 39 |MUL r8,r3,r9| 000052e0 0d 1e 1e 20 20 20 20 20 20 20 20 20 4d 4c 41 20 |... MLA | 000052f0 20 20 20 20 72 38 2c 72 35 2c 72 31 30 2c 72 38 | r8,r5,r10,r8| 00005300 0d 1e 28 21 20 20 20 20 20 20 20 20 4d 4f 56 20 |..(! MOV | 00005310 20 20 20 20 72 36 2c 72 36 2c 41 53 52 20 72 31 | r6,r6,ASR r1| 00005320 31 0d 1e 32 19 20 20 20 20 20 20 20 20 4d 4f 56 |1..2. MOV| 00005330 20 20 20 20 20 72 37 2c 72 34 0d 1e 3c 21 20 20 | r7,r4..<! | 00005340 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 38 | MOV r8| 00005350 2c 72 38 2c 41 53 52 20 72 31 31 0d 1e 46 1e 20 |,r8,ASR r11..F. | 00005360 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 20 72 | STMIA r| 00005370 32 2c 7b 72 36 2d 72 38 7d 0d 1e 50 0e 2e 6e 6f |2,{r6-r8}..P..no| 00005380 5f 72 6f 74 61 74 65 0d 1e 5a 25 20 20 20 20 20 |_rotate..Z% | 00005390 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 | LDMFD (sp)!| 000053a0 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 1e 64 04 |,{r0-r11,pc}..d.| 000053b0 0d 1e 6e 04 0d 1e 78 22 2e 73 69 6e 5f 74 61 62 |..n...x".sin_tab| 000053c0 20 a4 74 61 62 6c 65 28 34 2a 72 65 61 6c 5f 61 | .table(4*real_a| 000053d0 6e 67 6c 65 73 29 0d 1e 82 05 5d 0d 1e 8c 0f e7 |ngles)....].....| 000053e0 20 70 61 73 73 25 3e 34 20 8c 0d 1e 96 1a 20 e3 | pass%>4 ..... .| 000053f0 20 69 3d 30 20 b8 20 72 65 61 6c 5f 61 6e 67 6c | i=0 . real_angl| 00005400 65 73 2d 31 0d 1e a0 1b 20 20 61 3d 32 2a af 2a |es-1.... a=2*.*| 00005410 28 69 2f 72 65 61 6c 5f 61 6e 67 6c 65 73 29 0d |(i/real_angles).| 00005420 1e aa 29 20 20 73 69 6e 5f 74 61 62 21 28 63 6f |..) sin_tab!(co| 00005430 64 65 25 2b 34 2a 69 29 3d 28 31 3c 3c 61 6e 67 |de%+4*i)=(1<<ang| 00005440 5f 61 63 63 29 2a b5 61 0d 1e b4 06 20 ed 0d 1e |_acc)*.a.... ...| 00005450 be 05 cd 0d 1e c8 06 3d 30 0d 1e d2 05 3a 0d 1e |.......=0....:..| 00005460 dc 15 dd 20 a4 73 69 6e 28 72 65 67 31 2c 72 65 |... .sin(reg1,re| 00005470 67 32 29 0d 1e e6 0e 5b 4f 50 54 20 70 61 73 73 |g2)....[OPT pass| 00005480 25 0d 1e f0 2f 20 20 20 20 20 20 20 20 4d 4f 56 |%.../ MOV| 00005490 20 20 20 20 20 72 31 34 2c 72 65 67 32 2c 4c 53 | r14,reg2,LS| 000054a0 4c 20 23 28 33 32 2d 61 6e 67 5f 62 69 74 73 29 |L #(32-ang_bits)| 000054b0 0d 1e fa 38 20 20 20 20 20 20 20 20 4d 4f 56 20 |...8 MOV | 000054c0 20 20 20 20 72 31 34 2c 72 31 34 2c 4c 53 52 20 | r14,r14,LSR | 000054d0 23 28 33 32 2d 61 6e 67 5f 62 69 74 73 2b 61 6e |#(32-ang_bits+an| 000054e0 67 5f 73 68 69 66 74 29 0d 1f 04 20 20 20 20 20 |g_shift)... | 000054f0 20 20 20 20 41 44 52 20 20 20 20 20 72 65 67 31 | ADR reg1| 00005500 2c 73 69 6e 5f 74 61 62 0d 1f 0e 2a 20 20 20 20 |,sin_tab...* | 00005510 20 20 20 20 4c 44 52 20 20 20 20 20 72 65 67 31 | LDR reg1| 00005520 2c 5b 72 65 67 31 2c 72 31 34 2c 4c 53 4c 20 23 |,[reg1,r14,LSL #| 00005530 32 5d 0d 1f 18 05 5d 0d 1f 22 06 3d 30 0d 1f 2c |2]....]..".=0..,| 00005540 05 3a 0d 1f 36 15 dd 20 a4 63 6f 73 28 72 65 67 |.:..6.. .cos(reg| 00005550 31 2c 72 65 67 32 29 0d 1f 40 0e 5b 4f 50 54 20 |1,reg2)..@.[OPT | 00005560 70 61 73 73 25 0d 1f 4a 28 20 20 20 20 20 20 20 |pass%..J( | 00005570 20 41 44 44 20 20 20 20 20 72 31 34 2c 72 65 67 | ADD r14,reg| 00005580 32 2c 23 61 6e 67 6c 65 73 20 81 20 34 0d 1f 54 |2,#angles . 4..T| 00005590 2e 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 000055a0 20 72 31 34 2c 72 31 34 2c 4c 53 4c 20 23 28 33 | r14,r14,LSL #(3| 000055b0 32 2d 61 6e 67 5f 62 69 74 73 29 0d 1f 5e 38 20 |2-ang_bits)..^8 | 000055c0 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 000055d0 31 34 2c 72 31 34 2c 4c 53 52 20 23 28 33 32 2d |14,r14,LSR #(32-| 000055e0 61 6e 67 5f 62 69 74 73 2b 61 6e 67 5f 73 68 69 |ang_bits+ang_shi| 000055f0 66 74 29 0d 1f 68 20 20 20 20 20 20 20 20 20 41 |ft)..h A| 00005600 44 52 20 20 20 20 20 72 65 67 31 2c 73 69 6e 5f |DR reg1,sin_| 00005610 74 61 62 0d 1f 72 2a 20 20 20 20 20 20 20 20 4c |tab..r* L| 00005620 44 52 20 20 20 20 20 72 65 67 31 2c 5b 72 65 67 |DR reg1,[reg| 00005630 31 2c 72 31 34 2c 4c 53 4c 20 23 32 5d 0d 1f 7c |1,r14,LSL #2]..|| 00005640 05 5d 0d 1f 86 06 3d 30 0d 1f 90 05 3a 0d 1f 9a |.]....=0....:...| 00005650 13 dd 20 a4 73 74 72 28 72 65 67 2c 6f 66 66 29 |.. .str(reg,off)| 00005660 0d 1f a4 0e 5b 4f 50 54 20 70 61 73 73 25 0d 1f |....[OPT pass%..| 00005670 ae 27 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.' ADD | 00005680 20 20 72 31 34 2c 77 70 2c 23 6f 66 66 20 80 20 | r14,wp,#off . | 00005690 26 46 46 30 30 0d 1f b8 2a 20 20 20 20 20 20 20 |&FF00...* | 000056a0 20 53 54 52 20 20 20 20 20 72 65 67 2c 5b 72 31 | STR reg,[r1| 000056b0 34 2c 23 6f 66 66 20 80 20 26 30 30 46 46 5d 0d |4,#off . &00FF].| 000056c0 1f c2 05 5d 0d 1f cc 06 3d 30 0d 1f d6 05 3a 0d |...]....=0....:.| 000056d0 1f e0 13 dd 20 a4 6c 64 72 28 72 65 67 2c 6f 66 |.... .ldr(reg,of| 000056e0 66 29 0d 1f ea 0e 5b 4f 50 54 20 70 61 73 73 25 |f)....[OPT pass%| 000056f0 0d 1f f4 27 20 20 20 20 20 20 20 20 41 44 44 20 |...' ADD | 00005700 20 20 20 20 72 31 34 2c 77 70 2c 23 6f 66 66 20 | r14,wp,#off | 00005710 80 20 26 46 46 30 30 0d 1f fe 2a 20 20 20 20 20 |. &FF00...* | 00005720 20 20 20 4c 44 52 20 20 20 20 20 72 65 67 2c 5b | LDR reg,[| 00005730 72 31 34 2c 23 6f 66 66 20 80 20 26 30 30 46 46 |r14,#off . &00FF| 00005740 5d 0d 20 08 05 5d 0d 20 12 06 3d 30 0d ff |]. ..]. ..=0..| 0000574e