[*] Binary protection state of libmp.so

  
  	No RELRO       No Canary found   NX disabled  DSO          No RPATH     No RUNPATH   Symbols


[*] Function popen tear down of libmp.so

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmp.so @ 0x25c60 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.JPEGD_SliceInit ()       | void JPEGD_SliceInit () {
    0x00025c60 lw t0, (a0)               |     t0 = *(a0);
    0x00025c64 lui v0, 0x800c            |     v0 = 0x800c0000;
    0x00025c68 addiu a2, zero, 1         |     a2 = 1;
    0x00025c6c lw a1, 0x14(a0)           |     a1 = *((a0 + 5));
    0x00025c70 sw zero, (t0)             |     *(t0) = 0;
    0x00025c74 sw v0, 4(t0)              |     *((t0 + 1)) = v0;
    0x00025c78 sw a2, 8(t0)              |     *((t0 + 2)) = a2;
    0x00025c7c lui a2, 0x800e            |     a2 = 0x800e0000;
    0x00025c80 lui t1, 0xe               |     t1 = 0xe0000;
    0x00025c84 lui t3, 0xf               |     t3 = 0xf0000;
    0x00025c88 addiu a2, a2, 4           |     a2 += 4;
    0x00025c8c addiu v0, t1, 0x1300      |     v0 = t1 + 0x1300;
    0x00025c90 addiu v1, t0, 0x10        |     v1 = t0 + 0x10;
    0x00025c94 ori t3, t3, 0xfffc        |     t3 |= 0xfffc;
    0x00025c98 sw a2, 0xc(t0)            |     *((t0 + 3)) = a2;
    0x00025c9c lui t2, 0x8000            |     t2 = .comment;
    0x00025ca0 addiu t1, t1, 0x1340      |     t1 += 0x1340;
                                         |     do {
    0x00025ca4 lw a3, (a1)               |         a3 = *(a1);
    0x00025ca8 and a2, v0, t3            |         a2 = v0 & t3;
    0x00025cac or a2, a2, t2             |         a2 |= t2;
    0x00025cb0 addiu v0, v0, 4           |         v0 += 4;
    0x00025cb4 sw a3, (v1)               |         *(v1) = a3;
    0x00025cb8 addiu a1, a1, 4           |         a1 += 4;
    0x00025cbc sw a2, 4(v1)              |         *((v1 + 1)) = a2;
    0x00025cc0 addiu v1, v1, 8           |         v1 += 8;
    0x00025cc4 bne v0, t1, 0x25ca4       |         
                                         |     } while (v0 != t1);
    0x00025cc8 lw v1, 0xc(a0)            |     v1 = *((a0 + 3));
    0x00025ccc lui t2, 0xe               |     t2 = 0xe1200;
    0x00025cd0 addiu t2, t2, 0x1200      |     
    0x00025cd4 lui t1, 0xf               |     t1 = 0xf0000;
    0x00025cd8 addiu v0, t0, 0x90        |     v0 = t0 + 0x90;
    0x00025cdc addiu t3, t0, 0x290       |     t3 = t0 + aav.0x00000290;
    0x00025ce0 subu t2, t2, v1           |     __asm ("subu t2, t2, v1");
    0x00025ce4 ori t1, t1, 0xfffc        |     t1 |= 0xfffc;
    0x00025ce8 lui a3, 0x8000            |     a3 = .comment;
                                         |     do {
    0x00025cec lw a2, (v1)               |         a2 = *(v1);
    0x00025cf0 addu a1, t2, v1           |         a1 = t2 + v1;
    0x00025cf4 and a1, a1, t1            |         a1 &= t1;
    0x00025cf8 or a1, a1, a3             |         a1 |= a3;
    0x00025cfc sw a2, (v0)               |         *(v0) = a2;
    0x00025d00 sw a1, 4(v0)              |         *((v0 + 1)) = a1;
    0x00025d04 addiu v0, v0, 8           |         v0 += 8;
    0x00025d08 addiu v1, v1, 4           |         v1 += 4;
    0x00025d0c bne v0, t3, 0x25cec       |         
                                         |     } while (v0 != t3);
    0x00025d10 lw v1, 0x10(a0)           |     v1 = *((a0 + 4));
    0x00025d14 lui t2, 0xe               |     t2 = 0xe1800;
    0x00025d18 addiu t2, t2, 0x1800      |     
    0x00025d1c lui t1, 0xf               |     t1 = 0xf0000;
    0x00025d20 addiu t3, t0, 0xd10       |     t3 = t0 + 0xd10;
    0x00025d24 subu t2, t2, v1           |     __asm ("subu t2, t2, v1");
    0x00025d28 ori t1, t1, 0xfffc        |     t1 |= 0xfffc;
    0x00025d2c lui a3, 0x8000            |     a3 = .comment;
                                         |     do {
    0x00025d30 lw a2, (v1)               |         a2 = *(v1);
    0x00025d34 addu a1, t2, v1           |         a1 = t2 + v1;
    0x00025d38 and a1, a1, t1            |         a1 &= t1;
    0x00025d3c or a1, a1, a3             |         a1 |= a3;
    0x00025d40 sw a2, (v0)               |         *(v0) = a2;
    0x00025d44 sw a1, 4(v0)              |         *((v0 + 1)) = a1;
    0x00025d48 addiu v0, v0, 8           |         v0 += 8;
    0x00025d4c addiu v1, v1, 4           |         v1 += 4;
    0x00025d50 bne v0, t3, 0x25d30       |         
                                         |     } while (v0 != t3);
    0x00025d54 lw t4, 0x18(a0)           |     t4 = *((a0 + 6));
    0x00025d58 lui a1, 0xe               |     a1 = 0xe0000;
    0x00025d5c lui t3, 0xf               |     t3 = 0xf0000;
    0x00025d60 addiu a1, a1, 0x1400      |     a1 += aav.0x00001400;
    0x00025d64 move v1, zero             |     v1 = 0;
    0x00025d68 ori t3, t3, 0xfffc        |     t3 |= 0xfffc;
    0x00025d6c lui t2, 0x8000            |     t2 = .comment;
    0x00025d70 addiu t1, zero, 0x100     |     t1 = aav.0x00000100;
                                         |     do {
    0x00025d74 srl a3, v1, 6             |         a3 = v1 >> 6;
    0x00025d78 andi a2, v1, 0x3f         |         a2 = v1 & 0x3f;
    0x00025d7c sll a3, a3, 8             |         a3 <<= 8;
    0x00025d80 addu a3, t4, a3           |         a3 = t4 + a3;
    0x00025d84 sll a2, a2, 2             |         a2 <<= 2;
    0x00025d88 addu a2, a3, a2           |         a2 = a3 + a2;
    0x00025d8c lw a3, (a2)               |         a3 = *(a2);
    0x00025d90 and a2, a1, t3            |         a2 = a1 & t3;
    0x00025d94 or a2, a2, t2             |         a2 |= t2;
    0x00025d98 addiu v1, v1, 1           |         v1++;
    0x00025d9c sw a3, (v0)               |         *(v0) = a3;
    0x00025da0 addiu a1, a1, 4           |         a1 += 4;
    0x00025da4 sw a2, 4(v0)              |         *((v0 + 1)) = a2;
    0x00025da8 addiu v0, v0, 8           |         v0 += 8;
    0x00025dac bne v1, t1, 0x25d74       |         
                                         |     } while (v1 != t1);
    0x00025db0 lui v0, 0x800e            |     v0 = 0x800e0000;
    0x00025db4 addiu v1, v0, 8           |     v1 = v0 + 8;
    0x00025db8 sw zero, 0x1510(t0)       |     *((t0 + 1348)) = 0;
    0x00025dbc sw v1, 0x1514(t0)         |     *((t0 + 1349)) = v1;
    0x00025dc0 lw a1, 0x28(a0)           |     a1 = *((a0 + 10));
    0x00025dc4 addiu v1, v0, 0xc         |     v1 = v0 + 0xc;
    0x00025dc8 addiu a2, v0, 0x10        |     a2 = v0 + 0x10;
    0x00025dcc sw a1, 0x1518(t0)         |     *((t0 + 1350)) = a1;
    0x00025dd0 sw v1, 0x151c(t0)         |     *((t0 + 1351)) = v1;
    0x00025dd4 lw a3, 0x2c(a0)           |     a3 = *((a0 + 11));
    0x00025dd8 lw v1, 8(a0)              |     v1 = *((a0 + 2));
    0x00025ddc addiu a1, v0, 0x14        |     a1 = v0 + 0x14;
    0x00025de0 sw a3, 0x1520(t0)         |     *((t0 + 1352)) = a3;
    0x00025de4 sw a2, 0x1524(t0)         |     *((t0 + 1353)) = a2;
    0x00025de8 lw a2, 0x30(a0)           |     a2 = *((a0 + 12));
    0x00025dec addiu a0, v0, 0x28        |     a0 = v0 + 0x28;
    0x00025df0 addiu t1, v0, 0x2c        |     t1 = v0 + 0x2c;
    0x00025df4 sw a2, 0x1528(t0)         |     *((t0 + 1354)) = a2;
    0x00025df8 sw a1, 0x152c(t0)         |     *((t0 + 1355)) = a1;
    0x00025dfc lw a1, 4(v1)              |     a1 = *((v1 + 1));
    0x00025e00 addiu a3, v0, 0x30        |     a3 = v0 + 0x30;
    0x00025e04 addiu a2, v0, 0x34        |     a2 = v0 + 0x34;
    0x00025e08 sw a1, 0x1530(t0)         |     *((t0 + 1356)) = a1;
    0x00025e0c sw a0, 0x1534(t0)         |     *((t0 + 1357)) = a0;
    0x00025e10 lw t2, 8(v1)              |     t2 = *((v1 + 2));
    0x00025e14 addiu a1, v0, 0x38        |     a1 = v0 + 0x38;
    0x00025e18 addiu a0, v0, 0x3c        |     a0 = v0 + 0x3c;
    0x00025e1c sw t2, 0x1538(t0)         |     *((t0 + 1358)) = t2;
    0x00025e20 sw t1, 0x153c(t0)         |     *(t0) = t1;
    0x00025e24 lw t1, 0xc(v1)            |     t1 = *((v1 + 3));
    0x00025e28 addiu v0, v0, 4           |     v0 += 4;
    0x00025e2c sw t1, 0x1540(t0)         |     *((t0 + 1360)) = t1;
    0x00025e30 sw a3, 0x1544(t0)         |     *((t0 + 1361)) = a3;
    0x00025e34 lw a3, 0x10(v1)           |     a3 = *((v1 + 4));
    0x00025e38 sw a3, 0x1548(t0)         |     *((t0 + 1362)) = a3;
    0x00025e3c sw a2, 0x154c(t0)         |     *((t0 + 1363)) = a2;
    0x00025e40 lw a2, 0x14(v1)           |     a2 = *((v1 + 5));
    0x00025e44 sw a2, 0x1550(t0)         |     *((t0 + 1364)) = a2;
    0x00025e48 sw a1, 0x1554(t0)         |     *((t0 + 1365)) = a1;
    0x00025e4c lw a1, 0x18(v1)           |     a1 = *((v1 + 6));
    0x00025e50 sw a1, 0x1558(t0)         |     *((t0 + 1366)) = a1;
    0x00025e54 sw a0, 0x155c(t0)         |     *((t0 + 1367)) = a0;
    0x00025e58 lw v1, (v1)               |     v1 = *(v1);
    0x00025e5c lui a0, 0xa               |     a0 = 0xa0009;
    0x00025e60 addiu a0, a0, 9           |     
    0x00025e64 andi a1, v1, 4            |     a1 = v1 & 4;
    0x00025e68 andi v1, v1, 3            |     v1 &= 3;
    0x00025e6c or a0, a1, a0             |     a0 = a1 | a0;
    0x00025e70 sll v1, v1, 4             |     v1 <<= 4;
    0x00025e74 or v1, a0, v1             |     v1 = a0 | v1;
    0x00025e78 sw v1, 0x1560(t0)         |     *((t0 + 1368)) = v1;
    0x00025e7c sw v0, 0x1564(t0)         |     *((t0 + 1369)) = v0;
    0x00025e80 addiu v0, zero, 7         |     v0 = 7;
    0x00025e84 sw v0, 0x1568(t0)         |     *((t0 + 1370)) = v0;
    0x00025e88 lui v0, 0xc00e            |     v0 = 0xc00e0000;
    0x00025e8c sw v0, 0x156c(t0)         |     *((t0 + 1371)) = v0;
    0x00025e90 jr ra                     |     return v0;
    0x00025e94 nop                       |     
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmp.so @ 0x27050 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.T20_JPEGD_SliceInit ()       | void T20_JPEGD_SliceInit () {
    0x00027050 lw t0, (a0)                   |     t0 = *(a0);
    0x00027054 lui v0, 0x800c                |     v0 = 0x800c0000;
    0x00027058 addiu a2, zero, 1             |     a2 = 1;
    0x0002705c lw a1, 0x14(a0)               |     a1 = *((a0 + 5));
    0x00027060 sw zero, (t0)                 |     *(t0) = 0;
    0x00027064 sw v0, 4(t0)                  |     *((t0 + 1)) = v0;
    0x00027068 sw a2, 8(t0)                  |     *((t0 + 2)) = a2;
    0x0002706c lui a2, 0x800e                |     a2 = 0x800e0000;
    0x00027070 lui t1, 0xe                   |     t1 = 0xe0000;
    0x00027074 lui t3, 0xf                   |     t3 = 0xf0000;
    0x00027078 addiu a2, a2, 4               |     a2 += 4;
    0x0002707c addiu v0, t1, 0x1300          |     v0 = t1 + 0x1300;
    0x00027080 addiu v1, t0, 0x10            |     v1 = t0 + 0x10;
    0x00027084 ori t3, t3, 0xfffc            |     t3 |= 0xfffc;
    0x00027088 sw a2, 0xc(t0)                |     *((t0 + 3)) = a2;
    0x0002708c lui t2, 0x8000                |     t2 = .comment;
    0x00027090 addiu t1, t1, 0x1340          |     t1 += 0x1340;
                                             |     do {
    0x00027094 lw a3, (a1)                   |         a3 = *(a1);
    0x00027098 and a2, v0, t3                |         a2 = v0 & t3;
    0x0002709c or a2, a2, t2                 |         a2 |= t2;
    0x000270a0 addiu v0, v0, 4               |         v0 += 4;
    0x000270a4 sw a3, (v1)                   |         *(v1) = a3;
    0x000270a8 addiu a1, a1, 4               |         a1 += 4;
    0x000270ac sw a2, 4(v1)                  |         *((v1 + 1)) = a2;
    0x000270b0 addiu v1, v1, 8               |         v1 += 8;
    0x000270b4 bne v0, t1, 0x27094           |         
                                             |     } while (v0 != t1);
    0x000270b8 lw v1, 0xc(a0)                |     v1 = *((a0 + 3));
    0x000270bc lui t2, 0xe                   |     t2 = 0xe1200;
    0x000270c0 addiu t2, t2, 0x1200          |     
    0x000270c4 lui t1, 0xf                   |     t1 = 0xf0000;
    0x000270c8 addiu v0, t0, 0x90            |     v0 = t0 + 0x90;
    0x000270cc addiu t3, t0, 0x290           |     t3 = t0 + aav.0x00000290;
    0x000270d0 subu t2, t2, v1               |     __asm ("subu t2, t2, v1");
    0x000270d4 ori t1, t1, 0xfffc            |     t1 |= 0xfffc;
    0x000270d8 lui a3, 0x8000                |     a3 = .comment;
                                             |     do {
    0x000270dc lw a2, (v1)                   |         a2 = *(v1);
    0x000270e0 addu a1, t2, v1               |         a1 = t2 + v1;
    0x000270e4 and a1, a1, t1                |         a1 &= t1;
    0x000270e8 or a1, a1, a3                 |         a1 |= a3;
    0x000270ec sw a2, (v0)                   |         *(v0) = a2;
    0x000270f0 sw a1, 4(v0)                  |         *((v0 + 1)) = a1;
    0x000270f4 addiu v0, v0, 8               |         v0 += 8;
    0x000270f8 addiu v1, v1, 4               |         v1 += 4;
    0x000270fc bne v0, t3, 0x270dc           |         
                                             |     } while (v0 != t3);
    0x00027100 lw v1, 0x10(a0)               |     v1 = *((a0 + 4));
    0x00027104 lui t2, 0xe                   |     t2 = 0xe1800;
    0x00027108 addiu t2, t2, 0x1800          |     
    0x0002710c lui t1, 0xf                   |     t1 = 0xf0000;
    0x00027110 addiu t3, t0, 0xd10           |     t3 = t0 + 0xd10;
    0x00027114 subu t2, t2, v1               |     __asm ("subu t2, t2, v1");
    0x00027118 ori t1, t1, 0xfffc            |     t1 |= 0xfffc;
    0x0002711c lui a3, 0x8000                |     a3 = .comment;
                                             |     do {
    0x00027120 lw a2, (v1)                   |         a2 = *(v1);
    0x00027124 addu a1, t2, v1               |         a1 = t2 + v1;
    0x00027128 and a1, a1, t1                |         a1 &= t1;
    0x0002712c or a1, a1, a3                 |         a1 |= a3;
    0x00027130 sw a2, (v0)                   |         *(v0) = a2;
    0x00027134 sw a1, 4(v0)                  |         *((v0 + 1)) = a1;
    0x00027138 addiu v0, v0, 8               |         v0 += 8;
    0x0002713c addiu v1, v1, 4               |         v1 += 4;
    0x00027140 bne v0, t3, 0x27120           |         
                                             |     } while (v0 != t3);
    0x00027144 lw t4, 0x18(a0)               |     t4 = *((a0 + 6));
    0x00027148 lui a1, 0xe                   |     a1 = 0xe0000;
    0x0002714c lui t3, 0xf                   |     t3 = 0xf0000;
    0x00027150 addiu a1, a1, 0x1400          |     a1 += aav.0x00001400;
    0x00027154 move v1, zero                 |     v1 = 0;
    0x00027158 ori t3, t3, 0xfffc            |     t3 |= 0xfffc;
    0x0002715c lui t2, 0x8000                |     t2 = .comment;
    0x00027160 addiu t1, zero, 0x100         |     t1 = aav.0x00000100;
                                             |     do {
    0x00027164 srl a3, v1, 6                 |         a3 = v1 >> 6;
    0x00027168 andi a2, v1, 0x3f             |         a2 = v1 & 0x3f;
    0x0002716c sll a3, a3, 8                 |         a3 <<= 8;
    0x00027170 addu a3, t4, a3               |         a3 = t4 + a3;
    0x00027174 sll a2, a2, 2                 |         a2 <<= 2;
    0x00027178 addu a2, a3, a2               |         a2 = a3 + a2;
    0x0002717c lw a3, (a2)                   |         a3 = *(a2);
    0x00027180 and a2, a1, t3                |         a2 = a1 & t3;
    0x00027184 or a2, a2, t2                 |         a2 |= t2;
    0x00027188 addiu v1, v1, 1               |         v1++;
    0x0002718c sw a3, (v0)                   |         *(v0) = a3;
    0x00027190 addiu a1, a1, 4               |         a1 += 4;
    0x00027194 sw a2, 4(v0)                  |         *((v0 + 1)) = a2;
    0x00027198 addiu v0, v0, 8               |         v0 += 8;
    0x0002719c bne v1, t1, 0x27164           |         
                                             |     } while (v1 != t1);
    0x000271a0 lui v0, 0x800e                |     v0 = 0x800e0000;
    0x000271a4 addiu v1, v0, 8               |     v1 = v0 + 8;
    0x000271a8 sw zero, 0x1510(t0)           |     *((t0 + 1348)) = 0;
    0x000271ac sw v1, 0x1514(t0)             |     *((t0 + 1349)) = v1;
    0x000271b0 lw a1, 0x28(a0)               |     a1 = *((a0 + 10));
    0x000271b4 addiu v1, v0, 0xc             |     v1 = v0 + 0xc;
    0x000271b8 addiu a2, v0, 0x10            |     a2 = v0 + 0x10;
    0x000271bc sw a1, 0x1518(t0)             |     *((t0 + 1350)) = a1;
    0x000271c0 sw v1, 0x151c(t0)             |     *((t0 + 1351)) = v1;
    0x000271c4 lw a3, 0x2c(a0)               |     a3 = *((a0 + 11));
    0x000271c8 lw v1, 8(a0)                  |     v1 = *((a0 + 2));
    0x000271cc addiu a1, v0, 0x14            |     a1 = v0 + 0x14;
    0x000271d0 sw a3, 0x1520(t0)             |     *((t0 + 1352)) = a3;
    0x000271d4 sw a2, 0x1524(t0)             |     *((t0 + 1353)) = a2;
    0x000271d8 lw a2, 0x30(a0)               |     a2 = *((a0 + 12));
    0x000271dc addiu a0, v0, 0x28            |     a0 = v0 + 0x28;
    0x000271e0 addiu t1, v0, 0x2c            |     t1 = v0 + 0x2c;
    0x000271e4 sw a2, 0x1528(t0)             |     *((t0 + 1354)) = a2;
    0x000271e8 sw a1, 0x152c(t0)             |     *((t0 + 1355)) = a1;
    0x000271ec lw a1, 4(v1)                  |     a1 = *((v1 + 1));
    0x000271f0 addiu a3, v0, 0x30            |     a3 = v0 + 0x30;
    0x000271f4 addiu a2, v0, 0x34            |     a2 = v0 + 0x34;
    0x000271f8 sw a1, 0x1530(t0)             |     *((t0 + 1356)) = a1;
    0x000271fc sw a0, 0x1534(t0)             |     *((t0 + 1357)) = a0;
    0x00027200 lw t2, 8(v1)                  |     t2 = *((v1 + 2));
    0x00027204 addiu a1, v0, 0x38            |     a1 = v0 + 0x38;
    0x00027208 addiu a0, v0, 0x3c            |     a0 = v0 + 0x3c;
    0x0002720c sw t2, 0x1538(t0)             |     *((t0 + 1358)) = t2;
    0x00027210 sw t1, 0x153c(t0)             |     *(t0) = t1;
    0x00027214 lw t1, 0xc(v1)                |     t1 = *((v1 + 3));
    0x00027218 addiu v0, v0, 4               |     v0 += 4;
    0x0002721c sw t1, 0x1540(t0)             |     *((t0 + 1360)) = t1;
    0x00027220 sw a3, 0x1544(t0)             |     *((t0 + 1361)) = a3;
    0x00027224 lw a3, 0x10(v1)               |     a3 = *((v1 + 4));
    0x00027228 sw a3, 0x1548(t0)             |     *((t0 + 1362)) = a3;
    0x0002722c sw a2, 0x154c(t0)             |     *((t0 + 1363)) = a2;
    0x00027230 lw a2, 0x14(v1)               |     a2 = *((v1 + 5));
    0x00027234 sw a2, 0x1550(t0)             |     *((t0 + 1364)) = a2;
    0x00027238 sw a1, 0x1554(t0)             |     *((t0 + 1365)) = a1;
    0x0002723c lw a1, 0x18(v1)               |     a1 = *((v1 + 6));
    0x00027240 sw a1, 0x1558(t0)             |     *((t0 + 1366)) = a1;
    0x00027244 sw a0, 0x155c(t0)             |     *((t0 + 1367)) = a0;
    0x00027248 lw v1, (v1)                   |     v1 = *(v1);
    0x0002724c lui a0, 0xa                   |     a0 = 0xa0009;
    0x00027250 addiu a0, a0, 9               |     
    0x00027254 andi a1, v1, 4                |     a1 = v1 & 4;
    0x00027258 andi v1, v1, 3                |     v1 &= 3;
    0x0002725c or a0, a1, a0                 |     a0 = a1 | a0;
    0x00027260 sll v1, v1, 4                 |     v1 <<= 4;
    0x00027264 or v1, a0, v1                 |     v1 = a0 | v1;
    0x00027268 sw v1, 0x1560(t0)             |     *((t0 + 1368)) = v1;
    0x0002726c sw v0, 0x1564(t0)             |     *((t0 + 1369)) = v0;
    0x00027270 addiu v0, zero, 7             |     v0 = 7;
    0x00027274 sw v0, 0x1568(t0)             |     *((t0 + 1370)) = v0;
    0x00027278 lui v0, 0xc00e                |     v0 = 0xc00e0000;
    0x0002727c sw v0, 0x156c(t0)             |     *((t0 + 1371)) = v0;
    0x00027280 jr ra                         |     return v0;
    0x00027284 nop                           |     
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmp.so @ 0x1c4c8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.check_watermark ()           | void check_watermark () {
    0x0001c4c8 lui gp, 0xd                   |     
    0x0001c4cc addiu gp, gp, 0xf48           |     
    0x0001c4d0 addu gp, gp, t9               |     gp += t9;
    0x0001c4d4 addiu sp, sp, -0x160          |     
    0x0001c4d8 slti v0, a2, 0x40             |     v0 = (a2 < 0x40) ? 1 : 0;
    0x0001c4dc sw gp, 0x10(sp)               |     *(var_10h) = gp;
    0x0001c4e0 sw s7, 0x13c(sp)              |     *(var_13ch) = s7;
    0x0001c4e4 sw ra, 0x144(sp)              |     *(var_144h) = ra;
    0x0001c4e8 sw fp, 0x140(sp)              |     *(var_140h) = fp;
    0x0001c4ec sw s6, 0x138(sp)              |     *(var_138h) = s6;
    0x0001c4f0 sw s5, 0x134(sp)              |     *(var_134h) = s5;
    0x0001c4f4 sw s4, 0x130(sp)              |     *(var_130h) = s4;
    0x0001c4f8 sw s3, 0x12c(sp)              |     *(var_12ch) = s3;
    0x0001c4fc sw s2, 0x128(sp)              |     *(var_128h) = s2;
    0x0001c500 sw s1, 0x124(sp)              |     *(var_124h) = s1;
    0x0001c504 sw s0, 0x120(sp)              |     *(var_120h) = s0;
    0x0001c508 sdc1 f24, 0x158(sp)           |     __asm ("sdc1 f24, aav.0x00000158(sp)");
    0x0001c50c sdc1 f22, 0x150(sp)           |     __asm ("sdc1 f22, aav.0x00000150(sp)");
    0x0001c510 sdc1 f20, 0x148(sp)           |     __asm ("sdc1 f20, aav.0x00000148(sp)");
    0x0001c514 move s7, a2                   |     s7 = a2;
                                             |     if (v0 != 0) {
    0x0001c518 bnez v0, 0x1c758              |         goto label_2;
                                             |     }
    0x0001c51c lw v0, 8(a0)                  |     v0 = *((a0 + 2));
    0x0001c520 slt v1, a3, v0                |     v1 = (a3 < v0) ? 1 : 0;
    0x0001c524 move fp, a0                   |     fp = a0;
                                             |     if (v1 != 0) {
    0x0001c528 bnez v1, 0x1c758              |         goto label_2;
                                             |     }
    0x0001c52c sw zero, 0x18(sp)             |     *(var_18h) = 0;
    0x0001c530 addiu s0, sp, 0x18            |     s0 = sp + 0x18;
                                             |     if (v0 <= 0) {
    0x0001c534 blez v0, 0x1c6e4              |         goto label_3;
                                             |     }
    0x0001c538 lw v0, -0x7fc4(gp)            |     v0 = *((gp - 8177));
    0x0001c53c lw s3, -0x7fbc(gp)            |     s3 = *(gp);
    0x0001c540 lw s2, -0x7fbc(gp)            |     s2 = *(gp);
    0x0001c544 ldc1 f22, -0x6b70(v0)         |     __asm ("ldc1 f22, -0x6b70(v0)");
    0x0001c548 lw v0, -0x7fc4(gp)            |     v0 = *((gp - 8177));
    0x0001c54c lw a0, 0x18(a0)               |     a0 = *((a0 + 6));
    0x0001c550 lw a2, 0x1c(fp)               |     a2 = *(arg_1ch);
    0x0001c554 lwc1 f24, -0x6b7c(v0)         |     __asm ("lwc1 f24, -0x6b7c(v0)");
    0x0001c558 lw v0, -0x7fc4(gp)            |     v0 = *((gp - 8177));
    0x0001c55c move s1, a1                   |     s1 = a1;
    0x0001c560 move s5, zero                 |     s5 = 0;
    0x0001c564 ldc1 f20, -0x6b68(v0)         |     __asm ("ldc1 f20, -0x6b68(v0)");
    0x0001c568 sll v0, s7, 3                 |     v0 = s7 << 3;
    0x0001c56c sw v0, 0x118(sp)              |     *(var_118h) = v0;
                                             |     /* sym.watermark_dct8.constprop.3 */
    0x0001c570 addiu s3, s3, -0x44dc         |     s3 += -0x44dc;
                                             |     /* sym.fsort64 */
    0x0001c574 addiu s2, s2, -0x4640         |     s2 += -0x4640;
    0x0001c578 addiu s0, sp, 0x18            |     s0 = sp + 0x18;
    0x0001c57c sra s4, s5, 3                 |     s4 = s5 >> 3;
                                             | label_1:
    0x0001c580 sll s4, s4, 3                 |     s4 <<= 3;
    0x0001c584 move s6, zero                 |     s6 = 0;
                                             | label_0:
    0x0001c588 lw a1, 0x14(fp)               |     a1 = *(arg_14h);
    0x0001c58c addu t3, s1, s6               |     t3 = s1 + s6;
    0x0001c590 move v1, zero                 |     v1 = 0;
    0x0001c594 move a3, a1                   |     a3 = a1;
    0x0001c598 addiu t2, zero, 0x40          |     t2 = 0x40;
                                             |     do {
    0x0001c59c sra t0, v1, 3                 |         t0 = v1 >> 3;
    0x0001c5a0 mul v0, s7, t0                |         __asm ("mul v0, s7, t0");
    0x0001c5a4 andi t1, v1, 7                |         t1 = v1 & 7;
    0x0001c5a8 addiu a3, a3, 4               |         a3 += 4;
    0x0001c5ac addiu v1, v1, 1               |         v1++;
    0x0001c5b0 addu t0, v0, t3               |         t0 = v0 + t3;
    0x0001c5b4 addu t0, t0, t1               |         t0 += t1;
    0x0001c5b8 lbu t0, (t0)                  |         t0 = *(t0);
    0x0001c5bc mtc1 t0, f1                   |         __asm ("mtc1 t0, f1");
    0x0001c5c0 cvt.s.w f0, f1                |         __asm ("cvt.s.w f0, f1");
    0x0001c5c4 swc1 f0, -4(a3)               |         __asm ("swc1 f0, -4(a3)");
    0x0001c5c8 bne v1, t2, 0x1c59c           |         
                                             |     } while (v1 != t2);
    0x0001c5cc move t9, s3                   |     t9 = s3;
    0x0001c5d0 bal 0x1bb24                   |     sym_watermark_dct8_constprop_3 ();
    0x0001c5d4 nop                           |     
    0x0001c5d8 lw a0, 0x1c(fp)               |     a0 = *(arg_1ch);
    0x0001c5dc lw a3, 0x18(fp)               |     a3 = *(arg_18h);
    0x0001c5e0 move v1, zero                 |     v1 = 0;
    0x0001c5e4 addiu a2, zero, 0x100         |     a2 = aav.0x00000100;
    0x0001c5e8 addu a1, a3, v1               |     a1 = a3 + v1;
                                             |     do {
    0x0001c5ec lw a1, (a1)                   |         a1 = *(a1);
    0x0001c5f0 ext a1, a1, 0, 0x1f           |         __asm ("ext a1, a1, 0, 0x1f");
    0x0001c5f4 mtc1 a1, f0                   |         __asm ("mtc1 a1, f0");
    0x0001c5f8 swxc1 f0, a0(v1)              |         __asm ("swxc1 f0, a0(v1)");
    0x0001c5fc addiu v1, v1, 4               |         v1 += 4;
    0x0001c600 addu a1, a3, v1               |         a1 = a3 + v1;
    0x0001c604 bne v1, a2, 0x1c5ec           |         
                                             |     } while (v1 != a2);
    0x0001c608 addiu a2, zero, 0x3f          |     a2 = 0x3f;
    0x0001c60c move t9, s2                   |     t9 = s2;
    0x0001c610 move a1, zero                 |     a1 = 0;
    0x0001c614 bal 0x1b9c0                   |     sym_fsort64 ();
    0x0001c618 lw a2, 0x1c(fp)               |     a2 = *(arg_1ch);
    0x0001c61c mtc1 zero, f1                 |     __asm ("mtc1 zero, f1");
    0x0001c620 lwc1 f0, 0x80(a2)             |     __asm ("lwc1 f0, 0x80(a2)");
    0x0001c624 c.eq.s f0, f1                 |     __asm ("c.eq.s f0, f1");
    0x0001c628 bc1t 0x1c74c                  |     __asm ("bc1t 0x1c74c");
    0x0001c62c lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x0001c630 cvt.d.s f4, f0                |     __asm ("cvt.d.s f4, f0");
    0x0001c634 lw v1, (fp)                   |     v1 = *(fp);
    0x0001c638 lw a0, 0x18(fp)               |     a0 = *(arg_18h);
    0x0001c63c swc1 f0, 0x80(a2)             |     __asm ("swc1 f0, 0x80(a2)");
    0x0001c640 sll v1, v1, 2                 |     v1 <<= 2;
    0x0001c644 addu v1, a0, v1               |     v1 = a0 + v1;
    0x0001c648 lw a1, (v1)                   |     a1 = *(v1);
    0x0001c64c lwc1 f0, 0xc(fp)              |     __asm ("lwc1 f0, (arg_ch)");
    0x0001c650 lw v1, 4(fp)                  |     v1 = *(arg_4h);
    0x0001c654 ext a1, a1, 0, 0x1f           |     __asm ("ext a1, a1, 0, 0x1f");
    0x0001c658 mtc1 a1, f1                   |     __asm ("mtc1 a1, f1");
    0x0001c65c sra t0, s6, 3                 |     t0 = s6 >> 3;
    0x0001c660 cvt.d.s f2, f1                |     __asm ("cvt.d.s f2, f1");
    0x0001c664 div.d f2, f2, f4              |     __asm ("div.d f2, f2, f4");
    0x0001c668 cvt.d.s f0, f0                |     __asm ("cvt.d.s f0, f0");
    0x0001c66c addu t0, t0, s4               |     t0 += s4;
    0x0001c670 sll a3, t0, 3                 |     a3 = t0 << 3;
    0x0001c674 sll v1, v1, 2                 |     v1 <<= 2;
    0x0001c678 addu a1, a0, v1               |     a1 = a0 + v1;
    0x0001c67c addiu v1, a3, 4               |     v1 = a3 + 4;
    0x0001c680 addiu s6, s6, 8               |     s6 += 8;
    0x0001c684 sub.d f2, f2, f20             |     __asm ("sub.d f2, f2, f20");
    0x0001c688 div.d f2, f2, f0              |     __asm ("div.d f2, f2, f0");
    0x0001c68c cvt.s.d f2, f2                |     __asm ("cvt.s.d f2, f2");
    0x0001c690 swxc1 f2, s0(a3)              |     __asm ("swxc1 f2, s0(a3)");
    0x0001c694 lw a1, (a1)                   |     a1 = *(a1);
    0x0001c698 lwc1 f2, 0x80(a2)             |     __asm ("lwc1 f2, 0x80(a2)");
    0x0001c69c ext a1, a1, 0, 0x1f           |     __asm ("ext a1, a1, 0, 0x1f");
    0x0001c6a0 mtc1 a1, f3                   |     __asm ("mtc1 a1, f3");
    0x0001c6a4 cvt.d.s f4, f3                |     __asm ("cvt.d.s f4, f3");
    0x0001c6a8 cvt.d.s f2, f2                |     __asm ("cvt.d.s f2, f2");
    0x0001c6ac div.d f2, f4, f2              |     __asm ("div.d f2, f4, f2");
    0x0001c6b0 sub.d f2, f2, f20             |     __asm ("sub.d f2, f2, f20");
    0x0001c6b4 div.d f0, f2, f0              |     __asm ("div.d f0, f2, f0");
    0x0001c6b8 cvt.s.d f0, f0                |     __asm ("cvt.s.d f0, f0");
    0x0001c6bc swxc1 f0, s0(v1)              |     __asm ("swxc1 f0, s0(v1)");
    0x0001c6c0 addiu v1, zero, 0x40          |     v1 = 0x40;
    0x0001c6c4 lw v1, 0x118(sp)              |     v1 = *(var_118h);
                                             |     if (s6 != v1) {
    0x0001c6c8 bne s6, v1, 0x1c588           |         goto label_0;
                                             |     }
    0x0001c6cc lw v0, 8(fp)                  |     v0 = *(arg_8h);
    0x0001c6d0 addiu s5, s5, 8               |     s5 += 8;
    0x0001c6d4 addu s1, s1, v1               |     s1 += v1;
    0x0001c6d8 slt v1, s5, v0                |     v1 = (s5 < v0) ? 1 : 0;
    0x0001c6dc sra s4, s5, 3                 |     s4 = s5 >> 3;
                                             |     if (v1 != 0) {
    0x0001c6e0 bnez v1, 0x1c580              |         goto label_1;
                                             |     }
                                             | label_3:
    0x0001c6e4 lw a0, -0x7fe4(gp)            |     a0 = *((gp - 8185));
    0x0001c6e8 lw t9, -0x7870(gp)            |     t9 = sym.corcoeff8;
    0x0001c6ec move a1, s0                   |     a1 = s0;
    0x0001c6f0 sll a2, v0, 1                 |     a2 = v0 << 1;
                                             |     /* obj.watermarkn */
    0x0001c6f4 addiu a0, a0, -0x16b0         |     a0 += -0x16b0;
    0x0001c6f8 jalr t9                       |     t9 ();
    0x0001c6fc lwc1 f1, 0x10(fp)             |     __asm ("lwc1 f1, (arg_10h)");
    0x0001c700 lw ra, 0x144(sp)              |     ra = *(var_144h);
    0x0001c704 addiu v1, zero, 1             |     v1 = 1;
    0x0001c708 c.le.s f1, f0                 |     __asm ("c.le.s f1, f0");
    0x0001c70c move v0, zero                 |     v0 = 0;
    0x0001c710 lw fp, 0x140(sp)              |     fp = *(var_140h);
    0x0001c714 lw s7, 0x13c(sp)              |     s7 = *(var_13ch);
    0x0001c718 lw s6, 0x138(sp)              |     s6 = *(var_138h);
    0x0001c71c lw s5, 0x134(sp)              |     s5 = *(var_134h);
    0x0001c720 lw s4, 0x130(sp)              |     s4 = *(var_130h);
    0x0001c724 lw s3, 0x12c(sp)              |     s3 = *(var_12ch);
    0x0001c728 lw s2, 0x128(sp)              |     s2 = *(var_128h);
    0x0001c72c lw s1, 0x124(sp)              |     s1 = *(var_124h);
    0x0001c730 lw s0, 0x120(sp)              |     s0 = *(var_120h);
    0x0001c734 ldc1 f24, 0x158(sp)           |     __asm ("ldc1 f24, (var_158h)");
    0x0001c738 ldc1 f22, 0x150(sp)           |     __asm ("ldc1 f22, (var_150h)");
    0x0001c73c ldc1 f20, 0x148(sp)           |     __asm ("ldc1 f20, (var_148h)");
    0x0001c740 movt v0, v1, fcc0             |     __asm ("movt v0, v1, fcc0");
    0x0001c744 addiu sp, sp, 0x160           |     
    0x0001c748 jr ra                         |     return v0;
                                             | label_2:
    0x0001c758 lw a1, -0x7fc4(gp)            |     a1 = *((gp - 8177));
    0x0001c75c lw t9, -0x798c(gp)            |     t9 = sym.c_log;
    0x0001c760 move a2, s7                   |     a2 = s7;
    0x0001c764 move a0, zero                 |     a0 = 0;
                                             |     /* str.wxh__d__d__is_too_small_n */
    0x0001c768 addiu a1, a1, -0x6cb0         |     a1 += -0x6cb0;
    0x0001c76c jalr t9                       |     t9 ();
    0x0001c770 lw ra, 0x144(sp)              |     ra = *(var_144h);
    0x0001c774 lw fp, 0x140(sp)              |     fp = *(var_140h);
    0x0001c778 lw s7, 0x13c(sp)              |     s7 = *(var_13ch);
    0x0001c77c lw s6, 0x138(sp)              |     s6 = *(var_138h);
    0x0001c780 lw s5, 0x134(sp)              |     s5 = *(var_134h);
    0x0001c784 lw s4, 0x130(sp)              |     s4 = *(var_130h);
    0x0001c788 lw s3, 0x12c(sp)              |     s3 = *(var_12ch);
    0x0001c78c lw s2, 0x128(sp)              |     s2 = *(var_128h);
    0x0001c790 lw s1, 0x124(sp)              |     s1 = *(var_124h);
    0x0001c794 lw s0, 0x120(sp)              |     s0 = *(var_120h);
    0x0001c798 ldc1 f24, 0x158(sp)           |     __asm ("ldc1 f24, (var_158h)");
    0x0001c79c ldc1 f22, 0x150(sp)           |     __asm ("ldc1 f22, (var_150h)");
    0x0001c7a0 ldc1 f20, 0x148(sp)           |     __asm ("ldc1 f20, (var_148h)");
    0x0001c7a4 addiu v0, zero, -1            |     v0 = -1;
    0x0001c7a8 addiu sp, sp, 0x160           |     
    0x0001c7ac jr ra                         |     return v0;
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmp.so @ 0x1be34 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.embed_watermark ()           | void embed_watermark () {
    0x0001be34 lui gp, 0xd                   |     
    0x0001be38 addiu gp, gp, 0x15dc          |     
    0x0001be3c addu gp, gp, t9               |     gp += t9;
    0x0001be40 addiu sp, sp, -0x78           |     
    0x0001be44 slti v0, a2, 0x40             |     v0 = (a2 < 0x40) ? 1 : 0;
    0x0001be48 sw gp, 0x10(sp)               |     *(var_10h) = gp;
    0x0001be4c sw s0, 0x28(sp)               |     *(var_28h) = s0;
    0x0001be50 sw ra, 0x4c(sp)               |     *(var_4ch) = ra;
    0x0001be54 sw fp, 0x48(sp)               |     *(var_48h) = fp;
    0x0001be58 sw s7, 0x44(sp)               |     *(var_44h) = s7;
    0x0001be5c sw s6, 0x40(sp)               |     *(var_40h) = s6;
    0x0001be60 sw s5, 0x3c(sp)               |     *(var_3ch) = s5;
    0x0001be64 sw s4, 0x38(sp)               |     *(var_38h) = s4;
    0x0001be68 sw s3, 0x34(sp)               |     *(var_34h) = s3;
    0x0001be6c sw s2, 0x30(sp)               |     *(var_30h) = s2;
    0x0001be70 sw s1, 0x2c(sp)               |     *(var_2ch) = s1;
    0x0001be74 sdc1 f28, 0x70(sp)            |     __asm ("sdc1 f28, 0x70(sp)");
    0x0001be78 sdc1 f26, 0x68(sp)            |     __asm ("sdc1 f26, 0x68(sp)");
    0x0001be7c sdc1 f24, 0x60(sp)            |     __asm ("sdc1 f24, 0x60(sp)");
    0x0001be80 sdc1 f22, 0x58(sp)            |     __asm ("sdc1 f22, 0x58(sp)");
    0x0001be84 sdc1 f20, 0x50(sp)            |     __asm ("sdc1 f20, 0x50(sp)");
    0x0001be88 move s0, a2                   |     s0 = a2;
                                             |     if (v0 != 0) {
    0x0001be8c bnez v0, 0x1c4a8              |         void (*0x1c4a8)() ();
                                             |     }
    0x0001be90 lw v0, 8(a0)                  |     v0 = *((a0 + 2));
    0x0001be94 slt v1, a3, v0                |     v1 = (a3 < v0) ? 1 : 0;
                                             |     if (v1 != 0) {
    0x0001be98 bnez v1, 0x1c4a8              |         void (*0x1c4a8)() ();
                                             |     }
    0x0001be9c nop                           |     
    0x0001bea0 lw fp, -0x7fc4(gp)            |     fp = *((gp - 8177));
                                             |     if (v0 <= 0) {
    0x0001bea4 blez v0, 0x1c4a0              |         void (*0x1c4a0)() ();
                                             |     }
    0x0001bea8 lw v0, -0x7fc4(gp)            |     v0 = *((gp - 8177));
    0x0001beac sll t9, a2, 3                 |     t9 = a2 << 3;
    0x0001beb0 ldc1 f22, -0x6b78(v0)         |     __asm ("ldc1 f22, -0x6b78(v0)");
    0x0001beb4 lw v0, -0x7fc4(gp)            |     v0 = *((gp - 8177));
    0x0001beb8 move s7, a0                   |     s7 = a0;
    0x0001bebc mov.d f26, f22                |     __asm ("mov.d f26, f22");
    0x0001bec0 ldc1 f28, -0x7138(v0)         |     __asm ("ldc1 f28, -0x7138(v0)");
    0x0001bec4 mov.d f24, f22                |     __asm ("mov.d f24, f22");
    0x0001bec8 sw t9, 0x1c(sp)               |     *(var_1ch) = t9;
    0x0001becc mov.d f20, f28                |     __asm ("mov.d f20, f28");
    0x0001bed0 sw a1, 0x18(sp)               |     *(var_18h) = a1;
    0x0001bed4 move s6, zero                 |     s6 = 0;
                                             |     /* obj.coscoff */
    0x0001bed8 addiu fp, fp, -0x6c90         |     fp += -0x6c90;
    0x0001bedc sra s2, s6, 3                 |     s2 = s6 >> 3;
    0x0001bee0 sll s2, s2, 3                 |     s2 <<= 3;
    0x0001bee4 sw s2, 0x20(sp)               |     *(var_20h) = s2;
    0x0001bee8 move s4, zero                 |     s4 = 0;
    0x0001beec lw v1, 0x18(sp)               |     v1 = *(var_18h);
    0x0001bef0 lw a1, 0x14(s7)               |     a1 = *((s7 + 5));
    0x0001bef4 move v0, zero                 |     v0 = 0;
    0x0001bef8 addu s1, v1, s4               |     s1 = v1 + s4;
    0x0001befc addiu a3, zero, 0x40          |     a3 = 0x40;
    0x0001bf00 move v1, a1                   |     v1 = a1;
                                             |     do {
    0x0001bf04 sra a0, v0, 3                 |         a0 = v0 >> 3;
    0x0001bf08 mul a2, s0, a0                |         __asm ("mul a2, s0, a0");
    0x0001bf0c addiu v1, v1, 4               |         v1 += 4;
    0x0001bf10 addu a0, a2, s1               |         a0 = a2 + s1;
    0x0001bf14 andi a2, v0, 7                |         a2 = v0 & 7;
    0x0001bf18 addu a0, a0, a2               |         a0 += a2;
    0x0001bf1c lbu a0, (a0)                  |         a0 = *(a0);
    0x0001bf20 addiu v0, v0, 1               |         v0++;
    0x0001bf24 mtc1 a0, f1                   |         __asm ("mtc1 a0, f1");
    0x0001bf28 cvt.s.w f0, f1                |         __asm ("cvt.s.w f0, f1");
    0x0001bf2c swc1 f0, -4(v1)               |         __asm ("swc1 f0, -4(v1)");
    0x0001bf30 bne v0, a3, 0x1bf04           |         
                                             |     } while (v0 != a3);
    0x0001bf34 lw t9, -0x7fbc(gp)            |     t9 = *(gp);
    0x0001bf38 lw a0, 0x18(s7)               |     a0 = *((s7 + 6));
                                             |     /* sym.watermark_dct8.constprop.3 */
    0x0001bf3c addiu t9, t9, -0x44dc         |     t9 += -0x44dc;
    0x0001bf40 lw a2, 0x1c(s7)               |     a2 = *((s7 + 7));
    0x0001bf44 bal 0x1bb24                   |     sym_watermark_dct8_constprop_3 ();
    0x0001bf48 lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x0001bf4c lw a0, 0x18(s7)               |     a0 = *((s7 + 6));
    0x0001bf50 lw v0, -0x7fc4(gp)            |     v0 = *((gp - 8177));
    0x0001bf54 lwc1 f0, -0x6b88(v0)          |     __asm ("lwc1 f0, -0x6b88(v0)");
    0x0001bf58 lw v0, (a0)                   |     v0 = *(a0);
    0x0001bf5c ext v0, v0, 0, 0x1f           |     __asm ("ext v0, v0, 0, 0x1f");
    0x0001bf60 mtc1 v0, f1                   |     __asm ("mtc1 v0, f1");
    0x0001bf64 c.lt.s f1, f0                 |     __asm ("c.lt.s f1, f0");
    0x0001bf68 bc1t 0x1c448                  |     __asm ("bc1t 0x1c448");
    0x0001bf6c lw v0, -0x7fe4(gp)            |     v0 = *((gp - 8185));
    0x0001bf70 lw a1, 0x1c(s7)               |     a1 = *((s7 + 7));
    0x0001bf74 move v0, zero                 |     v0 = 0;
    0x0001bf78 addiu a2, zero, 0x100         |     a2 = aav.0x00000100;
    0x0001bf7c addu v1, a0, v0               |     v1 = a0 + v0;
                                             |     do {
    0x0001bf80 lw v1, (v1)                   |         v1 = *(v1);
    0x0001bf84 ext v1, v1, 0, 0x1f           |         __asm ("ext v1, v1, 0, 0x1f");
    0x0001bf88 mtc1 v1, f0                   |         __asm ("mtc1 v1, f0");
    0x0001bf8c swxc1 f0, a1(v0)              |         __asm ("swxc1 f0, a1(v0)");
    0x0001bf90 addiu v0, v0, 4               |         v0 += 4;
    0x0001bf94 addu v1, a0, v0               |         v1 = a0 + v0;
    0x0001bf98 bne v0, a2, 0x1bf80           |         
                                             |     } while (v0 != a2);
    0x0001bf9c lw v0, 0x20(s7)               |     v0 = *((s7 + 8));
    0x0001bfa0 addiu t0, a1, 0x100           |     t0 = a1 + aav.0x00000100;
                                             |     do {
    0x0001bfa4 lwl a3, 3(a1)                 |         __asm ("lwl a3, 3(a1)");
    0x0001bfa8 lwl a2, 7(a1)                 |         __asm ("lwl a2, 7(a1)");
    0x0001bfac lwl a0, 0xb(a1)               |         __asm ("lwl a0, 0xb(a1)");
    0x0001bfb0 lwl v1, 0xf(a1)               |         __asm ("lwl v1, 0xf(a1)");
    0x0001bfb4 lwr a3, (a1)                  |         __asm ("lwr a3, (a1)");
    0x0001bfb8 lwr a2, 4(a1)                 |         __asm ("lwr a2, 4(a1)");
    0x0001bfbc lwr a0, 8(a1)                 |         __asm ("lwr a0, 8(a1)");
    0x0001bfc0 lwr v1, 0xc(a1)               |         __asm ("lwr v1, 0xc(a1)");
    0x0001bfc4 swl a3, 3(v0)                 |         __asm ("swl a3, 3(v0)");
    0x0001bfc8 swr a3, (v0)                  |         __asm ("swr a3, (v0)");
    0x0001bfcc swl a2, 7(v0)                 |         __asm ("swl a2, 7(v0)");
    0x0001bfd0 swr a2, 4(v0)                 |         __asm ("swr a2, 4(v0)");
    0x0001bfd4 swl a0, 0xb(v0)               |         __asm ("swl a0, 0xb(v0)");
    0x0001bfd8 swr a0, 8(v0)                 |         __asm ("swr a0, 8(v0)");
    0x0001bfdc addiu a1, a1, 0x10            |         a1 += 0x10;
    0x0001bfe0 swl v1, 0xf(v0)               |         __asm ("swl v1, 0xf(v0)");
    0x0001bfe4 swr v1, 0xc(v0)               |         __asm ("swr v1, 0xc(v0)");
    0x0001bfe8 addiu v0, v0, 0x10            |         v0 += 0x10;
    0x0001bfec bne a1, t0, 0x1bfa4           |         
                                             |     } while (a1 != t0);
    0x0001bff0 lw t9, -0x7fbc(gp)            |     t9 = *(gp);
    0x0001bff4 lw a0, 0x1c(s7)               |     a0 = *((s7 + 7));
    0x0001bff8 move a1, zero                 |     a1 = 0;
                                             |     /* sym.fsort64 */
    0x0001bffc addiu t9, t9, -0x4640         |     t9 += -0x4640;
    0x0001c000 addiu a2, zero, 0x3f          |     a2 = 0x3f;
    0x0001c004 bal 0x1b9c0                   |     sym_fsort64 ();
    0x0001c008 lw s3, 0x1c(s7)               |     s3 = *((s7 + 7));
    0x0001c00c lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x0001c010 lw a2, 0x20(s7)               |     a2 = *((s7 + 8));
    0x0001c014 move v1, zero                 |     v1 = 0;
    0x0001c018 lwc1 f2, 0x78(s3)             |     __asm ("lwc1 f2, 0x78(s3)");
    0x0001c01c addiu a1, zero, 0x100         |     a1 = aav.0x00000100;
    0x0001c020 b 0x1c02c                     |     
    0x0001c02c lwxc1 f0, a2(v1)              |     __asm ("lwxc1 f0, a2(v1)");
    0x0001c030 sub.s f0, f2, f0              |     __asm ("sub.s f0, f2, f0");
    0x0001c034 mfc1 v0, f0                   |     __asm ("mfc1 v0, f0");
    0x0001c038 ext v0, v0, 0, 0x1f           |     __asm ("ext v0, v0, 0, 0x1f");
    0x0001c03c mtc1 v0, f3                   |     __asm ("mtc1 v0, f3");
    0x0001c040 cvt.d.s f0, f3                |     __asm ("cvt.d.s f0, f3");
    0x0001c044 c.lt.d f0, f22                |     __asm ("c.lt.d f0, f22");
    0x0001c048 bc1f 0x1c024                  |     __asm ("bc1f 0x1c024");
    0x0001c04c addiu v1, v1, 4               |     v1 += 4;
    0x0001c050 addiu v1, v1, -4              |     v1 += -4;
    0x0001c054 lwc1 f2, 0x7c(s3)             |     __asm ("lwc1 f2, 0x7c(s3)");
    0x0001c058 move a1, zero                 |     a1 = 0;
    0x0001c05c addiu t0, zero, 0x100         |     t0 = aav.0x00000100;
    0x0001c060 b 0x1c06c                     |     
    0x0001c06c lwxc1 f0, a2(a1)              |     __asm ("lwxc1 f0, a2(a1)");
    0x0001c070 sub.s f0, f2, f0              |     __asm ("sub.s f0, f2, f0");
    0x0001c074 mfc1 v0, f0                   |     __asm ("mfc1 v0, f0");
    0x0001c078 ext v0, v0, 0, 0x1f           |     __asm ("ext v0, v0, 0, 0x1f");
    0x0001c07c mtc1 v0, f4                   |     __asm ("mtc1 v0, f4");
    0x0001c080 cvt.d.s f0, f4                |     __asm ("cvt.d.s f0, f4");
    0x0001c084 c.lt.d f0, f26                |     __asm ("c.lt.d f0, f26");
    0x0001c088 bc1f 0x1c064                  |     __asm ("bc1f 0x1c064");
    0x0001c08c addiu a1, a1, 4               |     a1 += 4;
    0x0001c090 addiu a1, a1, -4              |     a1 += -4;
    0x0001c094 lwc1 f2, 0x80(s3)             |     __asm ("lwc1 f2, 0x80(s3)");
    0x0001c098 move v0, zero                 |     v0 = 0;
    0x0001c09c addiu t1, zero, 0x100         |     t1 = aav.0x00000100;
    0x0001c0a0 b 0x1c0ac                     |     
    0x0001c0ac lwxc1 f0, a2(v0)              |     __asm ("lwxc1 f0, a2(v0)");
    0x0001c0b0 sub.s f0, f2, f0              |     __asm ("sub.s f0, f2, f0");
    0x0001c0b4 mfc1 a0, f0                   |     __asm ("mfc1 a0, f0");
    0x0001c0b8 ext a0, a0, 0, 0x1f           |     __asm ("ext a0, a0, 0, 0x1f");
    0x0001c0bc mtc1 a0, f6                   |     __asm ("mtc1 a0, f6");
    0x0001c0c0 cvt.d.s f0, f6                |     __asm ("cvt.d.s f0, f6");
    0x0001c0c4 c.lt.d f0, f24                |     __asm ("c.lt.d f0, f24");
    0x0001c0c8 bc1f 0x1c0a4                  |     __asm ("bc1f 0x1c0a4");
    0x0001c0cc addiu v0, v0, 4               |     v0 += 4;
    0x0001c0d0 addiu v0, v0, -4              |     v0 += -4;
    0x0001c0d4 lw s5, 0x18(s7)               |     s5 = *((s7 + 6));
    0x0001c0d8 lw t1, 4(s7)                  |     t1 = *((s7 + 1));
    0x0001c0dc lw t2, (s7)                   |     t2 = *(s7);
    0x0001c0e0 addu a1, s5, a1               |     a1 = s5 + a1;
    0x0001c0e4 sll t1, t1, 2                 |     t1 <<= 2;
    0x0001c0e8 lw a0, (a1)                   |     a0 = *(a1);
    0x0001c0ec lw a2, -0x7fc4(gp)            |     a2 = *((gp - 8177));
    0x0001c0f0 addu t1, s5, t1               |     t1 = s5 + t1;
    0x0001c0f4 addu v1, s5, v1               |     v1 = s5 + v1;
    0x0001c0f8 lwc1 f2, (t1)                 |     __asm ("lwc1 f2, (t1)");
    0x0001c0fc lwc1 f1, (v1)                 |     __asm ("lwc1 f1, (v1)");
    0x0001c100 sll t2, t2, 2                 |     t2 <<= 2;
    0x0001c104 mtc1 zero, f0                 |     __asm ("mtc1 zero, f0");
    0x0001c108 addu t2, s5, t2               |     t2 = s5 + t2;
    0x0001c10c addu v0, s5, v0               |     v0 = s5 + v0;
    0x0001c110 lwc1 f4, -0x6b84(a2)          |     __asm ("lwc1 f4, -0x6b84(a2)");
    0x0001c114 lwc1 f3, (t2)                 |     __asm ("lwc1 f3, (t2)");
    0x0001c118 lwc1 f5, (v0)                 |     __asm ("lwc1 f5, (v0)");
    0x0001c11c ext t0, a0, 0, 0x1f           |     __asm ("ext t0, a0, 0, 0x1f");
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmp.so @ 0x15eb8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.fifo_put ()                  | void fifo_put () {
    0x00015eb8 lui gp, 0xd                   |     
    0x00015ebc addiu gp, gp, 0x7558          |     
    0x00015ec0 addu gp, gp, t9               |     gp += t9;
    0x00015ec4 lw v0, (a0)                   |     v0 = *(a0);
    0x00015ec8 addiu sp, sp, -0x28           |     
    0x00015ecc lui v1, 0x4649                |     v1 = 0x4649464f;
    0x00015ed0 addiu v1, v1, 0x464f          |     
    0x00015ed4 sw gp, 0x10(sp)               |     *(var_10h) = gp;
    0x00015ed8 sw ra, 0x24(sp)               |     *(var_24h) = ra;
    0x00015edc sw s1, 0x20(sp)               |     *(var_20h) = s1;
    0x00015ee0 sw s0, 0x1c(sp)               |     *(var_1ch) = s0;
    0x00015ee4 lw t9, -0x74d0(gp)            |     t9 = sym.imp.printf;
                                             |     if (v0 != v1) {
    0x00015ee8 bne v0, v1, 0x15f78           |         goto label_2;
                                             |     }
    0x00015eec lw s1, 0x18(a0)               |     s1 = *((a0 + 6));
                                             |     if (s1 == 0) {
    0x00015ef0 beqz s1, 0x15f98              |         goto label_3;
                                             |     }
    0x00015ef4 nop                           |     
    0x00015ef8 lw v0, 0x1c(a0)               |     v0 = *((a0 + 7));
    0x00015efc move s0, a0                   |     s0 = a0;
                                             |     if (s1 == v0) {
    0x00015f00 beq s1, v0, 0x15f6c           |         goto label_4;
                                             |     }
    0x00015f04 lw v0, (s1)                   |     v0 = *(s1);
    0x00015f08 sw v0, 0x18(a0)               |     *((a0 + 6)) = v0;
                                             | label_0:
    0x00015f0c lw t9, -0x7670(gp)            |     t9 = sym.imp.memcpy;
    0x00015f10 lw a0, 4(s1)                  |     a0 = *((s1 + 1));
    0x00015f14 lw a2, 0xc(s0)                |     a2 = *((s0 + 3));
    0x00015f18 jalr t9                       |     t9 ();
    0x00015f1c lw v0, 0x10(s0)               |     v0 = *((s0 + 4));
    0x00015f20 sw zero, (s1)                 |     *(s1) = 0;
                                             |     if (v0 == 0) {
    0x00015f24 beqz v0, 0x15f60              |         goto label_5;
                                             |     }
    0x00015f28 lw v0, 0x14(s0)               |     v0 = *((s0 + 5));
                                             |     if (v0 == 0) {
    0x00015f2c beqz v0, 0x15f60              |         goto label_5;
                                             |     }
    0x00015f30 nop                           |     
    0x00015f34 sw s1, (v0)                   |     *(v0) = s1;
    0x00015f38 sw s1, 0x14(s0)               |     *((s0 + 5)) = s1;
                                             |     do {
    0x00015f3c lw v1, 8(s0)                  |         v1 = *((s0 + 2));
    0x00015f40 move v0, zero                 |         v0 = 0;
    0x00015f44 addiu v1, v1, 1               |         v1++;
    0x00015f48 sw v1, 8(s0)                  |         *((s0 + 2)) = v1;
                                             | label_1:
    0x00015f4c lw ra, 0x24(sp)               |         ra = *(var_24h);
    0x00015f50 lw s1, 0x20(sp)               |         s1 = *(var_20h);
    0x00015f54 lw s0, 0x1c(sp)               |         s0 = *(var_1ch);
    0x00015f58 addiu sp, sp, 0x28            |         
    0x00015f5c jr ra                         |         return v0;
                                             | label_5:
    0x00015f60 sw s1, 0x10(s0)               |         *((s0 + 4)) = s1;
    0x00015f64 sw s1, 0x14(s0)               |         *((s0 + 5)) = s1;
    0x00015f68 b 0x15f3c                     |         
                                             |     } while (1);
                                             | label_4:
    0x00015f6c sw zero, 0x18(a0)             |     *((a0 + 6)) = 0;
    0x00015f70 sw zero, 0x1c(a0)             |     *((a0 + 7)) = 0;
    0x00015f74 b 0x15f0c                     |     goto label_0;
                                             | label_2:
    0x00015f78 lw a0, -0x7fc4(gp)            |     a0 = *((gp - 8177));
    0x00015f7c lw a1, -0x7fc4(gp)            |     a1 = *((gp - 8177));
                                             |     /* str.err__s__d_:_fifo_magic__err_n */
    0x00015f80 addiu a0, a0, -0x7278         |     a0 += -0x7278;
                                             |     /* obj.__func__.3194 */
    0x00015f84 addiu a1, a1, -0x71c8         |     a1 += -0x71c8;
    0x00015f88 addiu a2, zero, 0x4c          |     a2 = 0x4c;
    0x00015f8c jalr t9                       |     t9 ();
    0x00015f90 addiu v0, zero, -1            |     v0 = -1;
    0x00015f94 b 0x15f4c                     |     goto label_1;
                                             | label_3:
    0x00015f98 lw a0, -0x7fc4(gp)            |     a0 = *((gp - 8177));
    0x00015f9c lw a1, -0x7fc4(gp)            |     a1 = *((gp - 8177));
                                             |     /* str.err__s__d_:_fifo_empty_null_n */
    0x00015fa0 addiu a0, a0, -0x7258         |     a0 += -0x7258;
                                             |     /* obj.__func__.3194 */
    0x00015fa4 addiu a1, a1, -0x71c8         |     a1 += -0x71c8;
    0x00015fa8 addiu a2, zero, 0x50          |     a2 = 0x50;
    0x00015fac jalr t9                       |     t9 ();
    0x00015fb0 addiu v0, zero, -1            |     v0 = -1;
    0x00015fb4 b 0x15f4c                     |     goto label_1;
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/6225984-11075644.jffs2_new_extract/lib/libmp.so @ 0xe4bc */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.notify_observers ()          | void notify_observers () {
    0x0000e4bc lui gp, 0xe                   |     
    0x0000e4c0 addiu gp, gp, -0x10ac         |     
    0x0000e4c4 addu gp, gp, t9               |     gp += t9;
    0x0000e4c8 lw v1, 0x3c(a0)               |     v1 = *((a0 + 15));
                                             |     if (v1 <= 0) {
    0x0000e4cc blez v1, 0xe618               |         goto label_1;
                                             |     }
    0x0000e4d0 nop                           |     
    0x0000e4d4 addiu sp, sp, -0x60           |     
    0x0000e4d8 sw s7, 0x58(sp)               |     *(var_58h) = s7;
    0x0000e4dc sw s6, 0x54(sp)               |     *(var_54h) = s6;
    0x0000e4e0 sw s5, 0x50(sp)               |     *(var_50h) = s5;
    0x0000e4e4 sw s4, 0x4c(sp)               |     *(var_4ch) = s4;
    0x0000e4e8 lw s7, -0x7fcc(gp)            |     s7 = *(gp);
    0x0000e4ec lw s6, -0x7fcc(gp)            |     s6 = *(gp);
    0x0000e4f0 lw s5, -0x7fcc(gp)            |     s5 = *(gp);
    0x0000e4f4 lw s4, -0x7fcc(gp)            |     s4 = *(gp);
    0x0000e4f8 sw s3, 0x48(sp)               |     *(var_48h) = s3;
    0x0000e4fc sw s1, 0x40(sp)               |     *(var_40h) = s1;
    0x0000e500 sw s0, 0x3c(sp)               |     *(var_3ch) = s0;
    0x0000e504 sw gp, 0x30(sp)               |     *(var_30h) = gp;
    0x0000e508 sw ra, 0x5c(sp)               |     *(var_5ch) = ra;
    0x0000e50c sw s2, 0x44(sp)               |     *(var_44h) = s2;
    0x0000e510 move s3, a0                   |     s3 = a0;
    0x0000e514 move s0, a0                   |     s0 = a0;
    0x0000e518 move s1, zero                 |     s1 = 0;
                                             |     /* str._home_ptkang_work_platform_isvp_20160504_e_proj_sdk_lv3_src_imp_core_module.c */
    0x0000e51c addiu s7, s7, 0x7058          |     s7 += 0x7058;
                                             |     /* obj.__func__.6361 */
    0x0000e520 addiu s6, s6, 0x7270          |     s6 += aav.0x00007270;
                                             |     /* str._s_update_failed__frame__pool_idx_d__frame__index___d_n */
    0x0000e524 addiu s5, s5, 0x70a8          |     s5 += 0x70a8;
                                             |     /* str.Module */
    0x0000e528 addiu s4, s4, 0x7050          |     s4 += 0x7050;
                                             |     do {
    0x0000e52c lw v0, 0x18(s0)               |         v0 = *((s0 + 6));
    0x0000e530 lw s2, 0x14(s0)               |         s2 = *((s0 + 5));
    0x0000e534 move a1, v0                   |         a1 = v0;
    0x0000e538 move a0, s2                   |         a0 = s2;
                                             |         if (v0 != 0) {
    0x0000e53c beqz v0, 0xe564               |             
    0x0000e540 lw v0, (v0)                   |             v0 = *(v0);
                                             |             if (v0 == 0) {
    0x0000e544 beqz v0, 0xe564               |                 goto label_2;
                                             |             }
    0x0000e548 nop                           |             
    0x0000e54c lw t9, 0x4c(s2)               |             t9 = *((s2 + 19));
    0x0000e550 jalr t9                       |             t9 ();
    0x0000e554 nop                           |             
    0x0000e558 lw gp, 0x30(sp)               |             gp = *(var_30h);
                                             |             if (v0 < 0) {
    0x0000e55c bltz v0, 0xe5a4               |                 goto label_3;
                                             |             }
    0x0000e560 lw v1, 0x3c(s3)               |             v1 = *((s3 + 15));
                                             |         }
                                             | label_2:
    0x0000e564 addiu s1, s1, 1               |         s1++;
                                             | label_0:
    0x0000e568 slt v0, s1, v1                |         v0 = (s1 < v1) ? 1 : 0;
    0x0000e56c addiu s0, s0, 8               |         s0 += 8;
    0x0000e570 bnez v0, 0xe52c               |         
                                             |     } while (v0 != 0);
    0x0000e574 lw ra, 0x5c(sp)               |     ra = *(var_5ch);
    0x0000e578 lw s7, 0x58(sp)               |     s7 = *(var_58h);
    0x0000e57c lw s6, 0x54(sp)               |     s6 = *(var_54h);
    0x0000e580 lw s5, 0x50(sp)               |     s5 = *(var_50h);
    0x0000e584 lw s4, 0x4c(sp)               |     s4 = *(var_4ch);
    0x0000e588 lw s3, 0x48(sp)               |     s3 = *(var_48h);
    0x0000e58c lw s2, 0x44(sp)               |     s2 = *(var_44h);
    0x0000e590 lw s1, 0x40(sp)               |     s1 = *(var_40h);
    0x0000e594 lw s0, 0x3c(sp)               |     s0 = *(var_3ch);
    0x0000e598 move v0, zero                 |     v0 = 0;
    0x0000e59c addiu sp, sp, 0x60            |     
    0x0000e5a0 jr ra                         |     return v0;
                                             | label_3:
    0x0000e5a4 lw v0, 0x18(s0)               |     v0 = *((s0 + 6));
    0x0000e5a8 lw t9, -0x7968(gp)            |     t9 = sym.VBMUnLockFrame;
    0x0000e5ac lw a0, (v0)                   |     a0 = *(v0);
    0x0000e5b0 jalr t9                       |     t9 ();
    0x0000e5b4 lw gp, 0x30(sp)               |     gp = *(var_30h);
    0x0000e5b8 lw t9, -0x7adc(gp)            |     t9 = sym.imp.IMP_Log_Get_Option;
    0x0000e5bc addiu s1, s1, 1               |     s1++;
    0x0000e5c0 jalr t9                       |     t9 ();
    0x0000e5c4 lw v1, 0x18(s0)               |     v1 = *((s0 + 6));
    0x0000e5c8 addiu a0, zero, 0x52          |     a0 = 0x52;
    0x0000e5cc lw gp, 0x30(sp)               |     gp = *(var_30h);
    0x0000e5d0 lw v1, (v1)                   |     v1 = *(v1);
    0x0000e5d4 sw a0, 0x14(sp)               |     *(var_14h) = a0;
    0x0000e5d8 sw s7, 0x10(sp)               |     *(var_10h) = s7;
    0x0000e5dc sw s6, 0x18(sp)               |     *(var_18h) = s6;
    0x0000e5e0 sw s5, 0x1c(sp)               |     *(var_1ch) = s5;
    0x0000e5e4 sw s2, 0x20(sp)               |     *(var_20h) = s2;
    0x0000e5e8 lw a2, 4(v1)                  |     a2 = *((v1 + 1));
    0x0000e5ec move a1, v0                   |     a1 = v0;
    0x0000e5f0 lw t9, -0x79d0(gp)            |     t9 = sym.imp.imp_log_fun;
    0x0000e5f4 sw a2, 0x24(sp)               |     *(var_24h) = a2;
    0x0000e5f8 lw v0, (v1)                   |     v0 = *(v1);
    0x0000e5fc addiu a0, zero, 6             |     a0 = 6;
    0x0000e600 addiu a2, zero, 2             |     a2 = 2;
    0x0000e604 move a3, s4                   |     a3 = s4;
    0x0000e608 sw v0, 0x28(sp)               |     *(var_28h) = v0;
    0x0000e60c jalr t9                       |     t9 ();
    0x0000e610 lw v1, 0x3c(s3)               |     v1 = *((s3 + 15));
    0x0000e614 b 0xe568                      |     goto label_0;
                                             | label_1:
    0x0000e618 move v0, zero                 |     v0 = 0;
    0x0000e61c jr ra                         |     return v0;
                                             | }

[*] Function popen used 1 times libmp.so