[*] Binary protection state of libgobject-2.0.so.0.6800.4

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


[*] Function fprintf tear down of libgobject-2.0.so.0.6800.4

    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x19ba0 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.00019ba0 ()                                          | void fcn_00019ba0 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int32_t var_10h_2;
                                                                     |     int32_t var_18h;
                                                                     |     int32_t var_18h_2;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x00019ba0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00019ba4 sub sp, 0x24                                          |     
    0x00019ba6 ldr r3, [r2, 8]                                       |     r3 = *((r2 + 8));
    0x00019ba8 cbz r3, 0x19bc6                                       |     
                                                                     |     while (r6 != 0) {
    0x00019baa ldr r3, [pc, 0x164]                                   |         
    0x00019bac movw r2, 0x30e                                        |         r2 = 0x30e;
    0x00019bb0 ldr r4, [pc, 0x160]                                   |         
    0x00019bb2 ldr r1, [pc, 0x164]                                   |         
    0x00019bb4 ldr r0, [pc, 0x164]                                   |         
    0x00019bb6 add r3, pc                                            |         r3 = "type name '%s' contains invalid characters";
    0x00019bb8 add r4, pc                                            |         r4 = 0x338d0;
    0x00019bba adds r3, 0x4c                                         |         r3 += 0x4c;
    0x00019bbc add r1, pc                                            |         r1 = 0x338da;
    0x00019bbe str r4, [sp]                                          |         *(sp) = r4;
    0x00019bc0 add r0, pc                                            |         r0 = 0x338e0;
    0x00019bc2 blx 0x9bf0                                            |         g_array_new ();
    0x00019bc6 ldr r6, [r2, 4]                                       |         r6 = *((r2 + 4));
    0x00019bc8 mov sl, r2                                            |         sl = r2;
    0x00019bca cmp r6, 0                                             |         
    0x00019bcc bne 0x19baa                                           |         
                                                                     |     }
    0x00019bce ldr.w sb, [pc, 0x150]                                 |     
    0x00019bd2 mov r5, r0                                            |     r5 = r0;
    0x00019bd4 mov r8, r1                                            |     r8 = r1;
    0x00019bd6 add sb, pc                                            |     sb = 0x338fc;
    0x00019bd8 ldr.w r0, [sb, 8]                                     |     r0 = *(0x33904);
    0x00019bdc blx 0x9b94                                            |     fcn_00009b94 ();
    0x00019be0 strd r5, r6, [sp, 0x10]                               |     __asm ("strd r5, r6, [var_10h]");
    0x00019be2 ldrsb r4, [r0, r0]                                    |     r4 = *((r0 + r0));
    0x00019be4 mov r4, r0                                            |     r4 = r0;
    0x00019be6 strd r6, r6, [sp, 0x18]                               |     __asm ("strd r6, r6, [var_18h]");
    0x00019bea cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00019bec beq 0x19cac                                           |         goto label_2;
                                                                     |     }
    0x00019bee ldr r1, [pc, 0x134]                                   |     
    0x00019bf0 add r7, sp, 0x10                                      |     r7 += var_10h;
    0x00019bf2 mov r2, r7                                            |     r2 = r7;
    0x00019bf4 add r1, pc                                            |     r1 = 0x3391e;
    0x00019bf6 bl 0x1994c                                            |     r0 = fcn_0001994c (r0, r1, r2);
    0x00019bfa cmp r4, r0                                            |     
    0x00019bfc mov r6, r0                                            |     r6 = r0;
                                                                     |     if (r4 != r0) {
    0x00019bfe beq 0x19c0c                                           |         
    0x00019c00 ldr.w r0, [sb, 8]                                     |         r0 = *((sb + 8));
    0x00019c04 mov r1, r8                                            |         r1 = r8;
    0x00019c06 mov r2, r6                                            |         r2 = r6;
    0x00019c08 blx 0x9dd0                                            |         g_variant_equal ();
                                                                     |     }
    0x00019c0c ldr r3, [pc, 0x118]                                   |     
    0x00019c0e ldr.w sb, [r6]                                        |     sb = *(r6);
    0x00019c12 add r3, pc                                            |     r3 = 0x3393e;
    0x00019c14 ldrd r8, r3, [r3]                                     |     __asm ("ldrd r8, r3, [r3]");
    0x00019c18 str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x00019c1a cmp.w sb, 0                                           |     
                                                                     |     if (sb == 0) {
    0x00019c1e beq 0x19d0a                                           |         goto label_3;
                                                                     |     }
    0x00019c20 mov.w fp, 0                                           |     
    0x00019c24 b 0x19c32                                             |     
                                                                     |     while (r0 != 0) {
    0x00019c26 ite ge                                                |         
                                                                     |         if (sb < 0) {
    0x00019c28 addge fp, r4, 1                                       |             
                                                                     |         }
                                                                     |         if (sb < 0) {
    0x00019c2c mov sb, r4                                            |             sb = r4;
                                                                     |         }
    0x00019c2e cmp sb, fp                                            |         
                                                                     |         if (sb < fp) {
    0x00019c30 bls 0x19d0a                                           |             goto label_3;
                                                                     |         }
    0x00019c32 add.w r4, sb, fp                                      |         r4 = sb + fp;
    0x00019c36 ldr r3, [sp, 0xc]                                     |         r3 = var_ch;
    0x00019c38 lsrs r4, r4, 1                                        |         r4 >>= 1;
    0x00019c3a mov r0, r7                                            |         r0 = r7;
    0x00019c3c mla r5, r4, r8, r6                                    |         __asm ("mla r5, r4, r8, r6");
    0x00019c40 adds r5, 8                                            |         r5 += 8;
    0x00019c42 mov r1, r5                                            |         r1 = r5;
    0x00019c44 blx r3                                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00019c46 cmp r0, 0                                             |         
    0x00019c48 bne 0x19c26                                           |         
                                                                     |     }
    0x00019c4a ldr r2, [r5, 4]                                       |     r2 = *((r5 + 4));
                                                                     |     if (r2 == 0) {
    0x00019c4c cbz r2, 0x19c9e                                       |         goto label_4;
                                                                     |     }
    0x00019c4e ldrb.w r3, [sl, 0x1a]                                 |     r3 = *((sl + 0x1a));
    0x00019c52 lsls r3, r3, 0x1f                                     |     r3 <<= 0x1f;
                                                                     |     if (r3 >= r3) {
    0x00019c54 bpl 0x19c6c                                           |         goto label_5;
                                                                     |     }
    0x00019c56 ldr r3, [r5, 0xc]                                     |     r3 = *((r5 + 0xc));
    0x00019c58 str.w r3, [sl, 8]                                     |     __asm ("str.w r3, [sl, 8]");
    0x00019c5c str.w sl, [r3, 4]                                     |     __asm ("str.w sl, [r3, 4]");
                                                                     | label_0:
    0x00019c60 ldr.w r3, [sl, 4]                                     |     r3 = *((sl + 4));
                                                                     |     if (r3 == 0) {
    0x00019c64 cbz r3, 0x19c94                                       |         goto label_6;
                                                                     |     }
                                                                     |     do {
    0x00019c66 add sp, 0x24                                          |         
    0x00019c68 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_5:
    0x00019c6c ldr r3, [r5, 8]                                       |         r3 = *((r5 + 8));
    0x00019c6e cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x00019c70 beq 0x19cfc                                           |             goto label_7;
                                                                     |         }
    0x00019c72 ldr r3, [r3, 4]                                       |         r3 = *((r3 + 4));
    0x00019c74 str.w r3, [sl, 4]                                     |         __asm ("str.w r3, [sl, 4]");
                                                                     |         if (r3 != 0) {
    0x00019c78 cbz r3, 0x19c7e                                       |             
    0x00019c7a str.w sl, [r3, 8]                                     |             __asm ("str.w sl, [r3, 8]");
                                                                     |         }
    0x00019c7e ldr r3, [r5, 8]                                       |         r3 = *((r5 + 8));
    0x00019c80 str.w r3, [sl, 8]                                     |         __asm ("str.w r3, [sl, 8]");
    0x00019c84 str.w sl, [r3, 4]                                     |         __asm ("str.w sl, [r3, 4]");
                                                                     | label_1:
    0x00019c88 str.w sl, [r5, 8]                                     |         __asm ("str.w sl, [r5, 8]");
    0x00019c8c ldr.w r3, [sl, 4]                                     |         r3 = *((sl + 4));
    0x00019c90 cmp r3, 0                                             |         
    0x00019c92 bne 0x19c66                                           |         
                                                                     |     } while (r3 != 0);
                                                                     | label_6:
    0x00019c94 str.w sl, [r5, 0xc]                                   |     __asm ("str.w sl, [r5, 0xc]");
    0x00019c98 add sp, 0x24                                          |     
    0x00019c9a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_4:
    0x00019c9e str.w sl, [r5, 4]                                     |     __asm ("str.w sl, [r5, 4]");
    0x00019ca2 ldrb.w r3, [sl, 0x1a]                                 |     r3 = *((sl + 0x1a));
    0x00019ca6 lsls r2, r3, 0x1f                                     |     r2 = r3 << 0x1f;
                                                                     |     if (r2 < r3) {
    0x00019ca8 bmi 0x19c60                                           |         goto label_0;
                                                                     |     }
    0x00019caa b 0x19c88                                             |     goto label_1;
                                                                     | label_2:
    0x00019cac ldr r2, [pc, 0x7c]                                    |     
    0x00019cae add r2, pc                                            |     
    0x00019cb0 ldr r3, [r2]                                          |     r3 = *(0x339de);
    0x00019cb2 ldr r2, [r2, 8]                                       |     r2 = *(0x339e6);
    0x00019cb4 add.w r0, r3, 8                                       |     r0 = r3 + 8;
    0x00019cb8 lsls r1, r2, 0x1f                                     |     r1 = r2 << 0x1f;
                                                                     |     if (r1 < r2) {
    0x00019cba bpl 0x19cd4                                           |         
                                                                     |         if (r0 == 0) {
    0x00019cbc cbz r0, 0x19cd4                                       |             goto label_8;
                                                                     |         }
    0x00019cbe adds r3, 7                                            |         r3 += 7;
    0x00019cc0 ittte ne                                              |         
                                                                     |         if (r3 != 7) {
    0x00019cc2 clzne r3, r3                                          |             __asm ("clzne r3, r3");
                                                                     |         }
                                                                     |         if (r3 == 7) {
    0x00019cc6 movne r0, 1                                           |             r0 = 1;
                                                                     |         }
                                                                     |         if (r3 != 7) {
    0x00019cc8 eoreq r3, r3, 0x1f                                    |             r3 ^= 0x1f;
                                                                     |         }
                                                                     |         if (r3 == 7) {
    0x00019ccc movs r0, 2                                            |             r0 = 2;
                                                                     |         }
    0x00019cce itt ne                                                |         
                                                                     |         if (r0 == 2) {
    0x00019cd0 addne r3, r3, r0                                      |             r3 += r0;
                                                                     |         }
                                                                     |         if (r0 != 2) {
    0x00019cd2 lslne r0, r3                                          |             r0 <<= r3;
                                                                     |             goto label_8;
                                                                     |         }
                                                                     |     }
                                                                     | label_8:
    0x00019cd4 add r7, sp, 0x10                                      |     r7 += var_10h;
    0x00019cd6 blx 0x9aa0                                            |     g_slist_find ();
    0x00019cda ldr r1, [pc, 0x54]                                    |     
    0x00019cdc movs r2, 0                                            |     r2 = 0;
    0x00019cde str r2, [r0]                                          |     *(r0) = r2;
    0x00019ce0 str r2, [r0, 4]                                       |     *((r0 + 4)) = r2;
    0x00019ce2 mov r2, r7                                            |     r2 = r7;
    0x00019ce4 add r1, pc                                            |     r1 = 0x33a1a;
    0x00019ce6 bl 0x1994c                                            |     fcn_0001994c (r0, r1, r2);
    0x00019cea ldr r3, [pc, 0x48]                                    |     
    0x00019cec mov r6, r0                                            |     r6 = r0;
    0x00019cee mov r1, r8                                            |     r1 = r8;
    0x00019cf0 mov r2, r6                                            |     r2 = r6;
    0x00019cf2 add r3, pc                                            |     r3 = 0x33a2c;
    0x00019cf4 ldr r0, [r3, 8]                                       |     r0 = *(0x33a34);
    0x00019cf6 blx 0x9dd0                                            |     g_variant_equal ();
    0x00019cf8 strd lr, r7, [ip], -0x21c                             |     __asm ("strd lr, r7, [ip], -0x21c");
                                                                     | label_7:
    0x00019cfc str.w r2, [sl, 4]                                     |     __asm ("str.w r2, [sl, 4]");
    0x00019d00 str.w sl, [r2, 8]                                     |     __asm ("str.w sl, [r2, 8]");
    0x00019d04 str.w sl, [r5, 4]                                     |     __asm ("str.w sl, [r5, 4]");
    0x00019d08 b 0x19c88                                             |     goto label_1;
                                                                     | label_3:
    0x00019d0a movs r3, 0                                            |     r3 = 0;
    0x00019d0c ldr r3, [r3, 4]                                       |     r3 = *((r3 + 4));
    0x00019d0e udf 0xff                                              |     __asm ("udf 0xff");
                                                                     | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x200c4 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.000200c4 ()                          | void fcn_000200c4 (int16_t arg1, uint32_t arg2) {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_8h;
                                                     |     uint32_t var_ch;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x000200c4 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x000200c8 mov r4, r1                            |     r4 = r1;
    0x000200ca sub sp, 0x10                          |     
    0x000200cc cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x000200ce beq 0x2017a                           |         goto label_4;
                                                     |     }
    0x000200d0 mov r6, r0                            |     r6 = r0;
    0x000200d2 ldr r3, [r1]                          |     r3 = *(r1);
    0x000200d4 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x000200d6 beq 0x20182                           |         goto label_5;
                                                     |     }
    0x000200d8 ldr r5, [r1, 8]                       |     r5 = *((r1 + 8));
    0x000200da cmp r5, 0                             |     
                                                     |     if (r5 == 0) {
    0x000200dc beq 0x201dc                           |         goto label_6;
                                                     |     }
    0x000200de ldrd r8, r3, [r1, 0x10]               |     __asm ("ldrd r8, r3, [r1, 0x10]");
    0x000200e2 cmp.w r8, 0                           |     
                                                     |     if (r8 == 0) {
    0x000200e6 beq 0x2015e                           |         goto label_7;
                                                     |     }
    0x000200e8 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x000200ea beq 0x20162                           |         goto label_8;
                                                     |     }
    0x000200ec ldr r3, [pc, 0x130]                   |     
    0x000200ee mov r5, r8                            |     r5 = r8;
    0x000200f0 add r7, sp, 8                         |     r7 += var_8h;
    0x000200f2 add r3, pc                            |     r3 = 0x40316;
    0x000200f4 ldm.w r3, {r0, r1}                    |     r0 = *(r3);
                                                     |     r1 = *((r3 + 4));
    0x000200f8 str r0, [sp, 8]                       |     var_8h = r0;
    0x000200fa strh.w r1, [sp, 0xc]                  |     var_ch = r1;
    0x000200fe b 0x20108                             |     
                                                     |     while (r1 != 0) {
    0x00020100 blx 0x9d70                            |         r0 = g_parse_debug_string ();
    0x00020104 cmp r0, 0                             |         
                                                     |         if (r0 == 0) {
    0x00020106 beq 0x201f0                           |             goto label_9;
                                                     |         }
    0x00020108 mov r3, r5                            |         r3 = r5;
    0x0002010a ldrb r1, [r5], 1                      |         r1 = *(r5);
                                                     |         r5++;
    0x0002010e mov r0, r7                            |         r0 = r7;
    0x00020110 cmp r1, 0                             |         
    0x00020112 bne 0x20100                           |         
                                                     |     }
    0x00020114 sub.w r3, r3, r8                      |     r3 -= r8;
    0x00020118 cmp r3, 8                             |     
                                                     |     if (r3 > 8) {
    0x0002011a bgt 0x201f0                           |         goto label_9;
                                                     |     }
                                                     | label_0:
    0x0002011c ldrd r7, r3, [r4, 0x18]               |     __asm ("ldrd r7, r3, [r4, 0x18]");
    0x00020120 cmp r7, 0                             |     
                                                     |     if (r7 == 0) {
    0x00020122 beq 0x2019e                           |         goto label_10;
                                                     |     }
    0x00020124 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00020126 beq 0x201a2                           |         goto label_11;
                                                     |     }
    0x00020128 ldr r3, [pc, 0xf8]                    |     
    0x0002012a mov r4, r7                            |     r4 = r7;
    0x0002012c add r5, sp, 8                         |     r5 += var_8h;
    0x0002012e add r3, pc                            |     r3 = 0x40356;
    0x00020130 ldm.w r3, {r0, r1}                    |     r0 = *(r3);
                                                     |     r1 = *((r3 + 4));
    0x00020134 str r0, [sp, 8]                       |     var_8h = r0;
    0x00020136 strh.w r1, [sp, 0xc]                  |     var_ch = r1;
    0x0002013a b 0x20144                             |     
                                                     |     while (r1 != 0) {
    0x0002013c blx 0x9d70                            |         r0 = g_parse_debug_string ();
    0x00020140 cmp r0, 0                             |         
                                                     |         if (r0 == 0) {
    0x00020142 beq 0x20208                           |             goto label_12;
                                                     |         }
    0x00020144 mov r3, r4                            |         r3 = r4;
    0x00020146 ldrb r1, [r4], 1                      |         r1 = *(r4);
                                                     |         r4++;
    0x0002014a mov r0, r5                            |         r0 = r5;
    0x0002014c cmp r1, 0                             |         
    0x0002014e bne 0x2013c                           |         
                                                     |     }
    0x00020150 subs r3, r3, r7                       |     r3 -= r7;
    0x00020152 cmp r3, 8                             |     
                                                     |     if (r3 > 8) {
    0x00020154 bgt 0x20208                           |         goto label_12;
                                                     |     }
                                                     | label_1:
    0x00020156 movs r0, 1                            |     r0 = 1;
    0x00020158 add sp, 0x10                          |     
    0x0002015a pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | label_7:
    0x0002015e cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00020160 beq 0x2011c                           |         goto label_0;
                                                     |     }
                                                     | label_8:
    0x00020162 ldr r2, [pc, 0xc4]                    |     
    0x00020164 mov r3, r6                            |     r3 = r6;
    0x00020166 ldr r0, [pc, 0xc4]                    |     
    0x00020168 movs r1, 0x10                         |     r1 = 0x10;
    0x0002016a add r2, pc                            |     r2 = 0x40398;
    0x0002016c add r0, pc                            |     r0 = 0x4039e;
    0x0002016e blx 0x9e0c                            |     g_mutex_lock ();
    0x00020172 movs r0, 0                            |     r0 = 0;
                                                     | label_2:
    0x00020174 add sp, 0x10                          |     
    0x00020176 pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | label_4:
    0x0002017a mov r0, r1                            |     r0 = r1;
    0x0002017c add sp, 0x10                          |     
    0x0002017e pop.w {r4, r5, r6, r7, r8, pc}        |     
    0x00020180 strh r0, [r6, 0xe]                    |     *((r6 + 0xe)) = r0;
                                                     | label_5:
    0x00020182 ldr r3, [r1, 4]                       |     r3 = *((r1 + 4));
                                                     |     if (r3 == 0) {
    0x00020184 cbz r3, 0x201b6                       |         goto label_13;
                                                     |     }
                                                     | label_3:
    0x00020186 ldr r2, [pc, 0xa8]                    |     
    0x00020188 mov r3, r6                            |     r3 = r6;
    0x0002018a ldr r0, [pc, 0xa8]                    |     
    0x0002018c movs r1, 0x10                         |     r1 = 0x10;
    0x0002018e add r2, pc                            |     r2 = 0x403c4;
    0x00020190 add r0, pc                            |     r0 = 0x403ca;
    0x00020192 blx 0x9e0c                            |     g_mutex_lock ();
    0x00020194 cdp p0, 3, c2, c12, c0, 0             |     __asm ("cdp p0, 3, c2, c12, c0, 0");
    0x00020198 add sp, 0x10                          |     
    0x0002019a pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | label_10:
    0x0002019e cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x000201a0 beq 0x20156                           |         goto label_1;
                                                     |     }
                                                     | label_11:
    0x000201a2 ldr r2, [pc, 0x94]                    |     
    0x000201a4 mov r3, r6                            |     r3 = r6;
    0x000201a6 ldr r0, [pc, 0x94]                    |     
    0x000201a8 movs r1, 0x10                         |     r1 = 0x10;
    0x000201aa add r2, pc                            |     r2 = 0x403e8;
    0x000201ac add r0, pc                            |     r0 = 0x403ee;
    0x000201ae blx 0x9e0c                            |     g_mutex_lock ();
    0x000201b2 movs r0, 0                            |     r0 = 0;
    0x000201b4 b 0x20174                             |     goto label_2;
                                                     | label_13:
    0x000201b6 ldr r3, [r1, 8]                       |     r3 = *((r1 + 8));
    0x000201b8 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x000201ba bne 0x20186                           |         goto label_3;
                                                     |     }
    0x000201bc ldr r3, [r1, 0xc]                     |     r3 = *((r1 + 0xc));
    0x000201be cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x000201c0 bne 0x20186                           |         goto label_3;
                                                     |     }
    0x000201c2 ldr r3, [r1, 0x10]                    |     r3 = *((r1 + 0x10));
    0x000201c4 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x000201c6 bne 0x20186                           |         goto label_3;
                                                     |     }
    0x000201c8 ldr r3, [r1, 0x14]                    |     r3 = *((r1 + 0x14));
    0x000201ca cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x000201cc bne 0x20186                           |         goto label_3;
                                                     |     }
    0x000201ce ldr r3, [r1, 0x18]                    |     r3 = *((r1 + 0x18));
    0x000201d0 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x000201d2 bne 0x20186                           |         goto label_3;
                                                     |     }
    0x000201d4 ldr r0, [r1, 0x1c]                    |     r0 = *((r1 + 0x1c));
    0x000201d6 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x000201d8 bne 0x20186                           |         goto label_3;
                                                     |     }
    0x000201da b 0x20174                             |     goto label_2;
                                                     | label_6:
    0x000201dc ldr r2, [pc, 0x60]                    |     
    0x000201de mov r3, r6                            |     r3 = r6;
    0x000201e0 ldr r0, [pc, 0x60]                    |     
    0x000201e2 movs r1, 0x10                         |     r1 = 0x10;
    0x000201e4 add r2, pc                            |     r2 = 0x40428;
    0x000201e6 add r0, pc                            |     r0 = 0x4042e;
    0x000201e8 blx 0x9e0c                            |     g_mutex_lock ();
    0x000201ec mov r0, r5                            |     r0 = r5;
    0x000201ee b 0x20174                             |     goto label_2;
                                                     | label_9:
    0x000201f0 ldr r3, [pc, 0x54]                    |     
    0x000201f2 movs r1, 0x10                         |     r1 = 0x10;
    0x000201f4 ldr r2, [pc, 0x54]                    |     
    0x000201f6 ldr r0, [pc, 0x58]                    |     
    0x000201f8 add r3, pc                            |     r3 = 0x40444;
    0x000201fa str r6, [sp]                          |     *(sp) = r6;
    0x000201fc add r2, pc                            |     r2 = 0x4044c;
    0x000201fe add r0, pc                            |     r0 = 0x40454;
    0x00020200 blx 0x9e0c                            |     g_mutex_lock ();
    0x00020204 movs r0, 0                            |     r0 = 0;
    0x00020206 b 0x20174                             |     goto label_2;
                                                     | label_12:
    0x00020208 ldr r3, [pc, 0x48]                    |     
    0x0002020a movs r1, 0x10                         |     r1 = 0x10;
    0x0002020c ldr r2, [pc, 0x48]                    |     
    0x0002020e ldr r0, [pc, 0x4c]                    |     
    0x00020210 add r3, pc                            |     r3 = 0x40468;
    0x00020212 str r6, [sp]                          |     *(sp) = r6;
    0x00020214 add r2, pc                            |     r2 = 0x40470;
    0x00020216 add r0, pc                            |     r0 = 0x40478;
    0x00020218 blx 0x9e0c                            |     g_mutex_lock ();
    0x0002021c movs r0, 0                            |     r0 = 0;
    0x0002021e b 0x20174                             |     goto label_2;
                                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0xdc04 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) sym.g_closure_add_invalidate_notifier ()         | void g_closure_add_invalidate_notifier (uint32_t arg1, int16_t arg2, uint32_t arg3) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_2h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x0000dc04 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000dc06 beq 0xdcd2                                    |         goto label_1;
                                                             |     }
    0x0000dc08 push {r4, r5, r6, lr}                         |     
    0x0000dc0a mov r5, r2                                    |     r5 = r2;
    0x0000dc0c sub sp, 0x10                                  |     
    0x0000dc0e cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x0000dc10 beq 0xdce4                                    |         goto label_2;
                                                             |     }
    0x0000dc12 mov r4, r0                                    |     r4 = r0;
    0x0000dc14 ldrsb.w r3, [r0, 3]                           |     r3 = *((r0 + 3));
    0x0000dc18 cmp r3, 0                                     |     
                                                             |     if (r3 < 0) {
    0x0000dc1a blt 0xdca2                                    |         goto label_3;
                                                             |     }
    0x0000dc1c ldrh r2, [r0, 2]                              |     r2 = *((r0 + 2));
    0x0000dc1e and r3, r2, 0x7f8                             |     r3 = r2 & 0x7f8;
    0x0000dc22 cmp.w r3, 0x7f8                               |     
                                                             |     if (r3 == 0x7f8) {
    0x0000dc26 beq 0xdcba                                    |         goto label_4;
                                                             |     }
    0x0000dc28 ldrb r3, [r0, 2]                              |     r3 = *((r0 + 2));
    0x0000dc2a mov r6, r1                                    |     r6 = r1;
    0x0000dc2c ubfx r1, r2, 3, 8                             |     r1 = (r2 >> 3) & ((1 << 8) - 1);
    0x0000dc30 ldr r0, [r0, 0xc]                             |     r0 = *((r0 + 0xc));
    0x0000dc32 movs r2, 8                                    |     r2 = 8;
    0x0000dc34 and ip, r3, 1                                 |     
    0x0000dc38 ubfx r3, r3, 1, 2                             |     r3 = (r3 >> 1) & ((1 << 2) - 1);
    0x0000dc3c add.w r3, r3, ip, lsl 1                       |     r3 += (ip << 1);
    0x0000dc40 add r1, r3                                    |     r1 += r3;
    0x0000dc42 adds r1, 1                                    |     r1++;
    0x0000dc44 blx 0x9d4c                                    |     g_datalist_unset_flags ();
    0x0000dc48 ldrb r3, [r4, 2]                              |     r3 = *((r4 + 2));
    0x0000dc4a ldrh r2, [r4, 2]                              |     r2 = *((r4 + 2));
    0x0000dc4c str r0, [r4, 0xc]                             |     *((r4 + 0xc)) = r0;
    0x0000dc4e and r1, r3, 1                                 |     r1 = r3 & 1;
    0x0000dc52 ubfx r3, r3, 1, 2                             |     r3 = (r3 >> 1) & ((1 << 2) - 1);
    0x0000dc56 add.w r3, r3, r1, lsl 1                       |     r3 += (r1 << 1);
    0x0000dc5a ubfx r2, r2, 3, 8                             |     r2 = (r2 >> 3) & ((1 << 8) - 1);
    0x0000dc5e add r3, r2                                    |     r3 += r2;
    0x0000dc60 str.w r6, [r0, r3, lsl 3]                     |     __asm ("str.w r6, [r0, r3, lsl 3]");
    0x0000dc64 ldr r2, [r4, 0xc]                             |     r2 = *((r4 + 0xc));
    0x0000dc66 add.w r2, r2, r3, lsl 3                       |     r2 += (r3 << 3);
    0x0000dc6a str r5, [r2, 4]                               |     *((r2 + 4)) = r5;
                                                             | label_0:
    0x0000dc6c ldr r3, [r4]                                  |     r3 = *(r4);
    0x0000dc6e ubfx r2, r3, 0x13, 8                          |     r2 = (r3 >> 0x13) & ((1 << 8) - 1);
    0x0000dc72 ubfx r1, r3, 0x10, 0x10                       |     r1 = (r3 >> 0x10) & ((1 << 0x10) - 1);
    0x0000dc76 adds r2, 1                                    |     r2++;
    0x0000dc78 str r3, [sp]                                  |     *(sp) = r3;
    0x0000dc7a bfi r1, r2, 3, 8                              |     value_0 = BIT_MASK (3, 8);
                                                             |     value_1 = r2 & value_0;
                                                             |     value_0 = ~value_0;
                                                             |     r1 &= value_0;
                                                             |     r1 |= value_1;
    0x0000dc7e strh.w r1, [sp, 2]                            |     var_2h = r1;
    0x0000dc82 ldr r2, [sp]                                  |     r2 = *(sp);
    0x0000dc84 dmb ish                                       |     __asm ("dmb ish");
                                                             |     do {
    0x0000dc88 ldrex r1, [r4]                                |         __asm ("ldrex r1, [r4]");
    0x0000dc8c cmp r1, r3                                    |         
                                                             |         if (r1 != r3) {
    0x0000dc8e bne 0xdc98                                    |             goto label_5;
                                                             |         }
    0x0000dc90 strex r0, r2, [r4]                            |         __asm ("strex r0, r2, [r4]");
    0x0000dc94 cmp r0, 0                                     |         
    0x0000dc96 bne 0xdc88                                    |         
                                                             |     } while (r0 != 0);
                                                             | label_5:
    0x0000dc98 dmb ish                                       |     __asm ("dmb ish");
                                                             |     if (r0 != 0) {
    0x0000dc9c bne 0xdc6c                                    |         goto label_0;
                                                             |     }
    0x0000dc9e add sp, 0x10                                  |     
    0x0000dca0 pop {r4, r5, r6, pc}                          |     
                                                             | label_3:
    0x0000dca2 ldr r1, [pc, 0x58]                            |     
    0x0000dca4 ldr r2, [pc, 0x58]                            |     
    0x0000dca6 ldr r0, [pc, 0x5c]                            |     
    0x0000dca8 add r1, pc                                    |     r1 = 0x1b9aa;
    0x0000dcaa add r2, pc                                    |     r2 = 0x1b9ae;
    0x0000dcac adds r1, 0xa8                                 |     r1 += 0xa8;
    0x0000dcae add r0, pc                                    |     r0 = 0x1b9b8;
    0x0000dcb0 add sp, 0x10                                  |     
    0x0000dcb2 pop.w {r4, r5, r6, lr}                        |     
    0x0000dcb6 b.w 0x9c08                                    |     void (*0x9c08)() ();
                                                             | label_4:
    0x0000dcba ldr r1, [pc, 0x4c]                            |     
    0x0000dcbc ldr r2, [pc, 0x4c]                            |     
    0x0000dcbe ldr r0, [pc, 0x50]                            |     
    0x0000dcc0 add r1, pc                                    |     r1 = 0x1b9ce;
    0x0000dcc2 add r2, pc                                    |     r2 = 0x1b9d2;
    0x0000dcc4 adds r1, 0xa8                                 |     r1 += 0xa8;
    0x0000dcc6 add r0, pc                                    |     r0 = 0x1b9dc;
    0x0000dcc8 add sp, 0x10                                  |     
    0x0000dcca pop.w {r4, r5, r6, lr}                        |     
    0x0000dcce b.w 0x9c08                                    |     void (*0x9c08)() ();
                                                             | label_1:
    0x0000dcd2 ldr r1, [pc, 0x40]                            |     
    0x0000dcd4 ldr r2, [pc, 0x40]                            |     
    0x0000dcd6 ldr r0, [pc, 0x44]                            |     
    0x0000dcd8 add r1, pc                                    |     r1 = 0x1b9f2;
    0x0000dcda add r2, pc                                    |     r2 = 0x1b9f6;
    0x0000dcdc adds r1, 0xa8                                 |     r1 += 0xa8;
    0x0000dcde add r0, pc                                    |     r0 = 0x1ba00;
    0x0000dce0 b.w 0x9c08                                    |     void (*0x9c08)() ();
                                                             | label_2:
    0x0000dce4 ldr r1, [pc, 0x38]                            |     
    0x0000dce6 ldr r2, [pc, 0x3c]                            |     
    0x0000dce8 ldr r0, [pc, 0x3c]                            |     
    0x0000dcea add r1, pc                                    |     r1 = 0x1ba0e;
    0x0000dcec add r2, pc                                    |     r2 = 0x1ba16;
    0x0000dcee adds r1, 0xa8                                 |     r1 += 0xa8;
    0x0000dcf0 add r0, pc                                    |     r0 = 0x1ba1c;
    0x0000dcf2 add sp, 0x10                                  |     
    0x0000dcf4 pop.w {r4, r5, r6, lr}                        |     
    0x0000dcf8 b.w 0x9c08                                    |     return void (*0x9c08)() ();
                                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0xd878 */
                                                         | #include <stdint.h>
                                                         |  
                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                         |  
    ; (fcn) sym.g_closure_add_marshal_guards ()          | void g_closure_add_marshal_guards (int16_t arg_28h, uint32_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_2h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
    0x0000d878 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0000d87c sub sp, 0x10                              |     
    0x0000d87e ldr r6, [sp, 0x28]                        |     r6 = *(arg_28h);
    0x0000d880 cmp r0, 0                                 |     
                                                         |     if (arg_28h == ) {
    0x0000d882 beq.w 0xda50                              |         goto label_2;
                                                         |     }
    0x0000d886 mov r7, r2                                |     r7 = r2;
    0x0000d888 cmp r2, 0                                 |     
                                                         |     if (r2 == 0) {
    0x0000d88a beq.w 0xda68                              |         goto label_3;
                                                         |     }
    0x0000d88e cmp r6, 0                                 |     
                                                         |     if (r6 == 0) {
    0x0000d890 beq.w 0xda80                              |         goto label_4;
                                                         |     }
    0x0000d894 mov r5, r3                                |     r5 = r3;
    0x0000d896 ldrb r3, [r0, 3]                          |     r3 = *((r0 + 3));
    0x0000d898 mov r4, r0                                |     r4 = r0;
    0x0000d89a lsls r2, r3, 0x18                         |     r2 = r3 << 0x18;
                                                         |     if (r2 < r3) {
    0x0000d89c bmi.w 0xda00                              |         goto label_5;
                                                         |     }
    0x0000d8a0 lsls r0, r3, 0x19                         |     r0 = r3 << 0x19;
                                                         |     if (r0 < r3) {
    0x0000d8a2 bpl 0xd8bc                                |         
    0x0000d8a4 ldr r1, [pc, 0x1f0]                       |         
    0x0000d8a6 ldr r2, [pc, 0x1f4]                       |         
    0x0000d8a8 ldr r0, [pc, 0x1f4]                       |         
    0x0000d8aa add r1, pc                                |         r1 = 0x1b346;
    0x0000d8ac add r2, pc                                |         r2 = 0x1b34e;
    0x0000d8ae adds r1, 0x68                             |         r1 += 0x68;
    0x0000d8b0 add r0, pc                                |         r0 = 0x1b354;
    0x0000d8b2 add sp, 0x10                              |         
    0x0000d8b4 pop.w {r4, r5, r6, r7, r8, lr}            |         
    0x0000d8b6 rors r0, r6                               |         __asm ("rors r0, r6");
    0x0000d8b8 b.w 0x9c08                                |         void (*0x9c08)() ();
                                                         |     }
    0x0000d8bc ldrb r3, [r4, 2]                          |     r3 = *((r4 + 2));
    0x0000d8be lsls r2, r3, 0x1f                         |     r2 = r3 << 0x1f;
                                                         |     if (r2 < r3) {
    0x0000d8c0 bmi.w 0xda18                              |         goto label_6;
                                                         |     }
    0x0000d8c4 ldrh r2, [r4, 2]                          |     r2 = *((r4 + 2));
    0x0000d8c6 and r0, r3, 1                             |     r0 = r3 & 1;
    0x0000d8ca mov r8, r1                                |     r8 = r1;
    0x0000d8cc ubfx r1, r3, 1, 2                         |     r1 = (r3 >> 1) & ((1 << 2) - 1);
    0x0000d8d0 add.w r1, r1, r0, lsl 1                   |     r1 += (r0 << 1);
    0x0000d8d4 ldr r0, [r4, 0xc]                         |     r0 = *((r4 + 0xc));
    0x0000d8d6 ubfx r2, r2, 3, 8                         |     r2 = (r2 >> 3) & ((1 << 8) - 1);
    0x0000d8da add r1, r2                                |     r1 += r2;
    0x0000d8dc movs r2, 8                                |     r2 = 8;
    0x0000d8de adds r1, 2                                |     r1 += 2;
    0x0000d8e0 blx 0x9d4c                                |     g_datalist_unset_flags ();
    0x0000d8e4 ldrh r3, [r4, 2]                          |     r3 = *((r4 + 2));
    0x0000d8e6 str r0, [r4, 0xc]                         |     *((r4 + 0xc)) = r0;
    0x0000d8e8 and r2, r3, 0x7f8                         |     r2 = r3 & 0x7f8;
                                                         |     if (r2 != 0) {
    0x0000d8ec cbz r2, 0xd918                            |         
    0x0000d8ee ldrb r2, [r4, 2]                          |         r2 = *((r4 + 2));
    0x0000d8f0 ubfx r3, r3, 3, 8                         |         r3 = (r3 >> 3) & ((1 << 8) - 1);
    0x0000d8f4 and r1, r2, 1                             |         r1 = r2 & 1;
    0x0000d8f8 ubfx r2, r2, 1, 2                         |         r2 = (r2 >> 1) & ((1 << 2) - 1);
    0x0000d8fc add.w r2, r2, r1, lsl 1                   |         r2 += (r1 << 1);
    0x0000d900 add r3, r2                                |         r3 += r2;
    0x0000d902 add.w r2, r0, r2, lsl 3                   |         r2 = r0 + (r2 << 3);
    0x0000d906 adds r3, 1                                |         r3++;
    0x0000d908 add.w r3, r0, r3, lsl 3                   |         r3 = r0 + (r3 << 3);
    0x0000d90c ldm.w r2, {r0, r1}                        |         r0 = *(r2);
                                                         |         r1 = *((r2 + 4));
    0x0000d910 stm.w r3, {r0, r1}                        |         *(r3) = r0;
                                                         |         *((r3 + 4)) = r1;
    0x0000d914 ldr r0, [r4, 0xc]                         |         r0 = *((r4 + 0xc));
    0x0000d916 ldrh r3, [r4, 2]                          |         r3 = *((r4 + 2));
                                                         |     }
    0x0000d918 ubfx r3, r3, 3, 8                         |     r3 = (r3 >> 3) & ((1 << 8) - 1);
    0x0000d91c cmp r3, 1                                 |     
                                                         |     if (r3 >= 1) {
    0x0000d91e bls 0xd944                                |         
    0x0000d920 ldrb r2, [r4, 2]                          |         r2 = *((r4 + 2));
    0x0000d922 and r1, r2, 1                             |         r1 = r2 & 1;
    0x0000d926 ubfx r2, r2, 1, 2                         |         r2 = (r2 >> 1) & ((1 << 2) - 1);
    0x0000d92a add.w r2, r2, r1, lsl 1                   |         r2 += (r1 << 1);
    0x0000d92e add r3, r2                                |         r3 += r2;
    0x0000d930 adds r2, 1                                |         r2++;
    0x0000d932 add.w r2, r0, r2, lsl 3                   |         r2 = r0 + (r2 << 3);
    0x0000d936 add.w r3, r0, r3, lsl 3                   |         r3 = r0 + (r3 << 3);
    0x0000d93a ldm.w r2, {r0, r1}                        |         r0 = *(r2);
                                                         |         r1 = *((r2 + 4));
    0x0000d93e stm.w r3, {r0, r1}                        |         *(r3) = r0;
                                                         |         *((r3 + 4)) = r1;
    0x0000d942 ldr r0, [r4, 0xc]                         |         r0 = *((r4 + 0xc));
                                                         |     }
    0x0000d944 ldrb.w ip, [r4, 2]                        |     ip = *((r4 + 2));
    0x0000d948 tst.w ip, 6                               |     
                                                         |     if ((ip & 6) != 0) {
    0x0000d94c beq 0xd974                                |         
    0x0000d94e and r3, ip, 1                             |         r3 = ip & 1;
    0x0000d952 ubfx ip, ip, 1, 2                         |         ip = (ip >> 1) & ((1 << 2) - 1);
    0x0000d956 add.w ip, ip, r3, lsl 1                   |         
    0x0000d95a add.w r3, r0, r3, lsl 4                   |         r3 = r0 + (r3 << 4);
    0x0000d95e add.w ip, ip, 1                           |         
    0x0000d962 add.w ip, r0, ip, lsl 3                   |         
    0x0000d966 ldm.w r3, {r0, r1}                        |         r0 = *(r3);
                                                         |         r1 = *((r3 + 4));
    0x0000d96a stm.w ip, {r0, r1}                        |         *(ip) = r0;
                                                         |         *((ip + 4)) = r1;
    0x0000d96e ldr r0, [r4, 0xc]                         |         r0 = *((r4 + 0xc));
    0x0000d970 ldrb.w ip, [r4, 2]                        |         ip = *((r4 + 2));
                                                         |     }
    0x0000d974 ubfx r3, ip, 1, 2                         |     r3 = (ip >> 1) & ((1 << 2) - 1);
    0x0000d978 cmp r3, 1                                 |     
                                                         |     if (r3 >= 1) {
    0x0000d97a bls 0xd9a0                                |         
    0x0000d97c and ip, ip, 1                             |         
    0x0000d980 lsl.w ip, ip, 1                           |         
    0x0000d984 add r3, ip                                |         r3 += ip;
    0x0000d986 add.w ip, ip, 1                           |         
    0x0000d98a add.w ip, r0, ip, lsl 3                   |         
    0x0000d98e add.w r3, r0, r3, lsl 3                   |         r3 = r0 + (r3 << 3);
    0x0000d992 ldm.w ip, {r0, r1}                        |         r0 = *(ip);
                                                         |         r1 = *((ip + 4));
    0x0000d996 stm.w r3, {r0, r1}                        |         *(r3) = r0;
                                                         |         *((r3 + 4)) = r1;
    0x0000d99a ldr r0, [r4, 0xc]                         |         r0 = *((r4 + 0xc));
    0x0000d99c ldrb.w ip, [r4, 2]                        |         ip = *((r4 + 2));
    0x0000d99e stm r0!, {r1}                             |         *(r0!) = r1;
                                                         |     }
    0x0000d9a0 tst.w ip, 1                               |     
                                                         |     if ((ip & 1) != 0) {
    0x0000d9a4 bne 0xda30                                |         goto label_7;
                                                         |     }
                                                         | label_1:
    0x0000d9a6 and ip, ip, 1                             |     
    0x0000d9aa str.w r8, [r0, ip, lsl 3]                 |     __asm ("str.w r8, [r0, ip, lsl 3]");
    0x0000d9ae lsl.w ip, ip, 3                           |     
    0x0000d9b2 ldr r3, [r4, 0xc]                         |     r3 = *((r4 + 0xc));
    0x0000d9b4 add r3, ip                                |     r3 += ip;
    0x0000d9b6 add.w ip, ip, 8                           |     
    0x0000d9ba str r7, [r3, 4]                           |     *((r3 + 4)) = r7;
    0x0000d9bc ldr r3, [r4, 0xc]                         |     r3 = *((r4 + 0xc));
    0x0000d9be str.w r5, [r3, ip]                        |     __asm ("str.w r5, [r3, ip]");
    0x0000d9c2 ldr r3, [r4, 0xc]                         |     r3 = *((r4 + 0xc));
    0x0000d9c4 add r3, ip                                |     r3 += ip;
    0x0000d9c6 str r6, [r3, 4]                           |     *((r3 + 4)) = r6;
                                                         | label_0:
    0x0000d9c8 ldr r3, [r4]                              |     r3 = *(r4);
    0x0000d9ca ubfx r2, r3, 0x10, 1                      |     r2 = (r3 >> 0x10) & ((1 << 1) - 1);
    0x0000d9ce ubfx r1, r3, 0x10, 8                      |     r1 = (r3 >> 0x10) & ((1 << 8) - 1);
    0x0000d9d2 adds r2, 1                                |     r2++;
    0x0000d9d4 str r3, [sp]                              |     *(sp) = r3;
    0x0000d9d6 bfi r1, r2, 0, 1                          |     value_0 = BIT_MASK (0, 1);
                                                         |     value_1 = r2 & value_0;
                                                         |     value_0 = ~value_0;
                                                         |     r1 &= value_0;
                                                         |     r1 |= value_1;
    0x0000d9da strb.w r1, [sp, 2]                        |     var_2h = r1;
    0x0000d9de ldr r2, [sp]                              |     r2 = *(sp);
    0x0000d9e0 dmb ish                                   |     __asm ("dmb ish");
                                                         |     do {
    0x0000d9e4 ldrex r1, [r4]                            |         __asm ("ldrex r1, [r4]");
    0x0000d9e8 cmp r1, r3                                |         
                                                         |         if (r1 != r3) {
    0x0000d9ea bne 0xd9f4                                |             goto label_8;
                                                         |         }
    0x0000d9ec strex r0, r2, [r4]                        |         __asm ("strex r0, r2, [r4]");
    0x0000d9f0 cmp r0, 0                                 |         
    0x0000d9f2 bne 0xd9e4                                |         
                                                         |     } while (r0 != 0);
                                                         | label_8:
    0x0000d9f4 dmb ish                                   |     __asm ("dmb ish");
                                                         |     if (r0 != 0) {
    0x0000d9f8 bne 0xd9c8                                |         goto label_0;
                                                         |     }
    0x0000d9fa add sp, 0x10                              |     
    0x0000d9fc pop.w {r4, r5, r6, r7, r8, pc}            |     
                                                         | label_5:
    0x0000da00 ldr r1, [pc, 0xa0]                        |     
    0x0000da02 ldr r2, [pc, 0xa4]                        |     
    0x0000da04 ldr r0, [pc, 0xa4]                        |     
    0x0000da06 add r1, pc                                |     r1 = 0x1b4ae;
    0x0000da08 add r2, pc                                |     r2 = 0x1b4b6;
    0x0000da0a adds r1, 0x68                             |     r1 += 0x68;
    0x0000da0c add r0, pc                                |     r0 = 0x1b4bc;
    0x0000da0e add sp, 0x10                              |     
    0x0000da10 pop.w {r4, r5, r6, r7, r8, lr}            |     
    0x0000da14 b.w 0x9c08                                |     void (*0x9c08)() ();
                                                         | label_6:
    0x0000da18 ldr r1, [pc, 0x94]                        |     
    0x0000da1a ldr r2, [pc, 0x98]                        |     
    0x0000da1c ldr r0, [pc, 0x98]                        |     
    0x0000da1e add r1, pc                                |     r1 = 0x1b4d2;
    0x0000da20 add r2, pc                                |     r2 = 0x1b4da;
    0x0000da22 adds r1, 0x68                             |     r1 += 0x68;
    0x0000da24 add r0, pc                                |     r0 = 0x1b4e0;
    0x0000da26 add sp, 0x10                              |     
    0x0000da28 pop.w {r4, r5, r6, r7, r8, lr}            |     
    0x0000da2c b.w 0x9c08                                |     void (*0x9c08)() ();
                                                         | label_7:
    0x0000da30 and ip, ip, 1                             |     
    0x0000da34 add.w r3, r0, ip, lsl 3                   |     r3 = r0 + (ip << 3);
    0x0000da38 add.w ip, r0, ip, lsl 4                   |     
    0x0000da3c ldm.w r3, {r0, r1}                        |     r0 = *(r3);
                                                         |     r1 = *((r3 + 4));
    0x0000da40 add.w ip, ip, 8                           |     
    0x0000da44 stm.w ip, {r0, r1}                        |     *(ip) = r0;
                                                         |     *((ip + 4)) = r1;
    0x0000da48 ldr r0, [r4, 0xc]                         |     r0 = *((r4 + 0xc));
    0x0000da4a ldrb.w ip, [r4, 2]                        |     ip = *((r4 + 2));
    0x0000da4e b 0xd9a6                                  |     goto label_1;
                                                         | label_2:
    0x0000da50 ldr r1, [pc, 0x68]                        |     
    0x0000da52 ldr r2, [pc, 0x6c]                        |     
    0x0000da54 ldr r0, [pc, 0x6c]                        |     
    0x0000da56 add r1, pc                                |     r1 = 0x1b516;
    0x0000da58 add r2, pc                                |     r2 = 0x1b51e;
    0x0000da5a adds r1, 0x68                             |     r1 += 0x68;
    0x0000da5c add r0, pc                                |     r0 = 0x1b524;
    0x0000da5e add sp, 0x10                              |     
    0x0000da60 pop.w {r4, r5, r6, r7, r8, lr}            |     
    0x0000da62 rors r0, r6                               |     __asm ("rors r0, r6");
    0x0000da64 b.w 0x9c08                                |     void (*0x9c08)() ();
                                                         | label_3:
    0x0000da68 ldr r1, [pc, 0x5c]                        |     
    0x0000da6a ldr r2, [pc, 0x60]                        |     
    0x0000da6c ldr r0, [pc, 0x60]                        |     
    0x0000da6e add r1, pc                                |     r1 = 0x1b53a;
    0x0000da70 add r2, pc                                |     r2 = 0x1b542;
    0x0000da72 adds r1, 0x68                             |     r1 += 0x68;
    0x0000da74 add r0, pc                                |     r0 = 0x1b548;
    0x0000da76 add sp, 0x10                              |     
    0x0000da78 pop.w {r4, r5, r6, r7, r8, lr}            |     
    0x0000da7a rors r0, r6                               |     __asm ("rors r0, r6");
    0x0000da7c b.w 0x9c08                                |     void (*0x9c08)() ();
                                                         | label_4:
    0x0000da80 ldr r1, [pc, 0x50]                        |     
    0x0000da82 ldr r2, [pc, 0x54]                        |     
    0x0000da84 ldr r0, [pc, 0x54]                        |     
    0x0000da86 add r1, pc                                |     r1 = 0x1b55e;
    0x0000da88 add r2, pc                                |     r2 = 0x1b566;
    0x0000da8a adds r1, 0x68                             |     r1 += 0x68;
    0x0000da8c add r0, pc                                |     r0 = 0x1b56c;
    0x0000da8e add sp, 0x10                              |     
    0x0000da90 pop.w {r4, r5, r6, r7, r8, lr}            |     
    0x0000da94 b.w 0x9c08                                |     return void (*0x9c08)() ();
                                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0xdfc8 */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) sym.g_closure_invalidate ()          | void g_closure_invalidate (int16_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_2h;
                                                 |     int16_t var_3h;
                                                 |     r0 = arg1;
                                                 |     if (r0 == 0) {
    0x0000dfc8 cbz r0, 0xe01c                    |         goto label_4;
                                                 |     }
    0x0000dfca push {r4, lr}                     |     
    0x0000dfcc mov r4, r0                        |     r4 = r0;
    0x0000dfce ldrsb.w r3, [r0, 3]               |     r3 = *((r0 + 3));
    0x0000dfd2 sub sp, 0x10                      |     
    0x0000dfd4 cmp r3, 0                         |     
                                                 |     if (r3 < 0) {
    0x0000dfd6 bge 0xdfdc                        |         
    0x0000dfd8 add sp, 0x10                      |         
    0x0000dfda pop {r4, pc}                      |         
                                                 |     }
    0x0000dfdc bl 0xdd2c                         |     g_closure_ref ();
                                                 | label_0:
    0x0000dfe0 ldr r3, [r4]                      |     r3 = *(r4);
    0x0000dfe2 str r3, [sp]                      |     *(sp) = r3;
    0x0000dfe4 lsrs r2, r3, 0x18                 |     r2 = r3 >> 0x18;
    0x0000dfe6 lsrs r1, r3, 0x1f                 |     r1 = r3 >> 0x1f;
    0x0000dfe8 orr r2, r2, 0x80                  |     r2 |= 0x80;
    0x0000dfec strb.w r2, [sp, 3]                |     var_3h = r2;
    0x0000dff0 ldr r2, [sp]                      |     r2 = *(sp);
    0x0000dff2 dmb ish                           |     __asm ("dmb ish");
                                                 |     do {
    0x0000dff6 ldrex r0, [r4]                    |         __asm ("ldrex r0, [r4]");
    0x0000dffa cmp r0, r3                        |         
                                                 |         if (r0 != r3) {
    0x0000dffc bne 0xe008                        |             goto label_5;
                                                 |         }
    0x0000dffe strex ip, r2, [r4]                |         __asm ("strex ip, r2, [r4]");
    0x0000e002 cmp.w ip, 0                       |         
    0x0000e006 bne 0xdff6                        |         
                                                 |     } while (ip != 0);
                                                 | label_5:
    0x0000e008 dmb ish                           |     __asm ("dmb ish");
                                                 |     if (ip != 0) {
    0x0000e00c bne 0xdfe0                        |         goto label_0;
                                                 |     }
                                                 |     if (r1 != 0) {
    0x0000e00e cbz r1, 0xe02e                    |         
    0x0000e010 mov r0, r4                        |         r0 = r4;
    0x0000e012 add sp, 0x10                      |         
    0x0000e014 pop.w {r4, lr}                    |         
    0x0000e018 b.w 0xde14                        |         void (*0xde14)() ();
                                                 | label_4:
    0x0000e01c ldr r1, [pc, 0xe0]                |         
    0x0000e01e ldr r2, [pc, 0xe4]                |         
    0x0000e020 ldr r0, [pc, 0xe4]                |         
    0x0000e022 add r1, pc                        |         r1 = 0x1c126;
    0x0000e024 add r2, pc                        |         r2 = 0x1c12e;
    0x0000e026 adds r1, 0xec                     |         r1 += 0xec;
    0x0000e028 add r0, pc                        |         r0 = 0x1c134;
    0x0000e02a b.w 0x9c08                        |         void (*0x9c08)() ();
                                                 |     }
                                                 | label_1:
    0x0000e02e ldr r3, [r4]                      |     r3 = *(r4);
    0x0000e030 str r3, [sp]                      |     *(sp) = r3;
    0x0000e032 lsrs r2, r3, 0x18                 |     r2 = r3 >> 0x18;
    0x0000e034 orr r2, r2, 8                     |     r2 |= 8;
    0x0000e038 strb.w r2, [sp, 3]                |     var_3h = r2;
    0x0000e03c ldr r2, [sp]                      |     r2 = *(sp);
    0x0000e03e dmb ish                           |     __asm ("dmb ish");
                                                 |     do {
    0x0000e042 ldrex r1, [r4]                    |         __asm ("ldrex r1, [r4]");
    0x0000e046 cmp r1, r3                        |         
                                                 |         if (r1 != r3) {
    0x0000e048 bne 0xe052                        |             goto label_6;
                                                 |         }
    0x0000e04a strex r0, r2, [r4]                |         __asm ("strex r0, r2, [r4]");
    0x0000e04e cmp r0, 0                         |         
    0x0000e050 bne 0xe042                        |         
                                                 |     } while (r0 != 0);
                                                 | label_6:
    0x0000e052 dmb ish                           |     __asm ("dmb ish");
                                                 |     if (r0 == 0) {
    0x0000e056 beq 0xe0b6                        |         goto label_7;
                                                 |     }
    0x0000e058 b 0xe02e                          |     goto label_1;
                                                 | label_2:
    0x0000e05a ldr r2, [r4]                      |     r2 = *(r4);
    0x0000e05c ubfx r3, r2, 0x13, 8              |     r3 = (r2 >> 0x13) & ((1 << 8) - 1);
    0x0000e060 ubfx r1, r2, 0x10, 0x10           |     r1 = (r2 >> 0x10) & ((1 << 0x10) - 1);
    0x0000e064 subs r3, 1                        |     r3--;
    0x0000e066 str r2, [sp]                      |     *(sp) = r2;
    0x0000e068 uxtb r3, r3                       |     r3 = (int8_t) r3;
    0x0000e06a bfi r1, r3, 3, 8                  |     value_0 = BIT_MASK (3, 8);
                                                 |     value_1 = r3 & value_0;
                                                 |     value_0 = ~value_0;
                                                 |     r1 &= value_0;
                                                 |     r1 |= value_1;
    0x0000e06e strh.w r1, [sp, 2]                |     var_2h = r1;
    0x0000e072 ldr r1, [sp]                      |     r1 = *(sp);
    0x0000e074 dmb ish                           |     __asm ("dmb ish");
                                                 |     do {
    0x0000e078 ldrex r0, [r4]                    |         __asm ("ldrex r0, [r4]");
    0x0000e07c cmp r0, r2                        |         
                                                 |         if (r0 != r2) {
    0x0000e07e bne 0xe08a                        |             goto label_8;
                                                 |         }
    0x0000e080 strex ip, r1, [r4]                |         __asm ("strex ip, r1, [r4]");
    0x0000e084 cmp.w ip, 0                       |         
    0x0000e088 bne 0xe078                        |         
                                                 |     } while (ip != 0);
                                                 | label_8:
    0x0000e08a dmb ish                           |     __asm ("dmb ish");
                                                 |     if (ip != 0) {
    0x0000e08e bne 0xe05a                        |         goto label_2;
                                                 |     }
    0x0000e090 ldrb r2, [r4, 2]                  |     r2 = *((r4 + 2));
    0x0000e092 ldr r1, [r4, 0xc]                 |     r1 = *((r4 + 0xc));
    0x0000e094 and r0, r2, 1                     |     r0 = r2 & 1;
    0x0000e098 ubfx r2, r2, 1, 2                 |     r2 = (r2 >> 1) & ((1 << 2) - 1);
    0x0000e09a lsls r1, r0, 9                    |     r1 = r0 << 9;
    0x0000e09c add.w r3, r3, r0, lsl 1           |     r3 += (r0 << 1);
    0x0000e0a0 add r3, r2                        |     r3 += r2;
    0x0000e0a2 add.w r2, r1, r3, lsl 3           |     r2 = r1 + (r3 << 3);
    0x0000e0a6 ldr r0, [r2, 4]                   |     r0 = *((r2 + 4));
    0x0000e0a8 str r0, [r4, 4]                   |     *((r4 + 4)) = r0;
    0x0000e0aa ldr.w r0, [r1, r3, lsl 3]         |     offset_2 = r3 << 3;
                                                 |     r0 = *((r1 + offset_2));
    0x0000e0ae mov r1, r4                        |     r1 = r4;
    0x0000e0b0 str r0, [r4, 8]                   |     *((r4 + 8)) = r0;
    0x0000e0b2 ldr r3, [r2, 4]                   |     r3 = *((r2 + 4));
    0x0000e0b4 blx r3                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                 | label_7:
    0x0000e0b6 ldrh r3, [r4, 2]                  |     r3 = *((r4 + 2));
    0x0000e0b8 and r3, r3, 0x7f8                 |     r3 &= 0x7f8;
    0x0000e0bc cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x0000e0be bne 0xe05a                        |         goto label_2;
                                                 |     }
    0x0000e0c0 movs r3, 0                        |     r3 = 0;
    0x0000e0c2 strd r3, r3, [r4, 4]              |     __asm ("strd r3, r3, [r4, 4]");
                                                 | label_3:
    0x0000e0c6 ldr r3, [r4]                      |     r3 = *(r4);
    0x0000e0c8 ubfx r2, r3, 0x18, 8              |     r2 = (r3 >> 0x18) & ((1 << 8) - 1);
    0x0000e0ca str r7, [r0, 0x20]                |     *((r0 + 0x20)) = r7;
    0x0000e0cc str r3, [sp]                      |     *(sp) = r3;
    0x0000e0ce bfc r2, 3, 1                      |     value_3 = BIT_MASK (1, );
                                                 |     value_3 = ~value_3;
                                                 |     r2 &= value_3;
    0x0000e0d0 lsls r3, r0, 0xb                  |     r3 = r0 << 0xb;
    0x0000e0d2 strb.w r2, [sp, 3]                |     var_3h = r2;
    0x0000e0d6 ldr r2, [sp]                      |     r2 = *(sp);
    0x0000e0d8 dmb ish                           |     __asm ("dmb ish");
                                                 |     do {
    0x0000e0dc ldrex r1, [r4]                    |         __asm ("ldrex r1, [r4]");
    0x0000e0e0 cmp r1, r3                        |         
                                                 |         if (r1 != r3) {
    0x0000e0e2 bne 0xe0ec                        |             goto label_9;
                                                 |         }
    0x0000e0e4 strex r0, r2, [r4]                |         __asm ("strex r0, r2, [r4]");
    0x0000e0e8 cmp r0, 0                         |         
    0x0000e0ea bne 0xe0dc                        |         
                                                 |     } while (r0 != 0);
                                                 | label_9:
    0x0000e0ec dmb ish                           |     __asm ("dmb ish");
                                                 |     if (r0 != 0) {
    0x0000e0f0 bne 0xe0c6                        |         goto label_3;
                                                 |     }
    0x0000e0f2 mov r0, r4                        |     r0 = r4;
    0x0000e0f4 add sp, 0x10                      |     
    0x0000e0f6 pop.w {r4, lr}                    |     
    0x0000e0fa b.w 0xde14                        |     return void (*0xde14)() ();
                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0xdd2c */
                                             | #include <stdint.h>
                                             |  
                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                             |  
    ; (fcn) sym.g_closure_ref ()             | void g_closure_ref (uint32_t arg1) {
                                             |     int16_t var_0h;
                                             |     r0 = arg1;
    0x0000dd2c push {r4, lr}                 |     
    0x0000dd2e mov r4, r0                    |     r4 = r0;
    0x0000dd30 sub sp, 0x10                  |     
    0x0000dd32 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000dd34 beq 0xddb6                    |         goto label_1;
                                             |     }
    0x0000dd36 movw r2, 0x7fff               |     r2 = 0x7fff;
    0x0000dd3a ldrh r3, [r0]                 |     r3 = *(r0);
    0x0000dd3c ubfx r3, r3, 0, 0xf           |     r3 = (r3 >> 0) & ((1 << 0xf) - 1);
                                             |     if (r3 == 0) {
    0x0000dd40 cbz r3, 0xdd82                |         goto label_2;
                                             |     }
    0x0000dd42 cmp r3, r2                    |     
                                             |     if (r3 == r2) {
    0x0000dd44 beq 0xddce                    |         goto label_3;
                                             |     }
                                             | label_0:
    0x0000dd46 ldr r1, [r4]                  |     r1 = *(r4);
    0x0000dd48 mov r3, r1                    |     r3 = r1;
    0x0000dd4a str r1, [sp]                  |     *(sp) = r1;
    0x0000dd4c adds r2, r3, 1                |     r2 = r3 + 1;
    0x0000dd4e ubfx r2, r2, 0, 0xf           |     r2 = (r2 >> 0) & ((1 << 0xf) - 1);
    0x0000dd52 bfi r3, r2, 0, 0xf            |     value_0 = BIT_MASK (0, 0xf);
                                             |     value_1 = r2 & value_0;
                                             |     value_0 = ~value_0;
                                             |     r3 &= value_0;
                                             |     r3 |= value_1;
    0x0000dd56 strh.w r3, [sp]               |     *(sp) = r3;
    0x0000dd5a ldr r3, [sp]                  |     r3 = *(sp);
    0x0000dd5c dmb ish                       |     __asm ("dmb ish");
                                             |     do {
    0x0000dd60 ldrex r0, [r4]                |         __asm ("ldrex r0, [r4]");
    0x0000dd64 cmp r0, r1                    |         
                                             |         if (r0 != r1) {
    0x0000dd66 bne 0xdd72                    |             goto label_4;
                                             |         }
    0x0000dd68 strex ip, r3, [r4]            |         __asm ("strex ip, r3, [r4]");
    0x0000dd6c cmp.w ip, 0                   |         
    0x0000dd70 bne 0xdd60                    |         
                                             |     } while (ip != 0);
                                             | label_4:
    0x0000dd72 dmb ish                       |     __asm ("dmb ish");
                                             |     if (ip != 0) {
    0x0000dd76 bne 0xdd46                    |         goto label_0;
                                             |     }
    0x0000dd78 cmp r2, 1                     |     
                                             |     if (r2 >= 1) {
    0x0000dd7a bls 0xdd9c                    |         
    0x0000dd7c mov r0, r4                    |         r0 = r4;
    0x0000dd7e add sp, 0x10                  |         
    0x0000dd80 pop {r4, pc}                  |         
                                             | label_2:
    0x0000dd82 ldr r1, [pc, 0x60]            |         
    0x0000dd84 mov r4, r3                    |         r4 = r3;
    0x0000dd86 ldr r2, [pc, 0x60]            |         
    0x0000dd88 ldr r0, [pc, 0x60]            |         
    0x0000dd8a add r1, pc                    |         r1 = 0x1bb74;
    0x0000dd8c add r2, pc                    |         r2 = 0x1bb7a;
    0x0000dd8e adds r1, 0xcc                 |         r1 += 0xcc;
    0x0000dd90 add r0, pc                    |         r0 = 0x1bb80;
    0x0000dd92 blx 0x9c0c                    |         fcn_00009c0c ();
    0x0000dd96 mov r0, r4                    |         r0 = r4;
    0x0000dd98 add sp, 0x10                  |         
    0x0000dd9a pop {r4, pc}                  |         
                                             |     }
    0x0000dd9c ldr r1, [pc, 0x50]            |     
    0x0000dd9e movs r4, 0                    |     r4 = 0;
    0x0000dda0 ldr r2, [pc, 0x50]            |     
    0x0000dda2 ldr r0, [pc, 0x54]            |     
    0x0000dda4 add r1, pc                    |     r1 = 0x1bb98;
    0x0000dda6 add r2, pc                    |     r2 = 0x1bb9e;
    0x0000dda8 adds r1, 0xcc                 |     r1 += 0xcc;
    0x0000ddaa add r0, pc                    |     r0 = 0x1bba8;
    0x0000ddac blx 0x9c0c                    |     fcn_00009c0c ();
    0x0000ddb0 mov r0, r4                    |     r0 = r4;
    0x0000ddb2 add sp, 0x10                  |     
    0x0000ddb4 pop {r4, pc}                  |     
                                             | label_1:
    0x0000ddb6 ldr r1, [pc, 0x44]            |     
    0x0000ddb8 ldr r2, [pc, 0x44]            |     
    0x0000ddba ldr r0, [pc, 0x48]            |     
    0x0000ddbc add r1, pc                    |     r1 = 0x1bbbe;
    0x0000ddbe add r2, pc                    |     r2 = 0x1bbc2;
    0x0000ddc0 adds r1, 0xcc                 |     r1 += 0xcc;
    0x0000ddc2 add r0, pc                    |     r0 = 0x1bbcc;
    0x0000ddc4 blx 0x9c0c                    |     fcn_00009c0c ();
    0x0000ddc8 mov r0, r4                    |     r0 = r4;
    0x0000ddca add sp, 0x10                  |     
    0x0000ddcc pop {r4, pc}                  |     
                                             | label_3:
    0x0000ddce ldr r1, [pc, 0x38]            |     
    0x0000ddd0 movs r4, 0                    |     r4 = 0;
    0x0000ddd2 ldr r2, [pc, 0x38]            |     
    0x0000ddd4 ldr r0, [pc, 0x38]            |     
    0x0000ddd6 add r1, pc                    |     r1 = 0x1bbe4;
    0x0000ddd8 add r2, pc                    |     r2 = 0x1bbea;
    0x0000ddda adds r1, 0xcc                 |     r1 += 0xcc;
    0x0000dddc add r0, pc                    |     r0 = 0x1bbf0;
    0x0000ddde blx 0x9c0c                    |     fcn_00009c0c ();
    0x0000dde0 invalid                       |     
                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x13504 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.g_object_get_valist ()                           | void g_object_get_valist (int16_t arg_10h, int16_t arg_1ch, int16_t arg_188h, int16_t arg_2c8h, int16_t arg_368h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_1h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_8h_3;
                                                                 |     int32_t var_10h_2;
                                                                 |     int32_t var_10h_3;
                                                                 |     int16_t var_28h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00013504 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x00013508 mov fp, r1                                        |     
    0x0001350a sub sp, 0x6c                                      |     
    0x0001350c movs r1, 0x50                                     |     r1 = 0x50;
    0x0001350e mov r7, r0                                        |     r7 = r0;
    0x00013510 mov r4, r2                                        |     r4 = r2;
    0x00013512 bl 0x2493c                                        |     r0 = g_type_check_instance_is_fundamentally_a ();
                                                                 |     if (r0 == 0) {
    0x00013516 cbnz r0, 0x13532                                  |         
    0x00013518 ldr r1, [pc, 0x210]                               |         
    0x0001351a ldr r2, [pc, 0x214]                               |         
    0x0001351c ldr r0, [pc, 0x214]                               |         
    0x0001351e add r1, pc                                        |         
    0x00013520 add r2, pc                                        |         r2 = 0x26c56;
    0x00013522 add.w r1, r1, 0x37c                               |         r1 = 0x26fca;
    0x00013526 add r0, pc                                        |         r0 = 0x26c5e;
    0x00013528 add sp, 0x6c                                      |         
    0x0001352a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |         
    0x0001352e b.w 0x9c08                                        |         void (*0x9c08)() ();
                                                                 |     }
    0x00013532 mov r0, r7                                        |     r0 = r7;
    0x00013534 bl 0x11308                                        |     g_object_ref ();
    0x00013538 cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x0001353c beq 0x135a4                                       |         
    0x0001353e ldr.w r8, [pc, 0x1f8]                             |         
    0x00013542 add r5, sp, 0x10                                  |         r5 += var_10h;
    0x00013544 ldr.w sl, [pc, 0x1f4]                             |         
    0x00013548 ldr r3, [pc, 0x1f4]                               |         
    0x0001354a add r8, pc                                        |         r8 = 0x26c88;
    0x0001354c add sl, pc                                        |         sl = 0x26c8c;
    0x0001354e add r3, pc                                        |         r3 = 0x26c92;
    0x00013550 str r3, [sp, 0xc]                                 |         var_ch = r3;
                                                                 | label_0:
    0x00013552 ldr r2, [r7]                                      |         r2 = *(r7);
    0x00013554 movs r3, 0                                        |         r3 = 0;
    0x00013556 strd r3, r3, [r5]                                 |         __asm ("strd r3, r3, [r5]");
    0x0001355a mov r1, fp                                        |         r1 = fp;
    0x0001355c strd r3, r3, [r5, 8]                              |         __asm ("strd r3, r3, [var_8h_2]");
    0x00013560 strd r3, r3, [r5, 0x10]                           |         __asm ("strd r3, r3, [var_10h_2]");
    0x00013562 adds r3, 4                                        |         r3 += 4;
    0x00013564 movs r3, 1                                        |         r3 = 1;
    0x00013566 ldr.w r0, [r8, 0x28]                              |         r0 = *((r8 + 0x28));
    0x0001356a ldr r2, [r2]                                      |         r2 = *(r2);
    0x0001356c bl 0x1654c                                        |         r0 = g_param_spec_pool_lookup ();
    0x00013570 mov r6, r0                                        |         r6 = r0;
    0x00013572 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00013574 beq.w 0x1368c                                     |             goto label_5;
                                                                 |         }
    0x00013578 ldr r3, [r0, 8]                                   |         r3 = *((r0 + 8));
    0x0001357a lsls r3, r3, 0x1f                                 |         r3 <<= 0x1f;
                                                                 |         if (r3 < r3) {
    0x0001357c bmi 0x135b0                                       |             goto label_6;
                                                                 |         }
    0x0001357e ldr r3, [r7]                                      |         r3 = *(r7);
    0x00013580 ldr r4, [r0, 4]                                   |         r4 = *((r0 + 4));
    0x00013582 ldr r0, [r3]                                      |         r0 = *(r3);
    0x00013584 bl 0x22b9c                                        |         g_type_name ();
    0x00013588 ldr r3, [pc, 0x1b8]                               |         
    0x0001358a mov r5, r0                                        |         r5 = r0;
    0x0001358c ldr r2, [pc, 0x1b8]                               |         
    0x0001358e movs r1, 0x10                                     |         r1 = 0x10;
    0x00013590 ldr r0, [pc, 0x1b8]                               |         
    0x00013592 add r3, pc                                        |         
    0x00013594 strd r4, r5, [sp]                                 |         __asm ("strd r4, r5, [sp]");
    0x00013598 add r2, pc                                        |         r2 = 0x26ce4;
    0x0001359a add.w r3, r3, 0x35c                               |         r3 = 0x27036;
    0x0001359e add r0, pc                                        |         r0 = 0x26cee;
    0x000135a0 blx 0x9e0c                                        |         g_mutex_lock ();
                                                                 |     }
                                                                 | label_1:
    0x000135a4 mov r0, r7                                        |     r0 = r7;
    0x000135a6 add sp, 0x6c                                      |     
    0x000135a8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x000135ac b.w 0x11684                                       |     void (*0x11684)() ();
                                                                 | label_6:
    0x000135b0 ldr r1, [r0, 0xc]                                 |     r1 = *((r0 + 0xc));
    0x000135b2 mov r0, r5                                        |     r0 = r5;
    0x000135b4 bl 0x2698c                                        |     g_value_init ();
    0x000135b8 ldr r0, [r6, 0x10]                                |     r0 = *((r6 + 0x10));
    0x000135ba bl 0x22450                                        |     g_type_class_peek ();
    0x000135be ldr.w sb, [r6, 0x24]                              |     sb = *((r6 + 0x24));
    0x000135c2 mov fp, r0                                        |     
    0x000135c4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000135c6 beq 0x136bc                                       |         goto label_7;
                                                                 |     }
    0x000135c8 mov r0, r6                                        |     r0 = r6;
    0x000135ca bl 0x15bb0                                        |     g_param_spec_get_redirect_target ();
    0x000135cc invalid                                           |     
    0x000135d0 ite ne                                            |     
                                                                 |     if (r0 == 0) {
    0x000135d2 movne r3, r0                                      |         r3 = r0;
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x000135d4 moveq r3, r6                                      |         r3 = r6;
                                                                 |     }
    0x000135d6 ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x000135d8 cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x000135da bge 0x135e6                                       |         
    0x000135dc mov r0, r3                                        |         r0 = r3;
    0x000135de str r3, [sp, 8]                                   |         var_8h = r3;
    0x000135e0 bl 0x11534                                        |         fcn_00011534 (r0);
    0x000135e4 ldr r3, [sp, 8]                                   |         r3 = var_8h;
                                                                 |     }
    0x000135e6 ldr.w r6, [fp, 0x10]                              |     r6 = *(arg_10h);
    0x000135ea mov r2, r5                                        |     r2 = r5;
    0x000135ec mov r1, sb                                        |     r1 = sb;
    0x000135ee mov r0, r7                                        |     r0 = r7;
    0x000135f0 blx r6                                            |     uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_3:
    0x000135f2 ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x000135f4 add r6, sp, 0x28                                  |     r6 += var_28h;
    0x000135f6 bl 0x25228                                        |     g_type_value_table_peek ();
    0x000135fa ldr.w sb, [r0, 0x18]                              |     sb = *((r0 + 0x18));
    0x000135fe movs r2, 0x40                                     |     r2 = 0x40;
    0x00013600 mov fp, r0                                        |     
    0x00013602 movs r1, 0                                        |     r1 = 0;
    0x00013604 mov r0, r6                                        |     r0 = r6;
    0x00013606 blx 0x9db8                                        |     g_string_append_printf ();
    0x0001360a ldrb.w r2, [sb]                                   |     r2 = *(sb);
    0x0001360e cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00013610 beq 0x136e4                                       |         goto label_8;
                                                                 |     }
    0x00013612 mov r3, sb                                        |     r3 = sb;
    0x00013614 mov r0, r6                                        |     r0 = r6;
    0x00013616 rsb.w ip, sb, 1                                   |     
                                                                 |     do {
    0x0001361a subs r2, 0x64                                     |         r2 -= 0x64;
    0x0001361c add.w r1, ip, r3                                  |         r1 = ip + r3;
    0x00013620 cmp r2, 0xd                                       |         
                                                                 |         if (r2 > 0xd) {
    0x00013622 bhi 0x1370e                                       |             goto label_9;
                                                                 |         }
                                                                 |         /* switch table (14 cases) at 0x13628 */
    0x00013624 tbb [pc, r2]                                      |         __asm ("tbb [0x0001362c]");
    0x00013636 ldr r2, [r4], 4                                   |         r2 = *(r4);
                                                                 |         r4 += 4;
    0x0001363a str r2, [r0]                                      |         *(r0) = r2;
                                                                 | label_2:
    0x0001363c ldrb r2, [r3, 1]!                                 |         r2 = *((r3 += 1));
    0x00013640 adds r0, 8                                        |         r0 += 8;
    0x00013642 cmp r2, 0                                         |         
    0x00013644 bne 0x1361a                                       |         
                                                                 |     } while (r2 != 0);
                                                                 | label_4:
    0x00013646 mov r2, r6                                        |     r2 = r6;
    0x00013648 ldr.w fp, [fp, 0x1c]                              |     fp = *(arg_1ch);
    0x0001364c movs r3, 0                                        |     r3 = 0;
    0x0001364e mov r0, r5                                        |     r0 = r5;
    0x00013650 blx fp                                            |     r0 = fp (r0, r2, r3);
    0x00013652 mov r6, r0                                        |     r6 = r0;
    0x00013654 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013656 bne 0x136e8                                       |         goto label_10;
                                                                 |     }
    0x00013658 mov r0, r5                                        |     r0 = r5;
    0x0001365a bl 0x26ad0                                        |     g_value_unset ();
    0x0001365e ldr fp, [r4], 4                                   |     fp = *(r4);
                                                                 |     r4 += 4;
    0x00013662 cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x00013666 bne.w 0x13552                                     |         goto label_0;
                                                                 |     }
    0x0001366a b 0x135a4                                         |     goto label_1;
    0x0001366c adds r4, 7                                        |     r4 += 7;
    0x0001366e bic r4, r4, 7                                     |     r4 = BIT_MASK (r4, 7);
    0x00013672 vldmia r4!, {d16}                                 |     __asm ("vldmia r4!, {d16}");
    0x00013676 vstr d16, [r0]                                    |     __asm ("vstr d16, [r0]");
    0x00013678 lsrs r0, r0, 0xc                                  |     r0 >>= 0xc;
    0x0001367a b 0x1363c                                         |     goto label_2;
    0x0001367c adds r4, 7                                        |     r4 += 7;
    0x0001367e bic r4, r4, 7                                     |     r4 = BIT_MASK (r4, 7);
    0x00013682 vldmia r4!, {d16}                                 |     __asm ("vldmia r4!, {d16}");
    0x00013686 vstr d16, [r0]                                    |     __asm ("vstr d16, [r0]");
    0x0001368a b 0x1363c                                         |     goto label_2;
                                                                 | label_5:
    0x0001368c ldr r3, [r7]                                      |     r3 = *(r7);
    0x0001368e ldr r0, [r3]                                      |     r0 = *(r3);
    0x00013690 bl 0x22b9c                                        |     g_type_name ();
    0x00013694 ldr r3, [pc, 0xb8]                                |     
    0x00013696 mov r4, r0                                        |     r4 = r0;
    0x00013698 ldr r2, [pc, 0xb8]                                |     
    0x0001369a movs r1, 0x10                                     |     r1 = 0x10;
    0x0001369c ldr r0, [pc, 0xb8]                                |     
    0x0001369e add r3, pc                                        |     
    0x000136a0 strd r4, fp, [sp]                                 |     __asm ("strd r4, fp, [sp]");
    0x000136a4 add r2, pc                                        |     r2 = 0x26dfc;
    0x000136a6 add.w r3, r3, 0x35c                               |     r3 = 0x2714e;
    0x000136aa add r0, pc                                        |     r0 = 0x26e06;
    0x000136ac blx 0x9e0c                                        |     g_mutex_lock ();
    0x000136b0 mov r0, r7                                        |     r0 = r7;
    0x000136b2 add sp, 0x6c                                      |     
    0x000136b4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x000136b8 b.w 0x11684                                       |     void (*0x11684)() ();
                                                                 | label_7:
    0x000136bc ldr r0, [r6, 0x10]                                |     r0 = *((r6 + 0x10));
    0x000136be bl 0x22b9c                                        |     g_type_name ();
    0x000136c2 ldr.w fp, [r6, 4]                                 |     fp = *((r6 + 4));
    0x000136c6 mov r3, r0                                        |     r3 = r0;
    0x000136c8 ldr r0, [r6, 0x10]                                |     r0 = *((r6 + 0x10));
    0x000136ca mov r6, r3                                        |     r6 = r3;
    0x000136cc bl 0x22b9c                                        |     g_type_name ();
    0x000136d0 mov r3, r6                                        |     r3 = r6;
    0x000136d2 str r0, [sp, 4]                                   |     var_4h = r0;
    0x000136d4 mov r2, sl                                        |     r2 = sl;
    0x000136d6 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x000136d8 movs r1, 0x10                                     |     r1 = 0x10;
    0x000136da str.w fp, [sp]                                    |     __asm ("str.w fp, [sp]");
    0x000136de blx 0x9e0c                                        |     g_mutex_lock ();
    0x000136e2 b 0x135f2                                         |     goto label_3;
                                                                 | label_8:
    0x000136e4 mov r1, r2                                        |     r1 = r2;
    0x000136e6 b 0x13646                                         |     goto label_4;
                                                                 | label_10:
    0x000136e8 ldr r3, [pc, 0x70]                                |     
    0x000136ea movs r1, 0x10                                     |     r1 = 0x10;
    0x000136ec str r0, [sp]                                      |     *(sp) = r0;
    0x000136ee ldr r2, [pc, 0x70]                                |     
    0x000136f0 ldr r0, [pc, 0x70]                                |     
    0x000136f2 add r3, pc                                        |     
    0x000136f4 add.w r3, r3, 0x37c                               |     r3 = 0x271ce;
    0x000136f8 add r2, pc                                        |     r2 = 0x26e5e;
    0x000136fa add r0, pc                                        |     r0 = 0x26e62;
    0x000136fc blx 0x9e0c                                        |     g_mutex_lock ();
    0x00013700 mov r0, r6                                        |     r0 = r6;
    0x00013702 blx 0x9ac8                                        |     fcn_00009ac8 ();
    0x00013706 mov r0, r5                                        |     r0 = r5;
    0x00013708 bl 0x26ad0                                        |     g_value_unset ();
    0x0001370c b 0x135a4                                         |     goto label_1;
                                                                 | label_9:
    0x0001370e ldr r3, [pc, 0x58]                                |     
    0x00013710 movs r4, 0                                        |     r4 = 0;
    0x00013712 ldr r1, [pc, 0x58]                                |     
    0x00013714 movw r2, 0xa1d                                    |     r2 = 0xa1d;
    0x00013718 ldr r0, [pc, 0x54]                                |     
    0x0001371a add r3, pc                                        |     
    0x0001371c str r4, [sp]                                      |     *(sp) = r4;
    0x0001371e add r1, pc                                        |     r1 = 0x26e90;
    0x00013720 add.w r3, r3, 0x37c                               |     r3 = 0x27204;
    0x00013724 add r0, pc                                        |     r0 = 0x26e98;
    0x00013726 blx 0x9bf0                                        |     g_array_new ();
    0x0001372a nop                                               |     
    0x0001372c stm r5!, {r1, r2, r5, r7}                         |     *(r5!) = r1;
                                                                 |     *((r5! + 4)) = r2;
                                                                 |     *((r5! + 8)) = r5;
                                                                 |     *((r5! + 12)) = r7;
    0x0001372e movs r1, r0                                       |     r1 = r0;
                                                                 |     if (r0 != 0) {
    0x00013730 cbnz r0, 0x13790                                  |         void (*0x13790)() ();
                                                                 |     }
    0x00013732 movs r1, r0                                       |     r1 = r0;
    0x00013734 str r7, [sp, 0x368]                               |     *(arg_368h) = r7;
    0x00013736 movs r1, r0                                       |     r1 = r0;
    0x00013738 ldr r7, [pc, 0x78]                                |     r7 = *(0x137b4);
    0x0001373a movs r3, r0                                       |     r3 = r0;
    0x0001373c pop {r2, r5, r7}                                  |     
    0x0001373e movs r1, r0                                       |     r1 = r0;
    0x00013740 str r7, [sp, 0x2c8]                               |     *(arg_2c8h) = r7;
    0x00013742 movs r1, r0                                       |     r1 = r0;
    0x00013744 stm r5!, {r1, r4, r5}                             |     *(r5!) = r1;
                                                                 |     *((r5! + 4)) = r4;
                                                                 |     *((r5! + 8)) = r5;
    0x00013746 movs r1, r0                                       |     r1 = r0;
    0x00013748 stm r1!, {r4, r5}                                 |     *(r1!) = r4;
                                                                 |     *((r1! + 4)) = r5;
    0x0001374a movs r1, r0                                       |     r1 = r0;
    0x0001374c str r7, [sp, 0x188]                               |     *(arg_188h) = r7;
    0x0001374e movs r1, r0                                       |     r1 = r0;
    0x00013750 stm r4!, {r1, r2, r5}                             |     *(r4!) = r1;
                                                                 |     *((r4! + 4)) = r2;
                                                                 |     *((r4! + 8)) = r5;
    0x00013752 movs r1, r0                                       |     r1 = r0;
    0x00013754 bkpt 0xe8                                         |     __asm ("bkpt 0xe8");
                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x1c8f8 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.g_signal_chain_from_overridden ()                    | void g_signal_chain_from_overridden (int16_t arg_0h, uint32_t arg1, uint32_t arg2) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     uint32_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0001c8f8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0001c8fc sub sp, 0x2c                                          |     
    0x0001c8fe strd r0, r1, [sp, 0x10]                               |     __asm ("strd r0, r1, [var_10h]");
    0x0001c902 cmp r0, 0                                             |     
                                                                     |     if (arg_0h == ) {
    0x0001c904 beq.w 0x1caac                                         |         goto label_5;
                                                                     |     }
    0x0001c908 bl 0x26b78                                            |     r0 = g_value_peek_pointer ();
    0x0001c90c mov r4, r0                                            |     r4 = r0;
    0x0001c90e bl 0x24e2c                                            |     r0 = g_type_check_instance ();
    0x0001c912 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0001c914 beq.w 0x1ca20                                         |         goto label_6;
                                                                     |     }
    0x0001c918 ldr r5, [pc, 0x2cc]                                   |     
    0x0001c91a add r5, pc                                            |     
    0x0001c91c mov r0, r5                                            |     r0 = r5;
    0x0001c91e blx 0x9e5c                                            |     fcn_00009e5c ();
    0x0001c922 ldr r5, [r5, 0x20]                                    |     r5 = *(0x39526);
                                                                     |     if (r5 != 0) {
    0x0001c924 cbnz r5, 0x1c930                                      |         goto label_7;
                                                                     |     }
    0x0001c926 b 0x1cb6e                                             |     goto label_8;
                                                                     |     do {
    0x0001c928 ldr r5, [r5]                                          |         r5 = *(r5);
    0x0001c92a cmp r5, 0                                             |         
                                                                     |         if (r5 == 0) {
    0x0001c92c beq.w 0x1cb6e                                         |             goto label_8;
                                                                     |         }
    0x0001c92e strh r7, [r3, 8]                                      |         *((r3 + 8)) = r7;
                                                                     | label_7:
    0x0001c930 ldr r3, [r5, 4]                                       |         r3 = *((r5 + 4));
    0x0001c932 cmp r4, r3                                            |         
    0x0001c934 bne 0x1c928                                           |         
                                                                     |     } while (r4 != r3);
    0x0001c936 ldr r2, [pc, 0x2b4]                                   |     
    0x0001c938 ldr r3, [r5, 8]                                       |     r3 = *((r5 + 8));
    0x0001c93a add r2, pc                                            |     r2 = 0x3952c;
    0x0001c93c ldr r1, [r2, 0x18]                                    |     r1 = *(0x39544);
    0x0001c93e cmp r3, r1                                            |     
                                                                     |     if (r3 >= r1) {
    0x0001c940 bhs 0x1ca3a                                           |         goto label_9;
                                                                     |     }
    0x0001c942 ldr r2, [r2, 0x1c]                                    |     r2 = *((r2 + 0x1c));
    0x0001c944 ldr.w r3, [r2, r3, lsl 2]                             |     offset_0 = r3 << 2;
                                                                     |     r3 = *((r2 + offset_0));
    0x0001c948 str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0001c94a cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0001c94c beq 0x1ca3a                                           |         goto label_9;
                                                                     |     }
    0x0001c94e ldr r0, [r5, 0x18]                                    |     r0 = *((r5 + 0x18));
    0x0001c950 cmp r0, 4                                             |     
                                                                     |     if (r0 == 4) {
    0x0001c952 beq.w 0x1cac6                                         |         goto label_10;
                                                                     |     }
    0x0001c956 ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0001c958 ldr r6, [r3, 0x18]                                    |     r6 = *((r3 + 0x18));
    0x0001c95a cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0001c95c beq.w 0x1cb50                                         |         goto label_11;
                                                                     |     }
    0x0001c960 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0001c962 cmp r3, 1                                             |     
                                                                     |     if (r3 != 1) {
    0x0001c964 bne 0x1ca58                                           |         goto label_12;
                                                                     |     }
    0x0001c966 ldr r3, [r6, 8]                                       |     r3 = *((r6 + 8));
    0x0001c968 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0001c96a cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0001c96c bne 0x1ca58                                           |         goto label_12;
                                                                     |     }
                                                                     | label_0:
    0x0001c96e ldr r4, [sp, 0xc]                                     |     r4 = var_ch;
    0x0001c970 ldr r0, [sp, 8]                                       |     r0 = var_8h;
    0x0001c972 ldr r3, [r4, 0xc]                                     |     r3 = *((r4 + 0xc));
    0x0001c974 ubfx r3, r3, 0xa, 8                                   |     r3 = (r3 >> 0xa) & ((1 << 8) - 1);
    0x0001c978 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0001c97a bl 0x231ac                                            |     g_type_parent ();
    0x0001c97e ldr r6, [r4, 0x18]                                    |     r6 = *((r4 + 0x18));
    0x0001c980 cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0001c982 beq.w 0x1cae0                                         |         goto label_2;
                                                                     |     }
    0x0001c986 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0001c988 cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x0001c98a bne 0x1c994                                           |         
    0x0001c98c ldr r3, [r6, 8]                                       |         r3 = *((r6 + 8));
    0x0001c98e add.w sb, r6, 8                                       |         sb = r6 + 8;
                                                                     |         if (r3 == 0) {
    0x0001c992 cbz r3, 0x1c9e6                                       |             goto label_3;
                                                                     |         }
                                                                     |     }
    0x0001c994 ldr r2, [pc, 0x258]                                   |     
    0x0001c996 str r0, [sp, 0x20]                                    |     var_20h = r0;
    0x0001c998 ldr.w sl, [r6]                                        |     sl = *(r6);
    0x0001c99c add r2, pc                                            |     r2 = 0x39590;
    0x0001c99e ldrd r8, r3, [r2, 0xc]                                |     __asm ("ldrd r8, r3, [r2, 0xc]");
    0x0001c9a2 cmp.w sl, 0                                           |     
                                                                     |     if (sl == 0) {
    0x0001c9a6 beq.w 0x1cb88                                         |         goto label_13;
                                                                     |     }
    0x0001c9aa add r7, sp, 0x20                                      |     r7 += var_20h;
    0x0001c9ac str r5, [sp, 0xc]                                     |     var_ch = r5;
    0x0001c9ae mov.w fp, 0                                           |     
    0x0001c9b0 lsrs r0, r0, 0xc                                      |     r0 >>= 0xc;
    0x0001c9b2 mov r5, sl                                            |     r5 = sl;
    0x0001c9b4 mov sl, r7                                            |     sl = r7;
    0x0001c9b6 mov r7, r3                                            |     r7 = r3;
    0x0001c9b8 b 0x1c9c8                                             |     
                                                                     |     while (r0 != 0) {
    0x0001c9ba ite ge                                                |         
                                                                     |         if (r0 < r0) {
    0x0001c9bc addge fp, r4, 1                                       |             
                                                                     |         }
                                                                     |         if (r0 < r0) {
    0x0001c9c0 mov r5, r4                                            |             r5 = r4;
                                                                     |         }
    0x0001c9c2 cmp r5, fp                                            |         
                                                                     |         if (r5 < fp) {
    0x0001c9c4 bls.w 0x1cb84                                         |             goto label_14;
                                                                     |         }
    0x0001c9c8 add.w r4, fp, r5                                      |         r4 = fp + r5;
    0x0001c9cc mov r0, sl                                            |         r0 = sl;
    0x0001c9ce lsrs r4, r4, 1                                        |         r4 >>= 1;
    0x0001c9d0 mla sb, r4, r8, r6                                    |         __asm ("mla sb, r4, r8, r6");
    0x0001c9d4 add.w sb, sb, 8                                       |         sb += 8;
    0x0001c9d8 mov r1, sb                                            |         r1 = sb;
    0x0001c9da blx r7                                                |         r0 = uint32_t (*r7)(uint32_t, uint32_t) (r0, r1);
    0x0001c9dc cmp r0, 0                                             |         
    0x0001c9de bne 0x1c9ba                                           |         
                                                                     |     }
    0x0001c9e0 ldr r5, [sp, 0xc]                                     |     r5 = var_ch;
    0x0001c9e2 ldr.w r3, [sb]                                        |     r3 = *(sb);
                                                                     | label_3:
    0x0001c9e6 ldr r2, [sp, 8]                                       |     r2 = var_8h;
    0x0001c9e8 cmp r2, r3                                            |     
                                                                     |     if (r2 == r3) {
    0x0001c9ea beq 0x1cae0                                           |         goto label_2;
                                                                     |     }
    0x0001c9ec ldr.w r6, [sb, 4]                                     |     r6 = *((sb + 4));
    0x0001c9f0 cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0001c9f2 beq 0x1cae0                                           |         goto label_2;
                                                                     |     }
    0x0001c9f4 ldr r4, [pc, 0x1fc]                                   |     
    0x0001c9f6 str r3, [r5, 0x18]                                    |     *((r5 + 0x18)) = r3;
    0x0001c9f8 add r4, pc                                            |     r4 = 0x395f0;
    0x0001c9fa mov r0, r4                                            |     r0 = r4;
    0x0001c9fc blx 0x9ad8                                            |     fcn_00009ad8 ();
    0x0001ca00 ldr r2, [sp, 0x1c]                                    |     r2 = var_1ch;
    0x0001ca02 mov r0, r6                                            |     r0 = r6;
    0x0001ca04 add.w r6, r5, 8                                       |     r6 = r5 + 8;
    0x0001ca08 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0001ca0a ldr r1, [sp, 0x14]                                    |     r1 = var_14h;
    0x0001ca0c adds r2, 1                                            |     r2++;
    0x0001ca0e str r6, [sp]                                          |     *(sp) = r6;
    0x0001ca10 bl 0xe400                                             |     g_closure_invoke ();
    0x0001ca14 mov r0, r4                                            |     r0 = r4;
    0x0001ca16 blx 0x9e5c                                            |     fcn_00009e5c ();
    0x0001ca1a ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0001ca1c str r3, [r5, 0x18]                                    |     *((r5 + 0x18)) = r3;
    0x0001ca1e b 0x1cae0                                             |     goto label_2;
                                                                     | label_6:
    0x0001ca20 ldr r1, [pc, 0x1d4]                                   |     
    0x0001ca22 ldr r2, [pc, 0x1d8]                                   |     
    0x0001ca24 ldr r0, [pc, 0x1d8]                                   |     
    0x0001ca26 add r1, pc                                            |     
    0x0001ca28 add r2, pc                                            |     r2 = 0x3962a;
    0x0001ca2a add.w r1, r1, 0x210                                   |     r1 = 0x39832;
    0x0001ca2e add r0, pc                                            |     r0 = 0x39632;
    0x0001ca30 add sp, 0x2c                                          |     
    0x0001ca32 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}            |     
    0x0001ca36 b.w 0x9c08                                            |     void (*0x9c08)() ();
                                                                     | label_9:
    0x0001ca3a ldr r3, [pc, 0x1c8]                                   |     
    0x0001ca3c mov.w r2, 0x870                                       |     r2 = 0x870;
    0x0001ca40 ldr r4, [pc, 0x1c4]                                   |     
    0x0001ca42 ldr r1, [pc, 0x1c8]                                   |     
    0x0001ca44 ldr r0, [pc, 0x1c8]                                   |     
    0x0001ca46 add r3, pc                                            |     
    0x0001ca48 add r4, pc                                            |     r4 = 0x39654;
    0x0001ca4a add.w r3, r3, 0x210                                   |     r3 = 0x39860;
    0x0001ca4e add r1, pc                                            |     r1 = 0x39660;
    0x0001ca50 str r4, [sp]                                          |     *(sp) = r4;
    0x0001ca52 add r0, pc                                            |     r0 = 0x39666;
    0x0001ca54 blx 0x9bf0                                            |     g_array_new ();
                                                                     | label_12:
    0x0001ca58 ldr r2, [pc, 0x1b8]                                   |     
    0x0001ca5a str r0, [sp, 0x20]                                    |     var_20h = r0;
    0x0001ca5c ldr.w fp, [r6]                                        |     fp = *(r6);
    0x0001ca60 add r2, pc                                            |     r2 = 0x39678;
    0x0001ca62 ldrd r8, r3, [r2, 0xc]                                |     __asm ("ldrd r8, r3, [r2, 0xc]");
    0x0001ca66 cmp.w fp, 0                                           |     
                                                                     |     if (fp == 0) {
    0x0001ca6a beq 0x1caf2                                           |         goto label_15;
                                                                     |     }
    0x0001ca6c mov.w sl, 0                                           |     sl = 0;
    0x0001ca70 add r7, sp, 0x20                                      |     r7 += var_20h;
    0x0001ca72 str r5, [sp, 8]                                       |     var_8h = r5;
    0x0001ca74 mov r5, fp                                            |     r5 = fp;
    0x0001ca76 mov fp, sl                                            |     
    0x0001ca78 mov sl, r7                                            |     sl = r7;
    0x0001ca7a mov r7, r3                                            |     r7 = r3;
    0x0001ca7c b 0x1ca8a                                             |     
                                                                     |     while (r0 != 0) {
    0x0001ca7e ite ge                                                |         
                                                                     |         if (fp < 0) {
    0x0001ca80 addge fp, r4, 1                                       |             
                                                                     |         }
                                                                     |         if (fp < 0) {
    0x0001ca84 mov r5, r4                                            |             r5 = r4;
                                                                     |         }
    0x0001ca86 cmp r5, fp                                            |         
                                                                     |         if (r5 < fp) {
    0x0001ca88 bls 0x1caee                                           |             goto label_16;
                                                                     |         }
    0x0001ca8a add.w r4, fp, r5                                      |         r4 = fp + r5;
    0x0001ca8e mov r0, sl                                            |         r0 = sl;
    0x0001ca90 lsrs r4, r4, 1                                        |         r4 >>= 1;
    0x0001ca92 mla sb, r4, r8, r6                                    |         __asm ("mla sb, r4, r8, r6");
    0x0001ca96 add.w sb, sb, 8                                       |         sb += 8;
    0x0001ca9a mov r1, sb                                            |         r1 = sb;
    0x0001ca9c blx r7                                                |         r0 = uint32_t (*r7)(uint32_t, uint32_t) (r0, r1);
    0x0001ca9e cmp r0, 0                                             |         
    0x0001caa0 bne 0x1ca7e                                           |         
                                                                     |     }
    0x0001caa2 ldr.w r3, [sb]                                        |     r3 = *(sb);
    0x0001caa6 ldr r5, [sp, 8]                                       |     r5 = var_8h;
    0x0001caa8 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0001caaa b 0x1c96e                                             |     goto label_0;
                                                                     | label_5:
    0x0001caac ldr r1, [pc, 0x168]                                   |     
    0x0001caae ldr r2, [pc, 0x16c]                                   |     
    0x0001cab0 ldr r0, [pc, 0x16c]                                   |     
    0x0001cab2 add r1, pc                                            |     
    0x0001cab4 add r2, pc                                            |     r2 = 0x396d6;
    0x0001cab6 add.w r1, r1, 0x210                                   |     r1 = 0x398de;
    0x0001caba add r0, pc                                            |     r0 = 0x396de;
    0x0001cabc add sp, 0x2c                                          |     
    0x0001cabe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}            |     
    0x0001cac2 b.w 0x9c08                                            |     void (*0x9c08)() ();
                                                                     | label_10:
    0x0001cac6 ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0001cac8 movs r1, 0x10                                         |     r1 = 0x10;
    0x0001caca ldr r2, [pc, 0x158]                                   |     
    0x0001cacc ldr r0, [pc, 0x158]                                   |     
    0x0001cace str r4, [sp, 4]                                       |     var_4h = r4;
    0x0001cad0 ldr r4, [r3]                                          |     r4 = *(r3);
    0x0001cad2 add r2, pc                                            |     r2 = 0x396fc;
    0x0001cad4 ldr r3, [pc, 0x154]                                   |     
    0x0001cad6 add r0, pc                                            |     r0 = 0x39702;
    0x0001cad8 str r4, [sp]                                          |     *(sp) = r4;
    0x0001cada add r3, pc                                            |     r3 = 0x3970a;
    0x0001cadc blx 0x9e0c                                            |     g_mutex_lock ();
                                                                     | label_2:
    0x0001cae0 ldr r0, [pc, 0x14c]                                   |     
    0x0001cae2 add r0, pc                                            |     r0 = 0x39716;
    0x0001cae4 add sp, 0x2c                                          |     
    0x0001cae6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}            |     
    0x0001caea b.w 0x9ad4                                            |     void (*0x9ad4)() ();
                                                                     | label_16:
    0x0001caee ldr r5, [sp, 8]                                       |     r5 = var_8h;
    0x0001caf0 ldr r0, [sp, 0x20]                                    |     r0 = var_20h;
                                                                     |     if (r0 == 0) {
                                                                     | label_15:
    0x0001caf2 cbz r0, 0x1cb50                                       |         goto label_11;
                                                                     |     }
    0x0001caf4 ldr r3, [pc, 0x13c]                                   |     
    0x0001caf6 add.w sb, sp, 0x20                                    |     sb += var_20h;
    0x0001cafa str r5, [sp, 0x18]                                    |     var_18h = r5;
    0x0001cafc add r3, pc                                            |     r3 = 0x39734;
    0x0001cafe str r3, [sp, 8]                                       |     var_8h = r3;
                                                                     | label_1:
    0x0001cb00 bl 0x231ac                                            |     g_type_parent ();
    0x0001cb04 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0001cb06 str r0, [sp, 0x20]                                    |     var_20h = r0;
    0x0001cb08 ldr.w r8, [r6]                                        |     r8 = *(r6);
    0x0001cb0c ldr r7, [r3, 0xc]                                     |     r7 = *((r3 + 0xc));
    0x0001cb0e ldr r5, [r3, 0x10]                                    |     r5 = *((r3 + 0x10));
    0x0001cb10 cmp.w r8, 0                                           |     
                                                                     |     if (r8 == 0) {
    0x0001cb14 beq 0x1cb4c                                           |         goto label_17;
                                                                     |     }
    0x0001cb16 mov.w sl, 0                                           |     sl = 0;
    0x0001cb1a b 0x1cb28                                             |     
                                                                     |     while (r0 != 0) {
    0x0001cb1c ite ge                                                |         
                                                                     |         if (r8 < 0) {
    0x0001cb1e addge sl, r4, 1                                       |             sl = r4 + 1;
                                                                     |         }
                                                                     |         if (r8 < 0) {
    0x0001cb22 mov r8, r4                                            |             r8 = r4;
                                                                     |         }
    0x0001cb24 cmp r8, sl                                            |         
                                                                     |         if (r8 < sl) {
    0x0001cb26 bls 0x1cb4a                                           |             goto label_18;
                                                                     |         }
    0x0001cb28 add.w r4, sl, r8                                      |         r4 = sl + r8;
    0x0001cb2c mov r0, sb                                            |         r0 = sb;
    0x0001cb2e lsrs r4, r4, 1                                        |         r4 >>= 1;
    0x0001cb30 mla fp, r4, r7, r6                                    |         __asm ("mla fp, r4, r7, r6");
    0x0001cb34 add.w fp, fp, 8                                       |         
    0x0001cb38 mov r1, fp                                            |         r1 = fp;
    0x0001cb3a blx r5                                                |         r0 = uint32_t (*r5)(uint32_t, uint32_t) (r0, r1);
    0x0001cb3c cmp r0, 0                                             |         
    0x0001cb3e bne 0x1cb1c                                           |         
                                                                     |     }
    0x0001cb40 ldr.w r3, [fp]                                        |     r3 = *(fp);
    0x0001cb44 ldr r5, [sp, 0x18]                                    |     r5 = var_18h;
    0x0001cb46 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0001cb48 b 0x1c96e                                             |     goto label_0;
                                                                     | label_18:
    0x0001cb4a ldr r0, [sp, 0x20]                                    |     r0 = var_20h;
                                                                     | label_17:
    0x0001cb4c cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0001cb4e bne 0x1cb00                                           |         goto label_1;
                                                                     |     }
                                                                     | label_11:
    0x0001cb50 ldr r3, [pc, 0xe4]                                    |     
    0x0001cb52 movw r2, 0x878                                        |     r2 = 0x878;
    0x0001cb56 ldr r4, [pc, 0xe4]                                    |     
    0x0001cb58 ldr r1, [pc, 0xe4]                                    |     
    0x0001cb5a ldr r0, [pc, 0xe8]                                    |     
    0x0001cb5c add r3, pc                                            |     
    0x0001cb5e add r4, pc                                            |     r4 = 0x397a0;
    0x0001cb60 add.w r3, r3, 0x210                                   |     r3 = 0x399a8;
    0x0001cb64 add r1, pc                                            |     r1 = 0x397a8;
    0x0001cb66 str r4, [sp]                                          |     *(sp) = r4;
    0x0001cb68 add r0, pc                                            |     r0 = 0x397b2;
    0x0001cb6a blx 0x9bf0                                            |     g_array_new ();
                                                                     | label_8:
    0x0001cb6e ldr r3, [pc, 0xd8]                                    |     
    0x0001cb70 movs r1, 0x10                                         |     r1 = 0x10;
    0x0001cb72 ldr r2, [pc, 0xd8]                                    |     
    0x0001cb74 ldr r0, [pc, 0xd8]                                    |     
    0x0001cb76 add r3, pc                                            |     r3 = 0x397c4;
    0x0001cb78 str r4, [sp]                                          |     *(sp) = r4;
    0x0001cb7a add r2, pc                                            |     r2 = 0x397cc;
    0x0001cb7c add r0, pc                                            |     r0 = 0x397d0;
    0x0001cb7e blx 0x9e0c                                            |     g_mutex_lock ();
    0x0001cb80 strd lr, r7, [r6, -0x2b4]                             |     __asm ("strd lr, r7, [r6, -0x2b4]");
                                                                     | label_14:
    0x0001cb84 ldr r5, [sp, 0xc]                                     |     r5 = var_ch;
    0x0001cb86 ldr r0, [sp, 0x20]                                    |     r0 = var_20h;
                                                                     | label_13:
    0x0001cb88 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0001cb8a beq 0x1cae0                                           |         goto label_2;
                                                                     |     }
    0x0001cb8c ldr r3, [pc, 0xc4]                                    |     
    0x0001cb8e add.w sl, sp, 0x20                                    |     sl += var_20h;
    0x0001cb92 str r5, [sp, 0x18]                                    |     var_18h = r5;
    0x0001cb94 add r3, pc                                            |     r3 = 0x397ec;
    0x0001cb96 str r3, [sp, 0xc]                                     |     var_ch = r3;
                                                                     | label_4:
    0x0001cb98 bl 0x231ac                                            |     g_type_parent ();
    0x0001cb9c ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0001cb9e str r0, [sp, 0x20]                                    |     var_20h = r0;
    0x0001cba0 ldr.w r8, [r6]                                        |     r8 = *(r6);
    0x0001cba4 ldr r7, [r3, 0xc]                                     |     r7 = *((r3 + 0xc));
    0x0001cba6 ldr r5, [r3, 0x10]                                    |     r5 = *((r3 + 0x10));
    0x0001cba8 cmp.w r8, 0                                           |     
                                                                     |     if (r8 == 0) {
    0x0001cbac beq 0x1cbe2                                           |         goto label_19;
                                                                     |     }
    0x0001cbae mov.w fp, 0                                           |     
    0x0001cbb2 b 0x1cbc0                                             |     
                                                                     |     while (r0 != 0) {
    0x0001cbb4 ite ge                                                |         
                                                                     |         if (r8 < 0) {
    0x0001cbb6 addge fp, r4, 1                                       |             
                                                                     |         }
                                                                     |         if (r8 < 0) {
    0x0001cbba mov r8, r4                                            |             r8 = r4;
                                                                     |         }
    0x0001cbbc cmp fp, r8                                            |         
                                                                     |         if (fp >= r8) {
    0x0001cbbe bhs 0x1cbe0                                           |             goto label_20;
                                                                     |         }
    0x0001cbc0 add.w r4, r8, fp                                      |         r4 = r8 + fp;
    0x0001cbc4 mov r0, sl                                            |         r0 = sl;
    0x0001cbc6 lsrs r4, r4, 1                                        |         r4 >>= 1;
    0x0001cbc8 mla sb, r4, r7, r6                                    |         __asm ("mla sb, r4, r7, r6");
    0x0001cbcc add.w sb, sb, 8                                       |         sb += 8;
    0x0001cbce lsrs r0, r1, 4                                        |         r0 = r1 >> 4;
    0x0001cbd0 mov r1, sb                                            |         r1 = sb;
    0x0001cbd2 blx r5                                                |         r0 = uint32_t (*r5)(uint32_t, uint32_t) (r0, r1);
    0x0001cbd4 cmp r0, 0                                             |         
    0x0001cbd6 bne 0x1cbb4                                           |         
                                                                     |     }
    0x0001cbd8 ldr r5, [sp, 0x18]                                    |     r5 = var_18h;
    0x0001cbda ldr.w r3, [sb]                                        |     r3 = *(sb);
    0x0001cbde b 0x1c9e6                                             |     goto label_3;
                                                                     | label_20:
    0x0001cbe0 ldr r0, [sp, 0x20]                                    |     r0 = var_20h;
                                                                     | label_19:
    0x0001cbe2 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0001cbe4 bne 0x1cb98                                           |         goto label_4;
                                                                     |     }
    0x0001cbe6 b 0x1cae0                                             |     goto label_2;
                                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x1cc58 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.g_signal_chain_from_overridden_handler ()        | void g_signal_chain_from_overridden_handler (int16_t arg_0h, int16_t arg_4h) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_20h;
                                                                 |     int32_t var_24h;
                                                                 |     int32_t var_28h;
                                                                 |     int32_t var_2ch;
                                                                 |     int32_t var_30h;
                                                                 |     int32_t var_34h;
                                                                 |     int32_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int32_t var_40h_2;
                                                                 |     int32_t var_48h;
                                                                 |     int32_t var_48h_2;
                                                                 |     int32_t var_50h;
                                                                 |     int32_t var_50h_2;
                                                                 |     int16_t var_58h;
                                                                 |     int16_t var_8h_3;
                                                                 |     int16_t var_0h_2;
                                                                 |     int32_t var_c0h;
                                                                 |     int16_t var_c4h;
    0x0001cc58 push {r0, r1, r2, r3}                             |     
    0x0001cc5a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0001cc5e sub sp, 0xa4                                      |     
    0x0001cc60 add r7, sp, 8                                     |     r7 += var_8h;
    0x0001cc62 ldr.w r0, [r7, 0xc0]                              |     r0 = var_c0h;
    0x0001cc66 bl 0x24e2c                                        |     r0 = g_type_check_instance ();
                                                                 |     if (r0 == 0) {
    0x0001cc6a cbnz r0, 0x1cc92                                  |         
    0x0001cc6c ldr.w r1, [pc, 0x61c]                             |         
    0x0001cc70 ldr.w r2, [pc, 0x61c]                             |         
    0x0001cc74 ldr.w r0, [pc, 0x61c]                             |         
    0x0001cc78 add r1, pc                                        |         
    0x0001cc7a add r2, pc                                        |         r2 = 0x39f0e;
    0x0001cc7c add.w r1, r1, 0x230                               |         r1 = 0x3a138;
    0x0001cc80 add r0, pc                                        |         r0 = 0x39f18;
    0x0001cc82 blx 0x9c0c                                        |         fcn_00009c0c ();
                                                                 | label_7:
    0x0001cc86 adds r7, 0x9c                                     |         r7 += 0x9c;
    0x0001cc88 mov sp, r7                                        |         
    0x0001cc8a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |         
    0x0001cc8e add sp, 0x10                                      |         
    0x0001cc90 bx lr                                             |         return;
                                                                 |     }
    0x0001cc92 ldr.w r4, [pc, 0x604]                             |     
    0x0001cc96 add r4, pc                                        |     r4 = 0x39f34;
    0x0001cc98 mov r0, r4                                        |     r0 = r4;
    0x0001cc9a blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001cc9e ldr r5, [r4, 0x20]                                |     r5 = *(0x39f54);
    0x0001cca0 ldr.w r2, [r7, 0xc0]                              |     r2 = var_c0h;
                                                                 |     if (r5 != 0) {
    0x0001cca4 cbnz r5, 0x1ccb0                                  |         goto label_13;
                                                                 |     }
    0x0001cca6 b 0x1d1cc                                         |     goto label_14;
                                                                 |     do {
    0x0001cca8 ldr r5, [r5]                                      |         r5 = *(r5);
    0x0001ccaa cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x0001ccac beq.w 0x1d1cc                                     |             goto label_14;
                                                                 |         }
                                                                 | label_13:
    0x0001ccb0 ldr r3, [r5, 4]                                   |         r3 = *((r5 + 4));
    0x0001ccb2 cmp r2, r3                                        |         
    0x0001ccb4 bne 0x1cca8                                       |         
                                                                 |     } while (r2 != r3);
    0x0001ccb6 ldr.w r2, [pc, 0x5e4]                             |     
    0x0001ccba ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x0001ccbc add r2, pc                                        |     r2 = 0x39f5e;
    0x0001ccbe ldr r1, [r2, 0x18]                                |     r1 = *(0x39f76);
    0x0001ccc0 cmp r3, r1                                        |     
                                                                 |     if (r3 >= r1) {
    0x0001ccc2 bhs.w 0x1cf00                                     |         goto label_15;
                                                                 |     }
    0x0001ccc6 ldr r2, [r2, 0x1c]                                |     r2 = *((r2 + 0x1c));
    0x0001ccc8 ldr.w r3, [r2, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     r3 = *((r2 + offset_0));
    0x0001cccc str r3, [r7, 0x24]                                |     var_24h = r3;
    0x0001ccce cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001ccd0 beq.w 0x1cf00                                     |         goto label_15;
                                                                 |     }
    0x0001ccd4 ldr r0, [r5, 0x18]                                |     r0 = *((r5 + 0x18));
    0x0001ccd6 cmp r0, 4                                         |     
                                                                 |     if (r0 == 4) {
    0x0001ccd8 beq.w 0x1ce6c                                     |         goto label_16;
                                                                 |     }
    0x0001ccdc ldr r3, [r7, 0x24]                                |     r3 = var_24h;
    0x0001ccde ldr r6, [r3, 0x18]                                |     r6 = *((r3 + 0x18));
    0x0001cce0 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0001cce2 beq.w 0x1d1ae                                     |         goto label_17;
                                                                 |     }
    0x0001cce6 ldr r3, [r6]                                      |     r3 = *(r6);
    0x0001cce8 cmp r3, 1                                         |     
                                                                 |     if (r3 != 1) {
    0x0001ccea bne.w 0x1ce9c                                     |         goto label_18;
                                                                 |     }
    0x0001ccee ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x0001ccf0 str r3, [r7, 0x28]                                |     var_28h = r3;
    0x0001ccf2 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0001ccf4 bne.w 0x1ce9c                                     |         goto label_18;
                                                                 |     }
                                                                 | label_0:
    0x0001ccf8 ldr r4, [r7, 0x24]                                |     r4 = var_24h;
    0x0001ccfa ldr r0, [r7, 0x28]                                |     r0 = var_28h;
    0x0001ccfc ldr r3, [r4, 0xc]                                 |     r3 = *((r4 + 0xc));
    0x0001ccfe ubfx r3, r3, 0xa, 8                               |     r3 = (r3 >> 0xa) & ((1 << 8) - 1);
    0x0001cd00 movs r3, 0x87                                     |     r3 = 0x87;
    0x0001cd02 str r3, [r7, 0x18]                                |     var_18h = r3;
    0x0001cd04 bl 0x231ac                                        |     g_type_parent ();
    0x0001cd08 ldr r6, [r4, 0x18]                                |     r6 = *((r4 + 0x18));
    0x0001cd0a cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0001cd0c beq.w 0x1ce90                                     |         goto label_4;
                                                                 |     }
    0x0001cd10 ldr r3, [r6]                                      |     r3 = *(r6);
    0x0001cd12 cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x0001cd14 bne 0x1cd20                                       |         
    0x0001cd16 ldr r3, [r6, 8]                                   |         r3 = *((r6 + 8));
    0x0001cd18 add.w fp, r6, 8                                   |         
    0x0001cd1c str r3, [r7, 0x20]                                |         var_20h = r3;
                                                                 |         if (r3 == 0) {
    0x0001cd1e cbz r3, 0x1cd82                                   |             goto label_9;
                                                                 |         }
                                                                 |     }
    0x0001cd20 ldr.w r2, [pc, 0x57c]                             |     
    0x0001cd24 str r0, [r7, 0x58]                                |     var_58h = r0;
    0x0001cd26 ldr.w sb, [r6]                                    |     sb = *(r6);
    0x0001cd2a add r2, pc                                        |     r2 = 0x39fce;
    0x0001cd2c ldr r3, [r2, 0xc]                                 |     r3 = *(0x39fda);
    0x0001cd2e str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0001cd30 ldr r3, [r2, 0x10]                                |     r3 = *(0x39fde);
    0x0001cd32 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0001cd36 beq.w 0x1d1ea                                     |         goto label_19;
                                                                 |     }
    0x0001cd3a add.w r4, r7, 0x58                                |     r4 += var_58h;
    0x0001cd3e mov.w sl, 0                                       |     sl = 0;
    0x0001cd42 str r5, [r7, 0x30]                                |     var_30h = r5;
    0x0001cd44 mov r5, r3                                        |     r5 = r3;
    0x0001cd46 mov r3, r4                                        |     r3 = r4;
    0x0001cd48 mov r4, sl                                        |     r4 = sl;
    0x0001cd4a mov sl, sb                                        |     sl = sb;
    0x0001cd4c mov sb, r3                                        |     sb = r3;
    0x0001cd4e b 0x1cd5e                                         |     
                                                                 |     while (r0 != 0) {
    0x0001cd50 ite ge                                            |         
                                                                 |         if (sb < 0) {
    0x0001cd52 addge r4, r8, 1                                   |             r4 = r8 + 1;
                                                                 |         }
                                                                 |         if (sb < 0) {
    0x0001cd56 mov sl, r8                                        |             sl = r8;
                                                                 |         }
    0x0001cd58 cmp sl, r4                                        |         
                                                                 |         if (sl < r4) {
    0x0001cd5a bls.w 0x1d1e6                                     |             goto label_20;
                                                                 |         }
    0x0001cd5e ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0001cd60 add.w r8, sl, r4                                  |         r8 = sl + r4;
    0x0001cd64 lsr.w r8, r8, 1                                   |         r8 >>= 1;
    0x0001cd68 mov r0, sb                                        |         r0 = sb;
    0x0001cd6a mla fp, r8, r3, r6                                |         __asm ("mla fp, r8, r3, r6");
    0x0001cd6e add.w fp, fp, 8                                   |         
    0x0001cd72 mov r1, fp                                        |         r1 = fp;
    0x0001cd74 blx r5                                            |         r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001cd76 cmp r0, 0                                         |         
    0x0001cd78 bne 0x1cd50                                       |         
                                                                 |     }
    0x0001cd7a ldr r5, [r7, 0x30]                                |     r5 = var_30h;
    0x0001cd7c ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x0001cd80 str r3, [r7, 0x20]                                |     var_20h = r3;
                                                                 | label_9:
    0x0001cd82 ldr r3, [r7, 0x28]                                |     r3 = var_28h;
    0x0001cd84 ldr r2, [r7, 0x20]                                |     r2 = var_20h;
    0x0001cd86 cmp r3, r2                                        |     
                                                                 |     if (r3 != r2) {
    0x0001cd88 beq.w 0x1ce90                                     |         
    0x0001cd8c ldr.w r3, [fp, 4]                                 |         r3 = *(arg_4h);
    0x0001cd90 str r3, [r7, 4]                                   |         var_4h_2 = r3;
    0x0001cd92 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0001cd94 beq 0x1ce90                                       |             goto label_4;
                                                                 |         }
    0x0001cd96 ldr r3, [r7, 0x18]                                |         r3 = var_18h;
    0x0001cd98 movs r1, 0                                        |         r1 = 0;
    0x0001cd9a ldr r4, [r7, 0x24]                                |         r4 = var_24h;
    0x0001cd9c adds r3, 1                                        |         r3++;
    0x0001cd9e mov r2, r3                                        |         r2 = r3;
    0x0001cda0 str r3, [r7, 0xc]                                 |         var_ch = r3;
    0x0001cda2 add.w r2, r2, r2, lsl 1                           |         r2 += (r2 << 1);
    0x0001cda6 add.w r3, r7, 0xc4                                |         r3 += var_c4h;
    0x0001cda8 lsls r4, r0, 0xf                                  |         r4 = r0 << 0xf;
    0x0001cdaa str r3, [r7, 0x3c]                                |         var_3ch = r3;
    0x0001cdac mov r3, sp                                        |         r3 = sp;
    0x0001cdae sub.w r3, r3, r2, lsl 3                           |         r3 -= (r2 << 3);
    0x0001cdb2 lsls r2, r2, 3                                    |         r2 <<= 3;
    0x0001cdb4 mov sp, r3                                        |         
    0x0001cdb6 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x0001cdb8 str r3, [r7, 0x10]                                |         var_10h = r3;
    0x0001cdba add r3, sp, 8                                     |         r3 += var_8h;
    0x0001cdbc mov r0, r3                                        |         r0 = r3;
    0x0001cdbe mov r6, r3                                        |         r6 = r3;
    0x0001cdc0 str r3, [r7, 0x1c]                                |         var_1ch = r3;
    0x0001cdc2 blx 0x9db8                                        |         g_string_append_printf ();
    0x0001cdc6 ldr r3, [r4, 0xc]                                 |         r3 = *((r4 + 0xc));
    0x0001cdc8 mov r2, r6                                        |         r2 = r6;
    0x0001cdca adds r2, 0x18                                     |         r2 += 0x18;
    0x0001cdcc str r2, [r7, 0x14]                                |         var_14h = r2;
    0x0001cdce tst.w r3, 0x3fc00                                 |         
                                                                 |         if ((r3 & 0x3fc00) == 0) {
    0x0001cdd2 beq.w 0x1cf80                                     |             goto label_21;
                                                                 |         }
    0x0001cdd6 ldr.w r3, [pc, 0x4cc]                             |         
    0x0001cdda add.w r4, r7, 0x58                                |         r4 += var_58h;
    0x0001cdde ldr.w r8, [r7, 0x14]                              |         r8 = var_14h;
    0x0001cde2 ldr.w sl, [r7, 0x24]                              |         sl = var_24h;
    0x0001cde6 add r3, pc                                        |         r3 = 0x3a090;
    0x0001cde8 str r5, [r7, 8]                                   |         var_8h_2 = r5;
    0x0001cdea str r3, [r7, 0x30]                                |         var_30h = r3;
    0x0001cdec ldr.w r3, [pc, 0x4b8]                             |         
    0x0001cdf0 add r3, pc                                        |         r3 = 0x3a09c;
    0x0001cdf2 str r3, [r7, 0x2c]                                |         var_2ch = r3;
    0x0001cdf4 movs r3, 0                                        |         r3 = 0;
    0x0001cdf6 mov sb, r3                                        |         sb = r3;
                                                                 | label_2:
    0x0001cdf8 ldr.w r3, [sl, 0x10]                              |         r3 = *((sl + 0x10));
    0x0001cdfc ldr r0, [r7, 0x30]                                |         r0 = var_30h;
    0x0001cdfe ldr.w r5, [r3, sb, lsl 2]                         |         offset_1 = sb << 2;
                                                                 |         r5 = *((r3 + offset_1));
    0x0001ce02 blx 0x9ad8                                        |         fcn_00009ad8 ();
    0x0001ce06 bic r3, r5, 1                                     |         r3 = BIT_MASK (r5, 1);
    0x0001ce0a mov r0, r3                                        |         r0 = r3;
    0x0001ce0c str r3, [r7, 0x34]                                |         var_34h = r3;
    0x0001ce0e bl 0x25228                                        |         g_type_value_table_peek ();
    0x0001ce12 movs r2, 0x40                                     |         r2 = 0x40;
    0x0001ce14 ldr.w fp, [r0, 0x10]                              |         fp = *((r0 + 0x10));
    0x0001ce18 mov r6, r0                                        |         r6 = r0;
    0x0001ce1a movs r1, 0                                        |         r1 = 0;
    0x0001ce1c mov r0, r4                                        |         r0 = r4;
    0x0001ce1e lsls r5, r5, 0x1b                                 |         r5 <<= 0x1b;
    0x0001ce20 blx 0x9db8                                        |         g_string_append_printf ();
    0x0001ce24 ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0001ce26 and r5, r5, 0x8000000                             |         r5 &= 0x8000000;
    0x0001ce28 str r0, [r0, 0x50]                                |         *((r0 + 0x50)) = r0;
    0x0001ce2a str.w r3, [r8]                                    |         __asm ("str.w r3, [r8]");
    0x0001ce2e ldrb.w r2, [fp]                                   |         r2 = *(fp);
    0x0001ce32 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x0001ce34 beq.w 0x1d0f8                                     |             goto label_22;
                                                                 |         }
    0x0001ce38 ldr r3, [r7, 0x3c]                                |         r3 = var_3ch;
    0x0001ce3a mov r0, fp                                        |         r0 = fp;
    0x0001ce3c mov ip, r4                                        |         
    0x0001ce3e rsb.w lr, fp, 1                                   |         lr = 1 - fp;
                                                                 | label_1:
    0x0001ce42 subs r2, 0x64                                     |         r2 -= 0x64;
    0x0001ce44 add.w r1, lr, r0                                  |         r1 = lr + r0;
    0x0001ce48 cmp r2, 0xd                                       |         
                                                                 |         if (r2 > 0xd) {
    0x0001ce4a bhi 0x1cf1e                                       |             goto label_23;
                                                                 |         }
                                                                 |         /* switch table (15 cases) at 0x1ce50 */
    0x0001ce4c tbh [pc, r2, lsl 1]                               |         __asm ("tbh [pc, r2, lsl 1]");
                                                                 | label_16:
    0x0001ce6c ldr.w r3, [r7, 0xc0]                              |         r3 = var_c0h;
    0x0001ce70 movs r1, 0x10                                     |         r1 = 16;
    0x0001ce72 ldr.w r2, [pc, 0x438]                             |         
    0x0001ce76 ldr.w r0, [pc, 0x438]                             |         
    0x0001ce7a str r3, [sp, 4]                                   |         var_4h = r3;
    0x0001ce7c ldr r3, [r7, 0x24]                                |         r3 = var_24h;
    0x0001ce7e add r2, pc                                        |         r2 = 0x3a130;
    0x0001ce80 add r0, pc                                        |         r0 = 0x3a136;
    0x0001ce82 ldr r4, [r3]                                      |         r4 = *(r3);
    0x0001ce84 ldr.w r3, [pc, 0x42c]                             |         
    0x0001ce88 str r4, [sp]                                      |         *(sp) = r4;
    0x0001ce8a add r3, pc                                        |         r3 = 0x3a142;
    0x0001ce8c blx 0x9e0c                                        |         g_mutex_lock ();
                                                                 |     }
                                                                 | label_4:
    0x0001ce90 ldr.w r0, [pc, 0x424]                             |     
    0x0001ce94 add r0, pc                                        |     r0 = 0x3a150;
    0x0001ce96 blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001ce98 mcr p6, 1, lr, c0, c4, 7                          |     __asm ("mcr p6, 1, lr, c0, c4, 7");
                                                                 | label_18:
    0x0001ce9c ldr.w r2, [pc, 0x41c]                             |     
    0x0001cea0 str r0, [r7, 0x58]                                |     var_58h = r0;
    0x0001cea2 ldr.w sb, [r6]                                    |     sb = *(r6);
    0x0001cea6 add r2, pc                                        |     r2 = 0x3a166;
    0x0001cea8 ldr r3, [r2, 0xc]                                 |     r3 = *(0x3a172);
    0x0001ceaa str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0001ceac ldr r3, [r2, 0x10]                                |     r3 = *(0x3a176);
    0x0001ceae cmp.w sb, 0                                       |     
    0x0001ceb0 lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 == r0) {
    0x0001ceb2 beq.w 0x1d14a                                     |         goto label_24;
                                                                 |     }
    0x0001ceb6 add.w r4, r7, 0x58                                |     r4 += var_58h;
    0x0001ceba mov.w fp, 0                                       |     
    0x0001cebe str r5, [r7, 0x30]                                |     var_30h = r5;
    0x0001cec0 mov r5, r3                                        |     r5 = r3;
    0x0001cec2 mov r3, r4                                        |     r3 = r4;
    0x0001cec4 mov r4, fp                                        |     r4 = fp;
    0x0001cec6 mov fp, sb                                        |     
    0x0001cec8 mov sb, r3                                        |     sb = r3;
    0x0001ceca b 0x1ceda                                         |     
                                                                 |     while (r0 != 0) {
    0x0001cecc ite ge                                            |         
                                                                 |         if (r0 < r0) {
    0x0001cece addge r4, r8, 1                                   |             r4 = r8 + 1;
                                                                 |         }
                                                                 |         if (r0 < r0) {
    0x0001ced2 mov fp, r8                                        |             
                                                                 |         }
    0x0001ced4 cmp fp, r4                                        |         
                                                                 |         if (fp < r4) {
    0x0001ced6 bls.w 0x1d146                                     |             goto label_25;
                                                                 |         }
    0x0001ceda ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0001cedc add.w r8, r4, fp                                  |         r8 = r4 + fp;
    0x0001cee0 lsr.w r8, r8, 1                                   |         r8 >>= 1;
    0x0001cee4 mov r0, sb                                        |         r0 = sb;
    0x0001cee6 mla sl, r8, r3, r6                                |         __asm ("mla sl, r8, r3, r6");
    0x0001ceea add.w sl, sl, 8                                   |         sl += 8;
    0x0001ceee mov r1, sl                                        |         r1 = sl;
    0x0001cef0 blx r5                                            |         r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001cef2 cmp r0, 0                                         |         
    0x0001cef4 bne 0x1cecc                                       |         
                                                                 |     }
    0x0001cef6 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x0001cefa ldr r5, [r7, 0x30]                                |     r5 = var_30h;
    0x0001cefc str r3, [r7, 0x28]                                |     var_28h = r3;
    0x0001cefe b 0x1ccf8                                         |     goto label_0;
                                                                 | label_15:
    0x0001cf00 ldr r3, [pc, 0x3bc]                               |     
    0x0001cf02 movw r2, 0x8b9                                    |     r2 = 0x8b9;
    0x0001cf06 ldr r4, [pc, 0x3bc]                               |     
    0x0001cf08 ldr r1, [pc, 0x3bc]                               |     
    0x0001cf0a ldr r0, [pc, 0x3c0]                               |     
    0x0001cf0c add r3, pc                                        |     
    0x0001cf0e add r4, pc                                        |     r4 = 0x3a1d8;
    0x0001cf10 add.w r3, r3, 0x230                               |     r3 = 0x3a400;
    0x0001cf14 add r1, pc                                        |     r1 = 0x3a1e0;
    0x0001cf16 str r4, [sp]                                      |     *(sp) = r4;
    0x0001cf18 add r0, pc                                        |     r0 = 0x3a1ea;
    0x0001cf1a blx 0x9bf0                                        |     g_array_new ();
                                                                 | label_23:
    0x0001cf1e ldr r3, [pc, 0x3b0]                               |     
    0x0001cf20 movs r4, 0                                        |     r4 = 0;
    0x0001cf22 ldr r1, [pc, 0x3b0]                               |     
    0x0001cf24 movw r2, 0x8e8                                    |     r2 = 0x8e8;
    0x0001cf28 ldr r0, [pc, 0x3ac]                               |     
    0x0001cf2a add r3, pc                                        |     
    0x0001cf2c str r4, [sp]                                      |     *(sp) = r4;
    0x0001cf2e add r1, pc                                        |     r1 = 0x3a208;
    0x0001cf30 add.w r3, r3, 0x230                               |     r3 = 0x3a430;
    0x0001cf34 add r0, pc                                        |     r0 = 0x3a210;
    0x0001cf36 blx 0x9bf0                                        |     g_array_new ();
    0x0001cf3a ldr r2, [r3], 4                                   |     r2 = *(r3);
                                                                 |     r3 += 4;
    0x0001cf3e str.w r2, [ip]                                    |     __asm ("str.w r2, [ip]");
                                                                 | label_3:
    0x0001cf42 ldrb r2, [r0, 1]!                                 |     r2 = *((r0 += 1));
    0x0001cf46 add.w ip, ip, 8                                   |     
    0x0001cf4a cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0001cf4c bne.w 0x1ce42                                     |         goto label_1;
                                                                 |     }
    0x0001cf50 str r3, [r7, 0x3c]                                |     var_3ch = r3;
    0x0001cf52 mov r2, r4                                        |     r2 = r4;
    0x0001cf54 ldr r6, [r6, 0x14]                                |     r6 = *((r6 + 0x14));
    0x0001cf56 mov r3, r5                                        |     r3 = r5;
    0x0001cf58 mov r0, r8                                        |     r0 = r8;
    0x0001cf5a blx r6                                            |     r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001cf5c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001cf5e bne.w 0x1d10a                                     |         goto label_26;
                                                                 |     }
                                                                 | label_6:
    0x0001cf62 ldr r0, [r7, 0x2c]                                |     r0 = var_2ch;
    0x0001cf64 add.w sb, sb, 1                                   |     sb++;
    0x0001cf68 blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001cf6a invalid                                           |     
    0x0001cf6e adds r0, 0xc                                      |     r0 += 0xc;
    0x0001cf70 add.w r8, r8, 0x18                                |     r8 += 0x18;
    0x0001cf74 ubfx r3, r3, 0xa, 8                               |     r3 = (r3 >> 0xa) & ((1 << 8) - 1);
    0x0001cf78 cmp r3, sb                                        |     
                                                                 |     if (r3 > sb) {
    0x0001cf7a bhi.w 0x1cdf8                                     |         goto label_2;
                                                                 |     }
    0x0001cf7e ldr r5, [r7, 8]                                   |     r5 = var_8h_2;
                                                                 | label_21:
    0x0001cf80 ldr r6, [pc, 0x358]                               |     
    0x0001cf82 movs r4, 0                                        |     r4 = 0;
    0x0001cf84 add.w r8, r5, 8                                   |     r8 = r5 + 8;
    0x0001cf88 add r6, pc                                        |     r6 = 0x3a268;
    0x0001cf8a mov r0, r6                                        |     r0 = r6;
    0x0001cf8c blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001cf90 ldr r3, [r7, 0x1c]                                |     r3 = var_1ch;
    0x0001cf92 ldr.w r1, [r7, 0xc0]                              |     r1 = var_c0h;
    0x0001cf96 mov r0, r3                                        |     r0 = r3;
    0x0001cf98 str r4, [r3]                                      |     *(r3) = r4;
    0x0001cf9a bl 0x26c00                                        |     g_value_init_from_instance ();
    0x0001cf9e mov r0, r6                                        |     r0 = r6;
    0x0001cfa0 blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001cfa4 ldr r3, [r7, 0x20]                                |     r3 = var_20h;
    0x0001cfa6 mov r0, r6                                        |     r0 = r6;
    0x0001cfa8 str r3, [r5, 0x18]                                |     *((r5 + 0x18)) = r3;
    0x0001cfaa blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001cfae ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001cfb0 cmp r3, 4                                         |     
                                                                 |     if (r3 == 4) {
    0x0001cfb2 beq.w 0x1d252                                     |         goto label_27;
                                                                 |     }
    0x0001cfb6 ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001cfb8 add.w r6, r7, 0x40                                |     r6 += var_40h;
    0x0001cfbc mov r0, r6                                        |     r0 = r6;
    0x0001cfbe strd r4, r4, [r7, 0x40]                           |     __asm ("strd r4, r4, [var_40h]");
    0x0001cfc2 strd r4, r4, [r7, 0x48]                           |     __asm ("strd r4, r4, [var_48h]");
    0x0001cfc6 bic r1, r3, 1                                     |     r1 = BIT_MASK (r3, 1);
    0x0001cfca strd r4, r4, [r7, 0x50]                           |     __asm ("strd r4, r4, [var_50h]");
    0x0001cfce bl 0x2698c                                        |     g_value_init ();
    0x0001cfd2 str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x0001cfd6 mov r1, r6                                        |     r1 = r6;
    0x0001cfd8 ldr r2, [r7, 0xc]                                 |     r2 = var_ch;
    0x0001cfda ldr r0, [r7, 4]                                   |     r0 = var_4h_2;
    0x0001cfdc ldr r3, [r7, 0x1c]                                |     r3 = var_1ch;
    0x0001cfde bl 0xe400                                         |     g_closure_invoke ();
    0x0001cfe2 ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001cfe4 ldr r0, [r7, 0x40]                                |     r0 = var_40h;
    0x0001cfe6 lsls r3, r3, 0x1b                                 |     r3 <<= 0x1b;
    0x0001cfe8 and sl, r3, 0x8000000                             |     sl = r3 & 0x8000000;
    0x0001cfec bl 0x25228                                        |     g_type_value_table_peek ();
    0x0001cff0 ldr.w r8, [r0, 0x18]                              |     r8 = *((r0 + 0x18));
    0x0001cff4 mov r1, r4                                        |     r1 = r4;
    0x0001cff6 add.w r4, r7, 0x58                                |     r4 += var_58h;
    0x0001cffa mov sb, r0                                        |     sb = r0;
    0x0001cffc movs r2, 0x40                                     |     r2 = 0x40;
    0x0001cffe mov r0, r4                                        |     r0 = r4;
    0x0001d000 blx 0x9db8                                        |     g_string_append_printf ();
    0x0001d004 ldrb.w r3, [r8]                                   |     r3 = *(r8);
    0x0001d008 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001d00a beq.w 0x1d288                                     |         goto label_28;
                                                                 |     }
    0x0001d00e ldr r2, [r7, 0x3c]                                |     r2 = var_3ch;
    0x0001d010 mov r0, r8                                        |     r0 = r8;
    0x0001d012 mov ip, r4                                        |     
    0x0001d014 rsb.w lr, r8, 1                                   |     lr = 1 - r8;
                                                                 |     do {
    0x0001d018 subs r3, 0x64                                     |         r3 -= 0x64;
    0x0001d01a add.w r1, lr, r0                                  |         r1 = lr + r0;
    0x0001d01e cmp r3, 0xd                                       |         
                                                                 |         if (r3 > 0xd) {
    0x0001d020 bhi.w 0x1d264                                     |             goto label_29;
                                                                 |         }
                                                                 |         /* switch table (15 cases) at 0x1d028 */
    0x0001d024 tbh [pc, r3, lsl 1]                               |         __asm ("tbh [pc, r3, lsl 1]");
    0x0001d044 adds r3, 7                                        |         r3 += 7;
    0x0001d046 bic r3, r3, 7                                     |         r3 = BIT_MASK (r3, 7);
    0x0001d04a vldmia r3!, {d16}                                 |         __asm ("vldmia r3!, {d16}");
    0x0001d04e vstr d16, [ip]                                    |         __asm ("vstr d16, [ip]");
    0x0001d052 b 0x1cf42                                         |         goto label_3;
    0x0001d054 adds r3, 7                                        |         r3 += 7;
    0x0001d056 bic r3, r3, 7                                     |         r3 = BIT_MASK (r3, 7);
    0x0001d05a vldmia r3!, {d16}                                 |         __asm ("vldmia r3!, {d16}");
    0x0001d05e vstr d16, [ip]                                    |         __asm ("vstr d16, [ip]");
    0x0001d062 b 0x1cf42                                         |         goto label_3;
    0x0001d064 ldr r3, [r2], 4                                   |         r3 = *(r2);
                                                                 |         r2 += 4;
    0x0001d068 str.w r3, [ip]                                    |         __asm ("str.w r3, [ip]");
                                                                 | label_5:
    0x0001d06c ldrb r3, [r0, 1]!                                 |         r3 = *((r0 += 1));
    0x0001d070 add.w ip, ip, 8                                   |         
    0x0001d074 cmp r3, 0                                         |         
    0x0001d076 bne 0x1d018                                       |         
                                                                 |     } while (r3 != 0);
    0x0001d078 str r2, [r7, 0x3c]                                |     var_3ch = r2;
                                                                 | label_12:
    0x0001d07a mov r2, r4                                        |     r2 = r4;
    0x0001d07c ldr.w r8, [sb, 0x1c]                              |     r8 = *((sb + 0x1c));
    0x0001d080 mov r3, sl                                        |     r3 = sl;
    0x0001d082 mov r0, r6                                        |     r0 = r6;
    0x0001d084 blx r8                                            |     r0 = uint32_t (*r8)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001d086 mov r4, r0                                        |     r4 = r0;
    0x0001d088 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001d08a beq.w 0x1d280                                     |         goto label_30;
                                                                 |     }
    0x0001d08e str r0, [sp]                                      |     *(sp) = r0;
    0x0001d090 movs r1, 0x10                                     |     r1 = 0x10;
    0x0001d092 ldr r3, [pc, 0x24c]                               |     
    0x0001d094 ldr r2, [pc, 0x24c]                               |     
    0x0001d096 ldr r0, [pc, 0x250]                               |     
    0x0001d098 add r3, pc                                        |     r3 = 0x3a37e;
    0x0001d09a add r2, pc                                        |     r2 = 0x3a382;
    0x0001d09c add r0, pc                                        |     r0 = 0x3a38a;
    0x0001d09e blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001d0a2 mov r0, r4                                        |     r0 = r4;
    0x0001d0a4 blx 0x9ac8                                        |     fcn_00009ac8 ();
    0x0001d0a6 invalid                                           |     
                                                                 | label_11:
    0x0001d0a8 ldr r3, [r7, 0x18]                                |     r3 = var_18h;
                                                                 |     if (r3 == 0) {
    0x0001d0aa cbz r3, 0x1d0c4                                   |         goto label_31;
                                                                 |     }
    0x0001d0ac ldr r6, [r7, 0x14]                                |     r6 = var_14h;
    0x0001d0ae movs r4, 0                                        |     r4 = 0;
    0x0001d0b0 ldr.w r8, [r7, 0x18]                              |     r8 = var_18h;
                                                                 |     do {
    0x0001d0b4 mov r0, r6                                        |         r0 = r6;
    0x0001d0b6 adds r4, 1                                        |         r4++;
    0x0001d0b8 bl 0x26ad0                                        |         g_value_unset ();
    0x0001d0bc cmp r8, r4                                        |         
    0x0001d0be add.w r6, r6, 0x18                                |         r6 += 0x18;
    0x0001d0c2 bne 0x1d0b4                                       |         
                                                                 |     } while (r8 != r4);
                                                                 | label_31:
    0x0001d0c4 ldr r0, [r7, 0x1c]                                |     r0 = var_1ch;
    0x0001d0c6 bl 0x26ad0                                        |     g_value_unset ();
    0x0001d0ca ldr r0, [pc, 0x220]                               |     
    0x0001d0cc add r0, pc                                        |     r0 = 0x3a3be;
    0x0001d0ce blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001d0d2 ldr r3, [r7, 0x28]                                |     r3 = var_28h;
    0x0001d0d4 str r3, [r5, 0x18]                                |     *((r5 + 0x18)) = r3;
    0x0001d0d6 b 0x1ce90                                         |     goto label_4;
    0x0001d0d8 adds r2, 7                                        |     r2 += 7;
    0x0001d0da bic r2, r2, 7                                     |     r2 = BIT_MASK (r2, 7);
    0x0001d0de vldmia r2!, {d16}                                 |     __asm ("vldmia r2!, {d16}");
    0x0001d0e2 vstr d16, [ip]                                    |     __asm ("vstr d16, [ip]");
    0x0001d0e6 b 0x1d06c                                         |     goto label_5;
    0x0001d0e8 adds r2, 7                                        |     r2 += 7;
    0x0001d0ea bic r2, r2, 7                                     |     r2 = BIT_MASK (r2, 7);
    0x0001d0ee vldmia r2!, {d16}                                 |     __asm ("vldmia r2!, {d16}");
    0x0001d0f2 vstr d16, [ip]                                    |     __asm ("vstr d16, [ip]");
    0x0001d0f6 b 0x1d06c                                         |     goto label_5;
                                                                 | label_22:
    0x0001d0f8 mov r1, r2                                        |     r1 = r2;
    0x0001d0fa ldr r6, [r6, 0x14]                                |     r6 = *((r6 + 0x14));
    0x0001d0fc mov r3, r5                                        |     r3 = r5;
    0x0001d0fe mov r2, r4                                        |     r2 = r4;
    0x0001d100 mov r0, r8                                        |     r0 = r8;
    0x0001d102 blx r6                                            |     r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0001d104 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001d106 beq.w 0x1cf62                                     |         goto label_6;
                                                                 |     }
                                                                 | label_26:
    0x0001d10a mov r6, r0                                        |     r6 = r0;
    0x0001d10c str r0, [sp]                                      |     *(sp) = r0;
    0x0001d10e ldr r3, [pc, 0x1e0]                               |     
    0x0001d110 movs r1, 0x10                                     |     r1 = 0x10;
    0x0001d112 ldr r2, [pc, 0x1e0]                               |     
    0x0001d114 ldr r0, [pc, 0x1e0]                               |     
    0x0001d116 add r3, pc                                        |     r3 = 0x3a40c;
    0x0001d118 add r2, pc                                        |     r2 = 0x3a412;
    0x0001d11a add r0, pc                                        |     r0 = 0x3a416;
    0x0001d11c blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001d120 mov r0, r6                                        |     r0 = r6;
    0x0001d122 blx 0x9ac8                                        |     fcn_00009ac8 ();
    0x0001d126 mov r3, sb                                        |     r3 = sb;
    0x0001d128 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001d12a beq.w 0x1cc86                                     |         goto label_7;
                                                                 |     }
    0x0001d12e ldr r5, [r7, 0x1c]                                |     r5 = var_1ch;
    0x0001d130 add.w r4, sb, sb, lsl 1                           |     r4 = sb + (sb << 1);
    0x0001d134 add.w r4, r5, r4, lsl 3                           |     r4 = r5 + (r4 << 3);
                                                                 |     do {
    0x0001d138 mov r0, r4                                        |         r0 = r4;
    0x0001d13a subs r4, 0x18                                     |         r4 -= 0x18;
    0x0001d13c bl 0x26ad0                                        |         g_value_unset ();
    0x0001d140 cmp r4, r5                                        |         
    0x0001d142 bne 0x1d138                                       |         
                                                                 |     } while (r4 != r5);
    0x0001d144 b 0x1cc86                                         |     goto label_7;
                                                                 | label_25:
    0x0001d146 ldr r5, [r7, 0x30]                                |     r5 = var_30h;
    0x0001d148 ldr r0, [r7, 0x58]                                |     r0 = var_58h;
                                                                 | label_24:
    0x0001d14a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001d14c beq 0x1d1ae                                       |         goto label_17;
                                                                 |     }
    0x0001d14e ldr r3, [pc, 0x1ac]                               |     
    0x0001d150 add.w sl, r7, 0x58                                |     sl += var_58h;
    0x0001d152 lsrs r0, r3, 9                                    |     r0 = r3 >> 9;
    0x0001d154 str r5, [r7, 0x2c]                                |     var_2ch = r5;
    0x0001d156 add r3, pc                                        |     r3 = 0x3a458;
    0x0001d158 str r3, [r7, 0x30]                                |     var_30h = r3;
                                                                 | label_8:
    0x0001d15a bl 0x231ac                                        |     g_type_parent ();
    0x0001d15e ldr r3, [r7, 0x30]                                |     r3 = var_30h;
    0x0001d160 str r0, [r7, 0x58]                                |     var_58h = r0;
    0x0001d162 ldr.w r8, [r6]                                    |     r8 = *(r6);
    0x0001d166 ldr r5, [r3, 0xc]                                 |     r5 = *((r3 + 0xc));
    0x0001d168 ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x0001d16a str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0001d16c cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0001d170 beq 0x1d1aa                                       |         goto label_32;
                                                                 |     }
    0x0001d172 mov.w sb, 0                                       |     sb = 0;
    0x0001d176 b 0x1d184                                         |     
                                                                 |     while (r0 != 0) {
    0x0001d178 ite ge                                            |         
                                                                 |         if (r8 < 0) {
    0x0001d17a addge sb, r4, 1                                   |             sb = r4 + 1;
                                                                 |         }
                                                                 |         if (r8 < 0) {
    0x0001d17e mov r8, r4                                        |             r8 = r4;
                                                                 |         }
    0x0001d180 cmp r8, sb                                        |         
                                                                 |         if (r8 < sb) {
    0x0001d182 bls 0x1d1a8                                       |             goto label_33;
                                                                 |         }
    0x0001d184 add.w r4, r8, sb                                  |         r4 = r8 + sb;
    0x0001d188 ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0001d18a lsrs r4, r4, 1                                    |         r4 >>= 1;
    0x0001d18c mov r0, sl                                        |         r0 = sl;
    0x0001d18e mla fp, r4, r5, r6                                |         __asm ("mla fp, r4, r5, r6");
    0x0001d192 add.w fp, fp, 8                                   |         
    0x0001d196 mov r1, fp                                        |         r1 = fp;
    0x0001d198 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001d19a cmp r0, 0                                         |         
    0x0001d19c bne 0x1d178                                       |         
                                                                 |     }
    0x0001d19e ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x0001d1a2 ldr r5, [r7, 0x2c]                                |     r5 = var_2ch;
    0x0001d1a4 str r3, [r7, 0x28]                                |     var_28h = r3;
    0x0001d1a6 b 0x1ccf8                                         |     goto label_0;
                                                                 | label_33:
    0x0001d1a8 ldr r0, [r7, 0x58]                                |     r0 = var_58h;
                                                                 | label_32:
    0x0001d1aa cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001d1ac bne 0x1d15a                                       |         goto label_8;
                                                                 |     }
                                                                 | label_17:
    0x0001d1ae ldr r3, [pc, 0x150]                               |     
    0x0001d1b0 movw r2, 0x8c1                                    |     r2 = 0x8c1;
    0x0001d1b2 lsls r1, r0, 0xb                                  |     r1 = r0 << 0xb;
    0x0001d1b4 ldr r4, [pc, 0x14c]                               |     
    0x0001d1b6 ldr r1, [pc, 0x150]                               |     
    0x0001d1b8 ldr r0, [pc, 0x150]                               |     
    0x0001d1ba add r3, pc                                        |     
    0x0001d1bc add r4, pc                                        |     r4 = 0x3a4c4;
    0x0001d1be add.w r3, r3, 0x230                               |     r3 = 0x3a6f0;
    0x0001d1c2 add r1, pc                                        |     r1 = 0x3a4d0;
    0x0001d1c4 str r4, [sp]                                      |     *(sp) = r4;
    0x0001d1c6 add r0, pc                                        |     r0 = 0x3a4d6;
    0x0001d1c8 blx 0x9bf0                                        |     g_array_new ();
                                                                 | label_14:
    0x0001d1cc ldr.w r4, [r7, 0xc0]                              |     r4 = var_c0h;
    0x0001d1d0 movs r1, 0x10                                     |     r1 = 0x10;
    0x0001d1d2 ldr r3, [pc, 0x13c]                               |     
    0x0001d1d4 ldr r2, [pc, 0x13c]                               |     
    0x0001d1d6 ldr r0, [pc, 0x140]                               |     
    0x0001d1d8 add r3, pc                                        |     r3 = 0x3a4ee;
    0x0001d1da str r4, [sp]                                      |     *(sp) = r4;
    0x0001d1dc add r2, pc                                        |     r2 = 0x3a4f4;
    0x0001d1de add r0, pc                                        |     r0 = 0x3a4fc;
    0x0001d1e0 blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001d1e4 b 0x1ce90                                         |     goto label_4;
                                                                 | label_20:
    0x0001d1e6 ldr r5, [r7, 0x30]                                |     r5 = var_30h;
    0x0001d1e8 ldr r0, [r7, 0x58]                                |     r0 = var_58h;
                                                                 | label_19:
    0x0001d1ea cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001d1ec beq.w 0x1ce90                                     |         goto label_4;
                                                                 |     }
    0x0001d1f0 ldr r3, [pc, 0x128]                               |     
    0x0001d1f2 add.w sl, r7, 0x58                                |     sl += var_58h;
    0x0001d1f6 str r5, [r7, 0x2c]                                |     var_2ch = r5;
    0x0001d1f8 add r3, pc                                        |     r3 = 0x3a518;
    0x0001d1fa str r3, [r7, 0x30]                                |     var_30h = r3;
                                                                 | label_10:
    0x0001d1fc bl 0x231ac                                        |     g_type_parent ();
    0x0001d200 ldr r3, [r7, 0x30]                                |     r3 = var_30h;
    0x0001d202 str r0, [r7, 0x58]                                |     var_58h = r0;
    0x0001d204 ldr.w r8, [r6]                                    |     r8 = *(r6);
    0x0001d208 ldr r5, [r3, 0xc]                                 |     r5 = *((r3 + 0xc));
    0x0001d20a ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x0001d20c str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0001d20e cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0001d212 beq 0x1d24c                                       |         goto label_34;
                                                                 |     }
    0x0001d214 mov.w sb, 0                                       |     sb = 0;
    0x0001d218 b 0x1d226                                         |     
                                                                 |     while (r0 != 0) {
    0x0001d21a ite ge                                            |         
                                                                 |         if (r8 < 0) {
    0x0001d21c addge sb, r4, 1                                   |             sb = r4 + 1;
                                                                 |         }
                                                                 |         if (r8 < 0) {
    0x0001d220 mov r8, r4                                        |             r8 = r4;
                                                                 |         }
    0x0001d222 cmp sb, r8                                        |         
                                                                 |         if (sb >= r8) {
    0x0001d224 bhs 0x1d24a                                       |             goto label_35;
                                                                 |         }
    0x0001d226 add.w r4, r8, sb                                  |         r4 = r8 + sb;
    0x0001d22a ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0001d22c lsrs r4, r4, 1                                    |         r4 >>= 1;
    0x0001d22e mov r0, sl                                        |         r0 = sl;
    0x0001d230 mla fp, r4, r5, r6                                |         __asm ("mla fp, r4, r5, r6");
    0x0001d234 add.w fp, fp, 8                                   |         
    0x0001d238 mov r1, fp                                        |         r1 = fp;
    0x0001d23a blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001d23c cmp r0, 0                                         |         
    0x0001d23e bne 0x1d21a                                       |         
                                                                 |     }
    0x0001d240 ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x0001d244 ldr r5, [r7, 0x2c]                                |     r5 = var_2ch;
    0x0001d246 str r3, [r7, 0x20]                                |     var_20h = r3;
    0x0001d248 b 0x1cd82                                         |     goto label_9;
                                                                 | label_35:
    0x0001d24a ldr r0, [r7, 0x58]                                |     r0 = var_58h;
                                                                 | label_34:
    0x0001d24c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001d24e bne 0x1d1fc                                       |         goto label_10;
                                                                 |     }
    0x0001d250 b 0x1ce90                                         |     goto label_4;
                                                                 | label_27:
    0x0001d252 str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x0001d256 mov r1, r4                                        |     r1 = r4;
    0x0001d258 ldr r2, [r7, 0xc]                                 |     r2 = var_ch;
    0x0001d25a ldr r0, [r7, 4]                                   |     r0 = var_4h_2;
    0x0001d25c ldr r3, [r7, 0x1c]                                |     r3 = var_1ch;
    0x0001d25e bl 0xe400                                         |     g_closure_invoke ();
    0x0001d262 b 0x1d0a8                                         |     goto label_11;
                                                                 | label_29:
    0x0001d264 ldr r3, [pc, 0xb8]                                |     
    0x0001d266 movs r4, 0                                        |     r4 = 0;
    0x0001d268 ldr r1, [pc, 0xb8]                                |     
    0x0001d26a movw r2, 0x91c                                    |     r2 = 0x91c;
    0x0001d26c asrs r4, r3, 8                                    |     r4 = r3 >> 8;
    0x0001d26e ldr r0, [pc, 0xb8]                                |     
    0x0001d270 add r3, pc                                        |     
    0x0001d272 str r4, [sp]                                      |     *(sp) = r4;
    0x0001d274 add r1, pc                                        |     r1 = 0x3a59c;
    0x0001d276 add.w r3, r3, 0x230                               |     r3 = 0x3a7c4;
    0x0001d27a add r0, pc                                        |     r0 = 0x3a5a8;
    0x0001d27c blx 0x9bf0                                        |     g_array_new ();
                                                                 | label_30:
    0x0001d280 mov r0, r6                                        |     r0 = r6;
    0x0001d282 bl 0x26ad0                                        |     g_value_unset ();
    0x0001d286 b 0x1d0a8                                         |     goto label_11;
                                                                 | label_28:
    0x0001d288 mov r1, r3                                        |     r1 = r3;
    0x0001d28a b 0x1d07a                                         |     goto label_12;
                                                                 |     do {
    0x000235e8 ldrb r3, [r4, 0xe]                                |         r3 = *((r4 + 0xe));
    0x000235ea lsls r3, r3, 0x1e                                 |         r3 <<= 0x1e;
                                                                 |         if (r3 >= r3) {
    0x000235ec bpl 0x23642                                       |             goto label_36;
                                                                 |         }
    0x000235ee ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
                                                                 |         if (r3 != 0) {
    0x000235f0 cbnz r3, 0x23642                                  |             goto label_36;
                                                                 |         }
    0x000235f2 ldr r0, [pc, 0x68]                                |         
    0x000235f4 str r1, [sp, 4]                                   |         var_4h = r1;
    0x000235f6 add r0, pc                                        |         r0 = 0x46c58;
    0x000235f8 blx 0x9c5c                                        |         g_slist_prepend ();
    0x000235fc ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
                                                                 |         if (r3 != 0) {
    0x000235fe cbz r3, 0x23624                                   |             
    0x00023600 ldr r3, [r4, 0x28]                                |             r3 = *((r4 + 0x28));
    0x00023602 ldr r1, [sp, 4]                                   |             r1 = var_4h;
    0x00023604 str r3, [r1]                                      |             *(r1) = r3;
    0x00023606 ldr r0, [r4, 0x18]                                |             r0 = *((r4 + 0x18));
    0x00023608 blx 0x9fd0                                        |             fcn_00009fd0 ();
    0x0002360c ldr r1, [sp, 4]                                   |             r1 = var_4h;
    0x0002360e str r0, [r1, 4]                                   |             *((r1 + 4)) = r0;
    0x00023610 ldr r3, [r4, 0x14]                                |             r3 = *((r4 + 0x14));
    0x00023612 ldrh r3, [r3, 4]                                  |             r3 = *((r3 + 4));
    0x00023614 str r3, [r1, 8]                                   |             *((r1 + 8)) = r3;
    0x00023616 ldrb r3, [r4, 0xe]                                |             r3 = *((r4 + 0xe));
    0x00023618 ands r3, r3, 4                                    |             r3 &= 4;
    0x0002361c itt ne                                            |             
                                                                 |             if (r3 == r3) {
    0x0002361e ldrne r3, [r4, 0x14]                              |                 r3 = *((r4 + 0x14));
                                                                 |             }
                                                                 |             if (r3 != r3) {
    0x00023620 ldrhne r3, [r3, 0x24]                             |                 __asm ("ldrhne r3, [r3, 0x24]");
                                                                 |             }
    0x00023622 str r3, [r1, 0xc]                                 |             *((r1 + 0xc)) = r3;
                                                                 |         }
    0x00023624 ldr r0, [pc, 0x38]                                |         
    0x00023626 add r0, pc                                        |         r0 = 0x46c8a;
    0x00023628 add sp, 8                                         |         
    0x0002362a pop.w {r4, lr}                                    |         
    0x0002362e b.w 0x9ddc                                        |         void (*0x9ddc)() ();
    0x00023636 movs r3, r0                                       |         r3 = r0;
    0x00023638 add r3, pc                                        |         r3 += pc;
    0x0002363a add r3, r0                                        |         r3 += r0;
    0x0002363c ldr r4, [r3, 0xc]                                 |         r4 = *((r3 + 0xc));
    0x0002363e cmp r4, 0                                         |         
    0x00023640 bne 0x235e8                                       |         
                                                                 |     } while (r4 != 0);
                                                                 | label_36:
    0x00023642 add sp, 8                                         |     
    0x00023644 pop {r4, pc}                                      |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x1cc58 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.g_signal_chain_from_overridden_handler ()        | void g_signal_chain_from_overridden_handler (int16_t arg_0h, int16_t arg_4h) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_20h;
                                                                 |     int32_t var_24h;
                                                                 |     int32_t var_28h;
                                                                 |     int32_t var_2ch;
                                                                 |     int32_t var_30h;
                                                                 |     int32_t var_34h;
                                                                 |     int32_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int32_t var_40h_2;
                                                                 |     int32_t var_48h;
                                                                 |     int32_t var_48h_2;
                                                                 |     int32_t var_50h;
                                                                 |     int32_t var_50h_2;
                                                                 |     int16_t var_58h;
                                                                 |     int16_t var_8h_3;
                                                                 |     int16_t var_0h_2;
                                                                 |     int32_t var_c0h;
                                                                 |     int16_t var_c4h;
    0x0001cc58 push {r0, r1, r2, r3}                             |     
    0x0001cc5a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0001cc5e sub sp, 0xa4                                      |     
    0x0001cc60 add r7, sp, 8                                     |     r7 += var_8h;
    0x0001cc62 ldr.w r0, [r7, 0xc0]                              |     r0 = var_c0h;
    0x0001cc66 bl 0x24e2c                                        |     r0 = g_type_check_instance ();
                                                                 |     if (r0 == 0) {
    0x0001cc6a cbnz r0, 0x1cc92                                  |         
    0x0001cc6c ldr.w r1, [pc, 0x61c]                             |         
    0x0001cc70 ldr.w r2, [pc, 0x61c]                             |         
    0x0001cc74 ldr.w r0, [pc, 0x61c]                             |         
    0x0001cc78 add r1, pc                                        |         
    0x0001cc7a add r2, pc                                        |         r2 = 0x39f0e;
    0x0001cc7c add.w r1, r1, 0x230                               |         r1 = 0x3a138;
    0x0001cc80 add r0, pc                                        |         r0 = 0x39f18;
    0x0001cc82 blx 0x9c0c                                        |         fcn_00009c0c ();
                                                                 | label_7:
    0x0001cc86 adds r7, 0x9c                                     |         r7 += 0x9c;
    0x0001cc88 mov sp, r7                                        |         
    0x0001cc8a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |         
    0x0001cc8e add sp, 0x10                                      |         
    0x0001cc90 bx lr                                             |         return;
                                                                 |     }
    0x0001cc92 ldr.w r4, [pc, 0x604]                             |     
    0x0001cc96 add r4, pc                                        |     r4 = 0x39f34;
    0x0001cc98 mov r0, r4                                        |     r0 = r4;
    0x0001cc9a blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001cc9e ldr r5, [r4, 0x20]                                |     r5 = *(0x39f54);
    0x0001cca0 ldr.w r2, [r7, 0xc0]                              |     r2 = var_c0h;
                                                                 |     if (r5 != 0) {
    0x0001cca4 cbnz r5, 0x1ccb0                                  |         goto label_13;
                                                                 |     }
    0x0001cca6 b 0x1d1cc                                         |     goto label_14;
                                                                 |     do {
    0x0001cca8 ldr r5, [r5]                                      |         r5 = *(r5);
    0x0001ccaa cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x0001ccac beq.w 0x1d1cc                                     |             goto label_14;
                                                                 |         }
                                                                 | label_13:
    0x0001ccb0 ldr r3, [r5, 4]                                   |         r3 = *((r5 + 4));
    0x0001ccb2 cmp r2, r3                                        |         
    0x0001ccb4 bne 0x1cca8                                       |         
                                                                 |     } while (r2 != r3);
    0x0001ccb6 ldr.w r2, [pc, 0x5e4]                             |     
    0x0001ccba ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x0001ccbc add r2, pc                                        |     r2 = 0x39f5e;
    0x0001ccbe ldr r1, [r2, 0x18]                                |     r1 = *(0x39f76);
    0x0001ccc0 cmp r3, r1                                        |     
                                                                 |     if (r3 >= r1) {
    0x0001ccc2 bhs.w 0x1cf00                                     |         goto label_15;
                                                                 |     }
    0x0001ccc6 ldr r2, [r2, 0x1c]                                |     r2 = *((r2 + 0x1c));
    0x0001ccc8 ldr.w r3, [r2, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     r3 = *((r2 + offset_0));
    0x0001cccc str r3, [r7, 0x24]                                |     var_24h = r3;
    0x0001ccce cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001ccd0 beq.w 0x1cf00                                     |         goto label_15;
                                                                 |     }
    0x0001ccd4 ldr r0, [r5, 0x18]                                |     r0 = *((r5 + 0x18));
    0x0001ccd6 cmp r0, 4                                         |     
                                                                 |     if (r0 == 4) {
    0x0001ccd8 beq.w 0x1ce6c                                     |         goto label_16;
                                                                 |     }
    0x0001ccdc ldr r3, [r7, 0x24]                                |     r3 = var_24h;
    0x0001ccde ldr r6, [r3, 0x18]                                |     r6 = *((r3 + 0x18));
    0x0001cce0 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0001cce2 beq.w 0x1d1ae                                     |         goto label_17;
                                                                 |     }
    0x0001cce6 ldr r3, [r6]                                      |     r3 = *(r6);
    0x0001cce8 cmp r3, 1                                         |     
                                                                 |     if (r3 != 1) {
    0x0001ccea bne.w 0x1ce9c                                     |         goto label_18;
                                                                 |     }
    0x0001ccee ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x0001ccf0 str r3, [r7, 0x28]                                |     var_28h = r3;
    0x0001ccf2 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0001ccf4 bne.w 0x1ce9c                                     |         goto label_18;
                                                                 |     }
                                                                 | label_0:
    0x0001ccf8 ldr r4, [r7, 0x24]                                |     r4 = var_24h;
    0x0001ccfa ldr r0, [r7, 0x28]                                |     r0 = var_28h;
    0x0001ccfc ldr r3, [r4, 0xc]                                 |     r3 = *((r4 + 0xc));
    0x0001ccfe ubfx r3, r3, 0xa, 8                               |     r3 = (r3 >> 0xa) & ((1 << 8) - 1);
    0x0001cd00 movs r3, 0x87                                     |     r3 = 0x87;
    0x0001cd02 str r3, [r7, 0x18]                                |     var_18h = r3;
    0x0001cd04 bl 0x231ac                                        |     g_type_parent ();
    0x0001cd08 ldr r6, [r4, 0x18]                                |     r6 = *((r4 + 0x18));
    0x0001cd0a cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0001cd0c beq.w 0x1ce90                                     |         goto label_4;
                                                                 |     }
    0x0001cd10 ldr r3, [r6]                                      |     r3 = *(r6);
    0x0001cd12 cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x0001cd14 bne 0x1cd20                                       |         
    0x0001cd16 ldr r3, [r6, 8]                                   |         r3 = *((r6 + 8));
    0x0001cd18 add.w fp, r6, 8                                   |         
    0x0001cd1c str r3, [r7, 0x20]                                |         var_20h = r3;
                                                                 |         if (r3 == 0) {
    0x0001cd1e cbz r3, 0x1cd82                                   |             goto label_9;
                                                                 |         }
                                                                 |     }
    0x0001cd20 ldr.w r2, [pc, 0x57c]                             |     
    0x0001cd24 str r0, [r7, 0x58]                                |     var_58h = r0;
    0x0001cd26 ldr.w sb, [r6]                                    |     sb = *(r6);
    0x0001cd2a add r2, pc                                        |     r2 = 0x39fce;
    0x0001cd2c ldr r3, [r2, 0xc]                                 |     r3 = *(0x39fda);
    0x0001cd2e str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0001cd30 ldr r3, [r2, 0x10]                                |     r3 = *(0x39fde);
    0x0001cd32 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0001cd36 beq.w 0x1d1ea                                     |         goto label_19;
                                                                 |     }
    0x0001cd3a add.w r4, r7, 0x58                                |     r4 += var_58h;
    0x0001cd3e mov.w sl, 0                                       |     sl = 0;
    0x0001cd42 str r5, [r7, 0x30]                                |     var_30h = r5;
    0x0001cd44 mov r5, r3                                        |     r5 = r3;
    0x0001cd46 mov r3, r4                                        |     r3 = r4;
    0x0001cd48 mov r4, sl                                        |     r4 = sl;
    0x0001cd4a mov sl, sb                                        |     sl = sb;
    0x0001cd4c mov sb, r3                                        |     sb = r3;
    0x0001cd4e b 0x1cd5e                                         |     
                                                                 |     while (r0 != 0) {
    0x0001cd50 ite ge                                            |         
                                                                 |         if (sb < 0) {
    0x0001cd52 addge r4, r8, 1                                   |             r4 = r8 + 1;
                                                                 |         }
                                                                 |         if (sb < 0) {
    0x0001cd56 mov sl, r8                                        |             sl = r8;
                                                                 |         }
    0x0001cd58 cmp sl, r4                                        |         
                                                                 |         if (sl < r4) {
    0x0001cd5a bls.w 0x1d1e6                                     |             goto label_20;
                                                                 |         }
    0x0001cd5e ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0001cd60 add.w r8, sl, r4                                  |         r8 = sl + r4;
    0x0001cd64 lsr.w r8, r8, 1                                   |         r8 >>= 1;
    0x0001cd68 mov r0, sb                                        |         r0 = sb;
    0x0001cd6a mla fp, r8, r3, r6                                |         __asm ("mla fp, r8, r3, r6");
    0x0001cd6e add.w fp, fp, 8                                   |         
    0x0001cd72 mov r1, fp                                        |         r1 = fp;
    0x0001cd74 blx r5                                            |         r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001cd76 cmp r0, 0                                         |         
    0x0001cd78 bne 0x1cd50                                       |         
                                                                 |     }
    0x0001cd7a ldr r5, [r7, 0x30]                                |     r5 = var_30h;
    0x0001cd7c ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x0001cd80 str r3, [r7, 0x20]                                |     var_20h = r3;
                                                                 | label_9:
    0x0001cd82 ldr r3, [r7, 0x28]                                |     r3 = var_28h;
    0x0001cd84 ldr r2, [r7, 0x20]                                |     r2 = var_20h;
    0x0001cd86 cmp r3, r2                                        |     
                                                                 |     if (r3 != r2) {
    0x0001cd88 beq.w 0x1ce90                                     |         
    0x0001cd8c ldr.w r3, [fp, 4]                                 |         r3 = *(arg_4h);
    0x0001cd90 str r3, [r7, 4]                                   |         var_4h_2 = r3;
    0x0001cd92 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0001cd94 beq 0x1ce90                                       |             goto label_4;
                                                                 |         }
    0x0001cd96 ldr r3, [r7, 0x18]                                |         r3 = var_18h;
    0x0001cd98 movs r1, 0                                        |         r1 = 0;
    0x0001cd9a ldr r4, [r7, 0x24]                                |         r4 = var_24h;
    0x0001cd9c adds r3, 1                                        |         r3++;
    0x0001cd9e mov r2, r3                                        |         r2 = r3;
    0x0001cda0 str r3, [r7, 0xc]                                 |         var_ch = r3;
    0x0001cda2 add.w r2, r2, r2, lsl 1                           |         r2 += (r2 << 1);
    0x0001cda6 add.w r3, r7, 0xc4                                |         r3 += var_c4h;
    0x0001cda8 lsls r4, r0, 0xf                                  |         r4 = r0 << 0xf;
    0x0001cdaa str r3, [r7, 0x3c]                                |         var_3ch = r3;
    0x0001cdac mov r3, sp                                        |         r3 = sp;
    0x0001cdae sub.w r3, r3, r2, lsl 3                           |         r3 -= (r2 << 3);
    0x0001cdb2 lsls r2, r2, 3                                    |         r2 <<= 3;
    0x0001cdb4 mov sp, r3                                        |         
    0x0001cdb6 ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
    0x0001cdb8 str r3, [r7, 0x10]                                |         var_10h = r3;
    0x0001cdba add r3, sp, 8                                     |         r3 += var_8h;
    0x0001cdbc mov r0, r3                                        |         r0 = r3;
    0x0001cdbe mov r6, r3                                        |         r6 = r3;
    0x0001cdc0 str r3, [r7, 0x1c]                                |         var_1ch = r3;
    0x0001cdc2 blx 0x9db8                                        |         g_string_append_printf ();
    0x0001cdc6 ldr r3, [r4, 0xc]                                 |         r3 = *((r4 + 0xc));
    0x0001cdc8 mov r2, r6                                        |         r2 = r6;
    0x0001cdca adds r2, 0x18                                     |         r2 += 0x18;
    0x0001cdcc str r2, [r7, 0x14]                                |         var_14h = r2;
    0x0001cdce tst.w r3, 0x3fc00                                 |         
                                                                 |         if ((r3 & 0x3fc00) == 0) {
    0x0001cdd2 beq.w 0x1cf80                                     |             goto label_21;
                                                                 |         }
    0x0001cdd6 ldr.w r3, [pc, 0x4cc]                             |         
    0x0001cdda add.w r4, r7, 0x58                                |         r4 += var_58h;
    0x0001cdde ldr.w r8, [r7, 0x14]                              |         r8 = var_14h;
    0x0001cde2 ldr.w sl, [r7, 0x24]                              |         sl = var_24h;
    0x0001cde6 add r3, pc                                        |         r3 = 0x3a090;
    0x0001cde8 str r5, [r7, 8]                                   |         var_8h_2 = r5;
    0x0001cdea str r3, [r7, 0x30]                                |         var_30h = r3;
    0x0001cdec ldr.w r3, [pc, 0x4b8]                             |         
    0x0001cdf0 add r3, pc                                        |         r3 = 0x3a09c;
    0x0001cdf2 str r3, [r7, 0x2c]                                |         var_2ch = r3;
    0x0001cdf4 movs r3, 0                                        |         r3 = 0;
    0x0001cdf6 mov sb, r3                                        |         sb = r3;
                                                                 | label_2:
    0x0001cdf8 ldr.w r3, [sl, 0x10]                              |         r3 = *((sl + 0x10));
    0x0001cdfc ldr r0, [r7, 0x30]                                |         r0 = var_30h;
    0x0001cdfe ldr.w r5, [r3, sb, lsl 2]                         |         offset_1 = sb << 2;
                                                                 |         r5 = *((r3 + offset_1));
    0x0001ce02 blx 0x9ad8                                        |         fcn_00009ad8 ();
    0x0001ce06 bic r3, r5, 1                                     |         r3 = BIT_MASK (r5, 1);
    0x0001ce0a mov r0, r3                                        |         r0 = r3;
    0x0001ce0c str r3, [r7, 0x34]                                |         var_34h = r3;
    0x0001ce0e bl 0x25228                                        |         g_type_value_table_peek ();
    0x0001ce12 movs r2, 0x40                                     |         r2 = 0x40;
    0x0001ce14 ldr.w fp, [r0, 0x10]                              |         fp = *((r0 + 0x10));
    0x0001ce18 mov r6, r0                                        |         r6 = r0;
    0x0001ce1a movs r1, 0                                        |         r1 = 0;
    0x0001ce1c mov r0, r4                                        |         r0 = r4;
    0x0001ce1e lsls r5, r5, 0x1b                                 |         r5 <<= 0x1b;
    0x0001ce20 blx 0x9db8                                        |         g_string_append_printf ();
    0x0001ce24 ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0001ce26 and r5, r5, 0x8000000                             |         r5 &= 0x8000000;
    0x0001ce28 str r0, [r0, 0x50]                                |         *((r0 + 0x50)) = r0;
    0x0001ce2a str.w r3, [r8]                                    |         __asm ("str.w r3, [r8]");
    0x0001ce2e ldrb.w r2, [fp]                                   |         r2 = *(fp);
    0x0001ce32 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x0001ce34 beq.w 0x1d0f8                                     |             goto label_22;
                                                                 |         }
    0x0001ce38 ldr r3, [r7, 0x3c]                                |         r3 = var_3ch;
    0x0001ce3a mov r0, fp                                        |         r0 = fp;
    0x0001ce3c mov ip, r4                                        |         
    0x0001ce3e rsb.w lr, fp, 1                                   |         lr = 1 - fp;
                                                                 | label_1:
    0x0001ce42 subs r2, 0x64                                     |         r2 -= 0x64;
    0x0001ce44 add.w r1, lr, r0                                  |         r1 = lr + r0;
    0x0001ce48 cmp r2, 0xd                                       |         
                                                                 |         if (r2 > 0xd) {
    0x0001ce4a bhi 0x1cf1e                                       |             goto label_23;
                                                                 |         }
                                                                 |         /* switch table (15 cases) at 0x1ce50 */
    0x0001ce4c tbh [pc, r2, lsl 1]                               |         __asm ("tbh [pc, r2, lsl 1]");
                                                                 | label_16:
    0x0001ce6c ldr.w r3, [r7, 0xc0]                              |         r3 = var_c0h;
    0x0001ce70 movs r1, 0x10                                     |         r1 = 16;
    0x0001ce72 ldr.w r2, [pc, 0x438]                             |         
    0x0001ce76 ldr.w r0, [pc, 0x438]                             |         
    0x0001ce7a str r3, [sp, 4]                                   |         var_4h = r3;
    0x0001ce7c ldr r3, [r7, 0x24]                                |         r3 = var_24h;
    0x0001ce7e add r2, pc                                        |         r2 = 0x3a130;
    0x0001ce80 add r0, pc                                        |         r0 = 0x3a136;
    0x0001ce82 ldr r4, [r3]                                      |         r4 = *(r3);
    0x0001ce84 ldr.w r3, [pc, 0x42c]                             |         
    0x0001ce88 str r4, [sp]                                      |         *(sp) = r4;
    0x0001ce8a add r3, pc                                        |         r3 = 0x3a142;
    0x0001ce8c blx 0x9e0c                                        |         g_mutex_lock ();
                                                                 |     }
                                                                 | label_4:
    0x0001ce90 ldr.w r0, [pc, 0x424]                             |     
    0x0001ce94 add r0, pc                                        |     r0 = 0x3a150;
    0x0001ce96 blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001ce98 mcr p6, 1, lr, c0, c4, 7                          |     __asm ("mcr p6, 1, lr, c0, c4, 7");
                                                                 | label_18:
    0x0001ce9c ldr.w r2, [pc, 0x41c]                             |     
    0x0001cea0 str r0, [r7, 0x58]                                |     var_58h = r0;
    0x0001cea2 ldr.w sb, [r6]                                    |     sb = *(r6);
    0x0001cea6 add r2, pc                                        |     r2 = 0x3a166;
    0x0001cea8 ldr r3, [r2, 0xc]                                 |     r3 = *(0x3a172);
    0x0001ceaa str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0001ceac ldr r3, [r2, 0x10]                                |     r3 = *(0x3a176);
    0x0001ceae cmp.w sb, 0                                       |     
    0x0001ceb0 lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 == r0) {
    0x0001ceb2 beq.w 0x1d14a                                     |         goto label_24;
                                                                 |     }
    0x0001ceb6 add.w r4, r7, 0x58                                |     r4 += var_58h;
    0x0001ceba mov.w fp, 0                                       |     
    0x0001cebe str r5, [r7, 0x30]                                |     var_30h = r5;
    0x0001cec0 mov r5, r3                                        |     r5 = r3;
    0x0001cec2 mov r3, r4                                        |     r3 = r4;
    0x0001cec4 mov r4, fp                                        |     r4 = fp;
    0x0001cec6 mov fp, sb                                        |     
    0x0001cec8 mov sb, r3                                        |     sb = r3;
    0x0001ceca b 0x1ceda                                         |     
                                                                 |     while (r0 != 0) {
    0x0001cecc ite ge                                            |         
                                                                 |         if (r0 < r0) {
    0x0001cece addge r4, r8, 1                                   |             r4 = r8 + 1;
                                                                 |         }
                                                                 |         if (r0 < r0) {
    0x0001ced2 mov fp, r8                                        |             
                                                                 |         }
    0x0001ced4 cmp fp, r4                                        |         
                                                                 |         if (fp < r4) {
    0x0001ced6 bls.w 0x1d146                                     |             goto label_25;
                                                                 |         }
    0x0001ceda ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0001cedc add.w r8, r4, fp                                  |         r8 = r4 + fp;
    0x0001cee0 lsr.w r8, r8, 1                                   |         r8 >>= 1;
    0x0001cee4 mov r0, sb                                        |         r0 = sb;
    0x0001cee6 mla sl, r8, r3, r6                                |         __asm ("mla sl, r8, r3, r6");
    0x0001ceea add.w sl, sl, 8                                   |         sl += 8;
    0x0001ceee mov r1, sl                                        |         r1 = sl;
    0x0001cef0 blx r5                                            |         r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001cef2 cmp r0, 0                                         |         
    0x0001cef4 bne 0x1cecc                                       |         
                                                                 |     }
    0x0001cef6 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x0001cefa ldr r5, [r7, 0x30]                                |     r5 = var_30h;
    0x0001cefc str r3, [r7, 0x28]                                |     var_28h = r3;
    0x0001cefe b 0x1ccf8                                         |     goto label_0;
                                                                 | label_15:
    0x0001cf00 ldr r3, [pc, 0x3bc]                               |     
    0x0001cf02 movw r2, 0x8b9                                    |     r2 = 0x8b9;
    0x0001cf06 ldr r4, [pc, 0x3bc]                               |     
    0x0001cf08 ldr r1, [pc, 0x3bc]                               |     
    0x0001cf0a ldr r0, [pc, 0x3c0]                               |     
    0x0001cf0c add r3, pc                                        |     
    0x0001cf0e add r4, pc                                        |     r4 = 0x3a1d8;
    0x0001cf10 add.w r3, r3, 0x230                               |     r3 = 0x3a400;
    0x0001cf14 add r1, pc                                        |     r1 = 0x3a1e0;
    0x0001cf16 str r4, [sp]                                      |     *(sp) = r4;
    0x0001cf18 add r0, pc                                        |     r0 = 0x3a1ea;
    0x0001cf1a blx 0x9bf0                                        |     g_array_new ();
                                                                 | label_23:
    0x0001cf1e ldr r3, [pc, 0x3b0]                               |     
    0x0001cf20 movs r4, 0                                        |     r4 = 0;
    0x0001cf22 ldr r1, [pc, 0x3b0]                               |     
    0x0001cf24 movw r2, 0x8e8                                    |     r2 = 0x8e8;
    0x0001cf28 ldr r0, [pc, 0x3ac]                               |     
    0x0001cf2a add r3, pc                                        |     
    0x0001cf2c str r4, [sp]                                      |     *(sp) = r4;
    0x0001cf2e add r1, pc                                        |     r1 = 0x3a208;
    0x0001cf30 add.w r3, r3, 0x230                               |     r3 = 0x3a430;
    0x0001cf34 add r0, pc                                        |     r0 = 0x3a210;
    0x0001cf36 blx 0x9bf0                                        |     g_array_new ();
    0x0001cf3a ldr r2, [r3], 4                                   |     r2 = *(r3);
                                                                 |     r3 += 4;
    0x0001cf3e str.w r2, [ip]                                    |     __asm ("str.w r2, [ip]");
                                                                 | label_3:
    0x0001cf42 ldrb r2, [r0, 1]!                                 |     r2 = *((r0 += 1));
    0x0001cf46 add.w ip, ip, 8                                   |     
    0x0001cf4a cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0001cf4c bne.w 0x1ce42                                     |         goto label_1;
                                                                 |     }
    0x0001cf50 str r3, [r7, 0x3c]                                |     var_3ch = r3;
    0x0001cf52 mov r2, r4                                        |     r2 = r4;
    0x0001cf54 ldr r6, [r6, 0x14]                                |     r6 = *((r6 + 0x14));
    0x0001cf56 mov r3, r5                                        |     r3 = r5;
    0x0001cf58 mov r0, r8                                        |     r0 = r8;
    0x0001cf5a blx r6                                            |     r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001cf5c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001cf5e bne.w 0x1d10a                                     |         goto label_26;
                                                                 |     }
                                                                 | label_6:
    0x0001cf62 ldr r0, [r7, 0x2c]                                |     r0 = var_2ch;
    0x0001cf64 add.w sb, sb, 1                                   |     sb++;
    0x0001cf68 blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001cf6a invalid                                           |     
    0x0001cf6e adds r0, 0xc                                      |     r0 += 0xc;
    0x0001cf70 add.w r8, r8, 0x18                                |     r8 += 0x18;
    0x0001cf74 ubfx r3, r3, 0xa, 8                               |     r3 = (r3 >> 0xa) & ((1 << 8) - 1);
    0x0001cf78 cmp r3, sb                                        |     
                                                                 |     if (r3 > sb) {
    0x0001cf7a bhi.w 0x1cdf8                                     |         goto label_2;
                                                                 |     }
    0x0001cf7e ldr r5, [r7, 8]                                   |     r5 = var_8h_2;
                                                                 | label_21:
    0x0001cf80 ldr r6, [pc, 0x358]                               |     
    0x0001cf82 movs r4, 0                                        |     r4 = 0;
    0x0001cf84 add.w r8, r5, 8                                   |     r8 = r5 + 8;
    0x0001cf88 add r6, pc                                        |     r6 = 0x3a268;
    0x0001cf8a mov r0, r6                                        |     r0 = r6;
    0x0001cf8c blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001cf90 ldr r3, [r7, 0x1c]                                |     r3 = var_1ch;
    0x0001cf92 ldr.w r1, [r7, 0xc0]                              |     r1 = var_c0h;
    0x0001cf96 mov r0, r3                                        |     r0 = r3;
    0x0001cf98 str r4, [r3]                                      |     *(r3) = r4;
    0x0001cf9a bl 0x26c00                                        |     g_value_init_from_instance ();
    0x0001cf9e mov r0, r6                                        |     r0 = r6;
    0x0001cfa0 blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001cfa4 ldr r3, [r7, 0x20]                                |     r3 = var_20h;
    0x0001cfa6 mov r0, r6                                        |     r0 = r6;
    0x0001cfa8 str r3, [r5, 0x18]                                |     *((r5 + 0x18)) = r3;
    0x0001cfaa blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001cfae ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001cfb0 cmp r3, 4                                         |     
                                                                 |     if (r3 == 4) {
    0x0001cfb2 beq.w 0x1d252                                     |         goto label_27;
                                                                 |     }
    0x0001cfb6 ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001cfb8 add.w r6, r7, 0x40                                |     r6 += var_40h;
    0x0001cfbc mov r0, r6                                        |     r0 = r6;
    0x0001cfbe strd r4, r4, [r7, 0x40]                           |     __asm ("strd r4, r4, [var_40h]");
    0x0001cfc2 strd r4, r4, [r7, 0x48]                           |     __asm ("strd r4, r4, [var_48h]");
    0x0001cfc6 bic r1, r3, 1                                     |     r1 = BIT_MASK (r3, 1);
    0x0001cfca strd r4, r4, [r7, 0x50]                           |     __asm ("strd r4, r4, [var_50h]");
    0x0001cfce bl 0x2698c                                        |     g_value_init ();
    0x0001cfd2 str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x0001cfd6 mov r1, r6                                        |     r1 = r6;
    0x0001cfd8 ldr r2, [r7, 0xc]                                 |     r2 = var_ch;
    0x0001cfda ldr r0, [r7, 4]                                   |     r0 = var_4h_2;
    0x0001cfdc ldr r3, [r7, 0x1c]                                |     r3 = var_1ch;
    0x0001cfde bl 0xe400                                         |     g_closure_invoke ();
    0x0001cfe2 ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001cfe4 ldr r0, [r7, 0x40]                                |     r0 = var_40h;
    0x0001cfe6 lsls r3, r3, 0x1b                                 |     r3 <<= 0x1b;
    0x0001cfe8 and sl, r3, 0x8000000                             |     sl = r3 & 0x8000000;
    0x0001cfec bl 0x25228                                        |     g_type_value_table_peek ();
    0x0001cff0 ldr.w r8, [r0, 0x18]                              |     r8 = *((r0 + 0x18));
    0x0001cff4 mov r1, r4                                        |     r1 = r4;
    0x0001cff6 add.w r4, r7, 0x58                                |     r4 += var_58h;
    0x0001cffa mov sb, r0                                        |     sb = r0;
    0x0001cffc movs r2, 0x40                                     |     r2 = 0x40;
    0x0001cffe mov r0, r4                                        |     r0 = r4;
    0x0001d000 blx 0x9db8                                        |     g_string_append_printf ();
    0x0001d004 ldrb.w r3, [r8]                                   |     r3 = *(r8);
    0x0001d008 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001d00a beq.w 0x1d288                                     |         goto label_28;
                                                                 |     }
    0x0001d00e ldr r2, [r7, 0x3c]                                |     r2 = var_3ch;
    0x0001d010 mov r0, r8                                        |     r0 = r8;
    0x0001d012 mov ip, r4                                        |     
    0x0001d014 rsb.w lr, r8, 1                                   |     lr = 1 - r8;
                                                                 |     do {
    0x0001d018 subs r3, 0x64                                     |         r3 -= 0x64;
    0x0001d01a add.w r1, lr, r0                                  |         r1 = lr + r0;
    0x0001d01e cmp r3, 0xd                                       |         
                                                                 |         if (r3 > 0xd) {
    0x0001d020 bhi.w 0x1d264                                     |             goto label_29;
                                                                 |         }
                                                                 |         /* switch table (15 cases) at 0x1d028 */
    0x0001d024 tbh [pc, r3, lsl 1]                               |         __asm ("tbh [pc, r3, lsl 1]");
    0x0001d044 adds r3, 7                                        |         r3 += 7;
    0x0001d046 bic r3, r3, 7                                     |         r3 = BIT_MASK (r3, 7);
    0x0001d04a vldmia r3!, {d16}                                 |         __asm ("vldmia r3!, {d16}");
    0x0001d04e vstr d16, [ip]                                    |         __asm ("vstr d16, [ip]");
    0x0001d052 b 0x1cf42                                         |         goto label_3;
    0x0001d054 adds r3, 7                                        |         r3 += 7;
    0x0001d056 bic r3, r3, 7                                     |         r3 = BIT_MASK (r3, 7);
    0x0001d05a vldmia r3!, {d16}                                 |         __asm ("vldmia r3!, {d16}");
    0x0001d05e vstr d16, [ip]                                    |         __asm ("vstr d16, [ip]");
    0x0001d062 b 0x1cf42                                         |         goto label_3;
    0x0001d064 ldr r3, [r2], 4                                   |         r3 = *(r2);
                                                                 |         r2 += 4;
    0x0001d068 str.w r3, [ip]                                    |         __asm ("str.w r3, [ip]");
                                                                 | label_5:
    0x0001d06c ldrb r3, [r0, 1]!                                 |         r3 = *((r0 += 1));
    0x0001d070 add.w ip, ip, 8                                   |         
    0x0001d074 cmp r3, 0                                         |         
    0x0001d076 bne 0x1d018                                       |         
                                                                 |     } while (r3 != 0);
    0x0001d078 str r2, [r7, 0x3c]                                |     var_3ch = r2;
                                                                 | label_12:
    0x0001d07a mov r2, r4                                        |     r2 = r4;
    0x0001d07c ldr.w r8, [sb, 0x1c]                              |     r8 = *((sb + 0x1c));
    0x0001d080 mov r3, sl                                        |     r3 = sl;
    0x0001d082 mov r0, r6                                        |     r0 = r6;
    0x0001d084 blx r8                                            |     r0 = uint32_t (*r8)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001d086 mov r4, r0                                        |     r4 = r0;
    0x0001d088 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001d08a beq.w 0x1d280                                     |         goto label_30;
                                                                 |     }
    0x0001d08e str r0, [sp]                                      |     *(sp) = r0;
    0x0001d090 movs r1, 0x10                                     |     r1 = 0x10;
    0x0001d092 ldr r3, [pc, 0x24c]                               |     
    0x0001d094 ldr r2, [pc, 0x24c]                               |     
    0x0001d096 ldr r0, [pc, 0x250]                               |     
    0x0001d098 add r3, pc                                        |     r3 = 0x3a37e;
    0x0001d09a add r2, pc                                        |     r2 = 0x3a382;
    0x0001d09c add r0, pc                                        |     r0 = 0x3a38a;
    0x0001d09e blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001d0a2 mov r0, r4                                        |     r0 = r4;
    0x0001d0a4 blx 0x9ac8                                        |     fcn_00009ac8 ();
    0x0001d0a6 invalid                                           |     
                                                                 | label_11:
    0x0001d0a8 ldr r3, [r7, 0x18]                                |     r3 = var_18h;
                                                                 |     if (r3 == 0) {
    0x0001d0aa cbz r3, 0x1d0c4                                   |         goto label_31;
                                                                 |     }
    0x0001d0ac ldr r6, [r7, 0x14]                                |     r6 = var_14h;
    0x0001d0ae movs r4, 0                                        |     r4 = 0;
    0x0001d0b0 ldr.w r8, [r7, 0x18]                              |     r8 = var_18h;
                                                                 |     do {
    0x0001d0b4 mov r0, r6                                        |         r0 = r6;
    0x0001d0b6 adds r4, 1                                        |         r4++;
    0x0001d0b8 bl 0x26ad0                                        |         g_value_unset ();
    0x0001d0bc cmp r8, r4                                        |         
    0x0001d0be add.w r6, r6, 0x18                                |         r6 += 0x18;
    0x0001d0c2 bne 0x1d0b4                                       |         
                                                                 |     } while (r8 != r4);
                                                                 | label_31:
    0x0001d0c4 ldr r0, [r7, 0x1c]                                |     r0 = var_1ch;
    0x0001d0c6 bl 0x26ad0                                        |     g_value_unset ();
    0x0001d0ca ldr r0, [pc, 0x220]                               |     
    0x0001d0cc add r0, pc                                        |     r0 = 0x3a3be;
    0x0001d0ce blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001d0d2 ldr r3, [r7, 0x28]                                |     r3 = var_28h;
    0x0001d0d4 str r3, [r5, 0x18]                                |     *((r5 + 0x18)) = r3;
    0x0001d0d6 b 0x1ce90                                         |     goto label_4;
    0x0001d0d8 adds r2, 7                                        |     r2 += 7;
    0x0001d0da bic r2, r2, 7                                     |     r2 = BIT_MASK (r2, 7);
    0x0001d0de vldmia r2!, {d16}                                 |     __asm ("vldmia r2!, {d16}");
    0x0001d0e2 vstr d16, [ip]                                    |     __asm ("vstr d16, [ip]");
    0x0001d0e6 b 0x1d06c                                         |     goto label_5;
    0x0001d0e8 adds r2, 7                                        |     r2 += 7;
    0x0001d0ea bic r2, r2, 7                                     |     r2 = BIT_MASK (r2, 7);
    0x0001d0ee vldmia r2!, {d16}                                 |     __asm ("vldmia r2!, {d16}");
    0x0001d0f2 vstr d16, [ip]                                    |     __asm ("vstr d16, [ip]");
    0x0001d0f6 b 0x1d06c                                         |     goto label_5;
                                                                 | label_22:
    0x0001d0f8 mov r1, r2                                        |     r1 = r2;
    0x0001d0fa ldr r6, [r6, 0x14]                                |     r6 = *((r6 + 0x14));
    0x0001d0fc mov r3, r5                                        |     r3 = r5;
    0x0001d0fe mov r2, r4                                        |     r2 = r4;
    0x0001d100 mov r0, r8                                        |     r0 = r8;
    0x0001d102 blx r6                                            |     r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0001d104 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001d106 beq.w 0x1cf62                                     |         goto label_6;
                                                                 |     }
                                                                 | label_26:
    0x0001d10a mov r6, r0                                        |     r6 = r0;
    0x0001d10c str r0, [sp]                                      |     *(sp) = r0;
    0x0001d10e ldr r3, [pc, 0x1e0]                               |     
    0x0001d110 movs r1, 0x10                                     |     r1 = 0x10;
    0x0001d112 ldr r2, [pc, 0x1e0]                               |     
    0x0001d114 ldr r0, [pc, 0x1e0]                               |     
    0x0001d116 add r3, pc                                        |     r3 = 0x3a40c;
    0x0001d118 add r2, pc                                        |     r2 = 0x3a412;
    0x0001d11a add r0, pc                                        |     r0 = 0x3a416;
    0x0001d11c blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001d120 mov r0, r6                                        |     r0 = r6;
    0x0001d122 blx 0x9ac8                                        |     fcn_00009ac8 ();
    0x0001d126 mov r3, sb                                        |     r3 = sb;
    0x0001d128 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001d12a beq.w 0x1cc86                                     |         goto label_7;
                                                                 |     }
    0x0001d12e ldr r5, [r7, 0x1c]                                |     r5 = var_1ch;
    0x0001d130 add.w r4, sb, sb, lsl 1                           |     r4 = sb + (sb << 1);
    0x0001d134 add.w r4, r5, r4, lsl 3                           |     r4 = r5 + (r4 << 3);
                                                                 |     do {
    0x0001d138 mov r0, r4                                        |         r0 = r4;
    0x0001d13a subs r4, 0x18                                     |         r4 -= 0x18;
    0x0001d13c bl 0x26ad0                                        |         g_value_unset ();
    0x0001d140 cmp r4, r5                                        |         
    0x0001d142 bne 0x1d138                                       |         
                                                                 |     } while (r4 != r5);
    0x0001d144 b 0x1cc86                                         |     goto label_7;
                                                                 | label_25:
    0x0001d146 ldr r5, [r7, 0x30]                                |     r5 = var_30h;
    0x0001d148 ldr r0, [r7, 0x58]                                |     r0 = var_58h;
                                                                 | label_24:
    0x0001d14a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001d14c beq 0x1d1ae                                       |         goto label_17;
                                                                 |     }
    0x0001d14e ldr r3, [pc, 0x1ac]                               |     
    0x0001d150 add.w sl, r7, 0x58                                |     sl += var_58h;
    0x0001d152 lsrs r0, r3, 9                                    |     r0 = r3 >> 9;
    0x0001d154 str r5, [r7, 0x2c]                                |     var_2ch = r5;
    0x0001d156 add r3, pc                                        |     r3 = 0x3a458;
    0x0001d158 str r3, [r7, 0x30]                                |     var_30h = r3;
                                                                 | label_8:
    0x0001d15a bl 0x231ac                                        |     g_type_parent ();
    0x0001d15e ldr r3, [r7, 0x30]                                |     r3 = var_30h;
    0x0001d160 str r0, [r7, 0x58]                                |     var_58h = r0;
    0x0001d162 ldr.w r8, [r6]                                    |     r8 = *(r6);
    0x0001d166 ldr r5, [r3, 0xc]                                 |     r5 = *((r3 + 0xc));
    0x0001d168 ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x0001d16a str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0001d16c cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0001d170 beq 0x1d1aa                                       |         goto label_32;
                                                                 |     }
    0x0001d172 mov.w sb, 0                                       |     sb = 0;
    0x0001d176 b 0x1d184                                         |     
                                                                 |     while (r0 != 0) {
    0x0001d178 ite ge                                            |         
                                                                 |         if (r8 < 0) {
    0x0001d17a addge sb, r4, 1                                   |             sb = r4 + 1;
                                                                 |         }
                                                                 |         if (r8 < 0) {
    0x0001d17e mov r8, r4                                        |             r8 = r4;
                                                                 |         }
    0x0001d180 cmp r8, sb                                        |         
                                                                 |         if (r8 < sb) {
    0x0001d182 bls 0x1d1a8                                       |             goto label_33;
                                                                 |         }
    0x0001d184 add.w r4, r8, sb                                  |         r4 = r8 + sb;
    0x0001d188 ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0001d18a lsrs r4, r4, 1                                    |         r4 >>= 1;
    0x0001d18c mov r0, sl                                        |         r0 = sl;
    0x0001d18e mla fp, r4, r5, r6                                |         __asm ("mla fp, r4, r5, r6");
    0x0001d192 add.w fp, fp, 8                                   |         
    0x0001d196 mov r1, fp                                        |         r1 = fp;
    0x0001d198 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001d19a cmp r0, 0                                         |         
    0x0001d19c bne 0x1d178                                       |         
                                                                 |     }
    0x0001d19e ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x0001d1a2 ldr r5, [r7, 0x2c]                                |     r5 = var_2ch;
    0x0001d1a4 str r3, [r7, 0x28]                                |     var_28h = r3;
    0x0001d1a6 b 0x1ccf8                                         |     goto label_0;
                                                                 | label_33:
    0x0001d1a8 ldr r0, [r7, 0x58]                                |     r0 = var_58h;
                                                                 | label_32:
    0x0001d1aa cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001d1ac bne 0x1d15a                                       |         goto label_8;
                                                                 |     }
                                                                 | label_17:
    0x0001d1ae ldr r3, [pc, 0x150]                               |     
    0x0001d1b0 movw r2, 0x8c1                                    |     r2 = 0x8c1;
    0x0001d1b2 lsls r1, r0, 0xb                                  |     r1 = r0 << 0xb;
    0x0001d1b4 ldr r4, [pc, 0x14c]                               |     
    0x0001d1b6 ldr r1, [pc, 0x150]                               |     
    0x0001d1b8 ldr r0, [pc, 0x150]                               |     
    0x0001d1ba add r3, pc                                        |     
    0x0001d1bc add r4, pc                                        |     r4 = 0x3a4c4;
    0x0001d1be add.w r3, r3, 0x230                               |     r3 = 0x3a6f0;
    0x0001d1c2 add r1, pc                                        |     r1 = 0x3a4d0;
    0x0001d1c4 str r4, [sp]                                      |     *(sp) = r4;
    0x0001d1c6 add r0, pc                                        |     r0 = 0x3a4d6;
    0x0001d1c8 blx 0x9bf0                                        |     g_array_new ();
                                                                 | label_14:
    0x0001d1cc ldr.w r4, [r7, 0xc0]                              |     r4 = var_c0h;
    0x0001d1d0 movs r1, 0x10                                     |     r1 = 0x10;
    0x0001d1d2 ldr r3, [pc, 0x13c]                               |     
    0x0001d1d4 ldr r2, [pc, 0x13c]                               |     
    0x0001d1d6 ldr r0, [pc, 0x140]                               |     
    0x0001d1d8 add r3, pc                                        |     r3 = 0x3a4ee;
    0x0001d1da str r4, [sp]                                      |     *(sp) = r4;
    0x0001d1dc add r2, pc                                        |     r2 = 0x3a4f4;
    0x0001d1de add r0, pc                                        |     r0 = 0x3a4fc;
    0x0001d1e0 blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001d1e4 b 0x1ce90                                         |     goto label_4;
                                                                 | label_20:
    0x0001d1e6 ldr r5, [r7, 0x30]                                |     r5 = var_30h;
    0x0001d1e8 ldr r0, [r7, 0x58]                                |     r0 = var_58h;
                                                                 | label_19:
    0x0001d1ea cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001d1ec beq.w 0x1ce90                                     |         goto label_4;
                                                                 |     }
    0x0001d1f0 ldr r3, [pc, 0x128]                               |     
    0x0001d1f2 add.w sl, r7, 0x58                                |     sl += var_58h;
    0x0001d1f6 str r5, [r7, 0x2c]                                |     var_2ch = r5;
    0x0001d1f8 add r3, pc                                        |     r3 = 0x3a518;
    0x0001d1fa str r3, [r7, 0x30]                                |     var_30h = r3;
                                                                 | label_10:
    0x0001d1fc bl 0x231ac                                        |     g_type_parent ();
    0x0001d200 ldr r3, [r7, 0x30]                                |     r3 = var_30h;
    0x0001d202 str r0, [r7, 0x58]                                |     var_58h = r0;
    0x0001d204 ldr.w r8, [r6]                                    |     r8 = *(r6);
    0x0001d208 ldr r5, [r3, 0xc]                                 |     r5 = *((r3 + 0xc));
    0x0001d20a ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x0001d20c str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0001d20e cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0001d212 beq 0x1d24c                                       |         goto label_34;
                                                                 |     }
    0x0001d214 mov.w sb, 0                                       |     sb = 0;
    0x0001d218 b 0x1d226                                         |     
                                                                 |     while (r0 != 0) {
    0x0001d21a ite ge                                            |         
                                                                 |         if (r8 < 0) {
    0x0001d21c addge sb, r4, 1                                   |             sb = r4 + 1;
                                                                 |         }
                                                                 |         if (r8 < 0) {
    0x0001d220 mov r8, r4                                        |             r8 = r4;
                                                                 |         }
    0x0001d222 cmp sb, r8                                        |         
                                                                 |         if (sb >= r8) {
    0x0001d224 bhs 0x1d24a                                       |             goto label_35;
                                                                 |         }
    0x0001d226 add.w r4, r8, sb                                  |         r4 = r8 + sb;
    0x0001d22a ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0001d22c lsrs r4, r4, 1                                    |         r4 >>= 1;
    0x0001d22e mov r0, sl                                        |         r0 = sl;
    0x0001d230 mla fp, r4, r5, r6                                |         __asm ("mla fp, r4, r5, r6");
    0x0001d234 add.w fp, fp, 8                                   |         
    0x0001d238 mov r1, fp                                        |         r1 = fp;
    0x0001d23a blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001d23c cmp r0, 0                                         |         
    0x0001d23e bne 0x1d21a                                       |         
                                                                 |     }
    0x0001d240 ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x0001d244 ldr r5, [r7, 0x2c]                                |     r5 = var_2ch;
    0x0001d246 str r3, [r7, 0x20]                                |     var_20h = r3;
    0x0001d248 b 0x1cd82                                         |     goto label_9;
                                                                 | label_35:
    0x0001d24a ldr r0, [r7, 0x58]                                |     r0 = var_58h;
                                                                 | label_34:
    0x0001d24c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001d24e bne 0x1d1fc                                       |         goto label_10;
                                                                 |     }
    0x0001d250 b 0x1ce90                                         |     goto label_4;
                                                                 | label_27:
    0x0001d252 str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x0001d256 mov r1, r4                                        |     r1 = r4;
    0x0001d258 ldr r2, [r7, 0xc]                                 |     r2 = var_ch;
    0x0001d25a ldr r0, [r7, 4]                                   |     r0 = var_4h_2;
    0x0001d25c ldr r3, [r7, 0x1c]                                |     r3 = var_1ch;
    0x0001d25e bl 0xe400                                         |     g_closure_invoke ();
    0x0001d262 b 0x1d0a8                                         |     goto label_11;
                                                                 | label_29:
    0x0001d264 ldr r3, [pc, 0xb8]                                |     
    0x0001d266 movs r4, 0                                        |     r4 = 0;
    0x0001d268 ldr r1, [pc, 0xb8]                                |     
    0x0001d26a movw r2, 0x91c                                    |     r2 = 0x91c;
    0x0001d26c asrs r4, r3, 8                                    |     r4 = r3 >> 8;
    0x0001d26e ldr r0, [pc, 0xb8]                                |     
    0x0001d270 add r3, pc                                        |     
    0x0001d272 str r4, [sp]                                      |     *(sp) = r4;
    0x0001d274 add r1, pc                                        |     r1 = 0x3a59c;
    0x0001d276 add.w r3, r3, 0x230                               |     r3 = 0x3a7c4;
    0x0001d27a add r0, pc                                        |     r0 = 0x3a5a8;
    0x0001d27c blx 0x9bf0                                        |     g_array_new ();
                                                                 | label_30:
    0x0001d280 mov r0, r6                                        |     r0 = r6;
    0x0001d282 bl 0x26ad0                                        |     g_value_unset ();
    0x0001d286 b 0x1d0a8                                         |     goto label_11;
                                                                 | label_28:
    0x0001d288 mov r1, r3                                        |     r1 = r3;
    0x0001d28a b 0x1d07a                                         |     goto label_12;
                                                                 |     do {
    0x000235e8 ldrb r3, [r4, 0xe]                                |         r3 = *((r4 + 0xe));
    0x000235ea lsls r3, r3, 0x1e                                 |         r3 <<= 0x1e;
                                                                 |         if (r3 >= r3) {
    0x000235ec bpl 0x23642                                       |             goto label_36;
                                                                 |         }
    0x000235ee ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
                                                                 |         if (r3 != 0) {
    0x000235f0 cbnz r3, 0x23642                                  |             goto label_36;
                                                                 |         }
    0x000235f2 ldr r0, [pc, 0x68]                                |         
    0x000235f4 str r1, [sp, 4]                                   |         var_4h = r1;
    0x000235f6 add r0, pc                                        |         r0 = 0x46c58;
    0x000235f8 blx 0x9c5c                                        |         g_slist_prepend ();
    0x000235fc ldr r3, [r4, 0x14]                                |         r3 = *((r4 + 0x14));
                                                                 |         if (r3 != 0) {
    0x000235fe cbz r3, 0x23624                                   |             
    0x00023600 ldr r3, [r4, 0x28]                                |             r3 = *((r4 + 0x28));
    0x00023602 ldr r1, [sp, 4]                                   |             r1 = var_4h;
    0x00023604 str r3, [r1]                                      |             *(r1) = r3;
    0x00023606 ldr r0, [r4, 0x18]                                |             r0 = *((r4 + 0x18));
    0x00023608 blx 0x9fd0                                        |             fcn_00009fd0 ();
    0x0002360c ldr r1, [sp, 4]                                   |             r1 = var_4h;
    0x0002360e str r0, [r1, 4]                                   |             *((r1 + 4)) = r0;
    0x00023610 ldr r3, [r4, 0x14]                                |             r3 = *((r4 + 0x14));
    0x00023612 ldrh r3, [r3, 4]                                  |             r3 = *((r3 + 4));
    0x00023614 str r3, [r1, 8]                                   |             *((r1 + 8)) = r3;
    0x00023616 ldrb r3, [r4, 0xe]                                |             r3 = *((r4 + 0xe));
    0x00023618 ands r3, r3, 4                                    |             r3 &= 4;
    0x0002361c itt ne                                            |             
                                                                 |             if (r3 == r3) {
    0x0002361e ldrne r3, [r4, 0x14]                              |                 r3 = *((r4 + 0x14));
                                                                 |             }
                                                                 |             if (r3 != r3) {
    0x00023620 ldrhne r3, [r3, 0x24]                             |                 __asm ("ldrhne r3, [r3, 0x24]");
                                                                 |             }
    0x00023622 str r3, [r1, 0xc]                                 |             *((r1 + 0xc)) = r3;
                                                                 |         }
    0x00023624 ldr r0, [pc, 0x38]                                |         
    0x00023626 add r0, pc                                        |         r0 = 0x46c8a;
    0x00023628 add sp, 8                                         |         
    0x0002362a pop.w {r4, lr}                                    |         
    0x0002362e b.w 0x9ddc                                        |         void (*0x9ddc)() ();
    0x00023636 movs r3, r0                                       |         r3 = r0;
    0x00023638 add r3, pc                                        |         r3 += pc;
    0x0002363a add r3, r0                                        |         r3 += r0;
    0x0002363c ldr r4, [r3, 0xc]                                 |         r4 = *((r3 + 0xc));
    0x0002363e cmp r4, 0                                         |         
    0x00023640 bne 0x235e8                                       |         
                                                                 |     } while (r4 != 0);
                                                                 | label_36:
    0x00023642 add sp, 8                                         |     
    0x00023644 pop {r4, pc}                                      |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x1e598 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.g_signal_emit_valist ()                          | void g_signal_emit_valist (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int32_t var_0h_3;
                                                                 |     int16_t var_8h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_20h;
                                                                 |     int32_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int32_t var_28h_2;
                                                                 |     int32_t var_30h;
                                                                 |     int32_t var_30h_2;
                                                                 |     int32_t var_38h;
                                                                 |     int32_t var_38h_2;
                                                                 |     int16_t var_40h;
                                                                 |     int32_t var_40h_2;
                                                                 |     int32_t var_48h;
                                                                 |     int32_t var_48h_2;
                                                                 |     int32_t var_50h;
                                                                 |     int32_t var_50h_2;
                                                                 |     int16_t var_58h;
                                                                 |     int32_t var_58h_2;
                                                                 |     int32_t var_60h;
                                                                 |     int32_t var_60h_2;
                                                                 |     int32_t var_68h;
                                                                 |     int32_t var_68h_2;
                                                                 |     int32_t var_70h;
                                                                 |     int16_t var_78h;
                                                                 |     int16_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0001e598 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0001e59c sub sp, 0xc4                                      |     
    0x0001e59e add r7, sp, 8                                     |     r7 += var_8h;
    0x0001e5a0 mov sl, r3                                        |     sl = r3;
    0x0001e5a2 mov r5, r1                                        |     r5 = r1;
    0x0001e5a4 str r0, [r7, 0x1c]                                |     var_1ch = r0;
    0x0001e5a6 str r2, [r7, 0x18]                                |     var_18h = r2;
    0x0001e5a8 bl 0x24e2c                                        |     r0 = g_type_check_instance ();
                                                                 |     if (r0 == 0) {
    0x0001e5ac cbnz r0, 0x1e5d0                                  |         
    0x0001e5ae ldr.w r1, [pc, 0x918]                             |         
    0x0001e5b2 ldr.w r2, [pc, 0x918]                             |         
    0x0001e5b6 ldr.w r0, [pc, 0x918]                             |         
    0x0001e5ba add r1, pc                                        |         
    0x0001e5bc add r2, pc                                        |         r2 = 0x3d48e;
    0x0001e5be add.w r1, r1, 0x3bc                               |         r1 = 0x3d844;
    0x0001e5c2 add r0, pc                                        |         r0 = 0x3d498;
    0x0001e5c4 blx 0x9c0c                                        |         fcn_00009c0c ();
                                                                 | label_6:
    0x0001e5c8 adds r7, 0xbc                                     |         r7 += 0xbc;
    0x0001e5ca mov sp, r7                                        |         
    0x0001e5cc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x0001e5d0 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x0001e5d2 beq.w 0x1e87a                                     |         goto label_28;
                                                                 |     }
    0x0001e5d6 ldr.w r6, [pc, 0x8fc]                             |     
    0x0001e5da add r6, pc                                        |     r6 = 0x3d4b4;
    0x0001e5dc mov r0, r6                                        |     r0 = r6;
    0x0001e5de blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001e5e0 ldc p9, c6, [lr], -0x2cc                          |     __asm ("ldc p9, c6, [lr], -0x2cc");
    0x0001e5e4 cmp r5, r3                                        |     
                                                                 |     if (r5 >= r3) {
    0x0001e5e6 bhs.w 0x1e84a                                     |         goto label_29;
                                                                 |     }
    0x0001e5e8 strh r0, [r6, 8]                                  |     *((r6 + 8)) = r0;
    0x0001e5ea ldr r3, [r6, 0x1c]                                |     r3 = *((r6 + 0x1c));
    0x0001e5ec ldr.w r8, [r3, r5, lsl 2]                         |     offset_0 = r5 << 2;
                                                                 |     r8 = *((r3 + offset_0));
    0x0001e5ee strh r5, [r4]                                     |     *(r4) = r5;
    0x0001e5f0 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0001e5f4 beq.w 0x1e84a                                     |         goto label_29;
                                                                 |     }
    0x0001e5f8 ldr r3, [r7, 0x1c]                                |     r3 = var_1ch;
    0x0001e5fa ldr.w r1, [r8, 4]                                 |     r1 = *((r8 + 4));
    0x0001e5fe ldr r3, [r3]                                      |     r3 = *(r3);
    0x0001e600 ldr r0, [r3]                                      |     r0 = *(r3);
    0x0001e602 bl 0x23254                                        |     r0 = g_type_is_a ();
    0x0001e606 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001e608 beq.w 0x1e84a                                     |         goto label_29;
                                                                 |     }
    0x0001e60c ldr r3, [r7, 0x18]                                |     r3 = var_18h;
    0x0001e60e mov r4, sl                                        |     r4 = sl;
                                                                 |     if (r3 != 0) {
    0x0001e610 cbz r3, 0x1e620                                   |         
    0x0001e612 ldrh.w r3, [r8, 0xc]                              |         r3 = *((r8 + 0xc));
    0x0001e616 ubfx r3, r3, 1, 9                                 |         r3 = (r3 >> 1) & ((1 << 9) - 1);
    0x0001e61a lsls r1, r3, 0x1b                                 |         r1 = r3 << 0x1b;
                                                                 |         if (r1 >= r3) {
    0x0001e61c bpl.w 0x1ec24                                     |             goto label_30;
                                                                 |         }
                                                                 |     }
    0x0001e620 ldrb.w r3, [r8, 0xe]                              |     r3 = *((r8 + 0xe));
    0x0001e624 lsls r2, r3, 0x1d                                 |     r2 = r3 << 0x1d;
                                                                 |     if (r2 >= r3) {
    0x0001e626 bpl.w 0x1e89c                                     |         goto label_31;
                                                                 |     }
    0x0001e62a ldr.w r0, [r8, 0x2c]                              |     r0 = *((r8 + 0x2c));
    0x0001e62e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001e630 beq.w 0x1e99c                                     |         goto label_22;
                                                                 |     }
    0x0001e634 cmp r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x0001e636 beq 0x1e644                                       |         
    0x0001e638 ldr r1, [r7, 0x1c]                                |         r1 = var_1ch;
    0x0001e63a bl 0xe880                                         |         r0 = fcn_0000e880 (r0, r1);
    0x0001e63e cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0001e640 beq.w 0x1eda8                                     |             goto label_32;
                                                                 |         }
                                                                 |     }
    0x0001e644 ldr r0, [r7, 0x1c]                                |     r0 = var_1ch;
    0x0001e646 bl 0x124f0                                        |     r0 = fcn_000124f0 ();
    0x0001e64a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001e64c bne.w 0x1e8a4                                     |         goto label_33;
                                                                 |     }
    0x0001e650 ldr.w r3, [r8, 0x14]                              |     r3 = *((r8 + 0x14));
    0x0001e654 cmp r3, 4                                         |     
                                                                 |     if (r3 == 4) {
    0x0001e656 beq.w 0x1ee70                                     |         goto label_34;
                                                                 |     }
    0x0001e65a movs r5, 1                                        |     r5 = 1;
    0x0001e65c str r0, [r7, 0x20]                                |     var_20h = r0;
    0x0001e65e str r0, [r7, 0x24]                                |     var_24h = r0;
                                                                 | label_2:
    0x0001e660 ldr r6, [r7, 0x1c]                                |     r6 = var_1ch;
    0x0001e662 movs r3, 0                                        |     r3 = 0;
    0x0001e664 strd r3, r3, [r7, 0x30]                           |     __asm ("strd r3, r3, [var_30h]");
    0x0001e668 add.w ip, r7, 0x40                                |     
    0x0001e66c strd r3, r3, [r7, 0x38]                           |     __asm ("strd r3, r3, [var_38h]");
    0x0001e670 orr r5, r5, 0x20000                               |     r5 |= 0x20000;
    0x0001e674 ldr r2, [r6]                                      |     r2 = *(r6);
    0x0001e676 add.w sb, r7, 0x28                                |     sb += var_28h;
    0x0001e67a strd r3, r3, [r7, 0x28]                           |     __asm ("strd r3, r3, [var_28h]");
    0x0001e67e ldr.w r0, [pc, 0x858]                             |     
    0x0001e682 ldr r1, [r2]                                      |     r1 = *(r2);
    0x0001e684 strd r3, r3, [r7, 0x48]                           |     __asm ("strd r3, r3, [var_48h]");
    0x0001e686 adds r3, 0x12                                     |     r3 += 0x12;
    0x0001e688 strd r3, r3, [r7, 0x50]                           |     __asm ("strd r3, r3, [var_50h]");
    0x0001e68c add r0, pc                                        |     r0 = 0x3d56a;
    0x0001e68e strd r3, r3, [r7, 0x40]                           |     __asm ("strd r3, r3, [var_40h]");
    0x0001e692 ldr.w r2, [r8, 0x14]                              |     r2 = *((r8 + 0x14));
    0x0001e696 str.w ip, [r7, 0x14]                              |     __asm ("str.w ip, [var_14h]");
    0x0001e69a str r2, [r7, 8]                                   |     var_8h_2 = r2;
    0x0001e69c ldr.w r2, [r8]                                    |     r2 = *(r8);
    0x0001e6a0 str r2, [r7, 0xc]                                 |     var_ch = r2;
    0x0001e6a2 ldr r2, [r7, 8]                                   |     r2 = var_8h_2;
    0x0001e6a4 bic fp, r2, 1                                     |     fp = BIT_MASK (r2, 1);
    0x0001e6a6 lsrs r1, r0, 0xc                                  |     r1 = r0 >> 0xc;
    0x0001e6a8 ldr.w r2, [r8, 0x1c]                              |     r2 = *((r8 + 0x1c));
    0x0001e6ac cmp.w fp, 4                                       |     
    0x0001e6b0 str r2, [r7, 0x10]                                |     var_10h = r2;
    0x0001e6b2 ldr r2, [r0, 0x20]                                |     r2 = *(0x3d58a);
                                                                 |     if (fp == 4) {
    0x0001e6b4 beq.w 0x1ec56                                     |         goto label_35;
                                                                 |     }
    0x0001e6b8 ldr r3, [r7, 0x18]                                |     r3 = var_18h;
    0x0001e6ba strd r2, r6, [r7, 0x58]                           |     __asm ("strd r2, r6, [var_58h]");
    0x0001e6be add.w r6, r7, 0x58                                |     r6 += var_58h;
    0x0001e6c2 ldr r2, [r7, 0x10]                                |     r2 = var_10h;
    0x0001e6c4 strd r3, r5, [r7, 0x64]                           |     __asm ("strd r3, r5, [var_60h_2]");
    0x0001e6c8 mov r5, ip                                        |     r5 = ip;
    0x0001e6ca ldr r3, [r7, 0xc]                                 |     r3 = var_ch;
    0x0001e6cc cmp r2, 0                                         |     
    0x0001e6ce it ne                                             |     
                                                                 |     if (r2 == 0) {
    0x0001e6d0 movne r5, sb                                      |         r5 = sb;
                                                                 |     }
    0x0001e6d2 str r1, [r7, 0x70]                                |     var_70h = r1;
    0x0001e6d4 str r6, [r0, 0x20]                                |     *((r0 + 0x20)) = r6;
    0x0001e6d6 str r3, [r7, 0x60]                                |     var_60h = r3;
    0x0001e6d8 movs r3, 1                                        |     r3 = 1;
    0x0001e6da str r3, [r7, 0x6c]                                |     var_68h_2 = r3;
    0x0001e6dc ldr r3, [r7, 0x20]                                |     r3 = var_20h;
    0x0001e6de cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001e6e0 beq.w 0x1ee20                                     |         goto label_36;
                                                                 |     }
                                                                 | label_10:
    0x0001e6e4 ldr r3, [r7, 0x20]                                |     r3 = var_20h;
    0x0001e6e6 ldr r3, [r3, 0x14]                                |     r3 = *((r3 + 0x14));
    0x0001e6e8 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0001e6ea bne.w 0x1ee2e                                     |         goto label_37;
                                                                 |     }
    0x0001e6ee ldr.w r1, [pc, 0x7ec]                             |     
    0x0001e6f2 ldr.w r2, [pc, 0x7ec]                             |     
    0x0001e6f6 ldr.w r0, [pc, 0x7ec]                             |     
    0x0001e6fa add r1, pc                                        |     r1 = 0x3d5dc;
    0x0001e6fc adds r1, 0x5c                                     |     r1 += 0x5c;
    0x0001e6fe add r2, pc                                        |     r2 = 0x3d5e4;
    0x0001e700 add r0, pc                                        |     r0 = 0x3d5ea;
    0x0001e702 blx 0x9c0c                                        |     fcn_00009c0c ();
                                                                 | label_21:
    0x0001e706 ldr.w r0, [pc, 0x7e0]                             |     
    0x0001e70a add r0, pc                                        |     r0 = 0x3d5f8;
    0x0001e70c blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001e710 cmp.w fp, 4                                       |     
                                                                 |     if (fp != 4) {
    0x0001e714 bne.w 0x1ee24                                     |         goto label_38;
                                                                 |     }
                                                                 | label_11:
    0x0001e718 ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001e71a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001e71c beq.w 0x1edde                                     |         goto label_39;
                                                                 |     }
    0x0001e720 mov r1, fp                                        |     r1 = fp;
    0x0001e722 mov r0, sb                                        |     r0 = sb;
    0x0001e724 bl 0x2698c                                        |     g_value_init ();
    0x0001e728 ldr r3, [r7, 0x24]                                |     r3 = var_24h;
                                                                 |     if (r3 != 0) {
    0x0001e72a cbz r3, 0x1e76c                                   |         
    0x0001e72c ldr r0, [r7, 0x1c]                                |         r0 = var_1ch;
    0x0001e72e bl 0x11308                                        |         g_object_ref ();
    0x0001e732 ldr.w r2, [r8, 0xc]                               |         r2 = *((r8 + 0xc));
    0x0001e736 mov r1, r5                                        |         r1 = r5;
    0x0001e738 ldr.w r0, [r8, 0x10]                              |         r0 = *((r8 + 0x10));
    0x0001e73c mov r3, sl                                        |         r3 = sl;
    0x0001e73e ubfx r2, r2, 0xa, 8                               |         r2 = (r2 >> 0xa) & ((1 << 8) - 1);
    0x0001e742 strd r2, r0, [sp]                                 |         __asm ("strd r2, r0, [sp]");
    0x0001e746 ldr r2, [r7, 0x1c]                                |         r2 = var_1ch;
    0x0001e748 ldr r0, [r7, 0x24]                                |         r0 = var_24h;
    0x0001e74a bl 0xe580                                         |         fcn_0000e580 (r0, r1, r2, r3, r4);
    0x0001e74e ldr r0, [r7, 0x10]                                |         r0 = var_10h;
    0x0001e750 mov r2, sb                                        |         r2 = sb;
    0x0001e752 ldr r1, [r7, 0x14]                                |         r1 = var_14h;
    0x0001e754 ldr r3, [r0, 4]                                   |         r3 = *((r0 + 4));
    0x0001e756 ldr r5, [r0]                                      |         r5 = *(r0);
    0x0001e758 add.w r0, r7, 0x60                                |         r0 += var_60h;
    0x0001e75c blx r5                                            |         uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0001e75e mov r0, sb                                        |         r0 = sb;
    0x0001e760 bl 0x26a54                                        |         g_value_reset ();
    0x0001e764 ldr r3, [r7, 0x68]                                |         r3 = var_68h;
    0x0001e766 bic r3, r3, 0x20000                               |         r3 = BIT_MASK (r3, 0x20000);
    0x0001e76a str r3, [r7, 0x68]                                |         var_68h = r3;
                                                                 |     }
                                                                 | label_19:
    0x0001e76c ldr.w r5, [pc, 0x77c]                             |     
    0x0001e770 add r5, pc                                        |     r5 = 0x3d660;
    0x0001e772 mov r0, r5                                        |     r0 = r5;
    0x0001e774 blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001e778 ldr r3, [r5, 0x20]                                |     r3 = *(0x3d680);
    0x0001e77a movs r2, 4                                        |     r2 = 4;
    0x0001e77c str r2, [r7, 0x70]                                |     var_70h = r2;
    0x0001e77e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001e780 beq.w 0x1eea2                                     |         goto label_40;
                                                                 |     }
    0x0001e784 cmp r3, r6                                        |     
                                                                 |     if (r3 == r6) {
    0x0001e786 beq.w 0x1ee62                                     |         goto label_41;
                                                                 |     }
                                                                 |     do {
    0x0001e78a mov r2, r3                                        |         r2 = r3;
    0x0001e78c ldr r3, [r3]                                      |         r3 = *(r3);
    0x0001e78e cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0001e790 beq.w 0x1eea2                                     |             goto label_40;
                                                                 |         }
    0x0001e794 cmp r3, r6                                        |         
    0x0001e796 bne 0x1e78a                                       |         
                                                                 |     } while (r3 != r6);
    0x0001e798 ldr r3, [r7, 0x58]                                |     r3 = var_58h;
    0x0001e79a str r3, [r2]                                      |     *(r2) = r3;
                                                                 | label_24:
    0x0001e79c ldr r3, [r7, 0x20]                                |     r3 = var_20h;
                                                                 |     if (r3 != 0) {
    0x0001e79e cbz r3, 0x1e7c2                                   |         
    0x0001e7a0 ldr r3, [r7, 0x20]                                |         r3 = var_20h;
    0x0001e7a2 ldr r3, [r3, 0x14]                                |         r3 = *((r3 + 0x14));
    0x0001e7a4 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0001e7a6 bne.w 0x1ee0a                                     |             goto label_42;
                                                                 |         }
    0x0001e7a8 strh r0, [r6, 0x18]                               |         *((r6 + 0x18)) = r0;
    0x0001e7aa ldr.w r1, [pc, 0x744]                             |         
    0x0001e7ae ldr.w r2, [pc, 0x744]                             |         
    0x0001e7b2 ldr.w r0, [pc, 0x744]                             |         
    0x0001e7b6 add r1, pc                                        |         r1 = 0x3d6ac;
    0x0001e7b8 adds r1, 0x68                                     |         r1 += 0x68;
    0x0001e7ba add r2, pc                                        |         r2 = 0x3d6b4;
    0x0001e7bc add r0, pc                                        |         r0 = 0x3d6ba;
    0x0001e7be blx 0x9c0c                                        |         fcn_00009c0c ();
                                                                 |     }
                                                                 | label_20:
    0x0001e7c2 ldr.w r0, [pc, 0x738]                             |     
    0x0001e7c6 add r0, pc                                        |     r0 = 0x3d6c8;
    0x0001e7c8 blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001e7cc ldr r3, [r7, 0x10]                                |     r3 = var_10h;
                                                                 |     if (r3 != 0) {
    0x0001e7ce cbz r3, 0x1e7d6                                   |         
    0x0001e7d0 mov r0, sb                                        |         r0 = sb;
    0x0001e7d2 bl 0x26ad0                                        |         g_value_unset ();
                                                                 |     }
    0x0001e7d6 cmp.w fp, 4                                       |     
                                                                 |     if (fp == 4) {
    0x0001e7da beq.w 0x1ed6e                                     |         goto label_25;
                                                                 |     }
    0x0001e7de ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x0001e7e2 tst.w r3, 0x3fc00                                 |     
                                                                 |     if ((r3 & 0x3fc00) == 0) {
    0x0001e7e6 beq.w 0x1eccc                                     |         goto label_43;
                                                                 |     }
    0x0001e7ea mov.w sb, 0                                       |     sb = 0;
    0x0001e7ee movs r5, 1                                        |     r5 = 1;
    0x0001e7f0 movw r6, 0x2001                                   |     r6 = 0x2001;
                                                                 | label_15:
    0x0001e7f4 ldr.w r3, [r8, 0x10]                              |     r3 = *((r8 + 0x10));
    0x0001e7f8 ldr.w r0, [r3, sb, lsl 2]                         |     offset_1 = sb << 2;
                                                                 |     r0 = *((r3 + offset_1));
    0x0001e7fc bic r0, r0, 1                                     |     r0 = BIT_MASK (r0, 1);
    0x0001e800 bl 0x25228                                        |     g_type_value_table_peek ();
    0x0001e804 ldr r2, [r0, 0x10]                                |     r2 = *((r0 + 0x10));
    0x0001e806 ldrb r3, [r2]                                     |     r3 = *(r2);
    0x0001e808 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001e80a beq.w 0x1ecba                                     |         goto label_44;
                                                                 |     }
                                                                 | label_14:
    0x0001e80e subs r3, 0x64                                     |     r3 -= 0x64;
    0x0001e810 uxtb r3, r3                                       |     r3 = (int8_t) r3;
    0x0001e812 cmp r3, 0xd                                       |     
                                                                 |     if (r3 <= 0xd) {
    0x0001e814 bhi 0x1e828                                       |         
    0x0001e816 lsl.w r3, r5, r3                                  |         r3 = r5 << r3;
    0x0001e81a tst.w r3, 0x1120                                  |         
                                                                 |         if ((r3 & 0x1120) != 0) {
    0x0001e81e bne.w 0x1ecae                                     |             goto label_45;
                                                                 |         }
    0x0001e822 tst r3, r6                                        |         
                                                                 |         if ((r3 & r6) != 0) {
    0x0001e824 bne.w 0x1ed9e                                     |             goto label_46;
                                                                 |         }
                                                                 |     }
    0x0001e828 ldr.w r3, [pc, 0x6d4]                             |     
    0x0001e82c movs r4, 0                                        |     r4 = 0;
    0x0001e82e ldr.w r1, [pc, 0x6d4]                             |     
    0x0001e830 asrs r4, r2, 0x1b                                 |     r4 = r2 >> 0x1b;
    0x0001e832 movw r2, 0xd6a                                    |     r2 = 0xd6a;
    0x0001e834 strh r2, [r5, r1]                                 |     *((r5 + r1)) = r2;
    0x0001e836 ldr.w r0, [pc, 0x6d0]                             |     
    0x0001e83a add r3, pc                                        |     
    0x0001e83c str r4, [sp]                                      |     *(sp) = r4;
    0x0001e83e add r1, pc                                        |     r1 = 0x3d748;
    0x0001e840 add.w r3, r3, 0x3bc                               |     r3 = 0x3dafa;
    0x0001e844 add r0, pc                                        |     r0 = 0x3d752;
    0x0001e846 blx 0x9bf0                                        |     g_array_new ();
                                                                 | label_29:
    0x0001e84a ldr r4, [r7, 0x1c]                                |     r4 = var_1ch;
    0x0001e84c movs r1, 0x10                                     |     r1 = 0x10;
    0x0001e84e ldr.w r3, [pc, 0x6bc]                             |     
    0x0001e852 ldr.w r2, [pc, 0x6bc]                             |     
    0x0001e856 ldr.w r0, [pc, 0x6bc]                             |     
    0x0001e85a add r3, pc                                        |     r3 = 0x3d76c;
    0x0001e85c strd r5, r4, [sp]                                 |     __asm ("strd r5, r4, [sp]");
    0x0001e860 add r2, pc                                        |     r2 = 0x3d776;
    0x0001e862 add r0, pc                                        |     r0 = 0x3d77c;
    0x0001e864 blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001e868 ldr.w r0, [pc, 0x6ac]                             |     
    0x0001e86c add r0, pc                                        |     r0 = 0x3d788;
    0x0001e86e blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001e872 adds r7, 0xbc                                     |     r7 += 0xbc;
    0x0001e874 mov sp, r7                                        |     
    0x0001e876 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_28:
    0x0001e87a ldr.w r1, [pc, 0x6a0]                             |     
    0x0001e87e ldr.w r2, [pc, 0x6a0]                             |     
    0x0001e882 ldr.w r0, [pc, 0x6a0]                             |     
    0x0001e884 lsls r0, r4, 0x1a                                 |     r0 = r4 << 0x1a;
    0x0001e886 add r1, pc                                        |     
    0x0001e888 add r2, pc                                        |     r2 = 0x3d7ae;
    0x0001e88a add.w r1, r1, 0x3bc                               |     r1 = 0x3db64;
    0x0001e88e add r0, pc                                        |     r0 = 0x3d7b8;
    0x0001e890 blx 0x9c0c                                        |     fcn_00009c0c ();
    0x0001e894 adds r7, 0xbc                                     |     r7 += 0xbc;
    0x0001e896 mov sp, r7                                        |     
    0x0001e898 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_31:
    0x0001e89c mov r0, r8                                        |     r0 = r8;
    0x0001e89e bl 0x194f8                                        |     fcn_000194f8 (r0);
    0x0001e8a0 cdp2 p6, 2, c14, c11, c2, 6                       |     __asm ("cdp2 p6, 2, c14, c11, c2, 6");
                                                                 | label_33:
    0x0001e8a4 movs r3, 1                                        |     r3 = 1;
    0x0001e8a6 movs r2, 0                                        |     r2 = 0;
    0x0001e8a8 mov r5, r3                                        |     r5 = r3;
    0x0001e8aa str r3, [r7, 0xc]                                 |     var_ch = r3;
    0x0001e8ac str r2, [r7, 0x24]                                |     var_24h = r2;
    0x0001e8ae str r3, [r7, 0x10]                                |     var_10h = r3;
                                                                 | label_23:
    0x0001e8b0 ldr.w r3, [pc, 0x674]                             |     
    0x0001e8b4 ldr.w r6, [r8]                                    |     r6 = *(r8);
    0x0001e8b8 ldr r1, [r7, 0x1c]                                |     r1 = var_1ch;
    0x0001e8ba add r3, pc                                        |     r3 = 0x3d7e6;
    0x0001e8bc ldr r0, [r3, 8]                                   |     r0 = *(0x3d7ee);
    0x0001e8be blx 0x9b94                                        |     fcn_00009b94 ();
    0x0001e8c2 str r6, [r7, 0x78]                                |     var_78h = r6;
    0x0001e8c4 str r0, [r7, 0x20]                                |     var_20h = r0;
    0x0001e8c6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001e8c8 beq.w 0x1ec8c                                     |         goto label_47;
                                                                 |     }
    0x0001e8ca strh r0, [r4, 0xe]                                |     *((r4 + 0xe)) = r0;
    0x0001e8cc ldr.w r3, [pc, 0x65c]                             |     
    0x0001e8d0 ldr r2, [r0]                                      |     r2 = *(r0);
    0x0001e8d2 add r3, pc                                        |     
    0x0001e8d4 ldr r1, [r3]                                      |     r1 = *(0x3d802);
    0x0001e8d6 ldr r3, [r3, 4]                                   |     r3 = *(0x3d806);
    0x0001e8d8 str r1, [r7, 0x14]                                |     var_14h = r1;
    0x0001e8da cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0001e8dc beq.w 0x1ee42                                     |         goto label_48;
                                                                 |     }
    0x0001e8e0 str.w r8, [r7]                                    |     __asm ("str.w r8, [r7]");
    0x0001e8e4 mov.w sb, 0                                       |     sb = 0;
    0x0001e8e8 ldr.w r8, [r7, 0x20]                              |     r8 = var_20h;
    0x0001e8ec add.w fp, r7, 0x78                                |     
    0x0001e8f0 str.w sl, [r7, 0x20]                              |     __asm ("str.w sl, [var_20h]");
    0x0001e8f4 mov r6, r3                                        |     r6 = r3;
    0x0001e8f6 mov sl, r2                                        |     sl = r2;
    0x0001e8f8 strd r4, r5, [r7, 4]                              |     __asm ("strd r4, r5, [var_8h_2]");
    0x0001e8fc b 0x1e90c                                         |     
                                                                 |     while (r0 != 0) {
    0x0001e8fe ite ge                                            |         
                                                                 |         if (r2 < 0) {
    0x0001e900 addge sb, r4, 1                                   |             sb = r4 + 1;
                                                                 |         }
                                                                 |         if (r2 < 0) {
    0x0001e904 mov sl, r4                                        |             sl = r4;
                                                                 |         }
    0x0001e906 cmp sb, sl                                        |         
                                                                 |         if (sb >= sl) {
    0x0001e908 bhs.w 0x1ee36                                     |             goto label_49;
                                                                 |         }
    0x0001e90c ldr r3, [r7, 0x14]                                |         r3 = var_14h;
    0x0001e90e add.w r4, sl, sb                                  |         r4 = sl + sb;
    0x0001e910 lsls r1, r1, 0x10                                 |         r1 <<= 0x10;
    0x0001e912 lsrs r4, r4, 1                                    |         r4 >>= 1;
    0x0001e914 mov r0, fp                                        |         r0 = fp;
    0x0001e916 mla r1, r4, r3, r8                                |         __asm ("mla r1, r4, r3, r8");
    0x0001e91a add.w r5, r1, 8                                   |         r5 = r1 + 8;
    0x0001e91e mov r1, r5                                        |         r1 = r5;
    0x0001e920 blx r6                                            |         r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0001e922 cmp r0, 0                                         |         
    0x0001e924 bne 0x1e8fe                                       |         
                                                                 |     }
    0x0001e926 mov r1, r5                                        |     r1 = r5;
    0x0001e928 ldr r3, [r7, 0xc]                                 |     r3 = var_ch;
    0x0001e92a ldr r6, [r1, 4]                                   |     r6 = *((r1 + 4));
    0x0001e92c ldrd r8, r4, [r7]                                 |     __asm ("ldrd r8, r4, [r7]");
    0x0001e930 ldr r5, [r7, 8]                                   |     r5 = var_8h_2;
    0x0001e932 cmp r6, 0                                         |     
    0x0001e934 ite eq                                            |     
                                                                 |     if (r6 != 0) {
    0x0001e936 moveq r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r6 == 0) {
    0x0001e938 andne r3, r3, 1                                   |         r3 &= 1;
                                                                 |     }
    0x0001e93a lsls r1, r0, 0xc                                  |     r1 = r0 << 0xc;
    0x0001e93c ldr.w sl, [r7, 0x20]                              |     sl = var_20h;
    0x0001e940 mov sb, r3                                        |     sb = r3;
    0x0001e942 str r0, [r7, 0x14]                                |     var_14h = r0;
    0x0001e944 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001e946 beq.w 0x1eebc                                     |         goto label_50;
                                                                 |     }
    0x0001e94a ldr r2, [r7, 0x24]                                |     r2 = var_24h;
    0x0001e94c mov r1, r0                                        |     r1 = r0;
    0x0001e94e ldr.w fp, [r7, 0x18]                              |     fp = var_18h;
    0x0001e952 b 0x1e970                                         |     goto label_51;
                                                                 | label_1:
    0x0001e954 ldr r0, [r6, 0x1c]                                |     r0 = *((r6 + 0x1c));
    0x0001e956 bl 0xe53c                                         |     r0 = fcn_0000e53c (r0);
                                                                 |     if (r0 == 0) {
    0x0001e95a cbz r0, 0x1e99c                                   |         goto label_22;
                                                                 |     }
    0x0001e95c ldrb r3, [r6, 0x1a]                               |     r3 = *((r6 + 0x1a));
    0x0001e95e mov r1, r6                                        |     r1 = r6;
    0x0001e960 ldr r2, [r6, 0x1c]                                |     r2 = *((r6 + 0x1c));
    0x0001e962 and r3, r3, 1                                     |     r3 &= 1;
    0x0001e966 adds r5, r3, 1                                    |     r5 = r3 + 1;
                                                                 |     do {
                                                                 | label_0:
    0x0001e968 ldr r6, [r6, 4]                                   |         r6 = *((r6 + 4));
    0x0001e96a cmp r6, 0                                         |         
                                                                 |         if (r6 == 0) {
    0x0001e96c beq.w 0x1ec84                                     |             goto label_52;
                                                                 |         }
                                                                 | label_51:
    0x0001e970 ldrh r3, [r6, 0x18]                               |         r3 = *((r6 + 0x18));
    0x0001e972 cmp r3, 0                                         |         
    0x0001e974 bne 0x1e968                                       |         
                                                                 |     } while (r3 != 0);
    0x0001e976 ldr r3, [r6, 0xc]                                 |     r3 = *((r6 + 0xc));
    0x0001e978 cmp r3, 0                                         |     
    0x0001e97a it ne                                             |     
                                                                 |     if (r3 == 0) {
    0x0001e97c cmpne r3, fp                                      |         __asm ("cmpne r3, fp");
                                                                 |         goto label_53;
                                                                 |     }
                                                                 |     if (r3 != 0) {
                                                                 | label_53:
    0x0001e97e bne 0x1e968                                       |         goto label_0;
                                                                 |     }
    0x0001e980 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0001e982 beq 0x1e954                                       |         goto label_1;
                                                                 |     }
    0x0001e984 strd r1, r2, [r7, 0x20]                           |     __asm ("strd r1, r2, [var_20h]");
                                                                 | label_12:
    0x0001e988 ldrh.w r3, [r8, 0xc]                              |     r3 = *((r8 + 0xc));
    0x0001e98c ubfx r3, r3, 1, 9                                 |     r3 = (r3 >> 1) & ((1 << 9) - 1);
    0x0001e990 lsls r3, r3, 0x1c                                 |     r3 <<= 0x1c;
                                                                 |     if (r3 < r3) {
    0x0001e992 bmi 0x1e99c                                       |         goto label_22;
                                                                 |     }
                                                                 | label_13:
    0x0001e994 ldr r3, [r7, 0x14]                                |     r3 = var_14h;
    0x0001e996 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0001e998 bne.w 0x1e660                                     |         goto label_2;
                                                                 |     }
                                                                 | label_22:
    0x0001e99c ldr.w r0, [pc, 0x590]                             |     
    0x0001e9a0 add r0, pc                                        |     r0 = 0x3d8d4;
    0x0001e9a2 blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001e9a6 ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x0001e9aa movs r1, 0                                        |     r1 = 0;
    0x0001e9ac ldr.w r2, [r8, 0x14]                              |     r2 = *((r8 + 0x14));
    0x0001e9b0 ubfx r3, r3, 0xa, 8                               |     r3 = (r3 >> 0xa) & ((1 << 8) - 1);
    0x0001e9b4 str r2, [r7, 0x10]                                |     var_10h = r2;
    0x0001e9b6 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x0001e9b8 add.w r2, r2, r2, lsl 1                           |     r2 += (r2 << 1);
    0x0001e9bc str r3, [r7, 0xc]                                 |     var_ch = r3;
    0x0001e9be mov r3, sp                                        |     r3 = sp;
    0x0001e9c0 sub.w r3, r3, r2, lsl 3                           |     r3 -= (r2 << 3);
    0x0001e9c4 lsls r2, r2, 3                                    |     r2 <<= 3;
    0x0001e9c6 mov sp, r3                                        |     
    0x0001e9c8 add r3, sp, 8                                     |     r3 += var_8h;
    0x0001e9ca mov r0, r3                                        |     r0 = r3;
    0x0001e9cc mov r5, r3                                        |     r5 = r3;
    0x0001e9ce str r3, [r7, 0x14]                                |     var_14h = r3;
    0x0001e9d0 blx 0x9db8                                        |     g_string_append_printf ();
    0x0001e9d4 ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x0001e9d8 mov r2, r5                                        |     r2 = r5;
    0x0001e9da adds r2, 0x18                                     |     r2 += 0x18;
    0x0001e9dc str r2, [r7, 8]                                   |     var_8h_2 = r2;
    0x0001e9de tst.w r3, 0x3fc00                                 |     
                                                                 |     if ((r3 & 0x3fc00) == 0) {
    0x0001e9e2 beq 0x1ea78                                       |         goto label_54;
                                                                 |     }
    0x0001e9e4 mov sl, r2                                        |     sl = r2;
    0x0001e9e6 mov.w sb, 0                                       |     sb = 0;
    0x0001e9ea add.w fp, r7, 0x78                                |     
                                                                 | label_3:
    0x0001e9ee ldr.w r3, [r8, 0x10]                              |     r3 = *((r8 + 0x10));
    0x0001e9f2 ldr.w r2, [r3, sb, lsl 2]                         |     offset_2 = sb << 2;
                                                                 |     r2 = *((r3 + offset_2));
    0x0001e9f6 bic r3, r2, 1                                     |     r3 = BIT_MASK (r2, 1);
    0x0001e9fa lsls r2, r2, 0x1b                                 |     r2 <<= 0x1b;
    0x0001e9fc mov r0, r3                                        |     r0 = r3;
    0x0001e9fe str r3, [r7, 0x20]                                |     var_20h = r3;
    0x0001ea00 and r2, r2, 0x8000000                             |     r2 &= 0x8000000;
    0x0001ea04 str r2, [r7, 0x24]                                |     var_24h = r2;
    0x0001ea06 bl 0x25228                                        |     g_type_value_table_peek ();
    0x0001ea0a movs r2, 0x40                                     |     r2 = 0x40;
    0x0001ea0c ldr r5, [r0, 0x10]                                |     r5 = *((r0 + 0x10));
    0x0001ea0e mov r6, r0                                        |     r6 = r0;
    0x0001ea10 movs r1, 0                                        |     r1 = 0;
    0x0001ea12 mov r0, fp                                        |     r0 = fp;
    0x0001ea14 blx 0x9db8                                        |     g_string_append_printf ();
    0x0001ea18 ldr r3, [r7, 0x20]                                |     r3 = var_20h;
    0x0001ea1a str.w r3, [sl]                                    |     __asm ("str.w r3, [sl]");
    0x0001ea1e ldrb r3, [r5]                                     |     r3 = *(r5);
    0x0001ea20 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001ea22 beq 0x1eb24                                       |         goto label_55;
                                                                 |     }
    0x0001ea24 mov r2, fp                                        |     r2 = fp;
    0x0001ea26 rsb.w r0, r5, 1                                   |     r0 = 1 - r5;
                                                                 |     do {
    0x0001ea2a subs r3, 0x64                                     |         r3 -= 0x64;
    0x0001ea2c adds r1, r0, r5                                   |         r1 = r0 + r5;
    0x0001ea2e cmp r3, 0xd                                       |         
                                                                 |         if (r3 > 0xd) {
    0x0001ea30 bhi.w 0x1eb6c                                     |             goto label_56;
                                                                 |         }
                                                                 |         /* switch table (14 cases) at 0x1ea38 */
    0x0001ea34 tbb [pc, r3]                                      |         __asm ("tbb [0x0001ea3c]");
    0x0001ea46 ldr r3, [r4], 4                                   |         r3 = *(r4);
                                                                 |         r4 += 4;
    0x0001ea4a str r3, [r2]                                      |         *(r2) = r3;
                                                                 | label_4:
    0x0001ea4c ldrb r3, [r5, 1]!                                 |         r3 = *((r5 += 1));
    0x0001ea50 adds r2, 8                                        |         r2 += 8;
    0x0001ea52 cmp r3, 0                                         |         
    0x0001ea54 bne 0x1ea2a                                       |         
                                                                 |     } while (r3 != 0);
                                                                 | label_5:
    0x0001ea56 ldr r5, [r6, 0x14]                                |     r5 = *((r6 + 0x14));
    0x0001ea58 mov r2, fp                                        |     r2 = fp;
    0x0001ea5a ldr r3, [r7, 0x24]                                |     r3 = var_24h;
    0x0001ea5c mov r0, sl                                        |     r0 = sl;
    0x0001ea5e blx r5                                            |     r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001ea60 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001ea62 bne 0x1eb28                                       |         goto label_57;
                                                                 |     }
    0x0001ea64 ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x0001ea68 add.w sb, sb, 1                                   |     sb++;
    0x0001ea6c add.w sl, sl, 0x18                                |     sl += 0x18;
    0x0001ea70 ubfx r3, r3, 0xa, 8                               |     r3 = (r3 >> 0xa) & ((1 << 8) - 1);
    0x0001ea74 cmp r3, sb                                        |     
                                                                 |     if (r3 > sb) {
    0x0001ea76 bhi 0x1e9ee                                       |         goto label_3;
                                                                 |     }
                                                                 | label_54:
    0x0001ea78 ldr r3, [r7, 0x14]                                |     r3 = var_14h;
    0x0001ea7a movs r5, 0                                        |     r5 = 0;
    0x0001ea7c ldr r1, [r7, 0x1c]                                |     r1 = var_1ch;
    0x0001ea7e mov r0, r3                                        |     r0 = r3;
    0x0001ea80 str r5, [r3]                                      |     *(r3) = r5;
    0x0001ea82 bl 0x26c00                                        |     g_value_init_from_instance ();
    0x0001ea86 ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001ea88 cmp r3, 4                                         |     
                                                                 |     if (r3 == 4) {
    0x0001ea8a beq.w 0x1ec44                                     |         goto label_58;
                                                                 |     }
    0x0001ea8e ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001ea90 add.w r6, r7, 0x58                                |     r6 += var_58h;
    0x0001ea94 mov r0, r6                                        |     r0 = r6;
    0x0001ea96 strd r5, r5, [r7, 0x58]                           |     __asm ("strd r5, r5, [var_58h]");
    0x0001ea9a strd r5, r5, [r7, 0x60]                           |     __asm ("strd r5, r5, [var_60h]");
    0x0001ea9e add.w fp, r7, 0x78                                |     
    0x0001eaa0 lsrs r0, r7, 0xd                                  |     r0 = r7 >> 0xd;
    0x0001eaa2 bic r1, r3, 1                                     |     r1 = BIT_MASK (r3, 1);
    0x0001eaa6 strd r5, r5, [r7, 0x68]                           |     __asm ("strd r5, r5, [var_68h]");
    0x0001eaaa bl 0x2698c                                        |     g_value_init ();
    0x0001eaae ldr r3, [r7, 0x14]                                |     r3 = var_14h;
    0x0001eab0 mov r0, r8                                        |     r0 = r8;
    0x0001eab2 ldrd r1, r2, [r7, 0x18]                           |     __asm ("ldrd r1, r2, [var_1ch]");
    0x0001eab6 str r3, [sp]                                      |     *(sp) = r3;
    0x0001eab8 mov r3, r6                                        |     r3 = r6;
    0x0001eaba bl 0x1a51c                                        |     fcn_0001a51c (r0, r1, r2, r3, r4, r5);
    0x0001eabe ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001eac0 ldr r0, [r7, 0x58]                                |     r0 = var_58h;
    0x0001eac2 lsl.w r8, r3, 0x1b                                |     r8 = r3 << 0x1b;
    0x0001eac6 bl 0x25228                                        |     g_type_value_table_peek ();
    0x0001eaca mov r1, r5                                        |     r1 = r5;
    0x0001eacc ldr r5, [r0, 0x18]                                |     r5 = *((r0 + 0x18));
    0x0001eace mov sb, r0                                        |     sb = r0;
    0x0001ead0 movs r2, 0x40                                     |     r2 = 0x40;
    0x0001ead2 mov r0, fp                                        |     r0 = fp;
    0x0001ead4 and r8, r8, 0x8000000                             |     r8 &= 0x8000000;
    0x0001ead8 blx 0x9db8                                        |     g_string_append_printf ();
    0x0001eadc ldrb r3, [r5]                                     |     r3 = *(r5);
    0x0001eade cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001eae0 beq.w 0x1ee84                                     |         goto label_59;
                                                                 |     }
    0x0001eae4 mov r2, fp                                        |     r2 = fp;
    0x0001eae6 rsb.w r0, r5, 1                                   |     r0 = 1 - r5;
                                                                 | label_7:
    0x0001eaea subs r3, 0x64                                     |     r3 -= 0x64;
    0x0001eaec adds r1, r0, r5                                   |     r1 = r0 + r5;
    0x0001eaee cmp r3, 0xd                                       |     
                                                                 |     if (r3 > 0xd) {
    0x0001eaf0 bhi 0x1eb88                                       |         goto label_60;
                                                                 |     }
                                                                 |     /* switch table (13 cases) at 0x1eaf6 */
    0x0001eaf2 tbb [pc, r3]                                      |     __asm ("tbb [0x0001eaf8]");
    0x0001eb04 adds r4, 7                                        |     r4 += 7;
    0x0001eb06 bic r4, r4, 7                                     |     r4 = BIT_MASK (r4, 7);
    0x0001eb0a vldmia r4!, {d16}                                 |     __asm ("vldmia r4!, {d16}");
    0x0001eb0e vstr d16, [r2]                                    |     __asm ("vstr d16, [r2]");
    0x0001eb12 b 0x1ea4c                                         |     goto label_4;
    0x0001eb14 adds r4, 7                                        |     r4 += 7;
    0x0001eb16 bic r4, r4, 7                                     |     r4 = BIT_MASK (r4, 7);
    0x0001eb1a vldmia r4!, {d16}                                 |     __asm ("vldmia r4!, {d16}");
    0x0001eb1e vstr d16, [r2]                                    |     __asm ("vstr d16, [r2]");
    0x0001eb22 b 0x1ea4c                                         |     goto label_4;
                                                                 | label_55:
    0x0001eb24 mov r1, r3                                        |     r1 = r3;
    0x0001eb26 b 0x1ea56                                         |     goto label_5;
                                                                 | label_57:
    0x0001eb28 mov r5, r0                                        |     r5 = r0;
    0x0001eb2a str r0, [sp]                                      |     *(sp) = r0;
    0x0001eb2c ldr.w r3, [pc, 0x404]                             |     
    0x0001eb30 movs r1, 0x10                                     |     r1 = 0x10;
    0x0001eb32 ldr.w r2, [pc, 0x404]                             |     
    0x0001eb36 ldr.w r0, [pc, 0x404]                             |     
    0x0001eb38 lsls r4, r0, 0x10                                 |     r4 = r0 << 0x10;
    0x0001eb3a add r3, pc                                        |     r3 = 0x3da72;
    0x0001eb3c add r2, pc                                        |     r2 = 0x3da7a;
    0x0001eb3e add r0, pc                                        |     r0 = 0x3da80;
    0x0001eb40 blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001eb44 mov r0, r5                                        |     r0 = r5;
    0x0001eb46 blx 0x9ac8                                        |     fcn_00009ac8 ();
    0x0001eb4a cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0001eb4e beq.w 0x1e5c8                                     |         goto label_6;
                                                                 |     }
    0x0001eb52 ldr r4, [r7, 0x14]                                |     r4 = var_14h;
    0x0001eb54 add.w r8, sb, sb, lsl 1                           |     r8 = sb + (sb << 1);
    0x0001eb56 lsrs r1, r1, 1                                    |     r1 >>= 1;
    0x0001eb58 add.w r8, r4, r8, lsl 3                           |     r8 = r4 + (r8 << 3);
                                                                 |     do {
    0x0001eb5c mov r0, r8                                        |         r0 = r8;
    0x0001eb5e sub.w r8, r8, 0x18                                |         r8 -= 0x18;
    0x0001eb62 bl 0x26ad0                                        |         g_value_unset ();
    0x0001eb66 cmp r4, r8                                        |         
    0x0001eb68 bne 0x1eb5c                                       |         
                                                                 |     } while (r4 != r8);
    0x0001eb6a b 0x1e5c8                                         |     goto label_6;
                                                                 | label_56:
    0x0001eb6c ldr r3, [pc, 0x3d0]                               |     
    0x0001eb6e movs r4, 0                                        |     r4 = 0;
    0x0001eb70 ldr r1, [pc, 0x3d0]                               |     
    0x0001eb72 movw r2, 0xd93                                    |     r2 = 0xd93;
    0x0001eb74 strh r3, [r2, r2]                                 |     *((r2 + r2)) = r3;
    0x0001eb76 ldr r0, [pc, 0x3d0]                               |     
    0x0001eb78 add r3, pc                                        |     
    0x0001eb7a str r4, [sp]                                      |     *(sp) = r4;
    0x0001eb7c add r1, pc                                        |     r1 = 0x3dac4;
    0x0001eb7e add.w r3, r3, 0x3bc                               |     r3 = 0x3de78;
    0x0001eb82 add r0, pc                                        |     r0 = 0x3dad0;
    0x0001eb84 blx 0x9bf0                                        |     g_array_new ();
                                                                 | label_60:
    0x0001eb88 ldr r3, [pc, 0x3c0]                               |     
    0x0001eb8a movs r4, 0                                        |     r4 = 0;
    0x0001eb8c ldr r1, [pc, 0x3c0]                               |     
    0x0001eb8e movw r2, 0xdb5                                    |     r2 = 0xdb5;
    0x0001eb92 ldr r0, [pc, 0x3c0]                               |     
    0x0001eb94 add r3, pc                                        |     
    0x0001eb96 str r4, [sp]                                      |     *(sp) = r4;
    0x0001eb98 add r1, pc                                        |     r1 = 0x3daec;
    0x0001eb9a add.w r3, r3, 0x3bc                               |     r3 = 0x3dea0;
    0x0001eb9e add r0, pc                                        |     r0 = 0x3daf8;
    0x0001eba0 blx 0x9bf0                                        |     g_array_new ();
    0x0001eba4 ldr r3, [r4], 4                                   |     r3 = *(r4);
                                                                 |     r4 += 4;
    0x0001eba8 str r3, [r2]                                      |     *(r2) = r3;
                                                                 | label_8:
    0x0001ebaa ldrb r3, [r5, 1]!                                 |     r3 = *((r5 += 1));
    0x0001ebae adds r2, 8                                        |     r2 += 8;
    0x0001ebb0 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0001ebb2 bne 0x1eaea                                       |         goto label_7;
                                                                 |     }
                                                                 | label_26:
    0x0001ebb4 ldr.w r4, [sb, 0x1c]                              |     r4 = *((sb + 0x1c));
    0x0001ebb8 mov r3, r8                                        |     r3 = r8;
    0x0001ebba mov r2, fp                                        |     r2 = fp;
    0x0001ebbc mov r0, r6                                        |     r0 = r6;
    0x0001ebbe blx r4                                            |     r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001ebc0 mov r4, r0                                        |     r4 = r0;
    0x0001ebc2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001ebc4 beq.w 0x1ee68                                     |         goto label_61;
                                                                 |     }
    0x0001ebc8 str r0, [sp]                                      |     *(sp) = r0;
    0x0001ebca movs r1, 0x10                                     |     r1 = 0x10;
    0x0001ebcc ldr r3, [pc, 0x388]                               |     
    0x0001ebce ldr r2, [pc, 0x38c]                               |     
    0x0001ebd0 ldr r0, [pc, 0x38c]                               |     
    0x0001ebd2 add r3, pc                                        |     r3 = 0x3db2e;
    0x0001ebd4 add r2, pc                                        |     r2 = 0x3db36;
    0x0001ebd6 add r0, pc                                        |     r0 = 0x3db3a;
    0x0001ebd8 blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001ebdc mov r0, r4                                        |     r0 = r4;
    0x0001ebde blx 0x9ac8                                        |     fcn_00009ac8 ();
                                                                 | label_9:
    0x0001ebe2 ldr r3, [r7, 0xc]                                 |     r3 = var_ch;
                                                                 |     if (r3 == 0) {
    0x0001ebe4 cbz r3, 0x1ebfc                                   |         goto label_62;
                                                                 |     }
    0x0001ebe6 ldr r5, [r7, 8]                                   |     r5 = var_8h_2;
    0x0001ebe8 movs r4, 0                                        |     r4 = 0;
    0x0001ebea ldr r6, [r7, 0xc]                                 |     r6 = var_ch;
                                                                 |     do {
    0x0001ebec mov r0, r5                                        |         r0 = r5;
    0x0001ebee adds r4, 1                                        |         r4++;
    0x0001ebf0 bl 0x26ad0                                        |         g_value_unset ();
    0x0001ebf4 cmp r6, r4                                        |         
    0x0001ebf6 add.w r5, r5, 0x18                                |         r5 += 0x18;
    0x0001ebfa bne 0x1ebec                                       |         
                                                                 |     } while (r6 != r4);
                                                                 | label_62:
    0x0001ebfc ldr r0, [r7, 0x14]                                |     r0 = var_14h;
    0x0001ebfe bl 0x26ad0                                        |     g_value_unset ();
    0x0001ec02 b 0x1e5c8                                         |     goto label_6;
    0x0001ec14 adds r4, 7                                        |     r4 += 7;
    0x0001ec16 bic r4, r4, 7                                     |     r4 = BIT_MASK (r4, 7);
    0x0001ec1a vldmia r4!, {d16}                                 |     __asm ("vldmia r4!, {d16}");
    0x0001ec1e vstr d16, [r2]                                    |     __asm ("vstr d16, [r2]");
    0x0001ec22 b 0x1ebaa                                         |     goto label_8;
                                                                 | label_30:
    0x0001ec24 ldr r0, [r7, 0x18]                                |     r0 = var_18h;
    0x0001ec26 movs r1, 0x10                                     |     r1 = 0x10;
    0x0001ec28 ldr r3, [pc, 0x338]                               |     
    0x0001ec2a ldr r2, [pc, 0x33c]                               |     
    0x0001ec2c strd r5, r0, [sp]                                 |     __asm ("strd r5, r0, [sp]");
    0x0001ec30 ldr r0, [pc, 0x338]                               |     
    0x0001ec32 add r3, pc                                        |     r3 = 0x3db9a;
    0x0001ec34 add r2, pc                                        |     r2 = 0x3dba2;
    0x0001ec36 add r0, pc                                        |     r0 = 0x3dba6;
    0x0001ec38 blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001ec3c mov r0, r6                                        |     r0 = r6;
    0x0001ec3e blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001ec42 b 0x1e5c8                                         |     goto label_6;
                                                                 | label_58:
    0x0001ec44 ldr r4, [r7, 0x14]                                |     r4 = var_14h;
    0x0001ec46 mov r3, r5                                        |     r3 = r5;
    0x0001ec48 ldrd r1, r2, [r7, 0x18]                           |     __asm ("ldrd r1, r2, [var_1ch]");
    0x0001ec4c mov r0, r8                                        |     r0 = r8;
    0x0001ec4e str r4, [sp]                                      |     *(sp) = r4;
    0x0001ec50 bl 0x1a51c                                        |     fcn_0001a51c (r0, r1, r2, r3, r4, r5);
    0x0001ec54 b 0x1ebe2                                         |     goto label_9;
                                                                 | label_35:
    0x0001ec56 str r2, [r7, 0x58]                                |     var_58h = r2;
    0x0001ec58 ldr r2, [r7, 0x1c]                                |     r2 = var_1ch;
    0x0001ec5a ldr r6, [r7, 0x18]                                |     r6 = var_18h;
    0x0001ec5c str r1, [r7, 0x70]                                |     var_70h = r1;
    0x0001ec5e str r2, [r7, 0x5c]                                |     var_58h_2 = r2;
    0x0001ec60 ldr r2, [r7, 0xc]                                 |     r2 = var_ch;
    0x0001ec62 strd r6, r5, [r7, 0x64]                           |     __asm ("strd r6, r5, [var_60h_2]");
    0x0001ec66 add.w r6, r7, 0x58                                |     r6 += var_58h;
    0x0001ec6a mov r5, r3                                        |     r5 = r3;
    0x0001ec6c str r6, [r0, 0x20]                                |     *((r0 + 0x20)) = r6;
    0x0001ec6e str r2, [r7, 0x60]                                |     var_60h = r2;
    0x0001ec70 movs r2, 1                                        |     r2 = 1;
    0x0001ec72 str r2, [r7, 0x6c]                                |     var_68h_2 = r2;
    0x0001ec74 ldr r2, [r7, 0x20]                                |     r2 = var_20h;
    0x0001ec76 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0001ec78 bne.w 0x1e6e4                                     |         goto label_10;
                                                                 |     }
    0x0001ec7c blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001ec80 ldr r5, [r7, 0x20]                                |     r5 = var_20h;
    0x0001ec82 b 0x1e718                                         |     goto label_11;
                                                                 | label_52:
    0x0001ec84 strd r1, r2, [r7, 0x20]                           |     __asm ("strd r1, r2, [var_20h]");
    0x0001ec88 str.w sb, [r7, 0xc]                               |     __asm ("str.w sb, [var_ch]");
                                                                 | label_47:
    0x0001ec8c ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001ec8e str r3, [r7, 0x14]                                |     var_14h = r3;
                                                                 | label_18:
    0x0001ec90 ldr r3, [r7, 0xc]                                 |     r3 = var_ch;
    0x0001ec92 ldr r2, [r7, 0x24]                                |     r2 = var_24h;
    0x0001ec94 cmp r2, 0                                         |     
    0x0001ec96 ite ne                                            |     
                                                                 |     if (r2 == 0) {
    0x0001ec98 movne r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r2 != 0) {
    0x0001ec9a andeq r3, r3, 1                                   |         r3 &= 1;
                                                                 |     }
    0x0001ec9e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0001eca0 bne.w 0x1ee94                                     |         goto label_63;
                                                                 |     }
    0x0001eca2 strh r0, [r7, 6]                                  |     *((r7 + 6)) = r0;
    0x0001eca4 ldr r3, [r7, 0x24]                                |     r3 = var_24h;
    0x0001eca6 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0001eca8 bne.w 0x1e988                                     |         goto label_12;
                                                                 |     }
    0x0001ecac b 0x1e994                                         |     goto label_13;
                                                                 | label_45:
    0x0001ecae adds r4, 4                                        |     r4 += 4;
                                                                 | label_17:
    0x0001ecb0 ldrb r3, [r2, 1]!                                 |     r3 = *((r2 += 1));
    0x0001ecb4 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0001ecb6 bne.w 0x1e80e                                     |         goto label_14;
                                                                 |     }
                                                                 | label_44:
    0x0001ecba ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x0001ecbe add.w sb, sb, 1                                   |     sb++;
    0x0001ecc2 ubfx r3, r3, 0xa, 8                               |     r3 = (r3 >> 0xa) & ((1 << 8) - 1);
    0x0001ecc6 cmp r3, sb                                        |     
                                                                 |     if (r3 > sb) {
    0x0001ecc8 bhi.w 0x1e7f4                                     |         goto label_15;
                                                                 |     }
                                                                 | label_43:
    0x0001eccc ldr r3, [r7, 8]                                   |     r3 = var_8h_2;
    0x0001ecce add.w fp, r7, 0x78                                |     
    0x0001ecd2 ldr r0, [r7, 0x40]                                |     r0 = var_40h;
    0x0001ecd4 lsl.w sb, r3, 0x1b                                |     sb = r3 << 0x1b;
    0x0001ecd6 ldr r3, [r0, 0x1c]                                |     r3 = *((r0 + 0x1c));
    0x0001ecd8 bl 0x25228                                        |     g_type_value_table_peek ();
    0x0001ecdc ldr r5, [r0, 0x18]                                |     r5 = *((r0 + 0x18));
    0x0001ecde mov r6, r0                                        |     r6 = r0;
    0x0001ece0 movs r2, 0x40                                     |     r2 = 0x40;
    0x0001ece2 movs r1, 0                                        |     r1 = 0;
    0x0001ece4 mov r0, fp                                        |     r0 = fp;
    0x0001ece6 and sb, sb, 0x8000000                             |     sb &= 0x8000000;
    0x0001ece8 ldr r0, [r0, 0x10]                                |     r0 = *((r0 + 0x10));
    0x0001ecea blx 0x9db8                                        |     g_string_append_printf ();
    0x0001ecee ldrb r3, [r5]                                     |     r3 = *(r5);
    0x0001ecf0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001ecf2 beq.w 0x1ee88                                     |         goto label_64;
                                                                 |     }
    0x0001ecf6 mov r2, fp                                        |     r2 = fp;
    0x0001ecf8 rsb.w r0, r5, 1                                   |     r0 = 1 - r5;
                                                                 |     do {
    0x0001ecfc subs r3, 0x64                                     |         r3 -= 0x64;
    0x0001ecfe adds r1, r0, r5                                   |         r1 = r0 + r5;
    0x0001ed00 cmp r3, 0xd                                       |         
                                                                 |         if (r3 <= 0xd) {
    0x0001ed02 bhi 0x1ed16                                       |             
                                                                 |             /* switch table (13 cases) at 0x1ed08 */
    0x0001ed04 tbb [pc, r3]                                      |             __asm ("tbb [0x0001ed0c]");
                                                                 |         }
    0x0001ed16 ldr r3, [pc, 0x258]                               |         
    0x0001ed18 movs r4, 0                                        |         r4 = 0;
    0x0001ed1a ldr r1, [pc, 0x258]                               |         
    0x0001ed1c movw r2, 0xd6d                                    |         r2 = 0xd6d;
    0x0001ed1e strh r5, [r5, r1]                                 |         *((r5 + r1)) = r5;
    0x0001ed20 ldr r0, [pc, 0x254]                               |         
    0x0001ed22 add r3, pc                                        |         
    0x0001ed24 str r4, [sp]                                      |         *(sp) = r4;
    0x0001ed26 add r1, pc                                        |         r1 = 0x3dca0;
    0x0001ed28 add.w r3, r3, 0x3bc                               |         r3 = 0x3e054;
    0x0001ed2c add r0, pc                                        |         r0 = 0x3dca8;
    0x0001ed2e blx 0x9bf0                                        |         g_array_new ();
    0x0001ed32 ldr r3, [r4], 4                                   |         r3 = *(r4);
                                                                 |         r4 += 4;
    0x0001ed36 str r3, [r2]                                      |         *(r2) = r3;
                                                                 | label_16:
    0x0001ed38 ldrb r3, [r5, 1]!                                 |         r3 = *((r5 += 1));
    0x0001ed3c adds r2, 8                                        |         r2 += 8;
    0x0001ed3e cmp r3, 0                                         |         
    0x0001ed40 bne 0x1ecfc                                       |         
                                                                 |     } while (r3 != 0);
                                                                 | label_27:
    0x0001ed42 ldr r4, [r6, 0x1c]                                |     r4 = *((r6 + 0x1c));
    0x0001ed44 mov r3, sb                                        |     r3 = sb;
    0x0001ed46 ldr r0, [r7, 0x14]                                |     r0 = var_14h;
    0x0001ed48 mov r2, fp                                        |     r2 = fp;
    0x0001ed4a blx r4                                            |     r0 = uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0001ed4c mov r4, r0                                        |     r4 = r0;
    0x0001ed4e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001ed50 beq.w 0x1ee7c                                     |         goto label_65;
                                                                 |     }
    0x0001ed54 str r0, [sp]                                      |     *(sp) = r0;
    0x0001ed56 movs r1, 0x10                                     |     r1 = 0x10;
    0x0001ed58 ldr r3, [pc, 0x220]                               |     
    0x0001ed5a ldr r2, [pc, 0x224]                               |     
    0x0001ed5c ldr r0, [pc, 0x224]                               |     
    0x0001ed5e add r3, pc                                        |     r3 = 0x3dcde;
    0x0001ed60 add r2, pc                                        |     r2 = 0x3dce6;
    0x0001ed62 add r0, pc                                        |     r0 = 0x3dcea;
    0x0001ed64 blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001ed66 invalid                                           |     
    0x0001ed6a blx 0x9ac8                                        |     fcn_00009ac8 ();
    0x0001ed6c invalid                                           |     
                                                                 | label_25:
    0x0001ed6e ldr r3, [r7, 0x24]                                |     r3 = var_24h;
    0x0001ed70 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001ed72 beq.w 0x1e5c8                                     |         goto label_6;
                                                                 |     }
    0x0001ed76 ldr r0, [r7, 0x1c]                                |     r0 = var_1ch;
    0x0001ed78 bl 0x11684                                        |     g_object_unref ();
    0x0001ed7c b 0x1e5c8                                         |     goto label_6;
    0x0001ed8e adds r4, 7                                        |     r4 += 7;
    0x0001ed90 bic r4, r4, 7                                     |     r4 = BIT_MASK (r4, 7);
    0x0001ed94 vldmia r4!, {d16}                                 |     __asm ("vldmia r4!, {d16}");
    0x0001ed98 vstr d16, [r2]                                    |     __asm ("vstr d16, [r2]");
    0x0001ed9c b 0x1ed38                                         |     goto label_16;
                                                                 | label_46:
    0x0001ed9e adds r4, 7                                        |     r4 += 7;
    0x0001eda0 bic r4, r4, 7                                     |     r4 = BIT_MASK (r4, 7);
    0x0001eda4 adds r4, 8                                        |     r4 += 8;
    0x0001eda6 b 0x1ecb0                                         |     goto label_17;
                                                                 | label_32:
    0x0001eda8 ldr.w r0, [r8, 0x2c]                              |     r0 = *((r8 + 0x2c));
    0x0001edac bl 0xe53c                                         |     fcn_0000e53c (r0);
    0x0001edb0 str r0, [r7, 0x10]                                |     var_10h = r0;
    0x0001edb2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001edb4 beq 0x1ee4c                                       |         goto label_66;
                                                                 |     }
    0x0001edb6 ldr.w r3, [r8, 0x2c]                              |     r3 = *((r8 + 0x2c));
    0x0001edba ldr r0, [r7, 0x1c]                                |     r0 = var_1ch;
    0x0001edbc str r3, [r7, 0x24]                                |     var_24h = r3;
    0x0001edbe ldrb.w r3, [r8, 0xe]                              |     r3 = *((r8 + 0xe));
    0x0001edc2 tst.w r3, 8                                       |     
    0x0001edc6 ite ne                                            |     
                                                                 |     if ((r3 & 8) == 0) {
    0x0001edc8 movne r5, 2                                       |         r5 = 2;
                                                                 |     }
                                                                 |     if ((r3 & 8) != 0) {
    0x0001edca moveq r5, 1                                       |         r5 = 1;
                                                                 |     }
    0x0001edcc bl 0x124f0                                        |     r0 = fcn_000124f0 ();
    0x0001edd0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001edd2 bne 0x1ee8c                                       |         goto label_67;
                                                                 |     }
    0x0001edd4 movs r3, 1                                        |     r3 = 1;
    0x0001edd6 str r0, [r7, 0x20]                                |     var_20h = r0;
    0x0001edd8 str r3, [r7, 0xc]                                 |     var_ch = r3;
    0x0001edda str r3, [r7, 0x14]                                |     var_14h = r3;
    0x0001eddc b 0x1ec90                                         |     goto label_18;
                                                                 | label_39:
    0x0001edde ldr r3, [r7, 0x24]                                |     r3 = var_24h;
    0x0001ede0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001ede2 beq.w 0x1e76c                                     |         goto label_19;
                                                                 |     }
    0x0001ede6 ldr r0, [r7, 0x1c]                                |     r0 = var_1ch;
    0x0001ede8 bl 0x11308                                        |     g_object_ref ();
    0x0001edec ldr.w r2, [r8, 0xc]                               |     r2 = *((r8 + 0xc));
    0x0001edf0 mov r3, sl                                        |     r3 = sl;
    0x0001edf2 ldr.w r0, [r8, 0x10]                              |     r0 = *((r8 + 0x10));
    0x0001edf6 mov r1, r5                                        |     r1 = r5;
    0x0001edf8 ubfx r2, r2, 0xa, 8                               |     r2 = (r2 >> 0xa) & ((1 << 8) - 1);
    0x0001edfc strd r2, r0, [sp]                                 |     __asm ("strd r2, r0, [sp]");
    0x0001ee00 ldr r2, [r7, 0x1c]                                |     r2 = var_1ch;
    0x0001ee02 ldr r0, [r7, 0x24]                                |     r0 = var_24h;
    0x0001ee04 bl 0xe580                                         |     fcn_0000e580 (r0, r1, r2, r3, r4);
    0x0001ee06 invalid                                           |     
                                                                 | label_42:
    0x0001ee0a ldr r2, [r7, 0x20]                                |     r2 = var_20h;
    0x0001ee0c subs r3, 1                                        |     r3--;
    0x0001ee0e str r3, [r2, 0x14]                                |     *((r2 + 0x14)) = r3;
    0x0001ee10 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0001ee12 bne.w 0x1e7c2                                     |         goto label_20;
                                                                 |     }
    0x0001ee16 ldr r0, [r7, 0xc]                                 |     r0 = var_ch;
    0x0001ee18 ldr r1, [r7, 0x1c]                                |     r1 = var_1ch;
    0x0001ee1a bl 0x1a004                                        |     fcn_0001a004 (r0, r1, r2);
    0x0001ee1c invalid                                           |     
                                                                 | label_36:
    0x0001ee20 blx 0x9ad8                                        |     fcn_00009ad8 ();
                                                                 | label_38:
    0x0001ee24 ldr r0, [r7, 0x14]                                |     r0 = var_14h;
    0x0001ee26 mov r1, fp                                        |     r1 = fp;
    0x0001ee28 bl 0x2698c                                        |     g_value_init ();
    0x0001ee2c b 0x1e718                                         |     goto label_11;
                                                                 | label_37:
    0x0001ee2e ldr r2, [r7, 0x20]                                |     r2 = var_20h;
    0x0001ee30 adds r3, 1                                        |     r3++;
    0x0001ee32 str r3, [r2, 0x14]                                |     *((r2 + 0x14)) = r3;
    0x0001ee34 b 0x1e706                                         |     goto label_21;
                                                                 | label_49:
    0x0001ee36 ldrd r4, r5, [r7, 4]                              |     __asm ("ldrd r4, r5, [var_8h_2]");
    0x0001ee3a ldr.w r8, [r7]                                    |     r8 = *(r7);
    0x0001ee3e ldr.w sl, [r7, 0x20]                              |     sl = var_20h;
                                                                 | label_48:
    0x0001ee42 ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001ee44 str r3, [r7, 0x14]                                |     var_14h = r3;
    0x0001ee46 movs r3, 0                                        |     r3 = 0;
    0x0001ee48 str r3, [r7, 0x20]                                |     var_20h = r3;
    0x0001ee4a b 0x1ec90                                         |     goto label_18;
                                                                 | label_66:
    0x0001ee4c ldr r0, [r7, 0x1c]                                |     r0 = var_1ch;
    0x0001ee4e bl 0x124f0                                        |     r0 = fcn_000124f0 ();
    0x0001ee52 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001ee54 beq.w 0x1e99c                                     |         goto label_22;
                                                                 |     }
    0x0001ee58 ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001ee5a movs r5, 1                                        |     r5 = 1;
    0x0001ee5c str r3, [r7, 0xc]                                 |     var_ch = r3;
    0x0001ee5e str r3, [r7, 0x24]                                |     var_24h = r3;
    0x0001ee60 b 0x1e8b0                                         |     goto label_23;
                                                                 | label_41:
    0x0001ee62 ldr r3, [r7, 0x58]                                |     r3 = var_58h;
    0x0001ee64 str r3, [r5, 0x20]                                |     *((r5 + 0x20)) = r3;
    0x0001ee66 b 0x1e79c                                         |     goto label_24;
                                                                 | label_61:
    0x0001ee68 mov r0, r6                                        |     r0 = r6;
    0x0001ee6a bl 0x26ad0                                        |     g_value_unset ();
    0x0001ee6e b 0x1ebe2                                         |     goto label_9;
                                                                 |     do {
                                                                 | label_34:
    0x0001ee70 ldr r0, [pc, 0x114]                               |         
    0x0001ee72 add r0, pc                                        |         r0 = 0x3ddfe;
    0x0001ee74 blx 0x9ad8                                        |         fcn_00009ad8 ();
    0x0001ee78 b.w 0x1e5c8                                       |         goto label_6;
                                                                 | label_65:
    0x0001ee7c ldr r0, [r7, 0x14]                                |         r0 = var_14h;
    0x0001ee7e bl 0x26ad0                                        |         g_value_unset ();
    0x0001ee82 b 0x1ed6e                                         |         goto label_25;
                                                                 | label_59:
    0x0001ee84 mov r1, r3                                        |         r1 = r3;
    0x0001ee86 b 0x1ebb4                                         |         goto label_26;
                                                                 | label_64:
    0x0001ee88 mov r1, r3                                        |         r1 = r3;
    0x0001ee8a b 0x1ed42                                         |         goto label_27;
                                                                 | label_67:
    0x0001ee8c movs r3, 1                                        |         r3 = 1;
    0x0001ee8e strd r3, r3, [r7, 0xc]                            |         __asm ("strd r3, r3, [var_10h]");
    0x0001ee92 b 0x1e8b0                                         |         goto label_23;
                                                                 | label_63:
    0x0001ee94 ldr.w r3, [r8, 0x14]                              |         r3 = *((r8 + 0x14));
    0x0001ee98 cmp r3, 4                                         |         
    0x0001ee9a beq 0x1ee70                                       |         
                                                                 |     } while (r3 == 4);
    0x0001ee9c movs r3, 0                                        |     r3 = 0;
    0x0001ee9e str r3, [r7, 0x24]                                |     var_24h = r3;
    0x0001eea0 b 0x1e994                                         |     goto label_13;
                                                                 | label_40:
    0x0001eea2 ldr r3, [pc, 0xe8]                                |     
    0x0001eea4 movs r4, 0                                        |     r4 = 0;
    0x0001eea6 ldr r1, [pc, 0xe8]                                |     
    0x0001eea8 movw r2, 0x372                                    |     r2 = 0x372;
    0x0001eeac ldr r0, [pc, 0xe4]                                |     
    0x0001eeae add r3, pc                                        |     r3 = 0x3de40;
    0x0001eeb0 str r4, [sp]                                      |     *(sp) = r4;
    0x0001eeb2 add r1, pc                                        |     r1 = 0x3de48;
    0x0001eeb4 adds r3, 0xac                                     |     r3 += 0xac;
    0x0001eeb6 add r0, pc                                        |     r0 = 0x3de4e;
    0x0001eeb8 blx 0x9bf0                                        |     g_array_new ();
                                                                 | label_50:
    0x0001eebc ldr r3, [r7, 0x10]                                |     r3 = var_10h;
    0x0001eebe str.w sb, [r7, 0x20]                              |     __asm ("str.w sb, [var_20h]");
    0x0001eec2 str r3, [r7, 0x14]                                |     var_14h = r3;
    0x0001eec4 b 0x1ec90                                         |     goto label_18;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x1e1b0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.g_signal_has_handler_pending ()                  | void g_signal_has_handler_pending (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0001e1b0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0001e1b4 sub sp, 0x24                                      |     
    0x0001e1b6 mov r5, r0                                        |     r5 = r0;
    0x0001e1b8 mov r8, r1                                        |     r8 = r1;
    0x0001e1ba mov r4, r2                                        |     r4 = r2;
    0x0001e1bc mov r7, r3                                        |     r7 = r3;
    0x0001e1be bl 0x24e2c                                        |     r0 = g_type_check_instance ();
                                                                 |     if (r0 == 0) {
    0x0001e1c2 cbnz r0, 0x1e1e2                                  |         
    0x0001e1c4 ldr r1, [pc, 0x1b0]                               |         
    0x0001e1c6 mov r6, r0                                        |         r6 = r0;
    0x0001e1c8 ldr r2, [pc, 0x1b0]                               |         
    0x0001e1ca ldr r0, [pc, 0x1b4]                               |         
    0x0001e1cc add r1, pc                                        |         
    0x0001e1ce add r2, pc                                        |         r2 = 0x3c54e;
    0x0001e1d0 add.w r1, r1, 0x38c                               |         r1 = 0x3c8d4;
    0x0001e1d4 add r0, pc                                        |         r0 = 0x3c55a;
    0x0001e1d6 blx 0x9c0c                                        |         fcn_00009c0c ();
                                                                 | label_0:
    0x0001e1da mov r0, r6                                        |         r0 = r6;
    0x0001e1dc add sp, 0x24                                      |         
    0x0001e1de pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0001e1e0 ldrh r0, [r6, 0x3e]                               |         r0 = *((r6 + 0x3e));
                                                                 |     }
    0x0001e1e2 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0001e1e6 beq 0x1e25c                                       |         goto label_5;
                                                                 |     }
    0x0001e1e8 ldr r6, [pc, 0x198]                               |     
    0x0001e1ea add r6, pc                                        |     r6 = 0x3c572;
    0x0001e1ec mov r0, r6                                        |     r0 = r6;
    0x0001e1ee blx 0x9e5c                                        |     fcn_00009e5c ();
    0x0001e1f2 ldr r3, [r6, 0x18]                                |     r3 = *(0x3c58a);
    0x0001e1f4 cmp r8, r3                                        |     
    0x0001e1f6 itet lo                                           |     
                                                                 |     if (r8 >= r3) {
    0x0001e1f8 ldrlo r3, [r6, 0x1c]                              |         r3 = *((r6 + 0x1c));
                                                                 |     }
                                                                 |     if (r8 < r3) {
    0x0001e1fa movhs sb, 0                                       |         sb = 0;
                                                                 |     }
                                                                 |     if (r8 < r3) {
    0x0001e1fe ldr.w sb, [r3, r8, lsl 2]                         |         sb = *(0x3c58a);
                                                                 |     }
    0x0001e202 cmp r4, 0                                         |     
    0x0001e204 bne 0x1e27a                                       |     
                                                                 |     while (r6 != r6) {
    0x0001e206 movs r1, 1                                        |         r1 = 1;
    0x0001e208 cmp r7, 0                                         |         
    0x0001e20a str r1, [sp, 0xc]                                 |         var_ch = r1;
    0x0001e20c mov.w r1, 0                                       |         r1 = 0;
    0x0001e210 strd r1, r1, [sp, 4]                              |         __asm ("strd r1, r1, [var_4h]");
    0x0001e214 mov r3, r4                                        |         r3 = r4;
    0x0001e216 str r1, [sp]                                      |         *(sp) = r1;
    0x0001e218 mov r2, r8                                        |         r2 = r8;
    0x0001e21a ite ne                                            |         
                                                                 |         if (r7 == 0) {
    0x0001e21c movne r1, 3                                       |             r1 = 3;
                                                                 |         }
                                                                 |         if (r7 != 0) {
    0x0001e21e moveq r1, 0x23                                    |             r1 = 0x23;
                                                                 |         }
    0x0001e220 mov r0, r5                                        |         r0 = r5;
    0x0001e222 bl 0x19d38                                        |         r0 = fcn_00019d38 (r0, r1, r2, r3, r4, r5, r6);
    0x0001e226 mov r4, r0                                        |         r4 = r0;
    0x0001e228 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0001e22a beq 0x1e2bc                                       |             goto label_6;
                                                                 |         }
    0x0001e22c ldr r2, [r0]                                      |         r2 = *(r0);
    0x0001e22e ldr r0, [r0, 8]                                   |         r0 = *((r0 + 8));
    0x0001e230 ldr r3, [r2, 0x14]                                |         r3 = *((r2 + 0x14));
    0x0001e232 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0001e234 beq 0x1e2a8                                       |             goto label_7;
                                                                 |         }
    0x0001e236 subs r3, 1                                        |         r3--;
    0x0001e238 str r3, [r2, 0x14]                                |         *((r2 + 0x14)) = r3;
                                                                 |         if (r3 == 0) {
    0x0001e23a cbnz r3, 0x1e242                                  |             
    0x0001e23c mov r1, r5                                        |             r1 = r5;
    0x0001e23e bl 0x1a004                                        |             fcn_0001a004 (r0, r1, r2);
                                                                 |         }
                                                                 | label_1:
    0x0001e242 mov r1, r4                                        |         r1 = r4;
    0x0001e244 movs r0, 0xc                                      |         r0 = 0xc;
    0x0001e246 movs r6, 1                                        |         r6 = 1;
    0x0001e248 blx 0x9f64                                        |         fcn_00009f64 ();
                                                                 | label_2:
    0x0001e24c ldr r0, [pc, 0x138]                               |         
    0x0001e24e add r0, pc                                        |         r0 = 0x3c5da;
    0x0001e250 blx 0x9ad8                                        |         fcn_00009ad8 ();
    0x0001e254 mov r0, r6                                        |         r0 = r6;
    0x0001e256 add sp, 0x24                                      |         
    0x0001e258 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_5:
    0x0001e25c ldr r1, [pc, 0x12c]                               |         
    0x0001e25e mov r6, r8                                        |         r6 = r8;
    0x0001e260 ldr r2, [pc, 0x12c]                               |         
    0x0001e262 ldr r0, [pc, 0x130]                               |         
    0x0001e264 add r1, pc                                        |         
    0x0001e266 add r2, pc                                        |         r2 = 0x3c5fa;
    0x0001e268 add.w r1, r1, 0x38c                               |         r1 = 0x3c980;
    0x0001e26c add r0, pc                                        |         r0 = 0x3c606;
    0x0001e26e blx 0x9c0c                                        |         fcn_00009c0c ();
    0x0001e272 mov r0, r6                                        |         r0 = r6;
    0x0001e274 add sp, 0x24                                      |         
    0x0001e276 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0001e27a ldrh.w r6, [sb, 0xc]                              |         r6 = *((sb + 0xc));
    0x0001e27e ubfx r6, r6, 1, 9                                 |         r6 = (r6 >> 1) & ((1 << 9) - 1);
    0x0001e282 ands r6, r6, 0x10                                 |         r6 &= 0x10;
    0x0001e286 bne 0x1e206                                       |         
                                                                 |     }
    0x0001e288 ldr r3, [pc, 0x10c]                               |     
    0x0001e28a movs r1, 0x10                                     |     r1 = 0x10;
    0x0001e28c ldr r2, [pc, 0x10c]                               |     
    0x0001e28e ldr r0, [pc, 0x110]                               |     
    0x0001e290 add r3, pc                                        |     r3 = 0x3c62c;
    0x0001e292 strd r8, r4, [sp]                                 |     __asm ("strd r8, r4, [sp]");
    0x0001e296 add r2, pc                                        |     r2 = 0x3c636;
    0x0001e298 add r0, pc                                        |     r0 = 0x3c63e;
    0x0001e29a blx 0x9e0c                                        |     g_mutex_lock ();
    0x0001e29e ldr r0, [pc, 0x104]                               |     
    0x0001e2a0 add r0, pc                                        |     r0 = 0x3c64a;
    0x0001e2a2 blx 0x9ad8                                        |     fcn_00009ad8 ();
    0x0001e2a6 b 0x1e1da                                         |     goto label_0;
                                                                 | label_7:
    0x0001e2a8 ldr r1, [pc, 0xfc]                                |     
    0x0001e2aa ldr r2, [pc, 0x100]                               |     
    0x0001e2ac ldr r0, [pc, 0x100]                               |     
    0x0001e2ae add r1, pc                                        |     r1 = 0x3c65a;
    0x0001e2b0 add r2, pc                                        |     r2 = 0x3c662;
    0x0001e2b2 adds r1, 0x68                                     |     r1 += 0x68;
    0x0001e2b4 add r0, pc                                        |     r0 = 0x3c668;
    0x0001e2b6 blx 0x9c0c                                        |     fcn_00009c0c ();
    0x0001e2ba b 0x1e242                                         |     goto label_1;
                                                                 | label_6:
    0x0001e2bc ldr.w r6, [sb, 0x18]                              |     r6 = *((sb + 0x18));
    0x0001e2c0 ldr r3, [r5]                                      |     r3 = *(r5);
    0x0001e2c2 ldr r0, [r3]                                      |     r0 = *(r3);
    0x0001e2c4 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0001e2c6 beq 0x1e24c                                       |         goto label_2;
                                                                 |     }
    0x0001e2c8 ldr r3, [r6]                                      |     r3 = *(r6);
    0x0001e2ca cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x0001e2cc bne 0x1e2d2                                       |         
    0x0001e2ce ldr r3, [r6, 8]                                   |         r3 = *((r6 + 8));
                                                                 |         if (r3 == 0) {
    0x0001e2d0 cbz r3, 0x1e314                                   |             goto label_8;
                                                                 |         }
                                                                 |     }
    0x0001e2d2 ldr r3, [pc, 0xe0]                                |     
    0x0001e2d4 str r0, [sp, 0x18]                                |     var_18h = r0;
    0x0001e2d6 ldr.w sl, [r6]                                    |     sl = *(r6);
    0x0001e2da add r3, pc                                        |     r3 = 0x3c694;
    0x0001e2dc ldrd r7, r8, [r3, 0xc]                            |     __asm ("ldrd r7, r8, [r3, 0xc]");
    0x0001e2e0 cmp.w sl, 0                                       |     
    0x0001e2e2 lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 == r0) {
    0x0001e2e4 beq 0x1e31e                                       |         goto label_9;
                                                                 |     }
    0x0001e2e6 mov.w fp, 0                                       |     
    0x0001e2ea add.w sb, sp, 0x18                                |     sb += var_18h;
    0x0001e2ee b 0x1e2fc                                         |     
                                                                 |     while (r0 != 0) {
    0x0001e2f0 ite ge                                            |         
                                                                 |         if (r0 < r0) {
    0x0001e2f2 addge fp, r4, 1                                   |             
                                                                 |         }
                                                                 |         if (r0 < r0) {
    0x0001e2f6 mov sl, r4                                        |             sl = r4;
                                                                 |         }
    0x0001e2f8 cmp fp, sl                                        |         
                                                                 |         if (fp >= sl) {
    0x0001e2fa bhs 0x1e31c                                       |             goto label_10;
                                                                 |         }
    0x0001e2fc add.w r4, fp, sl                                  |         r4 = fp + sl;
    0x0001e300 mov r0, sb                                        |         r0 = sb;
    0x0001e302 lsrs r4, r4, 1                                    |         r4 >>= 1;
    0x0001e304 mla r5, r4, r7, r6                                |         __asm ("mla r5, r4, r7, r6");
    0x0001e308 adds r5, 8                                        |         r5 += 8;
    0x0001e30a mov r1, r5                                        |         r1 = r5;
    0x0001e30c blx r8                                            |         r0 = uint32_t (*r8)(uint32_t, uint32_t) (r0, r1);
    0x0001e30e cmp r0, 0                                         |         
    0x0001e310 bne 0x1e2f0                                       |         
                                                                 |     }
                                                                 | label_3:
    0x0001e312 ldr r3, [r5]                                      |     r3 = *(r5);
                                                                 | label_8:
    0x0001e314 subs r6, r3, 0                                    |     r6 = r3 - 0;
    0x0001e316 it ne                                             |     
                                                                 |     if (r6 == r3) {
    0x0001e318 movne r6, 1                                       |         r6 = 1;
                                                                 |     }
    0x0001e31a b 0x1e24c                                         |     goto label_2;
                                                                 | label_10:
    0x0001e31c ldr r0, [sp, 0x18]                                |     r0 = var_18h;
                                                                 |     if (r0 == 0) {
                                                                 | label_9:
    0x0001e31e cbz r0, 0x1e372                                   |         goto label_11;
                                                                 |     }
    0x0001e320 ldr r3, [pc, 0x94]                                |     
    0x0001e322 add.w sb, sp, 0x18                                |     sb += var_18h;
    0x0001e326 add r3, pc                                        |     r3 = 0x3c6e2;
    0x0001e328 str r3, [sp, 0x14]                                |     var_14h = r3;
                                                                 | label_4:
    0x0001e32a bl 0x231ac                                        |     g_type_parent ();
    0x0001e32e ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x0001e330 str r0, [sp, 0x18]                                |     var_18h = r0;
    0x0001e332 ldr.w sl, [r6]                                    |     sl = *(r6);
    0x0001e336 ldr r7, [r3, 0xc]                                 |     r7 = *((r3 + 0xc));
    0x0001e338 ldr.w r8, [r3, 0x10]                              |     r8 = *((r3 + 0x10));
    0x0001e33c cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x0001e340 beq 0x1e36e                                       |         goto label_12;
                                                                 |     }
    0x0001e342 mov.w fp, 0                                       |     
    0x0001e346 b 0x1e354                                         |     
                                                                 |     while (r0 != 0) {
    0x0001e348 ite ge                                            |         
                                                                 |         if (sl < 0) {
    0x0001e34a addge fp, r4, 1                                   |             
                                                                 |         }
                                                                 |         if (sl < 0) {
    0x0001e34e mov sl, r4                                        |             sl = r4;
                                                                 |         }
    0x0001e350 cmp fp, sl                                        |         
                                                                 |         if (fp >= sl) {
    0x0001e352 bhs 0x1e36c                                       |             goto label_13;
                                                                 |         }
    0x0001e354 add.w r4, sl, fp                                  |         r4 = sl + fp;
    0x0001e358 mov r0, sb                                        |         r0 = sb;
    0x0001e35a lsrs r4, r4, 1                                    |         r4 >>= 1;
    0x0001e35c mla r5, r4, r7, r6                                |         __asm ("mla r5, r4, r7, r6");
    0x0001e360 adds r5, 8                                        |         r5 += 8;
    0x0001e362 mov r1, r5                                        |         r1 = r5;
    0x0001e364 blx r8                                            |         r0 = uint32_t (*r8)(uint32_t, uint32_t) (r0, r1);
    0x0001e366 cmp r0, 0                                         |         
    0x0001e368 bne 0x1e348                                       |         
                                                                 |     }
    0x0001e36a b 0x1e312                                         |     goto label_3;
                                                                 | label_13:
    0x0001e36c ldr r0, [sp, 0x18]                                |     r0 = var_18h;
                                                                 | label_12:
    0x0001e36e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001e370 bne 0x1e32a                                       |         goto label_4;
                                                                 |     }
                                                                 | label_11:
    0x0001e372 movs r6, 0                                        |     r6 = 0;
    0x0001e374 b 0x1e24c                                         |     goto label_2;
                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x1c618 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) sym.g_signal_override_class_closure ()                   | void g_signal_override_class_closure (int16_t arg1, int16_t arg2, uint32_t arg3) {
                                                                     |     int32_t var_0h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     uint32_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x0001c618 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0001c61c sub sp, 0x2c                                          |     
    0x0001c61e str r1, [sp, 0x10]                                    |     var_10h = r1;
    0x0001c620 str r2, [sp, 0x18]                                    |     var_18h = r2;
    0x0001c622 str r0, [sp, 0xc]                                     |     var_ch = r0;
                                                                     |     if (r0 == 0) {
    0x0001c624 cbnz r0, 0x1c640                                      |         
    0x0001c626 ldr r1, [pc, 0x1b8]                                   |         
    0x0001c628 ldr r2, [pc, 0x1b8]                                   |         
    0x0001c62a ldr r0, [pc, 0x1bc]                                   |         
    0x0001c62c add r1, pc                                            |         
    0x0001c62e add r2, pc                                            |         r2 = 0x38e16;
    0x0001c630 add.w r1, r1, 0x1d0                                   |         r1 = 0x38fe2;
    0x0001c634 add r0, pc                                            |         r0 = 0x38e22;
    0x0001c636 add sp, 0x2c                                          |         
    0x0001c638 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}            |         
    0x0001c63c b.w 0x9c08                                            |         void (*0x9c08)() ();
                                                                     |     }
    0x0001c640 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0001c642 beq 0x1c712                                           |         goto label_7;
                                                                     |     }
    0x0001c644 ldr r4, [pc, 0x1a4]                                   |     
    0x0001c646 add r4, pc                                            |     r4 = 0x38e36;
    0x0001c648 mov r0, r4                                            |     r0 = r4;
    0x0001c64a blx 0x9e5c                                            |     fcn_00009e5c ();
    0x0001c64e ldr r3, [r4, 0x18]                                    |     r3 = *(0x38e4e);
    0x0001c650 ldr r2, [sp, 0xc]                                     |     r2 = var_ch;
    0x0001c652 cmp r2, r3                                            |     
                                                                     |     if (r2 >= r3) {
    0x0001c654 bhs.w 0x1c7d4                                         |         goto label_8;
                                                                     |     }
    0x0001c658 ldr r3, [r4, 0x1c]                                    |     r3 = *((r4 + 0x1c));
    0x0001c65a ldr.w r3, [r3, r2, lsl 2]                             |     offset_0 = r2 << 2;
                                                                     |     r3 = *((r3 + offset_0));
    0x0001c65e mov r4, r3                                            |     r4 = r3;
    0x0001c660 mov r0, r3                                            |     r0 = r3;
    0x0001c662 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0001c664 bl 0x198c4                                            |     fcn_000198c4 (r0);
    0x0001c668 ldr r1, [r4, 4]                                       |     r1 = *((r4 + 4));
    0x0001c66a ldr r4, [sp, 0x10]                                    |     r4 = var_10h;
    0x0001c66c mov r0, r4                                            |     r0 = r4;
    0x0001c66e bl 0x23254                                            |     r0 = g_type_is_a ();
                                                                     |     if (r0 == 0) {
    0x0001c672 cbnz r0, 0x1c6a2                                      |         
    0x0001c674 cmp r4, 0                                             |         
                                                                     |         if (r4 != 0) {
    0x0001c676 bne 0x1c72c                                           |             goto label_9;
                                                                     |         }
    0x0001c678 ldr r0, [pc, 0x174]                                   |         
    0x0001c67a add r0, pc                                            |         r0 = 0x38e6e;
                                                                     | label_1:
    0x0001c67c ldr r4, [sp, 0xc]                                     |         r4 = var_ch;
    0x0001c67e movs r1, 0x10                                         |         r1 = 0x10;
    0x0001c680 ldr r3, [pc, 0x170]                                   |         
    0x0001c682 ldr r2, [pc, 0x174]                                   |         
    0x0001c684 strd r0, r4, [sp]                                     |         __asm ("strd r0, r4, [sp]");
    0x0001c688 ldr r0, [pc, 0x170]                                   |         
    0x0001c68a add r3, pc                                            |         r3 = 0x38e82;
    0x0001c68c add r2, pc                                            |         r2 = 0x38e8a;
    0x0001c68e add r0, pc                                            |         r0 = 0x38e8e;
    0x0001c690 blx 0x9e0c                                            |         g_mutex_lock ();
                                                                     | label_0:
    0x0001c694 ldr r0, [pc, 0x168]                                   |         
    0x0001c696 add r0, pc                                            |         r0 = 0x38e9a;
    0x0001c698 add sp, 0x2c                                          |         
    0x0001c69a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}            |         
    0x0001c69e b.w 0x9ad4                                            |         void (*0x9ad4)() ();
                                                                     |     }
    0x0001c6a2 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0001c6a4 ldr r5, [r3, 0x18]                                    |     r5 = *((r3 + 0x18));
                                                                     |     if (r5 == 0) {
    0x0001c6a6 cbz r5, 0x1c706                                       |         goto label_2;
                                                                     |     }
    0x0001c6a8 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0001c6aa cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x0001c6ac bne 0x1c6b2                                           |         
    0x0001c6ae ldr r3, [r5, 8]                                       |         r3 = *((r5 + 8));
                                                                     |         if (r3 == 0) {
    0x0001c6b0 cbz r3, 0x1c700                                       |             goto label_3;
                                                                     |         }
                                                                     |     }
    0x0001c6b2 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0001c6b4 ldr r2, [pc, 0x14c]                                   |     
    0x0001c6b6 str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0001c6b8 ldr.w sl, [r5]                                        |     sl = *(r5);
    0x0001c6bc add r2, pc                                            |     r2 = 0x38ec4;
    0x0001c6be ldrd r7, sb, [r2, 0xc]                                |     __asm ("ldrd r7, sb, [r2, 0xc]");
    0x0001c6c2 cmp.w sl, 0                                           |     
                                                                     |     if (sl == 0) {
    0x0001c6c6 beq.w 0x1c7d0                                         |         goto label_10;
                                                                     |     }
    0x0001c6ca add r6, sp, 0x20                                      |     r6 += var_20h;
    0x0001c6cc mov.w fp, 0                                           |     
    0x0001c6d0 mov r3, r6                                            |     r3 = r6;
    0x0001c6d2 mov r6, sb                                            |     r6 = sb;
    0x0001c6d4 mov sb, r3                                            |     sb = r3;
    0x0001c6d6 b 0x1c6e4                                             |     
                                                                     |     while (r0 != 0) {
    0x0001c6d8 ite ge                                                |         
                                                                     |         if (sl < 0) {
    0x0001c6da addge fp, r4, 1                                       |             
                                                                     |         }
                                                                     |         if (sl < 0) {
    0x0001c6de mov sl, r4                                            |             sl = r4;
                                                                     |         }
    0x0001c6e0 cmp sl, fp                                            |         
                                                                     |         if (sl < fp) {
    0x0001c6e2 bls 0x1c740                                           |             goto label_11;
                                                                     |         }
    0x0001c6e4 add.w r4, fp, sl                                      |         r4 = fp + sl;
    0x0001c6e8 mov r0, sb                                            |         r0 = sb;
    0x0001c6ea lsrs r4, r4, 1                                        |         r4 >>= 1;
    0x0001c6ec mla r8, r4, r7, r5                                    |         __asm ("mla r8, r4, r7, r5");
    0x0001c6f0 add.w r8, r8, 8                                       |         r8 += 8;
    0x0001c6f4 mov r1, r8                                            |         r1 = r8;
    0x0001c6f6 blx r6                                                |         r0 = uint32_t (*r6)(uint32_t, uint32_t) (r0, r1);
    0x0001c6f8 cmp r0, 0                                             |         
    0x0001c6fa bne 0x1c6d8                                           |         
                                                                     |     }
    0x0001c6fc ldr.w r3, [r8]                                        |     r3 = *(r8);
                                                                     | label_3:
    0x0001c700 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0001c702 cmp r2, r3                                            |     
                                                                     |     if (r2 == r3) {
    0x0001c704 beq 0x1c79e                                           |         goto label_12;
                                                                     |     }
                                                                     | label_2:
    0x0001c706 ldr r2, [sp, 0x18]                                    |     r2 = var_18h;
    0x0001c708 ldr r1, [sp, 0x10]                                    |     r1 = var_10h;
    0x0001c70a ldr r0, [sp, 0x1c]                                    |     r0 = var_1ch;
    0x0001c70c bl 0x19b04                                            |     fcn_00019b04 (r0, r1, r2);
    0x0001c710 b 0x1c694                                             |     goto label_0;
                                                                     | label_7:
    0x0001c712 ldr r1, [pc, 0xf4]                                    |     
    0x0001c714 ldr r2, [pc, 0xf4]                                    |     
    0x0001c716 ldr r0, [pc, 0xf8]                                    |     
    0x0001c718 add r1, pc                                            |     
    0x0001c71a add r2, pc                                            |     r2 = 0x38f2a;
    0x0001c71c add.w r1, r1, 0x1d0                                   |     r1 = 0x390f6;
    0x0001c720 add r0, pc                                            |     r0 = 0x38f36;
    0x0001c722 add sp, 0x2c                                          |     
    0x0001c724 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}            |     
    0x0001c728 b.w 0x9c08                                            |     void (*0x9c08)() ();
                                                                     | label_9:
    0x0001c72c ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0001c72e bic r0, r3, 1                                         |     r0 = BIT_MASK (r3, 1);
    0x0001c732 bl 0x22b9c                                            |     r0 = g_type_name ();
    0x0001c736 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0001c738 bne 0x1c67c                                           |         goto label_1;
                                                                     |     }
    0x0001c73a ldr r0, [pc, 0xd8]                                    |     
    0x0001c73c add r0, pc                                            |     r0 = 0x38f56;
    0x0001c73e b 0x1c67c                                             |     goto label_1;
                                                                     | label_11:
    0x0001c740 ldr r0, [sp, 0x20]                                    |     r0 = var_20h;
                                                                     | label_6:
    0x0001c742 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0001c744 beq 0x1c706                                           |         goto label_2;
                                                                     |     }
    0x0001c746 ldr r3, [pc, 0xd0]                                    |     
    0x0001c748 add.w r8, sp, 0x20                                    |     r8 += var_20h;
    0x0001c74c add r3, pc                                            |     r3 = 0x38f6a;
    0x0001c74e str r3, [sp, 0x14]                                    |     var_14h = r3;
                                                                     | label_4:
    0x0001c750 bl 0x231ac                                            |     g_type_parent ();
    0x0001c754 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0001c756 str r0, [sp, 0x20]                                    |     var_20h = r0;
    0x0001c758 ldr.w sb, [r5]                                        |     sb = *(r5);
    0x0001c75c ldr r6, [r3, 0xc]                                     |     r6 = *((r3 + 0xc));
    0x0001c75e ldr r7, [r3, 0x10]                                    |     r7 = *((r3 + 0x10));
    0x0001c760 cmp.w sb, 0                                           |     
                                                                     |     if (sb == 0) {
    0x0001c764 beq 0x1c798                                           |         goto label_13;
                                                                     |     }
    0x0001c766 mov.w fp, 0                                           |     
    0x0001c76a b 0x1c778                                             |     
                                                                     |     while (r0 != 0) {
    0x0001c76c ite ge                                                |         
                                                                     |         if (sb < 0) {
    0x0001c76e addge fp, r4, 1                                       |             
                                                                     |         }
                                                                     |         if (sb < 0) {
    0x0001c772 mov sb, r4                                            |             sb = r4;
                                                                     |         }
    0x0001c774 cmp fp, sb                                            |         
                                                                     |         if (fp >= sb) {
    0x0001c776 bhs 0x1c796                                           |             goto label_14;
                                                                     |         }
    0x0001c778 add.w r4, sb, fp                                      |         r4 = sb + fp;
    0x0001c77c mov r0, r8                                            |         r0 = r8;
    0x0001c77e lsrs r4, r4, 1                                        |         r4 >>= 1;
    0x0001c780 mla sl, r4, r6, r5                                    |         __asm ("mla sl, r4, r6, r5");
    0x0001c784 add.w sl, sl, 8                                       |         sl += 8;
    0x0001c788 mov r1, sl                                            |         r1 = sl;
    0x0001c78a blx r7                                                |         r0 = uint32_t (*r7)(uint32_t, uint32_t) (r0, r1);
    0x0001c78c cmp r0, 0                                             |         
    0x0001c78e bne 0x1c76c                                           |         
                                                                     |     }
    0x0001c790 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0001c794 b 0x1c700                                             |     goto label_3;
                                                                     | label_14:
    0x0001c796 ldr r0, [sp, 0x20]                                    |     r0 = var_20h;
                                                                     | label_13:
    0x0001c798 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0001c79a bne 0x1c750                                           |         goto label_4;
                                                                     |     }
    0x0001c79c b 0x1c706                                             |     goto label_2;
                                                                     |     if (r2 != 0) {
                                                                     | label_12:
    0x0001c79e cbnz r2, 0x1c7be                                      |         goto label_15;
                                                                     |     }
    0x0001c7a0 ldr r0, [pc, 0x78]                                    |     
    0x0001c7a2 add r0, pc                                            |     r0 = 0x38fc2;
                                                                     |     do {
                                                                     | label_5:
    0x0001c7a4 ldr r4, [sp, 0xc]                                     |         r4 = var_ch;
    0x0001c7a6 movs r1, 0x10                                         |         r1 = 0x10;
    0x0001c7a8 ldr r3, [pc, 0x74]                                    |         
    0x0001c7aa ldr r2, [pc, 0x78]                                    |         
    0x0001c7ac strd r0, r4, [sp]                                     |         __asm ("strd r0, r4, [sp]");
    0x0001c7b0 ldr r0, [pc, 0x74]                                    |         
    0x0001c7b2 add r3, pc                                            |         r3 = 0x38fd6;
    0x0001c7b4 add r2, pc                                            |         r2 = 0x38fde;
    0x0001c7b6 add r0, pc                                            |         r0 = 0x38fe2;
    0x0001c7b8 blx 0x9e0c                                            |         g_mutex_lock ();
    0x0001c7bc b 0x1c694                                             |         goto label_0;
                                                                     | label_15:
    0x0001c7be bic r0, r2, 1                                         |         r0 = BIT_MASK (r2, 1);
    0x0001c7c2 bl 0x22b9c                                            |         r0 = g_type_name ();
    0x0001c7c6 cmp r0, 0                                             |         
    0x0001c7c8 bne 0x1c7a4                                           |         
                                                                     |     } while (r0 != 0);
    0x0001c7ca ldr r0, [pc, 0x60]                                    |     
    0x0001c7cc add r0, pc                                            |     r0 = 0x38ffe;
    0x0001c7ce b 0x1c7a4                                             |     goto label_5;
                                                                     | label_10:
    0x0001c7d0 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0001c7d2 b 0x1c742                                             |     goto label_6;
                                                                     | label_8:
    0x0001c7d4 movs r0, 0                                            |     r0 = 0;
    0x0001c7d6 bl 0x198c4                                            |     fcn_000198c4 (r0);
    0x0001c7da movs r3, 0                                            |     r3 = 0;
    0x0001c7dc ldr r3, [r3, 4]                                       |     r3 = *((r3 + 4));
    0x0001c7de udf 0xff                                              |     __asm ("udf 0xff");
                                                                     | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x245bc */
                                                     | #include <stdint.h>
                                                     |  
                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                     |  
    ; (fcn) sym.g_type_check_instance_is_a ()        | void g_type_check_instance_is_a (uint32_t arg1, char * arg2) {
                                                     |     int16_t var_0h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x000245bc cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x000245be beq 0x24626                           |         
    0x000245c0 ldr r0, [r0]                          |         r0 = *(r0);
                                                     |         if (r0 == 0) {
    0x000245c2 cbz r0, 0x24626                       |             goto label_0;
                                                     |         }
    0x000245c4 push {r4, lr}                         |         
    0x000245c6 sub sp, 8                             |         
    0x000245c8 ldr r4, [r0]                          |         r4 = *(r0);
    0x000245ca cmp.w r4, 0x3fc                       |         
    0x000245ce it hi                                 |         
                                                     |         if (r4 > 0x3fc) {
    0x000245d0 bichi r4, r4, 3                       |             __asm ("bichi r4, r4, 3");
                                                     |         }
                                                     |         if (r4 <= 0x3fc) {
    0x000245d4 bhi 0x245e2                           |             
    0x000245d6 ldr r3, [pc, 0x50]                    |             
    0x000245d8 bic r4, r4, 3                         |             r4 = BIT_MASK (r4, 3);
    0x000245dc add r3, pc                            |             r3 = 0x48c0a;
    0x000245de add r3, r4                            |             r3 += r4;
    0x000245e0 ldr r4, [r3, 0xc]                     |             r4 = imp.g_date_time_unref;
                                                     |         }
    0x000245e2 cmp.w r1, 0x3fc                       |         
    0x000245e6 it hi                                 |         
                                                     |         if (r1 > 0x3fc) {
    0x000245e8 bichi r1, r1, 3                       |             __asm ("bichi r1, r1, 3");
                                                     |         }
                                                     |         if (r1 <= 0x3fc) {
    0x000245ec bhi 0x245fa                           |             
    0x000245ee ldr r3, [pc, 0x3c]                    |             
    0x000245f0 bic r1, r1, 3                         |             r1 = BIT_MASK (r1, 3);
    0x000245f4 add r3, pc                            |             r3 = 0x48c26;
    0x000245f6 add r3, r1                            |             r3 += r1;
    0x000245f8 ldr r1, [r3, 0xc]                     |             r1 = imp.g_date_time_unref;
                                                     |         }
    0x000245fa mov r0, r4                            |         r0 = r4;
                                                     |         if (r4 != 0) {
    0x000245fc cbz r4, 0x2460c                       |             
    0x000245fe ldrb r2, [r4, 0xe]                    |             r2 = *((r4 + 0xe));
    0x00024600 subs r3, r1, 0                        |             r3 = r1 - 0;
    0x00024602 it ne                                 |             
                                                     |             if (r3 == r1) {
    0x00024604 movne r3, 1                           |                 r3 = 1;
                                                     |             }
    0x00024606 ands.w r0, r3, r2, lsr 2              |             r0 = r3 & (r2 >> 2);
                                                     |             if (r0 != r3) {
    0x0002460a bne 0x24610                           |                 goto label_1;
                                                     |             }
                                                     |         }
    0x0002460c add sp, 8                             |         
    0x0002460e pop {r4, pc}                          |         
                                                     | label_1:
    0x00024610 movs r3, 0                            |         r3 = 0;
    0x00024612 movs r2, 1                            |         r2 = 1;
    0x00024614 mov r0, r4                            |         r0 = r4;
    0x00024616 str r3, [sp]                          |         *(sp) = r3;
    0x00024618 bl 0x20260                            |         fcn_00020260 (r0, r1, r2, r3);
    0x0002461a cdp2 p8, 2, c3, c2, c0, 0             |         __asm ("cdp2 p8, 2, c3, c2, c0, 0");
    0x0002461e it ne                                 |         
                                                     |         if (r2 == 1) {
    0x00024620 movne r0, 1                           |             r0 = 1;
                                                     |         }
    0x00024622 add sp, 8                             |         
    0x00024624 pop {r4, pc}                          |         
                                                     |     }
                                                     | label_0:
    0x00024626 bx lr                                 |     return;
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x2493c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.g_type_check_instance_is_fundamentally_a ()      | uint32_t g_type_check_instance_is_fundamentally_a (char * arg1, int16_t arg2) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     if (r0 != 0) {
    0x0002493c cbz r0, 0x2495e                                   |         
    0x0002493e ldr r0, [r0]                                      |         r0 = *(r0);
                                                                 |         if (r0 == 0) {
    0x00024940 cbz r0, 0x2495e                                   |             goto label_0;
                                                                 |         }
    0x00024942 ldr r0, [r0]                                      |         r0 = *(r0);
    0x00024944 cmp.w r0, 0x3fc                                   |         
    0x00024948 it hi                                             |         
                                                                 |         if (r0 > 0x3fc) {
    0x0002494a bichi r0, r0, 3                                   |             __asm ("bichi r0, r0, 3");
                                                                 |         }
                                                                 |         if (r0 > 0x3fc) {
    0x0002494e bhi 0x24960                                       |             goto label_1;
                                                                 |         }
    0x00024950 ldr r3, [pc, 0x20]                                |         
    0x00024952 bic r0, r0, 3                                     |         r0 = BIT_MASK (r0, 3);
    0x00024956 add r3, pc                                        |         r3 = 0x492ce;
    0x00024958 add r3, r0                                        |         r3 += r0;
    0x0002495a ldr r0, [r3, 0xc]                                 |         r0 = imp.g_date_time_unref;
                                                                 |         if (r0 != 0) {
    0x0002495c cbnz r0, 0x24960                                  |             goto label_1;
                                                                 |         }
                                                                 |     }
                                                                 | label_0:
    0x0002495e bx lr                                             |     return r0;
                                                                 | label_1:
    0x00024960 ldrb r3, [r0, 0xc]                                |     r3 = *((r0 + 0xc));
    0x00024962 adds r3, 0xa                                      |     r3 += 0xa;
    0x00024964 ldr.w r0, [r0, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     r0 = *((r0 + offset_0));
    0x00024966 movs r3, r4                                       |     r3 = r4;
    0x00024968 subs r0, r0, r1                                   |     r0 -= r1;
    0x0002496a clz r0, r0                                        |     r0 &= r0;
    0x0002496e lsrs r0, r0, 5                                    |     r0 >>= 5;
    0x00024970 bx lr                                             |     return r0;
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x249e8 */
                                                     | #include <stdint.h>
                                                     |  
                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                     |  
    ; (fcn) sym.g_type_check_instance_cast ()        | void g_type_check_instance_cast (uint32_t arg1, uint32_t arg2) {
                                                     |     int16_t var_0h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x000249e8 push {r4, r5, r6, lr}                 |     
    0x000249ea mov r5, r0                            |     r5 = r0;
    0x000249ec sub sp, 8                             |     
    0x000249ee cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x000249f0 beq 0x24aac                           |         goto label_0;
                                                     |     }
    0x000249f2 mov r4, r1                            |     r4 = r1;
    0x000249f4 ldr r3, [r0]                          |     r3 = *(r0);
    0x000249f6 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x000249f8 beq 0x24ab2                           |         goto label_7;
                                                     |     }
    0x000249fa ldr r3, [r3]                          |     r3 = *(r3);
    0x000249fc cmp.w r3, 0x3fc                       |     
    0x00024a00 it hi                                 |     
                                                     |     if (r3 > 0x3fc) {
    0x00024a02 bichi r0, r3, 3                       |         __asm ("bichi r0, r3, 3");
                                                     |     }
                                                     |     if (r3 > 0x3fc) {
    0x00024a06 bhi 0x24ad8                           |         goto label_8;
                                                     |     }
    0x00024a08 ldr r2, [pc, 0x1a0]                   |     
    0x00024a0a bic r1, r3, 3                         |     r1 = BIT_MASK (r3, 3);
    0x00024a0e add r2, pc                            |     r2 = 0x495be;
    0x00024a10 add r2, r1                            |     r2 += r1;
    0x00024a12 ldr r0, [r2, 0xc]                     |     r0 = imp.g_date_time_unref;
    0x00024a14 mov r2, r0                            |     r2 = r0;
    0x00024a16 mov r6, r0                            |     r6 = r0;
    0x00024a18 cmp r0, 0                             |     
    0x00024a1a bne 0x24ad8                           |     
                                                     |     while (1) {
    0x00024a1c cmp.w r4, 0x3fc                       |         
    0x00024a20 it hi                                 |         
                                                     |         if (r4 > 0x3fc) {
    0x00024a22 bichi r1, r4, 3                       |             __asm ("bichi r1, r4, 3");
                                                     |         }
                                                     |         if (r4 <= 0x3fc) {
    0x00024a26 bhi 0x24a34                           |             
    0x00024a28 ldr r1, [pc, 0x184]                   |             
    0x00024a2a bic ip, r4, 3                         |             ip = BIT_MASK (r4, 3);
    0x00024a2e add r1, pc                            |             
    0x00024a30 add r1, ip                            |             r1 += ip;
    0x00024a32 ldr r1, [r1, 0xc]                     |             r1 = imp.g_date_time_unref;
                                                     |         }
    0x00024a34 cmp r1, 0                             |         
    0x00024a36 ite eq                                |         
                                                     |         if (r1 != 0) {
    0x00024a38 moveq r2, 0                           |             r2 = 0;
                                                     |         }
                                                     |         if (r1 == 0) {
    0x00024a3a andne r2, r2, 1                       |             r2 &= 1;
                                                     |         }
    0x00024a3e cmp r2, 0                             |         
                                                     |         if (r2 != 0) {
    0x00024a40 bne 0x24b26                           |             goto label_9;
                                                     |         }
                                                     | label_1:
    0x00024a42 cmp r6, 0                             |         
                                                     |         if (r6 == 0) {
    0x00024a44 beq 0x24ae2                           |             goto label_10;
                                                     |         }
    0x00024a46 cmp r3, 0                             |         
                                                     |         if (r3 == 0) {
    0x00024a48 beq 0x24b48                           |             goto label_11;
                                                     |         }
    0x00024a4a cmp.w r3, 0x3fc                       |         
    0x00024a4e it hi                                 |         
                                                     |         if (r3 > 0x3fc) {
    0x00024a50 bichi r3, r3, 3                       |             __asm ("bichi r3, r3, 3");
                                                     |         }
                                                     |         if (r3 > 0x3fc) {
    0x00024a54 bhi.w 0x24b96                         |             goto label_12;
                                                     |         }
    0x00024a58 ldr r2, [pc, 0x158]                   |         
    0x00024a5a bic r1, r3, 3                         |         r1 = BIT_MASK (r3, 3);
    0x00024a5e add r2, pc                            |         r2 = 0x49616;
    0x00024a60 mov r3, r2                            |         r3 = r2;
    0x00024a62 add r3, r1                            |         r3 += r1;
    0x00024a64 ldr r3, [r3, 0xc]                     |         r3 = *((r3 + 0xc));
    0x00024a66 cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x00024a68 bne.w 0x24b96                         |             goto label_12;
                                                     |         }
    0x00024a6c ldr r6, [pc, 0x148]                   |         
    0x00024a6e add r6, pc                            |         r6 = 0x4962a;
                                                     | label_6:
    0x00024a70 cmp r4, 0                             |         
                                                     |         if (r4 == 0) {
    0x00024a72 beq 0x24b50                           |             goto label_13;
                                                     |         }
                                                     | label_3:
    0x00024a74 cmp.w r4, 0x3fc                       |         
    0x00024a78 it hi                                 |         
                                                     |         if (r4 > 0x3fc) {
    0x00024a7a bichi r4, r4, 3                       |             __asm ("bichi r4, r4, 3");
                                                     |         }
                                                     |         if (r4 <= 0x3fc) {
    0x00024a7e bhi 0x24a94                           |             
    0x00024a80 ldr r3, [pc, 0x138]                   |             
    0x00024a82 bic r4, r4, 3                         |             r4 = BIT_MASK (r4, 3);
    0x00024a86 add r3, pc                            |             r3 = 0x49646;
    0x00024a88 add r3, r4                            |             r3 += r4;
    0x00024a8a ldr r4, [r3, 0xc]                     |             r4 = imp.g_date_time_unref;
                                                     |             if (r4 == 0) {
    0x00024a8c cbnz r4, 0x24a94                      |                 
    0x00024a8e ldr r0, [pc, 0x130]                   |                 
    0x00024a90 add r0, pc                            |                 r0 = 0x49656;
    0x00024a92 b 0x24a9a                             |                 
                                                     |             }
                                                     |         } else {
    0x00024a94 ldr r0, [r4, 0x18]                    |             r0 = *((r4 + 0x18));
    0x00024a96 blx 0x9fd0                            |             fcn_00009fd0 ();
                                                     |         }
                                                     | label_4:
    0x00024a9a ldr r2, [pc, 0x128]                   |         
    0x00024a9c mov r3, r6                            |         r3 = r6;
    0x00024a9e str r0, [sp]                          |         *(sp) = r0;
    0x00024aa0 movs r1, 0x10                         |         r1 = 0x10;
    0x00024aa2 ldr r0, [pc, 0x124]                   |         
    0x00024aa4 add r2, pc                            |         r2 = 0x4966e;
    0x00024aa6 add r0, pc                            |         r0 = 0x49674;
    0x00024aa8 blx 0x9e0c                            |         g_mutex_lock ();
                                                     | label_0:
    0x00024aac mov r0, r5                            |         r0 = r5;
    0x00024aae add sp, 8                             |         
    0x00024ab0 pop {r4, r5, r6, pc}                  |         
                                                     | label_7:
    0x00024ab2 cmp r1, 0                             |         
                                                     |         if (r1 == 0) {
    0x00024ab4 beq 0x24b56                           |             goto label_14;
                                                     |         }
    0x00024ab6 cmp.w r1, 0x3fc                       |         
    0x00024aba it hi                                 |         
                                                     |         if (r1 > 0x3fc) {
    0x00024abc bichi r4, r1, 3                       |             __asm ("bichi r4, r1, 3");
                                                     |         }
                                                     |         if (r1 > 0x3fc) {
    0x00024ac0 bhi 0x24ba0                           |             goto label_15;
                                                     |         }
    0x00024ac2 ldr r3, [pc, 0x108]                   |         
    0x00024ac4 bic r4, r4, 3                         |         r4 = BIT_MASK (r4, 3);
    0x00024ac8 add r3, pc                            |         r3 = 0x4969a;
    0x00024aca add r3, r4                            |         r3 += r4;
    0x00024acc ldr r4, [r3, 0xc]                     |         r4 = imp.g_date_time_unref;
    0x00024ace cmp r4, 0                             |         
                                                     |         if (r4 != 0) {
    0x00024ad0 bne 0x24ba0                           |             goto label_15;
                                                     |         }
    0x00024ad2 ldr r3, [pc, 0xfc]                    |         
    0x00024ad4 add r3, pc                            |         r3 = 0x496aa;
    0x00024ad6 b 0x24b5a                             |         goto label_16;
                                                     | label_8:
    0x00024ad8 ldrb r2, [r0, 0xe]                    |         r2 = *((r0 + 0xe));
    0x00024ada ubfx r2, r2, 2, 1                     |         r2 = (r2 >> 2) & ((1 << 1) - 1);
    0x00024ade mov r6, r2                            |         r6 = r2;
    0x00024ae0 b 0x24a1c                             |         
                                                     |     }
                                                     |     if (r3 == 0) {
                                                     | label_10:
    0x00024ae2 cbz r3, 0x24b3a                       |         goto label_17;
                                                     |     }
    0x00024ae4 cmp.w r3, 0x3fc                       |     
    0x00024ae8 it hi                                 |     
                                                     |     if (r3 > 0x3fc) {
    0x00024aea bichi r3, r3, 3                       |         __asm ("bichi r3, r3, 3");
                                                     |     }
                                                     |     if (r3 > 0x3fc) {
    0x00024aee bhi 0x24b8c                           |         goto label_18;
                                                     |     }
    0x00024af0 ldr r2, [pc, 0xe0]                    |     
    0x00024af2 bic r3, r3, 3                         |     r3 = BIT_MASK (r3, 3);
    0x00024af6 add r2, pc                            |     r2 = 0x496ce;
    0x00024af8 add r3, r2                            |     r3 += r2;
    0x00024afa ldr r3, [r3, 0xc]                     |     r3 = *((r3 + 0xc));
    0x00024afc cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00024afe bne 0x24b8c                           |         goto label_18;
                                                     |     }
    0x00024b00 ldr r6, [pc, 0xd4]                    |     
    0x00024b02 add r6, pc                            |     r6 = 0x496de;
                                                     |     if (r4 == 0) {
                                                     | label_5:
    0x00024b04 cbz r4, 0x24b42                       |         goto label_19;
                                                     |     }
                                                     | label_2:
    0x00024b06 cmp.w r4, 0x3fc                       |     
    0x00024b0a it hi                                 |     
                                                     |     if (r4 > 0x3fc) {
    0x00024b0c bichi r4, r4, 3                       |         __asm ("bichi r4, r4, 3");
                                                     |     }
                                                     |     if (r4 > 0x3fc) {
    0x00024b10 bhi 0x24b6e                           |         goto label_20;
                                                     |     }
    0x00024b12 ldr r3, [pc, 0xc8]                    |     
    0x00024b14 bic r4, r4, 3                         |     r4 = BIT_MASK (r4, 3);
    0x00024b18 add r3, pc                            |     r3 = 0x496fa;
    0x00024b1a add r3, r4                            |     r3 += r4;
    0x00024b1c ldr r4, [r3, 0xc]                     |     r4 = imp.g_date_time_unref;
                                                     |     if (r4 != 0) {
    0x00024b1e cbnz r4, 0x24b6e                      |         goto label_20;
                                                     |     }
    0x00024b20 ldr r0, [pc, 0xbc]                    |     
    0x00024b22 add r0, pc                            |     r0 = 0x49706;
    0x00024b24 b 0x24b74                             |     goto label_21;
                                                     | label_9:
    0x00024b26 movs r3, 0                            |     r3 = 0;
    0x00024b28 movs r2, 1                            |     r2 = 1;
    0x00024b2a str r3, [sp]                          |     *(sp) = r3;
    0x00024b2c bl 0x20260                            |     r0 = fcn_00020260 (r0, r1, r2, r3);
    0x00024b30 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x00024b32 bne 0x24aac                           |         goto label_0;
                                                     |     }
    0x00024b34 ldr r3, [r5]                          |     r3 = *(r5);
    0x00024b36 ldr r3, [r3]                          |     r3 = *(r3);
    0x00024b38 b 0x24a42                             |     goto label_1;
                                                     | label_17:
    0x00024b3a ldr r6, [pc, 0xa8]                    |     
    0x00024b3c add r6, pc                            |     r6 = 0x49726;
    0x00024b3e cmp r4, 0                             |     
                                                     |     if (r4 != 0) {
    0x00024b40 bne 0x24b06                           |         goto label_2;
                                                     |     }
                                                     | label_19:
    0x00024b42 ldr r0, [pc, 0xa4]                    |     
    0x00024b44 add r0, pc                            |     r0 = 0x49732;
    0x00024b46 b 0x24b74                             |     goto label_21;
                                                     | label_11:
    0x00024b48 ldr r6, [pc, 0xa0]                    |     
    0x00024b4a add r6, pc                            |     r6 = 0x4973a;
    0x00024b4c cmp r4, 0                             |     
                                                     |     if (r4 != 0) {
    0x00024b4e bne 0x24a74                           |         goto label_3;
                                                     |     }
                                                     | label_13:
    0x00024b50 ldr r0, [pc, 0x9c]                    |     
    0x00024b52 add r0, pc                            |     r0 = 0x49746;
    0x00024b54 b 0x24a9a                             |     goto label_4;
                                                     | label_14:
    0x00024b56 ldr r3, [pc, 0x9c]                    |     
    0x00024b58 add r3, pc                            |     r3 = 0x49752;
                                                     |     do {
                                                     | label_16:
    0x00024b5a ldr r2, [pc, 0x9c]                    |         
    0x00024b5c movs r1, 0x10                         |         r1 = 0x10;
    0x00024b5e ldr r0, [pc, 0x9c]                    |         
    0x00024b60 add r2, pc                            |         r2 = 0x4975e;
    0x00024b62 add r0, pc                            |         r0 = 0x49764;
    0x00024b64 blx 0x9e0c                            |         g_mutex_lock ();
    0x00024b68 mov r0, r5                            |         r0 = r5;
    0x00024b6a add sp, 8                             |         
    0x00024b6c pop {r4, r5, r6, pc}                  |         
                                                     | label_20:
    0x00024b6e ldr r0, [r4, 0x18]                    |         r0 = *((r4 + 0x18));
    0x00024b70 blx 0x9fd0                            |         fcn_00009fd0 ();
                                                     | label_21:
    0x00024b74 str r0, [sp]                          |         *(sp) = r0;
    0x00024b76 mov r3, r6                            |         r3 = r6;
    0x00024b78 ldr r2, [pc, 0x84]                    |         
    0x00024b7a movs r1, 0x10                         |         r1 = 0x10;
    0x00024b7c ldr r0, [pc, 0x84]                    |         
    0x00024b7e add r2, pc                            |         r2 = 0x49782;
    0x00024b80 add r0, pc                            |         r0 = 0x49788;
    0x00024b82 blx 0x9e0c                            |         g_mutex_lock ();
    0x00024b86 mov r0, r5                            |         r0 = r5;
    0x00024b88 add sp, 8                             |         
    0x00024b8a pop {r4, r5, r6, pc}                  |         
                                                     | label_18:
    0x00024b8c ldr r0, [r3, 0x18]                    |         r0 = *((r3 + 0x18));
    0x00024b8e blx 0x9fd0                            |         r0 = fcn_00009fd0 ();
    0x00024b92 mov r6, r0                            |         r6 = r0;
    0x00024b94 b 0x24b04                             |         goto label_5;
                                                     | label_12:
    0x00024b96 ldr r0, [r3, 0x18]                    |         r0 = *((r3 + 0x18));
    0x00024b98 blx 0x9fd0                            |         r0 = fcn_00009fd0 ();
    0x00024b9c mov r6, r0                            |         r6 = r0;
    0x00024b9e b 0x24a70                             |         goto label_6;
                                                     | label_15:
    0x00024ba0 ldr r0, [r4, 0x18]                    |         r0 = *((r4 + 0x18));
    0x00024ba2 blx 0x9fd0                            |         r0 = fcn_00009fd0 ();
    0x00024ba6 mov r3, r0                            |         r3 = r0;
    0x00024ba8 b 0x24b5a                             |         
                                                     |     } while (1);
                                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x24e2c */
                                             | #include <stdint.h>
                                             |  
                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                             |  
    ; (fcn) sym.g_type_check_instance ()     | void g_type_check_instance (int16_t arg1) {
                                             |     r0 = arg1;
    0x00024e2c push {r4, lr}                 |     
    0x00024e2e mov r4, r0                    |     r4 = r0;
                                             |     if (r0 == 0) {
    0x00024e30 cbz r0, 0x24e82               |         goto label_3;
                                             |     }
    0x00024e32 ldr r4, [r0]                  |     r4 = *(r0);
                                             |     if (r4 == 0) {
    0x00024e34 cbz r4, 0x24e94               |         goto label_4;
                                             |     }
    0x00024e36 ldr r3, [r4]                  |     r3 = *(r4);
    0x00024e38 cmp.w r3, 0x3fc               |     
                                             |     if (r3 <= 0x3fc) {
    0x00024e3c bhi 0x24e54                   |         
    0x00024e3e ldr r2, [pc, 0x78]            |         
    0x00024e40 bic r1, r3, 3                 |         r1 = BIT_MASK (r3, 3);
    0x00024e44 add r2, pc                    |         
    0x00024e46 add r2, r1                    |         r2 += r1;
    0x00024e48 ldr r2, [r2, 0xc]             |         r2 = *(0x49d0e);
                                             |         if (r2 != 0) {
    0x00024e4a cbnz r2, 0x24ea6              |             goto label_5;
                                             |         }
                                             |         if (r3 == 0) {
    0x00024e4c cbz r3, 0x24e7c               |             goto label_6;
                                             |         }
    0x00024e4e ldr r3, [pc, 0x6c]            |         
    0x00024e50 add r3, pc                    |         r3 = 0x49d12;
    0x00024e52 b 0x24e6a                     |         
                                             |     } else {
    0x00024e54 bic r2, r3, 3                 |         r2 = BIT_MASK (r3, 3);
    0x00024e58 ldrb r3, [r2, 0xe]            |         r3 = *((r2 + 0xe));
    0x00024e5a lsls r0, r3, 0x1d             |         r0 = r3 << 0x1d;
                                             |         if (r0 < r3) {
    0x00024e5c bpl 0x24e62                   |             
                                             | label_0:
    0x00024e5e movs r0, 1                    |             r0 = 1;
    0x00024e60 pop {r4, pc}                  |             
                                             |         }
                                             | label_1:
    0x00024e62 ldr r0, [r2, 0x18]            |         r0 = *((r2 + 0x18));
    0x00024e64 blx 0x9fd0                    |         r0 = fcn_00009fd0 ();
    0x00024e68 mov r3, r0                    |         r3 = r0;
                                             |     }
                                             |     do {
                                             | label_2:
    0x00024e6a ldr r2, [pc, 0x54]            |         
    0x00024e6c movs r1, 0x10                 |         r1 = 0x10;
    0x00024e6e ldr r0, [pc, 0x54]            |         
    0x00024e70 add r2, pc                    |         r2 = 0x49d36;
    0x00024e72 add r0, pc                    |         r0 = 0x49d3c;
    0x00024e74 blx 0x9e0c                    |         g_mutex_lock ();
    0x00024e78 movs r0, 0                    |         r0 = 0;
    0x00024e7a pop {r4, pc}                  |         
                                             | label_6:
    0x00024e7c ldr r3, [pc, 0x48]            |         
    0x00024e7e add r3, pc                    |         r3 = 0x49d4a;
    0x00024e80 b 0x24e6a                     |         
                                             |     } while (1);
                                             | label_3:
    0x00024e82 ldr r2, [pc, 0x48]            |     
    0x00024e84 movs r1, 0x10                 |     r1 = 0x10;
    0x00024e86 ldr r0, [pc, 0x48]            |     
    0x00024e88 add r2, pc                    |     r2 = 0x49d5a;
    0x00024e8a add r0, pc                    |     r0 = 0x49d60;
    0x00024e8c blx 0x9e0c                    |     g_mutex_lock ();
    0x00024e90 mov r0, r4                    |     r0 = r4;
    0x00024e92 pop {r4, pc}                  |     
                                             | label_4:
    0x00024e94 ldr r2, [pc, 0x3c]            |     
    0x00024e96 movs r1, 0x10                 |     r1 = 0x10;
    0x00024e98 ldr r0, [pc, 0x3c]            |     
    0x00024e9a add r2, pc                    |     r2 = 0x49d72;
    0x00024e9c add r0, pc                    |     r0 = 0x49d78;
    0x00024e9e blx 0x9e0c                    |     g_mutex_lock ();
    0x00024ea2 mov r0, r4                    |     r0 = r4;
    0x00024ea4 pop {r4, pc}                  |     
                                             | label_5:
    0x00024ea6 ldrb r1, [r2, 0xe]            |     r1 = *((r2 + 0xe));
    0x00024ea8 lsls r1, r1, 0x1d             |     r1 <<= 0x1d;
                                             |     if (r1 < r1) {
    0x00024eaa bmi 0x24e5e                   |         goto label_0;
                                             |     }
    0x00024eac cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x00024eae bne 0x24e62                   |         goto label_1;
                                             |     }
    0x00024eb0 ldr r3, [pc, 0x28]            |     
    0x00024eb2 add r3, pc                    |     r3 = 0x49d92;
    0x00024eb4 b 0x24e6a                     |     goto label_2;
                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x2493c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.g_type_check_instance_is_fundamentally_a ()      | uint32_t g_type_check_instance_is_fundamentally_a (char * arg1, int16_t arg2) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     if (r0 != 0) {
    0x0002493c cbz r0, 0x2495e                                   |         
    0x0002493e ldr r0, [r0]                                      |         r0 = *(r0);
                                                                 |         if (r0 == 0) {
    0x00024940 cbz r0, 0x2495e                                   |             goto label_0;
                                                                 |         }
    0x00024942 ldr r0, [r0]                                      |         r0 = *(r0);
    0x00024944 cmp.w r0, 0x3fc                                   |         
    0x00024948 it hi                                             |         
                                                                 |         if (r0 > 0x3fc) {
    0x0002494a bichi r0, r0, 3                                   |             __asm ("bichi r0, r0, 3");
                                                                 |         }
                                                                 |         if (r0 > 0x3fc) {
    0x0002494e bhi 0x24960                                       |             goto label_1;
                                                                 |         }
    0x00024950 ldr r3, [pc, 0x20]                                |         
    0x00024952 bic r0, r0, 3                                     |         r0 = BIT_MASK (r0, 3);
    0x00024956 add r3, pc                                        |         r3 = 0x492ce;
    0x00024958 add r3, r0                                        |         r3 += r0;
    0x0002495a ldr r0, [r3, 0xc]                                 |         r0 = imp.g_date_time_unref;
                                                                 |         if (r0 != 0) {
    0x0002495c cbnz r0, 0x24960                                  |             goto label_1;
                                                                 |         }
                                                                 |     }
                                                                 | label_0:
    0x0002495e bx lr                                             |     return r0;
                                                                 | label_1:
    0x00024960 ldrb r3, [r0, 0xc]                                |     r3 = *((r0 + 0xc));
    0x00024962 adds r3, 0xa                                      |     r3 += 0xa;
    0x00024964 ldr.w r0, [r0, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     r0 = *((r0 + offset_0));
    0x00024966 movs r3, r4                                       |     r3 = r4;
    0x00024968 subs r0, r0, r1                                   |     r0 -= r1;
    0x0002496a clz r0, r0                                        |     r0 &= r0;
    0x0002496e lsrs r0, r0, 5                                    |     r0 >>= 5;
    0x00024970 bx lr                                             |     return r0;
                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x254d4 */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) sym.g_type_class_add_private ()      | void g_type_class_add_private (uint32_t arg1, int16_t arg2) {
                                                 |     int16_t var_0h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x000254d4 push {r4, r5, r6, lr}             |     
    0x000254d6 mov r4, r1                        |     r4 = r1;
    0x000254d8 ldr r3, [r0]                      |     r3 = *(r0);
    0x000254da sub sp, 8                         |     
    0x000254dc cmp.w r3, 0x3fc                   |     
    0x000254e0 it hi                             |     
                                                 |     if (r3 > 0x3fc) {
    0x000254e2 bichi r5, r3, 3                   |         __asm ("bichi r5, r3, 3");
                                                 |     }
                                                 |     if (r3 <= 0x3fc) {
    0x000254e6 bhi 0x254f4                       |         
    0x000254e8 ldr r2, [pc, 0x10c]               |         
    0x000254ea bic r1, r3, 3                     |         r1 = BIT_MASK (r3, 3);
    0x000254ee add r2, pc                        |         r2 = 0x4aaea;
    0x000254f0 add r2, r1                        |         r2 += r1;
    0x000254f2 ldr r5, [r2, 0xc]                 |         r5 = *(0x4aaf6);
                                                 |     }
                                                 |     if (r4 == 0) {
    0x000254f4 cbnz r4, 0x25510                  |         
    0x000254f6 ldr r1, [pc, 0x104]               |         
    0x000254f8 ldr r2, [pc, 0x104]               |         
    0x000254fa ldr r0, [pc, 0x108]               |         
    0x000254fc add r1, pc                        |         
    0x000254fe add r2, pc                        |         r2 = 0x4ab02;
    0x00025500 add.w r1, r1, 0x520               |         r1 = 0x4b01e;
    0x00025504 add r0, pc                        |         r0 = 0x4ab0e;
    0x00025506 add sp, 8                         |         
    0x00025508 pop.w {r4, r5, r6, lr}            |         
    0x0002550c b.w 0x9c08                        |         void (*0x9c08)() ();
                                                 |     }
    0x00025510 cmp.w r4, 0x10000                 |     
                                                 |     if (r4 >= 0x10000) {
    0x00025514 bhs 0x25544                       |         goto label_1;
                                                 |     }
    0x00025516 cmp r5, 0                         |     
                                                 |     if (r5 == 0) {
    0x00025518 beq 0x255c8                       |         goto label_2;
                                                 |     }
    0x0002551a ldrb r2, [r5, 0xe]                |     r2 = *((r5 + 0xe));
    0x0002551c lsls r2, r2, 0x1d                 |     r2 <<= 0x1d;
                                                 |     if (r2 < r2) {
    0x0002551e bpl 0x2552a                       |         
    0x00025520 ldr r2, [r5, 0x14]                |         r2 = *((r5 + 0x14));
                                                 |         if (r2 == 0) {
    0x00025522 cbz r2, 0x2552a                   |             goto label_3;
                                                 |         }
    0x00025524 ldr r1, [r2, 0x20]                |         r1 = *((r2 + 0x20));
    0x00025526 cmp r1, r0                        |         
                                                 |         if (r1 == r0) {
    0x00025528 beq 0x25568                       |             goto label_4;
                                                 |         }
                                                 |     }
                                                 |     if (r3 != 0) {
                                                 | label_3:
    0x0002552a cbnz r3, 0x2555e                  |         goto label_5;
                                                 |     }
    0x0002552c ldr r3, [pc, 0xd8]                |     
    0x0002552e add r3, pc                        |     r3 = 0x4ab3a;
                                                 |     do {
                                                 | label_0:
    0x00025530 ldr r2, [pc, 0xd8]                |         
    0x00025532 movs r1, 0x10                     |         r1 = 0x10;
    0x00025534 ldr r0, [pc, 0xd8]                |         
    0x00025536 add r2, pc                        |         r2 = 0x4ab46;
    0x00025538 add r0, pc                        |         r0 = 0x4ab4c;
    0x0002553a add sp, 8                         |         
    0x0002553c pop.w {r4, r5, r6, lr}            |         
    0x00025540 b.w 0x9e08                        |         void (*0x9e08)() ();
                                                 | label_1:
    0x00025544 ldr r1, [pc, 0xcc]                |         
    0x00025546 ldr r2, [pc, 0xd0]                |         
    0x00025548 ldr r0, [pc, 0xd0]                |         
    0x0002554a add r1, pc                        |         
    0x0002554c add r2, pc                        |         r2 = 0x4ab6a;
    0x0002554e add.w r1, r1, 0x520               |         r1 = 0x4b082;
    0x00025552 add r0, pc                        |         r0 = 0x4ab72;
    0x00025554 add sp, 8                         |         
    0x00025556 pop.w {r4, r5, r6, lr}            |         
    0x0002555a b.w 0x9c08                        |         void (*0x9c08)() ();
                                                 | label_5:
    0x0002555e ldr r0, [r5, 0x18]                |         r0 = *((r5 + 0x18));
    0x00025560 blx 0x9fd0                        |         r0 = fcn_00009fd0 ();
    0x00025564 mov r3, r0                        |         r3 = r0;
    0x00025566 b 0x25530                         |         
                                                 |     } while (1);
                                                 | label_4:
    0x00025568 ldr r3, [r5, 0x2c]                |     r3 = *((r5 + 0x2c));
                                                 |     if (r3 != 0) {
    0x0002556a cbz r3, 0x2558e                   |         
    0x0002556c cmp.w r3, 0x3fc                   |         
    0x00025570 it hi                             |         
                                                 |         if (r3 > 0x3fc) {
    0x00025572 bichi r3, r3, 3                   |             __asm ("bichi r3, r3, 3");
                                                 |         }
                                                 |         if (r3 <= 0x3fc) {
    0x00025576 bhi 0x25584                       |             
    0x00025578 ldr r1, [pc, 0xa4]                |             
    0x0002557a bic r3, r3, 3                     |             r3 = BIT_MASK (r3, 3);
    0x0002557e add r1, pc                        |             r1 = 0x4aba2;
    0x00025580 add r3, r1                        |             r3 += r1;
    0x00025582 ldr r3, [r3, 0xc]                 |             r3 = *((r3 + 0xc));
                                                 |         }
    0x00025584 ldr r3, [r3, 0x14]                |         r3 = *((r3 + 0x14));
    0x00025586 ldrh r2, [r2, 0x26]               |         r2 = *((r2 + 0x26));
    0x00025588 ldrh r3, [r3, 0x26]               |         r3 = *((r3 + 0x26));
    0x0002558a cmp r2, r3                        |         
                                                 |         if (r2 != r3) {
    0x0002558c bne 0x255e4                       |             goto label_6;
                                                 |         }
                                                 |     }
    0x0002558e ldr r6, [pc, 0x94]                |     
    0x00025590 adds r4, 7                        |     r4 += 7;
    0x00025592 add r6, pc                        |     r6 = 0x4abbc;
    0x00025594 mov r0, r6                        |     r0 = r6;
    0x00025596 blx 0x9fb4                        |     fcn_00009fb4 ();
    0x0002559a ldr r2, [r5, 0x14]                |     r2 = *((r5 + 0x14));
    0x0002559c ldrh r3, [r2, 0x26]               |     r3 = *((r2 + 0x26));
    0x0002559e add r3, r4                        |     r3 += r4;
    0x000255a0 bic r3, r3, 7                     |     r3 = BIT_MASK (r3, 7);
    0x000255a4 cmp.w r3, 0x10000                 |     
                                                 |     if (r3 > 0x10000) {
    0x000255a8 blo 0x255d0                       |         
    0x000255aa ldr r3, [pc, 0x7c]                |         
    0x000255ac movw r2, 0x1231                   |         r2 = 0x1231;
    0x000255b0 ldr r4, [pc, 0x78]                |         
    0x000255b2 ldr r1, [pc, 0x7c]                |         
    0x000255b4 ldr r0, [pc, 0x7c]                |         
    0x000255b6 add r3, pc                        |         
    0x000255b8 add r4, pc                        |         r4 = 0x4abe8;
    0x000255ba add.w r3, r3, 0x520               |         r3 = 0x4b104;
    0x000255be add r1, pc                        |         r1 = 0x4abf4;
    0x000255c0 str r4, [sp]                      |         *(sp) = r4;
    0x000255c2 add r0, pc                        |         r0 = 0x4abfa;
    0x000255c4 blx 0x9bf0                        |         g_array_new ();
                                                 |         if (r3 == 0) {
                                                 | label_2:
    0x000255c8 cbz r3, 0x255de                   |             goto label_7;
                                                 |         }
    0x000255ca ldr r3, [pc, 0x6c]                |         
    0x000255cc add r3, pc                        |         r3 = 0x4ac0a;
    0x000255ce b 0x25530                         |         goto label_0;
                                                 |     }
    0x000255d0 mov r0, r6                        |     r0 = r6;
    0x000255d2 strh r3, [r2, 0x26]               |     *((r2 + 0x26)) = r3;
    0x000255d4 add sp, 8                         |     
    0x000255d6 pop.w {r4, r5, r6, lr}            |     
    0x000255da b.w 0x9dec                        |     void (*0x9dec)() ();
                                                 | label_7:
    0x000255de ldr r3, [pc, 0x5c]                |     
    0x000255e0 add r3, pc                        |     r3 = 0x4ac22;
    0x000255e2 b 0x25530                         |     goto label_0;
                                                 | label_6:
    0x000255e4 ldr r2, [pc, 0x58]                |     
    0x000255e6 movs r1, 0x10                     |     r1 = 0x10;
    0x000255e8 ldr r0, [pc, 0x58]                |     
    0x000255ea add r2, pc                        |     r2 = 0x4ac2e;
    0x000255ec add r0, pc                        |     r0 = 0x4ac34;
    0x000255ee add sp, 8                         |     
    0x000255f0 pop.w {r4, r5, r6, lr}            |     
    0x000255f4 b.w 0x9e08                        |     return void (*0x9e08)() ();
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x25228 */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) sym.g_type_value_table_peek ()       | void g_type_value_table_peek (char * arg1) {
                                                 |     r0 = arg1;
    0x00025228 cmp.w r0, 0x3fc                   |     
    0x0002522c push {r3, r4, r5, r6, r7, lr}     |     
    0x0002522e mov r4, r0                        |     r4 = r0;
    0x00025230 it hi                             |     
                                                 |     if (r0 > 0x3fc) {
    0x00025232 bichi r5, r0, 3                   |         __asm ("bichi r5, r0, 3");
                                                 |     }
                                                 |     if (r0 <= 0x3fc) {
    0x00025236 bhi 0x25280                       |         
    0x00025238 ldr r6, [pc, 0x118]               |         
    0x0002523a bic r3, r0, 3                     |         r3 = BIT_MASK (r0, 3);
    0x0002523e lsrs r7, r0, 2                    |         r7 = r0 >> 2;
    0x00025240 add r6, pc                        |         r6 = 0x4a598;
    0x00025242 add r3, r6                        |         r3 += r6;
    0x00025244 ldr r5, [r3, 0xc]                 |         r5 = *((r3 + 0xc));
                                                 |         if (r5 != 0) {
    0x00025246 cbnz r5, 0x25280                  |             goto label_5;
                                                 |         }
    0x00025248 mov r0, r6                        |         r0 = r6;
    0x0002524a blx 0x9c5c                        |         g_slist_prepend ();
    0x0002524e mov r0, r6                        |         r0 = r6;
    0x00025250 blx 0x9de0                        |         fcn_00009de0 ();
    0x00025254 ldr r2, [pc, 0x100]               |         
    0x00025256 mov r3, r4                        |         r3 = r4;
    0x00025258 ldr r0, [pc, 0x100]               |         
    0x0002525a movs r1, 0x10                     |         r1 = 0x10;
    0x0002525c add r2, pc                        |         r2 = 0x4a5b8;
    0x0002525e add r0, pc                        |         r0 = 0x4a5be;
    0x00025260 blx 0x9e0c                        |         g_mutex_lock ();
    0x00025264 cmp r4, 0                         |         
                                                 |         if (r4 != 0) {
    0x00025266 bne 0x2533e                       |             goto label_6;
                                                 |         }
    0x00025268 ldr r3, [pc, 0xf4]                |         
    0x0002526a add r3, pc                        |         r3 = 0x4a5ce;
                                                 | label_2:
    0x0002526c ldr r2, [pc, 0xf4]                |         
    0x0002526e movs r1, 0x10                     |         r1 = 0x10;
    0x00025270 ldr r0, [pc, 0xf4]                |         
    0x00025272 movs r4, 0                        |         r4 = 0;
    0x00025274 add r2, pc                        |         r2 = 0x4a5dc;
    0x00025276 add r0, pc                        |         r0 = 0x4a5e2;
    0x00025278 blx 0x9e0c                        |         g_mutex_lock ();
                                                 | label_1:
    0x0002527c mov r0, r4                        |         r0 = r4;
    0x0002527e pop {r3, r4, r5, r6, r7, pc}      |         
                                                 |     }
                                                 | label_5:
    0x00025280 dmb ish                           |     __asm ("dmb ish");
    0x00025284 ldr r3, [r5]                      |     r3 = *(r5);
    0x00025286 dmb ish                           |     __asm ("dmb ish");
    0x0002528a cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x0002528c bne 0x2531e                       |         goto label_7;
                                                 |     }
                                                 | label_3:
    0x0002528e ldr r0, [pc, 0xdc]                |     
    0x00025290 add r0, pc                        |     r0 = 0x4a602;
    0x00025292 blx 0x9c5c                        |     g_slist_prepend ();
    0x00025296 ldr.w ip, [pc, 0xd8]              |     
    0x0002529a add ip, pc                        |     ip = 0x4a610;
                                                 |     do {
    0x0002529c ldr r3, [r5, 0x14]                |         r3 = *((r5 + 0x14));
                                                 |         if (r3 == 0) {
    0x0002529e cbz r3, 0x252fc                   |             goto label_8;
                                                 |         }
    0x000252a0 dmb ish                           |         __asm ("dmb ish");
    0x000252a4 ldr r3, [r5]                      |         r3 = *(r5);
    0x000252a6 dmb ish                           |         __asm ("dmb ish");
                                                 |         if (r3 == 0) {
    0x000252aa cbz r3, 0x252fc                   |             goto label_8;
                                                 |         }
    0x000252ac ldr r3, [r5, 0x14]                |         r3 = *((r5 + 0x14));
    0x000252ae ldr r4, [r3]                      |         r4 = *(r3);
    0x000252b0 ldr r2, [r4]                      |         r2 = *(r4);
    0x000252b2 cmp r2, 0                         |         
                                                 |         if (r2 != 0) {
    0x000252b4 bne 0x25332                       |             goto label_9;
                                                 |         }
    0x000252b6 ldrb r3, [r5, 0xc]                |         r3 = *((r5 + 0xc));
    0x000252b8 adds r3, 0xa                      |         r3 += 0xa;
    0x000252ba ldr.w r3, [r5, r3, lsl 2]         |         offset_0 = r3 << 2;
                                                 |         r3 = *((r5 + offset_0));
    0x000252be cmp r3, 8                         |         
                                                 |         if (r3 != 8) {
    0x000252c0 bne 0x252f0                       |             goto label_10;
                                                 |         }
    0x000252c2 ldr r0, [r5, 0xc]                 |         r0 = *((r5 + 0xc));
    0x000252c4 ubfx r0, r0, 8, 9                 |         r0 = (r0 >> 8) & ((1 << 9) - 1);
                                                 |         if (r0 == 0) {
    0x000252c8 cbz r0, 0x252f0                   |             goto label_10;
                                                 |         }
    0x000252ca ldr r1, [r5, 0x24]                |         r1 = *((r5 + 0x24));
    0x000252cc subs r1, 4                        |         r1 -= 4;
                                                 | label_0:
    0x000252ce ldr r4, [r1, 4]!                  |         r4 = *((r1 += 4));
    0x000252d2 adds r2, 1                        |         r2++;
    0x000252d4 bic r3, r4, 3                     |         r3 = BIT_MASK (r4, 3);
    0x000252d8 cmp.w r4, 0x3fc                   |         
    0x000252dc add r3, ip                        |         r3 += ip;
    0x000252de bic r5, r4, 3                     |         r5 = BIT_MASK (r4, 3);
    0x000252e2 it ls                             |         
                                                 |         if (r4 > 0x3fc) {
    0x000252e4 ldrls r5, [r3, 0xc]               |             r5 = *((r3 + 0xc));
                                                 |         }
    0x000252e6 ldrb r3, [r5, 0xe]                |         r3 = *((r5 + 0xe));
    0x000252e8 lsls r3, r3, 0x1d                 |         r3 <<= 0x1d;
    0x000252ea bmi 0x2529c                       |         
                                                 |     } while (r3 < r3);
    0x000252ec cmp r0, r2                        |     
                                                 |     if (r0 != r2) {
    0x000252ee bne 0x252ce                       |         goto label_0;
                                                 |     }
                                                 | label_10:
    0x000252f0 ldr r0, [pc, 0x80]                |     
    0x000252f2 movs r4, 0                        |     r4 = 0;
    0x000252f4 add r0, pc                        |     r0 = 0x4a66c;
    0x000252f6 blx 0x9de0                        |     fcn_00009de0 ();
    0x000252fa b 0x2527c                         |     goto label_1;
                                                 | label_8:
    0x000252fc ldr r0, [pc, 0x78]                |     
    0x000252fe add r0, pc                        |     r0 = 0x4a67a;
    0x00025300 blx 0x9de0                        |     fcn_00009de0 ();
    0x00025302 stcl p1, c11, [lr, -0x250]!       |     __asm ("stcl p1, c11, [lr, -0x250]!");
    0x00025306 cmp.w r4, 0x3fc                   |     
    0x0002530a it ls                             |     
                                                 |     if (r4 > 0x3fc) {
    0x0002530c lsrls r7, r4, 2                   |         r7 = r4 >> 2;
                                                 |     }
                                                 |     if (r4 < 0x3fc) {
    0x0002530e bls 0x2533e                       |         goto label_6;
                                                 |     }
    0x00025310 bic r4, r4, 3                     |     r4 = BIT_MASK (r4, 3);
                                                 | label_4:
    0x00025314 ldr r0, [r4, 0x18]                |     r0 = *((r4 + 0x18));
    0x00025316 blx 0x9fd0                        |     r0 = fcn_00009fd0 ();
    0x0002531a mov r3, r0                        |     r3 = r0;
    0x0002531c b 0x2526c                         |     goto label_2;
                                                 | label_7:
    0x0002531e ldrb r3, [r5, 0xe]                |     r3 = *((r5 + 0xe));
    0x00025320 lsls r2, r3, 0x1c                 |     r2 = r3 << 0x1c;
                                                 |     if (r2 >= r3) {
    0x00025322 bpl 0x2528e                       |         goto label_3;
                                                 |     }
    0x00025324 ldr r3, [r5, 0x14]                |     r3 = *((r5 + 0x14));
    0x00025326 ldr r4, [r3]                      |     r4 = *(r3);
    0x00025328 mov r0, r4                        |     r0 = r4;
    0x0002532a pop {r3, r4, r5, r6, r7, pc}      |     
    0x0002532c ldr r3, [pc, 0x4c]                |     
    0x0002532e add r3, pc                        |     r3 = 0x4a6ae;
    0x00025330 b 0x2526c                         |     goto label_2;
                                                 | label_9:
    0x00025332 ldr r0, [pc, 0x4c]                |     
    0x00025334 add r0, pc                        |     r0 = 0x4a6ba;
    0x00025336 blx 0x9de0                        |     fcn_00009de0 ();
    0x0002533a mov r0, r4                        |     r0 = r4;
    0x0002533c pop {r3, r4, r5, r6, r7, pc}      |     
                                                 | label_6:
    0x0002533e ldr r3, [pc, 0x44]                |     
    0x00025340 add r3, pc                        |     r3 = 0x4a6ca;
    0x00025342 add.w r3, r3, r7, lsl 2           |     r3 += (r7 << 2);
    0x00025346 ldr r4, [r3, 0xc]                 |     r4 = *((r3 + 0xc));
    0x00025348 cmp r4, 0                         |     
                                                 |     if (r4 != 0) {
    0x0002534a bne 0x25314                       |         goto label_4;
                                                 |     }
    0x0002534c ldr r3, [pc, 0x38]                |     
    0x0002534e add r3, pc                        |     r3 = 0x4a6da;
    0x00025350 b 0x2526c                         |     goto label_2;
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x26b18 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.g_value_fits_pointer ()          | void g_value_fits_pointer (int16_t arg1) {
                                                 |     r0 = arg1;
    0x00026b18 push {r4, lr}                     |     
    0x00026b1a mov r4, r0                        |     r4 = r0;
                                                 |     if (r0 != 0) {
    0x00026b1c cbz r0, 0x26b32                   |         
    0x00026b1e ldr r0, [r0]                      |         r0 = *(r0);
    0x00026b20 bl 0x25228                        |         r0 = g_type_value_table_peek ();
    0x00026b24 mov r4, r0                        |         r4 = r0;
                                                 |         if (r0 == 0) {
    0x00026b26 cbz r0, 0x26b48                   |             goto label_0;
                                                 |         }
    0x00026b28 ldr r0, [r0, 0xc]                 |         r0 = *((r0 + 0xc));
    0x00026b2a subs r0, 0                        |         
    0x00026b2c it ne                             |         
                                                 |         if (r0 == 0) {
    0x00026b2e movne r0, 1                       |             r0 = 1;
                                                 |         }
    0x00026b30 pop {r4, pc}                      |         
                                                 |     }
    0x00026b32 ldr r1, [pc, 0x2c]                |     
    0x00026b34 ldr r2, [pc, 0x2c]                |     
    0x00026b36 ldr r0, [pc, 0x30]                |     
    0x00026b38 add r1, pc                        |     r1 = 0x4d69e;
    0x00026b3a add r2, pc                        |     r2 = 0x4d6a2;
    0x00026b3c adds r1, 0x30                     |     r1 += 0x30;
    0x00026b3e add r0, pc                        |     r0 = 0x4d6ac;
    0x00026b40 blx 0x9c0c                        |     fcn_00009c0c ();
    0x00026b44 mov r0, r4                        |     r0 = r4;
    0x00026b46 pop {r4, pc}                      |     
                                                 | label_0:
    0x00026b48 ldr r1, [pc, 0x20]                |     
    0x00026b4a ldr r2, [pc, 0x24]                |     
    0x00026b4c ldr r0, [pc, 0x24]                |     
    0x00026b4e add r1, pc                        |     r1 = 0x4d6be;
    0x00026b50 add r2, pc                        |     r2 = 0x4d6c6;
    0x00026b52 adds r1, 0x30                     |     r1 += 0x30;
    0x00026b54 add r0, pc                        |     r0 = 0x4d6cc;
    0x00026b56 blx 0x9c0c                        |     fcn_00009c0c ();
    0x00026b5a mov r0, r4                        |     r0 = r4;
    0x00026b5c pop {r4, pc}                      |     
                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x14a04 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.g_value_get_object ()        | void g_value_get_object (int16_t arg1) {
                                             |     r0 = arg1;
    0x00014a04 invalid                       |     
    0x00014a08 ldr r3, [r0]                  |     r3 = *(r0);
    0x00014a0a mov r4, r0                    |     r4 = r0;
    0x00014a0c cmp r3, 0x50                  |     
                                             |     if (r3 != 0x50) {
    0x00014a0e beq 0x14a18                   |         
    0x00014a10 movs r1, 0x50                 |         r1 = 0x50;
    0x00014a12 bl 0x250fc                    |         r0 = g_type_check_value_holds ();
                                             |         if (r0 == 0) {
    0x00014a16 cbz r0, 0x14a1c               |             goto label_0;
                                             |         }
                                             |     }
    0x00014a18 ldr r0, [r4, 8]               |     r0 = *((r4 + 8));
    0x00014a1a pop {r4, pc}                  |     
                                             | label_0:
    0x00014a1c ldr r1, [pc, 0x14]            |     
    0x00014a1e ldr r2, [pc, 0x18]            |     
    0x00014a20 ldr r0, [pc, 0x18]            |     
    0x00014a22 add r1, pc                    |     r1 = 0x2945a;
    0x00014a24 add r2, pc                    |     r2 = 0x29462;
    0x00014a26 addw r1, r1, 0x5fc            |     __asm ("addw r1, r1, 0x5fc");
    0x00014a2a add r0, pc                    |     r0 = 0x2946a;
    0x00014a2c blx 0x9c0c                    |     fcn_00009c0c ();
    0x00014a30 movs r0, 0                    |     r0 = 0;
    0x00014a32 pop {r4, pc}                  |     
                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x26c00 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.g_value_init_from_instance ()                | void g_value_init_from_instance (uint32_t arg1, int16_t arg2) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     if (? >= ?) {
    0x00026c00 ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x00026c04 sub sp, 0x10                                  |     
    0x00026c06 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00026c08 beq 0x26cac                                   |         goto label_0;
                                                             |     }
    0x00026c0a mov r4, r0                                    |     r4 = r0;
    0x00026c0c ldr r6, [r0]                                  |     r6 = *(r0);
    0x00026c0e cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x00026c10 bne 0x26cac                                   |         goto label_0;
                                                             |     }
    0x00026c12 mov r5, r1                                    |     r5 = r1;
    0x00026c14 movs r1, 0x50                                 |     r1 = 0x50;
    0x00026c16 mov r0, r5                                    |     r0 = r5;
    0x00026c18 bl 0x2493c                                    |     r0 = g_type_check_instance_is_fundamentally_a ();
    0x00026c1c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00026c1e bne 0x26cf4                                   |         goto label_1;
                                                             |     }
    0x00026c20 mov r0, r5                                    |     r0 = r5;
    0x00026c22 bl 0x24e2c                                    |     r0 = g_type_check_instance ();
    0x00026c26 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00026c28 beq 0x26cc4                                   |         goto label_2;
                                                             |     }
    0x00026c2a ldr r3, [r5]                                  |     r3 = *(r5);
    0x00026c2c ldr.w sb, [r3]                                |     sb = *(r3);
    0x00026c30 mov r0, sb                                    |     r0 = sb;
    0x00026c32 bl 0x25228                                    |     g_type_value_table_peek ();
    0x00026c36 ldr r3, [r0, 0x10]                            |     r3 = *((r0 + 0x10));
    0x00026c38 mov r7, r0                                    |     r7 = r0;
    0x00026c3a ldrb r2, [r3]                                 |     r2 = *(r3);
    0x00026c3c cmp r2, 0x70                                  |     
                                                             |     if (r2 != 0x70) {
    0x00026c3e bne 0x26cdc                                   |         goto label_3;
                                                             |     }
    0x00026c40 ldrb r6, [r3, 1]                              |     r6 = *((r3 + 1));
    0x00026c42 cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x00026c44 bne 0x26cdc                                   |         goto label_3;
                                                             |     }
    0x00026c46 mov sl, r4                                    |     sl = r4;
    0x00026c48 str r5, [sp, 8]                               |     var_8h = r5;
    0x00026c4a str sb, [sl], 8                               |     *(sl) = sb;
                                                             |     sl += 8;
    0x00026c4e mov r0, r4                                    |     r0 = r4;
    0x00026c50 str r6, [r4, 8]                               |     *((r4 + 8)) = r6;
    0x00026c52 str r6, [sp, 0xc]                             |     var_ch = r6;
    0x00026c54 str.w r6, [sl, 4]                             |     __asm ("str.w r6, [sl, 4]");
    0x00026c58 str.w r6, [sl, 8]                             |     __asm ("str.w r6, [sl, 8]");
    0x00026c5c str.w r6, [sl, 0xc]                           |     __asm ("str.w r6, [sl, 0xc]");
    0x00026c60 ldr r3, [r7]                                  |     r3 = *(r7);
    0x00026c62 blx r3                                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00026c64 ldr r5, [r7, 0x14]                            |     r5 = *((r7 + 0x14));
    0x00026c66 add r2, sp, 8                                 |     r2 += var_8h;
    0x00026c68 mov r3, r6                                    |     r3 = r6;
    0x00026c6a movs r1, 1                                    |     r1 = 1;
    0x00026c6c mov r0, r4                                    |     r0 = r4;
    0x00026c6e blx r5                                        |     r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00026c70 mov r8, r0                                    |     r8 = r0;
                                                             |     if (r0 == 0) {
    0x00026c72 cbz r0, 0x26ca6                               |         goto label_4;
                                                             |     }
    0x00026c74 str r0, [sp]                                  |     *(sp) = r0;
    0x00026c76 movs r1, 0x10                                 |     r1 = 0x10;
    0x00026c78 ldr r3, [pc, 0x94]                            |     
    0x00026c7a ldr r2, [pc, 0x98]                            |     
    0x00026c7c ldr r0, [pc, 0x98]                            |     
    0x00026c7e add r3, pc                                    |     r3 = 0x4d992;
    0x00026c80 add r2, pc                                    |     r2 = 0x4d99a;
    0x00026c82 add r0, pc                                    |     r0 = 0x4d99e;
    0x00026c84 blx 0x9e0c                                    |     g_mutex_lock ();
    0x00026c88 mov r0, r8                                    |     r0 = r8;
    0x00026c8a blx 0x9ac8                                    |     fcn_00009ac8 ();
    0x00026c8e str.w sb, [r4]                                |     __asm ("str.w sb, [r4]");
    0x00026c92 mov r0, r4                                    |     r0 = r4;
    0x00026c94 str r6, [r4, 8]                               |     *((r4 + 8)) = r6;
    0x00026c96 str.w r6, [sl, 4]                             |     __asm ("str.w r6, [sl, 4]");
    0x00026c9a str.w r6, [sl, 8]                             |     __asm ("str.w r6, [sl, 8]");
    0x00026c9e str.w r6, [sl, 0xc]                           |     __asm ("str.w r6, [sl, 0xc]");
    0x00026ca2 ldr r3, [r7]                                  |     r3 = *(r7);
    0x00026ca4 blx r3                                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                             |     do {
                                                             | label_4:
    0x00026ca6 add sp, 0x10                                  |         
    0x00026ca8 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_0:
    0x00026cac ldr r1, [pc, 0x6c]                            |         
    0x00026cae ldr r2, [pc, 0x70]                            |         
    0x00026cb0 ldr r0, [pc, 0x70]                            |         
    0x00026cb2 add r1, pc                                    |         r1 = 0x4d9d2;
    0x00026cb4 add r2, pc                                    |         r2 = 0x4d9da;
    0x00026cb6 adds r1, 0x60                                 |         r1 += 0x60;
    0x00026cb8 add r0, pc                                    |         r0 = 0x4d9e0;
    0x00026cba add sp, 0x10                                  |         
    0x00026cbc pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |         
    0x00026cc0 b.w 0x9c08                                    |         void (*0x9c08)() ();
                                                             | label_2:
    0x00026cc4 ldr r1, [pc, 0x60]                            |         
    0x00026cc6 ldr r2, [pc, 0x64]                            |         
    0x00026cc8 ldr r0, [pc, 0x64]                            |         
    0x00026cca add r1, pc                                    |         r1 = 0x4d9f6;
    0x00026ccc add r2, pc                                    |         r2 = 0x4d9fe;
    0x00026cce adds r1, 0x60                                 |         r1 += 0x60;
    0x00026cd0 add r0, pc                                    |         r0 = 0x4da04;
    0x00026cd2 add sp, 0x10                                  |         
    0x00026cd4 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |         
    0x00026cd8 b.w 0x9c08                                    |         void (*0x9c08)() ();
                                                             | label_3:
    0x00026cdc ldr r1, [pc, 0x54]                            |         
    0x00026cde ldr r2, [pc, 0x58]                            |         
    0x00026ce0 ldr r0, [pc, 0x58]                            |         
    0x00026ce2 add r1, pc                                    |         r1 = 0x4da1a;
    0x00026ce4 add r2, pc                                    |         r2 = 0x4da22;
    0x00026ce6 adds r1, 0x60                                 |         r1 += 0x60;
    0x00026ce8 add r0, pc                                    |         r0 = 0x4da28;
    0x00026cea add sp, 0x10                                  |         
    0x00026cec pop.w {r4, r5, r6, r7, r8, sb, sl, lr}        |         
    0x00026cf0 b.w 0x9c08                                    |         void (*0x9c08)() ();
                                                             | label_1:
    0x00026cf4 ldr r2, [r5]                                  |         r2 = *(r5);
    0x00026cf6 mov r3, r4                                    |         r3 = r4;
    0x00026cf8 mov r0, r5                                    |         r0 = r5;
    0x00026cfa ldr r2, [r2]                                  |         r2 = *(r2);
    0x00026cfc str r2, [r3], 8                               |         *(r3) = r2;
                                                             |         r3 += 8;
    0x00026d00 str r6, [r4, 8]                               |         *((r4 + 8)) = r6;
    0x00026d02 str r6, [r3, 4]                               |         *((r3 + 4)) = r6;
    0x00026d04 str r6, [r3, 8]                               |         *((r3 + 8)) = r6;
    0x00026d06 str r6, [r3, 0xc]                             |         *((r3 + 0xc)) = r6;
    0x00026d08 bl 0x11308                                    |         g_object_ref ();
    0x00026d0c str r0, [r4, 8]                               |         *((r4 + 8)) = r0;
    0x00026d0e b 0x26ca6                                     |         
                                                             |     } while (1);
                                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libgobject-2.0.so.0.6800.4 @ 0x26b78 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.g_value_peek_pointer ()          | void g_value_peek_pointer (int16_t arg1) {
                                                 |     r0 = arg1;
    0x00026b78 push {r4, lr}                     |     
                                                 |     if (r0 != 0) {
    0x00026b7a cbz r0, 0x26b92                   |         
    0x00026b7c mov r4, r0                        |         r4 = r0;
    0x00026b7e ldr r0, [r0]                      |         r0 = *(r0);
    0x00026b80 bl 0x25228                        |         r0 = g_type_value_table_peek ();
                                                 |         if (r0 == 0) {
    0x00026b84 cbz r0, 0x26ba8                   |             goto label_1;
                                                 |         }
    0x00026b86 ldr r3, [r0, 0xc]                 |         r3 = *((r0 + 0xc));
    0x00026b88 mov r0, r4                        |         r0 = r4;
                                                 |         if (r3 == 0) {
    0x00026b8a cbz r3, 0x26bbe                   |             goto label_2;
                                                 |         }
    0x00026b8c pop.w {r4, lr}                    |         
    0x00026b90 bx r3                             |         return uint32_t (*r3)() ();
                                                 |     }
    0x00026b92 ldr r1, [pc, 0x48]                |     
    0x00026b94 ldr r2, [pc, 0x48]                |     
    0x00026b96 ldr r0, [pc, 0x4c]                |     
    0x00026b98 add r1, pc                        |     r1 = 0x4d77a;
    0x00026b9a add r2, pc                        |     r2 = 0x4d77e;
    0x00026b9c adds r1, 0x48                     |     r1 += 0x48;
    0x00026b9e add r0, pc                        |     r0 = 0x4d788;
    0x00026ba0 blx 0x9c0c                        |     fcn_00009c0c ();
                                                 |     do {
                                                 | label_0:
    0x00026ba4 movs r0, 0                        |         r0 = 0;
    0x00026ba6 pop {r4, pc}                      |         
                                                 | label_1:
    0x00026ba8 ldr r1, [pc, 0x3c]                |         
    0x00026baa ldr r2, [pc, 0x40]                |         
    0x00026bac ldr r0, [pc, 0x40]                |         
    0x00026bae add r1, pc                        |         r1 = 0x4d79a;
    0x00026bb0 add r2, pc                        |         r2 = 0x4d7a2;
    0x00026bb2 adds r1, 0x48                     |         r1 += 0x48;
    0x00026bb4 add r0, pc                        |         r0 = 0x4d7a8;
    0x00026bb6 blx 0x9c0c                        |         fcn_00009c0c ();
    0x00026bba movs r0, 0                        |         r0 = 0;
    0x00026bbc pop {r4, pc}                      |         
                                                 | label_2:
    0x00026bbe bl 0x26b18                        |         r0 = g_value_fits_pointer ();
    0x00026bc2 cmp r0, 1                         |         
    0x00026bc4 beq 0x26ba4                       |         
                                                 |     } while (r0 == 1);
    0x00026bc6 ldr r1, [pc, 0x2c]                |     
    0x00026bc8 ldr r2, [pc, 0x2c]                |     
    0x00026bca ldr r0, [pc, 0x30]                |     
    0x00026bcc add r1, pc                        |     r1 = 0x4d7c6;
    0x00026bce add r2, pc                        |     r2 = 0x4d7ca;
    0x00026bd0 adds r1, 0x48                     |     r1 += 0x48;
    0x00026bd2 add r0, pc                        |     r0 = 0x4d7d4;
    0x00026bd4 blx 0x9c0c                        |     fcn_00009c0c ();
    0x00026bd8 b 0x26ba4                         |     goto label_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/libgobject-2.0.so.0.6800.4 @ 0x293b0 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.g_value_set_ulong ()         | void g_value_set_ulong (int16_t arg1, int16_t arg2) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x000293b0 push {r3, r4, r5, lr}         |     
                                             |     if (r0 != 0) {
    0x000293b2 cbz r0, 0x293ca               |         
    0x000293b4 ldr r3, [r0]                  |         r3 = *(r0);
    0x000293b6 mov r5, r1                    |         r5 = r1;
    0x000293b8 mov r4, r0                    |         r4 = r0;
    0x000293ba cmp r3, 0x24                  |         
                                             |         if (r3 != 0x24) {
    0x000293bc beq 0x293c6                   |             
    0x000293be movs r1, 0x24                 |             r1 = 0x24;
    0x000293c0 bl 0x250fc                    |             r0 = g_type_check_value_holds ();
                                             |             if (r0 == 0) {
    0x000293c4 cbz r0, 0x293ca               |                 goto label_0;
                                             |             }
                                             |         }
    0x000293c6 str r5, [r4, 8]               |         *((r4 + 8)) = r5;
    0x000293c8 pop {r3, r4, r5, pc}          |         
                                             |     }
                                             | label_0:
    0x000293ca ldr r1, [pc, 0x18]            |     
    0x000293cc ldr r2, [pc, 0x18]            |     
    0x000293ce ldr r0, [pc, 0x1c]            |     
    0x000293d0 add r1, pc                    |     
    0x000293d2 pop.w {r3, r4, r5, lr}        |     
    0x000293d6 add r2, pc                    |     r2 = 0x527c2;
    0x000293d8 add.w r1, r1, 0x1e8           |     r1 = 0x529a2;
    0x000293dc add r0, pc                    |     r0 = 0x527ce;
    0x000293de b.w 0x9c08                    |     return void (*0x9c08)() ();
                                             | }

[*] Function fprintf used 1 times libgobject-2.0.so.0.6800.4