[*] Binary protection state of libgstreamer-1.0.so.0.2202.0
Full RELRO No Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function system tear down of libgstreamer-1.0.so.0.2202.0
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x3541c */
| #include <stdint.h>
|
; (fcn) fcn.0003541c () | void fcn_0003541c () {
0x0003541c invalid |
0x00035420 ldr r4, [pc, 0x2c] |
0x00035422 mov r5, r1 | r5 = r1;
0x00035424 ldr r3, [pc, 0x2c] | r3 = *(0x35454);
0x00035426 add r4, pc |
0x00035428 ldr r6, [r4, r3] | r6 = *(0x6a87a);
0x0003542a ldr r0, [r6] | r0 = *(0x6a87a);
0x0003542c bl 0x353a4 | gst_caps_features_set_parent_refcount ();
0x00035430 ldr r0, [r6] | r0 = *(0x6a87a);
0x00035432 bl 0x352a8 | gst_caps_features_free ();
0x00035436 ldr r3, [pc, 0x20] | r3 = *(0x3545a);
0x00035438 mov r1, r5 | r1 = r5;
0x0003543a str r5, [r6] | *(r6) = r5;
0x0003543c ldr r4, [r4, r3] | r4 = *(0x6a87a);
0x0003543e ldr r0, [r4] | r0 = *(0x6a87a);
0x00035440 bl 0x353a4 | gst_caps_features_set_parent_refcount ();
0x00035442 vtbl.8 d6, {d0}, d16 | __asm ("vtbl.8 d6, {d0}, d16");
0x00035446 bl 0x352a8 | gst_caps_features_free ();
0x0003544a str r5, [r4] | *(r4) = r5;
0x0003544c pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x33c78 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_can_intersect () | void gst_caps_can_intersect (int16_t arg_24h, uint32_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00033c78 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00033c7c sub sp, 0x1c |
0x00033c7e ldr.w sb, [pc, 0x174] |
0x00033c82 add sb, pc | sb = 0x67a7c;
| if (r0 != 0) {
0x00033c84 cbz r0, 0x33c98 |
0x00033c86 ldr r3, [pc, 0x170] |
0x00033c88 mov sl, r1 | sl = r1;
0x00033c8a ldr r1, [r0] | r1 = *(r0);
0x00033c8c mov fp, r0 |
0x00033c8e ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00033c90 adds r0, 3 | r0 += 3;
0x00033c92 ldr r3, [r3] | r3 = *(0x33dfa);
0x00033c94 cmp r1, r3 |
| if (r1 == r3) {
0x00033c96 beq 0x33cb4 | goto label_5;
| }
| }
0x00033c98 ldr r1, [pc, 0x160] |
0x00033c9a ldr r2, [pc, 0x164] |
0x00033c9c ldr r0, [pc, 0x164] |
0x00033c9e add r1, pc |
0x00033ca0 add r2, pc | r2 = 0x67aa6;
0x00033ca2 add.w r1, r1, 0x2a0 | r1 = 0x67d3e;
0x00033ca4 strb r0, [r5, 4] | *((r5 + 4)) = r0;
0x00033ca6 add r0, pc | r0 = 0x67aae;
0x00033ca8 blx 0x20b70 | fcn_00020b70 ();
| do {
| label_0:
0x00033cac movs r0, 0 | r0 = 0;
0x00033cae add sp, 0x1c |
0x00033cb0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00033cb2 ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_5:
0x00033cb4 cmp.w sl, 0 |
| if (sl != 0) {
0x00033cb8 beq 0x33cc2 |
0x00033cba ldr.w r3, [sl] | r3 = *(sl);
0x00033cbe cmp r1, r3 |
| if (r1 == r3) {
0x00033cc0 beq 0x33cd8 | goto label_6;
| }
| }
0x00033cc2 ldr r1, [pc, 0x144] |
0x00033cc4 ldr r2, [pc, 0x144] |
0x00033cc6 ldr r0, [pc, 0x148] |
0x00033cc8 add r1, pc |
0x00033cca add r2, pc | r2 = 0x67ada;
0x00033ccc add.w r1, r1, 0x2a0 | r1 = 0x67d76;
0x00033cd0 add r0, pc | r0 = 0x67ae6;
0x00033cd2 blx 0x20b70 | fcn_00020b70 ();
0x00033cd6 b 0x33cac |
| } while (1);
| label_6:
0x00033cd8 cmp r0, sl |
| if (r0 == sl) {
0x00033cda beq 0x33d0c | goto label_7;
| }
0x00033cdc ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00033cde ands r1, r3, 0x10 | r1 = r3 & 0x10;
| if (r1 != r3) {
0x00033ce2 bne 0x33cf0 | goto label_8;
| }
0x00033ce4 ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
0x00033ce6 cmp r3, 0 |
| if (r3 == 0) {
0x00033ce8 beq 0x33cac | goto label_0;
| }
0x00033cea ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00033cec cmp r3, 0 |
| if (r3 == 0) {
0x00033cee beq 0x33cac | goto label_0;
| }
| label_8:
0x00033cf0 ldr.w r3, [sl, 0xc] | r3 = *((sl + 0xc));
0x00033cf4 lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 < r3) {
0x00033cf6 bmi 0x33d0c | goto label_7;
| }
0x00033cf8 ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x00033cfc cmp r3, 0 |
| if (r3 == 0) {
0x00033cfe beq 0x33cac | goto label_0;
| }
0x00033d00 ldr.w r8, [r3, 4] | r8 = *((r3 + 4));
0x00033d04 cmp.w r8, 0 |
| if (r8 == 0) {
0x00033d08 beq 0x33cac | goto label_0;
| }
| if (r1 != 0) {
0x00033d0a cbz r1, 0x33d14 |
| label_7:
0x00033d0c movs r0, 1 | r0 = 1;
| label_3:
0x00033d0e add sp, 0x1c |
0x00033d10 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00033d14 ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00033d18 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00033d1a add.w r3, r8, r0 | r3 = r8 + r0;
0x00033d1c lsls r0, r0, 0xc | r0 <<= 0xc;
0x00033d1e cmp r3, 1 |
0x00033d20 add.w r2, r3, -1 | r2 = r3 + -1;
| if (r3 == 1) {
0x00033d24 beq 0x33cac | goto label_0;
| }
0x00033d26 strd r2, r8, [sp, 8] | __asm ("strd r2, r8, [var_ch]");
0x00033d2a mov r8, r1 | r8 = r1;
0x00033d2c subs r3, r0, 1 | r3 = r0 - 1;
0x00033d2e str r1, [sp, 0x14] | var_14h = r1;
0x00033d30 str r3, [sp, 0x10] | var_10h = r3;
| label_1:
0x00033d32 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00033d34 mov r7, r8 | r7 = r8;
0x00033d36 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00033d38 mov r3, r1 | r3 = r1;
0x00033d3a cmp r0, r8 |
0x00033d3c sbcs r2, r1 | __asm ("sbcs r2, r1");
0x00033d3e itt lo |
| if (r0 >= r8) {
0x00033d40 movlo r7, r0 | r7 = r0;
| }
| if (r0 >= r8) {
0x00033d42 movlo r3, 0 | r3 = 0;
| }
0x00033d44 cmp r7, r8 |
0x00033d46 mov r4, r7 | r4 = r7;
0x00033d48 sbcs r3, r1 | __asm ("sbcs r3, r1");
| if (r7 >= r8) {
0x00033d4a bhs 0x33df0 | goto label_9;
| }
0x00033d4c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00033d4e sub.w r5, r8, r7 | r5 = r8 - r7;
0x00033d52 cmp r3, r5 |
| if (r3 < r5) {
0x00033d54 bls 0x33dcc | goto label_10;
| }
| label_4:
0x00033d56 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00033d58 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00033d5c mov r8, r4 | r8 = r4;
0x00033d5e str r1, [sp, 4] | var_4h = r1;
0x00033d60 subs r7, r7, r3 | r7 -= r3;
0x00033d62 add r7, r5 | r7 += r5;
0x00033d64 lsls r5, r5, 3 | r5 <<= 3;
| do {
0x00033d66 ldr.w r1, [fp, 0x24] | r1 = *(arg_24h);
0x00033d6a ldr r4, [pc, 0xa8] | r4 = *(0x33e16);
0x00033d6c ldr r1, [r1] | r1 = *(r1);
0x00033d6e ldr.w r6, [r1, r8, lsl 3] | offset_0 = r8 << 3;
| r6 = *((r1 + offset_0));
0x00033d70 str r0, [r7] | *(r7) = r0;
0x00033d72 dmb ish | __asm ("dmb ish");
0x00033d76 add.w r1, r1, r8, lsl 3 | r1 += (r8 << 3);
0x00033d7a ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00033d7c dmb ish | __asm ("dmb ish");
0x00033d80 mov r0, r1 | r0 = r1;
| if (r1 == 0) {
0x00033d82 cbnz r1, 0x33d8a |
0x00033d84 ldr.w r1, [sb, r4] | r1 = *((sb + r4));
0x00033d88 ldr r0, [r1] | r0 = *(r1);
| }
0x00033d8a ldr.w r1, [sl, 0x24] | r1 = *((sl + 0x24));
0x00033d8e ldr.w ip, [pc, 0x84] | ip = *(0x33e16);
0x00033d92 ldr r1, [r1] | r1 = *(r1);
0x00033d94 add.w lr, r1, r5 | lr = r1 + r5;
0x00033d98 ldr r4, [r1, r5] | r4 = *((r1 + r5));
0x00033d9a dmb ish | __asm ("dmb ish");
0x00033d9e ldr.w r1, [lr, 4] | r1 = *((lr + 4));
0x00033da0 asrs r4, r0, 0x20 | r4 = r0 >> 0x20;
0x00033da2 dmb ish | __asm ("dmb ish");
0x00033da6 mov r3, r1 | r3 = r1;
| if (r1 == 0) {
0x00033da8 cbnz r1, 0x33db0 |
0x00033daa ldr.w r1, [sb, ip] | r1 = *((sb + ip));
0x00033dae ldr r3, [r1] | r3 = *(r1);
| }
0x00033db0 mov r1, r3 | r1 = r3;
0x00033db2 adds r5, 8 | r5 += 8;
0x00033db4 bl 0x35724 | r0 = gst_caps_features_is_equal ();
| if (r0 != 0) {
0x00033db8 cbnz r0, 0x33de0 | goto label_11;
| }
| label_2:
0x00033dba cmp.w r8, 0 |
| if (r8 == 0) {
0x00033dbe beq 0x33dc8 | goto label_12;
| }
0x00033dc0 add.w r8, r8, -1 | r8 += -1;
0x00033dc4 cmp r7, r8 |
0x00033dc6 bne 0x33d66 |
| } while (r7 != r8);
| label_12:
0x00033dc8 ldrd r8, r1, [sp] | __asm ("ldrd r8, r1, [sp]");
| label_10:
0x00033dcc ldr r3, [sp, 8] | r3 = var_8h;
0x00033dce adds.w r8, r8, 1 | r8++;
0x00033dd2 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x00033dd6 cmp r8, r3 |
0x00033dd8 sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
| if (r8 <= r3) {
0x00033ddc blo 0x33d32 | goto label_1;
| }
0x00033dde b 0x33cac | goto label_0;
| label_11:
0x00033de0 mov r1, r4 | r1 = r4;
0x00033de2 mov r0, r6 | r0 = r6;
0x00033de4 bl 0x64464 | r0 = gst_structure_can_intersect ();
0x00033de8 cmp r0, 0 |
| if (r0 == 0) {
0x00033dea beq 0x33dba | goto label_2;
| }
0x00033dec movs r0, 1 | r0 = 1;
0x00033dee b 0x33d0e | goto label_3;
| label_9:
0x00033df0 movs r5, 0 | r5 = 0;
0x00033df2 b 0x33d56 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x3316c */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_copy_nth () | void gst_caps_copy_nth (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0003316c push {r4, r5, r6, r7, lr} |
0x0003316e sub sp, 0xc |
0x00033170 ldr r7, [pc, 0xb4] |
0x00033172 add r7, pc | r7 = 0x6639e;
| if (r0 != 0) {
0x00033174 cbz r0, 0x33184 |
0x00033176 ldr r3, [pc, 0xb4] |
0x00033178 mov r4, r0 | r4 = r0;
0x0003317a ldr r2, [r0] | r2 = *(r0);
0x0003317c ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0003317e ldr r3, [r3] | r3 = *(0x3322e);
0x00033180 cmp r2, r3 |
| if (r2 == r3) {
0x00033182 beq 0x331a0 | goto label_2;
| }
| }
0x00033184 ldr r1, [pc, 0xa8] |
0x00033186 movs r5, 0 | r5 = 0;
0x00033188 ldr r2, [pc, 0xa8] |
0x0003318a ldr r0, [pc, 0xac] |
0x0003318c add r1, pc |
0x0003318e add r2, pc | r2 = 0x663c6;
0x00033190 add.w r1, r1, 0x13c | r1 = 0x664fc;
0x00033194 add r0, pc | r0 = 0x663d2;
0x00033196 blx 0x20b70 | fcn_00020b70 ();
| do {
| label_0:
0x0003319a mov r0, r5 | r0 = r5;
0x0003319c add sp, 0xc |
0x0003319e pop {r4, r5, r6, r7, pc} |
| label_2:
0x000331a0 mov r6, r1 | r6 = r1;
0x000331a2 bl 0x326e0 | gst_caps_new_empty ();
0x000331a6 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x000331a8 mov r5, r0 | r5 = r0;
0x000331aa str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x000331ac ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x000331ae ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x000331b0 cmp r2, r6 |
0x000331b2 bls 0x3319a |
| } while (r2 < r6);
0x000331b4 ldr r3, [r3] | r3 = *(r3);
0x000331b6 ldr.w r0, [r3, r6, lsl 3] | offset_0 = r6 << 3;
| r0 = *((r3 + offset_0));
0x000331ba dmb ish | __asm ("dmb ish");
0x000331be add.w r2, r3, r6, lsl 3 | r2 = r3 + (r6 << 3);
0x000331c2 ldr r4, [r2, 4] | r4 = *((r2 + 4));
0x000331c4 dmb ish | __asm ("dmb ish");
0x000331c8 bl 0x6169c | gst_structure_copy ();
0x000331cc str r0, [sp] | *(sp) = r0;
| if (r4 != 0) {
0x000331ce cbnz r4, 0x331fc | goto label_3;
| }
| label_1:
0x000331d0 adds r6, r5, 4 | r6 = r5 + 4;
0x000331d2 str r4, [sp, 4] | var_4h = r4;
0x000331d4 mov r1, r6 | r1 = r6;
0x000331d6 bl 0x61624 | r0 = gst_structure_set_parent_refcount ();
0x000331da cmp r0, 0 |
| if (r0 == 0) {
0x000331dc beq 0x3319a | goto label_0;
| }
0x000331de ldr r0, [sp, 4] | r0 = var_4h;
| if (r0 == 0) {
0x000331e0 cbz r0, 0x331ec | goto label_4;
| }
0x000331e2 mov r1, r6 | r1 = r6;
0x000331e4 bl 0x353a4 | r0 = gst_caps_features_set_parent_refcount ();
0x000331e8 cmp r0, 0 |
| if (r0 == 0) {
0x000331ea beq 0x3319a | goto label_0;
| }
| label_4:
0x000331ec ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x000331ee movs r2, 1 | r2 = 1;
0x000331f0 mov r1, sp | r1 = sp;
0x000331f2 blx 0x216ec | fcn_000216ec ();
0x000331f6 mov r0, r5 | r0 = r5;
0x000331f8 add sp, 0xc |
0x000331fa pop {r4, r5, r6, r7, pc} |
| label_3:
0x000331fc mov r0, r4 | r0 = r4;
0x000331fe bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00033202 mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x00033204 cbnz r0, 0x3321a |
0x00033206 ldr r3, [pc, 0x34] | r3 = *(0x3323e);
0x00033208 mov r0, r4 | r0 = r4;
0x0003320a ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0003320c ldr r1, [r3] | r1 = *(0x3323e);
0x0003320e bl 0x35724 | r0 = gst_caps_features_is_equal ();
| if (r0 == 0) {
0x00033212 cbz r0, 0x3321a | goto label_5;
| }
0x00033214 ldr r0, [sp] | r0 = *(sp);
0x00033216 mov r4, r6 | r4 = r6;
0x00033218 b 0x331d0 | goto label_1;
| }
| label_5:
0x0003321a mov r0, r4 | r0 = r4;
0x0003321c bl 0x35aa0 | r0 = gst_caps_features_copy ();
0x00033220 mov r4, r0 | r4 = r0;
0x00033222 ldr r0, [sp] | r0 = *(sp);
0x00033224 b 0x331d0 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x344a8 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_filter_and_map_in_place () | void gst_caps_filter_and_map_in_place (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000344a8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000344ac sub sp, 0xc |
0x000344ae ldr.w sl, [pc, 0x134] |
0x000344b2 add sl, pc | sl = 0x68a9c;
| if (r0 != 0) {
0x000344b4 cbz r0, 0x344c8 |
0x000344b6 ldr r3, [pc, 0x130] |
0x000344b8 mov sb, r2 | sb = r2;
0x000344ba ldr r2, [r0] | r2 = *(r0);
0x000344bc mov r6, r0 | r6 = r0;
0x000344be ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x000344c2 ldr r3, [r3] | r3 = *(0x345ea);
0x000344c4 cmp r2, r3 |
| if (r2 == r3) {
0x000344c6 beq 0x344e2 | goto label_3;
| }
| }
0x000344c8 ldr r1, [pc, 0x120] |
0x000344ca ldr r2, [pc, 0x124] |
0x000344cc ldr r0, [pc, 0x124] |
0x000344ce add r1, pc |
0x000344d0 add r2, pc | r2 = 0x68ac6;
0x000344d2 add.w r1, r1, 0x33c | r1 = 0x68dfa;
0x000344d6 add r0, pc | r0 = 0x68ace;
0x000344d8 add sp, 0xc |
0x000344da pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000344de b.w 0x20b6c | void (*0x20b6c)() ();
| label_3:
0x000344e2 mov r7, r1 | r7 = r1;
0x000344e4 bl 0x4acc4 | r0 = gst_mini_object_is_writable ();
0x000344e8 cmp r0, 0 |
| if (r0 == 0) {
0x000344ea beq 0x345ae | goto label_4;
| }
0x000344ec cmp r7, 0 |
| if (r7 == 0) {
0x000344ee beq 0x345c8 | goto label_5;
| }
0x000344f0 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x000344f2 ldr.w r8, [r3, 4] | r8 = *((r3 + 4));
0x000344f6 cmp.w r8, 0 |
| if (r8 == 0) {
0x000344fa beq 0x3457c | goto label_6;
| }
0x000344fc movs r5, 0 | r5 = 0;
0x000344fe b 0x34514 |
| while (r4 != 0) {
0x00034500 mov r2, sb | r2 = sb;
0x00034502 mov r1, fp | r1 = fp;
0x00034504 mov r0, r4 | r0 = r4;
0x00034506 blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00034508 cmp r0, 0 |
| if (r0 == 0) {
0x0003450a beq 0x34582 | goto label_7;
| }
| label_0:
0x0003450c adds r5, 1 | r5++;
0x0003450e cmp r8, r5 |
| if (r8 < r5) {
0x00034510 bls 0x3457c | goto label_6;
| }
| label_1:
0x00034512 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00034514 ldr r3, [r3] | r3 = *(r3);
0x00034516 dmb ish | __asm ("dmb ish");
0x0003451a add.w r3, r3, r5, lsl 3 | r3 += (r5 << 3);
0x0003451e ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00034520 dmb ish | __asm ("dmb ish");
0x00034524 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00034526 ldr r3, [r3] | r3 = *(r3);
0x00034528 ldr.w fp, [r3, r5, lsl 3] | offset_0 = r5 << 3;
| fp = *((r3 + offset_0));
0x0003452a add sp, 0xd4 |
0x0003452c cmp r4, 0 |
0x0003452e bne 0x34500 |
| }
0x00034530 ldr r3, [pc, 0xc4] | r3 = *(0x345f8);
0x00034532 ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x00034534 adds r0, 3 | r0 += 3;
0x00034536 ldr r0, [r3] | r0 = *(0x345f8);
0x00034538 bl 0x35aa0 | gst_caps_features_copy ();
0x0003453c mov r1, r5 | r1 = r5;
0x0003453e mov r2, r0 | r2 = r0;
0x00034540 mov r4, r0 | r4 = r0;
0x00034542 mov r0, r6 | r0 = r6;
0x00034544 bl 0x32ff8 | gst_caps_set_features ();
0x00034548 mov r2, sb | r2 = sb;
0x0003454a mov r1, fp | r1 = fp;
0x0003454c mov r0, r4 | r0 = r4;
0x0003454e blx r7 | uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00034550 str r0, [sp, 4] | var_4h = r0;
0x00034552 cmp r0, 0 |
| if (r0 != 0) {
0x00034554 bne 0x3450c | goto label_0;
| }
0x00034556 mov r1, r5 | r1 = r5;
0x00034558 ldr r0, [r6, 0x24] | r0 = *((r6 + 0x24));
0x0003455a blx 0x2050c | fcn_0002050c ();
0x0003455e ldr r3, [sp, 4] | r3 = var_4h;
0x00034560 str r0, [r6, 0x24] | *((r6 + 0x24)) = r0;
0x00034562 mov r0, fp | r0 = fp;
0x00034564 mov r1, r3 | r1 = r3;
0x00034566 bl 0x61624 | gst_structure_set_parent_refcount ();
0x0003456a mov r0, fp | r0 = fp;
0x0003456c bl 0x60df4 | gst_structure_free ();
| if (r4 != 0) {
0x00034570 cbnz r4, 0x3459e | goto label_8;
| }
| label_2:
0x00034572 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00034574 ldr.w r8, [r3, 4] | r8 = *((r3 + 4));
0x00034578 cmp r8, r5 |
| if (r8 > r5) {
0x0003457a bhi 0x34512 | goto label_1;
| }
| label_6:
0x0003457c add sp, 0xc |
0x0003457e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00034582 mov r1, r5 | r1 = r5;
0x00034584 str r0, [sp, 4] | var_4h = r0;
0x00034586 ldr r0, [r6, 0x24] | r0 = *((r6 + 0x24));
0x00034588 blx 0x2050c | fcn_0002050c ();
0x0003458c ldr r3, [sp, 4] | r3 = var_4h;
0x0003458e str r0, [r6, 0x24] | *((r6 + 0x24)) = r0;
0x00034590 mov r0, fp | r0 = fp;
0x00034592 mov r1, r3 | r1 = r3;
0x00034594 bl 0x61624 | gst_structure_set_parent_refcount ();
0x00034598 mov r0, fp | r0 = fp;
0x0003459a bl 0x60df4 | gst_structure_free ();
| label_8:
0x0003459e movs r1, 0 | r1 = 0;
0x000345a0 mov r0, r4 | r0 = r4;
0x000345a2 bl 0x353a4 | gst_caps_features_set_parent_refcount ();
0x000345a6 mov r0, r4 | r0 = r4;
0x000345a8 bl 0x352a8 | gst_caps_features_free ();
0x000345ac b 0x34572 | goto label_2;
| label_4:
0x000345ae ldr r1, [pc, 0x4c] |
0x000345b0 ldr r2, [pc, 0x4c] |
0x000345b2 ldr r0, [pc, 0x50] |
0x000345b4 add r1, pc |
0x000345b6 add r2, pc | r2 = 0x68bba;
0x000345b8 add.w r1, r1, 0x33c | r1 = 0x68ef2;
0x000345bc add r0, pc | r0 = 0x68bc6;
0x000345be add sp, 0xc |
0x000345c0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000345c4 b.w 0x20b6c | void (*0x20b6c)() ();
| label_5:
0x000345c8 ldr r1, [pc, 0x3c] |
0x000345ca ldr r2, [pc, 0x40] |
0x000345cc ldr r0, [pc, 0x40] |
0x000345ce add r1, pc |
0x000345d0 add r2, pc | r2 = 0x68be2;
0x000345d2 add.w r1, r1, 0x33c | r1 = 0x68f16;
0x000345d6 add r0, pc | r0 = 0x68bea;
0x000345d8 add sp, 0xc |
0x000345da pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000345de b.w 0x20b6c | return void (*0x20b6c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x32f1c */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_get_features () | void gst_caps_get_features (uint32_t arg1, uint32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00032f1c ldr r2, [pc, 0xb4] |
0x00032f1e push {r4, r5, r6, lr} |
0x00032f20 add r2, pc | r2 = 0x65ef8;
| if (r0 != 0) {
0x00032f22 cbz r0, 0x32f32 |
0x00032f24 ldr r3, [pc, 0xb0] |
0x00032f26 mov r6, r0 | r6 = r0;
0x00032f28 ldr r0, [r0] | r0 = *(r0);
0x00032f2a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00032f2c ldr r3, [r3] | r3 = *(0x32fd8);
0x00032f2e cmp r0, r3 |
| if (r0 == r3) {
0x00032f30 beq 0x32f4a | goto label_2;
| }
| }
0x00032f32 ldr r1, [pc, 0xa8] |
0x00032f34 ldr r2, [pc, 0xa8] |
0x00032f36 ldr r0, [pc, 0xac] |
0x00032f38 add r1, pc | r1 = 0x65f1a;
0x00032f3a add r2, pc | r2 = 0x65f1e;
0x00032f3c adds r1, 0xec | r1 += 0xec;
0x00032f3e add r0, pc | r0 = 0x65f28;
0x00032f40 blx 0x20b70 | fcn_00020b70 ();
| label_1:
0x00032f44 movs r4, 0 | r4 = 0;
| do {
| label_0:
0x00032f46 mov r0, r4 | r0 = r4;
0x00032f48 pop {r4, r5, r6, pc} |
| label_2:
0x00032f4a ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00032f4c ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00032f4e cmp r0, r1 |
| if (r0 < r1) {
0x00032f50 bls 0x32fbe | goto label_3;
| }
0x00032f52 ldr r3, [r3] | r3 = *(r3);
0x00032f54 lsls r5, r1, 3 | r5 = r1 << 3;
0x00032f56 dmb ish | __asm ("dmb ish");
0x00032f5a add r3, r5 | r3 += r5;
0x00032f5c ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00032f5e dmb ish | __asm ("dmb ish");
0x00032f62 cmp r4, 0 |
0x00032f64 bne 0x32f46 |
| } while (r4 != 0);
0x00032f66 ldr r3, [pc, 0x80] |
0x00032f68 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00032f6a ldr r0, [r3] | r0 = *(0x32fea);
0x00032f6c bl 0x35aa0 | gst_caps_features_copy ();
0x00032f70 adds r1, r6, 4 | r1 = r6 + 4;
0x00032f72 mov r4, r0 | r4 = r0;
0x00032f74 bl 0x353a4 | gst_caps_features_set_parent_refcount ();
0x00032f78 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00032f7a ldr r3, [r3] | r3 = *(0x32fea);
0x00032f7c dmb ish | __asm ("dmb ish");
0x00032f80 add r3, r5 | r3 += r5;
0x00032f82 adds r3, 4 | r3 += 4;
| do {
0x00032f84 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x00032f88 cmp r2, 0 |
| if (r2 != 0) {
0x00032f8a bne 0x32f94 | goto label_4;
| }
0x00032f8c strex r1, r4, [r3] | __asm ("strex r1, r4, [r3]");
0x00032f90 cmp r1, 0 |
0x00032f92 bne 0x32f84 |
| } while (r1 != 0);
| label_4:
0x00032f94 ite eq |
| if (r1 != 0) {
0x00032f96 moveq r1, 1 | r1 = 1;
| }
| if (r1 == 0) {
0x00032f98 movne r1, 0 | r1 = 0;
| }
0x00032f9a dmb ish | __asm ("dmb ish");
| if (r1 == 0) {
0x00032f9e beq 0x32f46 | goto label_0;
| }
0x00032fa0 mov r0, r4 | r0 = r4;
0x00032fa2 bl 0x353a4 | gst_caps_features_set_parent_refcount ();
0x00032fa6 mov r0, r4 | r0 = r4;
0x00032fa8 bl 0x352a8 | gst_caps_features_free ();
0x00032fac ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00032fae ldr r3, [r3] | r3 = *(r3);
0x00032fb0 dmb ish | __asm ("dmb ish");
0x00032fb4 add r3, r5 | r3 += r5;
0x00032fb6 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00032fb8 dmb ish | __asm ("dmb ish");
0x00032fbc b 0x32f46 | goto label_0;
| label_3:
0x00032fbe ldr r1, [pc, 0x2c] |
0x00032fc0 ldr r2, [pc, 0x2c] |
0x00032fc2 ldr r0, [pc, 0x30] |
0x00032fc4 add r1, pc | r1 = 0x65fb6;
0x00032fc6 add r2, pc | r2 = 0x65fba;
0x00032fc8 adds r1, 0xec | r1 += 0xec;
0x00032fca add r0, pc | r0 = 0x65fc4;
0x00032fcc blx 0x20b70 | fcn_00020b70 ();
0x00032fd0 b 0x32f44 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x3461c */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_intersect_full () | void gst_caps_intersect_full (int16_t arg_24h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int32_t var_ch_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0003461c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00034620 sub sp, 0x24 |
0x00034622 ldr.w sb, [pc, 0x35c] |
0x00034626 str r0, [sp, 4] | var_4h = r0;
0x00034628 add sb, pc | sb = 0x68fae;
| if (r0 != 0) {
0x0003462a cbz r0, 0x3463e |
0x0003462c mov r3, r2 | r3 = r2;
0x0003462e ldr r2, [pc, 0x354] | r2 = *(0x34986);
0x00034630 mov r8, r1 | r8 = r1;
0x00034632 ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x00034636 ldr r1, [r2] | r1 = *(0x34986);
0x00034638 ldr r2, [r0] | r2 = *(r0);
0x0003463a cmp r2, r1 |
| if (r2 == r1) {
0x0003463c beq 0x3465c | goto label_10;
| }
| }
0x0003463e ldr r1, [pc, 0x348] |
0x00034640 ldr r2, [pc, 0x348] |
0x00034642 ldr r0, [pc, 0x34c] |
0x00034644 add r1, pc |
0x00034646 add r2, pc | r2 = 0x68fd6;
0x00034648 add.w r1, r1, 0x360 | r1 = 0x69332;
0x0003464c add r0, pc | r0 = 0x68fe2;
0x0003464e blx 0x20b70 | fcn_00020b70 ();
| do {
0x00034652 movs r1, 0 | r1 = 0;
| label_0:
0x00034654 mov r0, r1 | r0 = r1;
0x00034656 add sp, 0x24 |
0x00034658 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x0003465c cmp.w r8, 0 |
| if (r8 != 0) {
0x00034660 beq 0x3466a |
0x00034662 ldr.w r1, [r8] | r1 = *(r8);
0x00034666 cmp r2, r1 |
| if (r2 == r1) {
0x00034668 beq 0x34680 | goto label_11;
| }
| }
0x0003466a ldr r1, [pc, 0x328] |
0x0003466c ldr r2, [pc, 0x328] |
0x0003466e ldr r0, [pc, 0x32c] |
0x00034670 add r1, pc |
0x00034672 add r2, pc | r2 = 0x6900e;
0x00034674 add.w r1, r1, 0x360 | r1 = 0x6936a;
0x00034678 add r0, pc | r0 = 0x6901a;
0x0003467a blx 0x20b70 | fcn_00020b70 ();
0x0003467e b 0x34652 |
| } while (1);
| label_11:
0x00034680 ldr r2, [sp, 4] | r2 = var_4h;
0x00034682 cmp r2, r8 |
| if (r2 == r8) {
0x00034684 beq.w 0x347b4 | goto label_12;
| }
0x00034688 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x0003468a lsls r1, r2, 0x1b | r1 = r2 << 0x1b;
| if (r1 < r2) {
0x0003468c bmi.w 0x347c0 | goto label_13;
| }
0x00034690 ldr r2, [sp, 4] | r2 = var_4h;
0x00034692 ldr r2, [r2, 0x24] | r2 = *((r2 + 0x24));
0x00034694 cmp r2, 0 |
| if (r2 == 0) {
0x00034696 beq.w 0x347d2 | goto label_14;
| }
0x0003469a ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0003469c cmp r2, 0 |
| if (r2 == 0) {
0x0003469e beq.w 0x347d2 | goto label_14;
| }
0x000346a2 ldr.w r5, [r8, 0xc] | r5 = *((r8 + 0xc));
0x000346a6 lsls r2, r5, 0x1b | r2 = r5 << 0x1b;
| if (r2 < r5) {
0x000346a8 bmi.w 0x347b4 | goto label_12;
| }
0x000346ac ldr.w r2, [r8, 0x24] | r2 = *((r8 + 0x24));
0x000346b0 cmp r2, 0 |
| if (r2 == 0) {
0x000346b2 beq.w 0x347d2 | goto label_14;
| }
0x000346b6 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x000346b8 cmp r2, 0 |
| if (r2 == 0) {
0x000346ba beq.w 0x347d2 | goto label_14;
| }
0x000346be ands r5, r5, 0x10 | r5 &= 0x10;
| if (r5 != r5) {
0x000346c2 bne 0x347b4 | goto label_12;
| }
0x000346c4 cmp r3, 0 |
| if (r3 == 0) {
0x000346c6 beq.w 0x34824 | goto label_15;
| }
0x000346ca cmp r3, 1 |
| if (r3 != 1) {
0x000346cc bne.w 0x34816 | goto label_16;
| }
0x000346d0 bl 0x326e0 | gst_caps_new_empty ();
0x000346d4 ldr r3, [sp, 4] | r3 = var_4h;
0x000346d6 mov r1, r0 | r1 = r0;
0x000346d8 ldr.w r2, [r8, 0x24] | r2 = *((r8 + 0x24));
0x000346dc ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x000346de ldr.w sl, [r2, 4] | sl = *((r2 + 4));
0x000346e0 adr r0, 0x10 | r0 = 0x10;
0x000346e2 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x000346e4 cmp r2, 0 |
| if (r2 == 0) {
0x000346e6 beq 0x34654 | goto label_0;
| }
0x000346e8 mov r4, r5 | r4 = r5;
0x000346ea mov r7, r0 | r7 = r0;
0x000346ec mov r5, sl | r5 = sl;
0x000346ee str r2, [sp, 0xc] | var_ch = r2;
| label_3:
0x000346f0 ldr r3, [r3] | r3 = *(r3);
0x000346f2 ldr.w r2, [r3, r4, lsl 3] | offset_0 = r4 << 3;
| r2 = *((r3 + offset_0));
0x000346f6 add.w r3, r3, r4, lsl 3 | r3 += (r4 << 3);
0x000346fa str r2, [sp] | *(sp) = r2;
0x000346fc dmb ish | __asm ("dmb ish");
0x00034700 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00034702 dmb ish | __asm ("dmb ish");
0x00034706 mov sl, r1 | sl = r1;
| if (r1 == 0) {
0x00034708 cbnz r1, 0x34714 |
0x0003470a ldr r3, [pc, 0x294] | r3 = *(0x349a2);
0x0003470c ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00034710 ldr.w sl, [r3] | sl = *(0x349a2);
| }
0x00034714 cmp r5, 0 |
| if (r5 == 0) {
0x00034716 beq 0x347a4 | goto label_17;
| }
0x00034718 mov.w fp, 0 |
0x0003471c str r4, [sp, 8] | var_8h = r4;
0x0003471e mov r4, fp | r4 = fp;
0x00034720 b 0x34728 |
| while (r0 == 0) {
| label_1:
0x00034722 adds r4, 1 | r4++;
0x00034724 cmp r5, r4 |
| if (r5 == r4) {
0x00034726 beq 0x347a2 | goto label_18;
| }
| label_2:
0x00034728 ldr.w r2, [r8, 0x24] | r2 = *((r8 + 0x24));
0x0003472c ldr r2, [r2] | r2 = *(r2);
0x0003472e ldr.w fp, [r2, r4, lsl 3] | offset_1 = r4 << 3;
| fp = *((r2 + offset_1));
0x00034730 add sp, 0xd0 |
0x00034732 dmb ish | __asm ("dmb ish");
0x00034736 add.w r2, r2, r4, lsl 3 | r2 += (r4 << 3);
0x0003473a ldr r6, [r2, 4] | r6 = *((r2 + 4));
0x0003473c dmb ish | __asm ("dmb ish");
| if (r6 == 0) {
0x00034740 cbnz r6, 0x3474a |
0x00034742 ldr r2, [pc, 0x25c] | r2 = *(0x349a2);
0x00034744 ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x00034748 ldr r6, [r2] | r6 = *(0x349a2);
| }
0x0003474a mov r1, r6 | r1 = r6;
0x0003474c mov r0, sl | r0 = sl;
0x0003474e bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00034752 cmp r0, 0 |
0x00034754 beq 0x34722 |
| }
0x00034756 mov r1, fp | r1 = fp;
0x00034758 ldr r0, [sp] | r0 = *(sp);
0x0003475a bl 0x6432c | r0 = gst_structure_intersect ();
0x0003475e mov fp, r0 |
0x00034760 cmp r0, 0 |
| if (r0 == 0) {
0x00034762 beq 0x34722 | goto label_1;
| }
0x00034764 mov r0, sl | r0 = sl;
0x00034766 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x0003476a cmp r0, 0 |
| if (r0 == 0) {
0x0003476c beq 0x347ec | goto label_19;
| }
0x0003476e cmp r6, 0 |
| if (r6 == 0) {
0x00034770 beq 0x347e8 | goto label_5;
| }
0x00034772 mov r0, r6 | r0 = r6;
0x00034774 bl 0x35804 | gst_caps_features_is_any ();
0x00034776 str fp, [r6], -0x38 | *(r6) = fp;
| r6 += -0x38;
0x0003477a ldr r2, [pc, 0x224] | r2 = *(0x349a2);
0x0003477c mov r0, r6 | r0 = r6;
0x0003477e ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x00034782 ldr r1, [r2] | r1 = *(0x349a2);
0x00034784 bl 0x35724 | r0 = gst_caps_features_is_equal ();
| if (r0 != 0) {
0x00034788 cbnz r0, 0x347e8 | goto label_5;
| }
0x0003478a mov r0, r6 | r0 = r6;
0x0003478c bl 0x35aa0 | r0 = gst_caps_features_copy ();
0x00034790 mov r2, r0 | r2 = r0;
| label_4:
0x00034792 mov r0, r7 | r0 = r7;
0x00034794 mov r1, fp | r1 = fp;
0x00034796 adds r4, 1 | r4++;
0x00034798 bl 0x32ca0 | gst_caps_merge_structure_full ();
0x0003479c cmp r5, r4 |
0x0003479e mov r7, r0 | r7 = r0;
| if (r5 != r4) {
0x000347a0 bne 0x34728 | goto label_2;
| }
| label_18:
0x000347a2 ldr r4, [sp, 8] | r4 = var_8h;
| label_17:
0x000347a4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000347a6 adds r4, 1 | r4++;
0x000347a8 cmp r3, r4 |
| if (r3 == r4) {
0x000347aa beq.w 0x3497a | goto label_20;
| }
0x000347ae ldr r3, [sp, 4] | r3 = var_4h;
0x000347b0 ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x000347b2 b 0x346f0 | goto label_3;
| label_12:
0x000347b4 ldr r0, [sp, 4] | r0 = var_4h;
| do {
0x000347b6 add sp, 0x24 |
0x000347b8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000347bc b.w 0x34618 | void (*0x34618)() ();
| label_13:
0x000347c0 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x000347c4 lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 < r3) {
0x000347c6 bmi 0x347dc | goto label_21;
| }
0x000347c8 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
| if (r3 != 0) {
0x000347cc cbz r3, 0x347d2 |
0x000347ce ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 != 0) {
0x000347d0 cbnz r3, 0x347dc | goto label_21;
| }
| }
| label_14:
0x000347d2 ldr r3, [pc, 0x1d0] | r3 = *(0x349a6);
0x000347d4 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000347d8 ldr r0, [r3] | r0 = *(0x349a6);
0x000347da b 0x347b6 |
| } while (1);
| label_21:
0x000347dc mov r0, r8 | r0 = r8;
0x000347de add sp, 0x24 |
0x000347e0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000347e4 b.w 0x34618 | void (*0x34618)() ();
| do {
| label_5:
0x000347e8 movs r2, 0 | r2 = 0;
0x000347ea b 0x34792 | goto label_4;
| label_19:
0x000347ec cmp.w sl, 0 |
0x000347f0 beq 0x347e8 |
| } while (sl == 0);
0x000347f2 mov r0, sl | r0 = sl;
0x000347f4 bl 0x35804 | r0 = gst_caps_features_is_any ();
| if (r0 != 0) {
0x000347f8 cbnz r0, 0x3480c | goto label_22;
| }
0x000347fa ldr r2, [pc, 0x1a4] | r2 = *(0x349a2);
0x000347fc mov r0, sl | r0 = sl;
0x000347fe ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x00034802 ldr r1, [r2] | r1 = *(0x349a2);
0x00034804 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00034808 cmp r0, 0 |
| if (r0 != 0) {
0x0003480a bne 0x347e8 | goto label_5;
| }
| label_22:
0x0003480c mov r0, sl | r0 = sl;
0x0003480e bl 0x35aa0 | r0 = gst_caps_features_copy ();
0x00034812 mov r2, r0 | r2 = r0;
0x00034814 b 0x34792 | goto label_4;
| label_16:
0x00034816 ldr r2, [pc, 0x190] |
0x00034818 movs r1, 0x10 | r1 = 0x10;
0x0003481a ldr r0, [pc, 0x190] |
0x0003481c add r2, pc | r2 = 0x691ca;
0x0003481e add r0, pc | r0 = 0x691d0;
0x00034820 blx 0x21724 | fcn_00021724 ();
| label_15:
0x00034824 bl 0x326e0 | gst_caps_new_empty ();
0x00034828 ldr r6, [sp, 4] | r6 = var_4h;
0x0003482a mov r1, r0 | r1 = r0;
0x0003482c ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x0003482e ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00034830 ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00034834 ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x00034836 adds r3, r2, r5 | r3 = r2 + r5;
0x00034838 cmp r3, 1 |
0x0003483a add.w ip, r3, -1 |
| if (r3 == 1) {
0x0003483e beq.w 0x34654 | goto label_0;
| }
0x00034842 movs r7, 0 | r7 = 0;
0x00034844 mov fp, r6 |
0x00034846 mov r4, r7 | r4 = r7;
0x00034848 mov r1, r7 | r1 = r7;
0x0003484a subs r3, r2, 1 | r3 = r2 - 1;
0x0003484c str r5, [sp, 0x18] | var_18h = r5;
0x0003484e str r3, [sp, 0x14] | var_14h = r3;
0x00034850 str r0, [sp, 8] | var_8h = r0;
0x00034852 str.w ip, [sp, 0x1c] | __asm ("str.w ip, [var_1ch]");
| label_6:
0x00034856 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00034858 movs r0, 0 | r0 = 0;
0x0003485a cmp r1, r3 |
0x0003485c mov r2, r3 | r2 = r3;
0x0003485e sbcs r3, r4, 0 | __asm ("sbcs r3, r4, 0");
0x00034862 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00034864 itt lo |
| if (r1 >= r3) {
0x00034866 movlo r2, r1 | r2 = r1;
| }
| if (r1 >= r3) {
0x00034868 movlo r0, r4 | r0 = r4;
| }
0x0003486a cmp r2, r1 |
0x0003486c mov r6, r2 | r6 = r2;
0x0003486e sbcs r0, r4 | __asm ("sbcs r0, r4");
0x00034870 ite lo |
| if (r2 >= r1) {
0x00034872 sublo sl, r1, r2 | sl = r1 - r2;
| }
| if (r2 >= r1) {
0x00034876 mov.w sl, 0 | sl = 0;
| }
0x0003487a cmp r3, sl |
| if (r3 < sl) {
0x0003487c bls 0x348f0 | goto label_23;
| }
0x0003487e subs r2, r2, r3 | r2 -= r3;
0x00034880 strd r1, r4, [sp, 0xc] | __asm ("strd r1, r4, [var_ch]");
0x00034884 add.w r3, r2, sl | r3 = r2 + sl;
0x00034888 lsl.w sl, sl, 3 | sl <<= 3;
0x0003488c str r3, [sp, 4] | var_4h = r3;
| do {
0x0003488e ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x00034892 ldr r2, [r2] | r2 = *(r2);
0x00034894 ldr.w r7, [r2, r6, lsl 3] | offset_2 = r6 << 3;
| r7 = *((r2 + offset_2));
0x00034898 dmb ish | __asm ("dmb ish");
0x0003489c add.w r2, r2, r6, lsl 3 | r2 += (r6 << 3);
0x000348a0 ldr r4, [r2, 4] | r4 = *((r2 + 4));
0x000348a2 dmb ish | __asm ("dmb ish");
| if (r4 == 0) {
0x000348a6 cbnz r4, 0x348b0 |
0x000348a8 ldr r2, [pc, 0xf4] | r2 = *(0x349a0);
0x000348aa ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x000348ae ldr r4, [r2] | r4 = *(0x349a0);
| }
0x000348b0 ldr.w r2, [r8, 0x24] | r2 = *((r8 + 0x24));
0x000348b4 ldr r2, [r2] | r2 = *(r2);
0x000348b6 ldr.w r3, [r2, sl] | r3 = *((r2 + sl));
0x000348ba add.w r1, r2, sl | r1 = r2 + sl;
0x000348be str r3, [sp] | *(sp) = r3;
0x000348c0 dmb ish | __asm ("dmb ish");
0x000348c4 ldr r5, [r1, 4] | r5 = *((r1 + 4));
0x000348c6 dmb ish | __asm ("dmb ish");
| if (r5 == 0) {
0x000348ca cbnz r5, 0x348d4 |
0x000348cc ldr r2, [pc, 0xd0] | r2 = *(0x349a0);
0x000348ce ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x000348d0 movs r0, 2 | r0 = 2;
0x000348d2 ldr r5, [r2] | r5 = *(0x349a0);
| }
0x000348d4 mov r1, r5 | r1 = r5;
0x000348d6 mov r0, r4 | r0 = r4;
0x000348d8 bl 0x35724 | r0 = gst_caps_features_is_equal ();
| if (r0 != 0) {
0x000348dc cbnz r0, 0x3490a | goto label_24;
| }
| if (r6 == 0) {
| label_7:
0x000348de cbz r6, 0x348ec | goto label_25;
| }
0x000348e0 ldr r3, [sp, 4] | r3 = var_4h;
0x000348e2 subs r6, 1 | r6--;
0x000348e4 add.w sl, sl, 8 | sl += 8;
0x000348e8 cmp r6, r3 |
0x000348ea bne 0x3488e |
| } while (r6 != r3);
| label_25:
0x000348ec ldrd r1, r4, [sp, 0xc] | __asm ("ldrd r1, r4, [var_ch]");
| label_23:
0x000348f0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000348f2 adds r1, 1 | r1++;
0x000348f4 adc r4, r4, 0 | __asm ("adc r4, r4, 0");
0x000348f8 cmp r1, r3 |
0x000348fa sbcs r3, r4, 0 | __asm ("sbcs r3, r4, 0");
| if (r1 <= r3) {
0x000348fe blo 0x34856 | goto label_6;
| }
0x00034900 ldr r1, [sp, 8] | r1 = var_8h;
0x00034902 mov r0, r1 | r0 = r1;
0x00034904 add sp, 0x24 |
0x00034906 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_24:
0x0003490a mov r0, r7 | r0 = r7;
0x0003490c ldr r1, [sp] | r1 = *(sp);
0x0003490e bl 0x6432c | r0 = gst_structure_intersect ();
0x00034912 mov r7, r0 | r7 = r0;
0x00034914 cmp r0, 0 |
| if (r0 == 0) {
0x00034916 beq 0x348de | goto label_7;
| }
0x00034918 mov r0, r4 | r0 = r4;
0x0003491a bl 0x35804 | r0 = gst_caps_features_is_any ();
| if (r0 == 0) {
0x0003491e cbz r0, 0x34952 | goto label_26;
| }
| if (r5 == 0) {
0x00034920 cbz r5, 0x3494e | goto label_8;
| }
0x00034922 mov r0, r5 | r0 = r5;
0x00034924 bl 0x35804 | r0 = gst_caps_features_is_any ();
| if (r0 == 0) {
0x00034928 cbnz r0, 0x3493a |
0x0003492a ldr r2, [pc, 0x74] | r2 = *(0x349a2);
0x0003492c mov r0, r5 | r0 = r5;
0x0003492e ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x00034932 ldr r1, [r2] | r1 = *(0x349a2);
0x00034934 bl 0x35724 | r0 = gst_caps_features_is_equal ();
| if (r0 != 0) {
0x00034938 cbnz r0, 0x3494e | goto label_8;
| }
| }
0x0003493a mov r0, r5 | r0 = r5;
0x0003493c bl 0x35aa0 | r0 = gst_caps_features_copy ();
0x00034940 mov r2, r0 | r2 = r0;
| do {
| label_9:
0x00034942 ldr r0, [sp, 8] | r0 = var_8h;
0x00034944 mov r1, r7 | r1 = r7;
0x00034946 bl 0x32ca0 | gst_caps_merge_structure_full ();
0x0003494a str r0, [sp, 8] | var_8h = r0;
0x0003494c b 0x348de | goto label_7;
| label_8:
0x0003494e movs r2, 0 | r2 = 0;
0x00034950 b 0x34942 |
| } while (1);
| label_26:
0x00034952 cmp r4, 0 |
| if (r4 == 0) {
0x00034954 beq 0x3494e | goto label_8;
| }
0x00034956 mov r0, r4 | r0 = r4;
0x00034958 bl 0x35804 | r0 = gst_caps_features_is_any ();
| if (r0 != 0) {
0x0003495c cbnz r0, 0x34970 | goto label_27;
| }
0x0003495e ldr r2, [pc, 0x40] | r2 = *(0x349a2);
0x00034960 mov r0, r4 | r0 = r4;
0x00034962 ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x00034966 ldr r1, [r2] | r1 = *(0x349a2);
0x00034968 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x0003496c cmp r0, 0 |
| if (r0 != 0) {
0x0003496e bne 0x3494e | goto label_8;
| }
| label_27:
0x00034970 mov r0, r4 | r0 = r4;
0x00034972 bl 0x35aa0 | r0 = gst_caps_features_copy ();
0x00034976 mov r2, r0 | r2 = r0;
0x00034978 b 0x34942 | goto label_9;
| label_20:
0x0003497a mov r1, r7 | r1 = r7;
0x0003497c b 0x34654 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x336c4 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_is_equal_fixed () | void gst_caps_is_equal_fixed (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000336c4 push {r4, r5, r6, lr} |
0x000336c6 mov r5, r0 | r5 = r0;
0x000336c8 ldr r6, [pc, 0x88] |
0x000336ca mov r4, r1 | r4 = r1;
0x000336cc bl 0x33644 | gst_caps_is_fixed ();
0x000336d0 add r6, pc | r6 = 0x66e28;
| if (r0 != 0) {
0x000336d2 cbnz r0, 0x336ec | goto label_1;
| }
0x000336d4 ldr r1, [pc, 0x80] |
0x000336d6 ldr r2, [pc, 0x84] |
0x000336d8 ldr r0, [pc, 0x84] |
0x000336da add r1, pc |
0x000336dc add r2, pc | r2 = 0x66e3e;
0x000336de add.w r1, r1, 0x1e0 | r1 = 0x67016;
0x000336e2 add r0, pc | r0 = 0x66e46;
0x000336e4 blx 0x20b70 | fcn_00020b70 ();
| do {
| label_0:
0x000336e8 movs r0, 0 | r0 = 0;
0x000336ea pop {r4, r5, r6, pc} |
| label_1:
0x000336ec mov r0, r4 | r0 = r4;
0x000336ee bl 0x33644 | r0 = gst_caps_is_fixed ();
| if (r0 == 0) {
0x000336f2 cbz r0, 0x3373c | goto label_2;
| }
0x000336f4 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000336f6 ldr r3, [r3] | r3 = *(r3);
0x000336f8 ldr r0, [r3] | r0 = *(r3);
0x000336fa dmb ish | __asm ("dmb ish");
0x000336fe ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x00033700 dmb ish | __asm ("dmb ish");
| if (r5 == 0) {
0x00033704 cbnz r5, 0x3370c |
0x00033706 ldr r3, [pc, 0x5c] | r3 = *(0x33766);
0x00033708 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0003370a ldr r5, [r3] | r5 = *(0x33766);
| }
0x0003370c ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x0003370e ldr r3, [r3] | r3 = *(r3);
0x00033710 ldr r1, [r3] | r1 = *(r3);
0x00033712 dmb ish | __asm ("dmb ish");
0x00033716 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00033718 dmb ish | __asm ("dmb ish");
| if (r4 == 0) {
0x0003371c cbnz r4, 0x33724 |
0x0003371e ldr r3, [pc, 0x44] | r3 = *(0x33766);
0x00033720 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00033722 ldr r4, [r3] | r4 = *(0x33766);
| }
0x00033724 bl 0x64294 | r0 = gst_structure_is_equal ();
0x00033728 cmp r0, 0 |
0x0003372a beq 0x336e8 |
| } while (r0 == 0);
0x0003372c mov r1, r4 | r1 = r4;
0x0003372e mov r0, r5 | r0 = r5;
0x00033730 bl 0x35724 | gst_caps_features_is_equal ();
0x00033734 subs r0, 0 |
0x00033736 it ne |
| if (r0 == 0) {
0x00033738 movne r0, 1 | r0 = 1;
| }
0x0003373a pop {r4, r5, r6, pc} |
| label_2:
0x0003373c ldr r1, [pc, 0x28] |
0x0003373e ldr r2, [pc, 0x2c] |
0x00033740 ldr r0, [pc, 0x2c] |
0x00033742 add r1, pc |
0x00033744 add r2, pc | r2 = 0x66eb6;
0x00033746 add.w r1, r1, 0x1e0 | r1 = 0x6708e;
0x0003374a add r0, pc | r0 = 0x66ebe;
0x0003374c blx 0x20b70 | fcn_00020b70 ();
0x00033750 b 0x336e8 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x33b44 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_is_strictly_equal () | void gst_caps_is_strictly_equal (uint32_t arg1, int16_t arg2) {
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00033b44 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00033b48 sub sp, 0xc |
0x00033b4a ldr.w sb, [pc, 0x108] |
0x00033b4e add sb, pc | sb = 0x677a8;
| if (r0 != 0) {
0x00033b50 cbz r0, 0x33b62 |
0x00033b52 ldr r3, [pc, 0x104] |
0x00033b54 mov r5, r0 | r5 = r0;
0x00033b56 ldr r2, [r0] | r2 = *(r0);
0x00033b58 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00033b5c ldr r3, [r3] | r3 = *(0x33c5a);
0x00033b5e cmp r2, r3 |
| if (r2 == r3) {
0x00033b60 beq 0x33b7e | goto label_2;
| }
| }
0x00033b62 ldr r1, [pc, 0xf8] |
0x00033b64 ldr r2, [pc, 0xf8] |
0x00033b66 ldr r0, [pc, 0xfc] |
0x00033b68 add r1, pc |
0x00033b6a add r2, pc | r2 = 0x677ce;
0x00033b6c add.w r1, r1, 0x284 | r1 = 0x67a4e;
0x00033b70 add r0, pc | r0 = 0x677da;
0x00033b72 blx 0x20b70 | fcn_00020b70 ();
| do {
| label_0:
0x00033b76 movs r0, 0 | r0 = 0;
0x00033b78 add sp, 0xc |
0x00033b7a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x00033b7e mov r6, r1 | r6 = r1;
| if (r1 != 0) {
0x00033b80 cbz r1, 0x33b88 |
0x00033b82 ldr r3, [r1] | r3 = *(r1);
0x00033b84 cmp r2, r3 |
| if (r2 == r3) {
0x00033b86 beq 0x33b9e | goto label_3;
| }
| }
0x00033b88 ldr r1, [pc, 0xdc] |
0x00033b8a ldr r2, [pc, 0xe0] |
0x00033b8c ldr r0, [pc, 0xe0] |
0x00033b8e add r1, pc |
0x00033b90 add r2, pc | r2 = 0x67802;
0x00033b92 add.w r1, r1, 0x284 | r1 = 0x67a7e;
0x00033b96 add r0, pc | r0 = 0x6780a;
0x00033b98 blx 0x20b70 | fcn_00020b70 ();
0x00033b9c b 0x33b76 |
| } while (1);
| label_3:
0x00033b9e cmp r0, r1 |
| if (r0 == r1) {
0x00033ba0 beq 0x33c3e | goto label_4;
| }
0x00033ba2 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00033ba4 ldr r4, [r1, 0xc] | r4 = *((r1 + 0xc));
0x00033ba6 lsls r3, r3, 0x1b | r3 <<= 0x1b;
0x00033ba8 and r4, r4, 0x10 | r4 &= 0x10;
| if (r3 < r3) {
0x00033bac bmi 0x33c46 | goto label_5;
| }
0x00033bae cmp r4, 0 |
| if (r4 != 0) {
0x00033bb0 bne 0x33b76 | goto label_0;
| }
0x00033bb2 ldr r2, [r1, 0x24] | r2 = *((r1 + 0x24));
0x00033bb4 ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
0x00033bb6 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x00033bb8 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00033bba cmp r2, r1 |
| if (r2 != r1) {
0x00033bbc bne 0x33b76 | goto label_0;
| }
0x00033bbe cmp r2, 0 |
| if (r2 == 0) {
0x00033bc0 beq 0x33c3e | goto label_4;
| }
| label_1:
0x00033bc2 ldr r3, [r3] | r3 = *(r3);
0x00033bc4 lsls r2, r4, 3 | r2 = r4 << 3;
0x00033bc6 ldr r0, [pc, 0xac] | r0 = *(0x33c76);
0x00033bc8 adds r1, r3, r2 | r1 = r3 + r2;
0x00033bca ldr.w r3, [r3, r4, lsl 3] | offset_0 = r4 << 3;
| r3 = *((r3 + offset_0));
0x00033bce str r3, [sp, 4] | var_4h = r3;
0x00033bd0 dmb ish | __asm ("dmb ish");
0x00033bd4 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00033bd6 dmb ish | __asm ("dmb ish");
0x00033bda mov sl, r1 | sl = r1;
| if (r1 == 0) {
0x00033bdc cbnz r1, 0x33be6 |
0x00033bde ldr.w r3, [sb, r0] | r3 = *((sb + r0));
0x00033be2 ldr.w sl, [r3] | sl = *(r3);
| }
0x00033be6 ldr r1, [r6, 0x24] | r1 = *((r6 + 0x24));
0x00033be8 ldr r7, [pc, 0x88] | r7 = *(0x33c74);
0x00033bea ldr r1, [r1] | r1 = *(r1);
0x00033bec adds r0, r1, r2 | r0 = r1 + r2;
0x00033bee ldr.w fp, [r1, r2] | fp = *((r1 + r2));
0x00033bf0 add sp, 8 |
0x00033bf2 dmb ish | __asm ("dmb ish");
0x00033bf6 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x00033bf8 dmb ish | __asm ("dmb ish");
0x00033bfc mov r8, r2 | r8 = r2;
| if (r2 == 0) {
0x00033bfe cbnz r2, 0x33c08 |
0x00033c00 ldr.w r2, [sb, r7] | r2 = *((sb + r7));
0x00033c04 ldr.w r8, [r2] | r8 = *(r2);
| }
0x00033c08 mov r0, sl | r0 = sl;
0x00033c0a adds r4, 1 | r4++;
0x00033c0c bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00033c10 mov r7, r0 | r7 = r0;
0x00033c12 mov r0, r8 | r0 = r8;
0x00033c14 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00033c18 cmp r7, r0 |
0x00033c1a mov r1, r8 | r1 = r8;
0x00033c1c mov r0, sl | r0 = sl;
| if (r7 != r0) {
0x00033c1e bne 0x33b76 | goto label_0;
| }
0x00033c20 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00033c24 mov r3, r0 | r3 = r0;
0x00033c26 mov r1, fp | r1 = fp;
0x00033c28 ldr r0, [sp, 4] | r0 = var_4h;
0x00033c2a cmp r3, 0 |
| if (r3 == 0) {
0x00033c2c beq 0x33b76 | goto label_0;
| }
0x00033c2e bl 0x64294 | r0 = gst_structure_is_equal ();
0x00033c32 cmp r0, 0 |
| if (r0 == 0) {
0x00033c34 beq 0x33b76 | goto label_0;
| }
0x00033c36 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00033c38 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00033c3a cmp r4, r2 |
| if (r4 <= r2) {
0x00033c3c blo 0x33bc2 | goto label_1;
| }
| label_4:
0x00033c3e movs r0, 1 | r0 = 1;
0x00033c40 add sp, 0xc |
0x00033c42 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00033c46 subs r0, r4, 0 | r0 = r4 - 0;
0x00033c48 it ne |
| if (r0 == r4) {
0x00033c4a movne r0, 1 | r0 = 1;
| }
0x00033c4c add sp, 0xc |
0x00033c4e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x33774 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_is_subset () | void gst_caps_is_subset (uint32_t arg1, uint32_t arg2) {
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00033774 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00033778 sub sp, 0xc |
0x0003377a ldr.w r8, [pc, 0x114] |
0x0003377e add r8, pc | r8 = 0x67014;
0x00033780 cmp r0, 0 |
| if (r0 == 0) {
0x00033782 beq 0x33852 | goto label_2;
| }
0x00033784 mov r6, r1 | r6 = r1;
0x00033786 cmp r1, 0 |
| if (r1 == 0) {
0x00033788 beq 0x33876 | goto label_3;
| }
0x0003378a ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x0003378c mov sl, r0 | sl = r0;
0x0003378e lsls r0, r3, 0x1b | r0 = r3 << 0x1b;
| if (r0 < r3) {
0x00033790 bmi 0x33846 | goto label_4;
| }
0x00033792 ldr.w r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x00033796 cmp r2, 0 |
| if (r2 == 0) {
0x00033798 beq 0x3386e | goto label_5;
| }
0x0003379a ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0003379c cmp r3, 0 |
| if (r3 == 0) {
0x0003379e beq 0x3386e | goto label_5;
| }
0x000337a0 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x000337a2 lsls r1, r1, 0x1b | r1 <<= 0x1b;
| if (r1 < r1) {
0x000337a4 bmi 0x3386e | goto label_5;
| }
0x000337a6 ldr r1, [r6, 0x24] | r1 = *((r6 + 0x24));
0x000337a8 cmp r1, 0 |
| if (r1 == 0) {
0x000337aa beq 0x33866 | goto label_6;
| }
0x000337ac ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x000337ae cmp r1, 0 |
| if (r1 == 0) {
0x000337b0 beq 0x33866 | goto label_6;
| }
0x000337b2 subs.w sb, r3, 1 | sb = r3 - 1;
| if (sb < r3) {
0x000337b6 bmi 0x3386e | goto label_5;
| }
| label_1:
0x000337b8 ldr r3, [r2] | r3 = *(r2);
0x000337ba ldr.w r2, [r3, sb, lsl 3] | offset_0 = sb << 3;
| r2 = *((r3 + offset_0));
0x000337be add.w r3, r3, sb, lsl 3 | r3 += (sb << 3);
0x000337c2 str r2, [sp, 4] | var_4h = r2;
0x000337c4 dmb ish | __asm ("dmb ish");
0x000337c8 ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x000337ca dmb ish | __asm ("dmb ish");
| if (r5 == 0) {
0x000337ce cbnz r5, 0x337d8 |
0x000337d0 ldr r3, [pc, 0xc0] | r3 = *(0x33894);
0x000337d2 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000337d6 ldr r5, [r3] | r5 = *(0x33894);
| }
0x000337d8 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x000337da ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x000337dc subs r4, 1 | r4--;
| if (r4 >= 1) {
0x000337de bpl 0x337e8 | goto label_7;
| }
0x000337e0 b 0x33836 | goto label_8;
| do {
| label_0:
0x000337e2 subs r4, 1 | r4--;
| if (r4 <= 1) {
0x000337e4 blo 0x33866 | goto label_6;
| }
0x000337e6 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
| label_7:
0x000337e8 ldr r3, [r3] | r3 = *(r3);
0x000337ea ldr r2, [pc, 0xa8] | r2 = *(0x33896);
0x000337ec ldr.w r7, [r3, r4, lsl 3] | offset_1 = r4 << 3;
| r7 = *((r3 + offset_1));
0x000337f0 dmb ish | __asm ("dmb ish");
0x000337f4 add.w r3, r3, r4, lsl 3 | r3 += (r4 << 3);
0x000337f8 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000337fa dmb ish | __asm ("dmb ish");
0x000337fe mov fp, r3 |
| if (r3 == 0) {
0x00033800 cbnz r3, 0x3380a |
0x00033802 ldr.w r3, [r8, r2] | r3 = *((r8 + r2));
0x00033806 ldr.w fp, [r3] | fp = *(r3);
| }
0x0003380a mov r0, r5 | r0 = r5;
0x0003380c bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00033810 mov r3, r0 | r3 = r0;
0x00033812 mov r0, fp | r0 = fp;
| if (r3 == 0) {
0x00033814 cbz r3, 0x3381e | goto label_9;
| }
0x00033816 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x0003381a cmp r0, 0 |
0x0003381c beq 0x337e2 |
| } while (r0 == 0);
| label_9:
0x0003381e mov r0, r5 | r0 = r5;
0x00033820 mov r1, fp | r1 = fp;
0x00033822 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00033826 cmp r0, 0 |
| if (r0 == 0) {
0x00033828 beq 0x337e2 | goto label_0;
| }
0x0003382a ldr r0, [sp, 4] | r0 = var_4h;
0x0003382c mov r1, r7 | r1 = r7;
0x0003382e bl 0x644f0 | r0 = gst_structure_is_subset ();
0x00033832 cmp r0, 0 |
| if (r0 == 0) {
0x00033834 beq 0x337e2 | goto label_0;
| }
| label_8:
0x00033836 adds r4, 1 | r4++;
| if (r4 != 1) {
0x00033838 beq 0x33866 |
0x0003383a subs.w sb, sb, 1 | sb--;
| if (sb <= sb) {
0x0003383e blo 0x3386e | goto label_5;
| }
0x00033840 ldr.w r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x00033844 b 0x337b8 | goto label_1;
| label_4:
0x00033846 ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x00033848 ubfx r0, r0, 4, 1 | r0 = (r0 >> 4) & ((1 << 1) - 1);
0x0003384a asrs r0, r0, 0x20 | r0 >>= 0x20;
0x0003384c add sp, 0xc |
0x0003384e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x00033852 ldr r1, [pc, 0x44] |
0x00033854 ldr r2, [pc, 0x44] |
0x00033856 ldr r0, [pc, 0x48] |
0x00033858 add r1, pc |
0x0003385a add r2, pc | r2 = 0x670fa;
0x0003385c add.w r1, r1, 0x1f8 | r1 = 0x672ee;
0x00033860 add r0, pc | r0 = 0x67106;
0x00033862 blx 0x20b70 | fcn_00020b70 ();
| }
| label_6:
0x00033866 movs r0, 0 | r0 = 0;
| do {
0x00033868 add sp, 0xc |
0x0003386a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x0003386e movs r0, 1 | r0 = 1;
0x00033870 add sp, 0xc |
0x00033872 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00033876 ldr r1, [pc, 0x2c] |
0x00033878 ldr r2, [pc, 0x2c] |
0x0003387a ldr r0, [pc, 0x30] |
0x0003387c add r1, pc |
0x0003387e add r2, pc | r2 = 0x6712a;
0x00033880 add.w r1, r1, 0x1f8 | r1 = 0x6731e;
0x00033884 add r0, pc | r0 = 0x67136;
0x00033886 blx 0x20b70 | fcn_00020b70 ();
0x0003388a movs r0, 0 | r0 = 0;
0x0003388c b 0x33868 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x33928 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_is_subset_structure () | void gst_caps_is_subset_structure (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00033928 push {r4, r5, r6, lr} |
| if (r0 == 0) {
0x0003392a cbz r0, 0x33962 | goto label_0;
| }
0x0003392c mov r6, r1 | r6 = r1;
| if (r1 == 0) {
0x0003392e cbz r1, 0x3397a | goto label_1;
| }
0x00033930 mov r5, r0 | r5 = r0;
0x00033932 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00033934 lsls r2, r3, 0x1b | r2 = r3 << 0x1b;
| if (r2 < r3) {
0x00033936 bmi 0x3395e | goto label_2;
| }
0x00033938 ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
| if (r3 == 0) {
0x0003393a cbz r3, 0x33976 | goto label_3;
| }
0x0003393c ldr r4, [r3, 4] | r4 = *((r3 + 4));
| if (r4 == 0) {
0x0003393e cbz r4, 0x33976 | goto label_3;
| }
0x00033940 subs r4, 1 | r4--;
| if (r4 >= 1) {
0x00033942 bpl 0x3394c | goto label_4;
| }
0x00033944 b 0x33976 | goto label_3;
| do {
0x00033946 adds r3, r4, 1 | r3 = r4 + 1;
| if (r3 == r4) {
0x00033948 beq 0x33976 | goto label_3;
| }
0x0003394a ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
| label_4:
0x0003394c ldr r3, [r3] | r3 = *(r3);
0x0003394e mov r0, r6 | r0 = r6;
0x00033950 ldr.w r1, [r3, r4, lsl 3] | offset_0 = r4 << 3;
| r1 = *((r3 + offset_0));
0x00033954 subs r4, 1 | r4--;
0x00033956 bl 0x644f0 | r0 = gst_structure_is_subset ();
0x0003395a cmp r0, 0 |
0x0003395c beq 0x33946 |
| } while (r0 == 0);
| label_2:
0x0003395e movs r0, 1 | r0 = 1;
0x00033960 pop {r4, r5, r6, pc} |
| label_0:
0x00033962 ldr r1, [pc, 0x30] |
0x00033964 ldr r2, [pc, 0x30] |
0x00033966 ldr r0, [pc, 0x34] |
0x00033968 add r1, pc |
0x0003396a add r2, pc | r2 = 0x67306;
0x0003396c add.w r1, r1, 0x22c | r1 = 0x6752e;
0x00033970 add r0, pc | r0 = 0x67312;
0x00033972 blx 0x20b70 | fcn_00020b70 ();
| label_3:
0x00033976 movs r0, 0 | r0 = 0;
| do {
0x00033978 pop {r4, r5, r6, pc} |
| label_1:
0x0003397a ldr r1, [pc, 0x24] |
0x0003397c ldr r2, [pc, 0x24] |
0x0003397e ldr r0, [pc, 0x28] |
0x00033980 add r1, pc |
0x00033982 add r2, pc | r2 = 0x6732a;
0x00033984 add.w r1, r1, 0x22c | r1 = 0x67552;
0x00033988 add r0, pc | r0 = 0x67336;
0x0003398a blx 0x20b70 | fcn_00020b70 ();
0x0003398e movs r0, 0 | r0 = 0;
0x00033990 b 0x33978 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x339ac */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_is_subset_structure_full () | void gst_caps_is_subset_structure_full (uint32_t arg1, uint32_t arg2, uint32_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000339ac push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000339b0 ldr.w r8, [pc, 0xc0] |
0x000339b4 add r8, pc | r8 = 0x6742c;
0x000339b6 cmp r0, 0 |
| if (r0 == 0) {
0x000339b8 beq 0x33a3a | goto label_2;
| }
0x000339ba mov r7, r1 | r7 = r1;
0x000339bc cmp r1, 0 |
| if (r1 == 0) {
0x000339be beq 0x33a54 | goto label_3;
| }
0x000339c0 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000339c2 mov r6, r0 | r6 = r0;
0x000339c4 lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 < r3) {
0x000339c6 bmi 0x33a34 | goto label_4;
| }
0x000339c8 ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
0x000339ca cmp r3, 0 |
| if (r3 == 0) {
0x000339cc beq 0x33a4e | goto label_5;
| }
0x000339ce ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x000339d0 cmp r4, 0 |
| if (r4 == 0) {
0x000339d2 beq 0x33a4e | goto label_5;
| }
0x000339d4 mov r5, r2 | r5 = r2;
0x000339d6 cmp r2, 0 |
| if (r2 == 0) {
0x000339d8 beq 0x33a6a | goto label_6;
| }
| label_1:
0x000339da subs r4, 1 | r4--;
| if (r4 >= 1) {
0x000339dc bpl 0x339e6 | goto label_7;
| }
0x000339de b 0x33a4e | goto label_5;
| do {
| label_0:
0x000339e0 subs r4, 1 | r4--;
| if (r4 <= 1) {
0x000339e2 blo 0x33a4e | goto label_5;
| }
0x000339e4 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
| label_7:
0x000339e6 ldr r3, [r3] | r3 = *(r3);
0x000339e8 ldr r2, [pc, 0x8c] | r2 = *(0x33a78);
0x000339ea ldr.w sb, [r3, r4, lsl 3] | offset_0 = r4 << 3;
| sb = *((r3 + offset_0));
0x000339ec str r0, [sp, 0xd0] | *((sp + 0xd0)) = r0;
0x000339ee dmb ish | __asm ("dmb ish");
0x000339f2 add.w r3, r3, r4, lsl 3 | r3 += (r4 << 3);
0x000339f6 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000339f8 dmb ish | __asm ("dmb ish");
0x000339fc mov sl, r3 | sl = r3;
| if (r3 == 0) {
0x000339fe cbnz r3, 0x33a08 |
0x00033a00 ldr.w r3, [r8, r2] | r3 = *((r8 + r2));
0x00033a04 ldr.w sl, [r3] | sl = *(r3);
| }
0x00033a08 mov r0, r5 | r0 = r5;
0x00033a0a bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00033a0e mov r3, r0 | r3 = r0;
0x00033a10 mov r0, sl | r0 = sl;
| if (r3 == 0) {
0x00033a12 cbz r3, 0x33a1c | goto label_8;
| }
0x00033a14 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00033a18 cmp r0, 0 |
0x00033a1a beq 0x339e0 |
| } while (r0 == 0);
| label_8:
0x00033a1c mov r0, r5 | r0 = r5;
0x00033a1e mov r1, sl | r1 = sl;
0x00033a20 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00033a24 cmp r0, 0 |
| if (r0 == 0) {
0x00033a26 beq 0x339e0 | goto label_0;
| }
0x00033a28 mov r1, sb | r1 = sb;
0x00033a2a mov r0, r7 | r0 = r7;
0x00033a2c bl 0x644f0 | r0 = gst_structure_is_subset ();
0x00033a30 cmp r0, 0 |
| if (r0 == 0) {
0x00033a32 beq 0x339e0 | goto label_0;
| }
| label_4:
0x00033a34 movs r0, 1 | r0 = 1;
0x00033a36 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x00033a38 strh r0, [r6, 0x3e] | *((r6 + 0x3e)) = r0;
| label_2:
0x00033a3a ldr r1, [pc, 0x40] |
0x00033a3c ldr r2, [pc, 0x40] |
0x00033a3e ldr r0, [pc, 0x44] |
0x00033a40 add r1, pc |
0x00033a42 add r2, pc | r2 = 0x674c6;
0x00033a44 add.w r1, r1, 0x24c | r1 = 0x6770e;
0x00033a48 add r0, pc | r0 = 0x674d2;
0x00033a4a blx 0x20b70 | fcn_00020b70 ();
| do {
| label_5:
0x00033a4e movs r0, 0 | r0 = 0;
0x00033a50 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x00033a54 ldr r1, [pc, 0x30] |
0x00033a56 ldr r2, [pc, 0x34] |
0x00033a58 ldr r0, [pc, 0x34] |
0x00033a5a add r1, pc |
0x00033a5c add r2, pc | r2 = 0x674ee;
0x00033a5e add.w r1, r1, 0x24c | r1 = 0x67732;
0x00033a62 add r0, pc | r0 = 0x674f6;
0x00033a64 blx 0x20b70 | fcn_00020b70 ();
0x00033a68 b 0x33a4e |
| } while (1);
| label_6:
0x00033a6a ldr r2, [pc, 0xc] | r2 = *(0x33a7a);
0x00033a6c ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00033a70 ldr r5, [r2] | r5 = *(0x33a7a);
0x00033a72 b 0x339da | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x339ac */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_is_subset_structure_full () | void gst_caps_is_subset_structure_full (uint32_t arg1, uint32_t arg2, uint32_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000339ac push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000339b0 ldr.w r8, [pc, 0xc0] |
0x000339b4 add r8, pc | r8 = 0x6742c;
0x000339b6 cmp r0, 0 |
| if (r0 == 0) {
0x000339b8 beq 0x33a3a | goto label_2;
| }
0x000339ba mov r7, r1 | r7 = r1;
0x000339bc cmp r1, 0 |
| if (r1 == 0) {
0x000339be beq 0x33a54 | goto label_3;
| }
0x000339c0 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x000339c2 mov r6, r0 | r6 = r0;
0x000339c4 lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 < r3) {
0x000339c6 bmi 0x33a34 | goto label_4;
| }
0x000339c8 ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
0x000339ca cmp r3, 0 |
| if (r3 == 0) {
0x000339cc beq 0x33a4e | goto label_5;
| }
0x000339ce ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x000339d0 cmp r4, 0 |
| if (r4 == 0) {
0x000339d2 beq 0x33a4e | goto label_5;
| }
0x000339d4 mov r5, r2 | r5 = r2;
0x000339d6 cmp r2, 0 |
| if (r2 == 0) {
0x000339d8 beq 0x33a6a | goto label_6;
| }
| label_1:
0x000339da subs r4, 1 | r4--;
| if (r4 >= 1) {
0x000339dc bpl 0x339e6 | goto label_7;
| }
0x000339de b 0x33a4e | goto label_5;
| do {
| label_0:
0x000339e0 subs r4, 1 | r4--;
| if (r4 <= 1) {
0x000339e2 blo 0x33a4e | goto label_5;
| }
0x000339e4 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
| label_7:
0x000339e6 ldr r3, [r3] | r3 = *(r3);
0x000339e8 ldr r2, [pc, 0x8c] | r2 = *(0x33a78);
0x000339ea ldr.w sb, [r3, r4, lsl 3] | offset_0 = r4 << 3;
| sb = *((r3 + offset_0));
0x000339ec str r0, [sp, 0xd0] | *((sp + 0xd0)) = r0;
0x000339ee dmb ish | __asm ("dmb ish");
0x000339f2 add.w r3, r3, r4, lsl 3 | r3 += (r4 << 3);
0x000339f6 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000339f8 dmb ish | __asm ("dmb ish");
0x000339fc mov sl, r3 | sl = r3;
| if (r3 == 0) {
0x000339fe cbnz r3, 0x33a08 |
0x00033a00 ldr.w r3, [r8, r2] | r3 = *((r8 + r2));
0x00033a04 ldr.w sl, [r3] | sl = *(r3);
| }
0x00033a08 mov r0, r5 | r0 = r5;
0x00033a0a bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00033a0e mov r3, r0 | r3 = r0;
0x00033a10 mov r0, sl | r0 = sl;
| if (r3 == 0) {
0x00033a12 cbz r3, 0x33a1c | goto label_8;
| }
0x00033a14 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00033a18 cmp r0, 0 |
0x00033a1a beq 0x339e0 |
| } while (r0 == 0);
| label_8:
0x00033a1c mov r0, r5 | r0 = r5;
0x00033a1e mov r1, sl | r1 = sl;
0x00033a20 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00033a24 cmp r0, 0 |
| if (r0 == 0) {
0x00033a26 beq 0x339e0 | goto label_0;
| }
0x00033a28 mov r1, sb | r1 = sb;
0x00033a2a mov r0, r7 | r0 = r7;
0x00033a2c bl 0x644f0 | r0 = gst_structure_is_subset ();
0x00033a30 cmp r0, 0 |
| if (r0 == 0) {
0x00033a32 beq 0x339e0 | goto label_0;
| }
| label_4:
0x00033a34 movs r0, 1 | r0 = 1;
0x00033a36 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x00033a38 strh r0, [r6, 0x3e] | *((r6 + 0x3e)) = r0;
| label_2:
0x00033a3a ldr r1, [pc, 0x40] |
0x00033a3c ldr r2, [pc, 0x40] |
0x00033a3e ldr r0, [pc, 0x44] |
0x00033a40 add r1, pc |
0x00033a42 add r2, pc | r2 = 0x674c6;
0x00033a44 add.w r1, r1, 0x24c | r1 = 0x6770e;
0x00033a48 add r0, pc | r0 = 0x674d2;
0x00033a4a blx 0x20b70 | fcn_00020b70 ();
| do {
| label_5:
0x00033a4e movs r0, 0 | r0 = 0;
0x00033a50 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x00033a54 ldr r1, [pc, 0x30] |
0x00033a56 ldr r2, [pc, 0x34] |
0x00033a58 ldr r0, [pc, 0x34] |
0x00033a5a add r1, pc |
0x00033a5c add r2, pc | r2 = 0x674ee;
0x00033a5e add.w r1, r1, 0x24c | r1 = 0x67732;
0x00033a62 add r0, pc | r0 = 0x674f6;
0x00033a64 blx 0x20b70 | fcn_00020b70 ();
0x00033a68 b 0x33a4e |
| } while (1);
| label_6:
0x00033a6a ldr r2, [pc, 0xc] | r2 = *(0x33a7a);
0x00033a6c ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00033a70 ldr r5, [r2] | r5 = *(0x33a7a);
0x00033a72 b 0x339da | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x343a4 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_map_in_place () | void gst_caps_map_in_place (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000343a4 push.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000343a8 ldr.w sb, [pc, 0xcc] |
0x000343ac add sb, pc | sb = 0x68828;
| if (r0 != 0) {
0x000343ae cbz r0, 0x343c2 |
0x000343b0 ldr r3, [pc, 0xc8] |
0x000343b2 mov r7, r2 | r7 = r2;
0x000343b4 ldr r2, [r0] | r2 = *(r0);
0x000343b6 mov r5, r0 | r5 = r0;
0x000343b8 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000343bc ldr r3, [r3] | r3 = *(0x3447c);
0x000343be cmp r2, r3 |
| if (r2 == r3) {
0x000343c0 beq 0x343dc | goto label_2;
| }
| }
0x000343c2 ldr r1, [pc, 0xbc] |
0x000343c4 ldr r2, [pc, 0xbc] |
0x000343c6 ldr r0, [pc, 0xc0] |
0x000343c8 add r1, pc |
0x000343ca add r2, pc | r2 = 0x68852;
0x000343cc add.w r1, r1, 0x324 | r1 = 0x68b72;
0x000343d0 add r0, pc | r0 = 0x6885e;
0x000343d2 blx 0x20b70 | fcn_00020b70 ();
| do {
| label_1:
0x000343d6 movs r0, 0 | r0 = 0;
0x000343d8 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000343da ldrh r0, [r7, 0x3e] | r0 = *((r7 + 0x3e));
| label_2:
0x000343dc mov r6, r1 | r6 = r1;
0x000343de bl 0x4acc4 | r0 = gst_mini_object_is_writable ();
| if (r0 == 0) {
0x000343e2 cbz r0, 0x34444 | goto label_3;
| }
0x000343e4 cmp r6, 0 |
| if (r6 == 0) {
0x000343e6 beq 0x34460 | goto label_4;
| }
0x000343e8 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000343ea ldr.w r8, [r3, 4] | r8 = *((r3 + 4));
0x000343ee cmp.w r8, 0 |
0x000343f0 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 == r0) {
0x000343f2 beq 0x3445a | goto label_5;
| }
0x000343f4 movs r4, 0 | r4 = 0;
0x000343f6 b 0x3440c | goto label_6;
| label_0:
0x000343f8 mov r2, r7 | r2 = r7;
0x000343fa mov r0, sl | r0 = sl;
0x000343fc mov r1, fp | r1 = fp;
0x000343fe adds r4, 1 | r4++;
0x00034400 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00034402 cmp r0, 0 |
0x00034404 beq 0x343d6 |
| } while (r0 == 0);
0x00034406 cmp r8, r4 |
| if (r8 == r4) {
0x00034408 beq 0x3445a | goto label_5;
| }
0x0003440a ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
| label_6:
0x0003440c ldr r3, [r3] | r3 = *(r3);
0x0003440e dmb ish | __asm ("dmb ish");
0x00034412 add.w r3, r3, r4, lsl 3 | r3 += (r4 << 3);
0x00034416 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00034418 dmb ish | __asm ("dmb ish");
0x0003441c ldr r2, [r5, 0x24] | r2 = *((r5 + 0x24));
0x0003441e mov sl, r3 | sl = r3;
0x00034420 ldr r2, [r2] | r2 = *(r2);
0x00034422 ldr.w fp, [r2, r4, lsl 3] | offset_0 = r4 << 3;
| fp = *((r2 + offset_0));
0x00034426 cmp r3, 0 |
| if (r3 != 0) {
0x00034428 bne 0x343f8 | goto label_0;
| }
0x0003442a ldr r3, [pc, 0x60] | r3 = *(0x3448e);
0x0003442c ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00034430 ldr r0, [r3] | r0 = *(0x3448e);
0x00034432 bl 0x35aa0 | gst_caps_features_copy ();
0x00034436 mov r1, r4 | r1 = r4;
0x00034438 mov sl, r0 | sl = r0;
0x0003443a mov r2, r0 | r2 = r0;
0x0003443c mov r0, r5 | r0 = r5;
0x0003443e bl 0x32ff8 | gst_caps_set_features ();
0x00034442 b 0x343f8 | goto label_0;
| label_3:
0x00034444 ldr r1, [pc, 0x48] |
0x00034446 ldr r2, [pc, 0x4c] |
0x00034448 ldr r0, [pc, 0x4c] |
0x0003444a add r1, pc |
0x0003444c add r2, pc | r2 = 0x688e6;
0x0003444e add.w r1, r1, 0x324 | r1 = 0x68c02;
0x00034452 add r0, pc | r0 = 0x688ee;
0x00034454 blx 0x20b70 | fcn_00020b70 ();
0x00034458 b 0x343d6 | goto label_1;
| label_5:
0x0003445a movs r0, 1 | r0 = 1;
0x0003445c pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00034460 ldr r1, [pc, 0x38] |
0x00034462 ldr r2, [pc, 0x3c] |
0x00034464 ldr r0, [pc, 0x3c] |
0x00034466 add r1, pc |
0x00034468 add r2, pc | r2 = 0x6890e;
0x0003446a add.w r1, r1, 0x324 | r1 = 0x68c2a;
0x0003446e add r0, pc | r0 = 0x68916;
0x00034470 blx 0x20b70 | fcn_00020b70 ();
0x00034474 b 0x343d6 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x32ba4 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_merge_structure () | void gst_caps_merge_structure (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x00032ba4 ldr r2, [pc, 0xe0] |
0x00032ba6 push.w {r4, r5, r6, r7, r8, lr} |
0x00032ba8 rors r0, r6 | __asm ("rors r0, r6");
0x00032baa sub sp, 8 |
0x00032bac add r2, pc | r2 = 0x65838;
| if (r0 != 0) {
0x00032bae cbz r0, 0x32bc0 |
0x00032bb0 ldr r3, [pc, 0xd8] |
0x00032bb2 mov r8, r1 | r8 = r1;
0x00032bb4 ldr r1, [r0] | r1 = *(r0);
0x00032bb6 mov r5, r0 | r5 = r0;
0x00032bb8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00032bba ldr r3, [r3] | r3 = *(0x32c8c);
0x00032bbc cmp r1, r3 |
| if (r1 == r3) {
0x00032bbe beq 0x32bdc | goto label_2;
| }
| }
0x00032bc0 ldr r1, [pc, 0xcc] |
0x00032bc2 movs r5, 0 | r5 = 0;
0x00032bc4 ldr r2, [pc, 0xcc] |
0x00032bc6 ldr r0, [pc, 0xd0] |
0x00032bc8 add r1, pc | r1 = 0x6585c;
0x00032bca add r2, pc | r2 = 0x65862;
0x00032bcc adds r1, 0x68 | r1 += 0x68;
0x00032bce add r0, pc | r0 = 0x6586c;
0x00032bd0 blx 0x20b70 | fcn_00020b70 ();
| do {
| label_1:
0x00032bd4 mov r0, r5 | r0 = r5;
0x00032bd6 add sp, 8 |
0x00032bd8 pop.w {r4, r5, r6, r7, r8, pc} |
| label_2:
0x00032bdc cmp.w r8, 0 |
0x00032be0 beq 0x32bd4 |
| } while (r8 == 0);
0x00032be2 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00032be4 lsls r1, r3, 0x1b | r1 = r3 << 0x1b;
| if (r1 < r3) {
0x00032be6 bmi 0x32c3a | goto label_3;
| }
0x00032be8 ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
0x00032bea ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00032bec subs r4, 1 | r4--;
| if (r4 < 1) {
0x00032bee bmi 0x32c48 | goto label_4;
| }
0x00032bf0 ldr r1, [pc, 0xa8] | r1 = *(0x32c9c);
0x00032bf2 ldr r7, [r2, r1] | r7 = *((r2 + r1));
0x00032bf4 b 0x32c06 |
| while (r3 != 0) {
0x00032bf6 ldr r1, [r7] | r1 = *(r7);
0x00032bf8 subs r4, 1 | r4--;
0x00032bfa bl 0x35724 | r0 = gst_caps_features_is_equal ();
| if (r0 != 0) {
0x00032bfe cbnz r0, 0x32c2e | goto label_5;
| }
| label_0:
0x00032c00 adds r3, r4, 1 | r3 = r4 + 1;
| if (r3 == r4) {
0x00032c02 beq 0x32c48 | goto label_4;
| }
0x00032c04 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00032c06 ldr r3, [r3] | r3 = *(r3);
0x00032c08 ldr.w r6, [r3, r4, lsl 3] | offset_0 = r4 << 3;
| r6 = *((r3 + offset_0));
0x00032c0c dmb ish | __asm ("dmb ish");
0x00032c10 add.w r3, r3, r4, lsl 3 | r3 += (r4 << 3);
0x00032c14 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00032c16 dmb ish | __asm ("dmb ish");
0x00032c1a mov r0, r3 | r0 = r3;
0x00032c1c cmp r3, 0 |
0x00032c1e bne 0x32bf6 |
| }
0x00032c20 ldr r0, [r7] | r0 = *(r7);
0x00032c22 subs r4, 1 | r4--;
0x00032c24 mov r1, r0 | r1 = r0;
0x00032c26 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00032c2a cmp r0, 0 |
| if (r0 == 0) {
0x00032c2c beq 0x32c00 | goto label_0;
| }
| label_5:
0x00032c2e mov r1, r6 | r1 = r6;
0x00032c30 mov r0, r8 | r0 = r8;
0x00032c32 bl 0x644f0 | gst_structure_is_subset ();
0x00032c34 mrrc2 p8, 0, r2, sp, c0 | __asm ("mrrc2 p8, 0, r2, sp, c0");
| if (r0 == 0) {
0x00032c38 beq 0x32c00 | goto label_0;
| }
| label_3:
0x00032c3a mov r0, r8 | r0 = r8;
0x00032c3c bl 0x60df4 | gst_structure_free ();
0x00032c40 mov r0, r5 | r0 = r5;
0x00032c42 add sp, 8 |
0x00032c44 pop.w {r4, r5, r6, r7, r8, pc} |
| label_4:
0x00032c48 mov r0, r5 | r0 = r5;
0x00032c4a bl 0x4adb0 | r0 = gst_mini_object_make_writable ();
0x00032c4e adds r4, r0, 4 | r4 = r0 + 4;
0x00032c50 mov r5, r0 | r5 = r0;
0x00032c52 movs r3, 0 | r3 = 0;
0x00032c54 mov r1, r4 | r1 = r4;
0x00032c56 mov r0, r8 | r0 = r8;
0x00032c58 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00032c5c str r3, [sp, 4] | var_4h = r3;
0x00032c5e bl 0x61624 | r0 = gst_structure_set_parent_refcount ();
0x00032c62 cmp r0, 0 |
| if (r0 == 0) {
0x00032c64 beq 0x32bd4 | goto label_1;
| }
0x00032c66 ldr r0, [sp, 4] | r0 = var_4h;
| if (r0 == 0) {
0x00032c68 cbz r0, 0x32c74 | goto label_6;
| }
0x00032c6a mov r1, r4 | r1 = r4;
0x00032c6c bl 0x353a4 | r0 = gst_caps_features_set_parent_refcount ();
0x00032c70 cmp r0, 0 |
| if (r0 == 0) {
0x00032c72 beq 0x32bd4 | goto label_1;
| }
| label_6:
0x00032c74 ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x00032c76 movs r2, 1 | r2 = 1;
0x00032c78 mov r1, sp | r1 = sp;
0x00032c7a blx 0x216ec | fcn_000216ec ();
0x00032c7e mov r0, r5 | r0 = r5;
0x00032c80 add sp, 8 |
0x00032c82 pop.w {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x32ca0 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_merge_structure_full () | void gst_caps_merge_structure_full (int16_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00032ca0 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00032ca4 sub sp, 0xc |
0x00032ca6 ldr r7, [pc, 0x100] |
0x00032ca8 add r7, pc | r7 = 0x65a56;
| if (r0 != 0) {
0x00032caa cbz r0, 0x32cbc |
0x00032cac ldr r3, [pc, 0xfc] |
0x00032cae mov sb, r2 | sb = r2;
0x00032cb0 ldr r2, [r0] | r2 = *(r0);
0x00032cb2 mov r5, r0 | r5 = r0;
0x00032cb4 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00032cb6 ldr r3, [r3] | r3 = *(0x32dac);
0x00032cb8 cmp r2, r3 |
| if (r2 == r3) {
0x00032cba beq 0x32cd8 | goto label_3;
| }
| }
0x00032cbc ldr r1, [pc, 0xf0] |
0x00032cbe movs r5, 0 | r5 = 0;
0x00032cc0 ldr r2, [pc, 0xf0] |
0x00032cc2 ldr r0, [pc, 0xf4] |
0x00032cc4 add r1, pc | r1 = 0x65a78;
0x00032cc6 add r2, pc | r2 = 0x65a7e;
0x00032cc8 adds r1, 0x84 | r1 += 0x84;
0x00032cca add r0, pc | r0 = 0x65a88;
0x00032ccc blx 0x20b70 | fcn_00020b70 ();
| do {
| label_1:
0x00032cd0 mov r0, r5 | r0 = r5;
0x00032cd2 add sp, 0xc |
0x00032cd4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00032cd8 mov r8, r1 | r8 = r1;
0x00032cda cmp r1, 0 |
0x00032cdc beq 0x32cd0 |
| } while (r1 == 0);
0x00032cde ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00032ce0 lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 < r3) {
0x00032ce2 bmi 0x32d48 | goto label_4;
| }
0x00032ce4 mov r6, sb | r6 = sb;
0x00032ce6 cmp.w sb, 0 |
| if (sb == 0) {
0x00032cea beq 0x32da0 | goto label_5;
| }
| label_2:
0x00032cec ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00032cee ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00032cf0 subs r4, 1 | r4--;
| if (r4 >= 1) {
0x00032cf2 bpl 0x32cfc | goto label_6;
| }
0x00032cf4 b 0x32d62 | goto label_7;
| do {
| label_0:
0x00032cf6 subs r4, 1 | r4--;
| if (r4 <= 1) {
0x00032cf8 blo 0x32d62 | goto label_7;
| }
0x00032cfa ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
| label_6:
0x00032cfc ldr r3, [r3] | r3 = *(r3);
0x00032cfe ldr r2, [pc, 0xbc] | r2 = *(0x32dbe);
0x00032d00 ldr.w sl, [r3, r4, lsl 3] | offset_0 = r4 << 3;
| sl = *((r3 + offset_0));
0x00032d04 dmb ish | __asm ("dmb ish");
0x00032d06 ldrh r3, [r3, 0x3a] | r3 = *((r3 + 0x3a));
0x00032d08 add.w r3, r3, r4, lsl 3 | r3 += (r4 << 3);
0x00032d0c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00032d0e dmb ish | __asm ("dmb ish");
0x00032d12 mov fp, r3 |
| if (r3 == 0) {
0x00032d14 cbnz r3, 0x32d1c |
0x00032d16 ldr r3, [r7, r2] | r3 = *((r7 + r2));
0x00032d18 ldr.w fp, [r3] | fp = *(r3);
| }
0x00032d1c mov r0, r6 | r0 = r6;
0x00032d1e bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00032d22 mov r3, r0 | r3 = r0;
0x00032d24 mov r0, fp | r0 = fp;
| if (r3 == 0) {
0x00032d26 cbz r3, 0x32d30 | goto label_8;
| }
0x00032d28 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00032d2c cmp r0, 0 |
0x00032d2e beq 0x32cf6 |
| } while (r0 == 0);
| label_8:
0x00032d30 mov r0, r6 | r0 = r6;
0x00032d32 mov r1, fp | r1 = fp;
0x00032d34 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00032d38 cmp r0, 0 |
| if (r0 == 0) {
0x00032d3a beq 0x32cf6 | goto label_0;
| }
0x00032d3c mov r1, sl | r1 = sl;
0x00032d3e mov r0, r8 | r0 = r8;
0x00032d40 bl 0x644f0 | r0 = gst_structure_is_subset ();
0x00032d44 cmp r0, 0 |
| if (r0 == 0) {
0x00032d46 beq 0x32cf6 | goto label_0;
| }
| label_4:
0x00032d48 mov r0, r8 | r0 = r8;
0x00032d4a bl 0x60df4 | gst_structure_free ();
0x00032d4e cmp.w sb, 0 |
| if (sb == 0) {
0x00032d52 beq 0x32cd0 | goto label_1;
| }
0x00032d54 mov r0, sb | r0 = sb;
0x00032d56 bl 0x352a8 | gst_caps_features_free ();
0x00032d5a mov r0, r5 | r0 = r5;
0x00032d5c add sp, 0xc |
0x00032d5e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00032d62 mov r0, r5 | r0 = r5;
0x00032d64 bl 0x4adb0 | r0 = gst_mini_object_make_writable ();
0x00032d68 mov r5, r0 | r5 = r0;
0x00032d6a mov r0, r8 | r0 = r8;
0x00032d6c adds r4, r5, 4 | r4 = r5 + 4;
0x00032d6e str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00032d72 mov r1, r4 | r1 = r4;
0x00032d74 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x00032d78 bl 0x61624 | r0 = gst_structure_set_parent_refcount ();
0x00032d7c cmp r0, 0 |
| if (r0 == 0) {
0x00032d7e beq 0x32cd0 | goto label_1;
| }
0x00032d80 ldr r0, [sp, 4] | r0 = var_4h;
| if (r0 == 0) {
0x00032d82 cbz r0, 0x32d8e | goto label_9;
| }
0x00032d84 mov r1, r4 | r1 = r4;
0x00032d86 bl 0x353a4 | r0 = gst_caps_features_set_parent_refcount ();
0x00032d8a cmp r0, 0 |
| if (r0 == 0) {
0x00032d8c beq 0x32cd0 | goto label_1;
| }
| label_9:
0x00032d8e ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x00032d90 movs r2, 1 | r2 = 1;
0x00032d92 mov r1, sp | r1 = sp;
0x00032d94 blx 0x216ec | fcn_000216ec ();
0x00032d98 mov r0, r5 | r0 = r5;
0x00032d9a add sp, 0xc |
0x00032d9c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00032da0 ldr r3, [pc, 0x18] | r3 = *(0x32dbc);
0x00032da2 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00032da4 ldr r6, [r3] | r6 = *(0x32dbc);
0x00032da6 b 0x32cec | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x32ca0 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_merge_structure_full () | void gst_caps_merge_structure_full (int16_t arg1, uint32_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00032ca0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00032ca4 sub sp, 0xc |
0x00032ca6 ldr r7, [pc, 0x100] |
0x00032ca8 add r7, pc | r7 = 0x65a56;
| if (r0 != 0) {
0x00032caa cbz r0, 0x32cbc |
0x00032cac ldr r3, [pc, 0xfc] |
0x00032cae mov sb, r2 | sb = r2;
0x00032cb0 ldr r2, [r0] | r2 = *(r0);
0x00032cb2 mov r5, r0 | r5 = r0;
0x00032cb4 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00032cb6 ldr r3, [r3] | r3 = *(0x32dac);
0x00032cb8 cmp r2, r3 |
| if (r2 == r3) {
0x00032cba beq 0x32cd8 | goto label_3;
| }
| }
0x00032cbc ldr r1, [pc, 0xf0] |
0x00032cbe movs r5, 0 | r5 = 0;
0x00032cc0 ldr r2, [pc, 0xf0] |
0x00032cc2 ldr r0, [pc, 0xf4] |
0x00032cc4 add r1, pc | r1 = 0x65a78;
0x00032cc6 add r2, pc | r2 = 0x65a7e;
0x00032cc8 adds r1, 0x84 | r1 += 0x84;
0x00032cca add r0, pc | r0 = 0x65a88;
0x00032ccc blx 0x20b70 | fcn_00020b70 ();
| do {
| label_1:
0x00032cd0 mov r0, r5 | r0 = r5;
0x00032cd2 add sp, 0xc |
0x00032cd4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00032cd8 mov r8, r1 | r8 = r1;
0x00032cda cmp r1, 0 |
0x00032cdc beq 0x32cd0 |
| } while (r1 == 0);
0x00032cde ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00032ce0 lsls r3, r3, 0x1b | r3 <<= 0x1b;
| if (r3 < r3) {
0x00032ce2 bmi 0x32d48 | goto label_4;
| }
0x00032ce4 mov r6, sb | r6 = sb;
0x00032ce6 cmp.w sb, 0 |
| if (sb == 0) {
0x00032cea beq 0x32da0 | goto label_5;
| }
| label_2:
0x00032cec ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00032cee ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00032cf0 subs r4, 1 | r4--;
| if (r4 >= 1) {
0x00032cf2 bpl 0x32cfc | goto label_6;
| }
0x00032cf4 b 0x32d62 | goto label_7;
| do {
| label_0:
0x00032cf6 subs r4, 1 | r4--;
| if (r4 <= 1) {
0x00032cf8 blo 0x32d62 | goto label_7;
| }
0x00032cfa ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
| label_6:
0x00032cfc ldr r3, [r3] | r3 = *(r3);
0x00032cfe ldr r2, [pc, 0xbc] | r2 = *(0x32dbe);
0x00032d00 ldr.w sl, [r3, r4, lsl 3] | offset_0 = r4 << 3;
| sl = *((r3 + offset_0));
0x00032d04 dmb ish | __asm ("dmb ish");
0x00032d06 ldrh r3, [r3, 0x3a] | r3 = *((r3 + 0x3a));
0x00032d08 add.w r3, r3, r4, lsl 3 | r3 += (r4 << 3);
0x00032d0c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00032d0e dmb ish | __asm ("dmb ish");
0x00032d12 mov fp, r3 |
| if (r3 == 0) {
0x00032d14 cbnz r3, 0x32d1c |
0x00032d16 ldr r3, [r7, r2] | r3 = *((r7 + r2));
0x00032d18 ldr.w fp, [r3] | fp = *(r3);
| }
0x00032d1c mov r0, r6 | r0 = r6;
0x00032d1e bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00032d22 mov r3, r0 | r3 = r0;
0x00032d24 mov r0, fp | r0 = fp;
| if (r3 == 0) {
0x00032d26 cbz r3, 0x32d30 | goto label_8;
| }
0x00032d28 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00032d2c cmp r0, 0 |
0x00032d2e beq 0x32cf6 |
| } while (r0 == 0);
| label_8:
0x00032d30 mov r0, r6 | r0 = r6;
0x00032d32 mov r1, fp | r1 = fp;
0x00032d34 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00032d38 cmp r0, 0 |
| if (r0 == 0) {
0x00032d3a beq 0x32cf6 | goto label_0;
| }
0x00032d3c mov r1, sl | r1 = sl;
0x00032d3e mov r0, r8 | r0 = r8;
0x00032d40 bl 0x644f0 | r0 = gst_structure_is_subset ();
0x00032d44 cmp r0, 0 |
| if (r0 == 0) {
0x00032d46 beq 0x32cf6 | goto label_0;
| }
| label_4:
0x00032d48 mov r0, r8 | r0 = r8;
0x00032d4a bl 0x60df4 | gst_structure_free ();
0x00032d4e cmp.w sb, 0 |
| if (sb == 0) {
0x00032d52 beq 0x32cd0 | goto label_1;
| }
0x00032d54 mov r0, sb | r0 = sb;
0x00032d56 bl 0x352a8 | gst_caps_features_free ();
0x00032d5a mov r0, r5 | r0 = r5;
0x00032d5c add sp, 0xc |
0x00032d5e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00032d62 mov r0, r5 | r0 = r5;
0x00032d64 bl 0x4adb0 | r0 = gst_mini_object_make_writable ();
0x00032d68 mov r5, r0 | r5 = r0;
0x00032d6a mov r0, r8 | r0 = r8;
0x00032d6c adds r4, r5, 4 | r4 = r5 + 4;
0x00032d6e str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00032d72 mov r1, r4 | r1 = r4;
0x00032d74 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x00032d78 bl 0x61624 | r0 = gst_structure_set_parent_refcount ();
0x00032d7c cmp r0, 0 |
| if (r0 == 0) {
0x00032d7e beq 0x32cd0 | goto label_1;
| }
0x00032d80 ldr r0, [sp, 4] | r0 = var_4h;
| if (r0 == 0) {
0x00032d82 cbz r0, 0x32d8e | goto label_9;
| }
0x00032d84 mov r1, r4 | r1 = r4;
0x00032d86 bl 0x353a4 | r0 = gst_caps_features_set_parent_refcount ();
0x00032d8a cmp r0, 0 |
| if (r0 == 0) {
0x00032d8c beq 0x32cd0 | goto label_1;
| }
| label_9:
0x00032d8e ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x00032d90 movs r2, 1 | r2 = 1;
0x00032d92 mov r1, sp | r1 = sp;
0x00032d94 blx 0x216ec | fcn_000216ec ();
0x00032d98 mov r0, r5 | r0 = r5;
0x00032d9a add sp, 0xc |
0x00032d9c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00032da0 ldr r3, [pc, 0x18] | r3 = *(0x32dbc);
0x00032da2 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00032da4 ldr r6, [r3] | r6 = *(0x32dbc);
0x00032da6 b 0x32cec | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x33eb4 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_simplify () | void gst_caps_simplify (int16_t arg1, int16_t arg2) {
| int16_t var_0h_3;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch_2;
| int16_t var_20h;
| int16_t var_28h;
| int16_t var_40h;
| r0 = arg1;
| r1 = arg2;
0x00033eb4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00033eb8 sub sp, 0x4c |
0x00033eba ldr.w sb, [pc, 0x250] |
0x00033ebe add sb, pc | sb = 0x67fd0;
| if (r0 != 0) {
0x00033ec0 cbz r0, 0x33ed2 |
0x00033ec2 ldr r3, [pc, 0x24c] |
0x00033ec4 mov r6, r0 | r6 = r0;
0x00033ec6 ldr r2, [r0] | r2 = *(r0);
0x00033ec8 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00033ecc ldr r3, [r3] | r3 = *(0x34112);
0x00033ece cmp r2, r3 |
| if (r2 == r3) {
0x00033ed0 beq 0x33ef0 | goto label_9;
| }
| }
0x00033ed2 ldr r1, [pc, 0x240] |
0x00033ed4 movs r6, 0 | r6 = 0;
0x00033ed6 ldr r2, [pc, 0x240] |
0x00033ed8 ldr r0, [pc, 0x240] |
0x00033eda add r1, pc |
0x00033edc add r2, pc | r2 = 0x67ffa;
0x00033ede add.w r1, r1, 0x2cc | r1 = gst_tag_list_get_uint64_index;
0x00033ee2 add r0, pc | r0 = 0x68002;
0x00033ee4 blx 0x20b70 | fcn_00020b70 ();
| do {
| label_0:
0x00033ee8 mov r0, r6 | r0 = r6;
0x00033eea add sp, 0x4c |
0x00033eec pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x00033ef0 ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
0x00033ef2 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00033ef4 cmp r3, 0 |
0x00033ef6 beq 0x33ee8 |
| } while (r3 == 0);
0x00033ef8 subs r4, r3, 1 | r4 = r3 - 1;
| if (r4 == r3) {
0x00033efa beq 0x33ee8 | goto label_0;
| }
0x00033efc bl 0x4adb0 | gst_mini_object_make_writable ();
0x00033f00 ldr r1, [pc, 0x21c] |
0x00033f02 mov r6, r0 | r6 = r0;
0x00033f04 ldr r0, [r0, 0x24] | r0 = *((r0 + 0x24));
0x00033f06 add r1, pc | r1 = 0x6802a;
0x00033f08 blx 0x1febc | fcn_0001febc ();
0x00033f0c cmp r4, 0 |
| if (r4 < 0) {
0x00033f0e blt 0x33ee8 | goto label_0;
| }
0x00033f10 add r3, sp, 0x20 | r3 += var_20h;
0x00033f12 mov r7, r4 | r7 = r4;
0x00033f14 str r3, [sp] | *(sp) = r3;
0x00033f16 mov fp, r4 |
0x00033f18 ldr r3, [pc, 0x208] |
0x00033f1a add r3, pc | r3 = 0x68042;
0x00033f1c str r3, [sp, 0xc] | var_ch = r3;
| label_3:
0x00033f1e ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00033f20 lsls r2, r7, 3 | r2 = r7 << 3;
0x00033f22 str r2, [sp, 0x10] | var_10h = r2;
0x00033f24 ldr r3, [r3] | r3 = *(r3);
0x00033f26 adds r2, r3, r2 | r2 = r3 + r2;
0x00033f28 ldr.w r5, [r3, r7, lsl 3] | offset_0 = r7 << 3;
| r5 = *((r3 + offset_0));
0x00033f2c dmb ish | __asm ("dmb ish");
0x00033f30 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00033f32 dmb ish | __asm ("dmb ish");
| if (r3 == 0) {
0x00033f36 cbnz r3, 0x33f40 |
0x00033f38 ldr r3, [pc, 0x1ec] |
0x00033f3a ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00033f3c adds r0, 3 | r0 += 3;
0x00033f3e ldr r3, [r3] | r3 = *(0x34128);
| }
0x00033f40 str r3, [sp, 4] | var_4h_2 = r3;
0x00033f42 ldr r3, [r6, 0x24] | r3 = *((r6 + 0x24));
0x00033f44 ldr r3, [r3] | r3 = *(r3);
0x00033f46 ldr.w sl, [r3, fp, lsl 3] | offset_1 = fp << 3;
| sl = *((r3 + offset_1));
0x00033f4a dmb ish | __asm ("dmb ish");
0x00033f4e add.w r3, r3, fp, lsl 3 | r3 += (fp << 3);
0x00033f52 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00033f54 dmb ish | __asm ("dmb ish");
| if (r4 == 0) {
0x00033f58 cbnz r4, 0x33f62 |
0x00033f5a ldr r3, [pc, 0x1cc] | r3 = *(0x3412a);
0x00033f5c ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00033f60 ldr r4, [r3] | r4 = *(0x3412a);
| }
0x00033f62 mov r0, r5 | r0 = r5;
0x00033f64 bl 0x61888 | r0 = gst_structure_get_name_id ();
0x00033f68 mov r3, r0 | r3 = r0;
0x00033f6a mov r0, sl | r0 = sl;
0x00033f6c mov sl, r3 | sl = r3;
0x00033f6e bl 0x61888 | r0 = gst_structure_get_name_id ();
0x00033f72 cmp sl, r0 |
| if (sl == r0) {
0x00033f74 beq 0x34062 | goto label_10;
| }
| label_4:
0x00033f76 mov fp, r7 |
| label_5:
0x00033f78 mov r4, fp | r4 = fp;
0x00033f7a mov r8, r6 | r8 = r6;
0x00033f7c str.w fp, [sp, 0x14] | __asm ("str.w fp, [var_14h]");
0x00033f80 b 0x33f86 |
| while (r4 == r7) {
| label_1:
0x00033f82 subs r4, 1 | r4--;
| if (r4 <= 1) {
0x00033f84 blo 0x3404e | goto label_11;
| }
| label_2:
0x00033f86 cmp r4, r7 |
0x00033f88 beq 0x33f82 |
| }
0x00033f8a ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x00033f8e ldr r3, [r3] | r3 = *(r3);
0x00033f90 ldr.w r6, [r3, r4, lsl 3] | offset_2 = r4 << 3;
| r6 = *((r3 + offset_2));
0x00033f94 dmb ish | __asm ("dmb ish");
0x00033f98 add.w r3, r3, r4, lsl 3 | r3 += (r4 << 3);
0x00033f9c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00033f9e dmb ish | __asm ("dmb ish");
0x00033fa2 mov sl, r3 | sl = r3;
| if (r3 == 0) {
0x00033fa4 cbnz r3, 0x33fb0 |
0x00033fa6 ldr r3, [pc, 0x180] | r3 = *(0x3412a);
0x00033fa8 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00033fac ldr.w sl, [r3] | sl = *(0x3412a);
| }
0x00033fb0 mov r0, r5 | r0 = r5;
0x00033fb2 bl 0x61888 | r0 = gst_structure_get_name_id ();
0x00033fb6 mov fp, r0 |
0x00033fb8 mov r0, r6 | r0 = r6;
0x00033fba bl 0x61888 | r0 = gst_structure_get_name_id ();
0x00033fbe cmp fp, r0 |
| if (fp != r0) {
0x00033fc0 bne 0x3404e | goto label_11;
| }
0x00033fc2 ldr r0, [sp, 4] | r0 = var_4h_2;
0x00033fc4 mov r1, sl | r1 = sl;
0x00033fc6 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00033fca cmp r0, 0 |
| if (r0 == 0) {
0x00033fcc beq 0x3404e | goto label_11;
| }
0x00033fce movs r2, 0x28 | r2 = 0x28;
0x00033fd0 movs r1, 0 | r1 = 0;
0x00033fd2 ldr r0, [sp] | r0 = *(sp);
0x00033fd4 blx 0x20488 | fcn_00020488 ();
0x00033fd8 mov r2, r6 | r2 = r6;
0x00033fda mov r1, r5 | r1 = r5;
0x00033fdc add r0, sp, 0x1c | r0 += var_1ch_2;
0x00033fde bl 0x32274 | r0 = fcn_00032274 (r0, r1, r2);
| if (r0 != 0) {
0x00033fe2 cbz r0, 0x34012 |
0x00033fe4 ldr.w sl, [sp, 0x1c] | sl = var_1ch_2;
0x00033fe8 cmp.w sl, 0 |
| if (sl == 0) {
0x00033fec beq 0x340dc | goto label_12;
| }
0x00033fee ldr.w r1, [sl, 4] | r1 = *((sl + 4));
0x00033ff2 cmp r1, 0 |
| if (r1 == 0) {
0x00033ff4 beq 0x34076 | goto label_13;
| }
0x00033ff6 ldr r3, [pc, 0x134] | r3 = *(0x3412e);
0x00033ff8 movs r2, 0 | r2 = 0;
0x00033ffa mov r0, sl | r0 = sl;
0x00033ffc ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00034000 mov r1, r3 | r1 = r3;
0x00034002 str r3, [sp, 8] | var_8h_2 = r3;
0x00034004 blx 0x20e5c | ctype_b_loc ();
0x00034006 vmin.s32 q2, q5, q0 | __asm ("vmin.s32 q2, q5, q0");
0x0003400a blx 0x20060 | fcn_00020060 ();
0x0003400e movs r3, 0 | r3 = 0;
0x00034010 str r3, [sp, 0x1c] | var_1ch_2 = r3;
| }
0x00034012 ldr r2, [sp] | r2 = *(sp);
0x00034014 mov r0, r5 | r0 = r5;
0x00034016 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00034018 str r6, [sp, 0x40] | var_40h = r6;
0x0003401a bl 0x624f0 | gst_structure_foreach ();
0x0003401c invalid |
| if (r3 == 0) {
0x00034020 beq 0x33f82 | goto label_1;
| }
0x00034022 add.w sl, sp, 0x28 | sl += var_28h;
0x00034026 mov r0, sl | r0 = sl;
0x00034028 blx 0x215c0 | r0 = fcn_000215c0 ();
0x0003402c cmp r0, 0 |
| if (r0 == 0) {
0x0003402e beq 0x340aa | goto label_14;
| }
0x00034030 mov r0, r5 | r0 = r5;
0x00034032 bl 0x62460 | gst_structure_n_fields ();
0x00034036 str r0, [sp, 8] | var_8h_2 = r0;
0x00034038 mov r0, r6 | r0 = r6;
0x0003403a bl 0x62460 | gst_structure_n_fields ();
0x0003403e ldr r3, [sp, 8] | r3 = var_8h_2;
0x00034040 cmp r3, r0 |
| if (r3 == r0) {
0x00034042 beq 0x340f6 | goto label_15;
| }
0x00034044 mov r0, sl | r0 = sl;
0x00034046 blx 0x1fefc | g_source_set_priority ();
0x0003404a subs r4, 1 | r4--;
| if (r4 >= 1) {
0x0003404c bhs 0x33f86 | goto label_2;
| }
| label_11:
0x0003404e ldr.w fp, [sp, 0x14] | fp = var_14h;
0x00034052 mov r6, r8 | r6 = r8;
| label_6:
0x00034054 subs r7, 1 | r7--;
| if (r7 >= 1) {
0x00034056 bhs.w 0x33f1e | goto label_3;
| }
0x00034058 add r7, sp, 0x188 | r7 = sp + 0x188;
| label_7:
0x0003405a mov r0, r6 | r0 = r6;
0x0003405c add sp, 0x4c |
0x0003405e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x00034062 ldr r0, [sp, 4] | r0 = var_4h_2;
0x00034064 mov r1, r4 | r1 = r4;
0x00034066 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x0003406a cmp r0, 0 |
| if (r0 == 0) {
0x0003406c beq 0x33f76 | goto label_4;
| }
0x0003406e cmp.w fp, 0 |
| if (fp >= 0) {
0x00034072 bge 0x33f78 | goto label_5;
| }
0x00034074 b 0x34054 | goto label_6;
| label_13:
0x00034076 ldr.w r6, [sl] | r6 = *(sl);
0x0003407a mov r0, sl | r0 = sl;
0x0003407c str r1, [sp, 8] | var_8h_2 = r1;
0x0003407e blx 0x20060 | fcn_00020060 ();
0x00034082 ldr r1, [sp, 8] | r1 = var_8h_2;
| if (r6 == 0) {
0x00034084 cbz r6, 0x340dc | goto label_12;
| }
0x00034086 mov r0, r5 | r0 = r5;
0x00034088 bl 0x61624 | gst_structure_set_parent_refcount ();
0x0003408c mov r0, r5 | r0 = r5;
0x0003408e mov r5, r6 | r5 = r6;
0x00034090 bl 0x60df4 | gst_structure_free ();
0x00034094 add.w r1, r8, 4 | r1 = r8 + 4;
0x00034098 mov r0, r6 | r0 = r6;
0x0003409a bl 0x61624 | gst_structure_set_parent_refcount ();
0x0003409e ldr.w r3, [r8, 0x24] | r3 = *((r8 + 0x24));
0x000340a0 adds r0, 0x24 | r0 += 0x24;
0x000340a2 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000340a4 ldr r3, [r3] | r3 = *(r3);
0x000340a6 str r6, [r3, r2] | *((r3 + r2)) = r6;
0x000340a8 b 0x33f82 | goto label_1;
| label_14:
0x000340aa mov r0, r5 | r0 = r5;
0x000340ac bl 0x62460 | r0 = gst_structure_n_fields ();
0x000340b0 mov sl, r0 | sl = r0;
0x000340b2 mov r0, r6 | r0 = r6;
0x000340b4 bl 0x62460 | r0 = gst_structure_n_fields ();
0x000340b8 cmp sl, r0 |
| if (sl <= r0) {
0x000340ba ble.w 0x33f82 | goto label_1;
| }
0x000340be mov r0, r5 | r0 = r5;
0x000340c0 bl 0x6349c | gst_structure_to_string ();
0x000340c2 vld3.16 {d20[2], d21[2], d22[2]}, [ip], r2 | __asm ("vld3.16 {d20[2], d21[2], d22[2]}, [ip], r2");
0x000340c6 mov r0, r6 | r0 = r6;
0x000340c8 bl 0x6349c | r0 = gst_structure_to_string ();
0x000340cc mov r6, r0 | r6 = r0;
0x000340ce mov r0, sl | r0 = sl;
0x000340d0 blx 0x1fe70 | fcn_0001fe70 ();
0x000340d4 mov r0, r6 | r0 = r6;
0x000340d6 blx 0x1fe70 | fcn_0001fe70 ();
0x000340da b 0x33f82 | goto label_1;
| label_12:
0x000340dc ldr.w fp, [sp, 0x14] | fp = var_14h;
0x000340e0 mov r6, r8 | r6 = r8;
| label_8:
0x000340e2 mov r1, r7 | r1 = r7;
0x000340e4 mov r0, r6 | r0 = r6;
0x000340e6 bl 0x32e04 | gst_caps_remove_structure ();
0x000340ea subs r7, 1 | r7--;
0x000340ec add.w fp, fp, -1 |
| if (r7 >= 1) {
0x000340f0 bhs.w 0x33f1e | goto label_3;
| }
0x000340f4 b 0x3405a | goto label_7;
| label_15:
0x000340f6 mov r3, r8 | r3 = r8;
0x000340f8 mov r8, r6 | r8 = r6;
0x000340fa ldr r1, [sp, 0x20] | r1 = var_20h;
0x000340fc mov r2, sl | r2 = sl;
0x000340fe mov r0, r8 | r0 = r8;
0x00034100 ldr.w fp, [sp, 0x14] | fp = var_14h;
0x00034104 mov r6, r3 | r6 = r3;
0x00034106 bl 0x61af4 | gst_structure_id_take_value ();
0x0003410a b 0x340e2 | goto label_8;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libgstreamer-1.0.so.0.2202.0 @ 0x34c10 */
| #include <stdint.h>
|
; (fcn) sym.gst_caps_subtract () | void gst_caps_subtract (int16_t arg_24h, uint32_t arg1, uint32_t arg2) {
| int16_t var_0h_2;
| int16_t var_4h_3;
| int16_t var_8h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h_2;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
0x00034c10 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00034c14 sub sp, 0x3c |
0x00034c16 ldr r4, [pc, 0x2ec] |
0x00034c18 add r4, pc | r4 = 0x69b22;
0x00034c1a cmp r0, 0 |
| if (r0 != 0) {
0x00034c1c beq 0x34cfe |
0x00034c1e mov r7, r1 | r7 = r1;
0x00034c20 cmp r1, 0 |
| if (r1 == 0) {
0x00034c22 beq 0x34d1e | goto label_9;
| }
0x00034c24 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00034c26 ands r3, r3, 0x10 | r3 &= 0x10;
| if (r3 == r3) {
0x00034c2a bne 0x34c38 |
0x00034c2c ldr r2, [r0, 0x24] | r2 = *((r0 + 0x24));
0x00034c2e cmp r2, 0 |
| if (r2 == 0) {
0x00034c30 beq 0x34cf4 | goto label_10;
| }
0x00034c32 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00034c34 cmp r2, 0 |
| if (r2 == 0) {
0x00034c36 beq 0x34cf4 | goto label_10;
| }
| }
0x00034c38 ldr r2, [r7, 0xc] | r2 = *((r7 + 0xc));
0x00034c3a lsls r2, r2, 0x1b | r2 <<= 0x1b;
| if (r2 >= r2) {
0x00034c3c bmi 0x34cf4 |
0x00034c3e ldr r2, [r7, 0x24] | r2 = *((r7 + 0x24));
0x00034c40 cmp r2, 0 |
| if (r2 == 0) {
0x00034c42 beq.w 0x34e2c | goto label_11;
| }
0x00034c46 ldr r6, [r2, 4] | r6 = *((r2 + 4));
0x00034c48 cmp r6, 0 |
| if (r6 == 0) {
0x00034c4a beq.w 0x34e2c | goto label_11;
| }
0x00034c4e cmp r3, 0 |
| if (r3 != 0) {
0x00034c50 bne 0x34d34 | goto label_12;
| }
0x00034c52 mov r8, r3 | r8 = r3;
0x00034c54 mov r5, r7 | r5 = r7;
0x00034c56 bl 0x32ae0 | fcn_00032ae0 (r0);
0x00034c5a mov sl, r8 | sl = r8;
0x00034c5c mov fp, r0 |
0x00034c5e mov r7, r8 | r7 = r8;
0x00034c60 add r3, sp, 0x30 | r3 += var_30h;
0x00034c62 str r3, [sp, 0xc] | var_0h = r3;
0x00034c64 str r6, [sp, 0x1c] | var_1ch = r6;
| label_4:
0x00034c66 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00034c68 ldr r3, [r3] | r3 = *(r3);
0x00034c6a ldr.w r2, [r3, r7, lsl 3] | offset_0 = r7 << 3;
| r2 = *((r3 + offset_0));
0x00034c6e add.w r3, r3, r7, lsl 3 | r3 += (r7 << 3);
0x00034c72 str r2, [sp] | *(sp) = r2;
0x00034c74 dmb ish | __asm ("dmb ish");
0x00034c78 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00034c7a dmb ish | __asm ("dmb ish");
| if (r3 == 0) {
0x00034c7e cbnz r3, 0x34c86 |
0x00034c80 ldr r3, [pc, 0x284] |
0x00034c82 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00034c84 ldr r3, [r3] | r3 = *(0x34f08);
| }
0x00034c86 str r3, [sp, 8] | var_8h = r3;
0x00034c88 cmp.w sl, 0 |
| if (sl != 0) {
0x00034c8c beq 0x34c96 |
0x00034c8e mov r0, fp | r0 = fp;
0x00034c90 mov fp, sl |
0x00034c92 bl 0x349b8 | gst_caps_unref ();
| }
0x00034c96 bl 0x326e0 | gst_caps_new_empty ();
0x00034c9a ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00034c9e mov sl, r0 | sl = r0;
0x00034ca0 ldr.w sb, [r3, 4] | sb = *((r3 + 4));
0x00034ca2 str r0, [sp, 0x10] | *((sp + 0x10)) = r0;
0x00034ca4 cmp.w sb, 0 |
| if (sb == 0) {
0x00034ca8 beq.w 0x34e3e | goto label_13;
| }
0x00034cac adds r2, r0, 4 | r2 = r0 + 4;
0x00034cae movs r6, 0 | r6 = 0;
0x00034cb0 mov sl, r2 | sl = r2;
0x00034cb2 str r7, [sp, 0x10] | var_4h = r7;
0x00034cb4 str r0, [sp, 4] | var_4h_3 = r0;
0x00034cb6 str r5, [sp, 0x14] | var_14h_2 = r5;
| label_1:
0x00034cb8 ldr r3, [r3] | r3 = *(r3);
0x00034cba ldr.w r7, [r3, r6, lsl 3] | offset_1 = r6 << 3;
| r7 = *((r3 + offset_1));
0x00034cbe dmb ish | __asm ("dmb ish");
0x00034cc2 add.w r3, r3, r6, lsl 3 | r3 += (r6 << 3);
0x00034cc6 ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x00034cc8 dmb ish | __asm ("dmb ish");
| if (r5 == 0) {
0x00034ccc cbnz r5, 0x34cd4 |
0x00034cce ldr r3, [pc, 0x238] | r3 = *(0x34f0a);
0x00034cd0 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00034cd2 ldr r5, [r3] | r5 = *(0x34f0a);
| }
0x00034cd4 mov r0, r5 | r0 = r5;
0x00034cd6 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00034cda cmp r0, 0 |
| if (r0 == 0) {
0x00034cdc beq 0x34d4a | goto label_14;
| }
0x00034cde ldr r1, [pc, 0x22c] |
0x00034ce0 ldr r2, [pc, 0x22c] |
0x00034ce2 ldr r0, [pc, 0x230] |
0x00034ce4 add r1, pc |
0x00034ce6 add r2, pc | r2 = 0x69bfa;
0x00034ce8 add.w r1, r1, 0x398 | r1 = 0x69f8e;
0x00034cec add r0, pc | r0 = 0x69c06;
0x00034cee blx 0x20b70 | fcn_00020b70 ();
0x00034cf2 b 0x34d12 | goto label_0;
| }
| label_10:
0x00034cf4 add sp, 0x3c |
0x00034cf6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00034cfa b.w 0x326e0 | void (*0x326e0)() ();
| }
0x00034cfe ldr r1, [pc, 0x218] |
0x00034d00 ldr r2, [pc, 0x218] |
0x00034d02 ldr r0, [pc, 0x21c] |
0x00034d04 add r1, pc |
0x00034d06 add r2, pc | r2 = 0x69c26;
0x00034d08 add.w r1, r1, 0x398 | r1 = 0x69fba;
0x00034d0a strb r6, [r4, 5] | *((r4 + 5)) = r6;
0x00034d0c add r0, pc | r0 = 0x69c32;
0x00034d0e blx 0x20b70 | fcn_00020b70 ();
| do {
| label_0:
0x00034d12 mov.w sb, 0 | sb = 0;
| label_8:
0x00034d16 mov r0, sb | r0 = sb;
0x00034d18 add sp, 0x3c |
0x00034d1a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x00034d1e ldr r1, [pc, 0x204] |
0x00034d20 ldr r2, [pc, 0x204] |
0x00034d22 ldr r0, [pc, 0x208] |
0x00034d24 add r1, pc |
0x00034d26 add r2, pc | r2 = 0x69c52;
0x00034d28 add.w r1, r1, 0x398 | r1 = 0x69fe6;
0x00034d2c add r0, pc | r0 = 0x69c5e;
0x00034d2e blx 0x20b70 | fcn_00020b70 ();
0x00034d32 b 0x34d12 |
| } while (1);
| label_12:
0x00034d34 ldr r1, [pc, 0x1f8] |
0x00034d36 ldr r2, [pc, 0x1fc] |
0x00034d38 ldr r0, [pc, 0x1fc] |
0x00034d3a add r1, pc |
0x00034d3c add r2, pc | r2 = 0x69c76;
0x00034d3e add.w r1, r1, 0x398 | r1 = 0x6a006;
0x00034d40 strb r6, [r4, 5] | *((r4 + 5)) = r6;
0x00034d42 add r0, pc | r0 = 0x69c7e;
0x00034d44 blx 0x20b70 | fcn_00020b70 ();
0x00034d48 b 0x34d12 | goto label_0;
| label_14:
0x00034d4a mov r0, r7 | r0 = r7;
0x00034d4c bl 0x61888 | r0 = gst_structure_get_name_id ();
0x00034d50 mov r8, r0 | r8 = r0;
0x00034d52 ldr r0, [sp] | r0 = *(sp);
0x00034d54 bl 0x61888 | r0 = gst_structure_get_name_id ();
0x00034d58 cmp r8, r0 |
| if (r8 == r0) {
0x00034d5a beq 0x34dbc | goto label_15;
| }
| label_2:
0x00034d5c mov r0, r7 | r0 = r7;
0x00034d5e bl 0x6169c | gst_structure_copy ();
0x00034d62 str r0, [sp, 0x30] | var_30h = r0;
| if (r5 == 0) {
0x00034d64 cbz r5, 0x34d82 | goto label_16;
| }
0x00034d66 mov r0, r5 | r0 = r5;
0x00034d68 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00034d6c mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x00034d6e cbnz r0, 0x34db0 | goto label_17;
| }
0x00034d70 ldr r3, [pc, 0x194] | r3 = *(0x34f08);
0x00034d72 mov r0, r5 | r0 = r5;
0x00034d74 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00034d76 ldr r1, [r3] | r1 = *(0x34f08);
0x00034d78 bl 0x35724 | r0 = gst_caps_features_is_equal ();
| if (r0 == 0) {
0x00034d7c cbz r0, 0x34db0 | goto label_17;
| }
0x00034d7e ldr r0, [sp, 0x30] | r0 = var_30h;
0x00034d80 mov r5, r7 | r5 = r7;
| do {
| label_16:
0x00034d82 mov r1, sl | r1 = sl;
0x00034d84 str r5, [sp, 0x34] | var_34h = r5;
0x00034d86 bl 0x61624 | r0 = gst_structure_set_parent_refcount ();
| if (r0 != 0) {
0x00034d8a cbz r0, 0x34da4 |
0x00034d8c ldr r0, [sp, 0x34] | r0 = var_34h;
| if (r0 != 0) {
0x00034d8e cbz r0, 0x34d98 |
0x00034d90 mov r1, sl | r1 = sl;
0x00034d92 bl 0x353a4 | r0 = gst_caps_features_set_parent_refcount ();
| if (r0 == 0) {
0x00034d96 cbz r0, 0x34da4 | goto label_3;
| }
| }
0x00034d98 ldr r3, [sp, 4] | r3 = var_4h_3;
0x00034d9a movs r2, 1 | r2 = 1;
0x00034d9c ldr r1, [sp, 0xc] | r1 = var_0h;
0x00034d9e ldr r0, [r3, 0x24] | r0 = *((r3 + 0x24));
0x00034da0 blx 0x216ec | fcn_000216ec ();
| }
| label_3:
0x00034da4 adds r6, 1 | r6++;
0x00034da6 cmp sb, r6 |
| if (sb == r6) {
0x00034da8 beq 0x34e36 | goto label_18;
| }
0x00034daa ldr.w r3, [fp, 0x24] | r3 = *(arg_24h);
0x00034dae b 0x34cb8 | goto label_1;
| label_17:
0x00034db0 mov r0, r5 | r0 = r5;
0x00034db2 bl 0x35aa0 | r0 = gst_caps_features_copy ();
0x00034db6 mov r5, r0 | r5 = r0;
0x00034db8 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00034dba b 0x34d82 |
| } while (1);
| label_15:
0x00034dbc ldr r1, [sp, 8] | r1 = var_8h;
0x00034dbe mov r0, r5 | r0 = r5;
0x00034dc0 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00034dc4 cmp r0, 0 |
| if (r0 == 0) {
0x00034dc6 beq 0x34d5c | goto label_2;
| }
0x00034dc8 ldr r2, [sp] | r2 = *(sp);
0x00034dca mov r1, r7 | r1 = r7;
0x00034dcc add r0, sp, 0x2c | r0 += var_2ch;
0x00034dce bl 0x32274 | r0 = fcn_00032274 (r0, r1, r2);
0x00034dd2 cmp r0, 0 |
| if (r0 != 0) {
0x00034dd4 bne 0x34e68 | goto label_19;
| }
0x00034dd6 mov r0, r7 | r0 = r7;
0x00034dd8 bl 0x6169c | gst_structure_copy ();
0x00034ddc str r0, [sp, 0x30] | var_30h = r0;
| if (r5 != 0) {
0x00034dde cbz r5, 0x34e00 |
0x00034de0 mov r0, r5 | r0 = r5;
0x00034de2 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00034de6 mov r7, r0 | r7 = r0;
0x00034de8 cmp r0, 0 |
| if (r0 != 0) {
0x00034dea bne 0x34eec | goto label_20;
| }
0x00034dec ldr r3, [pc, 0x118] | r3 = *(0x34f08);
0x00034dee mov r0, r5 | r0 = r5;
0x00034df0 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00034df2 ldr r1, [r3] | r1 = *(0x34f08);
0x00034df4 bl 0x35724 | r0 = gst_caps_features_is_equal ();
0x00034df8 cmp r0, 0 |
| if (r0 == 0) {
0x00034dfa beq 0x34eec | goto label_20;
| }
0x00034dfc ldr r0, [sp, 0x30] | r0 = var_30h;
0x00034dfe mov r5, r7 | r5 = r7;
| }
| label_7:
0x00034e00 ldr r3, [sp, 4] | r3 = var_4h_3;
0x00034e02 str r5, [sp, 0x34] | var_34h = r5;
0x00034e04 adds r5, r3, 4 | r5 = r3 + 4;
0x00034e06 mov r1, r5 | r1 = r5;
0x00034e08 bl 0x61624 | r0 = gst_structure_set_parent_refcount ();
0x00034e0c cmp r0, 0 |
| if (r0 == 0) {
0x00034e0e beq 0x34da4 | goto label_3;
| }
0x00034e10 ldr r0, [sp, 0x34] | r0 = var_34h;
| if (r0 == 0) {
0x00034e12 cbz r0, 0x34e1e | goto label_21;
| }
0x00034e14 mov r1, r5 | r1 = r5;
0x00034e16 bl 0x353a4 | r0 = gst_caps_features_set_parent_refcount ();
0x00034e1a cmp r0, 0 |
| if (r0 == 0) {
0x00034e1c beq 0x34da4 | goto label_3;
| }
| label_21:
0x00034e1e ldr r3, [sp, 4] | r3 = var_4h_3;
0x00034e20 movs r2, 1 | r2 = 1;
0x00034e22 add r1, sp, 0x30 | r1 += var_30h;
0x00034e24 ldr r0, [r3, 0x24] | r0 = *((r3 + 0x24));
0x00034e26 blx 0x216ec | fcn_000216ec ();
0x00034e2a b 0x34da4 | goto label_3;
| label_11:
0x00034e2c add sp, 0x3c |
0x00034e2e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00034e32 b.w 0x34618 | void (*0x34618)() ();
| label_18:
0x00034e36 ldr r7, [sp, 0x10] | r7 = var_4h;
0x00034e38 ldr.w sl, [sp, 4] | sl = var_4h_3;
0x00034e3c ldr r5, [sp, 0x14] | r5 = var_14h_2;
| label_13:
0x00034e3e ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x00034e42 cmp r3, 0 |
| if (r3 == 0) {
0x00034e44 beq 0x34ef8 | goto label_22;
| }
0x00034e46 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00034e48 cmp r3, 0 |
| if (r3 == 0) {
0x00034e4a beq 0x34ef8 | goto label_22;
| }
0x00034e4c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00034e4e adds r7, 1 | r7++;
0x00034e50 cmp r3, r7 |
| if (r3 != r7) {
0x00034e52 bne.w 0x34c66 | goto label_4;
| }
0x00034e54 add r7, sp, 0x20 | r7 = sp + 0x20;
0x00034e56 mov r0, fp | r0 = fp;
0x00034e58 bl 0x349b8 | gst_caps_unref ();
0x00034e5c mov r0, sl | r0 = sl;
0x00034e5e add sp, 0x3c |
0x00034e60 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00034e64 b.w 0x33eb4 | void (*0x33eb4)() ();
| label_19:
0x00034e68 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00034e6a cmp r2, 0 |
| if (r2 == 0) {
0x00034e6c beq 0x34ee4 | goto label_23;
| }
0x00034e6e ldr r3, [sp, 4] | r3 = var_4h_3;
0x00034e70 mov r7, r2 | r7 = r2;
0x00034e72 str.w fp, [sp, 0x20] | __asm ("str.w fp, [var_20h_2]");
0x00034e76 mov fp, r2 |
0x00034e78 str r6, [sp, 0x24] | var_24h = r6;
0x00034e7a add.w r8, r3, 4 | r8 = r3 + 4;
0x00034e7e add r3, sp, 0x30 | r3 += var_30h;
0x00034e80 str r3, [sp, 0x18] | var_18h = r3;
0x00034e82 b 0x34ebc | goto label_24;
| label_5:
0x00034e84 ldr r2, [pc, 0x80] | r2 = *(0x34f08);
0x00034e86 mov r0, r5 | r0 = r5;
0x00034e88 ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x00034e8a ldr r1, [r2] | r1 = *(0x34f08);
0x00034e8c bl 0x35724 | r0 = gst_caps_features_is_equal ();
| if (r0 == 0) {
0x00034e90 cbz r0, 0x34ed2 | goto label_25;
| }
0x00034e92 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00034e94 mov r3, r6 | r3 = r6;
| do {
| label_6:
0x00034e96 mov r1, r8 | r1 = r8;
0x00034e98 str r3, [sp, 0x34] | var_34h = r3;
0x00034e9a bl 0x61624 | r0 = gst_structure_set_parent_refcount ();
| if (r0 != 0) {
0x00034e9e cbz r0, 0x34eb8 |
0x00034ea0 ldr r0, [sp, 0x34] | r0 = var_34h;
| if (r0 != 0) {
0x00034ea2 cbz r0, 0x34eac |
0x00034ea4 mov r1, r8 | r1 = r8;
0x00034ea6 bl 0x353a4 | r0 = gst_caps_features_set_parent_refcount ();
| if (r0 == 0) {
0x00034eaa cbz r0, 0x34eb8 | goto label_26;
| }
| }
0x00034eac ldr r3, [sp, 4] | r3 = var_4h_3;
0x00034eae movs r2, 1 | r2 = 1;
0x00034eb0 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00034eb2 ldr r0, [r3, 0x24] | r0 = *((r3 + 0x24));
0x00034eb4 blx 0x216ec | fcn_000216ec ();
| }
| label_26:
0x00034eb8 ldr r7, [r7, 4] | r7 = *((r7 + 4));
| if (r7 == 0) {
0x00034eba cbz r7, 0x34ede | goto label_27;
| }
| label_24:
0x00034ebc ldr r0, [r7] | r0 = *(r7);
0x00034ebe mov r3, r5 | r3 = r5;
0x00034ec0 str r0, [sp, 0x30] | var_30h = r0;
0x00034ec2 cmp r5, 0 |
0x00034ec4 beq 0x34e96 |
| } while (r5 == 0);
0x00034ec6 mov r0, r5 | r0 = r5;
0x00034ec8 bl 0x35804 | r0 = gst_caps_features_is_any ();
0x00034ecc mov r6, r0 | r6 = r0;
0x00034ece cmp r0, 0 |
| if (r0 == 0) {
0x00034ed0 beq 0x34e84 | goto label_5;
| }
| label_25:
0x00034ed2 mov r0, r5 | r0 = r5;
0x00034ed4 bl 0x35aa0 | r0 = gst_caps_features_copy ();
0x00034ed8 mov r3, r0 | r3 = r0;
0x00034eda ldr r0, [sp, 0x30] | r0 = var_30h;
0x00034edc b 0x34e96 | goto label_6;
| label_27:
0x00034ede mov r2, fp | r2 = fp;
0x00034ee0 ldrd fp, r6, [sp, 0x20] | __asm ("ldrd fp, r6, [var_20h_2]");
| label_23:
0x00034ee4 mov r0, r2 | r0 = r2;
0x00034ee6 blx 0x20060 | fcn_00020060 ();
0x00034eea b 0x34da4 | goto label_3;
| label_20:
0x00034eec mov r0, r5 | r0 = r5;
0x00034eee bl 0x35aa0 | r0 = gst_caps_features_copy ();
0x00034ef2 mov r5, r0 | r5 = r0;
0x00034ef4 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00034ef6 b 0x34e00 | goto label_7;
| label_22:
0x00034ef8 mov r0, fp | r0 = fp;
0x00034efa mov sb, sl | sb = sl;
0x00034efc bl 0x349b8 | gst_caps_unref ();
0x00034f00 b 0x34d16 | goto label_8;
| }
[*] Function system used 1 times libgstreamer-1.0.so.0.2202.0