[*] Binary protection state of libpinchart-api.so.0.0.1

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


[*] Function system tear down of libpinchart-api.so.0.0.1

    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpinchart-api.so.0.0.1 @ 0x1c28 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.00001c28 ()                                          | void fcn_00001c28 (uint32_t arg1, int16_t arg2) {
                                                                     |     int16_t var_0h;
                                                                     |     uint32_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int32_t var_10h_2;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_a4h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x00001c28 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00001c2c mov r7, r1                                            |     r7 = r1;
    0x00001c2e ldr r1, [pc, 0x11c]                                   |     
    0x00001c30 sub sp, 0xac                                          |     
    0x00001c32 ldr r3, [pc, 0x11c]                                   |     r3 = *(0x1d52);
    0x00001c34 add r1, pc                                            |     r1 = 0x3986;
    0x00001c36 ldr.w ip, [pc, 0x11c]                                 |     
    0x00001c3a ldr r3, [r1, r3]                                      |     
    0x00001c3c add ip, pc                                            |     ip = 0x3996;
    0x00001c3e ldr r3, [r3]                                          |     r3 = *(0x3986);
    0x00001c40 str r3, [sp, 0xa4]                                    |     var_a4h = r3;
    0x00001c42 mov.w r3, 0                                           |     r3 = 0;
    0x00001c46 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00001c48 beq 0x1d2c                                            |         goto label_2;
                                                                     |     }
    0x00001c4a ldr r6, [pc, 0x10c]                                   |     
    0x00001c4c mov r5, r0                                            |     r5 = r0;
    0x00001c4e ldr r3, [pc, 0x10c]                                   |     
    0x00001c50 str r0, [sp, 8]                                       |     var_8h = r0;
    0x00001c52 add r6, pc                                            |     r6 = 0x39b0;
    0x00001c54 str.w ip, [sp, 0x1c]                                  |     __asm ("str.w ip, [var_1ch]");
    0x00001c58 add r3, pc                                            |     r3 = 0x39ba;
    0x00001c5a mov r8, r6                                            |     r8 = r6;
    0x00001c5c str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x00001c5e b 0x1c66                                              |     
                                                                     |     while (r0 == 0) {
    0x00001c60 ldr r5, [r5, 4]                                       |         r5 = *((r5 + 4));
    0x00001c62 cmp r5, 0                                             |         
                                                                     |         if (r5 == 0) {
    0x00001c64 beq 0x1d2c                                            |             goto label_2;
                                                                     |         }
                                                                     | label_1:
    0x00001c66 ldr r4, [r5]                                          |         r4 = *(r5);
    0x00001c68 mov r1, r8                                            |         r1 = r8;
    0x00001c6a mov r0, r4                                            |         r0 = r4;
    0x00001c6c blx 0x17ec                                            |         fcn_000017ec ();
    0x00001c70 str r0, [sp, 0x20]                                    |         var_20h = r0;
    0x00001c72 cmp r0, 0                                             |         
    0x00001c74 beq 0x1c60                                            |         
                                                                     |     }
    0x00001c76 ldr r1, [pc, 0xe8]                                    |     
    0x00001c78 mov r0, r4                                            |     r0 = r4;
    0x00001c7a add r1, pc                                            |     r1 = 0x39e0;
    0x00001c7c blx 0x1518                                            |     r0 = fcn_00001518 ();
    0x00001c80 mov r3, r0                                            |     r3 = r0;
    0x00001c82 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00001c84 beq 0x1d10                                            |         goto label_3;
                                                                     |     }
    0x00001c86 ldr.w fp, [pc, 0xdc]                                  |     
    0x00001c8a mov r6, r0                                            |     r6 = r0;
    0x00001c8c ldr.w sl, [pc, 0xd8]                                  |     
    0x00001c90 add.w sb, sp, 0x24                                    |     sb += var_24h;
    0x00001c94 strd r0, r5, [sp, 0x10]                               |     __asm ("strd r0, r5, [var_10h]");
    0x00001c98 add fp, pc                                            |     fp = 0x3a02;
    0x00001c9a str.w r8, [sp, 0x18]                                  |     __asm ("str.w r8, [var_18h]");
    0x00001c9e add sl, pc                                            |     sl = 0x3a0a;
    0x00001ca0 b 0x1cd8                                              |     
                                                                     |     while (r0 != 1) {
    0x00001ca2 ldr r1, [sp, 0xc]                                     |         r1 = var_ch;
    0x00001ca4 movs r2, 0                                            |         r2 = 0;
    0x00001ca6 mov r0, r4                                            |         r0 = r4;
    0x00001ca8 blx 0x14dc                                            |         fcn_000014dc ();
    0x00001cac ldr r2, [pc, 0xbc]                                    |         
    0x00001cae mov r3, r8                                            |         r3 = r8;
    0x00001cb0 str r0, [sp]                                          |         *(sp) = r0;
    0x00001cb2 movs r1, 0x80                                         |         r1 = 0x80;
    0x00001cb4 mov r0, sb                                            |         r0 = sb;
    0x00001cb6 add r2, pc                                            |         r2 = 0x3a26;
    0x00001cb8 blx 0x1664                                            |         ipc_data_set_ipc_data_array ();
                                                                     | label_0:
    0x00001cbc ldr r2, [sp, 0x20]                                    |         r2 = var_20h;
    0x00001cbe mov r1, sb                                            |         r1 = sb;
    0x00001cc0 mov r0, r5                                            |         r0 = r5;
    0x00001cc2 blx 0x15b0                                            |         resource_get_default_interface ();
    0x00001cc6 ldr r2, [pc, 0xa8]                                    |         
    0x00001cc8 mov r1, r5                                            |         r1 = r5;
    0x00001cca ldr r0, [r7]                                          |         r0 = *(r7);
    0x00001ccc add r2, pc                                            |         r2 = 0x3a42;
    0x00001cce blx 0x1688                                            |         ipc_data_destroy ();
    0x00001cd2 str r0, [r7]                                          |         *(r7) = r0;
    0x00001cd4 ldr r6, [r6, 4]                                       |         r6 = *((r6 + 4));
                                                                     |         if (r6 == 0) {
    0x00001cd6 cbz r6, 0x1d08                                        |             goto label_4;
                                                                     |         }
    0x00001cd8 ldr.w r8, [r6]                                        |         r8 = *(r6);
    0x00001cdc blx 0x1588                                            |         fcn_00001588 ();
    0x00001ce0 mov r2, fp                                            |         r2 = fp;
    0x00001ce2 mov r1, sl                                            |         r1 = sl;
    0x00001ce4 mov r5, r0                                            |         r5 = r0;
    0x00001ce6 mov r0, r8                                            |         r0 = r8;
    0x00001ce8 blx 0x1804                                            |         fcn_00001804 ();
    0x00001cea stc p6, c4, [ip, 0x200]                               |         __asm ("stc p6, c4, [ip, 0x200]");
    0x00001cee ldr r0, [sp, 8]                                       |         r0 = var_8h;
    0x00001cf0 blx 0x15f8                                            |         r0 = resource_get_type ();
    0x00001cf4 cmp r0, 1                                             |         
    0x00001cf6 bne 0x1ca2                                            |         
                                                                     |     }
    0x00001cf8 ldr r2, [pc, 0x78]                                    |     
    0x00001cfa mov r3, r8                                            |     r3 = r8;
    0x00001cfc movs r1, 0x80                                         |     r1 = 0x80;
    0x00001cfe mov r0, sb                                            |     r0 = sb;
    0x00001d00 add r2, pc                                            |     r2 = 0x3a78;
    0x00001d02 blx 0x1664                                            |     ipc_data_set_ipc_data_array ();
    0x00001d06 b 0x1cbc                                              |     goto label_0;
                                                                     | label_4:
    0x00001d08 ldrd r3, r5, [sp, 0x10]                               |     __asm ("ldrd r3, r5, [var_10h]");
    0x00001d0c ldr.w r8, [sp, 0x18]                                  |     r8 = var_18h;
                                                                     | label_3:
    0x00001d10 ldr r2, [pc, 0x64]                                    |     r2 = *(0x1d78);
    0x00001d12 mov r0, r3                                            |     r0 = r3;
    0x00001d14 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x00001d16 ldr r3, [r3, r2]                                      |     r3 = *((r3 + r2));
    0x00001d18 mov r1, r3                                            |     r1 = r3;
    0x00001d1a str r3, [sp, 0x10]                                    |     var_10h = r3;
    0x00001d1c blx 0x1564                                            |     fcn_00001564 ();
    0x00001d20 add r0, sp, 0x20                                      |     r0 += var_20h;
    0x00001d22 blx 0x1694                                            |     resource_declare_interface_implementation ();
    0x00001d26 ldr r5, [r5, 4]                                       |     r5 = *((r5 + 4));
    0x00001d28 cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x00001d2a bne 0x1c66                                            |         goto label_1;
                                                                     |     }
                                                                     | label_2:
    0x00001d2c ldr r2, [pc, 0x4c]                                    |     
    0x00001d2e ldr r3, [pc, 0x20]                                    |     r3 = *(0x1d52);
    0x00001d30 add r2, pc                                            |     r2 = 0x3ab0;
    0x00001d32 ldr r3, [r2, r3]                                      |     r3 = *(0x3ab0);
    0x00001d34 ldr r2, [r3]                                          |     r2 = *(0x3ab0);
    0x00001d36 ldr r3, [sp, 0xa4]                                    |     r3 = var_a4h;
    0x00001d38 eors r2, r3                                           |     r2 ^= r3;
    0x00001d3a mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (r2 == r3) {
    0x00001d3e bne 0x1d46                                            |         
    0x00001d40 add sp, 0xac                                          |         
    0x00001d42 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     |     }
    0x00001d46 blx 0x1718                                            |     get_domain_context_from_system_registry ()
    0x00001d4a nop                                                   |     
    0x00001d4c rsbs r4, r1, 0                                        |     r4 = r1 - ;
    0x00001d4e movs r0, r0                                           |     
    0x00001d50 lsls r4, r6, 5                                        |     r4 = r6 << 5;
    0x00001d52 movs r0, r0                                           |     
    0x00001d54 rsbs r4, r0, 0                                        |     r4 = r0 - ;
    0x00001d56 movs r0, r0                                           |     
    0x00001d58 movs r1, 0x3e                                         |     r1 = 0x3e;
    0x00001d5a movs r0, r0                                           |     
    0x00001d5c movs r1, 0x34                                         |     r1 = 0x34;
    0x00001d5e movs r0, r0                                           |     
    0x00001d60 movs r1, 0x1e                                         |     r1 = 0x1e;
    0x00001d62 movs r0, r0                                           |     
    0x00001d64 movs r1, 8                                            |     r1 = 8;
    0x00001d66 movs r0, r0                                           |     
    0x00001d68 movs r1, 6                                            |     r1 = 6;
    0x00001d6a movs r0, r0                                           |     
    0x00001d6c movs r1, 2                                            |     r1 = 2;
    0x00001d6e movs r0, r0                                           |     
    0x00001d70 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/libpinchart-api.so.0.0.1 @ 0x22d4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000022d4 ()                                      | void fcn_000022d4 (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_4h_5;
                                                                 |     int16_t var_8h_4;
                                                                 |     int16_t var_ch_4;
                                                                 |     int16_t var_0h_3;
                                                                 |     int16_t var_4h_4;
                                                                 |     int16_t var_8h_3;
                                                                 |     int16_t var_ch_3;
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h_3;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10ch;
                                                                 |     int16_t var_20ch;
                                                                 |     int16_t var_214h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x000022d4 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x000022d8 mov r8, r2                                        |     r8 = r2;
    0x000022da ldr r2, [pc, 0xd4]                                |     
    0x000022dc mov sb, r3                                        |     sb = r3;
    0x000022de sub.w sp, sp, 0x214                               |     
    0x000022e2 mov r6, r0                                        |     r6 = r0;
    0x000022e4 ldr r3, [pc, 0xcc]                                |     r3 = *(0x23b4);
    0x000022e6 add r5, sp, 0xc                                   |     r5 += var_ch;
    0x000022e8 add r2, pc                                        |     r2 = 0x469e;
    0x000022ea add r4, sp, 4                                     |     r4 += var_4h;
    0x000022ec mov r0, r5                                        |     r0 = r5;
    0x000022ee mov r7, r1                                        |     r7 = r1;
    0x000022f0 ldr r3, [r2, r3]                                  |     
    0x000022f2 mov.w sl, 0                                       |     sl = 0;
    0x000022f6 ldr r2, [pc, 0xc0]                                |     
    0x000022f8 ldr r3, [r3]                                      |     r3 = *(0x469e);
    0x000022fa str r3, [sp, 0x20c]                               |     var_20ch = r3;
    0x000022fc mov.w r3, 0                                       |     r3 = 0;
    0x00002300 mov r3, r1                                        |     r3 = r1;
    0x00002302 add r2, pc                                        |     r2 = 0x46c0;
    0x00002304 mov.w r1, 0x100                                   |     r1 = 0x100;
    0x00002308 str.w sl, [r4]                                    |     __asm ("str.w sl, [r4]");
    0x0000230c blx 0x1664                                        |     ipc_data_set_ipc_data_array ();
    0x00002310 mov r0, r5                                        |     r0 = r5;
    0x00002312 ldr r1, [r6]                                      |     r1 = *(r6);
    0x00002314 mov r2, r4                                        |     r2 = r4;
    0x00002316 blx 0x174c                                        |     fcn_0000174c ();
    0x0000231a ldr r5, [r4]                                      |     r5 = *(r4);
                                                                 |     if (r5 == 0) {
    0x0000231c cbz r5, 0x2344                                    |         goto label_2;
                                                                 |     }
    0x0000231e mov r5, sl                                        |     r5 = sl;
                                                                 | label_0:
    0x00002320 mov r0, r4                                        |     r0 = r4;
    0x00002322 blx 0x1530                                        |     fcn_00001530 ();
                                                                 |     do {
    0x00002326 ldr r2, [pc, 0x94]                                |         
    0x00002328 ldr r3, [pc, 0x88]                                |         r3 = *(0x23b4);
    0x0000232a add r2, pc                                        |         r2 = 0x46ec;
    0x0000232c ldr r3, [r2, r3]                                  |         r3 = *(0x46ec);
    0x0000232e ldr r2, [r3]                                      |         r2 = *(0x46ec);
    0x00002330 ldr r3, [sp, 0x20c]                               |         r3 = var_20ch;
    0x00002332 eors r2, r3                                       |         r2 ^= r3;
    0x00002334 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00002338 bne 0x23ac                                        |             goto label_3;
                                                                 |         }
    0x0000233a mov r0, r5                                        |         r0 = r5;
    0x0000233c add.w sp, sp, 0x214                               |         
    0x00002340 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_2:
    0x00002344 mov r1, r8                                        |         r1 = r8;
    0x00002346 mov r3, r4                                        |         r3 = r4;
    0x00002348 ldr r2, [r6]                                      |         r2 = *(r6);
    0x0000234a mov fp, r0                                        |         
    0x0000234c blx 0x16d0                                        |         ipc_data_get_integer_array ();
    0x00002350 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00002352 mov r8, r0                                        |         r8 = r0;
                                                                 |         if (r3 == 0) {
    0x00002354 cbz r3, 0x2364                                    |             goto label_4;
                                                                 |         }
                                                                 | label_1:
    0x00002356 mov r0, fp                                        |         r0 = fp;
    0x00002358 blx 0x14f4                                        |         fcn_000014f4 ();
    0x0000235c ldr r3, [r4]                                      |         r3 = *(r4);
    0x0000235e cmp r3, 0                                         |         
    0x00002360 beq 0x2326                                        |         
                                                                 |     } while (r3 == 0);
    0x00002362 b 0x2320                                          |     goto label_0;
                                                                 | label_4:
    0x00002364 ldr r2, [pc, 0x58]                                |     
    0x00002366 mov r3, r7                                        |     r3 = r7;
    0x00002368 add r7, sp, 0x10c                                 |     r7 += var_10ch;
    0x0000236a mov.w r1, 0x100                                   |     r1 = 0x100;
    0x0000236e mov r0, r7                                        |     r0 = r7;
    0x00002370 add r2, pc                                        |     r2 = 0x4734;
    0x00002372 blx 0x1664                                        |     ipc_data_set_ipc_data_array ();
    0x00002376 mov r2, r5                                        |     r2 = r5;
    0x00002378 mov r1, r7                                        |     r1 = r7;
    0x0000237a mov r0, sb                                        |     r0 = sb;
    0x0000237c add r7, sp, 8                                     |     r7 += var_8h;
    0x0000237e blx 0x15e0                                        |     ipc_data_set_integer ();
    0x00002382 str r0, [sp, 8]                                   |     var_8h = r0;
    0x00002384 blx 0x1604                                        |     r0 = resource_get_domain ();
    0x00002388 mov r1, r0                                        |     r1 = r0;
    0x0000238a mov r0, r8                                        |     r0 = r8;
    0x0000238c blx 0x170c                                        |     stack_chk_fail ();
    0x00002390 ldr r3, [pc, 0x30]                                |     
    0x00002392 ldr r1, [r6]                                      |     r1 = *(r6);
    0x00002394 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x00002396 add r3, pc                                        |     r3 = 0x475e;
    0x00002398 blx 0x164c                                        |     r0 = domain_pinchart_get_type ();
    0x0000239c mov r5, r0                                        |     r5 = r0;
    0x0000239e mov r0, r7                                        |     r0 = r7;
    0x000023a0 blx 0x16e8                                        |     ipc_data_get_value_array ();
    0x000023a4 mov r0, r8                                        |     r0 = r8;
    0x000023a6 blx 0x14f4                                        |     fcn_000014f4 ();
    0x000023aa b 0x2356                                          |     goto label_1;
                                                                 | label_3:
    0x000023ac blx 0x1718                                        |     get_domain_context_from_system_registry ()
    0x000023b0 subs r3, 0x98                                     |     r3 -= 0x98;
    0x000023b2 movs r0, r0                                       |     
    0x000023b4 lsls r4, r6, 5                                    |     r4 = r6 << 5;
    0x000023b6 movs r0, r0                                       |     
    0x000023b8 subs r2, r0, r7                                   |     r2 = r0 - r7;
    0x000023ba movs r0, r0                                       |     
    0x000023bc subs r3, 0x56                                     |     r3 -= 0x56;
    0x000023be movs r0, r0                                       |     
    0x000023c0 subs r0, r3, r5                                   |     r0 = r3 - r5;
    0x000023c2 movs r0, r0                                       |     
    0x000023c4 subs r6, r2, r1                                   |     r6 = r2 - r1;
    0x000023c6 movs r0, r0                                       |     
    0x000023c8 push {r4, r5, lr}                                 |     
    0x000023ca mov r5, r1                                        |     r5 = r1;
    0x000023cc ldr.w ip, [pc, 0x78]                              |     
    0x000023d0 mov r4, r2                                        |     r4 = r2;
    0x000023d2 mov r2, r5                                        |     r2 = r5;
    0x000023d4 sub sp, 0xc                                       |     
    0x000023d6 ldr r5, [pc, 0x74]                                |     r5 = *(0x244e);
    0x000023d8 add ip, pc                                        |     ip = 0x4824;
    0x000023da ldr r3, [pc, 0x74]                                |     
    0x000023dc ldr r1, [pc, 0x74]                                |     
    0x000023de ldr.w r5, [ip, r5]                                |     
    0x000023e2 add r3, pc                                        |     r3 = 0x4838;
    0x000023e4 add r1, pc                                        |     r1 = 0x483c;
    0x000023e6 ldr r5, [r5]                                      |     r5 = *(0x4824);
    0x000023e8 str r5, [sp, 4]                                   |     var_4h_2 = r5;
    0x000023ea mov.w r5, 0                                       |     r5 = 0;
    0x000023ee bl 0x22d4                                         |     fcn_000022d4 (r0, r1, r2, r3, r4);
    0x000023f2 str r0, [sp]                                      |     *(sp) = r0;
                                                                 |     if (r0 != 0) {
    0x000023f4 cbz r0, 0x242c                                    |         
    0x000023f6 ldr r5, [pc, 0x60]                                |         
    0x000023f8 ldr r2, [pc, 0x60]                                |         
    0x000023fa add r5, pc                                        |         r5 = 0x4858;
    0x000023fc mov r1, r5                                        |         r1 = r5;
    0x000023fe add r2, pc                                        |         r2 = 0x485e;
    0x00002400 blx 0x1804                                        |         fcn_00001804 ();
    0x00002404 mov r1, r5                                        |         r1 = r5;
    0x00002406 ldr r5, [pc, 0x58]                                |         
    0x00002408 mov r2, r0                                        |         r2 = r0;
    0x0000240a mov r0, r4                                        |         r0 = r4;
    0x0000240c blx 0x14a0                                        |         fcn_000014a0 ();
    0x00002410 add r5, pc                                        |         r5 = 0x4876;
    0x00002412 movs r2, 0                                        |         r2 = 0;
    0x00002414 mov r1, r5                                        |         r1 = r5;
    0x00002416 ldr r0, [sp]                                      |         r0 = *(sp);
    0x00002418 blx 0x14dc                                        |         fcn_000014dc ();
    0x0000241c mov r1, r5                                        |         r1 = r5;
    0x0000241e mov r2, r0                                        |         r2 = r0;
    0x00002420 mov r0, r4                                        |         r0 = r4;
    0x00002422 blx 0x15ec                                        |         g_list_length ();
    0x00002426 mov r0, sp                                        |         r0 = sp;
    0x00002428 blx 0x1694                                        |         resource_declare_interface_implementation ();
                                                                 |     }
    0x0000242c ldr r2, [pc, 0x34]                                |     
    0x0000242e ldr r3, [pc, 0x1c]                                |     r3 = *(0x244e);
    0x00002430 add r2, pc                                        |     r2 = 0x4898;
    0x00002432 ldr r3, [r2, r3]                                  |     r3 = *(0x4898);
    0x00002434 ldr r2, [r3]                                      |     r2 = *(0x4898);
    0x00002436 ldr r3, [sp, 4]                                   |     r3 = var_4h_2;
    0x00002438 eors r2, r3                                       |     r2 ^= r3;
    0x0000243a mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x0000243e bne 0x2444                                        |         
    0x00002440 add sp, 0xc                                       |         
    0x00002442 pop {r4, r5, pc}                                  |         
                                                                 |     }
    0x00002444 blx 0x1718                                        |     get_domain_context_from_system_registry ()
    0x00002448 subs r2, 0xa8                                     |     r2 -= 0xa8;
    0x0000244a movs r0, r0                                       |     
    0x0000244c lsls r4, r6, 5                                    |     r4 = r6 << 5;
    0x0000244e movs r0, r0                                       |     
    0x00002450 adds r2, r7, r4                                   |     r2 = r7 + r4;
    0x00002452 movs r0, r0                                       |     
    0x00002454 subs r0, r6, r3                                   |     r0 = r6 - r3;
    0x00002456 movs r0, r0                                       |     
    0x00002458 adds r2, r5, r6                                   |     r2 = r5 + r6;
    0x0000245a movs r0, r0                                       |     
    0x0000245c adds r2, r4, r6                                   |     r2 = r4 + r6;
    0x0000245e movs r0, r0                                       |     
    0x00002460 subs r0, r1, r3                                   |     r0 = r1 - r3;
    0x00002462 movs r0, r0                                       |     
    0x00002464 subs r2, 0x50                                     |     r2 -= 0x50;
    0x00002466 movs r0, r0                                       |     
    0x00002468 ldr r2, [pc, 0x104]                               |     
    0x0000246a ldr r3, [pc, 0x108]                               |     r3 = *(0x2576);
    0x0000246c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00002470 sub sp, 0x14                                      |     
    0x00002472 add r2, pc                                        |     r2 = 0x49e6;
    0x00002474 mov r4, r0                                        |     r4 = r0;
    0x00002476 mov r7, r1                                        |     r7 = r1;
    0x00002478 ldr r3, [r2, r3]                                  |     
    0x0000247a ldr.w fp, [pc, 0xfc]                              |     
    0x0000247e ldr r3, [r3]                                      |     r3 = *(0x49e6);
    0x00002480 str r3, [sp, 0xc]                                 |     var_ch_2 = r3;
    0x00002482 mov.w r3, 0                                       |     r3 = 0;
    0x00002486 blx 0x1588                                        |     fcn_00001588 ();
    0x0000248a ldr r1, [pc, 0xf0]                                |     
    0x0000248c mov r8, r0                                        |     r8 = r0;
    0x0000248e ldr r0, [pc, 0xf0]                                |     
    0x00002490 movs r2, 0                                        |     r2 = 0;
    0x00002492 add fp, pc                                        |     fp = 0x4a10;
    0x00002494 add r1, pc                                        |     r1 = 0x4a16;
    0x00002496 add r0, pc                                        |     r0 = 0x4a1c;
    0x00002498 blx 0x15e0                                        |     ipc_data_set_integer ();
    0x0000249c str r0, [sp, 8]                                   |     var_8h_2 = r0;
    0x0000249e blx 0x1604                                        |     r0 = resource_get_domain ();
    0x000024a2 mov r1, r0                                        |     r1 = r0;
    0x000024a4 mov r0, r4                                        |     r0 = r4;
    0x000024a6 blx 0x170c                                        |     stack_chk_fail ();
    0x000024aa ldr r3, [pc, 0xd8]                                |     
    0x000024ac ldr r2, [sp, 8]                                   |     r2 = var_8h_2;
    0x000024ae ldr r1, [r7]                                      |     r1 = *(r7);
    0x000024b0 add r3, pc                                        |     r3 = 0x4a3a;
    0x000024b2 blx 0x1570                                        |     r0 = fcn_00001570 ();
    0x000024b6 mov r4, r0                                        |     r4 = r0;
    0x000024b8 str r0, [sp]                                      |     *(sp) = r0;
    0x000024ba add r0, sp, 8                                     |     r0 += var_8h_2;
    0x000024bc blx 0x16e8                                        |     ipc_data_get_value_array ();
    0x000024c0 mov r0, r4                                        |     r0 = r4;
    0x000024c2 ldr r4, [pc, 0xc4]                                |     
    0x000024c4 blx 0x17f8                                        |     fcn_000017f8 ();
    0x000024c8 ldr r1, [pc, 0xc0]                                |     
    0x000024ca mov r5, r0                                        |     r5 = r0;
    0x000024cc add r4, pc                                        |     r4 = 0x4a5a;
    0x000024ce add r1, pc                                        |     r1 = 0x4a5e;
    0x000024d0 blx 0x16dc                                        |     interface_definition_destroy ();
    0x000024d4 movs r2, 0                                        |     r2 = 0;
    0x000024d6 mov sb, r0                                        |     sb = r0;
    0x000024d8 mov r1, r4                                        |     r1 = r4;
    0x000024da mov r0, r5                                        |     r0 = r5;
    0x000024dc blx 0x14dc                                        |     fcn_000014dc ();
    0x000024e0 mov r1, r4                                        |     r1 = r4;
    0x000024e2 mov r2, r0                                        |     r2 = r0;
    0x000024e4 mov r0, r8                                        |     r0 = r8;
    0x000024e6 blx 0x15ec                                        |     g_list_length ();
    0x000024ea cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x000024ee beq 0x2566                                        |         goto label_5;
                                                                 |     }
    0x000024f0 mov r6, sb                                        |     r6 = sb;
    0x000024f2 movs r5, 0                                        |     r5 = 0;
                                                                 |     do {
    0x000024f4 ldr.w sl, [r6]                                    |         sl = *(r6);
    0x000024f8 blx 0x1588                                        |         r0 = fcn_00001588 ();
    0x000024fc mov r4, r0                                        |         r4 = r0;
    0x000024fe mov r0, r7                                        |         r0 = r7;
    0x00002500 mov r2, r4                                        |         r2 = r4;
    0x00002502 mov r1, sl                                        |         r1 = sl;
    0x00002504 bl 0x23c8                                         |         void (*0x23c8)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4);
    0x00002508 mov r0, r5                                        |         r0 = r5;
    0x0000250a mov r1, r4                                        |         r1 = r4;
    0x0000250c blx 0x1788                                        |         fcn_00001788 ();
    0x00002510 ldr r6, [r6, 4]                                   |         r6 = *((r6 + 4));
    0x00002512 mov r5, r0                                        |         r5 = r0;
    0x00002514 cmp r6, 0                                         |         
    0x00002516 bne 0x24f4                                        |         
                                                                 |     } while (r6 != 0);
                                                                 |     do {
    0x00002518 ldr r1, [pc, 0x74]                                |         
    0x0000251a mov r2, r5                                        |         r2 = r5;
    0x0000251c mov r0, r8                                        |         r0 = r8;
    0x0000251e add r1, pc                                        |         r1 = 0x4ab2;
    0x00002520 blx 0x1670                                        |         resource_conf_view_update ();
    0x00002524 ldr r3, [pc, 0x6c]                                |         r3 = *(0x2594);
    0x00002526 mov r0, r5                                        |         r0 = r5;
    0x00002528 ldr.w r3, [fp, r3]                                |         r3 = *((fp + r3));
    0x0000252c mov r1, r3                                        |         r1 = r3;
    0x0000252e str r3, [sp, 4]                                   |         var_4h_3 = r3;
    0x00002530 blx 0x1564                                        |         fcn_00001564 ();
    0x00002534 mov r1, r8                                        |         r1 = r8;
    0x00002536 ldr r0, [r7, 0x14]                                |         r0 = *((r7 + 0x14));
    0x00002538 blx 0x1788                                        |         fcn_00001788 ();
    0x0000253c str r0, [r7, 0x14]                                |         *((r7 + 0x14)) = r0;
    0x0000253e ldr r0, [sp]                                      |         r0 = *(sp);
    0x00002540 blx 0x14f4                                        |         fcn_000014f4 ();
    0x00002544 mov r0, sb                                        |         r0 = sb;
    0x00002546 blx 0x1548                                        |         fcn_00001548 ();
    0x0000254a ldr r2, [pc, 0x4c]                                |         
    0x0000254c ldr r3, [pc, 0x24]                                |         r3 = *(0x2574);
    0x0000254e add r2, pc                                        |         r2 = 0x4aec;
    0x00002550 ldr r3, [r2, r3]                                  |         r3 = *(0x4aec);
    0x00002552 ldr r2, [r3]                                      |         r2 = *(0x4aec);
    0x00002554 ldr r3, [sp, 0xc]                                 |         r3 = var_ch_2;
    0x00002556 eors r2, r3                                       |         r2 ^= r3;
    0x00002558 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000255c bne 0x256a                                        |             goto label_6;
                                                                 |         }
    0x0000255e movs r0, 1                                        |         r0 = 1;
    0x00002560 add sp, 0x14                                      |         
    0x00002562 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_5:
    0x00002566 mov r5, sb                                        |         r5 = sb;
    0x00002568 b 0x2518                                          |         
                                                                 |     } while (1);
                                                                 | label_6:
    0x0000256a blx 0x1718                                        |     get_domain_context_from_system_registry ()
    0x0000256e nop                                               |     
    0x00002570 subs r2, 0xe                                      |     r2 -= 0xe;
    0x00002572 movs r0, r0                                       |     
    0x00002574 lsls r4, r6, 5                                    |     r4 = r6 << 5;
    0x00002576 movs r0, r0                                       |     
    0x00002578 subs r1, 0xee                                     |     r1 -= 0xee;
    0x0000257a movs r0, r0                                       |     
    0x0000257c subs r0, r2, r1                                   |     r0 = r2 - r1;
    0x0000257e movs r0, r0                                       |     
    0x00002580 adds r6, r0, r2                                   |     r6 = r0 + r2;
    0x00002582 movs r0, r0                                       |     
    0x00002584 adds r4, r7, r4                                   |     r4 = r7 + r4;
    0x00002586 movs r0, r0                                       |     
    0x00002588 adds r0, r0, r3                                   |     r0 += r3;
    0x0000258a movs r0, r0                                       |     
    0x0000258c subs r2, r5, r0                                   |     r2 = r5 - r0;
    0x0000258e movs r0, r0                                       |     
    0x00002590 adds r2, r7, r1                                   |     r2 = r7 + r1;
    0x00002592 movs r0, r0                                       |     
    0x00002594 lsls r0, r5, 5                                    |     r0 = r5 << 5;
    0x00002596 movs r0, r0                                       |     
    0x00002598 subs r1, 0x32                                     |     r1 -= 0x32;
    0x0000259a movs r0, r0                                       |     
    0x0000259c ldr r2, [pc, 0x104]                               |     
    0x0000259e ldr r3, [pc, 0x108]                               |     r3 = *(0x26aa);
    0x000025a0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000025a4 sub sp, 0x14                                      |     
    0x000025a6 add r2, pc                                        |     r2 = 0x4c4e;
    0x000025a8 mov r4, r0                                        |     r4 = r0;
    0x000025aa mov r7, r1                                        |     r7 = r1;
    0x000025ac ldr r3, [r2, r3]                                  |     
    0x000025ae ldr.w fp, [pc, 0xfc]                              |     
    0x000025b2 ldr r3, [r3]                                      |     r3 = *(0x4c4e);
    0x000025b4 str r3, [sp, 0xc]                                 |     var_ch_3 = r3;
    0x000025b6 mov.w r3, 0                                       |     r3 = 0;
    0x000025ba blx 0x1588                                        |     fcn_00001588 ();
    0x000025be ldr r1, [pc, 0xf0]                                |     
    0x000025c0 mov r8, r0                                        |     r8 = r0;
    0x000025c2 ldr r0, [pc, 0xf0]                                |     
    0x000025c4 movs r2, 0                                        |     r2 = 0;
    0x000025c6 add fp, pc                                        |     fp = 0x4c78;
    0x000025c8 add r1, pc                                        |     r1 = 0x4c7e;
    0x000025ca add r0, pc                                        |     r0 = 0x4c84;
    0x000025cc blx 0x15e0                                        |     ipc_data_set_integer ();
    0x000025d0 str r0, [sp, 8]                                   |     var_8h_3 = r0;
    0x000025d2 blx 0x1604                                        |     r0 = resource_get_domain ();
    0x000025d6 mov r1, r0                                        |     r1 = r0;
    0x000025d8 mov r0, r4                                        |     r0 = r4;
    0x000025da blx 0x170c                                        |     stack_chk_fail ();
    0x000025de ldr r3, [pc, 0xd8]                                |     
    0x000025e0 ldr r2, [sp, 8]                                   |     r2 = var_8h_3;
    0x000025e2 ldr r1, [r7]                                      |     r1 = *(r7);
    0x000025e4 add r3, pc                                        |     r3 = 0x4ca2;
    0x000025e6 blx 0x1570                                        |     r0 = fcn_00001570 ();
    0x000025ea mov r4, r0                                        |     r4 = r0;
    0x000025ec str r0, [sp]                                      |     *(sp) = r0;
    0x000025ee add r0, sp, 8                                     |     r0 += var_8h_3;
    0x000025f0 blx 0x16e8                                        |     ipc_data_get_value_array ();
    0x000025f4 mov r0, r4                                        |     r0 = r4;
    0x000025f6 ldr r4, [pc, 0xc4]                                |     
    0x000025f8 blx 0x17f8                                        |     fcn_000017f8 ();
    0x000025fc ldr r1, [pc, 0xc0]                                |     
    0x000025fe mov r5, r0                                        |     r5 = r0;
    0x00002600 add r4, pc                                        |     r4 = 0x4cc2;
    0x00002602 add r1, pc                                        |     r1 = 0x4cc6;
    0x00002604 blx 0x16dc                                        |     interface_definition_destroy ();
    0x00002608 movs r2, 0                                        |     r2 = 0;
    0x0000260a mov sb, r0                                        |     sb = r0;
    0x0000260c mov r1, r4                                        |     r1 = r4;
    0x0000260e mov r0, r5                                        |     r0 = r5;
    0x00002610 blx 0x14dc                                        |     fcn_000014dc ();
    0x00002614 mov r1, r4                                        |     r1 = r4;
    0x00002616 mov r2, r0                                        |     r2 = r0;
    0x00002618 mov r0, r8                                        |     r0 = r8;
    0x0000261a blx 0x15ec                                        |     g_list_length ();
    0x0000261e cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00002622 beq 0x269a                                        |         goto label_7;
                                                                 |     }
    0x00002624 mov r6, sb                                        |     r6 = sb;
    0x00002626 movs r5, 0                                        |     r5 = 0;
                                                                 |     do {
    0x00002628 ldr.w sl, [r6]                                    |         sl = *(r6);
    0x0000262c blx 0x1588                                        |         r0 = fcn_00001588 ();
    0x00002630 mov r4, r0                                        |         r4 = r0;
    0x00002632 mov r0, r7                                        |         r0 = r7;
    0x00002634 mov r2, r4                                        |         r2 = r4;
    0x00002636 mov r1, sl                                        |         r1 = sl;
    0x00002638 bl 0x23c8                                         |         void (*0x23c8)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4);
    0x0000263c mov r0, r5                                        |         r0 = r5;
    0x0000263e mov r1, r4                                        |         r1 = r4;
    0x00002640 blx 0x1788                                        |         fcn_00001788 ();
    0x00002644 ldr r6, [r6, 4]                                   |         r6 = *((r6 + 4));
    0x00002646 mov r5, r0                                        |         r5 = r0;
    0x00002648 cmp r6, 0                                         |         
    0x0000264a bne 0x2628                                        |         
                                                                 |     } while (r6 != 0);
                                                                 |     do {
    0x0000264c ldr r1, [pc, 0x74]                                |         
    0x0000264e mov r2, r5                                        |         r2 = r5;
    0x00002650 mov r0, r8                                        |         r0 = r8;
    0x00002652 add r1, pc                                        |         r1 = 0x4d1a;
    0x00002654 blx 0x1670                                        |         resource_conf_view_update ();
    0x00002658 ldr r3, [pc, 0x6c]                                |         r3 = *(0x26c8);
    0x0000265a mov r0, r5                                        |         r0 = r5;
    0x0000265c ldr.w r3, [fp, r3]                                |         r3 = *((fp + r3));
    0x00002660 mov r1, r3                                        |         r1 = r3;
    0x00002662 str r3, [sp, 4]                                   |         var_4h_4 = r3;
    0x00002664 blx 0x1564                                        |         fcn_00001564 ();
    0x00002668 mov r1, r8                                        |         r1 = r8;
    0x0000266a ldr r0, [r7, 0x10]                                |         r0 = *((r7 + 0x10));
    0x0000266c blx 0x1788                                        |         fcn_00001788 ();
    0x00002670 str r0, [r7, 0x10]                                |         *((r7 + 0x10)) = r0;
    0x00002672 ldr r0, [sp]                                      |         r0 = *(sp);
    0x00002674 blx 0x14f4                                        |         fcn_000014f4 ();
    0x00002678 mov r0, sb                                        |         r0 = sb;
    0x0000267a blx 0x1548                                        |         fcn_00001548 ();
    0x0000267e ldr r2, [pc, 0x4c]                                |         
    0x00002680 ldr r3, [pc, 0x24]                                |         r3 = *(0x26a8);
    0x00002682 add r2, pc                                        |         r2 = 0x4d54;
    0x00002684 ldr r3, [r2, r3]                                  |         r3 = *(0x4d54);
    0x00002686 ldr r2, [r3]                                      |         r2 = *(0x4d54);
    0x00002688 ldr r3, [sp, 0xc]                                 |         r3 = var_ch_3;
    0x0000268a eors r2, r3                                       |         r2 ^= r3;
    0x0000268c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00002690 bne 0x269e                                        |             goto label_8;
                                                                 |         }
    0x00002692 movs r0, 1                                        |         r0 = 1;
    0x00002694 add sp, 0x14                                      |         
    0x00002696 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_7:
    0x0000269a mov r5, sb                                        |         r5 = sb;
    0x0000269c b 0x264c                                          |         
                                                                 |     } while (1);
                                                                 | label_8:
    0x0000269e blx 0x1718                                        |     get_domain_context_from_system_registry ()
    0x000026a2 nop                                               |     
    0x000026a4 subs r0, 0xda                                     |     r0 -= 0xda;
    0x000026a6 movs r0, r0                                       |     
    0x000026a8 lsls r4, r6, 5                                    |     r4 = r6 << 5;
    0x000026aa movs r0, r0                                       |     
    0x000026ac subs r0, 0xba                                     |     r0 -= 0xba;
    0x000026ae movs r0, r0                                       |     
    0x000026b0 adds r0, r7, r4                                   |     r0 = r7 + r4;
    0x000026b2 movs r0, r0                                       |     
    0x000026b4 asrs r2, r2, 0x1d                                 |     r2 >>= 0x1d;
    0x000026b6 movs r0, r0                                       |     
    0x000026b8 adds r0, r1, r0                                   |     r0 = r1 + r0;
    0x000026ba movs r0, r0                                       |     
    0x000026bc asrs r4, r1, 0x1e                                 |     r4 = r1 >> 0x1e;
    0x000026be movs r0, r0                                       |     
    0x000026c0 adds r6, r6, r3                                   |     r6 += r3;
    0x000026c2 movs r0, r0                                       |     
    0x000026c4 asrs r6, r0, 0x1d                                 |     r6 = r0 >> 0x1d;
    0x000026c6 movs r0, r0                                       |     
    0x000026c8 lsls r0, r5, 5                                    |     r0 = r5 << 5;
    0x000026ca movs r0, r0                                       |     
    0x000026cc adds r7, 0xfe                                     |     r7 += 0xfe;
    0x000026ce movs r0, r0                                       |     
    0x000026d0 ldr r2, [pc, 0xdc]                                |     
    0x000026d2 ldr r3, [pc, 0xe0]                                |     r3 = *(0x27b6);
    0x000026d4 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x000026d8 sub sp, 0x10                                      |     
    0x000026da add r2, pc                                        |     r2 = 0x4e8e;
    0x000026dc ldr.w r8, [pc, 0xd8]                              |     
    0x000026e0 mov r4, r1                                        |     r4 = r1;
    0x000026e2 mov r6, r0                                        |     r6 = r0;
    0x000026e4 ldr r3, [r2, r3]                                  |     
    0x000026e6 add r8, pc                                        |     r8 = 0x4ea2;
    0x000026e8 ldr.w sb, [pc, 0xd0]                              |     
    0x000026ec ldr r7, [pc, 0xd0]                                |     
    0x000026ee ldr r3, [r3]                                      |     r3 = *(0x4e8e);
    0x000026f0 str r3, [sp, 0xc]                                 |     var_ch_4 = r3;
    0x000026f2 mov.w r3, 0                                       |     r3 = 0;
    0x000026f6 blx 0x1588                                        |     fcn_00001588 ();
    0x000026fa ldr r1, [pc, 0xc8]                                |     
    0x000026fc movs r2, 0                                        |     r2 = 0;
    0x000026fe mov r5, r0                                        |     r5 = r0;
    0x00002700 mov r0, r8                                        |     r0 = r8;
    0x00002702 add sb, pc                                        |     sb = 0x4ec2;
    0x00002704 add r7, pc                                        |     r7 = 0x4ec8;
    0x00002706 add r1, pc                                        |     r1 = 0x4ed0;
    0x00002708 blx 0x15e0                                        |     ipc_data_set_integer ();
    0x0000270c str r0, [sp, 4]                                   |     var_4h_5 = r0;
    0x0000270e blx 0x1604                                        |     r0 = resource_get_domain ();
    0x00002712 mov r1, r0                                        |     r1 = r0;
    0x00002714 mov r0, r6                                        |     r0 = r6;
    0x00002716 blx 0x170c                                        |     stack_chk_fail ();
    0x0000271a ldr r3, [pc, 0xac]                                |     
    0x0000271c ldr r2, [sp, 4]                                   |     r2 = var_4h_5;
    0x0000271e ldr r1, [r4]                                      |     r1 = *(r4);
    0x00002720 add r3, pc                                        |     r3 = 0x4eee;
    0x00002722 blx 0x1570                                        |     r0 = fcn_00001570 ();
    0x00002726 mov r6, r0                                        |     r6 = r0;
    0x00002728 add r0, sp, 4                                     |     r0 += var_4h_5;
    0x0000272a blx 0x16e8                                        |     ipc_data_get_value_array ();
    0x0000272e mov r0, r6                                        |     r0 = r6;
    0x00002730 blx 0x17f8                                        |     fcn_000017f8 ();
    0x00002734 movs r2, 0                                        |     r2 = 0;
    0x00002736 mov r1, sb                                        |     r1 = sb;
    0x00002738 mov sl, r0                                        |     sl = r0;
    0x0000273a blx 0x14dc                                        |     fcn_000014dc ();
    0x0000273e mov r1, sb                                        |     r1 = sb;
    0x00002740 mov r2, r0                                        |     r2 = r0;
    0x00002742 mov r0, r5                                        |     r0 = r5;
    0x00002744 blx 0x15ec                                        |     g_list_length ();
    0x00002748 ldr r1, [pc, 0x80]                                |     
    0x0000274a movs r2, 0                                        |     r2 = 0;
    0x0000274c mov r0, sl                                        |     r0 = sl;
    0x0000274e add r1, pc                                        |     r1 = 0x4f1e;
    0x00002750 blx 0x14dc                                        |     fcn_000014dc ();
    0x00002754 ldr r1, [pc, 0x78]                                |     
    0x00002756 mov r3, r8                                        |     r3 = r8;
    0x00002758 mov r2, r0                                        |     r2 = r0;
    0x0000275a mov r0, r4                                        |     r0 = r4;
    0x0000275c add r1, pc                                        |     r1 = 0x4f30;
    0x0000275e bl 0x22d4                                         |     fcn_000022d4 (r0, r1, r2, r3, r4);
    0x00002762 ldr r2, [pc, 0x70]                                |     
    0x00002764 mov r1, r7                                        |     r1 = r7;
    0x00002766 str r0, [sp, 8]                                   |     var_8h_4 = r0;
    0x00002768 add r2, pc                                        |     r2 = 0x4f42;
    0x0000276a blx 0x1804                                        |     fcn_00001804 ();
    0x0000276e mov r1, r7                                        |     r1 = r7;
    0x00002770 mov r2, r0                                        |     r2 = r0;
    0x00002772 mov r0, r5                                        |     r0 = r5;
    0x00002774 blx 0x14a0                                        |     fcn_000014a0 ();
    0x00002778 add r0, sp, 8                                     |     r0 += var_8h_4;
    0x0000277a blx 0x1694                                        |     resource_declare_interface_implementation ();
    0x0000277e mov r1, r5                                        |     r1 = r5;
    0x00002780 ldr r0, [r4, 8]                                   |     r0 = *((r4 + 8));
    0x00002782 blx 0x1788                                        |     fcn_00001788 ();
    0x00002786 str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x00002788 mov r0, r6                                        |     r0 = r6;
    0x0000278a blx 0x14f4                                        |     fcn_000014f4 ();
    0x0000278e ldr r2, [pc, 0x48]                                |     
    0x00002790 ldr r3, [pc, 0x20]                                |     r3 = *(0x27b4);
    0x00002792 add r2, pc                                        |     r2 = 0x4f70;
    0x00002794 ldr r3, [r2, r3]                                  |     r3 = *(0x4f70);
    0x00002796 ldr r2, [r3]                                      |     r2 = *(0x4f70);
    0x00002798 ldr r3, [sp, 0xc]                                 |     r3 = var_ch_4;
    0x0000279a eors r2, r3                                       |     r2 ^= r3;
    0x0000279c mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x000027a0 bne 0x27aa                                        |         
    0x000027a2 movs r0, 1                                        |         r0 = 1;
    0x000027a4 add sp, 0x10                                      |         
    0x000027a6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 |     }
    0x000027aa blx 0x1718                                        |     get_domain_context_from_system_registry ()
    0x000027ae nop                                               |     
    0x000027b0 adds r7, 0xa6                                     |     r7 += 0xa6;
    0x000027b2 movs r0, r0                                       |     
    0x000027b4 lsls r4, r6, 5                                    |     r4 = r6 << 5;
    0x000027b6 movs r0, r0                                       |     
    0x000027b8 asrs r6, r6, 0x18                                 |     r6 >>= 0x18;
    0x000027ba movs r0, r0                                       |     
    0x000027bc asrs r2, r1, 0x1a                                 |     r2 = r1 >> 0x1a;
    0x000027be movs r0, r0                                       |     
    0x000027c0 asrs r0, r4, 0x1a                                 |     r0 = r4 >> 0x1a;
    0x000027c2 movs r0, r0                                       |     
    0x000027c4 adds r2, r2, r0                                   |     r2 += r0;
    0x000027c6 movs r0, r0                                       |     
    0x000027c8 asrs r4, r1, 0x1b                                 |     r4 = r1 >> 0x1b;
    0x000027ca movs r0, r0                                       |     
    0x000027cc asrs r6, r2, 0x1f                                 |     r6 = r2 >> 0x1f;
    0x000027ce movs r0, r0                                       |     
    0x000027d0 asrs r0, r7, 0x1d                                 |     r0 = r7 >> 0x1d;
    0x000027d2 movs r0, r0                                       |     
    0x000027d4 asrs r0, r7, 0x18                                 |     r0 = r7 >> 0x18;
    0x000027d6 movs r0, r0                                       |     
    0x000027d8 adds r6, 0xee                                     |     r6 += 0xee;
    0x000027da 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/libpinchart-api.so.0.0.1 @ 0x27dc */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000027dc ()                                  | void fcn_000027dc (int16_t arg1, char * arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_4h_6;
                                                             |     int16_t var_8h_5;
                                                             |     int16_t var_ch_5;
                                                             |     int16_t var_10ch_2;
                                                             |     int16_t var_20ch_2;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x000027dc svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x000027e0 mov r8, r2                                    |     r8 = r2;
    0x000027e2 ldr r2, [pc, 0xd4]                            |     
    0x000027e4 mov sb, r3                                    |     sb = r3;
    0x000027e6 sub.w sp, sp, 0x214                           |     
    0x000027ea mov r6, r0                                    |     r6 = r0;
    0x000027ec ldr r3, [pc, 0xcc]                            |     r3 = *(0x28bc);
    0x000027ee add r5, sp, 0xc                               |     r5 += var_ch_5;
    0x000027f0 add r2, pc                                    |     r2 = 0x50ae;
    0x000027f2 add r4, sp, 4                                 |     r4 += var_4h_6;
    0x000027f4 mov r0, r5                                    |     r0 = r5;
    0x000027f6 mov r7, r1                                    |     r7 = r1;
    0x000027f8 ldr r3, [r2, r3]                              |     
    0x000027fa mov.w sl, 0                                   |     sl = 0;
    0x000027fe ldr r2, [pc, 0xc0]                            |     
    0x00002800 ldr r3, [r3]                                  |     r3 = *(0x50ae);
    0x00002802 str r3, [sp, 0x20c]                           |     var_20ch_2 = r3;
    0x00002804 mov.w r3, 0                                   |     r3 = 0;
    0x00002808 mov r3, r1                                    |     r3 = r1;
    0x0000280a add r2, pc                                    |     r2 = 0x50d0;
    0x0000280c mov.w r1, 0x100                               |     r1 = 0x100;
    0x00002810 str.w sl, [r4]                                |     __asm ("str.w sl, [r4]");
    0x00002814 blx 0x1664                                    |     ipc_data_set_ipc_data_array ();
    0x00002816 vmax.s32 d4, d6, d24                          |     __asm ("vmax.s32 d4, d6, d24");
    0x0000281a ldr r1, [r6]                                  |     r1 = *(r6);
    0x0000281c mov r2, r4                                    |     r2 = r4;
    0x0000281e blx 0x174c                                    |     fcn_0000174c ();
    0x00002822 ldr r5, [r4]                                  |     r5 = *(r4);
                                                             |     if (r5 == 0) {
    0x00002824 cbz r5, 0x284c                                |         goto label_2;
                                                             |     }
    0x00002826 mov r5, sl                                    |     r5 = sl;
                                                             | label_0:
    0x00002828 mov r0, r4                                    |     r0 = r4;
    0x0000282a blx 0x1530                                    |     fcn_00001530 ();
                                                             |     do {
    0x0000282e ldr r2, [pc, 0x94]                            |         
    0x00002830 ldr r3, [pc, 0x88]                            |         r3 = *(0x28bc);
    0x00002832 add r2, pc                                    |         r2 = 0x50fc;
    0x00002834 ldr r3, [r2, r3]                              |         r3 = *(0x50fc);
    0x00002836 ldr r2, [r3]                                  |         r2 = *(0x50fc);
    0x00002838 ldr r3, [sp, 0x20c]                           |         r3 = var_20ch_2;
    0x0000283a eors r2, r3                                   |         r2 ^= r3;
    0x0000283c mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00002840 bne 0x28b4                                    |             goto label_3;
                                                             |         }
    0x00002842 mov r0, r5                                    |         r0 = r5;
    0x00002844 add.w sp, sp, 0x214                           |         
    0x00002848 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_2:
    0x0000284c mov r1, r8                                    |         r1 = r8;
    0x0000284e mov r3, r4                                    |         r3 = r4;
    0x00002850 ldr r2, [r6]                                  |         r2 = *(r6);
    0x00002852 mov fp, r0                                    |         
    0x00002854 blx 0x16d0                                    |         ipc_data_get_integer_array ();
    0x00002858 ldr r3, [r4]                                  |         r3 = *(r4);
    0x0000285a mov r8, r0                                    |         r8 = r0;
                                                             |         if (r3 == 0) {
    0x0000285c cbz r3, 0x286c                                |             goto label_4;
                                                             |         }
                                                             | label_1:
    0x0000285e mov r0, fp                                    |         r0 = fp;
    0x00002860 blx 0x14f4                                    |         fcn_000014f4 ();
    0x00002864 ldr r3, [r4]                                  |         r3 = *(r4);
    0x00002866 cmp r3, 0                                     |         
    0x00002868 beq 0x282e                                    |         
                                                             |     } while (r3 == 0);
    0x0000286a b 0x2828                                      |     goto label_0;
                                                             | label_4:
    0x0000286c ldr r2, [pc, 0x58]                            |     
    0x0000286e mov r3, r7                                    |     r3 = r7;
    0x00002870 add r7, sp, 0x10c                             |     r7 += var_10ch_2;
    0x00002872 mov.w r1, 0x100                               |     r1 = 0x100;
    0x00002876 mov r0, r7                                    |     r0 = r7;
    0x00002878 add r2, pc                                    |     r2 = 0x5144;
    0x0000287a blx 0x1664                                    |     ipc_data_set_ipc_data_array ();
    0x0000287e mov r2, r5                                    |     r2 = r5;
    0x00002880 mov r1, r7                                    |     r1 = r7;
    0x00002882 mov r0, sb                                    |     r0 = sb;
    0x00002884 add r7, sp, 8                                 |     r7 += var_8h_5;
    0x00002886 blx 0x15e0                                    |     ipc_data_set_integer ();
    0x0000288a str r0, [sp, 8]                               |     var_8h_5 = r0;
    0x0000288c blx 0x1604                                    |     r0 = resource_get_domain ();
    0x00002890 mov r1, r0                                    |     r1 = r0;
    0x00002892 mov r0, r8                                    |     r0 = r8;
    0x00002894 blx 0x170c                                    |     stack_chk_fail ();
    0x00002898 ldr r3, [pc, 0x30]                            |     
    0x0000289a ldr r1, [r6]                                  |     r1 = *(r6);
    0x0000289c ldr r2, [sp, 8]                               |     r2 = var_8h_5;
    0x0000289e add r3, pc                                    |     r3 = 0x516e;
    0x000028a0 blx 0x1570                                    |     r0 = fcn_00001570 ();
    0x000028a4 mov r5, r0                                    |     r5 = r0;
    0x000028a6 mov r0, r7                                    |     r0 = r7;
    0x000028a8 blx 0x16e8                                    |     ipc_data_get_value_array ();
    0x000028ac mov r0, r8                                    |     r0 = r8;
    0x000028ae blx 0x14f4                                    |     fcn_000014f4 ();
    0x000028b2 b 0x285e                                      |     goto label_1;
                                                             | label_3:
    0x000028b4 blx 0x1718                                    |     get_domain_context_from_system_registry ()
    0x000028b8 adds r6, 0x90                                 |     r6 += 0x90;
    0x000028ba movs r0, r0                                   |     
    0x000028bc lsls r4, r6, 5                                |     r4 = r6 << 5;
    0x000028be movs r0, r0                                   |     
    0x000028c0 asrs r2, r7, 0x1a                             |     r2 = r7 >> 0x1a;
    0x000028c2 movs r0, r0                                   |     
    0x000028c4 adds r6, 0x4e                                 |     r6 += 0x4e;
    0x000028c6 movs r0, r0                                   |     
    0x000028c8 asrs r0, r2, 0x19                             |     r0 = r2 >> 0x19;
    0x000028ca movs r0, r0                                   |     
    0x000028cc asrs r6, r1, 0x15                             |     r6 = r1 >> 0x15;
    0x000028ce 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/libpinchart-api.so.0.0.1 @ 0x29d0 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.000029d0 ()                      | void fcn_000029d0 (int16_t arg_28h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_ch_3;
                                                 |     int16_t var_38h;
                                                 |     int16_t var_4h_2;
                                                 |     int16_t var_8h;
                                                 |     int16_t var_ch_2;
                                                 |     int16_t var_4h;
                                                 |     int16_t var_8h_2;
                                                 |     int16_t var_ch;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
                                                 |     r3 = arg4;
    0x000029d0 mvnsmi lr, sp, lsr 18             |     __asm ("mvnsmi lr, sp, lsr 18");
    0x000029d4 mov r5, r0                        |     r5 = r0;
    0x000029d6 mov r0, r2                        |     r0 = r2;
    0x000029d8 ldr r2, [pc, 0x8c]                |     
    0x000029da mov r6, r3                        |     r6 = r3;
    0x000029dc sub sp, 0x10                      |     
    0x000029de ldr r3, [pc, 0x8c]                |     r3 = *(0x2a6e);
    0x000029e0 mov r4, r1                        |     r4 = r1;
    0x000029e2 add r2, pc                        |     r2 = 0x544e;
    0x000029e4 ldr.w r8, [sp, 0x28]              |     r8 = *(arg_28h);
    0x000029e8 ldr r3, [r2, r3]                  |     
    0x000029ea ldr r3, [r3]                      |     r3 = *(0x544e);
    0x000029ec str r3, [sp, 0xc]                 |     var_ch = r3;
    0x000029ee mov.w r3, 0                       |     r3 = 0;
    0x000029f2 blx 0x17ec                        |     fcn_000017ec ();
    0x000029f6 str r0, [sp, 4]                   |     var_4h = r0;
                                                 |     if (r0 != 0) {
    0x000029f8 cbz r0, 0x2a4a                    |         
    0x000029fa blx 0x1588                        |         fcn_00001588 ();
    0x000029fe ldr r1, [pc, 0x70]                |         
    0x00002a00 movs r2, 0                        |         r2 = 0;
    0x00002a02 str r0, [sp, 8]                   |         var_8h_2 = r0;
    0x00002a04 ldr r0, [sp, 4]                   |         r0 = var_4h;
    0x00002a06 add r1, pc                        |         r1 = 0x547c;
    0x00002a08 blx 0x14dc                        |         fcn_000014dc ();
    0x00002a0c ldr r1, [pc, 0x64]                |         
    0x00002a0e mov r7, r0                        |         r7 = r0;
    0x00002a10 mov r2, r7                        |         r2 = r7;
    0x00002a12 ldr r0, [sp, 8]                   |         r0 = var_8h_2;
    0x00002a14 add r1, pc                        |         r1 = 0x548c;
    0x00002a16 blx 0x15ec                        |         g_list_length ();
    0x00002a1a ldr r2, [pc, 0x5c]                |         
    0x00002a1c mov r1, r7                        |         r1 = r7;
    0x00002a1e ldr r0, [r5, 8]                   |         r0 = *((r5 + 8));
    0x00002a20 add r2, pc                        |         r2 = 0x549e;
    0x00002a22 blx 0x1700                        |         r0 = g_type_check_instance_cast ();
                                                 |         if (r0 != 0) {
    0x00002a26 cbz r0, 0x2a34                    |             
    0x00002a28 ldr r1, [pc, 0x50]                |             
    0x00002a2a mov r2, r6                        |             r2 = r6;
    0x00002a2c ldr r0, [r0]                      |             r0 = *(r0);
    0x00002a2e add r1, pc                        |             r1 = 0x54ae;
    0x00002a30 blx 0x15b0                        |             resource_get_default_interface ();
                                                 |         }
    0x00002a34 add r0, sp, 4                     |         r0 += var_4h;
    0x00002a36 blx 0x1694                        |         resource_declare_interface_implementation ();
    0x00002a3a mov r0, r8                        |         r0 = r8;
    0x00002a3c ldr r2, [sp, 8]                   |         r2 = var_8h_2;
    0x00002a3e mov r1, r4                        |         r1 = r4;
    0x00002a40 blx 0x15b0                        |         resource_get_default_interface ();
    0x00002a44 add r0, sp, 8                     |         r0 += var_8h_2;
    0x00002a46 blx 0x1694                        |         resource_declare_interface_implementation ();
                                                 |     }
    0x00002a4a ldr r2, [pc, 0x34]                |     
    0x00002a4c ldr r3, [pc, 0x1c]                |     r3 = *(0x2a6c);
    0x00002a4e add r2, pc                        |     r2 = 0x54d4;
    0x00002a50 ldr r3, [r2, r3]                  |     r3 = *(0x54d4);
    0x00002a52 ldr r2, [r3]                      |     r2 = *(0x54d4);
    0x00002a54 ldr r3, [sp, 0xc]                 |     r3 = var_ch;
    0x00002a56 eors r2, r3                       |     r2 ^= r3;
    0x00002a58 mov.w r3, 0                       |     r3 = 0;
                                                 |     if (r2 == r3) {
    0x00002a5c bne 0x2a64                        |         
    0x00002a5e add sp, 0x10                      |         
    0x00002a60 pop.w {r4, r5, r6, r7, r8, pc}    |         
                                                 |     }
    0x00002a64 blx 0x1718                        |     get_domain_context_from_system_registry ()
    0x00002a68 adds r4, 0x9e                     |     r4 += 0x9e;
    0x00002a6a movs r0, r0                       |     
    0x00002a6c lsls r4, r6, 5                    |     r4 = r6 << 5;
    0x00002a6e movs r0, r0                       |     
    0x00002a70 asrs r6, r0, 0xe                  |     r6 = r0 >> 0xe;
    0x00002a72 movs r0, r0                       |     
    0x00002a74 asrs r4, r3, 0x15                 |     r4 = r3 >> 0x15;
    0x00002a76 movs r0, r0                       |     
    0x00002a78 bl 0x1c0a7a                       |     void (*0x1c0a7a)(uint32_t) (r0);
    0x00002a7c asrs r2, r4, 0xd                  |     r2 = r4 >> 0xd;
    0x00002a7e movs r0, r0                       |     
    0x00002a80 adds r4, 0x32                     |     r4 += 0x32;
    0x00002a82 movs r0, r0                       |     
    0x00002a84 push {r4, r5, r6, r7, lr}         |     
    0x00002a86 mov r4, r0                        |     r4 = r0;
    0x00002a88 ldr r5, [pc, 0xb4]                |     
    0x00002a8a mov r7, r1                        |     r7 = r1;
    0x00002a8c sub sp, 0x14                      |     
    0x00002a8e movs r2, 0                        |     r2 = 0;
    0x00002a90 ldr r3, [pc, 0xb0]                |     r3 = *(0x2b44);
    0x00002a92 add r5, pc                        |     r5 = 0x55d6;
    0x00002a94 ldr r0, [pc, 0xb0]                |     
    0x00002a96 ldr r1, [pc, 0xb4]                |     
    0x00002a98 ldr r3, [r5, r3]                  |     
    0x00002a9a add r0, pc                        |     r0 = 0x55e6;
    0x00002a9c ldr r5, [pc, 0xb0]                |     
    0x00002a9e add r1, pc                        |     r1 = 0x55f0;
    0x00002aa0 ldr r3, [r3]                      |     r3 = *(0x55d6);
    0x00002aa2 str r3, [sp, 0xc]                 |     var_ch_2 = r3;
    0x00002aa4 mov.w r3, 0                       |     r3 = 0;
    0x00002aa8 blx 0x15e0                        |     ipc_data_set_integer ();
    0x00002aac str r0, [sp, 4]                   |     var_4h_2 = r0;
    0x00002aae add r5, pc                        |     r5 = 0x5602;
    0x00002ab0 blx 0x1604                        |     r0 = resource_get_domain ();
    0x00002ab4 mov r1, r0                        |     r1 = r0;
    0x00002ab6 mov r0, r4                        |     r0 = r4;
    0x00002ab8 blx 0x170c                        |     stack_chk_fail ();
    0x00002abc ldr r3, [pc, 0x94]                |     
    0x00002abe ldr r1, [r7]                      |     r1 = *(r7);
    0x00002ac0 ldr r2, [sp, 4]                   |     r2 = var_4h_2;
    0x00002ac2 add r3, pc                        |     r3 = 0x561a;
    0x00002ac4 blx 0x1570                        |     r0 = fcn_00001570 ();
    0x00002ac8 mov r4, r0                        |     r4 = r0;
    0x00002aca add r0, sp, 4                     |     r0 += var_4h_2;
    0x00002acc blx 0x16e8                        |     ipc_data_get_value_array ();
    0x00002ad0 mov r0, r4                        |     r0 = r4;
    0x00002ad2 blx 0x17f8                        |     fcn_000017f8 ();
    0x00002ad6 mov r1, r5                        |     r1 = r5;
    0x00002ad8 blx 0x17ec                        |     r0 = fcn_000017ec ();
                                                 |     if (r0 != 0) {
    0x00002adc cbz r0, 0x2b1c                    |         
    0x00002ade ldr r1, [pc, 0x78]                |         
    0x00002ae0 movs r2, 0                        |         r2 = 0;
    0x00002ae2 add r1, pc                        |         r1 = 0x5640;
    0x00002ae4 blx 0x14dc                        |         r0 = fcn_000014dc ();
    0x00002ae8 mov r6, r0                        |         r6 = r0;
    0x00002aea blx 0x1588                        |         fcn_00001588 ();
    0x00002aee ldr r1, [pc, 0x6c]                |         
    0x00002af0 mov r2, r5                        |         r2 = r5;
    0x00002af2 str r0, [sp, 8]                   |         var_8h = r0;
    0x00002af4 add r1, pc                        |         r1 = 0x5656;
    0x00002af6 blx 0x14a0                        |         fcn_000014a0 ();
    0x00002afa ldr r2, [pc, 0x64]                |         
    0x00002afc mov r1, r6                        |         r1 = r6;
    0x00002afe ldr r0, [r7, 8]                   |         r0 = *((r7 + 8));
    0x00002b00 ldr r5, [sp, 8]                   |         r5 = var_8h;
    0x00002b02 add r2, pc                        |         r2 = 0x5668;
    0x00002b04 blx 0x1700                        |         r0 = g_type_check_instance_cast ();
                                                 |         if (r0 != 0) {
    0x00002b08 cbz r0, 0x2b16                    |             
    0x00002b0a ldr r1, [pc, 0x58]                |             
    0x00002b0c mov r2, r5                        |             r2 = r5;
    0x00002b0e ldr r0, [r0]                      |             r0 = *(r0);
    0x00002b10 add r1, pc                        |             r1 = 0x567a;
    0x00002b12 blx 0x15b0                        |             resource_get_default_interface ();
                                                 |         }
    0x00002b16 add r0, sp, 8                     |         r0 += var_8h;
    0x00002b18 blx 0x1694                        |         resource_declare_interface_implementation ();
                                                 |     }
    0x00002b1c mov r0, r4                        |     r0 = r4;
    0x00002b1e blx 0x14f4                        |     fcn_000014f4 ();
    0x00002b22 ldr r2, [pc, 0x44]                |     
    0x00002b24 ldr r3, [pc, 0x1c]                |     r3 = *(0x2b44);
    0x00002b26 add r2, pc                        |     r2 = 0x5694;
    0x00002b28 ldr r3, [r2, r3]                  |     r3 = *(0x5694);
    0x00002b2a ldr r2, [r3]                      |     r2 = *(0x5694);
    0x00002b2c ldr r3, [sp, 0xc]                 |     r3 = var_ch_2;
    0x00002b2e eors r2, r3                       |     r2 ^= r3;
    0x00002b30 mov.w r3, 0                       |     r3 = 0;
                                                 |     if (r2 == r3) {
    0x00002b34 bne 0x2b3c                        |         
    0x00002b36 movs r0, 1                        |         r0 = 1;
    0x00002b38 add sp, 0x14                      |         
    0x00002b3a pop {r4, r5, r6, r7, pc}          |         
                                                 |     }
    0x00002b3c blx 0x1718                        |     get_domain_context_from_system_registry ()
    0x00002b40 adds r3, 0xee                     |     r3 += 0xee;
    0x00002b42 movs r0, r0                       |     
    0x00002b44 lsls r4, r6, 5                    |     r4 = r6 << 5;
    0x00002b46 movs r0, r0                       |     
    0x00002b48 asrs r2, r0, 0xa                  |     r2 = r0 >> 0xa;
    0x00002b4a movs r0, r0                       |     
    0x00002b4c asrs r2, r7, 0x14                 |     r2 = r7 >> 0x14;
    0x00002b4e movs r0, r0                       |     
    0x00002b50 asrs r6, r0, 0x13                 |     r6 = r0 >> 0x13;
    0x00002b52 movs r0, r0                       |     
    0x00002b54 asrs r2, r5, 0xc                  |     r2 = r5 >> 0xc;
    0x00002b56 movs r0, r0                       |     
    0x00002b58 asrs r2, r5, 0xa                  |     r2 = r5 >> 0xa;
    0x00002b5a movs r0, r0                       |     
    0x00002b5c asrs r0, r2, 0x12                 |     r0 = r2 >> 0x12;
    0x00002b5e movs r0, r0                       |     
    0x00002b60 bl 0xdeb62                        |     r0 = void (*0xdeb62)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x00002b64 asrs r0, r0, 0xa                  |     r0 >>= 0xa;
    0x00002b66 movs r0, r0                       |     
    0x00002b68 adds r3, 0x5a                     |     r3 += 0x5a;
    0x00002b6a 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/libpinchart-api.so.0.0.1 @ 0x2b6c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00002b6c ()                                      | void fcn_00002b6c (int16_t arg_38h, int16_t arg_3ch, 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_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00002b6c svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x00002b70 mov r8, r2                                        |     r8 = r2;
    0x00002b72 ldr r2, [pc, 0xf0]                                |     
    0x00002b74 mov r6, r3                                        |     r6 = r3;
    0x00002b76 sub sp, 0x14                                      |     
    0x00002b78 mov r5, r1                                        |     r5 = r1;
    0x00002b7a ldr r3, [pc, 0xec]                                |     r3 = *(0x2c6a);
    0x00002b7c mov r7, r0                                        |     r7 = r0;
    0x00002b7e ldr.w fp, [pc, 0xec]                              |     
    0x00002b82 add r2, pc                                        |     r2 = 0x57ec;
    0x00002b84 mov r0, r1                                        |     r0 = r1;
    0x00002b86 ldr.w sl, [sp, 0x38]                              |     sl = *(arg_38h);
    0x00002b8a ldr r3, [r2, r3]                                  |     
    0x00002b8c movs r2, 0                                        |     r2 = 0;
    0x00002b8e add fp, pc                                        |     fp = 0x5800;
    0x00002b90 ldr.w sb, [sp, 0x3c]                              |     sb = *(arg_3ch);
    0x00002b94 mov r1, fp                                        |     r1 = fp;
    0x00002b96 ldr r3, [r3]                                      |     r3 = *(0x57ec);
    0x00002b98 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00002b9a mov.w r3, 0                                       |     r3 = 0;
    0x00002b9e blx 0x14dc                                        |     fcn_000014dc ();
    0x00002ba2 mov r1, r6                                        |     r1 = r6;
    0x00002ba4 mov r4, r0                                        |     r4 = r0;
    0x00002ba6 mov r0, r5                                        |     r0 = r5;
    0x00002ba8 blx 0x17ec                                        |     fcn_000017ec ();
    0x00002bac str r0, [sp]                                      |     *(sp) = r0;
                                                                 |     if (r0 != 0) {
    0x00002bae cbz r0, 0x2bc0                                    |         
    0x00002bb0 mov r1, fp                                        |         r1 = fp;
    0x00002bb2 movs r2, 0                                        |         r2 = 0;
    0x00002bb4 blx 0x14dc                                        |         r0 = fcn_000014dc ();
    0x00002bb8 mov r4, r0                                        |         r4 = r0;
    0x00002bba mov r0, sp                                        |         r0 = sp;
    0x00002bbc blx 0x1694                                        |         resource_declare_interface_implementation ();
                                                                 |     }
    0x00002bc0 ldr r3, [pc, 0xac]                                |     
    0x00002bc2 mov r1, sl                                        |     r1 = sl;
    0x00002bc4 mov r2, r4                                        |     r2 = r4;
    0x00002bc6 mov r0, r7                                        |     r0 = r7;
    0x00002bc8 add r3, pc                                        |     r3 = 0x583c;
    0x00002bca bl 0x27dc                                         |     r0 = fcn_000027dc (r0, r1, r2, r3);
    0x00002bce mov r5, r0                                        |     r5 = r0;
    0x00002bd0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00002bd2 beq 0x2c46                                        |         
    0x00002bd4 ldr.w sl, [pc, 0x9c]                              |         
    0x00002bd8 blx 0x1588                                        |         fcn_00001588 ();
    0x00002bdc mov r2, r4                                        |         r2 = r4;
    0x00002bde str r0, [sp, 4]                                   |         var_4h = r0;
    0x00002be0 add sl, pc                                        |         sl = 0x5858;
    0x00002be2 mov r1, sl                                        |         r1 = sl;
    0x00002be4 blx 0x15ec                                        |         g_list_length ();
    0x00002be8 mov r0, r5                                        |         r0 = r5;
    0x00002bea blx 0x17f8                                        |         fcn_000017f8 ();
    0x00002bee ldr r1, [pc, 0x88]                                |         
    0x00002bf0 add r1, pc                                        |         r1 = 0x586e;
    0x00002bf2 blx 0x17ec                                        |         fcn_000017ec ();
    0x00002bf6 str r0, [sp, 8]                                   |         var_8h = r0;
                                                                 |         if (r0 != 0) {
    0x00002bf8 cbz r0, 0x2c30                                    |             
    0x00002bfa mov r1, sl                                        |             r1 = sl;
    0x00002bfc movs r2, 0                                        |             r2 = 0;
    0x00002bfe blx 0x14dc                                        |             fcn_000014dc ();
    0x00002c02 ldr r2, [pc, 0x78]                                |             
    0x00002c04 mov r4, r0                                        |             r4 = r0;
    0x00002c06 mov r1, r4                                        |             r1 = r4;
    0x00002c08 ldr r0, [r7, 8]                                   |             r0 = *((r7 + 8));
    0x00002c0a add r2, pc                                        |             r2 = 0x588c;
    0x00002c0c blx 0x1700                                        |             r0 = g_type_check_instance_cast ();
                                                                 |             if (r0 != 0) {
    0x00002c10 cbz r0, 0x2c1e                                    |                 
    0x00002c12 ldr r1, [pc, 0x6c]                                |                 
    0x00002c14 mov r2, sb                                        |                 r2 = sb;
    0x00002c16 ldr r0, [r0]                                      |                 r0 = *(r0);
    0x00002c18 add r1, pc                                        |                 r1 = 0x589e;
    0x00002c1a blx 0x15b0                                        |                 resource_get_default_interface ();
                                                                 |             }
    0x00002c1e ldr r1, [pc, 0x64]                                |             
    0x00002c20 mov r2, r4                                        |             r2 = r4;
    0x00002c22 ldr r0, [sp, 4]                                   |             r0 = var_4h;
    0x00002c24 add r1, pc                                        |             r1 = 0x58ae;
    0x00002c26 blx 0x15ec                                        |             g_list_length ();
    0x00002c2a add r0, sp, 8                                     |             r0 += var_8h;
    0x00002c2c blx 0x1694                                        |             resource_declare_interface_implementation ();
                                                                 |         }
    0x00002c30 ldr r2, [sp, 4]                                   |         r2 = var_4h;
    0x00002c32 mov r1, r6                                        |         r1 = r6;
    0x00002c34 mov r0, r8                                        |         r0 = r8;
    0x00002c36 blx 0x15b0                                        |         resource_get_default_interface ();
    0x00002c3a add r0, sp, 4                                     |         r0 += var_4h;
    0x00002c3c blx 0x1694                                        |         resource_declare_interface_implementation ();
    0x00002c40 mov r0, r5                                        |         r0 = r5;
    0x00002c42 blx 0x14f4                                        |         fcn_000014f4 ();
                                                                 |     }
    0x00002c46 ldr r2, [pc, 0x40]                                |     
    0x00002c48 ldr r3, [pc, 0x1c]                                |     r3 = *(0x2c68);
    0x00002c4a add r2, pc                                        |     r2 = 0x58d8;
    0x00002c4c ldr r3, [r2, r3]                                  |     r3 = *(0x58d8);
    0x00002c4e ldr r2, [r3]                                      |     r2 = *(0x58d8);
    0x00002c50 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00002c52 eors r2, r3                                       |     r2 ^= r3;
    0x00002c54 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x00002c58 bne 0x2c60                                        |         
    0x00002c5a add sp, 0x14                                      |         
    0x00002c5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x00002c60 blx 0x1718                                        |     get_domain_context_from_system_registry ()
    0x00002c64 adds r2, 0xfe                                     |     r2 += 0xfe;
    0x00002c66 movs r0, r0                                       |     
    0x00002c68 lsls r4, r6, 5                                    |     r4 = r6 << 5;
    0x00002c6a movs r0, r0                                       |     
    0x00002c6c asrs r6, r7, 7                                    |     r6 = r7 >> 7;
    0x00002c6e movs r0, r0                                       |     
    0x00002c70 asrs r4, r2, 5                                    |     r4 = r2 >> 5;
    0x00002c72 movs r0, r0                                       |     
    0x00002c74 asrs r4, r5, 6                                    |     r4 = r5 >> 6;
    0x00002c76 movs r0, r0                                       |     
    0x00002c78 asrs r0, r0, 0xe                                  |     r0 >>= 0xe;
    0x00002c7a movs r0, r0                                       |     
    0x00002c7c 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/libpinchart-api.so.0.0.1 @ 0x2c8c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00002c8c ()                                  | void fcn_00002c8c (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     char * 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;
                                                             |     char * var_38h;
                                                             |     int16_t var_3ch;
                                                             |     int16_t var_40h;
                                                             |     int32_t var_44h;
                                                             |     int16_t var_48h;
                                                             |     int16_t var_4ch;
                                                             |     int16_t var_54h;
                                                             |     int16_t var_58h;
                                                             |     int16_t var_5ch;
                                                             |     int16_t var_60h;
                                                             |     int16_t var_64h;
                                                             |     int16_t var_68h;
                                                             |     int16_t var_6ch;
                                                             |     int16_t var_70h;
                                                             |     char * s;
                                                             |     int16_t var_78h;
                                                             |     int16_t var_7ch;
                                                             |     int16_t var_fch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00002c8c svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00002c90 mov r6, r2                                    |     r6 = r2;
    0x00002c92 ldr.w r2, [pc, 0x6e8]                         |     
    0x00002c96 mov sb, r3                                    |     sb = r3;
    0x00002c98 sub sp, 0x104                                 |     
    0x00002c9a mov r5, r0                                    |     r5 = r0;
    0x00002c9c ldr.w r3, [pc, 0x6e0]                         |     r3 = *(0x3380);
    0x00002ca0 mov r0, r1                                    |     r0 = r1;
    0x00002ca2 ldr.w sl, [pc, 0x6e0]                         |     
    0x00002ca6 add r2, pc                                    |     r2 = 0x6028;
    0x00002ca8 ldr.w r7, [pc, 0x6dc]                         |     
    0x00002cac ldr r3, [r2, r3]                              |     
    0x00002cae movs r2, 0                                    |     r2 = 0;
    0x00002cb0 add sl, pc                                    |     sl = 0x603a;
    0x00002cb2 mov r1, sl                                    |     r1 = sl;
    0x00002cb4 add r7, pc                                    |     r7 = 0x6040;
    0x00002cb6 ldr r3, [r3]                                  |     r3 = imp.ipc_data_value_destroy_notify;
    0x00002cb8 str r3, [sp, 0xfc]                            |     var_fch = r3;
    0x00002cba mov.w r3, 0                                   |     r3 = 0;
    0x00002cbe blx 0x14dc                                    |     fcn_000014dc ();
    0x00002cc2 ldr.w r3, [pc, 0x6c8]                         |     
    0x00002cc6 mov r8, r0                                    |     r8 = r0;
    0x00002cc8 ldr.w r1, [pc, 0x6c4]                         |     
    0x00002ccc mov r2, r0                                    |     r2 = r0;
    0x00002cce mov r0, r5                                    |     r0 = r5;
    0x00002cd0 add r3, pc                                    |     r3 = 0x6062;
    0x00002cd2 add r1, pc                                    |     r1 = 0x6066;
    0x00002cd4 bl 0x27dc                                     |     r0 = fcn_000027dc (r0, r1, r2, r3);
    0x00002cd8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002cda beq 0x2d6a                                    |         goto label_8;
                                                             |     }
    0x00002cdc mov r4, r0                                    |     r4 = r0;
    0x00002cde ldr.w fp, [pc, 0x6b4]                         |     
    0x00002ce2 blx 0x1588                                    |     fcn_00001588 ();
    0x00002ce6 mov r2, r8                                    |     r2 = r8;
    0x00002ce8 mov r1, sl                                    |     r1 = sl;
    0x00002cea str r0, [sp, 0x54]                            |     var_54h = r0;
    0x00002cec add fp, pc                                    |     fp = 0x6086;
    0x00002cee blx 0x15ec                                    |     g_list_length ();
    0x00002cf2 mov r0, r4                                    |     r0 = r4;
    0x00002cf4 blx 0x17f8                                    |     fcn_000017f8 ();
    0x00002cf8 ldr.w r2, [pc, 0x69c]                         |     
    0x00002cfc mov r1, fp                                    |     r1 = fp;
    0x00002cfe mov r8, r0                                    |     r8 = r0;
    0x00002d00 add r2, pc                                    |     r2 = 0x609c;
    0x00002d02 blx 0x1804                                    |     fcn_00001804 ();
    0x00002d06 mov r1, fp                                    |     r1 = fp;
    0x00002d08 mov r2, r0                                    |     r2 = r0;
    0x00002d0a mov sl, r0                                    |     sl = r0;
    0x00002d0c ldr r0, [sp, 0x54]                            |     r0 = var_54h;
    0x00002d0e blx 0x14a0                                    |     fcn_000014a0 ();
    0x00002d12 mov r0, sb                                    |     r0 = sb;
    0x00002d14 ldr.w sb, [pc, 0x684]                         |     
    0x00002d16 str r6, [sp, 0x210]                           |     *((sp + 0x210)) = r6;
    0x00002d18 blx 0x14ac                                    |     fcn_000014ac ();
    0x00002d1c ldr.w r1, [pc, 0x680]                         |     
    0x00002d20 mov r2, sl                                    |     r2 = sl;
    0x00002d22 add sb, pc                                    |     sb = 0x60c2;
    0x00002d24 str r0, [sp, 0x58]                            |     var_58h = r0;
    0x00002d26 add r1, pc                                    |     r1 = 0x60ca;
    0x00002d28 blx 0x14a0                                    |     fcn_000014a0 ();
    0x00002d2c mov r0, r8                                    |     r0 = r8;
    0x00002d2e mov r1, sb                                    |     r1 = sb;
    0x00002d30 blx 0x1594                                    |     r0 = fcn_00001594 ();
    0x00002d34 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002d36 bne.w 0x3000                                  |         goto label_9;
                                                             |     }
                                                             | label_2:
    0x00002d3a ldr.w sb, [pc, 0x668]                         |     
    0x00002d3e mov r0, r8                                    |     r0 = r8;
    0x00002d40 add sb, pc                                    |     sb = 0x60ea;
    0x00002d42 mov r1, sb                                    |     r1 = sb;
    0x00002d44 blx 0x1594                                    |     r0 = fcn_00001594 ();
    0x00002d48 cbnz r0, 0x2d8a                               |     
                                                             |     while (r0 == 0) {
                                                             | label_3:
    0x00002d4a ldr.w r1, [pc, 0x65c]                         |         
    0x00002d4e mov r0, r6                                    |         r0 = r6;
    0x00002d50 ldr r2, [sp, 0x54]                            |         r2 = var_54h;
    0x00002d52 add r1, pc                                    |         r1 = 0x6100;
    0x00002d54 blx 0x15b0                                    |         resource_get_default_interface ();
    0x00002d58 add r0, sp, 0x54                              |         r0 += var_54h;
    0x00002d5a blx 0x1694                                    |         resource_declare_interface_implementation ();
    0x00002d5e add r0, sp, 0x58                              |         r0 += var_58h;
    0x00002d60 blx 0x1694                                    |         resource_declare_interface_implementation ();
    0x00002d64 mov r0, r4                                    |         r0 = r4;
    0x00002d66 blx 0x14f4                                    |         fcn_000014f4 ();
                                                             | label_8:
    0x00002d6a ldr.w r2, [pc, 0x640]                         |         
    0x00002d6e ldr.w r3, [pc, 0x610]                         |         r3 = *(0x3382);
    0x00002d72 add r2, pc                                    |         r2 = 0x6124;
    0x00002d74 ldr r3, [r2, r3]                              |         r3 = imp.ipc_data_value_destroy_notify;
    0x00002d76 ldr r2, [r3]                                  |         r2 = imp.ipc_data_value_destroy_notify;
    0x00002d78 ldr r3, [sp, 0xfc]                            |         r3 = var_fch;
    0x00002d7a eors r2, r3                                   |         r2 ^= r3;
    0x00002d7c mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00002d80 bne.w 0x3378                                  |             goto label_10;
                                                             |         }
    0x00002d84 add sp, 0x104                                 |         
    0x00002d86 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
    0x00002d8a ldr.w fp, [pc, 0x624]                         |         
    0x00002d8e mov r2, sb                                    |         r2 = sb;
    0x00002d90 ldr r0, [sp, 0x58]                            |         r0 = var_58h;
    0x00002d92 add fp, pc                                    |         fp = 0x6148;
    0x00002d94 mov r1, fp                                    |         r1 = fp;
    0x00002d96 blx 0x14a0                                    |         fcn_000014a0 ();
    0x00002d9a ldr r3, [sp, 0x54]                            |         r3 = var_54h;
    0x00002d9c mov r1, sb                                    |         r1 = sb;
    0x00002d9e mov r0, r8                                    |         r0 = r8;
    0x00002da0 str r3, [sp, 0xc]                             |         var_ch = r3;
    0x00002da2 ldr r3, [sp, 0x58]                            |         r3 = var_58h;
    0x00002da4 str r3, [sp, 0x14]                            |         var_14h = r3;
    0x00002da6 blx 0x17ec                                    |         fcn_000017ec ();
    0x00002daa str r0, [sp, 0x5c]                            |         var_5ch = r0;
    0x00002dac cmp r0, 0                                     |         
    0x00002dae beq 0x2d4a                                    |         
                                                             |     }
    0x00002db0 ldr.w r8, [pc, 0x600]                         |     
    0x00002db4 blx 0x1588                                    |     fcn_00001588 ();
    0x00002db8 movs r2, 0                                    |     r2 = 0;
    0x00002dba str r0, [sp, 0x60]                            |     var_60h = r0;
    0x00002dbc add r8, pc                                    |     r8 = 0x6174;
    0x00002dbe ldr r0, [sp, 0x5c]                            |     r0 = var_5ch;
    0x00002dc0 mov r1, r8                                    |     r1 = r8;
    0x00002dc2 blx 0x14dc                                    |     fcn_000014dc ();
    0x00002dc6 ldr.w r1, [pc, 0x5f0]                         |     
    0x00002dca mov sb, r0                                    |     sb = r0;
    0x00002dcc movs r2, 0                                    |     r2 = 0;
    0x00002dce ldr r0, [sp, 0x5c]                            |     r0 = var_5ch;
    0x00002dd0 add r1, pc                                    |     r1 = 0x618e;
    0x00002dd2 blx 0x1804                                    |     fcn_00001804 ();
    0x00002dd6 mov r2, sb                                    |     r2 = sb;
    0x00002dd8 mov sl, r0                                    |     sl = r0;
    0x00002dda mov r1, r8                                    |     r1 = r8;
    0x00002ddc ldr r0, [sp, 0x60]                            |     r0 = var_60h;
    0x00002dde blx 0x15ec                                    |     g_list_length ();
    0x00002de2 ldr.w r1, [pc, 0x5d8]                         |     
    0x00002de6 mov r2, sl                                    |     r2 = sl;
    0x00002de8 ldr r0, [sp, 0x60]                            |     r0 = var_60h;
    0x00002dea add r1, pc                                    |     r1 = 0x61ac;
    0x00002dec blx 0x14a0                                    |     fcn_000014a0 ();
    0x00002df0 ldr r1, [r5]                                  |     r1 = *(r5);
    0x00002df2 mov r0, sl                                    |     r0 = sl;
    0x00002df4 movs r2, 0                                    |     r2 = 0;
    0x00002df6 blx 0x174c                                    |     fcn_0000174c ();
    0x00002dfa ldr r2, [r5]                                  |     r2 = *(r5);
    0x00002dfc mov r1, sb                                    |     r1 = sb;
    0x00002dfe movs r3, 0                                    |     r3 = 0;
    0x00002e00 ldr.w sb, [pc, 0x5bc]                         |     
    0x00002e04 str r0, [sp, 0x18]                            |     var_18h = r0;
    0x00002e06 blx 0x16d0                                    |     r0 = ipc_data_get_integer_array ();
    0x00002e0a mov sl, r0                                    |     sl = r0;
    0x00002e0c add sb, pc                                    |     sb = 0x61d0;
    0x00002e0e blx 0x1604                                    |     r0 = resource_get_domain ();
    0x00002e12 mov r1, r0                                    |     r1 = r0;
    0x00002e14 mov r0, sl                                    |     r0 = sl;
    0x00002e16 str.w sl, [sp, 0x10]                          |     __asm ("str.w sl, [var_10h]");
    0x00002e1a blx 0x170c                                    |     stack_chk_fail ();
    0x00002e1e movs r3, 0                                    |     r3 = 0;
    0x00002e20 movs r2, 2                                    |     r2 = 2;
    0x00002e22 str r3, [sp]                                  |     *(sp) = r3;
    0x00002e24 mov r1, sb                                    |     r1 = sb;
    0x00002e26 ldr r3, [r5]                                  |     r3 = *(r5);
    0x00002e28 blx 0x15bc                                    |     g_assertion_message_expr ();
    0x00002e2c str r0, [sp, 0x1c]                            |     var_1ch = r0;
    0x00002e2e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002e30 beq.w 0x3044                                  |         goto label_11;
                                                             |     }
    0x00002e34 blx 0x17d4                                    |     fcn_000017d4 ();
    0x00002e38 ldr.w r1, [pc, 0x588]                         |     
    0x00002e3c add r1, pc                                    |     r1 = 0x6204;
    0x00002e3e str r1, [sp, 0x20]                            |     var_20h = r1;
    0x00002e40 blx 0x150c                                    |     r0 = fcn_0000150c ();
    0x00002e44 mov sl, r0                                    |     sl = r0;
    0x00002e46 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002e48 bne.w 0x3024                                  |         goto label_12;
                                                             |     }
    0x00002e4c mov r2, r0                                    |     r2 = r0;
    0x00002e4e ldr r1, [sp, 0x20]                            |     r1 = var_20h;
    0x00002e50 mov r0, sb                                    |     r0 = sb;
    0x00002e52 blx 0x15e0                                    |     ipc_data_set_integer ();
    0x00002e56 str r0, [sp, 0x64]                            |     var_64h = r0;
    0x00002e58 blx 0x1604                                    |     r0 = resource_get_domain ();
    0x00002e5c mov r1, r0                                    |     r1 = r0;
    0x00002e5e ldr r0, [sp, 0x10]                            |     r0 = var_10h;
    0x00002e60 blx 0x170c                                    |     stack_chk_fail ();
    0x00002e64 ldr.w r3, [pc, 0x560]                         |     
    0x00002e68 ldr r1, [r5]                                  |     r1 = *(r5);
    0x00002e6a ldr r2, [sp, 0x64]                            |     r2 = var_64h;
    0x00002e6c add r3, pc                                    |     r3 = 0x6238;
    0x00002e6e blx 0x1570                                    |     fcn_00001570 ();
    0x00002e72 ldr.w r2, [pc, 0x558]                         |     
    0x00002e76 str r0, [sp, 0x20]                            |     var_20h = r0;
    0x00002e78 add r0, sp, 0x64                              |     r0 += var_64h;
    0x00002e7a add r2, pc                                    |     r2 = 0x624c;
    0x00002e7c str r2, [sp, 0x24]                            |     var_24h = r2;
    0x00002e7e blx 0x16e8                                    |     ipc_data_get_value_array ();
    0x00002e82 ldr r0, [sp, 0x20]                            |     r0 = var_20h;
    0x00002e84 blx 0x17f8                                    |     fcn_000017f8 ();
    0x00002e88 ldr r1, [sp, 0x24]                            |     r1 = var_24h;
    0x00002e8a blx 0x17ec                                    |     fcn_000017ec ();
    0x00002e8e str r0, [sp, 0x68]                            |     var_68h = r0;
    0x00002e90 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002e92 beq.w 0x3132                                  |         goto label_13;
                                                             |     }
    0x00002e96 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x00002e98 blx 0x14ac                                    |     fcn_000014ac ();
    0x00002e9c ldr.w r2, [pc, 0x530]                         |     
    0x00002ea0 mov r1, fp                                    |     r1 = fp;
    0x00002ea2 str r0, [sp, 0x6c]                            |     var_6ch = r0;
    0x00002ea4 add r2, pc                                    |     r2 = 0x6278;
    0x00002ea6 blx 0x14a0                                    |     fcn_000014a0 ();
    0x00002eaa ldr r3, [sp, 0x60]                            |     r3 = var_60h;
    0x00002eac mov r1, r8                                    |     r1 = r8;
    0x00002eae mov r2, sl                                    |     r2 = sl;
    0x00002eb0 ldr r0, [sp, 0x68]                            |     r0 = var_68h;
    0x00002eb2 str r3, [sp, 0x2c]                            |     var_2ch = r3;
    0x00002eb4 ldr r3, [sp, 0x6c]                            |     r3 = var_6ch;
    0x00002eb6 str r3, [sp, 0x30]                            |     var_30h = r3;
    0x00002eb8 blx 0x14dc                                    |     fcn_000014dc ();
    0x00002ebc mov r3, sb                                    |     r3 = sb;
    0x00002ebe mov r2, r0                                    |     r2 = r0;
    0x00002ec0 ldr r1, [sp, 0x24]                            |     r1 = var_24h;
    0x00002ec2 mov r8, r0                                    |     r8 = r0;
    0x00002ec4 mov r0, r5                                    |     r0 = r5;
    0x00002ec6 bl 0x27dc                                     |     r0 = fcn_000027dc (r0, r1, r2, r3);
    0x00002eca mov sb, r0                                    |     sb = r0;
    0x00002ecc cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002ece beq.w 0x312c                                  |         goto label_14;
                                                             |     }
    0x00002ed2 ldr.w r2, [pc, 0x500]                         |     r2 = *(0x000033d4);
    0x00002ed6 mov r1, r8                                    |     r1 = r8;
    0x00002ed8 ldr r0, [r5, 0x14]                            |     r0 = *((r5 + 0x14));
    0x00002eda add r2, pc                                    |     r2 += pc;
    0x00002edc blx 0x1700                                    |     r0 = g_type_check_instance_cast ();
    0x00002ee0 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002ee2 beq.w 0x331e                                  |         goto label_15;
                                                             |     }
    0x00002ee6 ldr.w r1, [pc, 0x4f0]                         |     
    0x00002eea ldr r0, [r0]                                  |     r0 = *(r0);
    0x00002eec add r1, pc                                    |     r1 = 0x62ca;
    0x00002eee blx 0x17ec                                    |     fcn_000017ec ();
    0x00002ef2 str r0, [sp, 0x70]                            |     var_70h = r0;
    0x00002ef4 str r0, [sp, 0x24]                            |     var_24h = r0;
    0x00002ef6 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002ef8 beq.w 0x3320                                  |         goto label_16;
                                                             |     }
    0x00002efc blx 0x1588                                    |     fcn_00001588 ();
    0x00002f00 str r0, [sp, 0x28]                            |     var_28h = r0;
    0x00002f02 ldr r0, [sp, 0x24]                            |     r0 = var_24h;
    0x00002f04 blx 0x1634                                    |     g_propagate_error ();
    0x00002f08 str r0, [sp, 0x34]                            |     var_34h = r0;
    0x00002f0a cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002f0c beq.w 0x3372                                  |         goto label_17;
                                                             |     }
    0x00002f10 ldr.w r3, [pc, 0x4c8]                         |     
    0x00002f14 ldr.w sl, [sp, 0x34]                          |     sl = var_34h;
    0x00002f16 adr r0, 0xd0                                  |     r0 = 0xd0;
    0x00002f18 str r4, [sp, 0x40]                            |     var_40h = r4;
    0x00002f1a add r3, pc                                    |     r3 = 0x62fa;
    0x00002f1c strd r8, sb, [sp, 0x44]                       |     __asm ("strd r8, sb, [var_48h]");
    0x00002f20 str r3, [sp, 0x3c]                            |     var_3ch = r3;
    0x00002f22 add r3, sp, 0x78                              |     r3 += var_78h;
    0x00002f24 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00002f26 add r3, sp, 0x74                              |     r3 += s;
    0x00002f28 mov r4, sl                                    |     r4 = sl;
    0x00002f2a ldr.w sb, [sp, 0x30]                          |     sb = var_30h;
    0x00002f2e mov sl, r7                                    |     sl = r7;
    0x00002f30 str r3, [sp, 0x38]                            |     var_38h = r3;
    0x00002f32 str r5, [sp, 0x4c]                            |     var_4ch = r5;
    0x00002f34 b 0x2f9a                                      |     goto label_18;
                                                             | label_0:
    0x00002f36 mov r1, r7                                    |     r1 = r7;
    0x00002f38 mov r0, sb                                    |     r0 = sb;
    0x00002f3a blx 0x1834                                    |     fcn_00001834 ();
    0x00002f3e mov r1, r7                                    |     r1 = r7;
    0x00002f40 str r0, [sp, 0x74]                            |     s = r0;
    0x00002f42 ldr r0, [sp, 0x24]                            |     r0 = var_24h;
    0x00002f44 blx 0x1834                                    |     r0 = fcn_00001834 ();
    0x00002f48 mov r1, r0                                    |     r1 = r0;
    0x00002f4a str r0, [sp, 0x78]                            |     var_78h = r0;
    0x00002f4c ldr r0, [sp, 0x74]                            |     r0 = s;
    0x00002f4e blx 0x17c8                                    |     r0 = fcn_000017c8 ();
    0x00002f52 mov r8, r0                                    |     r8 = r0;
    0x00002f54 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002f56 bne.w 0x3306                                  |         goto label_19;
                                                             |     }
    0x00002f5a mov r3, r7                                    |     r3 = r7;
    0x00002f5c add r7, sp, 0x7c                              |     r7 += var_7ch;
    0x00002f5e ldr r2, [sp, 0x3c]                            |     r2 = var_3ch;
    0x00002f60 movs r1, 0x80                                 |     r1 = 0x80;
    0x00002f62 mov r0, r7                                    |     r0 = r7;
    0x00002f64 blx 0x1664                                    |     ipc_data_set_ipc_data_array ();
    0x00002f68 ldr r1, [sp, 0x78]                            |     r1 = var_78h;
    0x00002f6a mov r0, r8                                    |     r0 = r8;
    0x00002f6c blx 0x16c4                                    |     collection_load_instance_from_id ();
    0x00002f70 ldr r1, [sp, 0x74]                            |     r1 = s;
    0x00002f72 blx 0x16c4                                    |     collection_load_instance_from_id ();
    0x00002f76 mov r1, r7                                    |     r1 = r7;
    0x00002f78 mov r8, r0                                    |     r8 = r0;
    0x00002f7a mov r2, r0                                    |     r2 = r0;
    0x00002f7c ldr r0, [sp, 0x28]                            |     r0 = var_28h;
    0x00002f7e blx 0x14c4                                    |     fcn_000014c4 ();
    0x00002f82 ldr.w r3, [pc, 0x45c]                         |     r3 = *(0x33e2);
    0x00002f86 mov r0, r8                                    |     r0 = r8;
    0x00002f88 ldr.w r3, [sl, r3]                            |     r3 = *((sl + r3));
    0x00002f8c mov r1, r3                                    |     r1 = r3;
    0x00002f8e str r3, [sp, 0x30]                            |     var_30h = r3;
    0x00002f90 blx 0x1564                                    |     fcn_00001564 ();
                                                             |     do {
                                                             | label_1:
    0x00002f94 ldr r4, [r4, 4]                               |         r4 = *((r4 + 4));
    0x00002f96 cmp r4, 0                                     |         
                                                             |         if (r4 == 0) {
    0x00002f98 beq 0x306e                                    |             goto label_20;
                                                             |         }
                                                             | label_18:
    0x00002f9a ldr r7, [r4]                                  |         r7 = *(r4);
    0x00002f9c mov r1, fp                                    |         r1 = fp;
    0x00002f9e mov r0, r7                                    |         r0 = r7;
    0x00002fa0 blx 0x150c                                    |         r0 = fcn_0000150c ();
    0x00002fa4 cmp r0, 0                                     |         
    0x00002fa6 beq 0x2f94                                    |         
                                                             |     } while (r0 == 0);
    0x00002fa8 mov r1, r7                                    |     r1 = r7;
    0x00002faa mov r0, sb                                    |     r0 = sb;
    0x00002fac blx 0x1594                                    |     r0 = fcn_00001594 ();
    0x00002fb0 mov r5, r0                                    |     r5 = r0;
    0x00002fb2 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002fb4 bne 0x2f36                                    |         goto label_0;
                                                             |     }
    0x00002fb6 mov r0, r7                                    |     r0 = r7;
    0x00002fb8 blx 0x1524                                    |     r0 = fcn_00001524 ();
    0x00002fbc mov r8, r0                                    |     r8 = r0;
    0x00002fbe blx 0x1628                                    |     r0 = ipc_data_get_key_references ();
    0x00002fc2 add.w r2, r8, r0                              |     r2 = r8 + r0;
    0x00002fc6 mov r1, r8                                    |     r1 = r8;
    0x00002fc8 mov r0, sb                                    |     r0 = sb;
    0x00002fca strb r5, [r2, -0x1]                           |     *((r2 - 0x1)) = r5;
    0x00002fce blx 0x1594                                    |     r0 = fcn_00001594 ();
    0x00002fd2 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002fd4 beq 0x2f94                                    |         goto label_1;
                                                             |     }
    0x00002fd6 mov r1, r8                                    |     r1 = r8;
    0x00002fd8 mov r0, sb                                    |     r0 = sb;
    0x00002fda blx 0x1834                                    |     fcn_00001834 ();
    0x00002fde mov r1, r7                                    |     r1 = r7;
    0x00002fe0 str r0, [sp, 0x74]                            |     s = r0;
    0x00002fe2 ldr r0, [sp, 0x24]                            |     r0 = var_24h;
    0x00002fe4 blx 0x1834                                    |     r0 = fcn_00001834 ();
    0x00002fe8 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00002fea str r0, [sp, 0x78]                            |     var_78h = r0;
    0x00002fec cmp r3, 4                                     |     
                                                             |     if (r3 == 4) {
    0x00002fee beq.w 0x3340                                  |         goto label_21;
                                                             |     }
    0x00002ff2 add r0, sp, 0x74                              |     r0 += s;
    0x00002ff4 blx 0x161c                                    |     strlen (r0);
                                                             | label_6:
    0x00002ff8 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x00002ffa blx 0x161c                                    |     strlen (r0);
    0x00002ffe b 0x2f94                                      |     goto label_1;
                                                             | label_9:
    0x00003000 ldr r1, [pc, 0x3e0]                           |     
    0x00003002 mov r2, sb                                    |     r2 = sb;
    0x00003004 ldr r0, [sp, 0x58]                            |     r0 = var_58h;
    0x00003006 add r1, pc                                    |     r1 = 0x63ee;
    0x00003008 blx 0x14a0                                    |     fcn_000014a0 ();
    0x0000300c ldr r2, [sp, 0x58]                            |     r2 = var_58h;
    0x0000300e mov r3, sb                                    |     r3 = sb;
    0x00003010 mov r1, r8                                    |     r1 = r8;
    0x00003012 mov r0, r5                                    |     r0 = r5;
    0x00003014 str r2, [sp, 4]                               |     var_4h = r2;
    0x00003016 ldr r2, [pc, 0x3d0]                           |     
    0x00003018 add r2, pc                                    |     r2 = 0x6406;
    0x0000301a str r2, [sp]                                  |     *(sp) = r2;
    0x0000301c ldr r2, [sp, 0x54]                            |     r2 = var_54h;
    0x0000301e bl 0x2b6c                                     |     fcn_00002b6c (r0, r1, r2, r3, r4, r5);
    0x00003022 b 0x2d3a                                      |     goto label_2;
                                                             | label_12:
    0x00003024 ldr.w sl, [pc, 0x3c4]                         |     
    0x00003028 ldr r0, [sp, 0x1c]                            |     r0 = var_1ch;
    0x0000302a blx 0x17d4                                    |     fcn_000017d4 ();
    0x0000302e add sl, pc                                    |     sl = 0x641e;
    0x00003030 mov r1, sl                                    |     r1 = sl;
    0x00003032 blx 0x150c                                    |     r0 = fcn_0000150c ();
    0x00003036 mov r7, r0                                    |     r7 = r0;
    0x00003038 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000303a beq.w 0x3140                                  |         goto label_22;
                                                             |     }
                                                             |     do {
                                                             | label_4:
    0x0000303e ldr r0, [sp, 0x1c]                            |         r0 = var_1ch;
    0x00003040 blx 0x14f4                                    |         fcn_000014f4 ();
                                                             | label_11:
    0x00003044 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
                                                             |         if (r3 != 0) {
    0x00003046 cbz r3, 0x304e                                |             
    0x00003048 mov r0, r3                                    |             r0 = r3;
    0x0000304a blx 0x14f4                                    |             fcn_000014f4 ();
                                                             |         }
    0x0000304e ldr r1, [pc, 0x3a0]                           |         
    0x00003050 ldr r2, [sp, 0x60]                            |         r2 = var_60h;
    0x00003052 ldr r0, [sp, 0xc]                             |         r0 = var_ch;
    0x00003054 add r1, pc                                    |         r1 = 0x644a;
    0x00003056 blx 0x15b0                                    |         resource_get_default_interface ();
    0x0000305a add r0, sp, 0x5c                              |         r0 += var_5ch;
    0x0000305c blx 0x1694                                    |         resource_declare_interface_implementation ();
    0x00003060 add r0, sp, 0x60                              |         r0 += var_60h;
    0x00003062 blx 0x1694                                    |         resource_declare_interface_implementation ();
    0x00003066 ldr r0, [sp, 0x18]                            |         r0 = var_18h;
    0x00003068 blx 0x14f4                                    |         fcn_000014f4 ();
    0x0000306c b 0x2d4a                                      |         goto label_3;
                                                             | label_20:
    0x0000306e ldrd r4, r8, [sp, 0x40]                       |         __asm ("ldrd r4, r8, [var_40h]");
    0x00003072 ldrd sb, r5, [sp, 0x48]                       |         __asm ("ldrd sb, r5, [var_4ch]");
                                                             | label_7:
    0x00003076 ldr r7, [sp, 0x28]                            |         r7 = var_28h;
    0x00003078 ldr r2, [pc, 0x378]                           |         
    0x0000307a ldr r1, [pc, 0x37c]                           |         
    0x0000307c mov r0, r7                                    |         r0 = r7;
    0x0000307e add r2, pc                                    |         r2 = 0x6476;
    0x00003080 add r1, pc                                    |         r1 = 0x647e;
    0x00003082 blx 0x14a0                                    |         fcn_000014a0 ();
    0x00003086 ldr r0, [sp, 0x34]                            |         r0 = var_34h;
    0x00003088 blx 0x1548                                    |         fcn_00001548 ();
    0x0000308c ldr r2, [pc, 0x36c]                           |         
    0x0000308e mov r1, r8                                    |         r1 = r8;
    0x00003090 ldr r0, [r5, 0x14]                            |         r0 = *((r5 + 0x14));
    0x00003092 str r7, [sp, 0x78]                            |         var_78h = r7;
    0x00003094 add r2, pc                                    |         r2 = 0x6494;
    0x00003096 blx 0x1700                                    |         r0 = g_type_check_instance_cast ();
                                                             |         if (r0 != 0) {
    0x0000309a cbz r0, 0x30a8                                |             
    0x0000309c ldr r1, [pc, 0x360]                           |             
    0x0000309e mov r2, r7                                    |             r2 = r7;
    0x000030a0 ldr r0, [r0]                                  |             r0 = *(r0);
    0x000030a2 add r1, pc                                    |             r1 = 0x64a6;
    0x000030a4 blx 0x15b0                                    |             resource_get_default_interface ();
                                                             |         }
    0x000030a8 add r0, sp, 0x70                              |         r0 += var_70h;
    0x000030aa blx 0x1694                                    |         resource_declare_interface_implementation ();
    0x000030ae ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x000030b0 blx 0x1694                                    |         resource_declare_interface_implementation ();
                                                             | label_5:
    0x000030b4 blx 0x1588                                    |         fcn_00001588 ();
    0x000030b8 str r0, [sp, 0x78]                            |         var_78h = r0;
    0x000030ba mov r0, sb                                    |         r0 = sb;
    0x000030bc blx 0x17f8                                    |         fcn_000017f8 ();
    0x000030c0 ldr r1, [pc, 0x340]                           |         
    0x000030c2 mov r7, r0                                    |         r7 = r0;
    0x000030c4 add r1, pc                                    |         r1 = 0x64cc;
    0x000030c6 blx 0x16dc                                    |         interface_definition_destroy ();
    0x000030ca ldr r1, [pc, 0x33c]                           |         
    0x000030cc mov r2, r8                                    |         r2 = r8;
    0x000030ce mov r5, r0                                    |         r5 = r0;
    0x000030d0 ldr r0, [sp, 0x78]                            |         r0 = var_78h;
    0x000030d2 ldr.w r8, [pc, 0x338]                         |         
    0x000030d6 add r1, pc                                    |         r1 = 0x64e4;
    0x000030d8 blx 0x15ec                                    |         g_list_length ();
    0x000030dc ldr r1, [pc, 0x330]                           |         
    0x000030de add r8, pc                                    |         r8 = 0x64f0;
    0x000030e0 ldr r2, [pc, 0x330]                           |         
    0x000030e2 ldr r0, [sp, 0x78]                            |         r0 = var_78h;
    0x000030e4 add r1, pc                                    |         r1 = 0x64f8;
    0x000030e6 add r2, pc                                    |         r2 = 0x64fe;
    0x000030e8 blx 0x14a0                                    |         fcn_000014a0 ();
    0x000030ec ldr r1, [pc, 0x328]                           |         
    0x000030ee mov r2, r5                                    |         r2 = r5;
    0x000030f0 ldr r0, [sp, 0x78]                            |         r0 = var_78h;
    0x000030f2 add r1, pc                                    |         r1 = 0x650e;
    0x000030f4 blx 0x1554                                    |         fcn_00001554 ();
    0x000030f8 mov r0, r5                                    |         r0 = r5;
    0x000030fa blx 0x1548                                    |         fcn_00001548 ();
    0x000030fe mov r0, r7                                    |         r0 = r7;
    0x00003100 movs r2, 0                                    |         r2 = 0;
    0x00003102 mov r1, r8                                    |         r1 = r8;
    0x00003104 blx 0x1804                                    |         r0 = fcn_00001804 ();
                                                             |         if (r0 != 0) {
    0x00003108 cbz r0, 0x3114                                |             
    0x0000310a mov r2, r0                                    |             r2 = r0;
    0x0000310c mov r1, r8                                    |             r1 = r8;
    0x0000310e ldr r0, [sp, 0x78]                            |             r0 = var_78h;
    0x00003110 blx 0x14a0                                    |             fcn_000014a0 ();
                                                             |         }
    0x00003114 ldr r1, [pc, 0x304]                           |         
    0x00003116 ldr r0, [sp, 0x2c]                            |         r0 = var_2ch;
    0x00003118 ldr r2, [sp, 0x78]                            |         r2 = var_78h;
    0x0000311a add r1, pc                                    |         r1 = 0x653a;
    0x0000311c blx 0x15b0                                    |         resource_get_default_interface ();
    0x00003120 mov r0, sb                                    |         r0 = sb;
    0x00003122 blx 0x14f4                                    |         fcn_000014f4 ();
    0x00003126 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x00003128 blx 0x1694                                    |         resource_declare_interface_implementation ();
                                                             | label_14:
    0x0000312c add r0, sp, 0x6c                              |         r0 += var_6ch;
    0x0000312e blx 0x1694                                    |         resource_declare_interface_implementation ();
                                                             | label_13:
    0x00003132 add r0, sp, 0x68                              |         r0 += var_68h;
    0x00003134 blx 0x1694                                    |         resource_declare_interface_implementation ();
    0x00003138 ldr r0, [sp, 0x20]                            |         r0 = var_20h;
    0x0000313a blx 0x14f4                                    |         fcn_000014f4 ();
    0x0000313e b 0x303e                                      |         
                                                             |     } while (1);
                                                             | label_22:
    0x00003140 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x00003142 blx 0x14ac                                    |     fcn_000014ac ();
    0x00003146 mov r1, sl                                    |     r1 = sl;
    0x00003148 mov r2, r7                                    |     r2 = r7;
    0x0000314a str r0, [sp, 0x6c]                            |     var_6ch = r0;
    0x0000314c mov r0, sb                                    |     r0 = sb;
    0x0000314e blx 0x15e0                                    |     ipc_data_set_integer ();
    0x00003152 str r0, [sp, 0x70]                            |     var_70h = r0;
    0x00003154 blx 0x1604                                    |     r0 = resource_get_domain ();
    0x00003158 mov r1, r0                                    |     r1 = r0;
    0x0000315a ldr r0, [sp, 0x10]                            |     r0 = var_10h;
    0x0000315c blx 0x170c                                    |     stack_chk_fail ();
    0x00003160 ldr r3, [pc, 0x2bc]                           |     
    0x00003162 ldr r2, [sp, 0x70]                            |     r2 = var_70h;
    0x00003164 ldr r1, [r5]                                  |     r1 = *(r5);
    0x00003166 add r3, pc                                    |     r3 = 0x658a;
    0x00003168 blx 0x1570                                    |     fcn_00001570 ();
    0x0000316c ldr r3, [pc, 0x2b4]                           |     
    0x0000316e mov sl, r0                                    |     sl = r0;
    0x00003170 str r0, [sp, 0x20]                            |     var_20h = r0;
    0x00003172 add r0, sp, 0x70                              |     r0 += var_70h;
    0x00003174 add r3, pc                                    |     r3 = 0x659c;
    0x00003176 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00003178 blx 0x16e8                                    |     ipc_data_get_value_array ();
    0x0000317c mov r0, sl                                    |     r0 = sl;
    0x0000317e blx 0x17f8                                    |     fcn_000017f8 ();
    0x00003182 ldr r1, [sp, 0x14]                            |     r1 = var_14h;
    0x00003184 mov sl, r0                                    |     sl = r0;
    0x00003186 blx 0x17ec                                    |     fcn_000017ec ();
    0x0000318a str r0, [sp, 0x74]                            |     s = r0;
    0x0000318c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000318e beq 0x3236                                    |         
    0x00003190 ldr r2, [pc, 0x294]                           |         
    0x00003192 mov r1, fp                                    |         r1 = fp;
    0x00003194 ldr r0, [sp, 0x6c]                            |         r0 = var_6ch;
    0x00003196 add r2, pc                                    |         r2 = 0x65c2;
    0x00003198 blx 0x14a0                                    |         fcn_000014a0 ();
    0x0000319c mov r2, r7                                    |         r2 = r7;
    0x0000319e ldr r7, [sp, 0x60]                            |         r7 = var_60h;
    0x000031a0 mov r1, r8                                    |         r1 = r8;
    0x000031a2 ldr r0, [sp, 0x74]                            |         r0 = s;
    0x000031a4 mov fp, r7                                    |         
    0x000031a6 ldr r7, [sp, 0x6c]                            |         r7 = var_6ch;
    0x000031a8 str r7, [sp, 0x24]                            |         var_24h = r7;
    0x000031aa blx 0x14dc                                    |         fcn_000014dc ();
    0x000031ae ldr r1, [sp, 0x14]                            |         r1 = var_14h;
    0x000031b0 mov r2, r0                                    |         r2 = r0;
    0x000031b2 mov r7, r0                                    |         r7 = r0;
    0x000031b4 mov r3, sb                                    |         r3 = sb;
    0x000031b6 mov r0, r5                                    |         r0 = r5;
    0x000031b8 bl 0x27dc                                     |         r0 = fcn_000027dc (r0, r1, r2, r3);
    0x000031bc mov r8, r0                                    |         r8 = r0;
    0x000031be cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000031c0 beq 0x3236                                    |             goto label_23;
                                                             |         }
    0x000031c2 ldr r2, [pc, 0x268]                           |         
    0x000031c4 mov r1, r7                                    |         r1 = r7;
    0x000031c6 ldr r0, [r5, 0x10]                            |         r0 = *((r5 + 0x10));
    0x000031c8 add r2, pc                                    |         r2 = 0x65fa;
    0x000031ca blx 0x1700                                    |         g_type_check_instance_cast ();
    0x000031cc eors.w r1, sl, r8, asr 12                     |         r1 = sl ^ (r8 >> 12);
    0x000031d0 ldr r1, [pc, 0x25c]                           |         
    0x000031d2 ldr r0, [r0]                                  |         r0 = *(r0);
    0x000031d4 ldr r2, [sp, 0x24]                            |         r2 = var_24h;
    0x000031d6 add r1, pc                                    |         r1 = 0x660a;
    0x000031d8 blx 0x15b0                                    |         resource_get_default_interface ();
    0x000031da invalid                                       |         
    0x000031dc blx 0x1588                                    |         fcn_00001588 ();
    0x000031e0 str r0, [sp, 0x78]                            |         var_78h = r0;
    0x000031e2 mov r0, r8                                    |         r0 = r8;
    0x000031e4 blx 0x17f8                                    |         fcn_000017f8 ();
    0x000031e8 ldr r1, [pc, 0x248]                           |         
    0x000031ea add r1, pc                                    |         r1 = 0x6622;
    0x000031ec blx 0x16dc                                    |         interface_definition_destroy ();
    0x000031f0 ldr r1, [pc, 0x244]                           |         
    0x000031f2 mov r2, r7                                    |         r2 = r7;
    0x000031f4 mov r7, r0                                    |         r7 = r0;
    0x000031f6 ldr r0, [sp, 0x78]                            |         r0 = var_78h;
    0x000031f8 add r1, pc                                    |         r1 = 0x6634;
    0x000031fa blx 0x15ec                                    |         g_list_length ();
    0x000031fe ldr r1, [pc, 0x23c]                           |         
    0x00003200 ldr r2, [pc, 0x23c]                           |         
    0x00003202 ldr r0, [sp, 0x78]                            |         r0 = var_78h;
    0x00003204 add r1, pc                                    |         r1 = 0x6646;
    0x00003206 add r2, pc                                    |         r2 = 0x664a;
    0x00003208 blx 0x14a0                                    |         fcn_000014a0 ();
    0x0000320c ldr r1, [pc, 0x234]                           |         
    0x0000320e mov r2, r7                                    |         r2 = r7;
    0x00003210 ldr r0, [sp, 0x78]                            |         r0 = var_78h;
    0x00003212 add r1, pc                                    |         r1 = 0x665a;
    0x00003214 blx 0x1554                                    |         fcn_00001554 ();
    0x00003216 invalid                                       |         
    0x0000321a blx 0x1548                                    |         fcn_00001548 ();
    0x0000321e ldr r1, [pc, 0x228]                           |         
    0x00003220 mov r0, fp                                    |         r0 = fp;
    0x00003222 ldr r2, [sp, 0x78]                            |         r2 = var_78h;
    0x00003224 add r1, pc                                    |         r1 = 0x6672;
    0x00003226 blx 0x15b0                                    |         resource_get_default_interface ();
    0x0000322a mov r0, r8                                    |         r0 = r8;
    0x0000322c blx 0x14f4                                    |         fcn_000014f4 ();
    0x00003230 add r0, sp, 0x78                              |         r0 += var_78h;
    0x00003232 blx 0x1694                                    |         resource_declare_interface_implementation ();
                                                             |     }
                                                             | label_23:
    0x00003236 add r0, sp, 0x74                              |     r0 += s;
    0x00003238 ldr r7, [pc, 0x210]                           |     
    0x0000323a blx 0x1694                                    |     resource_declare_interface_implementation ();
    0x0000323e ldr r2, [pc, 0x210]                           |     
    0x00003240 add r7, pc                                    |     r7 = 0x6690;
    0x00003242 ldr r0, [sp, 0x6c]                            |     r0 = var_6ch;
    0x00003244 mov r1, r7                                    |     r1 = r7;
    0x00003246 ldr.w r8, [pc, 0x20c]                         |     
    0x0000324a add r2, pc                                    |     r2 = 0x66a0;
    0x0000324c blx 0x14a0                                    |     fcn_000014a0 ();
    0x00003250 ldr r3, [sp, 0x60]                            |     r3 = var_60h;
    0x00003252 mov r2, sl                                    |     r2 = sl;
    0x00003254 ldr r1, [pc, 0x200]                           |     
    0x00003256 mov r0, r5                                    |     r0 = r5;
    0x00003258 add r8, pc                                    |     r8 = 0x66b2;
    0x0000325a str r3, [sp]                                  |     *(sp) = r3;
    0x0000325c add r1, pc                                    |     r1 = 0x66b8;
    0x0000325e ldr r3, [sp, 0x6c]                            |     r3 = var_6ch;
    0x00003260 bl 0x29d0                                     |     fcn_000029d0 (r0, r1, r2, r3, r4);
    0x00003264 ldr r2, [pc, 0x1f4]                           |     
    0x00003266 mov r1, r7                                    |     r1 = r7;
    0x00003268 ldr r0, [sp, 0x6c]                            |     r0 = var_6ch;
    0x0000326a add r2, pc                                    |     r2 = 0x66ca;
    0x0000326c blx 0x14a0                                    |     fcn_000014a0 ();
    0x00003270 ldr r3, [sp, 0x60]                            |     r3 = var_60h;
    0x00003272 mov r2, sl                                    |     r2 = sl;
    0x00003274 ldr r1, [pc, 0x1e8]                           |     
    0x00003276 mov r0, r5                                    |     r0 = r5;
    0x00003278 str r3, [sp]                                  |     *(sp) = r3;
    0x0000327a add r1, pc                                    |     r1 = 0x66de;
    0x0000327c ldr r3, [sp, 0x6c]                            |     r3 = var_6ch;
    0x0000327e bl 0x29d0                                     |     fcn_000029d0 (r0, r1, r2, r3, r4);
    0x00003282 ldr r2, [pc, 0x1e0]                           |     
    0x00003284 mov r1, r7                                    |     r1 = r7;
    0x00003286 ldr r0, [sp, 0x6c]                            |     r0 = var_6ch;
    0x00003288 add r2, pc                                    |     r2 = 0x66f2;
    0x0000328a blx 0x14a0                                    |     fcn_000014a0 ();
    0x0000328e ldr r3, [sp, 0x60]                            |     r3 = var_60h;
    0x00003290 mov r2, sl                                    |     r2 = sl;
    0x00003292 ldr r1, [pc, 0x1d4]                           |     
    0x00003294 mov r0, r5                                    |     r0 = r5;
    0x00003296 str r3, [sp]                                  |     *(sp) = r3;
    0x00003298 add r1, pc                                    |     r1 = 0x6706;
    0x0000329a ldr r3, [sp, 0x6c]                            |     r3 = var_6ch;
    0x0000329c bl 0x29d0                                     |     fcn_000029d0 (r0, r1, r2, r3, r4);
    0x000032a0 ldr r2, [pc, 0x1c8]                           |     
    0x000032a2 mov r1, r7                                    |     r1 = r7;
    0x000032a4 ldr r0, [sp, 0x6c]                            |     r0 = var_6ch;
    0x000032a6 add r2, pc                                    |     r2 = 0x6716;
    0x000032a8 blx 0x14a0                                    |     fcn_000014a0 ();
    0x000032ac ldr r3, [sp, 0x60]                            |     r3 = var_60h;
    0x000032ae mov r2, sl                                    |     r2 = sl;
    0x000032b0 ldr r1, [pc, 0x1bc]                           |     
    0x000032b2 mov r0, r5                                    |     r0 = r5;
    0x000032b4 str r3, [sp]                                  |     *(sp) = r3;
    0x000032b6 add r1, pc                                    |     r1 = 0x672a;
    0x000032b8 ldr r3, [sp, 0x6c]                            |     r3 = var_6ch;
    0x000032ba bl 0x29d0                                     |     fcn_000029d0 (r0, r1, r2, r3, r4);
    0x000032be ldr r2, [pc, 0x1b4]                           |     
    0x000032c0 mov r1, r7                                    |     r1 = r7;
    0x000032c2 ldr r0, [sp, 0x6c]                            |     r0 = var_6ch;
    0x000032c4 add r2, pc                                    |     r2 = 0x673e;
    0x000032c6 blx 0x14a0                                    |     fcn_000014a0 ();
    0x000032ca ldr r3, [sp, 0x60]                            |     r3 = var_60h;
    0x000032cc mov r2, sl                                    |     r2 = sl;
    0x000032ce ldr r1, [pc, 0x1a8]                           |     
    0x000032d0 mov r0, r5                                    |     r0 = r5;
    0x000032d2 str r3, [sp]                                  |     *(sp) = r3;
    0x000032d4 add r1, pc                                    |     r1 = 0x6752;
    0x000032d6 ldr r3, [sp, 0x6c]                            |     r3 = var_6ch;
    0x000032d8 bl 0x29d0                                     |     fcn_000029d0 (r0, r1, r2, r3, r4);
    0x000032dc add r0, sp, 0x6c                              |     r0 += var_6ch;
    0x000032de blx 0x1694                                    |     resource_declare_interface_implementation ();
    0x000032e2 mov r0, sl                                    |     r0 = sl;
    0x000032e4 mov r1, r8                                    |     r1 = r8;
    0x000032e6 blx 0x17ec                                    |     r0 = fcn_000017ec ();
    0x000032ea mov r2, r0                                    |     r2 = r0;
    0x000032ec str r0, [sp, 0x78]                            |     var_78h = r0;
                                                             |     if (r0 != 0) {
    0x000032ee cbz r0, 0x32fe                                |         
    0x000032f0 ldr r0, [sp, 0x60]                            |         r0 = var_60h;
    0x000032f2 mov r1, r8                                    |         r1 = r8;
    0x000032f4 blx 0x15b0                                    |         resource_get_default_interface ();
    0x000032f8 add r0, sp, 0x78                              |         r0 += var_78h;
    0x000032fa blx 0x1694                                    |         resource_declare_interface_implementation ();
                                                             |     }
    0x000032fe ldr r0, [sp, 0x20]                            |     r0 = var_20h;
    0x00003300 blx 0x14f4                                    |     fcn_000014f4 ();
    0x00003304 b 0x303e                                      |     goto label_4;
                                                             | label_19:
    0x00003306 ldr r2, [sp, 0x74]                            |     r2 = s;
    0x00003308 mov r1, r7                                    |     r1 = r7;
    0x0000330a ldr r0, [sp, 0x28]                            |     r0 = var_28h;
    0x0000330c blx 0x1870                                    |     fcn_00001870 ();
    0x00003310 ldr r0, [sp, 0x38]                            |     r0 = var_38h;
    0x00003312 blx 0x161c                                    |     strlen (r0);
    0x00003316 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x00003318 blx 0x161c                                    |     strlen (r0);
    0x0000331c b 0x2f94                                      |     goto label_1;
                                                             | label_15:
    0x0000331e str r0, [sp, 0x70]                            |     var_70h = r0;
                                                             | label_16:
    0x00003320 ldr r2, [pc, 0x158]                           |     
    0x00003322 mov r1, r8                                    |     r1 = r8;
    0x00003324 ldr r0, [r5, 0x14]                            |     r0 = *((r5 + 0x14));
    0x00003326 add r2, pc                                    |     r2 = 0x67a6;
    0x00003328 blx 0x1700                                    |     r0 = g_type_check_instance_cast ();
                                                             |     if (r0 != 0) {
    0x0000332c cbz r0, 0x336c                                |         
    0x0000332e ldr r1, [pc, 0x150]                           |         
    0x00003330 add r3, sp, 0x78                              |         r3 += var_78h;
    0x00003332 ldr r0, [r0]                                  |         r0 = *(r0);
    0x00003334 ldr r2, [sp, 0x30]                            |         r2 = var_30h;
    0x00003336 add r1, pc                                    |         r1 = 0x67bc;
    0x00003338 str r3, [sp, 0x14]                            |         var_14h = r3;
    0x0000333a blx 0x15b0                                    |         resource_get_default_interface ();
    0x0000333e b 0x30b4                                      |         goto label_5;
                                                             | label_21:
    0x00003340 mov r1, r7                                    |         r1 = r7;
    0x00003342 ldr r0, [sp, 0x24]                            |         r0 = var_24h;
    0x00003344 blx 0x16f4                                    |         g_list_find_custom ();
    0x00003348 ldr r1, [sp, 0x74]                            |         r1 = s;
    0x0000334a blx 0x16c4                                    |         collection_load_instance_from_id ();
    0x0000334e mov r1, r7                                    |         r1 = r7;
    0x00003350 mov r8, r0                                    |         r8 = r0;
    0x00003352 mov r2, r0                                    |         r2 = r0;
    0x00003354 ldr r0, [sp, 0x28]                            |         r0 = var_28h;
    0x00003356 blx 0x14c4                                    |         fcn_000014c4 ();
    0x0000335a ldr r3, [pc, 0x84]                            |         r3 = *(0x33e2);
    0x0000335c mov r0, r8                                    |         r0 = r8;
    0x0000335e ldr.w r3, [sl, r3]                            |         r3 = *((sl + r3));
    0x00003362 mov r1, r3                                    |         r1 = r3;
    0x00003364 str r3, [sp, 0x30]                            |         var_30h = r3;
    0x00003366 blx 0x1564                                    |         fcn_00001564 ();
    0x0000336a b 0x2ff8                                      |         goto label_6;
                                                             |     }
    0x0000336c add r3, sp, 0x78                              |     r3 += var_78h;
    0x0000336e str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00003370 b 0x30b4                                      |     goto label_5;
                                                             | label_17:
    0x00003372 add r3, sp, 0x78                              |     r3 += var_78h;
    0x00003374 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00003376 b 0x3076                                      |     goto label_7;
                                                             | label_10:
    0x00003378 blx 0x1718                                    |     get_domain_context_from_system_registry ()
    0x0000337c adds r1, 0xda                                 |     r1 += 0xda;
    0x0000337e movs r0, r0                                   |     
    0x00003380 lsls r4, r6, 5                                |     r4 = r6 << 5;
    0x00003382 movs r0, r0                                   |     
    0x00003384 asrs r4, r3, 3                                |     r4 = r3 >> 3;
    0x00003386 movs r0, r0                                   |     
    0x00003388 adds r1, 0xcc                                 |     r1 += 0xcc;
    0x0000338a movs r0, r0                                   |     
    0x0000338c asrs r4, r1, 1                                |     r4 = r1 >> 1;
    0x0000338e movs r0, r0                                   |     
    0x00003390 asrs r6, r7, 0xa                              |     r6 = r7 >> 0xa;
    0x00003392 movs r0, r0                                   |     
    0x00003394 asrs r0, r7, 2                                |     r0 = r7 >> 2;
    0x00003396 movs r0, r0                                   |     
    0x00003398 asrs r0, r3, 0xa                              |     r0 = r3 >> 0xa;
    0x0000339a movs r0, r0                                   |     
    0x0000339c asrs r6, r0, 0xa                              |     r6 = r0 >> 0xa;
    0x0000339e movs r0, r0                                   |     
    0x000033a0 asrs r2, r7, 9                                |     r2 = r7 >> 9;
    0x000033a2 movs r0, r0                                   |     
    0x000033a4 asrs r4, r6, 9                                |     r4 = r6 >> 9;
    0x000033a6 movs r0, r0                                   |     
    0x000033a8 asrs r6, r1, 0xf                              |     r6 = r1 >> 0xf;
    0x000033aa movs r0, r0                                   |     
    0x000033ac adds r1, 0xe                                  |     r1 += 0xe;
    0x000033ae movs r0, r0                                   |     
    0x000033b0 asrs r2, r6, 7                                |     r2 = r6 >> 7;
    0x000033b2 movs r0, r0                                   |     
    0x000033b4 lsrs r0, r2, 0x1f                             |     r0 = r2 >> 0x1f;
    0x000033b6 movs r0, r0                                   |     
    0x000033b8 asrs r4, r5, 7                                |     r4 = r5 >> 7;
    0x000033ba movs r0, r0                                   |     
    0x000033bc asrs r6, r3, 7                                |     r6 = r3 >> 7;
    0x000033be movs r0, r0                                   |     
    0x000033c0 lsrs r0, r2, 0x1c                             |     r0 = r2 >> 0x1c;
    0x000033c2 movs r0, r0                                   |     
    0x000033c4 asrs r0, r3, 6                                |     r0 = r3 >> 6;
    0x000033c6 movs r0, r0                                   |     
    0x000033c8 lsrs r0, r0, 0x1e                             |     r0 >>= 0x1e;
    0x000033ca movs r0, r0                                   |     
    0x000033cc asrs r6, r5, 5                                |     r6 = r5 >> 5;
    0x000033ce movs r0, r0                                   |     
    0x000033d0 asrs r0, r2, 5                                |     r0 = r2 >> 5;
    0x000033d2 movs r0, r0                                   |     
    0x000033d4 stc p15, c15, [r3, -0x3fc]                    |     __asm ("stc p15, c15, [r3, -0x3fc]");
    0x000033d8 lsrs r4, r4, 0x1a                             |     r4 >>= 0x1a;
    0x000033da movs r0, r0                                   |     
    0x000033dc lsrs r2, r5, 0x1e                             |     r2 = r5 >> 0x1e;
    0x000033de movs r0, r0                                   |     
    0x000033e0 lsls r4, r3, 5                                |     r4 = r3 << 5;
    0x000033e2 movs r0, r0                                   |     
    0x000033e4 lsrs r6, r7, 0x1d                             |     r6 = r7 >> 0x1d;
    0x000033e6 movs r0, r0                                   |     
    0x000033e8 lsrs r4, r2, 0x1e                             |     r4 = r2 >> 0x1e;
    0x000033ea movs r0, r0                                   |     
    0x000033ec asrs r2, r2, 0x20                             |     r2 >>= 0x20;
    0x000033ee movs r0, r0                                   |     
    0x000033f0 lsrs r0, r4, 0x1d                             |     r0 = r4 >> 0x1d;
    0x000033f2 movs r0, r0                                   |     
    0x000033f4 lsrs r2, r0, 0x1e                             |     r2 = r0 >> 0x1e;
    0x000033f6 movs r0, r0                                   |     
    0x000033f8 lsrs r4, r0, 0x1c                             |     r4 = r0 >> 0x1c;
    0x000033fa movs r0, r0                                   |     
    0x000033fc adc.w pc, sb, pc, ror 31                      |     __asm ("adc.w pc, sb, pc, ror 31");
                                                             | }

[*] Function system used 12 times libpinchart-api.so.0.0.1