[*] Binary protection state of libpacsio-api.so.0.0.55

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


[*] Function system tear down of libpacsio-api.so.0.0.55

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpacsio-api.so.0.0.55 @ 0xe134 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000e134 ()                  | void fcn_0000e134 (int16_t arg1) {
                                             |     int16_t var_0h;
                                             |     int16_t var_4h;
                                             |     int32_t var_8h;
                                             |     int32_t var_8h_2;
                                             |     int16_t var_10h;
                                             |     int16_t var_18h;
                                             |     int16_t var_1ch;
                                             |     r0 = arg1;
    0x0000e134 push {r4, r5, r6, lr}         |     
    0x0000e136 movs r2, 0                    |     r2 = 0;
    0x0000e138 ldr r6, [pc, 0x8c]            |     
    0x0000e13a sub sp, 0x20                  |     
    0x0000e13c mov r1, r2                    |     r1 = r2;
    0x0000e13e mov r5, r0                    |     r5 = r0;
    0x0000e140 ldr r3, [pc, 0x88]            |     r3 = *(0xe1cc);
    0x0000e142 mov r4, r2                    |     r4 = r2;
    0x0000e144 add r6, pc                    |     r6 = 0x1c310;
    0x0000e146 ldr r0, [r0, 0x1c]            |     r0 = *((r0 + 0x1c));
    0x0000e148 ldr r3, [r6, r3]              |     
    0x0000e14a ldr r3, [r3]                  |     r3 = *(0x1c310);
    0x0000e14c str r3, [sp, 0x1c]            |     var_1ch = r3;
    0x0000e14e mov.w r3, 0                   |     r3 = 0;
    0x0000e152 blx 0x64f4                    |     fcn_000064f4 ();
    0x0000e156 str r4, [sp, 0x18]            |     var_18h = r4;
    0x0000e158 mov r6, r0                    |     r6 = r0;
    0x0000e15a blx 0x5b18                    |     ipc_data_get_key_references ();
    0x0000e15e movs r1, 1                    |     r1 = 1;
    0x0000e160 strd r4, r4, [sp, 8]          |     __asm ("strd r4, r4, [var_8h]");
    0x0000e164 str r4, [sp]                  |     *(sp) = r4;
    0x0000e166 mov r3, r4                    |     r3 = r4;
    0x0000e168 add r4, sp, 0x18              |     r4 += var_18h;
    0x0000e16a str r1, [sp, 4]               |     var_4h = r1;
    0x0000e16c mov r2, r0                    |     r2 = r0;
    0x0000e16e str r4, [sp, 0x10]            |     var_10h = r4;
    0x0000e170 mov r1, r6                    |     r1 = r6;
    0x0000e172 ldr r0, [r5, 0x18]            |     r0 = *((r5 + 0x18));
    0x0000e174 blx 0x602c                    |     r0 = fcn_0000602c ();
                                             |     if (r0 != 0) {
    0x0000e178 cbnz r0, 0xe198               |         goto label_0;
                                             |     }
    0x0000e17a ldr r3, [sp, 0x18]            |     r3 = var_18h;
                                             |     if (r3 == 0) {
    0x0000e17c cbz r3, 0xe1bc                |         goto label_1;
                                             |     }
    0x0000e17e ldr r1, [r3, 8]               |     r1 = *((r3 + 8));
                                             |     do {
    0x0000e180 ldr r2, [r5]                  |         r2 = *(r5);
    0x0000e182 ldr r3, [pc, 0x4c]            |         
    0x0000e184 ldr r0, [pc, 0x4c]            |         
    0x0000e186 strd r2, r1, [sp]             |         __asm ("strd r2, r1, [sp]");
    0x0000e18a movs r1, 0x10                 |         r1 = 0x10;
    0x0000e18c ldr r2, [pc, 0x48]            |         
    0x0000e18e add r3, pc                    |         r3 = 0x1c364;
    0x0000e190 add r0, pc                    |         r0 = 0x1c368;
    0x0000e192 add r2, pc                    |         r2 = 0x1c36e;
    0x0000e194 blx 0x647c                    |         fcn_0000647c ();
                                             | label_0:
    0x0000e198 mov r0, r4                    |         r0 = r4;
    0x0000e19a blx 0x56e0                    |         get_schema_cache_from_system_registry ()
    0x0000e19e mov r0, r6                    |         r0 = r6;
    0x0000e1a0 blx 0x5438                    |         fcn_00005438 ();
    0x0000e1a4 ldr r2, [pc, 0x34]            |         
    0x0000e1a6 ldr r3, [pc, 0x24]            |         r3 = *(0xe1ce);
    0x0000e1a8 add r2, pc                    |         r2 = 0x1c388;
    0x0000e1aa ldr r3, [r2, r3]              |         r3 = *(0x1c388);
    0x0000e1ac ldr r2, [r3]                  |         r2 = *(0x1c388);
    0x0000e1ae ldr r3, [sp, 0x1c]            |         r3 = var_1ch;
    0x0000e1b0 eors r2, r3                   |         r2 ^= r3;
    0x0000e1b2 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x0000e1b6 bne 0xe1c2                    |             goto label_2;
                                             |         }
    0x0000e1b8 add sp, 0x20                  |         
    0x0000e1ba pop {r4, r5, r6, pc}          |         
                                             | label_1:
    0x0000e1bc ldr r1, [pc, 0x20]            |         
    0x0000e1be add r1, pc                    |         r1 = 0x1c3a2;
    0x0000e1c0 b 0xe180                      |         
                                             |     } while (1);
                                             | label_2:
    0x0000e1c2 blx 0x5fbc                    |     domain_contract_new ();
    0x0000e1c6 nop                           |     
    0x0000e1c8 ldr r4, [r6, r3]              |     r4 = *((r6 + r3));
    0x0000e1ca movs r0, r0                   |     
    0x0000e1cc lsls r4, r7, 0x16             |     r4 = r7 << 0x16;
    0x0000e1ce movs r0, r0                   |     
    0x0000e1d0 adds r6, r0, r4               |     r6 = r0 + r4;
    0x0000e1d2 movs r0, r0                   |     
    0x0000e1d4 asrs r4, r1, 0x15             |     r4 = r1 >> 0x15;
    0x0000e1d6 movs r0, r0                   |     
    0x0000e1d8 adds r5, 0xfe                 |     r5 += 0xfe;
    0x0000e1da movs r0, r0                   |     
    0x0000e1dc ldr r0, [r2, r2]              |     r0 = *((r2 + r2));
    0x0000e1de movs r0, r0                   |     
    0x0000e1e0 adds r5, 0xca                 |     r5 += 0xca;
    0x0000e1e2 movs r0, r0                   |     
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpacsio-api.so.0.0.55 @ 0xe23c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0000e23c ()              | void fcn_0000e23c (int16_t arg1, int16_t arg2, int16_t arg3) {
                                         |     int16_t var_18h;
                                         |     int16_t var_24h;
                                         |     int16_t var_2ch;
                                         |     int16_t var_30h;
                                         |     int16_t var_34h;
                                         |     int16_t var_38h;
                                         |     int16_t var_44h;
                                         |     int16_t var_70h;
                                         |     int16_t var_74h;
                                         |     int16_t var_8h;
                                         |     int16_t var_ch;
                                         |     r0 = arg1;
                                         |     r1 = arg2;
                                         |     r2 = arg3;
    0x0000e23c invalid                   |     
    0x0000e240 mov r3, r1                |     r3 = r1;
    0x0000e242 mov r1, r2                |     r1 = r2;
    0x0000e244 ldr r2, [pc, 0x68]        |     
    0x0000e246 push {r4, r5, lr}         |     
    0x0000e248 sub sp, 0x14              |     
    0x0000e24a add ip, pc                |     
    0x0000e24c movs r4, 0                |     r4 = 0;
    0x0000e24e add r5, sp, 8             |     r5 += var_8h;
    0x0000e250 ldr.w r2, [ip, r2]        |     r2 = *((ip + r2));
    0x0000e254 ldr r2, [r2]              |     r2 = *(0xe2b0);
    0x0000e256 str r2, [sp, 0xc]         |     var_ch = r2;
    0x0000e258 mov.w r2, 0               |     r2 = 0;
    0x0000e25c str r4, [sp, 8]           |     var_8h = r4;
    0x0000e25e mov r2, r5                |     r2 = r5;
    0x0000e260 blx r3                    |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
    0x0000e262 mov r4, r0                |     r4 = r0;
                                         |     if (r0 != 0) {
    0x0000e264 cbnz r0, 0xe280           |         goto label_0;
                                         |     }
    0x0000e266 ldr r3, [sp, 8]           |     r3 = var_8h;
                                         |     if (r3 == 0) {
    0x0000e268 cbz r3, 0xe2a0            |         goto label_1;
                                         |     }
    0x0000e26a ldr r1, [r3, 8]           |     r1 = *((r3 + 8));
                                         |     do {
    0x0000e26c ldr r3, [pc, 0x44]        |         
    0x0000e26e ldr r2, [pc, 0x48]        |         
    0x0000e270 ldr r0, [pc, 0x48]        |         
    0x0000e272 str r1, [sp]              |         *(sp) = r1;
    0x0000e274 add r3, pc                |         r3 = 0x1c52c;
    0x0000e276 add r2, pc                |         r2 = 0x1c534;
    0x0000e278 movs r1, 0x10             |         r1 = 0x10;
    0x0000e27a add r0, pc                |         r0 = 0x1c53a;
    0x0000e27c blx 0x647c                |         fcn_0000647c ();
                                         | label_0:
    0x0000e280 mov r0, r5                |         r0 = r5;
    0x0000e282 blx 0x56e0                |         get_schema_cache_from_system_registry ()
    0x0000e286 ldr r2, [pc, 0x38]        |         
    0x0000e288 ldr r3, [pc, 0x24]        |         r3 = *(0xe2b0);
    0x0000e28a add r2, pc                |         r2 = 0x1c550;
    0x0000e28c ldr r3, [r2, r3]          |         r3 = *(0x1c550);
    0x0000e28e ldr r2, [r3]              |         r2 = *(0x1c550);
    0x0000e290 ldr r3, [sp, 0xc]         |         r3 = var_ch;
    0x0000e292 eors r2, r3               |         r2 ^= r3;
    0x0000e294 mov.w r3, 0               |         r3 = 0;
                                         |         if (r2 != r3) {
    0x0000e298 bne 0xe2a6                |             goto label_2;
                                         |         }
    0x0000e29a mov r0, r4                |         r0 = r4;
    0x0000e29c add sp, 0x14              |         
    0x0000e29e pop {r4, r5, pc}          |         
                                         | label_1:
    0x0000e2a0 ldr r1, [pc, 0x20]        |         
    0x0000e2a2 add r1, pc                |         r1 = 0x1c56a;
    0x0000e2a4 b 0xe26c                  |         
                                         |     } while (1);
                                         | label_2:
    0x0000e2a6 blx 0x5fbc                |     domain_contract_new ();
    0x0000e2aa nop                       |     
    0x0000e2ac ldrsb r6, [r5, r7]        |     r6 = *((r5 + r7));
    0x0000e2ae movs r0, r0               |     
    0x0000e2b0 lsls r4, r7, 0x16         |     r4 = r7 << 0x16;
    0x0000e2b2 movs r0, r0               |     
    0x0000e2b4 adds r0, r4, r0           |     r0 = r4 + r0;
    0x0000e2b6 movs r0, r0               |     
    0x0000e2b8 adds r5, 0x82             |     r5 += 0x82;
    0x0000e2ba movs r0, r0               |     
    0x0000e2bc asrs r2, r4, 0x11         |     r2 = r4 >> 0x11;
    0x0000e2be movs r0, r0               |     
    0x0000e2c0 ldrsb r6, [r5, r6]        |     r6 = *((r5 + r6));
    0x0000e2c2 movs r0, r0               |     
    0x0000e2c4 adds r4, 0xe6             |     r4 += 0xe6;
    0x0000e2c6 movs r0, r0               |     
                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpacsio-api.so.0.0.55 @ 0xe2c8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000e2c8 ()                                      | void fcn_0000e2c8 (int16_t arg_70h, int16_t arg_74h, int16_t arg_78h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_7h;
                                                                 |     int16_t var_44h;
                                                                 |     int8_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0000e2c8 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000e2cc sub sp, 0x4c                                      |     
    0x0000e2ce strd r2, r3, [sp, 0x1c]                           |     __asm ("strd r2, r3, [var_20h]");
    0x0000e2d2 mov r4, r0                                        |     r4 = r0;
    0x0000e2d4 mov r0, r1                                        |     r0 = r1;
    0x0000e2d6 ldr r2, [pc, 0x1e8]                               |     
    0x0000e2d8 ldr r1, [sp, 0x70]                                |     r1 = *(arg_70h);
    0x0000e2da ldr r3, [pc, 0x1e8]                               |     r3 = *(0xe4c6);
    0x0000e2dc add r2, pc                                        |     r2 = 0x1c7a2;
    0x0000e2de ldr r6, [pc, 0x1e8]                               |     
    0x0000e2e0 str r1, [sp, 0x24]                                |     var_24h = r1;
    0x0000e2e2 ldr r3, [r2, r3]                                  |     
    0x0000e2e4 ldr r5, [pc, 0x1e4]                               |     
    0x0000e2e6 add r6, pc                                        |     r6 = 0x1c7b4;
    0x0000e2e8 ldr r3, [r3]                                      |     r3 = *(0x1c7a2);
    0x0000e2ea str r3, [sp, 0x44]                                |     var_44h = r3;
    0x0000e2ec mov.w r3, 0                                       |     r3 = 0;
    0x0000e2f0 ldr r3, [sp, 0x74]                                |     r3 = *(arg_74h);
    0x0000e2f2 add r5, pc                                        |     r5 = 0x1c7c2;
    0x0000e2f4 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x0000e2f6 ldr r3, [sp, 0x78]                                |     r3 = *(arg_78h);
    0x0000e2f8 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x0000e2fa blx 0x54d8                                        |     fcn_000054d8 ();
    0x0000e2fe movs r2, 0                                        |     r2 = 0;
    0x0000e300 mov r1, r6                                        |     r1 = r6;
    0x0000e302 str r0, [sp, 0x38]                                |     var_38h = r0;
    0x0000e304 blx 0x5568                                        |     fcn_00005568 ();
    0x0000e308 movs r2, 0                                        |     r2 = 0;
    0x0000e30a mov r1, r5                                        |     r1 = r5;
    0x0000e30c str r0, [sp, 0x18]                                |     var_18h = r0;
    0x0000e30e ldr r0, [sp, 0x38]                                |     r0 = var_38h;
    0x0000e310 blx 0x6388                                        |     domain_rs485port_set_requested_baudrate ();
    0x0000e314 mov r1, r6                                        |     r1 = r6;
    0x0000e316 str r0, [sp, 0x2c]                                |     var_2ch = r0;
    0x0000e318 ldr r0, [sp, 0x38]                                |     r0 = var_38h;
    0x0000e31a blx 0x5674                                        |     fcn_00005674 ();
    0x0000e31e ldr r0, [sp, 0x38]                                |     r0 = var_38h;
    0x0000e320 mov r1, r5                                        |     r1 = r5;
    0x0000e322 blx 0x5674                                        |     fcn_00005674 ();
    0x0000e326 ldr r7, [r4, 0x10]                                |     r7 = *((r4 + 0x10));
    0x0000e328 ldr r2, [pc, 0x1a4]                               |     
    0x0000e32a ldr.w fp, [sp, 0x38]                              |     fp = var_38h;
    0x0000e32e add r2, pc                                        |     r2 = 0x1c802;
    0x0000e330 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0000e332 beq 0xe3e4                                        |         goto label_2;
                                                                 |     }
    0x0000e334 ldr r3, [pc, 0x19c]                               |     
    0x0000e336 add r6, sp, 0x40                                  |     r6 += var_40h;
    0x0000e338 ldr.w sb, [pc, 0x19c]                             |     
    0x0000e33c ldr r1, [pc, 0x19c]                               |     r1 = *(0xe4dc);
    0x0000e33e ldr.w sl, [pc, 0x1a0]                             |     
    0x0000e342 add r3, pc                                        |     r3 = 0x1c81a;
    0x0000e344 add sb, pc                                        |     sb = 0x1c820;
    0x0000e346 ldr.w r8, [r2, r1]                                |     r8 = *((r2 + r1));
    0x0000e34a add sl, pc                                        |     sl = 0x1c830;
    0x0000e34c str.w sb, [sp, 0x14]                              |     __asm ("str.w sb, [var_14h]");
    0x0000e350 mov sb, r3                                        |     sb = r3;
    0x0000e352 str r4, [sp, 0x28]                                |     var_28h = r4;
                                                                 |     do {
    0x0000e354 ldr r4, [r7]                                      |         r4 = *(r7);
    0x0000e356 mov r0, fp                                        |         r0 = fp;
    0x0000e358 ldr r1, [r4]                                      |         r1 = *(r4);
    0x0000e35a blx 0x634c                                        |         domain_resource_load_from_id ();
    0x0000e35e str r0, [sp, 0x40]                                |         var_40h = r0;
    0x0000e360 blx 0x54d8                                        |         fcn_000054d8 ();
    0x0000e364 mov r1, sb                                        |         r1 = sb;
    0x0000e366 mov r5, r0                                        |         r5 = r0;
    0x0000e368 blx 0x5674                                        |         fcn_00005674 ();
    0x0000e36c ldr r2, [r4, 4]                                   |         r2 = *((r4 + 4));
                                                                 |         if (r2 != 0) {
    0x0000e36e cbz r2, 0xe378                                    |             
    0x0000e370 mov r1, sl                                        |             r1 = sl;
    0x0000e372 mov r0, r5                                        |             r0 = r5;
    0x0000e374 blx 0x5928                                        |             fcn_00005928 ();
                                                                 |         }
    0x0000e378 ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
                                                                 |         if (r2 != 0) {
    0x0000e37a cbz r2, 0xe384                                    |             
    0x0000e37c ldr r1, [sp, 0x14]                                |             r1 = var_14h;
    0x0000e37e mov r0, r5                                        |             r0 = r5;
    0x0000e380 blx 0x5450                                        |             fcn_00005450 ();
                                                                 |         }
    0x0000e384 mov r1, r5                                        |         r1 = r5;
    0x0000e386 movs r0, 0                                        |         r0 = 0;
    0x0000e388 blx 0x613c                                        |         g_once_init_enter ();
    0x0000e38c ldr r1, [pc, 0x154]                               |         
    0x0000e38e mov r5, r0                                        |         r5 = r0;
    0x0000e390 ldr r0, [sp, 0x40]                                |         r0 = var_40h;
    0x0000e392 add r1, pc                                        |         r1 = 0x1c87a;
    0x0000e394 blx 0x5674                                        |         fcn_00005674 ();
    0x0000e398 ldr r1, [pc, 0x14c]                               |         
    0x0000e39a ldr r0, [sp, 0x40]                                |         r0 = var_40h;
    0x0000e39c add r1, pc                                        |         r1 = 0x1c888;
    0x0000e39e blx 0x5674                                        |         fcn_00005674 ();
    0x0000e3a2 ldr r1, [pc, 0x148]                               |         
    0x0000e3a4 mov r2, r5                                        |         r2 = r5;
    0x0000e3a6 ldr r0, [sp, 0x40]                                |         r0 = var_40h;
    0x0000e3a8 add r1, pc                                        |         r1 = 0x1c89a;
    0x0000e3aa blx 0x5c20                                        |         fcn_00005c20 ();
    0x0000e3ae ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
                                                                 |         if (r3 != 0) {
    0x0000e3b0 cbz r3, 0xe3c0                                    |             
    0x0000e3b2 ldr r2, [pc, 0x13c]                               |             
    0x0000e3b4 ldr r1, [pc, 0x13c]                               |             
    0x0000e3b6 ldr r0, [sp, 0x40]                                |             r0 = var_40h;
    0x0000e3b8 add r2, pc                                        |             r2 = 0x1c8ae;
    0x0000e3ba add r1, pc                                        |             r1 = 0x1c8b2;
    0x0000e3bc blx 0x5450                                        |             fcn_00005450 ();
                                                                 |         }
    0x0000e3c0 ldr r1, [r4]                                      |         r1 = *(r4);
    0x0000e3c2 mov r0, fp                                        |         r0 = fp;
    0x0000e3c4 ldr r2, [sp, 0x40]                                |         r2 = var_40h;
    0x0000e3c6 blx 0x5928                                        |         fcn_00005928 ();
    0x0000e3ca mov r0, r6                                        |         r0 = r6;
    0x0000e3cc blx 0x5d2c                                        |         fcn_00005d2c ();
    0x0000e3d0 mov r1, r8                                        |         r1 = r8;
    0x0000e3d2 mov r0, r5                                        |         r0 = r5;
    0x0000e3d4 blx 0x57e8                                        |         fcn_000057e8 ();
    0x0000e3d8 ldr r7, [r7, 4]                                   |         r7 = *((r7 + 4));
    0x0000e3da cmp r7, 0                                         |         
    0x0000e3dc bne 0xe354                                        |         
                                                                 |     } while (r7 != 0);
    0x0000e3de ldr r4, [sp, 0x28]                                |     r4 = var_28h;
    0x0000e3e0 ldr.w fp, [sp, 0x38]                              |     fp = var_38h;
                                                                 | label_2:
    0x0000e3e4 add r7, sp, 0x3c                                  |     r7 += var_3ch;
    0x0000e3e6 movs r5, 0                                        |     r5 = 0;
    0x0000e3e8 ldrd r2, r3, [sp, 0x20]                           |     __asm ("ldrd r2, r3, [var_24h]");
    0x0000e3ec mov r0, fp                                        |     r0 = fp;
    0x0000e3ee ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x0000e3f0 str r7, [sp]                                      |     *(sp) = r7;
    0x0000e3f2 str r5, [sp, 0x3c]                                |     var_3ch = r5;
    0x0000e3f4 blx 0x630c                                        |     r0 = fcn_0000630c ();
    0x0000e3f8 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x0000e3fa cbz r0, 0xe438                                    |         goto label_3;
                                                                 |     }
    0x0000e3fc ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
                                                                 |     if (r3 != 0) {
    0x0000e3fe cbz r3, 0xe40c                                    |         
    0x0000e400 ldr r1, [pc, 0xf4]                                |         
    0x0000e402 mov r2, r3                                        |         r2 = r3;
    0x0000e404 ldr r0, [sp, 0x38]                                |         r0 = var_38h;
    0x0000e406 add r1, pc                                        |         r1 = 0x1c902;
    0x0000e408 blx 0x5450                                        |         fcn_00005450 ();
                                                                 |     }
    0x0000e40c ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x0000e40e movs r1, 0                                        |     r1 = 0;
    0x0000e410 add r6, sp, 0x40                                  |     r6 += var_40h;
    0x0000e412 str r1, [sp, 0x40]                                |     var_40h = r1;
    0x0000e414 str r6, [sp, 4]                                   |     var_4h = r6;
    0x0000e416 str r3, [sp]                                      |     *(sp) = r3;
    0x0000e418 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x0000e41a ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x0000e41c ldr r0, [r4, 0x24]                                |     r0 = *((r4 + 0x24));
    0x0000e41e ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x0000e420 blx 0x5e1c                                        |     r0 = fcn_00005e1c ();
    0x0000e424 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x0000e426 cbz r0, 0xe484                                    |         goto label_4;
                                                                 |     }
    0x0000e428 mov r0, r6                                        |     r0 = r6;
    0x0000e42a blx 0x56e0                                        |     get_schema_cache_from_system_registry ()
    0x0000e42e mov r0, r5                                        |     r0 = r5;
    0x0000e430 blx 0x5644                                        |     domain_aadpdevice_set_name ();
                                                                 |     do {
    0x0000e434 movs r5, 1                                        |         r5 = 1;
    0x0000e436 b 0xe45c                                          |         goto label_5;
                                                                 | label_3:
    0x0000e438 ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x0000e43a cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0000e43c beq 0xe4ae                                        |             goto label_6;
                                                                 |         }
    0x0000e43e ldr r3, [r3, 8]                                   |         r3 = *((r3 + 8));
                                                                 | label_0:
    0x0000e440 ldr r2, [r4]                                      |         r2 = *(r4);
    0x0000e442 ldr r1, [sp, 0x18]                                |         r1 = var_18h;
    0x0000e444 ldr r0, [pc, 0xb4]                                |         
    0x0000e446 str r3, [sp, 8]                                   |         var_8h = r3;
    0x0000e448 strd r2, r1, [sp]                                 |         __asm ("strd r2, r1, [sp]");
    0x0000e44c movs r1, 0x10                                     |         r1 = 0x10;
    0x0000e44e ldr r3, [pc, 0xb0]                                |         
    0x0000e450 add r0, pc                                        |         r0 = 0x1c950;
    0x0000e452 ldr r2, [pc, 0xb0]                                |         
    0x0000e454 add r3, pc                                        |         r3 = 0x1c95a;
    0x0000e456 add r2, pc                                        |         r2 = 0x1c960;
    0x0000e458 blx 0x647c                                        |         fcn_0000647c ();
                                                                 | label_5:
    0x0000e45c mov r0, r7                                        |         r0 = r7;
    0x0000e45e blx 0x56e0                                        |         get_schema_cache_from_system_registry ()
    0x0000e462 add r0, sp, 0x38                                  |         r0 += var_38h;
    0x0000e464 blx 0x5d2c                                        |         fcn_00005d2c ();
    0x0000e468 ldr r2, [pc, 0x9c]                                |         
    0x0000e46a ldr r3, [pc, 0x58]                                |         r3 = *(0xe4c6);
    0x0000e46c add r2, pc                                        |         r2 = 0x1c978;
    0x0000e46e ldr r3, [r2, r3]                                  |         r3 = *(0x1c978);
    0x0000e470 ldr r2, [r3]                                      |         r2 = *(0x1c978);
    0x0000e472 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x0000e474 eors r2, r3                                       |         r2 ^= r3;
    0x0000e476 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000e47a bne 0xe4ba                                        |             goto label_7;
                                                                 |         }
    0x0000e47c mov r0, r5                                        |         r0 = r5;
    0x0000e47e add sp, 0x4c                                      |         
    0x0000e480 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_4:
    0x0000e484 ldr r3, [sp, 0x40]                                |         r3 = var_40h;
                                                                 |         if (r3 == 0) {
    0x0000e486 cbz r3, 0xe4b4                                    |             goto label_8;
                                                                 |         }
    0x0000e488 ldr r3, [r3, 8]                                   |         r3 = *((r3 + 8));
                                                                 | label_1:
    0x0000e48a ldr r2, [r4]                                      |         r2 = *(r4);
    0x0000e48c ldr r1, [sp, 0x18]                                |         r1 = var_18h;
    0x0000e48e str r3, [sp, 8]                                   |         var_8h = r3;
    0x0000e490 ldr r0, [pc, 0x78]                                |         
    0x0000e492 strd r2, r1, [sp]                                 |         __asm ("strd r2, r1, [sp]");
    0x0000e496 movs r1, 0x10                                     |         r1 = 0x10;
    0x0000e498 ldr r3, [pc, 0x74]                                |         
    0x0000e49a ldr r2, [pc, 0x78]                                |         
    0x0000e49c add r0, pc                                        |         r0 = 0x1c9ac;
    0x0000e49e add r3, pc                                        |         r3 = 0x1c9b2;
    0x0000e4a0 add r2, pc                                        |         r2 = 0x1c9ba;
    0x0000e4a2 blx 0x647c                                        |         fcn_0000647c ();
    0x0000e4a6 mov r0, r6                                        |         r0 = r6;
    0x0000e4a8 blx 0x56e0                                        |         get_schema_cache_from_system_registry ()
    0x0000e4ac b 0xe434                                          |         
                                                                 |     } while (1);
                                                                 | label_6:
    0x0000e4ae ldr r3, [pc, 0x68]                                |     
    0x0000e4b0 add r3, pc                                        |     r3 = 0x1c9ce;
    0x0000e4b2 b 0xe440                                          |     goto label_0;
                                                                 | label_8:
    0x0000e4b4 ldr r3, [pc, 0x64]                                |     
    0x0000e4b6 add r3, pc                                        |     r3 = 0x1c9d6;
    0x0000e4b8 b 0xe48a                                          |     goto label_1;
                                                                 | label_7:
    0x0000e4ba blx 0x5fbc                                        |     domain_contract_new ();
    0x0000e4be nop                                               |     
    0x0000e4c0 ldrsb r4, [r3, r5]                                |     r4 = *((r3 + r5));
    0x0000e4c2 movs r0, r0                                       |     
    0x0000e4c4 lsls r4, r7, 0x16                                 |     r4 = r7 << 0x16;
    0x0000e4c6 movs r0, r0                                       |     
    0x0000e4c8 adds r2, r3, 2                                    |     r2 = r3 + 2;
    0x0000e4ca movs r0, r0                                       |     
    0x0000e4cc subs r6, r1, 4                                    |     r6 = r1 - 4;
    0x0000e4ce movs r0, r0                                       |     
    0x0000e4d0 ldrsb r2, [r1, r4]                                |     r2 = *((r1 + r4));
    0x0000e4d2 movs r0, r0                                       |     
    0x0000e4d4 adds r4, 0xe6                                     |     r4 += 0xe6;
    0x0000e4d6 movs r0, r0                                       |     
    0x0000e4d8 adds r4, 0xf4                                     |     r4 += 0xf4;
    0x0000e4da movs r0, r0                                       |     
    0x0000e4dc lsls r0, r6, 0x16                                 |     r0 = r6 << 0x16;
    0x0000e4de movs r0, r0                                       |     
    0x0000e4e0 adds r4, 0xe6                                     |     r4 += 0xe6;
    0x0000e4e2 movs r0, r0                                       |     
    0x0000e4e4 subs r6, r5, r7                                   |     r6 = r5 - r7;
    0x0000e4e6 movs r0, r0                                       |     
    0x0000e4e8 subs r0, r4, 2                                    |     r0 = r4 - 2;
    0x0000e4ea movs r0, r0                                       |     
    0x0000e4ec adds r4, 0x98                                     |     r4 += 0x98;
    0x0000e4ee movs r0, r0                                       |     
    0x0000e4f0 adds r4, 0x90                                     |     r4 += 0x90;
    0x0000e4f2 movs r0, r0                                       |     
    0x0000e4f4 adds r4, 0x6e                                     |     r4 += 0x6e;
    0x0000e4f6 movs r0, r0                                       |     
    0x0000e4f8 adds r2, r7, 7                                    |     r2 += var_7h;
    0x0000e4fa movs r0, r0                                       |     
    0x0000e4fc asrs r4, r1, 0xa                                  |     r4 = r1 >> 0xa;
    0x0000e4fe movs r0, r0                                       |     
    0x0000e500 asrs r0, r0, 0x19                                 |     r0 >>= 0x19;
    0x0000e502 movs r0, r0                                       |     
    0x0000e504 adds r4, 0x32                                     |     r4 += 0x32;
    0x0000e506 movs r0, r0                                       |     
    0x0000e508 strb r4, [r1, r7]                                 |     *((r1 + r7)) = r4;
    0x0000e50a movs r0, r0                                       |     
    0x0000e50c asrs r0, r0, 9                                    |     r0 >>= 9;
    0x0000e50e movs r0, r0                                       |     
    0x0000e510 asrs r6, r6, 0x17                                 |     r6 >>= 0x17;
    0x0000e512 movs r0, r0                                       |     
    0x0000e514 adds r3, 0xb4                                     |     r3 += 0xb4;
    0x0000e516 movs r0, r0                                       |     
    0x0000e518 adds r2, 0xd8                                     |     r2 += 0xd8;
    0x0000e51a movs r0, r0                                       |     
    0x0000e51c adds r2, 0xd2                                     |     r2 += 0xd2;
    0x0000e51e movs r0, r0                                       |     
    0x0000e520 push {r3, r4, r5, lr}                             |     
    0x0000e522 mov r5, r0                                        |     r5 = r0;
    0x0000e524 mov r4, r1                                        |     r4 = r1;
    0x0000e526 blx 0x5a9c                                        |     r0 = fcn_00005a9c ();
    0x0000e52a mov r1, r0                                        |     r1 = r0;
    0x0000e52c mov r0, r5                                        |     r0 = r5;
    0x0000e52e blx 0x5f94                                        |     fcn_00005f94 ();
    0x0000e532 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0000e534 ldrd r1, r2, [r4, 4]                              |     __asm ("ldrd r1, r2, [r4, 4]");
    0x0000e538 bl 0xe0c4                                         |     r0 = fcn_0000e0c4 (r0, r1, r2, r3);
                                                                 |     if (r0 != 0) {
    0x0000e53c cbz r0, 0xe548                                    |         
    0x0000e53e mov r1, r0                                        |         r1 = r0;
    0x0000e540 ldr r0, [r4, 0xc]                                 |         r0 = *((r4 + 0xc));
    0x0000e542 blx 0x613c                                        |         g_once_init_enter ();
    0x0000e546 str r0, [r4, 0xc]                                 |         *((r4 + 0xc)) = r0;
                                                                 |     }
    0x0000e548 movs r0, 1                                        |     r0 = 1;
    0x0000e54a pop {r3, r4, r5, pc}                              |     
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpacsio-api.so.0.0.55 @ 0x8794 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.auxio_collection_new ()                      | void auxio_collection_new (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                             |     int16_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_1ch;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_24h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x00008794 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00008798 mov r8, r2                                    |     r8 = r2;
    0x0000879a ldr r2, [pc, 0x1e0]                           |     
    0x0000879c sub sp, 0x2c                                  |     
    0x0000879e mov r6, r0                                    |     r6 = r0;
    0x000087a0 mov r7, r1                                    |     r7 = r1;
    0x000087a2 ldr r3, [pc, 0x1dc]                           |     r3 = *(0x8982);
    0x000087a4 add r2, pc                                    |     r2 = 0x11126;
    0x000087a6 ldr.w sb, [pc, 0x1dc]                         |     
    0x000087aa ldr r3, [r2, r3]                              |     
    0x000087ac add sb, pc                                    |     sb = 0x11136;
    0x000087ae ldr r3, [r3]                                  |     r3 = *(0x11126);
    0x000087b0 str r3, [sp, 0x24]                            |     var_24h = r3;
    0x000087b2 mov.w r3, 0                                   |     r3 = 0;
    0x000087b4 lsls r0, r0, 0xc                              |     r0 <<= 0xc;
    0x000087b6 ldr r3, [pc, 0x1d0]                           |     
    0x000087b8 add r3, pc                                    |     r3 = 0x11146;
    0x000087ba ldr r4, [r3, 4]                               |     r4 = *(0x1114a);
    0x000087bc movs r3, 0                                    |     r3 = 0;
    0x000087be str r3, [sp, 0x1c]                            |     var_1ch = r3;
                                                             |     if (r4 != 0) {
    0x000087c0 cbz r4, 0x8814                                |         
    0x000087c2 ldr r2, [pc, 0x1c8]                           |         
    0x000087c4 add.w sl, sp, 0x20                            |         sl += var_20h;
    0x000087c8 str r3, [sp, 0x20]                            |         var_20h = r3;
    0x000087ca mov r3, sl                                    |         r3 = sl;
    0x000087cc add r2, pc                                    |         r2 = 0x1115e;
    0x000087ce blx 0x624c                                    |         fcn_0000624c ();
    0x000087d2 ldr r1, [sp, 0x20]                            |         r1 = var_20h;
    0x000087d4 mov r5, r0                                    |         r5 = r0;
    0x000087d6 cmp r1, 0                                     |         
                                                             |         if (r1 == 0) {
    0x000087d8 beq 0x88b8                                    |             goto label_3;
                                                             |         }
                                                             | label_0:
    0x000087da add r4, sp, 0x1c                              |         r4 += var_1ch;
    0x000087dc mov r0, r4                                    |         r0 = r4;
    0x000087de blx 0x5b68                                    |         fcn_00005b68 ();
    0x000087e2 ldr r3, [pc, 0x1ac]                           |         
    0x000087e4 movs r1, 0                                    |         r1 = 0;
    0x000087e6 ldr r2, [pc, 0x1ac]                           |         r2 = *(0x8996);
    0x000087e8 add r3, pc                                    |         r3 = 0x1117e;
    0x000087ea ldr r0, [r3, 4]                               |         r0 = *(0x11182);
    0x000087ec str r1, [r3, 4]                               |         *((r3 + 4)) = r1;
    0x000087ee ldr.w r3, [sb, r2]                            |         r3 = *((sb + r2));
    0x000087f2 mov r1, r3                                    |         r1 = r3;
    0x000087f4 str r3, [sp, 0x14]                            |         var_14h = r3;
    0x000087f6 blx 0x57e8                                    |         fcn_000057e8 ();
    0x000087fa ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
                                                             |         if (r3 == 0) {
    0x000087fc cbz r3, 0x8814                                |             goto label_2;
                                                             |         }
    0x000087fe ldr r2, [pc, 0x198]                           |         
    0x00008800 movs r1, 0x10                                 |         r1 = 0x10;
    0x00008802 ldr r0, [pc, 0x198]                           |         
    0x00008804 ldr r3, [r3, 8]                               |         r3 = *((r3 + 8));
    0x00008806 add r2, pc                                    |         r2 = "/etc/served/pacsio-api/instances_wiegandport.json";
    0x00008808 add r0, pc                                    |         r0 = 0x111aa;
    0x0000880a blx 0x647c                                    |         fcn_0000647c ();
    0x0000880e mov r0, r4                                    |         r0 = r4;
    0x00008810 blx 0x56e0                                    |         get_schema_cache_from_system_registry ()
                                                             |     }
                                                             | label_2:
    0x00008814 ldr.w sb, [pc, 0x188]                         |     
    0x00008818 movs r1, 0x11                                 |     r1 = 0x11;
    0x0000881a add sb, pc                                    |     sb = 0x111be;
    0x0000881c mov r0, sb                                    |     r0 = sb;
    0x0000881e blx 0x64ac                                    |     r0 = fcn_000064ac ();
    0x00008822 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 != 0) {
    0x00008824 cbnz r0, 0x8862                               |         goto label_4;
                                                             |     }
    0x00008826 blx 0x5e28                                    |     fcn_00005e28 ();
    0x0000882a ldr r2, [pc, 0x178]                           |     
    0x0000882c mov r1, r0                                    |     r1 = r0;
    0x0000882e ldr r0, [pc, 0x178]                           |     
    0x00008830 mov r3, r4                                    |     r3 = r4;
    0x00008832 str.w r8, [sp, 8]                             |     __asm ("str.w r8, [var_8h]");
    0x00008834 strh r0, [r1]                                 |     *(r1) = r0;
    0x00008836 add r2, pc                                    |     r2 = 0x111e0;
    0x00008838 strd r6, r7, [sp]                             |     __asm ("strd r6, r7, [sp]");
    0x0000883c add r0, pc                                    |     r0 = 0x111ea;
    0x0000883e blx 0x643c                                    |     r0 = domain_osdp_get_type ();
    0x00008842 mov r5, r0                                    |     r5 = r0;
                                                             |     do {
                                                             | label_1:
    0x00008844 ldr r2, [pc, 0x164]                           |         
    0x00008846 ldr r3, [pc, 0x138]                           |         r3 = *(0x8982);
    0x00008848 add r2, pc                                    |         r2 = 0x111f8;
    0x0000884a ldr r3, [r2, r3]                              |         r3 = *(0x111f8);
    0x0000884c ldr r2, [r3]                                  |         r2 = *(0x111f8);
    0x0000884e ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00008850 eors r2, r3                                   |         r2 ^= r3;
    0x00008852 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00008856 bne.w 0x8976                                  |             goto label_5;
                                                             |         }
    0x0000885a mov r0, r5                                    |         r0 = r5;
    0x0000885c add sp, 0x2c                                  |         
    0x0000885e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_4:
    0x00008862 ldr.w sl, [pc, 0x14c]                         |         
    0x00008866 movs r1, 0x40                                 |         r1 = 0x40;
    0x00008868 ldr r4, [pc, 0x148]                           |         
    0x0000886a ldr r2, [pc, 0x14c]                           |         
    0x0000886c add sl, pc                                    |         sl = 0x11222;
    0x0000886e str.w sb, [sp]                                |         __asm ("str.w sb, [sp]");
    0x00008870 str r0, [sp]                                  |         *(sp) = r0;
    0x00008872 add r4, pc                                    |         r4 = 0x1122a;
    0x00008874 mov r3, sl                                    |         r3 = sl;
    0x00008876 add r2, pc                                    |         r2 = 0x11234;
    0x00008878 mov r0, r4                                    |         r0 = r4;
    0x0000887a blx 0x647c                                    |         fcn_0000647c ();
    0x0000887e blx 0x5e28                                    |         fcn_00005e28 ();
    0x00008882 ldr r2, [pc, 0x138]                           |         
    0x00008884 mov r1, r0                                    |         r1 = r0;
    0x00008886 ldr r0, [pc, 0x138]                           |         
    0x00008888 mov r3, sb                                    |         r3 = sb;
    0x0000888a strd r7, r8, [sp, 4]                          |         __asm ("strd r7, r8, [var_8h]");
    0x0000888e add r2, pc                                    |         r2 = 0x11250;
    0x00008890 str r6, [sp]                                  |         *(sp) = r6;
    0x00008892 add r0, pc                                    |         r0 = 0x11258;
    0x00008894 blx 0x643c                                    |         r0 = domain_osdp_get_type ();
    0x00008898 mov r5, r0                                    |         r5 = r0;
    0x0000889a mov r0, sb                                    |         r0 = sb;
    0x0000889c blx 0x54f0                                    |         fcn_000054f0 ();
    0x0000889e cdp p8, 2, c2, c8, c0, 0                      |         __asm ("cdp p8, 2, c2, c8, c0, 0");
                                                             |         if (r1 != 0x40) {
    0x000088a2 bne 0x891c                                    |             goto label_6;
                                                             |         }
    0x000088a4 ldr r2, [pc, 0x11c]                           |         
    0x000088a6 mov r3, sl                                    |         r3 = sl;
    0x000088a8 mov r0, r4                                    |         r0 = r4;
    0x000088aa movs r1, 0x40                                 |         r1 = 0x40;
    0x000088ac str.w sb, [sp]                                |         __asm ("str.w sb, [sp]");
    0x000088b0 add r2, pc                                    |         r2 = 0x11278;
    0x000088b2 blx 0x647c                                    |         fcn_0000647c ();
    0x000088b4 stcl p7, c14, [r4, 0x314]!                    |         __asm ("stcl p7, c14, [r4, 0x314]!");
    0x000088b6 b 0x8844                                      |         
                                                             |     } while (1);
                                                             | label_3:
    0x000088b8 str r1, [sp, 0x14]                            |     var_14h = r1;
    0x000088ba blx 0x5e28                                    |     fcn_00005e28 ();
    0x000088be ldr r1, [sp, 0x14]                            |     r1 = var_14h;
    0x000088c0 mov r2, r5                                    |     r2 = r5;
    0x000088c2 mov r3, r1                                    |     r3 = r1;
    0x000088c4 ldr r1, [pc, 0x100]                           |     
    0x000088c6 add r1, pc                                    |     r1 = 0x11292;
    0x000088c8 blx 0x59b0                                    |     free (r0);
    0x000088cc ldr r2, [pc, 0xfc]                            |     
    0x000088ce mov r5, r0                                    |     r5 = r0;
    0x000088d0 ldr r0, [pc, 0xfc]                            |     
    0x000088d2 movs r1, 0x80                                 |     r1 = 0x80;
    0x000088d4 add r2, pc                                    |     r2 = 0x112a4;
    0x000088d6 add r0, pc                                    |     r0 = 0x112aa;
    0x000088d8 blx 0x647c                                    |     fcn_0000647c ();
    0x000088dc b 0x88e2                                      |     
                                                             |     while (r1 == 0) {
    0x000088de ldr r4, [r4, 4]                               |         r4 = *((r4 + 4));
                                                             |         if (r4 == 0) {
    0x000088e0 cbz r4, 0x8930                                |             goto label_7;
                                                             |         }
    0x000088e2 ldr.w fp, [r4]                                |         fp = *(r4);
    0x000088e6 blx 0x60fc                                    |         r0 = fcn_000060fc ();
    0x000088ea mov r1, r0                                    |         r1 = r0;
    0x000088ec mov r0, r5                                    |         r0 = r5;
    0x000088ee blx 0x5f94                                    |         fcn_00005f94 ();
    0x000088f2 mov r2, fp                                    |         r2 = fp;
    0x000088f4 mov r3, r7                                    |         r3 = r7;
    0x000088f6 movs r1, 0                                    |         r1 = 0;
    0x000088f8 strd r6, sl, [sp]                             |         __asm ("strd r6, sl, [sp]");
    0x000088fa ldr r0, [r0, 0x20]                            |         r0 = *((r0 + 0x20));
    0x000088fc blx 0x5e1c                                    |         r0 = fcn_00005e1c ();
                                                             |         if (r0 != 0) {
    0x00008900 cbz r0, 0x8906                                |             
    0x00008902 blx 0x5644                                    |             domain_aadpdevice_set_name ();
                                                             |         }
    0x00008906 ldr r1, [sp, 0x20]                            |         r1 = var_20h;
    0x00008908 cmp r1, 0                                     |         
    0x0000890a beq 0x88de                                    |         
                                                             |     }
    0x0000890c cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x0000890e beq.w 0x87da                                  |         goto label_0;
                                                             |     }
    0x00008912 mov r0, r5                                    |     r0 = r5;
    0x00008914 blx 0x5644                                    |     domain_aadpdevice_set_name ();
    0x00008916 cdp p9, 9, c9, c6, c8, 0                      |     __asm ("cdp p9, 9, c9, c6, c8, 0");
    0x0000891a b 0x87da                                      |     goto label_0;
                                                             | label_6:
    0x0000891c ldr r2, [pc, 0xb4]                            |     
    0x0000891e mov r3, sl                                    |     r3 = sl;
    0x00008920 mov r0, r4                                    |     r0 = r4;
    0x00008922 movs r1, 0x10                                 |     r1 = 0x10;
    0x00008924 str.w sb, [sp]                                |     __asm ("str.w sb, [sp]");
    0x00008928 add r2, pc                                    |     r2 = 0x11300;
    0x0000892a blx 0x647c                                    |     fcn_0000647c ();
    0x0000892e b 0x8844                                      |     goto label_1;
                                                             | label_7:
    0x00008930 ldr r3, [pc, 0xa4]                            |     
    0x00008932 ldr r2, [pc, 0x60]                            |     r2 = *(0x8996);
    0x00008934 add r3, pc                                    |     r3 = 0x11310;
    0x00008936 ldr r0, [r3, 4]                               |     r0 = *(0x11314);
    0x00008938 str r4, [r3, 4]                               |     *((r3 + 4)) = r4;
    0x0000893a ldr.w r3, [sb, r2]                            |     r3 = *((sb + r2));
    0x0000893e mov r1, r3                                    |     r1 = r3;
    0x00008940 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00008942 blx 0x57e8                                    |     fcn_000057e8 ();
    0x00008944 vqdmulh.s16 d25, d2, d7                       |     __asm ("vqdmulh.s16 d25, d2, d7");
    0x00008946 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
                                                             |     if (r3 != 0) {
    0x00008948 cbnz r3, 0x8952                               |         goto label_8;
                                                             |     }
    0x0000894a cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x0000894c bne.w 0x8844                                  |         goto label_1;
                                                             |     }
    0x00008950 b 0x8814                                      |     goto label_2;
                                                             | label_8:
    0x00008952 ldr r0, [pc, 0x88]                            |     
    0x00008954 movs r1, 0x10                                 |     r1 = 0x10;
    0x00008956 ldr r2, [pc, 0x88]                            |     
    0x00008958 ldr r3, [r3, 8]                               |     r3 = *((r3 + 8));
    0x0000895a add r0, pc                                    |     r0 = 0x1133c;
    0x0000895c add r2, pc                                    |     r2 = 0x11342;
    0x0000895e blx 0x647c                                    |     fcn_0000647c ();
    0x00008962 add r0, sp, 0x1c                              |     r0 += var_1ch;
    0x00008964 blx 0x56e0                                    |     get_schema_cache_from_system_registry ()
    0x00008968 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x0000896a beq.w 0x8814                                  |         goto label_2;
                                                             |     }
    0x0000896c add r7, sp, 0x14c                             |     r7 = sp + 0x14c;
    0x0000896e mov r0, r5                                    |     r0 = r5;
    0x00008970 blx 0x5644                                    |     domain_aadpdevice_set_name ();
    0x00008974 b 0x8814                                      |     goto label_2;
                                                             | label_5:
    0x00008976 blx 0x5fbc                                    |     domain_contract_new ();
    0x0000897a nop                                           |     
    0x0000897c uxth r4, r2                                   |     r4 = (int16_t) r2;
    0x0000897e movs r0, r0                                   |     
    0x00008980 lsls r4, r7, 0x16                             |     r4 = r7 << 0x16;
    0x00008982 movs r0, r0                                   |     
    0x00008984 uxth r4, r1                                   |     r4 = (int16_t) r1;
    0x00008986 movs r0, r0                                   |     
                                                             |     if (r4 == 0) {
    0x00008988 cbnz r4, 0x89a6                               |         
    0x0000898a movs r0, r0                                   |         
    0x0000898c ldrb r0, [r3, 9]                              |         r0 = *((r3 + 9));
    0x0000898e movs r0, r0                                   |         
                                                             |         if (r4 == 0) {
    0x00008990 cbnz r4, 0x89a2                               |             
    0x00008992 movs r0, r0                                   |             
    0x00008994 lsls r0, r6, 0x16                             |             r0 = r6 << 0x16;
    0x00008996 movs r0, r0                                   |             
    0x00008998 ldrb r2, [r0, 9]                              |             r2 = *((r0 + 9));
    0x0000899a movs r0, r0                                   |             
    0x0000899c ldr r4, [r2, 0x6c]                            |             r4 = *((r2 + 0x6c));
    0x0000899e movs r0, r0                                   |             
    0x000089a0 ldrb r2, [r2, 9]                              |             r2 = *((r2 + 9));
                                                             |         }
    0x000089a2 movs r0, r0                                   |         
    0x000089a4 ldrb r2, [r3, 0xa]                            |         r2 = *((r3 + 0xa));
                                                             |     }
    0x000089a6 movs r0, r0                                   |     
    0x000089a8 ldrb r0, [r5, 7]                              |     r0 = *((r5 + 7));
    0x000089aa movs r0, r0                                   |     
                                                             |     if (r0 != 0) {
    0x000089ac cbz r0, 0x89ec                                |         
    0x000089ae movs r0, r0                                   |         
    0x000089b0 strb r0, [r5, 8]                              |         *((r5 + 8)) = r0;
    0x000089b2 movs r0, r0                                   |         
    0x000089b4 ldr r2, [r5, 0x64]                            |         r2 = *((r5 + 0x64));
    0x000089b6 movs r0, r0                                   |         
    0x000089b8 ldrb r2, [r4, 8]                              |         r2 = *((r4 + 8));
    0x000089ba movs r0, r0                                   |         
    0x000089bc ldrb r2, [r0, 9]                              |         r2 = *((r0 + 9));
    0x000089be movs r0, r0                                   |         
    0x000089c0 ldrb r2, [r2, 6]                              |         r2 = *((r2 + 6));
    0x000089c2 movs r0, r0                                   |         
    0x000089c4 ldrb r4, [r1, 9]                              |         r4 = *((r1 + 9));
    0x000089c6 movs r0, r0                                   |         
    0x000089c8 strb r2, [r0, 0x11]                           |         *((r0 + 0x11)) = r2;
    0x000089ca movs r0, r0                                   |         
    0x000089cc ldrb r0, [r3, 5]                              |         r0 = *((r3 + 5));
    0x000089ce movs r0, r0                                   |         
    0x000089d0 ldr r6, [r0, 0x60]                            |         r6 = *((r0 + 0x60));
    0x000089d2 movs r0, r0                                   |         
    0x000089d4 ldrb r0, [r7, 7]                              |         r0 = *((r7 + 7));
    0x000089d6 movs r0, r0                                   |         
    0x000089d8 invalid                                       |         
                                                             |     }
    0x000089ec mov r4, r0                                    |     r4 = r0;
    0x000089ee movs r5, 0xc                                  |     r5 = 0xc;
    0x000089f0 ldr r0, [pc, 0x24]                            |     
    0x000089f2 add r0, pc                                    |     r0 = 0x1140e;
    0x000089f4 blx 0x5514                                    |     fcn_00005514 ();
    0x000089f8 ldr r3, [pc, 0x20]                            |     
    0x000089fa movs r2, 0                                    |     r2 = 0;
    0x000089fc mov r1, r0                                    |     r1 = r0;
    0x000089fe str r5, [sp]                                  |     *(sp) = r5;
    0x00008a00 mov r0, r4                                    |     r0 = r4;
    0x00008a02 add r3, pc                                    |     r3 = 0x11422;
    0x00008a04 strd r3, r2, [sp, 4]                          |     __asm ("strd r3, r2, [var_8h]");
    0x00008a08 movs r2, 0xa0                                 |     r2 = 0xa0;
    0x00008a0a ldr r3, [pc, 0x14]                            |     
    0x00008a0c add r3, pc                                    |     r3 = 0x11432;
    0x00008a0e blx 0x6080                                    |     fcn_00006080 ();
    0x00008a12 add sp, 0x14                                  |     
    0x00008a14 pop {r4, r5, pc}                              |     
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpacsio-api.so.0.0.55 @ 0x6dfc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.pacsio_helper_read_io2d_conf_as_ipc_data ()      | void pacsio_helper_read_io2d_conf_as_ipc_data (int16_t arg_f8h, int16_t arg1) {
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
    0x00006dfc blmi 0xfeb198b0                                   |     __asm ("blmi aav.0x0000cc32");
    0x00006e00 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00006e04 movs r6, 0                                        |     r6 = 0;
    0x00006e06 add r2, pc                                        |     r2 += pc;
    0x00006e08 sub sp, 0x2c                                      |     
    0x00006e0a mov r4, r0                                        |     r4 = r0;
    0x00006e0c ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00006e0e ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006e10 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00006e12 mov.w r3, 0                                       |     r3 = 0;
    0x00006e16 str r6, [sp, 0x18]                                |     var_18h = r6;
    0x00006e18 blx 0x56bc                                        |     g_strdup ();
    0x00006e1c movs r1, 0x11                                     |     r1 = 0x11;
    0x00006e1e mov r5, r0                                        |     r5 = r0;
    0x00006e20 mov r0, r4                                        |     r0 = r4;
    0x00006e22 str r6, [sp, 0x1c]                                |     var_1ch = r6;
    0x00006e24 blx 0x64ac                                        |     r0 = fcn_000064ac ();
    0x00006e28 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006e2a beq.w 0x7080                                      |         goto label_10;
                                                                 |     }
    0x00006e2e add r3, sp, 0x18                                  |     r3 += var_18h;
    0x00006e30 movs r2, 1                                        |     r2 = 1;
    0x00006e32 mov r1, r4                                        |     r1 = r4;
    0x00006e34 mov r0, r5                                        |     r0 = r5;
    0x00006e36 blx 0x5fb0                                        |     resource_get_collection_name ();
    0x00006e38 ldm.w ip!, {fp, sp}                               |     fp = *(ip!);
                                                                 |     sp = *((ip! + 4));
                                                                 |     if (r2 == 1) {
    0x00006e3c beq.w 0x704c                                      |         goto label_11;
                                                                 |     }
    0x00006e40 add r1, sp, 0x1c                                  |     r1 += var_1ch;
    0x00006e42 mov r0, r5                                        |     r0 = r5;
    0x00006e44 blx 0x5edc                                        |     r0 = fcn_00005edc ();
    0x00006e48 mov sb, r0                                        |     sb = r0;
    0x00006e4a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006e4c beq.w 0x7094                                      |         goto label_12;
                                                                 |     }
    0x00006e50 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00006e52 mov r7, r3                                        |     r7 = r3;
    0x00006e54 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006e56 beq 0x6f52                                        |         goto label_6;
                                                                 |     }
    0x00006e58 ldr r2, [pc, 0x258]                               |     
    0x00006e5a mov sl, r6                                        |     sl = r6;
    0x00006e5c ldr.w r8, [pc, 0x258]                             |     
    0x00006e60 subs r6, r0, 4                                    |     r6 = r0 - 4;
    0x00006e62 mov r7, sl                                        |     r7 = sl;
    0x00006e64 str r0, [sp, 0x14]                                |     var_14h = r0;
    0x00006e66 add r2, pc                                        |     r2 = 0xdf1e;
    0x00006e68 str r2, [sp, 0xc]                                 |     var_ch_2 = r2;
    0x00006e6a add r8, pc                                        |     r8 = 0xdf26;
    0x00006e6c ldr r2, [pc, 0x24c]                               |     
    0x00006e6e add r2, pc                                        |     r2 = 0xdf2e;
    0x00006e70 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00006e72 b 0x6f16                                          |     goto label_13;
                                                                 | label_0:
    0x00006e74 movs r3, 0                                        |     r3 = 0;
    0x00006e76 mov r2, r8                                        |     r2 = r8;
    0x00006e78 mov r1, r4                                        |     r1 = r4;
    0x00006e7a mov r0, r5                                        |     r0 = r5;
    0x00006e7c blx 0x5c9c                                        |     r0 = fcn_00005c9c ();
    0x00006e80 mov sb, r0                                        |     sb = r0;
    0x00006e82 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006e84 beq 0x6f86                                        |         goto label_14;
                                                                 |     }
    0x00006e86 ldr r2, [pc, 0x238]                               |     
    0x00006e88 movs r3, 0                                        |     r3 = 0;
    0x00006e8a mov r1, r4                                        |     r1 = r4;
    0x00006e8c mov r0, r5                                        |     r0 = r5;
    0x00006e8e add r2, pc                                        |     r2 = 0xdf54;
    0x00006e90 blx 0x5c9c                                        |     r0 = fcn_00005c9c ();
    0x00006e94 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006e96 beq.w 0x700a                                      |         goto label_15;
                                                                 |     }
    0x00006e9a ldr r2, [pc, 0x228]                               |     
    0x00006e9c add r2, pc                                        |     r2 = 0xdf66;
                                                                 | label_3:
    0x00006e9e ldr r1, [pc, 0x228]                               |     
    0x00006ea0 ldr r0, [sp, 0x20]                                |     r0 = var_20h;
    0x00006ea2 add r1, pc                                        |     r1 = 0xdf70;
    0x00006ea4 blx 0x5450                                        |     fcn_00005450 ();
    0x00006ea6 invalid                                           |     
    0x00006eaa movs r3, 0                                        |     r3 = 0;
    0x00006eac mov r1, r4                                        |     r1 = r4;
    0x00006eae mov r0, r5                                        |     r0 = r5;
    0x00006eb0 add r2, pc                                        |     r2 += pc;
    0x00006eb2 blx 0x55c4                                        |     r0 = fcn_000055c4 ();
    0x00006eb6 mov fp, r0                                        |     
                                                                 |     if (r0 != 0) {
    0x00006eb8 cbz r0, 0x6edc                                    |         
    0x00006eba movs r2, 0                                        |         r2 = 0;
    0x00006ebc mov.w r1, -1                                      |         r1 = -1;
    0x00006ec0 blx 0x53f8                                        |         r0 = g_utf8_validate ();
    0x00006ec4 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006ec6 beq.w 0x7010                                      |             goto label_16;
                                                                 |         }
    0x00006ec8 strh r3, [r4, 4]                                  |         *((r4 + 4)) = r3;
    0x00006eca ldr r1, [pc, 0x204]                               |         
    0x00006ecc mov r2, fp                                        |         r2 = fp;
    0x00006ece ldr r0, [sp, 0x20]                                |         r0 = var_20h;
    0x00006ed0 add r1, pc                                        |         r1 = 0xdfa6;
    0x00006ed2 blx 0x5450                                        |         fcn_00005450 ();
    0x00006ed4 invalid                                           |         
                                                                 | label_4:
    0x00006ed6 mov r0, fp                                        |         r0 = fp;
    0x00006ed8 blx 0x5438                                        |         fcn_00005438 ();
                                                                 |     }
    0x00006edc ldr.w fp, [pc, 0x1f4]                             |     
    0x00006ee0 movs r3, 0                                        |     r3 = 0;
    0x00006ee2 mov r1, r4                                        |     r1 = r4;
    0x00006ee4 mov r0, r5                                        |     r0 = r5;
    0x00006ee6 add fp, pc                                        |     fp = 0xdfbe;
    0x00006ee8 mov r2, fp                                        |     r2 = fp;
    0x00006eea blx 0x54b4                                        |     r0 = fcn_000054b4 ();
    0x00006eee cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006ef0 bne.w 0x702e                                      |         goto label_17;
                                                                 |     }
                                                                 | label_1:
    0x00006ef4 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
                                                                 |     if (r2 != 0) {
    0x00006ef6 cbz r2, 0x6f0c                                    |         
    0x00006ef8 cmp r7, 0                                         |         
                                                                 |         if (r7 == 0) {
    0x00006efa beq.w 0x7024                                      |             goto label_18;
                                                                 |         }
                                                                 | label_5:
    0x00006efe mov r0, r7                                        |         r0 = r7;
    0x00006f00 mov r1, r4                                        |         r1 = r4;
    0x00006f02 blx 0x5928                                        |         fcn_00005928 ();
    0x00006f04 ldc p8, c10, [r2, -0x20]                          |         __asm ("ldc p8, c10, [r2, -0x20]");
    0x00006f08 blx 0x5d2c                                        |         fcn_00005d2c ();
                                                                 |     }
    0x00006f0c ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
                                                                 |     do {
    0x00006f0e add.w sl, sl, 1                                   |         sl++;
    0x00006f12 cmp r3, sl                                        |         
                                                                 |         if (r3 < sl) {
    0x00006f14 bls 0x6f4e                                        |             goto label_19;
                                                                 |         }
                                                                 | label_13:
    0x00006f16 ldr r4, [r6, 4]!                                  |         r4 = *((r6 += 4));
    0x00006f1a cmp r4, 0                                         |         
    0x00006f1c beq 0x6f0e                                        |         
                                                                 |     } while (r4 == 0);
    0x00006f1e blx 0x5898                                        |     fcn_00005898 ();
    0x00006f22 movs r3, 0                                        |     r3 = 0;
    0x00006f24 str r0, [sp, 0x20]                                |     var_20h = r0;
    0x00006f26 mov r2, r8                                        |     r2 = r8;
    0x00006f28 mov r1, r4                                        |     r1 = r4;
    0x00006f2a mov r0, r5                                        |     r0 = r5;
    0x00006f2c blx 0x54b4                                        |     r0 = fcn_000054b4 ();
    0x00006f30 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006f32 bne 0x6e74                                        |         goto label_0;
                                                                 |     }
    0x00006f34 ldr r3, [pc, 0x1a0]                               |     
    0x00006f36 movs r1, 0x10                                     |     r1 = 0x10;
    0x00006f38 ldr r2, [pc, 0x1a0]                               |     
    0x00006f3a ldr r0, [pc, 0x1a4]                               |     
    0x00006f3c add r3, pc                                        |     r3 = 0xe018;
    0x00006f3e add r2, pc                                        |     r2 = 0xe01e;
    0x00006f40 add r0, pc                                        |     r0 = 0xe026;
    0x00006f42 blx 0x647c                                        |     fcn_0000647c ();
    0x00006f46 add r0, sp, 0x20                                  |     r0 += var_20h;
    0x00006f48 blx 0x5d2c                                        |     fcn_00005d2c ();
    0x00006f4c b 0x6ef4                                          |     goto label_1;
                                                                 | label_19:
    0x00006f4e ldr.w sb, [sp, 0x14]                              |     sb = var_14h;
                                                                 | label_6:
    0x00006f52 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
                                                                 |     if (r3 != 0) {
    0x00006f54 cbz r3, 0x6f5c                                    |         
    0x00006f56 add r0, sp, 0x18                                  |         r0 += var_18h;
    0x00006f58 blx 0x56e0                                        |         get_schema_cache_from_system_registry ()
                                                                 |     }
    0x00006f5c mov r0, sb                                        |     r0 = sb;
    0x00006f5e blx 0x62c4                                        |     fcn_000062c4 ();
    0x00006f62 mov r0, r5                                        |     r0 = r5;
    0x00006f64 blx 0x6294                                        |     fcn_00006294 ();
    0x00006f68 ldr r2, [pc, 0x178]                               |     
    0x00006f6a ldr r3, [pc, 0x144]                               |     r3 = *(0x70b2);
    0x00006f6c add r2, pc                                        |     r2 = 0xe054;
    0x00006f6e ldr r3, [r2, r3]                                  |     r3 = *(0xe054);
    0x00006f70 ldr r2, [r3]                                      |     r2 = *(0xe054);
    0x00006f72 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00006f74 eors r2, r3                                       |     r2 ^= r3;
    0x00006f76 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00006f7a bne.w 0x70a8                                      |         goto label_20;
                                                                 |     }
    0x00006f7e mov r0, r7                                        |     r0 = r7;
    0x00006f80 add sp, 0x2c                                      |     
    0x00006f82 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_14:
    0x00006f86 ldrd r2, r1, [sp, 0xc]                            |     __asm ("ldrd r2, r1, [var_ch_2]");
    0x00006f8a ldr r0, [sp, 0x20]                                |     r0 = var_20h;
    0x00006f8c blx 0x5450                                        |     fcn_00005450 ();
    0x00006f90 ldr r2, [pc, 0x154]                               |     
    0x00006f92 mov r3, sb                                        |     r3 = sb;
    0x00006f94 mov r1, r4                                        |     r1 = r4;
    0x00006f96 mov r0, r5                                        |     r0 = r5;
    0x00006f98 add r2, pc                                        |     r2 = 0xe084;
    0x00006f9a blx 0x55c4                                        |     r0 = fcn_000055c4 ();
    0x00006f9e mov fp, r0                                        |     
                                                                 |     if (r0 != 0) {
    0x00006fa0 cbz r0, 0x6fc0                                    |         
    0x00006fa2 mov r2, sb                                        |         r2 = sb;
    0x00006fa4 mov.w r1, -1                                      |         r1 = -1;
    0x00006fa8 blx 0x53f8                                        |         r0 = g_utf8_validate ();
                                                                 |         if (r0 == 0) {
    0x00006fac cbz r0, 0x6ff6                                    |             goto label_21;
                                                                 |         }
    0x00006fae ldr r1, [pc, 0x13c]                               |         
    0x00006fb0 mov r2, fp                                        |         r2 = fp;
    0x00006fb2 ldr r0, [sp, 0x20]                                |         r0 = var_20h;
    0x00006fb4 add r1, pc                                        |         r1 = 0xe0a6;
    0x00006fb6 blx 0x5450                                        |         fcn_00005450 ();
                                                                 | label_2:
    0x00006fba mov r0, fp                                        |         r0 = fp;
    0x00006fbc blx 0x5438                                        |         fcn_00005438 ();
                                                                 |     }
    0x00006fc0 ldr.w fp, [pc, 0x12c]                             |     
    0x00006fc4 movs r3, 0                                        |     r3 = 0;
    0x00006fc6 mov r1, r4                                        |     r1 = r4;
    0x00006fc8 mov r0, r5                                        |     r0 = r5;
    0x00006fca add fp, pc                                        |     fp = 0xe0be;
    0x00006fcc mov r2, fp                                        |     r2 = fp;
    0x00006fce blx 0x54b4                                        |     r0 = fcn_000054b4 ();
    0x00006fd2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006fd4 beq 0x6ef4                                        |         goto label_1;
                                                                 |     }
    0x00006fd6 mov r2, fp                                        |     r2 = fp;
    0x00006fd8 movs r3, 0                                        |     r3 = 0;
    0x00006fda mov r1, r4                                        |     r1 = r4;
    0x00006fdc mov r0, r5                                        |     r0 = r5;
    0x00006fde blx 0x5c9c                                        |     r0 = fcn_00005c9c ();
    0x00006fe2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006fe4 bne 0x7074                                        |         goto label_22;
                                                                 |     }
    0x00006fe6 ldr r2, [pc, 0x10c]                               |     
    0x00006fe8 add r2, pc                                        |     r2 = 0xe0e2;
                                                                 | label_7:
    0x00006fea ldr r1, [pc, 0x10c]                               |     
    0x00006fec ldr r0, [sp, 0x20]                                |     r0 = var_20h;
    0x00006fee add r1, pc                                        |     r1 = 0xe0ec;
    0x00006ff0 blx 0x5450                                        |     fcn_00005450 ();
    0x00006ff4 b 0x6ef4                                          |     goto label_1;
                                                                 | label_21:
    0x00006ff6 ldr r3, [pc, 0x104]                               |     
    0x00006ff8 movs r1, 0x10                                     |     r1 = 0x10;
    0x00006ffa ldr r2, [pc, 0x104]                               |     
    0x00006ffc ldr r0, [pc, 0x104]                               |     
    0x00006ffe add r3, pc                                        |     r3 = 0xe100;
    0x00007000 add r2, pc                                        |     r2 = 0xe106;
    0x00007002 add r0, pc                                        |     r0 = 0xe10a;
    0x00007004 blx 0x647c                                        |     fcn_0000647c ();
    0x00007008 b 0x6fba                                          |     goto label_2;
                                                                 | label_15:
    0x0000700a ldr r2, [pc, 0xfc]                                |     
    0x0000700c add r2, pc                                        |     r2 = 0xe11a;
    0x0000700e b 0x6e9e                                          |     goto label_3;
                                                                 | label_16:
    0x00007010 ldr r3, [pc, 0xf8]                                |     
    0x00007012 movs r1, 0x10                                     |     r1 = 0x10;
    0x00007014 ldr r2, [pc, 0xf8]                                |     
    0x00007016 ldr r0, [pc, 0xfc]                                |     
    0x00007018 add r3, pc                                        |     r3 = 0xe128;
    0x0000701a add r2, pc                                        |     r2 = 0xe12e;
    0x0000701c add r0, pc                                        |     r0 = 0xe136;
    0x0000701e blx 0x647c                                        |     fcn_0000647c ();
    0x00007022 b 0x6ed6                                          |     goto label_4;
                                                                 | label_18:
    0x00007024 blx 0x5898                                        |     fcn_00005898 ();
    0x00007028 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x0000702a mov r7, r0                                        |     r7 = r0;
    0x0000702c b 0x6efe                                          |     goto label_5;
                                                                 | label_17:
    0x0000702e mov r2, fp                                        |     r2 = fp;
    0x00007030 movs r3, 0                                        |     r3 = 0;
    0x00007032 mov r1, r4                                        |     r1 = r4;
    0x00007034 mov r0, r5                                        |     r0 = r5;
    0x00007036 blx 0x5c9c                                        |     r0 = fcn_00005c9c ();
                                                                 |     if (r0 != 0) {
    0x0000703a cbnz r0, 0x706e                                   |         goto label_23;
                                                                 |     }
    0x0000703c ldr r2, [pc, 0xd8]                                |     
    0x0000703e add r2, pc                                        |     r2 = 0xe15a;
                                                                 |     do {
    0x00007040 ldr r1, [pc, 0xd8]                                |         
    0x00007042 ldr r0, [sp, 0x20]                                |         r0 = var_20h;
    0x00007044 add r1, pc                                        |         r1 = 0xe164;
    0x00007046 blx 0x5450                                        |         fcn_00005450 ();
    0x0000704a b 0x6ef4                                          |         goto label_1;
                                                                 | label_11:
    0x0000704c ldr r3, [sp, 0x18]                                |         r3 = var_18h;
                                                                 |         if (r3 == 0) {
    0x0000704e cbz r3, 0x707a                                    |             goto label_24;
                                                                 |         }
    0x00007050 ldr r0, [r3, 8]                                   |         r0 = *((r3 + 8));
                                                                 | label_8:
    0x00007052 ldr r3, [pc, 0xcc]                                |         
    0x00007054 movs r1, 0x10                                     |         r1 = 0x10;
    0x00007056 ldr r2, [pc, 0xcc]                                |         
    0x00007058 str r0, [sp]                                      |         *(sp) = r0;
    0x0000705a ldr r0, [pc, 0xcc]                                |         
    0x0000705c add r3, pc                                        |         r3 = 0xe182;
    0x0000705e add r2, pc                                        |         r2 = 0xe188;
    0x00007060 add r0, pc                                        |         r0 = 0xe18e;
    0x00007062 blx 0x647c                                        |         fcn_0000647c ();
                                                                 | label_9:
    0x00007066 mov.w sb, 0                                       |         sb = 0;
    0x0000706a mov r7, sb                                        |         r7 = sb;
    0x0000706c b 0x6f52                                          |         goto label_6;
                                                                 | label_23:
    0x0000706e ldr r2, [pc, 0xbc]                                |         
    0x00007070 add r2, pc                                        |         r2 = 0xe1a2;
    0x00007072 b 0x7040                                          |         
                                                                 |     } while (1);
                                                                 | label_22:
    0x00007074 ldr r2, [pc, 0xb8]                                |     
    0x00007076 add r2, pc                                        |     r2 = 0xe1aa;
    0x00007078 b 0x6fea                                          |     goto label_7;
                                                                 | label_24:
    0x0000707a ldr r0, [pc, 0xb8]                                |     
    0x0000707c add r0, pc                                        |     r0 = 0xe1b6;
    0x0000707e b 0x7052                                          |     goto label_8;
                                                                 | label_10:
    0x00007080 ldr r3, [pc, 0xb4]                                |     
    0x00007082 movs r1, 0x40                                     |     r1 = 0x40;
    0x00007084 ldr r2, [pc, 0xb4]                                |     
    0x00007086 ldr r0, [pc, 0xb8]                                |     
    0x00007088 add r3, pc                                        |     r3 = 0xe1c4;
    0x0000708a add r2, pc                                        |     r2 = 0xe1ca;
    0x0000708c add r0, pc                                        |     r0 = 0xe1d2;
    0x0000708e blx 0x647c                                        |     fcn_0000647c ();
    0x00007092 b 0x7066                                          |     goto label_9;
                                                                 | label_12:
    0x00007094 ldr r3, [pc, 0xac]                                |     
    0x00007096 movs r1, 0x10                                     |     r1 = 0x10;
    0x00007098 ldr r2, [pc, 0xac]                                |     
    0x0000709a ldr r0, [pc, 0xb0]                                |     
    0x0000709c add r3, pc                                        |     r3 = 0xe1e4;
    0x0000709e add r2, pc                                        |     r2 = 0xe1ea;
    0x000070a0 add r0, pc                                        |     r0 = 0xe1f2;
    0x000070a2 blx 0x647c                                        |     fcn_0000647c ();
    0x000070a6 b 0x7066                                          |     goto label_9;
                                                                 | label_20:
    0x000070a8 blx 0x5fbc                                        |     domain_contract_new ();
    0x000070ac ldm r4, {r1, r4, r5}                              |     r1 = *(r4);
                                                                 |     r4 = *((r4 + 4));
                                                                 |     r5 = *((r4 + 8));
    0x000070ae movs r0, r0                                       |     
    0x000070b0 lsls r4, r7, 0x16                                 |     r4 = r7 << 0x16;
    0x000070b2 movs r0, r0                                       |     
    0x000070b4 str r2, [sp, 0xf8]                                |     *(arg_f8h) = r2;
    0x000070b6 movs r0, r0                                       |     
    0x000070b8 ldrh r6, [r5, 0x18]                               |     r6 = *((r5 + 0x18));
    0x000070ba movs r0, r0                                       |     
    0x000070bc ldrh r2, [r5, 0x1a]                               |     r2 = *((r5 + 0x1a));
    0x000070be movs r0, r0                                       |     
    0x000070c0 ldrh r6, [r6, 0x18]                               |     r6 = *((r6 + 0x18));
    0x000070c2 movs r0, r0                                       |     
    0x000070c4 ldrh r4, [r3, 0x12]                               |     r4 = *((r3 + 0x12));
    0x000070c6 movs r0, r0                                       |     
    0x000070c8 ldrh r6, [r6, 0x18]                               |     r6 = *((r6 + 0x18));
    0x000070ca movs r0, r0                                       |     
    0x000070cc ldrh r0, [r6, 0x18]                               |     r0 = *((r6 + 0x18));
    0x000070ce movs r0, r0                                       |     
    0x000070d0 ldrh r4, [r3, 0x18]                               |     r4 = *((r3 + 0x18));
    0x000070d2 movs r0, r0                                       |     
    0x000070d4 ldrh r6, [r0, 0x1a]                               |     r6 = *((r0 + 0x1a));
    0x000070d6 movs r0, r0                                       |     
    0x000070d8 ldrh r0, [r3, 0x1a]                               |     r0 = *((r3 + 0x1a));
    0x000070da movs r0, r0                                       |     
    0x000070dc ldrh r2, [r4, 0x12]                               |     r2 = *((r4 + 0x12));
    0x000070de movs r0, r0                                       |     
    0x000070e0 strh r4, [r3, 0x3c]                               |     *((r3 + 0x3c)) = r4;
    0x000070e2 movs r0, r0                                       |     
    0x000070e4 ldm r2, {r2, r3, r6, r7}                          |     r2 = *(r2);
                                                                 |     r3 = *((r2 + 4));
                                                                 |     r6 = *((r2 + 8));
                                                                 |     r7 = *((r2 + 12));
    0x000070e6 movs r0, r0                                       |     
    0x000070e8 ldrh r0, [r7, 0x14]                               |     r0 = *((r7 + 0x14));
    0x000070ea movs r0, r0                                       |     
    0x000070ec ldrh r0, [r7, 0x10]                               |     r0 = *((r7 + 0x10));
    0x000070ee movs r0, r0                                       |     
    0x000070f0 ldrh r6, [r1, 0x16]                               |     r6 = *((r1 + 0x16));
    0x000070f2 movs r0, r0                                       |     
    0x000070f4 ldrh r0, [r7, 8]                                  |     r0 = *((r7 + 8));
    0x000070f6 movs r0, r0                                       |     
    0x000070f8 ldrh r6, [r1, 0x12]                               |     r6 = *((r1 + 0x12));
    0x000070fa movs r0, r0                                       |     
    0x000070fc ldrh r6, [r2, 0x14]                               |     r6 = *((r2 + 0x14));
    0x000070fe movs r0, r0                                       |     
    0x00007100 ldrh r4, [r3, 0x12]                               |     r4 = *((r3 + 0x12));
    0x00007102 movs r0, r0                                       |     
    0x00007104 strh r2, [r3, 0x36]                               |     *((r3 + 0x36)) = r2;
    0x00007106 movs r0, r0                                       |     
    0x00007108 ldrh r0, [r7, 6]                                  |     r0 = *((r7 + 6));
    0x0000710a movs r0, r0                                       |     
    0x0000710c ldrh r4, [r7, 0x12]                               |     r4 = *((r7 + 0x12));
    0x0000710e movs r0, r0                                       |     
    0x00007110 ldrh r2, [r3, 0xe]                                |     r2 = *((r3 + 0xe));
    0x00007112 movs r0, r0                                       |     
    0x00007114 strh r0, [r0, 0x36]                               |     *((r0 + 0x36)) = r0;
    0x00007116 movs r0, r0                                       |     
    0x00007118 ldrh r2, [r4, 6]                                  |     r2 = *((r4 + 6));
    0x0000711a movs r0, r0                                       |     
    0x0000711c ldrh r0, [r7, 0xe]                                |     r0 = *((r7 + 0xe));
    0x0000711e movs r0, r0                                       |     
    0x00007120 ldrh r0, [r7, 0x10]                               |     r0 = *((r7 + 0x10));
    0x00007122 movs r0, r0                                       |     
    0x00007124 ldrh r6, [r5, 6]                                  |     r6 = *((r5 + 6));
    0x00007126 movs r0, r0                                       |     
    0x00007128 strh r4, [r7, 0x32]                               |     *((r7 + 0x32)) = r4;
    0x0000712a movs r0, r0                                       |     
    0x0000712c ldrh r4, [r4, 4]                                  |     r4 = *((r4 + 4));
    0x0000712e movs r0, r0                                       |     
    0x00007130 ldrh r6, [r3, 4]                                  |     r6 = *((r3 + 4));
    0x00007132 movs r0, r0                                       |     
    0x00007134 ldrh r4, [r5, 2]                                  |     r4 = *((r5 + 2));
    0x00007136 movs r0, r0                                       |     
    0x00007138 ldrh r4, [r1, 0x10]                               |     r4 = *((r1 + 0x10));
    0x0000713a movs r0, r0                                       |     
    0x0000713c ldrh r6, [r4, 4]                                  |     r6 = *((r4 + 4));
    0x0000713e movs r0, r0                                       |     
    0x00007140 strh r0, [r2, 0x32]                               |     *((r2 + 0x32)) = r0;
    0x00007142 movs r0, r0                                       |     
    0x00007144 ldrh r0, [r7, 0xe]                                |     r0 = *((r7 + 0xe));
    0x00007146 movs r0, r0                                       |     
    0x00007148 ldrh r6, [r1, 6]                                  |     r6 = *((r1 + 6));
    0x0000714a movs r0, r0                                       |     
    0x0000714c strh r4, [r7, 0x30]                               |     *((r7 + 0x30)) = r4;
    0x0000714e movs r0, r0                                       |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpacsio-api.so.0.0.55 @ 0xe838 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.purge_restorer_init ()                           | void purge_restorer_init (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_14h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0000e838 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000e83c mov r4, r0                                        |     r4 = r0;
    0x0000e83e ldr r2, [r0]                                      |     r2 = *(r0);
    0x0000e840 mov r7, r1                                        |     r7 = r1;
    0x0000e842 sub sp, 0x34                                      |     
    0x0000e844 movs r3, 0                                        |     r3 = 0;
    0x0000e846 ldr r0, [pc, 0x26c]                               |     
    0x0000e848 ldr r1, [pc, 0x26c]                               |     r1 = *(0xeab8);
    0x0000e84a ldr.w sb, [pc, 0x270]                             |     
    0x0000e84e add r0, pc                                        |     r0 = 0x1d308;
    0x0000e850 ldr.w r8, [pc, 0x26c]                             |     
    0x0000e854 ldr r1, [r0, r1]                                  |     
    0x0000e856 ldr r0, [pc, 0x26c]                               |     
    0x0000e858 add sb, pc                                        |     sb = 0x1d31a;
    0x0000e85a add r8, pc                                        |     r8 = 0x1d31e;
    0x0000e85c ldr r1, [r1]                                      |     r1 = *(0x1d308);
    0x0000e85e str r1, [sp, 0x2c]                                |     var_2ch = r1;
    0x0000e860 mov.w r1, 0                                       |     r1 = 0;
    0x0000e864 mov r1, sb                                        |     r1 = sb;
    0x0000e866 add r0, pc                                        |     r0 = 0x1d330;
    0x0000e868 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0000e86a blx 0x621c                                        |     fcn_0000621c ();
    0x0000e86e movs r1, 4                                        |     r1 = 4;
    0x0000e870 mov r5, r0                                        |     r5 = r0;
    0x0000e872 mov r0, sb                                        |     r0 = sb;
    0x0000e874 blx 0x64ac                                        |     r0 = fcn_000064ac ();
    0x0000e878 cbz r0, 0xe8d4                                    |     
                                                                 |     while (1) {
    0x0000e87a mov r0, r5                                        |         r0 = r5;
    0x0000e87c blx 0x62e8                                        |         r0 = fcn_000062e8 ();
    0x0000e880 mov r6, r0                                        |         r6 = r0;
    0x0000e882 mov r0, r5                                        |         r0 = r5;
    0x0000e884 blx 0x5438                                        |         fcn_00005438 ();
    0x0000e888 ldr r5, [sp, 0x14]                                |         r5 = var_14h;
    0x0000e88a str r6, [r4, 0x18]                                |         *((r4 + 0x18)) = r6;
    0x0000e88c cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x0000e88e beq 0xe904                                        |             goto label_4;
                                                                 |         }
    0x0000e890 ldr r0, [r5, 8]                                   |         r0 = *((r5 + 8));
    0x0000e892 mov.w r1, 0x100                                   |         r1 = 0x100;
    0x0000e896 ldr r3, [pc, 0x230]                               |         
    0x0000e898 add r5, sp, 0x14                                  |         r5 += var_14h;
    0x0000e89a ldr r2, [pc, 0x230]                               |         
    0x0000e89c str r0, [sp]                                      |         *(sp) = r0;
    0x0000e89e ldr r0, [pc, 0x230]                               |         
    0x0000e8a0 add r3, pc                                        |         r3 = 0x1d36e;
    0x0000e8a2 add r2, pc                                        |         r2 = 0x1d374;
    0x0000e8a4 add r0, pc                                        |         r0 = 0x1d37a;
    0x0000e8a6 blx 0x647c                                        |         fcn_0000647c ();
                                                                 | label_1:
    0x0000e8aa movs r6, 0                                        |         r6 = 0;
    0x0000e8ac movs r7, 1                                        |         r7 = 1;
                                                                 | label_0:
    0x0000e8ae mov r0, r5                                        |         r0 = r5;
    0x0000e8b0 blx 0x56e0                                        |         get_schema_cache_from_system_registry ()
    0x0000e8b4 ldr r2, [pc, 0x21c]                               |         
    0x0000e8b6 ldr r3, [pc, 0x200]                               |         r3 = *(0xeaba);
    0x0000e8b8 str r6, [r4, 0x2c]                                |         *((r4 + 0x2c)) = r6;
    0x0000e8ba add r2, pc                                        |         r2 = 0x1d392;
    0x0000e8bc ldr r3, [r2, r3]                                  |         r3 = *(0x1d392);
    0x0000e8be ldr r2, [r3]                                      |         r2 = *(0x1d392);
    0x0000e8c0 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x0000e8c2 eors r2, r3                                       |         r2 ^= r3;
    0x0000e8c4 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000e8c8 bne.w 0xeaae                                      |             goto label_5;
                                                                 |         }
    0x0000e8cc mov r0, r7                                        |         r0 = r7;
    0x0000e8ce add sp, 0x34                                      |         
    0x0000e8d0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0000e8d4 mov r6, r0                                        |         r6 = r0;
    0x0000e8d6 ldr r3, [pc, 0x200]                               |         
    0x0000e8d8 ldr r2, [pc, 0x200]                               |         
    0x0000e8da movs r1, 0x10                                     |         r1 = 0x10;
    0x0000e8dc ldr r0, [pc, 0x200]                               |         
    0x0000e8de add r3, pc                                        |         r3 = 0x1d3bc;
    0x0000e8e0 str.w sb, [sp]                                    |         __asm ("str.w sb, [sp]");
    0x0000e8e4 add r2, pc                                        |         r2 = 0x1d3c4;
    0x0000e8e6 add r0, pc                                        |         r0 = 0x1d3ca;
    0x0000e8e8 blx 0x647c                                        |         fcn_0000647c ();
    0x0000e8ec mov r0, sb                                        |         r0 = sb;
    0x0000e8ee blx 0x62e8                                        |         fcn_000062e8 ();
    0x0000e8f2 mov r2, r6                                        |         r2 = r6;
    0x0000e8f4 mov sb, r0                                        |         sb = r0;
    0x0000e8f6 mov r1, r6                                        |         r1 = r6;
    0x0000e8f8 blx 0x5600                                        |         fcn_00005600 ();
    0x0000e8fc mov r0, sb                                        |         r0 = sb;
    0x0000e8fe blx 0x5644                                        |         domain_aadpdevice_set_name ();
    0x0000e902 b 0xe87a                                          |         
                                                                 |     }
                                                                 | label_4:
    0x0000e904 add.w fp, sp, 0x18                                |     
    0x0000e908 add.w sb, sp, 0x1c                                |     sb += var_1ch;
    0x0000e90c mov r0, r6                                        |     r0 = r6;
    0x0000e90e mov r3, r5                                        |     r3 = r5;
    0x0000e910 mov r2, fp                                        |     r2 = fp;
    0x0000e912 mov r1, r5                                        |     r1 = r5;
    0x0000e914 str r5, [sp]                                      |     *(sp) = r5;
    0x0000e916 str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h]");
    0x0000e91a strd r5, r5, [sp, 0x18]                           |     __asm ("strd r5, r5, [var_1ch]");
    0x0000e91e blx 0x6488                                        |     r0 = fcn_00006488 ();
                                                                 |     if (r0 != 0) {
    0x0000e922 cbz r0, 0xe986                                    |         
    0x0000e924 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x0000e926 blx 0x6234                                        |         r0 = fcn_00006234 ();
    0x0000e92a mov sl, r0                                        |         sl = r0;
    0x0000e92c ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x0000e92e blx 0x5438                                        |         fcn_00005438 ();
    0x0000e932 mov r0, sb                                        |         r0 = sb;
    0x0000e934 blx 0x56e0                                        |         get_schema_cache_from_system_registry ()
    0x0000e938 str.w sl, [r4, 0x1c]                              |         __asm ("str.w sl, [r4, 0x1c]");
    0x0000e93c cmp.w sl, 0                                       |         
                                                                 |         if (sl == 0) {
    0x0000e940 beq 0xe9ae                                        |             goto label_2;
                                                                 |         }
    0x0000e942 mov r0, r7                                        |         r0 = r7;
    0x0000e944 bl 0xe038                                         |         r0 = fcn_0000e038 ();
    0x0000e948 mov r6, r0                                        |         r6 = r0;
    0x0000e94a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000e94c beq 0xea26                                        |             goto label_6;
                                                                 |         }
    0x0000e94e ldr r1, [pc, 0x194]                               |         
    0x0000e950 mov r2, r5                                        |         r2 = r5;
    0x0000e952 mov r0, sl                                        |         r0 = sl;
    0x0000e954 add r1, pc                                        |         r1 = 0x1d43e;
    0x0000e956 blx 0x6388                                        |         r0 = domain_rs485port_set_requested_baudrate ();
    0x0000e95a mov r1, r0                                        |         r1 = r0;
    0x0000e95c mov r0, r6                                        |         r0 = r6;
    0x0000e95e cmp r1, 0                                         |         
                                                                 |         if (r1 == 0) {
    0x0000e960 beq 0xea22                                        |             goto label_7;
                                                                 |         }
    0x0000e962 blx 0x5698                                        |         r0 = domain_resource_get_id ();
    0x0000e966 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000e968 beq.w 0xea94                                      |             goto label_8;
                                                                 |         }
    0x0000e96c mov r0, r6                                        |         r0 = r6;
    0x0000e96e movs r7, 2                                        |         r7 = 2;
    0x0000e970 blx 0x5438                                        |         fcn_00005438 ();
    0x0000e974 ldr r1, [pc, 0x170]                               |         
    0x0000e976 movs r6, 1                                        |         r6 = 1;
    0x0000e978 ldr r0, [r4, 0x1c]                                |         r0 = *((r4 + 0x1c));
    0x0000e97a add r5, sp, 0x14                                  |         r5 += var_14h;
    0x0000e97c add r1, pc                                        |         r1 = 0x1d468;
    0x0000e97e blx 0x56a4                                        |         g_key_file_new ();
    0x0000e982 str r0, [r4, 0x20]                                |         *((r4 + 0x20)) = r0;
    0x0000e984 b 0xe8ae                                          |         goto label_0;
                                                                 |     }
    0x0000e986 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000e988 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000e98a beq.w 0xeaa8                                      |         goto label_9;
                                                                 |     }
    0x0000e98e ldr r3, [r3, 8]                                   |     r3 = *((r3 + 8));
                                                                 | label_3:
    0x0000e990 str r3, [sp]                                      |     *(sp) = r3;
    0x0000e992 movs r1, 0x10                                     |     r1 = 0x10;
    0x0000e994 ldr r3, [pc, 0x154]                               |     
    0x0000e996 ldr r2, [pc, 0x158]                               |     
    0x0000e998 ldr r0, [pc, 0x158]                               |     
    0x0000e99a add r3, pc                                        |     r3 = 0x1d48a;
    0x0000e99c add r2, pc                                        |     r2 = 0x1d492;
    0x0000e99e add r0, pc                                        |     r0 = 0x1d496;
    0x0000e9a0 blx 0x647c                                        |     fcn_0000647c ();
    0x0000e9a4 mov r0, sb                                        |     r0 = sb;
    0x0000e9a6 blx 0x56e0                                        |     get_schema_cache_from_system_registry ()
    0x0000e9aa movs r3, 0                                        |     r3 = 0;
    0x0000e9ac str r3, [r4, 0x1c]                                |     *((r4 + 0x1c)) = r3;
                                                                 |     do {
                                                                 | label_2:
    0x0000e9ae ldr r0, [r4, 0x20]                                |         r0 = *((r4 + 0x20));
                                                                 |         if (r0 != 0) {
    0x0000e9b0 cbz r0, 0xe9c4                                    |             
    0x0000e9b2 ldr r3, [pc, 0x144]                               |             r3 = *(0xeafa);
    0x0000e9b4 movs r2, 0                                        |             r2 = 0;
    0x0000e9b6 str r2, [r4, 0x20]                                |             *((r4 + 0x20)) = r2;
    0x0000e9b8 ldr.w r3, [r8, r3]                                |             r3 = *((r8 + r3));
    0x0000e9bc mov r1, r3                                        |             r1 = r3;
    0x0000e9be str r3, [sp, 0xc]                                 |             var_ch = r3;
    0x0000e9c0 blx 0x57e8                                        |             fcn_000057e8 ();
                                                                 |         }
    0x0000e9c4 blx 0x5898                                        |         fcn_00005898 ();
    0x0000e9c8 movs r3, 0                                        |         r3 = 0;
    0x0000e9ca str r0, [r4, 0x1c]                                |         *((r4 + 0x1c)) = r0;
    0x0000e9cc str r3, [sp, 0x18]                                |         var_18h = r3;
    0x0000e9ce ldr r0, [r4, 4]                                   |         r0 = *((r4 + 4));
    0x0000e9d0 str r3, [sp, 0x28]                                |         var_28h = r3;
    0x0000e9d2 ldr r3, [r4, 0xc]                                 |         r3 = *((r4 + 0xc));
    0x0000e9d4 ldr r5, [r4, 0x24]                                |         r5 = *((r4 + 0x24));
    0x0000e9d6 str r7, [sp, 0x1c]                                |         var_1ch = r7;
    0x0000e9d8 str r3, [sp, 0x24]                                |         var_24h = r3;
    0x0000e9da str r0, [sp, 0x20]                                |         var_20h = r0;
    0x0000e9dc blx 0x5cb4                                        |         fcn_00005cb4 ();
    0x0000e9e0 ldr r3, [pc, 0x118]                               |         
    0x0000e9e2 mov r1, r0                                        |         r1 = r0;
    0x0000e9e4 mov r2, r7                                        |         r2 = r7;
    0x0000e9e6 mov r0, r5                                        |         r0 = r5;
    0x0000e9e8 str.w fp, [sp, 4]                                 |         __asm ("str.w fp, [var_4h]");
    0x0000e9ec add r3, pc                                        |         r3 = 0x1d4ec;
    0x0000e9ee str.w sb, [sp]                                    |         __asm ("str.w sb, [sp]");
    0x0000e9f2 blx 0x5544                                        |         fcn_00005544 ();
    0x0000e9f6 ldr r1, [sp, 0x18]                                |         r1 = var_18h;
                                                                 |         if (r1 == 0) {
    0x0000e9f8 cbz r1, 0xea36                                    |             goto label_10;
                                                                 |         }
    0x0000e9fa add r5, sp, 0x14                                  |         r5 += var_14h;
    0x0000e9fc mov r0, r5                                        |         r0 = r5;
    0x0000e9fe blx 0x5b68                                        |         fcn_00005b68 ();
    0x0000ea02 ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x0000ea04 ldr r1, [r4]                                      |         r1 = *(r4);
    0x0000ea06 ldr r3, [pc, 0xf8]                                |         
    0x0000ea08 ldr r2, [r2, 8]                                   |         r2 = *((r2 + 8));
    0x0000ea0a ldr r0, [pc, 0xf8]                                |         
    0x0000ea0c add r3, pc                                        |         r3 = 0x1d512;
    0x0000ea0e strd r1, r2, [sp]                                 |         __asm ("strd r1, r2, [sp]");
    0x0000ea12 mov.w r1, 0x100                                   |         r1 = 0x100;
    0x0000ea16 ldr r2, [pc, 0xf0]                                |         
    0x0000ea18 add r0, pc                                        |         r0 = 0x1d522;
    0x0000ea1a add r2, pc                                        |         r2 = 0x1d528;
    0x0000ea1c blx 0x647c                                        |         fcn_0000647c ();
    0x0000ea20 b 0xe8aa                                          |         goto label_1;
                                                                 | label_7:
    0x0000ea22 blx 0x5438                                        |         fcn_00005438 ();
                                                                 | label_6:
    0x0000ea26 ldr r0, [r4, 0x1c]                                |         r0 = *((r4 + 0x1c));
    0x0000ea28 movs r3, 0                                        |         r3 = 0;
    0x0000ea2a str r3, [r4, 0x1c]                                |         *((r4 + 0x1c)) = r3;
    0x0000ea2c cmp r0, 0                                         |         
    0x0000ea2e beq 0xe9ae                                        |         
                                                                 |     } while (r0 == 0);
    0x0000ea30 blx 0x57c0                                        |     fcn_000057c0 ();
    0x0000ea34 b 0xe9ae                                          |     goto label_2;
                                                                 | label_10:
    0x0000ea36 mov r0, r7                                        |     r0 = r7;
    0x0000ea38 ldr r6, [r4, 0x1c]                                |     r6 = *((r4 + 0x1c));
    0x0000ea3a bl 0xe038                                         |     fcn_0000e038 ();
    0x0000ea3e ldr r1, [pc, 0xcc]                                |     
    0x0000ea40 mov r2, r0                                        |     r2 = r0;
    0x0000ea42 mov r5, r0                                        |     r5 = r0;
    0x0000ea44 mov r0, r6                                        |     r0 = r6;
    0x0000ea46 add r1, pc                                        |     r1 = 0x1d558;
    0x0000ea48 blx 0x5450                                        |     fcn_00005450 ();
    0x0000ea4c mov r0, r5                                        |     r0 = r5;
    0x0000ea4e blx 0x5438                                        |     fcn_00005438 ();
    0x0000ea52 ldr r1, [pc, 0xbc]                                |     
    0x0000ea54 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x0000ea56 add r1, pc                                        |     r1 = 0x1d56c;
    0x0000ea58 blx 0x5df8                                        |     fcn_00005df8 ();
    0x0000ea5c ldr r1, [pc, 0xb4]                                |     
    0x0000ea5e mov r2, r0                                        |     r2 = r0;
    0x0000ea60 str r2, [r4, 0x20]                                |     *((r4 + 0x20)) = r2;
    0x0000ea62 ldr r0, [r4, 0x1c]                                |     r0 = *((r4 + 0x1c));
    0x0000ea64 add r1, pc                                        |     r1 = 0x1d57c;
    0x0000ea66 blx 0x5c20                                        |     fcn_00005c20 ();
    0x0000ea6a mov r0, r4                                        |     r0 = r4;
    0x0000ea6c bl 0xe134                                         |     fcn_0000e134 (r0);
    0x0000ea70 ldr r0, [r4]                                      |     r0 = *(r4);
    0x0000ea72 movs r1, 0x40                                     |     r1 = 0x40;
    0x0000ea74 ldr r3, [pc, 0xa0]                                |     
    0x0000ea76 ldr r2, [pc, 0xa4]                                |     
    0x0000ea78 str r0, [sp]                                      |     *(sp) = r0;
    0x0000ea7a ldr r0, [pc, 0xa4]                                |     
    0x0000ea7c add r3, pc                                        |     r3 = 0x1d598;
    0x0000ea7e add r2, pc                                        |     r2 = 0x1d5a0;
    0x0000ea80 add r0, pc                                        |     r0 = 0x1d5a6;
    0x0000ea82 blx 0x647c                                        |     fcn_0000647c ();
                                                                 |     do {
    0x0000ea86 mov r0, r4                                        |         r0 = r4;
    0x0000ea88 movs r6, 0                                        |         r6 = 0;
    0x0000ea8a movs r7, 3                                        |         r7 = 3;
    0x0000ea8c add r5, sp, 0x14                                  |         r5 += var_14h;
    0x0000ea8e bl 0xe1e4                                         |         fcn_0000e1e4 (r0);
    0x0000ea92 b 0xe8ae                                          |         goto label_0;
                                                                 | label_8:
    0x0000ea94 mov r0, r6                                        |         r0 = r6;
    0x0000ea96 blx 0x5438                                        |         fcn_00005438 ();
    0x0000ea9a ldr r1, [pc, 0x88]                                |         
    0x0000ea9c ldr r0, [r4, 0x1c]                                |         r0 = *((r4 + 0x1c));
    0x0000ea9e add r1, pc                                        |         r1 = 0x1d5c8;
    0x0000eaa0 blx 0x56a4                                        |         g_key_file_new ();
    0x0000eaa4 str r0, [r4, 0x20]                                |         *((r4 + 0x20)) = r0;
    0x0000eaa6 b 0xea86                                          |         
                                                                 |     } while (1);
                                                                 | label_9:
    0x0000eaa8 ldr r3, [pc, 0x7c]                                |     
    0x0000eaaa add r3, pc                                        |     r3 = 0x1d5d6;
    0x0000eaac b 0xe990                                          |     goto label_3;
                                                                 | label_5:
    0x0000eaae blx 0x5fbc                                        |     domain_contract_new ();
    0x0000eab2 nop                                               |     
    0x0000eab4 str r2, [r5, r7]                                  |     *((r5 + r7)) = r2;
    0x0000eab6 movs r0, r0                                       |     
    0x0000eab8 lsls r4, r7, 0x16                                 |     r4 = r7 << 0x16;
    0x0000eaba movs r0, r0                                       |     
    0x0000eabc adds r0, 0xec                                     |     r0 += 0xec;
    0x0000eabe movs r0, r0                                       |     
    0x0000eac0 str r6, [r3, r7]                                  |     *((r3 + r7)) = r6;
    0x0000eac2 movs r0, r0                                       |     
    0x0000eac4 adds r0, 0xfe                                     |     r0 += 0xfe;
    0x0000eac6 movs r0, r0                                       |     
    0x0000eac8 asrs r4, r6, 7                                    |     r4 = r6 >> 7;
    0x0000eaca movs r0, r0                                       |     
    0x0000eacc adds r1, 0xa2                                     |     r1 += 0xa2;
    0x0000eace movs r0, r0                                       |     
    0x0000ead0 lsrs r0, r7, 0x18                                 |     r0 = r7 >> 0x18;
    0x0000ead2 movs r0, r0                                       |     
    0x0000ead4 str r6, [r7, r5]                                  |     *((r7 + r5)) = r6;
    0x0000ead6 movs r0, r0                                       |     
    0x0000ead8 asrs r6, r6, 6                                    |     r6 >>= 6;
    0x0000eada movs r0, r0                                       |     
    0x0000eadc adds r0, 0x84                                     |     r0 += 0x84;
    0x0000eade movs r0, r0                                       |     
    0x0000eae0 lsrs r6, r6, 0x17                                 |     r6 >>= 0x17;
    0x0000eae2 movs r0, r0                                       |     
    0x0000eae4 adds r0, 0x7c                                     |     r0 += 0x7c;
    0x0000eae6 movs r0, r0                                       |     
    0x0000eae8 cmp r7, 0xe0                                      |     
    0x0000eaea movs r0, r0                                       |     
    0x0000eaec asrs r2, r7, 3                                    |     r2 = r7 >> 3;
    0x0000eaee movs r0, r0                                       |     
    0x0000eaf0 cmp r7, 0xfc                                      |     
    0x0000eaf2 movs r0, r0                                       |     
    0x0000eaf4 lsrs r6, r7, 0x14                                 |     r6 = r7 >> 0x14;
    0x0000eaf6 movs r0, r0                                       |     
    0x0000eaf8 lsls r0, r6, 0x16                                 |     r0 = r6 << 0x16;
    0x0000eafa movs r0, r0                                       |     
    0x0000eafc invalid                                           |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpacsio-api.so.0.0.55 @ 0xeb30 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.purge_restorer_restore ()                        | void purge_restorer_restore (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int32_t var_4h;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000eb30 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000eb34 mov r6, r1                                        |     r6 = r1;
    0x0000eb36 ldr r1, [pc, 0x2b0]                               |     
    0x0000eb38 mov r5, r2                                        |     r5 = r2;
    0x0000eb3a sub sp, 0x2c                                      |     
    0x0000eb3c mov r4, r0                                        |     r4 = r0;
    0x0000eb3e ldr r2, [pc, 0x2ac]                               |     r2 = *(0xedee);
    0x0000eb40 add r1, pc                                        |     r1 = 0x1d92e;
    0x0000eb42 ldr r3, [r0, 0x28]                                |     r3 = *((r0 + 0x28));
    0x0000eb44 ldr r2, [r1, r2]                                  |     
    0x0000eb46 ldr r2, [r2]                                      |     r2 = *(0x1d92e);
    0x0000eb48 str r2, [sp, 0x24]                                |     var_24h = r2;
    0x0000eb4a mov.w r2, 0                                       |     r2 = 0;
    0x0000eb4e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000eb50 bne.w 0xecfc                                      |         goto label_5;
                                                                 |     }
                                                                 | label_1:
    0x0000eb54 ldr r0, [r4, 0x20]                                |     r0 = *((r4 + 0x20));
    0x0000eb56 blx 0x59ec                                        |     r0 = collection_count ();
    0x0000eb5a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000eb5c beq 0xec2c                                        |         
    0x0000eb5e ldr r3, [pc, 0x290]                               |         
    0x0000eb60 mov.w sl, 1                                       |         sl = 1;
    0x0000eb64 movs r1, 0                                        |         r1 = 0;
    0x0000eb66 dmb ish                                           |         __asm ("dmb ish");
    0x0000eb6a mov r0, r5                                        |         r0 = r5;
    0x0000eb6c mov.w fp, 0                                       |         
    0x0000eb70 add r3, pc                                        |         r3 = 0x1d966;
    0x0000eb72 str.w sl, [r3]                                    |         __asm ("str.w sl, [r3]");
    0x0000eb76 dmb ish                                           |         __asm ("dmb ish");
    0x0000eb7a blx 0x5fd4                                        |         r0 = g_file_replace_contents ();
    0x0000eb7e mov r7, r0                                        |         r7 = r0;
    0x0000eb80 ldr r0, [r4, 8]                                   |         r0 = *((r4 + 8));
    0x0000eb82 str.w fp, [sp, 0x1c]                              |         __asm ("str.w fp, [var_1ch]");
    0x0000eb86 blx 0x5cb4                                        |         r0 = fcn_00005cb4 ();
    0x0000eb8a mov r8, r0                                        |         r8 = r0;
    0x0000eb8c ldr r0, [r4, 8]                                   |         r0 = *((r4 + 8));
    0x0000eb8e blx 0x5f18                                        |         fcn_00005f18 ();
    0x0000eb92 mov r1, r8                                        |         r1 = r8;
    0x0000eb94 mov r2, r0                                        |         r2 = r0;
    0x0000eb96 mov r0, r7                                        |         r0 = r7;
    0x0000eb98 blx 0x5c08                                        |         r0 = fcn_00005c08 ();
    0x0000eb9c mov sb, r0                                        |         sb = r0;
    0x0000eb9e cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000eba0 beq.w 0xed0a                                      |             goto label_6;
                                                                 |         }
    0x0000eba4 ldr r2, [pc, 0x24c]                               |         
    0x0000eba6 add.w r8, sp, 0x20                                |         r8 += var_20h;
    0x0000ebaa add r3, sp, 0x1c                                  |         r3 += var_1ch;
    0x0000ebac mov r1, fp                                        |         r1 = fp;
    0x0000ebae str.w r8, [sp]                                    |         __asm ("str.w r8, [sp]");
    0x0000ebb2 add r2, pc                                        |         r2 = 0x1d9aa;
    0x0000ebb4 str.w fp, [sp, 0x20]                              |         __asm ("str.w fp, [var_20h]");
    0x0000ebb8 blx 0x54fc                                        |         r0 = fcn_000054fc ();
    0x0000ebbc cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000ebbe bne 0xec86                                        |             goto label_7;
                                                                 |         }
    0x0000ebc0 ldr r3, [sp, 0x20]                                |         r3 = var_20h;
    0x0000ebc2 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0000ebc4 beq.w 0xedc0                                      |             goto label_8;
                                                                 |         }
    0x0000ebc8 ldr r7, [r3, 8]                                   |         r7 = *((r3 + 8));
                                                                 | label_4:
    0x0000ebca ldr r0, [r4, 8]                                   |         r0 = *((r4 + 8));
    0x0000ebcc ldr r6, [r4]                                      |         r6 = *(r4);
    0x0000ebce blx 0x5f18                                        |         fcn_00005f18 ();
    0x0000ebd2 ldr r3, [pc, 0x224]                               |         
    0x0000ebd4 movs r1, 0x10                                     |         r1 = 0x10;
    0x0000ebd6 strd r0, r7, [sp, 4]                              |         __asm ("strd r0, r7, [var_0h_2]");
    0x0000ebda ldr r2, [pc, 0x220]                               |         
    0x0000ebdc ldr r0, [pc, 0x220]                               |         
    0x0000ebde add r3, pc                                        |         r3 = 0x1d9dc;
    0x0000ebe0 str r6, [sp]                                      |         *(sp) = r6;
    0x0000ebe2 add r2, pc                                        |         r2 = 0x1d9e4;
    0x0000ebe4 add r0, pc                                        |         r0 = 0x1d9e8;
    0x0000ebe6 blx 0x647c                                        |         fcn_0000647c ();
    0x0000ebea mov r0, r8                                        |         r0 = r8;
    0x0000ebec blx 0x56e0                                        |         get_schema_cache_from_system_registry ()
    0x0000ebf0 mov r0, sb                                        |         r0 = sb;
    0x0000ebf2 blx 0x5644                                        |         domain_aadpdevice_set_name ();
                                                                 | label_2:
    0x0000ebf6 ldr r1, [r4]                                      |         r1 = *(r4);
    0x0000ebf8 ldr r3, [pc, 0x208]                               |         
    0x0000ebfa ldr r2, [pc, 0x20c]                               |         
    0x0000ebfc ldr r0, [pc, 0x20c]                               |         
    0x0000ebfe str r1, [sp]                                      |         *(sp) = r1;
    0x0000ec00 add r3, pc                                        |         r3 = 0x1da08;
    0x0000ec02 add r2, pc                                        |         r2 = 0x1da10;
    0x0000ec04 mov.w r1, 0x100                                   |         r1 = 0x100;
    0x0000ec08 add r0, pc                                        |         r0 = 0x1da18;
    0x0000ec0a blx 0x647c                                        |         fcn_0000647c ();
                                                                 | label_3:
    0x0000ec0e ldr r0, [sp, 0x1c]                                |         r0 = var_1ch;
    0x0000ec10 movs r3, 0                                        |         r3 = 0;
    0x0000ec12 str r3, [sp, 0x1c]                                |         var_1ch = r3;
                                                                 |         if (r0 != 0) {
    0x0000ec14 cbz r0, 0xec1a                                    |             
    0x0000ec16 blx 0x5438                                        |             fcn_00005438 ();
                                                                 |         }
    0x0000ec1a ldr r3, [pc, 0x1f4]                               |         
    0x0000ec1c movs r2, 0                                        |         r2 = 0;
    0x0000ec1e dmb ish                                           |         __asm ("dmb ish");
    0x0000ec22 add r3, pc                                        |         r3 = 0x1da38;
    0x0000ec24 str r2, [r3]                                      |         *(r3) = r2;
    0x0000ec26 dmb ish                                           |         __asm ("dmb ish");
    0x0000ec2a b 0xec42                                          |         
                                                                 |     } else {
    0x0000ec2c ldr r1, [r4]                                      |         r1 = *(r4);
    0x0000ec2e ldr r3, [pc, 0x1e4]                               |         
    0x0000ec30 ldr r2, [pc, 0x1e4]                               |         
    0x0000ec32 ldr r0, [pc, 0x1e8]                               |         
    0x0000ec34 str r1, [sp]                                      |         *(sp) = r1;
    0x0000ec36 add r3, pc                                        |         r3 = 0x1da50;
    0x0000ec38 add r2, pc                                        |         r2 = 0x1da54;
    0x0000ec3a movs r1, 0x40                                     |         r1 = 0x40;
    0x0000ec3c add r0, pc                                        |         r0 = 0x1da5e;
    0x0000ec3e blx 0x647c                                        |         fcn_0000647c ();
                                                                 |     }
    0x0000ec42 mov r0, r5                                        |     r0 = r5;
    0x0000ec44 ldr r6, [r4, 0x1c]                                |     r6 = *((r4 + 0x1c));
    0x0000ec46 bl 0xe038                                         |     fcn_0000e038 ();
    0x0000ec4a ldr r1, [pc, 0x1d4]                               |     
    0x0000ec4c mov r2, r0                                        |     r2 = r0;
    0x0000ec4e mov r5, r0                                        |     r5 = r0;
    0x0000ec50 mov r0, r6                                        |     r0 = r6;
    0x0000ec52 add r1, pc                                        |     r1 = 0x1da78;
    0x0000ec54 blx 0x5450                                        |     fcn_00005450 ();
    0x0000ec58 mov r0, r5                                        |     r0 = r5;
    0x0000ec5a blx 0x5438                                        |     fcn_00005438 ();
    0x0000ec5e mov r0, r4                                        |     r0 = r4;
    0x0000ec60 bl 0xe134                                         |     fcn_0000e134 (r0);
    0x0000ec64 ldr r2, [pc, 0x1bc]                               |     
    0x0000ec66 ldr r3, [pc, 0x184]                               |     r3 = *(0xedee);
    0x0000ec68 add r2, pc                                        |     r2 = 0x1da90;
    0x0000ec6a ldr r3, [r2, r3]                                  |     r3 = *(0x1da90);
    0x0000ec6c ldr r2, [r3]                                      |     r2 = *(0x1da90);
    0x0000ec6e ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x0000ec70 eors r2, r3                                       |     r2 ^= r3;
    0x0000ec72 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0000ec76 bne.w 0xedca                                      |         goto label_9;
                                                                 |     }
    0x0000ec7a mov r0, r4                                        |     r0 = r4;
    0x0000ec7c add sp, 0x2c                                      |     
    0x0000ec7e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x0000ec82 b.w 0xe1e4                                        |     void (*0xe1e4)() ();
                                                                 | label_7:
    0x0000ec86 mov r0, r8                                        |     r0 = r8;
    0x0000ec88 blx 0x56e0                                        |     get_schema_cache_from_system_registry ()
    0x0000ec8c mov r0, sb                                        |     r0 = sb;
    0x0000ec8e blx 0x5644                                        |     domain_aadpdevice_set_name ();
    0x0000ec92 mov r1, fp                                        |     r1 = fp;
    0x0000ec94 mov r0, r5                                        |     r0 = r5;
    0x0000ec96 blx 0x56f8                                        |     fcn_000056f8 ();
    0x0000ec9a ldr r2, [r4, 0x14]                                |     r2 = *((r4 + 0x14));
    0x0000ec9c mov sb, r0                                        |     sb = r0;
    0x0000ec9e cmp r2, 2                                         |     
                                                                 |     if (r2 == 2) {
    0x0000eca0 beq 0xed2a                                        |         goto label_10;
                                                                 |     }
    0x0000eca2 cmp r2, 1                                         |     
                                                                 |     if (r2 != 1) {
    0x0000eca4 bne.w 0xedce                                      |         goto label_11;
                                                                 |     }
    0x0000eca8 ldr.w fp, [r4, 0x20]                              |     fp = *((r4 + 0x20));
    0x0000ecac ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000ecae cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x0000ecb2 beq.w 0xedc6                                      |         goto label_12;
                                                                 |     }
    0x0000ecb6 str r6, [sp, 0x10]                                |     var_10h = r6;
    0x0000ecb8 mov sl, r2                                        |     sl = r2;
    0x0000ecba mov r6, fp                                        |     r6 = fp;
    0x0000ecbc mov fp, r3                                        |     
    0x0000ecbe b 0xecce                                          |     
                                                                 |     while (r0 == 0) {
    0x0000ecc0 mov sl, r0                                        |         sl = r0;
                                                                 | label_0:
    0x0000ecc2 mov r0, r8                                        |         r0 = r8;
    0x0000ecc4 blx 0x5444                                        |         fcn_00005444 ();
    0x0000ecc8 ldr r6, [r6, 4]                                   |         r6 = *((r6 + 4));
    0x0000ecca cmp r6, 0                                         |         
                                                                 |         if (r6 == 0) {
    0x0000eccc beq 0xed80                                        |             goto label_13;
                                                                 |         }
    0x0000ecce blx 0x5870                                        |         fcn_00005870 ();
    0x0000ecd2 mov r3, sb                                        |         r3 = sb;
    0x0000ecd4 str r0, [sp, 0x20]                                |         var_20h = r0;
    0x0000ecd6 mov r2, fp                                        |         r2 = fp;
    0x0000ecd8 ldr r1, [r6]                                      |         r1 = *(r6);
    0x0000ecda strd r0, r5, [sp, 4]                              |         __asm ("strd r0, r5, [var_0h_2]");
    0x0000ecde mov r0, r4                                        |         r0 = r4;
    0x0000ece0 str r7, [sp]                                      |         *(sp) = r7;
    0x0000ece2 bl 0xe2c8                                         |         r0 = fcn_0000e2c8 (r0, r1, r2, r3, r4, r5, r6);
    0x0000ece6 cmp r0, 0                                         |         
    0x0000ece8 beq 0xecc0                                        |         
                                                                 |     }
    0x0000ecea ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0000ecec ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x0000ecee ldrd r0, r1, [r3]                                 |     __asm ("ldrd r0, r1, [r3]");
    0x0000ecf2 bl 0xe23c                                         |     r0 = fcn_0000e23c (r0, r1, r2);
    0x0000ecf6 and.w sl, sl, r0                                  |     sl &= r0;
    0x0000ecfa b 0xecc2                                          |     goto label_0;
                                                                 | label_5:
    0x0000ecfc mov r1, r3                                        |     r1 = r3;
    0x0000ecfe ldr r0, [r0, 0x24]                                |     r0 = *((r0 + 0x24));
    0x0000ed00 blx 0x5d98                                        |     fcn_00005d98 ();
    0x0000ed04 movs r3, 0                                        |     r3 = 0;
    0x0000ed06 str r3, [r4, 0x28]                                |     *((r4 + 0x28)) = r3;
    0x0000ed08 b 0xeb54                                          |     goto label_1;
                                                                 | label_6:
    0x0000ed0a ldr r6, [r4]                                      |     r6 = *(r4);
    0x0000ed0c ldr r0, [r4, 8]                                   |     r0 = *((r4 + 8));
    0x0000ed0e blx 0x5f18                                        |     fcn_00005f18 ();
    0x0000ed12 ldr r3, [pc, 0x114]                               |     
    0x0000ed14 movs r1, 0x10                                     |     r1 = 0x10;
    0x0000ed16 strd r6, r0, [sp]                                 |     __asm ("strd r6, r0, [sp]");
    0x0000ed1a ldr r2, [pc, 0x110]                               |     
    0x0000ed1c ldr r0, [pc, 0x110]                               |     
    0x0000ed1e add r3, pc                                        |     r3 = 0x1db4c;
    0x0000ed20 add r2, pc                                        |     r2 = 0x1db52;
    0x0000ed22 add r0, pc                                        |     r0 = 0x1db56;
    0x0000ed24 blx 0x647c                                        |     fcn_0000647c ();
    0x0000ed28 b 0xebf6                                          |     goto label_2;
                                                                 | label_10:
    0x0000ed2a ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000ed2c str r3, [sp, 0x10]                                |     var_10h = r3;
    0x0000ed2e blx 0x5870                                        |     fcn_00005870 ();
    0x0000ed32 ldr.w fp, [r4, 0x20]                              |     fp = *((r4 + 0x20));
    0x0000ed36 mov r2, r0                                        |     r2 = r0;
    0x0000ed38 str r0, [sp, 0x20]                                |     var_20h = r0;
    0x0000ed3a cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x0000ed3e beq 0xed6c                                        |         goto label_14;
                                                                 |     }
    0x0000ed40 str r6, [sp, 0x14]                                |     var_14h = r6;
    0x0000ed42 mov r6, fp                                        |     r6 = fp;
    0x0000ed44 ldr.w fp, [sp, 0x10]                              |     fp = var_10h;
    0x0000ed48 b 0xed4c                                          |     
                                                                 |     while (r6 != 0) {
    0x0000ed4a ldr r2, [sp, 0x20]                                |         r2 = var_20h;
    0x0000ed4c ldr r1, [r6]                                      |         r1 = *(r6);
    0x0000ed4e mov r3, sb                                        |         r3 = sb;
    0x0000ed50 strd r2, r5, [sp, 4]                              |         __asm ("strd r2, r5, [var_0h_2]");
    0x0000ed54 mov r0, r4                                        |         r0 = r4;
    0x0000ed56 mov r2, fp                                        |         r2 = fp;
    0x0000ed58 str r7, [sp]                                      |         *(sp) = r7;
    0x0000ed5a bl 0xe2c8                                         |         fcn_0000e2c8 (r0, r1, r2, r3, r4, r5, r6);
    0x0000ed5e ldr r6, [r6, 4]                                   |         r6 = *((r6 + 4));
    0x0000ed60 and.w sl, sl, r0                                  |         sl &= r0;
    0x0000ed64 cmp r6, 0                                         |         
    0x0000ed66 bne 0xed4a                                        |         
                                                                 |     }
    0x0000ed68 ldr r6, [sp, 0x14]                                |     r6 = var_14h;
    0x0000ed6a ldr r2, [sp, 0x20]                                |     r2 = var_20h;
                                                                 | label_14:
    0x0000ed6c ldrd r0, r1, [r6]                                 |     __asm ("ldrd r0, r1, [r6]");
    0x0000ed70 bl 0xe23c                                         |     r0 = fcn_0000e23c (r0, r1, r2);
    0x0000ed74 mov r3, r0                                        |     r3 = r0;
    0x0000ed76 mov r0, r8                                        |     r0 = r8;
    0x0000ed78 and.w sl, r3, sl                                  |     sl = r3 & sl;
    0x0000ed7c blx 0x5444                                        |     fcn_00005444 ();
                                                                 | label_13:
    0x0000ed80 ldr r6, [r4]                                      |     r6 = *(r4);
    0x0000ed82 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x0000ed86 bne 0xed9e                                        |         
    0x0000ed88 ldr r3, [pc, 0xa8]                                |         
    0x0000ed8a movs r1, 0x10                                     |         r1 = 0x10;
    0x0000ed8c ldr r2, [pc, 0xa8]                                |         
    0x0000ed8e ldr r0, [pc, 0xac]                                |         
    0x0000ed90 add r3, pc                                        |         r3 = 0x1dbc8;
    0x0000ed92 str r6, [sp]                                      |         *(sp) = r6;
    0x0000ed94 add r2, pc                                        |         r2 = 0x1dbd0;
    0x0000ed96 add r0, pc                                        |         r0 = 0x1dbd8;
    0x0000ed98 blx 0x647c                                        |         fcn_0000647c ();
    0x0000ed9c b 0xec0e                                          |         goto label_3;
                                                                 |     }
    0x0000ed9e ldr.w fp, [r4, 0x20]                              |     fp = *((r4 + 0x20));
                                                                 |     do {
    0x0000eda2 mov r0, fp                                        |         r0 = fp;
    0x0000eda4 blx 0x59ec                                        |         collection_count ();
    0x0000eda8 ldr r3, [pc, 0x94]                                |         
    0x0000edaa movs r1, 0x40                                     |         r1 = 0x40;
    0x0000edac strd r6, r0, [sp]                                 |         __asm ("strd r6, r0, [sp]");
    0x0000edb0 ldr r2, [pc, 0x90]                                |         
    0x0000edb2 ldr r0, [pc, 0x94]                                |         
    0x0000edb4 add r3, pc                                        |         r3 = 0x1dbf8;
    0x0000edb6 add r2, pc                                        |         r2 = 0x1dbfe;
    0x0000edb8 add r0, pc                                        |         r0 = 0x1dc06;
    0x0000edba blx 0x647c                                        |         fcn_0000647c ();
    0x0000edbe b 0xec0e                                          |         goto label_3;
                                                                 | label_8:
    0x0000edc0 ldr r7, [pc, 0x88]                                |         
    0x0000edc2 add r7, pc                                        |         r7 = 0x1dc12;
    0x0000edc4 b 0xebca                                          |         goto label_4;
                                                                 | label_12:
    0x0000edc6 ldr r6, [r4]                                      |         r6 = *(r4);
    0x0000edc8 b 0xeda2                                          |         
                                                                 |     } while (1);
                                                                 | label_9:
    0x0000edca blx 0x5fbc                                        |     domain_contract_new ();
                                                                 | label_11:
    0x0000edce ldr r3, [pc, 0x80]                                |     
    0x0000edd0 mov.w r2, 0x29c                                   |     r2 = 0x29c;
    0x0000edd4 ldr r1, [pc, 0x7c]                                |     
    0x0000edd6 ldr r0, [pc, 0x80]                                |     
    0x0000edd8 add r3, pc                                        |     r3 = 0x1dc2e;
    0x0000edda str.w fp, [sp]                                    |     __asm ("str.w fp, [sp]");
    0x0000edde add r1, pc                                        |     r1 = 0x1dc36;
    0x0000ede0 adds r3, 0x24                                     |     r3 += 0x24;
    0x0000ede2 add r0, pc                                        |     r0 = 0x1dc40;
    0x0000ede4 blx 0x598c                                        |     interface_definition_create ();
    0x0000ede8 ldr r6, [pc, 0x3e0]                               |     r6 = *(0xf1cc);
    0x0000edea movs r0, r0                                       |     
    0x0000edec lsls r4, r7, 0x16                                 |     r4 = r7 << 0x16;
    0x0000edee movs r0, r0                                       |     
    0x0000edf0 ldrsb r4, [r3, r2]                                |     r4 = *((r3 + r2));
    0x0000edf2 movs r0, r0                                       |     
    0x0000edf4 cmp r6, 0xbe                                      |     
    0x0000edf6 movs r0, r0                                       |     
    0x0000edf8 lsrs r6, r6, 0x1a                                 |     r6 >>= 0x1a;
    0x0000edfa movs r0, r0                                       |     
    0x0000edfc cmp r6, 0x96                                      |     
    0x0000edfe movs r0, r0                                       |     
    0x0000ee00 lsrs r0, r7, 0xb                                  |     r0 = r7 >> 0xb;
    0x0000ee02 movs r0, r0                                       |     
    0x0000ee04 lsrs r4, r2, 0x1a                                 |     r4 = r2 >> 0x1a;
    0x0000ee06 movs r0, r0                                       |     
    0x0000ee08 cmp r7, 0x56                                      |     
    0x0000ee0a movs r0, r0                                       |     
    0x0000ee0c lsrs r4, r2, 0xb                                  |     r4 = r2 >> 0xb;
    0x0000ee0e movs r0, r0                                       |     
    0x0000ee10 strb r2, [r5, r7]                                 |     *((r5 + r7)) = r2;
    0x0000ee12 movs r0, r0                                       |     
    0x0000ee14 lsrs r6, r3, 0x19                                 |     r6 = r3 >> 0x19;
    0x0000ee16 movs r0, r0                                       |     
    0x0000ee18 cmp r7, 0x54                                      |     
    0x0000ee1a movs r0, r0                                       |     
    0x0000ee1c lsrs r0, r4, 0xa                                  |     r0 = r4 >> 0xa;
    0x0000ee1e movs r0, r0                                       |     
    0x0000ee20 cmp r5, 0x7e                                      |     
    0x0000ee22 movs r0, r0                                       |     
    0x0000ee24 ldr r5, [pc, 0x340]                               |     r5 = *(0xf168);
    0x0000ee26 movs r0, r0                                       |     
    0x0000ee28 lsrs r6, r6, 0x15                                 |     r6 >>= 0x15;
    0x0000ee2a movs r0, r0                                       |     
    0x0000ee2c cmp r5, 0x98                                      |     
    0x0000ee2e movs r0, r0                                       |     
    0x0000ee30 lsrs r2, r7, 6                                    |     r2 = r7 >> 6;
    0x0000ee32 movs r0, r0                                       |     
    0x0000ee34 lsrs r4, r0, 0x14                                 |     r4 = r0 >> 0x14;
    0x0000ee36 movs r0, r0                                       |     
    0x0000ee38 cmp r5, 0x9c                                      |     
    0x0000ee3a movs r0, r0                                       |     
    0x0000ee3c lsrs r6, r0, 5                                    |     r6 = r0 >> 5;
    0x0000ee3e movs r0, r0                                       |     
    0x0000ee40 lsrs r0, r4, 0x13                                 |     r0 = r4 >> 0x13;
    0x0000ee42 movs r0, r0                                       |     
    0x0000ee44 cmp r5, 0x42                                      |     
    0x0000ee46 movs r0, r0                                       |     
    0x0000ee48 lsrs r4, r4, 4                                    |     r4 >>= 4;
    0x0000ee4a movs r0, r0                                       |     
    0x0000ee4c cmp r1, 0xc6                                      |     
    0x0000ee4e movs r0, r0                                       |     
    0x0000ee50 cmp r5, 0xe0                                      |     
    0x0000ee52 movs r0, r0                                       |     
    0x0000ee54 cmp r1, 0x2e                                      |     
    0x0000ee56 movs r0, r0                                       |     
    0x0000ee58 lsrs r2, r7, 3                                    |     r2 = r7 >> 3;
    0x0000ee5a movs r0, r0                                       |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpacsio-api.so.0.0.55 @ 0xb570 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.terminal_block_collection_new ()                 | void terminal_block_collection_new (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000b570 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000b574 mov r4, r0                                        |     r4 = r0;
    0x0000b576 ldr r0, [pc, 0x178]                               |     
    0x0000b578 sub sp, 0x2c                                      |     
    0x0000b57a mov r6, r2                                        |     r6 = r2;
    0x0000b57c mov r5, r1                                        |     r5 = r1;
    0x0000b57e ldr r3, [pc, 0x174]                               |     r3 = *(0xb6f6);
    0x0000b580 movs r1, 0x80                                     |     r1 = 0x80;
    0x0000b582 add r0, pc                                        |     r0 = 0x16c78;
    0x0000b584 str r6, [sp, 8]                                   |     var_8h = r6;
    0x0000b586 ldr.w sb, [pc, 0x170]                             |     
    0x0000b58a add.w r8, sp, 0x1c                                |     r8 += var_1ch;
    0x0000b58e ldr r3, [r0, r3]                                  |     
    0x0000b590 movs r7, 0                                        |     r7 = 0;
    0x0000b592 ldr.w sl, [pc, 0x168]                             |     
    0x0000b596 ldr r2, [pc, 0x168]                               |     
    0x0000b598 add sb, pc                                        |     sb = 0x16c96;
    0x0000b59a ldr r3, [r3]                                      |     r3 = *(0x16c78);
    0x0000b59c str r3, [sp, 0x24]                                |     var_24h = r3;
    0x0000b59e mov.w r3, 0                                       |     r3 = 0;
    0x0000b5a2 ldr r3, [pc, 0x160]                               |     
    0x0000b5a4 mov r0, sb                                        |     r0 = sb;
    0x0000b5a6 add sl, pc                                        |     sl = 0x16ca8;
    0x0000b5a8 add r2, pc                                        |     r2 = 0x16cae;
    0x0000b5aa add r3, pc                                        |     r3 = 0x16cb4;
    0x0000b5ac str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0000b5ae blx 0x647c                                        |     fcn_0000647c ();
    0x0000b5b2 mov r3, r8                                        |     r3 = r8;
    0x0000b5b4 mov r2, sl                                        |     r2 = sl;
    0x0000b5b6 mov r1, r5                                        |     r1 = r5;
    0x0000b5b8 mov r0, r4                                        |     r0 = r4;
    0x0000b5ba str r7, [sp, 0x1c]                                |     var_1ch = r7;
    0x0000b5bc blx 0x624c                                        |     fcn_0000624c ();
    0x0000b5c0 ldr r6, [sp, 0x1c]                                |     r6 = var_1ch;
    0x0000b5c2 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x0000b5c4 bne 0xb64c                                        |         goto label_3;
                                                                 |     }
    0x0000b5c6 mov fp, r0                                        |     
    0x0000b5c8 blx 0x568c                                        |     ipc_data_get_ipc_data_array ();
    0x0000b5cc ldr r1, [pc, 0x138]                               |     
    0x0000b5ce mov r3, r6                                        |     r3 = r6;
    0x0000b5d0 mov r2, fp                                        |     r2 = fp;
    0x0000b5d2 add.w fp, sp, 0x20                                |     
    0x0000b5d6 add r1, pc                                        |     r1 = 0x16ce2;
    0x0000b5d8 blx 0x59b0                                        |     r0 = free (r0);
    0x0000b5dc mov r7, r0                                        |     r7 = r0;
    0x0000b5de blx 0x60fc                                        |     r0 = fcn_000060fc ();
    0x0000b5e2 mov r1, r0                                        |     r1 = r0;
    0x0000b5e4 mov r0, r7                                        |     r0 = r7;
    0x0000b5e6 blx 0x5f94                                        |     fcn_00005f94 ();
    0x0000b5ea ldr r2, [pc, 0x120]                               |     
    0x0000b5ec movs r1, 0x80                                     |     r1 = 0x80;
    0x0000b5ee str r0, [sp, 0x10]                                |     var_10h = r0;
    0x0000b5f0 mov r0, sb                                        |     r0 = sb;
    0x0000b5f2 add r2, pc                                        |     r2 = 0x16d04;
    0x0000b5f4 blx 0x647c                                        |     fcn_0000647c ();
    0x0000b5f8 mov r1, fp                                        |     r1 = fp;
    0x0000b5fa mov r0, r4                                        |     r0 = r4;
    0x0000b5fc str r6, [sp, 0x20]                                |     var_20h = r6;
    0x0000b5fe blx 0x5fd4                                        |     g_file_replace_contents ();
    0x0000b602 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
                                                                 |     if (r3 == 0) {
    0x0000b604 cbz r3, 0xb656                                    |         goto label_4;
                                                                 |     }
                                                                 | label_1:
    0x0000b606 ldr r2, [pc, 0x108]                               |     
    0x0000b608 movs r1, 0x10                                     |     r1 = 0x10;
    0x0000b60a ldr r0, [pc, 0x108]                               |     
    0x0000b60c add r2, pc                                        |     r2 = 0x16d22;
    0x0000b60e add r0, pc                                        |     r0 = 0x16d28;
    0x0000b610 blx 0x647c                                        |     fcn_0000647c ();
    0x0000b614 ldr r1, [sp, 0x20]                                |     r1 = var_20h;
    0x0000b616 mov r0, r8                                        |     r0 = r8;
    0x0000b618 blx 0x5b68                                        |     fcn_00005b68 ();
                                                                 | label_0:
    0x0000b61c ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
                                                                 |     if (r1 != 0) {
    0x0000b61e cbz r1, 0xb626                                    |         
    0x0000b620 ldr r0, [sp, 8]                                   |         r0 = var_8h;
    0x0000b622 blx 0x5b68                                        |         fcn_00005b68 ();
                                                                 |     }
    0x0000b626 blx 0x60fc                                        |     r0 = fcn_000060fc ();
    0x0000b62a mov r1, r0                                        |     r1 = r0;
    0x0000b62c mov r0, r7                                        |     r0 = r7;
    0x0000b62e blx 0x5f94                                        |     fcn_00005f94 ();
                                                                 |     do {
    0x0000b632 ldr r2, [pc, 0xe4]                                |         
    0x0000b634 ldr r3, [pc, 0xbc]                                |         r3 = *(0xb6f4);
    0x0000b636 add r2, pc                                        |         r2 = 0x16d54;
    0x0000b638 ldr r3, [r2, r3]                                  |         r3 = *(0x16d54);
    0x0000b63a ldr r2, [r3]                                      |         r2 = *(0x16d54);
    0x0000b63c ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x0000b63e eors r2, r3                                       |         r2 ^= r3;
    0x0000b640 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000b644 bne 0xb6ec                                        |             goto label_5;
                                                                 |         }
    0x0000b646 add sp, 0x2c                                      |         
    0x0000b648 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_3:
    0x0000b64c mov r0, r8                                        |         r0 = r8;
    0x0000b64e blx 0x56e0                                        |         get_schema_cache_from_system_registry ()
    0x0000b652 mov r0, r7                                        |         r0 = r7;
    0x0000b654 b 0xb632                                          |         
                                                                 |     } while (1);
                                                                 | label_4:
    0x0000b656 str r0, [sp, 0x14]                                |     var_14h = r0;
    0x0000b658 blx 0x5da4                                        |     fcn_00005da4 ();
    0x0000b65c ldr r1, [sp, 0x14]                                |     r1 = var_14h;
    0x0000b65e blx 0x61e0                                        |     r0 = fcn_000061e0 ();
                                                                 |     if (r0 == 0) {
    0x0000b662 cbz r0, 0xb678                                    |         goto label_6;
                                                                 |     }
    0x0000b664 ldr r2, [pc, 0xb4]                                |     
    0x0000b666 mov r0, sb                                        |     r0 = sb;
    0x0000b668 movs r1, 0x80                                     |     r1 = 0x80;
    0x0000b66a add r2, pc                                        |     r2 = 0x16d8a;
    0x0000b66c blx 0x647c                                        |     fcn_0000647c ();
                                                                 | label_2:
    0x0000b670 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x0000b672 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000b674 beq 0xb61c                                        |         goto label_0;
                                                                 |     }
    0x0000b676 b 0xb606                                          |     goto label_1;
                                                                 | label_6:
    0x0000b678 ldr r2, [pc, 0xa4]                                |     
    0x0000b67a mov r0, sb                                        |     r0 = sb;
    0x0000b67c movs r1, 0x80                                     |     r1 = 0x80;
    0x0000b67e add r2, pc                                        |     r2 = 0x16da2;
    0x0000b680 blx 0x647c                                        |     fcn_0000647c ();
    0x0000b684 ldr r0, [pc, 0x9c]                                |     
    0x0000b686 mov r1, sl                                        |     r1 = sl;
    0x0000b688 mov r2, fp                                        |     r2 = fp;
    0x0000b68a add r0, pc                                        |     r0 = 0x16db2;
    0x0000b68c blx 0x6108                                        |     r0 = fcn_00006108 ();
    0x0000b690 mov sl, r0                                        |     sl = r0;
    0x0000b692 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000b694 beq 0xb670                                        |         goto label_2;
                                                                 |     }
    0x0000b696 mov r3, fp                                        |     r3 = fp;
    0x0000b698 ldr.w sb, [sp, 0x10]                              |     sb = var_10h;
    0x0000b69c mov fp, r7                                        |     
    0x0000b69e mov r6, r0                                        |     r6 = r0;
    0x0000b6a0 mov r7, r3                                        |     r7 = r3;
    0x0000b6a2 b 0xb6c0                                          |     
                                                                 |     while (r1 == 0) {
    0x0000b6a4 ldr r2, [r6]                                      |         r2 = *(r6);
    0x0000b6a6 mov r3, r5                                        |         r3 = r5;
    0x0000b6a8 mov r0, sb                                        |         r0 = sb;
    0x0000b6aa strd r4, r7, [sp]                                 |         __asm ("strd r4, r7, [sp]");
    0x0000b6ae blx 0x5e1c                                        |         fcn_00005e1c ();
    0x0000b6b2 ldr r2, [sp, 0x20]                                |         r2 = var_20h;
                                                                 |         if (r2 != 0) {
    0x0000b6b4 cbnz r2, 0xb6da                                   |             goto label_7;
                                                                 |         }
                                                                 |         if (r0 != 0) {
    0x0000b6b6 cbz r0, 0xb6bc                                    |             
    0x0000b6b8 blx 0x5644                                        |             domain_aadpdevice_set_name ();
                                                                 |         }
    0x0000b6bc ldr r6, [r6, 4]                                   |         r6 = *((r6 + 4));
                                                                 |         if (r6 == 0) {
    0x0000b6be cbz r6, 0xb6c6                                    |             goto label_8;
                                                                 |         }
    0x0000b6c0 ldr r1, [sp, 0x20]                                |         r1 = var_20h;
    0x0000b6c2 cmp r1, 0                                         |         
    0x0000b6c4 beq 0xb6a4                                        |         
                                                                 |     }
                                                                 | label_8:
    0x0000b6c6 mov r7, fp                                        |     r7 = fp;
                                                                 |     do {
    0x0000b6c8 ldr r2, [sp, 0xc]                                 |         r2 = var_ch;
    0x0000b6ca mov r0, sl                                        |         r0 = sl;
    0x0000b6cc ldr r3, [pc, 0x58]                                |         r3 = *(0xb728);
    0x0000b6ce ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x0000b6d0 mov r1, r3                                        |         r1 = r3;
    0x0000b6d2 str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x0000b6d4 blx 0x57e8                                        |         fcn_000057e8 ();
    0x0000b6d8 b 0xb670                                          |         goto label_2;
                                                                 | label_7:
    0x0000b6da ldr r2, [pc, 0x50]                                |         
    0x0000b6dc movs r1, 0x10                                     |         r1 = 0x10;
    0x0000b6de ldr r0, [pc, 0x50]                                |         
    0x0000b6e0 mov r7, fp                                        |         r7 = fp;
    0x0000b6e2 add r2, pc                                        |         r2 = 0x16e14;
    0x0000b6e4 add r0, pc                                        |         r0 = 0x16e1a;
    0x0000b6e6 blx 0x647c                                        |         fcn_0000647c ();
    0x0000b6ea b 0xb6c8                                          |         
                                                                 |     } while (1);
                                                                 | label_5:
    0x0000b6ec blx 0x5fbc                                        |     domain_contract_new ();
    0x0000b6f0 strh r6, [r6, 0x24]                               |     *((r6 + 0x24)) = r6;
    0x0000b6f2 movs r0, r0                                       |     
    0x0000b6f4 lsls r4, r7, 0x16                                 |     r4 = r7 << 0x16;
    0x0000b6f6 movs r0, r0                                       |     
    0x0000b6f8 adcs r4, r0                                       |     __asm ("adcs r4, r0");
    0x0000b6fa movs r0, r0                                       |     
    0x0000b6fc ldr r6, [r0, r1]                                  |     r6 = *((r0 + r1));
    0x0000b6fe movs r0, r0                                       |     
    0x0000b700 ldr r4, [r4, r0]                                  |     r4 = *((r4 + r0));
    0x0000b702 movs r0, r0                                       |     
    0x0000b704 strh r6, [r1, 0x24]                               |     *((r1 + 0x24)) = r6;
    0x0000b706 movs r0, r0                                       |     
    0x0000b708 bx r6                                             |     return uint32_t (*r6)() ();
                                                                 | }

[*] Function system used 15 times libpacsio-api.so.0.0.55