[*] Binary protection state of loggen

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


[*] Function fprintf tear down of loggen

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x2c40 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00002c40 ()                                  | void fcn_00002c40 (int16_t arg_10h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_44h, int16_t arg_13ch, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     r3 = arg4;
                                                             | label_3:
    0x0000211a bl 0x45f8                                     |     reloc_deinit ();
    0x0000211e ldr.w r1, [pc, 0x958]                         |     
    0x00002122 movs r7, 0                                    |     r7 = 0;
    0x00002124 ldr.w r2, [pc, 0x954]                         |     r2 = *(0x00002a7c);
    0x00002128 mov r3, r7                                    |     r3 = r7;
    0x0000212a str r7, [sp]                                  |     *(sp) = r7;
    0x0000212c add r1, pc                                    |     r1 = 0x4baa;
    0x0000212e add r2, pc                                    |     r2 += pc;
    0x00002130 mov r0, r1                                    |     r0 = r1;
    0x00002132 blx 0x1b64                                    |     r0 = g_option_group_new ();
    0x00002136 mov r5, r0                                    |     r5 = r0;
    0x00002138 bl 0x3310                                     |     r0 = get_file_reader_options ();
    0x0000213c mov r1, r0                                    |     r1 = r0;
    0x0000213e mov r0, r5                                    |     r0 = r5;
    0x00002140 blx 0x1b94                                    |     g_option_group_add_entries ();
    0x00002144 mov r1, r5                                    |     r1 = r5;
    0x00002146 ldr r5, [sp, 0x1c]                            |     r5 = *(arg_1ch);
    0x00002148 mov r0, r5                                    |     r0 = r5;
    0x0000214a blx 0x1aec                                    |     g_option_context_add_group ();
    0x0000214e ldr r3, [sp, 0x28]                            |     r3 = *(arg_28h);
    0x00002150 mov r2, sl                                    |     r2 = sl;
    0x00002152 ldr r1, [sp, 0x30]                            |     r1 = *(arg_30h);
    0x00002154 mov r0, r5                                    |     r0 = r5;
    0x00002156 str r7, [sp, 0x44]                            |     *(arg_44h) = r7;
    0x00002158 blx 0x1ae0                                    |     r0 = g_option_context_parse ();
    0x0000215c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000215e beq.w 0x2436                                  |         goto label_14;
                                                             |     }
    0x00002162 ldr.w r3, [pc, 0x91c]                         |     r3 = *(0x00002a80);
    0x00002166 add r3, pc                                    |     r3 += pc;
    0x00002168 ldr r0, [r3, 0x44]                            |     r0 = *((r3 + 0x44));
    0x0000216a blx 0x1d04                                    |     fcn_00001d04 ();
    0x0000216e ldr r3, [sp, 0x30]                            |     r3 = *(arg_30h);
    0x00002170 ldr r3, [r3]                                  |     r3 = *(r3);
    0x00002172 cmp r3, 2                                     |     
                                                             |     if (r3 <= 2) {
    0x00002174 bgt.w 0x2280                                  |         
                                                             |         if (r3 == 2) {
    0x00002178 beq.w 0x2848                                  |             goto label_15;
                                                             |         }
    0x0000217c ldr.w r3, [pc, 0x904]                         |         
    0x00002180 vmov.i32 d16, 0                               |         __asm ("vmov.i32 d16, 0");
    0x00002184 add r3, pc                                    |         r3 = 0x4c0c;
    0x00002186 adds r3, 0x1c                                 |         r3 += 0x1c;
    0x00002188 vst1.32 {d16}, [r3]                           |         __asm ("vst1.32 {d16}, [r3]");
    0x0000218c blx 0x1b58                                    |         r0 = get_debug_level ();
    0x00002190 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00002192 beq.w 0x229e                                  |             goto label_5;
                                                             |         }
    0x00002196 ldr.w r0, [pc, 0x8f0]                         |         r0 = *(0x00002a88);
    0x0000219a add r0, pc                                    |         r0 += pc;
    0x0000219c blx 0x1b70                                    |         g_path_get_basename ();
    0x000021a0 ldr r2, [sp, 0x20]                            |         r2 = *(arg_20h);
    0x000021a2 mov r5, r0                                    |         r5 = r0;
    0x000021a4 ldr.w r3, [pc, 0x8c4]                         |         r3 = *(0x2a6c);
    0x000021a8 movs r1, 1                                    |         r1 = 1;
    0x000021aa ldr r7, [r2, r3]                              |         r7 = *((r2 + r3));
    0x000021ac ldr.w r3, [pc, 0x8dc]                         |         
    0x000021b0 ldr.w r2, [pc, 0x8dc]                         |         
    0x000021b4 add r3, pc                                    |         r3 = 0x4c44;
    0x000021b6 adds r3, 0x5c                                 |         r3 += 0x5c;
    0x000021b8 add r2, pc                                    |         r2 = 0x4c4c;
    0x000021ba str r3, [sp]                                  |         *(sp) = r3;
    0x000021bc movw r3, 0x22e                                |         r3 = 0x22e;
    0x000021c0 str r3, [sp, 4]                               |         var_4h = r3;
    0x000021c2 mov r3, r0                                    |         r3 = r0;
    0x000021c4 ldr r0, [r7]                                  |         r0 = *(r7);
    0x000021c6 blx 0x1bdc                                    |         fprintf_chk ()
    0x000021ca ldr.w r0, [pc, 0x8c8]                         |         
    0x000021ce movs r2, 0x1d                                 |         r2 = 0x1d;
    0x000021d0 ldr r3, [r7]                                  |         r3 = *(r7);
    0x000021d2 movs r1, 1                                    |         r1 = 1;
    0x000021d4 add r0, pc                                    |         r0 = 0x4c6e;
    0x000021d6 blx 0x1db4                                    |         fcn_00001db4 ();
    0x000021da mov r0, r5                                    |         r0 = r5;
    0x000021dc blx 0x1d14                                    |         g_hash_table_unref ();
    0x000021e0 b 0x229e                                      |         
                                                             |     } else {
    0x00002280 ldr.w r3, [sl]                                |         r3 = *(sl);
    0x00002284 ldr.w r5, [pc, 0x834]                         |         r5 = *(0x00002abc);
    0x00002288 ldr r0, [r3, 4]                               |         r0 = *((r3 + 4));
    0x0000228a blx 0x1be8                                    |         g_strdup ();
    0x0000228e ldr.w r3, [sl]                                |         r3 = *(sl);
    0x00002292 add r5, pc                                    |         r5 += pc;
    0x00002294 str r0, [r5, 0x1c]                            |         *((r5 + 0x1c)) = r0;
    0x00002296 ldr r0, [r3, 8]                               |         r0 = *((r3 + 8));
    0x00002298 blx 0x1be8                                    |         g_strdup ();
    0x0000229c str r0, [r5, 0x20]                            |         *((r5 + 0x20)) = r0;
                                                             |     }
                                                             | label_5:
    0x0000229e blx 0x1b58                                    |     r0 = get_debug_level ();
    0x000022a2 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000022a4 bne.w 0x267a                                  |         goto label_16;
                                                             |     }
                                                             | label_2:
    0x000022a8 ldr.w r7, [pc, 0x814]                         |     
    0x000022ac add r7, pc                                    |     r7 = 0x4d70;
    0x000022ae ldr r3, [r7]                                  |     r3 = *(0x4d70);
    0x000022b0 cmp.w r3, 0x2000                              |     
                                                             |     if (r3 > 0x2000) {
    0x000022b4 bgt.w 0x2622                                  |         goto label_17;
                                                             |     }
                                                             | label_1:
    0x000022b8 ldr.w r7, [pc, 0x808]                         |     
    0x000022bc ldr.w r5, [pc, 0x808]                         |     
    0x000022c0 add r7, pc                                    |     r7 = 0x4d88;
    0x000022c2 ldr r0, [r7, 0x10]                            |     r0 = *(0x4d98);
    0x000022c4 add r5, pc                                    |     r5 = "count=%lli, rate = %.2lf msg/sec\n";
    0x000022c6 bl 0x331c                                     |     r0 = init_file_reader ();
    0x000022ca cmp r0, 0                                     |     
    0x000022cc str r0, [r5, 4]                               |     *((r5 + 4)) = r0;
                                                             |     if (r0 < 0) {
    0x000022ce blt.w 0x2806                                  |         goto label_18;
                                                             |     }
    0x000022d2 add.w r0, r5, 8                               |     r0 = r5 + 8;
    0x000022d6 blx 0x1bc4                                    |     g_mutex_init ();
    0x000022da cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x000022dc beq.w 0x2964                                  |         goto label_19;
                                                             |     }
    0x000022e0 ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x000022e2 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000022e4 beq.w 0x29c0                                  |         goto label_20;
                                                             |     }
    0x000022e8 movs r5, 0                                    |     r5 = 0;
                                                             |     do {
    0x000022ea ldr r2, [r4]                                  |         r2 = *(r4);
    0x000022ec ldr.w r2, [r2, r5, lsl 2]                     |         offset_0 = r5 << 2;
                                                             |         r2 = *((r2 + offset_0));
                                                             |         if (r2 != 0) {
    0x000022f0 cbz r2, 0x2302                                |             
    0x000022f2 ldr r1, [r2, 0x18]                            |             r1 = *((r2 + 0x18));
                                                             |             if (r1 == 0) {
    0x000022f4 cbz r1, 0x2302                                |                 goto label_21;
                                                             |             }
    0x000022f6 ldr r3, [r2, 0x1c]                            |             r3 = *((r2 + 0x1c));
    0x000022f8 blx r3                                        |             r0 = uint32_t (*r3)(uint32_t) (r3);
    0x000022fa cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x000022fc bne.w 0x28f4                                  |                 goto label_22;
                                                             |             }
    0x00002300 ldr r3, [r4, 4]                               |             r3 = *((r4 + 4));
                                                             |         }
                                                             | label_21:
    0x00002302 adds r5, 1                                    |         r5++;
    0x00002304 cmp r3, r5                                    |         
    0x00002306 bhi 0x22ea                                    |         
                                                             |     } while (r3 > r5);
    0x00002308 ldr.w r3, [pc, 0x7c0]                         |     
    0x0000230c add r3, pc                                    |     r3 = 0x4ddc;
    0x0000230e ldr r0, [r3]                                  |     r0 = *(0x4ddc);
    0x00002310 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002312 beq.w 0x29c8                                  |         goto label_23;
                                                             |     }
                                                             | label_8:
    0x00002316 ldr.w r3, [pc, 0x7b8]                         |     r3 = *(0x00002ad0);
    0x0000231a add r3, pc                                    |     r3 += pc;
    0x0000231c ldr r1, [r3, 0x48]                            |     r1 = *((r3 + 0x48));
    0x0000231e clz r1, r1                                    |     r1 &= r1;
    0x00002322 lsrs r1, r1, 5                                |     r1 >>= 5;
                                                             | label_9:
    0x00002324 ldr.w r5, [pc, 0x7ac]                         |     
    0x00002328 ldr.w r7, [pc, 0x7ac]                         |     r7 = *(0x00002ad8);
    0x0000232c add r5, pc                                    |     r5 = 0x4e04;
    0x0000232e add r7, pc                                    |     r7 += pc;
    0x00002330 ldr r3, [r5, 0x4c]                            |     r3 = *(0x4e50);
    0x00002332 ldr r2, [r7]                                  |     r2 = *(r7);
    0x00002334 bl 0x3f5c                                     |     prepare_log_line_template ();
    0x00002338 ldr r0, [r7, 0x10]                            |     r0 = *((r7 + 0x10));
    0x0000233a lsls r0, r0, 3                                |     r0 <<= 3;
    0x0000233c blx 0x1e18                                    |     fcn_00001e18 ();
    0x00002340 str r0, [r5, 0x20]                            |     *((r5 + 0x20)) = r0;
    0x00002342 ldr r0, [r7, 0x10]                            |     r0 = *((r7 + 0x10));
    0x00002344 lsls r0, r0, 3                                |     r0 <<= 3;
    0x00002346 blx 0x1e18                                    |     fcn_00001e18 ();
    0x0000234a ldr r3, [r5, 0x24]                            |     r3 = *(0x4e28);
    0x0000234c str r0, [r5, 0x40]                            |     *((r5 + 0x40)) = r0;
    0x0000234e cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00002350 bne.w 0x289e                                  |         goto label_24;
                                                             |     }
                                                             | label_7:
    0x00002354 ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x00002356 mov r7, r3                                    |     r7 = r3;
    0x00002358 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0000235a beq.w 0x285c                                  |         goto label_25;
                                                             |     }
    0x0000235e movs r5, 0                                    |     r5 = 0;
    0x00002360 mov r7, r5                                    |     r7 = r5;
                                                             |     do {
    0x00002362 ldr r2, [r4]                                  |         r2 = *(r4);
    0x00002364 ldr.w r2, [r2, r5, lsl 2]                     |         offset_1 = r5 << 2;
                                                             |         r2 = *((r2 + offset_1));
                                                             |         if (r2 != 0) {
    0x00002368 cbz r2, 0x2374                                |             
    0x0000236a ldr r3, [r2, 0x1c]                            |             r3 = *((r2 + 0x1c));
    0x0000236c blx r3                                        |             uint32_t (*r3)(uint32_t) (r3);
    0x0000236e ldr r3, [r4, 4]                               |             r3 = *((r4 + 4));
                                                             |             if (r0 == 0) {
    0x00002370 cbz r0, 0x2374                                |                 goto label_26;
                                                             |             }
    0x00002372 adds r7, 1                                    |             r7++;
                                                             |         }
                                                             | label_26:
    0x00002374 adds r5, 1                                    |         r5++;
    0x00002376 cmp r3, r5                                    |         
    0x00002378 bhi 0x2362                                    |         
                                                             |     } while (r3 > r5);
    0x0000237a cmp r7, 1                                     |     
                                                             |     if (r7 != 1) {
    0x0000237c bne.w 0x285c                                  |         goto label_25;
                                                             |     }
    0x00002380 movs r5, 0                                    |     r5 = 0;
                                                             |     if (r3 == 0) {
    0x00002382 cbz r3, 0x23a2                                |         goto label_10;
                                                             |     }
                                                             |     do {
    0x00002384 ldr r2, [r4]                                  |         r2 = *(r4);
    0x00002386 ldr.w r7, [r2, r5, lsl 2]                     |         offset_2 = r5 << 2;
                                                             |         r7 = *((r2 + offset_2));
                                                             |         if (r7 != 0) {
    0x0000238a cbz r7, 0x239c                                |             
    0x0000238c ldr r2, [r7, 0x10]                            |             r2 = *((r7 + 0x10));
                                                             |             if (r2 == 0) {
    0x0000238e cbz r2, 0x239c                                |                 goto label_27;
                                                             |             }
    0x00002390 ldr r3, [r7, 0x1c]                            |             r3 = *((r7 + 0x1c));
    0x00002392 blx r3                                        |             r0 = uint32_t (*r3)(uint32_t) (r3);
    0x00002394 cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x00002396 bne.w 0x290a                                  |                 goto label_28;
                                                             |             }
    0x0000239a ldr r3, [r4, 4]                               |             r3 = *((r4 + 4));
                                                             |         }
                                                             | label_27:
    0x0000239c adds r5, 1                                    |         r5++;
    0x0000239e cmp r3, r5                                    |         
    0x000023a0 bhi 0x2384                                    |         
                                                             |     } while (r3 > r5);
                                                             | label_10:
    0x000023a2 mov r0, r4                                    |     r0 = r4;
    0x000023a4 bl 0x30bc                                     |     fcn_000030bc (r0);
    0x000023a8 ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x000023aa cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000023ac beq.w 0x25b6                                  |         goto label_29;
                                                             |     }
    0x000023b0 ldr.w fp, [pc, 0x728]                         |     
    0x000023b4 movs r5, 0                                    |     r5 = 0;
    0x000023b6 ldr.w sl, [pc, 0x728]                         |     sl = *(0x00002ae0);
    0x000023ba ldr r7, [sp, 0x20]                            |     r7 = *(arg_20h);
    0x000023bc add fp, pc                                    |     
    0x000023be add.w fp, fp, 0x74                            |     fp = 0x4f10;
    0x000023c2 add sl, pc                                    |     sl += pc;
    0x000023c4 b 0x23d8                                      |     goto label_30;
                                                             | label_0:
    0x000023c6 ldr r3, [r6, 0xc]                             |     r3 = *((r6 + 0xc));
                                                             |     if (r3 != 0) {
    0x000023c8 cbz r3, 0x23ce                                |         
    0x000023ca mov r0, sl                                    |         r0 = sl;
    0x000023cc blx r3                                        |         uint32_t (*r3)(uint32_t) (r0);
                                                             |     }
    0x000023ce ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
                                                             |     do {
    0x000023d0 adds r5, 1                                    |         r5++;
    0x000023d2 cmp r5, r3                                    |         
                                                             |         if (r5 >= r3) {
    0x000023d4 bhs.w 0x25b6                                  |             goto label_29;
                                                             |         }
                                                             | label_30:
    0x000023d8 ldr r2, [r4]                                  |         r2 = *(r4);
    0x000023da ldr.w r6, [r2, r5, lsl 2]                     |         offset_3 = r5 << 2;
                                                             |         r6 = *((r2 + offset_3));
    0x000023de cmp r6, 0                                     |         
    0x000023e0 beq 0x23d0                                    |         
                                                             |     } while (r6 == 0);
    0x000023e2 blx 0x1b58                                    |     r0 = get_debug_level ();
    0x000023e6 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000023e8 beq 0x23c6                                    |         goto label_0;
                                                             |     }
    0x000023ea ldr.w r0, [pc, 0x6f8]                         |     r0 = *(0x00002ae4);
    0x000023ee add r0, pc                                    |     r0 += pc;
    0x000023f0 blx 0x1b70                                    |     g_path_get_basename ();
    0x000023f4 ldr.w r3, [pc, 0x674]                         |     r3 = *(0x2a6c);
    0x000023f8 mov r8, r0                                    |     r8 = r0;
    0x000023fa ldr.w r2, [pc, 0x6ec]                         |     r2 = *(0x00002ae8);
    0x000023fe movs r1, 1                                    |     r1 = 1;
    0x00002400 ldr.w sb, [r7, r3]                            |     sb = *((r7 + r3));
    0x00002404 mov.w r3, 0x112                               |     r3 = 0x112;
    0x00002408 str r3, [sp, 4]                               |     var_4h = r3;
    0x0000240a add r2, pc                                    |     r2 += pc;
    0x0000240c mov r3, r0                                    |     r3 = r0;
    0x0000240e str.w fp, [sp]                                |     __asm ("str.w fp, [sp]");
    0x00002412 ldr.w r0, [sb]                                |     r0 = *(sb);
    0x00002416 blx 0x1bdc                                    |     fprintf_chk ()
    0x0000241a ldr.w r2, [pc, 0x6d0]                         |     
    0x0000241e movs r1, 1                                    |     r1 = 1;
    0x00002420 str r5, [sp]                                  |     *(sp) = r5;
    0x00002422 ldr.w r0, [sb]                                |     r0 = *(sb);
    0x00002426 ldr r3, [r6]                                  |     r3 = *(r6);
    0x00002428 add r2, pc                                    |     r2 = 0x4f1a;
    0x0000242a blx 0x1bdc                                    |     fprintf_chk ()
    0x0000242e mov r0, r8                                    |     r0 = r8;
    0x00002430 blx 0x1d14                                    |     g_hash_table_unref ();
    0x00002434 b 0x23c6                                      |     goto label_0;
                                                             | label_14:
    0x00002436 ldr.w r0, [pc, 0x6b8]                         |     r0 = *(0x00002af0);
    0x0000243a add r0, pc                                    |     r0 += pc;
    0x0000243c blx 0x1b70                                    |     g_path_get_basename ();
    0x00002440 ldr.w r2, [pc, 0x6b0]                         |     
    0x00002444 mov r5, r0                                    |     r5 = r0;
    0x00002446 ldr.w r3, [pc, 0x664]                         |     r3 = *(0x00002aac);
    0x0000244a movw r1, 0x216                                |     r1 = 0x216;
    0x0000244e ldr r0, [sp, 0x20]                            |     r0 = *(arg_20h);
    0x00002450 add r2, pc                                    |     r2 = 0x4f48;
    0x00002452 adds r2, 0x5c                                 |     r2 += 0x5c;
    0x00002454 ldr r6, [r0, r3]                              |     r6 = *((r0 + r3));
    0x00002456 mov r3, r5                                    |     r3 = r5;
    0x00002458 strd r2, r1, [sp]                             |     __asm ("strd r2, r1, [sp]");
    0x0000245c movs r1, 1                                    |     r1 = 1;
    0x0000245e ldr.w r2, [pc, 0x698]                         |     
    0x00002462 ldr r0, [r6]                                  |     r0 = *(r6);
    0x00002464 add r2, pc                                    |     
    0x00002466 blx 0x1bdc                                    |     fprintf_chk ()
    0x0000246a ldr r3, [sp, 0x44]                            |     r3 = *(arg_44h);
    0x0000246c movs r1, 1                                    |     r1 = 1;
    0x0000246e ldr.w r2, [pc, 0x68c]                         |     r2 = *(0x00002afc);
    0x00002472 ldr r0, [r6]                                  |     r0 = *(r6);
    0x00002474 ldr r3, [r3, 8]                               |     r3 = *((r3 + 8));
    0x00002476 add r2, pc                                    |     r2 = 0x73dc;
    0x00002478 blx 0x1bdc                                    |     fprintf_chk ()
    0x0000247c mov r0, r5                                    |     r0 = r5;
    0x0000247e blx 0x1d14                                    |     g_hash_table_unref ();
    0x00002482 movs r1, 1                                    |     r1 = 1;
    0x00002484 mov r0, r4                                    |     r0 = r4;
    0x00002486 blx 0x1ea8                                    |     fcn_00001ea8 ();
    0x0000248a ldr r0, [sp, 0x44]                            |     r0 = *(arg_44h);
                                                             |     if (r0 != 0) {
    0x0000248c cbz r0, 0x2492                                |         
    0x0000248e blx 0x1b28                                    |         g_error_free ();
                                                             |     }
                                                             | label_4:
    0x00002492 movs r0, 1                                    |     r0 = 1;
    0x00002494 b 0x2602                                      |     goto label_31;
                                                             | label_29:
    0x000025b6 blx 0x1b58                                    |     r0 = get_debug_level ();
    0x000025ba cmp r0, 0                                     |     
    0x000025bc bne.w 0x26ce                                  |     
                                                             |     while (1) {
                                                             | label_6:
    0x000025c0 ldr.w r6, [pc, 0x574]                         |         
    0x000025c4 ldr.w r5, [pc, 0x574]                         |         r5 = *(0x00002b3c);
    0x000025c8 add r6, pc                                    |         r6 = 0x5104;
    0x000025ca add r5, pc                                    |         r5 += pc;
    0x000025cc ldr r0, [r6, 0x10]                            |         r0 = *(0x5114);
    0x000025ce bl 0x3510                                     |         close_file_reader ();
    0x000025d2 add.w r0, r5, 8                               |         r0 = r5 + 8;
    0x000025d6 blx 0x1b10                                    |         g_mutex_clear ();
    0x000025da ldr r0, [r6, 0x1c]                            |         r0 = *(0x5120);
    0x000025dc blx 0x1d14                                    |         g_hash_table_unref ();
    0x000025e0 ldr r0, [r6, 0x20]                            |         r0 = "warning: defined message length (%d) is too big. truncated to (%d)\n";
    0x000025e2 blx 0x1d14                                    |         g_hash_table_unref ();
    0x000025e6 ldr r0, [sp, 0x1c]                            |         r0 = *(arg_1ch);
    0x000025e8 blx 0x1cd4                                    |         fcn_00001cd4 ();
    0x000025ec movs r1, 1                                    |         r1 = 1;
    0x000025ee mov r0, r4                                    |         r0 = r4;
    0x000025f0 blx 0x1ea8                                    |         fcn_00001ea8 ();
    0x000025f4 ldr r0, [r5, 0x40]                            |         r0 = *((r5 + 0x40));
    0x000025f6 blx 0x1d14                                    |         g_hash_table_unref ();
    0x000025fa ldr r0, [r5, 0x20]                            |         r0 = *((r5 + 0x20));
    0x000025fc blx 0x1d14                                    |         g_hash_table_unref ();
    0x00002600 movs r0, 0                                    |         r0 = 0;
                                                             | label_31:
    0x00002602 ldr.w r2, [pc, 0x53c]                         |         r2 = *(0x00002b40);
    0x00002606 ldr.w r3, [pc, 0x428]                         |         r3 = *(0x2a32);
    0x0000260a add r2, pc                                    |         r2 += pc;
    0x0000260c ldr r3, [r2, r3]                              |         r3 = *((r2 + r3));
    0x0000260e ldr r2, [r3]                                  |         r2 = *(0x2a32);
    0x00002610 ldr r3, [sp, 0x13c]                           |         r3 = *(arg_13ch);
    0x00002612 eors r2, r3                                   |         r2 ^= r3;
    0x00002614 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00002618 bne.w 0x2a28                                  |             goto label_32;
                                                             |         }
    0x0000261c add sp, 0x144                                 |         
    0x0000261e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_17:
    0x00002622 ldr.w r0, [pc, 0x520]                         |         r0 = *(0x00002b44);
    0x00002626 mov.w sb, 0x2000                              |         sb = 0x2000;
    0x0000262a add r0, pc                                    |         r0 += pc;
    0x0000262c blx 0x1b70                                    |         g_path_get_basename ();
    0x00002630 ldr r2, [sp, 0x20]                            |         r2 = *(arg_20h);
    0x00002632 mov r8, r0                                    |         r8 = r0;
    0x00002634 ldr.w r3, [pc, 0x474]                         |         r3 = *(0x00002aac);
    0x00002638 movs r1, 1                                    |         r1 = 1;
    0x0000263a ldr r5, [r2, r3]                              |         r5 = *((r2 + r3));
    0x0000263c ldr.w r3, [pc, 0x508]                         |         
    0x00002640 ldr.w r2, [pc, 0x508]                         |         
    0x00002644 add r3, pc                                    |         r3 = "%d;%lu.%06lu;%.2lf;%lu\n";
    0x00002646 adds r3, 0x5c                                 |         r3 += 0x5c;
    0x00002648 add r2, pc                                    |         
    0x0000264a str r3, [sp]                                  |         *(sp) = r3;
    0x0000264c movw r3, 0x235                                |         r3 = 0x235;
    0x00002650 str r3, [sp, 4]                               |         var_4h = r3;
    0x00002652 mov r3, r0                                    |         r3 = r0;
    0x00002654 ldr r0, [r5]                                  |         r0 = *(r5);
    0x00002656 blx 0x1bdc                                    |         fprintf_chk ()
    0x00002658 invalid                                       |         
    0x0000265c movs r4, 0xf4                                 |         r4 = 0xf4;
    0x0000265e movs r1, 1                                    |         r1 = 1;
    0x00002660 str.w sb, [sp]                                |         __asm ("str.w sb, [sp]");
    0x00002664 ldr r3, [r7]                                  |         r3 = *(r7);
    0x00002666 add r2, pc                                    |         r2 = 0x7802;
    0x00002668 ldr r0, [r5]                                  |         r0 = *(r5);
    0x0000266a blx 0x1bdc                                    |         fprintf_chk ()
    0x0000266e mov r0, r8                                    |         r0 = r8;
    0x00002670 blx 0x1d14                                    |         g_hash_table_unref ();
    0x00002674 str.w sb, [r7]                                |         __asm ("str.w sb, [r7]");
    0x00002678 b 0x22b8                                      |         goto label_1;
                                                             | label_16:
    0x0000267a ldr.w r0, [pc, 0x4d8]                         |         r0 = *(0x00002b54);
    0x0000267e add r0, pc                                    |         r0 += pc;
    0x00002680 blx 0x1b70                                    |         g_path_get_basename ();
    0x00002684 ldr r2, [sp, 0x20]                            |         r2 = *(arg_20h);
    0x00002686 mov r5, r0                                    |         r5 = r0;
    0x00002688 ldr r3, [pc, 0x3e0]                           |         
    0x0000268a movs r1, 1                                    |         r1 = 1;
    0x0000268c ldr r7, [r2, r3]                              |         r7 = *((r2 + r3));
    0x0000268e ldr.w r3, [pc, 0x4c8]                         |         r3 = *(0x00002b58);
    0x00002692 ldr.w r2, [pc, 0x4c8]                         |         r2 = *(0x00002b5c);
    0x00002696 add r3, pc                                    |         r3 = 0x5106;
    0x00002698 adds r3, 0x5c                                 |         r3 += 0x5c;
    0x0000269a add r2, pc                                    |         r2 += pc;
    0x0000269c str r3, [sp]                                  |         *(sp) = r3;
    0x0000269e movw r3, 0x231                                |         r3 = 0x231;
    0x000026a2 str r3, [sp, 4]                               |         var_4h = r3;
    0x000026a4 mov r3, r0                                    |         r3 = r0;
    0x000026a6 ldr r0, [r7]                                  |         r0 = *(r7);
    0x000026a8 blx 0x1bdc                                    |         fprintf_chk ()
    0x000026ac ldr r0, [r7]                                  |         r0 = *(r7);
    0x000026ae movs r1, 1                                    |         r1 = 1;
    0x000026b0 ldr.w r7, [pc, 0x4ac]                         |         
    0x000026b4 ldr.w r2, [pc, 0x4ac]                         |         
    0x000026b8 add r7, pc                                    |         r7 = 0x521c;
    0x000026ba ldr r3, [r7, 0x20]                            |         r3 = *(0x523c);
    0x000026bc add r2, pc                                    |         r2 = 0x5224;
    0x000026be str r3, [sp]                                  |         *(sp) = r3;
    0x000026c0 ldr r3, [r7, 0x1c]                            |         r3 = *(0x5238);
    0x000026c2 blx 0x1bdc                                    |         fprintf_chk ()
    0x000026c6 mov r0, r5                                    |         r0 = r5;
    0x000026c8 blx 0x1d14                                    |         g_hash_table_unref ();
    0x000026cc b 0x22a8                                      |         goto label_2;
    0x000026ce ldr.w r0, [pc, 0x498]                         |         r0 = *(0x00002b68);
    0x000026d2 add r0, pc                                    |         r0 += pc;
    0x000026d4 blx 0x1b70                                    |         g_path_get_basename ();
    0x000026d8 ldr r2, [sp, 0x20]                            |         r2 = *(arg_20h);
    0x000026da mov r5, r0                                    |         r5 = r0;
    0x000026dc ldr r3, [pc, 0x38c]                           |         r3 = *(0x2a6c);
    0x000026de movs r1, 1                                    |         r1 = 1;
    0x000026e0 ldr r6, [r2, r3]                              |         r6 = *((r2 + r3));
    0x000026e2 movw r3, 0x117                                |         r3 = 0x117;
    0x000026e6 str r3, [sp, 4]                               |         var_4h = r3;
    0x000026e8 ldr.w r3, [pc, 0x480]                         |         
    0x000026ec ldr.w r2, [pc, 0x480]                         |         
    0x000026f0 add r3, pc                                    |         r3 = 0x5260;
    0x000026f2 adds r3, 0x74                                 |         r3 += 0x74;
    0x000026f4 add r2, pc                                    |         r2 = "stop plugin (%s:%d)\n";
    0x000026f6 str r3, [sp]                                  |         *(sp) = r3;
    0x000026f8 mov r3, r0                                    |         r3 = r0;
    0x000026fa ldr r0, [r6]                                  |         r0 = *(r6);
    0x000026fc blx 0x1bdc                                    |         fprintf_chk ()
    0x00002700 ldr.w r0, [pc, 0x470]                         |         r0 = *(0x00002b74);
    0x00002704 movs r2, 0x1e                                 |         r2 = 0x1e;
    0x00002706 ldr r3, [r6]                                  |         r3 = *(r6);
    0x00002708 movs r1, 1                                    |         r1 = 1;
    0x0000270a add r0, pc                                    |         r0 += pc;
    0x0000270c blx 0x1db4                                    |         fcn_00001db4 ();
    0x00002710 mov r0, r5                                    |         r0 = r5;
    0x00002712 blx 0x1d14                                    |         g_hash_table_unref ();
    0x00002716 b 0x25c0                                      |         
                                                             |     }
                                                             | label_13:
    0x00002784 mov r0, r3                                    |     r0 = r3;
    0x00002786 mov fp, r3                                    |     
    0x00002788 blx 0x1b70                                    |     g_path_get_basename ();
    0x0000278c ldr r2, [sp, 0x20]                            |     r2 = *(arg_20h);
    0x0000278e add r8, pc                                    |     r8 += pc;
    0x00002790 ldr r3, [pc, 0x318]                           |     r3 = *(0x2aac);
    0x00002792 add r7, pc                                    |     r7 += pc;
    0x00002794 add.w r8, r8, 0x2c                            |     r8 += 0x2c;
    0x00002798 movs r1, 1                                    |     r1 = 1;
    0x0000279a mov sb, r0                                    |     sb = r0;
    0x0000279c ldr r5, [r2, r3]                              |     r5 = *((r2 + r3));
    0x0000279e movs r3, 0xd5                                 |     r3 = 0xd5;
    0x000027a0 mov r2, r7                                    |     r2 = r7;
    0x000027a2 str.w r8, [sp]                                |     __asm ("str.w r8, [sp]");
    0x000027a6 str r3, [sp, 4]                               |     var_4h = r3;
    0x000027a8 mov r3, r0                                    |     r3 = r0;
    0x000027aa ldr r0, [r5]                                  |     r0 = *(r5);
    0x000027ac blx 0x1bdc                                    |     fprintf_chk ()
    0x000027b0 blx 0x1e48                                    |     r0 = fcn_00001e48 ();
    0x000027b4 ldr r0, [r0]                                  |     r0 = *(r0);
    0x000027b6 ldr r6, [r5]                                  |     r6 = *(r5);
    0x000027b8 blx 0x1b88                                    |     strerror (r0);
    0x000027bc ldr r2, [pc, 0x3d4]                           |     
    0x000027be movs r1, 1                                    |     r1 = 1;
    0x000027c0 ldr r3, [sp, 0x2c]                            |     r3 = *(arg_2ch);
    0x000027c2 str r0, [sp]                                  |     *(sp) = r0;
    0x000027c4 mov r0, r6                                    |     r0 = r6;
    0x000027c6 add r2, pc                                    |     r2 = 0x535e;
    0x000027c8 blx 0x1bdc                                    |     fprintf_chk ()
    0x000027cc mov r0, sb                                    |     r0 = sb;
    0x000027ce blx 0x1d14                                    |     g_hash_table_unref ();
    0x000027d2 mov r0, fp                                    |     r0 = fp;
    0x000027d4 blx 0x1b70                                    |     g_path_get_basename ();
    0x000027d8 movs r3, 0xd6                                 |     r3 = 0xd6;
    0x000027da str.w r8, [sp]                                |     __asm ("str.w r8, [sp]");
    0x000027de str r3, [sp, 4]                               |     var_4h = r3;
    0x000027e0 mov r8, r0                                    |     r8 = r0;
    0x000027e2 mov r2, r7                                    |     r2 = r7;
    0x000027e4 mov r3, r0                                    |     r3 = r0;
    0x000027e6 movs r1, 1                                    |     r1 = 1;
    0x000027e8 ldr r0, [r5]                                  |     r0 = *(r5);
    0x000027ea blx 0x1bdc                                    |     fprintf_chk ()
    0x000027ee ldr r3, [pc, 0x3a8]                           |     
    0x000027f0 movs r1, 1                                    |     r1 = 1;
    0x000027f2 ldr r2, [pc, 0x3a8]                           |     
    0x000027f4 ldr r0, [r5]                                  |     r0 = *(r5);
    0x000027f6 add r3, pc                                    |     r3 = 0x5394;
    0x000027f8 add r2, pc                                    |     r2 = 0x539a;
    0x000027fa blx 0x1bdc                                    |     fprintf_chk ()
    0x000027fe mov r0, r8                                    |     r0 = r8;
    0x00002800 blx 0x1d14                                    |     g_hash_table_unref ();
    0x00002804 b 0x211a                                      |     goto label_3;
                                                             | label_18:
    0x00002806 ldr r0, [pc, 0x398]                           |     
    0x00002808 add r0, pc                                    |     r0 = 0x53ae;
    0x0000280a blx 0x1b70                                    |     g_path_get_basename ();
    0x0000280e ldr r2, [sp, 0x20]                            |     r2 = *(arg_20h);
    0x00002810 mov r4, r0                                    |     r4 = r0;
    0x00002812 ldr r3, [pc, 0x298]                           |     r3 = *(0x2aae);
    0x00002814 movw r0, 0x23d                                |     r0 = 0x23d;
    0x00002818 ldr r1, [pc, 0x388]                           |     
    0x0000281a ldr r5, [r2, r3]                              |     r5 = *((r2 + r3));
    0x0000281c mov r3, r4                                    |     r3 = r4;
    0x0000281e ldr r2, [pc, 0x388]                           |     
    0x00002820 add r1, pc                                    |     r1 = 0x53c8;
    0x00002822 adds r1, 0x5c                                 |     r1 += 0x5c;
    0x00002824 strd r1, r0, [sp]                             |     __asm ("strd r1, r0, [sp]");
    0x00002828 movs r1, 1                                    |     r1 = 1;
    0x0000282a ldr r0, [r5]                                  |     r0 = *(r5);
    0x0000282c add r2, pc                                    |     r2 = 0x53da;
    0x0000282e blx 0x1bdc                                    |     fprintf_chk ()
    0x00002832 ldr r0, [pc, 0x378]                           |     
    0x00002834 movs r2, 0x26                                 |     r2 = 0x26;
    0x00002836 ldr r3, [r5]                                  |     r3 = *(r5);
    0x00002838 movs r1, 1                                    |     r1 = 1;
    0x0000283a add r0, pc                                    |     r0 = 0x53ec;
    0x0000283c blx 0x1db4                                    |     fcn_00001db4 ();
    0x00002840 mov r0, r4                                    |     r0 = r4;
    0x00002842 blx 0x1d14                                    |     g_hash_table_unref ();
    0x00002846 b 0x2492                                      |     goto label_4;
                                                             | label_15:
    0x00002848 ldr.w r3, [sl]                                |     r3 = *(sl);
    0x0000284c ldr r0, [r3, 4]                               |     r0 = *((r3 + 4));
    0x0000284e blx 0x1be8                                    |     g_strdup ();
    0x00002852 ldr r3, [pc, 0x35c]                           |     
    0x00002854 add r3, pc                                    |     r3 = 0x540a;
    0x00002856 strd r0, r7, [r3, 0x1c]                       |     __asm ("strd r0, r7, [r3, 0x1c]");
    0x0000285a b 0x229e                                      |     goto label_5;
                                                             | label_25:
    0x0000285c ldr r0, [pc, 0x354]                           |     
    0x0000285e add r0, pc                                    |     r0 = 0x5416;
    0x00002860 blx 0x1b70                                    |     g_path_get_basename ();
    0x00002864 ldr r2, [sp, 0x20]                            |     r2 = *(arg_20h);
    0x00002866 mov r5, r0                                    |     r5 = r0;
    0x00002868 ldr r3, [pc, 0x240]                           |     r3 = *(0x2aac);
    0x0000286a movs r1, 1                                    |     r1 = 1;
    0x0000286c ldr r6, [r2, r3]                              |     r6 = *((r2 + r3));
    0x0000286e ldr r3, [pc, 0x348]                           |     
    0x00002870 ldr r2, [pc, 0x348]                           |     
    0x00002872 add r3, pc                                    |     r3 = 0x5430;
    0x00002874 adds r3, 0x64                                 |     r3 += 0x64;
    0x00002876 add r2, pc                                    |     r2 = 0x5436;
    0x00002878 str r3, [sp]                                  |     *(sp) = r3;
    0x0000287a mov.w r3, 0x166                               |     r3 = 0x166;
    0x0000287e str r3, [sp, 4]                               |     var_4h = r3;
    0x00002880 mov r3, r5                                    |     r3 = r5;
    0x00002882 ldr r0, [r6]                                  |     r0 = *(r6);
    0x00002884 blx 0x1bdc                                    |     fprintf_chk ()
    0x00002888 ldr r2, [pc, 0x334]                           |     
    0x0000288a mov r3, r7                                    |     r3 = r7;
    0x0000288c ldr r0, [r6]                                  |     r0 = *(r6);
    0x0000288e movs r1, 1                                    |     r1 = 1;
    0x00002890 add r2, pc                                    |     r2 = 0x5454;
    0x00002892 blx 0x1bdc                                    |     fprintf_chk ()
    0x00002894 invalid                                       |     
    0x00002898 blx 0x1d14                                    |     g_hash_table_unref ();
    0x0000289c b 0x25c0                                      |     goto label_6;
                                                             | label_24:
    0x0000289e ldr r0, [pc, 0x324]                           |     
    0x000028a0 add r0, pc                                    |     r0 = 0x546a;
    0x000028a2 blx 0x1bac                                    |     puts (r0);
    0x000028a6 ldr r3, [r7, 0x10]                            |     r3 = *((r7 + 0x10));
    0x000028a8 cmp r3, 0                                     |     
                                                             |     if (r3 <= 0) {
    0x000028aa ble.w 0x2354                                  |         goto label_7;
                                                             |     }
                                                             | label_11:
    0x000028ae ldr r3, [pc, 0x1fc]                           |     r3 = *(0x2aae);
    0x000028b0 movs r7, 0                                    |     r7 = 0;
    0x000028b2 ldr r2, [sp, 0x20]                            |     r2 = *(arg_20h);
    0x000028b4 mov.w sl, 0                                   |     sl = 0;
    0x000028b8 ldr.w sb, [pc, 0x30c]                         |     sb = *(0x00002bc8);
    0x000028bc mov.w fp, 0                                   |     
    0x000028c0 ldr.w r8, [pc, 0x308]                         |     
    0x000028c4 ldr r5, [r2, r3]                              |     r5 = *((r2 + r3));
    0x000028c6 add sb, pc                                    |     sb += pc;
    0x000028c8 add r8, pc                                    |     r8 = 0x5498;
                                                             |     do {
    0x000028ca movs r3, 0                                    |         r3 = 0;
    0x000028cc ldr r0, [r5]                                  |         r0 = *(r5);
    0x000028ce mov r2, sb                                    |         r2 = sb;
    0x000028d0 str r3, [sp, 0x10]                            |         *(arg_10h) = r3;
    0x000028d2 strd r3, r3, [sp]                             |         __asm ("strd r3, r3, [sp]");
    0x000028d6 movs r1, 1                                    |         r1 = 1;
    0x000028d8 mov r3, r7                                    |         r3 = r7;
    0x000028da strd sl, fp, [sp, 8]                          |         __asm ("strd sl, fp, [sp, 8]");
    0x000028de blx 0x1bdc                                    |         fprintf_chk ()
    0x000028e2 ldr.w r3, [r8, 0x10]                          |         r3 = *((r8 + 0x10));
    0x000028e6 adds r7, 1                                    |         r7++;
    0x000028e8 cmp r7, r3                                    |         
    0x000028ea blt 0x28ca                                    |         
                                                             |     } while (r7 < r3);
    0x000028ec cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x000028ee bne.w 0x2354                                  |         goto label_7;
                                                             |     }
    0x000028f2 b 0x2984                                      |     goto label_33;
                                                             | label_22:
    0x000028f4 ldr r3, [pc, 0x2d8]                           |     
    0x000028f6 add r3, pc                                    |     r3 = 0x54ca;
    0x000028f8 ldr r0, [r3]                                  |     r0 = *(0x54ca);
    0x000028fa cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000028fc bne.w 0x2316                                  |         goto label_8;
                                                             |     }
    0x00002900 ldr r1, [r3, 0x48]                            |     r1 = *((r3 + 0x48));
    0x00002902 clz r1, r1                                    |     r1 &= r1;
    0x00002906 lsrs r1, r1, 5                                |     r1 >>= 5;
    0x00002908 b 0x2324                                      |     goto label_9;
                                                             | label_28:
    0x0000290a ldr r0, [pc, 0x2c8]                           |     
    0x0000290c ldr r3, [r7, 0x10]                            |     r3 = *((r7 + 0x10));
    0x0000290e add r0, pc                                    |     r0 = 0x54e8;
    0x00002910 blx r3                                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00002912 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002914 bne.w 0x23a2                                  |         goto label_10;
                                                             |     }
    0x00002918 b 0x25c0                                      |     goto label_6;
                                                             | label_19:
    0x00002964 ldr r0, [r7, 0x10]                            |     r0 = *((r7 + 0x10));
    0x00002966 lsls r0, r0, 3                                |     r0 <<= 3;
    0x00002968 blx 0x1e18                                    |     fcn_00001e18 ();
    0x0000296c str r0, [r5, 0x20]                            |     *((r5 + 0x20)) = r0;
    0x0000296e ldr r0, [r7, 0x10]                            |     r0 = *((r7 + 0x10));
    0x00002970 lsls r0, r0, 3                                |     r0 <<= 3;
    0x00002972 blx 0x1e18                                    |     fcn_00001e18 ();
    0x00002976 ldr r3, [r5, 0x24]                            |     r3 = *((r5 + 0x24));
    0x00002978 str r0, [r5, 0x40]                            |     *((r5 + 0x40)) = r0;
    0x0000297a cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000297c bne 0x2a16                                    |         goto label_34;
                                                             |     }
                                                             | label_12:
    0x0000297e ldr r3, [pc, 0x12c]                           |     r3 = *(0x2aae);
    0x00002980 ldr r2, [sp, 0x20]                            |     r2 = *(arg_20h);
    0x00002982 ldr r5, [r2, r3]                              |     r5 = *((r2 + r3));
                                                             | label_33:
    0x00002984 ldr r0, [pc, 0x260]                           |     
    0x00002986 add r0, pc                                    |     r0 = 0x5572;
    0x00002988 blx 0x1b70                                    |     g_path_get_basename ();
    0x0000298c mov.w r3, 0x154                               |     r3 = 0x154;
    0x00002990 ldr r2, [pc, 0x258]                           |     
    0x00002992 str r3, [sp, 4]                               |     var_4h = r3;
    0x00002994 mov r6, r0                                    |     r6 = r0;
    0x00002996 ldr r3, [pc, 0x258]                           |     
    0x00002998 movs r1, 1                                    |     r1 = 1;
    0x0000299a add r2, pc                                    |     r2 = 0x558a;
    0x0000299c add r3, pc                                    |     r3 = 0x5592;
    0x0000299e adds r3, 0x64                                 |     r3 += 0x64;
    0x000029a0 str r3, [sp]                                  |     *(sp) = r3;
    0x000029a2 mov r3, r0                                    |     r3 = r0;
    0x000029a4 ldr r0, [r5]                                  |     r0 = *(r5);
    0x000029a6 blx 0x1bdc                                    |     fprintf_chk ()
    0x000029aa ldr r0, [pc, 0x248]                           |     
    0x000029ac movs r2, 0x23                                 |     r2 = 0x23;
    0x000029ae ldr r3, [r5]                                  |     r3 = *(r5);
    0x000029b0 movs r1, 1                                    |     r1 = 1;
    0x000029b2 add r0, pc                                    |     r0 = 0x55ac;
    0x000029b4 blx 0x1db4                                    |     fcn_00001db4 ();
    0x000029b8 mov r0, r6                                    |     r0 = r6;
    0x000029ba blx 0x1d14                                    |     g_hash_table_unref ();
    0x000029be b 0x25c0                                      |     goto label_6;
                                                             | label_20:
    0x000029c0 ldr r0, [r5]                                  |     r0 = *(r5);
    0x000029c2 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000029c4 bne.w 0x2316                                  |         goto label_8;
                                                             |     }
                                                             | label_23:
    0x000029c8 movs r0, 0                                    |     r0 = 0;
    0x000029ca mov r1, r0                                    |     r1 = r0;
    0x000029cc b 0x2324                                      |     goto label_9;
                                                             | label_34:
    0x00002a16 ldr r0, [pc, 0x1f0]                           |     
    0x00002a18 add r0, pc                                    |     r0 = 0x5626;
    0x00002a1a blx 0x1bac                                    |     puts (r0);
    0x00002a1e ldr r3, [r7, 0x10]                            |     r3 = *((r7 + 0x10));
    0x00002a20 cmp r3, 0                                     |     
                                                             |     if (r3 > 0) {
    0x00002a22 bgt.w 0x28ae                                  |         goto label_11;
                                                             |     }
    0x00002a26 b 0x297e                                      |     goto label_12;
                                                             | label_32:
    0x00002a28 blx 0x1cec                                    |     fcn_00001cec ();
    0x00002a2c ldrsh r0, [r7, r5]                            |     r0 = *((r7 + r5));
    0x00002a2e movs r0, r0                                   |     
    0x00002a30 lsls r0, r5, 5                                |     r0 = r5 << 5;
    0x00002a32 movs r0, r0                                   |     
    0x00002a34 cmp r7, 0x48                                  |     
    0x00002a36 movs r0, r0                                   |     
    0x00002a38 lsrs r7, r4, 0x17                             |     r7 = r4 >> 0x17;
    0x00002a3a movs r0, r0                                   |     
    0x00002a3c ldrsh r0, [r1, r5]                            |     r0 = *((r1 + r5));
    0x00002a3e movs r0, r0                                   |     
    0x00002a40 lsrs r7, r4, 0x1d                             |     r7 = r4 >> 0x1d;
    0x00002a42 movs r0, r0                                   |     
    0x00002a44 cmp r7, 0x10                                  |     
    0x00002a46 movs r0, r0                                   |     
    0x00002a48 str r4, [r0, 0xc]                             |     *((r0 + 0xc)) = r4;
    0x00002a4a movs r0, r0                                   |     
    0x00002a4c subs r0, 0x2a                                 |     r0 -= 0x2a;
    0x00002a4e movs r0, r0                                   |     
    0x00002a50 cmp r7, 0x90                                  |     
    0x00002a52 movs r0, r0                                   |     
    0x00002a54 cmp r7, 0x64                                  |     
    0x00002a56 movs r0, r0                                   |     
    0x00002a58 cmp r7, 0xa2                                  |     
    0x00002a5a movs r0, r0                                   |     
    0x00002a5c cmp r7, 0x92                                  |     
    0x00002a5e movs r0, r0                                   |     
    0x00002a60 lsrs r7, r7, 0x13                             |     r7 >>= 0x13;
    0x00002a62 movs r0, r0                                   |     
    0x00002a64 cmp r7, 0xce                                  |     
    0x00002a66 movs r0, r0                                   |     
    0x00002a68 cmp r4, 0x18                                  |     
    0x00002a6a movs r0, r0                                   |     
    0x00002a6c lsls r0, r0, 6                                |     r0 <<= 6;
    0x00002a6e movs r0, r0                                   |     
    0x00002a70 cmp r4, 0x7e                                  |     
    0x00002a72 movs r0, r0                                   |     
    0x00002a74 cmp r7, 0x82                                  |     
    0x00002a76 movs r0, r0                                   |     
    0x00002a78 cmp r7, 0x98                                  |     
    0x00002a7a movs r0, r0                                   |     
    0x00002a7c cmp r7, 0x26                                  |     
    0x00002a7e movs r0, r0                                   |     
    0x00002a80 str r6, [r7, 0x18]                            |     *((r7 + 0x18)) = r6;
    0x00002a82 movs r0, r0                                   |     
    0x00002a84 ldrsh r0, [r0, r2]                            |     r0 = *((r0 + r2));
    0x00002a86 movs r0, r0                                   |     
    0x00002a88 cmp r3, 0x2e                                  |     
    0x00002a8a movs r0, r0                                   |     
    0x00002a8c adds r6, 0                                    |     r6 += 0;
    0x00002a8e movs r0, r0                                   |     
    0x00002a90 cmp r3, 0x94                                  |     
    0x00002a92 movs r0, r0                                   |     
    0x00002a94 cmp r7, 0x18                                  |     
    0x00002a96 movs r0, r0                                   |     
    0x00002a98 cmp r2, 0xd8                                  |     
    0x00002a9a movs r0, r0                                   |     
    0x00002a9c adds r5, 0xaa                                 |     r5 += 0xaa;
    0x00002a9e movs r0, r0                                   |     
    0x00002aa0 cmp r3, 0x3e                                  |     
    0x00002aa2 movs r0, r0                                   |     
    0x00002aa4 cmp r5, 0xcc                                  |     
    0x00002aa6 movs r0, r0                                   |     
    0x00002aa8 cmp r2, 0x8e                                  |     
    0x00002aaa movs r0, r0                                   |     
    0x00002aac lsls r4, r6, 5                                |     r4 = r6 << 5;
    0x00002aae movs r0, r0                                   |     
    0x00002ab0 adds r5, 0x5e                                 |     r5 += 0x5e;
    0x00002ab2 movs r0, r0                                   |     
    0x00002ab4 cmp r2, 0xaa                                  |     
    0x00002ab6 movs r0, r0                                   |     
    0x00002ab8 cmp r5, 0xaa                                  |     
    0x00002aba movs r0, r0                                   |     
    0x00002abc ldrb r2, [r6, r5]                             |     r2 = *((r6 + r5));
    0x00002abe movs r0, r0                                   |     
    0x00002ac0 ldrb r0, [r3, r5]                             |     r0 = *((r3 + r5));
    0x00002ac2 movs r0, r0                                   |     
    0x00002ac4 ldrb r4, [r0, r5]                             |     r4 = *((r0 + r5));
    0x00002ac6 movs r0, r0                                   |     
    0x00002ac8 str r0, [r4, 4]                               |     *((r4 + 4)) = r0;
    0x00002aca movs r0, r0                                   |     
    0x00002acc str r0, [r3]                                  |     *(r3) = r0;
    0x00002ace movs r0, r0                                   |     
    0x00002ad0 str r2, [r1]                                  |     *(r1) = r2;
    0x00002ad2 movs r0, r0                                   |     
    0x00002ad4 ldrsh r0, [r7, r7]                            |     r0 = *((r7 + r7));
    0x00002ad6 movs r0, r0                                   |     
    0x00002ad8 ldrb r6, [r2, r3]                             |     r6 = *((r2 + r3));
    0x00002ada movs r0, r0                                   |     
    0x00002adc adds r3, 0xf8                                 |     r3 += 0xf8;
    0x00002ade movs r0, r0                                   |     
    0x00002ae0 ldrb r2, [r0, r1]                             |     r2 = *((r0 + r1));
    0x00002ae2 movs r0, r0                                   |     
    0x00002ae4 cmp r0, 0xda                                  |     
    0x00002ae6 movs r0, r0                                   |     
    0x00002ae8 cmp r1, 0x42                                  |     
    0x00002aea movs r0, r0                                   |     
    0x00002aec cmp r6, 0x3c                                  |     
    0x00002aee movs r0, r0                                   |     
    0x00002af0 cmp r0, 0x8e                                  |     
    0x00002af2 movs r0, r0                                   |     
    0x00002af4 adds r3, 0x64                                 |     r3 += 0x64;
    0x00002af6 movs r0, r0                                   |     
    0x00002af8 cmp r0, 0xa0                                  |     
    0x00002afa movs r0, r0                                   |     
    0x00002afc cmp r4, 0x5a                                  |     
    0x00002afe movs r0, r0                                   |     
    0x00002b00 cmp r0, 0x2e                                  |     
    0x00002b02 movs r0, r0                                   |     
    0x00002b04 adds r3, 0                                    |     r3 += 0;
    0x00002b06 movs r0, r0                                   |     
    0x00002b08 cmp r0, 0x94                                  |     
    0x00002b0a movs r0, r0                                   |     
    0x00002b0c cmp r3, 0xd0                                  |     
    0x00002b0e movs r0, r0                                   |     
    0x00002b10 movs r7, 0xda                                 |     r7 = 0xda;
    0x00002b12 movs r0, r0                                   |     
    0x00002b14 adds r2, 0xba                                 |     r2 += 0xba;
    0x00002b16 movs r0, r0                                   |     
    0x00002b18 cmp r0, 2                                     |     
    0x00002b1a movs r0, r0                                   |     
    0x00002b1c cmp r3, 0x5c                                  |     
    0x00002b1e movs r0, r0                                   |     
    0x00002b20 cmp r1, 0x4c                                  |     
    0x00002b22 movs r0, r0                                   |     
    0x00002b24 cmp r1, 0x5a                                  |     
    0x00002b26 movs r0, r0                                   |     
    0x00002b28 movs r7, 0x58                                 |     r7 = 0x58;
    0x00002b2a movs r0, r0                                   |     
    0x00002b2c adds r2, 0x2a                                 |     r2 += 0x2a;
    0x00002b2e movs r0, r0                                   |     
    0x00002b30 movs r7, 0xbe                                 |     r7 = 0xbe;
    0x00002b32 movs r0, r0                                   |     
    0x00002b34 cmp r1, 0x58                                  |     
    0x00002b36 movs r0, r0                                   |     
    0x00002b38 ldrh r4, [r7, r0]                             |     r4 = *((r7 + r0));
    0x00002b3a movs r0, r0                                   |     
    0x00002b3c ldrb r2, [r3, r5]                             |     r2 = *((r3 + r5));
    0x00002b3e movs r0, r0                                   |     
    0x00002b40 ldr r6, [r3, r1]                              |     r6 = *((r3 + r1));
    0x00002b42 movs r0, r0                                   |     
    0x00002b44 movs r6, 0x9e                                 |     r6 = 0x9e;
    0x00002b46 movs r0, r0                                   |     
    0x00002b48 adds r1, 0x70                                 |     r1 += 0x70;
    0x00002b4a movs r0, r0                                   |     
    0x00002b4c movs r6, 0xbc                                 |     r6 = 0xbc;
    0x00002b4e movs r0, r0                                   |     
    0x00002b50 cmp r2, 0xba                                  |     
    0x00002b52 movs r0, r0                                   |     
    0x00002b54 movs r6, 0x4a                                 |     r6 = 0x4a;
    0x00002b56 movs r0, r0                                   |     
    0x00002b58 adds r1, 0x1e                                 |     r1 += 0x1e;
    0x00002b5a movs r0, r0                                   |     
    0x00002b5c movs r6, 0xb2                                 |     r6 = 0xb2;
    0x00002b5e movs r0, r0                                   |     
    0x00002b60 ldr r4, [r1, r5]                              |     r4 = *((r1 + r5));
    0x00002b62 movs r0, r0                                   |     
    0x00002b64 cmp r2, 0x50                                  |     
    0x00002b66 movs r0, r0                                   |     
    0x00002b68 movs r5, 0xf6                                 |     r5 = 0xf6;
    0x00002b6a movs r0, r0                                   |     
    0x00002b6c adds r0, 0xc4                                 |     r0 += 0xc4;
    0x00002b6e movs r0, r0                                   |     
    0x00002b70 movs r6, 0x58                                 |     r6 = 0x58;
    0x00002b72 movs r0, r0                                   |     
    0x00002b74 cmp r3, 0x72                                  |     
    0x00002b76 movs r0, r0                                   |     
    0x00002b78 movs r5, 0x9a                                 |     r5 = 0x9a;
    0x00002b7a movs r0, r0                                   |     
    0x00002b7c adds r0, 0x6e                                 |     r0 += 0x6e;
    0x00002b7e movs r0, r0                                   |     
    0x00002b80 movs r5, 0xba                                 |     r5 = 0xba;
    0x00002b82 movs r0, r0                                   |     
    0x00002b84 movs r7, 0xf8                                 |     r7 = 0xf8;
    0x00002b86 movs r0, r0                                   |     
    0x00002b88 movs r5, 0x4a                                 |     r5 = 0x4a;
    0x00002b8a movs r0, r0                                   |     
    0x00002b8c adds r0, 0x26                                 |     r0 += 0x26;
    0x00002b8e movs r0, r0                                   |     
    0x00002b90 movs r5, 0x72                                 |     r5 = 0x72;
    0x00002b92 movs r0, r0                                   |     
    0x00002b94 movs r6, 0xb2                                 |     r6 = 0xb2;
    0x00002b96 movs r0, r0                                   |     
    0x00002b98 movs r6, 0xb2                                 |     r6 = 0xb2;
    0x00002b9a movs r0, r0                                   |     
    0x00002b9c movs r6, 0xc0                                 |     r6 = 0xc0;
    0x00002b9e movs r0, r0                                   |     
    0x00002ba0 movs r4, 0xc0                                 |     r4 = 0xc0;
    0x00002ba2 movs r0, r0                                   |     
    0x00002ba4 cmp r7, 0x94                                  |     
    0x00002ba6 movs r0, r0                                   |     
    0x00002ba8 movs r4, 0xd8                                 |     r4 = 0xd8;
    0x00002baa movs r0, r0                                   |     
    0x00002bac cmp r1, 0x2a                                  |     
    0x00002bae movs r0, r0                                   |     
    0x00002bb0 ldrsb r0, [r6, r6]                            |     r0 = *((r6 + r6));
    0x00002bb2 movs r0, r0                                   |     
    0x00002bb4 movs r4, 0x6a                                 |     r4 = 0x6a;
    0x00002bb6 movs r0, r0                                   |     
    0x00002bb8 cmp r7, 0x42                                  |     
    0x00002bba movs r0, r0                                   |     
    0x00002bbc movs r4, 0x8e                                 |     r4 = 0x8e;
    0x00002bbe movs r0, r0                                   |     
    0x00002bc0 cmp r1, 0x38                                  |     
    0x00002bc2 movs r0, r0                                   |     
    0x00002bc4 cmp r1, 0xfc                                  |     
    0x00002bc6 movs r0, r0                                   |     
    0x00002bc8 cmp r0, 0xc6                                  |     
    0x00002bca movs r0, r0                                   |     
    0x00002bcc ldrsb r4, [r7, r4]                            |     r4 = *((r7 + r4));
    0x00002bce movs r0, r0                                   |     
    0x00002bd0 ldrh r6, [r5, r0]                             |     r6 = *((r5 + r0));
    0x00002bd2 movs r0, r0                                   |     
    0x00002bd4 ldrsb r6, [r6, r3]                            |     r6 = *((r6 + r3));
    0x00002bd6 movs r0, r0                                   |     
    0x00002bd8 movs r3, 0xac                                 |     r3 = 0xac;
    0x00002bda movs r0, r0                                   |     
    0x00002bdc cmp r6, 0x84                                  |     
    0x00002bde movs r0, r0                                   |     
    0x00002be0 movs r3, 0xd0                                 |     r3 = 0xd0;
    0x00002be2 movs r0, r0                                   |     
    0x00002be4 movs r5, 0xe0                                 |     r5 = 0xe0;
    0x00002be6 movs r0, r0                                   |     
    0x00002be8 movs r3, 0x42                                 |     r3 = 0x42;
    0x00002bea movs r0, r0                                   |     
    0x00002bec movs r3, 0x6a                                 |     r3 = 0x6a;
    0x00002bee movs r0, r0                                   |     
    0x00002bf0 cmp r6, 0x18                                  |     
    0x00002bf2 movs r0, r0                                   |     
    0x00002bf4 movs r7, 0xf2                                 |     r7 = 0xf2;
    0x00002bf6 movs r0, r0                                   |     
    0x00002bf8 movs r2, 0xf8                                 |     r2 = 0xf8;
    0x00002bfa movs r0, r0                                   |     
    0x00002bfc cmp r5, 0xd0                                  |     
    0x00002bfe movs r0, r0                                   |     
    0x00002c00 movs r3, 0x64                                 |     r3 = 0x64;
    0x00002c02 movs r0, r0                                   |     
    0x00002c04 movs r5, 0xbc                                 |     r5 = 0xbc;
    0x00002c06 movs r0, r0                                   |     
    0x00002c08 cmp r0, 0x84                                  |     
    0x00002c0a movs r0, r0                                   |     
    0x00002c40 adds r0, 0x14                                 |     r0 += 0x14;
    0x00002c42 b 0x2784                                      |     goto label_13;
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x30bc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000030bc ()                                      | void fcn_000030bc (int16_t arg1) {
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_34h_2;
                                                                 |     int16_t var_3ch;
                                                                 |     r0 = arg1;
    0x000030bc ldr r2, [pc, 0x148]                               |     
    0x000030be movs r1, 0                                        |     r1 = 0;
    0x000030c0 ldr r3, [pc, 0x148]                               |     r3 = *(0x320c);
    0x000030c2 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000030c4 ldr r7, [pc, 0x3c0]                               |     r7 = *(0x3488);
    0x000030c6 mov r8, r0                                        |     r8 = r0;
    0x000030c8 add r2, pc                                        |     r2 = 0x62d4;
    0x000030ca vpush {d8}                                        |     __asm ("vpush {d8}");
    0x000030ce sub sp, 0x44                                      |     
    0x000030d0 ldr r3, [r2, r3]                                  |     
    0x000030d2 add r5, sp, 0x2c                                  |     r5 += var_2ch;
    0x000030d4 mov r0, r5                                        |     r0 = r5;
    0x000030d6 ldr.w sb, [pc, 0x138]                             |     sb = *(0x00003210);
    0x000030da ldr r3, [r3]                                      |     r3 = *(0x62d4);
    0x000030dc str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x000030de mov.w r3, 0                                       |     r3 = 0;
    0x000030e2 blx 0x1b04                                        |     gettimeofday ();
    0x000030e6 ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x000030ea add sb, pc                                        |     sb += pc;
                                                                 |     if (r2 == 0) {
    0x000030ec cbz r2, 0x3122                                    |         goto label_1;
                                                                 |     }
    0x000030ee movw r6, 0xa120                                   |     
    0x000030f2 movs r7, 0                                        |     r7 = 0;
    0x000030f4 movt r6, 7                                        |     r6 = 0x7a120;
                                                                 | label_0:
    0x000030f8 ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x000030fc ldr.w r4, [r3, r7, lsl 2]                         |     offset_0 = r7 << 2;
                                                                 |     r4 = *((r3 + offset_0));
                                                                 |     if (r4 != 0) {
    0x00003100 cbnz r4, 0x3110                                   |         goto label_2;
                                                                 |     }
    0x00003102 b 0x311c                                          |     goto label_3;
                                                                 |     do {
    0x00003104 mov r0, r6                                        |         r0 = r6;
    0x00003106 blx 0x1b40                                        |         g_usleep ();
    0x0000310a mov r0, r5                                        |         r0 = r5;
    0x0000310c bl 0x2ecc                                         |         print_statistic ();
                                                                 | label_2:
    0x00003110 ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x00003112 blx r3                                            |         r0 = uint32_t (*r3)(uint32_t) (r3);
    0x00003114 cmp r0, 0                                         |         
    0x00003116 bgt 0x3104                                        |         
                                                                 |     } while (r0 > 0);
    0x00003118 ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
                                                                 | label_3:
    0x0000311c adds r7, 1                                        |     r7++;
    0x0000311e cmp r2, r7                                        |     
                                                                 |     if (r2 > r7) {
    0x00003120 bhi 0x30f8                                        |         goto label_0;
                                                                 |     }
                                                                 | label_1:
    0x00003122 ldr r7, [pc, 0xf0]                                |     
    0x00003124 mov r0, r5                                        |     r0 = r5;
    0x00003126 add r4, sp, 0x34                                  |     r4 += var_34h_2;
    0x00003128 bl 0x2ecc                                         |     print_statistic ();
    0x0000312c add r7, pc                                        |     r7 = 0x6346;
    0x0000312e movs r1, 0                                        |     r1 = 0;
    0x00003130 mov r0, r4                                        |     r0 = r4;
    0x00003132 ldr r6, [r7, 0x10]                                |     r6 = *(0x6356);
    0x00003134 blx 0x1b04                                        |     gettimeofday ();
    0x00003138 mov r1, r5                                        |     r1 = r5;
    0x0000313a mov r0, r4                                        |     r0 = r4;
    0x0000313c blx 0x1c44                                        |     fcn_00001c44 ();
    0x00003140 vcmpe.f64 d0, 0                                   |     __asm ("vcmpe.f64 d0, 0");
    0x00003144 vmrs apsr_nzcv, fpscr                             |     __asm ("vmrs apsr_nzcv, fpscr");
    0x00003148 ite gt                                            |     
                                                                 |     if (r1 <= 0) {
    0x0000314a movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r1 > 0) {
    0x0000314c movle r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0000314e cmp r6, 0                                         |     
    0x00003150 ite eq                                            |     
                                                                 |     if (r6 != 0) {
    0x00003152 moveq r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r6 == 0) {
    0x00003154 andne r3, r3, 1                                   |         r3 &= 1;
                                                                 |     }
    0x00003158 vmov.f64 d8, d0                                   |     __asm ("vmov.f64 d8, d0");
                                                                 |     if (r3 != 0) {
    0x0000315c cbnz r3, 0x3194                                   |         goto label_4;
                                                                 |     }
    0x0000315e ldr r3, [pc, 0xb8]                                |     r3 = *(0x321a);
    0x00003160 movs r1, 1                                        |     r1 = 1;
    0x00003162 ldr r2, [pc, 0xb8]                                |     
    0x00003164 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x00003168 add r2, pc                                        |     r2 = 0x638a;
    0x0000316a str r6, [sp, 8]                                   |     var_8h = r6;
    0x0000316c vstr d0, [sp]                                     |     __asm ("vstr d0, [sp]");
    0x00003170 ldr r0, [r3]                                      |     r0 = *(0x321a);
    0x00003172 blx 0x1bdc                                        |     fprintf_chk ()
                                                                 |     do {
    0x00003176 ldr r2, [pc, 0xa8]                                |         
    0x00003178 ldr r3, [pc, 0x90]                                |         r3 = *(0x320c);
    0x0000317a add r2, pc                                        |         r2 = 0x63a0;
    0x0000317c ldr r3, [r2, r3]                                  |         r3 = *(0x63a0);
    0x0000317e ldr r2, [r3]                                      |         r2 = *(0x63a0);
    0x00003180 ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x00003182 eors r2, r3                                       |         r2 ^= r3;
    0x00003184 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00003188 bne 0x31f6                                        |             goto label_5;
                                                                 |         }
    0x0000318a add sp, 0x44                                      |         
    0x0000318c vpop {d8}                                         |         __asm ("vpop {d8}");
    0x00003190 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_4:
    0x00003194 ldr r3, [pc, 0x80]                                |         r3 = *(0x3218);
    0x00003196 ldrd sl, fp, [r7, 0x18]                           |         __asm ("ldrd sl, fp, [r7, 0x18]");
    0x0000319a ldr r4, [pc, 0x88]                                |         
    0x0000319c ldr.w r3, [sb, r3]                                |         r3 = *((sb + r3));
    0x000031a0 mov r0, sl                                        |         r0 = sl;
    0x000031a2 mov r1, fp                                        |         r1 = fp;
    0x000031a4 add r4, pc                                        |         r4 = 0x63ce;
    0x000031a6 ldr r5, [r3]                                      |         r5 = *(0x3218);
    0x000031a8 bl 0x4a24                                         |         fcn_00004a24 (r0, r1, r2);
    0x000031ac vldr d16, [pc, 0x50]                              |         __asm ("vldr d16, [0x00003204]");
    0x000031b0 mov r2, r6                                        |         r2 = r6;
    0x000031b2 vmov d18, r0, r1                                  |         __asm ("vmov d18, r0, r1");
    0x000031b6 movs r3, 0                                        |         r3 = 0;
    0x000031b8 mov r0, sl                                        |         r0 = sl;
    0x000031ba mov r1, fp                                        |         r1 = fp;
    0x000031bc vmul.f64 d16, d8, d16                             |         __asm ("vmul.f64 d16, d8, d16");
    0x000031c0 vdiv.f64 d17, d18, d16                            |         __asm ("vdiv.f64 d17, d18, d16");
    0x000031c4 vstr d17, [sp, 0x20]                              |         __asm ("vstr d17, [sp, 0x20]");
    0x000031c8 bl 0x4a80                                         |         fcn_00004a80 (r0, r1, r2, r3);
    0x000031cc vmov s15, r6                                      |         __asm ("vmov s15, r6");
    0x000031d0 mov r8, r0                                        |         r8 = r0;
    0x000031d2 vcvt.f64.u32 d17, s15                             |         __asm ("vcvt.f64.u32 d17, s15");
    0x000031d6 mov sb, r1                                        |         sb = r1;
    0x000031d8 mov r2, r4                                        |         r2 = r4;
    0x000031da mov r0, r5                                        |         r0 = r5;
    0x000031dc movs r1, 1                                        |         r1 = 1;
    0x000031de strd r8, sb, [sp, 0x18]                           |         __asm ("strd r8, sb, [sp, 0x18]");
    0x000031e2 vstr d8, [sp, 0x10]                               |         __asm ("vstr d8, [sp, 0x10]");
    0x000031e6 vdiv.f64 d16, d17, d8                             |         __asm ("vdiv.f64 d16, d17, d8");
    0x000031ea str r6, [sp, 8]                                   |         var_8h = r6;
    0x000031ec vstr d16, [sp]                                    |         __asm ("vstr d16, [sp]");
    0x000031f0 blx 0x1bdc                                        |         fprintf_chk ()
    0x000031f4 b 0x3176                                          |         
                                                                 |     } while (1);
                                                                 | label_5:
    0x000031f6 blx 0x1cec                                        |     fcn_00001cec ();
    0x000031fa nop                                               |     
    0x000031fc nop.w                                             |     
    0x00003200 movs r0, r0                                       |     
    0x00003202 movs r0, r0                                       |     
    0x00003204 movs r0, r0                                       |     
    0x00003206 lsls r0, r2                                       |     r0 <<= r2;
    0x00003208 ldr r5, [pc, 0x280]                               |     r5 = *(0x348c);
    0x0000320a movs r0, r0                                       |     
    0x0000320c lsls r0, r5, 5                                    |     r0 = r5 << 5;
    0x0000320e movs r0, r0                                       |     
    0x00003210 ldr r5, [pc, 0x1f8]                               |     r5 = *(0x340c);
    0x00003212 movs r0, r0                                       |     
    0x00003214 str r0, [r7, r7]                                  |     *((r7 + r7)) = r0;
    0x00003216 movs r0, r0                                       |     
    0x00003218 lsls r4, r6, 5                                    |     r4 = r6 << 5;
    0x0000321a movs r0, r0                                       |     
    0x0000321c adds r0, r1, 3                                    |     r0 = r1 + 3;
    0x0000321e movs r0, r0                                       |     
    0x00003220 ldr r4, [pc, 0x3b8]                               |     r4 = *(0x35dc);
    0x00003222 movs r0, r0                                       |     
    0x00003224 adds r0, r5, 0                                    |     r0 = r5 + 0;
    0x00003226 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/bin/loggen @ 0x3230 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00003230 ()                              | void fcn_00003230 (int16_t arg_28h, uint32_t arg1, uint32_t arg2, uint32_t arg3, int16_t arg4) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
                                                         |     do {
    0x00001c28 invalid                                   |         void (*0x1c2c)() ();
    0x00003230 push.w {r4, r5, r6, r7, r8, sb, lr}       |         
    0x00003234 cmp r1, 0                                 |         
    0x00003236 it ne                                     |         
                                                         |         if (r1 != 0) {
    0x00003238 cmpne r0, 0                               |             __asm ("cmpne arg_28h");
                                                         |         }
    0x0000323a ldr r7, [pc, 0xac]                        |         
    0x0000323c sub sp, 0xc                               |         
    0x0000323e mov r5, r0                                |         r5 = r0;
    0x00003240 mov r6, r1                                |         r6 = r1;
    0x00003242 ldr.w r8, [sp, 0x28]                      |         r8 = *(arg_28h);
    0x00003246 add r7, pc                                |         r7 = 0x6534;
                                                         |         if (r1 == 0) {
    0x00003248 beq 0x32a4                                |             goto label_1;
                                                         |         }
    0x0000324a cmp r2, r3                                |         
    0x0000324c mov r4, r3                                |         r4 = r3;
    0x0000324e it lt                                     |         
                                                         |         if (r2 >= r3) {
    0x00003250 addlt r4, r2, 1                           |             r4 = r2 + 1;
                                                         |         }
                                                         |         if (r2 >= r3) {
    0x00003252 bge 0x3264                                |             goto label_2;
                                                         |         }
                                                         | label_0:
    0x00003254 mov r2, r4                                |         r2 = r4;
    0x00003256 mov r1, r6                                |         r1 = r6;
    0x00003258 mov r0, r5                                |         r0 = r5;
    0x0000325a add sp, 0xc                               |         
    0x0000325c pop.w {r4, r5, r6, r7, r8, sb, lr}        |         
    0x00003260 b.w 0x1c28                                |         
                                                         |     } while (1);
                                                         | label_2:
    0x00003264 ldr r0, [pc, 0x84]                        |     
    0x00003266 add r0, pc                                |     r0 = 0x6556;
    0x00003268 blx 0x1b70                                |     g_path_get_basename ();
    0x0000326c ldr r3, [pc, 0x80]                        |     r3 = *(0x32f0);
    0x0000326e mov sb, r0                                |     sb = r0;
    0x00003270 ldr r2, [pc, 0x80]                        |     
    0x00003272 movs r1, 1                                |     r1 = 1;
    0x00003274 ldr r7, [r7, r3]                          |     r7 = *((r7 + r3));
    0x00003276 ldr r3, [pc, 0x80]                        |     
    0x00003278 add r2, pc                                |     r2 = 0x6570;
    0x0000327a add r3, pc                                |     r3 = 0x6578;
    0x0000327c str r3, [sp]                              |     *(sp) = r3;
    0x0000327e movs r3, 0x90                             |     r3 = 0x90;
    0x00003280 ldr r0, [r7]                              |     r0 = *(r7);
    0x00003282 str r3, [sp, 4]                           |     var_4h = r3;
    0x00003284 mov r3, sb                                |     r3 = sb;
    0x00003286 blx 0x1bdc                                |     fprintf_chk ()
    0x0000328a subs r2, r4, 1                            |     r2 = r4 - 1;
    0x0000328c ldr r0, [r7]                              |     r0 = *(r7);
    0x0000328e str r2, [sp]                              |     *(sp) = r2;
    0x00003290 mov r3, r8                                |     r3 = r8;
    0x00003292 ldr r2, [pc, 0x68]                        |     
    0x00003294 movs r1, 1                                |     r1 = 1;
    0x00003296 add r2, pc                                |     r2 = 0x6598;
    0x00003298 blx 0x1bdc                                |     fprintf_chk ()
    0x0000329c mov r0, sb                                |     r0 = sb;
    0x0000329e blx 0x1d14                                |     g_hash_table_unref ();
    0x000032a2 b 0x3254                                  |     goto label_0;
                                                         | label_1:
    0x000032a4 ldr r0, [pc, 0x58]                        |     
    0x000032a6 add r0, pc                                |     r0 = 0x65aa;
    0x000032a8 blx 0x1b70                                |     g_path_get_basename ();
    0x000032ac ldr r3, [pc, 0x40]                        |     r3 = *(0x32f0);
    0x000032ae mov r4, r0                                |     r4 = r0;
    0x000032b0 ldr r2, [pc, 0x50]                        |     
    0x000032b2 movs r1, 1                                |     r1 = 1;
    0x000032b4 ldr r7, [r7, r3]                          |     r7 = *((r7 + r3));
    0x000032b6 ldr r3, [pc, 0x50]                        |     
    0x000032b8 add r2, pc                                |     r2 = 0x65c0;
    0x000032ba ldr r0, [r7]                              |     r0 = *(r7);
    0x000032bc add r3, pc                                |     r3 = 0x65ca;
    0x000032be str r3, [sp]                              |     *(sp) = r3;
    0x000032c0 movs r3, 0x89                             |     r3 = 0x89;
    0x000032c2 str r3, [sp, 4]                           |     var_4h = r3;
    0x000032c4 mov r3, r4                                |     r3 = r4;
    0x000032c6 blx 0x1bdc                                |     fprintf_chk ()
    0x000032ca ldr r2, [pc, 0x40]                        |     
    0x000032cc mov r3, r6                                |     r3 = r6;
    0x000032ce ldr r0, [r7]                              |     r0 = *(r7);
    0x000032d0 movs r1, 1                                |     r1 = 1;
    0x000032d2 str r5, [sp]                              |     *(sp) = r5;
    0x000032d4 add r2, pc                                |     r2 = 0x65e6;
    0x000032d6 blx 0x1bdc                                |     fprintf_chk ()
    0x000032da mov r0, r4                                |     r0 = r4;
    0x000032dc add sp, 0xc                               |     
    0x000032de pop.w {r4, r5, r6, r7, r8, sb, lr}        |     
    0x000032e2 b.w 0x1d10                                |     return void (*0x1d10)() ();
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x1ed8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) main ()                                              | int32_t main (int32_t argc, char ** argv) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     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_44h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_cch;
                                                                 |     int16_t var_d4h;
                                                                 |     int16_t var_13ch;
                                                                 |     r0 = argc;
                                                                 |     r1 = argv;
                                                                 |     /* [13] -r-x section size 11608 named .text */
    0x00001ed8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00001edc sub sp, 0x144                                     |     
    0x00001ede add r3, sp, 0x3c                                  |     r3 += var_3ch;
    0x00001ee0 ldr.w r2, [pc, 0xb48]                             |     
    0x00001ee4 add r5, sp, 0x48                                  |     r5 += var_48h;
    0x00001ee6 add.w sl, sp, 0x38                                |     sl += var_38h;
    0x00001eea str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00001eec ldr.w r3, [pc, 0xb40]                             |     r3 = *(0x2a30);
    0x00001ef0 add r2, pc                                        |     r2 = 0x4920;
    0x00001ef2 str.w r1, [sl]                                    |     __asm ("str.w r1, [sl]");
    0x00001ef6 str r0, [sp, 0x3c]                                |     var_3ch = r0;
    0x00001ef8 ldr r3, [r2, r3]                                  |     
    0x00001efa ldr r3, [r3]                                      |     r3 = *(0x4920);
    0x00001efc str r3, [sp, 0x13c]                               |     var_13ch = r3;
    0x00001efe mov.w r3, 0                                       |     r3 = 0;
    0x00001f02 blx 0x1d48                                        |     fcn_00001d48 ();
    0x00001f04 vmax.s32 d4, d2, d4                               |     __asm ("vmax.s32 d4, d2, d4");
    0x00001f08 ldr.w r0, [pc, 0xb28]                             |     
    0x00001f0c add r0, pc                                        |     r0 = 0x4944;
    0x00001f0e blx 0x1b4c                                        |     g_option_context_new ();
    0x00001f12 ldr.w r1, [pc, 0xb24]                             |     
    0x00001f16 ldr.w r3, [pc, 0xb24]                             |     
    0x00001f1a str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x00001f1c movs r0, 0xd                                      |     r0 = 0xd;
    0x00001f1e add r1, pc                                        |     r1 = 0x495c;
    0x00001f20 add r3, pc                                        |     r3 = 0x4962;
    0x00001f22 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00001f24 blx 0x1abc                                        |     signal (r0);
    0x00001f28 ldr.w r3, [pc, 0xb14]                             |     
    0x00001f2c add r0, sp, 0x4c                                  |     r0 += var_4ch;
    0x00001f2e add r3, pc                                        |     r3 = 0x4972;
    0x00001f30 str r3, [sp, 0x48]                                |     var_48h = r3;
    0x00001f32 blx 0x1e78                                        |     fcn_00001e78 ();
    0x00001f36 mov.w r3, 0x10000000                              |     r3 = 0x10000000;
    0x00001f3a movs r2, 0                                        |     r2 = 0;
    0x00001f3c mov r1, r5                                        |     r1 = r5;
    0x00001f3e movs r0, 0xa                                      |     r0 = 0xa;
    0x00001f40 str r3, [sp, 0xcc]                                |     var_cch = r3;
    0x00001f42 blx 0x1d6c                                        |     fcn_00001d6c ();
    0x00001f46 mov r1, r5                                        |     r1 = r5;
    0x00001f48 movs r2, 0                                        |     r2 = 0;
    0x00001f4a movs r0, 0xc                                      |     r0 = 0xc;
    0x00001f4c blx 0x1d6c                                        |     fcn_00001d6c ();
    0x00001f50 ldr.w r0, [pc, 0xaf0]                             |     
    0x00001f54 add r0, pc                                        |     r0 = 0x499c;
    0x00001f56 bl 0x45ac                                         |     get_installation_path_for ();
    0x00001f5a movs r2, 0                                        |     r2 = 0;
    0x00001f5c str r0, [sp, 0x2c]                                |     var_2ch = r0;
    0x00001f5e mov r1, r2                                        |     r1 = r2;
    0x00001f60 blx 0x1d54                                        |     fcn_00001d54 ();
    0x00001f64 str r0, [sp, 0x18]                                |     var_18h = r0;
    0x00001f66 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001f68 beq.w 0x2772                                      |         goto label_5;
                                                                 |     }
    0x00001f6c blx 0x1b58                                        |     r0 = get_debug_level ();
    0x00001f70 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001f72 bne.w 0x256c                                      |         goto label_6;
                                                                 |     }
    0x00001f74 strh r3, [r7, 0x16]                               |     *((r7 + 0x16)) = r3;
                                                                 | label_4:
    0x00001f76 ldr.w r1, [pc, 0xad0]                             |     
    0x00001f7a movs r2, 0                                        |     r2 = 0;
    0x00001f7c ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x00001f7e mov r8, r4                                        |     r8 = r4;
    0x00001f80 add r1, pc                                        |     r1 = 0x49ce;
    0x00001f82 blx 0x1d9c                                        |     fcn_00001d9c ();
    0x00001f86 ldr.w r3, [pc, 0xac4]                             |     r3 = *(0x00002a4c);
    0x00001f8a add r3, pc                                        |     r3 += pc;
    0x00001f8c adds r3, 0x2c                                     |     r3 += 0x2c;
    0x00001f8e str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00001f90 ldr.w r3, [pc, 0xabc]                             |     
    0x00001f94 add r3, pc                                        |     r3 = 0x49e8;
    0x00001f96 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00001f98 add r3, sp, 0x44                                  |     r3 += var_44h;
    0x00001f9a str r3, [sp, 0x28]                                |     var_28h = r3;
                                                                 |     do {
                                                                 | label_0:
    0x00001f9c ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x00001f9e blx 0x1d84                                        |         r0 = fcn_00001d84 ();
    0x00001fa2 mov r7, r0                                        |         r7 = r0;
    0x00001fa4 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00001fa6 beq.w 0x20fe                                      |             goto label_7;
                                                                 |         }
                                                                 | label_1:
    0x00001faa blx 0x1dd0                                        |         r0 = fcn_00001dd0 ();
    0x00001fae cmp r0, 0xa                                       |         
    0x00001fb0 bls 0x1f9c                                        |         
                                                                 |     } while (r0 < 0xa);
    0x00001fb2 ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x00001fb4 mov r0, r7                                        |     r0 = r7;
    0x00001fb6 blx 0x1e3c                                        |     r0 = fcn_00001e3c ();
    0x00001fba cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001fbc beq 0x1f9c                                        |         goto label_0;
                                                                 |     }
    0x00001fbe ldr.w r1, [pc, 0xa94]                             |     
    0x00001fc2 mov r0, r7                                        |     r0 = r7;
    0x00001fc4 add r1, pc                                        |     r1 = 0x4a1e;
    0x00001fc6 blx 0x1c80                                        |     r0 = fcn_00001c80 ();
    0x00001fca cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001fcc beq 0x1f9c                                        |         goto label_0;
                                                                 |     }
    0x00001fce movs r2, 0                                        |     r2 = 0;
    0x00001fd0 mov r1, r7                                        |     r1 = r7;
    0x00001fd2 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x00001fd4 blx 0x1b7c                                        |     g_build_filename ();
    0x00001fd8 movs r1, 1                                        |     r1 = 1;
    0x00001fda mov r5, r0                                        |     r5 = r0;
    0x00001fdc blx 0x1ac8                                        |     r0 = g_module_open ();
    0x00001fe0 mov r4, r0                                        |     r4 = r0;
    0x00001fe2 mov r0, r5                                        |     r0 = r5;
    0x00001fe4 blx 0x1d14                                        |     g_hash_table_unref ();
    0x00001fe8 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00001fea beq.w 0x291a                                      |         goto label_8;
                                                                 |     }
    0x00001fee add.w r5, r7, 0xa                                 |     r5 = r7 + 0xa;
    0x00001ff2 movs r1, 0x5f                                     |     r1 = 0x5f;
    0x00001ff4 mov r0, r5                                        |     r0 = r5;
    0x00001ff6 blx 0x1e84                                        |     r0 = fcn_00001e84 ();
    0x00001ffa cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001ffc beq.w 0x272a                                      |         goto label_9;
                                                                 |     }
    0x00002000 ldr.w r2, [pc, 0xa54]                             |     r2 = *(0x00002a58);
    0x00002004 subs r3, r0, r5                                   |     r3 = r0 - r5;
    0x00002006 str r5, [sp]                                      |     *(sp) = r5;
    0x00002008 add r5, sp, 0xd4                                  |     r5 += var_d4h;
    0x0000200a movs r1, 0x64                                     |     r1 = 0x64;
    0x0000200c mov r0, r5                                        |     r0 = r5;
    0x0000200e add r2, pc                                        |     r2 += pc;
    0x00002010 str r2, [sp, 4]                                   |     var_4h = r2;
    0x00002012 ldr.w r2, [pc, 0xa48]                             |     r2 = *(0x00002a5c);
    0x00002016 add r2, pc                                        |     r2 += pc;
    0x00002018 blx 0x1e0c                                        |     fcn_00001e0c ();
    0x0000201c ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x0000201e mov r1, r5                                        |     r1 = r5;
    0x00002020 mov r0, r4                                        |     r0 = r4;
    0x00002022 blx 0x1d78                                        |     r0 = fcn_00001d78 ();
    0x00002026 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002028 beq.w 0x2718                                      |         goto label_10;
                                                                 |     }
    0x0000202c ldr r4, [sp, 0x44]                                |     r4 = var_44h;
    0x0000202e cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00002030 beq 0x1f9c                                        |         goto label_0;
                                                                 |     }
    0x00002032 ldr.w sb, [r8, 4]                                 |     sb = *((r8 + 4));
    0x00002036 ldr.w fp, [r4]                                    |     fp = *(r4);
    0x0000203a ldr.w r6, [r8]                                    |     r6 = *(r8);
    0x0000203c str r0, [r0]                                      |     *(r0) = r0;
    0x0000203e cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00002042 beq 0x2062                                        |         goto label_11;
                                                                 |     }
    0x00002044 subs r6, 4                                        |     r6 -= 4;
    0x00002046 movs r5, 0                                        |     r5 = 0;
                                                                 |     do {
    0x00002048 ldr r3, [r6, 4]!                                  |         r3 = *((r6 += 4));
                                                                 |         if (r3 != 0) {
    0x0000204c cbz r3, 0x205c                                    |             
    0x0000204e ldr r1, [r3]                                      |             r1 = *(r3);
    0x00002050 mov r0, fp                                        |             r0 = fp;
    0x00002052 blx 0x1e24                                        |             r0 = fcn_00001e24 ();
    0x00002056 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x00002058 beq.w 0x21e2                                      |                 goto label_12;
                                                                 |             }
                                                                 |         }
    0x0000205c adds r5, 1                                        |         r5++;
    0x0000205e cmp r5, sb                                        |         
    0x00002060 bne 0x2048                                        |         
                                                                 |     } while (r5 != sb);
                                                                 | label_11:
    0x00002062 ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x00002064 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00002066 beq.w 0x2236                                      |         goto label_13;
                                                                 |     }
    0x0000206a ldr.w r0, [pc, 0x9f4]                             |     
    0x0000206e add r0, pc                                        |     r0 = 0x4ad4;
    0x00002070 blx r3                                            |     uint32_t (*r3)(uint32_t) (r0);
                                                                 | label_2:
    0x00002072 mov r1, r4                                        |     r1 = r4;
    0x00002074 mov r0, r8                                        |     r0 = r8;
    0x00002076 blx 0x1e30                                        |     fcn_00001e30 ();
    0x0000207a ldr r1, [r4]                                      |     r1 = *(r4);
    0x0000207c movs r3, 0                                        |     r3 = 0;
    0x0000207e ldr.w r2, [pc, 0x9e4]                             |     r2 = *(0x00002a64);
    0x00002082 str r3, [sp]                                      |     *(sp) = r3;
    0x00002084 mov r0, r1                                        |     r0 = r1;
    0x00002086 add r2, pc                                        |     r2 += pc;
    0x00002088 blx 0x1b64                                        |     g_option_group_new ();
    0x0000208c ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x0000208e mov r5, r0                                        |     r5 = r0;
    0x00002090 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t) (r3);
    0x00002092 mov r1, r0                                        |     r1 = r0;
    0x00002094 mov r0, r5                                        |     r0 = r5;
    0x00002096 blx 0x1b94                                        |     g_option_group_add_entries ();
    0x0000209a ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x0000209c mov r1, r5                                        |     r1 = r5;
    0x0000209e blx 0x1aec                                        |     g_option_context_add_group ();
    0x000020a2 blx 0x1b58                                        |     r0 = get_debug_level ();
    0x000020a6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000020a8 beq.w 0x1f9c                                      |         goto label_0;
                                                                 |     }
    0x000020ac ldr.w r0, [pc, 0x9b8]                             |     
    0x000020b0 add r0, pc                                        |     r0 = 0x4b1c;
    0x000020b2 blx 0x1b70                                        |     g_path_get_basename ();
    0x000020b6 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x000020b8 mov r5, r0                                        |     r5 = r0;
    0x000020ba ldr.w r3, [pc, 0x9b0]                             |     r3 = *(0x2a6e);
    0x000020be movs r1, 1                                        |     r1 = 1;
    0x000020c0 ldr r6, [r2, r3]                                  |     r6 = *((r2 + r3));
    0x000020c2 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x000020c4 ldr.w r2, [pc, 0x9a8]                             |     r2 = *(0x00002a70);
    0x000020c8 str r3, [sp]                                      |     *(sp) = r3;
    0x000020ca movs r3, 0xf7                                     |     r3 = 0xf7;
    0x000020cc str r3, [sp, 4]                                   |     var_4h = r3;
    0x000020ce add r2, pc                                        |     r2 += pc;
    0x000020d0 mov r3, r5                                        |     r3 = r5;
    0x000020d2 ldr r0, [r6]                                      |     r0 = *(r6);
    0x000020d4 blx 0x1bdc                                        |     fprintf_chk ()
    0x000020d8 ldr.w r2, [pc, 0x998]                             |     r2 = *(0x00002a74);
    0x000020dc movs r1, 1                                        |     r1 = 1;
    0x000020de ldr r3, [r4]                                      |     r3 = *(r4);
    0x000020e0 str r7, [sp]                                      |     *(sp) = r7;
    0x000020e2 add r2, pc                                        |     r2 += pc;
    0x000020e4 ldr r0, [r6]                                      |     r0 = *(r6);
    0x000020e6 blx 0x1bdc                                        |     fprintf_chk ()
    0x000020ea mov r0, r5                                        |     r0 = r5;
    0x000020ec blx 0x1d14                                        |     g_hash_table_unref ();
    0x000020f0 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x000020f2 blx 0x1d84                                        |     r0 = fcn_00001d84 ();
    0x000020f6 mov r7, r0                                        |     r7 = r0;
    0x000020f8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000020fa bne.w 0x1faa                                      |         goto label_1;
                                                                 |     }
                                                                 | label_7:
    0x000020fe ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00002100 mov r4, r8                                        |     r4 = r8;
    0x00002102 blx 0x1c5c                                        |     fcn_00001c5c ();
    0x00002106 ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x0000210a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000210c beq.w 0x24e2                                      |         goto label_14;
                                                                 |     }
                                                                 | label_3:
    0x00002110 blx 0x1b58                                        |     r0 = get_debug_level ();
    0x00002114 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00002116 bne.w 0x2496                                      |         goto label_15;
                                                                 |     }
                                                                 | label_12:
    0x000021e2 blx 0x1b58                                        |     r0 = get_debug_level ();
    0x000021e6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000021e8 beq.w 0x1f9c                                      |         goto label_0;
                                                                 |     }
    0x000021ec ldr.w r0, [pc, 0x8a8]                             |     
    0x000021f0 add r0, pc                                        |     r0 = 0x4c8c;
    0x000021f2 blx 0x1b70                                        |     g_path_get_basename ();
    0x000021f6 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x000021f8 mov r5, r0                                        |     r5 = r0;
    0x000021fa ldr.w r3, [pc, 0x870]                             |     
    0x000021fe movs r1, 1                                        |     r1 = 1;
    0x00002200 ldr r6, [r2, r3]                                  |     r6 = *((r2 + r3));
    0x00002202 ldr.w r3, [pc, 0x898]                             |     r3 = *(0x00002a9c);
    0x00002206 ldr.w r2, [pc, 0x898]                             |     r2 = *(0x00002aa0);
    0x0000220a add r3, pc                                        |     r3 = 0x4c7c;
    0x0000220c adds r3, 0x2c                                     |     r3 += 0x2c;
    0x0000220e add r2, pc                                        |     r2 += pc;
    0x00002210 str r3, [sp]                                      |     *(sp) = r3;
    0x00002212 movs r3, 0xe7                                     |     r3 = 0xe7;
    0x00002214 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00002216 mov r3, r0                                        |     r3 = r0;
    0x00002218 ldr r0, [r6]                                      |     r0 = *(r6);
    0x0000221a blx 0x1bdc                                        |     fprintf_chk ()
    0x0000221e ldr.w r2, [pc, 0x884]                             |     
    0x00002222 movs r1, 1                                        |     r1 = 1;
    0x00002224 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00002226 ldr r0, [r6]                                      |     r0 = *(r6);
    0x00002228 add r2, pc                                        |     r2 = 0x4cd2;
    0x0000222a blx 0x1bdc                                        |     fprintf_chk ()
    0x0000222e mov r0, r5                                        |     r0 = r5;
    0x00002230 blx 0x1d14                                        |     g_hash_table_unref ();
    0x00002234 b 0x1f9c                                          |     goto label_0;
                                                                 | label_13:
    0x00002236 ldr.w r0, [pc, 0x870]                             |     r0 = *(0x00002aa8);
    0x0000223a add r0, pc                                        |     r0 += pc;
    0x0000223c blx 0x1b70                                        |     g_path_get_basename ();
    0x00002240 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x00002242 mov r5, r0                                        |     r5 = r0;
    0x00002244 ldr.w r3, [pc, 0x864]                             |     r3 = *(0x00002aac);
    0x00002248 movs r1, 1                                        |     r1 = 1;
    0x0000224a ldr r6, [r2, r3]                                  |     r6 = *((r2 + r3));
    0x0000224c ldr.w r3, [pc, 0x860]                             |     r3 = *(0x00002ab0);
    0x00002250 ldr.w r2, [pc, 0x860]                             |     r2 = *(0x00002ab4);
    0x00002254 ldr r0, [r6]                                      |     r0 = *(r6);
    0x00002256 add r3, pc                                        |     r3 += pc;
    0x00002258 adds r3, 0x2c                                     |     r3 += 0x2c;
    0x0000225a add r2, pc                                        |     r2 += pc;
    0x0000225c str r3, [sp]                                      |     *(sp) = r3;
    0x0000225e movs r3, 0xee                                     |     r3 = 0xee;
    0x00002260 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00002262 mov r3, r5                                        |     r3 = r5;
    0x00002264 blx 0x1bdc                                        |     fprintf_chk ()
    0x00002268 ldr.w r2, [pc, 0x84c]                             |     r2 = *(0x00002ab8);
    0x0000226c movs r1, 1                                        |     r1 = 1;
    0x0000226e ldr r0, [r6]                                      |     r0 = *(r6);
    0x00002270 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00002272 add r2, pc                                        |     r2 += pc;
    0x00002274 blx 0x1bdc                                        |     fprintf_chk ()
    0x00002278 mov r0, r5                                        |     r0 = r5;
    0x0000227a blx 0x1d14                                        |     g_hash_table_unref ();
    0x0000227e b 0x2072                                          |     goto label_2;
                                                                 | label_15:
    0x00002496 ldr.w r0, [pc, 0x668]                             |     r0 = *(0x00002b00);
    0x0000249a add r0, pc                                        |     r0 += pc;
    0x0000249c blx 0x1b70                                        |     g_path_get_basename ();
    0x000024a0 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x000024a2 mov r5, r0                                        |     r5 = r0;
    0x000024a4 ldr.w r3, [pc, 0x5c4]                             |     r3 = *(0x2a6c);
    0x000024a8 movs r1, 1                                        |     r1 = 1;
    0x000024aa ldr r7, [r2, r3]                                  |     r7 = *((r2 + r3));
    0x000024ac ldr.w r3, [pc, 0x654]                             |     
    0x000024b0 ldr.w r2, [pc, 0x654]                             |     
    0x000024b4 add r3, pc                                        |     r3 = 0x4fbc;
    0x000024b6 adds r3, 0x2c                                     |     r3 += 0x2c;
    0x000024b8 add r2, pc                                        |     r2 = 0x4fc4;
    0x000024ba str r3, [sp]                                      |     *(sp) = r3;
    0x000024bc mov.w r3, 0x102                                   |     r3 = 0x102;
    0x000024c0 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000024c2 mov r3, r0                                        |     r3 = r0;
    0x000024c4 ldr r0, [r7]                                      |     r0 = *(r7);
    0x000024c6 blx 0x1bdc                                        |     fprintf_chk ()
    0x000024ca ldr.w r2, [pc, 0x640]                             |     
    0x000024ce movs r1, 1                                        |     r1 = 1;
    0x000024d0 ldr r0, [r7]                                      |     r0 = *(r7);
    0x000024d2 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x000024d4 add r2, pc                                        |     r2 = 0x4fe6;
    0x000024d6 blx 0x1bdc                                        |     fprintf_chk ()
    0x000024d8 invalid                                           |     
    0x000024dc blx 0x1d14                                        |     g_hash_table_unref ();
    0x000024e0 b 0x211a                                          |     void (*0x211a)() ();
                                                                 | label_14:
    0x000024e2 ldr.w r3, [pc, 0x62c]                             |     r3 = *(0x00002b10);
    0x000024e6 ldr.w r8, [pc, 0x62c]                             |     r8 = *(0x00002b14);
    0x000024ea ldr.w r7, [pc, 0x62c]                             |     r7 = *(0x00002b18);
    0x000024ee add r3, pc                                        |     r3 += pc;
    0x000024f0 mov r0, r3                                        |     r0 = r3;
    0x000024f2 mov sb, r3                                        |     sb = r3;
    0x000024f4 blx 0x1b70                                        |     g_path_get_basename ();
    0x000024f8 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x000024fa add r8, pc                                        |     r8 += pc;
    0x000024fc ldr.w r3, [pc, 0x5ac]                             |     r3 = *(0x00002aac);
    0x00002500 mov r6, r0                                        |     r6 = r0;
    0x00002502 add r7, pc                                        |     r7 += pc;
    0x00002504 add.w r8, r8, 0x2c                                |     r8 += 0x2c;
    0x00002508 movs r1, 1                                        |     r1 = 1;
    0x0000250a ldr r5, [r2, r3]                                  |     r5 = *((r2 + r3));
    0x0000250c movs r3, 0xfe                                     |     r3 = 0xfe;
    0x0000250e str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x00002512 mov r2, r7                                        |     r2 = r7;
    0x00002514 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00002516 mov r3, r6                                        |     r3 = r6;
    0x00002518 ldr r0, [r5]                                      |     r0 = *(r5);
    0x0000251a blx 0x1bdc                                        |     fprintf_chk ()
    0x0000251e ldr.w r2, [pc, 0x5fc]                             |     
    0x00002522 movs r1, 1                                        |     r1 = 1;
    0x00002524 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00002526 ldr r0, [r5]                                      |     r0 = *(r5);
    0x00002528 add r2, pc                                        |     r2 = 0x504a;
    0x0000252a blx 0x1bdc                                        |     fprintf_chk ()
    0x0000252e mov r0, r6                                        |     r0 = r6;
    0x00002530 blx 0x1d14                                        |     g_hash_table_unref ();
    0x00002534 mov r0, sb                                        |     r0 = sb;
    0x00002536 blx 0x1b70                                        |     g_path_get_basename ();
    0x0000253a movs r3, 0xff                                     |     r3 = 0xff;
    0x0000253c str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x00002540 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00002542 mov r8, r0                                        |     r8 = r0;
    0x00002544 mov r2, r7                                        |     r2 = r7;
    0x00002546 mov r3, r0                                        |     r3 = r0;
    0x00002548 movs r1, 1                                        |     r1 = 1;
    0x0000254a ldr r0, [r5]                                      |     r0 = *(r5);
    0x0000254c blx 0x1bdc                                        |     fprintf_chk ()
    0x00002550 ldr.w r3, [pc, 0x5cc]                             |     
    0x00002554 movs r1, 1                                        |     r1 = 1;
    0x00002556 ldr.w r2, [pc, 0x5cc]                             |     r2 = *(0x00002b24);
    0x0000255a ldr r0, [r5]                                      |     r0 = *(r5);
    0x0000255c add r3, pc                                        |     r3 = 0x5080;
    0x0000255e add r2, pc                                        |     r2 += pc;
    0x00002560 blx 0x1bdc                                        |     fprintf_chk ()
    0x00002564 mov r0, r8                                        |     r0 = r8;
    0x00002566 blx 0x1d14                                        |     g_hash_table_unref ();
    0x0000256a b 0x2110                                          |     goto label_3;
                                                                 | label_6:
    0x0000256c ldr.w r0, [pc, 0x5b8]                             |     
    0x00002570 add r0, pc                                        |     r0 = 0x509c;
    0x00002572 blx 0x1b70                                        |     g_path_get_basename ();
    0x00002576 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x00002578 mov r5, r0                                        |     r5 = r0;
    0x0000257a ldr.w r3, [pc, 0x4f0]                             |     
    0x0000257e movs r1, 1                                        |     r1 = 1;
    0x00002580 ldr r7, [r2, r3]                                  |     r7 = *((r2 + r3));
    0x00002582 ldr.w r3, [pc, 0x5a8]                             |     r3 = *(0x00002b2c);
    0x00002586 ldr.w r2, [pc, 0x5a8]                             |     r2 = *(0x00002b30);
    0x0000258a add r3, pc                                        |     r3 = 0x4ffc;
    0x0000258c adds r3, 0x2c                                     |     r3 += 0x2c;
    0x0000258e add r2, pc                                        |     r2 += pc;
    0x00002590 str r3, [sp]                                      |     *(sp) = r3;
    0x00002592 movs r3, 0xda                                     |     r3 = 0xda;
    0x00002594 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00002596 mov r3, r5                                        |     r3 = r5;
    0x00002598 ldr r0, [r7]                                      |     r0 = *(r7);
    0x0000259a blx 0x1bdc                                        |     fprintf_chk ()
    0x0000259e ldr.w r2, [pc, 0x594]                             |     
    0x000025a2 movs r1, 1                                        |     r1 = 1;
    0x000025a4 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000025a6 ldr r0, [r7]                                      |     r0 = *(r7);
    0x000025a8 add r2, pc                                        |     r2 = 0x50e2;
    0x000025aa blx 0x1bdc                                        |     fprintf_chk ()
    0x000025ae mov r0, r5                                        |     r0 = r5;
    0x000025b0 blx 0x1d14                                        |     g_hash_table_unref ();
    0x000025b4 b 0x1f76                                          |     goto label_4;
                                                                 | label_10:
    0x00002718 blx 0x1b58                                        |     r0 = get_debug_level ();
    0x0000271c cmp r0, 0                                         |     
    0x0000271e bne.w 0x29ce                                      |     
                                                                 |     while (1) {
    0x00002722 mov r0, r4                                        |         r0 = r4;
    0x00002724 blx 0x1cf8                                        |         fcn_00001cf8 ();
    0x00002728 b 0x1f9c                                          |         goto label_0;
                                                                 | label_9:
    0x0000272a ldr.w r0, [pc, 0x44c]                             |         r0 = *(0x00002b78);
    0x0000272e add r0, pc                                        |         r0 += pc;
    0x00002730 blx 0x1b70                                        |         g_path_get_basename ();
    0x00002734 ldr r2, [sp, 0x20]                                |         r2 = var_20h;
    0x00002736 mov r4, r0                                        |         r4 = r0;
    0x00002738 ldr r3, [pc, 0x370]                               |         
    0x0000273a movs r1, 1                                        |         r1 = 1;
    0x0000273c ldr r6, [r2, r3]                                  |         r6 = *((r2 + r3));
    0x0000273e ldr.w r3, [pc, 0x43c]                             |         r3 = *(0x00002b7c);
    0x00002742 ldr.w r2, [pc, 0x43c]                             |         r2 = *(0x00002b80);
    0x00002746 add r3, pc                                        |         r3 = 0x51f6;
    0x00002748 adds r3, 0x40                                     |         r3 += 0x40;
    0x0000274a add r2, pc                                        |         r2 += pc;
    0x0000274c str r3, [sp]                                      |         *(sp) = r3;
    0x0000274e movs r3, 0xb9                                     |         r3 = 0xb9;
    0x00002750 str r3, [sp, 4]                                   |         var_4h = r3;
    0x00002752 mov r3, r4                                        |         r3 = r4;
    0x00002754 ldr r0, [r6]                                      |         r0 = *(r6);
    0x00002756 blx 0x1bdc                                        |         fprintf_chk ()
    0x00002758 orr.w r8, r2, pc, lsr 31                          |         r8 = r2 | (pc >> 31);
    0x0000275c movs r4, 0x28                                     |         r4 = 0x28;
    0x0000275e mov r3, r7                                        |         r3 = r7;
    0x00002760 ldr r0, [r6]                                      |         r0 = *(r6);
    0x00002762 movs r1, 1                                        |         r1 = 1;
    0x00002764 add r2, pc                                        |         r2 += pc;
    0x00002766 blx 0x1bdc                                        |         fprintf_chk ()
    0x0000276a mov r0, r4                                        |         r0 = r4;
    0x0000276c blx 0x1d14                                        |         g_hash_table_unref ();
    0x00002770 b 0x1f9c                                          |         goto label_0;
                                                                 | label_5:
    0x00002772 ldr.w r3, [pc, 0x414]                             |         r3 = *(0x00002b88);
    0x00002776 add r2, sp, 0x44                                  |         r2 += var_44h;
    0x00002778 str r2, [sp, 0x28]                                |         var_28h = r2;
    0x0000277a ldr.w r8, [pc, 0x410]                             |         r8 = *(0x00002b8c);
    0x0000277e add r3, pc                                        |         r3 += pc;
    0x00002780 ldr.w r7, [pc, 0x40c]                             |         r7 = *(0x00002b90);
                                                                 | label_8:
    0x0000291a ldr r0, [pc, 0x2bc]                               |         
    0x0000291c add r0, pc                                        |         r0 = 0x54fa;
    0x0000291e blx 0x1b70                                        |         g_path_get_basename ();
    0x00002922 ldr r2, [sp, 0x20]                                |         r2 = var_20h;
    0x00002924 mov r4, r0                                        |         r4 = r0;
    0x00002926 ldr r3, [pc, 0x184]                               |         r3 = *(0x2aae);
    0x00002928 movs r1, 1                                        |         r1 = 1;
    0x0000292a ldr r6, [r2, r3]                                  |         r6 = *((r2 + r3));
    0x0000292c ldr r3, [pc, 0x2ac]                               |         
    0x0000292e ldr r2, [pc, 0x2b0]                               |         
    0x00002930 add r3, pc                                        |         r3 = 0x5510;
    0x00002932 adds r3, 0x40                                     |         r3 += 0x40;
    0x00002934 add r2, pc                                        |         r2 = 0x551a;
    0x00002936 str r3, [sp]                                      |         *(sp) = r3;
    0x00002938 movs r3, 0xaf                                     |         r3 = 0xaf;
    0x0000293a str r3, [sp, 4]                                   |         var_4h = r3;
    0x0000293c mov r3, r0                                        |         r3 = r0;
    0x0000293e ldr r0, [r6]                                      |         r0 = *(r6);
    0x00002940 blx 0x1bdc                                        |         fprintf_chk ()
    0x00002944 ldr r5, [r6]                                      |         r5 = *(r6);
    0x00002946 blx 0x1c68                                        |         fcn_00001c68 ();
    0x0000294a ldr r2, [pc, 0x298]                               |         
    0x0000294c mov r3, r7                                        |         r3 = r7;
    0x0000294e str r0, [sp]                                      |         *(sp) = r0;
    0x00002950 movs r1, 1                                        |         r1 = 1;
    0x00002952 mov r0, r5                                        |         r0 = r5;
    0x00002954 add r2, pc                                        |         r2 = 0x553e;
    0x00002956 blx 0x1bdc                                        |         fprintf_chk ()
    0x00002958 strd r4, r6, [r2, -0x80]                          |         __asm ("strd r4, r6, [r2, -0x80]");
    0x0000295c blx 0x1d14                                        |         g_hash_table_unref ();
    0x00002960 b.w 0x1f9c                                        |         goto label_0;
    0x000029ce ldr r0, [pc, 0x228]                               |         
    0x000029d0 add r0, pc                                        |         r0 = 0x55ce;
    0x000029d2 blx 0x1b70                                        |         g_path_get_basename ();
    0x000029d6 ldr r2, [sp, 0x20]                                |         r2 = var_20h;
    0x000029d8 mov r5, r0                                        |         r5 = r0;
    0x000029da ldr r3, [pc, 0x90]                                |         r3 = *(0x2a6e);
    0x000029dc movs r1, 1                                        |         r1 = 1;
    0x000029de ldr r6, [r2, r3]                                  |         r6 = *((r2 + r3));
    0x000029e0 ldr r3, [pc, 0x218]                               |         
    0x000029e2 ldr r2, [pc, 0x21c]                               |         
    0x000029e4 add r3, pc                                        |         r3 = 0x55e4;
    0x000029e6 adds r3, 0x40                                     |         r3 += 0x40;
    0x000029e8 add r2, pc                                        |         
    0x000029ea str r3, [sp]                                      |         *(sp) = r3;
    0x000029ec movs r3, 0xc5                                     |         r3 = 0xc5;
    0x000029ee str r3, [sp, 4]                                   |         var_4h = r3;
    0x000029f0 mov r3, r0                                        |         r3 = r0;
    0x000029f2 ldr r0, [r6]                                      |         r0 = *(r6);
    0x000029f4 blx 0x1bdc                                        |         fprintf_chk ()
    0x000029f8 ldr r6, [r6]                                      |         r6 = *(r6);
    0x000029fa blx 0x1c68                                        |         r0 = fcn_00001c68 ();
    0x000029fc ldmdb r6!, {r0, r7, sb, fp, lr}                   |         __asm ("ldmdb r6!, {r0, r7, sb, fp, lr}");
    0x00002a00 mov r3, r7                                        |         r3 = r7;
    0x00002a02 str r0, [sp]                                      |         *(sp) = r0;
    0x00002a04 movs r1, 1                                        |         r1 = 1;
    0x00002a06 mov r0, r6                                        |         r0 = r6;
    0x00002a08 add r2, pc                                        |         r2 = 0x7ffa;
    0x00002a0a blx 0x1bdc                                        |         fprintf_chk ()
    0x00002a0e mov r0, r5                                        |         r0 = r5;
    0x00002a10 blx 0x1d14                                        |         g_hash_table_unref ();
    0x00002a14 b 0x2722                                          |         
                                                                 |     }
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x4170 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.generate_log_line ()                     | void generate_log_line (int16_t arg_98h, uint32_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     int16_t var_8h;
                                                         |     tm * timeptr;
                                                         |     int16_t var_3ch;
                                                         |     int16_t var_44h;
                                                         |     int32_t var_0h_2;
                                                         |     char * s;
                                                         |     int16_t var_74h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
                                                         |     do {
    0x00001dcc bx pc                                     |         return void (*pc)() ();
    0x00004170 push.w {r4, r5, r6, r7, r8, sb, lr}       |         
    0x00004174 mov r7, r2                                |         r7 = r2;
    0x00004176 ldr r2, [pc, 0x160]                       |         
    0x00004178 mov r6, r3                                |         r6 = r3;
    0x0000417a sub sp, 0x7c                              |         
    0x0000417c ldr r3, [pc, 0x15c]                       |         r3 = *(0x42dc);
    0x0000417e add r2, pc                                |         r2 = 0x845c;
    0x00004180 ldr r4, [pc, 0x15c]                       |         
    0x00004182 ldr.w r8, [sp, 0x98]                      |         r8 = *(arg_98h);
    0x00004186 ldr r3, [r2, r3]                          |         
    0x00004188 add r4, pc                                |         r4 = 0x846c;
    0x0000418a ldr r3, [r3]                              |         r3 = imp.stdin;
    0x0000418c str r3, [sp, 0x74]                        |         var_74h = r3;
    0x0000418e mov.w r3, 0                               |         r3 = 0;
    0x00004192 cmp r0, 0                                 |         
                                                         |         if (arg_98h == ) {
    0x00004194 beq 0x4278                                |             goto label_1;
                                                         |         }
    0x00004196 cmp.w r1, 0x2000                          |         
    0x0000419a mov r2, r1                                |         r2 = r1;
    0x0000419c ldr r1, [pc, 0x144]                       |         
    0x0000419e it ge                                     |         
                                                         |         if (r1 < 0x2000) {
    0x000041a0 movge r2, 0x2000                          |             r2 = 0x2000;
                                                         |         }
    0x000041a4 add r4, sp, 8                             |         r4 += var_8h;
    0x000041a6 mov r5, r0                                |         r5 = r0;
    0x000041a8 add.w sb, sp, 0x10                        |         sb += timeptr;
    0x000041ac add r1, pc                                |         r1 = 0x8494;
    0x000041ae blx 0x1dc0                                |         fcn_00001dc0 ();
    0x000041b2 movs r1, 0                                |         r1 = 0;
    0x000041b4 mov r0, r4                                |         r0 = r4;
    0x000041b6 blx 0x1b04                                |         gettimeofday ();
    0x000041ba mov r0, r4                                |         r0 = r4;
    0x000041bc mov r1, sb                                |         r1 = sb;
    0x000041be blx 0x1ad4                                |         localtime_r ();
    0x000041c2 ldr r2, [pc, 0x124]                       |         
    0x000041c4 add r4, sp, 0x54                          |         r4 += s;
    0x000041c6 movs r1, 0x20                             |         r1 = 0x20;
    0x000041c8 mov r3, sb                                |         r3 = sb;
    0x000041ca mov r0, r4                                |         r0 = r4;
    0x000041cc add r2, pc                                |         r2 = 0x84ba;
    0x000041ce blx 0x1bf4                                |         strftime (r0, r1, r2, r3);
    0x000041d2 ldr r3, [pc, 0x118]                       |         
    0x000041d4 mov r2, r0                                |         r2 = r0;
    0x000041d6 mov r1, r4                                |         r1 = r4;
    0x000041d8 add r3, pc                                |         r3 = 0x84ca;
    0x000041da ldr r0, [r3, 0xc]                         |         r0 = imp.stdin;
    0x000041dc add r0, r5                                |         r0 += r5;
    0x000041de blx 0x1dc0                                |         fcn_00001dc0 ();
    0x000041e2 cmp r7, 0                                 |         
                                                         |         if (r7 != 0) {
    0x000041e4 bne 0x426c                                |             goto label_2;
                                                         |         }
                                                         | label_0:
    0x000041e6 ldr r7, [pc, 0x108]                       |         
    0x000041e8 mov r0, r4                                |         r0 = r4;
    0x000041ea blx 0x1dd0                                |         r0 = fcn_00001dd0 ();
    0x000041ee mov r2, r0                                |         r2 = r0;
    0x000041f0 mov r1, r4                                |         r1 = r4;
    0x000041f2 add r7, pc                                |         r7 = 0x84e8;
    0x000041f4 add r4, sp, 0x44                          |         r4 += var_44h;
    0x000041f6 ldr r0, [r7]                              |         r0 = imp.stdin;
    0x000041f8 add r0, r5                                |         r0 += r5;
    0x000041fa blx 0x1dc0                                |         fcn_00001dc0 ();
    0x000041fe ldr r3, [pc, 0xf4]                        |         
    0x00004200 movs r2, 1                                |         r2 = 1;
    0x00004202 mov r0, r4                                |         r0 = r4;
    0x00004204 str.w r8, [sp, 4]                         |         __asm ("str.w r8, [var_4h]");
    0x00004208 add r3, pc                                |         r3 = 0x8502;
    0x0000420a str r3, [sp]                              |         *(sp) = r3;
    0x0000420c movs r3, 0x10                             |         r3 = 0x10;
    0x0000420e mov r1, r3                                |         r1 = r3;
    0x00004210 blx 0x1ddc                                |         fcn_00001ddc ();
    0x00004214 ldr.w r8, [r7, 4]                         |         r8 = imp.stdin;
    0x00004218 mov ip, r4                                |         
    0x0000421a ldm.w ip!, {r0, r1}                       |         r0 = *(ip!);
                                                         |         r1 = *((ip! + 4));
    0x0000421e movs r3, 5                                |         r3 = 5;
    0x00004220 ldr r4, [pc, 0xd4]                        |         
    0x00004222 movs r2, 1                                |         r2 = 1;
    0x00004224 add.w lr, r5, r8                          |         lr = r5 + r8;
    0x00004228 str.w r0, [r5, r8]                        |         __asm ("str.w r0, [r5, r8]");
    0x0000422c add r0, sp, 0x3c                          |         r0 += var_3ch;
    0x0000422e str.w r1, [lr, 4]                         |         __asm ("str.w r1, [lr, 4]");
    0x00004232 add r4, pc                                |         r4 = 0x852e;
    0x00004234 ldrh.w r1, [ip]                           |         r1 = *(ip);
    0x00004238 strh.w r1, [lr, 8]                        |         *((lr + 8)) = r1;
    0x0000423c mov r1, r3                                |         r1 = r3;
    0x0000423e strd r4, r6, [sp]                         |         __asm ("strd r4, r6, [sp]");
    0x00004242 blx 0x1ddc                                |         fcn_00001ddc ();
    0x00004246 ldr r2, [sp, 0x3c]                        |         r2 = var_3ch;
    0x00004248 ldr r3, [r7, 8]                           |         r3 = imp.stdin;
    0x0000424a str r2, [r5, r3]                          |         *((r5 + r3)) = r2;
    0x0000424c ldr r2, [pc, 0xac]                        |         
    0x0000424e ldr r3, [pc, 0x8c]                        |         r3 = *(0x42de);
    0x00004250 add r2, pc                                |         r2 = 0x8550;
    0x00004252 ldr r3, [r2, r3]                          |         r3 = imp.stdin;
    0x00004254 ldr r2, [r3]                              |         r2 = imp.stdin;
    0x00004256 ldr r3, [sp, 0x74]                        |         r3 = var_74h;
    0x00004258 eors r2, r3                               |         r2 ^= r3;
    0x0000425a mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x0000425e bne 0x42d2                                |             goto label_3;
                                                         |         }
    0x00004260 mov r0, r5                                |         r0 = r5;
    0x00004262 add sp, 0x7c                              |         
    0x00004264 pop.w {r4, r5, r6, r7, r8, sb, lr}        |         
    0x00004268 b.w 0x1dcc                                |         
                                                         |     } while (1);
                                                         | label_2:
    0x0000426c mov r2, sb                                |     r2 = sb;
    0x0000426e movs r1, 0x20                             |     r1 = 0x20;
    0x00004270 mov r0, r4                                |     r0 = r4;
    0x00004272 blx 0x1ecc                                |     fcn_00001ecc ();
    0x00004276 b 0x41e6                                  |     goto label_0;
                                                         | label_1:
    0x00004278 ldr r0, [pc, 0x84]                        |     
    0x0000427a add r0, pc                                |     r0 = 0x857e;
    0x0000427c blx 0x1b70                                |     g_path_get_basename ();
    0x00004280 ldr r3, [pc, 0x80]                        |     r3 = *(0x4304);
    0x00004282 movs r2, 0x68                             |     r2 = 0x68;
    0x00004284 ldr r1, [pc, 0x80]                        |     
    0x00004286 mov r5, r0                                |     r5 = r0;
    0x00004288 ldr r4, [r4, r3]                          |     r4 = *((r4 + r3));
    0x0000428a mov r3, r0                                |     r3 = r0;
    0x0000428c str r2, [sp, 4]                           |     var_4h = r2;
    0x0000428e add r1, pc                                |     r1 = 0x859a;
    0x00004290 ldr r2, [pc, 0x78]                        |     
    0x00004292 adds r1, 0x1c                             |     r1 += 0x1c;
    0x00004294 str r1, [sp]                              |     *(sp) = r1;
    0x00004296 movs r1, 1                                |     r1 = 1;
    0x00004298 ldr r0, [r4]                              |     r0 = *(r4);
    0x0000429a add r2, pc                                |     r2 = 0x85aa;
    0x0000429c blx 0x1bdc                                |     fprintf_chk ()
    0x000042a0 ldr r0, [pc, 0x6c]                        |     
    0x000042a2 movs r2, 0xf                              |     r2 = 0xf;
    0x000042a4 ldr r3, [r4]                              |     r3 = *(r4);
    0x000042a6 movs r1, 1                                |     r1 = 1;
    0x000042a8 add r0, pc                                |     r0 = 0x85bc;
    0x000042aa blx 0x1db4                                |     fcn_00001db4 ();
    0x000042ae mov r0, r5                                |     r0 = r5;
    0x000042b0 blx 0x1d14                                |     g_hash_table_unref ();
    0x000042b4 ldr r2, [pc, 0x5c]                        |     
    0x000042b6 ldr r3, [pc, 0x24]                        |     r3 = *(0x42de);
    0x000042b8 add r2, pc                                |     r2 = 0x85d0;
    0x000042ba ldr r3, [r2, r3]                          |     r3 = imp.stdin;
    0x000042bc ldr r2, [r3]                              |     r2 = imp.stdin;
    0x000042be ldr r3, [sp, 0x74]                        |     r3 = var_74h;
    0x000042c0 eors r2, r3                               |     r2 ^= r3;
    0x000042c2 mov.w r3, 0                               |     r3 = 0;
                                                         |     if (r2 == r3) {
    0x000042c6 bne 0x42d2                                |         
    0x000042c8 mov.w r0, -1                              |         r0 = -1;
    0x000042cc add sp, 0x7c                              |         
    0x000042ce pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         |     }
                                                         | label_3:
    0x000042d2 blx 0x1cec                                |     fcn_00001cec ();
    0x000042d6 nop                                       |     
    0x000042d8 subs r4, 0xea                             |     r4 -= 0xea;
    0x000042da movs r0, r0                               |     
    0x000042dc lsls r0, r5, 5                            |     r0 = r5 << 5;
    0x000042de movs r0, r0                               |     
    0x000042e0 subs r4, 0xe0                             |     r4 -= 0xe0;
    0x000042e2 movs r0, r0                               |     
    0x000042e4 rors r0, r6                               |     __asm ("rors r0, r6");
    0x000042e6 movs r0, r0                               |     
    0x000042e8 adds r0, r7, 3                            |     r0 = r7 + 3;
    0x000042ea movs r0, r0                               |     
    0x000042ec sbcs r4, r6                               |     __asm ("sbcs r4, r6");
    0x000042ee movs r0, r0                               |     
    0x000042f0 sbcs r2, r3                               |     __asm ("sbcs r2, r3");
    0x000042f2 movs r0, r0                               |     
    0x000042f4 adds r0, r2, 3                            |     r0 = r2 + 3;
    0x000042f6 movs r0, r0                               |     
    0x000042f8 adds r6, r5, 2                            |     r6 = r5 + 2;
    0x000042fa movs r0, r0                               |     
    0x000042fc subs r4, 0x18                             |     r4 -= 0x18;
    0x000042fe movs r0, r0                               |     
    0x00004300 subs r6, r5, r6                           |     r6 = r5 - r6;
    0x00004302 movs r0, r0                               |     
    0x00004304 lsls r4, r6, 5                            |     r4 = r6 << 5;
    0x00004306 movs r0, r0                               |     
    0x00004308 adds r2, r3, 1                            |     r2 = r3 + 1;
    0x0000430a movs r0, r0                               |     
    0x0000430c lsrs r2, r5, 9                            |     r2 = r5 >> 9;
    0x0000430e movs r0, r0                               |     
    0x00004310 adds r4, r1, 0                            |     r4 = r1 + 0;
    0x00004312 movs r0, r0                               |     
    0x00004314 subs r3, 0xb0                             |     r3 -= 0xb0;
    0x00004316 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/bin/loggen @ 0x2d70 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.generate_message ()          | void generate_message (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                             |     int16_t var_0h;
                                             |     int16_t var_4h;
                                             |     int16_t var_8h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     r2 = arg3;
                                             |     r3 = arg4;
    0x00002d70 ssub8mi fp, r6, r0            |     __asm ("ssub8mi fp, r6, r0");
    0x00002d74 ldr r5, [pc, 0xf8]            |     
    0x00002d76 mov lr, r3                    |     lr = r3;
    0x00002d78 sub sp, 0x14                  |     
    0x00002d7a mov r4, r0                    |     r4 = r0;
    0x00002d7c ldr r3, [r2, 4]               |     r3 = *((r2 + 4));
    0x00002d7e mov ip, r1                    |     
    0x00002d80 add r5, pc                    |     r5 = 0x5bf4;
    0x00002d82 ldr r7, [pc, 0xf0]            |     
    0x00002d84 ldr r2, [r5, 0x2c]            |     r2 = *(0x5c20);
    0x00002d86 add r7, pc                    |     r7 = 0x5c00;
                                             |     if (r2 != 0) {
    0x00002d88 cbz r2, 0x2d90                |         
    0x00002d8a ldr r2, [r6, 0x20]            |         r2 = *((r6 + 0x20));
    0x00002d8c cmp r2, 0                     |         
                                             |         if (r2 == 0) {
    0x00002d8e beq 0x2e08                    |             goto label_1;
                                             |         }
                                             |     }
    0x00002d90 ldr r0, [pc, 0xe4]            |     
    0x00002d92 add r0, pc                    |     r0 = 0x5c0e;
    0x00002d94 ldrd r2, r1, [r0]             |     __asm ("ldrd r2, r1, [r0]");
                                             |     if (r1 != 0) {
    0x00002d98 cbnz r1, 0x2dfc               |         goto label_2;
                                             |     }
    0x00002d9a mov r1, ip                    |     r1 = ip;
    0x00002d9c mov r0, r4                    |     r0 = r4;
    0x00002d9e str.w lr, [sp]                |     __asm ("str.w lr, [sp]");
    0x00002da2 bl 0x4170                     |     r0 = generate_log_line ();
    0x00002da6 mov r5, r0                    |     r5 = r0;
                                             |     do {
    0x00002da8 cmp r5, 0                     |         
                                             |         if (r5 < 0) {
    0x00002daa blt 0x2e68                    |             goto label_3;
                                             |         }
    0x00002dac ldr r4, [pc, 0xcc]            |         
    0x00002dae add r4, pc                    |         r4 = 0x5c2e;
    0x00002db0 add.w r0, r4, 8               |         r0 = r4 + 8;
    0x00002db4 blx 0x1ce0                    |         fcn_00001ce0 ();
    0x00002db8 ldrd r3, r2, [r4, 0x18]       |         __asm ("ldrd r3, r2, [r4, 0x18]");
    0x00002dbc ldr r1, [r4, 0x10]            |         r1 = *(0x5c3e);
    0x00002dbe adds r3, r3, r5               |         r3 += r5;
    0x00002dc0 str r3, [r4, 0x18]            |         *((r4 + 0x18)) = r3;
    0x00002dc2 adc.w r2, r2, r5, asr 31      |         __asm ("adc.w r2, r2, r5, asr 31");
    0x00002dc6 ldr r3, [r4, 0x20]            |         r3 = *(0x5c4e);
    0x00002dc8 adds r1, 1                    |         r1++;
    0x00002dca str r1, [r4, 0x10]            |         *((r4 + 0x10)) = r1;
    0x00002dcc str r2, [r4, 0x1c]            |         *((r4 + 0x1c)) = r2;
                                             |         if (r3 != 0) {
    0x00002dce cbz r3, 0x2dec                |             
    0x00002dd0 ldr r2, [r4, 0x24]            |             r2 = *((r4 + 0x24));
                                             |             if (r2 == 0) {
    0x00002dd2 cbz r2, 0x2dec                |                 goto label_4;
                                             |             }
    0x00002dd4 ldr r0, [r6, 4]               |             r0 = *((r6 + 4));
    0x00002dd6 ldr.w r2, [r3, r0, lsl 3]     |             offset_0 = r0 << 3;
                                             |             r2 = *((r3 + offset_0));
    0x00002dda add.w r4, r3, r0, lsl 3       |             r4 = r3 + (r0 << 3);
    0x00002dde ldr r1, [r4, 4]               |             r1 = *((r4 + 4));
    0x00002de0 adds r2, 1                    |             r2++;
    0x00002de2 str.w r2, [r3, r0, lsl 3]     |             __asm ("str.w r2, [r3, r0, lsl 3]");
    0x00002de6 adc r1, r1, 0                 |             __asm ("adc r1, r1, 0");
    0x00002dea str r1, [r4, 4]               |             *((r4 + 4)) = r1;
                                             |         }
                                             | label_4:
    0x00002dec ldr r0, [pc, 0x90]            |         
    0x00002dee add r0, pc                    |         r0 = 0x5c72;
    0x00002df0 adds r0, 8                    |         r0 += 8;
    0x00002df2 blx 0x1d3c                    |         fcn_00001d3c ();
                                             | label_0:
    0x00002df6 mov r0, r5                    |         r0 = r5;
    0x00002df8 add sp, 0x14                  |         
    0x00002dfa pop {r4, r5, r6, r7, pc}      |         
                                             | label_2:
    0x00002dfc mov r1, ip                    |         r1 = ip;
    0x00002dfe mov r0, r4                    |         r0 = r4;
    0x00002e00 bl 0x357c                     |         r0 = read_next_message_from_file ();
    0x00002e04 mov r5, r0                    |         r5 = r0;
    0x00002e06 b 0x2da8                      |         
                                             |     } while (1);
                                             | label_1:
    0x00002e08 ldr r4, [r5, 0x3c]            |     r4 = *((r5 + 0x3c));
    0x00002e0a mov r2, r3                    |     r2 = r3;
    0x00002e0c ldr r3, [r5, 0x30]            |     r3 = *((r5 + 0x30));
    0x00002e0e str r4, [sp, 8]               |     var_8h = r4;
    0x00002e10 ldr r4, [r5, 0x38]            |     r4 = *((r5 + 0x38));
    0x00002e12 str r4, [sp, 4]               |     var_4h = r4;
    0x00002e14 ldr r4, [r5, 0x34]            |     r4 = *((r5 + 0x34));
    0x00002e16 str r4, [sp]                  |     *(sp) = r4;
    0x00002e18 movs r4, 1                    |     r4 = 1;
    0x00002e1a blx 0x1bb8                    |     generate_proxy_header ();
    0x00002e1e str r4, [r6, 0x20]            |     *((r6 + 0x20)) = r4;
    0x00002e20 mov r5, r0                    |     r5 = r0;
    0x00002e22 blx 0x1b58                    |     r0 = get_debug_level ();
    0x00002e26 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x00002e28 beq 0x2df6                    |         goto label_0;
                                             |     }
    0x00002e2a ldr r0, [pc, 0x58]            |     
    0x00002e2c add r0, pc                    |     r0 = 0x5cb6;
    0x00002e2e blx 0x1b70                    |     g_path_get_basename ();
    0x00002e32 ldr r3, [pc, 0x54]            |     r3 = *(0x2e8a);
    0x00002e34 mov r6, r0                    |     r6 = r0;
    0x00002e36 ldr r2, [pc, 0x54]            |     
    0x00002e38 mov r1, r4                    |     r1 = r4;
    0x00002e3a ldr r7, [r7, r3]              |     r7 = *((r7 + r3));
    0x00002e3c ldr r3, [pc, 0x50]            |     
    0x00002e3e add r2, pc                    |     r2 = 0x5cd0;
    0x00002e40 ldr r0, [r7]                  |     r0 = *(r7);
    0x00002e42 add r3, pc                    |     r3 = 0x5cd6;
    0x00002e44 adds r3, 0x18                 |     r3 += 0x18;
    0x00002e46 str r3, [sp]                  |     *(sp) = r3;
    0x00002e48 movs r3, 0x78                 |     r3 = 0x78;
    0x00002e4a str r3, [sp, 4]               |     var_4h = r3;
    0x00002e4c mov r3, r6                    |     r3 = r6;
    0x00002e4e blx 0x1bdc                    |     fprintf_chk ()
    0x00002e52 ldr r2, [pc, 0x40]            |     
    0x00002e54 mov r3, r5                    |     r3 = r5;
    0x00002e56 ldr r0, [r7]                  |     r0 = *(r7);
    0x00002e58 mov r1, r4                    |     r1 = r4;
    0x00002e5a add r2, pc                    |     r2 = 0x5cf4;
    0x00002e5c blx 0x1bdc                    |     fprintf_chk ()
    0x00002e60 mov r0, r6                    |     r0 = r6;
    0x00002e62 blx 0x1d14                    |     g_hash_table_unref ();
    0x00002e66 b 0x2df6                      |     goto label_0;
                                             | label_3:
    0x00002e68 mov.w r5, -1                  |     r5 = -1;
    0x00002e6c b 0x2df6                      |     goto label_0;
                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x331c */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.init_file_reader ()                      | void init_file_reader (int16_t arg1) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     r0 = arg1;
    0x0000331c push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00003320 sub sp, 0xc                               |     
    0x00003322 ldr r4, [pc, 0x18c]                       |     
    0x00003324 ldr.w sb, [pc, 0x18c]                     |     
    0x00003328 add r4, pc                                |     r4 = 0x67de;
    0x0000332a ldr r3, [r4]                              |     r3 = *(0x67de);
    0x0000332c add sb, pc                                |     sb = 0x67e4;
    0x0000332e cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x00003330 beq 0x3424                                |         goto label_4;
                                                         |     }
    0x00003332 movs r1, 4                                |     r1 = 4;
    0x00003334 mov r7, r0                                |     r7 = r0;
    0x00003336 blx 0x1df4                                |     r0 = fcn_00001df4 ();
    0x0000333a mov r3, r0                                |     r3 = r0;
    0x0000333c str r0, [r4, 4]                           |     *((r4 + 4)) = r0;
    0x0000333e ldr r0, [r4]                              |     r0 = *(r4);
    0x00003340 mov r5, r3                                |     r5 = r3;
    0x00003342 ldrb r2, [r0]                             |     r2 = *(r0);
    0x00003344 cmp r2, 0x2d                              |     
                                                         |     if (r2 == 0x2d) {
    0x00003346 beq 0x33c8                                |         goto label_5;
                                                         |     }
                                                         | label_0:
    0x00003348 cmp r7, 0                                 |     
                                                         |     if (r7 <= 0) {
    0x0000334a ble 0x33be                                |         goto label_6;
                                                         |     }
    0x0000334c ldr.w r8, [pc, 0x168]                     |     
    0x00003350 movs r4, 0                                |     r4 = 0;
    0x00003352 ldr r6, [pc, 0x168]                       |     
    0x00003354 add r8, pc                                |     r8 = 0x6810;
    0x00003356 add r6, pc                                |     r6 = 0x6818;
    0x00003358 b 0x3360                                  |     
                                                         |     while (r3 != 0) {
    0x0000335a cmp r7, r4                                |         
                                                         |         if (r7 == r4) {
    0x0000335c beq 0x33be                                |             goto label_6;
                                                         |         }
    0x0000335e ldr r0, [r6]                              |         r0 = *(r6);
    0x00003360 mov r1, r8                                |         r1 = r8;
    0x00003362 blx 0x1e60                                |         fcn_00001e60 ();
    0x00003364 ldcl p8, c15, [lr, -0x114]!               |         __asm ("ldcl p8, c15, [lr, -0x114]!");
    0x00003368 movs r4, r4                               |         
    0x0000336a ldr r5, [r6, 4]                           |         r5 = *((r6 + 4));
    0x0000336c ldr.w r3, [r5, r4, lsl 2]                 |         offset_0 = r4 << 2;
                                                         |         r3 = *((r5 + offset_0));
    0x00003370 adds r4, 1                                |         r4++;
    0x00003372 cmp r3, 0                                 |         
    0x00003374 bne 0x335a                                |         
                                                         |     }
    0x00003376 ldr r0, [pc, 0x148]                       |     
    0x00003378 add r0, pc                                |     r0 = 0x683e;
    0x0000337a blx 0x1b70                                |     g_path_get_basename ();
    0x0000337e ldr r3, [pc, 0x144]                       |     r3 = *(0x34c6);
    0x00003380 movs r2, 0x53                             |     r2 = 0x53;
    0x00003382 ldr r1, [pc, 0x144]                       |     
    0x00003384 mov r4, r0                                |     r4 = r0;
    0x00003386 ldr.w r5, [sb, r3]                        |     r5 = *((sb + r3));
    0x0000338a mov r3, r0                                |     r3 = r0;
    0x0000338c str r2, [sp, 4]                           |     var_4h = r2;
    0x0000338e add r1, pc                                |     r1 = 0x685c;
    0x00003390 ldr r2, [pc, 0x138]                       |     
    0x00003392 adds r1, 0x14                             |     r1 += 0x14;
    0x00003394 str r1, [sp]                              |     *(sp) = r1;
    0x00003396 movs r1, 1                                |     r1 = 1;
    0x00003398 ldr r0, [r5]                              |     r0 = *(r5);
    0x0000339a add r2, pc                                |     r2 = 0x686a;
    0x0000339c blx 0x1bdc                                |     fprintf_chk ()
    0x000033a0 ldr r2, [pc, 0x12c]                       |     
    0x000033a2 movs r1, 1                                |     r1 = 1;
    0x000033a4 ldr r3, [r6]                              |     r3 = *(r6);
    0x000033a6 ldr r0, [r5]                              |     r0 = *(r5);
    0x000033a8 add r2, pc                                |     r2 = 0x687c;
    0x000033aa blx 0x1bdc                                |     fprintf_chk ()
    0x000033ae mov r0, r4                                |     r0 = r4;
    0x000033b0 blx 0x1d14                                |     g_hash_table_unref ();
                                                         | label_3:
    0x000033b4 mov.w r0, -1                              |     r0 = -1;
                                                         |     do {
                                                         | label_2:
    0x000033b8 add sp, 0xc                               |         
    0x000033ba pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_6:
    0x000033be blx 0x1b58                                |         r0 = get_debug_level ();
                                                         |         if (r0 != 0) {
    0x000033c2 cbnz r0, 0x33e0                           |             goto label_7;
                                                         |         }
                                                         | label_1:
    0x000033c4 movs r0, 1                                |         r0 = 1;
    0x000033c6 b 0x33b8                                  |         
                                                         |     } while (1);
                                                         | label_5:
    0x000033c8 ldrb r2, [r0, 1]                          |     r2 = *((r0 + 1));
    0x000033ca cmp r2, 0                                 |     
                                                         |     if (r2 != 0) {
    0x000033cc bne 0x3348                                |         goto label_0;
                                                         |     }
    0x000033ce cmp r7, 1                                 |     
                                                         |     if (r7 > 1) {
    0x000033d0 bgt 0x342e                                |         goto label_8;
                                                         |     }
                                                         |     if (r7 != 1) {
    0x000033d2 bne 0x33c4                                |         goto label_1;
                                                         |     }
    0x000033d4 ldr r2, [pc, 0xfc]                        |     
    0x000033d6 ldr.w r2, [sb, r2]                        |     r2 = *((sb + r2));
    0x000033da ldr r2, [r2]                              |     r2 = *(0x34d4);
    0x000033dc str r2, [r3]                              |     *(r3) = r2;
    0x000033de b 0x33c4                                  |     goto label_1;
                                                         | label_7:
    0x000033e0 ldr r0, [pc, 0xf4]                        |     
    0x000033e2 add r0, pc                                |     r0 = 0x68be;
    0x000033e4 blx 0x1b70                                |     g_path_get_basename ();
    0x000033e8 ldr r3, [pc, 0xf0]                        |     r3 = *(0x34dc);
    0x000033ea movs r2, 0x58                             |     r2 = 0x58;
    0x000033ec ldr r1, [pc, 0xf0]                        |     
    0x000033ee mov r4, r0                                |     r4 = r0;
    0x000033f0 ldr.w r5, [sb, r3]                        |     r5 = *((sb + r3));
    0x000033f4 mov r3, r0                                |     r3 = r0;
    0x000033f6 str r2, [sp, 4]                           |     var_4h = r2;
    0x000033f8 add r1, pc                                |     r1 = 0x68dc;
    0x000033fa ldr r2, [pc, 0xe8]                        |     
    0x000033fc adds r1, 0x14                             |     r1 += 0x14;
    0x000033fe str r1, [sp]                              |     *(sp) = r1;
    0x00003400 movs r1, 1                                |     r1 = 1;
    0x00003402 ldr r0, [r5]                              |     r0 = *(r5);
    0x00003404 add r2, pc                                |     r2 = 0x68ee;
    0x00003406 blx 0x1bdc                                |     fprintf_chk ()
    0x0000340a ldr r3, [pc, 0xdc]                        |     
    0x0000340c movs r1, 1                                |     r1 = 1;
    0x0000340e ldr r2, [pc, 0xdc]                        |     
    0x00003410 ldr r0, [r5]                              |     r0 = *(r5);
    0x00003412 add r3, pc                                |     
    0x00003414 ldr r3, [r3]                              |     r3 = *(0x6900);
    0x00003416 add r2, pc                                |     r2 = 0x6908;
    0x00003418 blx 0x1bdc                                |     fprintf_chk ()
    0x0000341c mov r0, r4                                |     r0 = r4;
    0x0000341e blx 0x1d14                                |     g_hash_table_unref ();
    0x00003422 b 0x33c4                                  |     goto label_1;
                                                         | label_4:
    0x00003424 blx 0x1b58                                |     r0 = get_debug_level ();
    0x00003428 cbnz r0, 0x346e                           |     
                                                         |     while (1) {
    0x0000342a movs r0, 0                                |         r0 = 0;
    0x0000342c b 0x33b8                                  |         goto label_2;
                                                         | label_8:
    0x0000342e ldr r0, [pc, 0xc0]                        |         
    0x00003430 add r0, pc                                |         r0 = 0x6926;
    0x00003432 blx 0x1b70                                |         g_path_get_basename ();
    0x00003434 invalid                                   |         
    0x00003438 movs r2, 0x45                             |         r2 = 0x45;
    0x0000343a ldr r1, [pc, 0xb8]                        |         
    0x0000343c mov r4, r0                                |         r4 = r0;
    0x0000343e ldr.w r5, [sb, r3]                        |         r5 = *((sb + r3));
    0x00003442 mov r3, r0                                |         r3 = r0;
    0x00003444 str r2, [sp, 4]                           |         var_4h = r2;
    0x00003446 add r1, pc                                |         r1 = 0x6940;
    0x00003448 ldr r2, [pc, 0xac]                        |         
    0x0000344a adds r1, 0x14                             |         r1 += 0x14;
    0x0000344c str r1, [sp]                              |         *(sp) = r1;
    0x0000344e movs r1, 1                                |         r1 = 1;
    0x00003450 ldr r0, [r5]                              |         r0 = *(r5);
    0x00003452 add r2, pc                                |         r2 = 0x694e;
    0x00003454 blx 0x1bdc                                |         fprintf_chk ()
    0x00003458 ldr r0, [pc, 0xa0]                        |         
    0x0000345a movs r2, 0x55                             |         r2 = 0x55;
    0x0000345c ldr r3, [r5]                              |         r3 = *(r5);
    0x0000345e movs r1, 1                                |         r1 = 1;
    0x00003460 add r0, pc                                |         r0 = 0x6960;
    0x00003462 blx 0x1db4                                |         fcn_00001db4 ();
    0x00003466 mov r0, r4                                |         r0 = r4;
    0x00003468 blx 0x1d14                                |         g_hash_table_unref ();
    0x0000346c b 0x33b4                                  |         goto label_3;
    0x0000346e ldr r0, [pc, 0x90]                        |         
    0x00003470 add r0, pc                                |         r0 = 0x6976;
    0x00003472 blx 0x1b70                                |         g_path_get_basename ();
    0x00003476 ldr r3, [pc, 0x64]                        |         r3 = *(0x34de);
    0x00003478 movs r2, 0x3b                             |         r2 = 0x3b;
    0x0000347a ldr r1, [pc, 0x88]                        |         
    0x0000347c mov r4, r0                                |         r4 = r0;
    0x0000347e ldr.w r5, [sb, r3]                        |         r5 = *((sb + r3));
    0x00003482 mov r3, r0                                |         r3 = r0;
    0x00003484 str r2, [sp, 4]                           |         var_4h = r2;
    0x00003486 add r1, pc                                |         r1 = 0x6990;
    0x00003488 ldr r2, [pc, 0x7c]                        |         
    0x0000348a adds r1, 0x14                             |         r1 += 0x14;
    0x0000348c str r1, [sp]                              |         *(sp) = r1;
    0x0000348e movs r1, 1                                |         r1 = 1;
    0x00003490 ldr r0, [r5]                              |         r0 = *(r5);
    0x00003492 add r2, pc                                |         r2 = 0x699e;
    0x00003494 blx 0x1bdc                                |         fprintf_chk ()
    0x00003498 ldr r0, [pc, 0x70]                        |         
    0x0000349a movs r2, 0x1a                             |         r2 = 0x1a;
    0x0000349c ldr r3, [r5]                              |         r3 = *(r5);
    0x0000349e movs r1, 1                                |         r1 = 1;
    0x000034a0 add r0, pc                                |         r0 = 0x69b0;
    0x000034a2 blx 0x1db4                                |         fcn_00001db4 ();
    0x000034a6 mov r0, r4                                |         r0 = r4;
    0x000034a8 blx 0x1d14                                |         g_hash_table_unref ();
    0x000034ac b 0x342a                                  |         
                                                         |     }
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x4318 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.path_resolver_resolve ()                         | void path_resolver_resolve (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00004318 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000431c mov r7, r0                                        |     r7 = r0;
    0x0000431e sub sp, 0xc                                       |     
    0x00004320 mov r0, r1                                        |     r0 = r1;
    0x00004322 blx 0x1be8                                        |     g_strdup ();
    0x00004326 ldr r1, [pc, 0xd0]                                |     
    0x00004328 mov r6, r0                                        |     r6 = r0;
    0x0000432a ldr.w sb, [pc, 0xd0]                              |     
    0x0000432e add r1, pc                                        |     r1 = 0x872c;
    0x00004330 blx 0x1d30                                        |     fcn_00001d30 ();
    0x00004334 add sb, pc                                        |     sb = 0x8736;
                                                                 |     if (r0 == 0) {
    0x00004336 cbz r0, 0x43a0                                    |         goto label_0;
                                                                 |     }
    0x00004338 ldr.w r8, [pc, 0xc4]                              |     r8 = *(0x00004400);
    0x0000433c mov r4, r0                                        |     r4 = r0;
    0x0000433e add r8, pc                                        |     r8 += pc;
    0x00004340 b 0x4344                                          |     
                                                                 |     while (r0 != 0) {
    0x00004342 mov r6, r5                                        |         r6 = r5;
    0x00004344 movs r1, 0x7d                                     |         r1 = 0x7d;
    0x00004346 mov r0, r4                                        |         r0 = r4;
    0x00004348 blx 0x1eb4                                        |         r0 = fcn_00001eb4 ();
    0x0000434c mov r5, r0                                        |         r5 = r0;
                                                                 |         if (r0 == 0) {
    0x0000434e cbz r0, 0x43a8                                    |             goto label_1;
                                                                 |         }
    0x00004350 adds r5, 1                                        |         r5++;
    0x00004352 mov r0, r4                                        |         r0 = r4;
    0x00004354 subs r1, r5, r4                                   |         r1 = r5 - r4;
    0x00004356 blx 0x1b34                                        |         r0 = g_strndup ();
    0x0000435a mov fp, r0                                        |         
    0x0000435c ldr r0, [r7, 0xc]                                 |         r0 = *((r7 + 0xc));
    0x0000435e mov r1, fp                                        |         r1 = fp;
    0x00004360 blx 0x1c8c                                        |         r0 = fcn_00001c8c ();
    0x00004364 mov sl, r0                                        |         sl = r0;
                                                                 |         if (r0 == 0) {
    0x00004366 cbz r0, 0x43ce                                    |             goto label_2;
                                                                 |         }
    0x00004368 mov r0, fp                                        |         r0 = fp;
    0x0000436a blx 0x1d14                                        |         g_hash_table_unref ();
    0x0000436e subs r1, r4, r6                                   |         r1 = r4 - r6;
    0x00004370 mov r0, r6                                        |         r0 = r6;
    0x00004372 blx 0x1b34                                        |         g_strndup ();
    0x00004376 mov r2, r5                                        |         r2 = r5;
    0x00004378 movs r3, 0                                        |         r3 = 0;
    0x0000437a mov r1, sl                                        |         r1 = sl;
    0x0000437c mov r4, r0                                        |         r4 = r0;
    0x0000437e blx 0x1d90                                        |         r0 = fcn_00001d90 ();
    0x00004382 mov r5, r0                                        |         r5 = r0;
    0x00004384 mov r0, r4                                        |         r0 = r4;
    0x00004386 blx 0x1d14                                        |         g_hash_table_unref ();
    0x0000438a mov r0, r6                                        |         r0 = r6;
    0x0000438c mov r6, r5                                        |         r6 = r5;
    0x0000438e blx 0x1d14                                        |         g_hash_table_unref ();
    0x00004392 mov r1, r8                                        |         r1 = r8;
    0x00004394 mov r0, r5                                        |         r0 = r5;
    0x00004396 blx 0x1d30                                        |         r0 = fcn_00001d30 ();
    0x0000439a mov r4, r0                                        |         r4 = r0;
    0x0000439c cmp r0, 0                                         |         
    0x0000439e bne 0x4342                                        |         
                                                                 |     }
                                                                 | label_0:
    0x000043a0 mov r0, r6                                        |     r0 = r6;
    0x000043a2 add sp, 0xc                                       |     
    0x000043a4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_1:
    0x000043a8 ldr r1, [pc, 0x58]                                |     r1 = *(0x4404);
    0x000043aa mov r3, r6                                        |     r3 = r6;
    0x000043ac ldr r2, [pc, 0x58]                                |     
    0x000043ae ldr.w r1, [sb, r1]                                |     r1 = *((sb + r1));
    0x000043b2 add r2, pc                                        |     r2 = 0x87be;
    0x000043b4 ldr r0, [r1]                                      |     r0 = *(0x4404);
    0x000043b6 movs r1, 1                                        |     r1 = 1;
    0x000043b8 blx 0x1bdc                                        |     fprintf_chk ()
    0x000043bc ldr r3, [pc, 0x4c]                                |     
    0x000043be movs r2, 0x64                                     |     r2 = 0x64;
    0x000043c0 ldr r1, [pc, 0x4c]                                |     
    0x000043c2 mov r0, r5                                        |     r0 = r5;
    0x000043c4 str r5, [sp]                                      |     *(sp) = r5;
    0x000043c6 add r3, pc                                        |     r3 = 0x87d6;
    0x000043c8 add r1, pc                                        |     r1 = 0x87dc;
    0x000043ca blx 0x1e54                                        |     fcn_00001e54 ();
                                                                 | label_2:
    0x000043ce ldr r2, [pc, 0x34]                                |     r2 = *(0x4406);
    0x000043d0 mov r3, fp                                        |     r3 = fp;
    0x000043d2 ldr.w r1, [sb, r2]                                |     r1 = *((sb + r2));
    0x000043d6 ldr r2, [pc, 0x3c]                                |     
    0x000043d8 str r6, [sp]                                      |     *(sp) = r6;
    0x000043da ldr r0, [r1]                                      |     r0 = *(r1);
    0x000043dc movs r1, 1                                        |     r1 = 1;
    0x000043de add r2, pc                                        |     r2 = 0x87f8;
    0x000043e0 blx 0x1bdc                                        |     fprintf_chk ()
    0x000043e4 ldr r3, [pc, 0x30]                                |     
    0x000043e6 movs r2, 0x71                                     |     r2 = 0x71;
    0x000043e8 ldr r1, [pc, 0x30]                                |     
    0x000043ea mov r0, sl                                        |     r0 = sl;
    0x000043ec str.w sl, [sp]                                    |     __asm ("str.w sl, [sp]");
    0x000043f0 add r3, pc                                        |     r3 = 0x880c;
    0x000043f2 add r1, pc                                        |     r1 = 0x8812;
    0x000043f4 blx 0x1e54                                        |     fcn_00001e54 ();
    0x000043f8 subs r2, r5, r7                                   |     r2 = r5 - r7;
    0x000043fa movs r0, r0                                       |     
    0x000043fc subs r3, 0x34                                     |     r3 -= 0x34;
    0x000043fe movs r0, r0                                       |     
    0x00004400 subs r2, r3, r7                                   |     r2 = r3 - r7;
    0x00004402 movs r0, r0                                       |     
    0x00004404 lsls r4, r6, 5                                    |     r4 = r6 << 5;
    0x00004406 movs r0, r0                                       |     
    0x00004408 subs r2, r5, r5                                   |     r2 = r5 - r5;
    0x0000440a movs r0, r0                                       |     
    0x0000440c adds r2, r1, 5                                    |     r2 = r1 + 5;
    0x0000440e movs r0, r0                                       |     
    0x00004410 subs r0, r1, r7                                   |     r0 = r1 - r7;
    0x00004412 movs r0, r0                                       |     
    0x00004414 subs r2, r4, r7                                   |     r2 = r4 - r7;
    0x00004416 movs r0, r0                                       |     
    0x00004418 adds r0, r4, 4                                    |     r0 = r4 + 4;
    0x0000441a movs r0, r0                                       |     
    0x0000441c subs r6, r3, r6                                   |     r6 = r3 - r6;
    0x0000441e movs r0, r0                                       |     
    0x00004420 ldr r0, [r0, 0xc]                                 |     r0 = *((r0 + 0xc));
    0x00004422 b.w 0x1d20                                        |     return void (*0x1d20)() ();
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x3f5c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.prepare_log_line_template ()                 | void prepare_log_line_template (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_18h;
                                                             |     int16_t var_24h;
                                                             |     int16_t var_2ch;
                                                             |     int16_t var_30h_2;
                                                             |     int16_t var_34h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00003f5c push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00003f60 mov r6, r2                                    |     r6 = r2;
    0x00003f62 ldr r2, [pc, 0x1b0]                           |     
    0x00003f64 mov r5, r3                                    |     r5 = r3;
    0x00003f66 sub sp, 0x38                                  |     
    0x00003f68 mov r4, r1                                    |     r4 = r1;
    0x00003f6a ldr r3, [pc, 0x1ac]                           |     r3 = *(0x411a);
    0x00003f6c mov r8, r0                                    |     r8 = r0;
    0x00003f6e add r2, pc                                    |     r2 = 0x8088;
    0x00003f70 ldr r7, [pc, 0x1a8]                           |     
    0x00003f72 ldr r3, [r2, r3]                              |     
    0x00003f74 add r7, pc                                    |     r7 = 0x8094;
    0x00003f76 ldr r3, [r3]                                  |     r3 = imp.stdin;
    0x00003f78 str r3, [sp, 0x34]                            |     var_34h = r3;
    0x00003f7a mov.w r3, 0                                   |     r3 = 0;
    0x00003f7e ldr r3, [pc, 0x1a0]                           |     
    0x00003f80 add r3, pc                                    |     r3 = 0x80a6;
    0x00003f82 ldm.w r3, {r0, r1}                            |     r0 = *(r3);
                                                             |     r1 = *((r3 + 4));
    0x00003f86 str r0, [sp, 0x2c]                            |     var_2ch = r0;
    0x00003f88 add r0, sp, 0x24                              |     r0 += var_24h;
    0x00003f8a strb.w r1, [sp, 0x30]                         |     var_30h_2 = r1;
    0x00003f8e movs r1, 0                                    |     r1 = 0;
    0x00003f90 blx 0x1b04                                    |     gettimeofday ();
    0x00003f94 ldr.w sl, [sp, 0x24]                          |     sl = var_24h;
    0x00003f98 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00003f9a bne.w 0x40aa                                  |         goto label_3;
                                                             |     }
    0x00003f9e ldr r0, [pc, 0x184]                           |     
    0x00003fa0 movw r1, 0x2001                               |     r1 = 0x2001;
    0x00003fa4 add r0, pc                                    |     r0 = 0x80ce;
                                                             | label_2:
    0x00003fa6 cmp.w r8, 0                                   |     
                                                             |     if (r8 == 0) {
    0x00003faa beq 0x4070                                    |         goto label_4;
                                                             |     }
    0x00003fac cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00003fae beq 0x406a                                    |         goto label_5;
                                                             |     }
                                                             | label_0:
    0x00003fb0 ldr r3, [pc, 0x174]                           |     
    0x00003fb2 movs r2, 1                                    |     r2 = 1;
    0x00003fb4 str r5, [sp, 8]                               |     var_8h = r5;
    0x00003fb6 str.w sl, [sp, 0x14]                          |     __asm ("str.w sl, [var_14h]");
    0x00003fba add r3, pc                                    |     r3 = 0x80e6;
    0x00003fbc str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00003fbe ldr r3, [pc, 0x16c]                           |     
    0x00003fc0 add r3, pc                                    |     r3 = 0x80f2;
    0x00003fc2 str r3, [sp]                                  |     *(sp) = r3;
    0x00003fc4 movs r3, 0                                    |     r3 = 0;
    0x00003fc6 strd r3, r3, [sp, 0xc]                        |     __asm ("strd r3, r3, [sp, 0xc]");
    0x00003fca str r3, [sp, 4]                               |     var_4h = r3;
    0x00003fcc mov.w r3, -1                                  |     r3 = -1;
    0x00003fd0 blx 0x1ddc                                    |     r0 = fcn_00001ddc ();
    0x00003fd4 mov r3, r0                                    |     r3 = r0;
    0x00003fd6 mov r0, r5                                    |     r0 = r5;
    0x00003fd8 mov r5, r3                                    |     r5 = r3;
    0x00003fda ldr r3, [pc, 0x154]                           |     
    0x00003fdc adds r2, r4, 6                                |     r2 = r4 + 6;
    0x00003fde add r3, pc                                    |     r3 = 0x8114;
    0x00003fe0 str r2, [r3]                                  |     *(r3) = r2;
    0x00003fe2 blx 0x1dd0                                    |     fcn_00001dd0 ();
    0x00003fe6 add.w r2, r4, 0x77                            |     r2 = r4 + 0x77;
    0x00003fea add r2, r0                                    |     r2 += r0;
    0x00003fec add r0, r4                                    |     r0 += r4;
    0x00003fee add.w r1, r0, 0x43                            |     r1 = r0 + 0x43;
    0x00003ff2 adds r0, 0x57                                 |     r0 += 0x57;
                                                             | label_1:
    0x00003ff4 ldr r3, [pc, 0x13c]                           |     
    0x00003ff6 cmp r5, r6                                    |     
    0x00003ff8 add r3, pc                                    |     r3 = 0x8130;
    0x00003ffa strd r1, r0, [r3, 4]                          |     __asm ("strd r1, r0, [r3, 4]");
    0x00003ffe str r2, [r3, 0xc]                             |     *((r3 + 0xc)) = r2;
                                                             |     if (r5 > r6) {
    0x00004000 bgt 0x40d0                                    |         goto label_6;
                                                             |     }
    0x00004002 subs r1, r6, 1                                |     r1 = r6 - 1;
    0x00004004 cmp r5, r1                                    |     
                                                             |     if (r5 >= r1) {
    0x00004006 bge 0x4042                                    |         goto label_7;
                                                             |     }
    0x00004008 ldr r2, [pc, 0x12c]                           |     
    0x0000400a adds r3, r5, 1                                |     r3 = r5 + 1;
    0x0000400c cmp r3, r1                                    |     
    0x0000400e mov.w r7, 0x50                                |     r7 = 0x50;
    0x00004012 add r2, pc                                    |     r2 = 0x814e;
    0x00004014 add.w r0, r2, r5                              |     r0 = r2 + r5;
    0x00004018 strb r7, [r0, r4]                             |     *((r0 + r4)) = r7;
                                                             |     if (r3 >= r1) {
    0x0000401a bge 0x4042                                    |         goto label_7;
                                                             |     }
    0x0000401c add.w lr, r4, 1                               |     lr = r4 + 1;
    0x00004020 subs r1, r1, r5                               |     r1 -= r5;
    0x00004022 add lr, r5                                    |     lr += r5;
    0x00004024 movs r3, 1                                    |     r3 = 1;
    0x00004026 add lr, r2                                    |     lr += r2;
                                                             |     do {
    0x00004028 and ip, r3, 3                                 |         
    0x0000402c adds r3, 1                                    |         r3++;
    0x0000402e add.w r2, ip, 0x38                            |         r2 = ip + 0x38;
    0x00004032 cmp r1, r3                                    |         
    0x00004034 add.w ip, sp, r2                              |         
    0x00004038 ldrb r2, [ip, -0xc]                           |         r2 = *((ip - 0xc));
    0x0000403c strb r2, [lr], 1                              |         *(lr) = r2;
                                                             |         lr++;
    0x00004040 bne 0x4028                                    |         
                                                             |     } while (r1 != r3);
                                                             | label_7:
    0x00004042 ldr r3, [pc, 0xf8]                            |     
    0x00004044 add r4, r6                                    |     r4 += r6;
    0x00004046 subs r4, 1                                    |     r4--;
    0x00004048 movs r2, 0xa                                  |     r2 = 0xa;
    0x0000404a add r3, pc                                    |     r3 = 0x818c;
    0x0000404c strh r2, [r3, r4]                             |     *((r3 + r4)) = r2;
                                                             |     do {
    0x0000404e ldr r2, [pc, 0xf0]                            |         
    0x00004050 ldr r3, [pc, 0xc4]                            |         r3 = *(0x4118);
    0x00004052 add r2, pc                                    |         r2 = 0x8198;
    0x00004054 ldr r3, [r2, r3]                              |         r3 = *(0x8198);
    0x00004056 ldr r2, [r3]                                  |         r2 = *(0x8198);
    0x00004058 ldr r3, [sp, 0x34]                            |         r3 = var_34h;
    0x0000405a eors r2, r3                                   |         r2 ^= r3;
    0x0000405c mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00004060 bne 0x410e                                    |             goto label_8;
                                                             |         }
    0x00004062 mov r0, r5                                    |         r0 = r5;
    0x00004064 add sp, 0x38                                  |         
    0x00004066 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_5:
    0x0000406a ldr r5, [pc, 0xd8]                            |         
    0x0000406c add r5, pc                                    |         r5 = 0x81b6;
    0x0000406e b 0x3fb0                                      |         goto label_0;
                                                             | label_4:
    0x00004070 ldr r3, [pc, 0xd4]                            |         
    0x00004072 movs r2, 1                                    |         r2 = 1;
    0x00004074 strd r8, sl, [sp, 0xc]                        |         __asm ("strd r8, sl, [sp, 0xc]");
    0x00004078 strd r8, r8, [sp, 4]                          |         __asm ("strd r8, r8, [sp, 4]");
    0x0000407c add r3, pc                                    |         r3 = 0x81c8;
    0x0000407e str r3, [sp, 0x14]                            |         var_14h = r3;
    0x00004080 ldr r3, [pc, 0xc8]                            |         
    0x00004082 add r3, pc                                    |         r3 = 0x81d2;
    0x00004084 str r3, [sp]                                  |         *(sp) = r3;
    0x00004086 mov.w r3, -1                                  |         r3 = -1;
    0x0000408a blx 0x1ddc                                    |         fcn_00001ddc ();
    0x0000408e ldr r3, [pc, 0xc0]                            |         
    0x00004090 add.w ip, r4, 4                               |         
    0x00004094 mov r5, r0                                    |         r5 = r0;
    0x00004096 add.w r1, r4, 0x37                            |         r1 = r4 + 0x37;
    0x0000409a add.w r0, r4, 0x4b                            |         r0 = r4 + 0x4b;
    0x0000409e add.w r2, r4, 0x6b                            |         r2 = r4 + 0x6b;
    0x000040a2 add r3, pc                                    |         r3 = 0x81f8;
    0x000040a4 str.w ip, [r3]                                |         __asm ("str.w ip, [r3]");
    0x000040a8 b 0x3ff4                                      |         goto label_1;
                                                             | label_3:
    0x000040aa ldr r3, [pc, 0xa8]                            |         
    0x000040ac movs r2, 1                                    |         r2 = 1;
    0x000040ae ldr r0, [pc, 0xa8]                            |         
    0x000040b0 str r6, [sp, 4]                               |         var_4h = r6;
    0x000040b2 add r3, pc                                    |         r3 = 0x820c;
    0x000040b4 str r3, [sp]                                  |         *(sp) = r3;
    0x000040b6 movw r3, 0x2001                               |         r3 = 0x2001;
    0x000040ba add r0, pc                                    |         r0 = 0x8218;
    0x000040bc mov r1, r3                                    |         r1 = r3;
    0x000040be mov sb, r0                                    |         sb = r0;
    0x000040c0 blx 0x1ddc                                    |         r0 = fcn_00001ddc ();
    0x000040c4 mov r4, r0                                    |         r4 = r0;
    0x000040c6 add r0, sb                                    |         r0 += sb;
    0x000040c8 rsb.w r1, r4, 0x2000                          |         r1 = 0x2000 - r4;
    0x000040cc adds r1, 1                                    |         r1++;
    0x000040ce b 0x3fa6                                      |         goto label_2;
                                                             | label_6:
    0x000040d0 ldr r0, [pc, 0x88]                            |         
    0x000040d2 add r0, pc                                    |         r0 = 0x8232;
    0x000040d4 blx 0x1b70                                    |         g_path_get_basename ();
    0x000040d8 ldr r3, [pc, 0x84]                            |         r3 = *(0x4160);
    0x000040da movs r2, 0x54                                 |         r2 = 0x54;
    0x000040dc ldr r1, [pc, 0x84]                            |         
    0x000040de mov r4, r0                                    |         r4 = r0;
    0x000040e0 ldr r6, [r7, r3]                              |         r6 = *((r7 + r3));
    0x000040e2 mov r3, r0                                    |         r3 = r0;
    0x000040e4 str r2, [sp, 4]                               |         var_4h = r2;
    0x000040e6 add r1, pc                                    |         r1 = 0x824e;
    0x000040e8 ldr r2, [pc, 0x7c]                            |         
    0x000040ea str r1, [sp]                                  |         *(sp) = r1;
    0x000040ec movs r1, 1                                    |         r1 = 1;
    0x000040ee ldr r0, [r6]                                  |         r0 = *(r6);
    0x000040f0 add r2, pc                                    |         r2 = 0x825c;
    0x000040f2 blx 0x1bdc                                    |         fprintf_chk ()
    0x000040f6 ldr r2, [pc, 0x74]                            |         
    0x000040f8 mov r3, r5                                    |         r3 = r5;
    0x000040fa ldr r0, [r6]                                  |         r0 = *(r6);
    0x000040fc movs r1, 1                                    |         r1 = 1;
    0x000040fe movs r5, 0                                    |         r5 = 0;
    0x00004100 add r2, pc                                    |         r2 = 0x8272;
    0x00004102 blx 0x1bdc                                    |         fprintf_chk ()
    0x00004106 mov r0, r4                                    |         r0 = r4;
    0x00004108 blx 0x1d14                                    |         g_hash_table_unref ();
    0x0000410c b 0x404e                                      |         
                                                             |     } while (1);
                                                             | label_8:
    0x0000410e blx 0x1cec                                    |     fcn_00001cec ();
    0x00004112 nop                                           |     
    0x00004114 subs r6, 0xfa                                 |     r6 -= 0xfa;
    0x00004116 movs r0, r0                                   |     
    0x00004118 lsls r0, r5, 5                                |     r0 = r5 << 5;
    0x0000411a movs r0, r0                                   |     
    0x0000411c subs r6, 0xf4                                 |     r6 -= 0xf4;
    0x0000411e movs r0, r0                                   |     
    0x00004120 subs r4, r5, 4                                |     r4 = r5 - 4;
    0x00004122 movs r0, r0                                   |     
    0x00004124 mvns r0, r7                                   |     r0 = ~r7;
    0x00004126 movs r0, r0                                   |     
    0x00004128 asrs r6, r7, 0xa                              |     r6 = r7 >> 0xa;
    0x0000412a movs r0, r0                                   |     
    0x0000412c adds r0, r1, 6                                |     r0 = r1 + 6;
    0x0000412e movs r0, r0                                   |     
    0x00004130 bics r6, r5                                   |     __asm ("bics r6, r5");
    0x00004132 movs r0, r0                                   |     
    0x00004134 bics r4, r2                                   |     __asm ("bics r4, r2");
    0x00004136 movs r0, r0                                   |     
    0x00004138 bics r2, r1                                   |     __asm ("bics r2, r1");
    0x0000413a movs r0, r0                                   |     
    0x0000413c muls r2, r2, r2                               |     r2 *= r2;
    0x0000413e movs r0, r0                                   |     
    0x00004140 subs r6, 0x16                                 |     r6 -= 0x16;
    0x00004142 movs r0, r0                                   |     
    0x00004144 adds r4, r6, r4                               |     r4 = r6 + r4;
    0x00004146 movs r0, r0                                   |     
    0x00004148 asrs r4, r7, 7                                |     r4 = r7 >> 7;
    0x0000414a movs r0, r0                                   |     
    0x0000414c adds r6, r7, 4                                |     r6 = r7 + 4;
    0x0000414e movs r0, r0                                   |     
    0x00004150 cmn r2, r5                                    |     
    0x00004152 movs r0, r0                                   |     
    0x00004154 adds r2, r2, 2                                |     r2 += 2;
    0x00004156 movs r0, r0                                   |     
    0x00004158 cmn r2, r4                                    |     
    0x0000415a movs r0, r0                                   |     
    0x0000415c adds r6, r2, 5                                |     r6 = r2 + 5;
    0x0000415e movs r0, r0                                   |     
    0x00004160 lsls r4, r6, 5                                |     r4 = r6 << 5;
    0x00004162 movs r0, r0                                   |     
    0x00004164 subs r2, r0, 0                                |     r2 = r0 - 0;
    0x00004166 movs r0, r0                                   |     
    0x00004168 lsrs r4, r2, 0x10                             |     r4 = r2 >> 0x10;
    0x0000416a movs r0, r0                                   |     
    0x0000416c adds r4, r5, 5                                |     r4 = r5 + 5;
    0x0000416e 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/bin/loggen @ 0x2ecc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.print_statistic ()                               | void print_statistic (int16_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_10h_2;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_2ch_2;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     r0 = arg1;
    0x00002ecc invalid                                           |     
    0x00002ed0 ldr r3, [pc, 0x1b8]                               |     
    0x00002ed2 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00002ed6 mov r5, r0                                        |     r5 = r0;
    0x00002ed8 add r2, pc                                        |     r2 += pc;
    0x00002eda ldr r7, [pc, 0x1b4]                               |     
    0x00002edc vpush {d8, d9, d10}                               |     __asm ("vpush {d8, d9, d10}");
    0x00002ee0 sub sp, 0x3c                                      |     
    0x00002ee2 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00002ee4 add.w r8, sp, 0x24                                |     r8 += var_24h;
    0x00002ee8 add r7, pc                                        |     r7 = 0x5f7e;
    0x00002eea mov r0, r8                                        |     r0 = r8;
    0x00002eec ldr r6, [pc, 0x1a4]                               |     
    0x00002eee ldr r3, [r3]                                      |     r3 = *(0x308c);
    0x00002ef0 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00002ef2 mov.w r3, 0                                       |     r3 = 0;
    0x00002ef6 blx 0x1b04                                        |     gettimeofday ();
    0x00002efa ldrd r3, r1, [r7, 0x24]                           |     __asm ("ldrd r3, r1, [r7, 0x24]");
    0x00002efe add r6, pc                                        |     r6 = 0x5f96;
    0x00002f00 orrs.w r4, r1, r3                                 |     r4 = r1 | r3;
                                                                 |     if (r4 == r1) {
    0x00002f04 beq 0x2fee                                        |         goto label_2;
                                                                 |     }
                                                                 | label_1:
    0x00002f06 ldr r7, [pc, 0x190]                               |     
    0x00002f08 add r7, pc                                        |     r7 = 0x5fa6;
    0x00002f0a ldr r3, [r7, 0x20]                                |     r3 = *(0x5fc6);
                                                                 |     if (r3 == 0) {
    0x00002f0c cbz r3, 0x2f16                                    |         goto label_0;
                                                                 |     }
    0x00002f0e ldr r3, [r7, 0x40]                                |     r3 = *((r7 + 0x40));
                                                                 |     if (r3 == 0) {
    0x00002f10 cbz r3, 0x2f16                                    |         goto label_0;
                                                                 |     }
    0x00002f12 ldr r3, [r7, 0x24]                                |     r3 = *((r7 + 0x24));
    0x00002f14 cbnz r3, 0x2f44                                   |     
                                                                 |     while (r3 <= 0) {
                                                                 | label_0:
    0x00002f16 ldr r3, [pc, 0x184]                               |         
    0x00002f18 ldm.w r8, {r0, r1}                                |         r0 = *(r8);
                                                                 |         r1 = *((r8 + 4));
    0x00002f1c ldr r2, [pc, 0x180]                               |         
    0x00002f1e add r3, pc                                        |         r3 = 0x5fc0;
    0x00002f20 adds r3, 0x2c                                     |         r3 += 0x2c;
    0x00002f22 stm.w r3, {r0, r1}                                |         *(r3) = r0;
                                                                 |         *((r3 + 4)) = r1;
    0x00002f26 add r2, pc                                        |         r2 = 0x5fca;
    0x00002f28 ldr r3, [pc, 0x160]                               |         r3 = *(0x308c);
    0x00002f2a ldr r3, [r2, r3]                                  |         r3 = *(0x5fca);
    0x00002f2c ldr r2, [r3]                                      |         r2 = *(0x5fca);
    0x00002f2e ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x00002f30 eors r2, r3                                       |         r2 ^= r3;
    0x00002f32 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00002f36 bne.w 0x307a                                      |             goto label_3;
                                                                 |         }
    0x00002f3a add sp, 0x3c                                      |         
    0x00002f3c vpop {d8, d9, d10}                                |         __asm ("vpop {d8, d9, d10}");
    0x00002f40 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x00002f44 mov r2, r5                                        |         r2 = r5;
    0x00002f46 mov r1, r8                                        |         r1 = r8;
    0x00002f48 add r0, sp, 0x2c                                  |         r0 += var_2ch_2;
    0x00002f4a blx 0x1c74                                        |         fcn_00001c74 ();
    0x00002f4e add.w r1, r7, 0x2c                                |         r1 = r7 + 0x2c;
    0x00002f52 mov r0, r8                                        |         r0 = r8;
    0x00002f54 blx 0x1e6c                                        |         fcn_00001e6c ();
    0x00002f58 ldr r3, [pc, 0x148]                               |         
    0x00002f5a str r0, [sp, 0x1c]                                |         var_1ch = r0;
    0x00002f5c add r3, pc                                        |         
    0x00002f5e ldr r3, [r3, 0x10]                                |         r3 = *(0x6014);
    0x00002f60 cmp r3, 0                                         |         
    0x00002f62 ble 0x2f16                                        |         
                                                                 |     }
    0x00002f64 ldr r3, [pc, 0x140]                               |     r3 = *(0x30a8);
    0x00002f66 movs r4, 0                                        |     r4 = 0;
    0x00002f68 vmov s15, r0                                      |     __asm ("vmov s15, r0");
    0x00002f6c add.w sb, r7, 8                                   |     sb = r7 + 8;
    0x00002f70 vcvt.f64.u32 d9, s15                              |     __asm ("vcvt.f64.u32 d9, s15");
    0x00002f74 vldr d10, [pc, 0x108]                             |     __asm ("vldr d10, [0x00003084]");
    0x00002f78 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00002f7a str r3, [sp, 0x1c]                                |     var_1ch = r3;
                                                                 |     do {
    0x00002f7c mov r0, sb                                        |         r0 = sb;
    0x00002f7e lsls r5, r4, 3                                    |         r5 = r4 << 3;
    0x00002f80 blx 0x1ce0                                        |         fcn_00001ce0 ();
    0x00002f84 ldr.w sl, [r7, 0x40]                              |         sl = *((r7 + 0x40));
    0x00002f88 ldr r2, [r7, 0x20]                                |         r2 = *((r7 + 0x20));
    0x00002f8a ldr.w r0, [sl, r4, lsl 3]                         |         offset_0 = r4 << 3;
                                                                 |         r0 = *((sl + offset_0));
    0x00002f8e ldr.w r6, [r2, r4, lsl 3]                         |         offset_1 = r4 << 3;
                                                                 |         r6 = *((r2 + offset_1));
    0x00002f90 str r4, [r6]                                      |         *(r6) = r4;
    0x00002f92 add r2, r5                                        |         r2 += r5;
    0x00002f94 add r5, sl                                        |         r5 += sl;
    0x00002f96 ldr.w fp, [r2, 4]                                 |         fp = *((r2 + 4));
    0x00002f98 add sp, 0x10                                      |         
    0x00002f9a ldr r1, [r5, 4]                                   |         r1 = *((r5 + 4));
    0x00002f9c subs r0, r6, r0                                   |         r0 = r6 - r0;
    0x00002f9e sbc.w r1, fp, r1                                  |         __asm ("sbc.w r1, fp, r1");
    0x00002fa2 bl 0x4a24                                         |         r0 = fcn_00004a24 (r0, r1, r2);
    0x00002fa6 vmov d16, r0, r1                                  |         __asm ("vmov d16, r0, r1");
    0x00002faa mov r0, sb                                        |         r0 = sb;
    0x00002fac str.w r6, [sl, r4, lsl 3]                         |         __asm ("str.w r6, [sl, r4, lsl 3]");
    0x00002fb0 vmul.f64 d16, d16, d10                            |         __asm ("vmul.f64 d16, d16, d10");
    0x00002fb4 str.w fp, [r5, 4]                                 |         __asm ("str.w fp, [r5, 4]");
    0x00002fb8 vdiv.f64 d8, d16, d9                              |         __asm ("vdiv.f64 d8, d16, d9");
    0x00002fbc blx 0x1d3c                                        |         fcn_00001d3c ();
    0x00002fc0 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x00002fc2 movs r1, 1                                        |         r1 = 1;
    0x00002fc4 ldr r2, [pc, 0xe4]                                |         
    0x00002fc6 ldr r0, [r3]                                      |         r0 = *(r3);
    0x00002fc8 ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x00002fca add r2, pc                                        |         r2 = 0x607a;
    0x00002fcc strd r6, fp, [sp, 0x10]                           |         __asm ("strd r6, fp, [var_0hx10]");
    0x00002fd0 str r3, [sp, 4]                                   |         var_4h = r3;
    0x00002fd2 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch_2;
    0x00002fd4 str r3, [sp]                                      |         *(sp) = r3;
    0x00002fd6 mov r3, r4                                        |         r3 = r4;
    0x00002fd8 adds r4, 1                                        |         r4++;
    0x00002fda vstr d8, [sp, 8]                                  |         __asm ("vstr d8, [sp, 8]");
    0x00002fde blx 0x1bdc                                        |         fprintf_chk ()
    0x00002fe2 ldr r3, [pc, 0xcc]                                |         
    0x00002fe4 add r3, pc                                        |         
    0x00002fe6 ldr r3, [r3, 0x10]                                |         r3 = *(0x60aa);
    0x00002fe8 cmp r3, r4                                        |         
    0x00002fea bgt 0x2f7c                                        |         
                                                                 |     } while (r3 > r4);
    0x00002fec b 0x2f16                                          |     goto label_0;
                                                                 | label_2:
    0x00002fee add.w r1, r7, 0x2c                                |     r1 = r7 + 0x2c;
    0x00002ff2 mov r0, r8                                        |     r0 = r8;
    0x00002ff4 blx 0x1e6c                                        |     r0 = fcn_00001e6c ();
    0x00002ff8 mov sb, r0                                        |     sb = r0;
    0x00002ffa cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002ffc beq 0x2f06                                        |         goto label_1;
                                                                 |     }
    0x00002ffe add.w sl, r7, 8                                   |     sl = r7 + 8;
    0x00003002 mov r0, sl                                        |     r0 = sl;
    0x00003004 blx 0x1ce0                                        |     fcn_00001ce0 ();
    0x00003008 mov r0, sl                                        |     r0 = sl;
    0x0000300a ldr.w fp, [r7, 0x10]                              |     fp = *((r7 + 0x10));
    0x0000300e blx 0x1d3c                                        |     fcn_00001d3c ();
    0x00003012 ldrd r2, r1, [r7, 0x38]                           |     __asm ("ldrd r2, r1, [r7, 0x38]");
    0x00003016 cmp r2, 1                                         |     
    0x00003018 sbcs r3, r1, 0                                    |     __asm ("sbcs r3, r1, 0");
    0x0000301c ite ge                                            |     
                                                                 |     if (r2 < 1) {
    0x0000301e movge r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r2 >= 1) {
    0x00003020 movlt r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x00003022 cmp r2, fp                                        |     
    0x00003024 and r3, r3, 1                                     |     r3 &= 1;
    0x00003028 sbcs r0, r1, 0                                    |     __asm ("sbcs r0, r1, 0");
    0x0000302c it ge                                             |     
                                                                 |     if (r2 < fp) {
    0x0000302e movge r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x00003030 cbnz r3, 0x303c                                   |     
                                                                 |     while (1) {
    0x00003032 ldr r3, [pc, 0x80]                                |         
    0x00003034 add r3, pc                                        |         r3 = 0x60ee;
    0x00003036 strd fp, r4, [r3, 0x38]                           |         __asm ("strd fp, r4, [r3, 0x38]");
    0x0000303a b 0x2f06                                          |         goto label_1;
    0x0000303c ldr r3, [pc, 0x68]                                |         r3 = *(0x30a8);
    0x0000303e subs.w r0, fp, r2                                 |         r0 = fp - r2;
    0x00003042 sbc.w r1, r1, r1, lsl 1                           |         __asm ("sbc.w r1, r1, r1, lsl 1");
    0x00003046 ldr r7, [r6, r3]                                  |         r7 = *((r6 + r3));
    0x00003048 bl 0x4a24                                         |         fcn_00004a24 (r0, r1, r2);
    0x0000304c vldr d18, [pc, 0x30]                              |         __asm ("vldr d18, [0x00003084]");
    0x00003050 vmov d17, r0, r1                                  |         __asm ("vmov d17, r0, r1");
    0x00003054 movs r1, 1                                        |         r1 = 1;
    0x00003056 vmov s15, sb                                      |         __asm ("vmov s15, sb");
    0x0000305a vcvt.f64.u32 d16, s15                             |         __asm ("vcvt.f64.u32 d16, s15");
    0x0000305e vmul.f64 d17, d17, d18                            |         __asm ("vmul.f64 d17, d17, d18");
    0x00003062 ldr r2, [pc, 0x54]                                |         
    0x00003064 ldr r0, [r7]                                      |         r0 = *(r7);
    0x00003066 strd fp, r4, [sp]                                 |         __asm ("strd fp, r4, [sp]");
    0x0000306a add r2, pc                                        |         r2 = 0x6128;
    0x0000306c vdiv.f64 d18, d17, d16                            |         __asm ("vdiv.f64 d18, d17, d16");
    0x00003070 vstr d18, [sp, 8]                                 |         __asm ("vstr d18, [sp, 8]");
    0x00003074 blx 0x1bdc                                        |         fprintf_chk ()
    0x00003078 b 0x3032                                          |         
                                                                 |     }
                                                                 | label_3:
    0x0000307a blx 0x1cec                                        |     fcn_00001cec ();
    0x0000307e nop                                               |     
    0x00003080 movs r0, r0                                       |     
    0x00003082 movs r0, r0                                       |     
    0x00003084 strh r0, [r0, 0x24]                               |     *((r0 + 0x24)) = r0;
    0x00003086 asrs r6, r5                                       |     r6 >>= r5;
    0x00003088 ldr r7, [pc, 0x240]                               |     r7 = *(0x32cc);
    0x0000308a movs r0, r0                                       |     
    0x0000308c lsls r0, r5, 5                                    |     r0 = r5 << 5;
    0x0000308e movs r0, r0                                       |     
    0x00003090 strb r4, [r7, r0]                                 |     *((r7 + r0)) = r4;
    0x00003092 movs r0, r0                                       |     
    0x00003094 ldr r7, [pc, 0x1a8]                               |     r7 = *(0x3240);
    0x00003096 movs r0, r0                                       |     
    0x00003098 strb r4, [r3, r0]                                 |     *((r3 + r0)) = r4;
    0x0000309a movs r0, r0                                       |     
    0x0000309c strb r6, [r0, r0]                                 |     *((r0 + r0)) = r6;
    0x0000309e movs r0, r0                                       |     
    0x000030a0 ldr r7, [pc, 0x108]                               |     r7 = *(0x31ac);
    0x000030a2 movs r0, r0                                       |     
    0x000030a4 str r0, [r5, r2]                                  |     *((r5 + r2)) = r0;
    0x000030a6 movs r0, r0                                       |     
    0x000030a8 lsls r4, r6, 5                                    |     r4 = r6 << 5;
    0x000030aa movs r0, r0                                       |     
    0x000030ac adds r6, r4, 7                                    |     r6 = r4 + 7;
    0x000030ae movs r0, r0                                       |     
    0x000030b0 str r0, [r4, r0]                                  |     *((r4 + r0)) = r0;
    0x000030b2 movs r0, r0                                       |     
    0x000030b4 strh r0, [r6, r3]                                 |     *((r6 + r3)) = r0;
    0x000030b6 movs r0, r0                                       |     
    0x000030b8 adds r2, r4, 4                                    |     r2 = r4 + 4;
    0x000030ba 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/bin/loggen @ 0x357c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.read_next_message_from_file ()               | void read_next_message_from_file (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_74h;
                                                             |     int16_t var_0h;
                                                             |     int16_t var_0h_2;
                                                             |     int16_t var_4h_2;
                                                             |     int16_t var_8h_2;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h_2;
                                                             |     int16_t var_18h_2;
                                                             |     int16_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_20h_2;
                                                             |     int16_t var_28h;
                                                             |     int16_t var_30h;
                                                             |     int16_t var_34h_2;
                                                             |     int16_t var_38h;
                                                             |     int16_t var_3ch;
                                                             |     int16_t var_40h;
                                                             |     int16_t var_44h;
                                                             |     int16_t var_48h;
                                                             |     int16_t var_58h;
                                                             |     int16_t var_201h;
                                                             |     int8_t var_23ah;
                                                             |     int8_t var_25bh;
                                                             |     int16_t var_6d8h;
                                                             |     int16_t var_16a0h;
                                                             |     int16_t var_0h_5;
                                                             |     int32_t var_0h_6;
                                                             |     int16_t var_0h_4;
                                                             |     int16_t var_16c0h;
                                                             |     int32_t var_0h_3;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x0000357c svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00003580 sub.w sp, sp, 0x16c0                          |     
    0x00003584 sub sp, 0x1c                                  |     
    0x00003586 mov fp, r3                                    |     
    0x00003588 mov r8, r1                                    |     r8 = r1;
    0x0000358a add.w r1, sp, 0x16c0                          |     r1 += var_16c0h;
    0x0000358e str r2, [sp, 0x44]                            |     var_44h = r2;
    0x00003590 adds r1, 0x14                                 |     r1 += 0x14;
    0x00003592 ldr.w r2, [pc, 0x874]                         |     
    0x00003596 mov r6, r0                                    |     r6 = r0;
    0x00003598 ldr.w r3, [pc, 0x870]                         |     r3 = *(0x3e0c);
    0x0000359c add r2, pc                                    |     r2 = 0x73aa;
    0x0000359e ldr r3, [r2, r3]                              |     
    0x000035a0 movw r2, 0x165d                               |     r2 = 0x165d;
    0x000035a4 ldr r3, [r3]                                  |     r3 = *(0x73aa);
    0x000035a6 str r3, [r1]                                  |     *(r1) = r3;
    0x000035a8 mov.w r3, 0                                   |     r3 = 0;
    0x000035ac ldr.w r3, [pc, 0x860]                         |     r3 = *(0x00003e10);
    0x000035b0 movs r1, 0                                    |     r1 = 0;
    0x000035b2 add r3, pc                                    |     r3 += pc;
    0x000035b4 str r3, [sp, 0x30]                            |     var_30h = r3;
    0x000035b6 add r3, sp, 0x48                              |     r3 += var_48h;
    0x000035b8 mov r0, r3                                    |     r0 = r3;
    0x000035ba str r3, [sp, 0x38]                            |     var_38h = r3;
    0x000035bc blx 0x1c1c                                    |     fcn_00001c1c ();
    0x000035c0 ldr.w r3, [pc, 0x850]                         |     
    0x000035c4 add r3, pc                                    |     
    0x000035c6 ldr r3, [r3, 4]                               |     r3 = *(0x73e0);
    0x000035c8 ldr.w r0, [r3, fp, lsl 2]                     |     r0 = *(0x73ef);
    0x000035cc cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000035ce beq.w 0x3d6a                                  |         goto label_9;
                                                             |     }
    0x000035d2 ldr.w r3, [pc, 0x844]                         |     
    0x000035d6 lsl.w fp, fp, 2                               |     
    0x000035da ldr.w sl, [pc, 0x840]                         |     sl = *(0x00003e1c);
    0x000035de add r7, sp, 0x58                              |     r7 += var_58h;
    0x000035e0 ldr.w r5, [pc, 0x83c]                         |     r5 = *(0x00003e20);
    0x000035e4 add r3, pc                                    |     r3 = 0x7402;
    0x000035e6 str r7, [sp, 0x34]                            |     var_34h_2 = r7;
    0x000035e8 adds r3, 0x68                                 |     r3 += 0x68;
    0x000035ea add sl, pc                                    |     sl += pc;
    0x000035ec str r3, [sp, 0x40]                            |     var_40h = r3;
    0x000035ee add r5, pc                                    |     r5 += pc;
    0x000035f0 ldr.w r3, [pc, 0x830]                         |     
    0x000035f4 add r3, pc                                    |     r3 = 0x741c;
    0x000035f6 adds r3, 0x54                                 |     r3 += 0x54;
    0x000035f8 str r3, [sp, 0x3c]                            |     var_3ch = r3;
                                                             | label_0:
    0x000035fa blx 0x1ba0                                    |     r0 = feof (r0);
                                                             |     if (r0 != 0) {
    0x000035fe cbz r0, 0x3616                                |         
    0x00003600 ldr.w r3, [sl, 8]                             |         r3 = *((sl + 8));
    0x00003604 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00003606 beq.w 0x3990                                  |             goto label_14;
                                                             |         }
    0x0000360a ldr.w r3, [sl, 4]                             |         r3 = *((sl + 4));
    0x0000360e ldr.w r0, [r3, fp]                            |         r0 = *((r3 + fp));
    0x00003612 blx 0x1c98                                    |         fcn_00001c98 ();
                                                             |     }
    0x00003616 mov r2, r8                                    |     r2 = r8;
    0x00003618 movs r1, 0                                    |     r1 = 0;
    0x0000361a mov r0, r6                                    |     r0 = r6;
    0x0000361c blx 0x1c1c                                    |     fcn_00001c1c ();
    0x00003620 ldr r3, [r5, 4]                               |     r3 = *((r5 + 4));
    0x00003622 mov r1, r8                                    |     r1 = r8;
    0x00003624 mov r0, r6                                    |     r0 = r6;
    0x00003626 ldr.w r2, [r3, fp]                            |     r2 = *((r3 + fp));
    0x0000362a blx 0x1da8                                    |     r0 = fcn_00001da8 ();
    0x0000362e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003630 beq.w 0x396e                                  |         goto label_15;
                                                             |     }
                                                             | label_2:
    0x00003634 ldr r3, [r5, 0xc]                             |     r3 = *((r5 + 0xc));
    0x00003636 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00003638 bne.w 0x3dac                                  |         goto label_16;
                                                             |     }
    0x0000363c ldr r3, [r5, 0x10]                            |     r3 = *((r5 + 0x10));
    0x0000363e mov r4, r6                                    |     r4 = r6;
    0x00003640 mov r0, r6                                    |     r0 = r6;
    0x00003642 subs r7, r3, 1                                |     r7 = r3 - 1;
                                                             |     if (r3 != 0) {
    0x00003644 cbnz r3, 0x3650                               |         goto label_17;
                                                             |     }
    0x00003646 b 0x3686                                      |     goto label_18;
                                                             |     do {
    0x00003648 subs r7, 1                                    |         r7--;
    0x0000364a adds r0, 1                                    |         r0++;
    0x0000364c adds r3, r7, 1                                |         r3 = r7 + 1;
                                                             |         if (r3 == r7) {
    0x0000364e beq 0x3684                                    |             goto label_19;
                                                             |         }
                                                             | label_17:
    0x00003650 movs r1, 0x20                                 |         r1 = 0x20;
    0x00003652 blx 0x1eb4                                    |         r0 = fcn_00001eb4 ();
    0x00003656 cmp r0, 0                                     |         
    0x00003658 bne 0x3648                                    |         
                                                             |     } while (r0 != 0);
                                                             |     do {
                                                             | label_1:
    0x0000365a ldr.w r3, [pc, 0x7cc]                         |         r3 = *(0x00003e28);
    0x0000365e ldr r2, [sp, 0x30]                            |         r2 = var_30h;
    0x00003660 ldr r4, [r2, r3]                              |         r4 = *((r2 + r3));
                                                             | label_4:
    0x00003662 ldr.w r7, [pc, 0x7c8]                         |         r7 = *(0x00003e2c);
    0x00003666 movs r1, 1                                    |         r1 = 1;
    0x00003668 ldr.w r2, [pc, 0x7c4]                         |         r2 = *(0x00003e30);
    0x0000366c ldr r0, [r4]                                  |         r0 = *(r4);
    0x0000366e add r7, pc                                    |         r7 += pc;
    0x00003670 ldr r3, [r7, 0x14]                            |         r3 = *((r7 + 0x14));
    0x00003672 add r2, pc                                    |         r2 += pc;
    0x00003674 add r3, r1                                    |         r3 += r1;
    0x00003676 str r3, [r7, 0x14]                            |         *((r7 + 0x14)) = r3;
    0x00003678 blx 0x1bdc                                    |         fprintf_chk ()
    0x0000367c ldr r3, [r7, 4]                               |         r3 = *((r7 + 4));
    0x0000367e ldr.w r0, [r3, fp]                            |         r0 = *((r3 + fp));
    0x00003682 b 0x35fa                                      |         goto label_0;
                                                             | label_19:
    0x00003684 mov r4, r0                                    |         r4 = r0;
                                                             | label_18:
    0x00003686 ldr.w r2, [pc, 0x7ac]                         |         r2 = *(0x00003e34);
    0x0000368a movs r1, 5                                    |         r1 = 5;
    0x0000368c mov r0, r4                                    |         r0 = r4;
    0x0000368e add r2, pc                                    |         r2 += pc;
    0x00003690 blx 0x1ca4                                    |         r0 = fcn_00001ca4 ();
    0x00003694 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00003696 beq.w 0x3918                                  |             
    0x0000369a ldrb r3, [r0, 1]                              |             r3 = *((r0 + 1));
    0x0000369c sub.w r2, r3, 0x41                            |             r2 = r3 - 0x41;
    0x000036a0 cmp r2, 0x19                                  |             
                                                             |             if (r2 < 0x19) {
    0x000036a2 bls.w 0x39c0                                  |                 goto label_20;
                                                             |             }
    0x000036a6 subs r3, 0x30                                 |             r3 -= 0x30;
    0x000036a8 cmp r3, 9                                     |             
                                                             |             if (r3 > 9) {
    0x000036aa bhi.w 0x3918                                  |                 goto label_21;
                                                             |             }
    0x000036ae ldr.w r1, [pc, 0x788]                         |             
    0x000036b2 mov r0, r4                                    |             r0 = r4;
    0x000036b4 add r1, pc                                    |             r1 = 0x74f2;
    0x000036b6 blx 0x1c80                                    |             r0 = fcn_00001c80 ();
                                                             |             if (r0 != 0) {
    0x000036ba cbz r0, 0x36be                                |                 
    0x000036bc adds r4, 1                                    |                 r4++;
                                                             |             }
    0x000036be ldr.w r1, [pc, 0x77c]                         |             r1 = *(0x00003e3c);
    0x000036c2 movs r2, 8                                    |             r2 = 8;
    0x000036c4 mov r0, r4                                    |             r0 = r4;
    0x000036c6 add r1, pc                                    |             r1 += pc;
    0x000036c8 blx 0x1b1c                                    |             r0 = g_strsplit_set ();
    0x000036cc mov sb, r0                                    |             sb = r0;
    0x000036ce blx 0x1cbc                                    |             r0 = fcn_00001cbc ();
    0x000036d2 cmp r0, 7                                     |             
                                                             |             if (r0 < 7) {
    0x000036d4 bls.w 0x3b3c                                  |                 goto label_22;
                                                             |             }
    0x000036d8 ldr.w r4, [sb]                                |             r4 = *(sb);
    0x000036dc ldr r7, [sp, 0x34]                            |             r7 = var_34h_2;
    0x000036de mov r0, r4                                    |             r0 = r4;
    0x000036e0 blx 0x1dd0                                    |             fcn_00001dd0 ();
    0x000036e4 ldr.w r3, [pc, 0x758]                         |             r3 = *(0x00003e40);
    0x000036e8 mov r2, r0                                    |             r2 = r0;
    0x000036ea mov r1, r4                                    |             r1 = r4;
    0x000036ec ldr r0, [sp, 0x38]                            |             r0 = var_38h;
    0x000036ee add r3, pc                                    |             r3 += pc;
    0x000036f0 str r3, [sp]                                  |             *(sp) = r3;
    0x000036f2 movs r3, 4                                    |             r3 = 4;
    0x000036f4 bl 0x3230                                     |             fcn_00003230 (r0, r1, r2, r3, r4);
    0x000036f8 ldr.w r4, [sb, 4]                             |             r4 = *((sb + 4));
    0x000036fc mov r0, r4                                    |             r0 = r4;
    0x000036fe blx 0x1dd0                                    |             fcn_00001dd0 ();
    0x00003702 ldr.w r3, [pc, 0x740]                         |             r3 = *(0x00003e44);
    0x00003706 mov r2, r0                                    |             r2 = r0;
    0x00003708 mov r1, r4                                    |             r1 = r4;
    0x0000370a sub.w r0, r7, 0xc                             |             r0 = r7 - 0xc;
    0x0000370e add r3, pc                                    |             r3 += pc;
    0x00003710 str r3, [sp]                                  |             *(sp) = r3;
    0x00003712 movs r3, 3                                    |             r3 = 3;
    0x00003714 bl 0x3230                                     |             fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003716 stc2 p8, c15, [ip, 0x364]                     |             __asm ("stc2 p8, c15, [ip, 0x364]");
    0x0000371a ands r0, r1                                   |             r0 &= r1;
    0x0000371c mov r0, r4                                    |             r0 = r4;
    0x0000371e blx 0x1dd0                                    |             fcn_00001dd0 ();
    0x00003722 ldr.w r3, [pc, 0x724]                         |             r3 = *(0x00003e48);
    0x00003726 mov r2, r0                                    |             r2 = r0;
    0x00003728 mov r1, r4                                    |             r1 = r4;
    0x0000372a sub.w r0, r7, 9                               |             r0 = r7 - 9;
    0x0000372e add r3, pc                                    |             r3 += pc;
    0x00003730 str r3, [sp]                                  |             *(sp) = r3;
    0x00003732 movs r3, 0x81                                 |             r3 = 0x81;
    0x00003734 bl 0x3230                                     |             fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003738 ldr.w r4, [sb, 0xc]                           |             r4 = *((sb + 0xc));
    0x0000373c mov r0, r4                                    |             r0 = r4;
    0x0000373e blx 0x1dd0                                    |             fcn_00001dd0 ();
    0x00003742 ldr.w r3, [pc, 0x708]                         |             r3 = *(0x00003e4c);
    0x00003746 mov r2, r0                                    |             r2 = r0;
    0x00003748 mov r1, r4                                    |             r1 = r4;
    0x0000374a add.w r0, r7, 0x78                            |             r0 = r7 + 0x78;
    0x0000374e add r3, pc                                    |             r3 += pc;
    0x00003750 str r3, [sp]                                  |             *(sp) = r3;
    0x00003752 mov.w r3, 0x100                               |             r3 = 0x100;
    0x00003756 bl 0x3230                                     |             fcn_00003230 (r0, r1, r2, r3, r4);
    0x0000375a ldr.w r4, [sb, 0x10]                          |             r4 = *((sb + 0x10));
    0x0000375e mov r0, r4                                    |             r0 = r4;
    0x00003760 blx 0x1dd0                                    |             fcn_00001dd0 ();
    0x00003764 ldr.w r3, [pc, 0x6e8]                         |             
    0x00003768 mov r2, r0                                    |             r2 = r0;
    0x0000376a mov r1, r4                                    |             r1 = r4;
    0x0000376c add.w r0, r7, 0x178                           |             r0 = r7 + 0x178;
    0x00003770 add r3, pc                                    |             r3 = 0x75c4;
    0x00003772 str r3, [sp]                                  |             *(sp) = r3;
    0x00003774 movs r3, 0x31                                 |             r3 = 0x31;
    0x00003776 bl 0x3230                                     |             fcn_00003230 (r0, r1, r2, r3, r4);
    0x0000377a ldr.w r4, [sb, 0x14]                          |             r4 = *((sb + 0x14));
    0x0000377e mov r0, r4                                    |             r0 = r4;
    0x00003780 blx 0x1dd0                                    |             fcn_00001dd0 ();
    0x00003784 ldr.w r3, [pc, 0x6cc]                         |             
    0x00003788 mov r2, r0                                    |             r2 = r0;
    0x0000378a mov r1, r4                                    |             r1 = r4;
    0x0000378c addw r0, r7, 0x1a9                            |             __asm ("addw r0, r7, 0x1a9");
    0x00003790 add r3, pc                                    |             r3 = 0x75e8;
    0x00003792 str r3, [sp]                                  |             *(sp) = r3;
    0x00003794 movs r3, 0x81                                 |             r3 = 0x81;
    0x00003796 bl 0x3230                                     |             fcn_00003230 (r0, r1, r2, r3, r4);
    0x0000379a ldr.w r4, [sb, 0x18]                          |             r4 = *((sb + 0x18));
    0x0000379e mov r0, r4                                    |             r0 = r4;
    0x000037a0 blx 0x1dd0                                    |             fcn_00001dd0 ();
    0x000037a4 ldr.w r3, [pc, 0x6b0]                         |             
    0x000037a8 mov r2, r0                                    |             r2 = r0;
    0x000037aa mov r1, r4                                    |             r1 = r4;
    0x000037ac addw r0, r7, 0x22a                            |             __asm ("addw r0, r7, 0x22a");
    0x000037b0 add r3, pc                                    |             r3 = 0x760c;
    0x000037b2 str r3, [sp]                                  |             *(sp) = r3;
    0x000037b4 movs r3, 0x21                                 |             r3 = 0x21;
    0x000037b6 bl 0x3230                                     |             fcn_00003230 (r0, r1, r2, r3, r4);
    0x000037ba ldr.w r4, [sb, 0x1c]                          |             r4 = *((sb + 0x1c));
    0x000037be movw r1, 0x401                                |             r1 = 0x401;
    0x000037c0 asrs r1, r0                                   |             r1 >>= r0;
    0x000037c2 ldr.w r2, [pc, 0x698]                         |             
    0x000037c6 mov r0, r4                                    |             r0 = r4;
    0x000037c8 add r2, pc                                    |             
    0x000037ca blx 0x1ca4                                    |             fcn_00001ca4 ();
    0x000037ce ldr.w r2, [pc, 0x690]                         |             r2 = *(0x00003e60);
    0x000037d2 mov r5, r0                                    |             r5 = r0;
    0x000037d4 movw r1, 0x401                                |             r1 = 0x401;
    0x000037d8 mov r0, r4                                    |             r0 = r4;
    0x000037da add r2, pc                                    |             r2 = 0xae08;
    0x000037dc blx 0x1ca4                                    |             r0 = fcn_00001ca4 ();
    0x000037e0 cmp r0, 0                                     |             
    0x000037e2 it ne                                         |             
                                                             |             if (r0 != 0) {
    0x000037e4 cmpne r5, 0                                   |                 __asm ("cmpne r5, 0");
                                                             |             }
    0x000037e6 ite eq                                        |             
                                                             |             if (r0 != 0) {
    0x000037e8 moveq r3, 1                                   |                 r3 = 1;
                                                             |             }
                                                             |             if (r0 == 0) {
    0x000037ea movne r3, 0                                   |                 r3 = 0;
                                                             |             }
                                                             |             if (r0 == 0) {
    0x000037ec beq.w 0x3bc6                                  |                 goto label_23;
                                                             |             }
    0x000037f0 subs r2, r0, r5                               |             r2 = r0 - r5;
    0x000037f2 cmp r2, 1                                     |             
                                                             |             if (r2 == 1) {
    0x000037f4 beq.w 0x3bc6                                  |                 goto label_23;
                                                             |             }
    0x000037f8 mov r4, r0                                    |             r4 = r0;
    0x000037fa mov r0, r5                                    |             r0 = r5;
    0x000037fc strb r3, [r4], 3                              |             *(r4) = r3;
                                                             |             r4 += 3;
    0x00003800 blx 0x1dd0                                    |             fcn_00001dd0 ();
    0x00003804 ldr.w r3, [pc, 0x65c]                         |             r3 = *(0x00003e64);
    0x00003808 mov r1, r5                                    |             r1 = r5;
    0x0000380a addw r5, r7, 0x24b                            |             __asm ("addw r5, r7, 0x24b");
    0x0000380e mov r2, r0                                    |             r2 = r0;
    0x00003810 mov r0, r5                                    |             r0 = r5;
    0x00003812 add r3, pc                                    |             r3 += pc;
    0x00003814 str r3, [sp]                                  |             *(sp) = r3;
    0x00003816 movw r3, 0x401                                |             
    0x0000381a bl 0x3230                                     |             fcn_00003230 (r0, r1, r2, r3, r4);
    0x0000381e mov r0, r5                                    |             r0 = r5;
    0x00003820 blx 0x1c10                                    |             fcn_00001c10 ();
    0x00003824 mov r0, r4                                    |             r0 = r4;
    0x00003826 blx 0x1dd0                                    |             fcn_00001dd0 ();
    0x0000382a ldr.w r3, [pc, 0x63c]                         |             r3 = *(0x00003e68);
    0x0000382e mov r2, r0                                    |             r2 = r0;
    0x00003830 mov r1, r4                                    |             r1 = r4;
    0x00003832 addw r0, r7, 0x64c                            |             __asm ("addw r0, r7, 0x64c");
    0x00003836 add r3, pc                                    |             r3 = 0x3c3b;
    0x00003838 str r3, [sp]                                  |             *(sp) = r3;
    0x0000383a movw r3, 0x1001                               |             r3 = 0x1001;
    0x0000383e bl 0x3230                                     |             fcn_00003230 (r0, r1, r2, r3, r4);
                                                             | label_5:
    0x00003842 mov r0, sb                                    |             r0 = sb;
    0x00003844 blx 0x1cb0                                    |             fcn_00001cb0 ();
    0x00003848 ldr.w r3, [pc, 0x620]                         |             
    0x0000384c add r3, pc                                    |             
    0x0000384e ldr r3, [r3, 0xc]                             |             r3 = *(0x76c8);
                                                             | label_3:
    0x00003850 cmp r3, 0                                     |             
                                                             |             if (r3 != 0) {
    0x00003852 bne.w 0x3dac                                  |                 goto label_16;
                                                             |             }
    0x00003856 ldr r3, [sp, 0x44]                            |             r3 = var_44h;
    0x00003858 add.w r4, sp, 0x16a0                          |             r4 += var_16a0h;
    0x0000385c adds r4, 0x14                                 |             r4 += 0x14;
    0x0000385e movs r1, 0x20                                 |             r1 = 0x20;
    0x00003860 mov r0, r4                                    |             r0 = r4;
    0x00003862 cmp r3, 0                                     |             
                                                             |             if (r3 == 0) {
    0x00003864 beq.w 0x3d6e                                  |                 goto label_24;
                                                             |             }
    0x00003868 blx 0x1cc8                                    |             fcn_00001cc8 ();
    0x0000386c add.w r3, sp, 0x6d8                           |             r3 += var_6d8h;
    0x00003870 mov r2, r0                                    |             r2 = r0;
    0x00003872 sub.w r5, r3, 0x690                           |             r5 -= var_48h;
    0x00003876 sub.w r1, r8, 0xa                             |             r1 = r8 - 0xa;
    0x0000387a ldrb.w r5, [r5, 0x1b9]                        |             r5 = var_201h;
    0x0000387e add.w r0, r6, 0xa                             |             r0 = r6 + 0xa;
    0x00003882 cmp r5, 0                                     |             
                                                             |             if (r5 == 0) {
    0x00003884 beq.w 0x3dfe                                  |                 goto label_25;
                                                             |             }
    0x00003888 addw r5, r7, 0x1a9                            |             __asm ("addw r5, r7, 0x1a9");
                                                             | label_13:
    0x0000388c sub.w ip, r3, 0x690                           |             
    0x00003890 ldrb.w ip, [ip, 0x23a]                        |             ip = var_23ah;
    0x00003894 cmp.w ip, 0                                   |             
                                                             |             if (ip == 0) {
    0x00003898 beq.w 0x3df6                                  |                 goto label_26;
                                                             |             }
    0x0000389c addw ip, r7, 0x22a                            |             __asm ("addw ip, r7, 0x22a");
                                                             | label_12:
    0x000038a0 sub.w r3, r3, 0x690                           |             r3 -= var_48h;
    0x000038a4 ldrb.w r3, [r3, 0x25b]                        |             r3 = var_25bh;
    0x000038a8 cmp r3, 0                                     |             
                                                             |             if (r3 == 0) {
    0x000038aa beq.w 0x3df0                                  |                 goto label_27;
                                                             |             }
    0x000038ae addw r3, r7, 0x24b                            |             __asm ("addw r3, r7, 0x24b");
                                                             | label_11:
    0x000038b2 strd ip, r3, [sp, 0x20]                       |             __asm ("strd ip, r3, [var_20h]");
    0x000038b6 ldr r3, [sp, 0x38]                            |             r3 = var_38h;
    0x000038b8 strd r2, r4, [sp, 0xc]                        |             __asm ("strd r2, r4, [var_10h]");
    0x000038bc addw r2, r7, 0x64c                            |             __asm ("addw r2, r7, 0x64c");
    0x000038c0 str r2, [sp, 0x28]                            |             var_28h = r2;
    0x000038c2 add.w r2, r7, 0x178                           |             r2 = r7 + 0x178;
    0x000038c6 str r3, [sp, 4]                               |             var_4h_2 = r3;
    0x000038c8 ldr.w r3, [pc, 0x5a4]                         |             r3 = *(0x00003e70);
    0x000038cc str r2, [sp, 0x18]                            |             var_18h_2 = r2;
    0x000038ce add.w r2, r7, 0x78                            |             r2 = r7 + 0x78;
    0x000038d2 subs r7, 0xc                                  |             r7 -= 0xc;
    0x000038d4 str r5, [sp, 0x1c]                            |             var_1ch = r5;
    0x000038d6 add r3, pc                                    |             r3 += pc;
    0x000038d8 str r2, [sp, 0x14]                            |             var_14h_2 = r2;
    0x000038da str r3, [sp]                                  |             *(sp) = r3;
    0x000038dc movs r2, 1                                    |             r2 = 1;
    0x000038de mov.w r3, -1                                  |             r3 = -1;
    0x000038e2 str r7, [sp, 8]                               |             var_8h_2 = r7;
    0x000038e4 blx 0x1ddc                                    |             fcn_00001ddc ();
    0x000038e8 ldr.w r2, [pc, 0x588]                         |             
    0x000038ec add.w r5, sp, 0x16a0                          |             r5 += var_16a0h;
    0x000038f0 movs r3, 0xb                                  |             r3 = 0xb;
    0x000038f2 adds r5, 8                                    |             r5 += 8;
    0x000038f4 mov r1, r3                                    |             r1 = r3;
    0x000038f6 mov r4, r0                                    |             r4 = r0;
    0x000038f8 add r2, pc                                    |             r2 = 0x7770;
    0x000038fa strd r2, r0, [sp]                             |             __asm ("strd r2, r0, [sp]");
    0x000038fe movs r2, 1                                    |             r2 = 1;
    0x00003900 mov r0, r5                                    |             r0 = r5;
    0x00003902 blx 0x1ddc                                    |             fcn_00001ddc ();
    0x00003906 mov r2, r5                                    |             r2 = r5;
    0x00003908 add.w r3, r4, 0xa                             |             r3 = r4 + 0xa;
    0x0000390c ldm r2!, {r0, r1}                             |             r0 = *(r2!);
                                                             |             r1 = *((r2! + 4));
    0x0000390e ldrh r2, [r2]                                 |             r2 = *(r2);
    0x00003910 str r0, [r6]                                  |             *(r6) = r0;
    0x00003912 str r1, [r6, 4]                               |             *((r6 + 4)) = r1;
    0x00003914 strh r2, [r6, 8]                              |             *((r6 + 8)) = r2;
    0x00003916 b 0x3994                                      |             goto label_8;
                                                             |         }
                                                             | label_21:
    0x00003918 blx 0x1b58                                    |         r0 = get_debug_level ();
    0x0000391c cmp r0, 0                                     |         
    0x0000391e beq.w 0x365a                                  |         
                                                             |     } while (r0 == 0);
    0x00003922 ldr.w r0, [pc, 0x554]                         |     r0 = *(0x00003e78);
    0x00003926 add r0, pc                                    |     r0 += pc;
    0x00003928 blx 0x1b70                                    |     g_path_get_basename ();
    0x0000392c ldr r2, [sp, 0x30]                            |     r2 = var_30h;
    0x0000392e mov r7, r0                                    |     r7 = r0;
    0x00003930 ldr.w r3, [pc, 0x548]                         |     r3 = *(0x3e7c);
    0x00003934 movs r1, 1                                    |     r1 = 1;
    0x00003936 ldr.w sb, [r2, r3]                            |     sb = *((r2 + r3));
    0x0000393a ldr r3, [sp, 0x40]                            |     r3 = var_40h;
    0x0000393c ldr.w r2, [pc, 0x540]                         |     
    0x00003940 str r3, [sp]                                  |     *(sp) = r3;
    0x00003942 movw r3, 0x149                                |     r3 = 0x149;
    0x00003946 str r3, [sp, 4]                               |     var_4h_2 = r3;
    0x00003948 add r2, pc                                    |     r2 = 0x77cc;
    0x0000394a mov r3, r7                                    |     r3 = r7;
    0x0000394c ldr.w r0, [sb]                                |     r0 = *(sb);
    0x00003950 blx 0x1bdc                                    |     fprintf_chk ()
    0x00003954 ldr.w r2, [pc, 0x52c]                         |     
    0x00003958 mov r3, r4                                    |     r3 = r4;
    0x0000395a ldr.w r0, [sb]                                |     r0 = *(sb);
    0x0000395e movs r1, 1                                    |     r1 = 1;
    0x00003960 add r2, pc                                    |     r2 = 0x77e8;
    0x00003962 blx 0x1bdc                                    |     fprintf_chk ()
    0x00003966 mov r0, r7                                    |     r0 = r7;
    0x00003968 blx 0x1d14                                    |     g_hash_table_unref ();
    0x0000396c b 0x365a                                      |     goto label_1;
                                                             | label_15:
    0x0000396e ldr r3, [r5, 8]                               |     r3 = *((r5 + 8));
                                                             |     if (r3 == 0) {
    0x00003970 cbz r3, 0x3990                                |         goto label_14;
                                                             |     }
    0x00003972 ldr r3, [r5, 4]                               |     r3 = *((r5 + 4));
    0x00003974 ldr.w r0, [r3, fp]                            |     r0 = *((r3 + fp));
    0x00003978 blx 0x1c98                                    |     fcn_00001c98 ();
    0x0000397c ldr r3, [r5, 4]                               |     r3 = *((r5 + 4));
    0x0000397e mov r1, r8                                    |     r1 = r8;
    0x00003980 mov r0, r6                                    |     r0 = r6;
    0x00003982 ldr.w r2, [r3, fp]                            |     r2 = *((r3 + fp));
    0x00003986 blx 0x1da8                                    |     r0 = fcn_00001da8 ();
    0x0000398a cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000398c bne.w 0x3634                                  |         goto label_2;
                                                             |     }
                                                             | label_14:
    0x00003990 mov.w r3, -1                                  |     r3 = -1;
                                                             | label_8:
    0x00003994 ldr.w r1, [pc, 0x4f0]                         |     r1 = *(0x00003e88);
    0x00003998 add.w r0, sp, 0x16c0                          |     r0 += var_16c0h;
    0x0000399c ldr.w r2, [pc, 0x46c]                         |     r2 = *(0x3e0c);
    0x000039a0 adds r0, 0x14                                 |     r0 += 0x14;
    0x000039a2 add r1, pc                                    |     r1 += pc;
    0x000039a4 ldr r2, [r1, r2]                              |     r2 = *((r1 + r2));
    0x000039a6 ldr r1, [r2]                                  |     r1 = *(0x3e0c);
    0x000039a8 ldr r2, [r0]                                  |     r2 = *(r0);
    0x000039aa eors r1, r2                                   |     r1 ^= r2;
    0x000039ac mov.w r2, 0                                   |     r2 = 0;
                                                             |     if (r1 != r2) {
    0x000039b0 bne.w 0x3e04                                  |         goto label_28;
                                                             |     }
    0x000039b4 mov r0, r3                                    |     r0 = r3;
    0x000039b6 add.w sp, sp, 0x16c0                          |     
    0x000039ba add sp, 0x1c                                  |     
    0x000039bc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             | label_20:
    0x000039c0 ldr.w r7, [pc, 0x4c8]                         |     
    0x000039c4 movs r2, 0                                    |     r2 = 0;
    0x000039c6 ldr.w r3, [pc, 0x4c8]                         |     r3 = *(0x00003e90);
    0x000039ca ldr r0, [sp, 0x34]                            |     r0 = var_34h_2;
    0x000039cc add r7, pc                                    |     r7 = 0x785c;
    0x000039ce add r3, pc                                    |     r3 += pc;
    0x000039d0 mov r1, r7                                    |     r1 = r7;
    0x000039d2 subs r0, 0xc                                  |     r0 -= 0xc;
    0x000039d4 str r3, [sp]                                  |     *(sp) = r3;
    0x000039d6 movs r3, 3                                    |     r3 = 3;
    0x000039d8 bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x000039dc ldr.w r3, [pc, 0x4b4]                         |     r3 = *(0x00003e94);
    0x000039e0 movs r2, 0                                    |     r2 = 0;
    0x000039e2 ldr r0, [sp, 0x34]                            |     r0 = var_34h_2;
    0x000039e4 mov r1, r7                                    |     r1 = r7;
    0x000039e6 add r3, pc                                    |     r3 += pc;
    0x000039e8 addw r0, r0, 0x22a                            |     __asm ("addw r0, r0, 0x22a");
    0x000039ec str r3, [sp]                                  |     *(sp) = r3;
    0x000039ee movs r3, 0x21                                 |     r3 = 0x21;
    0x000039f0 bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x000039f4 ldr.w r3, [pc, 0x4a0]                         |     r3 = *(0x00003e98);
    0x000039f8 mov r1, r7                                    |     r1 = r7;
    0x000039fa ldr r0, [sp, 0x34]                            |     r0 = var_34h_2;
    0x000039fc movs r2, 0                                    |     r2 = 0;
    0x000039fe add r3, pc                                    |     r3 += pc;
    0x00003a00 addw r0, r0, 0x24b                            |     __asm ("addw r0, r0, 0x24b");
    0x00003a04 str r3, [sp]                                  |     *(sp) = r3;
    0x00003a06 movw r3, 0x401                                |     r3 = 0x401;
    0x00003a0a bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003a0e ldr.w r1, [pc, 0x48c]                         |     
    0x00003a12 mov r0, r4                                    |     r0 = r4;
    0x00003a14 add r1, pc                                    |     r1 = 0x78b6;
    0x00003a16 blx 0x1c80                                    |     r0 = fcn_00001c80 ();
                                                             |     if (r0 != 0) {
    0x00003a1a cbz r0, 0x3a1e                                |         
    0x00003a1c adds r4, 1                                    |         r4++;
                                                             |     }
    0x00003a1e ldr.w r2, [pc, 0x480]                         |     
    0x00003a22 movw r1, 0x1001                               |     r1 = 0x1001;
    0x00003a26 mov r0, r4                                    |     r0 = r4;
    0x00003a28 add r2, pc                                    |     r2 = 0x78ce;
    0x00003a2a blx 0x1ca4                                    |     r0 = fcn_00001ca4 ();
    0x00003a2e mov sb, r0                                    |     sb = r0;
    0x00003a30 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003a32 beq.w 0x3b82                                  |         goto label_29;
                                                             |     }
    0x00003a36 ldr.w r0, [pc, 0x46c]                         |     
    0x00003a3a sub.w r2, sb, r4                              |     r2 = sb - r4;
    0x00003a3e mov r1, r4                                    |     r1 = r4;
    0x00003a40 movs r3, 4                                    |     r3 = 4;
    0x00003a42 ldr r7, [sp, 0x34]                            |     r7 = var_34h_2;
    0x00003a44 add r0, pc                                    |     r0 = 0x78ee;
    0x00003a46 ldr.w r5, [pc, 0x460]                         |     r5 = *(0x00003ea8);
    0x00003a4a str r0, [sp]                                  |     *(sp) = r0;
    0x00003a4c ldr r0, [sp, 0x38]                            |     r0 = var_38h;
    0x00003a4e bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003a52 ldr.w r0, [pc, 0x458]                         |     
    0x00003a56 add.w r1, sb, 1                               |     r1 = sb + 1;
    0x00003a5a movs r3, 0x81                                 |     r3 = 0x81;
    0x00003a5c movs r2, 0xf                                  |     r2 = 0xf;
    0x00003a5e add.w sb, sb, 0x11                            |     sb += 0x11;
    0x00003a62 add r5, pc                                    |     r5 += pc;
    0x00003a64 add r0, pc                                    |     r0 = 0x7916;
    0x00003a66 str r0, [sp]                                  |     *(sp) = r0;
    0x00003a68 sub.w r0, r7, 9                               |     r0 = r7 - 9;
    0x00003a6c bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003a70 movw r1, 0x1001                               |     r1 = 0x1001;
    0x00003a74 mov r2, r5                                    |     r2 = r5;
    0x00003a76 mov r0, sb                                    |     r0 = sb;
    0x00003a78 blx 0x1ca4                                    |     r0 = fcn_00001ca4 ();
    0x00003a7c mov r4, r0                                    |     r4 = r0;
    0x00003a7e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003a80 beq.w 0x3c9a                                  |         goto label_30;
                                                             |     }
    0x00003a84 ldr.w r3, [pc, 0x428]                         |     
    0x00003a88 sub.w r2, r0, sb                              |     r2 = r0 - sb;
    0x00003a8c mov r1, sb                                    |     r1 = sb;
    0x00003a8e adds r4, 1                                    |     r4++;
    0x00003a90 add.w r0, r7, 0x78                            |     r0 = r7 + 0x78;
    0x00003a94 add r3, pc                                    |     r3 = 0x7948;
    0x00003a96 str r3, [sp]                                  |     *(sp) = r3;
    0x00003a98 mov.w r3, 0x100                               |     r3 = 0x100;
    0x00003a9c bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003aa0 mov r2, r5                                    |     r2 = r5;
    0x00003aa2 movw r1, 0x1001                               |     r1 = 0x1001;
    0x00003aa6 mov r0, r4                                    |     r0 = r4;
    0x00003aa8 blx 0x1ca4                                    |     fcn_00001ca4 ();
    0x00003aac ldr.w r2, [pc, 0x404]                         |     r2 = *(0x00003eb4);
    0x00003ab0 movs r1, 0x31                                 |     r1 = 0x31;
    0x00003ab2 mov r5, r0                                    |     r5 = r0;
    0x00003ab4 mov r0, r4                                    |     r0 = r4;
    0x00003ab6 add r2, pc                                    |     r2 += pc;
    0x00003ab8 blx 0x1ca4                                    |     r0 = fcn_00001ca4 ();
    0x00003abc mov sb, r0                                    |     sb = r0;
    0x00003abe cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003ac0 beq.w 0x3d1a                                  |         goto label_31;
                                                             |     }
    0x00003ac4 ldr r2, [pc, 0x3f0]                           |     
    0x00003ac6 movs r1, 0x31                                 |     r1 = 0x31;
    0x00003ac8 mov r0, r4                                    |     r0 = r4;
    0x00003aca add r2, pc                                    |     r2 = 0x7986;
    0x00003acc blx 0x1ca4                                    |     fcn_00001ca4 ();
    0x00003ad0 ldr r2, [pc, 0x3e8]                           |     
    0x00003ad2 mov sb, r0                                    |     sb = r0;
    0x00003ad4 movs r1, 0x31                                 |     r1 = 0x31;
    0x00003ad6 mov r0, r4                                    |     r0 = r4;
    0x00003ad8 add r2, pc                                    |     r2 = 0x7998;
    0x00003ada blx 0x1ca4                                    |     r0 = fcn_00001ca4 ();
    0x00003ade cmp r0, 0                                     |     
    0x00003ae0 it ne                                         |     
                                                             |     if (r0 != 0) {
    0x00003ae2 cmpne sb, 0                                   |         __asm ("cmpne sb, 0");
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00003ae6 bne.w 0x3c22                                  |         goto label_32;
                                                             |     }
    0x00003aea ldr r3, [pc, 0x3d4]                           |     
    0x00003aec addw r0, r7, 0x1a9                            |     __asm ("addw r0, r7, 0x1a9");
    0x00003af0 ldr r1, [pc, 0x3d0]                           |     
    0x00003af2 movs r2, 0                                    |     r2 = 0;
    0x00003af4 add r3, pc                                    |     r3 = 0x79ba;
    0x00003af6 add r1, pc                                    |     r1 = 0x79be;
    0x00003af8 str r3, [sp]                                  |     *(sp) = r3;
    0x00003afa movs r3, 0x81                                 |     r3 = 0x81;
    0x00003afc bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003b00 ldr r3, [pc, 0x3c4]                           |     
    0x00003b02 subs r2, r5, r4                               |     r2 = r5 - r4;
    0x00003b04 subs r2, 1                                    |     r2--;
    0x00003b06 mov r1, r4                                    |     r1 = r4;
    0x00003b08 add.w r0, r7, 0x178                           |     r0 = r7 + 0x178;
    0x00003b0c add r3, pc                                    |     r3 = 0x79d8;
    0x00003b0e str r3, [sp]                                  |     *(sp) = r3;
    0x00003b10 movs r3, 0x31                                 |     r3 = 0x31;
    0x00003b12 bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
                                                             |     do {
    0x00003b16 adds r5, 1                                    |         r5++;
    0x00003b18 mov r0, r5                                    |         r0 = r5;
    0x00003b1a blx 0x1dd0                                    |         fcn_00001dd0 ();
    0x00003b1e ldr r3, [pc, 0x3ac]                           |         
    0x00003b20 mov r2, r0                                    |         r2 = r0;
    0x00003b22 mov r1, r5                                    |         r1 = r5;
    0x00003b24 addw r0, r7, 0x64c                            |         __asm ("addw r0, r7, 0x64c");
    0x00003b28 add r3, pc                                    |         r3 = 0x79fa;
    0x00003b2a str r3, [sp]                                  |         *(sp) = r3;
    0x00003b2c movw r3, 0x1001                               |         r3 = 0x1001;
    0x00003b30 bl 0x3230                                     |         fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003b34 ldr r3, [pc, 0x398]                           |         
    0x00003b36 add r3, pc                                    |         
    0x00003b38 ldr r3, [r3, 0xc]                             |         r3 = *(0x7a16);
    0x00003b3a b 0x3850                                      |         goto label_3;
                                                             | label_22:
    0x00003b3c ldr r0, [pc, 0x394]                           |         
    0x00003b3e add r0, pc                                    |         r0 = 0x7a16;
    0x00003b40 blx 0x1b70                                    |         g_path_get_basename ();
    0x00003b44 ldr r2, [sp, 0x30]                            |         r2 = var_30h;
    0x00003b46 mov r7, r0                                    |         r7 = r0;
    0x00003b48 ldr r3, [pc, 0x2dc]                           |         r3 = *(0x3e28);
    0x00003b4a movs r1, 1                                    |         r1 = 1;
    0x00003b4c ldr r4, [r2, r3]                              |         r4 = *((r2 + r3));
    0x00003b4e ldr r3, [pc, 0x388]                           |         
    0x00003b50 ldr r2, [pc, 0x388]                           |         
    0x00003b52 ldr r0, [r4]                                  |         r0 = *(r4);
    0x00003b54 add r3, pc                                    |         r3 = 0x7a32;
    0x00003b56 adds r3, 0x28                                 |         r3 += 0x28;
    0x00003b58 add r2, pc                                    |         r2 = 0x7a38;
    0x00003b5a str r3, [sp]                                  |         *(sp) = r3;
    0x00003b5c movs r3, 0xcc                                 |         r3 = 0xcc;
    0x00003b5e str r3, [sp, 4]                               |         var_4h_2 = r3;
    0x00003b60 mov r3, r7                                    |         r3 = r7;
    0x00003b62 blx 0x1bdc                                    |         fprintf_chk ()
    0x00003b66 ldr r0, [pc, 0x378]                           |         
    0x00003b68 movs r2, 0x31                                 |         r2 = 0x31;
    0x00003b6a ldr r3, [r4]                                  |         r3 = *(r4);
    0x00003b6c movs r1, 1                                    |         r1 = 1;
    0x00003b6e add r0, pc                                    |         r0 = 0x7a54;
    0x00003b70 blx 0x1db4                                    |         fcn_00001db4 ();
    0x00003b74 mov r0, r7                                    |         r0 = r7;
    0x00003b76 blx 0x1d14                                    |         g_hash_table_unref ();
    0x00003b7a mov r0, sb                                    |         r0 = sb;
    0x00003b7c blx 0x1cb0                                    |         fcn_00001cb0 ();
    0x00003b80 b 0x3662                                      |         goto label_4;
                                                             | label_29:
    0x00003b82 ldr r0, [pc, 0x360]                           |         
    0x00003b84 add r0, pc                                    |         r0 = 0x7a6e;
    0x00003b86 blx 0x1b70                                    |         g_path_get_basename ();
    0x00003b8a ldr r2, [sp, 0x30]                            |         r2 = var_30h;
    0x00003b8c mov r7, r0                                    |         r7 = r0;
    0x00003b8e ldr r3, [pc, 0x298]                           |         r3 = *(0x3e2a);
    0x00003b90 mov.w ip, 0xf0                                |         
    0x00003b94 movs r1, 1                                    |         r1 = 1;
    0x00003b96 ldr r4, [r2, r3]                              |         r4 = *((r2 + r3));
    0x00003b98 mov r3, r0                                    |         r3 = r0;
    0x00003b9a ldr r2, [pc, 0x34c]                           |         
    0x00003b9c ldr r0, [sp, 0x3c]                            |         r0 = var_3ch;
    0x00003b9e ldr.w lr, [r4]                                |         
    0x00003ba2 add r2, pc                                    |         r2 = 0x7a90;
    0x00003ba4 str.w ip, [sp, 4]                             |         __asm ("str.w ip, [var_4h_2]");
    0x00003ba8 str r0, [sp]                                  |         *(sp) = r0;
    0x00003baa mov r0, lr                                    |         r0 = lr;
    0x00003bac blx 0x1bdc                                    |         fprintf_chk ()
    0x00003bb0 ldr r0, [pc, 0x338]                           |         
    0x00003bb2 movs r2, 0x2a                                 |         r2 = 0x2a;
    0x00003bb4 ldr r3, [r4]                                  |         r3 = *(r4);
    0x00003bb6 movs r1, 1                                    |         r1 = 1;
    0x00003bb8 add r0, pc                                    |         r0 = 0x7aa8;
    0x00003bba blx 0x1db4                                    |         fcn_00001db4 ();
    0x00003bbe mov r0, r7                                    |         r0 = r7;
    0x00003bc0 blx 0x1d14                                    |         g_hash_table_unref ();
    0x00003bc4 b 0x3662                                      |         goto label_4;
                                                             | label_23:
    0x00003bc6 blx 0x1b58                                    |         r0 = get_debug_level ();
    0x00003bca cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00003bcc bne 0x3c54                                    |             goto label_33;
                                                             |         }
                                                             | label_6:
    0x00003bce ldr r5, [pc, 0x320]                           |         
    0x00003bd0 addw r0, r7, 0x24b                            |         __asm ("addw r0, r7, 0x24b");
    0x00003bd4 ldr r3, [pc, 0x31c]                           |         
    0x00003bd6 movs r2, 1                                    |         r2 = 1;
    0x00003bd8 add r5, pc                                    |         r5 = 0x7ace;
    0x00003bda add r3, pc                                    |         r3 = 0x7ad2;
    0x00003bdc mov r1, r5                                    |         r1 = r5;
    0x00003bde str r3, [sp]                                  |         *(sp) = r3;
    0x00003be0 movw r3, 0x401                                |         r3 = 0x401;
    0x00003be4 bl 0x3230                                     |         fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003be8 mov r2, r5                                    |         r2 = r5;
    0x00003bea mov r0, r4                                    |         r0 = r4;
    0x00003bec movw r1, 0x401                                |         r1 = 0x401;
    0x00003bf0 blx 0x1ca4                                    |         r0 = fcn_00001ca4 ();
    0x00003bf4 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00003bf6 beq.w 0x3d00                                  |             goto label_34;
                                                             |         }
    0x00003bfa adds r4, r0, 1                                |         r4 = r0 + 1;
    0x00003bfc mov r0, r4                                    |         r0 = r4;
    0x00003bfe blx 0x1dd0                                    |         fcn_00001dd0 ();
    0x00003c02 ldr r3, [pc, 0x2f4]                           |         
    0x00003c04 mov r2, r0                                    |         r2 = r0;
    0x00003c06 mov r1, r4                                    |         r1 = r4;
    0x00003c08 addw r0, r7, 0x64c                            |         __asm ("addw r0, r7, 0x64c");
    0x00003c0c add r3, pc                                    |         r3 = 0x7b0a;
    0x00003c0e str r3, [sp]                                  |         *(sp) = r3;
    0x00003c10 movw r3, 0x1001                               |         r3 = 0x1001;
    0x00003c14 bl 0x3230                                     |         fcn_00003230 (r0, r1, r2, r3, r4);
                                                             | label_7:
    0x00003c18 addw r0, r7, 0x64c                            |         __asm ("addw r0, r7, 0x64c");
    0x00003c1c blx 0x1e00                                    |         fcn_00001e00 ();
    0x00003c20 b 0x3842                                      |         goto label_5;
                                                             | label_32:
    0x00003c22 ldr r3, [pc, 0x2d8]                           |         
    0x00003c24 sub.w r2, r0, sb                              |         r2 = r0 - sb;
    0x00003c28 add.w r1, sb, 1                               |         r1 = sb + 1;
    0x00003c2c addw r0, r7, 0x1a9                            |         __asm ("addw r0, r7, 0x1a9");
    0x00003c30 subs r2, 1                                    |         r2--;
    0x00003c32 add r3, pc                                    |         r3 = 0x7b34;
    0x00003c34 str r3, [sp]                                  |         *(sp) = r3;
    0x00003c36 movs r3, 0x81                                 |         r3 = 0x81;
    0x00003c38 bl 0x3230                                     |         fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003c3c ldr r3, [pc, 0x2c0]                           |         
    0x00003c3e sub.w r2, sb, r4                              |         r2 = sb - r4;
    0x00003c42 mov r1, r4                                    |         r1 = r4;
    0x00003c44 add.w r0, r7, 0x178                           |         r0 = r7 + 0x178;
    0x00003c48 add r3, pc                                    |         r3 = 0x7b4c;
    0x00003c4a str r3, [sp]                                  |         *(sp) = r3;
    0x00003c4c movs r3, 0x31                                 |         r3 = 0x31;
    0x00003c4e bl 0x3230                                     |         fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003c52 b 0x3b16                                      |         
                                                             |     } while (1);
                                                             | label_33:
    0x00003c54 ldr r0, [pc, 0x2ac]                           |     
    0x00003c56 add r0, pc                                    |     r0 = 0x7b5e;
    0x00003c58 blx 0x1b70                                    |     g_path_get_basename ();
    0x00003c5c ldr r2, [sp, 0x30]                            |     r2 = var_30h;
    0x00003c5e mov r5, r0                                    |     r5 = r0;
    0x00003c60 ldr r3, [pc, 0x218]                           |     r3 = *(0x3e7c);
    0x00003c62 movs r1, 1                                    |     r1 = 1;
    0x00003c64 ldr.w sl, [r2, r3]                            |     sl = *((r2 + r3));
    0x00003c68 ldr r3, [pc, 0x29c]                           |     
    0x00003c6a ldr r2, [pc, 0x2a0]                           |     
    0x00003c6c add r3, pc                                    |     r3 = 0x7b78;
    0x00003c6e adds r3, 0x3c                                 |     r3 += 0x3c;
    0x00003c70 add r2, pc                                    |     r2 = 0x7b82;
    0x00003c72 str r3, [sp]                                  |     *(sp) = r3;
    0x00003c74 movs r3, 0xa9                                 |     r3 = 0xa9;
    0x00003c76 ldr.w r0, [sl]                                |     r0 = *(sl);
    0x00003c7a str r3, [sp, 4]                               |     var_4h_2 = r3;
    0x00003c7c mov r3, r5                                    |     r3 = r5;
    0x00003c7e blx 0x1bdc                                    |     fprintf_chk ()
    0x00003c82 ldr r0, [pc, 0x28c]                           |     
    0x00003c84 movs r2, 0x27                                 |     r2 = 0x27;
    0x00003c86 ldr.w r3, [sl]                                |     r3 = *(sl);
    0x00003c8a movs r1, 1                                    |     r1 = 1;
    0x00003c8c add r0, pc                                    |     r0 = 0x7ba2;
    0x00003c8e blx 0x1db4                                    |     fcn_00001db4 ();
    0x00003c92 mov r0, r5                                    |     r0 = r5;
    0x00003c94 blx 0x1d14                                    |     g_hash_table_unref ();
    0x00003c98 b 0x3bce                                      |     goto label_6;
                                                             | label_30:
    0x00003c9a mov r0, sb                                    |     r0 = sb;
    0x00003c9c ldr r5, [pc, 0x274]                           |     
    0x00003c9e blx 0x1dd0                                    |     fcn_00001dd0 ();
    0x00003ca2 ldr r3, [pc, 0x274]                           |     
    0x00003ca4 mov r2, r0                                    |     r2 = r0;
    0x00003ca6 mov r1, sb                                    |     r1 = sb;
    0x00003ca8 add.w r0, r7, 0x78                            |     r0 = r7 + 0x78;
    0x00003cac add r5, pc                                    |     r5 = 0x7bc4;
    0x00003cae add r3, pc                                    |     r3 = 0x7bcc;
    0x00003cb0 str r3, [sp]                                  |     *(sp) = r3;
    0x00003cb2 mov.w r3, 0x100                               |     r3 = 0x100;
    0x00003cb6 bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003cba ldr r3, [pc, 0x260]                           |     
    0x00003cbc mov r2, r4                                    |     r2 = r4;
    0x00003cbe mov r1, r5                                    |     r1 = r5;
    0x00003cc0 addw r0, r7, 0x1a9                            |     __asm ("addw r0, r7, 0x1a9");
    0x00003cc4 add r3, pc                                    |     r3 = 0x7be6;
    0x00003cc6 str r3, [sp]                                  |     *(sp) = r3;
    0x00003cc8 movs r3, 0x81                                 |     r3 = 0x81;
    0x00003cca bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003cce ldr r3, [pc, 0x250]                           |     
    0x00003cd0 mov r2, r4                                    |     r2 = r4;
    0x00003cd2 mov r1, r5                                    |     r1 = r5;
    0x00003cd4 add.w r0, r7, 0x178                           |     r0 = r7 + 0x178;
    0x00003cd8 add r3, pc                                    |     
    0x00003cda str r3, [sp]                                  |     *(sp) = r3;
    0x00003cdc movs r3, 0x31                                 |     r3 = 0x31;
    0x00003cde bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003ce0 invalid                                       |     
    0x00003ce4 mov r2, r4                                    |     r2 = r4;
    0x00003ce6 mov r1, r5                                    |     r1 = r5;
    0x00003ce8 addw r0, r7, 0x64c                            |     __asm ("addw r0, r7, 0x64c");
    0x00003cec add r3, pc                                    |     r3 = 0xb8ee;
    0x00003cee str r3, [sp]                                  |     *(sp) = r3;
    0x00003cf0 movw r3, 0x1001                               |     r3 = 0x1001;
    0x00003cf4 bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003cf8 ldr r3, [pc, 0x22c]                           |     
    0x00003cfa add r3, pc                                    |     
    0x00003cfc ldr r3, [r3, 0xc]                             |     r3 = *(0x7c32);
    0x00003cfe b 0x3850                                      |     goto label_3;
                                                             | label_34:
    0x00003d00 ldr r3, [pc, 0x228]                           |     
    0x00003d02 mov r2, r0                                    |     r2 = r0;
    0x00003d04 ldr r1, [pc, 0x228]                           |     
    0x00003d06 addw r0, r7, 0x64c                            |     __asm ("addw r0, r7, 0x64c");
    0x00003d0a add r3, pc                                    |     r3 = 0x7c3a;
    0x00003d0c str r3, [sp]                                  |     *(sp) = r3;
    0x00003d0e add r1, pc                                    |     r1 = 0x7c42;
    0x00003d10 movw r3, 0x1001                               |     r3 = 0x1001;
    0x00003d14 bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003d18 b 0x3c18                                      |     goto label_7;
                                                             | label_31:
    0x00003d1a ldr r5, [pc, 0x218]                           |     
    0x00003d1c mov r2, r0                                    |     r2 = r0;
    0x00003d1e ldr r3, [pc, 0x218]                           |     
    0x00003d20 addw r0, r7, 0x1a9                            |     __asm ("addw r0, r7, 0x1a9");
    0x00003d24 add r5, pc                                    |     r5 = 0x7c5e;
    0x00003d26 add r3, pc                                    |     r3 = 0x7c64;
    0x00003d28 mov r1, r5                                    |     r1 = r5;
    0x00003d2a str r3, [sp]                                  |     *(sp) = r3;
    0x00003d2c movs r3, 0x81                                 |     r3 = 0x81;
    0x00003d2e bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003d32 ldr r3, [pc, 0x208]                           |     
    0x00003d34 mov r2, sb                                    |     r2 = sb;
    0x00003d36 mov r1, r5                                    |     r1 = r5;
    0x00003d38 add.w r0, r7, 0x178                           |     r0 = r7 + 0x178;
    0x00003d3c add r3, pc                                    |     r3 = 0x7c7e;
    0x00003d3e str r3, [sp]                                  |     *(sp) = r3;
    0x00003d40 movs r3, 0x31                                 |     r3 = 0x31;
    0x00003d42 bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003d46 mov r0, r4                                    |     r0 = r4;
    0x00003d48 blx 0x1dd0                                    |     fcn_00001dd0 ();
    0x00003d4c ldr r3, [pc, 0x1f0]                           |     
    0x00003d4e mov r2, r0                                    |     r2 = r0;
    0x00003d50 mov r1, r4                                    |     r1 = r4;
    0x00003d52 addw r0, r7, 0x64c                            |     __asm ("addw r0, r7, 0x64c");
    0x00003d56 add r3, pc                                    |     r3 = 0x7c9a;
    0x00003d58 str r3, [sp]                                  |     *(sp) = r3;
    0x00003d5a movw r3, 0x1001                               |     r3 = 0x1001;
    0x00003d5e bl 0x3230                                     |     fcn_00003230 (r0, r1, r2, r3, r4);
    0x00003d62 ldr r3, [pc, 0x1e0]                           |     
    0x00003d64 add r3, pc                                    |     
    0x00003d66 ldr r3, [r3, 0xc]                             |     r3 = *(0x7cba);
    0x00003d68 b 0x3850                                      |     goto label_3;
                                                             |     do {
                                                             | label_9:
    0x00003d6a movs r3, 0                                    |         r3 = 0;
    0x00003d6c b 0x3994                                      |         goto label_8;
                                                             | label_24:
    0x00003d6e blx 0x1af8                                    |         get_now_timestamp_bsd ();
    0x00003d72 ldrb.w r2, [sp, 0x201]                        |         r2 = var_201h;
    0x00003d76 mov r3, r0                                    |         r3 = r0;
    0x00003d78 str r4, [sp, 8]                               |         var_8h_2 = r4;
                                                             |         if (r2 == 0) {
    0x00003d7a cbz r2, 0x3dc6                                |             goto label_35;
                                                             |         }
    0x00003d7c ldr r2, [pc, 0x1c8]                           |         
    0x00003d7e addw r4, r7, 0x64c                            |         __asm ("addw r4, r7, 0x64c");
    0x00003d82 str r4, [sp, 0x18]                            |         var_18h_2 = r4;
    0x00003d84 addw r4, r7, 0x1a9                            |         __asm ("addw r4, r7, 0x1a9");
    0x00003d88 str r4, [sp, 0x14]                            |         var_14h_2 = r4;
    0x00003d8a add.w r4, r7, 0x178                           |         r4 = r7 + 0x178;
    0x00003d8e add r2, pc                                    |         r2 = 0x7cda;
    0x00003d90 adds r7, 0x78                                 |         r7 += 0x78;
    0x00003d92 strd r2, r3, [sp]                             |         __asm ("strd r2, r3, [sp]");
    0x00003d96 mov r1, r8                                    |         r1 = r8;
    0x00003d98 mov.w r3, -1                                  |         r3 = -1;
    0x00003d9c mov r0, r6                                    |         r0 = r6;
    0x00003d9e movs r2, 1                                    |         r2 = 1;
    0x00003da0 str r4, [sp, 0x10]                            |         var_10h = r4;
    0x00003da2 str r7, [sp, 0xc]                             |         var_ch = r7;
    0x00003da4 blx 0x1ddc                                    |         r0 = fcn_00001ddc ();
    0x00003da8 mov r3, r0                                    |         r3 = r0;
    0x00003daa b 0x3994                                      |         goto label_8;
                                                             | label_16:
    0x00003dac subs.w r3, r8, 1                              |         r3 = r8 - 1;
    0x00003db0 bmi 0x3d6a                                    |         
                                                             |     } while (r3 < r8);
    0x00003db2 add r6, r8                                    |     r6 += r8;
    0x00003db4 b 0x3dba                                      |     goto label_36;
                                                             | label_10:
    0x00003db6 subs r3, 1                                    |     r3--;
                                                             |     if (r3 <= 1) {
    0x00003db8 blo 0x3d6a                                    |         goto label_9;
                                                             |     }
                                                             | label_36:
    0x00003dba ldrb r2, [r6, -0x1]!                          |     r2 = *((r6 -= 0x1));
    0x00003dbe cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x00003dc0 beq 0x3db6                                    |         goto label_10;
                                                             |     }
    0x00003dc2 adds r3, 1                                    |     r3++;
    0x00003dc4 b 0x3994                                      |     goto label_8;
                                                             | label_35:
    0x00003dc6 ldr r2, [pc, 0x184]                           |     
    0x00003dc8 addw r4, r7, 0x64c                            |     __asm ("addw r4, r7, 0x64c");
    0x00003dcc str r4, [sp, 0x14]                            |     var_14h_2 = r4;
    0x00003dce add.w r4, r7, 0x178                           |     r4 = r7 + 0x178;
    0x00003dd2 adds r7, 0x78                                 |     r7 += 0x78;
    0x00003dd4 mov r1, r8                                    |     r1 = r8;
    0x00003dd6 add r2, pc                                    |     r2 = 0x7d28;
    0x00003dd8 mov r0, r6                                    |     r0 = r6;
    0x00003dda strd r2, r3, [sp]                             |     __asm ("strd r2, r3, [sp]");
    0x00003dde mov.w r3, -1                                  |     r3 = -1;
    0x00003de2 movs r2, 1                                    |     r2 = 1;
    0x00003de4 str r4, [sp, 0x10]                            |     var_10h = r4;
    0x00003de6 str r7, [sp, 0xc]                             |     var_ch = r7;
    0x00003de8 blx 0x1ddc                                    |     r0 = fcn_00001ddc ();
    0x00003dec mov r3, r0                                    |     r3 = r0;
    0x00003dee b 0x3994                                      |     goto label_8;
                                                             | label_27:
    0x00003df0 ldr r3, [pc, 0x15c]                           |     
    0x00003df2 add r3, pc                                    |     r3 = 0x7d46;
    0x00003df4 b 0x38b2                                      |     goto label_11;
                                                             | label_26:
    0x00003df6 ldr.w ip, [pc, 0x15c]                         |     ip = *(0x00003f54);
    0x00003dfa add ip, pc                                    |     
    0x00003dfc b 0x38a0                                      |     goto label_12;
                                                             | label_25:
    0x00003dfe ldr r5, [pc, 0x158]                           |     
    0x00003e00 add r5, pc                                    |     r5 = 0x7d5e;
    0x00003e02 b 0x388c                                      |     goto label_13;
                                                             | label_28:
    0x00003e04 blx 0x1cec                                    |     fcn_00001cec ();
    0x00003e08 ldr r0, [pc, 0x330]                           |     r0 = *(0x413c);
    0x00003e0a movs r0, r0                                   |     
    0x00003e0c lsls r0, r5, 5                                |     r0 = r5 << 5;
    0x00003e0e movs r0, r0                                   |     
    0x00003e10 ldr r0, [pc, 0x2d8]                           |     r0 = *(0x40ec);
    0x00003e12 movs r0, r0                                   |     
    0x00003e14 ldr r5, [pc, 0x2c0]                           |     r5 = *(0x40d8);
    0x00003e16 movs r0, r0                                   |     
    0x00003e18 movs r6, 0xec                                 |     r6 = 0xec;
    0x00003e1a movs r0, r0                                   |     
    0x00003e1c ldr r5, [pc, 0x228]                           |     r5 = *(0x4048);
    0x00003e1e movs r0, r0                                   |     
    0x00003e20 ldr r5, [pc, 0x218]                           |     r5 = *(0x403c);
    0x00003e22 movs r0, r0                                   |     
    0x00003e24 movs r6, 0xdc                                 |     r6 = 0xdc;
    0x00003e26 movs r0, r0                                   |     
    0x00003e28 lsls r4, r6, 5                                |     r4 = r6 << 5;
    0x00003e2a movs r0, r0                                   |     
    0x00003e2c ldr r5, [pc, 0x18]                            |     r5 = *(0x3e48);
    0x00003e2e movs r0, r0                                   |     
    0x00003e30 movs r4, 0x46                                 |     r4 = 0x46;
    0x00003e32 movs r0, r0                                   |     
    0x00003e34 adds r2, r5, 3                                |     r2 = r5 + 3;
    0x00003e36 movs r0, r0                                   |     
    0x00003e38 movs r2, 0xf0                                 |     r2 = 0xf0;
    0x00003e3a movs r0, r0                                   |     
    0x00003e3c movs r2, 0xf2                                 |     r2 = 0xf2;
    0x00003e3e movs r0, r0                                   |     
    0x00003e40 movs r3, 2                                    |     r3 = 2;
    0x00003e42 movs r0, r0                                   |     
    0x00003e44 movs r2, 0x9a                                 |     r2 = 0x9a;
    0x00003e46 movs r0, r0                                   |     
    0x00003e48 movs r2, 0xce                                 |     r2 = 0xce;
    0x00003e4a movs r0, r0                                   |     
    0x00003e4c movs r2, 0xba                                 |     r2 = 0xba;
    0x00003e4e movs r0, r0                                   |     
    0x00003e50 movs r2, 0xa0                                 |     r2 = 0xa0;
    0x00003e52 movs r0, r0                                   |     
    0x00003e54 movs r2, 0x84                                 |     r2 = 0x84;
    0x00003e56 movs r0, r0                                   |     
    0x00003e58 movs r2, 0x68                                 |     r2 = 0x68;
    0x00003e5a movs r0, r0                                   |     
    0x00003e5c movs r2, 0x58                                 |     r2 = 0x58;
    0x00003e5e movs r0, r0                                   |     
    0x00003e60 movs r2, 0x4a                                 |     r2 = 0x4a;
    0x00003e62 movs r0, r0                                   |     
    0x00003e64 adds r2, r5, 4                                |     r2 = r5 + 4;
    0x00003e66 movs r0, r0                                   |     
    0x00003e68 movs r2, 0x1a                                 |     r2 = 0x1a;
    0x00003e6a movs r0, r0                                   |     
    0x00003e6c ldr r3, [pc, 0xa0]                            |     r3 = *(0x3f10);
    0x00003e6e movs r0, r0                                   |     
    0x00003e70 movs r1, 0xf6                                 |     r1 = 0xf6;
    0x00003e72 movs r0, r0                                   |     
    0x00003e74 movs r1, 0xf8                                 |     r1 = 0xf8;
    0x00003e76 movs r0, r0                                   |     
    0x00003e78 subs r2, r2, 4                                |     r2 -= 4;
    0x00003e7a movs r0, r0                                   |     
    0x00003e7c lsls r0, r0, 6                                |     r0 <<= 6;
    0x00003e7e movs r0, r0                                   |     
    0x00003e80 asrs r4, r0, 0x10                             |     r4 = r0 >> 0x10;
    0x00003e82 movs r0, r0                                   |     
    0x00003e84 movs r1, 0x38                                 |     r1 = 0x38;
    0x00003e86 movs r0, r0                                   |     
    0x00003e88 add lr, r8                                    |     lr += r8;
    0x00003e8a movs r0, r0                                   |     
    0x00003e8c adds r4, r5, r2                               |     r4 = r5 + r2;
    0x00003e8e movs r0, r0                                   |     
    0x00003e90 subs r2, r3, 7                                |     r2 = r3 - 7;
    0x00003e92 movs r0, r0                                   |     
    0x00003e94 subs r2, r1, 7                                |     r2 = r1 - 7;
    0x00003e96 movs r0, r0                                   |     
    0x00003e98 subs r6, r7, r4                               |     r6 = r7 - r4;
    0x00003e9a movs r0, r0                                   |     
    0x00003e9c subs r0, r2, 6                                |     r0 = r2 - 6;
    0x00003e9e movs r0, r0                                   |     
    0x00003ea0 adds r0, r2, r5                               |     r0 = r2 + r5;
    0x00003ea2 movs r0, r0                                   |     
    0x00003ea4 movs r0, 0x3c                                 |     r0 = 0x3c;
    0x00003ea6 movs r0, r0                                   |     
    0x00003ea8 asrs r2, r7, 0xb                              |     r2 = r7 >> 0xb;
    0x00003eaa movs r0, r0                                   |     
    0x00003eac movs r0, 0x20                                 |     r0 = 0x20;
    0x00003eae movs r0, r0                                   |     
    0x00003eb0 subs r4, r6, 5                                |     r4 = r6 - 5;
    0x00003eb2 movs r0, r0                                   |     
    0x00003eb4 subs r2, r3, 7                                |     r2 = r3 - 7;
    0x00003eb6 movs r0, r0                                   |     
    0x00003eb8 subs r6, r2, 5                                |     r6 = r2 - 5;
    0x00003eba movs r0, r0                                   |     
    0x00003ebc subs r4, r7, 6                                |     r4 = r7 - 6;
    0x00003ebe movs r0, r0                                   |     
    0x00003ec0 subs r0, r4, 4                                |     r0 = r4 - 4;
    0x00003ec2 movs r0, r0                                   |     
    0x00003ec4 asrs r2, r0, 0x1e                             |     r2 = r0 >> 0x1e;
    0x00003ec6 movs r0, r0                                   |     
    0x00003ec8 subs r4, r0, 4                                |     r4 = r0 - 4;
    0x00003eca movs r0, r0                                   |     
    0x00003ecc subs r0, r5, 4                                |     r0 = r5 - 4;
    0x00003ece movs r0, r0                                   |     
    0x00003ed0 ldr r0, [pc, 0xf8]                            |     r0 = *(0x3fcc);
    0x00003ed2 movs r0, r0                                   |     
    0x00003ed4 adds r2, r7, 3                                |     r2 = r7 + 3;
    0x00003ed6 movs r0, r0                                   |     
    0x00003ed8 movs r1, 0x7c                                 |     r1 = 0x7c;
    0x00003eda movs r0, r0                                   |     
    0x00003edc asrs r4, r5, 6                                |     r4 = r5 >> 6;
    0x00003ede movs r0, r0                                   |     
    0x00003ee0 subs r6, r1, 1                                |     r6 = r1 - 1;
    0x00003ee2 movs r0, r0                                   |     
    0x00003ee4 adds r4, r6, 2                                |     r4 = r6 + 2;
    0x00003ee6 movs r0, r0                                   |     
    0x00003ee8 asrs r2, r4, 5                                |     r2 = r4 >> 5;
    0x00003eea movs r0, r0                                   |     
    0x00003eec subs r4, r3, 2                                |     r4 = r3 - 2;
    0x00003eee movs r0, r0                                   |     
    0x00003ef0 adds r0, r1, 7                                |     r0 = r1 + 7;
    0x00003ef2 movs r0, r0                                   |     
    0x00003ef4 adds r2, r4, r5                               |     r2 = r4 + r5;
    0x00003ef6 movs r0, r0                                   |     
    0x00003ef8 subs r4, r0, 1                                |     r4 = r0 - 1;
    0x00003efa movs r0, r0                                   |     
    0x00003efc adds r2, r4, 7                                |     r2 = r4 + 7;
    0x00003efe movs r0, r0                                   |     
    0x00003f00 adds r0, r1, 7                                |     r0 = r1 + 7;
    0x00003f02 movs r0, r0                                   |     
    0x00003f04 subs r2, r4, r7                               |     r2 = r4 - r7;
    0x00003f06 movs r0, r0                                   |     
    0x00003f08 movs r0, 0x64                                 |     r0 = 0x64;
    0x00003f0a movs r0, r0                                   |     
    0x00003f0c asrs r4, r3, 3                                |     r4 = r3 >> 3;
    0x00003f0e movs r0, r0                                   |     
    0x00003f10 adds r4, r3, 6                                |     r4 = r3 + 6;
    0x00003f12 movs r0, r0                                   |     
    0x00003f14 asrs r4, r1, 0x17                             |     r4 = r1 >> 0x17;
    0x00003f16 movs r0, r0                                   |     
    0x00003f18 adds r2, r3, 5                                |     r2 = r3 + 5;
    0x00003f1a movs r0, r0                                   |     
    0x00003f1c adds r0, r2, 5                                |     r0 = r2 + 5;
    0x00003f1e movs r0, r0                                   |     
    0x00003f20 adds r0, r7, 4                                |     r0 = r7 + 4;
    0x00003f22 movs r0, r0                                   |     
    0x00003f24 adds r4, r4, 5                                |     r4 += 5;
    0x00003f26 movs r0, r0                                   |     
    0x00003f28 mov r2, pc                                    |     r2 = pc;
    0x00003f2a movs r0, r0                                   |     
    0x00003f2c adds r6, r0, 5                                |     r6 = r0 + 5;
    0x00003f2e movs r0, r0                                   |     
    0x00003f30 asrs r2, r5, 0x15                             |     r2 = r5 >> 0x15;
    0x00003f32 movs r0, r0                                   |     
    0x00003f34 asrs r4, r2, 0x15                             |     r4 = r2 >> 0x15;
    0x00003f36 movs r0, r0                                   |     
    0x00003f38 adds r6, r5, 3                                |     r6 = r5 + 3;
    0x00003f3a movs r0, r0                                   |     
    0x00003f3c adds r4, r2, 3                                |     r4 = r2 + 3;
    0x00003f3e movs r0, r0                                   |     
    0x00003f40 adds r2, r7, 3                                |     r2 = r7 + 3;
    0x00003f42 movs r0, r0                                   |     
    0x00003f44 mov r0, r2                                    |     r0 = r2;
    0x00003f46 movs r0, r0                                   |     
    0x00003f48 adds r2, r5, 5                                |     r2 = r5 + 5;
    0x00003f4a movs r0, r0                                   |     
    0x00003f4c adds r2, r7, 4                                |     r2 = r7 + 4;
    0x00003f4e movs r0, r0                                   |     
    0x00003f50 subs r6, r5, r6                               |     r6 = r5 - r6;
    0x00003f52 movs r0, r0                                   |     
    0x00003f54 subs r6, r4, r6                               |     r6 = r4 - r6;
    0x00003f56 movs r0, r0                                   |     
    0x00003f58 subs r0, r4, r6                               |     r0 = r4 - r6;
    0x00003f5a movs r0, r0                                   |     
                                                             | }

[*] Function fprintf used 67 times loggen