[*] Binary protection state of libgstrtpmanager.so

  
  	Full RELRO     Canary found      NX enabled   DSO          No RPATH     No RUNPATH   No Symbols


[*] Function system tear down of libgstrtpmanager.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/libgstrtpmanager.so @ 0x16724 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00016724 ()                                      | void fcn_00016724 (int16_t arg_b0h, int16_t arg_b4h, int16_t arg_b8h, int16_t arg_bch, int16_t arg_c0h, int16_t arg_c4h, int16_t arg1, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_10h_2;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_18h_2;
                                                                 |     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_0h_2;
                                                                 |     int32_t var_60h_2;
                                                                 |     int16_t var_68h;
                                                                 |     int32_t var_68h_2;
                                                                 |     int16_t var_70h;
                                                                 |     int32_t var_70h_2;
                                                                 |     int16_t var_78h;
                                                                 |     int32_t var_78h_2;
                                                                 |     int16_t var_84h;
                                                                 |     r0 = arg1;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00016724 svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x00016728 mov r8, r2                                        |     r8 = r2;
    0x0001672a ldr.w r2, [pc, 0x954]                             |     
    0x0001672e mov sb, r3                                        |     sb = r3;
    0x00016730 sub sp, 0x8c                                      |     
    0x00016732 mov r4, r0                                        |     r4 = r0;
    0x00016734 ldr.w r3, [pc, 0x94c]                             |     r3 = *(0x17084);
    0x00016738 add r2, pc                                        |     r2 = 0x2d7be;
    0x0001673a ldr r1, [sp, 0xb0]                                |     r1 = *(arg_b0h);
    0x0001673c ldr r3, [r2, r3]                                  |     
    0x0001673e ldr r2, [sp, 0xb8]                                |     r2 = *(arg_b8h);
    0x00016740 ldr r3, [r3]                                      |     r3 = *(0x2d7be);
    0x00016742 str r3, [sp, 0x84]                                |     var_84h = r3;
    0x00016744 mov.w r3, 0                                       |     r3 = 0;
    0x00016748 and.w r3, r8, sb                                  |     r3 = r8 & sb;
    0x0001674c adds r3, 1                                        |     r3++;
    0x0001674e str r2, [sp, 0x38]                                |     var_38h = r2;
    0x00016750 it ne                                             |     
                                                                 |     if (r3 == 1) {
    0x00016752 movne r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00016754 ldr r2, [sp, 0xbc]                                |     r2 = *(arg_bch);
    0x00016756 cmp r1, 0                                         |     
    0x00016758 it ne                                             |     
                                                                 |     if (r1 == 0) {
    0x0001675a movne r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0001675c str r2, [sp, 0x3c]                                |     var_3ch = r2;
                                                                 |     if (r3 != 0) {
    0x0001675e cbz r3, 0x16788                                   |         
    0x00016760 ldr r3, [r0, 0x18]                                |         r3 = *(arg_b0hx18);
    0x00016762 cmp r3, 1                                         |         
                                                                 |         if (r3 == 1) {
    0x00016764 beq 0x16788                                       |             goto label_0;
                                                                 |         }
    0x00016766 ldrd r2, r3, [r0, 0x48]                           |         __asm ("ldrd r2, r3, [arg_b0hx48]");
    0x0001676a cmp.w r3, -1                                      |         
    0x0001676e it eq                                             |         
                                                                 |         if (r3 == -1) {
    0x00016770 cmpeq r2, -1                                      |             __asm ("cmpeq r2, -1");
                                                                 |         }
                                                                 |         if (r3 == -1) {
    0x00016774 beq 0x16788                                       |             goto label_0;
                                                                 |         }
    0x00016776 ldrd r2, r3, [r0, 0x80]                           |         __asm ("ldrd r2, r3, [arg_b0hx80]");
    0x0001677a cmp.w r3, -1                                      |         
    0x0001677e it eq                                             |         
                                                                 |         if (r3 == -1) {
    0x00016780 cmpeq r2, -1                                      |             __asm ("cmpeq r2, -1");
                                                                 |         }
                                                                 |         if (r3 != -1) {
    0x00016784 bne.w 0x16a20                                     |             goto label_30;
                                                                 |         }
                                                                 |     }
                                                                 | label_0:
    0x00016788 ldr r1, [sp, 0xb4]                                |     r1 = *(arg_b4h);
    0x0001678a add.w r0, r4, 0x78                                |     r0 = r4 + 0x78;
    0x0001678e blx 0x6cc0                                        |     gst_segment_position_from_running_time ();
    0x00016792 ldrd r3, r2, [r4, 0x80]                           |     __asm ("ldrd r3, r2, [r4, 0x80]");
    0x00016796 strd r0, r1, [sp, 0x20]                           |     __asm ("strd r0, r1, [var_20h]");
    0x0001679a cmp r2, r1                                        |     
    0x0001679c it eq                                             |     
                                                                 |     if (r2 == r1) {
    0x0001679e cmpeq r3, r0                                      |         __asm ("cmpeq r3, r0");
                                                                 |     }
    0x000167a0 and.w r3, r3, r2                                  |     r3 &= r2;
    0x000167a4 ite eq                                            |     
                                                                 |     if (r2 != r1) {
    0x000167a6 moveq r7, 1                                       |         r7 = 1;
                                                                 |     }
                                                                 |     if (r2 == r1) {
    0x000167a8 movne r7, 0                                       |         r7 = 0;
                                                                 |     }
    0x000167aa cmp.w r3, -1                                      |     
    0x000167ae ite eq                                            |     
                                                                 |     if (r3 != -1) {
    0x000167b0 moveq r7, 0                                       |         r7 = 0;
                                                                 |     }
                                                                 |     if (r3 == -1) {
    0x000167b2 andne r7, r7, 1                                   |         r7 &= 1;
                                                                 |     }
    0x000167b6 cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x000167b8 bne.w 0x16d4a                                     |         goto label_31;
                                                                 |     }
    0x000167bc ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x000167be add.w r5, r4, 0x10a0                              |     r5 = r4 + 0x10a0;
    0x000167c2 adds r5, 0x14                                     |     r5 += 0x14;
    0x000167c4 mov r0, r5                                        |     r0 = r5;
    0x000167c6 str.w r3, [r4, 0x80]                              |     __asm ("str.w r3, [r4, 0x80]");
    0x000167ca ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x000167cc str.w r3, [r4, 0x84]                              |     __asm ("str.w r3, [r4, 0x84]");
    0x000167d0 add.w r3, r4, 0x1000                              |     r3 = r4 + 0x1000;
    0x000167d4 mov r6, r3                                        |     r6 = r3;
    0x000167d6 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x000167d8 blx 0x73bc                                        |     gst_util_uint64_scale_int ();
    0x000167dc ldr.w fp, [r6, 0xc0]                              |     fp = *((r6 + 0xc0));
    0x000167e0 cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x000167e4 beq 0x167ee                                       |         
    0x000167e6 mov r0, fp                                        |         r0 = fp;
    0x000167e8 blx 0x6e34                                        |         r0 = gst_structure_get_clock_time ();
    0x000167ec mov fp, r0                                        |         
                                                                 |     }
    0x000167ee ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x000167f0 ldr.w sl, [r3, 0xbc]                              |     sl = *((r3 + 0xbc));
    0x000167f4 cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x000167f8 beq 0x16802                                       |         
    0x000167fa mov r0, sl                                        |         r0 = sl;
    0x000167fc blx 0x6e34                                        |         r0 = gst_structure_get_clock_time ();
    0x00016800 mov sl, r0                                        |         sl = r0;
                                                                 |     }
    0x00016802 mov r0, r5                                        |     r0 = r5;
    0x00016804 add.w r3, r4, 0x10c0                              |     r3 = r4 + 0x10c0;
    0x00016808 ldrd r6, r5, [r3, 8]                              |     __asm ("ldrd r6, r5, [r3, 8]");
    0x0001680c blx 0x6bec                                        |     fcn_00006bec ();
    0x00016810 mov.w r2, 0xca00                                  |     r2 = 0xca00;
    0x00016814 ldr r3, [r4, 0x60]                                |     r3 = *((r4 + 0x60));
    0x00016816 movt r2, 0x3b9a                                   |     r2 = (r2 & 0xFFFF) | 0x3b9a0000;
    0x0001681a ldrd r0, r1, [sp, 0x20]                           |     __asm ("ldrd r0, r1, [var_20h]");
    0x0001681e blx 0x748c                                        |     fcn_0000748c ();
    0x00016822 ldr r3, [r4, 0x50]                                |     r3 = *((r4 + 0x50));
    0x00016824 ldr r2, [r4, 0x54]                                |     r2 = *((r4 + 0x54));
    0x00016826 strd r0, r1, [sp, 0x28]                           |     __asm ("strd r0, r1, [var_28h]");
    0x0001682a cmp r0, r3                                        |     
    0x0001682c sbcs r1, r2                                       |     __asm ("sbcs r1, r2");
    0x0001682e and.w r0, r3, r2                                  |     r0 = r3 & r2;
    0x00016832 ite lo                                            |     
                                                                 |     if (r0 >= r3) {
    0x00016834 movlo r1, 1                                       |         r1 = 1;
                                                                 |     }
                                                                 |     if (r0 < r3) {
    0x00016836 movhs r1, 0                                       |         r1 = 0;
                                                                 |     }
    0x00016838 cmp.w r0, -1                                      |     
    0x0001683c ite eq                                            |     
                                                                 |     if (r0 != -1) {
    0x0001683e moveq r1, 0                                       |         r1 = 0;
                                                                 |     }
                                                                 |     if (r0 == -1) {
    0x00016840 andne r1, r1, 1                                   |         r1 &= 1;
                                                                 |     }
    0x00016844 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00016846 bne.w 0x16994                                     |         goto label_32;
                                                                 |     }
    0x0001684a ldr r1, [r4, 0x18]                                |     r1 = *((r4 + 0x18));
    0x0001684c cmp r1, 2                                         |     
                                                                 |     if (r1 == 2) {
    0x0001684e beq.w 0x16b22                                     |         goto label_33;
                                                                 |     }
    0x00016852 cmp r1, 4                                         |     
                                                                 |     if (r1 == 4) {
    0x00016854 beq.w 0x16ab0                                     |         goto label_34;
                                                                 |     }
    0x00016858 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0001685a beq.w 0x16b22                                     |         goto label_33;
                                                                 |     }
    0x0001685e ldr.w ip, [r4, 0x40]                              |     ip = *((r4 + 0x40));
                                                                 | label_1:
    0x00016862 cmp.w ip, 0                                       |     
                                                                 |     if (ip != 0) {
    0x00016866 bne.w 0x16acc                                     |         goto label_35;
                                                                 |     }
    0x0001686a cmp.w fp, 0                                       |     
    0x0001686e it ne                                             |     
                                                                 |     if (fp != 0) {
    0x00016870 cmpne sl, 0                                       |         __asm ("cmpne sl, 0");
                                                                 |     }
                                                                 |     if (fp != 0) {
    0x00016874 bne.w 0x16f46                                     |         goto label_36;
                                                                 |     }
    0x00016878 add.w r1, r4, 0x10a0                              |     r1 = r4 + 0x10a0;
    0x0001687c adds r1, 0x10                                     |     r1 += 0x10;
    0x0001687e str r1, [sp, 0x34]                                |     var_34h = r1;
                                                                 | label_3:
    0x00016880 ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00016882 ldrd r0, ip, [r4, 0x48]                           |     __asm ("ldrd r0, ip, [r4, 0x48]");
    0x00016886 vmov.i8 d16, 0xff                                 |     __asm ("vmov.i8 d16, 0xff");
    0x0001688a subs r3, r1, r3                                   |     r3 = r1 - r3;
    0x0001688c str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x0001688e mov r5, r0                                        |     r5 = r0;
    0x00016890 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00016892 mov r6, ip                                        |     r6 = ip;
    0x00016894 vstr d16, [r4, 0x58]                              |     __asm ("vstr d16, [r4, 0x58]");
    0x00016898 sbc.w r3, r3, r2                                  |     __asm ("sbc.w r3, r3, r2");
    0x0001689c cmp.w sb, -1                                      |     
    0x000168a0 it eq                                             |     
                                                                 |     if (sb == -1) {
    0x000168a2 cmpeq r8, -1                                      |         __asm ("cmpeq r8, -1");
                                                                 |     }
    0x000168a6 str r3, [sp, 0x38]                                |     var_38h = r3;
                                                                 |     if (sb == -1) {
    0x000168a8 beq.w 0x16e50                                     |         goto label_37;
                                                                 |     }
                                                                 |     do {
    0x000168ac and.w r1, r0, ip                                  |         r1 = r0 & ip;
    0x000168b0 ldr r3, [sp, 0xc4]                                |         r3 = *(arg_c4h);
    0x000168b2 sub.w r1, r1, -1                                  |         r1 -= -1;
    0x000168b6 mov r5, r0                                        |         r5 = r0;
    0x000168b8 clz r1, r1                                        |         r1 &= r1;
    0x000168bc mov r6, ip                                        |         r6 = ip;
    0x000168be lsrs r1, r1, 5                                    |         r1 >>= 5;
    0x000168c0 cmp r3, 0                                         |         
    0x000168c2 it ne                                             |         
                                                                 |         if (r3 == 0) {
    0x000168c4 orrne r1, r1, 1                                   |             r1 |= 1;
                                                                 |         }
    0x000168c8 cmp r1, 0                                         |         
                                                                 |         if (r1 != 0) {
    0x000168ca bne.w 0x16c3a                                     |             goto label_38;
                                                                 |         }
    0x000168ce subs.w r2, r8, r0                                 |         r2 = r8 - r0;
    0x000168d2 ldr r0, [sp, 0x3c]                                |         r0 = var_3ch;
    0x000168d4 sbc.w r3, sb, ip                                  |         __asm ("sbc.w r3, sb, ip");
    0x000168d8 mov.w lr, 0xca00                                  |         
    0x000168dc movt lr, 0x3b9a                                   |         lr = 0x3b9aca00;
    0x000168e0 subs r0, r2, r0                                   |         r0 = r2 - r0;
    0x000168e2 ldr r2, [sp, 0x38]                                |         r2 = var_38h;
    0x000168e4 str r0, [sp, 0x4c]                                |         var_4ch = r0;
    0x000168e6 sbc.w ip, r3, r2                                  |         __asm ("sbc.w ip, r3, r2");
    0x000168ea add.w r2, r4, 0x10a0                              |         r2 = r4 + 0x10a0;
    0x000168ee ldr r3, [r2]                                      |         r3 = *(r2);
    0x000168f0 strd r3, r2, [sp, 0x40]                           |         __asm ("strd r3, r2, [var_44h]");
    0x000168f4 subs r7, r0, r3                                   |         r7 = r0 - r3;
    0x000168f6 ldr r2, [r2, 4]                                   |         r2 = *((r2 + 4));
    0x000168f8 sbc.w r0, ip, r2                                  |         __asm ("sbc.w r0, ip, r2");
    0x000168fa movs r2, r0                                       |         r2 = r0;
    0x000168fc asrs r3, r0, 0x1f                                 |         r3 = r0 >> 0x1f;
    0x000168fe eor.w r7, r7, r0, asr 31                          |         r7 ^= (r0 >> 31);
    0x00016902 eor.w r0, r0, r0, asr 31                          |         r0 ^= (r0 >> 31);
    0x00016906 subs r7, r7, r3                                   |         r7 -= r3;
    0x00016908 sbc.w r0, r0, r3                                  |         __asm ("sbc.w r0, r0, r3");
    0x0001690c cmp lr, r7                                        |         
    0x0001690e sbcs.w r0, r1, r0                                 |         __asm ("sbcs.w r0, r1, r0");
                                                                 |         if (lr >= r7) {
    0x00016912 bge.w 0x16b98                                     |             goto label_39;
                                                                 |         }
    0x00016916 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x00016918 mov ip, r1                                        |         
    0x0001691a vmov.i8 d17, 0xff                                 |         __asm ("vmov.i8 d17, 0xff");
    0x0001691e ldr r0, [sp, 0x30]                                |         r0 = var_30h;
    0x00016920 str r3, [r4, 0x50]                                |         *((r4 + 0x50)) = r3;
    0x00016922 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x00016924 strd r8, sb, [r4, 0x48]                           |         __asm ("strd r8, sb, [r4, 0x48]");
    0x00016928 vstr d17, [r4, 0x70]                              |         __asm ("vstr d17, [r4, 0x70]");
    0x0001692c str r3, [r4, 0x54]                                |         *((r4 + 0x54)) = r3;
    0x0001692e ldr r3, [sp, 0x20]                                |         r3 = var_20h;
    0x00016930 vmov.i32 d16, 0                                   |         __asm ("vmov.i32 d16, 0");
    0x00016934 ldr r2, [sp, 0x44]                                |         r2 = var_44h;
    0x00016936 str r3, [r4, 0x68]                                |         *((r4 + 0x68)) = r3;
    0x00016938 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x0001693a str r1, [sp, 0x3c]                                |         var_3ch = r1;
    0x0001693c str r1, [sp, 0x4c]                                |         var_4ch = r1;
    0x0001693e str r3, [r4, 0x6c]                                |         *((r4 + 0x6c)) = r3;
    0x00016940 ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x00016942 str r1, [sp, 0x38]                                |         var_38h = r1;
    0x00016944 vstr d17, [r3, -8]                                |         __asm ("vstr d17, [r3, -8]");
    0x00016948 movs r3, 1                                        |         r3 = 1;
    0x0001694a str.w r1, [r0, 0x88]                              |         __asm ("str.w r1, [r0, 0x88]");
    0x0001694e str.w r3, [r0, 0x90]                              |         __asm ("str.w r3, [r0, 0x90]");
    0x00016952 mov r0, r1                                        |         r0 = r1;
    0x00016954 vstr d16, [r2]                                    |         __asm ("vstr d16, [r2]");
    0x00016958 str r3, [sp, 0x48]                                |         var_48h = r3;
    0x0001695a str r1, [r4, 0x40]                                |         *((r4 + 0x40)) = r1;
    0x0001695c vstr d16, [r4, 0x88]                              |         __asm ("vstr d16, [r4, 0x88]");
    0x00016960 str r3, [sp, 0x54]                                |         var_54h = r3;
                                                                 | label_29:
    0x00016962 ldr r2, [sp, 0x4c]                                |         r2 = var_4ch;
    0x00016964 mov r6, ip                                        |         r6 = ip;
    0x00016966 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x00016968 mov r5, r2                                        |         r5 = r2;
    0x0001696a str r2, [r3, -0x8]                                |         *((r3 - 0x8)) = r2;
    0x0001696e str ip, [r3, -0x4]                                |         *((r3 - 0x4)) = ip;
                                                                 | label_28:
    0x00016972 cmp r1, 0                                         |         
                                                                 |         if (r1 == 0) {
    0x00016974 beq.w 0x170ba                                     |             goto label_40;
                                                                 |         }
    0x00016978 ldr r3, [sp, 0x48]                                |         r3 = var_48h;
    0x0001697a ldr r2, [sp, 0x30]                                |         r2 = var_30h;
    0x0001697c str.w r3, [r2, 0x8c]                              |         __asm ("str.w r3, [r2, 0x8c]");
    0x00016980 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x00016982 strd r5, r6, [r3]                                 |         __asm ("strd r5, r6, [r3]");
    0x00016984 ldrsb r0, [r0, r0]                                |         r0 = *((r0 + r0));
    0x00016986 movs r3, 0                                        |         r3 = 0;
    0x00016988 str.w r3, [r2, 0x90]                              |         __asm ("str.w r3, [r2, 0x90]");
    0x0001698c str r3, [sp, 0x48]                                |         var_48h = r3;
    0x0001698e ldrd r5, r6, [r4, 0x48]                           |         __asm ("ldrd r5, r6, [r4, 0x48]");
    0x00016992 b 0x16c32                                         |         goto label_41;
                                                                 | label_32:
    0x00016994 ldr r1, [sp, 0xc4]                                |         r1 = *(arg_c4h);
    0x00016996 cmp r1, 0                                         |         
                                                                 |         if (r1 != 0) {
    0x00016998 bne.w 0x16ae0                                     |             goto label_42;
                                                                 |         }
    0x0001699c ldr r1, [r4, 0x18]                                |         r1 = *((r4 + 0x18));
    0x0001699e movs r0, 1                                        |         r0 = 1;
    0x000169a0 str r0, [r4, 0x40]                                |         *((r4 + 0x40)) = r0;
    0x000169a2 cmp r1, 2                                         |         
                                                                 |         if (r1 == 2) {
    0x000169a4 beq.w 0x16b80                                     |             goto label_43;
                                                                 |         }
    0x000169a8 cmp r1, 4                                         |         
                                                                 |         if (r1 == 4) {
    0x000169aa beq.w 0x16acc                                     |             goto label_35;
                                                                 |         }
    0x000169ae cmp r1, 0                                         |         
                                                                 |         if (r1 == 0) {
    0x000169b0 beq.w 0x16b80                                     |             goto label_43;
                                                                 |         }
    0x000169b4 cmp.w sb, -1                                      |         
    0x000169b8 it eq                                             |         
                                                                 |         if (sb == -1) {
    0x000169ba cmpeq r8, -1                                      |             __asm ("cmpeq r8, -1");
                                                                 |         }
                                                                 |         if (sb == -1) {
    0x000169be beq.w 0x16b34                                     |             goto label_44;
                                                                 |         }
                                                                 | label_2:
    0x000169c2 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x000169c4 vmov.i8 d16, 0xff                                 |         __asm ("vmov.i8 d16, 0xff");
    0x000169c8 strd r8, sb, [r4, 0x48]                           |         __asm ("strd r8, sb, [r4, 0x48]");
    0x000169cc str r3, [r4, 0x50]                                |         *((r4 + 0x50)) = r3;
    0x000169ce ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x000169d0 vstr d16, [r4, 0x58]                              |         __asm ("vstr d16, [r4, 0x58]");
    0x000169d4 vstr d16, [r4, 0x70]                              |         __asm ("vstr d16, [r4, 0x70]");
    0x000169d8 str r3, [r4, 0x54]                                |         *((r4 + 0x54)) = r3;
    0x000169da ldr r3, [sp, 0x20]                                |         r3 = var_20h;
    0x000169dc str r3, [r4, 0x68]                                |         *((r4 + 0x68)) = r3;
    0x000169de ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x000169e0 str r3, [r4, 0x6c]                                |         *((r4 + 0x6c)) = r3;
    0x000169e2 add.w r3, r4, 0x10a0                              |         r3 = r4 + 0x10a0;
    0x000169e6 adds r3, 0x10                                     |         r3 += 0x10;
    0x000169e8 vstr d16, [r3, -8]                                |         __asm ("vstr d16, [r3, -8]");
    0x000169ec str r3, [sp, 0x34]                                |         var_34h = r3;
    0x000169ee movs r3, 0                                        |         r3 = 0;
    0x000169f0 str r3, [r4, 0x40]                                |         *((r4 + 0x40)) = r3;
                                                                 | label_17:
    0x000169f2 cmp.w sl, 0                                       |         
    0x000169f6 it ne                                             |         
                                                                 |         if (sl != 0) {
    0x000169f8 cmpne fp, 0                                       |             __asm ("cmpne fp, 0");
                                                                 |         }
                                                                 |         if (sl != 0) {
    0x000169fc bne.w 0x16b50                                     |             goto label_16;
                                                                 |         }
    0x00016a00 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x00016a02 ldr r3, [r4, 0x50]                                |         r3 = *((r4 + 0x50));
    0x00016a04 vmov.i8 d16, 0xff                                 |         __asm ("vmov.i8 d16, 0xff");
    0x00016a08 ldrd r0, ip, [r4, 0x48]                           |         __asm ("ldrd r0, ip, [r4, 0x48]");
    0x00016a0c subs r3, r2, r3                                   |         r3 = r2 - r3;
    0x00016a0e ldr r2, [sp, 0x2c]                                |         r2 = var_2ch;
    0x00016a10 str r3, [sp, 0x3c]                                |         var_3ch = r3;
    0x00016a12 ldr r3, [r4, 0x54]                                |         r3 = *((r4 + 0x54));
    0x00016a14 vstr d16, [r4, 0x58]                              |         __asm ("vstr d16, [r4, 0x58]");
    0x00016a16 lsrs r6, r2, 0xc                                  |         r6 = r2 >> 0xc;
    0x00016a18 sbc.w r3, r2, r3                                  |         __asm ("sbc.w r3, r2, r3");
    0x00016a1c str r3, [sp, 0x38]                                |         var_38h = r3;
    0x00016a1e b 0x168ac                                         |         
                                                                 |     } while (1);
                                                                 | label_30:
    0x00016a20 ldrd r2, r3, [r4, 0x78]                           |     __asm ("ldrd r2, r3, [r4, 0x78]");
    0x00016a24 add r0, sp, 0x78                                  |     r0 += var_78h;
    0x00016a26 ldr r1, [sp, 0xb4]                                |     r1 = *(arg_b4h);
    0x00016a28 strd r2, r3, [sp, 0x78]                           |     __asm ("strd r2, r3, [var_78h]");
    0x00016a2c blx 0x6cc0                                        |     gst_segment_position_from_running_time ();
    0x00016a30 ldr r3, [r4, 0x60]                                |     r3 = *((r4 + 0x60));
    0x00016a32 ldrd r2, r5, [r4, 0x80]                           |     __asm ("ldrd r2, r5, [r4, 0x80]");
    0x00016a36 add.w r3, r3, r3, lsl 1                           |     r3 += (r3 << 1);
    0x00016a38 lsls r3, r0, 0xd                                  |     r3 = r0 << 0xd;
    0x00016a3a adds r7, r2, r3                                   |     r7 = r2 + r3;
    0x00016a3c adc r6, r5, 0                                     |     __asm ("adc r6, r5, 0");
    0x00016a40 cmp r7, r0                                        |     
    0x00016a42 sbcs r6, r1                                       |     __asm ("sbcs r6, r1");
                                                                 |     if (r7 <= r0) {
    0x00016a44 blo 0x16a54                                       |         goto label_45;
                                                                 |     }
    0x00016a46 adds r0, r0, r3                                   |     r0 += r3;
    0x00016a48 adc r1, r1, 0                                     |     __asm ("adc r1, r1, 0");
    0x00016a4c cmp r0, r2                                        |     
    0x00016a4e sbcs r1, r5                                       |     __asm ("sbcs r1, r5");
                                                                 |     if (r0 >= r2) {
    0x00016a50 bhs.w 0x16788                                     |         goto label_0;
                                                                 |     }
                                                                 | label_45:
    0x00016a54 ldr r3, [sp, 0xc4]                                |     r3 = *(arg_c4h);
    0x00016a56 mov.w r5, -1                                      |     r5 = -1;
    0x00016a5a mov r6, r5                                        |     r6 = r5;
    0x00016a5c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00016a5e bne 0x16afe                                       |         goto label_9;
                                                                 |     }
    0x00016a60 add.w r3, r4, 0x10a0                              |     r3 = r4 + 0x10a0;
    0x00016a64 vmov.i8 d16, 0xff                                 |     __asm ("vmov.i8 d16, 0xff");
    0x00016a68 add.w r1, r3, 0x10                                |     r1 = r3 + 0x10;
    0x00016a6c ldr r3, [sp, 0xc4]                                |     r3 = *(arg_c4h);
    0x00016a6e add.w r2, r4, 0x1000                              |     r2 = r4 + 0x1000;
    0x00016a72 vmov.i32 d17, 0                                   |     __asm ("vmov.i32 d17, 0");
    0x00016a76 vstr d16, [r4, 0x48]                              |     __asm ("vstr d16, [r4, 0x48]");
    0x00016a78 lsrs r2, r2, 0xc                                  |     r2 >>= 0xc;
    0x00016a7a vstr d16, [r4, 0x50]                              |     __asm ("vstr d16, [r4, 0x50]");
    0x00016a7e vstr d16, [r4, 0x68]                              |     __asm ("vstr d16, [r4, 0x68]");
    0x00016a82 vstr d16, [r4, 0x58]                              |     __asm ("vstr d16, [r4, 0x58]");
    0x00016a86 vstr d16, [r4, 0x78]                              |     __asm ("vstr d16, [r4, 0x78]");
    0x00016a8a vstr d16, [r4, 0x80]                              |     __asm ("vstr d16, [r4, 0x80]");
    0x00016a8e str.w r3, [r2, 0x88]                              |     __asm ("str.w r3, [r2, 0x88]");
    0x00016a92 movs r3, 1                                        |     r3 = 1;
    0x00016a94 str.w r3, [r2, 0x90]                              |     __asm ("str.w r3, [r2, 0x90]");
    0x00016a98 add.w r2, r4, 0x10a0                              |     r2 = r4 + 0x10a0;
    0x00016a9c vstr d17, [r2, -8]                                |     __asm ("vstr d17, [r2, -8]");
    0x00016aa0 vstr d17, [r2]                                    |     __asm ("vstr d17, [r2]");
    0x00016aa4 vstr d16, [r1, -8]                                |     __asm ("vstr d16, [r1, -8]");
    0x00016aa8 str r3, [r4, 0x40]                                |     *((r4 + 0x40)) = r3;
    0x00016aaa vstr d16, [r4, 0x70]                              |     __asm ("vstr d16, [r4, 0x70]");
    0x00016aae b 0x16788                                         |     goto label_0;
                                                                 | label_34:
    0x00016ab0 ldr r0, [r4, 0x48]                                |     r0 = *((r4 + 0x48));
    0x00016ab2 ldr r1, [r4, 0x4c]                                |     r1 = *((r4 + 0x4c));
    0x00016ab4 ldr.w ip, [r4, 0x40]                              |     ip = *((r4 + 0x40));
    0x00016ab6 stm r0!, {r6}                                     |     *(r0!) = r6;
    0x00016ab8 cmp.w r1, -1                                      |     
    0x00016abc it eq                                             |     
                                                                 |     if (r1 != -1) {
    0x00016abe cmpeq r0, -1                                      |         __asm ("cmpeq r0, -1");
                                                                 |         goto label_46;
                                                                 |     }
                                                                 |     if (r1 == -1) {
                                                                 | label_46:
    0x00016ac2 beq.w 0x16862                                     |         goto label_1;
                                                                 |     }
    0x00016ac6 cmp.w ip, 0                                       |     
                                                                 |     if (ip == 0) {
    0x00016aca beq 0x16b34                                       |         goto label_44;
                                                                 |     }
                                                                 | label_35:
    0x00016acc cmp.w sb, -1                                      |     
    0x00016ad0 it eq                                             |     
                                                                 |     if (sb == -1) {
    0x00016ad2 cmpeq r8, -1                                      |         __asm ("cmpeq r8, -1");
                                                                 |     }
                                                                 |     if (sb == -1) {
    0x00016ad6 beq 0x16b34                                       |         goto label_44;
                                                                 |     }
                                                                 | label_24:
    0x00016ad8 ldr r3, [sp, 0xc4]                                |     r3 = *(arg_c4h);
    0x00016ada cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00016adc beq.w 0x169c2                                     |         goto label_2;
                                                                 |     }
                                                                 | label_42:
    0x00016ae0 mov.w r5, -1                                      |     r5 = -1;
    0x00016ae4 mov r6, r5                                        |     r6 = r5;
                                                                 | label_4:
    0x00016ae6 cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x00016aea beq 0x16af2                                       |         
    0x00016aec mov r0, fp                                        |         r0 = fp;
    0x00016aee blx 0x631c                                        |         fcn_0000631c ();
                                                                 |     }
    0x00016af2 cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x00016af6 beq 0x16afe                                       |         
    0x00016af8 mov r0, sl                                        |         r0 = sl;
    0x00016afa blx 0x631c                                        |         fcn_0000631c ();
                                                                 |     }
                                                                 | label_9:
    0x00016afe ldr.w r2, [pc, 0x588]                             |     
    0x00016b02 ldr.w r3, [pc, 0x580]                             |     r3 = *(0x17086);
    0x00016b06 add r2, pc                                        |     r2 = 0x2db94;
    0x00016b08 ldr r3, [r2, r3]                                  |     r3 = *(0x2db94);
    0x00016b0a ldr r2, [r3]                                      |     r2 = *(0x2db94);
    0x00016b0c ldr r3, [sp, 0x84]                                |     r3 = var_84h;
    0x00016b0e eors r2, r3                                       |     r2 ^= r3;
    0x00016b10 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00016b14 bne.w 0x1723c                                     |         goto label_47;
                                                                 |     }
    0x00016b16 strh r2, [r2, 0x1c]                               |     *((r2 + 0x1c)) = r2;
    0x00016b18 mov r0, r5                                        |     r0 = r5;
    0x00016b1a mov r1, r6                                        |     r1 = r6;
    0x00016b1c add sp, 0x8c                                      |     
    0x00016b1e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_33:
    0x00016b22 ldrd r0, ip, [r4, 0x48]                           |     __asm ("ldrd r0, ip, [r4, 0x48]");
    0x00016b26 cmp.w ip, -1                                      |     
    0x00016b2a it eq                                             |     
                                                                 |     if (ip == -1) {
    0x00016b2c cmpeq r0, -1                                      |         __asm ("cmpeq r0, -1");
                                                                 |     }
                                                                 |     if (ip == -1) {
    0x00016b30 beq.w 0x16f50                                     |         goto label_48;
                                                                 |     }
                                                                 |     do {
                                                                 | label_44:
    0x00016b34 cmp.w sl, 0                                       |         
    0x00016b38 it ne                                             |         
                                                                 |         if (sl != 0) {
    0x00016b3a cmpne fp, 0                                       |             __asm ("cmpne fp, 0");
                                                                 |         }
                                                                 |         if (sl == 0) {
    0x00016b3e beq.w 0x16e2e                                     |             goto label_49;
                                                                 |         }
    0x00016b42 mov.w r8, -1                                      |         r8 = -1;
    0x00016b46 add.w r3, r4, 0x10a0                              |         r3 = r4 + 0x10a0;
    0x00016b4a mov sb, r8                                        |         sb = r8;
    0x00016b4c adds r3, 0x10                                     |         r3 += 0x10;
    0x00016b4e str r3, [sp, 0x34]                                |         var_34h = r3;
                                                                 | label_16:
    0x00016b50 mov r0, fp                                        |         r0 = fp;
    0x00016b52 blx 0x760c                                        |         r0 = fcn_0000760c ();
                                                                 |         if (r0 != 0) {
    0x00016b56 cbz r0, 0x16b7a                                   |             
    0x00016b58 ldr r3, [r4, 0x18]                                |             r3 = *((r4 + 0x18));
    0x00016b5a cmp r3, 1                                         |             
                                                                 |             if (r3 == 1) {
    0x00016b5c beq.w 0x16f66                                     |                 goto label_50;
                                                                 |             }
    0x00016b60 sub.w r3, r3, 4                                   |             r3 -= 4;
    0x00016b64 ands r5, r6                                       |             r5 &= r6;
    0x00016b66 clz r3, r3                                        |             r3 &= r3;
    0x00016b6a adds r5, 1                                        |             r5++;
    0x00016b6c lsr.w r3, r3, 5                                   |             r3 >>= 5;
    0x00016b70 it eq                                             |             
                                                                 |             if (r5 != 1) {
    0x00016b72 moveq r3, 0                                       |                 r3 = 0;
                                                                 |             }
    0x00016b74 cmp r3, 0                                         |             
                                                                 |             if (r3 != 0) {
    0x00016b76 bne.w 0x16d50                                     |                 goto label_51;
                                                                 |             }
                                                                 |         }
                                                                 | label_10:
    0x00016b7a ldrd r3, r2, [r4, 0x50]                           |         __asm ("ldrd r3, r2, [r4, 0x50]");
    0x00016b7e b 0x16880                                         |         goto label_3;
                                                                 | label_43:
    0x00016b80 ldrd r0, r1, [r4, 0x48]                           |         __asm ("ldrd r0, r1, [r4, 0x48]");
    0x00016b84 cmp.w r1, -1                                      |         
    0x00016b88 it eq                                             |         
                                                                 |         if (r1 == -1) {
    0x00016b8a cmpeq r0, -1                                      |             __asm ("cmpeq r0, -1");
                                                                 |         }
    0x00016b8e bne 0x16b34                                       |         
                                                                 |     } while (r1 != -1);
    0x00016b90 mov.w r8, 0                                       |     r8 = 0;
    0x00016b94 mov sb, r8                                        |     sb = r8;
    0x00016b96 b 0x169c2                                         |     goto label_2;
                                                                 | label_39:
    0x00016b98 ldr r3, [sp, 0xc0]                                |     r3 = *(arg_c0h);
    0x00016b9a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00016b9c bne 0x16c52                                       |         
    0x00016b9e ldr r7, [sp, 0x30]                                |         r7 = var_30h;
    0x00016ba0 ldr.w r0, [r7, 0x88]                              |         r0 = *((r7 + 0x88));
    0x00016ba4 ldr.w r3, [r7, 0x90]                              |         r3 = *((r7 + 0x90));
    0x00016ba8 adds r1, r0, 1                                    |         r1 = r0 + 1;
    0x00016baa str r3, [sp, 0x58]                                |         var_58h = r3;
    0x00016bac str r1, [sp, 0x48]                                |         var_48h = r1;
    0x00016bae str r1, [sp, 0x54]                                |         var_54h = r1;
    0x00016bb0 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00016bb2 bne.w 0x17240                                     |             goto label_52;
                                                                 |         }
    0x00016bb6 ldr r3, [sp, 0x4c]                                |         r3 = var_4ch;
    0x00016bb8 add.w r1, r4, r0, lsl 3                           |         r1 = r4 + (r0 << 3);
    0x00016bbc ldr.w r0, [r1, 0x88]                              |         r0 = *((r1 + 0x88));
    0x00016bc0 ldr.w lr, [r1, 0x8c]                              |         
    0x00016bc4 str.w r3, [r1, 0x88]                              |         __asm ("str.w r3, [r1, 0x88]");
    0x00016bc8 str.w ip, [r1, 0x8c]                              |         __asm ("str.w ip, [r1, 0x8c]");
    0x00016bcc ldr r1, [sp, 0x44]                                |         r1 = var_44h;
    0x00016bce str r0, [sp, 0x54]                                |         var_54h = r0;
    0x00016bd0 ldr.w r7, [r7, 0x8c]                              |         r7 = *((r7 + 0x8c));
    0x00016bd4 ldrd r0, r1, [r1, -0x8]                           |         __asm ("ldrd r0, r1, [r1, -0x8]");
    0x00016bd8 str r7, [sp, 0x50]                                |         var_50h = r7;
    0x00016bda cmp r0, r3                                        |         
    0x00016bdc sbcs.w r3, r1, ip                                 |         __asm ("sbcs.w r3, r1, ip");
                                                                 |         if (r0 < r3) {
    0x00016be0 blt.w 0x16e76                                     |             goto label_53;
                                                                 |         }
    0x00016be4 ldr r1, [sp, 0x4c]                                |         r1 = var_4ch;
    0x00016be6 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x00016be8 mov r0, r1                                        |         r0 = r1;
    0x00016bea str r1, [r3, -0x8]                                |         *((r3 - 0x8)) = r1;
    0x00016bee mov r1, ip                                        |         r1 = ip;
    0x00016bf0 str ip, [r3, -0x4]                                |         *((r3 - 0x4)) = ip;
                                                                 | label_15:
    0x00016bf4 ldr r3, [sp, 0x40]                                |         r3 = var_40h;
    0x00016bf6 lsl.w ip, r2, 5                                   |         
    0x00016bfa lsls r7, r3, 5                                    |         r7 = r3 << 5;
    0x00016bfc orr.w ip, ip, r3, lsr 27                          |         
    0x00016c00 subs r7, r7, r3                                   |         r7 -= r3;
    0x00016c02 sbc.w r3, ip, r2                                  |         __asm ("sbc.w r3, ip, r2");
    0x00016c06 lsls r2, r7, 2                                    |         r2 = r7 << 2;
    0x00016c08 lsls r3, r3, 2                                    |         r3 <<= 2;
    0x00016c0a adds r0, r2, r0                                   |         r0 = r2 + r0;
    0x00016c0c orr.w r3, r3, r7, lsr 30                          |         r3 |= (r7 >> 30);
    0x00016c10 mov.w r2, 0x7d                                    |         r2 = 0x7d;
    0x00016c14 adc.w r1, r1, r3                                  |         __asm ("adc.w r1, r1, r3");
    0x00016c16 lsls r3, r0, 4                                    |         r3 = r0 << 4;
    0x00016c18 movs r3, 0                                        |         r3 = 0;
    0x00016c1a bl 0x25a44                                        |         fcn_00025a44 (r0, r1, r2, r3);
    0x00016c1e ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x00016c20 strd r0, r1, [r3]                                 |         __asm ("strd r0, r1, [r3]");
                                                                 | label_22:
    0x00016c24 ldr r2, [sp, 0x48]                                |         r2 = var_48h;
    0x00016c26 ldr r1, [sp, 0x50]                                |         r1 = var_50h;
    0x00016c28 mov r3, r2                                        |         r3 = r2;
    0x00016c2a cmp r2, r1                                        |         
    0x00016c2c it hs                                             |         
                                                                 |         if (r2 < r1) {
    0x00016c2e movhs r3, 0                                       |             r3 = 0;
                                                                 |         }
    0x00016c30 str r3, [sp, 0x48]                                |         var_48h = r3;
                                                                 | label_41:
    0x00016c32 ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x00016c34 ldr r2, [sp, 0x48]                                |         r2 = var_48h;
    0x00016c36 str.w r2, [r3, 0x88]                              |         __asm ("str.w r2, [r3, 0x88]");
    0x00016c38 movs r0, 0x88                                     |         r0 = 0x88;
                                                                 | label_38:
    0x00016c3a cmp.w r6, -1                                      |         
    0x00016c3e it eq                                             |         
                                                                 |         if (r6 == -1) {
    0x00016c40 cmpeq r5, -1                                      |             __asm ("cmpeq r5, -1");
                                                                 |         }
                                                                 |         if (r6 == -1) {
    0x00016c44 beq.w 0x16f3c                                     |             goto label_54;
                                                                 |         }
    0x00016c48 add.w r2, r4, 0x10a0                              |         r2 = r4 + 0x10a0;
    0x00016c4c ldr r3, [r2]                                      |         r3 = *(r2);
    0x00016c4e ldr r2, [r2, 4]                                   |         r2 = *((r2 + 4));
    0x00016c50 str r3, [sp, 0x40]                                |         var_40h = r3;
                                                                 |     }
                                                                 | label_14:
    0x00016c52 ldr r1, [sp, 0x3c]                                |     r1 = var_3ch;
    0x00016c54 adds r5, r5, r1                                   |     r5 += r1;
    0x00016c56 ldr r1, [sp, 0x38]                                |     r1 = var_38h;
    0x00016c58 adc.w r6, r1, r6                                  |     __asm ("adc.w r6, r1, r6");
    0x00016c5c cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x00016c5e blt 0x16d20                                       |         goto label_55;
                                                                 |     }
                                                                 | label_7:
    0x00016c60 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00016c62 adds r5, r3, r5                                   |     r5 = r3 + r5;
    0x00016c64 adc.w r6, r2, r6                                  |     __asm ("adc.w r6, r2, r6");
                                                                 | label_23:
    0x00016c68 ldr r7, [sp, 0xc0]                                |     r7 = *(arg_c0h);
    0x00016c6a and.w r3, r8, sb                                  |     r3 = r8 & sb;
    0x00016c6e adds r3, 1                                        |     r3++;
    0x00016c70 clz r7, r7                                        |     r7 &= r7;
    0x00016c74 lsr.w r7, r7, 5                                   |     r7 >>= 5;
    0x00016c78 it eq                                             |     
                                                                 |     if (r3 != 1) {
    0x00016c7a moveq r7, 0                                       |         r7 = 0;
                                                                 |     }
    0x00016c7c cmp.w r6, -1                                      |     
    0x00016c80 it eq                                             |     
                                                                 |     if (r6 == -1) {
    0x00016c82 cmpeq r5, -1                                      |         __asm ("cmpeq r5, -1");
                                                                 |     }
                                                                 |     if (r6 == -1) {
    0x00016c86 beq 0x16cd0                                       |         goto label_5;
                                                                 |     }
                                                                 | label_8:
    0x00016c88 ldrd r2, r1, [r4, 0x70]                           |     __asm ("ldrd r2, r1, [r4, 0x70]");
    0x00016c8c cmp.w r1, -1                                      |     
    0x00016c90 it eq                                             |     
                                                                 |     if (r1 == -1) {
    0x00016c92 cmpeq r2, -1                                      |         __asm ("cmpeq r2, -1");
                                                                 |     }
                                                                 |     if (r1 == -1) {
    0x00016c96 beq 0x16cd0                                       |         goto label_5;
                                                                 |     }
    0x00016c98 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00016c9a ldrd lr, ip, [r3, -0x8]                           |     __asm ("ldrd lr, ip, [r3, -0x8]");
    0x00016c9e cmp.w ip, -1                                      |     
    0x00016ca2 it eq                                             |     
                                                                 |     if (ip == -1) {
    0x00016ca4 cmpeq lr, -1                                      |         __asm ("cmpeq lr, -1");
                                                                 |     }
                                                                 |     if (ip == -1) {
    0x00016ca8 beq 0x16cd0                                       |         goto label_5;
                                                                 |     }
                                                                 | label_12:
    0x00016caa ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x00016cac ldr r3, [r4, 0x50]                                |     r3 = *((r4 + 0x50));
    0x00016cae subs r3, r0, r3                                   |     r3 = r0 - r3;
    0x00016cb0 ldr r0, [r4, 0x54]                                |     r0 = *((r4 + 0x54));
    0x00016cb2 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00016cb4 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00016cb6 sbc.w r0, r3, r0                                  |     __asm ("sbc.w r0, r3, r0");
    0x00016cba ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00016cbc cmp lr, r3                                        |     
    0x00016cbe sbcs.w r3, ip, r0                                 |     __asm ("sbcs.w r3, ip, r0");
                                                                 |     if (lr >= r3) {
    0x00016cc2 bhs 0x16d00                                       |         goto label_56;
                                                                 |     }
    0x00016cc4 cmp r5, r2                                        |     
    0x00016cc6 sbcs.w r3, r6, r1                                 |     __asm ("sbcs.w r3, r6, r1");
    0x00016cca bhs 0x16cd0                                       |     
                                                                 |     while (r0 == ip) {
                                                                 | label_6:
    0x00016ccc mov r5, r2                                        |         r5 = r2;
    0x00016cce mov r6, r1                                        |         r6 = r1;
                                                                 |         if (r7 != 0) {
                                                                 | label_5:
    0x00016cd0 cbz r7, 0x16ce6                                   |             
    0x00016cd2 ldr r3, [r4, 0x20]                                |             r3 = *((r4 + 0x20));
    0x00016cd4 adds r2, r5, r3                                   |             r2 = r5 + r3;
    0x00016cd6 ldr r3, [r4, 0x24]                                |             r3 = *((r4 + 0x24));
    0x00016cd8 adc.w r3, r6, r3                                  |             __asm ("adc.w r3, r6, r3");
    0x00016cdc cmp r2, r8                                        |             
    0x00016cde sbcs.w r3, r3, sb                                 |             __asm ("sbcs.w r3, r3, sb");
                                                                 |             if (r2 <= r8) {
    0x00016ce2 blo.w 0x16ee6                                     |                 goto label_57;
                                                                 |             }
                                                                 |         }
                                                                 | label_11:
    0x00016ce6 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x00016ce8 ldr r3, [r4, 0x50]                                |         r3 = *((r4 + 0x50));
    0x00016cea ldr r1, [sp, 0x2c]                                |         r1 = var_2ch;
    0x00016cec subs r3, r2, r3                                   |         r3 = r2 - r3;
    0x00016cee ldr r2, [r4, 0x54]                                |         r2 = *((r4 + 0x54));
    0x00016cf0 sbc.w r2, r1, r2                                  |         __asm ("sbc.w r2, r1, r2");
                                                                 | label_13:
    0x00016cf4 ldr r1, [sp, 0x34]                                |         r1 = var_34h;
    0x00016cf6 strd r5, r6, [r4, 0x70]                           |         __asm ("strd r5, r6, [r4, 0x70]");
    0x00016cfa strd r3, r2, [r1, -0x8]                           |         __asm ("strd r3, r2, [r1, -0x8]");
    0x00016cfe b 0x16ae6                                         |         goto label_4;
                                                                 | label_56:
    0x00016d00 ldr r3, [sp, 0x38]                                |         r3 = var_38h;
    0x00016d02 cmp r3, lr                                        |         
    0x00016d04 sbcs.w r3, r0, ip                                 |         __asm ("sbcs.w r3, r0, ip");
                                                                 |         if (r3 <= lr) {
    0x00016d08 blo 0x16d16                                       |             goto label_58;
                                                                 |         }
    0x00016d0a ldr r3, [sp, 0x38]                                |         r3 = var_38h;
    0x00016d0c cmp r0, ip                                        |         
    0x00016d0e it eq                                             |         
                                                                 |         if (r0 == ip) {
    0x00016d10 cmpeq r3, lr                                      |             __asm ("cmpeq r3, lr");
                                                                 |         }
    0x00016d12 beq 0x16ccc                                       |         
                                                                 |     }
    0x00016d14 b 0x16cd0                                         |     goto label_5;
                                                                 | label_58:
    0x00016d16 cmp r2, r5                                        |     
    0x00016d18 sbcs.w r3, r1, r6                                 |     __asm ("sbcs.w r3, r1, r6");
                                                                 |     if (r2 >= r5) {
    0x00016d1c bhs 0x16cd0                                       |         goto label_5;
                                                                 |     }
    0x00016d1e b 0x16ccc                                         |     goto label_6;
                                                                 | label_55:
    0x00016d20 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00016d22 rsbs r0, r3, 0                                    |     r0 = r3 - ;
    0x00016d24 sbc.w r1, r2, r2, lsl 1                           |     __asm ("sbc.w r1, r2, r2, lsl 1");
    0x00016d28 cmp r5, r0                                        |     
    0x00016d2a sbcs.w r1, r6, r1                                 |     __asm ("sbcs.w r1, r6, r1");
                                                                 |     if (r5 >= r0) {
    0x00016d2e bhs 0x16c60                                       |         goto label_7;
                                                                 |     }
    0x00016d30 ldr r3, [sp, 0xc0]                                |     r3 = *(arg_c0h);
    0x00016d32 and.w r7, r8, sb                                  |     r7 = r8 & sb;
    0x00016d36 adds r7, 1                                        |     r7++;
    0x00016d38 mov.w r5, 0                                       |     r5 = 0;
    0x00016d3c it ne                                             |     
                                                                 |     if (r7 == 1) {
    0x00016d3e movne r7, 1                                       |         r7 = 1;
                                                                 |     }
    0x00016d40 mov r6, r5                                        |     r6 = r5;
    0x00016d42 cmp r3, 0                                         |     
    0x00016d44 it ne                                             |     
                                                                 |     if (r3 == 0) {
    0x00016d46 movne r7, 0                                       |         r7 = 0;
                                                                 |     }
    0x00016d48 b 0x16c88                                         |     goto label_8;
                                                                 | label_31:
    0x00016d4a ldrd r5, r6, [r4, 0x70]                           |     __asm ("ldrd r5, r6, [r4, 0x70]");
    0x00016d4e b 0x16afe                                         |     goto label_9;
                                                                 | label_51:
    0x00016d50 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00016d52 ldr.w r3, [r3, 0xd0]                              |     r3 = *((r3 + 0xd0));
    0x00016d56 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00016d58 beq.w 0x16b7a                                     |         goto label_10;
                                                                 |     }
                                                                 | label_18:
    0x00016d5c add r3, sp, 0x78                                  |     r3 += var_78h;
    0x00016d5e add r2, sp, 0x68                                  |     r2 += var_68h;
    0x00016d60 add r1, sp, 0x60                                  |     r1 += var_60h;
    0x00016d62 mov r0, fp                                        |     r0 = fp;
    0x00016d64 str r3, [sp]                                      |     *(sp) = r3;
    0x00016d66 add r3, sp, 0x70                                  |     r3 += var_70h;
    0x00016d68 blx 0x6b6c                                        |     fcn_00006b6c ();
    0x00016d6c mov r0, fp                                        |     r0 = fp;
    0x00016d6e mov.w r8, 0                                       |     r8 = 0;
    0x00016d72 blx 0x767c                                        |     fcn_0000767c ();
    0x00016d76 vldr d16, [pc, 0x300]                             |     __asm ("vldr d16, aav.0x000000ff");
    0x00016d7a mov r3, r8                                        |     r3 = r8;
    0x00016d7c ldr r2, [r4, 0x60]                                |     r2 = *((r4 + 0x60));
    0x00016d7e mov sb, r0                                        |     sb = r0;
    0x00016d80 mov r5, r1                                        |     r5 = r1;
    0x00016d82 vstr d16, [sp]                                    |     __asm ("vstr d16, [sp]");
    0x00016d86 blx 0x7664                                        |     fcn_00007664 ();
    0x00016d8a ldr r3, [sp, 0xb4]                                |     r3 = *(arg_b4h);
    0x00016d8c adds r2, r6, r0                                   |     r2 = r6 + r0;
    0x00016d8e mov r1, r8                                        |     r1 = r8;
    0x00016d90 cmp r3, r2                                        |     
                                                                 |     if (r3 >= r2) {
    0x00016d92 bhs.w 0x1708c                                     |         goto label_59;
                                                                 |     }
    0x00016d96 subs r0, r2, r3                                   |     r0 = r2 - r3;
    0x00016d98 sbc.w r1, r1, r1                                  |     __asm ("sbc.w r1, r1, r1");
    0x00016d9c cmp.w r0, -0x80000000                             |     
    0x00016da0 sbcs r3, r1, 0                                    |     __asm ("sbcs r3, r1, 0");
    0x00016da4 it hs                                             |     
                                                                 |     if (r0 < -0x80000000) {
    0x00016da6 movhs r1, 1                                       |         r1 = 1;
                                                                 |     }
                                                                 |     if (r0 >= -0x80000000) {
    0x00016da8 bhs.w 0x17054                                     |         goto label_20;
                                                                 |     }
                                                                 | label_21:
    0x00016dac ldr r3, [r4, 0x60]                                |     r3 = *((r4 + 0x60));
    0x00016dae str r3, [sp]                                      |     *(sp) = r3;
    0x00016db0 movs r3, 0                                        |     r3 = 0;
    0x00016db2 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00016db4 adr r3, 0x2c0                                     |     r3 = 0x2c0;
    0x00016db6 ldrd r2, r3, [r3]                                 |     __asm ("ldrd r2, r3, [r3]");
    0x00016dba blx 0x7664                                        |     r0 = fcn_00007664 ();
    0x00016dbe subs.w r2, sb, r0                                 |     r2 = sb - r0;
    0x00016dc2 sbc.w r3, r5, r1                                  |     __asm ("sbc.w r3, r5, r1");
                                                                 | label_19:
    0x00016dc6 vldr d16, [sp, 0x78]                              |     __asm ("vldr d16, [sp, 0x78]");
    0x00016dca mov r0, fp                                        |     r0 = fp;
    0x00016dcc vstr d16, [sp, 0x18]                              |     __asm ("vstr d16, [sp, 0x18]");
    0x00016dd0 vldr d16, [sp, 0x70]                              |     __asm ("vldr d16, [sp, 0x70]");
    0x00016dd4 vstr d16, [sp, 0x10]                              |     __asm ("vstr d16, [sp, 0x10]");
    0x00016dd8 vldr d16, [sp, 0x68]                              |     __asm ("vldr d16, [sp, 0x68]");
    0x00016ddc vstr d16, [sp, 8]                                 |     __asm ("vstr d16, [sp, 8]");
    0x00016de0 vldr d16, [sp, 0x60]                              |     __asm ("vldr d16, [sp, 0x60]");
    0x00016de4 vstr d16, [sp]                                    |     __asm ("vstr d16, [sp]");
    0x00016de8 blx 0x7468                                        |     fcn_00007468 ();
    0x00016dec ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00016dee cmp r3, r0                                        |     
    0x00016df0 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00016df2 sbcs r3, r1                                       |     __asm ("sbcs r3, r1");
                                                                 |     if (r3 <= r0) {
    0x00016df4 blo.w 0x1700c                                     |         goto label_60;
                                                                 |     }
    0x00016df8 ldrd r2, r1, [r4, 0x70]                           |     __asm ("ldrd r2, r1, [r4, 0x70]");
    0x00016dfc cmp.w r1, -1                                      |     
    0x00016e00 it eq                                             |     
                                                                 |     if (r1 == -1) {
    0x00016e02 cmpeq r2, -1                                      |         __asm ("cmpeq r2, -1");
                                                                 |     }
                                                                 |     if (r1 == -1) {
    0x00016e06 beq.w 0x17182                                     |         goto label_61;
                                                                 |     }
    0x00016e0a ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00016e0c movs r5, 0                                        |     r5 = 0;
    0x00016e0e ldrd lr, ip, [r3, -0x8]                           |     __asm ("ldrd lr, ip, [r3, -0x8]");
    0x00016e12 cmp.w ip, -1                                      |     
    0x00016e16 it eq                                             |     
                                                                 |     if (ip == -1) {
    0x00016e18 cmpeq lr, -1                                      |         __asm ("cmpeq lr, -1");
                                                                 |     }
    0x00016e1c it eq                                             |     
                                                                 |     if (ip == -1) {
    0x00016e1e moveq r6, r5                                      |         r6 = r5;
                                                                 |         goto label_62;
                                                                 |     }
                                                                 |     if (ip == -1) {
                                                                 | label_62:
    0x00016e20 beq.w 0x16ce6                                     |         goto label_11;
                                                                 |     }
    0x00016e24 mov.w r8, -1                                      |     r8 = -1;
    0x00016e28 mov r6, r5                                        |     r6 = r5;
    0x00016e2a mov sb, r8                                        |     sb = r8;
    0x00016e2c b 0x16caa                                         |     goto label_12;
                                                                 | label_49:
    0x00016e2e ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00016e30 ldrd r5, r6, [r4, 0x48]                           |     __asm ("ldrd r5, r6, [r4, 0x48]");
    0x00016e34 vmov.i8 d16, 0xff                                 |     __asm ("vmov.i8 d16, 0xff");
    0x00016e38 subs r3, r1, r3                                   |     r3 = r1 - r3;
    0x00016e3a str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00016e3c ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00016e3e vstr d16, [r4, 0x58]                              |     __asm ("vstr d16, [r4, 0x58]");
    0x00016e42 sbc.w r3, r3, r2                                  |     __asm ("sbc.w r3, r3, r2");
    0x00016e46 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00016e48 add.w r3, r4, 0x10a0                              |     r3 = r4 + 0x10a0;
    0x00016e4c adds r3, 0x10                                     |     r3 += 0x10;
    0x00016e4e str r3, [sp, 0x34]                                |     var_34h = r3;
                                                                 | label_37:
    0x00016e50 cmp.w r6, -1                                      |     
    0x00016e54 it eq                                             |     
                                                                 |     if (r6 == -1) {
    0x00016e56 cmpeq r5, -1                                      |         __asm ("cmpeq r5, -1");
                                                                 |     }
    0x00016e5a it eq                                             |     
                                                                 |     if (r6 != -1) {
    0x00016e5c ldrdeq r2, r3, [sp, 0x38]                         |         __asm ("ldrdeq r2, r3, [var_38h]");
                                                                 |         goto label_63;
                                                                 |     }
                                                                 |     if (r6 == -1) {
                                                                 | label_63:
    0x00016e60 beq.w 0x16cf4                                     |         goto label_13;
                                                                 |     }
    0x00016e64 add.w r2, r4, 0x10a0                              |     r2 = r4 + 0x10a0;
    0x00016e68 mov.w r8, -1                                      |     r8 = -1;
    0x00016e6c ldr r3, [r2]                                      |     r3 = *(r2);
    0x00016e6e mov sb, r8                                        |     sb = r8;
    0x00016e70 ldr r2, [r2, 4]                                   |     r2 = *((r2 + 4));
    0x00016e72 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00016e74 b 0x16c52                                         |     goto label_14;
                                                                 | label_53:
    0x00016e76 ldr r3, [sp, 0x54]                                |     r3 = var_54h;
    0x00016e78 cmp lr, r1                                        |     
    0x00016e7a it eq                                             |     
                                                                 |     if (lr != r1) {
    0x00016e7c cmpeq r3, r0                                      |         __asm ("cmpeq r3, r0");
                                                                 |         goto label_64;
                                                                 |     }
                                                                 |     if (lr != r1) {
                                                                 | label_64:
    0x00016e7e bne.w 0x16bf4                                     |         goto label_15;
                                                                 |     }
    0x00016e82 ldr r3, [sp, 0x50]                                |     r3 = var_50h;
    0x00016e84 mov.w r0, -1                                      |     r0 = -1;
    0x00016e88 mvn r1, 0x80000000                                |     r1 = ~0x80000000;
                                                                 |     if (r3 == 0) {
    0x00016e8c cbz r3, 0x16ede                                   |         goto label_25;
                                                                 |     }
    0x00016e8e mov.w r1, -1                                      |     r1 = -1;
    0x00016e92 mvn r0, 0x80000000                                |     r0 = ~0x80000000;
    0x00016e96 ldr r7, [sp, 0x58]                                |     r7 = var_58h;
    0x00016e98 add.w ip, r4, 0x80                                |     
    0x00016e9c strd r4, r2, [sp, 0x58]                           |     __asm ("strd r4, r2, [var_58h]");
    0x00016ea0 mov r2, r1                                        |     r2 = r1;
    0x00016ea2 ldr r3, [sp, 0x54]                                |     r3 = var_54h;
    0x00016ea4 mov r4, r0                                        |     r4 = r0;
    0x00016ea6 str.w fp, [sp, 0x4c]                              |     __asm ("str.w fp, [var_4ch]");
    0x00016eaa b 0x16ec6                                         |     
                                                                 |     while (lr != r1) {
    0x00016eac cmp r0, r2                                        |         
    0x00016eae add.w r7, r7, 1                                   |         r7++;
    0x00016eb2 sbcs.w fp, r1, r4                                 |         __asm ("sbcs.w fp, r1, r4");
    0x00016eb6 it lt                                             |         
                                                                 |         if (r0 >= r2) {
    0x00016eb8 movlt r4, r1                                      |             r4 = r1;
                                                                 |         }
    0x00016eba ldr r1, [sp, 0x50]                                |         r1 = var_50h;
    0x00016ebc it lt                                             |         
                                                                 |         if (r0 >= r2) {
    0x00016ebe movlt r2, r0                                      |             r2 = r0;
                                                                 |         }
    0x00016ec0 cmp r7, r1                                        |         
                                                                 |         if (r7 == r1) {
    0x00016ec2 beq.w 0x17174                                     |             goto label_65;
                                                                 |         }
    0x00016ec6 ldr r0, [ip, 8]!                                  |         r0 = *((ip += 8));
    0x00016eca ldr.w r1, [ip, 4]                                 |         r1 = *((ip + 4));
    0x00016ece cmp lr, r1                                        |         
    0x00016ed0 it eq                                             |         
                                                                 |         if (lr == r1) {
    0x00016ed2 cmpeq r3, r0                                      |             __asm ("cmpeq r3, r0");
                                                                 |         }
    0x00016ed4 bne 0x16eac                                       |         
                                                                 |     }
    0x00016ed6 ldr.w fp, [sp, 0x4c]                              |     fp = var_4ch;
    0x00016eda ldrd r4, r2, [sp, 0x58]                           |     __asm ("ldrd r4, r2, [var_58h]");
                                                                 | label_25:
    0x00016ede ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00016ee0 strd r0, r1, [r3, -0x8]                           |     __asm ("strd r0, r1, [r3, -0x8]");
    0x00016ee4 b 0x16bf4                                         |     goto label_15;
                                                                 | label_57:
    0x00016ee6 ldr r1, [sp, 0x30]                                |     r1 = var_30h;
    0x00016ee8 mov.w ip, 0                                       |     
    0x00016eec vmov.i8 d16, 0xff                                 |     __asm ("vmov.i8 d16, 0xff");
    0x00016ef0 add.w r0, r4, 0x10a0                              |     r0 = r4 + 0x10a0;
    0x00016ef4 vmov.i32 d17, 0                                   |     __asm ("vmov.i32 d17, 0");
    0x00016ef8 movs r7, 1                                        |     r7 = 1;
    0x00016efa mov r3, ip                                        |     r3 = ip;
    0x00016efc mov r5, r8                                        |     r5 = r8;
    0x00016efe vstr d16, [r4, 0x58]                              |     __asm ("vstr d16, [r4, 0x58]");
    0x00016f02 mov r6, sb                                        |     r6 = sb;
    0x00016f04 vstr d16, [r4, 0x78]                              |     __asm ("vstr d16, [r4, 0x78]");
    0x00016f08 mov r2, ip                                        |     r2 = ip;
    0x00016f0a vstr d16, [r4, 0x80]                              |     __asm ("vstr d16, [r4, 0x80]");
    0x00016f0e str.w ip, [r1, 0x88]                              |     __asm ("str.w ip, [r1, 0x88]");
    0x00016f12 str.w r7, [r1, 0x90]                              |     __asm ("str.w r7, [r1, 0x90]");
    0x00016f16 vstr d17, [r0, -8]                                |     __asm ("vstr d17, [r0, -8]");
    0x00016f1a vstr d17, [r0]                                    |     __asm ("vstr d17, [r0]");
    0x00016f1e ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x00016f20 strd r8, sb, [r4, 0x48]                           |     __asm ("strd r8, sb, [r4, 0x48]");
    0x00016f24 str r0, [r4, 0x50]                                |     *((r4 + 0x50)) = r0;
    0x00016f26 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x00016f28 str r0, [r4, 0x54]                                |     *((r4 + 0x54)) = r0;
    0x00016f2a ldr r0, [sp, 0x20]                                |     r0 = var_20h;
    0x00016f2c str r0, [r4, 0x68]                                |     *((r4 + 0x68)) = r0;
    0x00016f2e ldr r0, [sp, 0x24]                                |     r0 = var_24h;
    0x00016f30 str r0, [r4, 0x6c]                                |     *((r4 + 0x6c)) = r0;
    0x00016f32 str.w ip, [r1, 0x8c]                              |     __asm ("str.w ip, [r1, 0x8c]");
    0x00016f36 str.w ip, [r4, 0x40]                              |     __asm ("str.w ip, [r4, 0x40]");
    0x00016f3a b 0x16cf4                                         |     goto label_13;
                                                                 | label_54:
    0x00016f3c ldr r3, [sp, 0xc0]                                |     r3 = *(arg_c0h);
    0x00016f3e clz r7, r3                                        |     r7 &= r3;
    0x00016f42 lsrs r7, r7, 5                                    |     r7 >>= 5;
    0x00016f44 b 0x16cd0                                         |     goto label_5;
                                                                 | label_36:
    0x00016f46 add.w r3, r4, 0x10a0                              |     r3 = r4 + 0x10a0;
    0x00016f4a adds r3, 0x10                                     |     r3 += 0x10;
    0x00016f4c str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00016f4e b 0x16b50                                         |     goto label_16;
                                                                 | label_48:
    0x00016f50 ldr r3, [r4, 0x40]                                |     r3 = *((r4 + 0x40));
    0x00016f52 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00016f54 bne.w 0x1716c                                     |         goto label_66;
                                                                 |     }
    0x00016f58 mov r8, r3                                        |     r8 = r3;
    0x00016f5a add.w r3, r4, 0x10a0                              |     r3 = r4 + 0x10a0;
    0x00016f5e adds r3, 0x10                                     |     r3 += 0x10;
    0x00016f60 mov sb, r8                                        |     sb = r8;
    0x00016f62 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00016f64 b 0x169f2                                         |     goto label_17;
                                                                 | label_50:
    0x00016f66 cmp.w r5, -1                                      |     
    0x00016f6a it eq                                             |     
                                                                 |     if (r5 == -1) {
    0x00016f6c cmpeq r6, -1                                      |         __asm ("cmpeq r6, -1");
                                                                 |     }
                                                                 |     if (r5 == -1) {
    0x00016f70 beq 0x16f7e                                       |         goto label_67;
                                                                 |     }
    0x00016f72 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00016f74 ldr.w r3, [r3, 0xd0]                              |     r3 = *((r3 + 0xd0));
    0x00016f78 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00016f7a bne.w 0x16d5c                                     |         goto label_18;
                                                                 |     }
                                                                 | label_67:
    0x00016f7e add r3, sp, 0x78                                  |     r3 += var_78h;
    0x00016f80 add r2, sp, 0x68                                  |     r2 += var_68h;
    0x00016f82 str r3, [sp]                                      |     *(sp) = r3;
    0x00016f84 add r1, sp, 0x60                                  |     r1 += var_60h;
    0x00016f86 add r3, sp, 0x70                                  |     r3 += var_70h;
    0x00016f88 mov r0, fp                                        |     r0 = fp;
    0x00016f8a blx 0x6b6c                                        |     fcn_00006b6c ();
    0x00016f8e ldrd r2, r3, [r4, 0x58]                           |     __asm ("ldrd r2, r3, [r4, 0x58]");
    0x00016f92 cmp.w r3, -1                                      |     
    0x00016f96 it eq                                             |     
                                                                 |     if (r3 == -1) {
    0x00016f98 cmpeq r2, -1                                      |         __asm ("cmpeq r2, -1");
                                                                 |     }
                                                                 |     if (r3 == -1) {
    0x00016f9c beq.w 0x17196                                     |         goto label_68;
                                                                 |     }
                                                                 | label_26:
    0x00016fa0 ldrd r0, r1, [r4, 0x50]                           |     __asm ("ldrd r0, r1, [r4, 0x50]");
    0x00016fa4 ldr r6, [sp, 0x28]                                |     r6 = var_28h;
    0x00016fa6 ldr r7, [sp, 0x2c]                                |     r7 = var_2ch;
    0x00016fa8 cmp r0, r6                                        |     
    0x00016faa sbcs.w r5, r1, r7                                 |     __asm ("sbcs.w r5, r1, r7");
                                                                 |     if (r0 < r6) {
    0x00016fae bhs 0x16fbe                                       |         
    0x00016fb0 subs r0, r6, r0                                   |         r0 = r6 - r0;
    0x00016fb2 sbc.w r1, r7, r1                                  |         __asm ("sbc.w r1, r7, r1");
    0x00016fb6 adds r0, r0, r2                                   |         r0 += r2;
    0x00016fb8 adc.w r3, r3, r1                                  |         __asm ("adc.w r3, r3, r1");
    0x00016fbc mov r2, r0                                        |         r2 = r0;
                                                                 |     }
                                                                 | label_27:
    0x00016fbe ldrd r6, r7, [sp, 0x78]                           |     __asm ("ldrd r6, r7, [var_78h]");
    0x00016fc2 mov r0, fp                                        |     r0 = fp;
    0x00016fc4 strd r6, r7, [sp, 0x18]                           |     __asm ("strd r6, r7, [var_18h]");
    0x00016fc8 ldrd r6, r7, [sp, 0x70]                           |     __asm ("ldrd r6, r7, [var_70h]");
    0x00016fcc strd r6, r7, [sp, 0x10]                           |     __asm ("strd r6, r7, [var_10h]");
    0x00016fd0 ldrd r6, r7, [sp, 0x68]                           |     __asm ("ldrd r6, r7, [var_68h]");
    0x00016fd4 strd r6, r7, [sp, 8]                              |     __asm ("strd r6, r7, [var_8h]");
    0x00016fd8 ldrd r6, r7, [sp, 0x60]                           |     __asm ("ldrd r6, r7, [var_60h]");
    0x00016fda str r0, [r3, 0x70]                                |     *((r3 + 0x70)) = r0;
    0x00016fdc strd r6, r7, [sp]                                 |     __asm ("strd r6, r7, [sp]");
    0x00016fe0 blx 0x7468                                        |     fcn_00007468 ();
    0x00016fe4 ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00016fe6 cmp r3, r0                                        |     
    0x00016fe8 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00016fea sbcs r3, r1                                       |     __asm ("sbcs r3, r1");
                                                                 |     if (r3 <= r0) {
    0x00016fec blo.w 0x17160                                     |         goto label_69;
                                                                 |     }
    0x00016ff0 ldr r7, [sp, 0xc0]                                |     r7 = *(arg_c0h);
    0x00016ff2 and.w r3, r8, sb                                  |     r3 = r8 & sb;
    0x00016ff6 adds r3, 1                                        |     r3++;
    0x00016ff8 mov.w r5, 0                                       |     r5 = 0;
    0x00016ffc mov r6, r5                                        |     r6 = r5;
    0x00016ffe clz r7, r7                                        |     r7 &= r7;
    0x00017002 lsr.w r7, r7, 5                                   |     r7 >>= 5;
    0x00017006 it eq                                             |     
                                                                 |     if (r3 != 1) {
    0x00017008 moveq r7, 0                                       |         r7 = 0;
                                                                 |     }
    0x0001700a b 0x16c88                                         |     goto label_8;
                                                                 | label_60:
    0x0001700c ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x0001700e subs r5, r0, r3                                   |     r5 = r0 - r3;
    0x00017010 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00017012 sbc.w r6, r1, r3                                  |     __asm ("sbc.w r6, r1, r3");
    0x00017016 cmp.w r6, -1                                      |     
    0x0001701a it eq                                             |     
                                                                 |     if (r6 != -1) {
    0x0001701c cmpeq r5, -1                                      |         __asm ("cmpeq r5, -1");
                                                                 |         goto label_70;
                                                                 |     }
                                                                 |     if (r6 == -1) {
                                                                 | label_70:
    0x00017020 beq.w 0x16ce6                                     |         goto label_11;
                                                                 |     }
    0x00017024 ldrd r2, r1, [r4, 0x70]                           |     __asm ("ldrd r2, r1, [r4, 0x70]");
    0x00017028 cmp.w r1, -1                                      |     
    0x0001702c it eq                                             |     
                                                                 |     if (r1 != -1) {
    0x0001702e cmpeq r2, -1                                      |         __asm ("cmpeq r2, -1");
                                                                 |         goto label_71;
                                                                 |     }
                                                                 |     if (r1 == -1) {
                                                                 | label_71:
    0x00017032 beq.w 0x16ce6                                     |         goto label_11;
                                                                 |     }
    0x00017036 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00017038 ldrd lr, ip, [r3, -0x8]                           |     __asm ("ldrd lr, ip, [r3, -0x8]");
    0x0001703c cmp.w ip, -1                                      |     
    0x00017040 it eq                                             |     
                                                                 |     if (ip == -1) {
    0x00017042 cmpeq lr, -1                                      |         __asm ("cmpeq lr, -1");
                                                                 |     }
    0x00017046 itt ne                                            |     
                                                                 |     if (ip == -1) {
    0x00017048 movne r8, -1                                      |         r8 = -1;
                                                                 |     }
                                                                 |     if (ip == -1) {
    0x0001704c mov sb, r8                                        |         sb = r8;
                                                                 |         goto label_72;
                                                                 |     }
                                                                 |     if (ip != -1) {
                                                                 | label_72:
    0x0001704e bne.w 0x16caa                                     |         goto label_12;
                                                                 |     }
    0x00017052 b 0x16ce6                                         |     goto label_11;
                                                                 |     do {
                                                                 | label_20:
    0x00017054 ldr r3, [sp, 0xb4]                                |         r3 = *(arg_b4h);
    0x00017056 subs r0, r3, r2                                   |         r0 = r3 - r2;
    0x00017058 ldr r3, [r4, 0x60]                                |         r3 = *((r4 + 0x60));
    0x0001705a sbc r1, r1, 0                                     |         __asm ("sbc r1, r1, 0");
    0x0001705e str r3, [sp]                                      |         *(sp) = r3;
    0x00017060 movs r3, 0                                        |         r3 = 0;
    0x00017062 str r3, [sp, 4]                                   |         var_4h = r3;
    0x00017064 adr r3, 0x10                                      |         r3 = 0x10;
    0x00017066 ldrd r2, r3, [r3]                                 |         __asm ("ldrd r2, r3, [r3]");
    0x0001706a blx 0x7664                                        |         r0 = fcn_00007664 ();
    0x0001706e adds.w r2, sb, r0                                 |         r2 = sb + r0;
    0x00017072 adc.w r3, r5, r1                                  |         __asm ("adc.w r3, r5, r1");
    0x00017076 b 0x16dc6                                         |         goto label_19;
                                                                 | label_59:
    0x0001708c ldr r3, [sp, 0xb4]                                |         r3 = *(arg_b4h);
    0x0001708e cmp r2, r3                                        |         
    0x00017090 sbcs.w r3, r8, r8                                 |         __asm ("sbcs.w r3, r8, r8");
    0x00017094 bhs 0x17054                                       |         
                                                                 |     } while (r2 >= r3);
    0x00017096 ldr r3, [sp, 0xb4]                                |     r3 = *(arg_b4h);
    0x00017098 subs r0, r3, r2                                   |     r0 = r3 - r2;
    0x0001709a sbc.w r3, r3, r3                                  |     __asm ("sbc.w r3, r3, r3");
    0x0001709e cmp.w r0, -0x80000000                             |     
    0x000170a2 sbcs r3, r3, 0                                    |     __asm ("sbcs r3, r3, 0");
                                                                 |     if (r0 <= -0x80000000) {
    0x000170a6 blo 0x17054                                       |         goto label_20;
                                                                 |     }
    0x000170a8 ldr r3, [sp, 0xb4]                                |     r3 = *(arg_b4h);
    0x000170aa rsbs r0, r3, 0                                    |     r0 = r3 - ;
    0x000170ac ite hs                                            |     
                                                                 |     if (r0 < -0x80000000) {
    0x000170ae movhs r1, 1                                       |         r1 = 1;
                                                                 |     }
                                                                 |     if (r0 >= -0x80000000) {
    0x000170b0 movlo r1, 0                                       |         r1 = 0;
                                                                 |     }
    0x000170b2 adds r0, r0, r2                                   |     r0 += r2;
    0x000170b4 adc r1, r1, 0                                     |     __asm ("adc r1, r1, 0");
    0x000170b8 b 0x16dac                                         |     goto label_21;
                                                                 | label_40:
    0x000170ba ldr r7, [sp, 0x3c]                                |     r7 = var_3ch;
    0x000170bc adds r3, r0, 2                                    |     r3 = r0 + 2;
    0x000170be ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x000170c0 str r3, [sp, 0x50]                                |     var_50h = r3;
    0x000170c2 adds r3, r7, r7                                   |     r3 = r7 + r7;
    0x000170c4 adc.w r1, r2, r2                                  |     __asm ("adc.w r1, r2, r2");
    0x000170c8 adds r3, r3, r7                                   |     r3 += r7;
    0x000170ca adc.w r1, r2, r1                                  |     __asm ("adc.w r1, r2, r1");
    0x000170ce lsls r0, r3, 5                                    |     r0 = r3 << 5;
    0x000170d0 lsls r2, r1, 5                                    |     r2 = r1 << 5;
    0x000170d2 adds r0, r3, r0                                   |     r0 = r3 + r0;
    0x000170d4 orr.w r2, r2, r3, lsr 27                          |     r2 |= (r3 >> 27);
    0x000170d8 adc.w r1, r1, r2                                  |     __asm ("adc.w r1, r1, r2");
    0x000170dc ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x000170de adds r0, r0, r7                                   |     r0 += r7;
    0x000170e0 adc.w r1, r2, r1                                  |     __asm ("adc.w r1, r2, r1");
    0x000170e4 adr r3, 0x1b0                                     |     r3 = 0x1b0;
    0x000170e6 ldrd r2, r3, [r3]                                 |     __asm ("ldrd r2, r3, [r3]");
    0x000170ea bl 0x25ae4                                        |     fcn_00025ae4 (r0, r1, r2, r3, r4, r5);
    0x000170ee ldr r7, [sp, 0x54]                                |     r7 = var_54h;
    0x000170f0 movs r3, 0x64                                     |     r3 = 0x64;
    0x000170f2 mul r7, r3, r7                                    |     r7 = r3 * r7;
    0x000170f6 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x000170f8 ldrd r1, r2, [r3]                                 |     __asm ("ldrd r1, r2, [r3]");
    0x000170fc addw r3, r7, 0x1ff                                |     __asm ("addw r3, r7, aav.0x000000ff");
    0x00017100 ands.w r3, r3, r7, asr 32                         |     r3 &= (r7 >> 32);
    0x00017104 it lo                                             |     
                                                                 |     if (r3 >= r3) {
    0x00017106 movlo r3, r7                                      |         r3 = r7;
                                                                 |     }
    0x00017108 asrs r3, r3, 9                                    |     r3 >>= 9;
    0x0001710a cmp r3, r0                                        |     
    0x0001710c it lt                                             |     
                                                                 |     if (r3 >= r0) {
    0x0001710e movlt r3, r0                                      |         r3 = r0;
                                                                 |     }
    0x00017110 mul r3, r3, r3                                    |     r3 *= r3;
    0x00017114 rsb.w r0, r3, 0x2700                              |     r0 = 0x2700 - r3;
    0x00017116 str r4, [r3, r0]                                  |     *((r3 + r0)) = r4;
    0x00017118 mul r6, r3, r6                                    |     r6 = r3 * r6;
    0x0001711c adds r0, 0x10                                     |     r0 += 0x10;
    0x0001711e mul r2, r0, r2                                    |     r2 = r0 * r2;
    0x00017122 asrs r7, r0, 0x1f                                 |     r7 = r0 >> 0x1f;
    0x00017124 mla r7, r7, r1, r2                                |     __asm ("mla r7, r7, r1, r2");
    0x00017128 umull r0, r1, r1, r0                              |     r0:r1 = r1 * r0;
    0x0001712c movw r2, 0x2710                                   |     r2 = 0x2710;
    0x00017130 add r7, r1                                        |     r7 += r1;
    0x00017132 asrs r1, r3, 0x1f                                 |     r1 = r3 >> 0x1f;
    0x00017134 mla r1, r5, r1, r6                                |     __asm ("mla r1, r5, r1, r6");
    0x00017138 umull r3, r5, r3, r5                              |     r3:r5 = r3 * r5;
    0x0001713c adds r0, r0, r3                                   |     r0 += r3;
    0x0001713e add r1, r5                                        |     r1 += r5;
    0x00017140 mov.w r3, 0                                       |     r3 = 0;
    0x00017144 adc.w r1, r7, r1                                  |     __asm ("adc.w r1, r7, r1");
    0x00017148 bl 0x25a44                                        |     fcn_00025a44 (r0, r1, r2, r3);
    0x0001714c ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x0001714e ldr r2, [sp, 0x30]                                |     r2 = var_30h;
    0x00017150 strd r0, r1, [r3]                                 |     __asm ("strd r0, r1, [r3]");
    0x00017154 ldr r3, [sp, 0x50]                                |     r3 = var_50h;
    0x00017156 str.w r3, [r2, 0x8c]                              |     __asm ("str.w r3, [r2, 0x8c]");
    0x0001715a ldrd r5, r6, [r4, 0x48]                           |     __asm ("ldrd r5, r6, [r4, 0x48]");
    0x0001715e b 0x16c24                                         |     goto label_22;
                                                                 | label_69:
    0x00017160 ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00017162 subs r5, r0, r3                                   |     r5 = r0 - r3;
    0x00017164 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00017166 sbc.w r6, r1, r3                                  |     __asm ("sbc.w r6, r1, r3");
    0x0001716a b 0x16c68                                         |     goto label_23;
                                                                 | label_66:
    0x0001716c mov.w r8, 0                                       |     r8 = 0;
    0x00017170 mov sb, r8                                        |     sb = r8;
    0x00017172 b 0x16ad8                                         |     goto label_24;
                                                                 | label_65:
    0x00017174 mov r0, r2                                        |     r0 = r2;
    0x00017176 mov r1, r4                                        |     r1 = r4;
    0x00017178 ldr.w fp, [sp, 0x4c]                              |     fp = var_4ch;
    0x0001717c ldr r2, [sp, 0x5c]                                |     r2 = var_5ch;
    0x0001717e ldr r4, [sp, 0x58]                                |     r4 = var_58h;
    0x00017180 b 0x16ede                                         |     goto label_25;
                                                                 | label_61:
    0x00017182 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x00017184 movs r5, 0                                        |     r5 = 0;
    0x00017186 ldr r3, [r4, 0x50]                                |     r3 = *((r4 + 0x50));
    0x00017188 mov r6, r5                                        |     r6 = r5;
    0x0001718a ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x0001718c subs r3, r2, r3                                   |     r3 = r2 - r3;
    0x0001718e ldr r2, [r4, 0x54]                                |     r2 = *((r4 + 0x54));
    0x00017190 sbc.w r2, r1, r2                                  |     __asm ("sbc.w r2, r1, r2");
    0x00017194 b 0x16cf4                                         |     goto label_13;
                                                                 | label_68:
    0x00017196 ldrd r2, r3, [r4, 0x48]                           |     __asm ("ldrd r2, r3, [r4, 0x48]");
    0x0001719a cmp.w r3, -1                                      |     
    0x0001719e it eq                                             |     
                                                                 |     if (r3 == -1) {
    0x000171a0 cmpeq r2, -1                                      |         __asm ("cmpeq r2, -1");
                                                                 |     }
                                                                 |     if (r3 != -1) {
    0x000171a4 beq 0x171e0                                       |         
    0x000171a6 ldrd r6, r7, [sp, 0x78]                           |         __asm ("ldrd r6, r7, [var_78h]");
    0x000171aa mov r0, fp                                        |         r0 = fp;
    0x000171ac ldr r1, [sp, 0x38]                                |         r1 = var_38h;
    0x000171ae strd r6, r7, [sp, 0x18]                           |         __asm ("strd r6, r7, [var_18h]");
    0x000171b2 ldrd r6, r7, [sp, 0x70]                           |         __asm ("ldrd r6, r7, [var_70h]");
    0x000171b6 adds r2, r2, r1                                   |         r2 += r1;
    0x000171b8 ldr r1, [sp, 0x3c]                                |         r1 = var_3ch;
    0x000171ba strd r6, r7, [sp, 0x10]                           |         __asm ("strd r6, r7, [var_10h]");
    0x000171be ldrd r6, r7, [sp, 0x68]                           |         __asm ("ldrd r6, r7, [var_68h]");
    0x000171c2 adc.w r3, r3, r1                                  |         __asm ("adc.w r3, r3, r1");
    0x000171c6 strd r6, r7, [sp, 8]                              |         __asm ("strd r6, r7, [var_8h]");
    0x000171ca ldrd r6, r7, [sp, 0x60]                           |         __asm ("ldrd r6, r7, [var_60h]");
    0x000171ce strd r6, r7, [sp]                                 |         __asm ("strd r6, r7, [sp]");
    0x000171d2 blx 0x63f0                                        |         r0 = gst_system_clock_obtain ()
    0x000171d6 mov r2, r0                                        |         r2 = r0;
    0x000171d8 mov r3, r1                                        |         r3 = r1;
    0x000171da strd r0, r1, [r4, 0x58]                           |         __asm ("strd r0, r1, [r4, 0x58]");
    0x000171de b 0x16fa0                                         |         goto label_26;
                                                                 |     }
    0x000171e0 cmp.w sb, -1                                      |     
    0x000171e4 it eq                                             |     
                                                                 |     if (sb == -1) {
    0x000171e6 cmpeq r8, -1                                      |         __asm ("cmpeq r8, -1");
                                                                 |     }
                                                                 |     if (sb == -1) {
    0x000171ea beq 0x17230                                       |         goto label_73;
                                                                 |     }
    0x000171ec ldrd r6, r7, [sp, 0x78]                           |     __asm ("ldrd r6, r7, [var_78h]");
    0x000171f0 mov r0, fp                                        |     r0 = fp;
    0x000171f2 ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x000171f4 strd r6, r7, [sp, 0x18]                           |     __asm ("strd r6, r7, [var_18h]");
    0x000171f8 ldrd r6, r7, [sp, 0x70]                           |     __asm ("ldrd r6, r7, [var_70h]");
    0x000171fc adds.w r2, r3, r8                                 |     r2 = r3 + r8;
    0x00017200 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00017202 strd r6, r7, [sp, 0x10]                           |     __asm ("strd r6, r7, [var_10h]");
    0x00017206 ldrd r6, r7, [sp, 0x68]                           |     __asm ("ldrd r6, r7, [var_68h]");
    0x0001720a adc.w r3, sb, r3                                  |     __asm ("adc.w r3, sb, r3");
    0x0001720e strd r6, r7, [sp, 8]                              |     __asm ("strd r6, r7, [var_8h]");
    0x00017212 ldrd r6, r7, [sp, 0x60]                           |     __asm ("ldrd r6, r7, [var_60h]");
    0x00017216 strd r6, r7, [sp]                                 |     __asm ("strd r6, r7, [sp]");
    0x0001721a blx 0x63f0                                        |     r0 = gst_system_clock_obtain ()
    0x0001721e mov r2, r0                                        |     r2 = r0;
    0x00017220 mov r3, r1                                        |     r3 = r1;
                                                                 |     do {
    0x00017222 ldr r1, [sp, 0x28]                                |         r1 = var_28h;
    0x00017224 strd r2, r3, [r4, 0x58]                           |         __asm ("strd r2, r3, [r4, 0x58]");
    0x00017228 str r1, [r4, 0x50]                                |         *((r4 + 0x50)) = r1;
    0x0001722a ldr r1, [sp, 0x2c]                                |         r1 = var_2ch;
    0x0001722c str r1, [r4, 0x54]                                |         *((r4 + 0x54)) = r1;
    0x0001722e b 0x16fbe                                         |         goto label_27;
                                                                 | label_73:
    0x00017230 mov r0, fp                                        |         r0 = fp;
    0x00017232 blx 0x767c                                        |         r0 = fcn_0000767c ();
    0x00017236 mov r2, r0                                        |         r2 = r0;
    0x00017238 mov r3, r1                                        |         r3 = r1;
    0x0001723a b 0x17222                                         |         
                                                                 |     } while (1);
                                                                 | label_47:
    0x0001723c blx 0x71b0                                        |     fcn_000071b0 ();
                                                                 | label_52:
    0x00017240 ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x00017242 mov.w r3, 0x9400                                  |     
    0x00017246 movt r3, 0x7735                                   |     r3 = 0x77359400;
    0x0001724a cmp r2, r3                                        |     
    0x0001724c ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x0001724e ldr r2, [sp, 0x4c]                                |     r2 = var_4ch;
    0x00017250 sbcs r3, r3, 0                                    |     __asm ("sbcs r3, r3, 0");
    0x00017254 add.w r3, r0, 0x11                                |     r3 = r0 + 0x11;
    0x00017258 str.w r2, [r4, r3, lsl 3]                         |     __asm ("str.w r2, [r4, r3, lsl 3]");
    0x0001725c add.w r3, r4, r3, lsl 3                           |     r3 = r4 + (r3 << 3);
    0x00017260 it hs                                             |     
                                                                 |     if (r2 < r3) {
    0x00017262 movhs r1, 1                                       |         r1 = 1;
                                                                 |     }
    0x00017264 str.w ip, [r3, 4]                                 |     __asm ("str.w ip, [r3, 4]");
    0x00017268 it lo                                             |     
                                                                 |     if (r2 >= r3) {
    0x0001726a movlo r1, 0                                       |         r1 = 0;
                                                                 |     }
    0x0001726c ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x0001726e cmp.w r3, 0x200                                   |     
    0x00017272 it ge                                             |     
                                                                 |     if (r3 < 0x200) {
    0x00017274 orrge r1, r1, 1                                   |         r1 |= 1;
                                                                 |     }
    0x00017278 cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x0001727a beq 0x17290                                       |         goto label_74;
                                                                 |     }
    0x0001727c ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x0001727e ldrd r5, r6, [r3, -0x8]                           |     __asm ("ldrd r5, r6, [r3, -0x8]");
    0x00017282 cmp r2, r5                                        |     
    0x00017284 sbcs.w r3, ip, r6                                 |     __asm ("sbcs.w r3, ip, r6");
                                                                 |     if (r2 >= r5) {
    0x00017288 bge.w 0x16972                                     |         goto label_28;
                                                                 |     }
    0x0001728c b.w 0x16962                                       |     goto label_29;
                                                                 | label_74:
    0x00017290 ldr r0, [sp, 0xc0]                                |     r0 = *(arg_c0h);
    0x00017292 b.w 0x16962                                       |     goto label_29;
                                                                 | }

[*] Function system used 3 times libgstrtpmanager.so