Find Next Inactive Thread

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search

00149c48: 27bdffe8 addiu r29,r29,0xffe8
00149c4c: 28820010 slti r2,r4,0x0010
00149c50: afbf0014 sw r31,0x0014(r29)
00149c54: 10400003 beq r2,r0,0x00149c64            # Branch if r4 was above 0x0F
00149c58: afb00010 sw r16,0x0010(r29)
00149c5c: 0805272a j 0x00149ca8                    # Jump to end if r4 was below 0x10
00149c60: 00801021 addu r2,r4,r0                   # r2 = r4's value
00149c64: 3c028017 lui r2,0x8017
00149c68: 8c424038 lw r2,0x4038(r2)                # r2 = Currently running thread ID
00149c6c: 00000000 nop
00149c70: 24500001 addiu r16,r2,0x0001             # r16 = thread ID + 1
00149c74: 2a020010 slti r2,r16,0x0010
00149c78: 10400009 beq r2,r0,0x00149ca0            # Branch to stop current thread if r16 is above 0x10
00149c7c: 00000000 nop
00149c80: 0c053325 jal 0x0014cc94                  # Check Thread Running Status
00149c84: 02002021 addu r4,r16,r0
00149c88: 10400007 beq r2,r0,0x00149ca8            # Branch to end if thread is not running
00149c8c: 02001021 addu r2,r16,r0                  # r2 = next thread ID (not running)
00149c90: 26100001 addiu r16,r16,0x0001            # r16 ++
00149c94: 2a020010 slti r2,r16,0x0010
00149c98: 1440fff9 bne r2,r0,0x00149c80            # Loop back if r16 is below 0x10
00149c9c: 00000000 nop
00149ca0: 0c053256 jal 0x0014c958                  # Stop Current Thread
00149ca4: 00000000 nop
00149ca8: 8fbf0014 lw r31,0x0014(r29)
00149cac: 8fb00010 lw r16,0x0010(r29)
00149cb0: 27bd0018 addiu r29,r29,0x0018
00149cb4: 03e00008 jr r31
00149cb8: 00000000 nop