[*] Binary protection state of libapr-1.so.0.7.0
Full RELRO Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function popen 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);
| do {
| if (a2 != 0) {
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 popen used 1 times libapr-1.so.0.7.0