[*] 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