[*] Binary protection state of libgstisomp4.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function system tear down of libgstisomp4.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstisomp4.so @ 0x2fc54 */
| #include <stdint.h>
|
; (fcn) fcn.0002fc54 () | void fcn_0002fc54 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h_5;
| int16_t var_ch_4;
| int16_t var_10h_5;
| int16_t var_14h_3;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0002fc54 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x0002fc58 sub sp, 0x1c |
0x0002fc5a str r2, [sp, 4] | var_4h_5 = r2;
0x0002fc5c mov r4, r0 | r4 = r0;
0x0002fc5e movs r0, 0x20 | r0 = 0x20;
0x0002fc60 mov r6, r1 | r6 = r1;
0x0002fc62 ldr r2, [pc, 0x1cc] |
0x0002fc64 ldr r3, [pc, 0x1cc] | r3 = *(0x2fe34);
0x0002fc66 add r2, pc | r2 = 0x5fa9c;
0x0002fc68 ldr r3, [r2, r3] |
0x0002fc6a ldr r3, [r3] | r3 = *(0x5fa9c);
0x0002fc6c str r3, [sp, 0x14] | var_14h_3 = r3;
0x0002fc6e mov.w r3, 0 | r3 = 0;
0x0002fc72 blx 0x8adc | gst_buffer_new_allocate ();
0x0002fc76 cmp r4, 0 |
| if (r4 == 0) {
0x0002fc78 beq 0x2fd0a | goto label_4;
| }
0x0002fc7a strd r4, r6, [r0] | __asm ("strd r4, r6, [r0]");
0x0002fc7e mov r5, r0 | r5 = r0;
0x0002fc80 movs r2, 2 | r2 = 2;
0x0002fc82 movs r1, 0 | r1 = 0;
0x0002fc84 mov r0, r4 | r0 = r4;
0x0002fc86 blx 0x8150 | r0 = fcn_00008150 ();
0x0002fc8a mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x0002fc8c cbnz r0, 0x2fce4 | goto label_5;
| }
0x0002fc8e mov r0, r4 | r0 = r4;
0x0002fc90 blx 0x8404 | r0 = gst_pad_pause_task ();
0x0002fc94 asrs r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x0002fc96 str r0, [r5, 8] | *((r5 + 8)) = r0;
0x0002fc98 cmp.w r3, -1 |
0x0002fc9c it eq |
| if (r3 == -1) {
0x0002fc9e cmpeq r0, -1 | __asm ("cmpeq r0, -1");
| }
0x0002fca0 subs r7, 0xff | r7 -= 0xff;
0x0002fca2 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
| if (r7 == 0xff) {
0x0002fca4 beq 0x2fce4 | goto label_5;
| }
0x0002fca6 mov r2, r7 | r2 = r7;
0x0002fca8 mov r1, r7 | r1 = r7;
0x0002fcaa mov r0, r4 | r0 = r4;
0x0002fcac blx 0x8150 | r0 = fcn_00008150 ();
0x0002fcb0 cmp r0, 0 |
| if (r0 != 0) {
0x0002fcb2 bne 0x2fda2 | goto label_6;
| }
| if (r6 == 0) {
0x0002fcb4 cbz r6, 0x2fd1a | goto label_7;
| }
0x0002fcb6 vldr d16, [pc, 0x170] | __asm ("vldr d16, aav.0x000000ff");
0x0002fcba movs r2, 0x10 | r2 = 0x10;
0x0002fcbc movs r3, 0 | r3 = 0;
0x0002fcbe strd r2, r3, [r5, 0x18] | __asm ("strd r2, r3, [r5, 0x18]");
0x0002fcc2 vstr d16, [r5, 0x10] | __asm ("vstr d16, [r5, 0x10]");
| do {
| label_3:
0x0002fcc6 ldr r2, [pc, 0x170] |
0x0002fcc8 ldr r3, [pc, 0x168] | r3 = *(0x2fe34);
0x0002fcca add r2, pc | r2 = 0x5fb08;
0x0002fccc ldr r3, [r2, r3] | r3 = *(0x5fb08);
0x0002fcce ldr r2, [r3] | r2 = *(0x5fb08);
0x0002fcd0 ldr r3, [sp, 0x14] | r3 = var_14h_3;
0x0002fcd2 eors r2, r3 | r2 ^= r3;
0x0002fcd4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002fcd8 bne.w 0x2fe22 | goto label_8;
| }
0x0002fcdc mov r0, r5 | r0 = r5;
0x0002fcde add sp, 0x1c |
0x0002fce0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x0002fce4 ldr r0, [pc, 0x154] |
0x0002fce6 add r0, pc | r0 = 0x5fb26;
0x0002fce8 blx 0x85a8 | g_ptr_array_new_full ();
0x0002fcec ldr r3, [pc, 0x150] |
0x0002fcee mov r1, r0 | r1 = r0;
0x0002fcf0 movs r2, 2 | r2 = 2;
0x0002fcf2 ldr r0, [sp, 4] | r0 = var_4h_5;
0x0002fcf4 add r3, pc | r3 = 0x5fb38;
0x0002fcf6 blx 0x8488 | g_value_get_uint64 ();
| label_1:
0x0002fcfa ldr r0, [r5] | r0 = *(r5);
0x0002fcfc blx 0x7ba8 | fcn_00007ba8 ();
0x0002fd00 mov r0, r5 | r0 = r5;
0x0002fd02 blx 0x782c | fcn_0000782c ();
0x0002fd04 invalid |
| label_0:
0x0002fd06 movs r5, 0 | r5 = 0;
0x0002fd08 b 0x2fcc6 |
| } while (1);
| label_4:
0x0002fd0a ldr r2, [pc, 0x138] |
0x0002fd0c mov r0, r4 | r0 = r4;
0x0002fd0e ldr r1, [pc, 0x138] |
0x0002fd10 add r2, pc | r2 = 0x5fb5a;
0x0002fd12 add r1, pc | r1 = 0x5fb60;
0x0002fd14 blx 0x83f8 | gst_context_has_context_type ();
0x0002fd18 b 0x2fd06 | goto label_0;
| label_7:
0x0002fd1a movw fp, 0x646d |
0x0002fd1e movw sl, 0x7266 |
0x0002fd22 movw sb, 0x7466 |
0x0002fd26 movw r8, 0x6475 |
0x0002fd2a strd r6, r6, [sp, 0xc] | __asm ("strd r6, r6, [sp, 0xc]");
0x0002fd2e add r7, sp, 0x10 | r7 += var_10h_5;
0x0002fd30 movt fp, 0x7461 | fp = 0x7461646d;
0x0002fd34 movt sl, 0x6565 | sl = 0x65657266;
0x0002fd36 ldrh r5, [r4, r1] | r5 = *((r4 + r1));
0x0002fd38 movt sb, 0x7079 | sb = 0x70797466;
0x0002fd3c movt r8, 0x6174 | r8 = 0x61746475;
0x0002fd40 add r6, sp, 0xc | r6 += var_ch_4;
| label_2:
0x0002fd42 mov r2, r7 | r2 = r7;
0x0002fd44 mov r1, r6 | r1 = r6;
0x0002fd46 mov r0, r4 | r0 = r4;
0x0002fd48 bl 0x2f880 | r0 = fcn_0002f880 (r0, r1, r2);
| if (r0 == 0) {
0x0002fd4c cbz r0, 0x2fd8a | goto label_9;
| }
0x0002fd4e ldr r3, [sp, 0xc] | r3 = var_ch_4;
0x0002fd50 cmp r3, fp |
| if (r3 == fp) {
0x0002fd52 beq 0x2fdba | goto label_10;
| }
| if (r3 > fp) {
0x0002fd54 bhi 0x2fcfa | goto label_1;
| }
0x0002fd56 cmp r3, sl |
| if (r3 == sl) {
0x0002fd58 beq 0x2fd62 | goto label_11;
| }
0x0002fd5a cmp r3, sb |
| if (r3 == sb) {
0x0002fd5c beq 0x2fd62 | goto label_11;
| }
0x0002fd5e cmp r3, r8 |
| if (r3 != r8) {
0x0002fd60 bne 0x2fcfa | goto label_1;
| }
| label_11:
0x0002fd62 ldr r1, [sp, 0x10] | r1 = var_10h_5;
0x0002fd64 movs r2, 1 | r2 = 1;
0x0002fd66 mov r0, r4 | r0 = r4;
0x0002fd68 subs r1, 8 | r1 -= 8;
0x0002fd6a blx 0x8150 | r0 = fcn_00008150 ();
0x0002fd6e cmp r0, 0 |
| if (r0 == 0) {
0x0002fd70 beq 0x2fd42 | goto label_2;
| }
| do {
0x0002fd72 ldr r0, [pc, 0xd8] |
0x0002fd74 add r0, pc | r0 = 0x5fbc6;
0x0002fd76 blx 0x85a8 | g_ptr_array_new_full ();
0x0002fd7a ldr r3, [pc, 0xd4] |
0x0002fd7c mov r1, r0 | r1 = r0;
0x0002fd7e movs r2, 2 | r2 = 2;
0x0002fd80 ldr r0, [sp, 4] | r0 = var_4h_5;
0x0002fd82 add r3, pc | r3 = 0x5fbd8;
0x0002fd84 blx 0x8488 | g_value_get_uint64 ();
0x0002fd88 b 0x2fcfa | goto label_1;
| label_9:
0x0002fd8a ldr r0, [pc, 0xc8] |
0x0002fd8c add r0, pc | r0 = 0x5fbe6;
0x0002fd8e blx 0x85a8 | g_ptr_array_new_full ();
0x0002fd92 ldr r3, [pc, 0xc4] |
0x0002fd94 mov r1, r0 | r1 = r0;
0x0002fd96 movs r2, 2 | r2 = 2;
0x0002fd98 ldr r0, [sp, 4] | r0 = var_4h_5;
0x0002fd9a add r3, pc | r3 = 0x5fbf8;
0x0002fd9c blx 0x8488 | g_value_get_uint64 ();
0x0002fda0 b 0x2fcfa | goto label_1;
| label_6:
0x0002fda2 ldr r0, [pc, 0xb8] |
0x0002fda4 add r0, pc | r0 = 0x5fc06;
0x0002fda6 blx 0x85a8 | g_ptr_array_new_full ();
0x0002fdaa ldr r3, [pc, 0xb4] |
0x0002fdac mov r1, r0 | r1 = r0;
0x0002fdae movs r2, 2 | r2 = 2;
0x0002fdb0 ldr r0, [sp, 4] | r0 = var_4h_5;
0x0002fdb2 add r3, pc | r3 = 0x5fc18;
0x0002fdb4 blx 0x8488 | g_value_get_uint64 ();
0x0002fdb8 b 0x2fcfa | goto label_1;
| label_10:
0x0002fdba mov r0, r4 | r0 = r4;
0x0002fdbc movs r2, 1 | r2 = 1;
0x0002fdbe mvn r1, 7 | r1 = ~7;
0x0002fdc2 blx 0x8150 | r0 = fcn_00008150 ();
0x0002fdc6 cmp r0, 0 |
0x0002fdc8 bne 0x2fd72 |
| } while (r0 != 0);
0x0002fdca ldr r0, [r5] | r0 = *(r5);
0x0002fdcc mov r2, r7 | r2 = r7;
0x0002fdce mov r1, r6 | r1 = r6;
0x0002fdd0 bl 0x2f880 | r0 = fcn_0002f880 (r0, r1, r2);
| if (r0 == 0) {
0x0002fdd4 cbz r0, 0x2fe0a | goto label_12;
| }
0x0002fdd6 ldr r3, [sp, 0x10] | r3 = var_10h_5;
0x0002fdd8 cmp r3, 1 |
0x0002fdda ittee eq |
| if (r3 != 1) {
0x0002fddc moveq r0, 0x10 | r0 = 0x10;
| }
| if (r3 != 1) {
0x0002fdde moveq r3, 0x10 | r3 = 0x10;
| }
| if (r3 == 1) {
0x0002fde0 movne r0, 8 | r0 = 8;
| }
| if (r3 == 1) {
0x0002fde2 movne r3, 8 | r3 = 8;
| }
0x0002fde4 ite eq |
| if (r3 != 1) {
0x0002fde6 moveq r1, 0 | r1 = 0;
| }
| if (r3 == 1) {
0x0002fde8 movne r1, 0 | r1 = 0;
| }
0x0002fdea strd r0, r1, [r5, 0x18] | __asm ("strd r0, r1, [r5, 0x18]");
0x0002fdee str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x0002fdf0 ldr r0, [r5] | r0 = *(r5);
0x0002fdf2 blx 0x8404 | gst_pad_pause_task ();
0x0002fdf6 ldr r2, [sp, 0xc] | r2 = var_ch_4;
0x0002fdf8 movw r3, 0x646d |
0x0002fdfc movt r3, 0x7461 | r3 = 0x7461646d;
0x0002fe00 subs r0, 8 | r0 -= 8;
0x0002fe02 str r0, [r5, 0x14] | *((r5 + 0x14)) = r0;
0x0002fe04 cmp r2, r3 |
| if (r2 == r3) {
0x0002fe06 beq.w 0x2fcc6 | goto label_3;
| }
0x0002fe08 add r7, sp, 0x178 | r7 = sp + 0x178;
| label_12:
0x0002fe0a ldr r0, [pc, 0x58] |
0x0002fe0c add r0, pc | r0 = 0x5fc76;
0x0002fe0e blx 0x85a8 | g_ptr_array_new_full ();
0x0002fe12 ldr r3, [pc, 0x54] |
0x0002fe14 mov r1, r0 | r1 = r0;
0x0002fe16 movs r2, 3 | r2 = 3;
0x0002fe18 ldr r0, [sp, 4] | r0 = var_4h_5;
0x0002fe1a add r3, pc | r3 = 0x5fc88;
0x0002fe1c blx 0x8488 | g_value_get_uint64 ();
0x0002fe20 b 0x2fcfa | goto label_1;
| label_8:
0x0002fe22 blx 0x88d8 | gst_buffer_add_protection_meta ();
0x0002fe26 nop |
0x0002fe28 movs r0, r2 | r0 = r2;
0x0002fe2a movs r0, r0 |
0x0002fe2c movs r0, r0 |
0x0002fe2e movs r0, r0 |
0x0002fe30 ldm r3!, {r1, r2, r4} | r1 = *(r3!);
| r2 = *((r3! + 4));
| r4 = *((r3! + 8));
0x0002fe32 movs r0, r0 |
0x0002fe34 lsrs r0, r4, 1 | r0 = r4 >> 1;
0x0002fe36 movs r0, r0 |
0x0002fe38 ldm r2!, {r1, r4, r5, r7} | r1 = *(r2!);
| r4 = *((r2! + 4));
| r5 = *((r2! + 8));
| r7 = *((r2! + 12));
0x0002fe3a movs r0, r0 |
0x0002fe3c strh r2, [r7, 0x28] | *((r7 + 0x28)) = r2;
0x0002fe3e movs r0, r0 |
0x0002fe40 strh r0, [r4, 0x2c] | *((r4 + 0x2c)) = r0;
0x0002fe42 movs r0, r0 |
0x0002fe44 strh r0, [r0, 0x28] | *((r0 + 0x28)) = r0;
0x0002fe46 movs r0, r0 |
0x0002fe48 ldrh r2, [r0, 2] | r2 = *((r0 + 2));
0x0002fe4a movs r0, r0 |
0x0002fe4c strh r4, [r5, 0x24] | *((r5 + 0x24)) = r4;
0x0002fe4e movs r0, r0 |
0x0002fe50 strh r6, [r6, 0x24] | *((r6 + 0x24)) = r6;
0x0002fe52 movs r0, r0 |
0x0002fe54 strh r4, [r2, 0x24] | *((r2 + 0x24)) = r4;
0x0002fe56 movs r0, r0 |
0x0002fe58 strh r2, [r0, 0x26] | *((r0 + 0x26)) = r2;
0x0002fe5a movs r0, r0 |
0x0002fe5c strh r4, [r7, 0x22] | *((r7 + 0x22)) = r4;
0x0002fe5e movs r0, r0 |
0x0002fe60 strh r6, [r0, 0x24] | *((r0 + 0x24)) = r6;
0x0002fe62 movs r0, r0 |
0x0002fe64 strh r4, [r2, 0x20] | *((r2 + 0x20)) = r4;
0x0002fe66 movs r0, r0 |
0x0002fe68 strh r2, [r3, 0x22] | *((r3 + 0x22)) = r2;
0x0002fe6a movs r0, r0 |
| }
[*] Function system used 1 times libgstisomp4.so