papermario/asm/nonmatchings/code_20ec0_len_5040/DoBasicAI.s
2020-08-12 22:37:16 -04:00

198 lines
9.2 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel DoBasicAI
/* 02587C 8004A47C 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 025880 8004A480 AFB20038 */ sw $s2, 0x38($sp)
/* 025884 8004A484 0080902D */ daddu $s2, $a0, $zero
/* 025888 8004A488 AFBF0048 */ sw $ra, 0x48($sp)
/* 02588C 8004A48C AFB50044 */ sw $s5, 0x44($sp)
/* 025890 8004A490 AFB40040 */ sw $s4, 0x40($sp)
/* 025894 8004A494 AFB3003C */ sw $s3, 0x3c($sp)
/* 025898 8004A498 AFB10034 */ sw $s1, 0x34($sp)
/* 02589C 8004A49C AFB00030 */ sw $s0, 0x30($sp)
/* 0258A0 8004A4A0 8E510148 */ lw $s1, 0x148($s2)
/* 0258A4 8004A4A4 86240008 */ lh $a0, 8($s1)
/* 0258A8 8004A4A8 0C00EABB */ jal get_npc_unsafe
/* 0258AC 8004A4AC 00A0802D */ daddu $s0, $a1, $zero
/* 0258B0 8004A4B0 8E43000C */ lw $v1, 0xc($s2)
/* 0258B4 8004A4B4 0240202D */ daddu $a0, $s2, $zero
/* 0258B8 8004A4B8 8C650000 */ lw $a1, ($v1)
/* 0258BC 8004A4BC 0C0B1EAF */ jal get_variable
/* 0258C0 8004A4C0 0040A82D */ daddu $s5, $v0, $zero
/* 0258C4 8004A4C4 AFA00010 */ sw $zero, 0x10($sp)
/* 0258C8 8004A4C8 8E2300D0 */ lw $v1, 0xd0($s1)
/* 0258CC 8004A4CC 8C630030 */ lw $v1, 0x30($v1)
/* 0258D0 8004A4D0 AFA30014 */ sw $v1, 0x14($sp)
/* 0258D4 8004A4D4 8E2300D0 */ lw $v1, 0xd0($s1)
/* 0258D8 8004A4D8 8C63001C */ lw $v1, 0x1c($v1)
/* 0258DC 8004A4DC AFA30018 */ sw $v1, 0x18($sp)
/* 0258E0 8004A4E0 8E2300D0 */ lw $v1, 0xd0($s1)
/* 0258E4 8004A4E4 8C630024 */ lw $v1, 0x24($v1)
/* 0258E8 8004A4E8 AFA3001C */ sw $v1, 0x1c($sp)
/* 0258EC 8004A4EC 8E2300D0 */ lw $v1, 0xd0($s1)
/* 0258F0 8004A4F0 8C630028 */ lw $v1, 0x28($v1)
/* 0258F4 8004A4F4 27B40010 */ addiu $s4, $sp, 0x10
/* 0258F8 8004A4F8 AFA30020 */ sw $v1, 0x20($sp)
/* 0258FC 8004A4FC 8E2300D0 */ lw $v1, 0xd0($s1)
/* 025900 8004A500 3C014282 */ lui $at, 0x4282
/* 025904 8004A504 44810000 */ mtc1 $at, $f0
/* 025908 8004A508 8C63002C */ lw $v1, 0x2c($v1)
/* 02590C 8004A50C 0040982D */ daddu $s3, $v0, $zero
/* 025910 8004A510 E7A00028 */ swc1 $f0, 0x28($sp)
/* 025914 8004A514 A7A0002C */ sh $zero, 0x2c($sp)
/* 025918 8004A518 16000005 */ bnez $s0, .L8004A530
/* 02591C 8004A51C AFA30024 */ sw $v1, 0x24($sp)
/* 025920 8004A520 8E2200B0 */ lw $v0, 0xb0($s1)
/* 025924 8004A524 30420004 */ andi $v0, $v0, 4
/* 025928 8004A528 1040002B */ beqz $v0, .L8004A5D8
/* 02592C 8004A52C 00000000 */ nop
.L8004A530:
/* 025930 8004A530 2404F7FF */ addiu $a0, $zero, -0x801
/* 025934 8004A534 AE400070 */ sw $zero, 0x70($s2)
/* 025938 8004A538 A6A0008E */ sh $zero, 0x8e($s5)
/* 02593C 8004A53C 8E2200CC */ lw $v0, 0xcc($s1)
/* 025940 8004A540 8EA30000 */ lw $v1, ($s5)
/* 025944 8004A544 8C420000 */ lw $v0, ($v0)
/* 025948 8004A548 00641824 */ and $v1, $v1, $a0
/* 02594C 8004A54C AEA30000 */ sw $v1, ($s5)
/* 025950 8004A550 AEA20028 */ sw $v0, 0x28($s5)
/* 025954 8004A554 8E2200D0 */ lw $v0, 0xd0($s1)
/* 025958 8004A558 8C420034 */ lw $v0, 0x34($v0)
/* 02595C 8004A55C 54400005 */ bnel $v0, $zero, .L8004A574
/* 025960 8004A560 2402FDFF */ addiu $v0, $zero, -0x201
/* 025964 8004A564 34620200 */ ori $v0, $v1, 0x200
/* 025968 8004A568 2403FFF7 */ addiu $v1, $zero, -9
/* 02596C 8004A56C 0801295F */ j .L8004A57C
/* 025970 8004A570 00431024 */ and $v0, $v0, $v1
.L8004A574:
/* 025974 8004A574 00621024 */ and $v0, $v1, $v0
/* 025978 8004A578 34420008 */ ori $v0, $v0, 8
.L8004A57C:
/* 02597C 8004A57C AEA20000 */ sw $v0, ($s5)
/* 025980 8004A580 8E2200B0 */ lw $v0, 0xb0($s1)
/* 025984 8004A584 30420004 */ andi $v0, $v0, 4
/* 025988 8004A588 10400004 */ beqz $v0, .L8004A59C
/* 02598C 8004A58C 24020063 */ addiu $v0, $zero, 0x63
/* 025990 8004A590 AE420070 */ sw $v0, 0x70($s2)
/* 025994 8004A594 0801296D */ j .L8004A5B4
/* 025998 8004A598 AE400074 */ sw $zero, 0x74($s2)
.L8004A59C:
/* 02599C 8004A59C 8E220000 */ lw $v0, ($s1)
/* 0259A0 8004A5A0 3C034000 */ lui $v1, 0x4000
/* 0259A4 8004A5A4 00431024 */ and $v0, $v0, $v1
/* 0259A8 8004A5A8 10400002 */ beqz $v0, .L8004A5B4
/* 0259AC 8004A5AC 2402000C */ addiu $v0, $zero, 0xc
/* 0259B0 8004A5B0 AE420070 */ sw $v0, 0x70($s2)
.L8004A5B4:
/* 0259B4 8004A5B4 3C05BFFF */ lui $a1, 0xbfff
/* 0259B8 8004A5B8 34A5FFFF */ ori $a1, $a1, 0xffff
/* 0259BC 8004A5BC 2404FFFB */ addiu $a0, $zero, -5
/* 0259C0 8004A5C0 8E2200B0 */ lw $v0, 0xb0($s1)
/* 0259C4 8004A5C4 8E230000 */ lw $v1, ($s1)
/* 0259C8 8004A5C8 00441024 */ and $v0, $v0, $a0
/* 0259CC 8004A5CC 00651824 */ and $v1, $v1, $a1
/* 0259D0 8004A5D0 AE2200B0 */ sw $v0, 0xb0($s1)
/* 0259D4 8004A5D4 AE230000 */ sw $v1, ($s1)
.L8004A5D8:
/* 0259D8 8004A5D8 8E430070 */ lw $v1, 0x70($s2)
/* 0259DC 8004A5DC 2C620064 */ sltiu $v0, $v1, 0x64
/* 0259E0 8004A5E0 10400038 */ beqz $v0, .L8004A6C4
/* 0259E4 8004A5E4 00031080 */ sll $v0, $v1, 2
/* 0259E8 8004A5E8 3C01800A */ lui $at, 0x800a
/* 0259EC 8004A5EC 00220821 */ addu $at, $at, $v0
/* 0259F0 8004A5F0 8C228728 */ lw $v0, -0x78d8($at)
/* 0259F4 8004A5F4 00400008 */ jr $v0
/* 0259F8 8004A5F8 00000000 */ nop
/* 0259FC 8004A5FC 0240202D */ daddu $a0, $s2, $zero
/* 025A00 8004A600 0260282D */ daddu $a1, $s3, $zero
/* 025A04 8004A604 0C012568 */ jal func_800495A0
/* 025A08 8004A608 0280302D */ daddu $a2, $s4, $zero
/* 025A0C 8004A60C 0240202D */ daddu $a0, $s2, $zero
/* 025A10 8004A610 0260282D */ daddu $a1, $s3, $zero
/* 025A14 8004A614 0C0125AE */ jal func_800496B8
/* 025A18 8004A618 0280302D */ daddu $a2, $s4, $zero
/* 025A1C 8004A61C 080129B1 */ j .L8004A6C4
/* 025A20 8004A620 00000000 */ nop
/* 025A24 8004A624 0240202D */ daddu $a0, $s2, $zero
/* 025A28 8004A628 0260282D */ daddu $a1, $s3, $zero
/* 025A2C 8004A62C 0C0126D1 */ jal func_80049B44
/* 025A30 8004A630 0280302D */ daddu $a2, $s4, $zero
/* 025A34 8004A634 0240202D */ daddu $a0, $s2, $zero
/* 025A38 8004A638 0260282D */ daddu $a1, $s3, $zero
/* 025A3C 8004A63C 0C012701 */ jal func_80049C04
/* 025A40 8004A640 0280302D */ daddu $a2, $s4, $zero
/* 025A44 8004A644 080129B1 */ j .L8004A6C4
/* 025A48 8004A648 00000000 */ nop
/* 025A4C 8004A64C 0240202D */ daddu $a0, $s2, $zero
/* 025A50 8004A650 0260282D */ daddu $a1, $s3, $zero
/* 025A54 8004A654 0C01278F */ jal func_80049E3C
/* 025A58 8004A658 0280302D */ daddu $a2, $s4, $zero
/* 025A5C 8004A65C 0240202D */ daddu $a0, $s2, $zero
/* 025A60 8004A660 0260282D */ daddu $a1, $s3, $zero
/* 025A64 8004A664 0C0127B3 */ jal func_80049ECC
/* 025A68 8004A668 0280302D */ daddu $a2, $s4, $zero
/* 025A6C 8004A66C 080129B1 */ j .L8004A6C4
/* 025A70 8004A670 00000000 */ nop
/* 025A74 8004A674 0240202D */ daddu $a0, $s2, $zero
/* 025A78 8004A678 0260282D */ daddu $a1, $s3, $zero
/* 025A7C 8004A67C 0C0127DF */ jal func_80049F7C
/* 025A80 8004A680 0280302D */ daddu $a2, $s4, $zero
/* 025A84 8004A684 0240202D */ daddu $a0, $s2, $zero
/* 025A88 8004A688 0260282D */ daddu $a1, $s3, $zero
/* 025A8C 8004A68C 0C012849 */ jal func_8004A124
/* 025A90 8004A690 0280302D */ daddu $a2, $s4, $zero
/* 025A94 8004A694 8E430070 */ lw $v1, 0x70($s2)
/* 025A98 8004A698 2402000E */ addiu $v0, $zero, 0xe
/* 025A9C 8004A69C 14620009 */ bne $v1, $v0, .L8004A6C4
/* 025AA0 8004A6A0 00000000 */ nop
/* 025AA4 8004A6A4 0240202D */ daddu $a0, $s2, $zero
/* 025AA8 8004A6A8 0260282D */ daddu $a1, $s3, $zero
/* 025AAC 8004A6AC 0C0128FA */ jal func_8004A3E8
/* 025AB0 8004A6B0 0280302D */ daddu $a2, $s4, $zero
/* 025AB4 8004A6B4 080129B1 */ j .L8004A6C4
/* 025AB8 8004A6B8 00000000 */ nop
/* 025ABC 8004A6BC 0C0129CF */ jal func_8004A73C
/* 025AC0 8004A6C0 0240202D */ daddu $a0, $s2, $zero
.L8004A6C4:
/* 025AC4 8004A6C4 8FBF0048 */ lw $ra, 0x48($sp)
/* 025AC8 8004A6C8 8FB50044 */ lw $s5, 0x44($sp)
/* 025ACC 8004A6CC 8FB40040 */ lw $s4, 0x40($sp)
/* 025AD0 8004A6D0 8FB3003C */ lw $s3, 0x3c($sp)
/* 025AD4 8004A6D4 8FB20038 */ lw $s2, 0x38($sp)
/* 025AD8 8004A6D8 8FB10034 */ lw $s1, 0x34($sp)
/* 025ADC 8004A6DC 8FB00030 */ lw $s0, 0x30($sp)
/* 025AE0 8004A6E0 0000102D */ daddu $v0, $zero, $zero
/* 025AE4 8004A6E4 03E00008 */ jr $ra
/* 025AE8 8004A6E8 27BD0050 */ addiu $sp, $sp, 0x50
/* 025AEC 8004A6EC 00000000 */ nop
/* 025AF0 8004A6F0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 025AF4 8004A6F4 AFB00010 */ sw $s0, 0x10($sp)
/* 025AF8 8004A6F8 0080802D */ daddu $s0, $a0, $zero
/* 025AFC 8004A6FC AFBF0014 */ sw $ra, 0x14($sp)
/* 025B00 8004A700 8E020148 */ lw $v0, 0x148($s0)
/* 025B04 8004A704 0C00EABB */ jal get_npc_unsafe
/* 025B08 8004A708 84440008 */ lh $a0, 8($v0)
/* 025B0C 8004A70C 9443008E */ lhu $v1, 0x8e($v0)
/* 025B10 8004A710 2463FFFF */ addiu $v1, $v1, -1
/* 025B14 8004A714 A443008E */ sh $v1, 0x8e($v0)
/* 025B18 8004A718 00031C00 */ sll $v1, $v1, 0x10
/* 025B1C 8004A71C 1C600003 */ bgtz $v1, .L8004A72C
/* 025B20 8004A720 00000000 */ nop
/* 025B24 8004A724 8E020074 */ lw $v0, 0x74($s0)
/* 025B28 8004A728 AE020070 */ sw $v0, 0x70($s0)
.L8004A72C:
/* 025B2C 8004A72C 8FBF0014 */ lw $ra, 0x14($sp)
/* 025B30 8004A730 8FB00010 */ lw $s0, 0x10($sp)
/* 025B34 8004A734 03E00008 */ jr $ra
/* 025B38 8004A738 27BD0018 */ addiu $sp, $sp, 0x18