-
Notifications
You must be signed in to change notification settings - Fork 1
/
disassembly.txt
1309 lines (1221 loc) · 64.9 KB
/
disassembly.txt
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
//disassembled by ...?
//analyzed, annotated and cleaned up by antony.kikaxa
//summary: there is no follow-up code beyond "keep going" stage
//see frag*(0,1...) functions for general quest flow
//this probably was written in asm, or using custom/non-optimizing compiler. there are some pretty fun disassembly pieces :)
//there are 3 unused subroutines, the biggest of which is 0x4538, but nothing too interesting
//one unexplained point is the purpose of the BIG function at 0x4b18: why it gets disabled at the end of the quest?
//why not just use the usual [] for dereferencing..?
// = addr/value
// == value-at-addr
rCode = 0x4400
//rCall == 0x7400
//rParam == 0xd400
//rEntity == 0xd400
rStack = 0xd400 //mostly locals, not really stack
rParam = 0x97F0
//rHeap = 0x1d400
fragExecMark = 0x6666
fragExecPtr == 0x664C
fragSkullBase = 0x60f0
fragSkullBaseRel = 0x1cf0
fragSkullMark = 0x6177
fragSkullMarkRel = 0x87
fragSkullPwdBase = 0x6180
fragSkullPwdBaseRel = 0x90
questStateOffset = 0x18 //heap
questStateJumpFlag = 0x80000000 //
questUpdateNextVPtrOffset = 0x1c //heap
start:
0x4400:0x00038a09: mov rText = 0x50
0x4408:0x05008209: mov (u32)(rParam) = rCode
0x440c:0x0000820d: add (u32)(rParam) += 0x3000
0x4414:0x00060a09: mov rCall = (u32)(rParam)
0x4418:0x0000820d: add (u32)(rParam) += 0x6000
0x4420:0x00020a09: mov (rParam) = (u32)(rStack)
0x4424:0x02008209: mov (u32)(rStack) = (rParam)
0x4428:0x0000820d: add (u32)(rStack) += 0x10000
0x4430:0x00040a09: mov rEntity = (u32)(rStack)
0x4434:0x0000820d: add (u32)(rStack) += 0x10000
0x443c:0x00010a09: mov rHeap = (u32)(rStack)
0x4440:0x0000820b: jmp 0x4448
0x4448:0x01008008: unk getSrc() = 0x1
0x444c:0x0000820b: jmp main
//main continues init from here
0x4454:0x00008209: mov (u32)(rStack) = 0x80000000
0x445c:0x0000821f: call 0x44cc
0x4464:0x01008002: wait 0x1
0x4468:0x0000821f: call 0x448c
0x4470:0x00008211: and (u32)(rStack) &= 0x80000000
0x4478:0x0000820a: cmp 0x0 , (u32)(rStack)
0x4480:0x0004820b: jmp if equal -> 0x4464
0x4488:0x00000020: ret
0x448c:0x00008209: mov (u32)(rStack) = 0x40
0x4494:0x00007209: mov (u32)(rStack) = (u32)((u32)(rStack))
0x4498:0x00008211: and (u32)(rStack) &= 0xff000000
0x44a0:0x00000020: ret
//[0x40] |= 0x20000000
0x44a4:0x00080209: mov (u32)(rStack+0x8) = (u32)(rStack)
0x44a8:0x00088211: and (u32)(rStack+0x8) &= 0xff000000
0x44b0:0x00048209: mov (u32)(rStack+0x4) = 0x40
0x44b8:0x08047a12: or (u32)((u32)(rStack+0x4)) |= (u32)(rStack+0x8)
0x44bc:0x04007209: mov (u32)(rStack) = (u32)((u32)(rStack+0x4))
0x44c0:0x00008211: and (u32)(rStack) &= 0xff000000
0x44c8:0x00000020: ret
0x44cc:0x00048209: mov (u32)(rStack+0x4) = 0x40
0x44d4:0x0008020f: not (u32)(rStack+0x8) = ~(u32)(rStack)
0x44d8:0x08047a11: and (u32)((u32)(rStack+0x4)) &= (u32)(rStack+0x8)
0x44dc:0x04007209: mov (u32)(rStack) = (u32)((u32)(rStack+0x4))
0x44e0:0x00000020: ret
//ret 0x20000000 | [0x40]
setViewAddr:
0x44e4:0x00008209: mov (u32)(rStack) = 0x20000000
0x44ec:0x0000821f: call 0x44a4
0x44f4:0x00000020: ret
0x44f8:0x0000821f: call 0x448c
0x4500:0x00008211: and (u32)(rStack) &= 0x20000000
0x4508:0x0000820a: cmp 0x0 , (u32)(rStack)
0x4510:0x0004820b: jmp if equal -> 0x4524
0x4518:0x01008002: wait 0x1
0x451c:0x0000820b: jmp 0x44f8
0x4524:0x00000020: ret
0x4528:0x00008209: mov (u32)(rStack) = 0x48
0x4530:0x00007209: mov (u32)(rStack) = (u32)((u32)(rStack))
0x4534:0x00000020: ret
//unused sub ?!
0x4538:0x00048209: mov (u32)(rStack+0x4) = 0x40
0x4540:0x04047209: mov (u32)(rStack+0x4) = (u32)((u32)(rStack+0x4))
0x4544:0x04000009: mov (u8)(rStack) = (u8)(rStack+0x4)
0x4548:0x04008015: shr (u8)(rStack) >>>= 4
0x454c:0x04010009: mov (u8)(rStack+0x1) = (u8)(rStack+0x4)
0x4550:0x0f018011: and (u8)(rStack+0x1) &= 0xf
0x4554:0x05020009: mov (u8)(rStack+0x2) = (u8)(rStack+0x5)
0x4558:0x04028015: shr (u8)(rStack+0x2) >>>= 4
0x455c:0x05030009: mov (u8)(rStack+0x3) = (u8)(rStack+0x5)
0x4560:0x0f038011: and (u8)(rStack+0x3) &= 0xf
0x4564:0x00000020: ret
initSomePtrLSB:
0x4568:0x04040210: xor (u32)(rStack+0x4) ^= (u32)(rStack+0x4) //dw[0]=0xd010208
0x456c:0x00040009: mov (u8)(rStack+0x4) = (u8)(rStack) //x8
0x4570:0x04048013: shl (u8)(rStack+0x4) <<= 4 //x80
0x4574:0x01040012: or (u8)(rStack+0x4) |= (u8)(rStack+0x1) //b[4]=x82
0x4578:0x02050009: mov (u8)(rStack+0x5) = (u8)(rStack+0x2) //x2
0x457c:0x04058013: shl (u8)(rStack+0x5) <<= 4 //x20
0x4580:0x03050012: or (u8)(rStack+0x5) |= (u8)(rStack+0x3) //b[5]=x21
0x4584:0x00088209: mov (u32)(rStack+0x8) = 0x40
0x458c:0x0008fa11: and (u32)((u32)(rStack+0x8)) &= 0xffff0000
0x4594:0x04087a12: or (u32)((u32)(rStack+0x8)) |= (u32)(rStack+0x4)
0x4598:0x00000020: ret
0x459c:0x00048209: mov (u32)(rStack+0x4) = 0x44
0x45a4:0x00047a09: mov (u32)((u32)(rStack+0x4)) = (u32)(rStack)
0x45a8:0x00000020: ret
//unused sub ?!
0x45ac:0x00048209: mov (u32)(rStack+0x4) = 0x44
0x45b4:0x04007209: mov (u32)(rStack) = (u32)((u32)(rStack+0x4))
0x45b8:0x00000020: ret
0x45bc:0x00040209: mov (u32)(rStack+0x4) = (u32)(rStack)
0x45c0:0x00060109: mov (u16)(rStack+0x6) = (u16)(rStack)
0x45c4:0x0002821f: call 0x4528
0x45cc:0x0a0c0109: mov (u16)(rStack+0xc) = (u16)(rStack+0xa)
0x45d0:0x000a8109: mov (u16)(rStack+0xa) = (u16)(0x45d4) = 0x0
0x45d8:0x0c08011a: mul (u16)(rStack+0x8) *= (u16)(rStack+0xc)
0x45dc:0x01088213: shl (u32)(rStack+0x8) <<= 1
0x45e0:0x0c0c0210: xor (u32)(rStack+0xc) ^= (u32)(rStack+0xc)
0x45e4:0x040c3a09: mov (u32)(rText + (u32)(rStack+0xc)) = (u32)(rStack+0x4)
0x45e8:0x000c820d: add (u32)(rStack+0xc) += 0x4
0x45f0:0x080c020a: cmp (u32)(rStack+0x8) , (u32)(rStack+0xc)
0x45f4:0x001c820b: jmp if signed > ??? -> 0x45e4
0x45fc:0x00000020: ret
drawMouseCursor:
0x4600:0x000c0209: mov (u32)(rStack+0xc) = (u32)(rStack)
0x4604:0x010c8213: shl (u32)(rStack+0xc) <<= 1
0x4608:0x04100209: mov (u32)(rStack+0x10) = (u32)(rStack+0x4)
0x460c:0x0010821a: mul (u32)(rStack+0x10) *= 0xa0
0x4614:0x100c020d: add (u32)(rStack+0xc) += (u32)(rStack+0x10)
0x4618:0x080c3909: mov (u16)(rText + (u32)(rStack+0xc)) = (u16)(rStack+0x8)
0x461c:0x00000020: ret
0x4620:0x000c0209: mov (u32)(rStack+0xc) = (u32)(rStack)
0x4624:0x010c8213: shl (u32)(rStack+0xc) <<= 1
0x4628:0x04100209: mov (u32)(rStack+0x10) = (u32)(rStack+0x4)
0x462c:0x0010821a: mul (u32)(rStack+0x10) *= 0xa0
0x4634:0x100c020d: add (u32)(rStack+0xc) += (u32)(rStack+0x10)
0x4638:0x0c083109: mov (u16)(rStack+0x8) = (u16)(rText + (u32)(rStack+0xc))
0x463c:0x00000020: ret
drawSidebars:
0x4640:0x000c0209: mov (u32)(rStack+0xc) = (u32)(rStack)
0x4644:0x010c8213: shl (u32)(rStack+0xc) <<= 1
0x4648:0x04100209: mov (u32)(rStack+0x10) = (u32)(rStack+0x4)
0x464c:0x0010821a: mul (u32)(rStack+0x10) *= 0xa0
0x4654:0x100c020d: add (u32)(rStack+0xc) += (u32)(rStack+0x10)
0x4658:0x080c3809: mov (u8)(rText + (u32)(rStack+0xc)) = (u8)(rStack+0x8)
0x465c:0x00000020: ret
drawPosCursor:
0x4660:0x000c0209: mov (u32)(rStack+0xc) = (u32)(rStack)
0x4664:0x010c8213: shl (u32)(rStack+0xc) <<= 1
0x4668:0x04100209: mov (u32)(rStack+0x10) = (u32)(rStack+0x4)
0x466c:0x0010821a: mul (u32)(rStack+0x10) *= 0xa0
0x4674:0x100c020d: add (u32)(rStack+0xc) += (u32)(rStack+0x10)
0x4678:0x000c820d: add (u32)(rStack+0xc) += 0x1
0x4680:0x090c3809: mov (u8)(rText + (u32)(rStack+0xc)) = (u8)(rStack+0x9)
0x4684:0x00000020: ret
0x4688:0x00000210: xor (u32)(rStack) ^= (u32)(rStack)
0x468c:0x00007a09: mov (u32)((u32)(rStack)) = (u32)(rStack)
0x4690:0x00000020: ret
0x4694:0x00000210: xor (u32)(rStack) ^= (u32)(rStack)
0x4698:0x00007209: mov (u32)(rStack) = (u32)((u32)(rStack))
0x469c:0x0000820a: cmp 0x0 , (u32)(rStack)
0x46a4:0x0018820b: jmp if not equal -> 0x46b8
0x46ac:0x01008002: wait 0x1
0x46b0:0x0000820b: jmp 0x4698
0x46b8:0x04040210: xor (u32)(rStack+0x4) ^= (u32)(rStack+0x4)
0x46bc:0x04047a09: mov (u32)((u32)(rStack+0x4)) = (u32)(rStack+0x4)
0x46c0:0x00000020: ret
//unused sub ?!
0x46c4:0x00000210: xor (u32)(rStack) ^= (u32)(rStack)
0x46c8:0x00007209: mov (u32)(rStack) = (u32)((u32)(rStack))
0x46cc:0x00000020: ret
0x46d0:0x00008209: mov (u32)(rStack) = 0x18
0x46d8:0x00047209: mov (u32)(rStack+0x4) = (u32)((u32)(rStack))
0x46dc:0x0400800e: sub (u8)(rStack) -= 0x4
0x46e0:0x00007209: mov (u32)(rStack) = (u32)((u32)(rStack))
0x46e4:0x00000020: ret
0x46e8:0x00008209: mov (u32)(rStack) = 0x1c
0x46f0:0x00007209: mov (u32)(rStack) = (u32)((u32)(rStack))
0x46f4:0x00000020: ret
0x46f8:0x00008209: mov (u32)(rStack) = 0x20
0x4700:0x00007209: mov (u32)(rStack) = (u32)((u32)(rStack))
0x4704:0x00000020: ret
0x4708:0x00008209: mov (u32)(rStack) = 0x10
0x4710:0x00047209: mov (u32)(rStack+0x4) = (u32)((u32)(rStack))
0x4714:0x0800800e: sub (u8)(rStack) -= 0x8
0x4718:0x00087209: mov (u32)(rStack+0x8) = (u32)((u32)(rStack))
0x471c:0x0400800d: add (u8)(rStack) += 0x4
0x4720:0x00007209: mov (u32)(rStack) = (u32)((u32)(rStack))
0x4724:0x00000020: ret
0x4728:0x000c0209: mov (u32)(rStack+0xc) = (u32)(rStack)
0x472c:0x04100209: mov (u32)(rStack+0x10) = (u32)(rStack+0x4)
0x4730:0x14140210: xor (u32)(rStack+0x14) ^= (u32)(rStack+0x14)
0x4734:0x08140009: mov (u8)(rStack+0x14) = (u8)(rStack+0x8)
0x4738:0x08150009: mov (u8)(rStack+0x15) = (u8)(rStack+0x8)
0x473c:0x0f158011: and (u8)(rStack+0x15) &= 0xf
0x4740:0x04148014: asr (u8)(rStack+0x14) >>= 4
0x4744:0x0f148011: and (u8)(rStack+0x14) &= 0xf
0x4748:0x0914800a: cmp 0x9 , (u8)(rStack+0x14)
0x474c:0x0024820b: jmp if signed < ??? -> 0x4760
0x4754:0x3014800d: add (u8)(rStack+0x14) += 0x30
0x4758:0x0000820b: jmp 0x4764
0x4760:0x5714800d: add (u8)(rStack+0x14) += 0x57
0x4764:0x0003821f: call drawSidebars
0x476c:0x000c820d: add (u32)(rStack+0xc) += 0x1
0x4774:0x15140009: mov (u8)(rStack+0x14) = (u8)(rStack+0x15)
0x4778:0x0914800a: cmp 0x9 , (u8)(rStack+0x14)
0x477c:0x0024820b: jmp if signed < ??? -> 0x4790
0x4784:0x3014800d: add (u8)(rStack+0x14) += 0x30
0x4788:0x0000820b: jmp 0x4794
0x4790:0x5714800d: add (u8)(rStack+0x14) += 0x57
0x4794:0x0003821f: call drawSidebars
0x479c:0x00000020: ret
writeCharToScreen:
0x47a0:0x080c3809: mov (u8)(rText + (u32)(rStack+0xc)) = (u8)(rStack+0x8)
0x47a4:0x00000020: ret
drawHexNumbers:
0x47a8:0x0004821f: call 0x4528
0x47b0:0x12120110: xor (u16)(rStack+0x12) ^= (u16)(rStack+0x12)
0x47b4:0x01108213: shl (u32)(rStack+0x10) <<= 1
0x47b8:0x1004021a: mul (u32)(rStack+0x4) *= (u32)(rStack+0x10)
0x47bc:0x01008213: shl (u32)(rStack) <<= 1
0x47c0:0x0400020d: add (u32)(rStack) += (u32)(rStack+0x4)
0x47c4:0x10100210: xor (u32)(rStack+0x10) ^= (u32)(rStack+0x10)
0x47c8:0x08107009: mov (u8)(rStack+0x10) = (u8)((u32)(rStack+0x8))
0x47cc:0x10140009: mov (u8)(rStack+0x14) = (u8)(rStack+0x10)
0x47d0:0x04108014: asr (u8)(rStack+0x10) >>= 4
0x47d4:0x0f108011: and (u8)(rStack+0x10) &= 0xf
0x47d8:0x3010800d: add (u8)(rStack+0x10) += 0x30
0x47dc:0x3910800a: cmp 0x39 , (u8)(rStack+0x10)
0x47e0:0x0020820b: jmp if signed >= ??? -> 0x47ec
0x47e8:0x2710800d: add (u8)(rStack+0x10) += 0x27
0x47ec:0x10003809: mov (u8)(rText + (u32)(rStack)) = (u8)(rStack+0x10)
0x47f0:0x0000820d: add (u32)(rStack) += 0x2
0x47f8:0x0f148011: and (u8)(rStack+0x14) &= 0xf
0x47fc:0x3014800d: add (u8)(rStack+0x14) += 0x30
0x4800:0x3914800a: cmp 0x39 , (u8)(rStack+0x14)
0x4804:0x0020820b: jmp if signed >= ??? -> 0x4810
0x480c:0x2714800d: add (u8)(rStack+0x14) += 0x27
0x4810:0x14003809: mov (u8)(rText + (u32)(rStack)) = (u8)(rStack+0x14)
0x4814:0x0000820d: add (u32)(rStack) += 0x4
0x481c:0x0008820d: add (u32)(rStack+0x8) += 0x1
0x4824:0x000c820e: sub (u32)(rStack+0xc) -= 0x1
0x482c:0x000c820a: cmp 0x0 , (u32)(rStack+0xc)
0x4834:0x0024820b: jmp if signed < ??? -> 0x47c4
0x483c:0x00000020: ret
//sub
0x4840:0x00008209: mov (u32)(rStack) = 0x14
0x4848:0x00081209: mov (u32)(rStack+0x8) = (u32)(rHeap + (u32)(rStack))
0x484c:0x0400800e: sub (u8)(rStack) -= 0x4
0x4850:0x00041209: mov (u32)(rStack+0x4) = (u32)(rHeap + (u32)(rStack))
0x4854:0x0400800e: sub (u8)(rStack) -= 0x4
0x4858:0x00001209: mov (u32)(rStack) = (u32)(rHeap + (u32)(rStack))
0x485c:0x0000821f: call drawMouseCursor
0x4864:0x00000020: ret
//sub
0x4868:0x0000821f: call 0x46d0
0x4870:0x0000820a: cmp 0x0 , (u32)(rStack)
0x4878:0x0014820b: jmp if unsigned <= -> 0x4888
0x4880:0x00008209: mov (u32)(rStack) = 0x0
0x4888:0x0004820a: cmp 0x0 , (u32)(rStack+0x4)
0x4890:0x0014820b: jmp if unsigned <= -> 0x48a0
0x4898:0x00048209: mov (u32)(rStack+0x4) = 0x0
0x48a0:0x0000821b: div (u32)(rStack) /= 0x12
0x48a8:0x05048214: asr (u32)(rStack+0x4) >>= 5
0x48ac:0x0000820a: cmp 0x4f , (u32)(rStack)
0x48b4:0x000c820b: jmp if unsigned >= -> 0x48c4
0x48bc:0x00008209: mov (u32)(rStack) = 0x4f
0x48c4:0x0004820a: cmp 0x18 , (u32)(rStack+0x4)
0x48cc:0x000c820b: jmp if unsigned >= -> 0x48dc
0x48d4:0x00048209: mov (u32)(rStack+0x4) = 0x18
0x48dc:0x0000821f: call 0x4620
0x48e4:0x00108209: mov (u32)(rStack+0x10) = 0x14
0x48ec:0x08101a09: mov (u32)(rHeap + (u32)(rStack+0x10)) = (u32)(rStack+0x8)
0x48f0:0x0410800e: sub (u8)(rStack+0x10) -= 0x4
0x48f4:0x04101a09: mov (u32)(rHeap + (u32)(rStack+0x10)) = (u32)(rStack+0x4)
0x48f8:0x0410800e: sub (u8)(rStack+0x10) -= 0x4
0x48fc:0x00101a09: mov (u32)(rHeap + (u32)(rStack+0x10)) = (u32)(rStack)
0x4900:0x00088111: and (u16)(rStack+0x8) &= (u16)(0x4904) = 0xff
0x4908:0x74098009: mov (u8)(rStack+0x9) = 0x74
0x490c:0x0000821f: call drawMouseCursor
0x4914:0x00000020: ret
//sub
0x4918:0x00008209: mov (u32)(rStack) = 0x8
0x4920:0x00041209: mov (u32)(rStack+0x4) = (u32)(rHeap + (u32)(rStack))
0x4924:0x0400800e: sub (u8)(rStack) -= 0x4
0x4928:0x00001209: mov (u32)(rStack) = (u32)(rHeap + (u32)(rStack))
0x492c:0x00088209: mov (u32)(rStack+0x8) = 0xc
0x4934:0x000c0209: mov (u32)(rStack+0xc) = (u32)(rStack)
0x4938:0x000c8211: and (u32)(rStack+0xc) &= 0xf
0x4940:0x000c821a: mul (u32)(rStack+0xc) *= 0x3
0x4948:0x0c08020d: add (u32)(rStack+0x8) += (u32)(rStack+0xc)
0x494c:0x000c0209: mov (u32)(rStack+0xc) = (u32)(rStack)
0x4950:0x040c8215: shr (u32)(rStack+0xc) >>>= 4
0x4954:0x00010009: mov (u8)(rStack+0x1) = (u8)(rStack)
0x4958:0x01018011: and (u8)(rStack+0x1) &= 0x1
0x495c:0x01020009: mov (u8)(rStack+0x2) = (u8)(rStack+0x1)
0x4960:0x01028010: xor (u8)(rStack+0x2) ^= 0x1
0x4964:0x1a01801a: mul (u8)(rStack+0x1) *= 0x1a
0x4968:0x1a02801a: mul (u8)(rStack+0x2) *= 0x1a
0x496c:0x2001800d: add (u8)(rStack+0x1) += 0x20
0x4970:0x2002800d: add (u8)(rStack+0x2) += 0x20
0x4974:0x20108009: mov (u8)(rStack+0x10) = 0x20
0x4978:0x00110009: mov (u8)(rStack+0x11) = (u8)(rStack)
0x497c:0x04118011: and (u8)(rStack+0x11) &= 0x4
0x4980:0x04118010: xor (u8)(rStack+0x11) ^= 0x4
0x4984:0x02118015: shr (u8)(rStack+0x11) >>>= 2
0x4988:0x08038009: mov (u8)(rStack+0x3) = 0x8
0x498c:0x1103000e: sub (u8)(rStack+0x3) -= (u8)(rStack+0x11)
0x4990:0x03110009: mov (u8)(rStack+0x11) = (u8)(rStack+0x3)
0x4994:0x0002821f: call drawPosCursor
0x499c:0x0008820d: add (u32)(rStack+0x8) += 0x1
0x49a4:0x0002821f: call drawPosCursor
0x49ac:0x0008820e: sub (u32)(rStack+0x8) -= 0x2
0x49b4:0x00108109: mov (u16)(rStack+0x10) = (u16)(0x49b8) = 0x420
0x49bc:0x01100009: mov (u8)(rStack+0x10) = (u8)(rStack+0x1)
0x49c0:0x0002821f: call drawMouseCursor
0x49c8:0x02100009: mov (u8)(rStack+0x10) = (u8)(rStack+0x2)
0x49cc:0x0008820d: add (u32)(rStack+0x8) += 0x3
0x49d4:0x0002821f: call drawMouseCursor
0x49dc:0x00080209: mov (u32)(rStack+0x8) = (u32)(rStack)
0x49e0:0x00088211: and (u32)(rStack+0x8) &= 0xf
0x49e8:0x0008820d: add (u32)(rStack+0x8) += 0x3e
0x49f0:0x03110009: mov (u8)(rStack+0x11) = (u8)(rStack+0x3)
0x49f4:0x0002821f: call drawPosCursor
0x49fc:0x00000020: ret
//
0x4a00:0x00008209: mov (u32)(rStack) = 0x8
0x4a08:0x00041209: mov (u32)(rStack+0x4) = (u32)(rHeap + (u32)(rStack))
0x4a0c:0x0400800e: sub (u8)(rStack) -= 0x4
0x4a10:0x00001209: mov (u32)(rStack) = (u32)(rHeap + (u32)(rStack))
0x4a14:0x00088209: mov (u32)(rStack+0x8) = 0xc
0x4a1c:0x000c0209: mov (u32)(rStack+0xc) = (u32)(rStack)
0x4a20:0x000c8211: and (u32)(rStack+0xc) &= 0xf
0x4a28:0x000c821a: mul (u32)(rStack+0xc) *= 0x3
0x4a30:0x0c08020d: add (u32)(rStack+0x8) += (u32)(rStack+0xc)
0x4a34:0x000c0209: mov (u32)(rStack+0xc) = (u32)(rStack)
0x4a38:0x040c8215: shr (u32)(rStack+0xc) >>>= 4
0x4a3c:0x00108109: mov (u16)(rStack+0x10) = (u16)(0x4a40) = 0x4fdd
0x4a44:0xff04800aL: cmp 0xffL , (u8)(rStack+0x4L)
0x4a48:0x0018820b: jmp if not equal -> 0x4a54
0x4a50:0x47118009: mov (u8)(rStack+0x11) = 0x47
0x4a54:0x0002821f: call drawPosCursor
0x4a5c:0x0008820d: add (u32)(rStack+0x8) += 0x1
0x4a64:0x0002821f: call drawPosCursor
0x4a6c:0x0008820e: sub (u32)(rStack+0x8) -= 0x2
0x4a74:0x40118009: mov (u8)(rStack+0x11) = 0x40
0x4a78:0x0002821f: call drawMouseCursor
0x4a80:0xde108009L: mov (u8)(rStack+0x10L) = 0xdeL
0x4a84:0x0008820d: add (u32)(rStack+0x8) += 0x3
0x4a8c:0x0002821f: call drawMouseCursor
0x4a94:0xf004800aL: cmp 0xf0L , (u8)(rStack+0x4L)
0x4a98:0x0024820b: jmp if signed < ??? -> 0x4acc
0x4aa0:0x0004820b: jmp if equal -> 0x4ab0
0x4aa8:0x0008820d: add (u32)(rStack+0x8) += 0x1
0x4ab0:0x0008820e: sub (u32)(rStack+0x8) -= 0x2
0x4ab8:0x0c0a0109: mov (u16)(rStack+0xa) = (u16)(rStack+0xc)
0x4abc:0x0002821f: call 0x459c
0x4ac4:0x000c0209: mov (u32)(rStack+0xc) = (u32)(rStack)
0x4ac8:0x040c8215: shr (u32)(rStack+0xc) >>>= 4
0x4acc:0x00080209: mov (u32)(rStack+0x8) = (u32)(rStack)
0x4ad0:0x00088211: and (u32)(rStack+0x8) &= 0xf
0x4ad8:0x0008820d: add (u32)(rStack+0x8) += 0x3e
0x4ae0:0x47118009: mov (u8)(rStack+0x11) = 0x47
0x4ae4:0xff04800aL: cmp 0xffL , (u8)(rStack+0x4L)
0x4ae8:0x0018820b: jmp if not equal -> 0x4af4
0x4af0:0x4f118009: mov (u8)(rStack+0x11) = 0x4f
0x4af4:0x0002821f: call drawPosCursor
0x4afc:0xff04800aL: cmp 0xffL , (u8)(rStack+0x4L)
0x4b00:0x0018820b: jmp if not equal -> 0x4b14
0x4b08:0x0c0a0109: mov (u16)(rStack+0xa) = (u16)(rStack+0xc)
0x4b0c:0x0002821f: call 0x459c
0x4b14:0x00000020: ret
//something BIG. not the editing part, though - gets disabled at "keep going"
0x4b18:0x08080210: xor (u32)(rStack+0x8) ^= (u32)(rStack+0x8)
0x4b1c:0x00040209: mov (u32)(rStack+0x4) = (u32)(rStack)
0x4b20:0x00048211: and (u32)(rStack+0x4) &= 0x1
0x4b28:0x0004820a: cmp 0x0 , (u32)(rStack+0x4)
0x4b30:0x0004820b: jmp if equal -> 0x4b38
0x4b38:0x00040209: mov (u32)(rStack+0x4) = (u32)(rStack)
0x4b3c:0x00048211: and (u32)(rStack+0x4) &= 0x2
0x4b44:0x0004820a: cmp 0x0 , (u32)(rStack+0x4)
0x4b4c:0x0004820b: jmp if equal -> 0x4b60
0x4b54:0x0003821f: call 0x50cc
0x4b5c:0x01088009: mov (u8)(rStack+0x8) = 0x1
0x4b60:0x00040209: mov (u32)(rStack+0x4) = (u32)(rStack)
0x4b64:0x00048211: and (u32)(rStack+0x4) &= 0x4
0x4b6c:0x0004820a: cmp 0x0 , (u32)(rStack+0x4)
0x4b74:0x0004820b: jmp if equal -> 0x4b7c
0x4b7c:0x00040209: mov (u32)(rStack+0x4) = (u32)(rStack)
0x4b80:0x00048211: and (u32)(rStack+0x4) &= 0x8
0x4b88:0x0004820a: cmp 0x0 , (u32)(rStack+0x4)
0x4b90:0x0004820b: jmp if equal -> 0x4ba4
0x4b98:0x0003821f: call 0x5030
0x4ba0:0x01088009: mov (u8)(rStack+0x8) = 0x1
0x4ba4:0x00040209: mov (u32)(rStack+0x4) = (u32)(rStack)
0x4ba8:0x00048211: and (u32)(rStack+0x4) &= 0x10
0x4bb0:0x0004820a: cmp 0x0 , (u32)(rStack+0x4)
0x4bb8:0x0004820b: jmp if equal -> 0x4bcc
0x4bc0:0x0003821f: call 0x4c18
0x4bc8:0x01088009: mov (u8)(rStack+0x8) = 0x1
0x4bcc:0x00040209: mov (u32)(rStack+0x4) = (u32)(rStack)
0x4bd0:0x00048211: and (u32)(rStack+0x4) &= 0x20
0x4bd8:0x0004820a: cmp 0x0 , (u32)(rStack+0x4)
0x4be0:0x0004820b: jmp if equal -> 0x4be8
0x4be8:0x00040209: mov (u32)(rStack+0x4) = (u32)(rStack)
0x4bec:0x00048211: and (u32)(rStack+0x4) &= 0x40
0x4bf4:0x0004820a: cmp 0x0 , (u32)(rStack+0x4)
0x4bfc:0x0004820b: jmp if equal -> 0x4c10
0x4c04:0x0003821f: call 0x4f18
0x4c0c:0x01088009: mov (u8)(rStack+0x8) = 0x1
0x4c10:0x08000209: mov (u32)(rStack) = (u32)(rStack+0x8)
0x4c14:0x00000020: ret
0x4c18:0x0000821f: call 0x4708
0x4c20:0x0900800a: cmp 0x9 , (u8)(rStack)
0x4c24:0x0018820b: jmp if not equal -> 0x4c60
0x4c2c:0x000c8209: mov (u32)(rStack+0xc) = 0x8
0x4c34:0x0c101209: mov (u32)(rStack+0x10) = (u32)(rHeap + (u32)(rStack+0xc))
0x4c38:0xff10800aL: cmp 0xffL , (u8)(rStack+0x10L)
0x4c3c:0x0004820b: jmp if equal -> 0x4c58
0x4c44:0x00108209: mov (u32)(rStack+0x10) = 0xff
0x4c4c:0x100c1a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = (u32)(rStack+0x10)
0x4c50:0x0000820b: jmp 0x4c60
0x4c58:0xf0108009L: mov (u8)(rStack+0x10L) = 0xf0L
0x4c5c:0x100c1a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = (u32)(rStack+0x10)
0x4c60:0x2600800a: cmp 0x26 , (u8)(rStack)
0x4c64:0x0018820b: jmp if not equal -> 0x4cc0
0x4c6c:0x0005821f: call 0x4918
0x4c74:0x000c8209: mov (u32)(rStack+0xc) = 0x4
0x4c7c:0x0c101209: mov (u32)(rStack+0x10) = (u32)(rHeap + (u32)(rStack+0xc))
0x4c80:0x0010820a: cmp 0x10 , (u32)(rStack+0x10)
0x4c88:0x0028820b: jmp if signed <= ??? -> 0x4cb4
0x4c90:0x0010820d: add (u32)(rStack+0x10) += 0x10
0x4c98:0x14140210: xor (u32)(rStack+0x14) ^= (u32)(rStack+0x14)
0x4c9c:0x00149a0a: cmp 0x10 , (u32)(rHeap + (u32)(rStack+0x14))
0x4ca4:0x001c820b: jmp if signed > ??? -> 0x4cb4
0x4cac:0x00149a0e: sub (u32)(rHeap + (u32)(rStack+0x14)) -= 0x10
0x4cb4:0x0010820e: sub (u32)(rStack+0x10) -= 0x10
0x4cbc:0x100c1a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = (u32)(rStack+0x10)
0x4cc0:0x2800800a: cmp 0x28 , (u8)(rStack)
0x4cc4:0x0018820b: jmp if not equal -> 0x4d20
0x4ccc:0x0005821f: call 0x4918
0x4cd4:0x000c8209: mov (u32)(rStack+0xc) = 0x4
0x4cdc:0x0c101209: mov (u32)(rStack+0x10) = (u32)(rHeap + (u32)(rStack+0xc))
0x4ce0:0x0010820a: cmp 0x180 , (u32)(rStack+0x10)
0x4ce8:0x001c820b: jmp if signed > ??? -> 0x4d14
0x4cf0:0x0010820e: sub (u32)(rStack+0x10) -= 0x10
0x4cf8:0x14140210: xor (u32)(rStack+0x14) ^= (u32)(rStack+0x14)
0x4cfc:0x00149a0a: cmp 0xfffffe70 , (u32)(rHeap + (u32)(rStack+0x14))
0x4d04:0x0028820b: jmp if signed <= ??? -> 0x4d14
0x4d0c:0x00149a0d: add (u32)(rHeap + (u32)(rStack+0x14)) += 0x10
0x4d14:0x0010820d: add (u32)(rStack+0x10) += 0x10
0x4d1c:0x100c1a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = (u32)(rStack+0x10)
0x4d20:0x0800800a: cmp 0x8 , (u8)(rStack)
0x4d24:0x0004820b: jmp if equal -> 0x4d38
0x4d2c:0x2500800a: cmp 0x25 , (u8)(rStack)
0x4d30:0x0018820b: jmp if not equal -> 0x4db8
0x4d38:0x0005821f: call 0x4918
0x4d40:0x000c8209: mov (u32)(rStack+0xc) = 0x8
0x4d48:0x000c9a0a: cmp 0xf0 , (u32)(rHeap + (u32)(rStack+0xc))
0x4d50:0x0024820b: jmp if signed < ??? -> 0x4d64
0x4d58:0xff0c9810L: xor (u8)(rHeap + (u32)(rStack+0xcL)) ^= 0xffL
0x4d5c:0x0018820b: jmp if not equal -> 0x4db8
0x4d64:0x000c8209: mov (u32)(rStack+0xc) = 0x4
0x4d6c:0x0c101209: mov (u32)(rStack+0x10) = (u32)(rHeap + (u32)(rStack+0xc))
0x4d70:0x0010820a: cmp 0x1 , (u32)(rStack+0x10)
0x4d78:0x001c820b: jmp if signed > ??? -> 0x4d90
0x4d80:0x0010820e: sub (u32)(rStack+0x10) -= 0x1
0x4d88:0x0000820b: jmp 0x4db4
0x4d90:0x14140210: xor (u32)(rStack+0x14) ^= (u32)(rStack+0x14)
0x4d94:0x00149a0a: cmp 0x10 , (u32)(rHeap + (u32)(rStack+0x14))
0x4d9c:0x001c820b: jmp if signed > ??? -> 0x4db8
0x4da4:0x00149a0e: sub (u32)(rHeap + (u32)(rStack+0x14)) -= 0x10
0x4dac:0x0010820d: add (u32)(rStack+0x10) += 0xf
0x4db4:0x100c1a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = (u32)(rStack+0x10)
0x4db8:0x0800800a: cmp 0x8 , (u8)(rStack)
0x4dbc:0x0018820b: jmp if not equal -> 0x4e08
0x4dc4:0x0c0c0210: xor (u32)(rStack+0xc) ^= (u32)(rStack+0xc)
0x4dc8:0x0c101209: mov (u32)(rStack+0x10) = (u32)(rHeap + (u32)(rStack+0xc))
0x4dcc:0x040c800d: add (u8)(rStack+0xc) += 0x4
0x4dd0:0x0c10120d: add (u32)(rStack+0x10) += (u32)(rHeap + (u32)(rStack+0xc))
0x4dd4:0x040c800d: add (u8)(rStack+0xc) += 0x4
0x4dd8:0x0c0c1209: mov (u32)(rStack+0xc) = (u32)(rHeap + (u32)(rStack+0xc))
0x4ddc:0x000c820a: cmp 0xff , (u32)(rStack+0xc)
0x4de4:0x0004820b: jmp if equal -> 0x4e00
0x4dec:0x10087009: mov (u8)(rStack+0x8) = (u8)((u32)(rStack+0x10))
0x4df0:0xff0c8010L: xor (u8)(rStack+0xcL) ^= 0xffL
0x4df4:0x0c080011: and (u8)(rStack+0x8) &= (u8)(rStack+0xc)
0x4df8:0x0000820b: jmp 0x4e04
0x4e00:0x20088009: mov (u8)(rStack+0x8) = 0x20
0x4e04:0x08107809: mov (u8)((u32)(rStack+0x10)) = (u8)(rStack+0x8)
0x4e08:0x2700800a: cmp 0x27 , (u8)(rStack)
0x4e0c:0x0018820b: jmp if not equal -> 0x4e94
0x4e14:0x0005821f: call 0x4918
0x4e1c:0x000c8209: mov (u32)(rStack+0xc) = 0x8
0x4e24:0x000c9a0a: cmp 0xf0 , (u32)(rHeap + (u32)(rStack+0xc))
0x4e2c:0x0024820b: jmp if signed < ??? -> 0x4e40
0x4e34:0xff0c9810L: xor (u8)(rHeap + (u32)(rStack+0xcL)) ^= 0xffL
0x4e38:0x0004820b: jmp if equal -> 0x4e94
0x4e40:0x000c8209: mov (u32)(rStack+0xc) = 0x4
0x4e48:0x0c101209: mov (u32)(rStack+0x10) = (u32)(rHeap + (u32)(rStack+0xc))
0x4e4c:0x0010820a: cmp 0x18f , (u32)(rStack+0x10)
0x4e54:0x0028820b: jmp if signed <= ??? -> 0x4e6c
0x4e5c:0x0010820d: add (u32)(rStack+0x10) += 0x1
0x4e64:0x0000820b: jmp 0x4e90
0x4e6c:0x14140210: xor (u32)(rStack+0x14) ^= (u32)(rStack+0x14)
0x4e70:0x00149a0a: cmp 0xfffffe70 , (u32)(rHeap + (u32)(rStack+0x14))
0x4e78:0x0028820b: jmp if signed <= ??? -> 0x4e90
0x4e80:0x0010820e: sub (u32)(rStack+0x10) -= 0xf
0x4e88:0x00149a0d: add (u32)(rHeap + (u32)(rStack+0x14)) += 0x10
0x4e90:0x100c1a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = (u32)(rStack+0x10)
0x4e94:0x2100800a: cmp 0x21 , (u8)(rStack)
0x4e98:0x0018820b: jmp if not equal -> 0x4ed4
0x4ea0:0x0005821f: call 0x4918
0x4ea8:0x0c0c0210: xor (u32)(rStack+0xc) ^= (u32)(rStack+0xc)
0x4eac:0x000c9a0a: cmp 0x180 , (u32)(rHeap + (u32)(rStack+0xc))
0x4eb4:0x001c820b: jmp if signed > ??? -> 0x4ecc
0x4ebc:0x000c9a0e: sub (u32)(rHeap + (u32)(rStack+0xc)) -= 0x180
0x4ec4:0x0000820b: jmp 0x4ed4
0x4ecc:0x000c9a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = 0x0
0x4ed4:0x2200800a: cmp 0x22 , (u8)(rStack)
0x4ed8:0x0018820b: jmp if not equal -> 0x4f14
0x4ee0:0x0005821f: call 0x4918
0x4ee8:0x0c0c0210: xor (u32)(rStack+0xc) ^= (u32)(rStack+0xc)
0x4eec:0x000c9a0a: cmp 0xfffffcf0 , (u32)(rHeap + (u32)(rStack+0xc))
0x4ef4:0x0028820b: jmp if signed <= ??? -> 0x4f0c
0x4efc:0x000c9a0d: add (u32)(rHeap + (u32)(rStack+0xc)) += 0x180
0x4f04:0x0000820b: jmp 0x4f14
0x4f0c:0x000c9a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = 0xfffffe70
0x4f14:0x00000020: ret
//big sub3
0x4f18:0x0000821f: call 0x4708
0x4f20:0x0004820a: cmp 0x0 , (u32)(rStack+0x4)
0x4f28:0x0004820b: jmp if equal -> 0x502c
0x4f30:0x000c8209: mov (u32)(rStack+0xc) = 0x8
0x4f38:0xff0c980aL: cmp 0xffL , (u8)(rHeap + (u32)(rStack+0xcL))
0x4f3c:0x0018820b: jmp if not equal -> 0x4fa8
0x4f44:0x0005821f: call 0x4918
0x4f4c:0x0005821f: call setViewAddr
0x4f54:0x0c0c0210: xor (u32)(rStack+0xc) ^= (u32)(rStack+0xc)
0x4f58:0x0c101209: mov (u32)(rStack+0x10) = (u32)(rHeap + (u32)(rStack+0xc))
0x4f5c:0x040c800d: add (u8)(rStack+0xc) += 0x4
0x4f60:0x0c10120d: add (u32)(rStack+0x10) += (u32)(rHeap + (u32)(rStack+0xc))
0x4f64:0x04107809: mov (u8)((u32)(rStack+0x10)) = (u8)(rStack+0x4)
0x4f68:0x0010820a: cmp 0xffffffff , (u32)(rStack+0x10)
0x4f70:0x0004820b: jmp if equal -> 0x4fa4
0x4f78:0x000c9a0d: add (u32)(rHeap + (u32)(rStack+0xc)) += 0x1
0x4f80:0x000c9a0a: cmp 0x190 , (u32)(rHeap + (u32)(rStack+0xc))
0x4f88:0x001c820b: jmp if signed > ??? -> 0x4fa4
0x4f90:0x000c9a0e: sub (u32)(rHeap + (u32)(rStack+0xc)) -= 0x10
0x4f98:0x0c0c0210: xor (u32)(rStack+0xc) ^= (u32)(rStack+0xc)
0x4f9c:0x000c9a0d: add (u32)(rHeap + (u32)(rStack+0xc)) += 0x10
0x4fa4:0x00000020: ret
0x4fa8:0x10100210: xor (u32)(rStack+0x10) ^= (u32)(rStack+0x10)
0x4fac:0x10141209: mov (u32)(rStack+0x14) = (u32)(rHeap + (u32)(rStack+0x10))
0x4fb0:0x04108009: mov (u8)(rStack+0x10) = 0x4
0x4fb4:0x1014120d: add (u32)(rStack+0x14) += (u32)(rHeap + (u32)(rStack+0x10))
0x4fb8:0x14107009: mov (u8)(rStack+0x10) = (u8)((u32)(rStack+0x14))
0x4fbc:0x3004800a: cmp 0x30 , (u8)(rStack+0x4)
0x4fc0:0x001c820b: jmp if signed > ??? -> 0x502c
0x4fc8:0x3904800a: cmp 0x39 , (u8)(rStack+0x4)
0x4fcc:0x0024820b: jmp if signed < ??? -> 0x4fe0
0x4fd4:0x3004800e: sub (u8)(rStack+0x4) -= 0x30
0x4fd8:0x0000820b: jmp 0x5000
0x4fe0:0x20048012: or (u8)(rStack+0x4) |= 0x20
0x4fe4:0x6104800a: cmp 0x61 , (u8)(rStack+0x4)
0x4fe8:0x001c820b: jmp if signed > ??? -> 0x502c
0x4ff0:0x6604800a: cmp 0x66 , (u8)(rStack+0x4)
0x4ff4:0x0024820b: jmp if signed < ??? -> 0x502c
0x4ffc:0x5704800e: sub (u8)(rStack+0x4) -= 0x57
0x5000:0x04050009: mov (u8)(rStack+0x5) = (u8)(rStack+0x4)
0x5004:0x04058013: shl (u8)(rStack+0x5) <<= 4
0x5008:0x05040012: or (u8)(rStack+0x4) |= (u8)(rStack+0x5)
0x500c:0x0c051009: mov (u8)(rStack+0x5) = (u8)(rHeap + (u32)(rStack+0xc))
0x5010:0x05040011: and (u8)(rStack+0x4) &= (u8)(rStack+0x5)
0x5014:0x0505000f: not (u8)(rStack+0x5) = ~(u8)(rStack+0x5)
0x5018:0x05100011: and (u8)(rStack+0x10) &= (u8)(rStack+0x5)
0x501c:0x04100012: or (u8)(rStack+0x10) |= (u8)(rStack+0x4)
0x5020:0x10147809: mov (u8)((u32)(rStack+0x14)) = (u8)(rStack+0x10)
0x5024:0x0000820b: jmp 0x4e14
0x502c:0x00000020: ret
//big sub2
0x5030:0x0000821f: call 0x46f8
0x5038:0x0000820a: cmp 0x0 , (u32)(rStack)
0x5040:0x0014820b: jmp if unsigned <= -> 0x5080
0x5048:0x0005821f: call 0x4918
0x5050:0x0c0c0210: xor (u32)(rStack+0xc) ^= (u32)(rStack+0xc)
0x5054:0x000c9a0a: cmp 0xc0 , (u32)(rHeap + (u32)(rStack+0xc))
0x505c:0x001c820b: jmp if signed > ??? -> 0x5074
0x5064:0x000c9a0e: sub (u32)(rHeap + (u32)(rStack+0xc)) -= 0xc0
0x506c:0x0000820b: jmp 0x5080
0x5074:0x000c9a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = 0x0
0x507c:0x00000020: ret
0x5080:0x0000820a: cmp 0x0 , (u32)(rStack)
0x5088:0x000c820b: jmp if unsigned >= -> 0x50c8
0x5090:0x0005821f: call 0x4918
0x5098:0x0c0c0210: xor (u32)(rStack+0xc) ^= (u32)(rStack+0xc)
0x509c:0x000c9a0a: cmp 0xfffffdb0 , (u32)(rHeap + (u32)(rStack+0xc))
0x50a4:0x0028820b: jmp if signed <= ??? -> 0x50bc
0x50ac:0x000c9a0d: add (u32)(rHeap + (u32)(rStack+0xc)) += 0xc0
0x50b4:0x0000820b: jmp 0x50c8
0x50bc:0x000c9a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = 0xfffffe70
0x50c4:0x00000020: ret
0x50c8:0x00000020: ret
//big sub1
0x50cc:0x0000821f: call 0x46e8
0x50d4:0x00040009: mov (u8)(rStack+0x4) = (u8)(rStack)
0x50d8:0x01048011: and (u8)(rStack+0x4) &= 0x1
0x50dc:0x0004800a: cmp 0x0 , (u8)(rStack+0x4)
0x50e0:0x0004820b: jmp if equal -> 0x521c
0x50e8:0x00048209: mov (u32)(rStack+0x4) = 0xc
0x50f0:0x00088209: mov (u32)(rStack+0x8) = 0x10
0x50f8:0x000c8209: mov (u32)(rStack+0xc) = 0x8
0x5100:0x00049a0a: cmp 0x3b , (u32)(rHeap + (u32)(rStack+0x4))
0x5108:0x0010820b: jmp if unsigned < -> 0x51bc
0x5110:0x0004821f: call 0x4918
0x5118:0x00049a0a: cmp 0xb , (u32)(rHeap + (u32)(rStack+0x4))
0x5120:0x0028820b: jmp if signed <= ??? -> 0x514c
0x5128:0x00048209: mov (u32)(rStack+0x4) = 0x4
0x5130:0x08081209: mov (u32)(rStack+0x8) = (u32)(rHeap + (u32)(rStack+0x8))
0x5134:0x0008821a: mul (u32)(rStack+0x8) *= 0x10
0x513c:0x00049a11: and (u32)(rHeap + (u32)(rStack+0x4)) &= 0xf
0x5144:0x08041a12: or (u32)(rHeap + (u32)(rStack+0x4)) |= (u32)(rStack+0x8)
0x5148:0x00000020: ret
0x514c:0x000c9a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = 0xf
0x5154:0x040c1209: mov (u32)(rStack+0xc) = (u32)(rHeap + (u32)(rStack+0x4))
0x5158:0x000c820e: sub (u32)(rStack+0xc) -= 0xc
0x5160:0x000c821b: div (u32)(rStack+0xc) /= 0x3
0x5168:0x08081209: mov (u32)(rStack+0x8) = (u32)(rHeap + (u32)(rStack+0x8))
0x516c:0x0008821a: mul (u32)(rStack+0x8) *= 0x10
0x5174:0x0c080212: or (u32)(rStack+0x8) |= (u32)(rStack+0xc)
0x5178:0x00048209: mov (u32)(rStack+0x4) = 0x4
0x5180:0x08041a09: mov (u32)(rHeap + (u32)(rStack+0x4)) = (u32)(rStack+0x8)
0x5184:0x00048209: mov (u32)(rStack+0x4) = 0xc
0x518c:0x040c1209: mov (u32)(rStack+0xc) = (u32)(rHeap + (u32)(rStack+0x4))
0x5190:0x000c821c: mod (u32)(rStack+0xc) %= 0x3
0x5198:0x000c820a: cmp 0x0 , (u32)(rStack+0xc)
0x51a0:0x0018820b: jmp if not equal -> 0x51b8
0x51a8:0x000c8209: mov (u32)(rStack+0xc) = 0x8
0x51b0:0x000c9a10: xor (u32)(rHeap + (u32)(rStack+0xc)) ^= 0xff
0x51b8:0x00000020: ret
0x51bc:0x000c9a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = 0xff
0x51c4:0x000c8209: mov (u32)(rStack+0xc) = 0x4
0x51cc:0x08081209: mov (u32)(rStack+0x8) = (u32)(rHeap + (u32)(rStack+0x8))
0x51d0:0x0008821a: mul (u32)(rStack+0x8) *= 0x10
0x51d8:0x080c1a09: mov (u32)(rHeap + (u32)(rStack+0xc)) = (u32)(rStack+0x8)
0x51dc:0x04081209: mov (u32)(rStack+0x8) = (u32)(rHeap + (u32)(rStack+0x4))
0x51e0:0x0008820a: cmp 0x3e , (u32)(rStack+0x8)
0x51e8:0x001c820b: jmp if signed > ??? -> 0x5218
0x51f0:0x0008820e: sub (u32)(rStack+0x8) -= 0x3e
0x51f8:0x0008820a: cmp 0xf , (u32)(rStack+0x8)
0x5200:0x0020820b: jmp if signed >= ??? -> 0x5210
0x5208:0x00088209: mov (u32)(rStack+0x8) = 0xf
0x5210:0x080c1a12: or (u32)(rHeap + (u32)(rStack+0xc)) |= (u32)(rStack+0x8)
0x5214:0x00000020: ret
0x5218:0x00000020: ret
0x521c:0x00000020: ret
//init
0x5220:0x00008209: mov (u32)(rStack) = 0x720
0x5228:0x0000821f: call 0x45bc
0x5230:0x00288209: mov (u32)(rStack+0x28) = 0x0
0x5238:0x00008209: mov (u32)(rStack) = 0xa
0x5240:0x28040209: mov (u32)(rStack+0x4) = (u32)(rStack+0x28)
0x5244:0x00088109: mov (u16)(rStack+0x8) = (u16)(0x5248) = 0x4b3
0x524c:0x0000821f: call drawMouseCursor
0x5254:0x00008209: mov (u32)(rStack) = 0x3c
0x525c:0x0000821f: call drawMouseCursor
0x5264:0x00008209: mov (u32)(rStack) = 0x42
0x526c:0x00088109: mov (u16)(rStack+0x8) = (u16)(0x5270) = 0x801
0x5274:0x0000821f: call drawMouseCursor
0x527c:0x0000820d: add (u32)(rStack) += 0x1
0x5284:0x0000820a: cmp 0x45 , (u32)(rStack)
0x528c:0x0020820b: jmp if signed >= ??? -> 0x526c
0x5294:0x00008209: mov (u32)(rStack) = 0x4a
0x529c:0x00088109: mov (u16)(rStack+0x8) = (u16)(0x52a0) = 0x801
0x52a4:0x0000821f: call drawMouseCursor
0x52ac:0x0000820d: add (u32)(rStack) += 0x1
0x52b4:0x0000820a: cmp 0x4d , (u32)(rStack)
0x52bc:0x0020820b: jmp if signed >= ??? -> 0x529c
0x52c4:0x00008209: mov (u32)(rStack) = 0x18
0x52cc:0x00088109: mov (u16)(rStack+0x8) = (u16)(0x52d0) = 0x820
0x52d4:0x0000821f: call drawMouseCursor
0x52dc:0x0000820d: add (u32)(rStack) += 0x1
0x52e4:0x0000820a: cmp 0x22 , (u32)(rStack)
0x52ec:0x0020820b: jmp if signed >= ??? -> 0x52cc
0x52f4:0x00008209: mov (u32)(rStack) = 0x30
0x52fc:0x00088109: mov (u16)(rStack+0x8) = (u16)(0x5300) = 0x820
0x5304:0x0000821f: call drawMouseCursor
0x530c:0x0000820d: add (u32)(rStack) += 0x1
0x5314:0x0000820a: cmp 0x3a , (u32)(rStack)
0x531c:0x0020820b: jmp if signed >= ??? -> 0x52fc
0x5324:0x00008209: mov (u32)(rStack) = 0xe
0x532c:0x00088109: mov (u16)(rStack+0x8) = (u16)(0x5330) = 0x43a
0x5334:0x0000821f: call drawMouseCursor
0x533c:0x0000820d: add (u32)(rStack) += 0x6
0x5344:0x0000820a: cmp 0x3d , (u32)(rStack)
0x534c:0x001c820b: jmp if signed > ??? -> 0x532c
0x5354:0x00008209: mov (u32)(rStack) = 0x1
0x535c:0x00088109: mov (u16)(rStack+0x8) = (u16)(0x5360) = 0x730
0x5364:0x0000821f: call drawMouseCursor
0x536c:0x0000820d: add (u32)(rStack) += 0x1
0x5374:0x0000820a: cmp 0x2 , (u32)(rStack)
0x537c:0x0020820b: jmp if signed >= ??? -> 0x535c
0x5384:0x00008209: mov (u32)(rStack) = 0x3
0x538c:0x00088109: mov (u16)(rStack+0x8) = (u16)(0x5390) = 0xf30
0x5394:0x0000821f: call drawMouseCursor
0x539c:0x0000820d: add (u32)(rStack) += 0x1
0x53a4:0x0000820a: cmp 0x4 , (u32)(rStack)
0x53ac:0x0020820b: jmp if signed >= ??? -> 0x538c
0x53b4:0x00008209: mov (u32)(rStack) = 0x5
0x53bc:0x00088109: mov (u16)(rStack+0x8) = (u16)(0x53c0) = 0xc20
0x53c4:0x0000821f: call drawMouseCursor
0x53cc:0x0000820d: add (u32)(rStack) += 0x1
0x53d4:0x0000820a: cmp 0x6 , (u32)(rStack)
0x53dc:0x0020820b: jmp if signed >= ??? -> 0x53bc
0x53e4:0x00008209: mov (u32)(rStack) = 0x7
0x53ec:0x00088109: mov (u16)(rStack+0x8) = (u16)(0x53f0) = 0x420
0x53f4:0x0000821f: call drawMouseCursor
0x53fc:0x0000820d: add (u32)(rStack) += 0x1
0x5404:0x0000820a: cmp 0x8 , (u32)(rStack)
0x540c:0x0020820b: jmp if signed >= ??? -> 0x53ec
0x5414:0x0028820d: add (u32)(rStack+0x28) += 0x1
0x541c:0x0028820a: cmp 0x19 , (u32)(rStack+0x28)
0x5424:0x001c820b: jmp if signed > ??? -> 0x5238
0x542c:0x00000020: ret
drawLoadingScreen:
0x5430:0x00008209: mov (u32)(rStack) = 0x720
0x5438:0x0000821f: call 0x45bc
0x5440:0x00008109: mov (u16)(rStack) = (u16)(0x5444) = 0x0
0x5448:0x00028109: mov (u16)(rStack+0x2) = (u16)(0x544c) = 0x1
0x5450:0x0000821f: call 0x459c
0x5458:0x00000210: xor (u32)(rStack) ^= (u32)(rStack)
0x545c:0x0000ba09: mov (u32)(rText + (u32)(rStack)) = 0x46b0753
0x5464:0x0400800d: add (u8)(rStack) += 0x4
0x5468:0x0000ba09: mov (u32)(rText + (u32)(rStack)) = 0x46c0475
0x5470:0x0400800d: add (u8)(rStack) += 0x4
0x5474:0x0000ba09: mov (u32)(rText + (u32)(rStack)) = 0x463046c
0x547c:0x0400800d: add (u8)(rStack) += 0x4
0x5480:0x0000ba09: mov (u32)(rText + (u32)(rStack)) = 0x464046f
0x5488:0x0400800d: add (u8)(rStack) += 0x4
0x548c:0x0000ba09: mov (u32)(rText + (u32)(rStack)) = 0x4200465
0x5494:0x0400800d: add (u8)(rStack) += 0x4
0x5498:0x0000ba09: mov (u32)(rText + (u32)(rStack)) = 0x46f074c
0x54a0:0x0400800d: add (u8)(rStack) += 0x4
0x54a4:0x0000ba09: mov (u32)(rText + (u32)(rStack)) = 0x4640461
0x54ac:0x0400800d: add (u8)(rStack) += 0x4
0x54b0:0x0000ba09: mov (u32)(rText + (u32)(rStack)) = 0x46e0469
0x54b8:0x0400800d: add (u8)(rStack) += 0x4
0x54bc:0x0000ba09: mov (u32)(rText + (u32)(rStack)) = 0x4000467
0x54c4:0x0400800d: add (u8)(rStack) += 0x4
0x54c8:0x0000ba09: mov (u32)(rText + (u32)(rStack)) = 0x4200420
0x54d0:0x0000821f: call setViewAddr
0x54d8:0x0000022a: tick (u32)(rStack) = timeDelta()
0x54dc:0x00048209: mov (u32)(rStack+0x4) = 0x0
0x54e4:0x00008102: wait (u16)(0x54e8) = 0x200
0x54ec:0x0000022a: tick (u32)(rStack) = timeDelta()
0x54f0:0x0004020d: add (u32)(rStack+0x4) += (u32)(rStack)
0x54f4:0x0004820a: cmp 0x200 , (u32)(rStack+0x4)
0x54fc:0x001c820b: jmp if signed > ??? -> 0x54e4
0x5504:0x00000020: ret
main:
0x5508:0x0000821f: call initExecUI
0x5510:0x0000821f: call 0x4454
0x5518:0x0000821f: call 0x4688
0x5520:0x00008209: mov (u32)(rStack) = 0xd010208
0x5528:0x0000821f: call initSomePtrLSB
0x5530:0x0000821f: call drawLoadingScreen
0x5538:0x00000210: xor (u32)(rStack) ^= (u32)(rStack)
0x553c:0x00040209: mov (u32)(rStack+0x4) = (u32)(rStack)
0x5540:0x00009a09: mov (u32)(rHeap + (u32)(rStack)) = 0x600
0x5548:0x0400800d: add (u8)(rStack) += 0x4
0x554c:0x00009a09: mov (u32)(rHeap + (u32)(rStack)) = 0x66
0x5554:0x0400800d: add (u8)(rStack) += 0x4
0x5558:0xf0009809L: mov (u8)(rHeap + (u32)(rStack+0x0L)) = 0xf0L
0x555c:0x0400800d: add (u8)(rStack) += 0x4
0x5560:0x04001a09: mov (u32)(rHeap + (u32)(rStack)) = (u32)(rStack+0x4)
0x5564:0x0400800d: add (u8)(rStack) += 0x4
0x5568:0x04001a09: mov (u32)(rHeap + (u32)(rStack)) = (u32)(rStack+0x4)
0x556c:0x0400800d: add (u8)(rStack) += 0x4
0x5570:0x0000821f: call 0x5220
mainloop:
0x5578:0x0000821f: call checkExec
0x5580:0x0000821f: call fragSkullHandler
mainloop1: //disabled exec&skull frags
0x5588:0x28280210: xor (u32)(rStack+0x28) ^= (u32)(rStack+0x28)
0x558c:0x282c0209: mov (u32)(rStack+0x2c) = (u32)(rStack+0x28)
0x5590:0x2c2c1209: mov (u32)(rStack+0x2c) = (u32)(rHeap + (u32)(rStack+0x2c))
0x5594:0x00008209: mov (u32)(rStack) = 0x1
0x559c:0x28040209: mov (u32)(rStack+0x4) = (u32)(rStack+0x28)
0x55a0:0x2c080209: mov (u32)(rStack+0x8) = (u32)(rStack+0x2c)
0x55a4:0x18088215: shr (u32)(rStack+0x8) >>>= 24
0x55a8:0x0000821f: call 0x4728
0x55b0:0x2c080209: mov (u32)(rStack+0x8) = (u32)(rStack+0x2c)
0x55b4:0x10088215: shr (u32)(rStack+0x8) >>>= 16
0x55b8:0x0000820d: add (u32)(rStack) += 0x2
0x55c0:0x0000821f: call 0x4728
0x55c8:0x2c080209: mov (u32)(rStack+0x8) = (u32)(rStack+0x2c)
0x55cc:0x08088215: shr (u32)(rStack+0x8) >>>= 8
0x55d0:0x0000820d: add (u32)(rStack) += 0x2
0x55d8:0x0000821f: call 0x4728
0x55e0:0x2c080209: mov (u32)(rStack+0x8) = (u32)(rStack+0x2c)
0x55e4:0x0000820d: add (u32)(rStack) += 0x2
0x55ec:0x0000821f: call 0x4728
0x55f4:0x00008209: mov (u32)(rStack) = 0xc
0x55fc:0x28040209: mov (u32)(rStack+0x4) = (u32)(rStack+0x28)
0x5600:0x2c080209: mov (u32)(rStack+0x8) = (u32)(rStack+0x2c)
0x5604:0x000c8209: mov (u32)(rStack+0xc) = 0x10
0x560c:0x0000821f: call drawHexNumbers
0x5614:0x00008209: mov (u32)(rStack) = 0x3e
0x561c:0x28040209: mov (u32)(rStack+0x4) = (u32)(rStack+0x28)
0x5620:0x2c080209: mov (u32)(rStack+0x8) = (u32)(rStack+0x2c)
0x5624:0x2c0c0209: mov (u32)(rStack+0xc) = (u32)(rStack+0x2c)
0x5628:0x003c8209: mov (u32)(rStack+0x3c) = 0x42
0x5630:0x2c087209: mov (u32)(rStack+0x8) = (u32)((u32)(rStack+0x2c))
0x5634:0x0000821f: call drawSidebars
0x563c:0x0000820d: add (u32)(rStack) += 0x1
0x5644:0x08088215: shr (u32)(rStack+0x8) >>>= 8
0x5648:0x3c00020a: cmp (u32)(rStack+0x3c) , (u32)(rStack)
0x564c:0x001c820b: jmp if signed > ??? -> 0x5634
0x5654:0x002c820d: add (u32)(rStack+0x2c) += 0x4
0x565c:0x003c820d: add (u32)(rStack+0x3c) += 0x4
0x5664:0x2c087209: mov (u32)(rStack+0x8) = (u32)((u32)(rStack+0x2c))
0x5668:0x0000820a: cmp 0x4b , (u32)(rStack)
0x5670:0x001c820b: jmp if signed > ??? -> 0x5634
0x5678:0x0028820d: add (u32)(rStack+0x28) += 0x1
0x5680:0x0028820a: cmp 0x19 , (u32)(rStack+0x28)
0x5688:0x001c820b: jmp if signed > ??? -> 0x5594
processUpdatesVPtr:
0x5690:0x0000821f: call 0x4a00
0x5698:0x0000821f: call 0x4868
0x56a0:0x0000821f: call setViewAddr
0x56a8:0x00048209: mov (u32)(rStack+0x4) = questUpdateNextVPtrOffset
0x56b0:0x00049a0a: cmp 0x0 , (u32)(rHeap + (u32)(rStack+0x4))
0x56b8:0x0004820b: jmp if equal -> 0x56e0
0x56c0:0x0400121f: call (rCode + '(u32)(rHeap + (u32)(rStack+0x4))')
0x56c4:0x00008002: wait 0x0
0x56c8:0x0001821f: call 0x4918
0x56d0:0x0001821f: call 0x4840
0x56d8:0x0000820b: jmp 0x5588 //mainloop1 nofrags
0x56e0:0x0000821f: call 0x4694
0x56e8:0x0001821f: call 0x4918
0x56f0:0x0001821f: call 0x4840
0x56f8:0x0000821f: call 0x4b18
0x5700:0x0000820a: cmp 0x0 , (u32)(rStack)
0x5708:0x0018820b: jmp if not equal -> 0x5578 //mainloop
0x5710:0x0000820b: jmp processUpdatesVPtr
frag3_impl: //erases pwd, sets up loop to itself, makes screen red in steps
0x5718:0x00008209: mov (u32)(rStack) = questStateOffset
0x5720:0x00041209: mov (u32)(rStack+0x4) = (u32)(rHeap + (u32)(rStack))
0x5724:0x0004820a: cmp 0xffffffff , (u32)(rStack+0x4)
0x572c:0x0004820b: jmp if equal -> 0x57b4
0x5734:0x00048211: and (u32)(rStack+0x4) &= 0x7fffffff
0x573c:0x0004820a: cmp 0x0 , (u32)(rStack+0x4)
0x5744:0x0004820b: jmp if equal -> 0x57b4
0x574c:0x000c8209: mov (u32)(rStack+0xc) = 0x0
0x5754:0x00008209: mov (u32)(rStack) = questStateOffset
0x575c:0x00009a0d: add (u32)(rHeap + (u32)(rStack)) += 0x4
0x5764:0x00009a0a: cmp 0xfb0 , (u32)(rHeap + (u32)(rStack))
0x576c:0x0024820b: jmp if signed < ??? -> 0x5894
0x5774:0x00001209: mov (u32)(rStack) = (u32)(rHeap + (u32)(rStack))
0x5778:0x0000820d: add (u32)(rStack) += 0x40
0x5780:0x00047209: mov (u32)(rStack+0x4) = (u32)((u32)(rStack))
0x5784:0x00048211: and (u32)(rStack+0x4) &= 0xff00ff
0x578c:0x00048212: or (u32)(rStack+0x4) |= 0x4000400
0x5794:0x04007a09: mov (u32)((u32)(rStack)) = (u32)(rStack+0x4)
0x5798:0x000c820d: add (u32)(rStack+0xc) += 0x1
0x57a0:0x000c820a: cmp 0x14 , (u32)(rStack+0xc)
0x57a8:0x0020820b: jmp if signed >= ??? -> 0x5754
0x57b0:0x00000020: ret
0x57b4:0x00009a09: mov (u32)(rHeap + (u32)(rStack)) = 0xc
0x57bc:0x00108209: mov (u32)(rStack+0x10) = fragSkullBaseRel
0x57c4:0x0010820d: add (u32)(rStack+0x10) += rCode
0x57cc:0x10040209: mov (u32)(rStack+0x4) = (u32)(rStack+0x10)
0x57d0:0x00048211: and (u32)(rStack+0x4) &= 0xf
0x57d8:0x000c8209: mov (u32)(rStack+0xc) = 0x10
0x57e0:0x040c020e: sub (u32)(rStack+0xc) -= (u32)(rStack+0x4)
0x57e4:0x000c8211: and (u32)(rStack+0xc) &= 0xf
0x57ec:0x0c10020d: add (u32)(rStack+0x10) += (u32)(rStack+0xc)
0x57f0:0x00048209: mov (u32)(rStack+0x4) = 0x0
0x57f8:0x0010820d: add (u32)(rStack+0x10) += 0x10
0x5800:0x10041a09: mov (u32)(rHeap + (u32)(rStack+0x4)) = (u32)(rStack+0x10)
0x5804:0x00208409: mov ((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12)) = ((u32)(0x5808) = 0x11ae33ea, (u32)(0x580c) = 0xe16b9ea2, (u32)(0x5810) = 0x161a749d, (u32)(0x5814) = 0xf4692e3b)
0x5818:0x0010fc09: mov ((u32)((u32)(rStack+0x10) + 8), (u32)((u32)(rStack+0x10) + 12)) = ((u32)(0x581c) = 0x61cb56a1, (u32)(0x5820) = 0x8804d982, (u32)(0x5824) = 0x361a13f3, (u32)(0x5828) = 0xd4490e1b)
0x582c:0x20107c10: xor ((u32)((u32)(rStack+0x10) + 8), (u32)((u32)(rStack+0x10) + 12)) ^= ((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x5830:0x0010820d: add (u32)(rStack+0x10) += 0x10
0x5838:0x0010fc09: mov ((u32)((u32)(rStack+0x10) + 8), (u32)((u32)(rStack+0x10) + 12)) = ((u32)(0x583c) = 0xe85613ca, (u32)(0x5840) = 0xc14bbe8c, (u32)(0x5844) = 0x363a54bd, (u32)(0x5848) = 0xd4490e1b)
0x584c:0x20107c10: xor ((u32)((u32)(rStack+0x10) + 8), (u32)((u32)(rStack+0x10) + 12)) ^= ((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x5850:0x0010820d: add (u32)(rStack+0x10) += 0x70
0x5858:0x0010fc09: mov ((u32)((u32)(rStack+0x10) + 8), (u32)((u32)(rStack+0x10) + 12)) = ((u32)(0x585c) = 0x20202020, (u32)(0x5860) = 0x20202020, (u32)(0x5864) = 0x20202020, (u32)(0x5868) = 0x20202020)
0x586c:0x00008209: mov (u32)(rStack) = 0x4
0x5874:0x00009a09: mov (u32)(rHeap + (u32)(rStack)) = 0x80
0x587c:0x0400800d: add (u8)(rStack) += 0x4
0x5880:0xff009809L: mov (u8)(rHeap + (u32)(rStack+0x0L)) = 0xffL
0x5884:0x1c008009: mov (u8)(rStack) = questUpdateNextVPtrOffset
0x5888:0x00009a09: mov (u32)(rHeap + (u32)(rStack)) = 0x1318 //0x5718 frag3_impl
0x5890:0x00000020: ret
0x5894:0x00008209: mov (u32)(rStack) = questUpdateNextVPtrOffset
0x589c:0x00009a09: mov (u32)(rHeap + (u32)(rStack)) = 0x0
0x58a4:0x00000020: ret
initExecUI:
0x58a8:0x00008209: mov (u32)(rStack) = 0x6600
0x58b0:0x00000004: clearFing
0x58b4:0x00208403: fing src=((u32)(0x58b8) = 0x3ac7134a, (u32)(0x58bc) = 0x7e385b8a, (u32)(0x58c0) = 0x69bb34e7, (u32)(0x58c4) = 0x5033b692), dst=((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x58c8:0x00108409: mov ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)) = ((u32)(0x58cc) = 0xe49cdd08, (u32)(0x58d0) = 0x25507596, (u32)(0x58d4) = 0x328e8a1d, (u32)(0x58d8) = 0x975e8881)
0x58dc:0x20100410: xor ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)) ^= ((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x58e0:0x10007c09: mov ((u32)((u32)(rStack) + 8), (u32)((u32)(rStack) + 12)) = ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12))
0x58e4:0x5000800d: add (u8)(rStack) += 0x50
0x58e8:0x10007c09: mov ((u32)((u32)(rStack) + 8), (u32)((u32)(rStack) + 12)) = ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12))
0x58ec:0x2000800d: add (u8)(rStack) += 0x20
0x58f0:0x10007c09: mov ((u32)((u32)(rStack) + 8), (u32)((u32)(rStack) + 12)) = ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12))
0x58f4:0x6000800e: sub (u8)(rStack) -= 0x60
0x58f8:0x10200403: fing src=((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)), dst=((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x58fc:0x00108409: mov ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)) = ((u32)(0x5900) = 0xf96c6a5b, (u32)(0x5904) = 0x946195a1, (u32)(0x5908) = 0xacff2347, (u32)(0x590c) = 0x2107b0b5)
0x5910:0x20100410: xor ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)) ^= ((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x5914:0x10007c09: mov ((u32)((u32)(rStack) + 8), (u32)((u32)(rStack) + 12)) = ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12))
0x5918:0x1000800d: add (u8)(rStack) += 0x10
0x591c:0x10200403: fing src=((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)), dst=((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x5920:0x00108409: mov ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)) = ((u32)(0x5924) = 0x52a94d9d, (u32)(0x5928) = 0x14863d57, (u32)(0x592c) = 0xa5163f9c, (u32)(0x5930) = 0x685732b4)
0x5934:0x20100410: xor ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)) ^= ((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x5938:0x10007c09: mov ((u32)((u32)(rStack) + 8), (u32)((u32)(rStack) + 12)) = ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12))
0x593c:0x1000800d: add (u8)(rStack) += 0x10
0x5940:0x10200403: fing src=((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)), dst=((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x5944:0x00108409: mov ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)) = ((u32)(0x5948) = 0x718a9e37, (u32)(0x594c) = 0x62d1c759, (u32)(0x5950) = 0x1faea919, (u32)(0x5954) = 0x89f43c77)
0x5958:0x20100410: xor ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)) ^= ((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x595c:0x10007c09: mov ((u32)((u32)(rStack) + 8), (u32)((u32)(rStack) + 12)) = ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12))
0x5960:0x1000800d: add (u8)(rStack) += 0x10
0x5964:0x10200403: fing src=((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)), dst=((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))
0x5968:0x00108409: mov ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)) = ((u32)(0x596c) = 0xb771b880, (u32)(0x5970) = 0xab471002, (u32)(0x5974) = 0xa8f12cc1, (u32)(0x5978) = 0x57b2d9b)
0x597c:0x20100410: xor ((u32)(rStack+0x10 + 8), (u32)(rStack+0x10 + 12)) ^= ((u32)(rStack+0x20 + 8), (u32)(rStack+0x20 + 12))