Advertisement
GeeckoDev

sub_0000255C

Dec 1st, 2011
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.64 KB | None | 0 0
  1. /*
  2. ; ======================================================
  3. ; Subroutine sub_0000255C - Address 0x0000255C
  4. sub_0000255C:       ; Refs: 0x00001D2C 0x00001D48 0x00001DA8 0x00001F30
  5.     0x0000255C: 0x24C3FFFF '...$' - addiu      $v1, $a2, -1 // v1 = a2 - 1
  6.     0x00002560: 0x2C670080 '..g,' - sltiu      $a3, $v1, 128 // ignore
  7.     0x00002564: 0x3C0A8067 'g..<' - lui        $t2, 0x8067 // ignore
  8.     0x00002568: 0x00804821 '!H..' - move       $t1, $a0 // ignore
  9.     0x0000256C: 0x00A04021 '!@..' - move       $t0, $a1 // ignore
  10.     0x00002570: 0x10E0000E '....' - beqz       $a3, loc_000025AC // if (v1 >= 128) return v1;
  11.     0x00002574: 0x35431003 '..C5' - ori        $v1, $t2, 0x1003 // v1 = 0x80671003 (delay)
  12.     0x00002578: 0x18C00012 '....' - blez       $a2, loc_000025C4 // if (a2 <= 0) goto ...;
  13.     0x0000257C: 0x00003821 '!8..' - move       $a3, $zr // a3 = 0; -> i=0;
  14.     0x00002580: 0x01272021 '! '.' - addu       $a0, $t1, $a3 // ignore
  15.  
  16. loc_00002584:       ; Refs: 0x000025A0 // Loop
  17.     0x00002584: 0x01072821 '!(..' - addu       $a1, $t0, $a3 // ignore
  18.     0x00002588: 0x80820000 '....' - lb         $v0, 0($a0) // ignore
  19.     0x0000258C: 0x80AB0000 '....' - lb         $t3, 0($a1) // ignore
  20.     0x00002590: 0x144B0008 '..K.' - bne        $v0, $t3, loc_000025B4 // if (A0[i] != A1[i]) goto ...;
  21.     0x00002594: 0x00E6102A '*...' - slt        $v0, $a3, $a2 // v0 = i < A2; (delay)
  22.     0x00002598: 0x24E70001 '...$' - addiu      $a3, $a3, 1 // i++;
  23.     0x0000259C: 0x00E6602A '*`..' - slt        $t4, $a3, $a2 // ignore
  24.     0x000025A0: 0x1580FFF8 '....' - bnez       $t4, loc_00002584 // loop if (i < A2)
  25.     0x000025A4: 0x01272021 '! '.' - addu       $a0, $t1, $a3 // ignore
  26.  
  27. loc_000025A8:       ; Refs: 0x000025B4
  28.     0x000025A8: 0x00001821 '!...' - move       $v1, $zr
  29.  
  30. loc_000025AC:       ; Refs: 0x00002570 0x000025BC
  31.     0x000025AC: 0x03E00008 '....' - jr         $ra
  32.     0x000025B0: 0x00601021 '!.`.' - move       $v0, $v1
  33.  
  34. loc_000025B4:       ; Refs: 0x00002590 0x000025C4
  35.     0x000025B4: 0x1040FFFC '..@.' - beqz       $v0, loc_000025A8 // if (v0 == 0) return 0;
  36.     0x000025B8: 0x2403FFFF '...$' - li         $v1, -1 // ignore
  37.     0x000025BC: 0x0800096B 'k...' - j          loc_000025AC // return -1;
  38.     0x000025C0: 0x00000000 '....' - nop        
  39.  
  40. loc_000025C4:       ; Refs: 0x00002578
  41.     0x000025C4: 0x0800096D 'm...' - j          loc_000025B4 // goto ...;
  42.     0x000025C8: 0x0006102A '*...' - slt        $v0, $zr, $a2 // ignore
  43. */
  44.  
  45. int sub_0000255C(char* a0, char* a1, int a2)
  46. {
  47.   int i;
  48.  
  49.   if (a2 > 128)
  50.   {
  51.     return 0x80671003;
  52.   }  
  53.   if (a2 < 0)
  54.   {
  55.     return 0;
  56.   }
  57.   if (a2 == 0)
  58.   {
  59.     return -1;
  60.   }
  61.  
  62.   for (i=0; i<a2; i++)
  63.   {
  64.     if (a0[i] != a1[i])
  65.     {
  66.       return -1;
  67.     }
  68.   }
  69.  
  70.   return 0;
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement