[*] Binary protection state of mbstring.so

  
  	Full RELRO     No Canary found   NX enabled   DSO          No RPATH     No RUNPATH   No Symbols


[*] Function mmap 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 mmap used 1 times mbstring.so