[*] Binary protection state of mbstring.so
Full RELRO No Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of mbstring.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/1568982-13971496.squashfs_v4_le_extract/usr/lib/php/mbstring.so @ 0x1d254 */
| #include <stdint.h>
|
; (fcn) fcn.0001d254 () | void fcn_0001d254 () {
0x0001d254 lui gp, 0x15 |
0x0001d258 addiu gp, gp, 0x462c |
0x0001d25c addu gp, gp, t9 | gp += t9;
0x0001d260 addiu sp, sp, -0x28 |
0x0001d264 lw v0, 0xc(a0) | v0 = *((a0 + 3));
0x0001d268 sw gp, 0x10(sp) | *(var_10h) = gp;
0x0001d26c slti v0, v0, 2 | v0 = (v0 < 2) ? 1 : 0;
0x0001d270 sw s1, 0x20(sp) | *(var_20h) = s1;
0x0001d274 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x0001d278 sw ra, 0x24(sp) | *(var_24h) = ra;
0x0001d27c move s0, a1 | s0 = a1;
0x0001d280 move s1, a2 | s1 = a2;
| if (v0 == 0) {
0x0001d284 beqz v0, 0x1d2bc | goto label_0;
| }
0x0001d288 lw t9, 0x18(a0) | t9 = *((a0 + 6));
0x0001d28c move a0, a1 | a0 = a1;
0x0001d290 jalr t9 | t9 ();
0x0001d294 lw gp, 0x10(sp) | gp = *(var_10h);
| do {
0x0001d298 lw ra, 0x24(sp) | ra = *(var_24h);
0x0001d29c move a2, s1 | a2 = s1;
0x0001d2a0 move a1, s0 | a1 = s0;
0x0001d2a4 lw s1, 0x20(sp) | s1 = *(var_20h);
0x0001d2a8 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x0001d2ac lw t9, -0x7f2c(gp) | t9 = *((gp - 8139));
0x0001d2b0 move a0, v0 | a0 = v0;
0x0001d2b4 addiu sp, sp, 0x28 |
0x0001d2b8 b 0x1d1c8 | void (*0x1d1c8)() ();
| label_0:
0x0001d2bc addiu v0, zero, 2 | v0 = 2;
0x0001d2c0 b 0x1d298 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/1568982-13971496.squashfs_v4_le_extract/usr/lib/php/mbstring.so @ 0x290ac */
| #include <stdint.h>
|
; (fcn) fcn.000290ac () | void fcn_000290ac () {
0x000290ac lui gp, 0x15 |
0x000290b0 addiu gp, gp, -0x782c |
0x000290b4 addu gp, gp, t9 | gp += t9;
0x000290b8 addiu sp, sp, -0x40 |
0x000290bc lw t9, 0x34(a3) | t9 = *((a3 + 13));
0x000290c0 sw s3, 0x30(sp) | *(var_30h) = s3;
0x000290c4 move s3, a1 | s3 = a1;
0x000290c8 sw gp, 0x10(sp) | *(var_10h) = gp;
0x000290cc sw s2, 0x2c(sp) | *(var_2ch) = s2;
0x000290d0 sw s1, 0x28(sp) | *(var_28h) = s1;
0x000290d4 sw s0, 0x24(sp) | *(var_24h) = s0;
0x000290d8 sw ra, 0x3c(sp) | *(var_3ch) = ra;
0x000290dc sw s5, 0x38(sp) | *(var_38h) = s5;
0x000290e0 sw s4, 0x34(sp) | *(var_34h) = s4;
0x000290e4 move s1, a0 | s1 = a0;
0x000290e8 move s0, a2 | s0 = a2;
0x000290ec addiu a1, sp, 0x18 | a1 = sp + 0x18;
0x000290f0 addiu a2, sp, 0x1c | a2 = sp + 0x1c;
0x000290f4 move a0, s3 | a0 = s3;
0x000290f8 move s2, a3 | s2 = a3;
0x000290fc jalr t9 | t9 ();
0x00029100 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x00029104 bnez v0, 0x2932c | goto label_13;
| }
0x00029108 lw s2, 0x1c(sp) | s2 = *(var_1ch);
0x0002910c lw a1, 0x18(sp) | a1 = *(var_18h);
0x00029110 addiu v0, s2, 4 | v0 = s2 + 4;
0x00029114 lw s3, (s2) | s3 = *(s2);
| if (s0 != 0) {
0x00029118 beqz s0, 0x2915c |
0x0002911c move s0, v0 | s0 = v0;
0x00029120 move a0, v0 | a0 = v0;
0x00029124 move a3, zero | a3 = 0;
0x00029128 move v0, zero | v0 = 0;
0x0002912c addiu t0, zero, 1 | t0 = 1;
| label_5:
0x00029130 slt v1, a3, s3 | v1 = (a3 < s3) ? 1 : 0;
0x00029134 addiu a2, zero, 1 | a2 = 1;
| if (v1 != 0) {
0x00029138 bnez v1, 0x29278 | goto label_14;
| }
| label_6:
0x0002913c sltu v1, v0, a1 | v1 = (v0 < a1) ? 1 : 0;
0x00029140 andi v1, v0, 7 | v1 = v0 & 7;
| if (v1 != 0) {
0x00029144 bnez v1, 0x2929c | goto label_15;
| }
| label_3:
0x00029148 lw s4, -0x7e98(gp) | s4 = *((gp - 8102));
0x0002914c move s2, zero | s2 = 0;
0x00029150 addiu s5, s1, 0x28 | s5 = s1 + 0x28;
0x00029154 addiu s4, s4, -0x7afc | s4 += -0x7afc;
0x00029158 b 0x292dc | goto label_16;
| }
0x0002915c addiu a3, zero, 1 | a3 = 1;
| do {
0x00029160 slt v1, s0, s3 | v1 = (s0 < s3) ? 1 : 0;
| if (v1 == 0) {
0x00029164 bnez v1, 0x29194 |
0x00029168 nop |
| label_7:
0x0002916c move v0, zero | v0 = 0;
| label_0:
0x00029170 lw ra, 0x3c(sp) | ra = *(var_3ch);
| label_8:
0x00029174 lw s5, 0x38(sp) | s5 = *(var_38h);
| label_10:
0x00029178 lw s4, 0x34(sp) | s4 = *(var_34h);
0x0002917c lw s3, 0x30(sp) | s3 = *(var_30h);
0x00029180 lw s2, 0x2c(sp) | s2 = *(var_2ch);
0x00029184 lw s1, 0x28(sp) | s1 = *(var_28h);
0x00029188 lw s0, 0x24(sp) | s0 = *(var_24h);
0x0002918c addiu sp, sp, 0x40 |
0x00029190 jr ra | return v0;
| }
0x00029194 lw v1, (v0) | v1 = *(v0);
| label_1:
0x00029198 lw a2, 4(v0) | a2 = *((v0 + 1));
0x0002919c sltu a0, a2, v1 | a0 = (a2 < v1) ? 1 : 0;
0x000291a0 sltu a0, v1, a1 | a0 = (v1 < a1) ? 1 : 0;
| if (a0 == 0) {
0x000291a4 beqz a0, 0x291b4 | goto label_17;
| }
0x000291a8 addiu s0, s0, 1 | s0++;
0x000291ac addiu v0, v0, 8 | v0 += 8;
0x000291b0 b 0x29160 |
| } while (1);
| label_17:
0x000291b4 andi a0, v1, 7 | a0 = v1 & 7;
| if (a0 != 0) {
0x000291b8 bnez a0, 0x29204 | goto label_18;
| }
0x000291bc lw v0, (v0) | v0 = *(v0);
0x000291c0 sltu v0, v0, v1 | v0 = (v0 < v1) ? 1 : 0;
0x000291c4 lw s4, -0x7e98(gp) | s4 = *((gp - 8102));
| if (v0 == 0) {
0x000291c8 beqz v0, 0x291f0 | goto label_19;
| }
0x000291cc lw t9, -0x7e98(gp) | t9 = *((gp - 8102));
0x000291d0 move a1, v1 | a1 = v1;
0x000291d4 addiu t9, t9, -0x7afc | t9 += -0x7afc;
0x000291d8 addiu a0, s1, 0x28 | a0 = s1 + 0x28;
0x000291dc bal 0x28504 | fcn_00028504 ();
0x000291e0 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x000291e4 bnez v0, 0x29170 | goto label_0;
| }
0x000291e8 addiu s0, s0, 1 | s0++;
0x000291ec lw s4, -0x7e98(gp) | s4 = *((gp - 8102));
| label_19:
0x000291f0 sll v0, s0, 3 | v0 = s0 << 3;
0x000291f4 addu s2, s2, v0 | s2 += v0;
0x000291f8 addiu s1, s1, 0x28 | s1 += 0x28;
0x000291fc addiu s4, s4, -0x7afc | s4 += -0x7afc;
0x00029200 b 0x29240 | goto label_20;
| label_18:
0x00029204 srl a2, v1, 3 | a2 = v1 >> 3;
0x00029208 addu a2, s1, a2 | a2 = s1 + a2;
0x0002920c lbu t0, 8(a2) | t0 = *((a2 + 8));
0x00029210 sllv a0, a3, a0 | a0 = a3 << a0;
0x00029214 or a0, a0, t0 | a0 |= t0;
0x00029218 sb a0, 8(a2) | *((a2 + 8)) = a0;
0x0002921c addiu v1, v1, 1 | v1++;
0x00029220 b 0x29198 | goto label_1;
| label_2:
0x00029224 lw a2, 8(s2) | a2 = *((s2 + 2));
0x00029228 lw a1, 4(s2) | a1 = *((s2 + 1));
0x0002922c move a0, s1 | a0 = s1;
0x00029230 bal 0x28504 | fcn_00028504 ();
0x00029234 addiu s2, s2, 8 | s2 += 8;
| if (v0 != 0) {
0x00029238 bnez v0, 0x29170 | goto label_0;
| }
0x0002923c addiu s0, s0, 1 | s0++;
| label_20:
0x00029240 slt v0, s0, s3 | v0 = (s0 < s3) ? 1 : 0;
0x00029244 move t9, s4 | t9 = s4;
| if (v0 != 0) {
0x00029248 bnez v0, 0x29224 | goto label_2;
| }
0x0002924c move v0, zero | v0 = 0;
0x00029250 b 0x29170 | goto label_0;
| label_4:
0x00029254 srl a2, v0, 3 | a2 = v0 >> 3;
| if (v1 == 0) {
0x00029258 beqz v1, 0x29148 | goto label_3;
| }
0x0002925c addu a2, s1, a2 | a2 = s1 + a2;
0x00029260 andi v1, v0, 7 | v1 = v0 & 7;
0x00029264 lbu t1, 8(a2) | t1 = *((a2 + 8));
0x00029268 sllv v1, t0, v1 | v1 = t0 << v1;
0x0002926c or v1, v1, t1 | v1 |= t1;
0x00029270 sb v1, 8(a2) | *((a2 + 8)) = v1;
0x00029274 addiu v0, v0, 1 | v0++;
| label_14:
0x00029278 lw v1, (a0) | v1 = *(a0);
0x0002927c sltu v1, v0, v1 | v1 = (v0 < v1) ? 1 : 0;
0x00029280 sltu v1, v0, a1 | v1 = (v0 < a1) ? 1 : 0;
| if (v1 != 0) {
0x00029284 bnez v1, 0x29254 | goto label_4;
| }
0x00029288 lw v0, 4(a0) | v0 = *((a0 + 1));
0x0002928c addiu a3, a3, 1 | a3++;
0x00029290 addiu v0, v0, 1 | v0++;
0x00029294 addiu a0, a0, 8 | a0 += 8;
0x00029298 b 0x29130 | goto label_5;
| label_15:
0x0002929c srl a0, v0, 3 | a0 = v0 >> 3;
0x000292a0 addu a0, s1, a0 | a0 = s1 + a0;
0x000292a4 lbu a3, 8(a0) | a3 = *((a0 + 8));
0x000292a8 sllv v1, a2, v1 | v1 = a2 << v1;
0x000292ac or v1, v1, a3 | v1 |= a3;
0x000292b0 sb v1, 8(a0) | *((a0 + 8)) = v1;
0x000292b4 addiu v0, v0, 1 | v0++;
0x000292b8 b 0x2913c | goto label_6;
| do {
0x000292bc lw a2, (s0) | a2 = *(s0);
0x000292c0 sltu v0, a1, a2 | v0 = (a1 < a2) ? 1 : 0;
0x000292c4 addiu a2, a2, -1 | a2 += -1;
| if (v0 != 0) {
0x000292c8 bnez v0, 0x29310 | goto label_21;
| }
| label_9:
0x000292cc lw a1, 4(s0) | a1 = *((s0 + 1));
0x000292d0 addiu s2, s2, 1 | s2++;
0x000292d4 addiu a1, a1, 1 | a1++;
0x000292d8 addiu s0, s0, 8 | s0 += 8;
| label_16:
0x000292dc slt v0, s2, s3 | v0 = (s2 < s3) ? 1 : 0;
0x000292e0 lui a2, 0x7fff | a2 = 0x7fff0000;
0x000292e4 bnez v0, 0x292bc |
| } while (v0 != 0);
0x000292e8 ori a2, a2, 0xffff | a2 |= 0xffff;
0x000292ec sltu v0, a1, a2 | v0 = (a1 < a2) ? 1 : 0;
| if (v0 == 0) {
0x000292f0 beqz v0, 0x2916c | goto label_7;
| }
0x000292f4 nop |
| label_11:
0x000292f8 lw t9, -0x7e98(gp) | t9 = *((gp - 8102));
0x000292fc addiu t9, t9, -0x7afc | t9 += -0x7afc;
0x00029300 addiu a0, s1, 0x28 | a0 = s1 + 0x28;
0x00029304 bal 0x28504 | fcn_00028504 ();
0x00029308 lw ra, 0x3c(sp) | ra = *(var_3ch);
0x0002930c b 0x29174 | goto label_8;
| label_21:
0x00029310 move t9, s4 | t9 = s4;
0x00029314 move a0, s5 | a0 = s5;
0x00029318 bal 0x28504 | fcn_00028504 ();
0x0002931c lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00029320 beqz v0, 0x292cc | goto label_9;
| }
0x00029324 lw ra, 0x3c(sp) | ra = *(var_3ch);
0x00029328 b 0x29174 | goto label_8;
| label_13:
0x0002932c addiu v1, zero, -2 | v1 = -2;
0x00029330 lw ra, 0x3c(sp) | ra = *(var_3ch);
| if (v0 != v1) {
0x00029334 bne v0, v1, 0x29174 | goto label_8;
| }
0x00029338 sltiu v0, s3, 0xf | v0 = (s3 < 0xf) ? 1 : 0;
0x0002933c addiu v0, zero, -0xb | v0 = -0xb;
| if (v0 == 0) {
0x00029340 beqz v0, 0x29174 | goto label_8;
| }
0x00029344 addiu v0, zero, 1 | v0 = 1;
0x00029348 sllv v0, v0, s3 | v0 <<= s3;
0x0002934c andi v1, v0, 0x6f5e | v1 = v0 & 0x6f5e;
0x00029350 andi v1, v0, 0xa0 | v1 = v0 & 0xa0;
| if (v1 == 0) {
0x00029354 bnez v1, 0x29370 |
0x00029358 andi v0, v0, 0x1000 | v0 &= aav.0x00001000;
| if (v1 != 0) {
0x0002935c bnez v1, 0x29424 | goto label_22;
| }
0x00029360 addiu v0, zero, -0xb | v0 = -0xb;
| if (v0 != 0) {
0x00029364 bnez v0, 0x294e0 | goto label_23;
| }
0x00029368 lw s5, 0x38(sp) | s5 = *(var_38h);
0x0002936c b 0x29178 | goto label_10;
| }
0x00029370 addiu s5, zero, 1 | s5 = 1;
| if (s0 != 0) {
0x00029374 bnez s0, 0x293c0 | goto label_24;
| }
0x00029378 addiu s4, zero, 0x100 | s4 = aav.0x00000100;
| do {
0x0002937c lw t9, 0x30(s2) | t9 = *((s2 + 12));
0x00029380 move a1, s3 | a1 = s3;
0x00029384 move a0, s0 | a0 = s0;
0x00029388 jalr t9 | t9 ();
0x0002938c srl v1, s0, 3 | v1 = s0 >> 3;
| if (v0 != 0) {
0x00029390 beqz v0, 0x293ac |
0x00029394 addu v1, s1, v1 | v1 = s1 + v1;
0x00029398 andi v0, s0, 7 | v0 = s0 & 7;
0x0002939c lbu a0, 8(v1) | a0 = *((v1 + 8));
0x000293a0 sllv v0, s5, v0 | v0 = s5 << v0;
0x000293a4 or v0, v0, a0 | v0 |= a0;
0x000293a8 sb v0, 8(v1) | *((v1 + 8)) = v0;
| }
0x000293ac addiu s0, s0, 1 | s0++;
0x000293b0 move v0, zero | v0 = 0;
0x000293b4 bne s0, s4, 0x2937c |
| } while (s0 != s4);
0x000293b8 lw ra, 0x3c(sp) | ra = *(var_3ch);
0x000293bc b 0x29174 | goto label_8;
| label_24:
0x000293c0 move s0, zero | s0 = 0;
0x000293c4 addiu s4, zero, 0x100 | s4 = aav.0x00000100;
| do {
0x000293c8 lw t9, 0x30(s2) | t9 = *((s2 + 12));
0x000293cc move a1, s3 | a1 = s3;
0x000293d0 move a0, s0 | a0 = s0;
0x000293d4 jalr t9 | t9 ();
0x000293d8 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x000293dc bnez v0, 0x293fc |
0x000293e0 srl v1, s0, 3 | v1 = s0 >> 3;
0x000293e4 addu v1, s1, v1 | v1 = s1 + v1;
0x000293e8 andi v0, s0, 7 | v0 = s0 & 7;
0x000293ec lbu a0, 8(v1) | a0 = *((v1 + 8));
0x000293f0 sllv v0, s5, v0 | v0 = s5 << v0;
0x000293f4 or v0, v0, a0 | v0 |= a0;
0x000293f8 sb v0, 8(v1) | *((v1 + 8)) = v0;
| }
0x000293fc addiu s0, s0, 1 | s0++;
0x00029400 addiu v0, zero, 1 | v0 = 1;
0x00029404 bne s0, s4, 0x293c8 |
| } while (s0 != s4);
0x00029408 lw v1, 8(s2) | v1 = *((s2 + 2));
0x0002940c addiu a2, zero, -1 | a2 = -1;
| if (v1 == v0) {
0x00029410 beq v1, v0, 0x2916c | goto label_7;
| }
0x00029414 lw a1, 0xc(s2) | a1 = *((s2 + 3));
0x00029418 slti a1, a1, 2 | a1 = (a1 < 2) ? 1 : 0;
0x0002941c sll a1, a1, 7 | a1 <<= 7;
0x00029420 b 0x292f8 | goto label_11;
| label_22:
0x00029424 addiu s5, zero, 1 | s5 = 1;
| if (s0 != 0) {
0x00029428 bnez s0, 0x29494 | goto label_25;
| }
0x0002942c addiu s4, zero, 0x100 | s4 = aav.0x00000100;
| do {
0x00029430 lw t9, 0x30(s2) | t9 = *((s2 + 12));
0x00029434 move a1, s3 | a1 = s3;
0x00029438 move a0, s0 | a0 = s0;
0x0002943c jalr t9 | t9 ();
0x00029440 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x00029444 beqz v0, 0x29464 |
0x00029448 srl v1, s0, 3 | v1 = s0 >> 3;
0x0002944c addu v1, s1, v1 | v1 = s1 + v1;
0x00029450 andi v0, s0, 7 | v0 = s0 & 7;
0x00029454 lbu a0, 8(v1) | a0 = *((v1 + 8));
0x00029458 sllv v0, s5, v0 | v0 = s5 << v0;
0x0002945c or v0, v0, a0 | v0 |= a0;
0x00029460 sb v0, 8(v1) | *((v1 + 8)) = v0;
| }
0x00029464 addiu s0, s0, 1 | s0++;
0x00029468 bne s0, s4, 0x29430 |
| } while (s0 != s4);
0x0002946c nop |
0x00029470 lw v1, 8(s2) | v1 = *((s2 + 2));
| label_12:
0x00029474 addiu v0, zero, 1 | v0 = 1;
0x00029478 addiu a2, zero, -1 | a2 = -1;
| if (v1 == v0) {
0x0002947c beq v1, v0, 0x2916c | goto label_7;
| }
0x00029480 lw v0, 0xc(s2) | v0 = *((s2 + 3));
0x00029484 addiu a1, zero, 0x80 | a1 = 0x80;
0x00029488 slti v0, v0, 2 | v0 = (v0 < 2) ? 1 : 0;
| if (v0 != 0) {
0x0002948c movz a1, zero, v0 | a1 = 0;
| }
0x00029490 b 0x292f8 | goto label_11;
| label_25:
0x00029494 move s0, zero | s0 = 0;
0x00029498 addiu s4, zero, 0x100 | s4 = aav.0x00000100;
| do {
0x0002949c lw t9, 0x30(s2) | t9 = *((s2 + 12));
0x000294a0 move a1, s3 | a1 = s3;
0x000294a4 move a0, s0 | a0 = s0;
0x000294a8 jalr t9 | t9 ();
0x000294ac srl v1, s0, 3 | v1 = s0 >> 3;
| if (v0 == 0) {
0x000294b0 bnez v0, 0x294cc |
0x000294b4 addu v1, s1, v1 | v1 = s1 + v1;
0x000294b8 andi v0, s0, 7 | v0 = s0 & 7;
0x000294bc lbu a0, 8(v1) | a0 = *((v1 + 8));
0x000294c0 sllv v0, s5, v0 | v0 = s5 << v0;
0x000294c4 or v0, v0, a0 | v0 |= a0;
0x000294c8 sb v0, 8(v1) | *((v1 + 8)) = v0;
| }
0x000294cc addiu s0, s0, 1 | s0++;
0x000294d0 move v0, zero | v0 = 0;
0x000294d4 bne s0, s4, 0x2949c |
| } while (s0 != s4);
0x000294d8 lw ra, 0x3c(sp) | ra = *(var_3ch);
0x000294dc b 0x29174 | goto label_8;
| label_23:
0x000294e0 addiu s4, zero, 1 | s4 = 1;
| if (s0 != 0) {
0x000294e4 bnez s0, 0x2953c | goto label_26;
| }
0x000294e8 addiu s3, zero, 0x100 | s3 = aav.0x00000100;
0x000294ec slti v0, s0, 0x80 | v0 = (s0 < 0x80) ? 1 : 0;
| do {
0x000294f0 addiu a1, zero, 0xc | a1 = 0xc;
| if (v0 != 0) {
0x000294f4 beqz v0, 0x29528 |
0x000294f8 lw t9, 0x30(s2) | t9 = *((s2 + 12));
0x000294fc move a0, s0 | a0 = s0;
0x00029500 jalr t9 | t9 ();
0x00029504 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00029508 beqz v0, 0x29528 | goto label_27;
| }
0x0002950c srl v1, s0, 3 | v1 = s0 >> 3;
0x00029510 addu v1, s1, v1 | v1 = s1 + v1;
0x00029514 andi v0, s0, 7 | v0 = s0 & 7;
0x00029518 lbu a0, 8(v1) | a0 = *((v1 + 8));
0x0002951c sllv v0, s4, v0 | v0 = s4 << v0;
0x00029520 or v0, v0, a0 | v0 |= a0;
0x00029524 sb v0, 8(v1) | *((v1 + 8)) = v0;
| }
| label_27:
0x00029528 addiu s0, s0, 1 | s0++;
0x0002952c slti v0, s0, 0x80 | v0 = (s0 < 0x80) ? 1 : 0;
0x00029530 bne s0, s3, 0x294f0 |
| } while (s0 != s3);
0x00029534 lw v1, 8(s2) | v1 = *((s2 + 2));
0x00029538 b 0x29474 | goto label_12;
| label_26:
0x0002953c move s0, zero | s0 = 0;
0x00029540 addiu s3, zero, 0x100 | s3 = aav.0x00000100;
| do {
0x00029544 lw t9, 0x18(s2) | t9 = *((s2 + 6));
0x00029548 move a0, s0 | a0 = s0;
0x0002954c jalr t9 | t9 ();
0x00029550 addiu a1, zero, 0xc | a1 = 0xc;
| if (v0 > 0) {
0x00029554 blez v0, 0x29584 |
0x00029558 lw t9, 0x30(s2) | t9 = *((s2 + 12));
0x0002955c move a0, s0 | a0 = s0;
0x00029560 jalr t9 | t9 ();
0x00029564 srl v1, s0, 3 | v1 = s0 >> 3;
| if (v0 != 0) {
0x00029568 bnez v0, 0x29584 | goto label_28;
| }
0x0002956c addu v1, s1, v1 | v1 = s1 + v1;
0x00029570 andi v0, s0, 7 | v0 = s0 & 7;
0x00029574 lbu a0, 8(v1) | a0 = *((v1 + 8));
0x00029578 sllv v0, s4, v0 | v0 = s4 << v0;
0x0002957c or v0, v0, a0 | v0 |= a0;
0x00029580 sb v0, 8(v1) | *((v1 + 8)) = v0;
| }
| label_28:
0x00029584 addiu s0, s0, 1 | s0++;
0x00029588 move v0, zero | v0 = 0;
0x0002958c bne s0, s3, 0x29544 |
| } while (s0 != s3);
0x00029590 lw ra, 0x3c(sp) | ra = *(var_3ch);
0x00029594 b 0x29174 | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/1568982-13971496.squashfs_v4_le_extract/usr/lib/php/mbstring.so @ 0x2ad6c */
| #include <stdint.h>
|
; (fcn) fcn.0002ad6c () | void fcn_0002ad6c () {
0x0002ad6c lui gp, 0x14 |
0x0002ad70 addiu gp, gp, 0x6b14 |
0x0002ad74 addu gp, gp, t9 | gp += t9;
0x0002ad78 addiu sp, sp, -0x118 |
0x0002ad7c lw v1, -0x7fa0(gp) | v1 = *((gp - 8168));
0x0002ad80 sw s1, 0xf4(sp) | *(var_f4h) = s1;
0x0002ad84 lw s1, 0x128(sp) | s1 = *(arg_128h);
0x0002ad88 lw v1, 0x4a70(v1) | v1 = *(v1);
0x0002ad8c sw gp, 0x28(sp) | *(var_28h) = gp;
0x0002ad90 lw v0, 0x7c(s1) | v0 = *((s1 + 31));
0x0002ad94 sw ra, 0x114(sp) | *(var_114h) = ra;
0x0002ad98 addiu v0, v0, 1 | v0++;
0x0002ad9c sw fp, 0x110(sp) | *(var_110h) = fp;
0x0002ada0 sw s7, 0x10c(sp) | *(var_10ch) = s7;
0x0002ada4 sw s6, 0x108(sp) | *(var_108h) = s6;
0x0002ada8 sw s5, 0x104(sp) | *(var_104h) = s5;
0x0002adac sw s4, 0x100(sp) | *(var_100h) = s4;
0x0002adb0 sw s3, 0xfc(sp) | *(var_fch) = s3;
0x0002adb4 sw s2, 0xf8(sp) | *(var_f8h) = s2;
0x0002adb8 sw s0, 0xf0(sp) | *(var_f0h) = s0;
0x0002adbc sw zero, (a0) | *(a0) = 0;
0x0002adc0 sw v0, 0x7c(s1) | *((s1 + 31)) = v0;
0x0002adc4 sltu v0, v1, v0 | v0 = (v1 < v0) ? 1 : 0;
0x0002adc8 lw v0, -0x7e98(gp) | v0 = *((gp - 8102));
| if (v0 != 0) {
0x0002adcc bnez v0, 0x2bb6c | goto label_11;
| }
0x0002add0 sw a2, 0xc4(sp) | *(var_c4h) = a2;
0x0002add4 addiu v0, v0, -0x62bc | v0 += -0x62bc;
0x0002add8 move s3, a3 | s3 = a3;
0x0002addc move s4, a1 | s4 = a1;
0x0002ade0 lw a1, 0xc4(sp) | a1 = *(var_c4h);
0x0002ade4 sw a0, 0xdc(sp) | *(var_dch) = a0;
0x0002ade8 move a3, s1 | a3 = s1;
0x0002adec move a2, s3 | a2 = s3;
0x0002adf0 move a0, s4 | a0 = s4;
0x0002adf4 move t9, v0 | t9 = v0;
0x0002adf8 sw v0, 0xc0(sp) | *(var_c0h) = v0;
0x0002adfc bal 0x29d44 | fcn_00029d44 ();
0x0002ae00 move s0, v0 | s0 = v0;
0x0002ae04 addiu v0, zero, 2 | v0 = 2;
0x0002ae08 lw gp, 0x28(sp) | gp = *(var_28h);
| if (s0 != v0) {
0x0002ae0c bne s0, v0, 0x2aebc | goto label_12;
| }
0x0002ae10 lw v1, 0x10(s4) | v1 = *((s4 + 4));
0x0002ae14 addiu v0, zero, 0x5e | v0 = 0x5e;
| if (v1 != v0) {
0x0002ae18 bne v1, v0, 0x2af1c | goto label_13;
| }
0x0002ae1c nop |
0x0002ae20 lw v0, 4(s4) | v0 = *((s4 + 1));
0x0002ae24 lw a1, 0xc4(sp) | a1 = *(var_c4h);
| if (v0 != 0) {
0x0002ae28 bnez v0, 0x2af1c | goto label_13;
| }
0x0002ae2c lw t9, 0xc0(sp) | t9 = *(var_c0h);
0x0002ae30 move a3, s1 | a3 = s1;
0x0002ae34 move a2, s3 | a2 = s3;
0x0002ae38 move a0, s4 | a0 = s4;
0x0002ae3c jalr t9 | t9 ();
0x0002ae40 move s0, v0 | s0 = v0;
0x0002ae44 lw gp, 0x28(sp) | gp = *(var_28h);
0x0002ae48 addiu v0, zero, 1 | v0 = 1;
0x0002ae4c sw v0, 0xc8(sp) | *(var_c8h) = v0;
| do {
0x0002ae50 lw ra, 0x114(sp) | ra = *(var_114h);
| if (s0 >= 0) {
0x0002ae54 bltz s0, 0x2ae8c |
0x0002ae58 addiu v0, zero, 0x13 | v0 = 0x13;
0x0002ae5c lw v0, 0xc4(sp) | v0 = *(var_c4h);
| if (s0 != v0) {
0x0002ae60 bne s0, v0, 0x2af20 | goto label_10;
| }
0x0002ae64 lw s2, 0x24(s1) | s2 = *((s1 + 9));
0x0002ae68 lw s5, 8(s1) | s5 = *((s1 + 2));
0x0002ae6c lw s0, (v0) | s0 = *(v0);
0x0002ae70 move s6, zero | s6 = 0;
0x0002ae74 addiu s7, zero, 0x5d | s7 = 0x5d;
| label_0:
0x0002ae78 sltu v0, s0, s2 | v0 = (s0 < s2) ? 1 : 0;
| if (v0 != 0) {
| label_1:
0x0002ae7c bnez v0, 0x2aec4 | goto label_14;
| }
0x0002ae80 nop |
0x0002ae84 addiu s0, zero, -0x66 | s0 = -0x66;
| label_2:
0x0002ae88 lw ra, 0x114(sp) | ra = *(var_114h);
| }
| label_3:
0x0002ae8c move v0, s0 | v0 = s0;
0x0002ae90 lw fp, 0x110(sp) | fp = *(var_110h);
0x0002ae94 lw s7, 0x10c(sp) | s7 = *(var_10ch);
0x0002ae98 lw s6, 0x108(sp) | s6 = *(var_108h);
0x0002ae9c lw s5, 0x104(sp) | s5 = *(var_104h);
0x0002aea0 lw s4, 0x100(sp) | s4 = *(var_100h);
0x0002aea4 lw s3, 0xfc(sp) | s3 = *(var_fch);
0x0002aea8 lw s2, 0xf8(sp) | s2 = *(var_f8h);
0x0002aeac lw s1, 0xf4(sp) | s1 = *(var_f4h);
0x0002aeb0 lw s0, 0xf0(sp) | s0 = *(var_f0h);
0x0002aeb4 addiu sp, sp, 0x118 |
0x0002aeb8 jr ra | return v0;
| label_12:
0x0002aebc sw zero, 0xc8(sp) | *(var_c8h) = 0;
0x0002aec0 b 0x2ae50 |
| } while (1);
| if (s6 == 0) {
| label_14:
0x0002aec4 bnez s6, 0x2af14 |
0x0002aec8 nop |
0x0002aecc lw t9, 0x14(s5) | t9 = *((s5 + 5));
0x0002aed0 move a0, s0 | a0 = s0;
0x0002aed4 move a1, s2 | a1 = s2;
0x0002aed8 jalr t9 | t9 ();
0x0002aedc lw t9, (s5) | t9 = *(s5);
0x0002aee0 move a0, s0 | a0 = s0;
0x0002aee4 move s6, v0 | s6 = v0;
0x0002aee8 jalr t9 | t9 ();
0x0002aeec addu s0, s0, v0 | s0 += v0;
0x0002aef0 sltu v0, s0, s2 | v0 = (s0 < s2) ? 1 : 0;
0x0002aef4 lw gp, 0x28(sp) | gp = *(var_28h);
| if (v0 != 0) {
0x0002aef8 movz s0, s2, v0 | s0 = s2;
| }
| if (s6 == s7) {
0x0002aefc beq s6, s7, 0x2bb7c | goto label_15;
| }
0x0002af00 lw v0, 0xc(s1) | v0 = *((s1 + 3));
0x0002af04 lw v0, 0x10(v0) | v0 = *((v0 + 4));
0x0002af08 xor s6, v0, s6 | s6 = v0 ^ s6;
0x0002af0c sltiu s6, s6, 1 | s6 = (s6 < 1) ? 1 : 0;
0x0002af10 b 0x2ae78 | goto label_0;
| }
0x0002af14 move s6, zero | s6 = 0;
0x0002af18 b 0x2ae7c | goto label_1;
| label_13:
0x0002af1c sw zero, 0xc8(sp) | *(var_c8h) = 0;
| label_10:
0x0002af20 lw t9, -0x7e98(gp) | t9 = *((gp - 8102));
0x0002af24 addiu t9, t9, -0x598c | t9 += -0x598c;
0x0002af28 bal 0x2a674 | fcn_0002a674 ();
0x0002af2c nop |
0x0002af30 lw v1, 0xdc(sp) | v1 = *(var_dch);
0x0002af34 lw gp, 0x28(sp) | gp = *(var_28h);
0x0002af38 sw v0, (v1) | *(v1) = v0;
| if (v0 == 0) {
0x0002af3c beqz v0, 0x2bb74 | goto label_16;
| }
0x0002af40 move s2, v0 | s2 = v0;
0x0002af44 addiu v0, zero, 3 | v0 = 3;
0x0002af48 sw v0, 0xb0(sp) | *(var_b0h) = v0;
0x0002af4c lw v0, 0xc4(sp) | v0 = *(var_c4h);
0x0002af50 move s7, zero | s7 = 0;
0x0002af54 sw zero, 0xd4(sp) | *(var_d4h) = 0;
0x0002af58 lw v0, (v0) | v0 = *(v0);
0x0002af5c sw v0, 0xb4(sp) | *(var_b4h) = v0;
0x0002af60 lw v0, -0x7fd4(gp) | v0 = *((gp - 8181));
0x0002af64 addiu v0, v0, 0x56b0 | v0 += 0x56b0;
0x0002af68 sw v0, 0xe4(sp) | *(var_e4h) = v0;
0x0002af6c lw v0, -0x7e98(gp) | v0 = *((gp - 8102));
0x0002af70 addiu v0, v0, -0x714c | v0 += -0x714c;
0x0002af74 sw v0, 0xd8(sp) | *(var_d8h) = v0;
0x0002af78 lw v0, -0x7e98(gp) | v0 = *((gp - 8102));
0x0002af7c sw v0, 0xe8(sp) | *(var_e8h) = v0;
0x0002af80 addiu v0, zero, 0x13 | v0 = 0x13;
0x0002af84 sltiu v0, s0, 0x18 | v0 = (s0 < 0x18) ? 1 : 0;
| if (s0 != v0) {
0x0002af88 bne s0, v0, 0x2b01c | goto label_17;
| }
0x0002af8c lw v0, 0xb0(sp) | v0 = *(var_b0h);
0x0002af90 addiu v0, sp, 0xb0 | v0 = sp + 0xb0;
| if (v0 == 0) {
0x0002af94 beqz v0, 0x2ba60 | goto label_18;
| }
| label_5:
0x0002af98 lw t9, -0x7e98(gp) | t9 = *((gp - 8102));
| if (s7 != 0) {
0x0002af9c bnez s7, 0x2baac | goto label_19;
| }
| label_6:
0x0002afa0 lw v1, 0xc8(sp) | v1 = *(var_c8h);
0x0002afa4 lw v0, 4(s2) | v0 = *((s2 + 1));
| if (v1 == 0) {
0x0002afa8 beqz v1, 0x2bae4 | goto label_20;
| }
0x0002afac ori v0, v0, 1 | v0 |= 1;
| label_7:
0x0002afb0 sw v0, 4(s2) | *((s2 + 1)) = v0;
0x0002afb4 lw v0, 4(s2) | v0 = *((s2 + 1));
0x0002afb8 andi v0, v0, 1 | v0 &= 1;
0x0002afbc lw v1, 0xc4(sp) | v1 = *(var_c4h);
| if (v0 == 0) {
0x0002afc0 beqz v0, 0x2b000 | goto label_8;
| }
0x0002afc4 lw v0, 0xc(s1) | v0 = *((s1 + 3));
0x0002afc8 lw v0, 8(v0) | v0 = *((v0 + 2));
0x0002afcc ext v0, v0, 0x14, 1 | __asm ("ext v0, v0, 0x14, 1");
0x0002afd0 lw v0, 0xb4(sp) | v0 = *(var_b4h);
| if (v0 == 0) {
0x0002afd4 beqz v0, 0x2b004 | goto label_21;
| }
0x0002afd8 lw v0, 0x28(s2) | v0 = *((s2 + 10));
0x0002afdc addiu v0, s2, 8 | v0 = s2 + 8;
| if (v0 != 0) {
0x0002afe0 bnez v0, 0x2baf0 | goto label_22;
| }
0x0002afe4 addiu v1, s2, 0x28 | v1 = s2 + 0x28;
| do {
0x0002afe8 lbu a0, (v0) | a0 = *(v0);
0x0002afec addiu v0, v0, 1 | v0++;
| if (a0 != 0) {
0x0002aff0 bnez a0, 0x2baf0 | goto label_22;
| }
0x0002aff4 bne v1, v0, 0x2afe8 |
| } while (v1 != v0);
0x0002aff8 nop |
| label_9:
0x0002affc lw v1, 0xc4(sp) | v1 = *(var_c4h);
| label_8:
0x0002b000 lw v0, 0xb4(sp) | v0 = *(var_b4h);
| label_21:
0x0002b004 move s0, zero | s0 = 0;
0x0002b008 sw v0, (v1) | *(v1) = v0;
0x0002b00c lw v0, 0x7c(s1) | v0 = *((s1 + 31));
0x0002b010 addiu v0, v0, -1 | v0 += -1;
0x0002b014 sw v0, 0x7c(s1) | *((s1 + 31)) = v0;
0x0002b018 b 0x2ae88 | goto label_2;
| label_17:
0x0002b01c lw v1, 0xe4(sp) | v1 = *(var_e4h);
| if (v0 != 0) {
0x0002b020 beqz v0, 0x2b03c |
0x0002b024 sll v0, s0, 2 | v0 = s0 << 2;
0x0002b028 addu v0, v1, v0 | v0 = v1 + v0;
0x0002b02c lw v0, (v0) | v0 = *(v0);
0x0002b030 addu v0, v0, gp | v0 += gp;
0x0002b034 jr v0 | v0 ();
0x0002b038 nop |
| }
0x0002b03c addiu s0, zero, -0xb | s0 = -0xb;
| label_4:
0x0002b040 lw v0, 0xdc(sp) | v0 = *(var_dch);
0x0002b044 lw v0, (v0) | v0 = *(v0);
0x0002b048 lw t9, -0x7f80(gp) | t9 = *((gp - 8160));
| if (v0 == s2) {
0x0002b04c beq v0, s2, 0x2ae88 | goto label_2;
| }
0x0002b050 addiu t9, t9, 0x7f3c | t9 += aav.0x00007f3c;
0x0002b054 lw a0, 0x28(s2) | a0 = *((s2 + 10));
0x0002b058 bal 0x27f3c | fcn_00027f3c ();
0x0002b05c lw ra, 0x114(sp) | ra = *(var_114h);
0x0002b060 b 0x2ae8c | goto label_3;
| label_18:
0x0002ba60 sw v0, 0x1c(sp) | *(var_1ch) = v0;
0x0002ba64 addiu v0, sp, 0xac | v0 = sp + 0xac;
0x0002ba68 lw t9, -0x7e98(gp) | t9 = *((gp - 8102));
0x0002ba6c sw v0, 0x18(sp) | *(var_18h) = v0;
0x0002ba70 lw v0, 0xac(sp) | v0 = *(var_ach);
0x0002ba74 sw s1, 0x20(sp) | *(var_20h) = s1;
0x0002ba78 sw v0, 0x14(sp) | *(var_14h) = v0;
0x0002ba7c sw zero, 0x10(sp) | *(var_10h) = 0;
0x0002ba80 addiu a3, sp, 0xa8 | a3 = sp + 0xa8;
0x0002ba84 move a2, zero | a2 = 0;
0x0002ba88 addiu a1, sp, 0xb8 | a1 = sp + 0xb8;
0x0002ba8c addiu t9, t9, -0x714c | t9 += -0x714c;
0x0002ba90 move a0, s2 | a0 = s2;
0x0002ba94 bal 0x28eb4 | fcn_00028eb4 ();
0x0002ba98 move s0, v0 | s0 = v0;
0x0002ba9c lw gp, 0x28(sp) | gp = *(var_28h);
| if (v0 != 0) {
0x0002baa0 bnez v0, 0x2b040 | goto label_4;
| }
0x0002baa4 b 0x2af98 | goto label_5;
0x0002baa8 nop |
| label_19:
0x0002baac lw a2, 8(s1) | a2 = *((s1 + 2));
0x0002bab0 move a1, s2 | a1 = s2;
0x0002bab4 addiu t9, t9, -0x6574 | t9 += -aav.0x00006574;
0x0002bab8 move a0, s7 | a0 = s7;
0x0002babc bal 0x29a8c | fcn_00029a8c ();
0x0002bac0 move s0, v0 | s0 = v0;
0x0002bac4 lw gp, 0x28(sp) | gp = *(var_28h);
| if (v0 != 0) {
0x0002bac8 bnez v0, 0x2b040 | goto label_4;
| }
0x0002bacc lw t9, -0x7f80(gp) | t9 = *((gp - 8160));
0x0002bad0 addiu t9, t9, 0x7f3c | t9 += aav.0x00007f3c;
0x0002bad4 lw a0, 0x28(s2) | a0 = *((s2 + 10));
0x0002bad8 bal 0x27f3c | fcn_00027f3c ();
0x0002badc move s2, s7 | s2 = s7;
0x0002bae0 b 0x2afa0 | goto label_6;
| label_20:
0x0002bae4 addiu v1, zero, -2 | v1 = -2;
0x0002bae8 and v0, v0, v1 | v0 &= v1;
0x0002baec b 0x2afb0 | goto label_7;
| label_22:
0x0002baf0 lw v0, 8(s1) | v0 = *((s1 + 2));
0x0002baf4 move a1, zero | a1 = 0;
0x0002baf8 lw t9, 0x30(v0) | t9 = *((v0 + 12));
0x0002bafc addiu a0, zero, 0xa | a0 = 0xa;
0x0002bb00 jalr t9 | t9 ();
0x0002bb04 lw v1, 0xc4(sp) | v1 = *(var_c4h);
| if (v0 == 0) {
0x0002bb08 beqz v0, 0x2b000 | goto label_8;
| }
0x0002bb0c lw v0, 8(s1) | v0 = *((s1 + 2));
0x0002bb10 lw t9, 0x18(v0) | t9 = *((v0 + 6));
0x0002bb14 addiu a0, zero, 0xa | a0 = 0xa;
0x0002bb18 jalr t9 | t9 ();
0x0002bb1c addiu v1, zero, 1 | v1 = 1;
0x0002bb20 lw gp, 0x28(sp) | gp = *(var_28h);
| if (v0 == v1) {
0x0002bb24 bne v0, v1, 0x2bb38 |
0x0002bb28 lbu v0, 9(s2) | v0 = *((s2 + 9));
0x0002bb2c ori v0, v0, 4 | v0 |= 4;
0x0002bb30 sb v0, 9(s2) | *((s2 + 9)) = v0;
0x0002bb34 b 0x2affc | goto label_9;
| }
0x0002bb38 lw t9, -0x7e98(gp) | t9 = *((gp - 8102));
0x0002bb3c addiu a3, zero, 0xa | a3 = 0xa;
0x0002bb40 addiu a2, zero, 0xa | a2 = 0xa;
0x0002bb44 addiu a1, s1, 0xc | a1 = s1 + 0xc;
0x0002bb48 addiu t9, t9, -0x7194 | t9 += -0x7194;
0x0002bb4c addiu a0, s2, 0x28 | a0 = s2 + 0x28;
0x0002bb50 bal 0x28e6c | fcn_00028e6c ();
0x0002bb54 lw v1, 0xc4(sp) | v1 = *(var_c4h);
0x0002bb58 b 0x2b000 | goto label_8;
| label_11:
0x0002bb6c addiu s0, zero, -0x10 | s0 = -0x10;
0x0002bb70 b 0x2ae88 | goto label_2;
| label_16:
0x0002bb74 addiu s0, zero, -5 | s0 = -5;
0x0002bb78 b 0x2ae88 | goto label_2;
| label_15:
0x0002bb7c lw a1, -0x7fd4(gp) | a1 = *((gp - 8181));
0x0002bb80 lw t9, -0x7e98(gp) | t9 = *((gp - 8102));
0x0002bb84 addiu a1, a1, 0x5994 | a1 += 0x5994;
0x0002bb88 addiu t9, t9, -0x7230 | t9 += -0x7230;
0x0002bb8c move a0, s1 | a0 = s1;
0x0002bb90 bal 0x28dd0 | fcn_00028dd0 ();
0x0002bb94 addiu v0, zero, 2 | v0 = 2;
0x0002bb98 lw gp, 0x28(sp) | gp = *(var_28h);
0x0002bb9c sw v0, (s4) | *(s4) = v0;
0x0002bba0 addiu s0, zero, 2 | s0 = 2;
0x0002bba4 b 0x2af20 | goto label_10;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/1568982-13971496.squashfs_v4_le_extract/usr/lib/php/mbstring.so @ 0x3ba20 */
| #include <stdint.h>
|
; (fcn) fcn.0003ba20 () | void fcn_0003ba20 () {
0x0003ba20 addiu sp, sp, -0x30 |
0x0003ba24 sw s3, 0x28(sp) | *(var_28h) = s3;
0x0003ba28 sw s1, 0x20(sp) | *(var_20h) = s1;
0x0003ba2c lw s3, 0x20(a0) | s3 = *((a0 + 8));
0x0003ba30 lw s1, 0x3c(a0) | s1 = *((a0 + 15));
0x0003ba34 sw s2, 0x24(sp) | *(var_24h) = s2;
0x0003ba38 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x0003ba3c sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x0003ba40 move s0, a0 | s0 = a0;
0x0003ba44 sw zero, 0x20(a0) | *((a0 + 8)) = 0;
0x0003ba48 addu s3, s1, s3 | s3 = s1 + s3;
0x0003ba4c move s2, zero | s2 = 0;
| do {
| if (s1 == s3) {
0x0003ba50 bne s1, s3, 0x3ba8c |
0x0003ba54 nop |
0x0003ba58 lw t9, 0x18(s0) | t9 = *((s0 + 6));
0x0003ba5c lw ra, 0x2c(sp) | ra = *(var_2ch);
| if (t9 != 0) {
0x0003ba60 beqz t9, 0x3ba70 |
0x0003ba64 lw a0, 0x1c(s0) | a0 = *((s0 + 7));
0x0003ba68 jalr t9 | t9 ();
0x0003ba6c lw ra, 0x2c(sp) | ra = *(var_2ch);
| }
0x0003ba70 move v0, s2 | v0 = s2;
0x0003ba74 lw s3, 0x28(sp) | s3 = *(var_28h);
0x0003ba78 lw s2, 0x24(sp) | s2 = *(var_24h);
0x0003ba7c lw s1, 0x20(sp) | s1 = *(var_20h);
0x0003ba80 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x0003ba84 addiu sp, sp, 0x30 |
0x0003ba88 jr ra | return v0;
| }
0x0003ba8c lbu a0, (s1) | a0 = *(s1);
0x0003ba90 lw t9, 0x14(s0) | t9 = *((s0 + 5));
0x0003ba94 lw a1, 0x1c(s0) | a1 = *((s0 + 7));
0x0003ba98 addiu s1, s1, 1 | s1++;
0x0003ba9c jalr t9 | t9 ();
| if (v0 == 0) {
0x0003baa0 movn s2, v0, v0 | s2 = v0;
| }
0x0003baa4 b 0x3ba50 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/1568982-13971496.squashfs_v4_le_extract/usr/lib/php/mbstring.so @ 0x4ebd4 */
| #include <stdint.h>
|
; (fcn) sym.mbfl_filt_conv_common_flush () | void mbfl_filt_conv_common_flush () {
0x0004ebd4 lw t9, 0x18(a0) | t9 = *((a0 + 6));
0x0004ebd8 sw zero, 0x20(a0) | *((a0 + 8)) = 0;
0x0004ebdc sw zero, 0x24(a0) | *((a0 + 9)) = 0;
| if (t9 != 0) {
0x0004ebe0 beqz t9, 0x4ec08 |
0x0004ebe4 addiu sp, sp, -0x20 |
0x0004ebe8 lw a0, 0x1c(a0) | a0 = *((a0 + 7));
0x0004ebec sw ra, 0x1c(sp) | *(var_1ch) = ra;
0x0004ebf0 jalr t9 | t9 ();
0x0004ebf4 nop |
0x0004ebf8 lw ra, 0x1c(sp) | ra = *(var_1ch);
0x0004ebfc move v0, zero | v0 = 0;
0x0004ec00 addiu sp, sp, 0x20 |
0x0004ec04 jr ra | return v0;
| }
0x0004ec08 move v0, zero | v0 = 0;
0x0004ec0c jr ra | return v0;
| }
[*] Function fprintf used 1 times mbstring.so