[*] Binary protection state of libgstvideo-1.0.so.0.1803.0

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


[*] Function system tear down of libgstvideo-1.0.so.0.1803.0

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgstvideo-1.0.so.0.1803.0 @ 0x3a254 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.gst_video_scaler_2d ()                           | void gst_video_scaler_2d (int16_t arg1, int16_t arg2, uint32_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int32_t var_10h_2;
                                                                 |     uint32_t var_20h;
                                                                 |     int32_t var_28h;
                                                                 |     int32_t var_38h;
                                                                 |     int32_t var_3ch;
                                                                 |     int32_t var_40h;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int32_t var_58h;
                                                                 |     int32_t var_58h_2;
                                                                 |     int16_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r3 = arg4;
    0x0003a254 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0003a258 sub sp, 0x74                                      |     
    0x0003a25a movs r4, 0                                        |     r4 = 0;
    0x0003a25c add r7, sp, 0x10                                  |     r7 += var_10h;
    0x0003a25e strd r4, r4, [r7, 0x58]                           |     __asm ("strd r4, r4, [var_58h]");
    0x0003a262 str r0, [r7, 0x28]                                |     var_28h = r0;
    0x0003a264 ldr.w r4, [r7, 0x8c]                              |     r4 = *((r7 + 0x8c));
    0x0003a268 str r1, [r7, 0x3c]                                |     var_3ch = r1;
    0x0003a26a str r3, [r7, 0x20]                                |     var_20h = r3;
    0x0003a26c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0003a26e beq.w 0x3a442                                     |         goto label_13;
                                                                 |     }
    0x0003a272 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0003a274 beq.w 0x3a45a                                     |         goto label_14;
                                                                 |     }
    0x0003a278 add.w r3, r7, 0x54                                |     r3 += var_54h;
    0x0003a27c str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0003a27e add.w r3, r7, 0x9c                                |     r3 = r7 + 0x9c;
    0x0003a282 str r3, [sp, 8]                                   |     var_8h = r3;
    0x0003a284 add.w r3, r7, 0x50                                |     r3 += var_50h;
    0x0003a288 str r3, [sp, 4]                                   |     var_4h = r3;
    0x0003a28a add.w r3, r7, 0x5c                                |     r3 += var_58h_2;
    0x0003a28e str r3, [sp]                                      |     *(sp) = r3;
    0x0003a290 add.w r3, r7, 0x58                                |     r3 += var_58h;
    0x0003a294 bl 0x38f28                                        |     r0 = fcn_00038f28 (r0, r1, r2, r3, r4, r5, r6);
    0x0003a298 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003a29a beq.w 0x3a452                                     |         goto label_3;
                                                                 |     }
    0x0003a29e ldr r2, [r7, 0x3c]                                |     r2 = var_3ch;
    0x0003a2a0 ldr.w r1, [r7, 0x9c]                              |     r1 = *((r7 + 0x9c));
    0x0003a2a4 ldr.w sl, [r7, 0x98]                              |     sl = *((r7 + 0x98));
    0x0003a2a8 str r1, [r7, 0x40]                                |     var_40h = r1;
    0x0003a2aa cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0003a2ac beq.w 0x3a472                                     |         goto label_15;
                                                                 |     }
    0x0003a2b0 ldr r3, [r2, 4]                                   |     r3 = *((r2 + 4));
    0x0003a2b2 and r3, r3, 1                                     |     r3 &= 1;
    0x0003a2b6 str r3, [r7, 0x10]                                |     var_10h_2 = r3;
    0x0003a2b8 ldr r3, [r2, 0x54]                                |     r3 = *((r2 + 0x54));
    0x0003a2ba cmp r3, r1                                        |     
                                                                 |     if (r3 <= r1) {
    0x0003a2bc blo.w 0x3a716                                     |         goto label_16;
                                                                 |     }
                                                                 | label_9:
    0x0003a2c0 ldr r3, [r7, 0x3c]                                |     r3 = var_3ch;
    0x0003a2c2 movs r1, 0                                        |     r1 = 0;
    0x0003a2c4 ldr.w fp, [r3, 0x10]                              |     fp = *((r3 + 0x10));
    0x0003a2c8 ldr r3, [r7, 0x10]                                |     r3 = var_10h_2;
    0x0003a2ca adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x0003a2cc mla r6, r3, fp, fp                                |     __asm ("mla r6, r3, fp, fp");
    0x0003a2d0 str r2, [r7, 0x38]                                |     var_38h = r2;
    0x0003a2d2 lsls r6, r6, 2                                    |     r6 <<= 2;
    0x0003a2d4 adds r5, r6, 7                                    |     r5 = r6 + 7;
    0x0003a2d6 mov r2, r6                                        |     r2 = r6;
    0x0003a2d8 bic r5, r5, 7                                     |     r5 = BIT_MASK (r5, 7);
    0x0003a2dc sub.w sp, sp, r5                                  |     
    0x0003a2e0 add r3, sp, 0x10                                  |     r3 += var_10h;
    0x0003a2e2 mov r0, r3                                        |     r0 = r3;
    0x0003a2e4 str r3, [r7, 0x14]                                |     *((r7 + 0x14)) = r3;
    0x0003a2e6 blx 0xecd8                                        |     fcn_0000ecd8 ();
    0x0003a2ea ldr r1, [r7, 0x28]                                |     r1 = *((r7 + 0x28));
    0x0003a2ec cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0003a2ee beq.w 0x3a67e                                     |         goto label_17;
                                                                 |     }
    0x0003a2f2 sub.w sp, sp, r5                                  |     
    0x0003a2f6 mov r2, r6                                        |     r2 = r6;
    0x0003a2f8 add r3, sp, 0x10                                  |     r3 += var_10h;
    0x0003a2fa movs r1, 0xff                                     |     r1 = 0xff;
    0x0003a2fc mov r0, r3                                        |     r0 = r3;
    0x0003a2fe str r3, [r7, 0xc]                                 |     *((r7 + 0xc)) = r3;
    0x0003a300 blx 0xecd8                                        |     fcn_0000ecd8 ();
    0x0003a304 ldr r3, [r7, 0x28]                                |     r3 = *((r7 + 0x28));
    0x0003a306 ldr r2, [r7, 0x40]                                |     r2 = *((r7 + 0x40));
    0x0003a308 ldr r3, [r3, 0x54]                                |     r3 = *((r3 + 0x54));
    0x0003a30a cmp r3, r2                                        |     
                                                                 |     if (r3 <= r2) {
    0x0003a30c blo.w 0x3a60c                                     |         goto label_18;
                                                                 |     }
                                                                 | label_5:
    0x0003a310 ldr r3, [r7, 0x3c]                                |     r3 = *((r7 + 0x3c));
    0x0003a312 ldr.w r2, [r7, 0xa0]                              |     r2 = *((r7 + 0xa0));
    0x0003a316 ldr r0, [r7, 0x40]                                |     r0 = *((r7 + 0x40));
    0x0003a318 ldr r3, [r3, 0x18]                                |     r3 = *((r3 + 0x18));
    0x0003a31a add.w r2, r2, 0x40000000                          |     r2 += 0x40000000;
    0x0003a31e ldr.w r1, [r7, 0xa0]                              |     r1 = *((r7 + 0xa0));
    0x0003a322 subs r2, 1                                        |     r2--;
    0x0003a324 ldr.w r2, [r3, r2, lsl 2]                         |     offset_0 = r2 << 2;
                                                                 |     r2 = *((r3 + offset_0));
    0x0003a328 mul r1, r0, r1                                    |     r1 = r0 * r1;
    0x0003a32c mul r2, r0, r2                                    |     r2 = r0 * r2;
    0x0003a330 cmp r2, r1                                        |     
                                                                 |     if (r2 > r1) {
    0x0003a332 bgt.w 0x3a4e0                                     |         goto label_19;
                                                                 |     }
    0x0003a336 ldr.w r2, [r7, 0xa0]                              |     r2 = *((r7 + 0xa0));
    0x0003a33a ldr.w r1, [r7, 0x98]                              |     r1 = *((r7 + 0x98));
    0x0003a33e cmp r2, r1                                        |     
                                                                 |     if (r2 < r1) {
    0x0003a340 bls.w 0x3a452                                     |         goto label_3;
                                                                 |     }
    0x0003a344 ldr.w r2, [r7, 0x90]                              |     r2 = *((r7 + 0x90));
    0x0003a348 str.w fp, [r7, 0x44]                              |     __asm ("str.w fp, [r7, 0x44]");
    0x0003a34c str.w sl, [r7, 0x18]                              |     __asm ("str.w sl, [r7, 0x18]");
    0x0003a350 mla r2, r1, r2, r4                                |     __asm ("mla r2, r1, r2, r4");
    0x0003a354 ldr r1, [r7, 0x5c]                                |     r1 = *((r7 + 0x5c));
    0x0003a356 ldr.w r4, [r7, 0x88]                              |     r4 = *((r7 + 0x88));
    0x0003a35a str r1, [r7, 4]                                   |     *((r7 + 4)) = r1;
    0x0003a35c str r2, [r7, 8]                                   |     *((r7 + 8)) = r2;
    0x0003a35e ldr r2, [r7, 0x50]                                |     r2 = *((r7 + 0x50));
    0x0003a360 ldr r1, [r7, 0x38]                                |     r1 = *((r7 + 0x38));
    0x0003a362 str r2, [r7, 0x1c]                                |     *((r7 + 0x1c)) = r2;
    0x0003a364 mul r2, r0, r2                                    |     r2 = r0 * r2;
    0x0003a368 mul r1, r4, r1                                    |     r1 = r4 * r1;
    0x0003a36c str r2, [r7, 0x2c]                                |     *((r7 + 0x2c)) = r2;
    0x0003a36e ldr r2, [r7, 0x10]                                |     r2 = *((r7 + 0x10));
    0x0003a370 str r1, [r7, 0x30]                                |     *((r7 + 0x30)) = r1;
    0x0003a372 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0003a374 beq 0x3a43c                                       |         goto label_20;
                                                                 |     }
                                                                 | label_1:
    0x0003a376 ldr r2, [r7, 0x18]                                |     r2 = *((r7 + 0x18));
    0x0003a378 cmp r2, 0                                         |     
    0x0003a37a and r2, r2, 1                                     |     r2 &= 1;
    0x0003a37e it lt                                             |     
                                                                 |     if (r2 < 0) {
    0x0003a380 rsblt r2, r2, 0                                   |         __asm ("rsblt r2, r2, 0");
                                                                 |     }
    0x0003a382 cmp r2, 1                                         |     
    0x0003a384 ldr r2, [r7, 0x44]                                |     r2 = *((r7 + 0x44));
    0x0003a386 it ne                                             |     
                                                                 |     if (r2 == 1) {
    0x0003a388 movne r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x0003a38a str r2, [r7, 0x4c]                                |     *((r7 + 0x4c)) = r2;
                                                                 | label_2:
    0x0003a38c ldr r2, [r7, 0x18]                                |     r2 = *((r7 + 0x18));
    0x0003a38e ldr.w sl, [r3, r2, lsl 2]                         |     offset_1 = r2 << 2;
                                                                 |     sl = *((r3 + offset_1));
    0x0003a392 ldr r3, [r7, 0x44]                                |     r3 = *((r7 + 0x44));
    0x0003a394 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0003a396 beq 0x3a406                                       |         goto label_21;
                                                                 |     }
    0x0003a398 ldr r3, [r7, 0x20]                                |     r3 = *((r7 + 0x20));
    0x0003a39a mov r8, sl                                        |     r8 = sl;
    0x0003a39c ldr.w r2, [r7, 0x88]                              |     r2 = *((r7 + 0x88));
    0x0003a3a0 mov.w fp, 0                                       |     
    0x0003a3a4 ldr r0, [r7, 0xc]                                 |     r0 = *((r7 + 0xc));
    0x0003a3a6 mla r1, r2, sl, r3                                |     __asm ("mla r1, r2, sl, r3");
    0x0003a3aa ldr r3, [r7, 0x3c]                                |     r3 = *((r7 + 0x3c));
    0x0003a3ac ldr r2, [r3, 0x58]                                |     r2 = *((r3 + 0x58));
    0x0003a3ae ldr r3, [r7, 0x4c]                                |     r3 = *((r7 + 0x4c));
    0x0003a3b0 add.w r0, r0, r3, lsl 2                           |     r0 += (r3 << 2);
    0x0003a3b4 str r0, [r7, 0x48]                                |     *((r7 + 0x48)) = r0;
    0x0003a3b6 ldr r0, [r7, 0x14]                                |     r0 = *((r7 + 0x14));
    0x0003a3b8 sub.w r0, r0, sl, lsl 2                           |     r0 -= (sl << 2);
    0x0003a3bc str r0, [r7, 0x34]                                |     *((r7 + 0x34)) = r0;
    0x0003a3be ldr r0, [r7, 0x44]                                |     r0 = *((r7 + 0x44));
    0x0003a3c0 adds r5, r0, r3                                   |     r5 = r0 + r3;
                                                                 | label_0:
    0x0003a3c2 ldr r3, [r7, 0x4c]                                |     r3 = *((r7 + 0x4c));
    0x0003a3c4 cmp r3, r5                                        |     
                                                                 |     if (r3 >= r5) {
    0x0003a3c6 bhs.w 0x3a678                                     |         goto label_22;
                                                                 |     }
    0x0003a3ca ldr r0, [r7, 0x48]                                |     r0 = *((r7 + 0x48));
    0x0003a3cc b 0x3a3d6                                         |     
                                                                 |     while (r4 != r8) {
    0x0003a3ce adds r3, 1                                        |         r3++;
    0x0003a3d0 cmp r3, r5                                        |         
                                                                 |         if (r3 >= r5) {
    0x0003a3d2 bhs.w 0x3a616                                     |             goto label_23;
                                                                 |         }
    0x0003a3d6 ldr r4, [r0], 4                                   |         r4 = *(r0);
                                                                 |         r0 += 4;
    0x0003a3da cmp r4, r8                                        |         
    0x0003a3dc bne 0x3a3ce                                       |         
                                                                 |     }
    0x0003a3de ldr r0, [r7, 0x2c]                                |     r0 = *((r7 + 0x2c));
    0x0003a3e0 cmp r3, r5                                        |     
    0x0003a3e2 ldr r4, [r7, 0x34]                                |     r4 = *((r7 + 0x34));
    0x0003a3e4 mul r0, r3, r0                                    |     r0 = r3 * r0;
    0x0003a3e8 add.w r0, r2, r0, lsl 2                           |     r0 = r2 + (r0 << 2);
    0x0003a3ec str.w r0, [r4, r8, lsl 2]                         |     __asm ("str.w r0, [r4, r8, lsl 2]");
                                                                 |     if (r3 >= r5) {
    0x0003a3f0 bhs.w 0x3a616                                     |         goto label_23;
                                                                 |     }
                                                                 | label_6:
    0x0003a3f4 ldr r3, [r7, 0x30]                                |     r3 = *((r7 + 0x30));
    0x0003a3f6 add.w fp, fp, 1                                   |     
    0x0003a3fa add r1, r3                                        |     r1 += r3;
    0x0003a3fc ldr r3, [r7, 0x38]                                |     r3 = *((r7 + 0x38));
    0x0003a3fe add r8, r3                                        |     r8 += r3;
    0x0003a400 ldr r3, [r7, 0x44]                                |     r3 = *((r7 + 0x44));
    0x0003a402 cmp r3, fp                                        |     
                                                                 |     if (r3 != fp) {
    0x0003a404 bne 0x3a3c2                                       |         goto label_0;
                                                                 |     }
                                                                 | label_21:
    0x0003a406 ldr r3, [r7, 0x1c]                                |     r3 = *((r7 + 0x1c));
    0x0003a408 ldr r2, [r7, 8]                                   |     r2 = *((r7 + 8));
    0x0003a40a ldr.w r0, [r7, 0x90]                              |     r0 = *((r7 + 0x90));
    0x0003a40e ldr r4, [r7, 0x18]                                |     r4 = *((r7 + 0x18));
    0x0003a410 str r3, [sp, 4]                                   |     var_4h = r3;
    0x0003a412 mov r1, r2                                        |     r1 = r2;
    0x0003a414 ldr r3, [r7, 0x40]                                |     r3 = *((r7 + 0x40));
    0x0003a416 add r1, r0                                        |     r1 += r0;
    0x0003a418 str r1, [r7, 8]                                   |     *((r7 + 8)) = r1;
    0x0003a41a ldr r0, [r7, 0x3c]                                |     r0 = *((r7 + 0x3c));
    0x0003a41c str r3, [sp]                                      |     *(sp) = r3;
    0x0003a41e mov r3, r4                                        |     r3 = r4;
    0x0003a420 ldr r1, [r7, 0x14]                                |     r1 = *((r7 + 0x14));
    0x0003a422 adds r4, 1                                        |     r4++;
    0x0003a424 ldr r5, [r7, 4]                                   |     r5 = *((r7 + 4));
    0x0003a426 str r4, [r7, 0x18]                                |     *((r7 + 0x18)) = r4;
    0x0003a428 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0003a42a ldr.w r3, [r7, 0xa0]                              |     r3 = *((r7 + 0xa0));
    0x0003a42e cmp r3, r4                                        |     
                                                                 |     if (r3 < r4) {
    0x0003a430 bls 0x3a452                                       |         goto label_3;
                                                                 |     }
    0x0003a432 ldr r2, [r7, 0x10]                                |     r2 = *((r7 + 0x10));
    0x0003a434 ldr r3, [r7, 0x3c]                                |     r3 = *((r7 + 0x3c));
    0x0003a436 ldr r3, [r3, 0x18]                                |     r3 = *((r3 + 0x18));
    0x0003a438 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0003a43a bne 0x3a376                                       |         goto label_1;
                                                                 |     }
                                                                 | label_20:
    0x0003a43c ldr r2, [r7, 0x10]                                |     r2 = *((r7 + 0x10));
    0x0003a43e str r2, [r7, 0x4c]                                |     *((r7 + 0x4c)) = r2;
    0x0003a440 b 0x3a38c                                         |     goto label_2;
                                                                 | label_13:
    0x0003a442 ldr r1, [pc, 0x364]                               |     
    0x0003a444 ldr r2, [pc, 0x364]                               |     
    0x0003a446 ldr r0, [r7, 0x20]                                |     r0 = var_20h;
    0x0003a448 add r1, pc                                        |     r1 = 0x74bf6;
    0x0003a44a add r2, pc                                        |     r2 = 0x74bfa;
    0x0003a44c adds r1, 0xd8                                     |     r1 += 0xd8;
    0x0003a44e blx 0xf208                                        |     fcn_0000f208 ();
                                                                 |     do {
                                                                 | label_3:
    0x0003a452 adds r7, 0x64                                     |         r7 += 0x64;
    0x0003a454 mov sp, r7                                        |         
    0x0003a456 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_14:
    0x0003a45a ldr r1, [pc, 0x354]                               |         
    0x0003a45c mov r0, r4                                        |         r0 = r4;
    0x0003a45e ldr r2, [pc, 0x354]                               |         
    0x0003a460 add r1, pc                                        |         r1 = 0x74c16;
    0x0003a462 add r2, pc                                        |         r2 = 0x74c1c;
    0x0003a464 adds r1, 0xd8                                     |         r1 += 0xd8;
    0x0003a466 blx 0xf208                                        |         fcn_0000f208 ();
    0x0003a46a adds r7, 0x64                                     |         r7 += 0x64;
    0x0003a46c mov sp, r7                                        |         
    0x0003a46e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_15:
    0x0003a472 ldr r3, [r7, 0x28]                                |         r3 = var_28h;
    0x0003a474 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0003a476 beq.w 0x3a72c                                     |             goto label_24;
                                                                 |         }
    0x0003a47a ldr r3, [r7, 0x28]                                |         r3 = var_28h;
    0x0003a47c ldr r2, [r7, 0x40]                                |         r2 = var_40h;
    0x0003a47e ldr r3, [r3, 0x54]                                |         r3 = *((r3 + 0x54));
    0x0003a480 cmp r3, r2                                        |         
                                                                 |         if (r3 <= r2) {
    0x0003a482 blo.w 0x3a790                                     |             goto label_25;
                                                                 |         }
                                                                 | label_11:
    0x0003a486 ldr.w r3, [r7, 0xa0]                              |         r3 = *((r7 + 0xa0));
    0x0003a48a ldr.w r2, [r7, 0x98]                              |         r2 = *((r7 + 0x98));
    0x0003a48e cmp r3, r2                                        |         
    0x0003a490 bls 0x3a452                                       |         
                                                                 |     } while (r3 < r2);
    0x0003a492 ldr r3, [r7, 0x20]                                |     r3 = var_20h;
    0x0003a494 ldr.w r1, [r7, 0x98]                              |     r1 = *((r7 + 0x98));
    0x0003a498 ldr.w r2, [r7, 0x88]                              |     r2 = *((r7 + 0x88));
    0x0003a49c ldr.w r8, [r7, 0x58]                              |     r8 = var_58h;
    0x0003a4a0 ldr r6, [r7, 0x50]                                |     r6 = var_50h;
    0x0003a4a2 ldr.w sb, [r7, 0x28]                              |     sb = var_28h;
    0x0003a4a6 mla r5, r1, r2, r3                                |     __asm ("mla r5, r1, r2, r3");
    0x0003a4aa ldr.w r3, [r7, 0x90]                              |     r3 = *((r7 + 0x90));
    0x0003a4ae ldr.w fp, [r7, 0x94]                              |     fp = *((r7 + 0x94));
    0x0003a4b2 mla r4, r1, r3, r4                                |     __asm ("mla r4, r1, r3, r4");
                                                                 |     do {
    0x0003a4b6 ldr r3, [r7, 0x40]                                |         r3 = var_40h;
    0x0003a4b8 mov r2, r4                                        |         r2 = r4;
    0x0003a4ba str r6, [sp, 4]                                   |         var_4h = r6;
    0x0003a4bc mov r1, r5                                        |         r1 = r5;
    0x0003a4be mov r0, sb                                        |         r0 = sb;
    0x0003a4c0 str r3, [sp]                                      |         *(sp) = r3;
    0x0003a4c2 add.w sl, sl, 1                                   |         sl++;
    0x0003a4c6 ldr.w r3, [r7, 0x90]                              |         r3 = *((r7 + 0x90));
    0x0003a4ca add r4, r3                                        |         r4 += r3;
    0x0003a4cc ldr.w r3, [r7, 0x88]                              |         r3 = *((r7 + 0x88));
    0x0003a4d0 add r5, r3                                        |         r5 += r3;
    0x0003a4d2 mov r3, fp                                        |         r3 = fp;
    0x0003a4d4 blx r8                                            |         uint32_t (*r8)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0003a4d6 ldr.w r3, [r7, 0xa0]                              |         r3 = *((r7 + 0xa0));
    0x0003a4da cmp r3, sl                                        |         
    0x0003a4dc bhi 0x3a4b6                                       |         
                                                                 |     } while (r3 > sl);
    0x0003a4de b 0x3a452                                         |     goto label_3;
                                                                 | label_19:
    0x0003a4e0 ldr r2, [r7, 0x28]                                |     r2 = *((r7 + 0x28));
    0x0003a4e2 ldr r1, [r7, 0x40]                                |     r1 = *((r7 + 0x40));
    0x0003a4e4 ldr.w r3, [r7, 0x94]                              |     r3 = *((r7 + 0x94));
    0x0003a4e8 ldr r0, [r2, 0x18]                                |     r0 = *((r2 + 0x18));
    0x0003a4ea ldr r6, [r2, 0x50]                                |     r6 = *((r2 + 0x50));
    0x0003a4ec add r3, r1                                        |     r3 += r1;
    0x0003a4ee ldr r1, [r2, 0x38]                                |     r1 = *((r2 + 0x38));
    0x0003a4f0 ldr.w r2, [r7, 0x94]                              |     r2 = *((r7 + 0x94));
    0x0003a4f4 subs r5, r3, 1                                    |     r5 = r3 - 1;
    0x0003a4f6 mul r3, r6, r3                                    |     r3 = r6 * r3;
    0x0003a4fa mul r6, r2, r6                                    |     r6 = r2 * r6;
    0x0003a4fe ldr.w r2, [r0, r2, lsl 2]                         |     offset_2 = r2 << 2;
                                                                 |     r2 = *((r0 + offset_2));
    0x0003a502 lsrs r3, r3, 0x10                                 |     r3 >>= 0x10;
    0x0003a504 lsrs r6, r6, 0x10                                 |     r6 >>= 0x10;
    0x0003a506 cmp r6, r2                                        |     
    0x0003a508 it hs                                             |     
                                                                 |     if (r6 < r2) {
    0x0003a50a movhs r6, r2                                      |         r6 = r2;
                                                                 |     }
    0x0003a50c ldr.w r2, [r0, r5, lsl 2]                         |     offset_3 = r5 << 2;
                                                                 |     r2 = *((r0 + offset_3));
    0x0003a510 ldr r0, [r7, 0x28]                                |     r0 = *((r7 + 0x28));
    0x0003a512 ldr r0, [r0, 0x10]                                |     r0 = *((r0 + 0x10));
    0x0003a514 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0003a516 beq.w 0x3a722                                     |         goto label_26;
                                                                 |     }
    0x0003a51a ldr r1, [r7, 0x28]                                |     r1 = *((r7 + 0x28));
    0x0003a51c and r5, r5, 1                                     |     r5 &= 1;
    0x0003a520 ldr r1, [r1, 0x40]                                |     r1 = *((r1 + 0x40));
    0x0003a522 cmp r5, r1                                        |     
    0x0003a524 ite eq                                            |     
                                                                 |     if (r5 != r1) {
    0x0003a526 addeq r2, r2, r0, lsl 1                           |         r2 += (r0 << 1);
                                                                 |     }
                                                                 |     if (r5 != r1) {
    0x0003a52a add.w r2, r2, r0, lsl 2                           |         r2 += (r0 << 2);
                                                                 |     }
    0x0003a52e cmp r3, r2                                        |     
    0x0003a530 it lo                                             |     
                                                                 |     if (r3 >= r2) {
    0x0003a532 movlo r3, r2                                      |         r3 = r2;
                                                                 |     }
                                                                 | label_10:
    0x0003a534 ldr r2, [r7, 0x28]                                |     r2 = *((r7 + 0x28));
    0x0003a536 adds r3, 1                                        |     r3++;
    0x0003a538 ldr r2, [r2, 8]                                   |     r2 = *((r2 + 8));
    0x0003a53a cmp r3, r2                                        |     
    0x0003a53c it hs                                             |     
                                                                 |     if (r3 < r2) {
    0x0003a53e movhs r3, r2                                      |         r3 = r2;
                                                                 |     }
    0x0003a540 mov r8, r3                                        |     r8 = r3;
    0x0003a542 ldr r3, [r7, 0x3c]                                |     r3 = *((r7 + 0x3c));
    0x0003a544 ldr r3, [r3, 0x54]                                |     r3 = *((r3 + 0x54));
    0x0003a546 cmp r3, r8                                        |     
                                                                 |     if (r3 <= r8) {
    0x0003a548 blo.w 0x3a79a                                     |         goto label_27;
                                                                 |     }
                                                                 | label_12:
    0x0003a54c ldr.w r3, [r7, 0xa0]                              |     r3 = *((r7 + 0xa0));
    0x0003a550 ldr.w r2, [r7, 0x98]                              |     r2 = *((r7 + 0x98));
    0x0003a554 cmp r3, r2                                        |     
                                                                 |     if (r3 < r2) {
    0x0003a556 bls.w 0x3a452                                     |         goto label_3;
                                                                 |     }
    0x0003a55a ldr.w r3, [r7, 0x90]                              |     r3 = *((r7 + 0x90));
    0x0003a55e mla r5, r2, r3, r4                                |     __asm ("mla r5, r2, r3, r4");
    0x0003a562 ldr.w r2, [r7, 0x88]                              |     r2 = *((r7 + 0x88));
    0x0003a566 sub.w r3, r8, r6                                  |     r3 = r8 - r6;
    0x0003a56a ldr.w r8, [r7, 0x50]                              |     r8 = *((r7 + 0x50));
    0x0003a56e str r3, [r7, 0x2c]                                |     *((r7 + 0x2c)) = r3;
    0x0003a570 ldr r3, [r7, 0x58]                                |     r3 = *((r7 + 0x58));
    0x0003a572 str.w r8, [r7, 0x4c]                              |     __asm ("str.w r8, [r7, 0x4c]");
    0x0003a576 mul sb, r8, r6                                    |     sb = r8 * r6;
    0x0003a57a str r3, [r7, 0x34]                                |     *((r7 + 0x34)) = r3;
    0x0003a57c ldr r3, [r7, 0x5c]                                |     r3 = *((r7 + 0x5c));
    0x0003a57e str.w sb, [r7, 0x48]                              |     __asm ("str.w sb, [r7, 0x48]");
    0x0003a582 str r3, [r7, 0x30]                                |     *((r7 + 0x30)) = r3;
    0x0003a584 ldr r3, [r7, 0x38]                                |     r3 = *((r7 + 0x38));
    0x0003a586 ldr.w sb, [r7, 0x3c]                              |     sb = *((r7 + 0x3c));
    0x0003a58a lsls r4, r3, 2                                    |     r4 = r3 << 2;
    0x0003a58c mul r6, r2, r3                                    |     r6 = r2 * r3;
    0x0003a590 mov r8, r4                                        |     r8 = r4;
    0x0003a592 mov r4, fp                                        |     r4 = fp;
    0x0003a594 ldr.w fp, [r7, 0x14]                              |     fp = *((r7 + 0x14));
    0x0003a598 str r6, [r7, 0x44]                                |     *((r7 + 0x44)) = r6;
                                                                 | label_4:
    0x0003a59a ldr.w r3, [sb, 0x18]                              |     r3 = *((sb + 0x18));
    0x0003a59e ldr.w r3, [r3, sl, lsl 2]                         |     offset_4 = sl << 2;
                                                                 |     r3 = *((r3 + offset_4));
                                                                 |     if (r4 == 0) {
    0x0003a5a2 cbz r4, 0x3a5c6                                   |         goto label_28;
                                                                 |     }
    0x0003a5a4 ldr r2, [r7, 0x48]                                |     r2 = *((r7 + 0x48));
    0x0003a5a6 ldr.w r1, [r7, 0x88]                              |     r1 = *((r7 + 0x88));
    0x0003a5aa ldr r6, [r7, 0x44]                                |     r6 = *((r7 + 0x44));
    0x0003a5ac mla r3, r1, r3, r2                                |     __asm ("mla r3, r1, r3, r2");
    0x0003a5b0 ldr r2, [r7, 0x20]                                |     r2 = *((r7 + 0x20));
    0x0003a5b2 mov r1, fp                                        |     r1 = fp;
    0x0003a5b4 add r3, r2                                        |     r3 += r2;
    0x0003a5b6 movs r2, 0                                        |     r2 = 0;
                                                                 |     do {
    0x0003a5b8 adds r2, 1                                        |         r2++;
    0x0003a5ba str r3, [r1]                                      |         *(r1) = r3;
    0x0003a5bc cmp r4, r2                                        |         
    0x0003a5be add r3, r6                                        |         r3 += r6;
    0x0003a5c0 add r1, r8                                        |         r1 += r8;
    0x0003a5c2 bne 0x3a5b8                                       |         
                                                                 |     } while (r4 != r2);
    0x0003a5c4 str r6, [r7, 0x44]                                |     *((r7 + 0x44)) = r6;
                                                                 | label_28:
    0x0003a5c6 ldr r3, [r7, 0x4c]                                |     r3 = *((r7 + 0x4c));
    0x0003a5c8 mov r0, sb                                        |     r0 = sb;
    0x0003a5ca ldr r2, [r7, 0x2c]                                |     r2 = *((r7 + 0x2c));
    0x0003a5cc ldr r1, [r7, 0x48]                                |     r1 = *((r7 + 0x48));
    0x0003a5ce str r3, [sp, 4]                                   |     var_4h = r3;
    0x0003a5d0 mov r3, sl                                        |     r3 = sl;
    0x0003a5d2 str r2, [sp]                                      |     *(sp) = r2;
    0x0003a5d4 add.w sl, sl, 1                                   |     sl++;
    0x0003a5d8 ldr.w r2, [sb, 0x58]                              |     r2 = *((sb + 0x58));
    0x0003a5dc ldr r6, [r7, 0x30]                                |     r6 = *((r7 + 0x30));
    0x0003a5de add r2, r1                                        |     r2 += r1;
    0x0003a5e0 mov r1, fp                                        |     r1 = fp;
    0x0003a5e2 blx r6                                            |     uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0003a5e4 ldr r3, [r7, 0x4c]                                |     r3 = *((r7 + 0x4c));
    0x0003a5e6 mov r2, r5                                        |     r2 = r5;
    0x0003a5e8 ldr r0, [r7, 0x28]                                |     r0 = *((r7 + 0x28));
    0x0003a5ea ldr r6, [r7, 0x34]                                |     r6 = *((r7 + 0x34));
    0x0003a5ec str r3, [sp, 4]                                   |     var_4h = r3;
    0x0003a5ee ldr r3, [r7, 0x40]                                |     r3 = *((r7 + 0x40));
    0x0003a5f0 str r3, [sp]                                      |     *(sp) = r3;
    0x0003a5f2 ldr.w r3, [r7, 0x90]                              |     r3 = *((r7 + 0x90));
    0x0003a5f6 ldr.w r1, [sb, 0x58]                              |     r1 = *((sb + 0x58));
    0x0003a5fa add r5, r3                                        |     r5 += r3;
    0x0003a5fc ldr.w r3, [r7, 0x94]                              |     r3 = *((r7 + 0x94));
    0x0003a600 blx r6                                            |     uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0003a602 ldr.w r3, [r7, 0xa0]                              |     r3 = *((r7 + 0xa0));
    0x0003a606 cmp sl, r3                                        |     
                                                                 |     if (sl <= r3) {
    0x0003a608 blo 0x3a59a                                       |         goto label_4;
                                                                 |     }
    0x0003a60a b 0x3a452                                         |     goto label_3;
                                                                 | label_18:
    0x0003a60c ldr r1, [r7, 0x50]                                |     r1 = *((r7 + 0x50));
    0x0003a60e ldr r0, [r7, 0x28]                                |     r0 = *((r7 + 0x28));
    0x0003a610 bl 0x391b4                                        |     fcn_000391b4 (r0, r1);
    0x0003a614 b 0x3a310                                         |     goto label_5;
                                                                 | label_23:
    0x0003a616 ldrd r0, r4, [r7, 0x48]                           |     __asm ("ldrd r0, r4, [r7, 0x48]");
    0x0003a61a b 0x3a622                                         |     
                                                                 |     while (r3 == 0) {
    0x0003a61c adds r4, 1                                        |         r4++;
    0x0003a61e cmp r4, r5                                        |         
                                                                 |         if (r4 >= r5) {
    0x0003a620 bhs 0x3a670                                       |             goto label_29;
                                                                 |         }
    0x0003a622 ldr r6, [r0]                                      |         r6 = *(r0);
    0x0003a624 mov sb, r0                                        |         sb = r0;
    0x0003a626 adds r0, 4                                        |         r0 += 4;
    0x0003a628 sub.w r3, r6, -1                                  |         r3 = r6 - -1;
    0x0003a62c clz r3, r3                                        |         r3 &= r3;
    0x0003a630 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x0003a632 cmp r6, sl                                        |         
    0x0003a634 it lo                                             |         
                                                                 |         if (r6 >= sl) {
    0x0003a636 orrlo r3, r3, 1                                   |             r3 |= 1;
                                                                 |         }
    0x0003a63a cmp r3, 0                                         |         
    0x0003a63c beq 0x3a61c                                       |         
                                                                 |     }
                                                                 |     do {
                                                                 | label_7:
    0x0003a63e ldr r3, [r7, 0x2c]                                |         r3 = *((r7 + 0x2c));
    0x0003a640 ldr r6, [r7, 0x58]                                |         r6 = *((r7 + 0x58));
    0x0003a642 ldr r0, [r7, 0x28]                                |         r0 = *((r7 + 0x28));
    0x0003a644 str r1, [r7, 0x24]                                |         *((r7 + 0x24)) = r1;
    0x0003a646 mul r4, r3, r4                                    |         r4 = r3 * r4;
    0x0003a64a ldr r3, [r7, 0x1c]                                |         r3 = *((r7 + 0x1c));
    0x0003a64c str r3, [sp, 4]                                   |         var_4h = r3;
    0x0003a64e ldr r3, [r7, 0x40]                                |         r3 = *((r7 + 0x40));
    0x0003a650 lsls r4, r4, 2                                    |         r4 <<= 2;
    0x0003a652 add r2, r4                                        |         r2 += r4;
    0x0003a654 str r3, [sp]                                      |         *(sp) = r3;
    0x0003a656 ldr.w r3, [r7, 0x94]                              |         r3 = *((r7 + 0x94));
    0x0003a65a blx r6                                            |         uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0003a65c ldr r3, [r7, 0x3c]                                |         r3 = *((r7 + 0x3c));
    0x0003a65e ldr r1, [r7, 0x24]                                |         r1 = *((r7 + 0x24));
    0x0003a660 str.w r8, [sb]                                    |         __asm ("str.w r8, [sb]");
    0x0003a664 ldr r2, [r3, 0x58]                                |         r2 = *((r3 + 0x58));
    0x0003a666 ldr r3, [r7, 0x34]                                |         r3 = *((r7 + 0x34));
    0x0003a668 add r4, r2                                        |         r4 += r2;
    0x0003a66a str.w r4, [r3, r8, lsl 2]                         |         __asm ("str.w r4, [r3, r8, lsl 2]");
    0x0003a66e b 0x3a3f4                                         |         goto label_6;
                                                                 | label_29:
    0x0003a670 ldr r3, [r7, 0xc]                                 |         r3 = *((r7 + 0xc));
    0x0003a672 add.w sb, r3, r4, lsl 2                           |         sb = r3 + (r4 << 2);
    0x0003a676 b 0x3a63e                                         |         
                                                                 |     } while (1);
                                                                 | label_22:
    0x0003a678 ldrd sb, r4, [r7, 0x48]                           |     __asm ("ldrd sb, r4, [r7, 0x48]");
    0x0003a67c b 0x3a63e                                         |     goto label_7;
                                                                 | label_17:
    0x0003a67e ldr.w r1, [r7, 0xa0]                              |     r1 = *((r7 + 0xa0));
    0x0003a682 ldr.w r5, [r7, 0x98]                              |     r5 = *((r7 + 0x98));
    0x0003a686 cmp r1, r5                                        |     
                                                                 |     if (r1 < r5) {
    0x0003a688 bls.w 0x3a452                                     |         goto label_3;
                                                                 |     }
    0x0003a68c ldr.w r1, [r7, 0x90]                              |     r1 = *((r7 + 0x90));
    0x0003a690 ldr r2, [r7, 0x38]                                |     r2 = *((r7 + 0x38));
    0x0003a692 ldr.w r8, [r7, 0x50]                              |     r8 = *((r7 + 0x50));
    0x0003a696 ldr.w sb, [r7, 0x5c]                              |     sb = *((r7 + 0x5c));
    0x0003a69a mla r4, r5, r1, r4                                |     __asm ("mla r4, r5, r1, r4");
    0x0003a69e ldr.w r1, [r7, 0x88]                              |     r1 = *((r7 + 0x88));
    0x0003a6a2 lsls r5, r2, 2                                    |     r5 = r2 << 2;
    0x0003a6a4 str.w sb, [r7, 0x44]                              |     __asm ("str.w sb, [r7, 0x44]");
    0x0003a6a8 ldr.w sb, [r7, 0x3c]                              |     sb = *((r7 + 0x3c));
    0x0003a6ac strd r8, r5, [r7, 0x48]                           |     __asm ("strd r8, r5, [r7, 0x48]");
    0x0003a6b0 mul r6, r1, r2                                    |     r6 = r1 * r2;
    0x0003a6b4 ldr.w r8, [r7, 0x14]                              |     r8 = *((r7 + 0x14));
    0x0003a6b8 mov r2, r4                                        |     r2 = r4;
    0x0003a6ba mov r4, fp                                        |     r4 = fp;
    0x0003a6bc mov fp, r2                                        |     
                                                                 | label_8:
    0x0003a6be ldr.w r3, [sb, 0x18]                              |     r3 = *((sb + 0x18));
    0x0003a6c2 ldr.w r3, [r3, sl, lsl 2]                         |     offset_5 = sl << 2;
                                                                 |     r3 = *((r3 + offset_5));
                                                                 |     if (r4 == 0) {
    0x0003a6c6 cbz r4, 0x3a6e8                                   |         goto label_30;
                                                                 |     }
    0x0003a6c8 ldr r2, [r7, 0x20]                                |     r2 = *((r7 + 0x20));
    0x0003a6ca mov ip, r8                                        |     
    0x0003a6cc ldr.w r1, [r7, 0x88]                              |     r1 = *((r7 + 0x88));
    0x0003a6d0 ldr r5, [r7, 0x4c]                                |     r5 = *((r7 + 0x4c));
    0x0003a6d2 invalid                                           |     
    0x0003a6d4 movs r3, 3                                        |     r3 = 3;
    0x0003a6d6 movs r2, 0                                        |     r2 = 0;
                                                                 |     do {
    0x0003a6d8 adds r2, 1                                        |         r2++;
    0x0003a6da str.w r3, [ip]                                    |         __asm ("str.w r3, [ip]");
    0x0003a6de cmp r4, r2                                        |         
    0x0003a6e0 add r3, r6                                        |         r3 += r6;
    0x0003a6e2 add ip, r5                                        |         
    0x0003a6e4 bne 0x3a6d8                                       |         
                                                                 |     } while (r4 != r2);
    0x0003a6e6 str r5, [r7, 0x4c]                                |     *((r7 + 0x4c)) = r5;
                                                                 | label_30:
    0x0003a6e8 ldr r3, [r7, 0x48]                                |     r3 = *((r7 + 0x48));
    0x0003a6ea mov r2, fp                                        |     r2 = fp;
    0x0003a6ec ldr.w r1, [r7, 0x90]                              |     r1 = *((r7 + 0x90));
    0x0003a6f0 mov r0, sb                                        |     r0 = sb;
    0x0003a6f2 ldr r5, [r7, 0x44]                                |     r5 = *((r7 + 0x44));
    0x0003a6f4 str r3, [sp, 4]                                   |     var_4h = r3;
    0x0003a6f6 ldr r3, [r7, 0x40]                                |     r3 = *((r7 + 0x40));
    0x0003a6f8 add fp, r1                                        |     
    0x0003a6fa mov r1, r8                                        |     r1 = r8;
    0x0003a6fc str r3, [sp]                                      |     *(sp) = r3;
    0x0003a6fe mov r3, sl                                        |     r3 = sl;
    0x0003a700 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0003a702 ldr.w r3, [r7, 0xa0]                              |     r3 = *((r7 + 0xa0));
    0x0003a706 add.w sl, sl, 1                                   |     sl++;
    0x0003a70a cmp r3, sl                                        |     
                                                                 |     if (r3 > sl) {
    0x0003a70c bhi 0x3a6be                                       |         goto label_8;
                                                                 |     }
    0x0003a70e adds r7, 0x64                                     |     r7 += 0x64;
    0x0003a710 mov sp, r7                                        |     
    0x0003a712 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_16:
    0x0003a716 ldr r1, [r7, 0x50]                                |     r1 = var_50h;
    0x0003a718 ldrd r0, r2, [r7, 0x3c]                           |     __asm ("ldrd r0, r2, [var_3ch]");
    0x0003a71c bl 0x391b4                                        |     fcn_000391b4 (r0, r1);
    0x0003a720 b 0x3a2c0                                         |     goto label_9;
                                                                 | label_26:
    0x0003a722 add r0, r2                                        |     r0 += r2;
    0x0003a724 cmp r3, r0                                        |     
    0x0003a726 it lo                                             |     
                                                                 |     if (r3 >= r0) {
    0x0003a728 movlo r3, r0                                      |         r3 = r0;
                                                                 |     }
    0x0003a72a b 0x3a534                                         |     goto label_10;
                                                                 | label_24:
    0x0003a72c ldr r3, [r7, 0x50]                                |     r3 = var_50h;
    0x0003a72e ldr.w r2, [r7, 0x94]                              |     r2 = *((r7 + 0x94));
    0x0003a732 ldr.w r0, [r7, 0x88]                              |     r0 = *((r7 + 0x88));
    0x0003a736 ldr r1, [r7, 0x40]                                |     r1 = var_40h;
    0x0003a738 mul r2, r2, r3                                    |     r2 *= r3;
    0x0003a73c mul r3, r1, r3                                    |     r3 = r1 * r3;
    0x0003a740 ldr r1, [r7, 0x54]                                |     r1 = var_54h;
    0x0003a742 mla r5, sl, r0, r2                                |     __asm ("mla r5, sl, r0, r2");
    0x0003a746 ldr r0, [r7, 0x20]                                |     r0 = var_20h;
    0x0003a748 adds r6, r1, 7                                    |     r6 = r1 + 7;
    0x0003a74a ands.w r6, r6, r1, asr 32                         |     r6 &= (r1 >> 32);
    0x0003a74e it lo                                             |     
                                                                 |     if (r6 >= r6) {
    0x0003a750 movlo r6, r1                                      |         r6 = r1;
                                                                 |     }
    0x0003a752 add r0, r5                                        |     r0 += r5;
    0x0003a754 asrs r6, r6, 3                                    |     r6 >>= 3;
    0x0003a756 mov r5, r0                                        |     r5 = r0;
    0x0003a758 ldr.w r0, [r7, 0x90]                              |     r0 = *((r7 + 0x90));
    0x0003a75c mul r6, r3, r6                                    |     r6 = r3 * r6;
    0x0003a760 ldr.w r3, [r7, 0xa0]                              |     r3 = *((r7 + 0xa0));
    0x0003a764 mla r2, sl, r0, r2                                |     __asm ("mla r2, sl, r0, r2");
    0x0003a768 cmp r3, sl                                        |     
    0x0003a76a add r4, r2                                        |     r4 += r2;
                                                                 |     if (r3 < sl) {
    0x0003a76c bls.w 0x3a452                                     |         goto label_3;
                                                                 |     }
    0x0003a770 ldr.w r8, [r7, 0x88]                              |     r8 = *((r7 + 0x88));
    0x0003a774 mov sb, r0                                        |     sb = r0;
    0x0003a776 mov fp, r3                                        |     
                                                                 |     do {
    0x0003a778 mov r1, r5                                        |         r1 = r5;
    0x0003a77a mov r0, r4                                        |         r0 = r4;
    0x0003a77c add.w sl, sl, 1                                   |         sl++;
    0x0003a780 mov r2, r6                                        |         r2 = r6;
    0x0003a782 blx 0xf15c                                        |         g_value_set_enum ();
    0x0003a786 cmp sl, fp                                        |         
    0x0003a788 add r5, r8                                        |         r5 += r8;
    0x0003a78a add r4, sb                                        |         r4 += sb;
    0x0003a78c blo 0x3a778                                       |         
                                                                 |     } while (sl <= fp);
    0x0003a78e b 0x3a452                                         |     goto label_3;
                                                                 | label_25:
    0x0003a790 ldr r1, [r7, 0x50]                                |     r1 = var_50h;
    0x0003a792 ldr r0, [r7, 0x28]                                |     r0 = var_28h;
    0x0003a794 bl 0x391b4                                        |     fcn_000391b4 (r0, r1);
    0x0003a798 b 0x3a486                                         |     goto label_11;
                                                                 | label_27:
    0x0003a79a ldr r1, [r7, 0x50]                                |     r1 = *((r7 + 0x50));
    0x0003a79c mov r2, r8                                        |     r2 = r8;
    0x0003a79e ldr r0, [r7, 0x3c]                                |     r0 = *((r7 + 0x3c));
    0x0003a7a0 bl 0x391b4                                        |     fcn_000391b4 (r0, r1);
    0x0003a7a4 b 0x3a54c                                         |     goto label_12;
                                                                 | }

[*] Function system used 1 times libgstvideo-1.0.so.0.1803.0