Difference between revisions of "JOBSTTS.OUT 001e4ed0 - 001e4f78"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
Line 1: Line 1:
  beq r4,r0,end
+
  001e4ed0:  beq r4,r0,0x001e4f74 #skip routine if r4 is 0
  addu r2,r0,r0        #clear r2
+
  001e4ed4:  addu r2,r0,r0        #clear r2
  lui r2,0x801f
+
  001e4ed8:  lui r2,0x801f
  lbu r2,0x0044(r2)    #r2 = byte at 0x801f0044
+
  001e4edc:  lbu r2,0x0044(r2)    #r2 = byte at 0x801f0044
  nop
+
  001e4ee0:  nop
  beq r2,r0,forward    #jump forward if r2 is empty
+
  001e4ee4:  beq r2,r0,0x001e4f00 #jump forward if r2 is empty
  addu r7,r0,r0        #clear r7
+
  001e4ee8:  addu r7,r0,r0        #clear r7
  ori r2,r0,0x0007    #r2 = 7
+
  001e4eec:  ori r2,r0,0x0007    #r2 = 7
  lui r1,0x801f
+
  001e4ef0:  lui r1,0x801f
  sw r2,0x0048(r1)    #store 7 in 0x801f0048
+
  001e4ef4:  sw r2,0x0048(r1)    #store 7 in 0x801f0048
  lui r1,0x801f
+
  001e4ef8:  lui r1,0x801f
  sb r0,0x0044(r1)    #clear 0x801f0044
+
  001e4efc:  sb r0,0x0044(r1)    #clear 0x801f0044
  forward:             #0x801f0044 is always empty at this point
+
  001e4f00:   addiu r4,r4,-0x0001  #r4--
addiu r4,r4,-0x0001  #r4--
+
  001e4f04:  addiu r2,r0,-0x0001  #r2 = -1
  addiu r2,r0,-0x0001  #r2 = -1
+
  001e4f08:  beq r4,r2,0x001e4f74 #end routine if r4 is -1
  beq r4,r2,end        #end routine if r4 is -1
+
  001e4f0c:  addu r2,r7,r0        #r7 is return value
  addu r2,r7,r0        #r7 is return value
+
  001e4f10:  ori r10,r0,0x0001    #r10 is 1
  ori r10,r0,0x0001    #r10 is 1
+
  001e4f14:  ori r9,r0,0x0007    #r9 is 7
  ori r9,r0,0x0007    #r9 is 7
+
  001e4f18:  addiu r8,r0,-0x0001  #r8 is -1
  addiu r8,r0,-0x0001  #r8 is -1
+
  001e4f1c:   lui r6,0x8020
  backwards:
+
  001e4f20:  lw r6,-0x58ec(r6)    #r6 = word at 0x801fa714
lui r6,0x8020
+
  001e4f24:  lui r3,0x801f
  lw r6,-0x58ec(r6)    #r6 = word at 0x801fa714
+
  001e4f28:  lw r3,0x0048(r3)    #r3 = word at 0x801f0048 (could be 7?)
  lui r3,0x801f
+
  001e4f2c:  lbu r2,0x0000(r6)    #r2 = value pointed at from 0x801fa714 pointer
  lw r3,0x0048(r3)    #r3 = word at 0x801f0048 (could be 7?)
+
  001e4f30:  addiu r5,r3,-0x0001  #r5 = r3 - 1
  lbu r2,0x0000(r6)    #r2 = value pointed at from 0x801fa714 pointer
+
  001e4f34:  lui r1,0x801f
  addiu r5,r3,-0x0001  #r5 = r3 - 1
+
  001e4f38:  sw r5,0x0048(r1)    #store r5 at 0x801f0048
  lui r1,0x801f
+
  001e4f3c:  srav r2,r2,r3        #rightshift r2 by r3 bytes (could be 7?)
  sw r5,0x0048(r1)    #store r5 at 0x801f0048
+
  001e4f40:  andi r2,r2,0x0001    #r2 = far right byte
  srav r2,r2,r3        #rightshift r2 by r3 bytes (could be 7?)
+
  001e4f44:  beq r2,r0,0x001e4f50 #skip if r2 is odd
  andi r2,r2,0x0001    #r2 = far right byte
+
  001e4f48:  sllv r2,r10,r4      #r2 = r10 leftshifted r4
  beq r2,r0,skip      #skip if r2 is odd
+
  001e4f4c:  or r7,r7,r2          #r7 = r7 U r2
  sllv r2,r10,r4      #r2 = r10 leftshifted r4
+
  001e4f50:   bgez r5,0x001e4f6c  #skip down if r5 is positive
  or r7,r7,r2          #r7 = r7 U r2
+
  001e4f54:  addiu r4,r4,-0x0001  #r4--
  skip:
+
  001e4f58:  addiu r2,r6,0x0001  #r2 is r6 + 1
bgez r5,skip2        #skip this if r5 is positive
+
  001e4f5c:  lui r1,0x801f
  addiu r4,r4,-0x0001  #r4--
+
  001e4f60:  sw r9,0x0048(r1)    #store r9 in 0x801f0048
  addiu r2,r6,0x0001  #r2 is r6 + 1
+
  001e4f64:  lui r1,0x8020
  lui r1,0x801f
+
  001e4f68:  sw r2,-0x58ec(r1)    #store r2 in 0x801fa714
  sw r9,0x0048(r1)    #store r9 in 0x801f0048
+
  001e4f6c:   bne r4,r8,0x001e4f1c #loop if r4 and r8 aren't equal
  lui r1,0x8020
+
  001e4f70:  addu r2,r7,r0        #return value is r7
  sw r2,-0x58ec(r1)    #store r2 in 0x801fa714
+
  001e4f74:   jr r31               
  skip2:
+
  001e4f78:  nop
bne r4,r8,backwards  #loop if r4 and r8 aren't equal
 
  addu r2,r7,r0        #return value is r7
 
  end:
 
jr r31              #finally over
 
  nop
 

Revision as of 07:40, 21 May 2024

001e4ed0:   beq r4,r0,0x001e4f74 #skip routine if r4 is 0
001e4ed4:   addu r2,r0,r0        #clear r2
001e4ed8:   lui r2,0x801f
001e4edc:   lbu r2,0x0044(r2)    #r2 = byte at 0x801f0044
001e4ee0:   nop
001e4ee4:   beq r2,r0,0x001e4f00 #jump forward if r2 is empty
001e4ee8:   addu r7,r0,r0        #clear r7
001e4eec:   ori r2,r0,0x0007     #r2 = 7
001e4ef0:   lui r1,0x801f
001e4ef4:   sw r2,0x0048(r1)     #store 7 in 0x801f0048
001e4ef8:   lui r1,0x801f
001e4efc:   sb r0,0x0044(r1)     #clear 0x801f0044
001e4f00:   addiu r4,r4,-0x0001  #r4--
001e4f04:   addiu r2,r0,-0x0001  #r2 = -1
001e4f08:   beq r4,r2,0x001e4f74 #end routine if r4 is -1
001e4f0c:   addu r2,r7,r0        #r7 is return value
001e4f10:   ori r10,r0,0x0001    #r10 is 1
001e4f14:   ori r9,r0,0x0007     #r9 is 7
001e4f18:   addiu r8,r0,-0x0001  #r8 is -1
001e4f1c:   lui r6,0x8020
001e4f20:   lw r6,-0x58ec(r6)    #r6 = word at 0x801fa714
001e4f24:   lui r3,0x801f
001e4f28:   lw r3,0x0048(r3)     #r3 = word at 0x801f0048 (could be 7?)
001e4f2c:   lbu r2,0x0000(r6)    #r2 = value pointed at from 0x801fa714 pointer
001e4f30:   addiu r5,r3,-0x0001  #r5 = r3 - 1
001e4f34:   lui r1,0x801f
001e4f38:   sw r5,0x0048(r1)     #store r5 at 0x801f0048
001e4f3c:   srav r2,r2,r3        #rightshift r2 by r3 bytes (could be 7?)
001e4f40:   andi r2,r2,0x0001    #r2 = far right byte
001e4f44:   beq r2,r0,0x001e4f50 #skip if r2 is odd
001e4f48:   sllv r2,r10,r4       #r2 = r10 leftshifted r4
001e4f4c:   or r7,r7,r2          #r7 = r7 U r2
001e4f50:   bgez r5,0x001e4f6c   #skip down if r5 is positive
001e4f54:   addiu r4,r4,-0x0001  #r4--
001e4f58:   addiu r2,r6,0x0001   #r2 is r6 + 1
001e4f5c:   lui r1,0x801f
001e4f60:   sw r9,0x0048(r1)     #store r9 in 0x801f0048
001e4f64:   lui r1,0x8020
001e4f68:   sw r2,-0x58ec(r1)    #store r2 in 0x801fa714
001e4f6c:   bne r4,r8,0x001e4f1c #loop if r4 and r8 aren't equal
001e4f70:   addu r2,r7,r0        #return value is r7
001e4f74:   jr r31               
001e4f78:   nop