[*] Binary protection state of libgstrtp.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libgstrtp.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstrtp.so @ 0x194b4 */
| #include <stdint.h>
|
; (fcn) fcn.000194b4 () | void fcn_000194b4 (int16_t arg_0h, int16_t arg_4h, int16_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_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_74h;
| int16_t var_b0h;
| int16_t var_bch;
| r0 = arg1;
| r1 = arg2;
| if (? < ?) {
0x000194b4 strbhs pc, [r0, 0x8df] | *((r0 + 0x8df)) = pc;
| }
0x000194b8 ldr.w r3, [pc, 0x5c0] |
0x000194bc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000194c0 mov sb, r0 | sb = r0;
0x000194c2 add r2, pc | r2 += pc;
0x000194c4 vpush {d8} | __asm ("vpush {d8}");
0x000194c8 sub sp, 0xc4 |
0x000194ca ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000194cc ldr r3, [r3] | r3 = *(0x19a7c);
0x000194ce str r3, [sp, 0xbc] | var_bch = r3;
0x000194d0 mov.w r3, 0 | r3 = 0;
0x000194d4 ldr.w r3, [r0, 0x1a4] | r3 = *(arg_0hx1a4);
0x000194d6 adds r1, 0xa4 | r1 += 0xa4;
0x000194d8 str r1, [sp, 0x24] | var_24h = r1;
0x000194da cmp r3, 2 |
0x000194dc str r3, [sp, 0x4c] | var_4ch = r3;
| if (r3 == 2) {
0x000194de beq.w 0x19724 | goto label_18;
| }
0x000194e2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000194e4 cmp r3, 0 |
| if (r3 == 0) {
0x000194e6 beq.w 0x199a2 | goto label_19;
| }
0x000194ea ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000194ec lsls r2, r3, 0x12 | r2 = r3 << 0x12;
0x000194ee itt mi |
| if (r2 >= r3) {
0x000194f0 movmi r2, 0 | r2 = 0;
| }
| if (r2 >= r3) {
0x000194f2 strmi r2, [sp, 0x54] | var_54h = r2;
| }
| if (r2 >= r3) {
0x000194f4 bpl.w 0x19a0e | goto label_20;
| }
| label_14:
0x000194f8 ands r2, r3, 0x40 | r2 = r3 & 0x40;
0x000194fc it eq |
| if (r2 != r3) {
0x000194fe streq r2, [sp, 0x58] | var_58h = r2;
| }
| if (r2 != r3) {
0x00019500 bne.w 0x199fa | goto label_21;
| }
| label_13:
0x00019504 ubfx r3, r3, 9, 1 | r3 = (r3 >> 9) & ((1 << 1) - 1);
0x00019508 ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x0001950c ldr r1, [sp, 0x24] | r1 = var_24h;
0x0001950e str r3, [sp, 0x48] | var_48h = r3;
0x00019510 blx 0x69e4 | fcn_000069e4 ();
0x00019512 invalid |
| label_9:
0x00019514 ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x00019518 movs r1, 0 | r1 = 0;
0x0001951a blx 0x6b2c | fcn_00006b2c ();
0x0001951e str r0, [sp, 0x30] | var_30h = r0;
0x00019520 str r1, [sp, 0x50] | var_50h = r1;
0x00019522 movs r1, 0 | r1 = 0;
0x00019524 ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x00019526 lsls r4, r7, 6 | r4 = r7 << 6;
0x00019528 blx 0x6510 | fcn_00006510 ();
0x0001952c strd r0, r1, [sp, 0x28] | __asm ("strd r0, r1, [var_28h]");
0x00019530 ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x00019534 blx 0x64c4 | r0 = g_list_free ();
0x00019538 mov r5, r0 | r5 = r0;
0x0001953a cmp r0, 0 |
| if (r0 == 0) {
0x0001953c beq.w 0x19782 | goto label_22;
| }
0x00019540 mov r1, r0 | r1 = r0;
0x00019542 ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x00019546 blx 0x70f8 | fcn_000070f8 ();
0x0001954a mov r1, r5 | r1 = r5;
0x0001954c mov r4, r0 | r4 = r0;
0x0001954e bl 0x18020 | r0 = fcn_00018020 (r0, r1);
0x00019552 subs r5, r5, r0 | r5 -= r0;
0x00019554 ldr.w fp, [sb, 0x1b0] | fp = *((sb + 0x1b0));
0x00019558 cmp r5, 4 |
0x0001955a add r4, r0 | r4 += r0;
0x0001955c str r0, [sp, 0x5c] | var_5ch = r0;
| if (r5 < 4) {
0x0001955e bls.w 0x19880 | goto label_10;
| }
0x00019562 ldr.w r3, [pc, 0x51c] |
0x00019566 add r3, pc | r3 = 0x32fec;
0x00019568 str r3, [sp, 0x38] | var_38h = r3;
0x0001956a ldr.w r3, [pc, 0x518] |
0x0001956e add r3, pc | r3 = 0x32ff8;
0x00019570 str r3, [sp, 0x44] | var_44h = r3;
0x00019572 movs r3, 0 | r3 = 0;
0x00019574 str r3, [sp, 0x40] | var_40h = r3;
0x00019576 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00019578 subs r3, 0 |
0x0001957a it ne |
| if (r3 == 0) {
0x0001957c movne r3, 1 | r3 = 1;
| }
0x0001957e strd fp, r3, [sp, 0x1c] | __asm ("strd fp, r3, [var_1ch]");
0x00019582 b 0x1959a |
| while (r2 == 0) {
| label_1:
0x00019584 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00019586 subs r5, r5, r6 | r5 -= r6;
0x00019588 movs r2, 1 | r2 = 1;
0x0001958a add r1, sp, 0x60 | r1 += var_60h;
0x0001958c blx 0x73a8 | fcn_000073a8 ();
0x00019590 cmp r5, 4 |
0x00019592 add.w r4, r8, r6 | r4 = r8 + r6;
| if (r5 < 4) {
0x00019596 bls.w 0x19874 | goto label_23;
| }
0x0001959a subs r5, 3 | r5 -= 3;
0x0001959c add.w r8, r4, 3 | r8 = r4 + 3;
0x000195a0 mov r1, r5 | r1 = r5;
0x000195a2 mov r0, r8 | r0 = r8;
0x000195a4 bl 0x18020 | fcn_00018020 (r0, r1);
0x000195a8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000195aa mov r6, r0 | r6 = r0;
0x000195ac cmp r5, r0 |
0x000195ae ite ne |
| if (r5 == r0) {
0x000195b0 movne r3, 0 | r3 = 0;
| }
| if (r5 != r0) {
0x000195b2 andeq r3, r3, 1 | r3 &= 1;
| }
| if (r3 != 0) {
0x000195b6 cbz r3, 0x195c2 |
0x000195b8 ldr.w r3, [sb, 0x1a8] | r3 = *((sb + 0x1a8));
0x000195bc cmp r3, 0 |
| if (r3 == 0) {
0x000195be beq.w 0x19874 | goto label_23;
| }
| }
0x000195c2 ldr.w r3, [sb, 0x1b4] | r3 = *((sb + 0x1b4));
0x000195c6 str r6, [sp, 0x60] | var_60h = r6;
0x000195c8 cmp r3, 0 |
| if (r3 == 0) {
0x000195ca beq 0x196b0 | goto label_24;
| }
0x000195cc ldr.w r2, [sb, 0x1b8] | r2 = *((sb + 0x1b8));
0x000195d0 cmp r2, 0 |
0x000195d2 beq 0x19584 |
| }
0x000195d4 movs r2, 0 | r2 = 0;
0x000195d6 ldr r1, [sp, 0x38] | r1 = var_38h;
0x000195d8 str r2, [sp] | *(sp) = r2;
0x000195da mov r0, sb | r0 = sb;
0x000195dc movs r2, 0x40 | r2 = 0x40;
0x000195de blx 0x6ab8 | r0 = gst_caps_merge ();
0x000195e2 cmp r0, 0 |
| if (r0 == 0) {
0x000195e4 beq.w 0x19a56 | goto label_25;
| }
0x000195e8 ldr.w r4, [sb, 0x1b4] | r4 = *((sb + 0x1b4));
0x000195ec cmp r4, 0 |
| if (r4 == 0) {
0x000195ee beq 0x196a6 | goto label_26;
| }
0x000195f0 ldr.w r0, [sb, 0x19c] | r0 = *((sb + 0x19c));
0x000195f4 movs r1, 0 | r1 = 0;
0x000195f6 blx 0x70c8 | fcn_000070c8 ();
0x000195fa ldr.w r0, [sb, 0x1a0] | r0 = *((sb + 0x1a0));
0x000195fe movs r1, 0 | r1 = 0;
0x00019600 blx 0x70c8 | fcn_000070c8 ();
0x00019604 ldr r1, [sp, 0x44] | r1 = var_44h;
0x00019606 mov r0, r4 | r0 = r4;
0x00019608 movs r2, 0 | r2 = 0;
0x0001960a blx 0x6ff4 | fcn_00006ff4 ();
0x0001960c ldcl p6, c4, [r4], 0x10 | __asm ("ldcl p6, c4, [r4], 0x10");
0x00019610 str r0, [sp, 0x34] | var_34h = r0;
0x00019612 blx 0x6750 | fcn_00006750 ();
0x00019616 ldr r3, [r4] | r3 = *(r4);
0x00019618 cmp r3, 0 |
| if (r3 == 0) {
0x0001961a beq 0x196a0 | goto label_27;
| }
0x0001961c add r3, sp, 0x64 | r3 += var_64h;
0x0001961e mov sl, r5 | sl = r5;
0x00019620 ldr r6, [sp, 0x34] | r6 = var_34h;
0x00019622 add r7, sp, 0x6c | r7 += var_6ch;
0x00019624 add.w fp, sp, 0x68 |
0x00019628 mov r5, r3 | r5 = r3;
0x0001962a str.w r8, [sp, 0x3c] | __asm ("str.w r8, [var_3ch]");
0x0001962e b 0x19642 |
| while (r8 != 0) {
0x00019630 mov r3, r4 | r3 = r4;
0x00019632 ldrd r1, r2, [sb, 0x19c] | __asm ("ldrd r1, r2, aav.0x000000ff");
0x00019636 mov r0, sb | r0 = sb;
0x00019638 bl 0x1746c | fcn_0001746c (r0, r1, r2, r3);
0x0001963c ldr r3, [r6, 4]! | r3 = *((r6 += 4));
| if (r3 == 0) {
0x00019640 cbz r3, 0x1969a | goto label_28;
| }
| label_0:
0x00019642 movs r3, 0 | r3 = 0;
0x00019644 strd r3, r3, [sp, 0x64] | __asm ("strd r3, r3, [var_64h]");
0x00019648 ldr r0, [r6] | r0 = *(r6);
0x0001964a blx 0x6a90 | fcn_00006a90 ();
0x0001964e movs r2, 0 | r2 = 0;
0x00019650 mov r8, r0 | r8 = r0;
0x00019652 mov r1, r0 | r1 = r0;
0x00019654 mov r0, r2 | r0 = r2;
0x00019656 blx 0x712c | fcn_0000712c ();
0x0001965a movs r2, 2 | r2 = 2;
0x0001965c mov r1, r7 | r1 = r7;
0x0001965e mov r4, r0 | r4 = r0;
0x00019660 blx 0x6c08 | gst_buffer_pool_set_config ();
0x00019664 ldr r2, [sp, 0x74] | r2 = var_74h;
0x00019666 mov r1, r8 | r1 = r8;
0x00019668 ldr r0, [r6] | r0 = *(r6);
0x0001966a mov r3, fp | r3 = fp;
0x0001966c str r5, [sp] | *(sp) = r5;
0x0001966e blx 0x684c | fcn_0000684c ();
0x00019672 mov r1, r7 | r1 = r7;
0x00019674 mov r8, r0 | r8 = r0;
0x00019676 mov r0, r4 | r0 = r4;
0x00019678 blx 0x63f0 | fcn_000063f0 ();
0x0001967c mov r2, r8 | r2 = r8;
0x0001967e movs r1, 0 | r1 = 0;
0x00019680 mov r0, r4 | r0 = r4;
0x00019682 blx 0x71b4 | gst_rtp_base_audio_payload_get_type ();
0x00019686 cmp.w r8, 0 |
0x0001968a bne 0x19630 |
| }
0x0001968c mov r0, r4 | r0 = r4;
0x0001968e blx 0x6b14 | fcn_00006b14 ();
0x00019692 ldr r3, [r6, 4]! | r3 = *((r6 += 4));
0x00019696 cmp r3, 0 |
| if (r3 != 0) {
0x00019698 bne 0x19642 | goto label_0;
| }
| label_28:
0x0001969a ldr.w r8, [sp, 0x3c] | r8 = var_3ch;
0x0001969e mov r5, sl | r5 = sl;
| label_27:
0x000196a0 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000196a2 blx 0x7278 | fcn_00007278 ();
| label_26:
0x000196a6 movs r3, 0 | r3 = 0;
0x000196a8 ldr r6, [sp, 0x60] | r6 = var_60h;
0x000196aa str.w r3, [sb, 0x1b8] | __asm ("str.w r3, aav.0x000000ff");
0x000196ae b 0x19584 | goto label_1;
| label_24:
0x000196b0 ldrb r3, [r4, 3] | r3 = *((r4 + 3));
0x000196b2 and r3, r3, 0x1f | r3 &= 0x1f;
0x000196b6 subs r3, 7 | r3 -= 7;
0x000196b8 cmp r3, 1 |
0x000196ba itt ls |
| if (r3 > 1) {
0x000196bc addls r3, r6, 3 | r3 = r6 + 3;
| }
| if (r3 <= 1) {
0x000196be addls r3, r3, r4 | r3 += r4;
| goto label_29;
| }
| if (r3 > 1) {
| label_29:
0x000196c0 bhi.w 0x19584 | goto label_1;
| }
| if (r6 == 0) {
0x000196c4 cbz r6, 0x196d4 | goto label_30;
| }
| do {
0x000196c6 ldrb r2, [r3, -0x1]! | r2 = *((r3 -= 0x1));
0x000196ca subs r1, r6, 1 | r1 = r6 - 1;
| if (r2 != 0) {
0x000196cc cbnz r2, 0x196d4 | goto label_30;
| }
0x000196ce mov r6, r1 | r6 = r1;
0x000196d0 cmp r6, 0 |
0x000196d2 bne 0x196c6 |
| } while (r6 != 0);
| label_30:
0x000196d4 movs r2, 0 | r2 = 0;
0x000196d6 mov r1, r6 | r1 = r6;
0x000196d8 mov r0, r2 | r0 = r2;
0x000196da blx 0x712c | fcn_0000712c ();
0x000196de mov r3, r6 | r3 = r6;
0x000196e0 mov r4, r0 | r4 = r0;
0x000196e2 mov r2, r8 | r2 = r8;
0x000196e4 movs r1, 0 | r1 = 0;
0x000196e6 blx 0x6fb8 | fcn_00006fb8 ();
0x000196e8 stcl p6, c4, [r8], -0x8c | __asm ("stcl p6, c4, [r8], -0x8c");
0x000196ec ldrd r1, r2, [sb, 0x19c] | __asm ("ldrd r1, r2, aav.0x000000ff");
0x000196f0 mov r0, sb | r0 = sb;
0x000196f2 bl 0x1746c | fcn_0001746c (r0, r1, r2, r3);
0x000196f6 ldrd r2, r3, [sp, 0x28] | __asm ("ldrd r2, r3, [var_28h]");
0x000196fa mov r4, r0 | r4 = r0;
0x000196fc cmp.w r3, -1 |
0x00019700 it eq |
| if (r3 == -1) {
0x00019702 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 != -1) {
0x00019706 beq 0x19716 |
0x00019708 movs r1, 3 | r1 = 3;
0x0001970a add.w r0, sb, 0x100 | r0 = sb + 0x100;
0x0001970e blx 0x6314 | gst_rtp_buffer_get_payload_len ();
0x00019712 strd r0, r1, [sb, 0x1c8] | __asm ("strd r0, r1, aav.0x000000ff");
| }
0x00019716 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00019718 cmp r4, 0 |
0x0001971a it ne |
| if (r4 == 0) {
0x0001971c movne r3, 1 | r3 = 1;
| }
0x0001971e ldr r6, [sp, 0x60] | r6 = var_60h;
0x00019720 str r3, [sp, 0x40] | var_40h = r3;
0x00019722 b 0x19584 | goto label_1;
| if (r1 != 0) {
| label_18:
0x00019724 cbz r1, 0x19782 |
0x00019726 ldr r4, [sp, 0x24] | r4 = var_24h;
0x00019728 add r5, sp, 0x6c | r5 += var_6ch;
0x0001972a mov r1, r5 | r1 = r5;
0x0001972c mov r0, r4 | r0 = r4;
0x0001972e bl 0x763c | fcn_0000763c (r0, r1);
0x00019732 mov r0, r4 | r0 = r4;
0x00019734 blx 0x678c | fcn_0000678c ();
0x00019738 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0001973a mov r2, r4 | r2 = r4;
0x0001973c vldr d8, [r2, 0x28] | __asm ("vldr d8, [r2, 0x28]");
0x00019740 mov r6, r0 | r6 = r0;
0x00019742 ldrd sl, fp, [r2, 0x30] | __asm ("ldrd sl, fp, [r2, 0x30]");
0x00019746 ubfx r3, r3, 0xd, 1 | r3 = (r3 >> 0xd) & ((1 << 1) - 1);
0x0001974a ldr.w r4, [sb, 0x1ac] | r4 = *((sb + 0x1ac));
0x0001974e str.w r3, [sb, 0x1d8] | __asm ("str.w r3, aav.0x000000ff");
0x00019752 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x00019754 cmp r0, r4 |
0x00019756 it hi |
| if (r0 <= r4) {
0x00019758 movhi r7, 0 | r7 = 0;
| }
0x0001975a ubfx r3, r3, 6, 1 | r3 = (r3 >> 6) & ((1 << 1) - 1);
0x0001975e str.w r3, [sb, 0x1dc] | __asm ("str.w r3, aav.0x000000ff");
0x00019762 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x00019764 and r3, r3, 0x200 | r3 &= 0x200;
0x00019768 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r0 > r4) {
0x0001976a bhi 0x19830 | goto label_31;
| }
0x0001976c mov r0, r5 | r0 = r5;
0x0001976e bl 0x7790 | fcn_00007790 (r0);
0x00019772 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00019774 blx 0x6b14 | fcn_00006b14 ();
0x00019778 ldr.w r3, [sb, 0x1e4] | r3 = *((sb + 0x1e4));
0x0001977c cmp r3, 0 |
| if (r3 != 0) {
0x0001977e bne.w 0x19896 | goto label_12;
| }
| }
| label_22:
0x00019782 mov.w r8, 0 | r8 = 0;
| label_6:
0x00019786 ldr r1, [pc, 0x300] |
0x00019788 ldr r2, [pc, 0x2f0] | r2 = *(0x19a7c);
0x0001978a add r1, pc | r1 = 0x33218;
0x0001978c ldr r2, [r1, r2] | r2 = *(0x33218);
0x0001978e ldr r1, [r2] | r1 = *(0x33218);
0x00019790 ldr r2, [sp, 0xbc] | r2 = var_bch;
0x00019792 eors r1, r2 | r1 ^= r2;
0x00019794 mov.w r2, 0 | r2 = 0;
0x00019796 lsls r0, r0, 8 | r0 <<= 8;
| if (r0 != r0) {
0x00019798 bne.w 0x19a72 | goto label_32;
| }
0x0001979c mov r0, r8 | r0 = r8;
0x0001979e add sp, 0xc4 |
0x000197a0 vpop {d8} | __asm ("vpop {d8}");
0x000197a4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x000197a8 ldr r3, [sp, 0x60] | r3 = var_60h;
| do {
0x000197aa cmp r3, r6 |
0x000197ac itet hi |
| if (r3 <= r6) {
0x000197ae movhi r3, r6 | r3 = r6;
| }
| if (r3 > r6) {
0x000197b0 subls r2, r6, r3 | r2 = r6 - r3;
| }
| if (r3 <= r6) {
0x000197b2 strhi r6, [sp, 0x60] | var_60h = r6;
| }
| if (r3 < r6) {
0x000197b4 bls 0x19868 | goto label_33;
| }
| label_5:
0x000197b6 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000197b8 ldr.w r2, [sb, 0x1a8] | r2 = *((sb + 0x1a8));
0x000197bc subs.w r8, r1, 0 | r8 = r1 - 0;
0x000197c0 it ne |
| if (r8 == r1) {
0x000197c2 movne r8, 1 | r8 = 1;
| }
0x000197c6 cmp r2, 2 |
0x000197c8 it eq |
| if (r2 != 2) {
0x000197ca orreq r8, r8, 1 | r8 |= 1;
| }
| label_4:
0x000197ce mov r2, r7 | r2 = r7;
0x000197d0 movs r1, 0xf | r1 = 0xf;
0x000197d2 ldr r0, [sp, 0x24] | r0 = var_24h;
0x000197d4 blx 0x6f34 | fcn_00006f34 ();
0x000197d8 str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h]");
0x000197dc mov r1, r0 | r1 = r0;
0x000197de vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x000197e2 mov r0, sb | r0 = sb;
0x000197e4 ldr.w r3, [sb, 0x1dc] | r3 = *((sb + 0x1dc));
0x000197e8 mov r2, sl | r2 = sl;
0x000197ea str r3, [sp, 0x10] | var_10h = r3;
0x000197ec ldr.w r3, [sb, 0x1d8] | r3 = *((sb + 0x1d8));
0x000197f0 str r3, [sp, 0xc] | var_ch = r3;
0x000197f2 mov r3, fp | r3 = fp;
0x000197f4 bl 0x190c4 | fcn_000190c4 (r0, r1, r2, r3, r4, r5, r6);
0x000197f8 ldr.w r3, [sb, 0x1d8] | r3 = *((sb + 0x1d8));
| if (r3 == 0) {
0x000197fc cbnz r3, 0x19804 |
0x000197fe movs r3, 1 | r3 = 1;
0x00019800 str.w r3, [sb, 0x1d8] | __asm ("str.w r3, aav.0x000000ff");
| }
0x00019804 ldr.w r3, [sb, 0x1dc] | r3 = *((sb + 0x1dc));
| if (r3 != 0) {
0x00019808 cbz r3, 0x19810 |
0x0001980a movs r3, 0 | r3 = 0;
0x0001980c str.w r3, [sb, 0x1dc] | __asm ("str.w r3, aav.0x000000ff");
| }
0x00019810 cmp r0, 0 |
| if (r0 != 0) {
0x00019812 bne.w 0x19a46 | goto label_34;
| }
0x00019816 ldr r1, [sp, 0x60] | r1 = var_60h;
0x00019818 mov r0, r5 | r0 = r5;
0x0001981a bl 0x76e4 | r0 = fcn_000076e4 (r0, r1, r2);
0x0001981e cmp r0, 0 |
| if (r0 == 0) {
0x00019820 beq.w 0x199ce | goto label_35;
| }
0x00019824 ldr r3, [sp, 0x60] | r3 = var_60h;
0x00019826 subs r6, r6, r3 | r6 -= r3;
0x00019828 add r7, r3 | r7 += r3;
0x0001982a cmp r4, r6 |
| if (r4 >= r6) {
0x0001982c bhs.w 0x199ce | goto label_35;
| }
| label_31:
0x00019830 movs r3, 0 | r3 = 0;
0x00019832 subs r6, r6, r4 | r6 -= r4;
0x00019834 add r7, r4 | r7 += r4;
0x00019836 str r3, [sp, 0x60] | var_60h = r3;
| if (r4 == 0) {
0x00019838 cbz r4, 0x19864 | goto label_36;
| }
0x0001983a mov r8, r3 | r8 = r3;
0x0001983c mov r1, r3 | r1 = r3;
0x0001983e b 0x1984c | goto label_37;
| label_2:
0x00019840 ldr r1, [sp, 0x60] | r1 = var_60h;
0x00019842 add.w r8, r8, 1 | r8++;
0x00019846 cmp r8, r4 |
0x00019848 mov r3, r1 | r3 = r1;
0x0001984a beq 0x197aa |
| } while (r8 == r4);
| label_37:
0x0001984c ldr r3, [sp, 0xb0] | r3 = var_b0h;
0x0001984e mov r0, r5 | r0 = r5;
0x00019850 ldrb r2, [r3] | r2 = *(r3);
0x00019852 add.w r2, r2, r1, lsl 8 | r2 += (r1 << 8);
0x00019856 movs r1, 1 | r1 = 1;
0x00019858 str r2, [sp, 0x60] | var_60h = r2;
0x0001985a bl 0x76e4 | r0 = fcn_000076e4 (r0, r1, r2);
0x0001985e cmp r0, 0 |
| if (r0 != 0) {
0x00019860 bne 0x19840 | goto label_2;
| }
0x00019862 b 0x197a8 | goto label_3;
| label_36:
0x00019864 mov r2, r6 | r2 = r6;
0x00019866 mov r3, r4 | r3 = r4;
| label_33:
0x00019868 cmp r4, r2 |
0x0001986a it lo |
| if (r4 < r2) {
0x0001986c movlo r8, 0 | r8 = 0;
| goto label_38;
| }
| if (r4 <= r2) {
| label_38:
0x00019870 blo 0x197ce | goto label_4;
| }
0x00019872 b 0x197b6 | goto label_5;
| label_23:
0x00019874 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00019876 ldr.w fp, [sp, 0x1c] | fp = var_1ch;
0x0001987a cmp r3, 0 |
| if (r3 != 0) {
0x0001987c bne.w 0x199ac | goto label_39;
| }
| label_10:
0x00019880 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
| if (r3 != 0) {
0x00019884 cbnz r3, 0x198b6 | goto label_40;
| }
| label_7:
0x00019886 movs r1, 0 | r1 = 0;
0x00019888 mov r0, fp | r0 = fp;
0x0001988a blx 0x6c2c | g_assertion_message_cmpnum ();
0x0001988e ldr.w r3, [sb, 0x1e4] | r3 = *((sb + 0x1e4));
0x00019892 mov r8, r3 | r8 = r3;
| if (r3 == 0) {
0x00019894 cbz r3, 0x198ac | goto label_41;
| }
| label_12:
0x00019896 ldr.w r3, [sb, 0x1ec] | r3 = *((sb + 0x1ec));
0x0001989a cmp r3, 1 |
| if (r3 == 1) {
0x0001989c beq.w 0x19a5c | goto label_42;
| }
| label_11:
0x000198a0 mov.w r8, 0 | r8 = 0;
| label_17:
0x000198a4 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000198a6 cmp r3, 2 |
| if (r3 == 2) {
0x000198a8 beq.w 0x19786 | goto label_6;
| }
| label_41:
0x000198ac ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x000198b0 blx 0x6ec4 | fcn_00006ec4 ();
0x000198b4 b 0x19786 | goto label_6;
| label_40:
0x000198b6 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x000198b8 ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x000198bc blx 0x6878 | g_strdup_printf ()
0x000198c0 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x000198c4 cmp r3, 0 |
| if (r3 == 0) {
0x000198c6 beq 0x19886 | goto label_7;
| }
0x000198c8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000198ca movs r5, 0 | r5 = 0;
0x000198cc ldr r6, [sp, 0x54] | r6 = var_54h;
0x000198ce cmp r3, 0 |
0x000198d0 iteet eq |
| if (r3 != 0) {
0x000198d2 moveq sl, 1 | sl = 1;
| }
| if (r3 == 0) {
0x000198d6 movne sl, r5 | sl = r5;
| }
| if (r3 != 0) {
0x000198d8 moveq r7, 1 | r7 = 1;
| }
| if (r3 == 0) {
0x000198da mov r7, r5 | r7 = r5;
| }
0x000198dc strd r7, sl, [sp, 0x1c] | __asm ("strd r7, sl, [var_1ch]");
0x000198e0 ldr r7, [sp, 0x58] | r7 = var_58h;
0x000198e2 ldr.w sl, [sp, 0x50] | sl = var_50h;
| label_8:
0x000198e6 ldr.w r3, [fp] | r3 = *(fp);
0x000198ea movs r1, 3 | r1 = 3;
0x000198ec ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x000198f0 ldr.w r3, [r3, r5, lsl 2] | offset_0 = r5 << 2;
| r3 = *((r3 + offset_0));
0x000198f2 adds r0, 0x25 | r0 += 0x25;
0x000198f4 str r3, [sp, 0x60] | var_60h = r3;
0x000198f6 blx 0x6878 | g_strdup_printf ()
0x000198fa ldr r4, [sp, 0x60] | r4 = var_60h;
0x000198fc ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x00019900 mov r1, r4 | r1 = r4;
0x00019902 blx 0x70f8 | fcn_000070f8 ();
0x00019906 ldr.w r1, [fp, 4] | r1 = *(arg_4h);
0x0001990a mov ip, r5 |
0x0001990c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001990e adds r5, 1 | r5++;
0x00019910 add r0, r4 | r0 += r4;
0x00019912 cmp r5, r1 |
0x00019914 it ne |
| if (r5 == r1) {
0x00019916 orrne r3, r3, 1 | r3 |= 1;
| }
| if (r3 != 0) {
0x0001991a cbnz r3, 0x19928 | goto label_43;
| }
0x0001991c b 0x1992c | goto label_44;
| do {
0x0001991e ldrb r3, [r0, -0x1]! | r3 = *((r0 -= 0x1));
0x00019922 subs r2, r4, 1 | r2 = r4 - 1;
| if (r3 != 0) {
0x00019924 cbnz r3, 0x1992c | goto label_44;
| }
0x00019926 mov r4, r2 | r4 = r2;
| label_43:
0x00019928 cmp r4, 1 |
0x0001992a bhi 0x1991e |
| } while (r4 > 1);
| label_44:
0x0001992c subs r1, 1 | r1--;
0x0001992e cmp r1, ip |
0x00019930 it ne |
| if (r1 == ip) {
0x00019932 movne r8, 0 | r8 = 0;
| }
| if (r1 == ip) {
0x00019936 bne 0x1994c |
0x00019938 ldr.w r3, [sb, 0x1a8] | r3 = *((sb + 0x1a8));
0x0001993c cmp r3, 2 |
0x0001993e itett ne |
| if (r3 == 2) {
0x00019940 ldrne r3, [sp, 0x48] | r3 = var_48h;
| }
| if (r3 != 2) {
0x00019942 moveq r8, 1 | r8 = 1;
| }
| if (r3 == 2) {
0x00019946 ldrne r2, [sp, 0x20] | r2 = var_20h;
| }
| if (r3 == 2) {
0x00019948 orr.w r8, r3, r2 | r8 = r3 | r2;
| goto label_45;
| }
| }
| label_45:
0x0001994c mov r1, r4 | r1 = r4;
0x0001994e ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x00019952 blx 0x7058 | g_value_set_object ();
0x00019956 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00019958 mov r1, r0 | r1 = r0;
0x0001995a str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h]");
0x0001995e mov r0, sb | r0 = sb;
0x00019960 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00019962 rsb.w r6, r6, 1 | r6 = 1 - r6;
0x00019966 str r3, [sp] | *(sp) = r3;
0x00019968 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001996a str r3, [sp, 4] | var_4h = r3;
0x0001996c ldr.w r3, [sb, 0x1dc] | r3 = *((sb + 0x1dc));
0x00019970 str r3, [sp, 0x10] | var_10h = r3;
0x00019972 ldr.w r3, [sb, 0x1d8] | r3 = *((sb + 0x1d8));
0x00019976 str r3, [sp, 0xc] | var_ch = r3;
0x00019978 mov r3, sl | r3 = sl;
0x0001997a bl 0x190c4 | fcn_000190c4 (r0, r1, r2, r3, r4, r5, r6);
0x0001997e str.w r7, [sb, 0x1dc] | __asm ("str.w r7, aav.0x000000ff");
0x00019982 mov r7, r0 | r7 = r0;
0x00019984 str.w r6, [sb, 0x1d8] | __asm ("str.w r6, aav.0x000000ff");
| if (r0 != 0) {
0x00019988 cbnz r0, 0x199e6 | goto label_46;
| }
0x0001998a ldr r1, [sp, 0x60] | r1 = var_60h;
0x0001998c ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x00019990 subs r1, r1, r4 | r1 -= r4;
0x00019992 blx 0x6878 | g_strdup_printf ()
0x00019996 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0001999a cmp r5, r3 |
| if (r5 >= r3) {
0x0001999c bhs 0x19a22 | goto label_47;
| }
0x0001999e mov r6, r7 | r6 = r7;
0x000199a0 b 0x198e6 | goto label_8;
| label_19:
0x000199a2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000199a4 str r3, [sp, 0x48] | var_48h = r3;
0x000199a6 strd r3, r3, [sp, 0x54] | __asm ("strd r3, r3, [var_54h]");
0x000199aa b 0x19514 | goto label_9;
| label_39:
0x000199ac mov r0, sb | r0 = sb;
0x000199ae bl 0x181c8 | r0 = fcn_000181c8 (r0);
0x000199b2 cmp r0, 0 |
| if (r0 != 0) {
0x000199b4 bne.w 0x19880 | goto label_10;
| }
| label_16:
0x000199b8 movs r1, 0 | r1 = 0;
0x000199ba mov r0, fp | r0 = fp;
0x000199bc blx 0x6c2c | g_assertion_message_cmpnum ();
0x000199c0 ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x000199c4 mvn r8, 3 | r8 = ~3;
0x000199c8 blx 0x6ec4 | fcn_00006ec4 ();
0x000199cc b 0x19786 | goto label_6;
| label_35:
0x000199ce mov r0, r5 | r0 = r5;
0x000199d0 bl 0x7790 | fcn_00007790 (r0);
0x000199d4 ldr r0, [sp, 0x24] | r0 = var_24h;
0x000199d6 blx 0x6b14 | fcn_00006b14 ();
| label_15:
0x000199da ldr.w r3, [sb, 0x1e4] | r3 = *((sb + 0x1e4));
0x000199de cmp r3, 0 |
| if (r3 == 0) {
0x000199e0 beq.w 0x198a0 | goto label_11;
| }
0x000199e4 b 0x19896 | goto label_12;
| label_46:
0x000199e6 mov r8, r0 | r8 = r0;
0x000199e8 movs r1, 0 | r1 = 0;
0x000199ea mov r0, fp | r0 = fp;
0x000199ec blx 0x6c2c | g_assertion_message_cmpnum ();
0x000199f0 ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x000199f4 blx 0x6ec4 | fcn_00006ec4 ();
0x000199f8 b 0x19786 | goto label_6;
| label_21:
0x000199fa ldr.w r0, [sb, 0x1bc] | r0 = *((sb + 0x1bc));
0x000199fe blx 0x64c4 | r0 = g_list_free ();
| if (r0 != 0) {
0x00019a02 cbz r0, 0x19a2c |
0x00019a04 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00019a06 movs r2, 1 | r2 = 1;
0x00019a08 str r2, [sp, 0x58] | var_58h = r2;
0x00019a0a ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00019a0c b 0x19504 | goto label_13;
| label_20:
0x00019a0e ldr.w r0, [r0, 0x1bc] | r0 = *(arg_0hx1bc);
0x00019a12 blx 0x64c4 | r0 = g_list_free ();
| if (r0 == 0) {
0x00019a16 cbz r0, 0x19a3a | goto label_48;
| }
0x00019a18 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00019a1a movs r2, 1 | r2 = 1;
0x00019a1c str r2, [sp, 0x54] | var_54h = r2;
0x00019a1e ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00019a20 b 0x194f8 | goto label_14;
| label_47:
0x00019a22 mov r1, r7 | r1 = r7;
0x00019a24 mov r0, fp | r0 = fp;
0x00019a26 blx 0x6c2c | g_assertion_message_cmpnum ();
0x00019a2a b 0x199da | goto label_15;
| }
0x00019a2c movs r3, 1 | r3 = 1;
0x00019a2e str r0, [sp, 0x58] | var_58h = r0;
0x00019a30 str.w r3, [sb, 0x1dc] | __asm ("str.w r3, aav.0x000000ff");
0x00019a34 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00019a36 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00019a38 b 0x19504 | goto label_13;
| label_48:
0x00019a3a ldr r3, [sp, 0x24] | r3 = var_24h;
0x00019a3c str.w r0, [sb, 0x1d8] | __asm ("str.w r0, aav.0x000000ff");
0x00019a40 str r0, [sp, 0x54] | var_54h = r0;
0x00019a42 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00019a44 b 0x194f8 | goto label_14;
| label_34:
0x00019a46 mov r8, r0 | r8 = r0;
0x00019a48 mov r0, r5 | r0 = r5;
0x00019a4a bl 0x7790 | fcn_00007790 (r0);
0x00019a4e ldr r0, [sp, 0x24] | r0 = var_24h;
0x00019a50 blx 0x6b14 | fcn_00006b14 ();
0x00019a54 b 0x19786 | goto label_6;
| label_25:
0x00019a56 ldr.w fp, [sp, 0x1c] | fp = var_1ch;
0x00019a5a b 0x199b8 | goto label_16;
| label_42:
0x00019a5c ldr.w r3, [sb, 0x1e8] | r3 = *((sb + 0x1e8));
0x00019a60 cmp r3, 0 |
| if (r3 == 0) {
0x00019a62 beq.w 0x198a0 | goto label_11;
| }
0x00019a66 movs r1, 0 | r1 = 0;
0x00019a68 mov r0, sb | r0 = sb;
0x00019a6a bl 0x18f38 | r0 = fcn_00018f38 (r0, r1, r2);
0x00019a6e mov r8, r0 | r8 = r0;
0x00019a70 b 0x198a4 | goto label_17;
| label_32:
0x00019a72 blx 0x6f28 | fcn_00006f28 ();
0x00019a76 nop |
0x00019a78 adr r4, 0x268 | r4 = 0x268;
0x00019a7a movs r3, r0 | r3 = r0;
0x00019a7c lsls r0, r1, 0x1a | r0 = r1 << 0x1a;
0x00019a7e movs r0, r0 |
0x00019a80 adds r2, r4, 5 | r2 = r4 + 5;
0x00019a82 movs r2, r0 | r2 = r0;
0x00019a84 adds r2, r6, 5 | r2 = r6 + 5;
0x00019a86 movs r2, r0 | r2 = r0;
0x00019a88 adr r1, 0x348 | r1 = 0x348;
0x00019a8a movs r3, r0 | r3 = r0;
0x00019a8c cmp r1, 0x13 |
0x00019a8e push {r4, r5, r6, lr} |
0x00019a90 mov r4, r0 | r4 = r0;
| if (r1 != 0x13) {
0x00019a92 beq 0x19aac |
0x00019a94 ldr r3, [pc, 0x6c] |
0x00019a96 mov r5, r1 | r5 = r1;
0x00019a98 add r3, pc |
0x00019a9a ldr r3, [r3] |
0x00019a9c ldr.w r3, [r3, 0x8c] | r3 = *(0x3362c);
0x00019aa0 blx r3 | uint32_t (*r3)(uint32_t) (r3);
0x00019aa2 cmp r5, 0x1a |
0x00019aa4 mov r6, r0 | r6 = r0;
| if (r5 == 0x1a) {
0x00019aa6 beq 0x19ae2 | goto label_49;
| }
0x00019aa8 mov r0, r6 | r0 = r6;
0x00019aaa pop {r4, r5, r6, pc} |
| }
0x00019aac movs r5, 0 | r5 = 0;
0x00019aae ldr.w r0, [r0, 0x1bc] | r0 = *((r0 + 0x1bc));
0x00019ab2 str.w r5, [r4, 0x1c4] | __asm ("str.w r5, aav.0x000000ff");
0x00019ab6 blx 0x6588 | fcn_00006588 ();
0x00019aba ldr.w r0, [r4, 0x1e0] | r0 = *((r4 + 0x1e0));
0x00019abe str.w r5, [r4, 0x1e0] | __asm ("str.w r5, aav.0x000000ff");
| if (r0 != 0) {
0x00019ac2 cbz r0, 0x19ac8 |
0x00019ac4 blx 0x6b14 | fcn_00006b14 ();
| }
0x00019ac8 ldr r3, [pc, 0x3c] |
0x00019aca movs r2, 0 | r2 = 0;
0x00019acc strd r2, r2, [r4, 0x1e4] | __asm ("strd r2, r2, aav.0x000000ff");
0x00019ad0 mov r0, r4 | r0 = r4;
0x00019ad2 movs r1, 0x13 | r1 = 0x13;
0x00019ad4 pop.w {r4, r5, r6, lr} |
0x00019ad8 add r3, pc |
0x00019ada ldr r3, [r3] |
0x00019adc ldr.w r3, [r3, 0x8c] | r3 = *(0x33670);
0x00019ae0 bx r3 | return uint32_t (*r3)() ();
| label_49:
0x00019ae2 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00019ae6 movs r1, 0 | r1 = 0;
0x00019ae8 ldr.w r0, [r4, 0x19c] | r0 = *((r4 + 0x19c));
0x00019aec vstr d16, [r4, 0x1c8] | __asm ("vstr d16, aav.0x000000ff");
0x00019af0 blx 0x70c8 | fcn_000070c8 ();
0x00019af4 ldr.w r0, [r4, 0x1a0] | r0 = *((r4 + 0x1a0));
0x00019af8 movs r1, 0 | r1 = 0;
0x00019afa blx 0x70c8 | fcn_000070c8 ();
0x00019afe mov r0, r6 | r0 = r6;
0x00019b00 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstrtp.so @ 0x1cd4c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0001cd4c () | void fcn_0001cd4c (int16_t arg_0h, int16_t arg_4h, int16_t arg_ch, int16_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int32_t var_18h_2;
| int16_t var_20h;
| uint32_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int32_t var_30h_2;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_80h;
| int16_t var_8ch;
| r0 = arg1;
| r1 = arg2;
0x0001cd4c ldrths pc, [r8], -0x8df | __asm ("ldrths pc, [r8], -aav.0x00036c02");
0x0001cd50 ldr.w r3, [pc, 0x438] |
0x0001cd54 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001cd58 mov r5, r0 | r5 = r0;
0x0001cd5a add r2, pc | r2 += pc;
0x0001cd5c vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0001cd60 sub sp, 0x94 |
0x0001cd62 mov sb, r1 | sb = r1;
0x0001cd64 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001cd66 ldr r3, [r3] | r3 = *(0x1d18c);
0x0001cd68 str r3, [sp, 0x8c] | var_8ch = r3;
0x0001cd6a mov.w r3, 0 | r3 = 0;
0x0001cd6e ldr.w r3, [r0, 0x1a4] | r3 = *(arg_0hx1a4);
0x0001cd72 subs r3, 2 | r3 -= 2;
0x0001cd74 cmp r3, 1 |
0x0001cd76 str r3, [sp, 0x20] | var_20h = r3;
| if (r3 < 1) {
0x0001cd78 bls.w 0x1ced0 | goto label_13;
| }
| if (r1 != 0) {
0x0001cd7c cbz r1, 0x1cda6 |
0x0001cd7e ldr.w r0, [r0, 0x1bc] | r0 = *(arg_0hx1bc);
0x0001cd82 blx 0x64c4 | g_list_free ();
0x0001cd86 ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x0001cd8a cmp r0, 0 |
| if (r0 == 0) {
0x0001cd8c beq.w 0x1d154 | goto label_14;
| }
0x0001cd90 movs r2, 0 | r2 = 0;
0x0001cd92 str r2, [sp, 0x28] | var_28h = r2;
| label_8:
0x0001cd94 ubfx r3, r3, 9, 1 | r3 = (r3 >> 9) & ((1 << 1) - 1);
0x0001cd98 ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001cd9c mov r1, sb | r1 = sb;
0x0001cd9e str r3, [sp, 0x24] | var_24h = r3;
0x0001cda0 blx 0x69e4 | fcn_000069e4 ();
0x0001cda4 b 0x1cdaa |
| } else {
0x0001cda6 strd r1, r1, [sp, 0x24] | __asm ("strd r1, r1, [var_24h]");
| }
0x0001cdaa ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001cdae movs r1, 0 | r1 = 0;
0x0001cdb0 blx 0x6b2c | fcn_00006b2c ();
0x0001cdb4 strd r0, r1, [sp, 0x18] | __asm ("strd r0, r1, [var_18h]");
0x0001cdb8 movs r1, 0 | r1 = 0;
0x0001cdba ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001cdbe blx 0x6510 | fcn_00006510 ();
0x0001cdc2 strd r0, r1, [sp, 0xc] | __asm ("strd r0, r1, [var_ch]");
0x0001cdc6 ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001cdca blx 0x64c4 | r0 = g_list_free ();
0x0001cdce mov r6, r0 | r6 = r0;
0x0001cdd0 cmp r0, 0 |
| if (r0 == 0) {
0x0001cdd2 beq.w 0x1cffc | goto label_15;
| }
0x0001cdd6 mov r1, r0 | r1 = r0;
0x0001cdd8 ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001cddc blx 0x70f8 | fcn_000070f8 ();
0x0001cde0 mov r1, r6 | r1 = r6;
0x0001cde2 mov r4, r0 | r4 = r0;
0x0001cde4 bl 0x1b7d0 | fcn_0001b7d0 (r0, r1);
0x0001cde6 ldc2l p10, c1, [r4], 0xd8 | __asm ("ldc2l p10, c1, [r4], 0xd8");
0x0001cdea ldr.w r7, [r5, 0x1b8] | r7 = *((r5 + 0x1b8));
0x0001cdee add r4, r0 | r4 += r0;
0x0001cdf0 str r0, [sp, 0x2c] | var_2ch = r0;
0x0001cdf2 blx 0x729c | fcn_0000729c ();
0x0001cdf6 cmp r6, 4 |
0x0001cdf8 mov sl, r0 | sl = r0;
| if (r6 < 4) {
0x0001cdfa bls.w 0x1d00c | goto label_6;
| }
0x0001cdfe subs.w r3, sb, 0 | r3 = sb - 0;
0x0001ce02 add.w r2, r5, 0x100 | r2 = r5 + 0x100;
0x0001ce06 it ne |
| if (r3 == sb) {
0x0001ce08 movne r3, 1 | r3 = 1;
| }
0x0001ce0a strd r0, sb, [sp, 0x30] | __asm ("strd r0, sb, [var_30h]");
0x0001ce0e ldr.w sl, [sp, 0x10] | sl = var_10h;
0x0001ce12 mov.w fp, 0 |
0x0001ce16 mov sb, r3 | sb = r3;
0x0001ce18 str r2, [sp, 0x14] | var_14h = r2;
0x0001ce1a b 0x1ce32 |
| while (r2 > 2) {
| label_0:
0x0001ce1c subs r6, r6, r3 | r6 -= r3;
0x0001ce1e movs r2, 1 | r2 = 1;
0x0001ce20 add r1, sp, 0x38 | r1 += var_38h;
0x0001ce22 mov r0, r7 | r0 = r7;
0x0001ce24 add.w r4, r8, r3 | r4 = r8 + r3;
0x0001ce28 blx 0x73a8 | fcn_000073a8 ();
0x0001ce2c cmp r6, 4 |
| if (r6 < 4) {
0x0001ce2e bls.w 0x1d000 | goto label_16;
| }
0x0001ce32 subs r6, 3 | r6 -= 3;
0x0001ce34 add.w r8, r4, 3 | r8 = r4 + 3;
0x0001ce36 lsrs r3, r0, 0x20 | r3 = r0 >> 0x20;
0x0001ce38 mov r1, r6 | r1 = r6;
0x0001ce3a mov r0, r8 | r0 = r8;
0x0001ce3c bl 0x1b7d0 | r0 = fcn_0001b7d0 (r0, r1);
0x0001ce40 cmp r6, r0 |
0x0001ce42 ite ne |
| if (r6 == r0) {
0x0001ce44 movne r2, 0 | r2 = 0;
| }
| if (r6 != r0) {
0x0001ce46 andeq r2, sb, 1 | r2 = sb & 1;
| }
0x0001ce4a mov r3, r0 | r3 = r0;
| if (r2 != 0) {
0x0001ce4c cbz r2, 0x1ce58 |
0x0001ce4e ldr.w r2, [r5, 0x1a8] | r2 = *((r5 + 0x1a8));
0x0001ce52 cmp r2, 0 |
| if (r2 == 0) {
0x0001ce54 beq.w 0x1d000 | goto label_16;
| }
| }
0x0001ce58 str r3, [sp, 0x38] | var_38h = r3;
0x0001ce5a ldrb r2, [r4, 3] | r2 = *((r4 + 3));
0x0001ce5c ubfx r2, r2, 1, 6 | r2 = (r2 >> 1) & ((1 << 6) - 1);
0x0001ce60 subs r2, 0x20 | r2 -= 0x20;
0x0001ce62 cmp r2, 2 |
0x0001ce64 itt ls |
| if (r2 > 2) {
0x0001ce66 addls r2, r3, 3 | r2 = r3 + 3;
| }
| if (r2 > 2) {
0x0001ce68 addls r2, r2, r4 | r2 += r4;
| }
0x0001ce6a bhi 0x1ce1c |
| }
| if (r3 == 0) {
0x0001ce6c cbz r3, 0x1ce7c | goto label_17;
| }
| do {
0x0001ce6e ldrb r1, [r2, -0x1]! | r1 = *((r2 -= 0x1));
0x0001ce72 subs r0, r3, 1 | r0 = r3 - 1;
| if (r1 != 0) {
0x0001ce74 cbnz r1, 0x1ce7c | goto label_17;
| }
0x0001ce76 mov r3, r0 | r3 = r0;
0x0001ce78 cmp r3, 0 |
0x0001ce7a bne 0x1ce6e |
| } while (r3 != 0);
| label_17:
0x0001ce7c movs r2, 0 | r2 = 0;
0x0001ce7e mov r1, r3 | r1 = r3;
0x0001ce80 mov r0, r2 | r0 = r2;
0x0001ce82 str r3, [sp, 8] | var_8h = r3;
0x0001ce84 blx 0x712c | fcn_0000712c ();
0x0001ce88 ldr r3, [sp, 8] | r3 = var_8h;
0x0001ce8a mov r4, r0 | r4 = r0;
0x0001ce8c mov r2, r8 | r2 = r8;
0x0001ce8e movs r1, 0 | r1 = 0;
0x0001ce90 blx 0x6fb8 | fcn_00006fb8 ();
0x0001ce94 str r4, [sp] | *(sp) = r4;
0x0001ce96 mov r0, r5 | r0 = r5;
0x0001ce98 ldrd r2, r3, [r5, 0x198] | __asm ("ldrd r2, r3, aav.0x000000ff");
0x0001ce9c ldr.w r1, [r5, 0x1a0] | r1 = *((r5 + 0x1a0));
0x0001cea0 bl 0x1aa90 | fcn_0001aa90 (r0, r1, r2, r3);
0x0001cea4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001cea6 mov r4, r0 | r4 = r0;
0x0001cea8 cmp.w sl, -1 |
0x0001ceac it eq |
| if (sl == -1) {
0x0001ceae cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
0x0001ceb0 subs r7, 0xff | r7 -= 0xff;
| if (r7 != 0xff) {
0x0001ceb2 beq 0x1cec4 |
0x0001ceb4 mov r2, r3 | r2 = r3;
0x0001ceb6 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0001ceb8 mov r3, sl | r3 = sl;
0x0001ceba movs r1, 3 | r1 = 3;
0x0001cebc blx 0x6314 | gst_rtp_buffer_get_payload_len ();
0x0001cec0 strd r0, r1, [r5, 0x1c8] | __asm ("strd r0, r1, aav.0x000000ff");
| }
0x0001cec4 cmp r4, 0 |
0x0001cec6 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0001cec8 it ne |
| if (r4 == 0) {
0x0001ceca movne fp, 1 |
| }
0x0001cece b 0x1ce1c | goto label_0;
| label_13:
0x0001ced0 cmp r1, 0 |
| if (r1 == 0) {
0x0001ced2 beq.w 0x1cffc | goto label_15;
| }
0x0001ced6 add r6, sp, 0x3c | r6 += var_3ch;
0x0001ced8 blx 0x729c | fcn_0000729c ();
0x0001cedc mov r1, r6 | r1 = r6;
0x0001cede mov sl, r0 | sl = r0;
0x0001cee0 mov r0, sb | r0 = sb;
0x0001cee2 ldr.w r4, [r5, 0x1b4] | r4 = *((r5 + 0x1b4));
0x0001cee6 bl 0x763c | fcn_0000763c (r0, r1);
0x0001ceea mov r0, sb | r0 = sb;
0x0001ceec blx 0x678c | fcn_0000678c ();
0x0001cef0 ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x0001cef4 cmp r4, r0 |
0x0001cef6 vldr d8, [sb, 0x28] | __asm ("vldr d8, [sb, 0x28]");
0x0001cefa mov r7, r0 | r7 = r0;
0x0001cefc it lo |
| if (r4 >= r0) {
0x0001cefe movlo r8, 0 | r8 = 0;
| }
0x0001cf02 and r3, r3, 0x200 | r3 &= 0x200;
0x0001cf06 str r3, [sp, 8] | var_8h = r3;
0x0001cf08 ldrd r2, r3, [sb, 0x30] | __asm ("ldrd r2, r3, [sb, 0x30]");
0x0001cf0c vmov d9, r2, r3 | __asm ("vmov d9, r2, r3");
| if (r4 >= r0) {
0x0001cf10 bhs 0x1cfb6 | goto label_18;
| }
| label_1:
0x0001cf12 movs r3, 0 | r3 = 0;
0x0001cf14 add r8, r4 | r8 += r4;
0x0001cf16 subs r7, r7, r4 | r7 -= r4;
0x0001cf18 str r3, [sp, 0x38] | var_38h = r3;
0x0001cf1a cmp r4, 0 |
| if (r4 == 0) {
0x0001cf1c beq.w 0x1d172 | goto label_19;
| }
0x0001cf20 mov fp, r3 |
0x0001cf22 b 0x1cf30 |
| while (r0 != 0) {
0x0001cf24 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0001cf26 add.w fp, fp, 1 |
0x0001cf2a cmp fp, r4 |
0x0001cf2c mov r1, r3 | r1 = r3;
| if (fp == r4) {
0x0001cf2e beq 0x1cf48 | goto label_20;
| }
0x0001cf30 ldr r2, [sp, 0x80] | r2 = var_80h;
0x0001cf32 movs r1, 1 | r1 = 1;
0x0001cf34 mov r0, r6 | r0 = r6;
0x0001cf36 ldrb r2, [r2] | r2 = *(r2);
0x0001cf38 add.w r2, r2, r3, lsl 8 | r2 += (r3 << 8);
0x0001cf3c str r2, [sp, 0x38] | var_38h = r2;
0x0001cf3e bl 0x76e4 | r0 = fcn_000076e4 (r0, r1, r2);
0x0001cf42 cmp r0, 0 |
0x0001cf44 bne 0x1cf24 |
| }
0x0001cf46 ldr r1, [sp, 0x38] | r1 = var_38h;
| label_20:
0x0001cf48 cmp r1, r7 |
0x0001cf4a mov r3, r1 | r3 = r1;
0x0001cf4c itt hi |
| if (r1 <= r7) {
0x0001cf4e movhi r3, r7 | r3 = r7;
| }
| if (r1 <= r7) {
0x0001cf50 strhi r7, [sp, 0x38] | var_38h = r7;
| }
| label_10:
0x0001cf52 mov r2, r8 | r2 = r8;
0x0001cf54 movs r1, 0xf | r1 = 0xf;
0x0001cf56 mov r0, sb | r0 = sb;
0x0001cf58 blx 0x6f34 | r0 = fcn_00006f34 ();
0x0001cf5c mov fp, r0 |
0x0001cf5e mov r0, sl | r0 = sl;
0x0001cf60 mov r1, fp | r1 = fp;
0x0001cf62 blx 0x67b0 | fcn_000067b0 ();
0x0001cf64 stc p9, c9, [r6], -0x38 | __asm ("stc p9, c9, [r6], -0x38");
0x0001cf68 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x0001cf6a adds r0, 0xc | r0 += 0xc;
0x0001cf6c subs r0, r7, r1 | r0 = r7 - r1;
0x0001cf6e cmp r0, r4 |
0x0001cf70 bic r3, r3, 0x200 | r3 = BIT_MASK (r3, 0x200);
0x0001cf74 str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
| if (r0 <= r4) {
0x0001cf78 bhi 0x1cf9c |
0x0001cf7a ldr r2, [sp, 8] | r2 = var_8h;
0x0001cf7c ldr.w r0, [r5, 0x1a8] | r0 = *((r5 + 0x1a8));
0x0001cf80 subs.w ip, r2, 0 |
0x0001cf84 it ne |
| if (ip == r2) {
0x0001cf86 movne ip, 1 |
| }
0x0001cf8a cmp r0, 2 |
0x0001cf8c it eq |
| if (r0 != 2) {
0x0001cf8e orreq ip, ip, 1 |
| }
0x0001cf92 cmp.w ip, 0 |
| if (ip == 0) {
0x0001cf96 beq 0x1cf9c | goto label_21;
| }
0x0001cf98 orr r3, r3, 0x200 | r3 |= 0x200;
| }
| label_21:
0x0001cf9c bic r3, r3, 0x40 | r3 = BIT_MASK (r3, 0x40);
0x0001cfa0 mov r0, r6 | r0 = r6;
0x0001cfa2 str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
0x0001cfa6 bl 0x76e4 | r0 = fcn_000076e4 (r0, r1, r2);
| if (r0 == 0) {
0x0001cfaa cbz r0, 0x1cfb6 | goto label_18;
| }
0x0001cfac ldr r3, [sp, 0x38] | r3 = var_38h;
0x0001cfae subs r7, r7, r3 | r7 -= r3;
0x0001cfb0 add r8, r3 | r8 += r3;
0x0001cfb2 cmp r4, r7 |
| if (r4 <= r7) {
0x0001cfb4 blo 0x1cf12 | goto label_1;
| }
| label_18:
0x0001cfb6 vmov r2, r3, d9 | __asm ("vmov r2, r3, d9");
0x0001cfba mov r1, sl | r1 = sl;
0x0001cfbc mov r0, r5 | r0 = r5;
0x0001cfbe vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x0001cfc2 bl 0x1c914 | r0 = fcn_0001c914 (r0, r1, r2, r3);
0x0001cfc6 mov r4, r0 | r4 = r0;
0x0001cfc8 mov r0, r6 | r0 = r6;
0x0001cfca bl 0x7790 | fcn_00007790 (r0);
0x0001cfce mov r0, sb | r0 = sb;
0x0001cfd0 blx 0x6b14 | fcn_00006b14 ();
0x0001cfd4 cmp r4, 0 |
| if (r4 == 0) {
0x0001cfd6 beq.w 0x1d15c | goto label_22;
| }
| do {
| label_2:
0x0001cfda ldr r2, [pc, 0x1b4] |
0x0001cfdc ldr r3, [pc, 0x1ac] | r3 = *(0x1d18c);
0x0001cfde add r2, pc | r2 = 0x3a174;
0x0001cfe0 ldr r3, [r2, r3] | r3 = *(0x3a174);
0x0001cfe2 ldr r2, [r3] | r2 = *(0x3a174);
0x0001cfe4 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x0001cfe6 eors r2, r3 | r2 ^= r3;
0x0001cfe8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001cfec bne.w 0x1d182 | goto label_23;
| }
0x0001cff0 mov r0, r4 | r0 = r4;
0x0001cff2 add sp, 0x94 |
0x0001cff4 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0001cff8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x0001cffc movs r4, 0 | r4 = 0;
0x0001cffe b 0x1cfda |
| } while (1);
| label_16:
0x0001d000 ldrd sl, sb, [sp, 0x30] | __asm ("ldrd sl, sb, [var_30h]");
0x0001d004 cmp.w fp, 0 |
| if (fp != 0) {
0x0001d008 bne.w 0x1d13a | goto label_24;
| }
| label_6:
0x0001d00c ldr r3, [r7, 4] | r3 = *((r7 + 4));
| if (r3 != 0) {
0x0001d00e cbnz r3, 0x1d058 | goto label_25;
| }
| label_3:
0x0001d010 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001d012 mov r1, sl | r1 = sl;
0x0001d014 mov r0, r5 | r0 = r5;
0x0001d016 str r3, [sp] | *(sp) = r3;
0x0001d018 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0001d01a str r3, [sp, 4] | var_4h_2 = r3;
0x0001d01c ldrd r2, r3, [sp, 0x18] | __asm ("ldrd r2, r3, [var_18h]");
0x0001d020 bl 0x1c914 | fcn_0001c914 (r0, r1, r2, r3);
0x0001d022 ldc2l p6, c4, [r8], -0x10 | __asm ("ldc2l p6, c4, [r8], -0x10");
0x0001d026 movs r1, 0 | r1 = 0;
0x0001d028 mov r0, r7 | r0 = r7;
0x0001d02a blx 0x6c2c | g_assertion_message_cmpnum ();
| if (r4 != 0) {
0x0001d02e cbnz r4, 0x1d04e | goto label_7;
| }
0x0001d030 ldr.w r3, [r5, 0x1d4] | r3 = *((r5 + 0x1d4));
| if (r3 == 0) {
0x0001d034 cbz r3, 0x1d04e | goto label_7;
| }
0x0001d036 ldr.w r3, [r5, 0x1dc] | r3 = *((r5 + 0x1dc));
0x0001d03a cmp r3, 1 |
| if (r3 != 1) {
0x0001d03c bne 0x1d04e | goto label_7;
| }
| label_9:
0x0001d03e ldr.w r4, [r5, 0x1d8] | r4 = *((r5 + 0x1d8));
0x0001d042 cmp r4, 0 |
| if (r4 != 0) {
0x0001d044 bne.w 0x1d176 | goto label_26;
| }
| label_11:
0x0001d048 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001d04a cmp r3, 1 |
| if (r3 < 1) {
0x0001d04c bls 0x1cfda | goto label_2;
| }
| label_7:
0x0001d04e ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001d052 blx 0x6ec4 | fcn_00006ec4 ();
0x0001d056 b 0x1cfda | goto label_2;
| label_25:
0x0001d058 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0001d05a ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001d05e blx 0x6878 | g_strdup_printf ()
0x0001d062 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0001d064 cmp r3, 0 |
| if (r3 == 0) {
0x0001d066 beq 0x1d010 | goto label_3;
| }
0x0001d068 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0001d06a mov fp, r7 |
0x0001d06c ldr r7, [sp, 0x28] | r7 = var_28h;
0x0001d06e cmp.w sb, 0 |
0x0001d072 mov.w r4, 0 | r4 = 0;
0x0001d076 it ne |
| if (sb == 0) {
0x0001d078 movne r8, 1 | r8 = 1;
| }
0x0001d07c it eq |
| if (sb != 0) {
0x0001d07e orreq r3, r3, 1 | r3 |= 1;
| }
0x0001d082 it eq |
| if (sb != 0) {
0x0001d084 moveq r8, 0 | r8 = 0;
| }
0x0001d088 str r3, [sp, 0x14] | var_14h = r3;
0x0001d08a str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h]");
| label_4:
0x0001d08e ldr.w r2, [fp] | r2 = *(fp);
0x0001d092 movs r1, 3 | r1 = 3;
0x0001d094 ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001d098 mov sb, r4 | sb = r4;
0x0001d09a ldr.w r2, [r2, r4, lsl 2] | offset_0 = r4 << 2;
| r2 = *((r2 + offset_0));
0x0001d09e adds r4, 1 | r4++;
0x0001d0a0 str r2, [sp, 0x38] | var_38h = r2;
0x0001d0a2 blx 0x6878 | g_strdup_printf ()
0x0001d0a6 ldr r6, [sp, 0x38] | r6 = var_38h;
0x0001d0a8 ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001d0ac mov r1, r6 | r1 = r6;
0x0001d0ae blx 0x70f8 | fcn_000070f8 ();
0x0001d0b2 ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x0001d0b6 add r0, r6 | r0 += r6;
0x0001d0b8 ldr r1, [sp, 8] | r1 = var_8h;
0x0001d0ba cmp r2, r4 |
0x0001d0bc it ne |
| if (r2 == r4) {
0x0001d0be orrne r1, r1, 1 | r1 |= 1;
| }
| if (r1 != 0) {
0x0001d0c2 cbnz r1, 0x1d0d0 | goto label_27;
| }
0x0001d0c4 b 0x1d0d4 | goto label_28;
| do {
0x0001d0c6 ldrb r3, [r0, -0x1]! | r3 = *((r0 -= 0x1));
0x0001d0ca subs r2, r6, 1 | r2 = r6 - 1;
| if (r3 != 0) {
0x0001d0cc cbnz r3, 0x1d0d4 | goto label_28;
| }
0x0001d0ce mov r6, r2 | r6 = r2;
| label_27:
0x0001d0d0 cmp r6, 2 |
0x0001d0d2 bhi 0x1d0c6 |
| } while (r6 > 2);
| label_28:
0x0001d0d4 mov r1, r6 | r1 = r6;
0x0001d0d6 ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001d0da blx 0x7058 | r0 = g_value_set_object ();
0x0001d0de mov r8, r0 | r8 = r0;
0x0001d0e0 mov r0, sl | r0 = sl;
0x0001d0e2 mov r1, r8 | r1 = r8;
0x0001d0e4 blx 0x67b0 | fcn_000067b0 ();
0x0001d0e8 ldr.w r0, [r8, 0xc] | r0 = *((r8 + 0xc));
0x0001d0ec bic r0, r0, 0x200 | r0 = BIT_MASK (r0, 0x200);
0x0001d0f0 str.w r0, [r8, 0xc] | __asm ("str.w r0, [r8, 0xc]");
0x0001d0f4 ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x0001d0f8 subs r2, 1 | r2--;
0x0001d0fa cmp r2, sb |
| if (r2 == sb) {
0x0001d0fc beq 0x1d126 | goto label_29;
| }
| label_5:
0x0001d0fe bic r0, r0, 0x40 | r0 = BIT_MASK (r0, 0x40);
| if (r7 != 0) {
0x0001d102 cbz r7, 0x1d108 |
0x0001d104 orr r0, r0, 0x40 | r0 |= 0x40;
| }
0x0001d108 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0001d10a movs r7, 0 | r7 = 0;
0x0001d10c str.w r0, [r8, 0xc] | __asm ("str.w r0, [r8, 0xc]");
0x0001d110 ldr.w r0, [r5, 0x1bc] | r0 = *((r5 + 0x1bc));
0x0001d114 subs r1, r1, r6 | r1 -= r6;
0x0001d116 blx 0x6878 | r0 = g_strdup_printf ()
0x0001d118 subs.w r8, r0, fp, lsr 31 | r8 = r0 - (fp >> 31);
0x0001d11c movs r0, 4 | r0 = 4;
0x0001d11e cmp r4, r2 |
| if (r4 <= r2) {
0x0001d120 blo 0x1d08e | goto label_4;
| }
0x0001d122 mov r7, fp | r7 = fp;
0x0001d124 b 0x1d010 | goto label_3;
| label_29:
0x0001d126 ldr.w r2, [r5, 0x1a8] | r2 = *((r5 + 0x1a8));
0x0001d12a cmp r2, 2 |
| if (r2 == 2) {
0x0001d12c beq 0x1d134 | goto label_30;
| }
0x0001d12e ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001d130 cmp r3, 0 |
| if (r3 == 0) {
0x0001d132 beq 0x1d0fe | goto label_5;
| }
| label_30:
0x0001d134 orr r0, r0, 0x200 | r0 |= 0x200;
0x0001d138 b 0x1d0fe | goto label_5;
| label_24:
0x0001d13a mov r0, r5 | r0 = r5;
0x0001d13c bl 0x1b974 | r0 = fcn_0001b974 (r0);
0x0001d140 cmp r0, 0 |
| if (r0 != 0) {
0x0001d142 bne.w 0x1d00c | goto label_6;
| }
0x0001d146 mov r1, r0 | r1 = r0;
0x0001d148 mov r0, r7 | r0 = r7;
0x0001d14a mvn r4, 3 | r4 = ~3;
0x0001d14e blx 0x6c2c | g_assertion_message_cmpnum ();
0x0001d152 b 0x1d04e | goto label_7;
| label_14:
0x0001d154 ubfx r2, r3, 6, 1 | r2 = (r3 >> 6) & ((1 << 1) - 1);
0x0001d158 str r2, [sp, 0x28] | var_28h = r2;
0x0001d15a b 0x1cd94 | goto label_8;
| label_22:
0x0001d15c ldr.w r3, [r5, 0x1d4] | r3 = *((r5 + 0x1d4));
0x0001d160 cmp r3, 0 |
| if (r3 == 0) {
0x0001d162 beq.w 0x1cfda | goto label_2;
| }
0x0001d166 ldr.w r3, [r5, 0x1dc] | r3 = *((r5 + 0x1dc));
0x0001d16a cmp r3, 1 |
| if (r3 != 1) {
0x0001d16c bne.w 0x1cfda | goto label_2;
| }
0x0001d170 b 0x1d03e | goto label_9;
| label_19:
0x0001d172 mov r3, r4 | r3 = r4;
0x0001d174 b 0x1cf52 | goto label_10;
| label_26:
0x0001d176 movs r1, 0 | r1 = 0;
0x0001d178 mov r0, r5 | r0 = r5;
0x0001d17a bl 0x1c794 | r0 = fcn_0001c794 (r0, r1);
0x0001d17e mov r4, r0 | r4 = r0;
0x0001d180 b 0x1d048 | goto label_11;
| label_23:
0x0001d182 blx 0x6f28 | fcn_00006f28 ();
0x0001d186 nop |
0x0001d188 ldr r2, [r0, 0x40] | r2 = *((r0 + 0x40));
0x0001d18a movs r3, r0 | r3 = r0;
0x0001d18c lsls r0, r1, 0x1a | r0 = r1 << 0x1a;
0x0001d18e movs r0, r0 |
0x0001d190 ldr r6, [r7, 0x14] | r6 = *((r7 + 0x14));
0x0001d192 movs r3, r0 | r3 = r0;
0x0001d194 ldr.w ip, [pc, 0x114] |
0x0001d198 movw r2, 0x6e0e | r2 = 0x6e0e;
0x0001d19c push {r4, r5, r6, lr} |
0x0001d19e mov r5, r1 | r5 = r1;
0x0001d1a0 ldr r3, [r1, 0x24] | r3 = *((r1 + 0x24));
0x0001d1a2 sub sp, 8 |
0x0001d1a4 add ip, pc | ip = 0x3a454;
0x0001d1a6 mov r4, r0 | r4 = r0;
0x0001d1a8 ldr r1, [pc, 0x104] | r1 = *(0x1d2b0);
0x0001d1aa cmp r3, r2 |
0x0001d1ac ldr.w r1, [ip, r1] |
0x0001d1b0 ldr r1, [r1] | r1 = *(0x3a454);
0x0001d1b2 str r1, [sp, 4] | var_4h = r1;
0x0001d1b4 mov.w r1, 0 | r1 = 0;
| if (r3 == r2) {
0x0001d1b8 beq 0x1d272 | goto label_31;
| }
| if (r3 > r2) {
0x0001d1ba bhi 0x1d214 | goto label_32;
| }
0x0001d1bc movw r2, 0x1407 | r2 = 0x1407;
0x0001d1c0 cmp r3, r2 |
| if (r3 == r2) {
0x0001d1c2 beq 0x1d252 | goto label_33;
| }
0x0001d1c4 movw r2, 0x280e | r2 = 0x280e;
0x0001d1c8 cmp r3, r2 |
| if (r3 != r2) {
0x0001d1ca bne 0x1d1ea | goto label_12;
| }
0x0001d1cc ldr.w r0, [r0, 0x1a0] | r0 = *((r0 + 0x1a0));
0x0001d1d0 movs r1, 0 | r1 = 0;
0x0001d1d2 blx 0x70c8 | fcn_000070c8 ();
0x0001d1d4 invalid |
0x0001d1d8 lsls r0, r3, 6 | r0 = r3 << 6;
0x0001d1da movs r1, 0 | r1 = 0;
0x0001d1dc blx 0x70c8 | fcn_000070c8 ();
0x0001d1e0 ldr.w r0, [r4, 0x19c] | r0 = *((r4 + 0x19c));
0x0001d1e4 movs r1, 0 | r1 = 0;
0x0001d1e6 blx 0x70c8 | fcn_000070c8 ();
| do {
| label_12:
0x0001d1ea ldr r2, [pc, 0xc8] |
0x0001d1ec ldr r3, [pc, 0xc0] | r3 = *(0x1d2b0);
0x0001d1ee add r2, pc | r2 = 0x3a4a8;
0x0001d1f0 ldr r3, [r2, r3] | r3 = *(0x3a4a8);
0x0001d1f2 ldr r2, [r3] | r2 = *(0x3a4a8);
0x0001d1f4 ldr r3, [sp, 4] | r3 = var_4h;
0x0001d1f6 eors r2, r3 | r2 ^= r3;
0x0001d1f8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001d1fc bne 0x1d2a6 | goto label_34;
| }
0x0001d1fe ldr r3, [pc, 0xb8] |
0x0001d200 mov r1, r5 | r1 = r5;
0x0001d202 mov r0, r4 | r0 = r4;
0x0001d204 add r3, pc |
0x0001d206 ldr r3, [r3] |
0x0001d208 ldr.w r3, [r3, 0x104] | r3 = *(0x3a5c6);
0x0001d20c add sp, 8 |
0x0001d20e pop.w {r4, r5, r6, lr} |
0x0001d212 bx r3 | return uint32_t (*r3)() ();
| label_32:
0x0001d214 movw r2, 0x1806 |
0x0001d218 movt r2, 1 | r2 = 0x11806;
0x0001d21c cmp r3, r2 |
0x0001d21e bne 0x1d1ea |
| } while (r3 != r2);
0x0001d220 mov r0, r5 | r0 = r5;
0x0001d222 blx 0x6bf0 | gst_rtp_buffer_get_payload ();
0x0001d226 ldr r1, [pc, 0x94] |
0x0001d228 mov r6, r0 | r6 = r0;
0x0001d22a add r1, pc | r1 = 0x3a4ec;
0x0001d22c blx 0x61f4 | r0 = gst_element_class_set_metadata ();
0x0001d230 cmp r0, 0 |
| if (r0 == 0) {
0x0001d232 beq 0x1d1ea | goto label_12;
| }
0x0001d234 ldr r1, [pc, 0x88] |
0x0001d236 mov r2, sp | r2 = sp;
0x0001d238 mov r0, r6 | r0 = r6;
0x0001d23a add r1, pc | r1 = 0x3a4fe;
0x0001d23c blx 0x715c | r0 = fcn_0000715c ();
0x0001d240 cmp r0, 0 |
| if (r0 == 0) {
0x0001d242 beq 0x1d1ea | goto label_12;
| }
0x0001d244 ldr r3, [sp] | r3 = *(sp);
0x0001d246 cmp r3, 0 |
| if (r3 == 0) {
0x0001d248 beq 0x1d1ea | goto label_12;
| }
0x0001d24a movs r3, 1 | r3 = 1;
0x0001d24c str.w r3, [r4, 0x1c4] | __asm ("str.w r3, aav.0x000000ff");
0x0001d24e adds r1, 0xc4 | r1 += 0xc4;
0x0001d250 b 0x1d1ea | goto label_12;
| label_33:
0x0001d252 ldr.w r0, [r0, 0x1bc] | r0 = *((r0 + 0x1bc));
0x0001d256 blx 0x6588 | fcn_00006588 ();
0x0001d25a ldr.w r0, [r4, 0x1d0] | r0 = *((r4 + 0x1d0));
0x0001d25e movs r3, 0 | r3 = 0;
0x0001d260 str.w r3, [r4, 0x1d0] | __asm ("str.w r3, aav.0x000000ff");
| if (r0 != 0) {
0x0001d264 cbz r0, 0x1d26a |
0x0001d266 blx 0x6b14 | fcn_00006b14 ();
| }
0x0001d26a movs r3, 0 | r3 = 0;
0x0001d26c strd r3, r3, [r4, 0x1d4] | __asm ("strd r3, r3, aav.0x000000ff");
0x0001d270 b 0x1d1ea | goto label_12;
| label_31:
0x0001d272 movs r1, 0 | r1 = 0;
0x0001d274 bl 0x1cd4c | fcn_0001cd4c (r0, r1, r2, r3, r4);
0x0001d278 ldr.w r3, [r4, 0x1d4] | r3 = *((r4 + 0x1d4));
0x0001d27c cmp r3, 0 |
| if (r3 == 0) {
0x0001d27e beq 0x1d1ea | goto label_12;
| }
0x0001d280 movs r1, 1 | r1 = 1;
0x0001d282 mov r0, r4 | r0 = r4;
0x0001d284 bl 0x1c794 | fcn_0001c794 (r0, r1);
0x0001d286 invalid |
| if (r1 == 1) {
0x0001d28a beq 0x1d1ea | goto label_12;
| }
0x0001d28c ldr r2, [pc, 0x34] |
0x0001d28e ldr r3, [pc, 0x20] | r3 = *(0x1d2b2);
0x0001d290 add r2, pc | r2 = 0x3a558;
0x0001d292 ldr r3, [r2, r3] | r3 = *(0x3a558);
0x0001d294 ldr r2, [r3] | r2 = *(0x3a558);
0x0001d296 ldr r3, [sp, 4] | r3 = var_4h;
0x0001d298 eors r2, r3 | r2 ^= r3;
0x0001d29a mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0001d29e bne 0x1d2a6 |
0x0001d2a0 movs r0, 0 | r0 = 0;
0x0001d2a2 add sp, 8 |
0x0001d2a4 pop {r4, r5, r6, pc} |
| }
| label_34:
0x0001d2a6 blx 0x6f28 | fcn_00006f28 ();
0x0001d2aa nop |
0x0001d2ac str r0, [r7, 0x78] | *((r7 + 0x78)) = r0;
0x0001d2ae movs r3, r0 | r3 = r0;
0x0001d2b0 lsls r0, r1, 0x1a | r0 = r1 << 0x1a;
0x0001d2b2 movs r0, r0 |
0x0001d2b4 str r6, [r5, 0x74] | *((r5 + 0x74)) = r6;
0x0001d2b6 movs r3, r0 | r3 = r0;
0x0001d2b8 ldrh r0, [r0, 0x10] | r0 = *((r0 + 0x10));
0x0001d2ba movs r3, r0 | r3 = r0;
0x0001d2bc b 0x1d2f4 |
0x0001d2f4 strd pc, r8, [sl, -0x350] | __asm ("strd pc, r8, aav.0x000000ff");
0x0001d2f8 lsls r0, r2, 7 | r0 = r2 << 7;
0x0001d2fa str.w r5, [r4, 0x1d0] | __asm ("str.w r5, aav.0x000000ff");
| if (r0 != 0) {
0x0001d2fe cbz r0, 0x1d304 |
0x0001d300 blx 0x6b14 | fcn_00006b14 ();
| }
0x0001d304 ldr r3, [pc, 0x44] |
0x0001d306 movs r2, 0 | r2 = 0;
0x0001d308 strd r2, r2, [r4, 0x1d4] | __asm ("strd r2, r2, aav.0x000000ff");
0x0001d30c mov r0, r4 | r0 = r4;
0x0001d30e movs r1, 0x13 | r1 = 0x13;
0x0001d310 pop.w {r4, r5, r6, lr} |
0x0001d314 add r3, pc |
0x0001d316 ldr r3, [r3] |
0x0001d318 ldr.w r3, [r3, 0x8c] | r3 = *(0x3a6f0);
0x0001d31c bx r3 | return uint32_t (*r3)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstrtp.so @ 0x22abc */
| #include <stdint.h>
|
; (fcn) fcn.00022abc () | void fcn_00022abc (int16_t arg1) {
| int16_t var_4h;
| int16_t var_fch;
| r0 = arg1;
0x00022abc blmi 0x12353e0 | __asm ("blmi aav.0x00030e96");
0x00022ac0 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00022ac4 mov r6, r0 | r6 = r0;
0x00022ac6 add r2, pc | r2 += pc;
0x00022ac8 sub sp, 0x100 |
0x00022aca ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00022acc ldr.w r0, [r0, 0x198] | r0 = *((r0 + 0x198));
0x00022ad0 ldr r3, [r3] | r3 = *(r3);
0x00022ad2 str r3, [sp, 0xfc] | var_fch = r3;
0x00022ad4 mov.w r3, 0 | r3 = 0;
0x00022ad8 blx 0x64c4 | g_list_free ();
0x00022adc ldr.w r3, [r6, 0x1b8] | r3 = *((r6 + 0x1b8));
0x00022ae0 mov r4, r0 | r4 = r0;
0x00022ae2 cmp r3, 0 |
| if (r3 == 0) {
0x00022ae4 beq 0x22bc2 | goto label_2;
| }
| if (r4 == 0) {
| label_0:
0x00022ae6 cbnz r4, 0x22b04 |
| label_1:
0x00022ae8 ldr r2, [pc, 0xf8] |
0x00022aea ldr r3, [pc, 0xf4] | r3 = *(0x22be2);
0x00022aec add r2, pc | r2 = 0x456d4;
0x00022aee ldr r3, [r2, r3] | r3 = *(0x456d4);
0x00022af0 ldr r2, [r3] | r2 = *(0x456d4);
0x00022af2 ldr r3, [sp, 0xfc] | r3 = var_fch;
0x00022af4 eors r2, r3 | r2 ^= r3;
0x00022af6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00022afa bne 0x22bd6 | goto label_3;
| }
0x00022afc movs r0, 0 | r0 = 0;
0x00022afe add sp, 0x100 |
0x00022b00 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
0x00022b04 ldr.w sb, [r6, 0xfc] | sb = *((r6 + 0xfc));
0x00022b08 mov r0, r4 | r0 = r4;
0x00022b0a add r7, sp, 4 | r7 += var_4h;
0x00022b0c sub.w r1, sb, 0xc | r1 = sb - 0xc;
0x00022b10 bl 0x336d8 | fcn_000336d8 (r0, r1, r2);
0x00022b14 adds r0, 1 | r0++;
0x00022b16 blx 0x6534 | r0 = fcn_00006534 ();
0x00022b1a mov r8, r0 | r8 = r0;
| do {
0x00022b1c movs r2, 0xf8 | r2 = 0xf8;
0x00022b1e movs r1, 0 | r1 = 0;
0x00022b20 mov r0, r7 | r0 = r7;
0x00022b22 blx 0x65a0 | fcn_000065a0 ();
0x00022b26 movs r2, 0 | r2 = 0;
0x00022b28 mov r0, r4 | r0 = r4;
0x00022b2a mov r1, r2 | r1 = r2;
0x00022b2c blx 0x6aa8 | fcn_00006aa8 ();
0x00022b30 movs r2, 0 | r2 = 0;
0x00022b32 cmp r0, sb |
0x00022b34 it hs |
| if (r0 < sb) {
0x00022b36 movhs r0, sb | r0 = sb;
| }
0x00022b38 mov r1, r2 | r1 = r2;
0x00022b3a blx 0x6218 | gst_adapter_take_list ();
0x00022b3e movs r2, 0 | r2 = 0;
0x00022b40 mov sl, r0 | sl = r0;
0x00022b42 mov r1, r2 | r1 = r2;
0x00022b44 mov r0, r2 | r0 = r2;
0x00022b46 blx 0x6264 | fcn_00006264 ();
0x00022b4a mov r1, sl | r1 = sl;
0x00022b4c mov r5, r0 | r5 = r0;
0x00022b4e ldr.w r0, [r6, 0x198] | r0 = *((r6 + 0x198));
0x00022b52 subs r4, r4, r1 | r4 -= r1;
0x00022b54 blx 0x6424 | fcn_00006424 ();
0x00022b58 mov r2, r7 | r2 = r7;
0x00022b5a mov sl, r0 | sl = r0;
0x00022b5c movs r1, 2 | r1 = 2;
0x00022b5e mov r0, r5 | r0 = r5;
0x00022b60 blx 0x65ac | fcn_000065ac ();
0x00022b64 clz r1, r4 | r1 &= r4;
0x00022b68 mov r0, r7 | r0 = r7;
0x00022b6a lsrs r1, r1, 5 | r1 >>= 5;
0x00022b6c blx 0x6b60 | gst_rtp_buffer_get_timestamp ();
0x00022b70 mov r0, r7 | r0 = r7;
0x00022b72 blx 0x7414 | fcn_00007414 ();
0x00022b76 mov r2, sl | r2 = sl;
0x00022b78 mov r1, r5 | r1 = r5;
0x00022b7a mov r0, r6 | r0 = r6;
0x00022b7c bl 0x2fbe4 | fcn_0002fbe4 (r0, r1, r2);
0x00022b80 mov r1, sl | r1 = sl;
0x00022b82 mov r0, r5 | r0 = r5;
0x00022b84 blx 0x7144 | fcn_00007144 ();
0x00022b88 vldr d16, [r6, 0x1a0] | __asm ("vldr d16, aav.0x000000ff");
0x00022b8c mov r2, r0 | r2 = r0;
0x00022b8e mov.w r1, -1 | r1 = -1;
0x00022b92 mov r0, r8 | r0 = r8;
0x00022b94 vstr d16, [r2, 0x28] | __asm ("vstr d16, [r2, 0x28]");
0x00022b98 blx 0x651c | fcn_0000651c ();
0x00022b9c cmp r4, 0 |
0x00022b9e bne 0x22b1c |
| } while (r4 != 0);
0x00022ba0 ldr r2, [pc, 0x44] |
0x00022ba2 ldr r3, [pc, 0x3c] | r3 = *(0x22be2);
0x00022ba4 add r2, pc | r2 = 0x45790;
0x00022ba6 ldr r3, [r2, r3] | r3 = *(0x45790);
0x00022ba8 ldr r2, [r3] | r2 = *(0x45790);
0x00022baa ldr r3, [sp, 0xfc] | r3 = var_fch;
0x00022bac eors r2, r3 | r2 ^= r3;
0x00022bae mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00022bb2 bne 0x22bd6 | goto label_3;
| }
0x00022bb4 mov r1, r8 | r1 = r8;
0x00022bb6 mov r0, r6 | r0 = r6;
0x00022bb8 add sp, 0x100 |
0x00022bba pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00022bbe b.w 0x6d34 | void (*0x6d34)() ();
| label_2:
0x00022bc2 ldr.w r3, [r6, 0x1c0] | r3 = *((r6 + 0x1c0));
0x00022bc6 cmp r3, 0 |
| if (r3 == 0) {
0x00022bc8 beq 0x22ae6 | goto label_0;
| }
0x00022bca ldr.w r0, [r6, 0x198] | r0 = *((r6 + 0x198));
0x00022bce mov r1, r4 | r1 = r4;
0x00022bd0 blx 0x6878 | g_strdup_printf ()
0x00022bd4 b 0x22ae8 | goto label_1;
| label_3:
0x00022bd6 blx 0x6f28 | fcn_00006f28 ();
0x00022bda nop |
0x00022bdc lsrs r6, r2, 0x1a | r6 = r2 >> 0x1a;
0x00022bde movs r3, r0 | r3 = r0;
0x00022be0 lsls r0, r1, 0x1a | r0 = r1 << 0x1a;
0x00022be2 movs r0, r0 |
0x00022be4 lsrs r0, r6, 0x19 | r0 = r6 >> 0x19;
0x00022be6 movs r3, r0 | r3 = r0;
0x00022be8 lsrs r0, r7, 0x16 | r0 = r7 >> 0x16;
0x00022bea movs r3, r0 | r3 = r0;
0x00022bec push {r4, r5, r6, lr} |
0x00022bee movw r2, 0x460e | r2 = 0x460e;
0x00022bf0 str r6, [r1, 0x20] | *((r1 + 0x20)) = r6;
0x00022bf2 ldr r3, [r1, 0x24] | r3 = *((r1 + 0x24));
0x00022bf4 mov r4, r1 | r4 = r1;
0x00022bf6 mov r5, r0 | r5 = r0;
0x00022bf8 cmp r3, r2 |
| if (r3 == r2) {
0x00022bfa beq 0x22c28 | goto label_4;
| }
0x00022bfc movw r2, 0x6e0e | r2 = 0x6e0e;
0x00022c00 cmp r3, r2 |
| if (r3 == r2) {
0x00022c02 beq 0x22c28 | goto label_4;
| }
0x00022c04 movw r2, 0x1407 | r2 = 0x1407;
0x00022c08 cmp r3, r2 |
| if (r3 != r2) {
0x00022c0a bne 0x22c14 | goto label_5;
| }
0x00022c0c ldr.w r0, [r0, 0x198] | r0 = *((r0 + 0x198));
0x00022c10 blx 0x6588 | fcn_00006588 ();
| do {
| label_5:
0x00022c14 ldr r3, [pc, 0x18] |
0x00022c16 mov r1, r4 | r1 = r4;
0x00022c18 mov r0, r5 | r0 = r5;
0x00022c1a pop.w {r4, r5, r6, lr} |
0x00022c1e add r3, pc |
0x00022c20 ldr r3, [r3] |
0x00022c22 ldr.w r3, [r3, 0x104] | r3 = *(0x45956);
0x00022c26 bx r3 | return uint32_t (*r3)() ();
| label_4:
0x00022c28 mov r0, r5 | r0 = r5;
0x00022c2a bl 0x22abc | fcn_00022abc (r0);
0x00022c2e b 0x22c14 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstrtp.so @ 0x262bc */
| #include <stdint.h>
|
; (fcn) fcn.000262bc () | void fcn_000262bc (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| r0 = arg1;
0x000262bc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000262c0 mov r4, r0 | r4 = r0;
0x000262c2 ldr r7, [pc, 0xfc] |
0x000262c4 sub sp, 0x14 |
0x000262c6 ldr.w r0, [r0, 0x148] | r0 = *((r0 + 0x148));
0x000262ca add r7, pc | r7 = 0x4c690;
0x000262cc blx 0x64c4 | r0 = g_list_free ();
0x000262d0 cmp r0, 0 |
| if (r0 != 0) {
0x000262d2 bne 0x263b2 | goto label_4;
| }
| label_3:
0x000262d4 ldr.w r5, [r4, 0x184] | r5 = *((r4 + 0x184));
0x000262d8 cmp r5, 0 |
| if (r5 == 0) {
0x000262da beq 0x26386 | goto label_5;
| }
0x000262dc add.w r6, r4, 0x184 | r6 = r4 + 0x184;
0x000262e0 mov.w r8, 0 | r8 = 0;
0x000262e4 mov.w sb, 2 | sb = 2;
| label_0:
0x000262e8 ldr.w sl, [r5] | sl = *(r5);
0x000262ec cmp.w sl, 0 |
| if (sl == 0) {
0x000262f0 beq 0x2637e | goto label_6;
| }
0x000262f2 ldr.w r3, [r4, 0x17c] | r3 = *((r4 + 0x17c));
0x000262f6 cmp r3, 0xff |
| if (r3 < 0xff) {
0x000262f8 bls 0x2638c | goto label_7;
| }
0x000262fa movs r3, 0x82 | r3 = 0x82;
0x000262fc strb.w r3, [sl] | *(sl) = r3;
0x00026300 ldr.w r3, [r4, 0x17c] | r3 = *((r4 + 0x17c));
0x00026304 subs r3, 3 | r3 -= 3;
0x00026306 uxth r3, r3 | r3 = (int16_t) r3;
0x00026308 lsrs r2, r3, 8 | r2 = r3 >> 8;
0x0002630a strb.w r3, [sl, 2] | *((sl + 2)) = r3;
0x0002630e strb.w r2, [sl, 1] | *((sl + 1)) = r2;
0x00026312 ldr.w ip, [r4, 0x17c] | ip = *((r4 + 0x17c));
0x00026316 cmp.w ip, 0 |
| if (ip == 0) {
0x0002631a beq 0x263a4 | goto label_8;
| }
| label_1:
0x0002631c add.w r0, ip, -1 | r0 = ip + -1;
0x00026320 add.w r3, sl, -1 | r3 = sl + -1;
0x00026324 add r0, sl | r0 += sl;
0x00026326 movs r2, 0 | r2 = 0;
| do {
0x00026328 ldrb r1, [r3, 1]! | r1 = *((r3 += 1));
0x0002632c cmp r0, r3 |
0x0002632e add r2, r1 | r2 += r1;
0x00026330 bne 0x26328 |
| } while (r0 != r3);
0x00026332 uxtb r3, r2 | r3 = (int8_t) r2;
0x00026334 cmp.w ip, 0xff |
0x00026338 ubfx r2, r2, 8, 8 | r2 = (r2 >> 8) & ((1 << 8) - 1);
0x0002633c itt hi |
| if (ip <= 0xff) {
0x0002633e strbhi r2, [sl, 3] | *((sl + 3)) = r2;
| }
| if (ip > 0xff) {
0x00026342 strb.w r3, [sl, 4] | *((sl + 4)) = r3;
| }
| if (ip < 0xff) {
0x00026346 bls 0x263a8 | goto label_9;
| }
| label_2:
0x00026348 blx 0x6958 | fcn_00006958 ();
0x0002634c ldr r1, [pc, 0x74] | r1 = *(0x263c4);
0x0002634e mov fp, r0 |
0x00026350 ldr.w r2, [r4, 0x17c] | r2 = *((r4 + 0x17c));
0x00026354 movs r3, 0 | r3 = 0;
0x00026356 ldr r0, [r7, r1] | r0 = *((r7 + r1));
0x00026358 mov r1, sl | r1 = sl;
0x0002635a str r2, [sp] | *(sp) = r2;
0x0002635c str.w sl, [sp, 4] | __asm ("str.w sl, [var_4h]");
0x00026360 str r0, [sp, 8] | var_8h = r0;
0x00026362 mov r0, r3 | r0 = r3;
0x00026364 blx 0x7314 | r0 = fcn_00007314 ();
0x00026368 mov r1, r0 | r1 = r0;
0x0002636a mov r0, fp | r0 = fp;
0x0002636c blx 0x6d80 | fcn_00006d80 ();
0x00026370 ldr.w r0, [r4, 0x148] | r0 = *((r4 + 0x148));
0x00026374 mov r1, fp | r1 = fp;
0x00026376 blx 0x69e4 | fcn_000069e4 ();
0x0002637a str.w r8, [r5] | __asm ("str.w r8, [r5]");
0x0002637c strh r0, [r0] | *(r0) = r0;
| label_6:
0x0002637e ldr r5, [r6, 4]! | r5 = *((r6 += 4));
0x00026382 cmp r5, 0 |
| if (r5 != 0) {
0x00026384 bne 0x262e8 | goto label_0;
| }
| label_5:
0x00026386 add sp, 0x14 |
0x00026388 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x0002638c strb.w sb, [sl] | *(sl) = sb;
0x00026390 ldr.w r3, [r4, 0x17c] | r3 = *((r4 + 0x17c));
0x00026394 subs r3, 2 | r3 -= 2;
0x00026396 strb.w r3, [sl, 1] | *((sl + 1)) = r3;
0x0002639a ldr.w ip, [r4, 0x17c] | ip = *((r4 + 0x17c));
0x0002639e cmp.w ip, 0 |
| if (ip != 0) {
0x000263a2 bne 0x2631c | goto label_1;
| }
| label_8:
0x000263a4 mov r3, ip | r3 = ip;
0x000263a6 mov r2, ip | r2 = ip;
| label_9:
0x000263a8 strb.w r2, [sl, 2] | *((sl + 2)) = r2;
0x000263ac strb.w r3, [sl, 3] | *((sl + 3)) = r3;
0x000263b0 b 0x26348 | goto label_2;
| label_4:
0x000263b2 mov r1, r0 | r1 = r0;
0x000263b4 ldr.w r0, [r4, 0x148] | r0 = *((r4 + 0x148));
0x000263b8 blx 0x6878 | g_strdup_printf ()
0x000263bc b 0x262d4 | goto label_3;
| }
[*] Function printf used 9 times libgstrtp.so