-
Notifications
You must be signed in to change notification settings - Fork 22
/
llil.S
1956 lines (1517 loc) · 65.1 KB
/
llil.S
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
0 @ 00002c18 // vm2_run_2c18(&opCode_b090, &packed_data, 0,
0 @ 00002c18 // &vm2_external_func_list_21d10, &var_518);
0 @ 00002c18 sp = sp - 0x60
1 @ 00002c18 [sp {__saved_x28}].q = x28
2 @ 00002c18 [sp + 8 {__saved_x27}].q = x27
3 @ 00002c1c [sp + 0x10 {__saved_x26}].q = x26
4 @ 00002c1c [sp + 0x18 {__saved_x25}].q = x25
5 @ 00002c20 [sp + 0x20 {__saved_x24}].q = x24
6 @ 00002c20 [sp + 0x28 {__saved_x23}].q = x23
7 @ 00002c24 [sp + 0x30 {__saved_x22}].q = x22
8 @ 00002c24 [sp + 0x38 {__saved_x21}].q = x21
9 @ 00002c28 [sp + 0x40 {__saved_x20}].q = x20
10 @ 00002c28 [sp + 0x48 {__saved_x19}].q = x19
11 @ 00002c2c [sp + 0x50 {__saved_x29}].q = x29
12 @ 00002c2c [sp + 0x58 {__saved_x30}].q = x30
13 @ 00002c30 x29 = sp + 0x50 {__saved_x29}
14 @ 00002c34 // x20 call_register_trampoline
14 @ 00002c34 // x19 VmEnd
14 @ 00002c34 x20 = [x4].q
15 @ 00002c34 x19 = [x4 + 8].q
16 @ 00002c38 x8 = x19 - 0x130
17 @ 00002c3c [x19 - 0x38].q = 0
18 @ 00002c40 [x8].q = 0
19 @ 00002c44 x8 = x19 - 0x148
20 @ 00002c48 x21 = x19 - 0x138
21 @ 00002c4c x8 = x8 & 0xfffffffffffffff0
22 @ 00002c50 x4 = x19 - 0x110
23 @ 00002c54 x5 = x19 - 0x108
24 @ 00002c58 [x19 - 0x48].q = x8
25 @ 00002c5c [x19 - 0x20].q = 0
26 @ 00002c60 [x4].q = x1
27 @ 00002c64 [x5].q = x2
28 @ 00002c68 [x19 - 0x100].q = x3
29 @ 00002c68 [x19 - 0xf8].q = x20
30 @ 00002c6c [x21].q = x0
31 @ 00002c70 [x19 - 8].q = x0
32 @ 00002c74 if (x0 == 0) then 33 @ 0x4428 else 47 @ 0x2c78
33 @ 00004428 x29 = [sp + 0x50 {__saved_x29}].q
34 @ 00004428 x30 = [sp + 0x58 {__saved_x30}].q
35 @ 0000442c x20 = [sp + 0x40 {__saved_x20}].q
36 @ 0000442c x19 = [sp + 0x48 {__saved_x19}].q
37 @ 00004430 x22 = [sp + 0x30 {__saved_x22}].q
38 @ 00004430 x21 = [sp + 0x38 {__saved_x21}].q
39 @ 00004434 x24 = [sp + 0x20 {__saved_x24}].q
40 @ 00004434 x23 = [sp + 0x28 {__saved_x23}].q
41 @ 00004438 x26 = [sp + 0x10 {__saved_x26}].q
42 @ 00004438 x25 = [sp + 0x18 {__saved_x25}].q
43 @ 0000443c x28 = [sp {__saved_x28}].q
44 @ 0000443c x27 = [sp + 8 {__saved_x27}].q
45 @ 0000443c sp = sp + 0x60
46 @ 00004440 <return> jump(x30)
47 @ 00002c78 w6 = 0xb
48 @ 00002c7c w7 = 0xfff
49 @ 00002c80 x27 = &data_a000
50 @ 00002c84 x28 = &data_a000
51 @ 00002c88 x26 = &data_a000
52 @ 00002c8c x30 = &data_a000
53 @ 00002c90 x25 = &data_a000
54 @ 00002c94 x23 = &data_a000
55 @ 00002c98 x1 = 0
56 @ 00002c9c w6 = w6 & 0xffff
57 @ 00002c9c w6 = w6 | 0x4000000
58 @ 00002ca0 w7 = w7 & 0xffff
59 @ 00002ca0 w7 = w7 | 0x200000
60 @ 00002ca4 x27 = x27 + 0x6a0
61 @ 00002ca8 x28 = x28 + 0x83c
62 @ 00002cac x26 = x26 + 0x934
63 @ 00002cb0 w24 = 1
64 @ 00002cb4 x30 = x30 + 0xdb0
65 @ 00002cb8 x25 = x25 + 0x7a0
66 @ 00002cbc x23 = x23 + 0xb24
67 @ 00002cc0 goto 68 @ 0x2cc8
68 @ 00002cc8 w12 = [x0].d
69 @ 00002cd0 if (x1 == 2) then 70 @ 0x3fbc else 74 @ 0x2cd4
70 @ 00003fbc w8 = 3
71 @ 00003fc0 w1 = 3
72 @ 00003fc4 [x19 - 0x20].q = x8
73 @ 00003fc8 goto 74 @ 0x2cd4
74 @ 00002cd4 w10 = w12 & 0x3f
75 @ 00002cdc if (w10 u> 0x3f) then 76 @ 0x3a78 else 82 @ 0x2ce0
76 @ 00003a78 x9 = [x21].q
77 @ 00003a7c x8 = [x19 - 0x20].q
78 @ 00003a80 x0 = x9 + 4
79 @ 00003a84 cond:0 = x8 == 2
80 @ 00003a88 [x21].q = x0
81 @ 00003a8c if (cond:0) then 106 @ 0x3aa8 else 107 @ 0x3a94
82 @ 00002ce0 w11 = w12 u>> 0xb // 右移 11 位
83 @ 00002ce4 w14 = w11 & 2 // w14 = w12[12]
84 @ 00002ce8 x3 = sx.q([x27 + (x10 << 2)].d) // x10 = w12[5,0]
85 @ 00002cec w16 = w12 & 0x10000000
86 @ 00002cf0 w2 = w11 & 4 // w12[13]
87 @ 00002cf4 // w12[31] | w14 去掉最低位
87 @ 00002cf4 w14 = (w14 & 0xfffffffe) | (w12 & 0x80000000) u>> 0x1f
88 @ 00002cf8 w14 = w14 | w2
89 @ 00002cfc w2 = w11 & 8 // w12[14]
90 @ 00002d00 w10 = w11 & 0x10
91 @ 00002d04 w11 = w16 u>> 0x1a
92 @ 00002d08 w15 = w12 & 0x20000000
93 @ 00002d0c w2 = w14 | w2
94 @ 00002d10 w11 = (w11 & 0xfffffffc) | (w12 & 0xc000000) u>> 0x1a
95 @ 00002d14 w14 = w12 & 0x40000000
96 @ 00002d18 w10 = w2 | w10
97 @ 00002d1c w11 = w11 | w15 u>> 0x1a
98 @ 00002d20 x2 = x3 + x27
99 @ 00002d24 // Rn 第一个操作数 w12[25:21]
99 @ 00002d24 w9 = zx.d(w12 u>> 0x15 & 0x1f)
100 @ 00002d28 // Rd 目标操作数 w12[20:16]
100 @ 00002d28 w8 = zx.d(w12 u>> 0x10 & 0x1f)
101 @ 00002d2c w13 = w12 & 0x80000000
102 @ 00002d30 w18 = w12 & 0x4000000
103 @ 00002d34 w17 = w12 & 0x8000000
104 @ 00002d38 w11 = w11 | w14 u>> 0x1a
105 @ 00002d3c jump(x2 => 108 @ 0x2d40, 111 @ 0x2dc0, 112 @ 0x2e50, 115 @ 0x2ecc, 127 @ 0x2f24, 139 @ 0x2f80, 140 @ 0x305c, 154 @ 0x3098, 158 @ 0x30e8, 160 @ 0x312c, 167 @ 0x3220, 169 @ 0x3254, 76 @ 0x3a78)
106 @ 00003aa8 if (x0 != 0) then 183 @ 0x2cc4 else 185 @ 0x3aac
107 @ 00003a94 if (x8 == 3) then 186 @ 0x3c04 else 190 @ 0x3a9c
108 @ 00002d40 w10 = w12 & 0x3f
109 @ 00002d44 w10 = w10 - 0xf
110 @ 00002d4c if (w10 u> 0x26) then 76 @ 0x3a78 else 191 @ 0x2d50
111 @ 00002dc0 if (x1 != 0) then 76 @ 0x3a78 else 206 @ 0x2dc4
112 @ 00002e50 w10 = w12 & 0x3f
113 @ 00002e54 w10 = w10 - 0x14
114 @ 00002e5c // 58是最大值,判断是否在区间内
114 @ 00002e5c if (w10 u> 0x26) then 76 @ 0x3a78 else 208 @ 0x2e60
115 @ 00002ecc w0 = w12 & &data_f000
116 @ 00002ed0 w10 = zx.d(w12 u>> 6 & 0x3f)
117 @ 00002ed4 w0 = (w0 & 0xfffff000) | (w18 & 0xfff00000) u>> 0x14
118 @ 00002ed8 w10 = w0 | w10
119 @ 00002edc w10 = w10 | w17 u>> 0x14
120 @ 00002ee0 w10 = w10 | w16 u>> 0x14
121 @ 00002ee4 w10 = w10 | w15 u>> 0x14
122 @ 00002ee8 w11 = w12 & 0x3f
123 @ 00002eec w10 = w10 | w14 u>> 0x14
124 @ 00002ef0 cond:1 = w11 s> 0x33
125 @ 00002ef4 w10 = w10 | w13 u>> 0x14
126 @ 00002ef8 if (cond:1) then 223 @ 0x3024 else 224 @ 0x2f00
127 @ 00002f24 w0 = w12 & &data_f000
128 @ 00002f28 w10 = zx.d(w12 u>> 6 & 0x3f)
129 @ 00002f2c w0 = (w0 & 0xfffff000) | (w18 & 0xfff00000) u>> 0x14
130 @ 00002f30 w10 = w0 | w10
131 @ 00002f34 w10 = w10 | w17 u>> 0x14
132 @ 00002f38 w10 = w10 | w16 u>> 0x14
133 @ 00002f3c w10 = w10 | w15 u>> 0x14
134 @ 00002f40 w11 = w12 & 0x3f
135 @ 00002f44 w10 = w10 | w14 u>> 0x14
136 @ 00002f48 cond:2 = w11 == 0x25
137 @ 00002f4c w10 = w10 | w13 u>> 0x14
138 @ 00002f50 if (cond:2) then 225 @ 0x3048 else 230 @ 0x2f58
139 @ 00002f80 if (x1 != 0) then 76 @ 0x3a78 else 231 @ 0x2f84
140 @ 0000305c w11 = w12 & &data_f000
141 @ 00003060 w10 = zx.d(w12 u>> 6 & 0x3f)
142 @ 00003064 w11 = (w11 & 0xfffff000) | (w18 & 0xfff00000) u>> 0x14
143 @ 00003068 w10 = w11 | w10
144 @ 0000306c x12 = x21 + 8
145 @ 00003070 w10 = w10 | w17 u>> 0x14
146 @ 00003074 w10 = w10 | w16 u>> 0x14
147 @ 00003078 x9 = [x12 + (zx.q(w9) << 3)].q
148 @ 0000307c w10 = w10 | w15 u>> 0x14
149 @ 00003080 w10 = w10 | w14 u>> 0x14
150 @ 00003084 w10 = w10 | w13 u>> 0x14
151 @ 0000308c w9 = x9 s< sx.q(w10.w) ? 1 : 0
152 @ 00003090 [x12 + (zx.q(w8) << 3)].q = x9
153 @ 00003094 goto 76 @ 0x3a78
154 @ 00003098 w13 = w12 & 0xfff
155 @ 0000309c w14 = w13 - 0xb
156 @ 000030a0 w14 = ror.d(w14, 6)
157 @ 000030a8 if (w14 u> 0x3a) then 233 @ 0x3eb8 else 234 @ 0x30ac
158 @ 000030e8 w11 = w12 & 0xfff
159 @ 000030f0 if (w11 s<= 0x90d) then 237 @ 0x359c else 238 @ 0x30f8
160 @ 0000312c w8 = 0x3f
161 @ 00003130 w8 = w8 & 0xffff
162 @ 00003130 w8 = w8 | 0x1f0000
163 @ 00003134 w8 = w12 & w8
164 @ 00003138 w10 = w8 - 0x19
165 @ 0000313c w10 = ror.d(w10, 0x10)
166 @ 00003144 if (w10 u> 0x1f) then 76 @ 0x3a78 else 239 @ 0x3148
167 @ 00003220 w13 = w12 & 0xfff
168 @ 00003228 if (w13 s> 0x968) then 244 @ 0x3578 else 245 @ 0x3230
169 @ 00003254 w11 = w12 & &data_f000
170 @ 00003258 w10 = zx.d(w12 u>> 6 & 0x3f)
171 @ 0000325c w11 = (w11 & 0xfffff000) | (w18 & 0xfff00000) u>> 0x14
172 @ 00003260 w10 = w11 | w10
173 @ 00003264 x12 = x21 + 8
174 @ 00003268 w10 = w10 | w17 u>> 0x14
175 @ 0000326c w10 = w10 | w16 u>> 0x14
176 @ 00003270 x9 = [x12 + (zx.q(w9) << 3)].q
177 @ 00003274 w10 = w10 | w15 u>> 0x14
178 @ 00003278 w10 = w10 | w14 u>> 0x14
179 @ 0000327c w10 = w10 | w13 u>> 0x14
180 @ 00003284 w9 = x9 u< sx.q(w10.w) ? 1 : 0
181 @ 00003288 [x12 + (zx.q(w8) << 3)].q = x9
182 @ 0000328c goto 76 @ 0x3a78
183 @ 00002cc4 x1 = [x19 - 0x20].q // 获取 vmStatusControl
184 @ 00002cc4 goto 68 @ 0x2cc8
185 @ 00003aac goto 33 @ 0x4428
186 @ 00003c04 x0 = [x19 - 0x18].q
187 @ 00003c08 [x19 - 0x20].q = 0
188 @ 00003c0c [x21].q = x0
189 @ 00003c14 if (x0 != x20) then 106 @ 0x3aa8 else 246 @ 0x3c18
190 @ 00003a9c if (x8 == 1) then 186 @ 0x3c04 else 265 @ 0x3aa4
191 @ 00002d50 w11 = zx.d(w12 u>> 6 & 0x3f)
192 @ 00002d54 w12 = w12 & &data_f000
193 @ 00002d58 w12 = (w12 & 0xfffff000) | (w18 & 0xfff00000) u>> 0x14
194 @ 00002d5c w11 = w12 | w11
195 @ 00002d60 x9 = x21 + (zx.q(w9) << 3)
196 @ 00002d64 x10 = sx.q([x25 + (x10 << 2)].d)
197 @ 00002d68 w11 = w11 | w17 u>> 0x14
198 @ 00002d6c x9 = [x9 + 8].q
199 @ 00002d70 w11 = w11 | w16 u>> 0x14
200 @ 00002d74 w11 = w11 | w15 u>> 0x14
201 @ 00002d78 w11 = w11 | w14 u>> 0x14
202 @ 00002d7c w11 = w11 | w13 u>> 0x14
203 @ 00002d80 x10 = x10 + x25
204 @ 00002d84 x9 = x9 + sx.q(w11.w)
205 @ 00002d88 jump(x10 => 266 @ 0x2d8c, 279 @ 0x3290, 281 @ 0x3298, 294 @ 0x32cc, 296 @ 0x32d4, 298 @ 0x32dc, 300 @ 0x32e4, 313 @ 0x3318, 315 @ 0x3320, 317 @ 0x3328, 330 @ 0x335c, 76 @ 0x3a78)
206 @ 00002dc4 w1 = w12 & 0x3f
207 @ 00002dcc if (w1 u> 0x3d) then 76 @ 0x3a78 else 332 @ 0x2dd0
208 @ 00002e60 // 特殊情况
208 @ 00002e60 // 重新解码操作数
208 @ 00002e60 // w12[6-11]
208 @ 00002e60 w11 = zx.d(w12 u>> 6 & 0x3f)
209 @ 00002e64 w12 = w12 & &data_f000
210 @ 00002e68 // w12[15-12] w12[26]
210 @ 00002e68 w12 = (w12 & 0xfffff000) | (w18 & 0xfff00000) u>> 0x14
211 @ 00002e6c w11 = w12 | w11
212 @ 00002e70 x9 = x21 + (zx.q(w9) << 3) // x9 = x21 + w9 * 8
213 @ 00002e74 x10 = sx.q([x23 + (x10 << 2)].d)
214 @ 00002e78 w11 = w11 | w17 u>> 0x14 // w12[27]
215 @ 00002e7c x9 = [x9 + 8].q
216 @ 00002e80 w11 = w11 | w16 u>> 0x14 // w12[28]
217 @ 00002e84 w11 = w11 | w15 u>> 0x14 // w12[29]
218 @ 00002e88 w11 = w11 | w14 u>> 0x14 // w12[30]
219 @ 00002e8c w11 = w11 | w13 u>> 0x14 // w12[31]
220 @ 00002e90 x10 = x10 + x23
221 @ 00002e94 x9 = x9 + sx.q(w11.w)
222 @ 00002e98 jump(x10 => 347 @ 0x2e9c, 359 @ 0x3380, 363 @ 0x3390, 375 @ 0x33c8, 379 @ 0x33d8, 391 @ 0x3408, 395 @ 0x3418, 399 @ 0x3428, 76 @ 0x3a78)
223 @ 00003024 if (w11 == 0x34) then 411 @ 0x3478 else 414 @ 0x302c
224 @ 00002f00 if (w11 == 7) then 415 @ 0x3460 else 421 @ 0x2f08
225 @ 00003048 x11 = x21 + 8
226 @ 0000304c x9 = [x11 + (zx.q(w9) << 3)].q
227 @ 00003050 x9 = x9 + sx.q(w10.w)
228 @ 00003054 [x11 + (zx.q(w8) << 3)].q = x9
229 @ 00003058 goto 76 @ 0x3a78
230 @ 00002f58 if (w11 == 0x15) then 225 @ 0x3048 else 422 @ 0x2f60
231 @ 00002f84 w1 = w12 & 0x3f
232 @ 00002f8c if (w1 u> 0x3d) then 76 @ 0x3a78 else 423 @ 0x2f90
233 @ 00003eb8 if (w13 s<= 0x70a) then 440 @ 0x4138 else 441 @ 0x3ec0
234 @ 000030ac x14 = sx.q([x30 + (x14 << 2)].d)
235 @ 000030b0 x14 = x14 + x30
236 @ 000030b4 jump(x14 => 442 @ 0x30b8, 444 @ 0x3860, 447 @ 0x388c, 448 @ 0x38f8, 76 @ 0x3a78, 450 @ 0x3ab0, 454 @ 0x3dc4, 457 @ 0x3dd8, 233 @ 0x3eb8, 458 @ 0x3ef0, 464 @ 0x3f10, 466 @ 0x3f18, 472 @ 0x3f38, 473 @ 0x3fb4)
237 @ 0000359c if (w11 == 0x4e) then 475 @ 0x37bc else 483 @ 0x35a4
238 @ 000030f8 if (w11 == 0x90e) then 484 @ 0x3774 else 492 @ 0x3100
239 @ 00003148 w11 = 0x100d
240 @ 0000314c w10 = w24 << w10
241 @ 00003150 w11 = w11 & 0xffff
242 @ 00003150 w11 = w11 | 0x80290000
243 @ 00003158 if ((w10 & w11) == 0) then 76 @ 0x3a78 else 493 @ 0x315c
244 @ 00003578 if (w13 s<= 0xd28) then 494 @ 0x369c else 495 @ 0x3580 {")!@9)m\x1bRI!"}
245 @ 00003230 if (w13 s<= 0x3a8) then 496 @ 0x3688 else 497 @ 0x3238
246 @ 00003c18 x0 = [x4].q
247 @ 00003c1c x1 = [x5].q
248 @ 00003c20 x24 = x4
249 @ 00003c24 x22 = x5
250 @ 00003c28 call(x20)
251 @ 00003c2c x0 = [x19 - 0x10].q
252 @ 00003c30 x30 = &data_a000
253 @ 00003c34 w7 = 0xfff
254 @ 00003c38 w6 = 0xb
255 @ 00003c3c x30 = x30 + 0xdb0
256 @ 00003c40 w7 = w7 & 0xffff
257 @ 00003c40 w7 = w7 | 0x200000
258 @ 00003c44 w6 = w6 & 0xffff
259 @ 00003c44 w6 = w6 | 0x4000000
260 @ 00003c48 x5 = x22
261 @ 00003c4c x4 = x24
262 @ 00003c50 w24 = 1
263 @ 00003c54 [x21].q = x0
264 @ 00003c58 if (x0 != 0) then 183 @ 0x2cc4 else 498 @ 0x3c5c
265 @ 00003aa4 if (x0 == x20) then 246 @ 0x3c18 else 106 @ 0x3aa8
266 @ 00002d8c x10 = x9 & 0xfffffffffffffff8
267 @ 00002d90 x8 = x21 + (zx.q(w8) << 3)
268 @ 00002d94 x10 = [x10].q
269 @ 00002d98 x11 = [x8 + 8].q
270 @ 00002d9c x9 = zx.q((x9 & 7) << 3)
271 @ 00002da0 w12 = 0x38
272 @ 00002da4 x13 = 0xffffffffffffff
273 @ 00002da8 x12 = x12 - x9
274 @ 00002dac x9 = x13 u>> x9
275 @ 00002db0 x10 = x10 << x12
276 @ 00002db4 x9 = x11 & x9
277 @ 00002db8 x9 = x9 | x10
278 @ 00002dbc goto 499 @ 0x3a74
279 @ 00003290 w9 = [x9].d
280 @ 00003294 goto 501 @ 0x3a70
281 @ 00003298 x10 = x9 & 0xfffffffffffffffc
282 @ 0000329c x8 = x21 + (zx.q(w8) << 3)
283 @ 000032a0 w10 = [x10].d
284 @ 000032a4 w11 = [x8 + 8].d
285 @ 000032a8 w9 = zx.d((w9 & 3) << 3)
286 @ 000032ac w12 = 0x20
287 @ 000032b0 w12 = w12 - w9
288 @ 000032b4 w13 = -1
289 @ 000032b8 w12 = w13 << w12
290 @ 000032bc w9 = w10 u>> w9
291 @ 000032c0 w10 = w11 & w12
292 @ 000032c4 w9 = w10 | w9
293 @ 000032c8 goto 499 @ 0x3a74
294 @ 000032cc x9 = sx.q([x9].w)
295 @ 000032d0 goto 501 @ 0x3a70
296 @ 000032d4 w9 = zx.d([x9].w)
297 @ 000032d8 goto 501 @ 0x3a70
298 @ 000032dc w9 = zx.d([x9].b)
299 @ 000032e0 goto 501 @ 0x3a70
300 @ 000032e4 x10 = x9 & 0xfffffffffffffffc
301 @ 000032e8 x8 = x21 + (zx.q(w8) << 3)
302 @ 000032ec w10 = [x10].d
303 @ 000032f0 w11 = [x8 + 8].d
304 @ 000032f4 w9 = zx.d((w9 & 3) << 3)
305 @ 000032f8 w12 = 0x18
306 @ 000032fc w13 = 0xffffff
307 @ 00003300 w12 = w12 - w9
308 @ 00003304 w9 = w13 u>> w9
309 @ 00003308 w10 = w10 << w12
310 @ 0000330c w9 = w11 & w9
311 @ 00003310 w9 = w9 | w10
312 @ 00003314 goto 499 @ 0x3a74
313 @ 00003318 x9 = [x9].q
314 @ 0000331c goto 501 @ 0x3a70
315 @ 00003320 x9 = sx.q([x9].b)
316 @ 00003324 goto 501 @ 0x3a70
317 @ 00003328 x10 = x9 & 0xfffffffffffffff8
318 @ 0000332c x8 = x21 + (zx.q(w8) << 3)
319 @ 00003330 x10 = [x10].q
320 @ 00003334 x11 = [x8 + 8].q
321 @ 00003338 x9 = zx.q((x9 & 7) << 3)
322 @ 0000333c w12 = 0x40
323 @ 00003340 x12 = x12 - x9
324 @ 00003344 x13 = -1
325 @ 00003348 x12 = x13 << x12
326 @ 0000334c x9 = x10 u>> x9
327 @ 00003350 x10 = x11 & x12
328 @ 00003354 x9 = x10 | x9
329 @ 00003358 goto 499 @ 0x3a74
330 @ 0000335c x9 = sx.q([x9].d)
331 @ 00003360 goto 501 @ 0x3a70
332 @ 00002dd0 w3 = w12 & &data_f000
333 @ 00002dd4 w2 = zx.d(w12 u>> 6 & 0x3f)
334 @ 00002dd8 w3 = (w3 & 0xfffff000) | (w18 & 0xfff00000) u>> 0x14
335 @ 00002ddc w18 = w3 | w2
336 @ 00002de0 x1 = sx.q([x28 + (x1 << 2)].d)
337 @ 00002de4 w17 = w18 | w17 u>> 0x14
338 @ 00002de8 w16 = w17 | w16 u>> 0x14
339 @ 00002dec w15 = w16 | w15 u>> 0x14
340 @ 00002df0 w14 = w15 | w14 u>> 0x14
341 @ 00002df4 w13 = w14 | w13 u>> 0x14
342 @ 00002df8 x14 = x1 + x28
343 @ 00002dfc w10 = 0
344 @ 00002e00 x11 = 0
345 @ 00002e04 w13 = (w13 & 0xffff) << 0x10 s>> 0xe
346 @ 00002e08 jump(x14 => 503 @ 0x2e0c, 506 @ 0x2e14, 508 @ 0x3364, 510 @ 0x3368, 76 @ 0x3a78)
347 @ 00002e9c x10 = x9 & 0xfffffffffffffffc
348 @ 00002ea0 x8 = x21 + (zx.q(w8) << 3)
349 @ 00002ea4 w8 = [x8 + 8].d
350 @ 00002ea8 w11 = [x10].d
351 @ 00002eac w9 = zx.d((w9 & 3) << 3)
352 @ 00002eb0 w12 = 0x20
353 @ 00002eb4 w12 = w12 - w9
354 @ 00002eb8 w13 = -1
355 @ 00002ebc w12 = w13 u>> w12
356 @ 00002ec0 w8 = w8 << w9
357 @ 00002ec4 w9 = w11 & w12
358 @ 00002ec8 goto 516 @ 0x33bc
359 @ 00003380 x8 = x21 + (zx.q(w8) << 3)
360 @ 00003384 x8 = [x8 + 8].q
361 @ 00003388 [x9].q = x8
362 @ 0000338c goto 76 @ 0x3a78
363 @ 00003390 x10 = x9 & 0xfffffffffffffffc
364 @ 00003394 x8 = x21 + (zx.q(w8) << 3)
365 @ 00003398 w8 = [x8 + 8].d
366 @ 0000339c w11 = [x10].d
367 @ 000033a0 w9 = zx.d((w9 & 3) << 3)
368 @ 000033a4 w12 = 0x18
369 @ 000033a8 w13 = 0xffffff00
370 @ 000033ac w12 = w12 - w9
371 @ 000033b0 w9 = w13 << w9
372 @ 000033b4 w8 = w8 u>> w12
373 @ 000033b8 w9 = w11 & w9
374 @ 000033b8 goto 516 @ 0x33bc
375 @ 000033c8 x8 = x21 + (zx.q(w8) << 3)
376 @ 000033cc w8 = [x8 + 8].d
377 @ 000033d0 [x9].b = w8.b
378 @ 000033d4 goto 76 @ 0x3a78
379 @ 000033d8 x10 = x9 & 0xfffffffffffffff8
380 @ 000033dc x8 = x21 + (zx.q(w8) << 3)
381 @ 000033e0 x8 = [x8 + 8].q
382 @ 000033e4 x11 = [x10].q
383 @ 000033e8 x9 = zx.q((x9 & 7) << 3)
384 @ 000033ec w12 = 0x38
385 @ 000033f0 x13 = -0x100
386 @ 000033f4 x12 = x12 - x9
387 @ 000033f8 x9 = x13 << x9
388 @ 000033fc x8 = x8 u>> x12
389 @ 00003400 x9 = x11 & x9
390 @ 00003404 goto 519 @ 0x3454
391 @ 00003408 x8 = x21 + (zx.q(w8) << 3)
392 @ 0000340c w8 = [x8 + 8].d
393 @ 00003410 [x9].d = w8
394 @ 00003414 goto 76 @ 0x3a78
395 @ 00003418 x8 = x21 + (zx.q(w8) << 3)
396 @ 0000341c w8 = [x8 + 8].d
397 @ 00003420 [x9].w = w8.w
398 @ 00003424 goto 76 @ 0x3a78
399 @ 00003428 x10 = x9 & 0xfffffffffffffff8
400 @ 0000342c x8 = x21 + (zx.q(w8) << 3)
401 @ 00003430 x8 = [x8 + 8].q
402 @ 00003434 x11 = [x10].q
403 @ 00003438 x9 = zx.q((x9 & 7) << 3)
404 @ 0000343c w12 = 0x40
405 @ 00003440 x12 = x12 - x9
406 @ 00003444 x13 = -1
407 @ 00003448 x12 = x13 u>> x12
408 @ 0000344c x8 = x8 << x9
409 @ 00003450 x9 = x11 & x12
410 @ 00003450 goto 519 @ 0x3454
411 @ 00003478 w9 = w10 << 0x10
412 @ 0000347c x9 = sx.q(w9)
413 @ 00003480 goto 501 @ 0x3a70
414 @ 0000302c if (w11 != 0x3f) then 76 @ 0x3a78 else 522 @ 0x3030
415 @ 00003460 x11 = x21 + 8
416 @ 00003464 x9 = [x11 + (zx.q(w9) << 3)].q
417 @ 00003468 w10 = w10 & 0xffff
418 @ 0000346c x9 = x9 | x10
419 @ 00003470 [x11 + (zx.q(w8) << 3)].q = x9
420 @ 00003474 goto 76 @ 0x3a78
421 @ 00002f08 if (w11 != 0x33) then 76 @ 0x3a78 else 528 @ 0x2f0c
422 @ 00002f60 if (w11 != 0x11) then 76 @ 0x3a78 else 534 @ 0x2f64
423 @ 00002f90 w3 = w12 & 0x3fff000
424 @ 00002f94 w2 = zx.d(w12 u>> 6 & 0x3f)
425 @ 00002f98 x22 = &data_a000
426 @ 00002f9c w3 = (w3 & 0xfffff000) | (w18 & 0xfff00000) u>> 0x14
427 @ 00002fa0 x22 = x22 + 0xa2c
428 @ 00002fa4 w18 = w3 | w2
429 @ 00002fa8 x1 = sx.q([x22 + (x1 << 2)].d)
430 @ 00002fac w17 = w18 | w17 u>> 0x14
431 @ 00002fb0 w16 = w17 | w16 u>> 0x14
432 @ 00002fb4 w15 = w16 | w15 u>> 0x14
433 @ 00002fb8 w14 = w15 | w14 u>> 0x14
434 @ 00002fbc w13 = w14 | w13 u>> 0x14
435 @ 00002fc0 x14 = x1 + x22
436 @ 00002fc4 w10 = 0
437 @ 00002fc8 x11 = 0
438 @ 00002fcc w13 = w13 << 2
439 @ 00002fd0 jump(x14 => 541 @ 0x2fd4, 544 @ 0x2fdc, 508 @ 0x3364, 510 @ 0x3368, 76 @ 0x3a78)
440 @ 00004138 if (w13 s<= 0x38a) then 551 @ 0x4190 else 552 @ 0x4140
441 @ 00003ec0 if (w13 s> 0xcca) then 553 @ 0x4168 else 554 @ 0x3ec8
442 @ 000030b8 w11 = w12 & 0xfff
443 @ 000030c0 if (w11 s<= 0x44a) then 555 @ 0x3954 else 556 @ 0x30c8
444 @ 00003860 w9 = w12 & w7
445 @ 00003864 w12 = w7 - 0x8b4
446 @ 0000386c if (w9 == w12) then 557 else 559
447 @ 0000388c if (w13 s> 0xd0a) then 561 @ 0x38bc else 565 @ 0x3894
448 @ 000038f8 w11 = w12 & 0xfff
449 @ 00003900 if (w11 s> 0x78a) then 566 @ 0x3b74 else 567 @ 0x3908
450 @ 00003ab0 w11 = w6 + 0xff4
451 @ 00003ab4 w11 = w12 & w11
452 @ 00003ab8 w12 = w6 + 0x340
453 @ 00003ac0 if (w11 == w12) then 568 else 570
454 @ 00003dc4 w11 = w6 + 0xff4
455 @ 00003dc8 w11 = w12 & w11
456 @ 00003dc8 goto 572 @ 0x3dd0
457 @ 00003dd8 if (w13 s> 0xa4a) then 573 @ 0x3e10 else 577 @ 0x3de0
458 @ 00003ef0 x11 = x21 + 8
459 @ 00003ef4 x9 = [x11 + (zx.q(w9) << 3)].q
460 @ 00003ef8 x8 = [x11 + (zx.q(w8) << 3)].q
461 @ 00003efc cond:3 = x9 s>= x8
462 @ 00003f00 x8 = x11 + (zx.q(w10) << 3)
463 @ 00003f04 if (cond:3) then 578 @ 0x3f30 else 580 @ 0x3f08
464 @ 00003f10 w9 = w12 & w7
465 @ 00003f14 goto 582 @ 0x387c
466 @ 00003f18 x11 = x21 + 8
467 @ 00003f1c x9 = [x11 + (zx.q(w9) << 3)].q
468 @ 00003f20 x8 = [x11 + (zx.q(w8) << 3)].q
469 @ 00003f24 cond:4 = x9 u< x8
470 @ 00003f28 x8 = x11 + (zx.q(w10) << 3)
471 @ 00003f2c if (cond:4) then 580 @ 0x3f08 else 578 @ 0x3f30
472 @ 00003f38 if (x1 != 0) then 76 @ 0x3a78 else 584 @ 0x3f3c
473 @ 00003fb4 w9 = w12 & w7
474 @ 00003fb8 goto 588 @ 0x3870
475 @ 000037bc x10 = x21 + 8
476 @ 000037c0 x9 = x9 << 3
477 @ 000037c4 x8 = x8 << 3
478 @ 000037c8 w11 = [x19 - 0x28].d
479 @ 000037cc w12 = [x19 - 0x30].d
480 @ 000037d0 w9 = [x10 + x9].d
481 @ 000037d4 w8 = [x10 + x8].d
482 @ 000037d4 goto 590 @ 0x37d8
483 @ 000035a4 if (w11 != 0x34e) then 76 @ 0x3a78 else 593 @ 0x35a8
484 @ 00003774 x10 = x21 + 8
485 @ 00003778 x9 = x9 << 3
486 @ 0000377c x8 = x8 << 3
487 @ 00003780 w11 = [x19 - 0x28].d
488 @ 00003784 w12 = [x19 - 0x30].d
489 @ 00003788 x9 = sx.q([x10 + x9].d)
490 @ 0000378c x8 = sx.q([x10 + x8].d)
491 @ 00003790 goto 590 @ 0x37d8
492 @ 00003100 if (w11 == 0xb8e) then 601 @ 0x3794 else 609 @ 0x3108 {"\rJL9"}
493 @ 0000315c if (x1 != 0) then 76 @ 0x3a78 else 610 @ 0x3160
494 @ 0000369c if (w13 == 0x969) then 626 @ 0x3700 else 634 @ 0x36a4
495 @ 00003580 if (w13 == 0xd29) then 635 @ 0x3a3c else 637 @ 0x3588 {"!@9)m\x1bRI!"}
496 @ 00003688 if (w13 == 0x2a9) then 638 @ 0x3a40 else 640 @ 0x3690
497 @ 00003238 if (w13 == 0x3a9) then 641 @ 0x39b0 else 643 @ 0x3240
498 @ 00003c5c goto 33 @ 0x4428
499 @ 00003a74 [x8 + 8].q = x9
500 @ 00003a74 goto 76 @ 0x3a78
501 @ 00003a70 x8 = x21 + (zx.q(w8) << 3)
502 @ 00003a70 goto 499 @ 0x3a74
503 @ 00002e0c x8 = x21 + (zx.q(w8) << 3)
504 @ 00002e10 x11 = [x8 + 8].q
505 @ 00002e10 goto 506 @ 0x2e14
506 @ 00002e14 w8 = w12 & 0x3f
507 @ 00002e1c if (w8 u> 0x3d) then 76 @ 0x3a78 else 644 @ 0x2e20
508 @ 00003364 w10 = 0x1f
509 @ 00003364 goto 510 @ 0x3368
510 @ 00003368 x8 = [x19 - 8].q
511 @ 0000336c w11 = 0
512 @ 00003370 w9 = 0
513 @ 00003374 w12 = 1
514 @ 00003378 x8 = x8 + zx.q(w13)
515 @ 0000337c goto 651 @ 0x3514
516 @ 000033bc w8 = w9 | w8
517 @ 000033c0 [x10].d = w8
518 @ 000033c4 goto 76 @ 0x3a78
519 @ 00003454 x8 = x9 | x8
520 @ 00003458 [x10].q = x8
521 @ 0000345c goto 76 @ 0x3a78
522 @ 00003030 x11 = x21 + 8
523 @ 00003034 x9 = [x11 + (zx.q(w9) << 3)].q
524 @ 00003038 w10 = w10 & 0xffff
525 @ 0000303c x9 = x9 & x10
526 @ 00003040 [x11 + (zx.q(w8) << 3)].q = x9
527 @ 00003044 goto 76 @ 0x3a78
528 @ 00002f0c x11 = x21 + 8
529 @ 00002f10 x9 = [x11 + (zx.q(w9) << 3)].q
530 @ 00002f14 w10 = w10 & 0xffff
531 @ 00002f18 x9 = x9 ^ x10
532 @ 00002f1c [x11 + (zx.q(w8) << 3)].q = x9
533 @ 00002f20 goto 76 @ 0x3a78
534 @ 00002f64 x11 = x21 + 8
535 @ 00002f68 x9 = x9 << 3
536 @ 00002f6c x9 = sx.q([x11 + x9].d)
537 @ 00002f70 w10 = sx.d(w10.w)
538 @ 00002f74 x9 = x9 + sx.q(w10)
539 @ 00002f78 [x11 + (zx.q(w8) << 3)].q = x9
540 @ 00002f7c goto 76 @ 0x3a78
541 @ 00002fd4 x8 = x21 + (zx.q(w8) << 3)
542 @ 00002fd8 x11 = [x8 + 8].q
543 @ 00002fd8 goto 544 @ 0x2fdc
544 @ 00002fdc x9 = x21 + (zx.q(w9) << 3)
545 @ 00002fe0 x9 = [x9 + 8].q
546 @ 00002fe4 x8 = x0 + sx.q(w13)
547 @ 00002fe8 w10 = w12 & 0x3f
548 @ 00002fec cond:5 = w10 s<= 0x38
549 @ 00002ff0 x8 = x8 + 4
550 @ 00002ff4 if (cond:5) then 655 @ 0x3558 else 656 @ 0x2ffc
551 @ 00004190 if (w13 == 0x10b) then 657 @ 0x4324 else 664 @ 0x4198
552 @ 00004140 if (w13 s> 0x54a) then 665 @ 0x41ec else 666 @ 0x4148 {".so"}
553 @ 00004168 if (w13 s> 0xf0a) then 667 @ 0x420c else 668 @ 0x4170
554 @ 00003ec8 if (w13 s> 0x88a) then 669 @ 0x41c4 else 670 @ 0x3ed0
555 @ 00003954 if (w11 s> 0x20a) then 671 @ 0x3bc8 else 672 @ 0x395c
556 @ 000030c8 if (w11 s<= 0x90a) then 673 @ 0x3b9c else 674 @ 0x30d0
557 @ 0000386c w13 = w12
558 @ 0000386c goto 675
559 @ 0000386c w13 = w13
560 @ 0000386c goto 675
561 @ 000038bc w9 = 0x74a
562 @ 000038c0 w9 = w9 & 0xffff
563 @ 000038c0 w9 = w9 | 0x200000
564 @ 000038c8 if (w13 s> w9) then 676 @ 0x3b30 else 680 @ 0x38d0
565 @ 00003894 if (w13 s> 0x94a) then 681 @ 0x3b08 else 682 @ 0x389c
566 @ 00003b74 if (w11 == 0x78b) then 683 @ 0x3fe4 else 690 @ 0x3b7c
567 @ 00003908 if (w11 == 0xcb) then 691 @ 0x3fcc else 697 @ 0x3910
568 @ 00003ac0 w13 = w12
569 @ 00003ac0 goto 698 @ 0x3ac4
570 @ 00003ac0 w13 = w13
571 @ 00003ac0 goto 698 @ 0x3ac4
572 @ 00003dd0 if (w11 == w6) then 699 else 701
573 @ 00003e10 w11 = 0xa
574 @ 00003e14 w11 = w11 & 0xffff
575 @ 00003e14 w11 = w11 | 0x4000000
576 @ 00003e1c if (w13 s> w11) then 703 @ 0x3e80 else 704 @ 0x3e24
577 @ 00003de0 if (w13 s> 0x6ca) then 705 @ 0x3e54 else 706 @ 0x3de8
578 @ 00003f30 [x8].q = 0
579 @ 00003f34 goto 76 @ 0x3a78
580 @ 00003f08 [x8].q = x24
581 @ 00003f0c goto 76 @ 0x3a78
582 @ 0000387c w12 = w7 - 0x6b4
583 @ 00003884 if (w9 == w12) then 707 else 709
584 @ 00003f3c w8 = w12 & 0xfff
585 @ 00003f40 cond:6 = w8 u> 0x3d
586 @ 00003f44 w13 = 0
587 @ 00003f48 if (cond:6) then 711 @ 0x41b0 else 712 @ 0x3f4c
588 @ 00003870 w12 = w7 - 0x374
589 @ 00003878 if (w9 == w12) then 718 else 720
590 @ 000037d8 x12 = (0xffffffff & x12) | (0xffffffff & x11) << 0x20
591 @ 000037dc x8 = x12 - x8 * x9
592 @ 000037dc goto 722 @ 0x37e0
593 @ 000035a8 x10 = x21 + 8
594 @ 000035ac x9 = x9 << 3
595 @ 000035b0 x8 = x8 << 3
596 @ 000035b4 w11 = [x19 - 0x28].d
597 @ 000035b8 w12 = [x19 - 0x30].d
598 @ 000035bc x9 = sx.q([x10 + x9].d)
599 @ 000035c0 x8 = sx.q([x10 + x8].d)
600 @ 000035c4 goto 725 @ 0x37b0
601 @ 00003794 x10 = x21 + 8
602 @ 00003798 x9 = x9 << 3
603 @ 0000379c x8 = x8 << 3
604 @ 000037a0 w11 = [x19 - 0x28].d
605 @ 000037a4 w12 = [x19 - 0x30].d
606 @ 000037a8 w9 = [x10 + x9].d
607 @ 000037ac w8 = [x10 + x8].d
608 @ 000037ac goto 725 @ 0x37b0
609 @ 00003108 if (w11 != 0xd8e) then 76 @ 0x3a78 else 728 @ 0x310c
610 @ 00003160 w10 = zx.d(w12 u>> 6 & 0x3f)
611 @ 00003164 w12 = w12 & &data_f000
612 @ 00003168 w12 = (w12 & 0xfffff000) | (w18 & 0xfff00000) u>> 0x14
613 @ 0000316c w10 = w12 | w10
614 @ 00003170 w10 = w10 | w17 u>> 0x14
615 @ 00003174 w10 = w10 | w16 u>> 0x14
616 @ 00003178 w10 = w10 | w15 u>> 0x14
617 @ 0000317c w10 = w10 | w14 u>> 0x14
618 @ 00003180 w12 = 0x18
619 @ 00003184 w11 = w8 & 0x1fffff
620 @ 00003188 w10 = w10 | w13 u>> 0x14
621 @ 0000318c w12 = w12 & 0xffff
622 @ 0000318c w12 = w12 | 0x20000
623 @ 00003190 cond:7 = w11 s> w12
624 @ 00003194 w12 = (w10 & 0xffff) << 0x10 s>> 0xe
625 @ 00003198 if (cond:7) then 736 @ 0x35c8 else 740 @ 0x31a0
626 @ 00003700 w9 = 0xfff
627 @ 00003704 w9 = w9 & 0xffff
628 @ 00003704 w9 = w9 | 0x7c000000
629 @ 00003708 w11 = 0x2e8
630 @ 0000370c w9 = w12 & w9
631 @ 00003710 w11 = w11 & 0xffff
632 @ 00003710 w11 = w11 | 0x28000000
633 @ 00003718 if (w9 s<= w11) then 741 @ 0x3acc else 742 @ 0x371c
634 @ 000036a4 if (w13 != 0xc29) then 76 @ 0x3a78 else 746 @ 0x36a8
635 @ 00003a3c w11 = w11 | 0x20
636 @ 00003a3c goto 638 @ 0x3a40
637 @ 00003588 if (w13 == 0xd69) then 748 @ 0x36b4 else 749 @ 0x3590
638 @ 00003a40 w12 = w11 + w10
639 @ 00003a48 if (w12 s> 0x3f) then 76 @ 0x3a78 else 750 @ 0x3a4c
640 @ 00003690 if (w13 == 0x2e9) then 626 @ 0x3700 else 753 @ 0x3694
641 @ 000039b0 w12 = w10 + w11
642 @ 000039b8 if (w12 u> 0x1f) then 76 @ 0x3a78 else 754 @ 0x39bc
643 @ 00003240 if (w13 == 0x5e9) then 757 @ 0x39e8 else 758 @ 0x3248
644 @ 00002e20 x8 = sx.q([x26 + (x8 << 2)].d)
645 @ 00002e24 x9 = x21 + (zx.q(w9) << 3)
646 @ 00002e28 x10 = [x9 + 8].q
647 @ 00002e2c w9 = w13 + 4
648 @ 00002e30 x12 = x8 + x26
649 @ 00002e34 x8 = x0 + sx.q(w9)
650 @ 00002e38 jump(x12 => 759 @ 0x2e40, 760 @ 0x3484, 763 @ 0x3494, 766 @ 0x34a8, 767 @ 0x34b0, 769 @ 0x34c0, 770 @ 0x34d0, 771 @ 0x34d8, 774 @ 0x34f4, 76 @ 0x3a78)
651 @ 00003514 w13 = w9 != 0 ? 1 : 0
652 @ 00003518 w11 = w11 & w13
653 @ 0000351c [x19 - 0x18].q = x8
654 @ 00003520 if ((w11 & 1) != 0) then 777 @ 0x3534 else 778 @ 0x3524
655 @ 00003558 if (w10 == 0) then 779 @ 0x367c else 780 @ 0x3560
656 @ 00002ffc if (w10 == 0x39) then 781 @ 0x3660 else 782 @ 0x3004
657 @ 00004324 x10 = x21 + 8
658 @ 00004328 x9 = x9 << 3
659 @ 0000432c x8 = x8 << 3
660 @ 00004330 w9 = [x10 + x9].d
661 @ 00004334 w8 = [x10 + x8].d
662 @ 00004338 w10 = divs.d(w9, w8)
663 @ 0000433c goto 783 @ 0x4398
664 @ 00004198 if (w13 == 0x24b) then 787 @ 0x4340 else 790 @ 0x41a0
665 @ 000041ec if (w13 == 0x54b) then 791 @ 0x4380 else 798 @ 0x41f4 {"so"}
666 @ 00004148 if (w13 == 0x38b) then 799 @ 0x42f8 else 802 @ 0x4150
667 @ 0000420c if (w13 == 0xf0b) then 803 @ 0x43a8 else 808 @ 0x4214
668 @ 00004170 if (w13 == 0xccb) then 809 @ 0x4308 else 814 @ 0x4178
669 @ 000041c4 if (w13 == 0x88b) then 815 @ 0x435c else 821 @ 0x41cc
670 @ 00003ed0 if (w13 == 0x70b) then 822 @ 0x42e4 else 827 @ 0x3ed8
671 @ 00003bc8 if (w11 == 0x20b) then 828 @ 0x3d60 else 834 @ 0x3bd0
672 @ 0000395c if (w11 == 0x4b) then 835 @ 0x3968 else 842 @ 0x3964
673 @ 00003b9c if (w11 == 0x44b) then 843 @ 0x3ba8 else 850 @ 0x3ba4
674 @ 000030d0 if (w11 == 0x90b) then 851 @ 0x3bd4 else 857 @ 0x30d8
675 @ 0000386c goto 588 @ 0x3870
676 @ 00003b30 w9 = 0x74b
677 @ 00003b34 w9 = w9 & 0xffff
678 @ 00003b34 w9 = w9 | 0x200000
679 @ 00003b3c if (w13 == w9) then 858 @ 0x4080 else 861 @ 0x3b40
680 @ 000038d0 if (w13 == 0xd0b) then 865 @ 0x4028 else 868 @ 0x38d8
681 @ 00003b08 if (w13 == 0x94b) then 869 @ 0x4058 else 874 @ 0x3b10
682 @ 0000389c if (w13 == 0x64b) then 875 @ &data_4000 else 880 @ 0x38a4
683 @ 00003fe4 x11 = x21 + 8
684 @ 00003fe8 x9 = [x11 + (zx.q(w9) << 3)].q
685 @ 00003fec x8 = [x11 + (zx.q(w8) << 3)].q
686 @ 00003ff0 x8 = x8 | x9
687 @ 00003ff4 x8 = not.q(x8)
688 @ 00003ff8 [x11 + (zx.q(w10) << 3)].q = x8
689 @ 00003ffc goto 76 @ 0x3a78
690 @ 00003b7c if (w11 != 0xb8b) then 76 @ 0x3a78 else 881 @ 0x3b80
691 @ 00003fcc x11 = x21 + 8
692 @ 00003fd0 x9 = [x11 + (zx.q(w9) << 3)].q
693 @ 00003fd4 x8 = [x11 + (zx.q(w8) << 3)].q
694 @ 00003fd8 x8 = x8 & x9
695 @ 00003fdc [x11 + (zx.q(w10) << 3)].q = x8
696 @ 00003fe0 goto 76 @ 0x3a78
697 @ 00003910 if (w11 != 0x1cb) then 76 @ 0x3a78 else 887 @ 0x3914
698 @ 00003ac4 goto 572 @ 0x3dd0
699 @ 00003dd0 w13 = w6
700 @ 00003dd0 goto 893
701 @ 00003dd0 w13 = w13
702 @ 00003dd0 goto 893
703 @ 00003e80 if (w13 == w6) then 894 @ 0x410c else 902 @ 0x3e84
704 @ 00003e24 if (w13 == 0xa4b) then 906 @ 0x40d0 else 913 @ 0x3e2c
705 @ 00003e54 if (w13 == 0x6cb) then 914 @ 0x40ec else 922 @ 0x3e5c
706 @ 00003de8 if (w13 == 0xb) then 923 @ 0x40b0 else 931 @ 0x3df0
707 @ 00003884 w13 = w12
708 @ 00003884 goto 932
709 @ 00003884 w13 = w13
710 @ 00003884 goto 932
711 @ 000041b0 if (w8 == 0xacb) then 933 @ 0x43c4 else 935 @ 0x41b8
712 @ 00003f4c x14 = &data_a000
713 @ 00003f50 x14 = x14 + 0xe9c
714 @ 00003f54 x8 = sx.q([x14 + (x8 << 2)].d)
715 @ 00003f58 x8 = x8 + x14
716 @ 00003f5c x14 = 0
717 @ 00003f60 jump(x8 => 76 @ 0x3a78, 936 @ 0x3f64, 939 @ 0x3f6c, 941 @ 0x423c, 943 @ 0x4240)
718 @ 00003878 w13 = w12
719 @ 00003878 goto 949
720 @ 00003878 w13 = w13
721 @ 00003878 goto 949
722 @ 000037e0 x9 = x8 & 0xffffffff
723 @ 000037e4 x8 = x8 u>> 0x20
724 @ 000037e4 goto 950 @ 0x37e8
725 @ 000037b0 x12 = (0xffffffff & x12) | (0xffffffff & x11) << 0x20
726 @ 000037b4 x8 = x12 + x8 * x9
727 @ 000037b8 goto 722 @ 0x37e0
728 @ 0000310c x9 = x9 << 3
729 @ 00003110 x11 = x21 + 8
730 @ 00003114 x8 = x8 << 3
731 @ 00003118 x8 = sx.q([x11 + x8].d)
732 @ 0000311c x9 = sx.q([x11 + x9].d)
733 @ 00003120 x8 = x8 * x9
734 @ 00003124 [x11 + (zx.q(w10) << 3)].q = x8
735 @ 00003128 goto 76 @ 0x3a78
736 @ 000035c8 w10 = 0x18
737 @ 000035cc w10 = w10 & 0xffff
738 @ 000035cc w10 = w10 | 0x100000
739 @ 000035d4 if (w11 s<= w10) then 953 @ 0x37f0 else 957 @ 0x35d8
740 @ 000031a0 if (w11 u> 0x3d) then 76 @ 0x3a78 else 961 @ 0x31a4
741 @ 00003acc if (w9 == 0x2e9) then 969 @ 0x3db0 else 974 @ 0x3ad0
742 @ 0000371c w11 = 0x2e9
743 @ 00003720 w11 = w11 & 0xffff
744 @ 00003720 w11 = w11 | 0x28000000
745 @ 00003728 if (w9 == w11) then 978 @ 0x3d78 else 983 @ 0x372c
746 @ 000036a8 w11 = w11 | 0x20
747 @ 000036a8 goto 987 @ 0x36ac
748 @ 000036b4 if (w10 s< w11) then 76 @ 0x3a78 else 989 @ 0x36b8
749 @ 00003590 if (w13 == 0xda9) then 987 @ 0x36ac else 1007 @ 0x3594
750 @ 00003a4c x9 = x21 + (zx.q(w9) << 3)
751 @ 00003a50 x9 = [x9 + 8].q
752 @ 00003a58 if (w10 == 0x3f) then 501 @ 0x3a70 else 1008 @ 0x3a5c
753 @ 00003694 goto 76 @ 0x3a78
754 @ 000039bc x9 = x21 + (zx.q(w9) << 3)
755 @ 000039c0 w9 = [x9 + 8].d
756 @ 000039c8 if (w10 == 0x1f) then 1014 @ 0x39dc else 1016 @ 0x39cc
757 @ 000039e8 if (w10 u< w11) then 76 @ 0x3a78 else 1021 @ 0x39ec
758 @ 00003248 if (w13 != 0x669) then 76 @ 0x3a78 else 1041 @ 0x324c
759 @ 00002e40 if (x10 s<= 0) then 1043 @ 0x34c4 else 1045 @ 0x2e44
760 @ 00003484 cond:8 = x10 == x11
761 @ 00003488 w9 = 1
762 @ 0000348c if (cond:8) then 1048 @ 0x34e4 else 1050 @ 0x3490
763 @ 00003494 cond:9 = x10 != x11
764 @ 00003498 w9 = 1
765 @ 0000349c if (cond:9) then 1048 @ 0x34e4 else 1051 @ 0x34a0
766 @ 000034a8 if (x10 == x11) then 1045 @ 0x2e44 else 1052 @ 0x34ac
767 @ 000034b0 w9 = 1
768 @ 000034b4 if ((x10 & 0xffffffff80000000) == 0) then 1048 @ 0x34e4 else 1053 @ 0x34b8
769 @ 000034c0 if (x10 s< 1) then 1045 @ 0x2e44 else 1043 @ 0x34c4
770 @ 000034d0 if (x10 == x11) then 1043 @ 0x34c4 else 1054 @ 0x34d4
771 @ 000034d8 cond:10 = x10 s<= 0
772 @ 000034dc w9 = 1
773 @ 000034e0 if (cond:10) then 1055 @ 0x3500 else 1048 @ 0x34e4
774 @ 000034f4 cond:11 = x10 s< 1
775 @ 000034f8 w9 = 1
776 @ 000034fc if (cond:11) then 1048 @ 0x34e4 else 1055 @ 0x3500
777 @ 00003534 if (w11 == 0) then 1060 else 1062
778 @ 00003524 if (w9 == 0) then 777 @ 0x3534 else 1064 @ 0x3528
779 @ 0000367c if (x9 s> 0) then 1045 @ 0x2e44 else 1066 @ 0x3680
780 @ 00003560 if (w10 != 0xa) then 76 @ 0x3a78 else 1067 @ 0x3564