[*] Binary protection state of image2d
Full RELRO Canary found NX disabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function popen tear down of image2d
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/image2d @ 0x152b78 */
| #include <stdint.h>
|
; (fcn) fcn.00152b78 () | void fcn_00152b78 () {
0x00152b78 lui gp, 0x10 |
0x00152b7c addiu gp, gp, -0x38a8 |
0x00152b80 addu gp, gp, t9 | gp += t9;
0x00152b84 lw v0, 0x18(a0) | v0 = *((a0 + 6));
0x00152b88 addiu sp, sp, -0x28 |
0x00152b8c lw t9, -0x5e00(gp) | t9 = sym.imp.ioctl;
0x00152b90 xori a2, a1, 1 | a2 = a1 ^ 1;
0x00152b94 sw s2, 0x20(sp) | *(var_20h) = s2;
0x00152b98 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x00152b9c move s2, a1 | s2 = a1;
0x00152ba0 move s1, a0 | s1 = a0;
0x00152ba4 lui a1, 0xc004 | a1 = 0xc0040000;
0x00152ba8 lw a0, (v0) | a0 = *(v0);
0x00152bac sw gp, 0x10(sp) | *(var_10h) = gp;
0x00152bb0 sw s0, 0x18(sp) | *(var_18h) = s0;
0x00152bb4 sw ra, 0x24(sp) | *(var_24h) = ra;
0x00152bb8 addiu a1, a1, 0x4900 | a1 += 0x4900;
0x00152bbc jalr t9 | t9 ();
0x00152bc0 move s0, v0 | s0 = v0;
0x00152bc4 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 >= 0) {
0x00152bc8 bltz v0, 0x152bec |
0x00152bcc lw ra, 0x24(sp) | ra = *(var_24h);
0x00152bd0 sb s2, 0xc(s1) | *((s1 + 12)) = s2;
0x00152bd4 move v0, s0 | v0 = s0;
0x00152bd8 lw s2, 0x20(sp) | s2 = *(var_20h);
0x00152bdc lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x00152be0 lw s0, 0x18(sp) | s0 = *(var_18h);
0x00152be4 addiu sp, sp, 0x28 |
0x00152be8 jr ra | return v0;
| }
0x00152bec lw t9, -0x5b94(gp) | t9 = sym.imp.__errno_location;
0x00152bf0 jalr t9 | t9 ();
0x00152bf4 nop |
0x00152bf8 lw gp, 0x10(sp) | gp = *(var_10h);
0x00152bfc lw t9, -0x5bc4(gp) | t9 = sym.imp.strerror;
0x00152c00 lw a0, (v0) | a0 = *(v0);
0x00152c04 jalr t9 | t9 ();
0x00152c08 lw gp, 0x10(sp) | gp = *(var_10h);
0x00152c0c move a3, v0 | a3 = v0;
0x00152c10 move a1, zero | a1 = 0;
0x00152c14 lw a2, -0x7e54(gp) | a2 = *(gp);
0x00152c18 lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
| /* str.Failed_to_move_IR_cut_filter:__s_n */
0x00152c1c addiu a2, a2, -0x1420 | a2 += -0x1420;
0x00152c20 addiu a0, zero, 2 | a0 = 2;
0x00152c24 jalr t9 | t9 ();
0x00152c28 lw ra, 0x24(sp) | ra = *(var_24h);
0x00152c2c move v0, s0 | v0 = s0;
0x00152c30 lw s2, 0x20(sp) | s2 = *(var_20h);
0x00152c34 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x00152c38 lw s0, 0x18(sp) | s0 = *(var_18h);
0x00152c3c addiu sp, sp, 0x28 |
0x00152c40 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/image2d @ 0x153d80 */
| #include <stdint.h>
|
; (fcn) fcn.00153d80 () | void fcn_00153d80 () {
0x00153d80 lui gp, 0x10 |
0x00153d84 addiu gp, gp, -0x4ab0 |
0x00153d88 addu gp, gp, t9 | gp += t9;
0x00153d8c addiu sp, sp, -0x30 |
0x00153d90 sw s0, 0x20(sp) | *(var_20h) = s0;
0x00153d94 lw s0, 0x18(a0) | s0 = *((a0 + 6));
0x00153d98 sw gp, 0x18(sp) | *(var_18h) = gp;
0x00153d9c sw ra, 0x2c(sp) | *(var_2ch) = ra;
0x00153da0 lw v0, 4(s0) | v0 = *((s0 + 1));
0x00153da4 sw s2, 0x28(sp) | *(var_28h) = s2;
0x00153da8 sw s1, 0x24(sp) | *(var_24h) = s1;
0x00153dac lw a0, (s0) | a0 = *(s0);
0x00153db0 sb a1, 8(s0) | *((s0 + 8)) = a1;
| if (v0 >= 0) {
0x00153db4 bltz v0, 0x153ddc |
0x00153db8 lw a2, -0x7e54(gp) | a2 = *(gp);
0x00153dbc lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
0x00153dc0 move a3, a0 | a3 = a0;
| /* str.fd_for__s_is_already_open_n */
0x00153dc4 addiu a2, a2, -0x1020 | a2 += -0x1020;
0x00153dc8 addiu a0, zero, 2 | a0 = 2;
0x00153dcc move a1, zero | a1 = 0;
0x00153dd0 jalr t9 | t9 ();
0x00153dd4 lw gp, 0x18(sp) | gp = *(var_18h);
0x00153dd8 lw a0, (s0) | a0 = *(s0);
| }
0x00153ddc lw t9, -0x5ba4(gp) | t9 = sym.imp.open;
0x00153de0 addiu a1, zero, 2 | a1 = 2;
0x00153de4 jalr t9 | t9 ();
0x00153de8 lw gp, 0x18(sp) | gp = *(var_18h);
0x00153dec sw v0, 4(s0) | *((s0 + 1)) = v0;
| if (v0 < 0) {
0x00153df0 bltz v0, 0x153f78 | goto label_3;
| }
0x00153df4 lbu v1, 8(s0) | v1 = *((s0 + 8));
0x00153df8 lw a1, -0x7f24(gp) | a1 = *(gp);
| if (v1 != 0) {
0x00153dfc bnez v1, 0x153e48 | goto label_4;
| }
0x00153e00 lw a1, -0x7e54(gp) | a1 = *(gp);
0x00153e04 lw t9, -0x5ca8(gp) | t9 = sym.imp.write;
| /* esilref: '$' */
0x00153e08 addiu a1, a1, 0xdb4 | a1 += 0xdb4;
0x00153e0c addiu a2, zero, 1 | a2 = 1;
0x00153e10 move a0, v0 | a0 = v0;
0x00153e14 jalr t9 | t9 ();
0x00153e18 lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 < 0) {
0x00153e1c bltz v0, 0x153e64 | goto label_5;
| }
| do {
0x00153e20 lw a0, 4(s0) | a0 = *((s0 + 1));
0x00153e24 lw t9, -0x5f64(gp) | t9 = *(gp);
| if (a0 >= 0) {
0x00153e28 bgez a0, 0x153ed4 | goto label_6;
| }
| label_0:
0x00153e2c move v0, zero | v0 = 0;
| label_2:
0x00153e30 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00153e34 lw s2, 0x28(sp) | s2 = *(var_28h);
0x00153e38 lw s1, 0x24(sp) | s1 = *(var_24h);
0x00153e3c lw s0, 0x20(sp) | s0 = *(var_20h);
0x00153e40 addiu sp, sp, 0x30 |
0x00153e44 jr ra | return v0;
| label_4:
0x00153e48 lw t9, -0x5ca8(gp) | t9 = sym.imp.write;
0x00153e4c addiu a1, a1, 0x7adc | a1 += aav.0x00007adc;
0x00153e50 addiu a2, zero, 1 | a2 = 1;
0x00153e54 move a0, v0 | a0 = v0;
0x00153e58 jalr t9 | t9 ();
0x00153e5c lw gp, 0x18(sp) | gp = *(var_18h);
0x00153e60 bgez v0, 0x153e20 |
| } while (v0 >= 0);
| label_5:
0x00153e64 lbu v0, 8(s0) | v0 = *((s0 + 8));
0x00153e68 lw s1, -0x7e54(gp) | s1 = *(gp);
| if (v0 != 0) {
0x00153e6c bnez v0, 0x153f08 | goto label_7;
| }
0x00153e70 lw s1, -0x7e54(gp) | s1 = *(gp);
| /* str.open */
0x00153e74 addiu s1, s1, -0x1028 | s1 += -0x1028;
| label_1:
0x00153e78 lw t9, -0x5b94(gp) | t9 = sym.imp.__errno_location;
0x00153e7c jalr t9 | t9 ();
0x00153e80 nop |
0x00153e84 lw gp, 0x18(sp) | gp = *(var_18h);
0x00153e88 lw a0, (v0) | a0 = *(v0);
0x00153e8c lw t9, -0x5bc4(gp) | t9 = sym.imp.strerror;
0x00153e90 move s2, v0 | s2 = v0;
0x00153e94 jalr t9 | t9 ();
0x00153e98 lw gp, 0x18(sp) | gp = *(var_18h);
0x00153e9c lw v1, (s2) | v1 = *(s2);
0x00153ea0 addiu a0, zero, 4 | a0 = 4;
0x00153ea4 lw a2, -0x7e54(gp) | a2 = *(gp);
0x00153ea8 lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
0x00153eac sw v1, 0x14(sp) | *(var_14h) = v1;
0x00153eb0 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00153eb4 move a3, s1 | a3 = s1;
| /* str.Failed_to__s_IR_cut_filter_:__s___d__n */
0x00153eb8 addiu a2, a2, -0xfdc | a2 += -0xfdc;
0x00153ebc move a1, zero | a1 = 0;
0x00153ec0 jalr t9 | t9 ();
0x00153ec4 lw a0, 4(s0) | a0 = *((s0 + 1));
0x00153ec8 lw gp, 0x18(sp) | gp = *(var_18h);
| if (a0 < 0) {
0x00153ecc bltz a0, 0x153e2c | goto label_0;
| }
0x00153ed0 lw t9, -0x5f64(gp) | t9 = *(gp);
| label_6:
0x00153ed4 jalr t9 | t9 ();
0x00153ed8 nop |
0x00153edc lw gp, 0x18(sp) | gp = *(var_18h);
| if (v0 >= 0) {
0x00153ee0 bltz v0, 0x153f10 |
0x00153ee4 lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00153ee8 addiu v0, zero, -1 | v0 = -1;
0x00153eec sw v0, 4(s0) | *((s0 + 1)) = v0;
0x00153ef0 lw s2, 0x28(sp) | s2 = *(var_28h);
0x00153ef4 lw s1, 0x24(sp) | s1 = *(var_24h);
0x00153ef8 lw s0, 0x20(sp) | s0 = *(var_20h);
0x00153efc move v0, zero | v0 = 0;
0x00153f00 addiu sp, sp, 0x30 |
0x00153f04 jr ra | return v0;
| /* str.close */
| label_7:
0x00153f08 addiu s1, s1, -0x1030 | s1 += -0x1030;
0x00153f0c b 0x153e78 | goto label_1;
| }
0x00153f10 lw t9, -0x5b94(gp) | t9 = sym.imp.__errno_location;
0x00153f14 lw s1, (s0) | s1 = *(s0);
0x00153f18 jalr t9 | t9 ();
0x00153f1c lw gp, 0x18(sp) | gp = *(var_18h);
0x00153f20 lw a0, (v0) | a0 = *(v0);
0x00153f24 lw t9, -0x5bc4(gp) | t9 = sym.imp.strerror;
0x00153f28 move s0, v0 | s0 = v0;
0x00153f2c jalr t9 | t9 ();
0x00153f30 lw gp, 0x18(sp) | gp = *(var_18h);
0x00153f34 lw v1, (s0) | v1 = *(s0);
0x00153f38 move a3, s1 | a3 = s1;
0x00153f3c lw a2, -0x7e54(gp) | a2 = *(gp);
0x00153f40 lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
0x00153f44 sw v1, 0x14(sp) | *(var_14h) = v1;
0x00153f48 sw v0, 0x10(sp) | *(var_10h) = v0;
| /* str.Failed_to_close_fd_for__s_:__s___d__n */
0x00153f4c addiu a2, a2, -0xfb4 | a2 += -0xfb4;
0x00153f50 move a1, zero | a1 = 0;
0x00153f54 addiu a0, zero, 4 | a0 = 4;
0x00153f58 jalr t9 | t9 ();
0x00153f5c lw ra, 0x2c(sp) | ra = *(var_2ch);
0x00153f60 lw s2, 0x28(sp) | s2 = *(var_28h);
0x00153f64 lw s1, 0x24(sp) | s1 = *(var_24h);
0x00153f68 lw s0, 0x20(sp) | s0 = *(var_20h);
0x00153f6c move v0, zero | v0 = 0;
0x00153f70 addiu sp, sp, 0x30 |
0x00153f74 jr ra | return v0;
| label_3:
0x00153f78 lw t9, -0x5b94(gp) | t9 = sym.imp.__errno_location;
0x00153f7c lw s1, (s0) | s1 = *(s0);
0x00153f80 jalr t9 | t9 ();
0x00153f84 lw gp, 0x18(sp) | gp = *(var_18h);
0x00153f88 lw a0, (v0) | a0 = *(v0);
0x00153f8c lw t9, -0x5bc4(gp) | t9 = sym.imp.strerror;
0x00153f90 move s0, v0 | s0 = v0;
0x00153f94 jalr t9 | t9 ();
0x00153f98 lw gp, 0x18(sp) | gp = *(var_18h);
0x00153f9c lw v1, (s0) | v1 = *(s0);
0x00153fa0 sw v0, 0x10(sp) | *(var_10h) = v0;
0x00153fa4 lw a2, -0x7e54(gp) | a2 = *(gp);
0x00153fa8 lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
0x00153fac sw v1, 0x14(sp) | *(var_14h) = v1;
0x00153fb0 move a3, s1 | a3 = s1;
| /* str.Failed_open_fd_for__s_:__s___d__n */
0x00153fb4 addiu a2, a2, -0x1000 | a2 += -aav.0x00001000;
0x00153fb8 move a1, zero | a1 = 0;
0x00153fbc addiu a0, zero, 4 | a0 = 4;
0x00153fc0 jalr t9 | t9 ();
0x00153fc4 addiu v0, zero, -1 | v0 = -1;
0x00153fc8 b 0x153e30 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/image2d @ 0x154298 */
| #include <stdint.h>
|
; (fcn) fcn.00154298 () | void fcn_00154298 () {
0x00154298 lui gp, 0x10 |
0x0015429c addiu gp, gp, -0x4fc8 |
0x001542a0 addu gp, gp, t9 | gp += t9;
0x001542a4 lw v0, 0x18(a0) | v0 = *((a0 + 6));
0x001542a8 addiu sp, sp, -0x28 |
0x001542ac lw t9, -0x6430(gp) | t9 = sym.serial_link_set_ircut_filter;
0x001542b0 move a2, a1 | a2 = a1;
0x001542b4 sw s2, 0x20(sp) | *(var_20h) = s2;
0x001542b8 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x001542bc move s2, a1 | s2 = a1;
0x001542c0 move s1, a0 | s1 = a0;
0x001542c4 lw a1, (v0) | a1 = *(v0);
0x001542c8 lw a0, 4(v0) | a0 = *((v0 + 1));
0x001542cc sw gp, 0x10(sp) | *(var_10h) = gp;
0x001542d0 sw s0, 0x18(sp) | *(var_18h) = s0;
0x001542d4 sw ra, 0x24(sp) | *(var_24h) = ra;
0x001542d8 jalr t9 | t9 ();
0x001542dc nop |
0x001542e0 move s0, v0 | s0 = v0;
0x001542e4 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 >= 0) {
0x001542e8 bltz v0, 0x15430c |
0x001542ec lw ra, 0x24(sp) | ra = *(var_24h);
0x001542f0 sb s2, 0xc(s1) | *((s1 + 12)) = s2;
0x001542f4 move v0, s0 | v0 = s0;
0x001542f8 lw s2, 0x20(sp) | s2 = *(var_20h);
0x001542fc lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x00154300 lw s0, 0x18(sp) | s0 = *(var_18h);
0x00154304 addiu sp, sp, 0x28 |
0x00154308 jr ra | return v0;
| }
0x0015430c lw t9, -0x5b94(gp) | t9 = sym.imp.__errno_location;
0x00154310 jalr t9 | t9 ();
0x00154314 nop |
0x00154318 lw gp, 0x10(sp) | gp = *(var_10h);
0x0015431c lw t9, -0x5bc4(gp) | t9 = sym.imp.strerror;
0x00154320 lw a0, (v0) | a0 = *(v0);
0x00154324 jalr t9 | t9 ();
0x00154328 lw gp, 0x10(sp) | gp = *(var_10h);
0x0015432c move a3, v0 | a3 = v0;
0x00154330 move a1, zero | a1 = 0;
0x00154334 lw a2, -0x7e54(gp) | a2 = *(gp);
0x00154338 lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
| /* str.Failed_to_move_IR_cut_filter:__s_n */
0x0015433c addiu a2, a2, -0x1420 | a2 += -0x1420;
0x00154340 addiu a0, zero, 2 | a0 = 2;
0x00154344 jalr t9 | t9 ();
0x00154348 lw ra, 0x24(sp) | ra = *(var_24h);
0x0015434c move v0, s0 | v0 = s0;
0x00154350 lw s2, 0x20(sp) | s2 = *(var_20h);
0x00154354 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x00154358 lw s0, 0x18(sp) | s0 = *(var_18h);
0x0015435c addiu sp, sp, 0x28 |
0x00154360 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/image2d @ 0xeeef4 */
| #include <stdint.h>
|
; (fcn) sym.a5_platform_load_calibration_data () | void a5_platform_load_calibration_data () {
0x000eeef4 lui gp, 0x16 |
0x000eeef8 addiu gp, gp, 0x3dc |
0x000eeefc addu gp, gp, t9 | gp += t9;
0x000eef00 addiu sp, sp, -0x50 |
0x000eef04 sw s0, 0x38(sp) | *(var_38h) = s0;
0x000eef08 lw s0, -0x5f08(gp) | s0 = *((gp - 6082));
0x000eef0c sw gp, 0x10(sp) | *(var_10h) = gp;
0x000eef10 sw ra, 0x4c(sp) | *(var_4ch) = ra;
0x000eef14 lw v0, (s0) | v0 = *(s0);
0x000eef18 sw s4, 0x48(sp) | *(var_48h) = s4;
0x000eef1c sw s3, 0x44(sp) | *(var_44h) = s3;
0x000eef20 sw s2, 0x40(sp) | *(var_40h) = s2;
0x000eef24 sw s1, 0x3c(sp) | *(var_3ch) = s1;
0x000eef28 sw v0, 0x34(sp) | *(var_34h) = v0;
0x000eef2c lw t9, -0x70e0(gp) | t9 = sym.is_valid_stream_id;
| if (a0 != 0) {
0x000eef30 beqz a0, 0xeef54 |
0x000eef34 move s1, a0 | s1 = a0;
0x000eef38 move a0, a1 | a0 = a1;
0x000eef3c move s2, a1 | s2 = a1;
0x000eef40 move s3, a2 | s3 = a2;
0x000eef44 move s4, a3 | s4 = a3;
0x000eef48 bal 0xfff24 | sym_is_valid_stream_id ();
0x000eef4c lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x000eef50 bnez v0, 0xeef84 | goto label_2;
| }
| }
0x000eef54 addiu v0, zero, -3 | v0 = -3;
| do {
| label_0:
0x000eef58 lw a0, 0x34(sp) | a0 = *(var_34h);
0x000eef5c lw v1, (s0) | v1 = *(s0);
0x000eef60 lw ra, 0x4c(sp) | ra = *(var_4ch);
| if (a0 != v1) {
0x000eef64 bne a0, v1, 0xef038 | goto label_3;
| }
0x000eef68 lw s4, 0x48(sp) | s4 = *(var_48h);
0x000eef6c lw s3, 0x44(sp) | s3 = *(var_44h);
0x000eef70 lw s2, 0x40(sp) | s2 = *(var_40h);
0x000eef74 lw s1, 0x3c(sp) | s1 = *(var_3ch);
0x000eef78 lw s0, 0x38(sp) | s0 = *(var_38h);
0x000eef7c addiu sp, sp, 0x50 |
0x000eef80 jr ra | return v0;
| label_2:
0x000eef84 slti v0, s2, 0 | v0 = (s2 < 0) ? 1 : 0;
0x000eef88 move v1, s2 | v1 = s2;
| if (v0 == 0) {
0x000eef8c movn v1, zero, v0 | v1 = 0;
| }
0x000eef90 ext v0, v1, 8, 8 | __asm ("ext v0, v1, 8, 8");
0x000eef94 sll v1, v0, 1 | v1 = v0 << 1;
0x000eef98 addu v0, v1, v0 | v0 = v1 + v0;
0x000eef9c lw a0, 0x3c(s1) | a0 = *((s1 + 15));
0x000eefa0 lw v1, 0x60(sp) | v1 = *(arg_60h);
0x000eefa4 sll v0, v0, 2 | v0 <<= 2;
0x000eefa8 lw t9, 0x14(s1) | t9 = *((s1 + 5));
0x000eefac sw v1, 0x1c(sp) | *(var_1ch_2) = v1;
0x000eefb0 addiu v1, zero, 1 | v1 = 1;
0x000eefb4 sw s2, 0x20(sp) | *(var_20h_2) = s2;
0x000eefb8 sw s4, 0x24(sp) | *(var_24h_2) = s4;
0x000eefbc sw s3, 0x28(sp) | *(var_28h) = s3;
0x000eefc0 sw v1, 0x2c(sp) | *(var_2ch) = v1;
0x000eefc4 sw zero, 0x30(sp) | *(var_30h) = 0;
0x000eefc8 lwx a0, v0(a0) | __asm ("lwx a0, v0(a0)");
| if (t9 == 0) {
0x000eefcc beqz t9, 0xef01c | goto label_4;
| }
0x000eefd0 lui a2, 0x8018 | a2 = 0x80180000;
0x000eefd4 move a1, a0 | a1 = a0;
0x000eefd8 addiu a3, sp, 0x1c | a3 = sp + 0x1c;
0x000eefdc addiu a2, a2, 0x2a0f | a2 += 0x2a0f;
0x000eefe0 move a0, s1 | a0 = s1;
0x000eefe4 jalr t9 | t9 ();
0x000eefe8 lw gp, 0x10(sp) | gp = *(var_10h);
| label_1:
0x000eefec lw a2, -0x7da8(gp) | a2 = *(gp);
| if (v0 != 0) {
0x000eeff0 bnez v0, 0xeeffc | goto label_5;
| }
0x000eeff4 addiu v0, zero, -0xff | v0 = -0xff;
0x000eeff8 b 0xeef58 |
| } while (1);
| label_5:
0x000eeffc lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
| /* str.Failed_to_load_table_n */
0x000ef000 addiu a2, a2, 0x1af8 | a2 += 0x1af8;
0x000ef004 move a1, zero | a1 = 0;
0x000ef008 addiu a0, zero, 2 | a0 = 2;
0x000ef00c bal 0xf7988 | sym_debug_output ();
0x000ef010 lw gp, 0x10(sp) | gp = *(var_10h);
0x000ef014 addiu v0, zero, -4 | v0 = -4;
0x000ef018 b 0xeef58 | goto label_0;
| label_4:
0x000ef01c lw t9, -0x5e00(gp) | t9 = sym.imp.ioctl;
0x000ef020 lui a1, 0x8018 | a1 = 0x80180000;
0x000ef024 addiu a2, sp, 0x1c | a2 = sp + 0x1c;
0x000ef028 addiu a1, a1, 0x2a0f | a1 += 0x2a0f;
0x000ef02c jalr t9 | t9 ();
0x000ef030 lw gp, 0x10(sp) | gp = *(var_10h);
0x000ef034 b 0xeefec | goto label_1;
| label_3:
0x000ef038 lw t9, -0x5fc0(gp) | t9 = sym.imp.__stack_chk_fail;
0x000ef03c jalr t9 | t9 ();
0x000ef040 nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/image2d @ 0xfa934 */
| #include <stdint.h>
|
; (fcn) sym.algo_step_destroy () | void algo_step_destroy () {
0x000fa934 lui gp, 0x15 |
0x000fa938 addiu gp, gp, 0x499c |
0x000fa93c addu gp, gp, t9 | gp += t9;
0x000fa940 addiu sp, sp, -0x28 |
0x000fa944 lw t9, -0x5cac(gp) | t9 = sym.imp.g_list_foreach;
0x000fa948 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x000fa94c lw s1, -0x6f88(gp) | s1 = *(gp);
0x000fa950 sw s0, 0x18(sp) | *(var_18h) = s0;
0x000fa954 move s0, a0 | s0 = a0;
0x000fa958 lw a0, 0x20(a0) | a0 = *((a0 + 8));
0x000fa95c sw ra, 0x24(sp) | *(var_24h) = ra;
0x000fa960 sw gp, 0x10(sp) | *(var_10h) = gp;
0x000fa964 move a2, zero | a2 = 0;
0x000fa968 sw s2, 0x20(sp) | *(var_20h) = s2;
0x000fa96c move s2, a1 | s2 = a1;
0x000fa970 addiu a1, s1, -0x5820 | a1 = s1 + -0x5820;
0x000fa974 jalr t9 | t9 ();
0x000fa978 lw gp, 0x10(sp) | gp = *(var_10h);
0x000fa97c lw t9, -0x5cb4(gp) | t9 = sym.imp.g_list_free;
0x000fa980 lw a0, 0x20(s0) | a0 = *((s0 + 8));
0x000fa984 jalr t9 | t9 ();
0x000fa988 lw gp, 0x10(sp) | gp = *(var_10h);
0x000fa98c lw a0, 0x24(s0) | a0 = *((s0 + 9));
0x000fa990 move a2, zero | a2 = 0;
0x000fa994 lw t9, -0x5cac(gp) | t9 = sym.imp.g_list_foreach;
0x000fa998 addiu a1, s1, -0x5820 | a1 = s1 + -0x5820;
0x000fa99c sw zero, 0x20(s0) | *((s0 + 8)) = 0;
0x000fa9a0 jalr t9 | t9 ();
0x000fa9a4 lw gp, 0x10(sp) | gp = *(var_10h);
0x000fa9a8 lw t9, -0x5cb4(gp) | t9 = sym.imp.g_list_free;
0x000fa9ac lw a0, 0x24(s0) | a0 = *((s0 + 9));
0x000fa9b0 jalr t9 | t9 ();
0x000fa9b4 lw gp, 0x10(sp) | gp = *(var_10h);
0x000fa9b8 lw a0, 0x28(s0) | a0 = *((s0 + 10));
0x000fa9bc move a2, s2 | a2 = s2;
0x000fa9c0 lw t9, -0x5cac(gp) | t9 = sym.imp.g_list_foreach;
0x000fa9c4 lw a1, -0x7b40(gp) | a1 = sym.control_timeout_destroy;
0x000fa9c8 sw zero, 0x24(s0) | *((s0 + 9)) = 0;
0x000fa9cc jalr t9 | t9 ();
0x000fa9d0 lw gp, 0x10(sp) | gp = *(var_10h);
0x000fa9d4 lw t9, -0x5cb4(gp) | t9 = sym.imp.g_list_free;
0x000fa9d8 lw a0, 0x28(s0) | a0 = *((s0 + 10));
0x000fa9dc jalr t9 | t9 ();
0x000fa9e0 lw t9, 0x14(s0) | t9 = *((s0 + 5));
0x000fa9e4 lw gp, 0x10(sp) | gp = *(var_10h);
0x000fa9e8 sw zero, 0x28(s0) | *((s0 + 10)) = 0;
| if (t9 != 0) {
0x000fa9ec beqz t9, 0xfaa00 |
0x000fa9f0 move a1, s2 | a1 = s2;
0x000fa9f4 move a0, s0 | a0 = s0;
0x000fa9f8 jalr t9 | t9 ();
0x000fa9fc lw gp, 0x10(sp) | gp = *(var_10h);
| }
0x000faa00 lui v0, 0xdead | v0 = 0xdead0000;
0x000faa04 lw a0, 0x18(s0) | a0 = *((s0 + 6));
0x000faa08 ori v0, v0, 0xbeef | v0 |= 0xbeef;
0x000faa0c sw v0, 0x10(s0) | *((s0 + 4)) = v0;
| if (a0 == 0) {
0x000faa10 beqz a0, 0xfaa28 | goto label_0;
| }
0x000faa14 lw v0, (a0) | v0 = *(a0);
0x000faa18 addiu v0, v0, -1 | v0 += -1;
0x000faa1c sw v0, (a0) | *(a0) = v0;
0x000faa20 beqz v0, 0xfaa48 |
| while (1) {
0x000faa24 sw zero, 0x18(s0) | *((s0 + 6)) = 0;
| label_0:
0x000faa28 lw ra, 0x24(sp) | ra = *(var_24h);
0x000faa2c lw s2, 0x20(sp) | s2 = *(var_20h);
0x000faa30 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x000faa34 move a0, s0 | a0 = s0;
0x000faa38 lw t9, -0x5b98(gp) | t9 = *((gp - 5862));
0x000faa3c lw s0, 0x18(sp) | s0 = *(var_18h);
0x000faa40 addiu sp, sp, 0x28 |
0x000faa44 jr t9 | t9 ();
0x000faa48 lw t9, -0x5b98(gp) | t9 = *((gp - 5862));
0x000faa4c jalr t9 | t9 ();
0x000faa50 nop |
0x000faa54 lw gp, 0x10(sp) | gp = *(var_10h);
0x000faa58 b 0xfaa24 |
| }
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/image2d @ 0x1066b0 */
| #include <stdint.h>
|
; (fcn) sym.data_pool_destroy () | void data_pool_destroy () {
0x001066b0 lui gp, 0x15 |
0x001066b4 addiu gp, gp, -0x73e0 |
0x001066b8 addu gp, gp, t9 | gp += t9;
| if (a0 == 0) {
0x001066bc beqz a0, 0x106798 | goto label_0;
| }
0x001066c0 nop |
0x001066c4 addiu sp, sp, -0x28 |
0x001066c8 lw v1, (a0) | v1 = *(a0);
0x001066cc sw gp, 0x10(sp) | *(var_10h) = gp;
0x001066d0 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x001066d4 sw ra, 0x24(sp) | *(var_24h) = ra;
0x001066d8 sw s1, 0x20(sp) | *(var_20h) = s1;
0x001066dc move s0, a0 | s0 = a0;
| if (v1 == 0) {
0x001066e0 beqz v1, 0x106738 | goto label_1;
| }
0x001066e4 lw v0, 0x14(a0) | v0 = *((a0 + 5));
| if (v0 == 0) {
0x001066e8 beql v0, zero, 0x10673c | goto label_2;
| }
0x001066ec lw a2, 4(s0) | a2 = *((s0 + 1));
0x001066f0 lw a1, 0xc(a0) | a1 = *((a0 + 3));
| if (a1 == 0) {
0x001066f4 beql a1, zero, 0x10673c | goto label_2;
| }
0x001066f8 lw a2, 4(s0) | a2 = *((s0 + 1));
0x001066fc move s1, zero | s1 = 0;
0x00106700 sll v0, s1, 3 | v0 = s1 << 3;
| do {
0x00106704 addiu s1, s1, 1 | s1++;
0x00106708 lwx v0, v0(v1) | __asm ("lwx v0, v0(v1)");
0x0010670c move a0, v0 | a0 = v0;
| if (v0 != 0) {
0x00106710 beqz v0, 0x10672c |
0x00106714 lw t9, 0x14(s0) | t9 = *((s0 + 5));
0x00106718 jalr t9 | t9 ();
0x0010671c nop |
0x00106720 lw gp, 0x10(sp) | gp = *(var_10h);
0x00106724 lw a1, 0xc(s0) | a1 = *((s0 + 3));
0x00106728 lw v1, (s0) | v1 = *(s0);
| }
0x0010672c sltu v0, s1, a1 | v0 = (s1 < a1) ? 1 : 0;
0x00106730 sll v0, s1, 3 | v0 = s1 << 3;
0x00106734 bnel v0, zero, 0x106704 |
| } while (v0 == 0);
| label_1:
0x00106738 lw a2, 4(s0) | a2 = *((s0 + 1));
| label_2:
0x0010673c lw t9, -0x5ce0(gp) | t9 = sym.imp.memset;
0x00106740 move a0, v1 | a0 = v1;
0x00106744 sll a2, a2, 3 | a2 <<= 3;
0x00106748 move a1, zero | a1 = 0;
0x0010674c jalr t9 | t9 ();
0x00106750 lw gp, 0x10(sp) | gp = *(var_10h);
0x00106754 lw t9, -0x5b98(gp) | t9 = *((gp - 5862));
0x00106758 lw a0, (s0) | a0 = *(s0);
0x0010675c jalr t9 | t9 ();
0x00106760 lw gp, 0x10(sp) | gp = *(var_10h);
0x00106764 move a0, s0 | a0 = s0;
0x00106768 addiu a2, zero, 0x24 | a2 = 0x24;
0x0010676c lw t9, -0x5ce0(gp) | t9 = sym.imp.memset;
0x00106770 move a1, zero | a1 = 0;
0x00106774 jalr t9 | t9 ();
0x00106778 lw gp, 0x10(sp) | gp = *(var_10h);
0x0010677c lw ra, 0x24(sp) | ra = *(var_24h);
0x00106780 lw s1, 0x20(sp) | s1 = *(var_20h);
0x00106784 move a0, s0 | a0 = s0;
0x00106788 lw t9, -0x5b98(gp) | t9 = *((gp - 5862));
0x0010678c lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x00106790 addiu sp, sp, 0x28 |
0x00106794 jr t9 | t9 ();
| label_0:
0x00106798 jr ra | return v0;
0x0010679c nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/image2d @ 0xefe80 */
| #include <stdint.h>
|
; (fcn) sym.platform_set_dual_exposure () | void platform_set_dual_exposure () {
0x000efe80 lui gp, 0x16 |
0x000efe84 addiu gp, gp, -0xbb0 |
0x000efe88 addu gp, gp, t9 | gp += t9;
0x000efe8c addiu sp, sp, -0x60 |
0x000efe90 lw t9, -0x6ff4(gp) | t9 = sym.a5_platform_sensor_config_get;
0x000efe94 sw s3, 0x48(sp) | *(var_48h) = s3;
0x000efe98 lw s3, -0x5f08(gp) | s3 = *((gp - 6082));
0x000efe9c sw gp, 0x10(sp) | *(var_10h) = gp;
0x000efea0 sw s7, 0x58(sp) | *(var_58h) = s7;
0x000efea4 lw v0, (s3) | v0 = *(s3);
0x000efea8 sw s6, 0x54(sp) | *(var_54h) = s6;
0x000efeac sw s4, 0x4c(sp) | *(var_4ch) = s4;
0x000efeb0 sw s1, 0x40(sp) | *(var_40h) = s1;
0x000efeb4 sw s0, 0x3c(sp) | *(var_3ch) = s0;
0x000efeb8 move s6, a1 | s6 = a1;
0x000efebc sw ra, 0x5c(sp) | *(var_5ch) = ra;
0x000efec0 sw s5, 0x50(sp) | *(var_50h) = s5;
0x000efec4 sw s2, 0x44(sp) | *(var_44h) = s2;
0x000efec8 move a1, a2 | a1 = a2;
0x000efecc sw v0, 0x34(sp) | *(var_34h) = v0;
0x000efed0 move s0, a2 | s0 = a2;
0x000efed4 move s1, a0 | s1 = a0;
0x000efed8 bal 0xef410 | sym_a5_platform_sensor_config_get ();
0x000efedc move s7, v0 | s7 = v0;
0x000efee0 lw v0, (s6) | v0 = *(s6);
0x000efee4 addiu v1, zero, 1 | v1 = 1;
0x000efee8 lw gp, 0x10(sp) | gp = *(var_10h);
0x000efeec lw s4, 8(s7) | s4 = *((s7 + 2));
| if (v0 == v1) {
0x000efef0 beq v0, v1, 0xf00a8 | goto label_6;
| }
0x000efef4 slti a0, s0, 0 | a0 = (s0 < 0) ? 1 : 0;
| if (v0 == 0) {
0x000efef8 beqz v0, 0xf005c | goto label_7;
| }
0x000efefc addiu a0, zero, 2 | a0 = 2;
0x000eff00 addiu v0, zero, -4 | v0 = -4;
| if (v0 != a0) {
0x000eff04 bne v0, a0, 0xf0024 | goto label_2;
| }
0x000eff08 sw v1, 8(s7) | *((s7 + 2)) = v1;
0x000eff0c addiu s5, zero, 1 | s5 = 1;
| label_1:
0x000eff10 slti a0, s0, 0 | a0 = (s0 < 0) ? 1 : 0;
0x000eff14 move v0, s0 | v0 = s0;
| if (a0 == 0) {
0x000eff18 movn v0, zero, a0 | v0 = 0;
| }
0x000eff1c ext a0, v0, 8, 8 | __asm ("ext a0, v0, 8, 8");
0x000eff20 sll s2, a0, 1 | s2 = a0 << 1;
0x000eff24 addu a0, s2, a0 | a0 = s2 + a0;
0x000eff28 lw a1, 0x3c(s1) | a1 = *((s1 + 15));
0x000eff2c sll s2, a0, 2 | s2 = a0 << 2;
0x000eff30 lw t9, 0x14(s1) | t9 = *((s1 + 5));
0x000eff34 lwx a0, s2(a1) | __asm ("lwx a0, s2(a1)");
| if (t9 == 0) {
0x000eff38 beqz t9, 0xf008c | goto label_8;
| }
| do {
0x000eff3c lui a2, 0x4090 | a2 = imp.g_str_equal;
0x000eff40 move a1, a0 | a1 = a0;
0x000eff44 move a3, s7 | a3 = s7;
0x000eff48 addiu a2, a2, 0x2a30 | a2 += 0x2a30;
0x000eff4c move a0, s1 | a0 = s1;
0x000eff50 jalr t9 | t9 ();
0x000eff54 lw gp, 0x10(sp) | gp = *(var_10h);
| label_0:
0x000eff58 move a1, zero | a1 = 0;
| if (v0 >= 0) {
0x000eff5c bltz v0, 0xf0004 |
0x000eff60 lw v0, 0x14(s6) | v0 = *((s6 + 5));
0x000eff64 lw v1, 0x10(s6) | v1 = *((s6 + 4));
0x000eff68 sll v0, v0, 0x14 | v0 <<= 0x14;
0x000eff6c sra v0, v0, 0x14 | v0 >>= 0x14;
0x000eff70 lw a0, 0x3c(s1) | a0 = *((s1 + 15));
0x000eff74 lw a3, 8(s6) | a3 = *((s6 + 2));
0x000eff78 lw a2, 0xc(s6) | a2 = *((s6 + 3));
0x000eff7c ins a1, v0, 0, 0xc | __asm ("ins a1, v0, 0, 0xc");
0x000eff80 lw t9, 0x14(s1) | t9 = *((s1 + 5));
0x000eff84 ext v0, v1, 0, 0x18 | __asm ("ext v0, v1, 0, 0x18");
0x000eff88 sw a1, 0x2c(sp) | *(var_2ch) = a1;
0x000eff8c sw zero, 0x1c(sp) | *(var_1ch_2) = 0;
0x000eff90 sw zero, 0x30(sp) | *(var_30h) = 0;
0x000eff94 sw s5, 0x18(sp) | *(var_18h_2) = s5;
0x000eff98 sw a3, 0x20(sp) | *(var_20h_2) = a3;
0x000eff9c sw a2, 0x24(sp) | *(var_24h_2) = a2;
0x000effa0 sw v0, 0x28(sp) | *(var_28h) = v0;
0x000effa4 lwx a0, s2(a0) | __asm ("lwx a0, s2(a0)");
| if (t9 == 0) {
0x000effa8 beqz t9, 0xf0260 | goto label_9;
| }
0x000effac lui a2, 0x801c | a2 = 0x801c0000;
0x000effb0 move a1, a0 | a1 = a0;
0x000effb4 addiu a3, sp, 0x18 | a3 = sp + 0x18;
0x000effb8 addiu a2, a2, 0x2a00 | a2 += aav.0x00002a00;
0x000effbc move a0, s1 | a0 = s1;
0x000effc0 jalr t9 | t9 ();
0x000effc4 lw gp, 0x10(sp) | gp = *(var_10h);
| label_3:
0x000effc8 lw s6, -0x7048(gp) | s6 = sym.a5_platform_stream_config_get;
| if (v0 < 0) {
0x000effcc bltz v0, 0xf027c | goto label_10;
| }
0x000effd0 move a1, s0 | a1 = s0;
0x000effd4 move t9, s6 | t9 = s6;
0x000effd8 move a0, s1 | a0 = s1;
0x000effdc bal 0xeb8a4 | sym_a5_platform_stream_config_get ();
0x000effe0 addiu v1, zero, 2 | v1 = 2;
0x000effe4 lw gp, 0x10(sp) | gp = *(var_10h);
0x000effe8 move s5, v0 | s5 = v0;
| if (s4 == v1) {
0x000effec beq s4, v1, 0xf00b8 | goto label_11;
| }
0x000efff0 lw v0, 8(s7) | v0 = *((s7 + 2));
0x000efff4 addiu a1, s0, 1 | a1 = s0 + 1;
| if (v0 == v1) {
0x000efff8 beq v0, v1, 0xf00bc | goto label_12;
| }
0x000efffc addiu v0, zero, -0xff | v0 = -0xff;
0x000f0000 b 0xf0024 |
| } else {
0x000f0004 lw a2, -0x7da8(gp) | a2 = *(gp);
0x000f0008 lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
| /* str.failed_to_configure_sensor_capture */
0x000f000c addiu a2, a2, 0x1b10 | a2 += aav.0x00001b10;
| label_4:
0x000f0010 move a1, zero | a1 = 0;
0x000f0014 addiu a0, zero, 4 | a0 = 4;
0x000f0018 bal 0xf7988 | sym_debug_output ();
0x000f001c lw gp, 0x10(sp) | gp = *(var_10h);
0x000f0020 addiu v0, zero, -4 | v0 = -4;
| }
| label_2:
0x000f0024 lw a0, 0x34(sp) | a0 = *(var_34h);
0x000f0028 lw v1, (s3) | v1 = *(s3);
0x000f002c lw ra, 0x5c(sp) | ra = *(var_5ch);
| if (a0 != v1) {
0x000f0030 bne a0, v1, 0xf02a8 | goto label_13;
| }
0x000f0034 lw s7, 0x58(sp) | s7 = *(var_58h);
0x000f0038 lw s6, 0x54(sp) | s6 = *(var_54h);
0x000f003c lw s5, 0x50(sp) | s5 = *(var_50h);
0x000f0040 lw s4, 0x4c(sp) | s4 = *(var_4ch);
0x000f0044 lw s3, 0x48(sp) | s3 = *(var_48h);
0x000f0048 lw s2, 0x44(sp) | s2 = *(var_44h);
0x000f004c lw s1, 0x40(sp) | s1 = *(var_40h);
0x000f0050 lw s0, 0x3c(sp) | s0 = *(var_3ch);
0x000f0054 addiu sp, sp, 0x60 |
0x000f0058 jr ra | return v0;
| label_7:
0x000f005c move v0, s0 | v0 = s0;
| if (a0 == 0) {
0x000f0060 movn v0, zero, a0 | v0 = 0;
| }
0x000f0064 ext a0, v0, 8, 8 | __asm ("ext a0, v0, 8, 8");
0x000f0068 sll s2, a0, 1 | s2 = a0 << 1;
0x000f006c addu a0, s2, a0 | a0 = s2 + a0;
0x000f0070 lw a1, 0x3c(s1) | a1 = *((s1 + 15));
0x000f0074 sll s2, a0, 2 | s2 = a0 << 2;
0x000f0078 lw t9, 0x14(s1) | t9 = *((s1 + 5));
0x000f007c sw zero, 8(s7) | *((s7 + 2)) = 0;
0x000f0080 move s5, zero | s5 = 0;
0x000f0084 lwx a0, s2(a1) | __asm ("lwx a0, s2(a1)");
0x000f0088 bnez t9, 0xeff3c |
| } while (t9 != 0);
| label_8:
0x000f008c lw t9, -0x5e00(gp) | t9 = sym.imp.ioctl;
0x000f0090 lui a1, 0x4090 | a1 = imp.g_str_equal;
0x000f0094 move a2, s7 | a2 = s7;
0x000f0098 addiu a1, a1, 0x2a30 | a1 += 0x2a30;
0x000f009c jalr t9 | t9 ();
0x000f00a0 lw gp, 0x10(sp) | gp = *(var_10h);
0x000f00a4 b 0xeff58 | goto label_0;
| label_6:
0x000f00a8 addiu v0, zero, 2 | v0 = 2;
0x000f00ac sw v0, 8(s7) | *((s7 + 2)) = v0;
0x000f00b0 addiu s5, zero, 1 | s5 = 1;
0x000f00b4 b 0xeff10 | goto label_1;
| label_11:
0x000f00b8 addiu a1, s0, 1 | a1 = s0 + 1;
| label_12:
0x000f00bc move t9, s6 | t9 = s6;
0x000f00c0 move a0, s1 | a0 = s1;
0x000f00c4 bal 0xeb8a4 | sym_a5_platform_stream_config_get ();
0x000f00c8 lw gp, 0x10(sp) | gp = *(var_10h);
0x000f00cc move s0, v0 | s0 = v0;
0x000f00d0 addiu s4, v0, 4 | s4 = v0 + 4;
0x000f00d4 lw t9, -0x7044(gp) | t9 = *(gp);
0x000f00d8 move a1, s4 | a1 = s4;
0x000f00dc move a0, s1 | a0 = s1;
0x000f00e0 bal 0xeb500 | sym_artpec5_platform_stream_config_get ();
0x000f00e4 lw v1, (s0) | v1 = *(s0);
0x000f00e8 lw gp, 0x10(sp) | gp = *(var_10h);
0x000f00ec slti v0, v1, 0 | v0 = (v1 < 0) ? 1 : 0;
| if (v0 == 0) {
0x000f00f0 movn v1, zero, v0 | v1 = 0;
| }
0x000f00f4 ext v0, v1, 8, 8 | __asm ("ext v0, v1, 8, 8");
0x000f00f8 addiu v1, zero, 0x12c | v1 = aav.0x0000012c;
0x000f00fc mul a0, v0, v1 | __asm ("mul a0, v0, v1");
0x000f0100 addiu v1, zero, 1 | v1 = 1;
0x000f0104 addu v0, a0, s1 | v0 = a0 + s1;
0x000f0108 addiu a0, zero, -1 | a0 = -1;
0x000f010c lw a1, 0xc0(v0) | a1 = *((v0 + 48));
0x000f0110 lw a2, 0xbc(v0) | a2 = *((v0 + 47));
0x000f0114 addiu v0, s5, 8 | v0 = s5 + 8;
0x000f0118 sw v1, 0x210(s0) | *(s0) = v1;
0x000f011c sw v1, 0x214(s0) | *(s0) = v1;
0x000f0120 sw v1, 0x204(s0) | *(s0) = v1;
0x000f0124 sw v1, 0x208(s0) | *(s0) = v1;
0x000f0128 sw v1, 0x20c(s0) | *(s0) = v1;
0x000f012c sw v1, 0x218(s0) | *(s0) = v1;
0x000f0130 sw v1, 0x21c(s0) | *(s0) = v1;
0x000f0134 sw v1, 0x220(s0) | *(s0) = v1;
0x000f0138 sw v1, 0x224(s0) | *(s0) = v1;
0x000f013c sw v1, 0x228(s0) | *(s0) = v1;
0x000f0140 sw v1, 0x230(s0) | *(s0) = v1;
0x000f0144 sw a1, 0x1e4(s0) | *(s0) = a1;
0x000f0148 sw a1, 0x1f0(s0) | *(s0) = a1;
0x000f014c sw a1, 0x1fc(s0) | *(s0) = a1;
0x000f0150 sw a0, 0x10c(s0) | *(s0) = a0;
0x000f0154 sw a0, 0x110(s0) | *(s0) = a0;
0x000f0158 sw a0, 0x114(s0) | *(s0) = a0;
0x000f015c sw a0, 0x19c(s0) | *(s0) = a0;
0x000f0160 sw a2, 0x1e0(s0) | *(s0) = a2;
0x000f0164 sw a2, 0x1ec(s0) | *(s0) = a2;
0x000f0168 sw a2, 0x1f8(s0) | *(s0) = a2;
0x000f016c sw zero, 0xa8(s0) | *((s0 + 42)) = 0;
0x000f0170 sw zero, 0x104(s0) | *(s0) = 0;
0x000f0174 sw zero, 0x108(s0) | *(s0) = 0;
0x000f0178 sw zero, 0x4c(s0) | *((s0 + 19)) = 0;
0x000f017c sw zero, 0x2c(s0) | *((s0 + 11)) = 0;
0x000f0180 sw zero, 0x30(s0) | *((s0 + 12)) = 0;
0x000f0184 sw zero, 0x34(s0) | *((s0 + 13)) = 0;
0x000f0188 sw zero, 0x1a8(s0) | *(s0) = 0;
0x000f018c sw v1, 0x24(s0) | *((s0 + 9)) = v1;
0x000f0190 sw zero, 0x1ac(s0) | *(s0) = 0;
0x000f0194 sw zero, 0x1a0(s0) | *(s0) = 0;
0x000f0198 sw zero, 0x1d8(s0) | *(s0) = 0;
0x000f019c sw zero, 0x1dc(s0) | *(s0) = 0;
0x000f01a0 lwl t1, 3(v0) | __asm ("lwl t1, 3(v0)");
0x000f01a4 lwl t0, 7(v0) | __asm ("lwl t0, 7(v0)");
0x000f01a8 lwl a1, 0xb(v0) | __asm ("lwl a1, 0xb(v0)");
0x000f01ac lwl a0, 0xf(v0) | __asm ("lwl a0, 0xf(v0)");
0x000f01b0 lwr t1, (v0) | __asm ("lwr t1, (v0)");
0x000f01b4 addiu v1, s0, 8 | v1 = s0 + 8;
0x000f01b8 lwr a0, 0xc(v0) | __asm ("lwr a0, 0xc(v0)");
0x000f01bc lwr a1, 8(v0) | __asm ("lwr a1, 8(v0)");
0x000f01c0 lwr t0, 4(v0) | __asm ("lwr t0, 4(v0)");
0x000f01c4 swl t1, 3(v1) | __asm ("swl t1, 3(v1)");
0x000f01c8 swr t1, (v1) | __asm ("swr t1, (v1)");
0x000f01cc swl t0, 7(v1) | __asm ("swl t0, 7(v1)");
0x000f01d0 swr t0, 4(v1) | __asm ("swr t0, 4(v1)");
0x000f01d4 swl a1, 0xb(v1) | __asm ("swl a1, 0xb(v1)");
0x000f01d8 swr a1, 8(v1) | __asm ("swr a1, 8(v1)");
0x000f01dc swl a0, 0xf(v1) | __asm ("swl a0, 0xf(v1)");
0x000f01e0 swr a0, 0xc(v1) | __asm ("swr a0, 0xc(v1)");
0x000f01e4 lw a0, 0x3c(s1) | a0 = *((s1 + 15));
0x000f01e8 lw t9, 0x14(s1) | t9 = *((s1 + 5));
0x000f01ec lwx a0, s2(a0) | __asm ("lwx a0, s2(a0)");
| if (t9 == 0) {
0x000f01f0 beqz t9, 0xf028c | goto label_14;
| }
0x000f01f4 lui a2, 0x81dc | a2 = 0x81dc0000;
0x000f01f8 move a1, a0 | a1 = a0;
0x000f01fc move a3, s4 | a3 = s4;
0x000f0200 addiu a2, a2, 0x2a0a | a2 += 0x2a0a;
0x000f0204 move a0, s1 | a0 = s1;
0x000f0208 jalr t9 | t9 ();
0x000f020c lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
| label_5:
0x000f0210 beql v0, zero, 0xf0024 | goto label_2;
| }
0x000f0214 addiu v0, zero, -0xff | v0 = -0xff;
0x000f0218 lw t9, -0x5b94(gp) | t9 = sym.imp.__errno_location;
0x000f021c jalr t9 | t9 ();
0x000f0220 nop |
0x000f0224 lw gp, 0x10(sp) | gp = *(var_10h);
0x000f0228 lw t9, -0x5bc4(gp) | t9 = sym.imp.strerror;
0x000f022c lw a0, (v0) | a0 = *(v0);
0x000f0230 jalr t9 | t9 ();
0x000f0234 lw gp, 0x10(sp) | gp = *(var_10h);
0x000f0238 move a3, v0 | a3 = v0;
0x000f023c move a1, zero | a1 = 0;
0x000f0240 lw a2, -0x7da8(gp) | a2 = *(gp);
0x000f0244 lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
| /* str.ioctl_CAM_IOC_STREAM_CONF_failed:__s_n */
0x000f0248 addiu a2, a2, 0x186c | a2 += 0x186c;
0x000f024c addiu a0, zero, 4 | a0 = 4;
0x000f0250 bal 0xf7988 | sym_debug_output ();
0x000f0254 lw gp, 0x10(sp) | gp = *(var_10h);
0x000f0258 addiu v0, zero, -4 | v0 = -4;
0x000f025c b 0xf0024 | goto label_2;
| label_9:
0x000f0260 lw t9, -0x5e00(gp) | t9 = sym.imp.ioctl;
0x000f0264 lui a1, 0x801c | a1 = 0x801c0000;
0x000f0268 addiu a2, sp, 0x18 | a2 = sp + 0x18;
0x000f026c addiu a1, a1, 0x2a00 | a1 += aav.0x00002a00;
0x000f0270 jalr t9 | t9 ();
0x000f0274 lw gp, 0x10(sp) | gp = *(var_10h);
0x000f0278 b 0xeffc8 | goto label_3;
| label_10:
0x000f027c lw a2, -0x7da8(gp) | a2 = *(gp);
0x000f0280 lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
| /* str.failed_to_setup_dual_exposure_n */
0x000f0284 addiu a2, a2, 0x1b88 | a2 += 0x1b88;
0x000f0288 b 0xf0010 | goto label_4;
| label_14:
0x000f028c lw t9, -0x5e00(gp) | t9 = sym.imp.ioctl;
0x000f0290 lui a1, 0x81dc | a1 = 0x81dc0000;
0x000f0294 move a2, s4 | a2 = s4;
0x000f0298 addiu a1, a1, 0x2a0a | a1 += 0x2a0a;
0x000f029c jalr t9 | t9 ();
0x000f02a0 lw gp, 0x10(sp) | gp = *(var_10h);
0x000f02a4 b 0xf0210 | goto label_5;
| label_13:
0x000f02a8 lw t9, -0x5fc0(gp) | t9 = sym.imp.__stack_chk_fail;
0x000f02ac jalr t9 | t9 ();
0x000f02b0 nop |
0x000f02b4 lui gp, 0x16 |
0x000f02b8 addiu gp, gp, -0xfe4 |
0x000f02bc addu gp, gp, t9 | gp += t9;
0x000f02c0 addiu sp, sp, -0x28 |
0x000f02c4 lw v0, 0x10(a1) | v0 = *((a1 + 4));
0x000f02c8 sw s0, 0x18(sp) | *(var_18h) = s0;
0x000f02cc lw s0, -0x7da8(gp) | s0 = *(gp);
0x000f02d0 lw t9, -0x70dc(gp) | t9 = sym.purb_get;
0x000f02d4 sll v0, v0, 2 | v0 <<= 2;
0x000f02d8 addiu s0, s0, 0x2158 | s0 += 0x2158;
0x000f02dc sw gp, 0x10(sp) | *(var_10h_2) = gp;
0x000f02e0 sw s2, 0x20(sp) | *(var_20h) = s2;
0x000f02e4 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x000f02e8 sw ra, 0x24(sp) | *(var_24h) = ra;
0x000f02ec move s2, a1 | s2 = a1;
0x000f02f0 move s1, a0 | s1 = a0;
0x000f02f4 lwx s0, v0(s0) | __asm ("lwx s0, v0(s0)");
0x000f02f8 bal 0xf51f0 | sym_purb_get ();
0x000f02fc lw gp, 0x10(sp) | gp = *(var_10h_2);
| if (v0 == 0) {
0x000f0300 beqz v0, 0xf03c4 | goto label_15;
| }
0x000f0304 lw v1, (s2) | v1 = *(s2);
0x000f0308 addiu a0, v0, 0x14 | a0 = v0 + 0x14;
0x000f030c addiu a1, zero, -1 | a1 = -1;
0x000f0310 sw a0, 0x10(v0) | *((v0 + 4)) = a0;
| if (v1 == a1) {
0x000f0314 beq v1, a1, 0xf03bc | goto label_16;
| }
0x000f0318 lhu a3, 8(s2) | a3 = *((s2 + 4));
0x000f031c move a1, zero | a1 = 0;
0x000f0320 ins a1, v1, 0, 0x10 | __asm ("ins a1, v1, 0, 0x10");
0x000f0324 ins a1, a3, 0x10, 0x10 | __asm ("ins a1, a3, 0x10, 0x10");
0x000f0328 addiu v1, v0, 0x24 | v1 = v0 + 0x24;
0x000f032c addiu a2, s0, 0x18 | a2 = s0 + 0x18;
0x000f0330 addiu a3, zero, 2 | a3 = 2;
0x000f0334 sw v1, 0x10(v0) | *((v0 + 4)) = v1;
0x000f0338 sw a3, 0x14(v0) | *((v0 + 5)) = a3;
0x000f033c sw a2, 0x18(v0) | *((v0 + 6)) = a2;
0x000f0340 sw a1, 0x1c(v0) | *((v0 + 7)) = a1;
| do {
0x000f0344 lw a1, 4(s2) | a1 = *((s2 + 1));
0x000f0348 addiu a2, zero, -1 | a2 = -1;
0x000f034c move a2, zero | a2 = 0;
| if (a1 != a2) {
0x000f0350 beq a1, a2, 0xf0380 |
0x000f0354 lhu a3, 0xc(s2) | a3 = *((s2 + 6));
0x000f0358 ins a2, a1, 0, 0x10 | __asm ("ins a2, a1, 0, 0x10");
0x000f035c ins a2, a3, 0x10, 0x10 | __asm ("ins a2, a3, 0x10, 0x10");
0x000f0360 addiu a1, v1, 0x10 | a1 = v1 + 0x10;
0x000f0364 addiu s0, s0, 0x20 | s0 += 0x20;
0x000f0368 addiu a3, zero, 2 | a3 = 2;
0x000f036c sw a1, 0x10(v0) | *((v0 + 4)) = a1;
0x000f0370 sw a3, (v1) | *(v1) = a3;
0x000f0374 sw s0, 4(v1) | *((v1 + 1)) = s0;
0x000f0378 sw a2, 8(v1) | *((v1 + 2)) = a2;
0x000f037c move v1, a1 | v1 = a1;
| }
0x000f0380 subu v1, v1, a0 | __asm ("subu v1, v1, a0");
0x000f0384 lw a2, -0x7e4c(gp) | a2 = *((gp - 8083));
0x000f0388 lw ra, 0x24(sp) | ra = *(var_24h);
0x000f038c lw s2, 0x20(sp) | s2 = *(var_20h);
0x000f0390 lw s0, 0x18(sp) | s0 = *(var_18h);
0x000f0394 sra v1, v1, 4 | v1 >>= 4;
0x000f0398 move a0, s1 | a0 = s1;
0x000f039c lw t9, -0x70d8(gp) | t9 = sym.platform_purb_replace;
0x000f03a0 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x000f03a4 sw v1, 8(v0) | *((v0 + 2)) = v1;
0x000f03a8 move a3, v0 | a3 = v0;
0x000f03ac addiu a2, a2, -0x6680 | a2 += -0x6680;
0x000f03b0 addiu a1, zero, -1 | a1 = -1;
0x000f03b4 addiu sp, sp, 0x28 |
0x000f03b8 b 0xe9934 | void (*0xe9934)() ();
| label_16:
0x000f03bc move v1, a0 | v1 = a0;
0x000f03c0 b 0xf0344 |
| } while (1);
| label_15:
0x000f03c4 lw a2, -0x7da8(gp) | a2 = *(gp);
0x000f03c8 lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
| /* str.Couldnt_get_a_free_purb_n */
0x000f03cc addiu a2, a2, 0x1180 | a2 += 0x1180;
0x000f03d0 move a1, zero | a1 = 0;
0x000f03d4 addiu a0, zero, 4 | a0 = 4;
0x000f03d8 bal 0xf7988 | sym_debug_output ();
0x000f03dc lw ra, 0x24(sp) | ra = *(var_24h);
0x000f03e0 lw s2, 0x20(sp) | s2 = *(var_20h);
0x000f03e4 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x000f03e8 lw s0, 0x18(sp) | s0 = *(var_18h);
0x000f03ec addiu v0, zero, -4 | v0 = -4;
0x000f03f0 addiu sp, sp, 0x28 |
0x000f03f4 jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/bin/image2d @ 0xe8ac0 */
| #include <stdint.h>
|
; (fcn) sym.platform_start_streaming_for_stream () | void platform_start_streaming_for_stream () {
0x000e8ac0 lui gp, 0x16 |
0x000e8ac4 addiu gp, gp, 0x6810 |
0x000e8ac8 addu gp, gp, t9 | gp += t9;
0x000e8acc slti v0, a1, 0 | v0 = (a1 < 0) ? 1 : 0;
| if (v0 == 0) {
0x000e8ad0 movn a1, zero, v0 | a1 = 0;
| }
0x000e8ad4 ext v0, a1, 8, 8 | __asm ("ext v0, a1, 8, 8");
0x000e8ad8 addiu a1, zero, 0x12c | a1 = aav.0x0000012c;
0x000e8adc mul v1, v0, a1 | __asm ("mul v1, v0, a1");
0x000e8ae0 addu a1, v1, a0 | a1 = v1 + a0;
0x000e8ae4 lw v1, 0x198(a1) | v1 = *(a1);
0x000e8ae8 addiu v1, v1, -1 | v1 += -1;
0x000e8aec sw v1, 0x198(a1) | *(a1) = v1;
| if (v1 != 0) {
0x000e8af0 beqz v1, 0xe8afc |
0x000e8af4 addiu v0, zero, -0xff | v0 = -0xff;
0x000e8af8 jr ra | return v0;
| }
0x000e8afc sll v1, v0, 1 | v1 = v0 << 1;
0x000e8b00 addiu sp, sp, -0x20 |
0x000e8b04 lw a1, 0x3c(a0) | a1 = *((a0 + 15));
0x000e8b08 addu v0, v1, v0 | v0 = v1 + v0;
0x000e8b0c sll v0, v0, 2 | v0 <<= 2;
0x000e8b10 lw t9, 0x14(a0) | t9 = *((a0 + 5));
0x000e8b14 sw gp, 0x10(sp) | *(var_10h) = gp;
0x000e8b18 sw ra, 0x1c(sp) | *(var_1ch) = ra;
0x000e8b1c lwx v0, v0(a1) | __asm ("lwx v0, v0(a1)");
| if (t9 == 0) {
0x000e8b20 beqz t9, 0xe8b94 | goto label_1;
| }
0x000e8b24 lui a2, 0x8004 | a2 = 0x80040000;
0x000e8b28 addiu a3, zero, 1 | a3 = 1;
0x000e8b2c addiu a2, a2, 0x2a02 | a2 += 0x2a02;
0x000e8b30 move a1, v0 | a1 = v0;
0x000e8b34 jalr t9 | t9 ();
0x000e8b38 lw gp, 0x10(sp) | gp = *(var_10h);
| label_0:
0x000e8b3c lw t9, -0x5b94(gp) | t9 = sym.imp.__errno_location;
| if (v0 != 0) {
0x000e8b40 bnez v0, 0xe8b54 | goto label_2;
| }
0x000e8b44 addiu v0, zero, -0xff | v0 = -0xff;
| do {
0x000e8b48 lw ra, 0x1c(sp) | ra = *(var_1ch);
0x000e8b4c addiu sp, sp, 0x20 |
0x000e8b50 jr ra | return v0;
| label_2:
0x000e8b54 jalr t9 | t9 ();
0x000e8b58 nop |
0x000e8b5c lw gp, 0x10(sp) | gp = *(var_10h);
0x000e8b60 lw t9, -0x5bc4(gp) | t9 = sym.imp.strerror;
0x000e8b64 lw a0, (v0) | a0 = *(v0);
0x000e8b68 jalr t9 | t9 ();
0x000e8b6c lw gp, 0x10(sp) | gp = *(var_10h);
0x000e8b70 move a3, v0 | a3 = v0;
0x000e8b74 move a1, zero | a1 = 0;
0x000e8b78 lw a2, -0x7da8(gp) | a2 = *(gp);
0x000e8b7c lw t9, -0x7f7c(gp) | t9 = sym.debug_output;
| /* str.ioctl_CAM_IOC_STREAM_CONTROL_failed:__s_n */
0x000e8b80 addiu a2, a2, 0x14c8 | a2 += aav.0x000014c8;
0x000e8b84 addiu a0, zero, 4 | a0 = 4;
0x000e8b88 bal 0xf7988 | sym_debug_output ();
0x000e8b8c addiu v0, zero, -4 | v0 = -4;
0x000e8b90 b 0xe8b48 |
| } while (1);
| label_1:
0x000e8b94 lw t9, -0x5e00(gp) | t9 = sym.imp.ioctl;
0x000e8b98 lui a1, 0x8004 | a1 = 0x80040000;
0x000e8b9c addiu a2, zero, 1 | a2 = 1;
0x000e8ba0 addiu a1, a1, 0x2a02 | a1 += 0x2a02;
0x000e8ba4 move a0, v0 | a0 = v0;
0x000e8ba8 jalr t9 | t9 ();
0x000e8bac lw gp, 0x10(sp) | gp = *(var_10h);
0x000e8bb0 b 0xe8b3c | goto label_0;
| }
[*] Function popen used 1 times image2d