[*] Binary protection state of libarchive.so.13.4.0
Full RELRO Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function mmap tear down of libarchive.so.13.4.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libarchive.so.13.4.0 @ 0xed50 */
| #include <stdint.h>
|
; (fcn) sym.__archive_check_magic () | void archive_check_magic () {
0x0000ed50 lui gp, 0xc |
0x0000ed54 addiu gp, gp, -0x1d20 |
0x0000ed58 addu gp, gp, t9 | gp += t9;
0x0000ed5c addiu sp, sp, -0xc8 |
0x0000ed60 lui v0, 0xcad | v0 = 0xcad0000;
0x0000ed64 sw s1, 0xb8(sp) | *(var_b8h) = s1;
0x0000ed68 lw s1, -0x7bd8(gp) | s1 = *((gp - 7926));
0x0000ed6c lw v1, (a0) | v1 = *(a0);
0x0000ed70 sw s0, 0xb4(sp) | *(var_b4h) = s0;
0x0000ed74 lw t0, (s1) | t0 = *(s1);
0x0000ed78 sw gp, 0x18(sp) | *(var_18h) = gp;
0x0000ed7c move s0, a0 | s0 = a0;
0x0000ed80 addiu a0, v0, 0x11c9 | a0 = v0 + 0x11c9;
0x0000ed84 sw ra, 0xc4(sp) | *(var_c4h) = ra;
0x0000ed88 sw s3, 0xc0(sp) | *(var_c0h) = s3;
0x0000ed8c sw s2, 0xbc(sp) | *(var_bch) = s2;
0x0000ed90 sw t0, 0xac(sp) | *(var_ach) = t0;
| if (v1 == a0) {
0x0000ed94 beql v1, a0, 0xee44 | goto label_2;
| }
0x0000ed98 lw v0, -0x7fe8(gp) | v0 = *((gp - 8186));
0x0000ed9c addiu v0, v0, 0x11ca | v0 += 0x11ca;
0x0000eda0 sltu v0, v1, v0 | v0 = (v1 < v0) ? 1 : 0;
0x0000eda4 lui v0, 0xb0c5 | v0 = 0xb0c50000;
| if (v0 == 0) {
0x0000eda8 beqz v0, 0xee04 | goto label_3;
| }
0x0000edac lui v0, 0xde | v0 = 0xdeb0c5;
0x0000edb0 ori v0, v0, 0xb0c5 |
0x0000edb4 lui v0, 0xbad | v0 = 0xbad0000;
| if (v1 != v0) {
0x0000edb8 bne v1, v0, 0xee1c | goto label_4;
| }
0x0000edbc lw v0, -0x7fe8(gp) | v0 = *((gp - 8186));
0x0000edc0 addiu v0, v0, 0x1604 | v0 += 0x1604;
| do {
| label_0:
0x0000edc4 lw a2, -0x7fe8(gp) | a2 = *((gp - 8186));
| if (v1 == a1) {
0x0000edc8 bnel v1, a1, 0xeec4 | goto label_5;
| }
0x0000edcc lw a1, 4(s0) | a1 = *((s0 + 1));
0x0000edd0 and v1, a1, a2 | v1 = a1 & a2;
0x0000edd4 move v0, zero | v0 = 0;
| if (v1 == 0) {
0x0000edd8 beqz v1, 0xee4c | goto label_6;
| }
| label_1:
0x0000eddc lw a0, 0xac(sp) | a0 = *(var_ach);
0x0000ede0 lw v1, (s1) | v1 = *(s1);
0x0000ede4 lw ra, 0xc4(sp) | ra = *(var_c4h);
| if (a0 != v1) {
0x0000ede8 bne a0, v1, 0xeef0 | goto label_7;
| }
0x0000edec lw s3, 0xc0(sp) | s3 = *(var_c0h);
0x0000edf0 lw s2, 0xbc(sp) | s2 = *(var_bch);
0x0000edf4 lw s1, 0xb8(sp) | s1 = *(var_b8h);
0x0000edf8 lw s0, 0xb4(sp) | s0 = *(var_b4h);
0x0000edfc addiu sp, sp, 0xc8 |
0x0000ee00 jr ra | return v0;
| label_3:
0x0000ee04 ori v0, v0, 0xc0de | v0 |= 0xc0de;
0x0000ee08 lui v0, 0xc001 | v0 = 0xc0010000;
| if (v1 == v0) {
0x0000ee0c bnel v1, v0, 0xee30 | goto label_8;
| }
0x0000ee10 lw v0, -0x7fe8(gp) | v0 = *((gp - 8186));
0x0000ee14 addiu v0, v0, 0x15cc | v0 += 0x15cc;
0x0000ee18 b 0xedc4 |
| } while (1);
| label_4:
0x0000ee1c ori v0, v0, 0xb0c5 | v0 |= 0xb0c5;
0x0000ee20 lw v0, -0x7fe8(gp) | v0 = *((gp - 8186));
| if (v1 == v0) {
0x0000ee24 bne v1, v0, 0xeefc |
0x0000ee28 addiu v0, v0, 0x15f0 | v0 += 0x15f0;
0x0000ee2c b 0xedc4 | goto label_0;
| label_8:
0x0000ee30 ori v0, v0, 0xb0c5 | v0 |= 0xb0c5;
0x0000ee34 lw v0, -0x7fe8(gp) | v0 = *((gp - 8186));
| if (v1 != v0) {
0x0000ee38 bne v1, v0, 0xeefc | goto label_9;
| }
0x0000ee3c addiu v0, v0, 0x15dc | v0 += 0x15dc;
0x0000ee40 b 0xedc4 | goto label_0;
| label_2:
0x0000ee44 addiu v0, v0, 0x15bc | v0 += 0x15bc;
0x0000ee48 b 0xedc4 | goto label_0;
| label_6:
0x0000ee4c ori v0, zero, 0x8000 | v0 = aav.0x00008000;
0x0000ee50 sw a3, 0x24(sp) | *(var_24h) = a3;
0x0000ee54 sw a2, 0xd0(sp) | *(arg_d0h) = a2;
| if (a1 != v0) {
0x0000ee58 beq a1, v0, 0xeeb8 |
0x0000ee5c lw s2, -0x7fe4(gp) | s2 = *((gp - 8185));
0x0000ee60 addiu s2, s2, -0x1410 | s2 += -0x1410;
0x0000ee64 move t9, s2 | t9 = s2;
0x0000ee68 addiu a0, sp, 0x2c | a0 = sp + 0x2c;
0x0000ee6c bal 0xebf0 | fcn_0000ebf0 ();
0x0000ee70 lw a2, 0xd0(sp) | a2 = *(arg_d0h);
0x0000ee74 addiu a0, sp, 0x6c | a0 = sp + 0x6c;
0x0000ee78 move a1, a2 | a1 = a2;
0x0000ee7c move t9, s2 | t9 = s2;
0x0000ee80 move s3, v0 | s3 = v0;
0x0000ee84 bal 0xebf0 | fcn_0000ebf0 ();
0x0000ee88 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000ee8c lw a3, 0x24(sp) | a3 = *(var_24h);
0x0000ee90 sw v0, 0x14(sp) | *(var_14h) = v0;
0x0000ee94 lw a2, -0x7fe8(gp) | a2 = *((gp - 8186));
0x0000ee98 lw t9, -0x77bc(gp) | t9 = *((gp - 7663));
0x0000ee9c sw s3, 0x10(sp) | *(var_10h) = s3;
0x0000eea0 addiu a2, a2, 0x16b0 | a2 += 0x16b0;
0x0000eea4 addiu a1, zero, -1 | a1 = -1;
0x0000eea8 move a0, s0 | a0 = s0;
0x0000eeac jalr t9 | t9 ();
0x0000eeb0 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000eeb4 ori v0, zero, 0x8000 | v0 = aav.0x00008000;
| }
0x0000eeb8 sw v0, 4(s0) | *((s0 + 1)) = v0;
0x0000eebc addiu v0, zero, -0x1e | v0 = -0x1e;
0x0000eec0 b 0xeddc | goto label_1;
| label_5:
0x0000eec4 lw t9, -0x77bc(gp) | t9 = *((gp - 7663));
0x0000eec8 sw v0, 0x10(sp) | *(var_10h) = v0;
0x0000eecc addiu a2, a2, 0x1658 | a2 += 0x1658;
0x0000eed0 addiu a1, zero, -1 | a1 = -1;
0x0000eed4 move a0, s0 | a0 = s0;
0x0000eed8 jalr t9 | t9 ();
0x0000eedc ori v0, zero, 0x8000 | v0 = aav.0x00008000;
0x0000eee0 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000eee4 sw v0, 4(s0) | *((s0 + 1)) = v0;
0x0000eee8 addiu v0, zero, -0x1e | v0 = -0x1e;
0x0000eeec b 0xeddc | goto label_1;
| label_7:
0x0000eef0 lw t9, -0x7d08(gp) | t9 = *((gp - 8002));
0x0000eef4 jalr t9 | t9 ();
0x0000eef8 nop |
| }
| label_9:
0x0000eefc lw s0, -0x7fe4(gp) | s0 = *((gp - 8185));
0x0000ef00 lw a0, -0x7fe8(gp) | a0 = *((gp - 8186));
0x0000ef04 addiu s0, s0, -0x56d0 | s0 += -0x56d0;
0x0000ef08 sw a3, 0x24(sp) | *(var_24h) = a3;
0x0000ef0c move t9, s0 | t9 = s0;
0x0000ef10 addiu a0, a0, 0x1614 | a0 += aav.0x00001614;
0x0000ef14 bal 0xa930 | entry0 ();
0x0000ef18 lw a3, 0x24(sp) | a3 = *(var_24h);
0x0000ef1c move t9, s0 | t9 = s0;
0x0000ef20 move a0, a3 | a0 = a3;
0x0000ef24 bal 0xa930 | entry0 ();
0x0000ef28 lw gp, 0x18(sp) | gp = *(var_18h);
0x0000ef2c move t9, s0 | t9 = s0;
0x0000ef30 lw a0, -0x7fe8(gp) | a0 = *((gp - 8186));
0x0000ef34 addiu a0, a0, 0x1630 | a0 += 0x1630;
0x0000ef38 bal 0xa930 | entry0 ();
0x0000ef3c lw gp, 0x18(sp) | gp = *(var_18h);
0x0000ef40 lw t9, -0x7710(gp) | t9 = *((gp - 7620));
0x0000ef44 jalr t9 | t9 ();
0x0000ef48 nop |
0x0000ef4c nop |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libarchive.so.13.4.0 @ 0x2209c */
| #include <stdint.h>
|
; (fcn) sym.__archive_read_filter_ahead () | void archive_read_filter_ahead () {
0x0002209c lui gp, 0xb |
0x000220a0 addiu gp, gp, -0x506c |
0x000220a4 addu gp, gp, t9 | gp += t9;
0x000220a8 addiu sp, sp, -0x38 |
0x000220ac sw s4, 0x28(sp) | *(var_28h) = s4;
0x000220b0 sw gp, 0x10(sp) | *(var_10h) = gp;
0x000220b4 sw ra, 0x34(sp) | *(var_34h) = ra;
0x000220b8 sw s6, 0x30(sp) | *(var_30h) = s6;
0x000220bc sw s5, 0x2c(sp) | *(var_2ch) = s5;
0x000220c0 sw s3, 0x24(sp) | *(var_24h) = s3;
0x000220c4 sw s2, 0x20(sp) | *(var_20h) = s2;
0x000220c8 sw s1, 0x1c(sp) | *(var_1ch) = s1;
0x000220cc sw s0, 0x18(sp) | *(var_18h) = s0;
0x000220d0 lb v0, 0x5e(a0) | v0 = *((a0 + 94));
0x000220d4 move s4, a2 | s4 = a2;
| if (v0 != 0) {
0x000220d8 bnez v0, 0x223dc | goto label_8;
| }
0x000220dc lw s2, -0x7fcc(gp) | s2 = *((gp - 8179));
0x000220e0 lw a2, 0x48(a0) | a2 = *((a0 + 18));
0x000220e4 move s0, a0 | s0 = a0;
0x000220e8 move s5, a1 | s5 = a1;
0x000220ec addiu s3, a0, 0x4c | s3 = a0 + 0x4c;
0x000220f0 addiu s2, s2, 0x42c | s2 += 0x42c;
| do {
| label_0:
0x000220f4 sltu v0, a2, s5 | v0 = (a2 < s5) ? 1 : 0;
0x000220f8 lw a3, 0x58(s0) | a3 = *((s0 + 22));
| if (v0 != 0) {
0x000220fc bnel v0, zero, 0x2210c |
| if (a2 != 0) {
0x00022100 bnez a2, 0x22400 | goto label_9;
| }
0x00022104 nop |
0x00022108 lw a3, 0x58(s0) | a3 = *((s0 + 22));
| }
0x0002210c lw v1, 0x50(s0) | v1 = *((s0 + 20));
0x00022110 addu a0, a3, a2 | a0 = a3 + a2;
0x00022114 sltu v1, v1, a0 | v1 = (v1 < a0) ? 1 : 0;
0x00022118 lw a1, 0x44(s0) | a1 = *((s0 + 17));
| if (v1 != 0) {
0x0002211c bnel v1, zero, 0x22130 |
0x00022120 sltu v0, a0, s5 | v0 = (a0 < s5) ? 1 : 0;
| if (v0 == 0) {
0x00022124 beql v0, zero, 0x22410 | goto label_10;
| }
0x00022128 lw v0, 0x54(s0) | v0 = *((s0 + 21));
0x0002212c lw a1, 0x44(s0) | a1 = *((s0 + 17));
| }
0x00022130 lw s1, 0x3c(s0) | s1 = *((s0 + 15));
0x00022134 sltu v0, s1, a1 | v0 = (s1 < a1) ? 1 : 0;
0x00022138 addu v0, a1, s5 | v0 = a1 + s5;
| if (v0 != 0) {
0x0002213c beqz v0, 0x22160 |
0x00022140 lw v1, 0x40(s0) | v1 = *((s0 + 16));
0x00022144 addu v1, s1, v1 | v1 = s1 + v1;
0x00022148 sltu v0, v1, v0 | v0 = (v1 < v0) ? 1 : 0;
| if (v0 == 0) {
0x0002214c beqz v0, 0x22160 | goto label_11;
| }
0x00022150 nop |
0x00022154 lw t9, -0x7d94(gp) | t9 = *((gp - 8037));
| if (a2 != 0) {
0x00022158 bnez a2, 0x222a8 | goto label_12;
| }
| label_1:
0x0002215c sw s1, 0x44(s0) | *((s0 + 17)) = s1;
| }
| label_11:
0x00022160 lw s6, 0x40(s0) | s6 = *((s0 + 16));
| if (a3 == 0) {
0x00022164 bnel a3, zero, 0x221c4 | goto label_13;
| }
0x00022168 lb v0, 0x5c(s0) | v0 = *((s0 + 92));
0x0002216c move a1, s3 | a1 = s3;
| if (v0 != 0) {
0x00022170 bnez v0, 0x22434 | goto label_14;
| }
0x00022174 lw t9, 0x18(s0) | t9 = *((s0 + 6));
0x00022178 move a0, s0 | a0 = s0;
0x0002217c jalr t9 | t9 ();
0x00022180 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 < 0) {
0x00022184 bltz v0, 0x22394 | goto label_15;
| }
0x00022188 lw v1, 0x4c(s0) | v1 = *((s0 + 19));
| if (v0 == 0) {
0x0002218c bnel v0, zero, 0x2223c | goto label_16;
| }
0x00022190 lw v1, 0x10(s0) | v1 = *((s0 + 4));
0x00022194 lw v0, 0x98(v1) | v0 = *((v1 + 38));
0x00022198 lw a1, 0x9c(v1) | a1 = *((v1 + 39));
0x0002219c addiu v0, v0, -1 | v0 += -1;
0x000221a0 addiu a1, a1, 1 | a1++;
| if (a1 == v0) {
0x000221a4 beq a1, v0, 0x22344 | goto label_17;
| }
0x000221a8 move t9, s2 | t9 = s2;
0x000221ac move a0, s0 | a0 = s0;
0x000221b0 bal 0x2042c | fcn_0002042c ();
0x000221b4 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != 0) {
0x000221b8 bnez v0, 0x22344 | goto label_17;
| }
0x000221bc lw a2, 0x48(s0) | a2 = *((s0 + 18));
0x000221c0 b 0x220f4 |
| } while (1);
| label_13:
0x000221c4 sltu v0, s6, s5 | v0 = (s6 < s5) ? 1 : 0;
| if (v0 != 0) {
0x000221c8 bnez v0, 0x22250 | goto label_18;
| }
0x000221cc nop |
0x000221d0 lw a0, 0x44(s0) | a0 = *((s0 + 17));
| do {
0x000221d4 lw a1, 0x48(s0) | a1 = *((s0 + 18));
0x000221d8 addu v0, s1, s6 | v0 = s1 + s6;
0x000221dc addu a0, a0, a1 | a0 += a1;
0x000221e0 subu v0, v0, a0 | __asm ("subu v0, v0, a0");
0x000221e4 addu v1, a1, v0 | v1 = a1 + v0;
0x000221e8 sltu v1, s5, v1 | v1 = (s5 < v1) ? 1 : 0;
0x000221ec subu v0, s5, a1 | __asm ("subu v0, s5, a1");
| if (v1 != 0) {
0x000221f0 bnel v1, zero, 0x221f4 |
| }
0x000221f4 sltu a2, a3, v0 | a2 = (a3 < v0) ? 1 : 0;
| if (a2 != 0) {
0x000221f8 movz a3, v0, a2 | a3 = v0;
| }
0x000221fc lw t9, -0x7b28(gp) | t9 = *((gp - 7882));
0x00022200 lw a1, 0x54(s0) | a1 = *((s0 + 21));
0x00022204 move a2, a3 | a2 = a3;
0x00022208 move s1, a3 | s1 = a3;
0x0002220c jalr t9 | t9 ();
0x00022210 lw v1, 0x54(s0) | v1 = *((s0 + 21));
0x00022214 lw v0, 0x58(s0) | v0 = *((s0 + 22));
0x00022218 lw a2, 0x48(s0) | a2 = *((s0 + 18));
0x0002221c addu v1, v1, s1 | v1 += s1;
0x00022220 subu v0, v0, s1 | __asm ("subu v0, v0, s1");
0x00022224 addu a2, s1, a2 | a2 = s1 + a2;
0x00022228 lw gp, 0x10(sp) | gp = *(var_10h);
0x0002222c sw v1, 0x54(s0) | *((s0 + 21)) = v1;
0x00022230 sw v0, 0x58(s0) | *((s0 + 22)) = v0;
0x00022234 sw a2, 0x48(s0) | *((s0 + 18)) = a2;
0x00022238 b 0x220f4 | goto label_0;
| label_16:
0x0002223c sw v0, 0x50(s0) | *((s0 + 20)) = v0;
0x00022240 sw v0, 0x58(s0) | *((s0 + 22)) = v0;
0x00022244 sw v1, 0x54(s0) | *((s0 + 21)) = v1;
0x00022248 lw a2, 0x48(s0) | a2 = *((s0 + 18));
0x0002224c b 0x220f4 | goto label_0;
| label_18:
0x00022250 sll v1, s6, 1 | v1 = s6 << 1;
| if (s6 != 0) {
0x00022254 bnez s6, 0x222c0 | goto label_19;
| }
0x00022258 move s6, s5 | s6 = s5;
| label_7:
0x0002225c lw t9, -0x7cc8(gp) | t9 = *((gp - 7986));
0x00022260 move a0, s6 | a0 = s6;
0x00022264 jalr t9 | t9 ();
0x00022268 move s1, v0 | s1 = v0;
0x0002226c lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 == 0) {
0x00022270 beqz v0, 0x222ec | goto label_20;
| }
0x00022274 lw a2, 0x48(s0) | a2 = *((s0 + 18));
0x00022278 lw t9, -0x7d94(gp) | t9 = *((gp - 8037));
| if (a2 != 0) {
0x0002227c bnez a2, 0x223ec | goto label_21;
| }
| label_4:
0x00022280 lw t9, -0x7a14(gp) | t9 = *((gp - 7813));
0x00022284 lw a0, 0x3c(s0) | a0 = *((s0 + 15));
0x00022288 jalr t9 | t9 ();
0x0002228c lw gp, 0x10(sp) | gp = *(var_10h);
0x00022290 lw a3, 0x58(s0) | a3 = *((s0 + 22));
0x00022294 sw s1, 0x3c(s0) | *((s0 + 15)) = s1;
0x00022298 sw s1, 0x44(s0) | *((s0 + 17)) = s1;
0x0002229c sw s6, 0x40(s0) | *((s0 + 16)) = s6;
0x000222a0 move a0, s1 | a0 = s1;
0x000222a4 b 0x221d4 |
| } while (1);
| label_12:
0x000222a8 move a0, s1 | a0 = s1;
0x000222ac jalr t9 | t9 ();
0x000222b0 lw gp, 0x10(sp) | gp = *(var_10h);
0x000222b4 lw s1, 0x3c(s0) | s1 = *((s0 + 15));
0x000222b8 lw a3, 0x58(s0) | a3 = *((s0 + 22));
0x000222bc b 0x2215c | goto label_1;
| label_19:
0x000222c0 sltu v0, s6, v1 | v0 = (s6 < v1) ? 1 : 0;
0x000222c4 sll v0, v1, 1 | v0 = v1 << 1;
| if (v0 != 0) {
0x000222c8 bnez v0, 0x222d8 | goto label_22;
| }
0x000222cc lw a2, -0x7fe8(gp) | a2 = *((gp - 8186));
0x000222d0 b 0x222f0 | goto label_23;
| do {
0x000222d4 sll v0, v1, 1 | v0 = v1 << 1;
| label_22:
0x000222d8 sltu a0, v1, s5 | a0 = (v1 < s5) ? 1 : 0;
0x000222dc sltu a1, v1, v0 | a1 = (v1 < v0) ? 1 : 0;
| if (a0 == 0) {
0x000222e0 beqz a0, 0x22444 | goto label_24;
| }
0x000222e4 move v1, v0 | v1 = v0;
0x000222e8 bnez a1, 0x222d4 |
| } while (a1 != 0);
| label_20:
0x000222ec lw a2, -0x7fe8(gp) | a2 = *((gp - 8186));
| label_23:
0x000222f0 lw t9, -0x77bc(gp) | t9 = *((gp - 7663));
0x000222f4 lw a0, 0x10(s0) | a0 = *((s0 + 4));
0x000222f8 addiu a2, a2, 0x2834 | a2 += 0x2834;
0x000222fc addiu a1, zero, 0xc | a1 = 0xc;
0x00022300 jalr t9 | t9 ();
0x00022304 addiu v0, zero, 1 | v0 = 1;
0x00022308 sb v0, 0x5e(s0) | *((s0 + 94)) = v0;
| if (s4 == 0) {
0x0002230c beqz s4, 0x223b0 | goto label_6;
| }
| do {
0x00022310 addiu v0, zero, -0x1e | v0 = -0x1e;
| label_2:
0x00022314 sw v0, (s4) | *(s4) = v0;
0x00022318 move v0, zero | v0 = 0;
| label_5:
0x0002231c lw ra, 0x34(sp) | ra = *(var_34h);
0x00022320 lw s6, 0x30(sp) | s6 = *(var_30h);
0x00022324 lw s5, 0x2c(sp) | s5 = *(var_2ch);
0x00022328 lw s4, 0x28(sp) | s4 = *(var_28h);
0x0002232c lw s3, 0x24(sp) | s3 = *(var_24h);
0x00022330 lw s2, 0x20(sp) | s2 = *(var_20h);
0x00022334 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x00022338 lw s0, 0x18(sp) | s0 = *(var_18h);
0x0002233c addiu sp, sp, 0x38 |
0x00022340 jr ra | return v0;
| label_17:
0x00022344 addiu v0, zero, 1 | v0 = 1;
0x00022348 sw zero, 0x58(s0) | *((s0 + 22)) = 0;
0x0002234c sw zero, 0x50(s0) | *((s0 + 20)) = 0;
0x00022350 sw zero, 0x4c(s0) | *((s0 + 19)) = 0;
0x00022354 sw zero, 0x54(s0) | *((s0 + 21)) = 0;
0x00022358 sb v0, 0x5c(s0) | *((s0 + 92)) = v0;
| if (s4 == 0) {
0x0002235c beqz s4, 0x223b0 | goto label_6;
| }
0x00022360 lw v1, 0x48(s0) | v1 = *((s0 + 18));
0x00022364 lw ra, 0x34(sp) | ra = *(var_34h);
0x00022368 sw v1, (s4) | *(s4) = v1;
0x0002236c lw s6, 0x30(sp) | s6 = *(var_30h);
0x00022370 lw s5, 0x2c(sp) | s5 = *(var_2ch);
0x00022374 lw s4, 0x28(sp) | s4 = *(var_28h);
0x00022378 lw s3, 0x24(sp) | s3 = *(var_24h);
0x0002237c lw s2, 0x20(sp) | s2 = *(var_20h);
0x00022380 lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x00022384 lw s0, 0x18(sp) | s0 = *(var_18h);
0x00022388 move v0, zero | v0 = 0;
0x0002238c addiu sp, sp, 0x38 |
0x00022390 jr ra | return v0;
| label_15:
0x00022394 addiu v0, zero, 1 | v0 = 1;
0x00022398 sw zero, 0x58(s0) | *((s0 + 22)) = 0;
0x0002239c sw zero, 0x50(s0) | *((s0 + 20)) = 0;
0x000223a0 sw zero, 0x4c(s0) | *((s0 + 19)) = 0;
0x000223a4 sw zero, 0x54(s0) | *((s0 + 21)) = 0;
0x000223a8 sb v0, 0x5e(s0) | *((s0 + 94)) = v0;
0x000223ac bnez s4, 0x22310 |
| } while (s4 != 0);
| label_6:
0x000223b0 move v0, zero | v0 = 0;
| label_3:
0x000223b4 lw ra, 0x34(sp) | ra = *(var_34h);
0x000223b8 lw s6, 0x30(sp) | s6 = *(var_30h);
0x000223bc lw s5, 0x2c(sp) | s5 = *(var_2ch);
0x000223c0 lw s4, 0x28(sp) | s4 = *(var_28h);
0x000223c4 lw s3, 0x24(sp) | s3 = *(var_24h);
0x000223c8 lw s2, 0x20(sp) | s2 = *(var_20h);
0x000223cc lw s1, 0x1c(sp) | s1 = *(var_1ch);
0x000223d0 lw s0, 0x18(sp) | s0 = *(var_18h);
0x000223d4 addiu sp, sp, 0x38 |
0x000223d8 jr ra | return v0;
| label_8:
0x000223dc addiu v0, zero, -0x1e | v0 = -0x1e;
| if (a2 == 0) {
0x000223e0 bnel a2, zero, 0x22314 | goto label_2;
| }
0x000223e4 move v0, zero | v0 = 0;
0x000223e8 b 0x223b4 | goto label_3;
| label_21:
0x000223ec lw a1, 0x44(s0) | a1 = *((s0 + 17));
0x000223f0 move a0, v0 | a0 = v0;
0x000223f4 jalr t9 | t9 ();
0x000223f8 lw gp, 0x10(sp) | gp = *(var_10h);
0x000223fc b 0x22280 | goto label_4;
| label_9:
0x00022400 sw a2, (s4) | *(s4) = a2;
| if (s4 != 0) {
0x00022404 bnel s4, zero, 0x22408 |
| }
0x00022408 lw v0, 0x44(s0) | v0 = *((s0 + 17));
0x0002240c b 0x2231c | goto label_5;
| label_10:
0x00022410 lw v1, 0x3c(s0) | v1 = *((s0 + 15));
0x00022414 subu v0, v0, a2 | __asm ("subu v0, v0, a2");
0x00022418 sw a0, 0x58(s0) | *((s0 + 22)) = a0;
0x0002241c sw v0, 0x54(s0) | *((s0 + 21)) = v0;
0x00022420 sw zero, 0x48(s0) | *((s0 + 18)) = 0;
0x00022424 sw v1, 0x44(s0) | *((s0 + 17)) = v1;
| if (s4 == 0) {
0x00022428 beqz s4, 0x2231c | goto label_5;
| }
0x0002242c sw a0, (s4) | *(s4) = a0;
0x00022430 b 0x2231c | goto label_5;
| label_14:
0x00022434 move v0, zero | v0 = 0;
| if (s4 == 0) {
0x00022438 beqz s4, 0x223b0 | goto label_6;
| }
0x0002243c sw zero, (s4) | *(s4) = 0;
0x00022440 b 0x2231c | goto label_5;
| label_24:
0x00022444 move s6, v1 | s6 = v1;
0x00022448 b 0x2225c | goto label_7;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libarchive.so.13.4.0 @ 0x22464 */
| #include <stdint.h>
|
; (fcn) sym.__archive_read_filter_consume () | void archive_read_filter_consume () {
0x00022464 lui gp, 0xb |
0x00022468 addiu gp, gp, -0x5434 |
0x0002246c addu gp, gp, t9 | gp += t9;
0x00022470 addiu sp, sp, -0x50 |
0x00022474 sw gp, 0x20(sp) | *(var_20h) = gp;
0x00022478 sw ra, 0x4c(sp) | *(var_4ch) = ra;
0x0002247c sw fp, 0x48(sp) | *(var_48h) = fp;
0x00022480 sw s7, 0x44(sp) | *(var_44h) = s7;
0x00022484 sw s6, 0x40(sp) | *(var_40h) = s6;
0x00022488 sw s5, 0x3c(sp) | *(var_3ch) = s5;
0x0002248c sw s4, 0x38(sp) | *(var_38h) = s4;
0x00022490 sw s3, 0x34(sp) | *(var_34h) = s3;
0x00022494 sw s2, 0x30(sp) | *(var_30h) = s2;
0x00022498 sw s1, 0x2c(sp) | *(var_2ch) = s1;
0x0002249c sw s0, 0x28(sp) | *(var_28h) = s0;
0x000224a0 or v0, a2, a3 | v0 = a2 | a3;
| if (a3 < 0) {
0x000224a4 bltz a3, 0x22840 | goto label_11;
| }
0x000224a8 move s3, a3 | s3 = a3;
0x000224ac move s5, a2 | s5 = a2;
| if (v0 != 0) {
0x000224b0 bnez v0, 0x224ec | goto label_12;
| }
| label_0:
0x000224b4 lw ra, 0x4c(sp) | ra = *(var_4ch);
| do {
| label_2:
0x000224b8 move v0, s5 | v0 = s5;
0x000224bc move v1, s3 | v1 = s3;
0x000224c0 lw fp, 0x48(sp) | fp = *(var_48h);
0x000224c4 lw s7, 0x44(sp) | s7 = *(var_44h);
0x000224c8 lw s6, 0x40(sp) | s6 = *(var_40h);
0x000224cc lw s5, 0x3c(sp) | s5 = *(var_3ch);
0x000224d0 lw s4, 0x38(sp) | s4 = *(var_38h);
0x000224d4 lw s3, 0x34(sp) | s3 = *(var_34h);
0x000224d8 lw s2, 0x30(sp) | s2 = *(var_30h);
0x000224dc lw s1, 0x2c(sp) | s1 = *(var_2ch);
0x000224e0 lw s0, 0x28(sp) | s0 = *(var_28h);
0x000224e4 addiu sp, sp, 0x50 |
0x000224e8 jr ra | return v0;
| label_12:
0x000224ec lb v0, 0x5e(a0) | v0 = *((a0 + 94));
0x000224f0 move s0, a0 | s0 = a0;
| if (v0 != 0) {
0x000224f4 bnez v0, 0x227c8 | goto label_13;
| }
0x000224f8 lw a1, 0x48(a0) | a1 = *((a0 + 18));
0x000224fc lw a0, 0x58(a0) | a0 = *((a0 + 22));
| if (a1 == 0) {
0x00022500 beqz a1, 0x225a8 | goto label_14;
| }
0x00022504 move s4, a1 | s4 = a1;
0x00022508 move fp, zero | fp = 0;
| if (a3 == 0) {
0x0002250c beqz a3, 0x22750 | goto label_15;
| }
0x00022510 move t0, zero | t0 = 0;
| label_4:
0x00022514 lw v0, (s0) | v0 = *(s0);
0x00022518 lw a2, 4(s0) | a2 = *((s0 + 1));
0x0002251c lw a3, 0x44(s0) | a3 = *((s0 + 17));
0x00022520 addu v0, s4, v0 | v0 = s4 + v0;
0x00022524 subu s1, s5, s4 | __asm ("subu s1, s5, s4");
0x00022528 sltu t1, v0, s4 | t1 = (v0 < s4) ? 1 : 0;
0x0002252c addu v1, fp, a2 | v1 = fp + a2;
0x00022530 addu a1, a3, a1 | a1 = a3 + a1;
0x00022534 subu s2, s3, fp | __asm ("subu s2, s3, fp");
0x00022538 sltu a3, s5, s1 | a3 = (s5 < s1) ? 1 : 0;
0x0002253c addu a2, t1, v1 | a2 = t1 + v1;
0x00022540 sw a1, 0x44(s0) | *((s0 + 17)) = a1;
0x00022544 sw t0, 0x48(s0) | *((s0 + 18)) = t0;
0x00022548 subu s2, s2, a3 | __asm ("subu s2, s2, a3");
0x0002254c sw v0, (s0) | *(s0) = v0;
0x00022550 sw a2, 4(s0) | *((s0 + 1)) = a2;
| if (a0 != 0) {
0x00022554 bnez a0, 0x226e8 | goto label_16;
| }
| label_3:
0x00022558 or v0, s1, s2 | v0 = s1 | s2;
0x0002255c lw t9, 0x1c(s0) | t9 = *((s0 + 7));
| if (v0 == 0) {
0x00022560 bnel v0, zero, 0x225c4 | goto label_17;
| }
| label_1:
0x00022564 lw a2, -0x7fe8(gp) | a2 = *((gp - 8186));
| if (s5 == s4) {
0x00022568 bnel s5, s4, 0x22578 | goto label_18;
| }
0x0002256c lw ra, 0x4c(sp) | ra = *(var_4ch);
0x00022570 beq s3, fp, 0x224b8 |
| } while (s3 == fp);
| label_7:
0x00022574 lw a2, -0x7fe8(gp) | a2 = *((gp - 8186));
| label_18:
0x00022578 lw a0, 0x10(s0) | a0 = *((s0 + 4));
0x0002257c lw t9, -0x77bc(gp) | t9 = *((gp - 7663));
0x00022580 sw s5, 0x10(sp) | *(var_10h) = s5;
0x00022584 sw s3, 0x14(sp) | *(var_14h) = s3;
0x00022588 sw s4, 0x18(sp) | *(var_18h) = s4;
0x0002258c sw fp, 0x1c(sp) | *(var_1ch) = fp;
0x00022590 addiu a2, a2, 0x2854 | a2 += 0x2854;
0x00022594 addiu a1, zero, -1 | a1 = -1;
0x00022598 jalr t9 | t9 ();
0x0002259c addiu s5, zero, -0x1e | s5 = -0x1e;
0x000225a0 addiu s3, zero, -1 | s3 = -1;
0x000225a4 b 0x224b4 | goto label_0;
| label_14:
0x000225a8 lw v0, (s0) | v0 = *(s0);
| if (a0 == 0) {
0x000225ac bnel a0, zero, 0x226d4 | goto label_19;
| }
0x000225b0 move s1, s5 | s1 = s5;
0x000225b4 move s2, s3 | s2 = s3;
0x000225b8 move s4, zero | s4 = 0;
0x000225bc move fp, zero | fp = 0;
0x000225c0 lw t9, 0x1c(s0) | t9 = *((s0 + 7));
| label_17:
0x000225c4 move a2, s1 | a2 = s1;
| if (t9 == 0) {
0x000225c8 beqz t9, 0x22630 | goto label_20;
| }
0x000225cc move a3, s2 | a3 = s2;
0x000225d0 move a0, s0 | a0 = s0;
0x000225d4 jalr t9 | t9 ();
0x000225d8 lw gp, 0x20(sp) | gp = *(var_20h);
| if (v1 < 0) {
0x000225dc bltz v1, 0x227b4 | goto label_21;
| }
0x000225e0 lw a0, (s0) | a0 = *(s0);
0x000225e4 subu a3, s1, v0 | __asm ("subu a3, s1, v0");
0x000225e8 lw a1, 4(s0) | a1 = *((s0 + 1));
0x000225ec addu a2, a0, v0 | a2 = a0 + v0;
0x000225f0 sltu t0, s1, a3 | t0 = (s1 < a3) ? 1 : 0;
0x000225f4 subu s2, s2, v1 | __asm ("subu s2, s2, v1");
0x000225f8 addu v0, s4, v0 | v0 = s4 + v0;
0x000225fc addu a1, a1, v1 | a1 += v1;
0x00022600 move s1, a3 | s1 = a3;
0x00022604 sltu a0, a2, a0 | a0 = (a2 < a0) ? 1 : 0;
0x00022608 subu s2, s2, t0 | __asm ("subu s2, s2, t0");
0x0002260c sltu a3, v0, s4 | a3 = (v0 < s4) ? 1 : 0;
0x00022610 addu fp, fp, v1 | fp += v1;
0x00022614 addu a0, a0, a1 | a0 += a1;
0x00022618 or v1, s1, s2 | v1 = s1 | s2;
0x0002261c sw a2, (s0) | *(s0) = a2;
0x00022620 sw a0, 4(s0) | *((s0 + 1)) = a0;
0x00022624 move s4, v0 | s4 = v0;
0x00022628 addu fp, a3, fp | fp = a3 + fp;
| if (v1 == 0) {
0x0002262c beqz v1, 0x22564 | goto label_1;
| }
| label_20:
0x00022630 lw s6, -0x7fcc(gp) | s6 = *((gp - 8179));
0x00022634 addiu s7, s0, 0x4c | s7 = s0 + 0x4c;
0x00022638 addiu s6, s6, 0x42c | s6 += 0x42c;
| do {
| label_6:
0x0002263c lw t9, 0x18(s0) | t9 = *((s0 + 6));
0x00022640 move a1, s7 | a1 = s7;
0x00022644 move a0, s0 | a0 = s0;
0x00022648 jalr t9 | t9 ();
0x0002264c sra v1, v0, 0x1f | v1 = v0 >> 0x1f;
0x00022650 addu a2, s4, v0 | a2 = s4 + v0;
0x00022654 subu a1, s1, v0 | __asm ("subu a1, s1, v0");
0x00022658 lw gp, 0x20(sp) | gp = *(var_20h);
0x0002265c move a0, s0 | a0 = s0;
0x00022660 slt a3, v1, s2 | a3 = (v1 < s2) ? 1 : 0;
0x00022664 sltu t3, a2, s4 | t3 = (a2 < s4) ? 1 : 0;
0x00022668 sltu t0, s1, a1 | t0 = (s1 < a1) ? 1 : 0;
0x0002266c addu t2, fp, v1 | t2 = fp + v1;
0x00022670 subu t1, s2, v1 | __asm ("subu t1, s2, v1");
| if (v0 < 0) {
0x00022674 bltz v0, 0x227d4 | goto label_22;
| }
0x00022678 lw t5, (s0) | t5 = *(s0);
| if (v0 == 0) {
0x0002267c bnel v0, zero, 0x22780 | goto label_23;
| }
0x00022680 lw v1, 0x10(s0) | v1 = *((s0 + 4));
0x00022684 lw v0, 0x98(v1) | v0 = *((v1 + 38));
0x00022688 lw v1, 0x9c(v1) | v1 = *((v1 + 39));
0x0002268c addiu v0, v0, -1 | v0 += -1;
0x00022690 addiu a1, v1, 1 | a1 = v1 + 1;
| if (v1 == v0) {
0x00022694 beq v1, v0, 0x226ac | goto label_24;
| }
0x00022698 move t9, s6 | t9 = s6;
0x0002269c bal 0x2042c | fcn_0002042c ();
0x000226a0 nop |
0x000226a4 lw gp, 0x20(sp) | gp = *(var_20h);
0x000226a8 beqz v0, 0x2263c |
| } while (v0 == 0);
| label_24:
0x000226ac addiu v0, zero, 1 | v0 = 1;
0x000226b0 sw zero, 0x4c(s0) | *((s0 + 19)) = 0;
0x000226b4 sb v0, 0x5c(s0) | *((s0 + 92)) = v0;
| label_10:
0x000226b8 move v0, s4 | v0 = s4;
| if (s5 != s4) {
0x000226bc bne s5, s4, 0x226cc | goto label_25;
| }
0x000226c0 lw ra, 0x4c(sp) | ra = *(var_4ch);
| if (s3 == fp) {
0x000226c4 beq s3, fp, 0x224b8 | goto label_2;
| }
0x000226c8 move v0, s4 | v0 = s4;
| label_25:
0x000226cc move v1, fp | v1 = fp;
0x000226d0 b 0x227bc | goto label_8;
| label_19:
0x000226d4 lw a2, 4(s0) | a2 = *((s0 + 1));
0x000226d8 move s1, s5 | s1 = s5;
0x000226dc move s2, a3 | s2 = a3;
0x000226e0 move s4, zero | s4 = 0;
0x000226e4 move fp, zero | fp = 0;
| label_16:
0x000226e8 move v1, a0 | v1 = a0;
| if (s2 < 0) {
0x000226ec bltz s2, 0x22770 | goto label_26;
| }
0x000226f0 move t3, zero | t3 = 0;
| if (s2 == 0) {
0x000226f4 bnez s2, 0x22708 |
0x000226f8 sltu a1, s1, a0 | a1 = (s1 < a0) ? 1 : 0;
0x000226fc subu t3, a0, s1 | __asm ("subu t3, a0, s1");
| if (a1 != 0) {
0x00022700 bnez a1, 0x22774 | goto label_27;
| }
0x00022704 move t3, zero | t3 = 0;
| }
| label_5:
0x00022708 lw a1, 0x54(s0) | a1 = *((s0 + 21));
0x0002270c addu v0, v1, v0 | v0 = v1 + v0;
0x00022710 subu t0, s1, v1 | __asm ("subu t0, s1, v1");
0x00022714 addu a3, s4, v1 | a3 = s4 + v1;
0x00022718 sltu v1, v0, v1 | v1 = (v0 < v1) ? 1 : 0;
0x0002271c sltu t2, s1, t0 | t2 = (s1 < t0) ? 1 : 0;
0x00022720 sltu t1, a3, s4 | t1 = (a3 < s4) ? 1 : 0;
0x00022724 addu a0, a1, a0 | a0 = a1 + a0;
0x00022728 addu v1, v1, a2 | v1 += a2;
0x0002272c sw a0, 0x54(s0) | *((s0 + 21)) = a0;
0x00022730 sw t3, 0x58(s0) | *((s0 + 22)) = t3;
0x00022734 move s1, t0 | s1 = t0;
0x00022738 subu s2, s2, t2 | __asm ("subu s2, s2, t2");
0x0002273c sw v0, (s0) | *(s0) = v0;
0x00022740 sw v1, 4(s0) | *((s0 + 1)) = v1;
0x00022744 move s4, a3 | s4 = a3;
0x00022748 addu fp, t1, fp | fp = t1 + fp;
0x0002274c b 0x22558 | goto label_3;
| label_15:
0x00022750 sltu v0, a2, a1 | v0 = (a2 < a1) ? 1 : 0;
| if (v0 == 0) {
0x00022754 beql v0, zero, 0x22514 | goto label_4;
| }
0x00022758 move t0, zero | t0 = 0;
0x0002275c subu t0, a1, a2 | __asm ("subu t0, a1, a2");
0x00022760 move s4, a2 | s4 = a2;
0x00022764 move fp, a3 | fp = a3;
0x00022768 move a1, a2 | a1 = a2;
0x0002276c b 0x22514 | goto label_4;
| label_26:
0x00022770 subu t3, a0, s1 | __asm ("subu t3, a0, s1");
| label_27:
0x00022774 move v1, s1 | v1 = s1;
0x00022778 move a0, s1 | a0 = s1;
0x0002277c b 0x22708 | goto label_5;
| label_23:
0x00022780 lw t6, 4(s0) | t6 = *((s0 + 1));
0x00022784 addu t4, v0, t5 | t4 = v0 + t5;
0x00022788 sltu a0, t4, v0 | a0 = (t4 < v0) ? 1 : 0;
0x0002278c addu t7, v1, t6 | t7 = v1 + t6;
0x00022790 addu a0, a0, t7 | a0 += t7;
| if (a3 == 0) {
0x00022794 beqz a3, 0x227e8 | goto label_28;
| }
0x00022798 sw t4, (s0) | *(s0) = t4;
| label_9:
0x0002279c sw a0, 4(s0) | *((s0 + 1)) = a0;
0x000227a0 move s4, a2 | s4 = a2;
0x000227a4 addu fp, t3, t2 | fp = t3 + t2;
0x000227a8 move s1, a1 | s1 = a1;
0x000227ac subu s2, t1, t0 | __asm ("subu s2, t1, t0");
0x000227b0 b 0x2263c | goto label_6;
| label_21:
0x000227b4 addiu a0, zero, 1 | a0 = 1;
0x000227b8 sb a0, 0x5e(s0) | *((s0 + 94)) = a0;
| label_8:
0x000227bc move fp, v1 | fp = v1;
0x000227c0 move s4, v0 | s4 = v0;
| if (v1 >= 0) {
0x000227c4 bgez v1, 0x22574 | goto label_7;
| }
| label_13:
0x000227c8 move s4, zero | s4 = 0;
0x000227cc move fp, zero | fp = 0;
0x000227d0 b 0x22574 | goto label_7;
| label_22:
0x000227d4 addiu v1, zero, 1 | v1 = 1;
0x000227d8 sb v1, 0x5e(s0) | *((s0 + 94)) = v1;
0x000227dc sw zero, 0x4c(s0) | *((s0 + 19)) = 0;
0x000227e0 sra v1, v0, 0x1f | v1 = v0 >> 0x1f;
0x000227e4 b 0x227bc | goto label_8;
| label_28:
0x000227e8 sltu a3, v0, s1 | a3 = (v0 < s1) ? 1 : 0;
| if (s2 != v1) {
0x000227ec bne s2, v1, 0x227f8 | goto label_29;
| }
0x000227f0 sw t4, (s0) | *(s0) = t4;
| if (a3 == 0) {
0x000227f4 bnel a3, zero, 0x2279c | goto label_9;
| }
| label_29:
0x000227f8 addu t5, s1, t5 | t5 = s1 + t5;
0x000227fc lw a0, 0x4c(s0) | a0 = *((s0 + 19));
0x00022800 addu a1, s4, s1 | a1 = s4 + s1;
0x00022804 sltu v1, t5, s1 | v1 = (t5 < s1) ? 1 : 0;
0x00022808 addu t6, s2, t6 | t6 = s2 + t6;
0x0002280c sltu a2, a1, s4 | a2 = (a1 < s4) ? 1 : 0;
0x00022810 addu a0, a0, s1 | a0 += s1;
0x00022814 addu fp, fp, s2 | fp += s2;
0x00022818 subu s1, v0, s1 | __asm ("subu s1, v0, s1");
0x0002281c addu t6, v1, t6 | t6 = v1 + t6;
0x00022820 sw a0, 0x54(s0) | *((s0 + 21)) = a0;
0x00022824 sw s1, 0x58(s0) | *((s0 + 22)) = s1;
0x00022828 sw v0, 0x50(s0) | *((s0 + 20)) = v0;
0x0002282c move s4, a1 | s4 = a1;
0x00022830 addu fp, a2, fp | fp = a2 + fp;
0x00022834 sw t5, (s0) | *(s0) = t5;
0x00022838 sw t6, 4(s0) | *((s0 + 1)) = t6;
0x0002283c b 0x226b8 | goto label_10;
| label_11:
0x00022840 addiu s5, zero, -0x1e | s5 = -0x1e;
0x00022844 addiu s3, zero, -1 | s3 = -1;
0x00022848 b 0x224b4 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libarchive.so.13.4.0 @ 0x6d2e0 */
| #include <stdint.h>
|
; (fcn) sym.__archive_write_filter () | void archive_write_filter () {
| if (a2 == 0) {
0x0006d2e0 beqz a2, 0x6d33c | goto label_0;
| }
0x0006d2e4 nop |
0x0006d2e8 addiu sp, sp, -0x28 |
0x0006d2ec lw t9, 0x18(a0) | t9 = *((a0 + 6));
0x0006d2f0 sw s1, 0x20(sp) | *(var_20h) = s1;
0x0006d2f4 sw ra, 0x24(sp) | *(var_24h) = ra;
0x0006d2f8 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x0006d2fc move s1, a0 | s1 = a0;
| if (t9 == 0) {
0x0006d300 beqz t9, 0x6d344 | goto label_1;
| }
0x0006d304 move s0, a2 | s0 = a2;
0x0006d308 jalr t9 | t9 ();
0x0006d30c lw a0, (s1) | a0 = *(s1);
0x0006d310 lw a1, 4(s1) | a1 = *((s1 + 1));
0x0006d314 addu v1, a0, s0 | v1 = a0 + s0;
0x0006d318 sltu a0, v1, a0 | a0 = (v1 < a0) ? 1 : 0;
0x0006d31c addu a0, a0, a1 | a0 += a1;
0x0006d320 sw v1, (s1) | *(s1) = v1;
0x0006d324 sw a0, 4(s1) | *((s1 + 1)) = a0;
| do {
0x0006d328 lw ra, 0x24(sp) | ra = *(var_24h);
0x0006d32c lw s1, 0x20(sp) | s1 = *(var_20h);
0x0006d330 lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x0006d334 addiu sp, sp, 0x28 |
0x0006d338 jr ra | return v0;
| label_0:
0x0006d33c move v0, zero | v0 = 0;
0x0006d340 jr ra | return v0;
| label_1:
0x0006d344 addiu v0, zero, -0x1e | v0 = -0x1e;
0x0006d348 b 0x6d328 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libarchive.so.13.4.0 @ 0x6d6a0 */
| #include <stdint.h>
|
; (fcn) sym.__archive_write_filters_free () | void archive_write_filters_free () {
0x0006d6a0 lui gp, 6 |
0x0006d6a4 addiu gp, gp, -0x670 |
0x0006d6a8 addu gp, gp, t9 | gp += t9;
0x0006d6ac addiu sp, sp, -0x28 |
0x0006d6b0 sw s1, 0x20(sp) | *(var_20h) = s1;
0x0006d6b4 move s1, a0 | s1 = a0;
0x0006d6b8 lw a0, 0xa0(a0) | a0 = *((a0 + 40));
0x0006d6bc sw gp, 0x10(sp) | *(var_10h) = gp;
0x0006d6c0 sw ra, 0x24(sp) | *(var_24h) = ra;
0x0006d6c4 sw s0, 0x1c(sp) | *(var_1ch) = s0;
0x0006d6c8 lw ra, 0x24(sp) | ra = *(var_24h);
| if (a0 == 0) {
0x0006d6cc beqz a0, 0x6d708 | goto label_0;
| }
| do {
0x0006d6d0 lw t9, 0x20(a0) | t9 = *((a0 + 8));
0x0006d6d4 lw s0, 0xc(a0) | s0 = *((a0 + 3));
| if (t9 != 0) {
0x0006d6d8 beqz t9, 0x6d6e8 |
0x0006d6dc jalr t9 | t9 ();
0x0006d6e0 nop |
0x0006d6e4 lw gp, 0x10(sp) | gp = *(var_10h);
| }
0x0006d6e8 lw t9, -0x7a14(gp) | t9 = *((gp - 7813));
0x0006d6ec lw a0, 0xa0(s1) | a0 = *((s1 + 40));
0x0006d6f0 jalr t9 | t9 ();
0x0006d6f4 lw gp, 0x10(sp) | gp = *(var_10h);
0x0006d6f8 move a0, s0 | a0 = s0;
0x0006d6fc sw s0, 0xa0(s1) | *((s1 + 40)) = s0;
0x0006d700 bnez s0, 0x6d6d0 |
| } while (s0 != 0);
0x0006d704 lw ra, 0x24(sp) | ra = *(var_24h);
| label_0:
0x0006d708 sw zero, 0xa4(s1) | *((s1 + 41)) = 0;
0x0006d70c lw s0, 0x1c(sp) | s0 = *(var_1ch);
0x0006d710 lw s1, 0x20(sp) | s1 = *(var_20h);
0x0006d714 addiu sp, sp, 0x28 |
0x0006d718 jr ra | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libarchive.so.13.4.0 @ 0x2183c */
| #include <stdint.h>
|
; (fcn) sym.archive_read_data_skip () | void archive_read_data_skip () {
0x0002183c lui gp, 0xb |
0x00021840 addiu gp, gp, -0x480c |
0x00021844 addu gp, gp, t9 | gp += t9;
0x00021848 addiu sp, sp, -0x48 |
0x0002184c lw a3, -0x7fe8(gp) | a3 = *((gp - 8186));
0x00021850 sw s4, 0x40(sp) | *(var_40h) = s4;
0x00021854 lw s4, -0x7bd8(gp) | s4 = *((gp - 7926));
0x00021858 lw t9, -0x7bf8(gp) | t9 = *((gp - 7934));
0x0002185c lui a1, 0xde | a1 = 0xde0000;
0x00021860 lw v0, (s4) | v0 = *(s4);
0x00021864 sw gp, 0x10(sp) | *(var_10h) = gp;
0x00021868 sw s0, 0x30(sp) | *(var_30h) = s0;
0x0002186c sw ra, 0x44(sp) | *(var_44h) = ra;
0x00021870 sw s3, 0x3c(sp) | *(var_3ch) = s3;
0x00021874 sw s2, 0x38(sp) | *(var_38h) = s2;
0x00021878 sw s1, 0x34(sp) | *(var_34h) = s1;
0x0002187c addiu a3, a3, 0x2704 | a3 += 0x2704;
0x00021880 addiu a2, zero, 4 | a2 = 4;
0x00021884 ori a1, a1, 0xb0c5 | a1 |= 0xb0c5;
0x00021888 sw v0, 0x2c(sp) | *(var_2ch) = v0;
0x0002188c move s0, a0 | s0 = a0;
0x00021890 jalr t9 | t9 ();
0x00021894 addiu v1, zero, -0x1e | v1 = -0x1e;
0x00021898 lw gp, 0x10(sp) | gp = *(var_10h);
| if (v0 != v1) {
0x0002189c beq v0, v1, 0x218d0 |
0x000218a0 lw v0, 0x508(s0) | v0 = *(s0);
0x000218a4 lw t9, 0x18(v0) | t9 = *((v0 + 6));
0x000218a8 addiu s3, sp, 0x20 | s3 = sp + 0x20;
| if (t9 == 0) {
0x000218ac beqz t9, 0x218fc | goto label_1;
| }
0x000218b0 move a0, s0 | a0 = s0;
0x000218b4 jalr t9 | t9 ();
0x000218b8 lw gp, 0x10(sp) | gp = *(var_10h);
0x000218bc addiu v1, zero, 1 | v1 = 1;
| if (v0 != v1) {
| label_0:
0x000218c0 beql v0, v1, 0x218c8 |
0x000218c4 move v0, zero | v0 = 0;
| }
0x000218c8 addiu v1, zero, 2 | v1 = 2;
0x000218cc sw v1, 4(s0) | *((s0 + 1)) = v1;
| }
0x000218d0 lw a0, 0x2c(sp) | a0 = *(var_2ch);
0x000218d4 lw v1, (s4) | v1 = *(s4);
0x000218d8 lw ra, 0x44(sp) | ra = *(var_44h);
| if (a0 != v1) {
0x000218dc bne a0, v1, 0x2192c | goto label_2;
| }
0x000218e0 lw s4, 0x40(sp) | s4 = *(var_40h);
0x000218e4 lw s3, 0x3c(sp) | s3 = *(var_3ch);
0x000218e8 lw s2, 0x38(sp) | s2 = *(var_38h);
0x000218ec lw s1, 0x34(sp) | s1 = *(var_34h);
0x000218f0 lw s0, 0x30(sp) | s0 = *(var_30h);
0x000218f4 addiu sp, sp, 0x48 |
0x000218f8 jr ra | return v1;
| label_1:
0x000218fc addiu s2, sp, 0x1c | s2 = sp + 0x1c;
0x00021900 addiu s1, sp, 0x18 | s1 = sp + 0x18;
| do {
0x00021904 lw t9, -0x7780(gp) | t9 = *((gp - 7648));
0x00021908 move a3, s3 | a3 = s3;
0x0002190c move a2, s2 | a2 = s2;
0x00021910 move a1, s1 | a1 = s1;
0x00021914 move a0, s0 | a0 = s0;
0x00021918 jalr t9 | t9 ();
0x0002191c lw gp, 0x10(sp) | gp = *(var_10h);
0x00021920 beqz v0, 0x21904 |
| } while (v0 == 0);
0x00021924 addiu v1, zero, 1 | v1 = 1;
0x00021928 b 0x218c0 | goto label_0;
| label_2:
0x0002192c lw t9, -0x7d08(gp) | t9 = *((gp - 8002));
0x00021930 jalr t9 | t9 ();
0x00021934 nop |
| }
[*] Function mmap used 1 times libarchive.so.13.4.0