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.