First, the part of the function im working on gets the module uid like so sceKernelGetModuleIdByAddress(module_start) and passess it to another function.
This is the part i don't understand- $s1 is the module id
Code: Select all
	0x0011A034: 0x001117C3 '....' - sra        $v0, $s1, 31
	0x0011A038: 0x000216C2 '....' - srl        $v0, $v0, 27
	0x0011A03C: 0x02221821 '!.".' - addu       $v1, $s1, $v0
	0x0011A040: 0x3063001F '..c0' - andi       $v1, $v1, 0x1F
	0x0011A044: 0x00621823 '#.b.' - subu       $v1, $v1, $v0
	0x0011A048: 0x3C020096 '...<' - lui        $v0, 0x96
; Data ref 0x0095CD34 ... 0x00000000 0x00000000 0x00000000 0x00000000 
	0x0011A04C: 0x2442CD34 '4.B$' - addiu      $v0, $v0, -13004
	0x0011A050: 0x00039080 '....' - sll        $s2, $v1, 2
	0x0011A054: 0x08046818 '.h..' - j          loc_0011A060
	0x0011A058: 0xAE91037C '|...' - sw         $s1, 892($s4)
loc_0011A060:		; Refs: 0x0011A054 
	0x0011A060: 0x02422821 '!(B.' - addu       $a1, $s2, $v0
	0x0011A064: 0x8CA30084 '....' - lw         $v1, 132($a1)
	0x0011A068: 0x10600012 '..`.' - beqz       $v1, loc_0011A0B4
int address = ((((((0x0435AB53/2)^31)>>27)+0x0435AB53)&0x1f)-(((0x0435AB53/2)^31)>>27)<<2)+((0x96<<16)+-13004);
and it returns
0x0095CD80
so unless it throws a bus error which it doesn't, there must be something im not getting.