[*] Binary protection state of libgstsdp-1.0.so.0.1803.0
Full RELRO No Canary found NX enabled DSO RPATH No RUNPATH No Symbols
[*] Function strcat tear down of libgstsdp-1.0.so.0.1803.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgstsdp-1.0.so.0.1803.0 @ 0x5b54 */
| #include <stdint.h>
|
; (fcn) sym.gst_sdp_media_init () | void gst_sdp_media_init (uint32_t arg1) {
| r0 = arg1;
0x00005b54 stmdahs r0, {r3, r4, r5, r6, r7, r8, sl, ip, sp, pc} | __asm ("stmdahs r0, {r3, r4, r5, r6, r7, r8, sl, ip, sp, pc}");
| if (? == ?) {
0x00005b58 beq 0x5c2e | goto label_3;
| }
0x00005b5a mov r4, r0 | r4 = r0;
0x00005b5c movs r5, 0 | r5 = 0;
0x00005b5e ldr r0, [r0] | r0 = *(r0);
0x00005b60 blx 0x3b68 | g_free ();
0x00005b62 invalid |
0x00005b66 strd r5, r5, [r4] | __asm ("strd r5, r5, [r4]");
0x00005b6a str r5, [r4, 8] | *((r4 + 8)) = r5;
0x00005b6c blx 0x3b68 | g_free ();
0x00005b70 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00005b72 str r5, [r4, 0xc] | *((r4 + 0xc)) = r5;
0x00005b74 cmp r0, 0 |
| if (r0 == 0) {
0x00005b76 beq 0x5c56 | goto label_4;
| }
0x00005b78 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00005b7a mov r7, r5 | r7 = r5;
| if (r3 == 0) {
0x00005b7c cbz r3, 0x5b96 | goto label_5;
| }
| do {
0x00005b7e ldr r6, [r0] | r6 = *(r0);
0x00005b80 ldr.w r0, [r6, r5, lsl 2] | offset_0 = r5 << 2;
| r0 = *((r6 + offset_0));
0x00005b84 blx 0x3b68 | g_free ();
0x00005b88 str.w r7, [r6, r5, lsl 2] | __asm ("str.w r7, [r6, r5, lsl 2]");
0x00005b8c adds r5, 1 | r5++;
0x00005b8e ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x00005b90 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00005b92 cmp r3, r5 |
0x00005b94 bhi 0x5b7e |
| } while (r3 > r5);
| label_5:
0x00005b96 movs r1, 0 | r1 = 0;
0x00005b98 blx 0x3ddc | fcn_00003ddc ();
| label_0:
0x00005b9c ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x00005b9e movs r5, 0 | r5 = 0;
0x00005ba0 blx 0x3b68 | g_free ();
0x00005ba4 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00005ba6 str r5, [r4, 0x14] | *((r4 + 0x14)) = r5;
0x00005ba8 cmp r0, 0 |
| if (r0 == 0) {
0x00005baa beq 0x5c62 | goto label_6;
| }
0x00005bac ldr r3, [r0, 4] | r3 = *((r0 + 4));
| if (r3 == 0) {
0x00005bae cbz r3, 0x5bc8 | goto label_7;
| }
| do {
0x00005bb0 ldr r3, [r0] | r3 = *(r0);
0x00005bb2 add.w r0, r5, r5, lsl 2 | r0 = r5 + (r5 << 2);
0x00005bb6 adds r5, 1 | r5++;
0x00005bb8 add.w r0, r3, r0, lsl 2 | r0 = r3 + (r0 << 2);
0x00005bba lsls r0, r0, 2 | r0 <<= 2;
0x00005bbc bl 0x5b0c | gst_sdp_connection_clear ();
0x00005bc0 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00005bc2 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00005bc4 cmp r3, r5 |
0x00005bc6 bhi 0x5bb0 |
| } while (r3 > r5);
| label_7:
0x00005bc8 movs r1, 0 | r1 = 0;
0x00005bca blx 0x3ddc | fcn_00003ddc ();
0x00005bce ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x00005bd0 cmp r0, 0 |
| if (r0 == 0) {
0x00005bd2 beq 0x5c72 | goto label_8;
| }
| label_1:
0x00005bd4 ldr r3, [r0, 4] | r3 = *((r0 + 4));
| if (r3 == 0) {
0x00005bd6 cbz r3, 0x5bee | goto label_9;
| }
0x00005bd8 movs r5, 0 | r5 = 0;
| do {
0x00005bda ldr r0, [r0] | r0 = *(r0);
0x00005bdc add.w r0, r0, r5, lsl 3 | r0 += (r5 << 3);
0x00005be0 adds r5, 1 | r5++;
0x00005be2 bl 0x4c64 | gst_sdp_bandwidth_clear ();
0x00005be6 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x00005be8 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00005bea cmp r3, r5 |
0x00005bec bhi 0x5bda |
| } while (r3 > r5);
| label_9:
0x00005bee movs r1, 0 | r1 = 0;
0x00005bf0 blx 0x3ddc | fcn_00003ddc ();
| label_2:
0x00005bf4 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00005bf6 movs r5, 0 | r5 = 0;
0x00005bf8 blx 0x3b68 | g_free ();
0x00005bfc ldr r0, [r4, 0x24] | r0 = *((r4 + 0x24));
0x00005bfe str r5, [r4, 0x20] | *((r4 + 0x20)) = r5;
0x00005c00 blx 0x3b68 | g_free ();
0x00005c04 ldr r6, [r4, 0x28] | r6 = *((r4 + 0x28));
0x00005c06 str r5, [r4, 0x24] | *((r4 + 0x24)) = r5;
| if (r6 == 0) {
0x00005c08 cbz r6, 0x5c44 | goto label_10;
| }
0x00005c0a ldr r3, [r6, 4] | r3 = *((r6 + 4));
| if (r3 == 0) {
0x00005c0c cbz r3, 0x5c22 | goto label_11;
| }
| do {
0x00005c0e ldr r0, [r6] | r0 = *(r6);
0x00005c10 add.w r0, r0, r5, lsl 3 | r0 += (r5 << 3);
0x00005c14 adds r5, 1 | r5++;
0x00005c16 bl 0x534c | gst_sdp_attribute_clear ();
0x00005c18 invalid |
0x00005c1c ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00005c1e cmp r3, r5 |
0x00005c20 bhi 0x5c0e |
| } while (r3 > r5);
| label_11:
0x00005c22 movs r1, 0 | r1 = 0;
0x00005c24 mov r0, r6 | r0 = r6;
0x00005c26 blx 0x3ddc | fcn_00003ddc ();
0x00005c2a movs r0, 0 | r0 = 0;
0x00005c2c pop {r3, r4, r5, r6, r7, pc} |
| label_3:
0x00005c2e ldr r1, [pc, 0x50] |
0x00005c30 ldr r2, [pc, 0x50] |
0x00005c32 add r1, pc | r1 = 0xb8b8;
0x00005c34 add r2, pc | r2 = " nettype: '%s'\n";
0x00005c36 addw r1, r1, 0x92c | __asm ("addw r1, r1, aav.0x000000ff");
0x00005c3a blx 0x3db8 | fcn_00003db8 ();
0x00005c3e mov.w r0, -1 | r0 = -1;
0x00005c42 pop {r3, r4, r5, r6, r7, pc} |
| label_10:
0x00005c44 movs r2, 8 | r2 = 8;
0x00005c46 movs r1, 1 | r1 = 1;
0x00005c48 mov r0, r6 | r0 = r6;
0x00005c4a blx 0x3c7c | r0 = g_array_new ();
0x00005c4e mov r3, r0 | r3 = r0;
0x00005c50 mov r0, r6 | r0 = r6;
0x00005c52 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00005c54 pop {r3, r4, r5, r6, r7, pc} |
| label_4:
0x00005c56 movs r2, 4 | r2 = 4;
0x00005c58 movs r1, 1 | r1 = 1;
0x00005c5a blx 0x3c7c | g_array_new ();
0x00005c5e str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x00005c60 b 0x5b9c | goto label_0;
| label_6:
0x00005c62 movs r2, 0x14 | r2 = 0x14;
0x00005c64 movs r1, 1 | r1 = 1;
0x00005c66 blx 0x3c7c | g_array_new ();
0x00005c6a str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x00005c6c ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x00005c6e cmp r0, 0 |
| if (r0 != 0) {
0x00005c70 bne 0x5bd4 | goto label_1;
| }
| label_8:
0x00005c72 movs r2, 8 | r2 = 8;
0x00005c74 movs r1, 1 | r1 = 1;
0x00005c76 blx 0x3c7c | g_array_new ();
0x00005c7a str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x00005c7c b 0x5bf4 | goto label_2;
| }
[*] Function strcat used 1 times libgstsdp-1.0.so.0.1803.0