.set noat # allow manual use of $at .set noreorder # don't insert nops after branches .include "include/macro.inc" 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