[*] Binary protection state of libsoap.so
Full RELRO Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function mmap tear down of libsoap.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x58a4 */
| #include <stdint.h>
|
; (fcn) entry.fini0 () | void entry_fini0 () {
0x000058a4 lui gp, 4 |
0x000058a8 addiu gp, gp, 0x174c |
0x000058ac addu gp, gp, t9 | gp += t9;
0x000058b0 addiu sp, sp, -0x20 |
0x000058b4 sw s0, 0x18(sp) | *(var_18h) = s0;
0x000058b8 lw s0, -0x7fe4(gp) | s0 = *((gp - 8185));
0x000058bc sw gp, 0x10(sp) | *(var_10h) = gp;
0x000058c0 sw ra, 0x1c(sp) | *(var_1ch) = ra;
0x000058c4 lbu v0, -0xab0(s0) | v0 = *((s0 - 2736));
0x000058c8 lw v0, -0x7cf0(gp) | v0 = *((gp - 7996));
| if (v0 == 0) {
0x000058cc bnez v0, 0x5900 |
0x000058d0 lw v0, -0x7fe0(gp) | v0 = *((gp - 8184));
| if (v0 != 0) {
0x000058d4 beqz v0, 0x58e8 |
0x000058d8 lw t9, -0x7cf0(gp) | t9 = *((gp - 7996));
0x000058dc lw a0, (v0) | a0 = *(v0);
0x000058e0 jalr t9 | t9 ();
0x000058e4 lw gp, 0x10(sp) | gp = *(var_10h);
| }
0x000058e8 lw t9, -0x7fdc(gp) | t9 = *((gp - 8183));
0x000058ec addiu t9, t9, 0x5820 | t9 += entry0;
0x000058f0 bal 0x5820 | entry0 ();
0x000058f4 nop |
0x000058f8 addiu v0, zero, 1 | v0 = 1;
0x000058fc sb v0, -0xab0(s0) | *((s0 - 2736)) = v0;
| }
0x00005900 lw ra, 0x1c(sp) | ra = *(var_1ch);
0x00005904 lw s0, 0x18(sp) | s0 = *(var_18h);
0x00005908 addiu sp, sp, 0x20 |
0x0000590c jr ra | return v0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/lib/libsoap.so @ 0x217d0 */
| #include <stdint.h>
|
; (fcn) sym.soap_base642s () | void soap_base642s () {
0x000217d0 lui gp, 2 |
0x000217d4 addiu gp, gp, 0x5820 |
0x000217d8 addu gp, gp, t9 | gp += t9;
0x000217dc addiu sp, sp, -0x30 |
0x000217e0 sw gp, 0x10(sp) | *(var_10h_2) = gp;
0x000217e4 sw s2, 0x24(sp) | *(var_24h_2) = s2;
0x000217e8 sw s1, 0x20(sp) | *(var_20h_2) = s1;
0x000217ec sw ra, 0x2c(sp) | *(var_2ch_2) = ra;
0x000217f0 sw s3, 0x28(sp) | *(var_28h_2) = s3;
0x000217f4 sw s0, 0x1c(sp) | *(var_1ch_2) = s0;
0x000217f8 move s2, a0 | s2 = a0;
0x000217fc lw s1, 0x40(sp) | s1 = *(var_10h);
| if (a1 == 0) {
0x00021800 beqz a1, 0x218d8 | goto label_6;
| }
0x00021804 lb v0, (a1) | v0 = *(a1);
0x00021808 move s0, a1 | s0 = a1;
| if (v0 == 0) {
0x0002180c beqz v0, 0x218d8 | goto label_6;
| }
0x00021810 lw t9, -0x7d1c(gp) | t9 = *((gp - 8007));
| if (a2 == 0) {
0x00021814 beqz a2, 0x21918 | goto label_7;
| }
| label_1:
0x00021818 sw zero, (s1) | *(s1) = 0;
| if (s1 != 0) {
0x0002181c bnel s1, zero, 0x21820 |
| }
0x00021820 lw t4, -0x7fd8(gp) | t4 = *((gp - 8182));
0x00021824 move v0, a2 | v0 = a2;
0x00021828 addiu t5, zero, 0x3d | t5 = 0x3d;
0x0002182c addiu t4, t4, -0x1f28 | t4 += -0x1f28;
0x00021830 addiu t6, zero, 4 | t6 = 4;
| label_5:
0x00021834 addiu a0, a3, 3 | a0 = a3 + 3;
0x00021838 move t7, v0 | t7 = v0;
0x0002183c addiu t8, v0, 0x300 | t8 = v0 + aav.0x00000300;
0x00021840 move t9, zero | t9 = 0;
0x00021844 addu s3, a0, v0 | s3 = a0 + v0;
0x00021848 addu a3, a3, v0 | a3 += v0;
| label_4:
0x0002184c move t3, zero | t3 = 0;
0x00021850 move a1, zero | a1 = 0;
0x00021854 b 0x21870 |
| while (a0 == 0) {
0x00021858 slti v0, a1, 0x40 | v0 = (a1 < 0x40) ? 1 : 0;
0x0002185c addiu t3, t3, 1 | t3++;
| if (v0 == 0) {
0x00021860 beqz v0, 0x218a8 | goto label_8;
| }
0x00021864 addu a1, a1, t2 | a1 += t2;
| label_0:
0x00021868 srl v0, a1, 8 | v0 = a1 >> 8;
| if (t3 == t6) {
0x0002186c beq t3, t6, 0x219f0 | goto label_9;
| }
0x00021870 addiu s0, s0, 1 | s0++;
0x00021874 lb v1, -1(s0) | v1 = *((s0 - 1));
0x00021878 sll t2, a1, 6 | t2 = a1 << 6;
0x0002187c addiu a0, v1, -0x2b | a0 = v1 + -0x2b;
0x00021880 addu t1, a0, t4 | t1 = a0 + t4;
0x00021884 sltiu t0, v1, 0x21 | t0 = (v1 < 0x21) ? 1 : 0;
0x00021888 sltiu a0, a0, 0x50 | a0 = (a0 < 0x50) ? 1 : 0;
| if (v1 == t5) {
0x0002188c beq v1, t5, 0x21978 | goto label_10;
| }
| if (v1 == 0) {
0x00021890 beql v1, zero, 0x2197c | goto label_11;
| }
0x00021894 sll v1, t9, 1 | v1 = t9 << 1;
0x00021898 lb a1, (t1) | a1 = *(t1);
0x0002189c bnel a0, zero, 0x21858 |
| }
| if (t0 != 0) {
0x000218a0 bnez t0, 0x21868 | goto label_0;
| }
0x000218a4 nop |
| label_8:
0x000218a8 lui a0, 1 | a0 = 0x10000;
0x000218ac addu a0, s2, a0 | a0 = s2 + a0;
0x000218b0 lw ra, 0x2c(sp) | ra = *(var_2ch_2);
0x000218b4 addiu v0, zero, 4 | v0 = 4;
0x000218b8 sw v0, 0x6180(a0) | *((a0 + 6240)) = v0;
0x000218bc lw s3, 0x28(sp) | s3 = *(var_28h_2);
0x000218c0 lw s2, 0x24(sp) | s2 = *(var_24h_2);
0x000218c4 lw s1, 0x20(sp) | s1 = *(var_20h_2);
0x000218c8 lw s0, 0x1c(sp) | s0 = *(var_1ch_2);
0x000218cc move v0, zero | v0 = 0;
0x000218d0 addiu sp, sp, 0x30 |
0x000218d4 jr ra | return v1;
| label_6:
0x000218d8 sw zero, (s1) | *(s1) = 0;
| if (s1 != 0) {
0x000218dc bnel s1, zero, 0x218e0 |
| }
0x000218e0 lui a0, 1 | a0 = 0x10000;
0x000218e4 addu a0, s2, a0 | a0 = s2 + a0;
0x000218e8 lw v0, 0x6180(a0) | v0 = *((a0 + 6240));
0x000218ec lw ra, 0x2c(sp) | ra = *(var_2ch_2);
| if (v0 != 0) {
0x000218f0 bnez v0, 0x2195c | goto label_12;
| }
0x000218f4 lw a2, -0x7fd8(gp) | a2 = *((gp - 8182));
0x000218f8 addiu v0, a2, -0x1f38 | v0 = a2 + -0x1f38;
| label_3:
0x000218fc lw ra, 0x2c(sp) | ra = *(var_2ch_2);
0x00021900 lw s3, 0x28(sp) | s3 = *(var_28h_2);
0x00021904 lw s2, 0x24(sp) | s2 = *(var_24h_2);
0x00021908 lw s1, 0x20(sp) | s1 = *(var_20h_2);
0x0002190c lw s0, 0x1c(sp) | s0 = *(var_1ch_2);
0x00021910 addiu sp, sp, 0x30 |
0x00021914 jr ra | return v1;
| label_7:
0x00021918 move a0, a1 | a0 = a1;
0x0002191c jalr t9 | t9 ();
0x00021920 addiu v0, v0, 3 | v0 += 3;
0x00021924 lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00021928 srl v0, v0, 2 | v0 >>= 2;
0x0002192c sll a3, v0, 1 | a3 = v0 << 1;
0x00021930 addu a3, a3, v0 | a3 += v0;
0x00021934 lw t9, -0x7d28(gp) | t9 = *((gp - 8010));
0x00021938 move a1, a3 | a1 = a3;
0x0002193c sw a3, 0x3c(sp) | *(var_3ch_2) = a3;
0x00021940 move a0, s2 | a0 = s2;
0x00021944 jalr t9 | t9 ();
0x00021948 move a2, v0 | a2 = v0;
0x0002194c lw gp, 0x10(sp) | gp = *(var_10h_2);
0x00021950 lw a3, 0x3c(sp) | a3 = *(var_3ch_2);
| if (v0 != 0) {
0x00021954 bnez v0, 0x21818 | goto label_1;
| }
0x00021958 lw ra, 0x2c(sp) | ra = *(var_2ch_2);
| label_12:
0x0002195c lw s3, 0x28(sp) | s3 = *(var_28h_2);
0x00021960 lw s2, 0x24(sp) | s2 = *(var_24h_2);
0x00021964 lw s1, 0x20(sp) | s1 = *(var_20h_2);
0x00021968 lw s0, 0x1c(sp) | s0 = *(var_1ch_2);
0x0002196c move v0, zero | v0 = 0;
0x00021970 addiu sp, sp, 0x30 |
0x00021974 jr ra | return v1;
| label_10:
0x00021978 sll v1, t9, 1 | v1 = t9 << 1;
| label_11:
0x0002197c addiu v0, zero, 2 | v0 = 2;
0x00021980 addu v1, v1, t9 | v1 += t9;
| if (t3 == v0) {
0x00021984 beq t3, v0, 0x219d8 | goto label_13;
| }
0x00021988 addiu v0, zero, 3 | v0 = 3;
0x0002198c srl v0, a1, 0xa | v0 = a1 >> 0xa;
0x00021990 beq t3, v0, 0x219c4 |
| while (1) {
| label_2:
0x00021994 lw ra, 0x2c(sp) | ra = *(var_2ch_2);
| if (s1 == 0) {
0x00021998 beqz s1, 0x219e8 | goto label_14;
| }
0x0002199c lw a0, (s1) | a0 = *(s1);
0x000219a0 addu v1, a0, v1 | v1 = a0 + v1;
0x000219a4 sw v1, (s1) | *(s1) = v1;
0x000219a8 lw s3, 0x28(sp) | s3 = *(var_28h_2);
0x000219ac lw s2, 0x24(sp) | s2 = *(var_24h_2);
0x000219b0 lw s1, 0x20(sp) | s1 = *(var_20h_2);
0x000219b4 lw s0, 0x1c(sp) | s0 = *(var_1ch_2);
0x000219b8 move v0, a2 | v0 = a2;
0x000219bc addiu sp, sp, 0x30 |
0x000219c0 jr ra | return v1;
0x000219c4 srl a1, a1, 2 | a1 >>= 2;
0x000219c8 sb v0, (t7) | *(t7) = v0;
0x000219cc sb a1, 1(t7) | *((t7 + 1)) = a1;
0x000219d0 addiu v1, v1, 2 | v1 += 2;
0x000219d4 b 0x21994 |
| }
| label_13:
0x000219d8 srl a1, a1, 4 | a1 >>= 4;
0x000219dc sb a1, (t7) | *(t7) = a1;
0x000219e0 addiu v1, v1, 1 | v1++;
0x000219e4 b 0x21994 | goto label_2;
| label_14:
0x000219e8 move v0, a2 | v0 = a2;
0x000219ec b 0x218fc | goto label_3;
| label_9:
0x000219f0 srl v1, a1, 0x10 | v1 = a1 >> 0x10;
0x000219f4 sb v1, (t7) | *(t7) = v1;
0x000219f8 sb v0, 1(t7) | *((t7 + 1)) = v0;
0x000219fc addiu t7, t7, 3 | t7 += 3;
0x00021a00 subu v0, s3, t7 | __asm ("subu v0, s3, t7");
0x00021a04 sltiu v0, v0, 3 | v0 = (v0 < 3) ? 1 : 0;
0x00021a08 sb a1, -1(t7) | *((t7 - 1)) = a1;
| if (v0 != 0) {
0x00021a0c bnez v0, 0x21a38 | goto label_15;
| }
0x00021a10 subu v0, a3, t7 | __asm ("subu v0, a3, t7");
0x00021a14 addiu t9, t9, 1 | t9++;
| if (t8 != t7) {
0x00021a18 bne t8, t7, 0x2184c | goto label_4;
| }
0x00021a1c move a3, v0 | a3 = v0;
| if (s1 != 0) {
0x00021a20 beqz s1, 0x21a30 |
0x00021a24 lw v1, (s1) | v1 = *(s1);
0x00021a28 addiu v1, v1, 0x300 | v1 += aav.0x00000300;
0x00021a2c sw v1, (s1) | *(s1) = v1;
| }
0x00021a30 move v0, t7 | v0 = t7;
0x00021a34 b 0x21834 | goto label_5;
| label_15:
0x00021a38 move v0, a2 | v0 = a2;
| if (s1 == 0) {
0x00021a3c beqz s1, 0x218fc | goto label_3;
| }
0x00021a40 lw v1, (s1) | v1 = *(s1);
0x00021a44 addu v1, v1, t9 | v1 += t9;
0x00021a48 sw v1, (s1) | *(s1) = v1;
0x00021a4c b 0x218fc | goto label_3;
| }
[*] Function mmap used 1 times libsoap.so