[*] Binary protection state of libapr-1.so.0.7.0

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


[*] Function system tear down of libapr-1.so.0.7.0

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libapr-1.so.0.7.0 @ 0x90b4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) entry.fini0 ()               | void entry_fini0 () {
    0x000090b4 lui gp, 4                 |     
    0x000090b8 addiu gp, gp, 0x7fbc      |     
    0x000090bc addu gp, gp, t9           |     gp += t9;
    0x000090c0 addiu sp, sp, -0x20       |     
    0x000090c4 sw s0, 0x18(sp)           |     *(var_18h) = s0;
    0x000090c8 lw s0, -0x7fe4(gp)        |     s0 = *((gp - 8185));
    0x000090cc sw gp, 0x10(sp)           |     *(var_10h) = gp;
    0x000090d0 sw ra, 0x1c(sp)           |     *(var_1ch) = ra;
    0x000090d4 lbu v0, -0x6890(s0)       |     v0 = *((s0 - 26768));
    0x000090d8 lw v0, -0x7974(gp)        |     v0 = *((gp - 7773));
                                         |     if (v0 == 0) {
    0x000090dc bnez v0, 0x9110           |         
    0x000090e0 lw v0, -0x7fe0(gp)        |         v0 = *((gp - 8184));
                                         |         if (v0 != 0) {
    0x000090e4 beqz v0, 0x90f8           |             
    0x000090e8 lw t9, -0x7974(gp)        |             t9 = *((gp - 7773));
    0x000090ec lw a0, (v0)               |             a0 = *(v0);
    0x000090f0 jalr t9                   |             t9 ();
    0x000090f4 lw gp, 0x10(sp)           |             gp = *(var_10h);
                                         |         }
    0x000090f8 lw t9, -0x7fdc(gp)        |         t9 = *((gp - 8183));
    0x000090fc addiu t9, t9, -0x6fd0     |         t9 += -0x6fd0;
    0x00009100 bal 0x9030                |         entry0 ();
    0x00009104 nop                       |         
    0x00009108 addiu v0, zero, 1         |         v0 = 1;
    0x0000910c sb v0, -0x6890(s0)        |         *((s0 - 26768)) = v0;
                                         |     }
    0x00009110 lw ra, 0x1c(sp)           |     ra = *(var_1ch);
    0x00009114 lw s0, 0x18(sp)           |     s0 = *(var_18h);
    0x00009118 addiu sp, sp, 0x20        |     
    0x0000911c jr ra                     |     return v0;
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libapr-1.so.0.7.0 @ 0x184d0 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.apr_table_compress ()        | void apr_table_compress () {
    0x000184d0 lui gp, 4                     |     
    0x000184d4 addiu gp, gp, -0x7460         |     
    0x000184d8 addu gp, gp, t9               |     gp += t9;
    0x000184dc addiu v0, zero, 2             |     v0 = 2;
                                             |     if (a1 == v0) {
    0x000184e0 beq a1, v0, 0x18750           |         goto label_11;
                                             |     }
    0x000184e4 nop                           |     
    0x000184e8 lw v0, 8(a0)                  |     v0 = *((a0 + 2));
    0x000184ec slti v1, v0, 2                |     v1 = (v0 < 2) ? 1 : 0;
                                             |     if (v1 != 0) {
    0x000184f0 bnez v1, 0x18750              |         goto label_11;
                                             |     }
    0x000184f4 nop                           |     
    0x000184f8 addiu sp, sp, -0x60           |     
    0x000184fc lw t9, -0x7b74(gp)            |     t9 = *((gp - 7901));
    0x00018500 sw s3, 0x44(sp)               |     *(var_44h) = s3;
    0x00018504 move s3, a0                   |     s3 = a0;
    0x00018508 lw a0, (a0)                   |     a0 = *(a0);
    0x0001850c sw gp, 0x10(sp)               |     *(var_10h) = gp;
    0x00018510 sw fp, 0x58(sp)               |     *(var_58h) = fp;
    0x00018514 sw s7, 0x54(sp)               |     *(var_54h) = s7;
    0x00018518 sw s4, 0x48(sp)               |     *(var_48h) = s4;
    0x0001851c sw a1, 0x34(sp)               |     *(var_34h) = a1;
    0x00018520 sw ra, 0x5c(sp)               |     *(var_5ch) = ra;
    0x00018524 sw s6, 0x50(sp)               |     *(var_50h) = s6;
    0x00018528 sw s5, 0x4c(sp)               |     *(var_4ch) = s5;
    0x0001852c sw s2, 0x40(sp)               |     *(var_40h) = s2;
    0x00018530 sw s1, 0x3c(sp)               |     *(var_3ch) = s1;
    0x00018534 sw s0, 0x38(sp)               |     *(var_38h) = s0;
    0x00018538 sll a1, v0, 2                 |     a1 = v0 << 2;
    0x0001853c jalr t9                       |     t9 ();
    0x00018540 lw fp, 8(s3)                  |     fp = *((s3 + 2));
    0x00018544 lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x00018548 lw a0, 0x10(s3)               |     a0 = *((s3 + 4));
    0x0001854c move s7, v0                   |     s7 = v0;
    0x00018550 move s4, fp                   |     s4 = fp;
                                             |     do {
    0x00018554 addiu v0, v0, 4               |         v0 += 4;
    0x00018558 addiu s4, s4, -1              |         s4 += -1;
    0x0001855c sw a0, -4(v0)                 |         *((v0 - 1)) = a0;
    0x00018560 addiu a0, a0, 0xc             |         a0 += 0xc;
    0x00018564 bnez s4, 0x18554              |         
                                             |     } while (s4 != 0);
    0x00018568 lw t9, -0x7b74(gp)            |     t9 = *((gp - 7901));
    0x0001856c lw a0, (s3)                   |     a0 = *(s3);
    0x00018570 sll a1, fp, 2                 |     a1 = fp << 2;
    0x00018574 jalr t9                       |     t9 ();
    0x00018578 sltiu a0, fp, 2               |     a0 = (fp < 2) ? 1 : 0;
    0x0001857c lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x00018580 move s2, v0                   |     s2 = v0;
                                             |     if (a0 != 0) {
    0x00018584 bnez a0, 0x187c8              |         goto label_12;
                                             |     }
    0x00018588 addiu s5, fp, -2              |     s5 = fp + -2;
    0x0001858c srl s5, s5, 1                 |     s5 >>= 1;
    0x00018590 addiu s5, s5, 1               |     s5++;
    0x00018594 sll s5, s5, 3                 |     s5 <<= 3;
    0x00018598 move s0, s7                   |     s0 = s7;
    0x0001859c addu s5, s5, s7               |     s5 += s7;
    0x000185a0 lw s1, (s0)                   |     s1 = *(s0);
                                             |     do {
    0x000185a4 lw s6, 4(s0)                  |         s6 = *((s0 + 1));
    0x000185a8 lw t9, -0x7cdc(gp)            |         t9 = *((gp - 7991));
    0x000185ac lw a0, (s1)                   |         a0 = *(s1);
    0x000185b0 lw a1, (s6)                   |         a1 = *(s6);
    0x000185b4 jalr t9                       |         t9 ();
    0x000185b8 lw gp, 0x10(sp)               |         gp = *(var_10h);
                                             |         if (v0 > 0) {
    0x000185bc blez v0, 0x185c8              |             
    0x000185c0 sw s6, (s0)                   |             *(s0) = s6;
    0x000185c4 sw s1, 4(s0)                  |             *((s0 + 1)) = s1;
                                             |         }
    0x000185c8 addiu s0, s0, 8               |         s0 += 8;
    0x000185cc lw s1, (s0)                   |         s1 = *(s0);
    0x000185d0 bnel s5, s0, 0x185a4          |         
                                             |     } while (s5 == s0);
    0x000185d4 sltiu v0, fp, 3               |     v0 = (fp < 3) ? 1 : 0;
    0x000185d8 addiu a2, zero, 2             |     a2 = 2;
                                             |     if (v0 != 0) {
    0x000185dc bnez v0, 0x187c8              |         goto label_12;
                                             |     }
                                             | label_2:
    0x000185e0 sltu v0, a2, fp               |     v0 = (a2 < fp) ? 1 : 0;
    0x000185e4 sll a3, a2, 1                 |     a3 = a2 << 1;
    0x000185e8 move s0, zero                 |     s0 = 0;
                                             |     if (v0 == 0) {
    0x000185ec beqz v0, 0x1870c              |         goto label_13;
                                             |     }
    0x000185f0 move s0, s2                   |     s0 = s2;
    0x000185f4 move s6, a2                   |     s6 = a2;
    0x000185f8 move t0, zero                 |     t0 = 0;
                                             | label_1:
    0x000185fc addu t1, s6, a2               |     t1 = s6 + a2;
    0x00018600 sltu s5, t1, fp               |     s5 = (t1 < fp) ? 1 : 0;
    0x00018604 move v0, t1                   |     v0 = t1;
                                             |     if (s5 != 0) {
    0x00018608 movz v0, fp, s5               |         v0 = fp;
                                             |     }
    0x0001860c move s5, v0                   |     s5 = v0;
                                             |     if (t0 == s6) {
    0x00018610 beq t0, s6, 0x187c0           |         goto label_14;
                                             |     }
                                             | label_4:
    0x00018614 move t2, s6                   |     t2 = s6;
                                             |     if (v0 == s6) {
    0x00018618 beq v0, s6, 0x18758           |         goto label_15;
                                             |     }
    0x0001861c move s1, t0                   |     s1 = t0;
    0x00018620 b 0x1863c                     |     
                                             |     while (v0 > 0) {
    0x00018624 lw t3, 0x18(sp)               |         t3 = *(var_18h);
    0x00018628 addiu t2, t2, 1               |         t2++;
    0x0001862c sw t3, -4(s0)                 |         *((s0 - 1)) = t3;
                                             |         if (s1 == s6) {
    0x00018630 beq s1, s6, 0x186ac           |             goto label_5;
                                             |         }
                                             | label_0:
    0x00018634 sltu v0, s1, s6               |         v0 = (s1 < s6) ? 1 : 0;
                                             |         if (t2 == s5) {
    0x00018638 beq t2, s5, 0x18760           |             goto label_16;
                                             |         }
    0x0001863c sll t3, t2, 2                 |         t3 = t2 << 2;
    0x00018640 sll t4, s1, 2                 |         t4 = s1 << 2;
    0x00018644 lwx t3, t3(s7)                |         __asm ("lwx t3, t3(s7)");
    0x00018648 lwx t4, t4(s7)                |         __asm ("lwx t4, t4(s7)");
    0x0001864c lw t9, -0x7cdc(gp)            |         t9 = *((gp - 7991));
    0x00018650 lw a1, (t3)                   |         a1 = *(t3);
    0x00018654 lw a0, (t4)                   |         a0 = *(t4);
    0x00018658 sw a3, 0x30(sp)               |         *(var_30h) = a3;
    0x0001865c sw t1, 0x2c(sp)               |         *(var_2ch) = t1;
    0x00018660 sw a2, 0x28(sp)               |         *(var_28h) = a2;
    0x00018664 sw t0, 0x24(sp)               |         *(var_24h) = t0;
    0x00018668 sw t2, 0x20(sp)               |         *(var_20h) = t2;
    0x0001866c sw t4, 0x1c(sp)               |         *(var_1ch) = t4;
    0x00018670 sw t3, 0x18(sp)               |         *(var_18h) = t3;
    0x00018674 jalr t9                       |         t9 ();
    0x00018678 addiu s0, s0, 4               |         s0 += 4;
    0x0001867c lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x00018680 lw t4, 0x1c(sp)               |         t4 = *(var_1ch);
    0x00018684 lw t2, 0x20(sp)               |         t2 = *(var_20h);
    0x00018688 lw t0, 0x24(sp)               |         t0 = *(var_24h);
    0x0001868c lw a2, 0x28(sp)               |         a2 = *(var_28h);
    0x00018690 lw t1, 0x2c(sp)               |         t1 = *(var_2ch);
    0x00018694 lw a3, 0x30(sp)               |         a3 = *(var_30h);
    0x00018698 bgtz v0, 0x18624              |         
                                             |     }
    0x0001869c move t3, t4                   |     t3 = t4;
    0x000186a0 addiu s1, s1, 1               |     s1++;
    0x000186a4 sw t3, -4(s0)                 |     *((s0 - 1)) = t3;
                                             |     if (s1 != s6) {
    0x000186a8 bne s1, s6, 0x18634           |         goto label_0;
                                             |     }
                                             | label_5:
    0x000186ac sltu v0, t2, s5               |     v0 = (t2 < s5) ? 1 : 0;
    0x000186b0 sll v0, t2, 2                 |     v0 = t2 << 2;
                                             |     if (v0 == 0) {
    0x000186b4 beqz v0, 0x18798              |         goto label_17;
                                             |     }
    0x000186b8 sll a0, s5, 2                 |     a0 = s5 << 2;
    0x000186bc move a1, s0                   |     a1 = s0;
    0x000186c0 addu v0, s7, v0               |     v0 = s7 + v0;
    0x000186c4 addu a0, s7, a0               |     a0 = s7 + a0;
                                             |     do {
    0x000186c8 lw t3, (v0)                   |         t3 = *(v0);
    0x000186cc addiu v0, v0, 4               |         v0 += 4;
    0x000186d0 sw t3, (a1)                   |         *(a1) = t3;
    0x000186d4 addiu a1, a1, 4               |         a1 += 4;
    0x000186d8 bne a0, v0, 0x186c8           |         
                                             |     } while (a0 != v0);
    0x000186dc subu s5, s5, t2               |     __asm ("subu s5, s5, t2");
    0x000186e0 addu s6, t1, a2               |     s6 = t1 + a2;
    0x000186e4 sll s5, s5, 2                 |     s5 <<= 2;
    0x000186e8 sltu v0, s6, fp               |     v0 = (s6 < fp) ? 1 : 0;
    0x000186ec addu s0, s0, s5               |     s0 += s5;
    0x000186f0 addu t0, t0, a3               |     t0 += a3;
                                             |     if (v0 != 0) {
    0x000186f4 bnez v0, 0x185fc              |         goto label_1;
                                             |     }
                                             | label_3:
    0x000186f8 subu s0, s0, s2               |     __asm ("subu s0, s0, s2");
    0x000186fc sra s0, s0, 2                 |     s0 >>= 2;
    0x00018700 sltu v0, s0, fp               |     v0 = (s0 < fp) ? 1 : 0;
                                             |     if (v0 == 0) {
    0x00018704 beql v0, zero, 0x18738        |         goto label_18;
                                             |     }
    0x00018708 sltu v0, a3, fp               |     v0 = (a3 < fp) ? 1 : 0;
                                             | label_13:
    0x0001870c sll v0, s0, 2                 |     v0 = s0 << 2;
    0x00018710 addu a0, s7, v0               |     a0 = s7 + v0;
    0x00018714 addu v0, s2, v0               |     v0 = s2 + v0;
                                             |     do {
    0x00018718 lw a2, (a0)                   |         a2 = *(a0);
    0x0001871c addiu s0, s0, 1               |         s0++;
    0x00018720 sltu a1, s0, fp               |         a1 = (s0 < fp) ? 1 : 0;
    0x00018724 sw a2, (v0)                   |         *(v0) = a2;
    0x00018728 addiu a0, a0, 4               |         a0 += 4;
    0x0001872c addiu v0, v0, 4               |         v0 += 4;
    0x00018730 bnez a1, 0x18718              |         
                                             |     } while (a1 != 0);
    0x00018734 sltu v0, a3, fp               |     v0 = (a3 < fp) ? 1 : 0;
                                             | label_18:
    0x00018738 move a2, a3                   |     a2 = a3;
                                             |     if (v0 == 0) {
    0x0001873c beqz v0, 0x187cc              |         goto label_19;
                                             |     }
    0x00018740 move v0, s7                   |     v0 = s7;
    0x00018744 move s7, s2                   |     s7 = s2;
    0x00018748 move s2, v0                   |     s2 = v0;
    0x0001874c b 0x185e0                     |     goto label_2;
                                             | label_11:
    0x00018750 jr ra                         |     return v0;
    0x00018754 nop                           |     
                                             | label_15:
    0x00018758 move s1, t0                   |     s1 = t0;
    0x0001875c sltu v0, s1, s6               |     v0 = (s1 < s6) ? 1 : 0;
                                             | label_16:
    0x00018760 sll v0, s1, 2                 |     v0 = s1 << 2;
                                             |     if (v0 == 0) {
    0x00018764 beqz v0, 0x18798              |         goto label_17;
                                             |     }
    0x00018768 sll a0, s6, 2                 |     a0 = s6 << 2;
    0x0001876c move a1, s0                   |     a1 = s0;
    0x00018770 addu v0, s7, v0               |     v0 = s7 + v0;
    0x00018774 addu a0, s7, a0               |     a0 = s7 + a0;
                                             |     do {
    0x00018778 lw t2, (v0)                   |         t2 = *(v0);
    0x0001877c addiu v0, v0, 4               |         v0 += 4;
    0x00018780 sw t2, (a1)                   |         *(a1) = t2;
    0x00018784 addiu a1, a1, 4               |         a1 += 4;
    0x00018788 bne a0, v0, 0x18778           |         
                                             |     } while (a0 != v0);
    0x0001878c subu s1, s6, s1               |     __asm ("subu s1, s6, s1");
    0x00018790 sll s1, s1, 2                 |     s1 <<= 2;
    0x00018794 addu s0, s0, s1               |     s0 += s1;
                                             | label_17:
    0x00018798 addu s6, t1, a2               |     s6 = t1 + a2;
    0x0001879c sltu v0, s6, fp               |     v0 = (s6 < fp) ? 1 : 0;
    0x000187a0 addu t0, t0, a3               |     t0 += a3;
                                             |     if (v0 == 0) {
    0x000187a4 beqz v0, 0x186f8              |         goto label_3;
                                             |     }
    0x000187a8 addu t1, s6, a2               |     t1 = s6 + a2;
    0x000187ac sltu s5, t1, fp               |     s5 = (t1 < fp) ? 1 : 0;
    0x000187b0 move v0, t1                   |     v0 = t1;
                                             |     if (s5 != 0) {
    0x000187b4 movz v0, fp, s5               |         v0 = fp;
                                             |     }
    0x000187b8 move s5, v0                   |     s5 = v0;
                                             |     if (t0 != s6) {
    0x000187bc bne t0, s6, 0x18614           |         goto label_4;
                                             |     }
                                             | label_14:
    0x000187c0 move t2, t0                   |     t2 = t0;
    0x000187c4 b 0x186ac                     |     goto label_5;
                                             | label_12:
    0x000187c8 move s2, s7                   |     s2 = s7;
                                             | label_19:
    0x000187cc lw t0, 8(s3)                  |     t0 = *((s3 + 2));
    0x000187d0 addiu fp, s2, 4               |     fp = s2 + 4;
    0x000187d4 sll s0, t0, 2                 |     s0 = t0 << 2;
    0x000187d8 addu s0, s2, s0               |     s0 = s2 + s0;
    0x000187dc sltu v0, fp, s0               |     v0 = (fp < s0) ? 1 : 0;
    0x000187e0 sw zero, 0x20(sp)             |     *(var_20h) = 0;
                                             |     if (v0 == 0) {
    0x000187e4 beqz v0, 0x18ac4              |         goto label_20;
                                             |     }
    0x000187e8 lw s7, (fp)                   |     s7 = *(fp);
    0x000187ec lw s5, (s2)                   |     s5 = *(s2);
    0x000187f0 lw t3, 8(s7)                  |     t3 = *((s7 + 2));
    0x000187f4 lw s1, 8(s5)                  |     s1 = *((s5 + 2));
    0x000187f8 addiu s6, fp, 4               |     s6 = fp + 4;
                                             |     if (t3 == s1) {
    0x000187fc beq t3, s1, 0x18828           |         goto label_21;
                                             |     }
                                             |     do {
                                             | label_6:
    0x00018800 move s2, fp                   |         s2 = fp;
                                             | label_7:
    0x00018804 sltu v0, s6, s0               |         v0 = (s6 < s0) ? 1 : 0;
    0x00018808 move fp, s6                   |         fp = s6;
                                             |         if (v0 == 0) {
    0x0001880c beqz v0, 0x188b8              |             goto label_22;
                                             |         }
    0x00018810 lw s5, (s2)                   |         s5 = *(s2);
    0x00018814 lw s7, (fp)                   |         s7 = *(fp);
    0x00018818 lw s1, 8(s5)                  |         s1 = *((s5 + 2));
    0x0001881c lw t3, 8(s7)                  |         t3 = *((s7 + 2));
    0x00018820 addiu s6, fp, 4               |         s6 = fp + 4;
    0x00018824 bne t3, s1, 0x18800           |         
                                             |     } while (t3 != s1);
                                             | label_21:
    0x00018828 lw v0, (s5)                   |     v0 = *(s5);
    0x0001882c lw t9, -0x7cdc(gp)            |     t9 = *((gp - 7991));
    0x00018830 lw a0, (s7)                   |     a0 = *(s7);
    0x00018834 sw t3, 0x1c(sp)               |     *(var_1ch) = t3;
    0x00018838 sw v0, 0x18(sp)               |     *(var_18h) = v0;
    0x0001883c move a1, v0                   |     a1 = v0;
    0x00018840 jalr t9                       |     t9 ();
    0x00018844 lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x00018848 lw t3, 0x1c(sp)               |     t3 = *(var_1ch);
                                             |     if (v0 != 0) {
    0x0001884c bnez v0, 0x18800              |         goto label_6;
                                             |     }
    0x00018850 sltu v0, s6, s0               |     v0 = (s6 < s0) ? 1 : 0;
    0x00018854 move v1, fp                   |     v1 = fp;
                                             |     if (v0 == 0) {
    0x00018858 beqz v0, 0x18acc              |         goto label_23;
                                             |     }
    0x0001885c lw v0, 4(fp)                  |     v0 = *(arg_4h);
    0x00018860 lw a0, 8(v0)                  |     a0 = *((v0 + 2));
    0x00018864 lw t9, -0x7cdc(gp)            |     t9 = *((gp - 7991));
                                             |     if (t3 == a0) {
    0x00018868 beq t3, a0, 0x18890           |         goto label_24;
                                             |     }
    0x0001886c move a0, s6                   |     a0 = s6;
    0x00018870 b 0x189b0                     |     goto label_10;
                                             |     do {
    0x00018874 move v1, s6                   |         v1 = s6;
                                             |         if (a1 == 0) {
    0x00018878 beqz a1, 0x189b0              |             goto label_10;
                                             |         }
    0x0001887c lw v0, 4(s6)                  |         v0 = *((s6 + 1));
    0x00018880 lw a1, 8(v0)                  |         a1 = *((v0 + 2));
    0x00018884 lw t9, -0x7cdc(gp)            |         t9 = *((gp - 7991));
                                             |         if (s1 != a1) {
    0x00018888 bne s1, a1, 0x189b0           |             goto label_10;
                                             |         }
    0x0001888c move s6, a0                   |         s6 = a0;
                                             | label_24:
    0x00018890 lw a0, (v0)                   |         a0 = *(v0);
    0x00018894 lw a1, 0x18(sp)               |         a1 = *(var_18h);
    0x00018898 jalr t9                       |         t9 ();
    0x0001889c addiu a0, s6, 4               |         a0 = s6 + 4;
    0x000188a0 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x000188a4 sltu a1, a0, s0               |         a1 = (a0 < s0) ? 1 : 0;
    0x000188a8 beqz v0, 0x18874              |         
                                             |     } while (v0 == 0);
    0x000188ac addiu v1, s6, -4              |     v1 = s6 + -4;
    0x000188b0 move a0, s6                   |     a0 = s6;
    0x000188b4 b 0x189b0                     |     goto label_10;
                                             | label_22:
    0x000188b8 lw v0, 0x20(sp)               |     v0 = *(var_20h);
    0x000188bc lw t0, 8(s3)                  |     t0 = *((s3 + 2));
    0x000188c0 lw a1, 0x10(s3)               |     a1 = *((s3 + 4));
                                             |     if (v0 == 0) {
    0x000188c4 beqz v0, 0x18930              |         goto label_9;
                                             |     }
    0x000188c8 sll a3, t0, 1                 |     a3 = t0 << 1;
    0x000188cc addu a3, a3, t0               |     a3 += t0;
    0x000188d0 sll a3, a3, 2                 |     a3 <<= 2;
    0x000188d4 addu a3, a1, a3               |     a3 = a1 + a3;
    0x000188d8 move a0, a1                   |     a0 = a1;
    0x000188dc move v0, a1                   |     v0 = a1;
    0x000188e0 lw a2, (v0)                   |     a2 = *(v0);
                                             |     if (a2 != 0) {
                                             |         do {
    0x000188e4 beql a2, zero, 0x18908        |             
    0x000188e8 addiu v0, v0, 0xc             |             v0 += 0xc;
    0x000188ec lw t2, 4(v0)                  |             t2 = *((v0 + 1));
    0x000188f0 lw t1, 8(v0)                  |             t1 = *((v0 + 2));
    0x000188f4 addiu a0, a0, 0xc             |             a0 += 0xc;
    0x000188f8 sw a2, -0xc(a0)               |             *((a0 - 3)) = a2;
    0x000188fc sw t2, -8(a0)                 |             *((a0 - 2)) = t2;
    0x00018900 sw t1, -4(a0)                 |             *((a0 - 1)) = t1;
    0x00018904 addiu v0, v0, 0xc             |             v0 += 0xc;
                                             |         }
    0x00018908 sltu a2, v0, a3               |         a2 = (v0 < a3) ? 1 : 0;
    0x0001890c lw a2, (v0)                   |         a2 = *(v0);
    0x00018910 bnel a2, zero, 0x188e4        |         
                                             |     } while (a2 == 0);
    0x00018914 subu a0, a3, a0               |     __asm ("subu a0, a3, a0");
    0x00018918 lui v0, 0x5555                |     v0 = 0x55550000;
    0x0001891c sra a0, a0, 2                 |     a0 >>= 2;
    0x00018920 addiu v0, v0, 0x5555          |     v0 += 0x5555;
    0x00018924 mul v1, a0, v0                |     __asm ("mul v1, a0, v0");
    0x00018928 addu t0, v1, t0               |     t0 = v1 + t0;
    0x0001892c sw t0, 8(s3)                  |     *((s3 + 2)) = t0;
                                             | label_9:
    0x00018930 sw zero, 0x14(s3)             |     *((s3 + 5)) = 0;
                                             |     if (t0 <= 0) {
    0x00018934 blez t0, 0x18980              |         goto label_25;
                                             |     }
    0x00018938 move a2, zero                 |     a2 = 0;
    0x0001893c addiu t1, zero, 1             |     t1 = 1;
                                             |     do {
    0x00018940 lw v0, (a1)                   |         v0 = *(a1);
    0x00018944 addiu a1, a1, 0xc             |         a1 += 0xc;
    0x00018948 lbu v0, (v0)                  |         v0 = *(v0);
    0x0001894c andi v0, v0, 0x1f             |         v0 &= 0x1f;
    0x00018950 sll a0, v0, 2                 |         a0 = v0 << 2;
    0x00018954 addu a0, s3, a0               |         a0 = s3 + a0;
    0x00018958 sllv v0, t1, v0               |         v0 = t1 << v0;
    0x0001895c and a3, v0, a2                |         a3 = v0 & a2;
    0x00018960 sw s4, 0x98(a0)               |         *((a0 + 38)) = s4;
    0x00018964 or v0, v0, a2                 |         v0 |= a2;
                                             |         if (a3 == 0) {
    0x00018968 bnez a3, 0x18974              |             
    0x0001896c sw s4, 0x18(a0)               |             *((a0 + 6)) = s4;
    0x00018970 sw v0, 0x14(s3)               |             *((s3 + 5)) = v0;
                                             |         }
    0x00018974 addiu s4, s4, 1               |         s4++;
    0x00018978 lw a2, 0x14(s3)               |         a2 = *((s3 + 5));
    0x0001897c bnel s4, t0, 0x18940          |         
                                             |     } while (s4 == t0);
                                             | label_25:
    0x00018980 lw ra, 0x5c(sp)               |     ra = *(var_5ch);
    0x00018984 lw fp, 0x58(sp)               |     fp = *(var_58h);
    0x00018988 lw s7, 0x54(sp)               |     s7 = *(var_54h);
    0x0001898c lw s6, 0x50(sp)               |     s6 = *(var_50h);
    0x00018990 lw s5, 0x4c(sp)               |     s5 = *(var_4ch);
    0x00018994 lw s4, 0x48(sp)               |     s4 = *(var_48h);
    0x00018998 lw s3, 0x44(sp)               |     s3 = *(var_44h);
    0x0001899c lw s2, 0x40(sp)               |     s2 = *(var_40h);
    0x000189a0 lw s1, 0x3c(sp)               |     s1 = *(var_3ch);
    0x000189a4 lw s0, 0x38(sp)               |     s0 = *(var_38h);
    0x000189a8 addiu sp, sp, 0x60            |     
    0x000189ac jr ra                         |     return v0;
                                             | label_10:
    0x000189b0 lw v0, 0x34(sp)               |     v0 = *(var_34h);
    0x000189b4 addiu a1, zero, 1             |     a1 = 1;
    0x000189b8 move s1, s2                   |     s1 = s2;
                                             |     if (v0 == a1) {
    0x000189bc beq v0, a1, 0x189f4           |         goto label_26;
                                             |     }
    0x000189c0 lw v0, -4(a0)                 |     v0 = *((a0 - 1));
    0x000189c4 lw v0, 4(v0)                  |     v0 = *((v0 + 1));
    0x000189c8 sw v0, 4(s5)                  |     *((s5 + 1)) = v0;
                                             | label_8:
    0x000189cc move s6, fp                   |     s6 = fp;
    0x000189d0 b 0x189d8                     |     
                                             |     while (v0 == 0) {
    0x000189d4 lw s7, (s6)                   |         s7 = *(s6);
    0x000189d8 addiu s6, s6, 4               |         s6 += 4;
    0x000189dc sltu v0, v1, s6               |         v0 = (v1 < s6) ? 1 : 0;
    0x000189e0 sw zero, (s7)                 |         *(s7) = 0;
    0x000189e4 beqz v0, 0x189d4              |         
                                             |     }
    0x000189e8 addiu v0, zero, 1             |     v0 = 1;
    0x000189ec sw v0, 0x20(sp)               |     *(var_20h) = v0;
    0x000189f0 b 0x18804                     |     goto label_7;
                                             | label_26:
    0x000189f4 move s6, zero                 |     s6 = 0;
    0x000189f8 b 0x18a00                     |     
                                             |     while (a0 == 0) {
    0x000189fc lw s5, (s1)                   |         s5 = *(s1);
    0x00018a00 lw t9, -0x7c88(gp)            |         t9 = *((gp - 7970));
    0x00018a04 lw a0, 4(s5)                  |         a0 = *((s5 + 1));
    0x00018a08 sw v1, 0x18(sp)               |         *(var_18h) = v1;
    0x00018a0c jalr t9                       |         t9 ();
    0x00018a10 lw v1, 0x18(sp)               |         v1 = *(var_18h);
    0x00018a14 addiu s1, s1, 4               |         s1 += 4;
    0x00018a18 addiu v0, v0, 2               |         v0 += 2;
    0x00018a1c sltu a0, v1, s1               |         a0 = (v1 < s1) ? 1 : 0;
    0x00018a20 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x00018a24 addu s6, s6, v0               |         s6 += v0;
    0x00018a28 beqz a0, 0x189fc              |         
                                             |     }
    0x00018a2c lw t9, -0x7b74(gp)            |     t9 = *((gp - 7901));
    0x00018a30 lw a0, (s3)                   |     a0 = *(s3);
    0x00018a34 sw v1, 0x18(sp)               |     *(var_18h) = v1;
    0x00018a38 move a1, s6                   |     a1 = s6;
    0x00018a3c jalr t9                       |     t9 ();
    0x00018a40 move s1, v0                   |     s1 = v0;
    0x00018a44 lw gp, 0x10(sp)               |     gp = *(var_10h);
    0x00018a48 move s6, v0                   |     s6 = v0;
    0x00018a4c move s5, s2                   |     s5 = s2;
    0x00018a50 lw v1, 0x18(sp)               |     v1 = *(var_18h);
    0x00018a54 b 0x18a6c                     |     
                                             |     while (a0 == 0) {
    0x00018a58 addiu a0, zero, 0x2c          |         a0 = 0x2c;
    0x00018a5c sb a0, (v0)                   |         *(v0) = a0;
    0x00018a60 addiu a0, zero, 0x20          |         a0 = 0x20;
    0x00018a64 addiu s6, v0, 2               |         s6 = v0 + 2;
    0x00018a68 sb a0, 1(v0)                  |         *((v0 + 1)) = a0;
    0x00018a6c lw v0, (s5)                   |         v0 = *(s5);
    0x00018a70 lw t9, -0x7b98(gp)            |         t9 = *((gp - 7910));
    0x00018a74 addiu s5, s5, 4               |         s5 += 4;
    0x00018a78 lw a1, 4(v0)                  |         a1 = *((v0 + 1));
    0x00018a7c sw v1, 0x18(sp)               |         *(var_18h) = v1;
    0x00018a80 move a0, s6                   |         a0 = s6;
    0x00018a84 jalr t9                       |         t9 ();
    0x00018a88 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x00018a8c lw v0, -4(s5)                 |         v0 = *((s5 - 1));
    0x00018a90 lw t9, -0x7c88(gp)            |         t9 = *((gp - 7970));
    0x00018a94 lw a0, 4(v0)                  |         a0 = *((v0 + 1));
    0x00018a98 jalr t9                       |         t9 ();
    0x00018a9c lw v1, 0x18(sp)               |         v1 = *(var_18h);
    0x00018aa0 lw gp, 0x10(sp)               |         gp = *(var_10h);
    0x00018aa4 sltu a0, v1, s5               |         a0 = (v1 < s5) ? 1 : 0;
    0x00018aa8 addu v0, s6, v0               |         v0 = s6 + v0;
    0x00018aac beqz a0, 0x18a58              |         
                                             |     }
    0x00018ab0 sb zero, (v0)                 |     *(v0) = 0;
    0x00018ab4 lw v0, (s2)                   |     v0 = *(s2);
    0x00018ab8 lw s7, (fp)                   |     s7 = *(fp);
    0x00018abc sw s1, 4(v0)                  |     *((v0 + 1)) = s1;
    0x00018ac0 b 0x189cc                     |     goto label_8;
                                             | label_20:
    0x00018ac4 lw a1, 0x10(s3)               |     a1 = *((s3 + 4));
    0x00018ac8 b 0x18930                     |     goto label_9;
                                             | label_23:
    0x00018acc move a0, s6                   |     a0 = s6;
    0x00018ad0 b 0x189b0                     |     goto label_10;
                                             | }

[*] Function system used 1 times libapr-1.so.0.7.0