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