[*] Binary protection state of mkfs.ext3

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


[*] Function strcpy tear down of mkfs.ext3

    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0xa4b8 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000a4b8 ()                                          | void fcn_0000a4b8 (int16_t arg_0h, int16_t arg_4h, int16_t arg_5ch, int16_t arg_64h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_70h, int16_t arg_74h, int16_t c, int16_t arg_7ch, int16_t arg_80h, int16_t arg_84h, int16_t arg_88h, int16_t arg_8ch, int16_t arg_90h, int16_t arg_94h, int16_t arg_9ch, int16_t arg_9eh, int16_t arg_a0h, int16_t arg_b4h, int16_t arg_b6h, int16_t arg_114h, int16_t arg_116h, int16_t arg_11ch, int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_38h;
                                                                     |     int16_t var_11ch;
                                                                     |     int16_t var_0h_2;
                                                                     |     int16_t var_4h_2;
                                                                     |     int16_t var_8h_2;
                                                                     |     int16_t var_ch_2;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_2ch;
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     char * s2;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_40h;
                                                                     |     int16_t var_44h;
                                                                     |     int16_t var_48h;
                                                                     |     int16_t var_4ch;
                                                                     |     int16_t var_50h;
                                                                     |     int16_t var_54h;
                                                                     |     int16_t var_58h;
                                                                     |     int16_t var_5ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000a4b8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000a4bc sub sp, 0x124                                         |     
    0x0000a4be ldr.w r5, [pc, 0xa9c]                                 |     r5 = *(0x0000af5c);
    0x0000a4c2 mov sl, r0                                            |     sl = r0;
    0x0000a4c4 ldr.w r4, [pc, 0xa98]                                 |     r4 = *(0x0000af60);
    0x0000a4c8 ldr.w r2, [pc, 0xa98]                                 |     
    0x0000a4ca cmp r2, 0x98                                          |     
    0x0000a4cc add r5, pc                                            |     r5 += pc;
    0x0000a4ce str r5, [sp, 0x38]                                    |     var_38h = r5;
    0x0000a4d0 add r4, pc                                            |     r4 += pc;
    0x0000a4d2 ldr.w r3, [pc, 0xa94]                                 |     r3 = *(0xaf6a);
    0x0000a4d6 ldr r2, [r4, r2]                                      |     r2 = *((r4 + r2));
    0x0000a4d8 mov r4, r1                                            |     r4 = r1;
    0x0000a4da ldr.w r1, [pc, 0xa90]                                 |     
    0x0000a4de ldr r2, [r2]                                          |     r2 = *(0xaf64);
    0x0000a4e0 str r2, [sp, 0x11c]                                   |     var_11ch = r2;
    0x0000a4e2 mov.w r2, 0                                           |     r2 = 0;
    0x0000a4e6 movs r2, 0                                            |     r2 = 0;
    0x0000a4e8 ldr r6, [r5, r3]                                      |     r6 = *((r5 + r3));
    0x0000a4ea add r1, pc                                            |     r1 = 0x1545c;
    0x0000a4ec ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a4ee bl 0x9a48                                             |     r0 = fcn_00009a48 (r0, r1, r2, r3, r4);
    0x0000a4f2 mov fp, r0                                            |     
    0x0000a4f4 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a4f6 beq.w 0xa82a                                          |         goto label_2;
                                                                     |     }
    0x0000a4fa ldr.w r3, [sl, 0x10]                                  |     r3 = *((sl + 0x10));
    0x0000a4fe ldr r3, [r3, 0x60]                                    |     r3 = *((r3 + 0x60));
    0x0000a500 lsls r3, r3, 0x19                                     |     r3 <<= 0x19;
                                                                     |     if (r3 >= r3) {
    0x0000a502 bpl.w 0xa822                                          |         goto label_21;
                                                                     |     }
    0x0000a504 strh r6, [r1, 0xc]                                    |     *((r1 + 0xc)) = r6;
    0x0000a506 ldr.w r1, [pc, 0xa68]                                 |     
    0x0000a50a movs r2, 0                                            |     r2 = 0;
    0x0000a50c ldr.w r5, [pc, 0xa64]                                 |     r5 = *(0x0000af74);
    0x0000a510 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a512 add r1, pc                                            |     
    0x0000a514 bl 0x98d0                                             |     fcn_000098d0 (r0, r1, r2, r3, r4, r5, r6);
    0x0000a516 invalid                                               |     
    0x0000a51a subs r4, r3, r1                                       |     r4 = r3 - r1;
    0x0000a51c add r5, pc                                            |     r5 += pc;
    0x0000a51e str r0, [r5]                                          |     *(r5) = r0;
    0x0000a520 movs r2, 0                                            |     r2 = 0;
    0x0000a522 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a524 add r1, pc                                            |     r1 = 0x1f9b0;
    0x0000a526 bl 0x98d0                                             |     fcn_000098d0 (r0, r1, r2, r3, r4, r5, r6);
    0x0000a52a ldr.w r1, [pc, 0xa50]                                 |     
    0x0000a52e movs r2, 0x3f                                         |     r2 = 0x3f;
    0x0000a530 str r0, [r5, 4]                                       |     *((r5 + 4)) = r0;
    0x0000a532 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a534 add r1, pc                                            |     r1 = 0x154b6;
    0x0000a536 bl 0x98d0                                             |     fcn_000098d0 (r0, r1, r2, r3, r4, r5, r6);
    0x0000a53a ldr.w r1, [pc, 0xa44]                                 |     
    0x0000a53e movs r2, 0                                            |     r2 = 0;
    0x0000a540 str.w r0, [sl, 0x5c]                                  |     __asm ("str.w r0, [sl, 0x5c]");
    0x0000a544 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a546 add r1, pc                                            |     r1 = 0x154cc;
    0x0000a548 bl 0x98d0                                             |     fcn_000098d0 (r0, r1, r2, r3, r4, r5, r6);
    0x0000a54c ldr.w r2, [pc, 0xa34]                                 |     
    0x0000a550 ldr.w r1, [pc, 0xa34]                                 |     
    0x0000a552 subs r4, r6, r0                                       |     r4 = r6 - r0;
    0x0000a554 str r0, [r5, 8]                                       |     *((r5 + 8)) = r0;
    0x0000a556 add r2, pc                                            |     r2 = 0x154de;
    0x0000a558 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a55a add r1, pc                                            |     r1 = 0x154e6;
    0x0000a55c bl 0x9808                                             |     fcn_00009808 (r0, r1, r2);
    0x0000a560 ldr.w r3, [sl, 0x10]                                  |     r3 = *((sl + 0x10));
    0x0000a564 mov r7, r0                                            |     r7 = r0;
    0x0000a566 ldr r1, [r3, 0x18]                                    |     r1 = *((r3 + 0x18));
    0x0000a568 blx 0x314c                                            |     fcn_0000314c ();
    0x0000a56c strd r0, r1, [r5, 0x10]                               |     __asm ("strd r0, r1, [r5, 0x10]");
    0x0000a570 mov r0, r7                                            |     r0 = r7;
    0x0000a572 ldr.w r7, [pc, 0xa18]                                 |     
    0x0000a576 blx 0x3098                                            |     fcn_00003098 ();
    0x0000a57a ldr.w r1, [pc, 0xa14]                                 |     
    0x0000a57e add r7, pc                                            |     r7 = 0x15510;
    0x0000a580 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a582 mov r2, r7                                            |     r2 = r7;
    0x0000a584 add r1, pc                                            |     r1 = 0x1551a;
    0x0000a586 bl 0x9808                                             |     fcn_00009808 (r0, r1, r2);
    0x0000a58a ldr.w r3, [sl, 0x10]                                  |     r3 = *((sl + 0x10));
    0x0000a58e mov r8, r0                                            |     r8 = r0;
    0x0000a590 ldr r1, [r3, 0x18]                                    |     r1 = *((r3 + 0x18));
    0x0000a592 blx 0x314c                                            |     fcn_0000314c ();
    0x0000a596 strd r0, r1, [r5, 0x18]                               |     __asm ("strd r0, r1, [r5, 0x18]");
    0x0000a59a mov r0, r8                                            |     r0 = r8;
    0x0000a59c blx 0x3098                                            |     fcn_00003098 ();
    0x0000a5a0 ldr.w r1, [pc, 0x9f0]                                 |     
    0x0000a5a4 mov r2, r7                                            |     r2 = r7;
    0x0000a5a6 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a5a8 add r1, pc                                            |     r1 = 0x15540;
    0x0000a5aa bl 0x9808                                             |     fcn_00009808 (r0, r1, r2);
    0x0000a5ae ldr.w r3, [sl, 0x10]                                  |     r3 = *((sl + 0x10));
    0x0000a5b0 adds r0, 0x10                                         |     r0 += 0x10;
    0x0000a5b2 mov r5, r0                                            |     r5 = r0;
    0x0000a5b4 ldr r1, [r3, 0x18]                                    |     r1 = *((r3 + 0x18));
    0x0000a5b6 blx 0x314c                                            |     r0 = fcn_0000314c ();
    0x0000a5ba mov r3, r0                                            |     r3 = r0;
    0x0000a5bc mov r0, r5                                            |     r0 = r5;
    0x0000a5be str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0000a5c0 blx 0x3098                                            |     fcn_00003098 ();
    0x0000a5c4 ldr.w r1, [pc, 0x9d0]                                 |     
    0x0000a5c8 movs r2, 0                                            |     r2 = 0;
    0x0000a5ca ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a5cc add r1, pc                                            |     r1 = 0x15568;
    0x0000a5ce bl 0x9a48                                             |     r0 = fcn_00009a48 (r0, r1, r2, r3, r4);
    0x0000a5d2 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000a5d4 bne.w 0xa86e                                          |         goto label_22;
                                                                     |     }
    0x0000a5d8 movs r3, 0                                            |     r3 = 0;
    0x0000a5da str r3, [sp, 0x24]                                    |     var_24h = r3;
    0x0000a5dc str r3, [sp, 0x30]                                    |     var_0h = r3;
                                                                     | label_3:
    0x0000a5de ldr.w r3, [pc, 0x9bc]                                 |     r3 = *(0x0000af9c);
    0x0000a5e2 ldr r7, [sp, 0x20]                                    |     r7 = var_20h;
    0x0000a5e4 add r3, pc                                            |     r3 += pc;
    0x0000a5e6 ldrd r4, r5, [r3, 0x18]                               |     __asm ("ldrd r4, r5, [r3, 0x18]");
                                                                     |     if (r7 != 0) {
    0x0000a5ea cbz r7, 0xa5fe                                        |         
    0x0000a5ec mov r2, r7                                            |         r2 = r7;
    0x0000a5ee movs r3, 0                                            |         r3 = 0;
    0x0000a5f0 mov r0, r4                                            |         r0 = r4;
    0x0000a5f2 mov r1, r5                                            |         r1 = r5;
    0x0000a5f4 bl 0x120a8                                            |         fcn_000120a8 (r0, r1, r2, r3);
    0x0000a5f8 cmp r2, 0                                             |         
                                                                     |         if (r2 != 0) {
    0x0000a5fa bne.w 0xa85c                                          |             goto label_23;
                                                                     |         }
                                                                     |     }
                                                                     | label_1:
    0x0000a5fe ldr.w r7, [pc, 0x9a0]                                 |     r7 = *(0x0000afa0);
    0x0000a602 ldr.w r3, [pc, 0x9a0]                                 |     r3 = *(0x0000afa4);
    0x0000a606 ldr.w r1, [pc, 0x9a0]                                 |     
    0x0000a60a add r7, pc                                            |     r7 += pc;
    0x0000a60c ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a60e add r3, pc                                            |     r3 += pc;
    0x0000a610 ldr r2, [r7]                                          |     r2 = *(r7);
    0x0000a612 add r1, pc                                            |     r1 = 0x155c0;
    0x0000a614 strd r4, r5, [r3, 0x18]                               |     __asm ("strd r4, r5, [r3, 0x18]");
    0x0000a616 cmp r6, r0                                            |     
    0x0000a618 bl 0x9a48                                             |     fcn_00009a48 (r0, r1, r2, r3, r4);
    0x0000a61a uxtah r8, r6, pc, ror 8                               |     __asm ("uxtah r8, r6, pc, ror 8");
    0x0000a61e cmp r1, 0x8c                                          |     
    0x0000a620 ldr.w r1, [pc, 0x98c]                                 |     
    0x0000a624 str r0, [r7]                                          |     *(r7) = r0;
    0x0000a626 add r2, pc                                            |     r2 += pc;
    0x0000a628 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000a62a add r1, pc                                            |     r1 = 0x155de;
    0x0000a62c bl 0x9808                                             |     fcn_00009808 (r0, r1, r2);
    0x0000a630 str r0, [sp, 0x10]                                    |     var_10h = r0;
    0x0000a632 blx 0x3504                                            |     r0 = e2p_os2string ();
    0x0000a636 adds r4, r0, 1                                        |     r4 = r0 + 1;
    0x0000a638 mov r0, r4                                            |     r0 = r4;
    0x0000a63a blx 0x3450                                            |     r0 = strerror (r0);
    0x0000a63e mov sb, r0                                            |     sb = r0;
    0x0000a640 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a642 beq.w 0xaf50                                          |         goto label_24;
                                                                     |     }
    0x0000a646 ldr.w r7, [pc, 0x96c]                                 |     r7 = *(0x0000afb4);
    0x0000a64a mov r2, r4                                            |     r2 = r4;
    0x0000a64c add.w r8, sp, 0x80                                    |     r8 += arg_80h;
    0x0000a650 ldr r1, [sp, 0x10]                                    |     r1 = var_10h;
    0x0000a652 mov r5, r0                                            |     r5 = r0;
    0x0000a654 movs r4, 2                                            |     r4 = 2;
    0x0000a656 add r7, pc                                            |     r7 += pc;
    0x0000a658 blx 0x30e0                                            |     fcn_000030e0 ();
    0x0000a65c mov r3, r8                                            |     r3 = r8;
    0x0000a65e mov fp, r7                                            |     
    0x0000a660 mov r8, r6                                            |     r8 = r6;
    0x0000a662 mov r7, r4                                            |     r7 = r4;
    0x0000a664 mov r6, r3                                            |     r6 = r3;
    0x0000a666 b 0xa67a                                              |     
                                                                     |     while (r0 != 0) {
    0x0000a668 movs r3, 0                                            |         r3 = 0;
    0x0000a66a strb r3, [r4], 1                                      |         *(r4) = r3;
                                                                     |         r4++;
    0x0000a66e ldrb r3, [r5]                                         |         r3 = *(r5);
                                                                     |         if (r3 != 0) {
    0x0000a670 cbnz r3, 0xa68c                                       |             goto label_25;
                                                                     |         }
                                                                     | label_0:
    0x0000a672 ldrb r3, [r4]                                         |         r3 = *(r4);
    0x0000a674 mov r5, r4                                            |         r5 = r4;
    0x0000a676 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000a678 beq 0xa6f8                                            |             goto label_26;
                                                                     |         }
    0x0000a67a movs r1, 0x2f                                         |         r1 = 0x2f;
    0x0000a67c mov r0, r5                                            |         r0 = r5;
    0x0000a67e blx 0x3534                                            |         r0 = ext2fs_bg_free_blocks_count_set ();
    0x0000a682 mov r4, r0                                            |         r4 = r0;
    0x0000a684 cmp r0, 0                                             |         
    0x0000a686 bne 0xa668                                            |         
                                                                     |     }
    0x0000a688 ldrb r3, [r5]                                         |     r3 = *(r5);
                                                                     |     if (r3 == 0) {
    0x0000a68a cbz r3, 0xa6f8                                        |         goto label_26;
                                                                     |     }
                                                                     | label_25:
    0x0000a68c movs r3, 0                                            |     r3 = 0;
    0x0000a68e mov.w r2, 0x4000                                      |     r2 = 0x4000;
    0x0000a692 mov r1, r7                                            |     r1 = r7;
    0x0000a694 mov r0, sl                                            |     r0 = sl;
    0x0000a696 str r6, [sp]                                          |     *(sp) = r6;
    0x0000a698 blx 0x336c                                            |     r0 = strcpy (r0, r1)
    0x0000a69c cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000a69e bne.w 0xa84c                                          |         goto label_27;
                                                                     |     }
    0x0000a6a2 ldr r2, [sp, 0x80]                                    |     r2 = *(arg_80h);
    0x0000a6a4 mov r3, r5                                            |     r3 = r5;
    0x0000a6a6 mov r1, r7                                            |     r1 = r7;
    0x0000a6a8 mov r0, sl                                            |     r0 = sl;
    0x0000a6aa blx 0x36f0                                            |     r0 = ext2fs_close_free ();
    0x0000a6ae cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000a6b0 bne.w 0xa84c                                          |         goto label_27;
                                                                     |     }
    0x0000a6b4 ldr r7, [sp, 0x80]                                    |     r7 = *(arg_80h);
    0x0000a6b6 add r5, sp, 0x9c                                      |     r5 += arg_9ch;
    0x0000a6b8 mov r2, r5                                            |     r2 = r5;
    0x0000a6ba mov r0, sl                                            |     r0 = sl;
    0x0000a6bc mov r1, r7                                            |     r1 = r7;
    0x0000a6be blx 0x2f58                                            |     r0 = ext2fs_read_inode ();
    0x0000a6c2 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000a6c4 bne.w 0xa84c                                          |         goto label_27;
                                                                     |     }
    0x0000a6c8 ldr.w r3, [fp]                                        |     r3 = *(fp);
    0x0000a6cc mov r2, r5                                            |     r2 = r5;
    0x0000a6ce mov r1, r7                                            |     r1 = r7;
    0x0000a6d0 mov r0, sl                                            |     r0 = sl;
    0x0000a6d2 strh.w r3, [sp, 0x9e]                                 |     *(arg_9eh) = r3;
    0x0000a6d6 lsrs r3, r3, 0x10                                     |     r3 >>= 0x10;
    0x0000a6d8 strh.w r3, [sp, 0x114]                                |     *(arg_114h) = r3;
    0x0000a6dc ldr.w r3, [fp, 4]                                     |     r3 = *(arg_4h);
    0x0000a6e0 strh.w r3, [sp, 0xb4]                                 |     *(arg_b4h) = r3;
    0x0000a6e4 lsrs r3, r3, 0x10                                     |     r3 >>= 0x10;
    0x0000a6e6 strh.w r3, [sp, 0x116]                                |     *(arg_116h) = r3;
    0x0000a6ea blx 0x36a8                                            |     r0 = ext2fs_file_llseek ();
    0x0000a6ee cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000a6f0 bne.w 0xa84c                                          |         goto label_27;
                                                                     |     }
    0x0000a6f4 cmp r4, 0                                             |     
                                                                     |     if (r4 != 0) {
    0x0000a6f6 bne 0xa672                                            |         goto label_0;
                                                                     |     }
                                                                     | label_26:
    0x0000a6f8 mov r0, sb                                            |     r0 = sb;
    0x0000a6fa str r7, [sp, 0x6c]                                    |     *(arg_6ch) = r7;
    0x0000a6fc blx 0x3098                                            |     fcn_00003098 ();
    0x0000a6fe stcl p8, c9, [ip], {4}                                |     __asm ("stcl p8, c9, [ip], {4}");
    0x0000a702 blx 0x3098                                            |     fcn_00003098 ();
    0x0000a706 ldr.w r2, [pc, 0x8b0]                                 |     
    0x0000a70a ldr.w r1, [pc, 0x8b0]                                 |     
    0x0000a70e ldr.w r4, [pc, 0x8b0]                                 |     r4 = *(0x0000afc0);
    0x0000a712 add r2, pc                                            |     r2 = 0x156d0;
    0x0000a714 ldr.w r0, [r8]                                        |     r0 = *(r8);
    0x0000a716 movs r0, r0                                           |     
    0x0000a718 add r1, pc                                            |     r1 = 0x156da;
    0x0000a71a bl 0x9808                                             |     fcn_00009808 (r0, r1, r2);
    0x0000a71e ldr.w r1, [pc, 0x8a4]                                 |     
    0x0000a722 add r4, pc                                            |     r4 += pc;
    0x0000a724 movs r2, 5                                            |     r2 = 5;
    0x0000a726 str r0, [r4, 0x38]                                    |     *((r4 + 0x38)) = r0;
    0x0000a728 ldr.w r0, [r8]                                        |     r0 = *(r8);
    0x0000a72c add r1, pc                                            |     r1 = 0x156f6;
    0x0000a72e bl 0x98d0                                             |     fcn_000098d0 (r0, r1, r2, r3, r4, r5, r6);
    0x0000a732 movs r1, 0                                            |     r1 = 0;
    0x0000a734 str r0, [r4, 0x30]                                    |     *((r4 + 0x30)) = r0;
    0x0000a736 ldr r0, [r4, 8]                                       |     r0 = *((r4 + 8));
    0x0000a738 bl 0x97a4                                             |     fcn_000097a4 (r0, r1);
    0x0000a73c ldr r7, [r4, 0x38]                                    |     r7 = *((r4 + 0x38));
    0x0000a73e mov r5, r0                                            |     r5 = r0;
    0x0000a740 adds r5, 1                                            |     r5++;
    0x0000a742 mov r0, r7                                            |     r0 = r7;
    0x0000a744 blx 0x3504                                            |     e2p_os2string ();
    0x0000a748 ldr r3, [r4, 0x30]                                    |     r3 = *((r4 + 0x30));
    0x0000a74a mov r6, r0                                            |     r6 = r0;
    0x0000a74c adds r0, 0x10                                         |     r0 += 0x10;
    0x0000a74e cmp r5, r3                                            |     
    0x0000a750 ite ge                                                |     
                                                                     |     if (r5 < r3) {
    0x0000a752 addge r0, r0, r5                                      |         r0 += r5;
                                                                     |     }
                                                                     |     if (r5 >= r3) {
    0x0000a754 addlt r0, r0, r3                                      |         r0 += r3;
                                                                     |     }
    0x0000a756 blx 0x3450                                            |     r0 = strerror (r0);
    0x0000a75a mov r5, r0                                            |     r5 = r0;
    0x0000a75c str r0, [r4, 0x34]                                    |     *((r4 + 0x34)) = r0;
    0x0000a75e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a760 beq.w 0xaf44                                          |         goto label_28;
                                                                     |     }
    0x0000a764 adds r2, r6, 1                                        |     r2 = r6 + 1;
    0x0000a766 mov r1, r7                                            |     r1 = r7;
    0x0000a768 blx 0x30e0                                            |     fcn_000030e0 ();
    0x0000a76c add r5, r6                                            |     r5 += r6;
    0x0000a76e mov r0, r7                                            |     r0 = r7;
    0x0000a770 str r5, [r4, 0x20]                                    |     *((r4 + 0x20)) = r5;
    0x0000a772 blx 0x3098                                            |     fcn_00003098 ();
    0x0000a776 ldr.w r0, [sl, 0x10]                                  |     r0 = *((sl + 0x10));
    0x0000a77a blx 0x396c                                            |     snprintf_chk ();
    0x0000a77e ldrd r8, r2, [r4, 0x10]                               |     __asm ("ldrd r8, r2, [r4, 0x10]");
    0x0000a782 ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000a784 str r2, [sp, 0x10]                                    |     var_10h = r2;
    0x0000a786 adds.w r3, r8, r3                                     |     r3 = r8 + r3;
    0x0000a78a adc r2, r2, 0                                         |     __asm ("adc r2, r2, 0");
    0x0000a78e cmp r0, r3                                            |     
    0x0000a790 sbcs.w r5, r1, r2                                     |     __asm ("sbcs.w r5, r1, r2");
                                                                     |     if (r0 <= r3) {
    0x0000a794 blo 0xa868                                            |         goto label_4;
                                                                     |     }
    0x0000a796 ldrd sb, r5, [r4, 0x18]                               |     __asm ("ldrd sb, r5, [r4, 0x18]");
    0x0000a79a subs r0, r0, r3                                       |     r0 -= r3;
    0x0000a79c sbc.w r2, r1, r2                                      |     __asm ("sbc.w r2, r1, r2");
    0x0000a7a0 str r0, [sp, 0x28]                                    |     var_28h = r0;
    0x0000a7a2 str r2, [sp, 0x2c]                                    |     var_2ch = r2;
    0x0000a7a4 orrs.w r3, sb, r5                                     |     r3 = sb | r5;
                                                                     |     if (r3 != sb) {
    0x0000a7a8 bne.w 0xa8d2                                          |         goto label_29;
                                                                     |     }
    0x0000a7ac ldr r7, [r4, 8]                                       |     r7 = *((r4 + 8));
    0x0000a7ae cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000a7b0 beq.w 0xaef0                                          |         goto label_30;
                                                                     |     }
    0x0000a7b4 lsrs r3, r7, 4                                        |     r3 = r7 >> 4;
    0x0000a7b6 cmp r7, 1                                             |     
    0x0000a7b8 it eq                                                 |     
                                                                     |     if (r7 == 1) {
    0x0000a7ba ldrdeq sb, r5, [sp, 0x28]                             |         __asm ("ldrdeq sb, r5, [var_28h]");
                                                                     |     }
    0x0000a7be mov.w r6, 0                                           |     r6 = 0;
    0x0000a7c2 add.w fp, r3, 1                                       |     
                                                                     |     if (r7 == 1) {
    0x0000a7c6 beq.w 0xa932                                          |         goto label_15;
                                                                     |     }
    0x0000a7ca ldr r0, [sp, 0x28]                                    |     r0 = var_28h;
    0x0000a7cc mov r2, r7                                            |     r2 = r7;
    0x0000a7ce ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000a7d0 subs.w r5, r0, fp                                     |     r5 = r0 - fp;
    0x0000a7d4 sbc sb, r3, 0                                         |     __asm ("sbc sb, r3, 0");
    0x0000a7d8 mov r1, r3                                            |     r1 = r3;
    0x0000a7da mov r3, r6                                            |     r3 = r6;
    0x0000a7dc bl 0x120a8                                            |     r0 = fcn_000120a8 (r0, r1, r2, r3);
    0x0000a7e0 mov r2, r0                                            |     r2 = r0;
    0x0000a7e2 mov r3, r1                                            |     r3 = r1;
    0x0000a7e4 mov r0, sl                                            |     r0 = sl;
    0x0000a7e6 bl 0xa0d8                                             |     r0 = fcn_0000a0d8 (r0, r1, r2);
    0x0000a7ea umull r0, r3, r0, r7                                  |     r0:r3 = r0 * r7;
    0x0000a7ee mov r2, r7                                            |     r2 = r7;
    0x0000a7f0 mla r3, r7, r1, r3                                    |     __asm ("mla r3, r7, r1, r3");
    0x0000a7f4 subs r1, r5, r0                                       |     r1 = r5 - r0;
    0x0000a7f6 mov r0, r1                                            |     r0 = r1;
    0x0000a7f8 str r1, [sp, 0x28]                                    |     var_28h = r1;
    0x0000a7fa sbc.w r5, sb, r3                                      |     __asm ("sbc.w r5, sb, r3");
    0x0000a7fe mov r3, r6                                            |     r3 = r6;
    0x0000a800 mov r1, r5                                            |     r1 = r5;
    0x0000a802 str r5, [sp, 0x2c]                                    |     var_2ch = r5;
    0x0000a804 bl 0x120a8                                            |     fcn_000120a8 (r0, r1, r2, r3);
    0x0000a808 ldr r2, [sp, 0x28]                                    |     r2 = var_28h;
    0x0000a80a mov r5, r1                                            |     r5 = r1;
    0x0000a80c strd r0, r1, [r4, 0x18]                               |     __asm ("strd r0, r1, [r4, 0x18]");
    0x0000a810 mov sb, r0                                            |     sb = r0;
    0x0000a812 ldr r1, [sp, 0x2c]                                    |     r1 = var_2ch;
    0x0000a814 cmp r2, r7                                            |     
    0x0000a816 sbcs r3, r1, 0                                        |     __asm ("sbcs r3, r1, 0");
    0x0000a81a itt lo                                                |     
                                                                     |     if (r2 >= r7) {
    0x0000a81c movlo sb, r2                                          |         sb = r2;
                                                                     |     }
                                                                     |     if (r2 >= r7) {
    0x0000a81e movlo r5, r1                                          |         r5 = r1;
                                                                     |     }
    0x0000a820 b 0xa932                                              |     goto label_15;
                                                                     | label_21:
    0x0000a822 movw fp, 0xb785                                       |     
    0x0000a826 movt fp, 0x7f2b                                       |     fp = 0x7f2bb785;
                                                                     |     do {
                                                                     | label_2:
    0x0000a82a ldr.w r2, [pc, 0x79c]                                 |         r2 = *(0x0000afc8);
    0x0000a82e ldr.w r3, [pc, 0x734]                                 |         r3 = *(0xaf66);
    0x0000a832 add r2, pc                                            |         r2 += pc;
    0x0000a834 ldr r3, [r2, r3]                                      |         r3 = *((r2 + r3));
    0x0000a836 ldr r2, [r3]                                          |         r2 = *(0xaf66);
    0x0000a838 ldr r3, [sp, 0x11c]                                   |         r3 = var_11ch;
    0x0000a83a eors r2, r3                                           |         r2 ^= r3;
    0x0000a83c mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000a840 bne.w 0xaf3a                                          |             goto label_31;
                                                                     |         }
    0x0000a844 mov r0, fp                                            |         r0 = fp;
    0x0000a846 add sp, 0x124                                         |         
    0x0000a848 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_27:
    0x0000a84c mov fp, r0                                            |         
    0x0000a84e mov r0, sb                                            |         r0 = sb;
    0x0000a850 blx 0x3098                                            |         fcn_00003098 ();
    0x0000a854 ldr r0, [sp, 0x10]                                    |         r0 = var_10h;
    0x0000a856 blx 0x3098                                            |         fcn_00003098 ();
    0x0000a85a b 0xa82a                                              |         
                                                                     |     } while (1);
                                                                     | label_23:
    0x0000a85c subs r2, r7, r2                                       |     r2 = r7 - r2;
    0x0000a85e adds r2, r2, r4                                       |     r2 += r4;
    0x0000a860 mov r4, r2                                            |     r4 = r2;
    0x0000a862 adc r5, r5, 0                                         |     __asm ("adc r5, r5, 0");
    0x0000a866 b 0xa5fe                                              |     goto label_1;
                                                                     | label_4:
    0x0000a868 mov.w fp, 0x1c                                        |     
    0x0000a86c b 0xa82a                                              |     goto label_2;
                                                                     | label_22:
    0x0000a86e mov r0, r4                                            |     r0 = r4;
    0x0000a870 movs r7, 1                                            |     r7 = 1;
    0x0000a872 bl 0xa194                                             |     fcn_0000a194 (r0, r1);
    0x0000a876 ldr.w r8, [sl, 0x14]                                  |     r8 = *((sl + 0x14));
    0x0000a878 strh r4, [r2]                                         |     *(r2) = r4;
    0x0000a87a movs r3, 0                                            |     r3 = 0;
    0x0000a87c lsr.w r2, r8, 9                                       |     r2 = r8 >> 9;
    0x0000a880 bl 0x120a8                                            |     fcn_000120a8 (r0, r1, r2, r3);
    0x0000a884 ldr.w r2, [sl, 0x64]                                  |     r2 = *((sl + 0x64));
    0x0000a888 mov r5, r0                                            |     r5 = r0;
    0x0000a88a mov r4, r1                                            |     r4 = r1;
    0x0000a88c str r0, [sp, 0x24]                                    |     var_24h = r0;
    0x0000a88e str r1, [sp, 0x30]                                    |     var_0h = r1;
    0x0000a890 lsl.w r2, r7, r2                                      |     r2 = r7 << r2;
    0x0000a894 asrs r3, r2, 0x1f                                     |     r3 = r2 >> 0x1f;
    0x0000a896 bl 0x120a8                                            |     fcn_000120a8 (r0, r1, r2, r3);
    0x0000a89a orrs r2, r3                                           |     r2 |= r3;
                                                                     |     if (r2 == r3) {
    0x0000a89c beq.w 0xa5de                                          |         goto label_3;
                                                                     |     }
    0x0000a89e add r6, sp, 0x27c                                     |     r6 = sp + 0x27c;
    0x0000a8a0 ldr.w r3, [sl, 0x10]                                  |     r3 = *((sl + 0x10));
    0x0000a8a4 ldr r2, [sp, 0x38]                                    |     r2 = s2;
    0x0000a8a6 ldr r1, [r3, 0x1c]                                    |     r1 = *((r3 + 0x1c));
    0x0000a8a8 ldr.w r3, [pc, 0x720]                                 |     r3 = *(0xafcc);
    0x0000a8ac ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000a8ae str.w r8, [sp, 8]                                     |     __asm ("str.w r8, [var_8h_2]");
    0x0000a8b2 str r5, [sp]                                          |     *(sp) = r5;
    0x0000a8b4 str r4, [sp, 4]                                       |     var_4h_2 = r4;
    0x0000a8b6 ldr.w r2, [pc, 0x718]                                 |     
    0x0000a8ba ldr r0, [r3]                                          |     r0 = *(0xafcc);
    0x0000a8bc mov.w r3, 0x400                                       |     r3 = 0x400;
    0x0000a8c0 lsls r3, r1                                           |     r3 <<= r1;
    0x0000a8c2 mov r1, r7                                            |     r1 = r7;
    0x0000a8c4 add r2, pc                                            |     r2 = 0x1589a;
    0x0000a8c6 str r3, [sp, 0xc]                                     |     var_ch_2 = r3;
    0x0000a8c8 blx 0x3684                                            |     ext2fs_write_inode ();
    0x0000a8cc mov r0, r7                                            |     r0 = r7;
    0x0000a8ce blx 0x34b0                                            |     r0 = feof (r0);
                                                                     | label_29:
    0x0000a8d2 cmp r0, sb                                            |     
    0x0000a8d4 sbcs.w r3, r2, r5                                     |     __asm ("sbcs.w r3, r2, r5");
                                                                     |     if (r0 <= sb) {
    0x0000a8d8 blo 0xa868                                            |         goto label_4;
                                                                     |     }
    0x0000a8da ldr r7, [r4, 8]                                       |     r7 = *((r4 + 8));
                                                                     |     if (r7 == 0) {
    0x0000a8dc cbnz r7, 0xa92a                                       |         
    0x0000a8de mov r2, sb                                            |         r2 = sb;
    0x0000a8e0 mov r3, r5                                            |         r3 = r5;
    0x0000a8e2 mov r0, sl                                            |         r0 = sl;
    0x0000a8e4 bl 0xa0d8                                             |         r0 = fcn_0000a0d8 (r0, r1, r2);
    0x0000a8e8 mov r7, r0                                            |         r7 = r0;
    0x0000a8ea ldrd r0, fp, [sp, 0x28]                               |         __asm ("ldrd r0, fp, [var_28h]");
    0x0000a8ee mov r6, r1                                            |         r6 = r1;
    0x0000a8f0 mov r2, sb                                            |         r2 = sb;
    0x0000a8f2 mov r3, r5                                            |         r3 = r5;
    0x0000a8f4 mov r1, fp                                            |         r1 = fp;
    0x0000a8f6 bl 0x120a8                                            |         r0 = fcn_000120a8 (r0, r1, r2, r3);
    0x0000a8fa umull r7, r1, r0, r7                                  |         r7:r1 = r0 * r7;
    0x0000a8fe mov r3, r0                                            |         r3 = r0;
    0x0000a900 mov r2, sb                                            |         r2 = sb;
    0x0000a902 mla r1, r6, r3, r1                                    |         __asm ("mla r1, r6, r3, r1");
    0x0000a906 lsrs r3, r0, 4                                        |         r3 = r0 >> 4;
    0x0000a908 ldr r0, [sp, 0x28]                                    |         r0 = var_28h;
    0x0000a90a adds r3, 1                                            |         r3++;
    0x0000a90c subs r3, r0, r3                                       |         r3 = r0 - r3;
    0x0000a90e sbc r0, fp, 0                                         |         __asm ("sbc r0, arg_0h");
    0x0000a912 subs r6, r3, r7                                       |         r6 = r3 - r7;
    0x0000a914 sbc.w r3, r0, r1                                      |         __asm ("sbc.w r3, r0, r1");
    0x0000a916 lsls r1, r0, 0xc                                      |         r1 = r0 << 0xc;
    0x0000a918 mov r0, r6                                            |         r0 = r6;
    0x0000a91a mov r1, r3                                            |         r1 = r3;
    0x0000a91c str r3, [sp, 0x2c]                                    |         var_2ch = r3;
    0x0000a91e mov r3, r5                                            |         r3 = r5;
    0x0000a920 str r6, [sp, 0x28]                                    |         var_28h = r6;
    0x0000a922 bl 0x120a8                                            |         r0 = fcn_000120a8 (r0, r1, r2, r3);
    0x0000a926 mov r7, r0                                            |         r7 = r0;
    0x0000a928 str r0, [r4, 8]                                       |         *((r4 + 8)) = r0;
                                                                     |     }
    0x0000a92a lsrs r3, r7, 4                                        |     r3 = r7 >> 4;
    0x0000a92c movs r6, 0                                            |     r6 = 0;
    0x0000a92e add.w fp, r3, 1                                       |     
                                                                     | label_15:
    0x0000a932 mov r2, sb                                            |     r2 = sb;
    0x0000a934 mov r3, r5                                            |     r3 = r5;
    0x0000a936 mov r0, sl                                            |     r0 = sl;
    0x0000a938 bl 0xa0d8                                             |     r0 = fcn_0000a0d8 (r0, r1, r2);
    0x0000a93c mul r6, r0, r6                                        |     r6 = r0 * r6;
    0x0000a940 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000a942 adds.w r3, r8, fp                                     |     r3 = r8 + fp;
    0x0000a946 adc r2, r2, 0                                         |     __asm ("adc r2, r2, 0");
    0x0000a94a mla r6, r7, r1, r6                                    |     __asm ("mla r6, r7, r1, r6");
    0x0000a94e umull r0, r7, r0, r7                                  |     r0:r7 = r0 * r7;
    0x0000a952 adds r5, r0, r3                                       |     r5 = r0 + r3;
    0x0000a954 ldr.w r3, [pc, 0x67c]                                 |     r3 = *(0x0000afd4);
    0x0000a958 ldr.w r0, [sl, 0x10]                                  |     r0 = *((sl + 0x10));
    0x0000a95c add r6, r7                                            |     r6 += r7;
    0x0000a95e adc.w r6, r6, r2                                      |     __asm ("adc.w r6, r6, r2");
    0x0000a962 movs r7, 0                                            |     r7 = 0;
    0x0000a964 add r3, pc                                            |     r3 += pc;
    0x0000a966 strd r5, r6, [r3, 0x10]                               |     __asm ("strd r5, r6, [r3, 0x10]");
    0x0000a968 ldrsb r4, [r0, r0]                                    |     r4 = *((r0 + r0));
    0x0000a96a ldr r4, [r0, 0x14]                                    |     r4 = *((r0 + 0x14));
    0x0000a96c blx 0x33dc                                            |     r0 = fcn_000033dc ();
    0x0000a970 adds.w r8, r0, -1                                     |     r8 = r0 + -1;
    0x0000a974 sbc sb, r1, 0                                         |     __asm ("sbc sb, r1, 0");
    0x0000a978 orrs.w r3, r5, r6                                     |     r3 = r5 | r6;
                                                                     |     if (r3 == r5) {
    0x0000a97c beq 0xa9ea                                            |         goto label_18;
                                                                     |     }
    0x0000a97e add r3, sp, 0x80                                      |     r3 += arg_80h;
    0x0000a980 mov fp, r5                                            |     
    0x0000a982 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0000a984 mov r3, r8                                            |     r3 = r8;
    0x0000a986 mov r8, r7                                            |     r8 = r7;
    0x0000a988 mov r7, r3                                            |     r7 = r3;
                                                                     |     do {
    0x0000a98a ldr r5, [sp, 0x1c]                                    |         r5 = var_1ch;
    0x0000a98c mov r2, r4                                            |         r2 = r4;
    0x0000a98e strd r7, sb, [sp]                                     |         __asm ("strd r7, sb, [sp]");
    0x0000a992 mov r3, r8                                            |         r3 = r8;
    0x0000a994 str r5, [sp, 8]                                       |         var_8h_2 = r5;
    0x0000a996 ldr.w r0, [sl, 0x30]                                  |         r0 = *((sl + 0x30));
    0x0000a99a blx 0x3864                                            |         r0 = ext2fs_get_journal_params ();
                                                                     |         if (r0 != 0) {
    0x0000a99e cbnz r0, 0xa9e8                                       |             goto label_32;
                                                                     |         }
    0x0000a9a0 str r5, [sp, 8]                                       |         var_8h_2 = r5;
    0x0000a9a2 ldrd r5, r3, [sp, 0x80]                               |         __asm ("ldrd r5, r3, [arg_80h]");
    0x0000a9a6 strd r7, sb, [sp]                                     |         __asm ("strd r7, sb, [sp]");
    0x0000a9aa ldr.w r0, [sl, 0x30]                                  |         r0 = *((sl + 0x30));
    0x0000a9ae mov r2, r5                                            |         r2 = r5;
    0x0000a9b0 str r3, [sp, 0x10]                                    |         var_10h = r3;
    0x0000a9b2 blx 0x384c                                            |         ext2fs_block_alloc_stats_range ();
    0x0000a9b6 ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000a9b8 ldrd r4, r8, [sp, 0x80]                               |         __asm ("ldrd r4, r8, [arg_80h]");
                                                                     |         if (r0 != 0) {
    0x0000a9bc cbz r0, 0xa9c2                                        |             
    0x0000a9be mov r4, r7                                            |             r4 = r7;
    0x0000a9c0 mov r8, sb                                            |             r8 = sb;
                                                                     |         }
    0x0000a9c2 subs r0, r4, r5                                       |         r0 = r4 - r5;
    0x0000a9c4 sbc.w r2, r8, r3                                      |         __asm ("sbc.w r2, r8, r3");
    0x0000a9c8 cmp fp, r0                                            |         
    0x0000a9ca sbcs.w r2, r6, r2                                     |         __asm ("sbcs.w r2, r6, r2");
                                                                     |         if (fp <= r0) {
    0x0000a9ce blo.w 0xaf16                                          |             goto label_33;
                                                                     |         }
    0x0000a9d0 strh r2, [r4, 0x14]                                   |         *((r4 + 0x14)) = r2;
    0x0000a9d2 subs r5, r5, r4                                       |         r5 -= r4;
    0x0000a9d4 sbc.w r1, r3, r8                                      |         __asm ("sbc.w r1, r3, r8");
    0x0000a9d8 adds.w r5, r5, fp                                     |         r5 += fp;
    0x0000a9dc adc.w r6, r6, r1                                      |         __asm ("adc.w r6, r6, r1");
    0x0000a9e0 mov fp, r5                                            |         
    0x0000a9e2 orrs.w r2, r5, r6                                     |         r2 = r5 | r6;
    0x0000a9e4 lsls r6, r0, 8                                        |         r6 = r0 << 8;
    0x0000a9e6 bne 0xa98a                                            |         
                                                                     |     } while (r6 != r0);
                                                                     | label_32:
    0x0000a9e8 mov r7, r8                                            |     r7 = r8;
                                                                     | label_18:
    0x0000a9ea ldr r5, [sp, 0x20]                                    |     r5 = var_20h;
                                                                     |     if (r5 != 0) {
    0x0000a9ec cbz r5, 0xaa0e                                        |         
    0x0000a9ee ldr r0, [sp, 0x24]                                    |         r0 = var_24h;
    0x0000a9f0 mov r2, r5                                            |         r2 = r5;
    0x0000a9f2 ldr r1, [sp, 0x30]                                    |         r1 = var_0h;
    0x0000a9f4 movs r3, 0                                            |         r3 = 0;
    0x0000a9f6 bl 0x120a8                                            |         fcn_000120a8 (r0, r1, r2, r3);
    0x0000a9fa adds r0, r2, r4                                       |         r0 = r2 + r4;
    0x0000a9fc mov r2, r5                                            |         r2 = r5;
    0x0000a9fe adc.w r1, r7, r3                                      |         __asm ("adc.w r1, r7, r3");
    0x0000aa02 movs r3, 0                                            |         r3 = 0;
    0x0000aa04 bl 0x120a8                                            |         fcn_000120a8 (r0, r1, r2, r3);
    0x0000aa08 cmp r2, 0                                             |         
                                                                     |         if (r2 != 0) {
    0x0000aa0a bne.w 0xaee4                                          |             goto label_34;
                                                                     |         }
                                                                     |     }
                                                                     | label_14:
    0x0000aa0e ldr.w r3, [pc, 0x5c8]                                 |     r3 = *(0x0000afd8);
    0x0000aa12 mov.w r0, -0x80000000                                 |     r0 = -0x80000000;
    0x0000aa16 add r3, pc                                            |     r3 += pc;
    0x0000aa18 ldr r2, [r3, 0x18]                                    |     r2 = *((r3 + 0x18));
    0x0000aa1a ldr r1, [r3, 0x1c]                                    |     r1 = *((r3 + 0x1c));
    0x0000aa1c strd r4, r7, [r3, 0x28]                               |     __asm ("strd r4, r7, [r3, 0x28]");
    0x0000aa20 str r2, [sp, 0x20]                                    |     var_20h = r2;
    0x0000aa22 orrs.w r3, r2, r1                                     |     r3 = r2 | r1;
    0x0000aa26 str r1, [sp, 0x24]                                    |     var_24h = r1;
    0x0000aa28 it ne                                                 |     
                                                                     |     if (r3 != r2) {
    0x0000aa2a strdne r2, r1, [sp, 0x28]                             |         __asm ("strdne r2, r1, [sp, 0x28]");
                                                                     |     }
    0x0000aa2e ldr.w r1, [sl, 0x14]                                  |     r1 = *((sl + 0x14));
    0x0000aa30 asrs r4, r2, 0x20                                     |     r4 = r2 >> 0x20;
    0x0000aa32 bl 0x11768                                            |     fcn_00011768 (r0, r1, r2);
    0x0000aa36 ldr r2, [sp, 0x28]                                    |     r2 = var_28h;
    0x0000aa38 movs r3, 0                                            |     r3 = 0;
    0x0000aa3a cmp r0, r2                                            |     
    0x0000aa3c ldr r2, [sp, 0x2c]                                    |     r2 = var_2ch;
    0x0000aa3e sbcs r3, r2                                           |     __asm ("sbcs r3, r2");
    0x0000aa40 itttt lo                                              |     
                                                                     |     if (r0 >= r2) {
    0x0000aa42 ldrlo r2, [sl, 0x10]                                  |         r2 = *((sl + 0x10));
                                                                     |     }
                                                                     |     if (r0 >= r2) {
    0x0000aa46 ldrlo r3, [r2, 0x64]                                  |         r3 = *((r2 + 0x64));
                                                                     |     }
                                                                     |     if (r0 >= r2) {
    0x0000aa48 orrlo r3, r3, 2                                       |         r3 |= 2;
                                                                     |     }
                                                                     |     if (r0 < r2) {
    0x0000aa4c str r3, [r2, 0x64]                                    |         *((r2 + 0x64)) = r3;
                                                                     |     }
    0x0000aa4e ldr.w r3, [pc, 0x58c]                                 |     
    0x0000aa52 ldr r2, [sp, 0x38]                                    |     r2 = s2;
    0x0000aa54 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000aa56 str r3, [sp, 0x70]                                    |     *(arg_70h) = r3;
    0x0000aa58 ldr r3, [r3]                                          |     r3 = *(0xafde);
    0x0000aa5a cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000aa5c bne.w 0xaeb0                                          |         goto label_35;
                                                                     |     }
    0x0000aa60 ldr.w r3, [pc, 0x57c]                                 |     r3 = *(0x0000afe0);
    0x0000aa64 add r3, pc                                            |     r3 += pc;
    0x0000aa66 ldr r3, [r3]                                          |     r3 = *(r3);
                                                                     |     if (r3 != 0) {
    0x0000aa68 cbz r3, 0xaa7e                                        |         
    0x0000aa6a ldr.w r3, [pc, 0x578]                                 |         
    0x0000aa6e ldr r3, [r2, r3]                                      |         r3 = *((r2 + r3));
    0x0000aa70 ldr r3, [r3]                                          |         r3 = *(0xafe6);
                                                                     |         if (r3 == 0) {
    0x0000aa72 cbz r3, 0xaa7e                                        |             goto label_36;
                                                                     |         }
    0x0000aa74 ldr.w r0, [pc, 0x570]                                 |         
    0x0000aa78 add r0, pc                                            |         r0 = 0x15a64;
    0x0000aa7a blx 0x341c                                            |         fcn_0000341c ();
                                                                     |     }
                                                                     | label_36:
    0x0000aa7e ldr.w r4, [pc, 0x56c]                                 |     r4 = *(0x0000afec);
    0x0000aa82 movs r0, 1                                            |     r0 = 1;
    0x0000aa84 ldr.w r1, [pc, 0x568]                                 |     
    0x0000aa88 add r4, pc                                            |     r4 += pc;
    0x0000aa8a ldr r2, [r4, 8]                                       |     r2 = *((r4 + 8));
    0x0000aa8c add r1, pc                                            |     r1 = 0x15a80;
    0x0000aa8e blx 0x3620                                            |     fcn_00003620 ();
    0x0000aa92 ldrd r2, r3, [r4, 0x18]                               |     __asm ("ldrd r2, r3, [r4, 0x18]");
    0x0000aa96 orrs.w r1, r2, r3                                     |     r1 = r2 | r3;
                                                                     |     if (r1 != r2) {
    0x0000aa9a bne.w 0xaf0a                                          |         goto label_37;
                                                                     |     }
                                                                     | label_17:
    0x0000aa9e ldr r2, [sp, 0x38]                                    |     r2 = s2;
    0x0000aaa0 movs r1, 1                                            |     r1 = 1;
    0x0000aaa2 ldr.w r3, [pc, 0x550]                                 |     
    0x0000aaa6 ldr.w r0, [pc, 0x550]                                 |     
    0x0000aaaa ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000aaac movs r2, 2                                            |     r2 = 2;
    0x0000aaae add r0, pc                                            |     r0 = 0x15aac;
    0x0000aab0 ldr r3, [r3]                                          |     
    0x0000aab2 blx 0x3324                                            |     strcat (r0, r1);
    0x0000aab6 ldr.w r3, [pc, 0x544]                                 |     r3 = *(0x0000affc);
    0x0000aaba add r3, pc                                            |     r3 = 0x15ab4;
    0x0000aabc ldr r2, [r3, 8]                                       |     r2 = *(0x15abc);
    0x0000aabe cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000aac0 beq.w 0xaec2                                          |         goto label_38;
                                                                     |     }
    0x0000aac4 ldr r2, [r3, 0x18]                                    |     r2 = *((r3 + 0x18));
    0x0000aac6 ldr r3, [r3, 0x1c]                                    |     r3 = *((r3 + 0x1c));
    0x0000aac8 str r2, [sp, 0x20]                                    |     var_20h = r2;
    0x0000aaca str r3, [sp, 0x24]                                    |     var_24h = r3;
                                                                     | label_12:
    0x0000aacc ldr.w r3, [pc, 0x530]                                 |     r3 = *(0x0000b000);
    0x0000aad0 mov fp, sl                                            |     
    0x0000aad2 add r3, pc                                            |     r3 += pc;
    0x0000aad4 str r3, [sp, 0x64]                                    |     *(arg_4h) = r3;
    0x0000aad6 ldr.w r3, [pc, 0x52c]                                 |     r3 = *(0x0000b004);
    0x0000aada add r3, pc                                            |     r3 += pc;
    0x0000aadc str r3, [sp, 0x68]                                    |     *(arg_68h) = r3;
    0x0000aade mov.w r3, 0x8000                                      |     
    0x0000aae2 movt r3, 0xffff                                       |     r3 = 0x-8000;
    0x0000aae6 str r3, [sp, 0x54]                                    |     var_54h = r3;
    0x0000aae8 movw r3, 0xb726                                       |     
    0x0000aaec movt r3, 0x7f2b                                       |     r3 = 0x7f2bb726;
    0x0000aaf0 str r3, [sp, 0x74]                                    |     *(arg_74h) = r3;
    0x0000aaf2 movs r3, 0                                            |     r3 = 0;
    0x0000aaf4 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0000aaf6 add r3, sp, 0x78                                      |     r3 += c;
    0x0000aaf8 str r3, [sp, 0x30]                                    |     var_0h = r3;
                                                                     | label_8:
    0x0000aafa ldr r3, [sp, 0x30]                                    |     r3 = var_0h;
    0x0000aafc mov.w r2, 0x8000                                      |     r2 = 0x8000;
    0x0000ab00 mov r0, fp                                            |     r0 = fp;
    0x0000ab02 str r3, [sp]                                          |     *(sp) = r3;
    0x0000ab04 movs r3, 0                                            |     r3 = 0;
    0x0000ab06 mov r1, r3                                            |     r1 = r3;
    0x0000ab08 blx 0x336c                                            |     r0 = strcpy (r0, r1)
    0x0000ab0c cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ab0e bne.w 0xace6                                          |         goto label_39;
                                                                     |     }
    0x0000ab12 mov r1, r0                                            |     r1 = r0;
    0x0000ab14 movs r2, 0x7c                                         |     r2 = 0x7c;
    0x0000ab16 add r0, sp, 0xa0                                      |     r0 += arg_a0h;
    0x0000ab18 movs r4, 1                                            |     r4 = 1;
    0x0000ab1a blx 0x35bc                                            |     fcn_000035bc ();
    0x0000ab1e ldr.w r3, [fp, 0x5c]                                  |     r3 = *(arg_5ch);
    0x0000ab22 mov r0, fp                                            |     r0 = fp;
    0x0000ab24 ldr r1, [sp, 0x54]                                    |     r1 = var_54h;
    0x0000ab26 ldr.w r2, [pc, 0x4e0]                                 |     r2 = *(0x0000b008);
    0x0000ab2a mvns r3, r3                                           |     r3 = ~r3;
    0x0000ab2c strh.w r4, [sp, 0xb6]                                 |     *(arg_b6h) = r4;
    0x0000ab30 and r3, r3, 0x1b6                                     |     r3 &= 0x1b6;
    0x0000ab34 orrs r3, r1                                           |     r3 |= r1;
    0x0000ab36 add r2, pc                                            |     r2 += pc;
    0x0000ab38 strh.w r3, [sp, 0x9c]                                 |     *(arg_9ch) = r3;
    0x0000ab3c ldrd r2, r3, [r2]                                     |     __asm ("ldrd r2, r3, [r2]");
    0x0000ab40 ldr r1, [sp, 0x78]                                    |     r1 = *(c);
    0x0000ab42 strh.w r3, [sp, 0xb4]                                 |     *(arg_b4h) = r3;
    0x0000ab46 lsrs r3, r3, 0x10                                     |     r3 >>= 0x10;
    0x0000ab48 strh.w r2, [sp, 0x9e]                                 |     *(arg_9eh) = r2;
    0x0000ab4c lsrs r2, r2, 0x10                                     |     r2 >>= 0x10;
    0x0000ab4e strh.w r3, [sp, 0x116]                                |     *(arg_116h) = r3;
    0x0000ab52 add r3, sp, 0x9c                                      |     r3 += arg_9ch;
    0x0000ab54 strh.w r2, [sp, 0x114]                                |     *(arg_114h) = r2;
    0x0000ab58 mov r2, r3                                            |     r2 = r3;
    0x0000ab5a mov r5, r3                                            |     r5 = r3;
    0x0000ab5c str r3, [sp, 0x58]                                    |     var_58h = r3;
    0x0000ab5e blx 0x3400                                            |     r0 = fcn_00003400 ();
    0x0000ab62 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ab64 bne.w 0xace6                                          |         goto label_39;
                                                                     |     }
    0x0000ab68 mov r3, r0                                            |     r3 = r0;
    0x0000ab6a ldr r1, [sp, 0x78]                                    |     r1 = *(c);
    0x0000ab6c mov r2, r4                                            |     r2 = r4;
    0x0000ab6e mov r0, fp                                            |     r0 = fp;
    0x0000ab70 blx 0x3798                                            |     strrchr (r0, r1);
    0x0000ab74 ldr r1, [sp, 0x78]                                    |     r1 = *(c);
    0x0000ab76 add r3, sp, 0x7c                                      |     r3 += arg_7ch;
    0x0000ab78 mov r2, r5                                            |     r2 = r5;
    0x0000ab7a mov r0, fp                                            |     r0 = fp;
    0x0000ab7c blx 0x3644                                            |     r0 = fcn_00003644 ();
    0x0000ab80 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ab82 bne.w 0xace6                                          |         goto label_39;
                                                                     |     }
    0x0000ab86 ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000ab88 ldr r2, [sp, 0x24]                                    |     r2 = var_24h;
    0x0000ab8a str.w fp, [sp, 0x28]                                  |     __asm ("str.w fp, [var_28h]");
    0x0000ab8e str r3, [sp, 0x3c]                                    |     var_ch = r3;
    0x0000ab90 orrs r3, r2                                           |     r3 |= r2;
    0x0000ab92 ldr.w r3, [pc, 0x478]                                 |     r3 = *(0x0000b00c);
    0x0000ab96 str r2, [sp, 0x40]                                    |     var_40h = r2;
    0x0000ab98 it eq                                                 |     
                                                                     |     if (r3 == r2) {
    0x0000ab9a strdeq r4, r0, [sp, 0x3c]                             |         __asm ("strdeq r4, r0, [sp, 0x3c]");
                                                                     |     }
    0x0000ab9e add r3, pc                                            |     r3 += pc;
    0x0000aba0 str r3, [sp, 0x48]                                    |     var_48h = r3;
    0x0000aba2 movs r3, 0                                            |     r3 = 0;
    0x0000aba4 mov sb, r3                                            |     sb = r3;
    0x0000aba6 mov sl, r3                                            |     sl = r3;
    0x0000aba8 mov r7, sb                                            |     r7 = sb;
    0x0000abaa strd r3, r3, [sp, 0x4c]                               |     __asm ("strd r3, r3, [sp, 0x4c]");
    0x0000abae strd r3, r3, [sp, 0x5c]                               |     __asm ("strd r3, r3, [sp, 0x5c]");
    0x0000abb2 add r3, sp, 0x80                                      |     r3 += arg_80h;
    0x0000abb4 str r3, [sp, 0x34]                                    |     var_4h = r3;
                                                                     | label_5:
    0x0000abb6 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000abb8 ldr r4, [r3, 0x30]                                    |     r4 = *((r3 + 0x30));
    0x0000abba ldr r0, [r3, 0x10]                                    |     r0 = *((r3 + 0x10));
    0x0000abbc ldr r3, [sp, 0x48]                                    |     r3 = var_48h;
    0x0000abbe ldrd r2, r3, [r3, 0x28]                               |     __asm ("ldrd r2, r3, [r3, 0x28]");
    0x0000abc2 strd r2, r3, [sp, 0x10]                               |     __asm ("strd r2, r3, [sp, 0x10]");
    0x0000abc6 blx 0x33dc                                            |     r0 = fcn_000033dc ();
    0x0000abca mov r5, r0                                            |     r5 = r0;
    0x0000abcc ldrd r2, r3, [sp, 0x10]                               |     __asm ("ldrd r2, r3, [var_10h]");
    0x0000abd0 subs r5, 1                                            |     r5--;
    0x0000abd2 mov r0, r4                                            |     r0 = r4;
    0x0000abd4 sbc r1, r1, 0                                         |     __asm ("sbc r1, r1, 0");
    0x0000abd8 str r5, [sp]                                          |     *(sp) = r5;
    0x0000abda str r1, [sp, 4]                                       |     var_4h_2 = r1;
    0x0000abdc ldr r1, [sp, 0x34]                                    |     r1 = var_4h;
    0x0000abde str r1, [sp, 8]                                       |     var_8h_2 = r1;
    0x0000abe0 blx 0x3864                                            |     r0 = ext2fs_get_journal_params ();
                                                                     |     if (r0 != 0) {
    0x0000abe4 cbz r0, 0xabf4                                        |         
                                                                     | label_6:
    0x0000abe6 mov fp, r0                                            |         
    0x0000abe8 ldr r0, [sp, 0x7c]                                    |         r0 = *(arg_7ch);
                                                                     | label_20:
    0x0000abea cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000abec beq 0xace8                                            |             goto label_40;
                                                                     |         }
    0x0000abee blx 0x37f8                                            |         ext2fs_numeric_progress_close ();
    0x0000abf2 b 0xace8                                              |         goto label_40;
                                                                     |     }
    0x0000abf4 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000abf6 ldrd r8, sb, [sp, 0x80]                               |     __asm ("ldrd r8, sb, [arg_80h]");
    0x0000abfa ldr r4, [r3, 0x30]                                    |     r4 = *((r3 + 0x30));
    0x0000abfc ldr r0, [r3, 0x10]                                    |     r0 = *((r3 + 0x10));
    0x0000abfe ldr r3, [sp, 0x48]                                    |     r3 = var_48h;
    0x0000ac00 strd r8, sb, [r3, 0x28]                               |     __asm ("strd r8, sb, [r3, 0x28]");
    0x0000ac04 blx 0x33dc                                            |     fcn_000033dc ();
    0x0000ac08 subs r0, 1                                            |     r0--;
    0x0000ac0a mov r2, r8                                            |     r2 = r8;
    0x0000ac0c sbc r1, r1, 0                                         |     __asm ("sbc r1, r1, 0");
    0x0000ac10 str r0, [sp]                                          |     *(sp) = r0;
    0x0000ac12 str r1, [sp, 4]                                       |     var_4h_2 = r1;
    0x0000ac14 mov r3, sb                                            |     r3 = sb;
    0x0000ac16 ldr r1, [sp, 0x34]                                    |     r1 = var_4h;
    0x0000ac18 mov r0, r4                                            |     r0 = r4;
    0x0000ac1a str r1, [sp, 8]                                       |     var_8h_2 = r1;
    0x0000ac1c blx 0x384c                                            |     r0 = ext2fs_block_alloc_stats_range ();
    0x0000ac20 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ac22 bne.w 0xae0c                                          |         goto label_41;
                                                                     |     }
    0x0000ac26 ldr r3, [sp, 0x80]                                    |     r3 = *(arg_80h);
    0x0000ac28 str r3, [sp, 0x4c]                                    |     var_4ch = r3;
    0x0000ac2a ldr r3, [sp, 0x84]                                    |     r3 = *(arg_84h);
    0x0000ac2c str r3, [sp, 0x50]                                    |     var_50h = r3;
                                                                     | label_9:
    0x0000ac2e ldrd r3, r2, [sp, 0x20]                               |     __asm ("ldrd r3, r2, [var_20h]");
    0x0000ac32 orrs r3, r2                                           |     r3 |= r2;
                                                                     |     if (r3 != r2) {
    0x0000ac34 bne.w 0xae26                                          |         goto label_42;
                                                                     |     }
                                                                     | label_16:
    0x0000ac38 ldr r3, [sp, 0x68]                                    |     r3 = *(arg_68h);
    0x0000ac3a ldr r2, [sp, 0x50]                                    |     r2 = var_50h;
    0x0000ac3c ldrd r6, fp, [r3, 0x28]                               |     __asm ("ldrd r6, fp, [r3, 0x28]");
    0x0000ac40 ldr r3, [sp, 0x4c]                                    |     r3 = var_4ch;
    0x0000ac42 mov r1, r2                                            |     r1 = r2;
    0x0000ac44 mov r0, r3                                            |     r0 = r3;
    0x0000ac46 subs r3, r3, r6                                       |     r3 -= r6;
    0x0000ac48 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000ac4a sbc.w r3, r2, fp                                      |     __asm ("sbc.w r3, r2, fp");
    0x0000ac4e str r3, [sp, 0x44]                                    |     var_44h = r3;
                                                                     | label_10:
    0x0000ac50 ldr r2, [pc, 0x3bc]                                   |     
    0x0000ac52 ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000ac54 add r2, pc                                            |     r2 = "while allocating inode \"%s\";
    0x0000ac56 str r3, [sp]                                          |     *(sp) = r3;
    0x0000ac58 mov r3, fp                                            |     r3 = fp;
    0x0000ac5a strd r0, r1, [r2, 0x28]                               |     __asm ("strd r0, r1, [r2, 0x28]");
    0x0000ac5e movs r2, 1                                            |     r2 = 1;
    0x0000ac60 str r2, [sp, 4]                                       |     var_4h_2 = r2;
    0x0000ac62 mov r2, r6                                            |     r2 = r6;
    0x0000ac64 ldr r0, [sp, 0x28]                                    |     r0 = var_28h;
    0x0000ac66 blx 0x3870                                            |     ext2fs_allocate_tables ();
    0x0000ac6a ldr r2, [pc, 0x3a8]                                   |     
    0x0000ac6c add r2, pc                                            |     
    0x0000ac6e ldr r2, [r2]                                          |     r2 = *(0x15c86);
    0x0000ac70 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000ac72 bne.w 0xae60                                          |         goto label_43;
                                                                     |     }
                                                                     | label_11:
    0x0000ac76 ldr r5, [sp, 0x2c]                                    |     r5 = var_2ch;
    0x0000ac78 ldr r3, [sp, 0x44]                                    |     r3 = var_44h;
    0x0000ac7a orrs.w r2, r5, r3                                     |     r2 = r5 | r3;
                                                                     |     if (r2 == r5) {
    0x0000ac7e beq 0xad0a                                            |         goto label_44;
                                                                     |     }
    0x0000ac80 mov r8, r3                                            |     r8 = r3;
    0x0000ac82 mov r3, r7                                            |     r3 = r7;
    0x0000ac84 mov r7, fp                                            |     r7 = fp;
    0x0000ac86 ldr.w fp, [sp, 0x34]                                  |     fp = var_4h;
    0x0000ac8a b 0xaca8                                              |     
                                                                     |     while (r0 == 0) {
    0x0000ac8c ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000ac8e adds r6, r4, r6                                       |         r6 = r4 + r6;
    0x0000ac90 adc.w r7, sb, r7                                      |         __asm ("adc.w r7, sb, r7");
    0x0000ac94 adds r3, r4, r3                                       |         r3 = r4 + r3;
    0x0000ac96 adc.w sl, sb, sl                                      |         __asm ("adc.w sl, sb, sl");
    0x0000ac9a subs r4, r5, r4                                       |         r4 = r5 - r4;
    0x0000ac9c sbc.w r8, r8, sb                                      |         __asm ("sbc.w r8, r8, sb");
    0x0000aca0 mov r5, r4                                            |         r5 = r4;
    0x0000aca2 orrs.w r2, r4, r8                                     |         r2 = r4 | r8;
                                                                     |         if (r2 == r4) {
    0x0000aca6 beq 0xad08                                            |             goto label_45;
                                                                     |         }
    0x0000aca8 movw r2, 0x8001                                       |         r2 = 0x8001;
    0x0000acac mov r4, r5                                            |         r4 = r5;
    0x0000acae cmp r5, r2                                            |         
    0x0000acb0 str r3, [sp, 0x88]                                    |         *(arg_88h) = r3;
    0x0000acb2 sbcs r2, r8, 0                                        |         __asm ("sbcs r2, r8, 0");
    0x0000acb6 str r3, [sp, 0x10]                                    |         var_10h = r3;
    0x0000acb8 it hs                                                 |         
                                                                     |         if (r5 < r2) {
    0x0000acba movhs r4, 0x8000                                      |             r4 = 0x8000;
                                                                     |         }
    0x0000acbe mov.w r3, 0                                           |         r3 = 0;
    0x0000acc2 ldr r0, [sp, 0x7c]                                    |         r0 = *(arg_7ch);
    0x0000acc4 mov r2, fp                                            |         r2 = fp;
    0x0000acc6 mov.w r1, 1                                           |         r1 = 1;
    0x0000acca mov sb, r8                                            |         sb = r8;
    0x0000accc str r4, [sp, 0x90]                                    |         *(arg_90h) = r4;
    0x0000acce it hs                                                 |         
                                                                     |         if (r5 < r2) {
    0x0000acd0 movhs sb, 0                                           |             sb = 0;
                                                                     |         }
    0x0000acd4 strd r6, r7, [sp, 0x80]                               |         __asm ("strd r6, r7, [sp, 0x80]");
    0x0000acd8 str.w sl, [sp, 0x8c]                                  |         __asm ("str.w sl, [arg_8ch]");
    0x0000acdc str r3, [sp, 0x94]                                    |         *(arg_94h) = r3;
    0x0000acde blx 0x2f40                                            |         r0 = ext2fs_extent_insert ();
    0x0000ace2 cmp r0, 0                                             |         
    0x0000ace4 beq 0xac8c                                            |         
                                                                     |     }
                                                                     | label_39:
    0x0000ace6 mov fp, r0                                            |     
                                                                     | label_40:
    0x0000ace8 ldr r0, [sp, 0x38]                                    |     r0 = s2;
    0x0000acea ldr r1, [pc, 0x32c]                                   |     r1 = *(0xb01a);
    0x0000acec ldr r2, [pc, 0x32c]                                   |     
    0x0000acee ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0000acf0 ldr r1, [r0, r1]                                      |     r1 = *((r0 + r1));
    0x0000acf2 add r2, pc                                            |     r2 = 0x15d12;
    0x0000acf4 ldr r0, [r1]                                          |     r0 = *(0xb01a);
    0x0000acf6 mov r1, fp                                            |     r1 = fp;
    0x0000acf8 blx 0x32cc                                            |     fcn_000032cc ();
                                                                     | label_13:
    0x0000acfc ldr r3, [pc, 0x320]                                   |     
    0x0000acfe add r3, pc                                            |     r3 = 0x15d22;
    0x0000ad00 ldr r0, [r3, 0x34]                                    |     r0 = *(0x15d56);
    0x0000ad02 blx 0x3098                                            |     fcn_00003098 ();
    0x0000ad06 b 0xa82a                                              |     goto label_2;
                                                                     | label_45:
    0x0000ad08 mov r7, r3                                            |     r7 = r3;
                                                                     | label_44:
    0x0000ad0a ldr r2, [sp, 0x5c]                                    |     r2 = var_5ch;
    0x0000ad0c ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000ad0e ldr r1, [sp, 0x44]                                    |     r1 = var_44h;
    0x0000ad10 adds r3, r3, r2                                       |     r3 += r2;
    0x0000ad12 ldr r2, [sp, 0x60]                                    |     r2 = *(arg_0h);
    0x0000ad14 adc.w r2, r2, r1                                      |     __asm ("adc.w r2, r2, r1");
    0x0000ad16 lsls r1, r0, 8                                        |     r1 = r0 << 8;
    0x0000ad18 strd r3, r2, [sp, 0x5c]                               |     __asm ("strd r3, r2, [sp, 0x5c]");
    0x0000ad1c ldrd r3, r2, [sp, 0x3c]                               |     __asm ("ldrd r3, r2, [var_ch]");
    0x0000ad20 orrs r3, r2                                           |     r3 |= r2;
                                                                     |     if (r3 != r2) {
    0x0000ad22 bne.w 0xabb6                                          |         goto label_5;
                                                                     |     }
    0x0000ad26 ldr.w fp, [sp, 0x28]                                  |     fp = var_28h;
    0x0000ad2a ldr r1, [sp, 0x78]                                    |     r1 = *(c);
    0x0000ad2c ldr r2, [sp, 0x58]                                    |     r2 = var_58h;
    0x0000ad2e mov r0, fp                                            |     r0 = fp;
    0x0000ad30 blx 0x2f58                                            |     r0 = ext2fs_read_inode ();
    0x0000ad34 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ad36 bne.w 0xabe6                                          |         goto label_6;
                                                                     |     }
    0x0000ad3a ldr.w r2, [fp, 0x64]                                  |     r2 = *(arg_64h);
    0x0000ad3e movs r4, 1                                            |     r4 = 1;
    0x0000ad40 ldrd r0, r1, [sp, 0x5c]                               |     __asm ("ldrd r0, r1, [var_5ch]");
    0x0000ad44 lsl.w r2, r4, r2                                      |     r2 = r4 << r2;
    0x0000ad48 asrs r3, r2, 0x1f                                     |     r3 = r2 >> 0x1f;
    0x0000ad4a bl 0x120a8                                            |     r0 = fcn_000120a8 (r0, r1, r2, r3);
    0x0000ad4e mov r2, r0                                            |     r2 = r0;
    0x0000ad50 mov r3, r1                                            |     r3 = r1;
    0x0000ad52 mov r0, fp                                            |     r0 = fp;
    0x0000ad54 ldr r1, [sp, 0x58]                                    |     r1 = var_58h;
    0x0000ad56 blx 0x3708                                            |     r0 = e2p_edit_feature ();
    0x0000ad5a cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ad5c bne.w 0xabe6                                          |         goto label_6;
                                                                     |     }
    0x0000ad60 ldr.w r3, [fp, 0x14]                                  |     r3 = *(arg_74h);
    0x0000ad64 mov r0, fp                                            |     r0 = fp;
    0x0000ad66 ldr r2, [sp, 0x5c]                                    |     r2 = var_5ch;
    0x0000ad68 ldr r6, [sp, 0x60]                                    |     r6 = *(arg_0h);
    0x0000ad6a ldr r1, [sp, 0x58]                                    |     r1 = var_58h;
    0x0000ad6c umull r2, r5, r3, r2                                  |     r2:r5 = r3 * r2;
    0x0000ad70 mla r3, r3, r6, r5                                    |     __asm ("mla r3, r3, r6, r5");
    0x0000ad74 blx 0x32f0                                            |     r0 = fcn_000032f0 ();
    0x0000ad78 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ad7a bne.w 0xabe6                                          |         goto label_6;
                                                                     |     }
    0x0000ad7e ldr r2, [sp, 0x58]                                    |     r2 = var_58h;
    0x0000ad80 mov r0, fp                                            |     r0 = fp;
    0x0000ad82 ldr r1, [sp, 0x78]                                    |     r1 = *(c);
    0x0000ad84 blx 0x3400                                            |     r0 = fcn_00003400 ();
    0x0000ad88 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ad8a bne.w 0xabe6                                          |         goto label_6;
                                                                     |     }
    0x0000ad8e ldr r3, [pc, 0x294]                                   |     
    0x0000ad90 add r3, pc                                            |     r3 = 0x15dba;
    0x0000ad92 ldr r2, [r3, 0x30]                                    |     r2 = *(0x15dea);
    0x0000ad94 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000ad96 bne.w 0xaf22                                          |         goto label_46;
                                                                     |     }
    0x0000ad9a ldr r2, [r3, 8]                                       |     r2 = *((r3 + 8));
    0x0000ad9c cmp r2, 1                                             |     
                                                                     |     if (r2 >= 1) {
    0x0000ad9e bls 0xadb4                                            |         
    0x0000ada0 ldr r0, [r3, 0x20]                                    |         r0 = *((r3 + 0x20));
    0x0000ada2 mov r1, r4                                            |         r1 = r4;
    0x0000ada4 ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0000ada6 mov.w r2, -1                                          |         r2 = -1;
    0x0000adaa str r3, [sp]                                          |         *(sp) = r3;
    0x0000adac ldr r3, [pc, 0x278]                                   |         
    0x0000adae add r3, pc                                            |         r3 = 0x15dda;
    0x0000adb0 blx 0x3594                                            |         ext2fs_open2 ();
                                                                     |     }
                                                                     | label_19:
    0x0000adb4 ldr r5, [pc, 0x274]                                   |     
    0x0000adb6 movs r4, 1                                            |     r4 = 1;
    0x0000adb8 ldr r6, [sp, 0x6c]                                    |     r6 = *(arg_6ch);
    0x0000adba add r5, pc                                            |     r5 = 0x15dea;
    0x0000adbc b 0xadcc                                              |     goto label_47;
                                                                     | label_7:
    0x0000adbe mov r1, r6                                            |     r1 = r6;
    0x0000adc0 mov r0, fp                                            |     r0 = fp;
    0x0000adc2 blx 0x3570                                            |     r0 = ext2fs_init_csum_seed ();
    0x0000adc6 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000adc8 bne.w 0xabe6                                          |         goto label_6;
                                                                     |     }
                                                                     | label_47:
    0x0000adcc ldr r3, [sp, 0x78]                                    |     r3 = *(c);
    0x0000adce mov r1, r6                                            |     r1 = r6;
    0x0000add0 str r4, [sp]                                          |     *(sp) = r4;
    0x0000add2 mov r0, fp                                            |     r0 = fp;
    0x0000add4 ldr r2, [r5, 0x34]                                    |     r2 = *((r5 + 0x34));
    0x0000add6 blx 0x387c                                            |     uuid_generate_time ();
    0x0000add8 vldr d25, [r2, -0x74]                                 |     __asm ("vldr d25, [r2, -0x74]");
    0x0000addc cmp r0, r3                                            |     
                                                                     |     if (r0 == r3) {
    0x0000adde beq 0xadbe                                            |         goto label_7;
                                                                     |     }
    0x0000ade0 ldr r3, [sp, 0x7c]                                    |     r3 = *(arg_7ch);
    0x0000ade2 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ade4 bne.w 0xaf3e                                          |         goto label_48;
                                                                     |     }
                                                                     |     if (r3 != 0) {
    0x0000ade8 cbz r3, 0xadf0                                        |         
    0x0000adea mov r0, r3                                            |         r0 = r3;
    0x0000adec blx 0x37f8                                            |         ext2fs_numeric_progress_close ();
                                                                     |     }
    0x0000adf0 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0000adf2 adds r3, 1                                            |     r3++;
    0x0000adf4 mov r1, r3                                            |     r1 = r3;
    0x0000adf6 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0000adf8 ldr r3, [pc, 0x234]                                   |     
    0x0000adfa add r3, pc                                            |     r3 = 0x15e2e;
    0x0000adfc ldr r2, [r3, 8]                                       |     r2 = *(0x15e36);
    0x0000adfe cmp r2, r1                                            |     
                                                                     |     if (r2 < r1) {
    0x0000ae00 bls 0xaec2                                            |         goto label_38;
                                                                     |     }
    0x0000ae02 ldr r2, [r3, 0x18]                                    |     r2 = *((r3 + 0x18));
    0x0000ae04 ldr r3, [r3, 0x1c]                                    |     r3 = *((r3 + 0x1c));
    0x0000ae06 str r2, [sp, 0x20]                                    |     var_20h = r2;
    0x0000ae08 str r3, [sp, 0x24]                                    |     var_24h = r3;
    0x0000ae0a b 0xaafa                                              |     goto label_8;
                                                                     | label_41:
    0x0000ae0c cmp r0, 2                                             |     
                                                                     |     if (r0 != 2) {
    0x0000ae0e bne.w 0xac2e                                          |         goto label_9;
                                                                     |     }
    0x0000ae12 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000ae14 ldr r0, [r3, 0x10]                                    |     r0 = *((r3 + 0x10));
    0x0000ae16 blx 0x33dc                                            |     fcn_000033dc ();
    0x0000ae1a ldrd r3, r2, [sp, 0x20]                               |     __asm ("ldrd r3, r2, [var_20h]");
    0x0000ae1e strd r0, r1, [sp, 0x4c]                               |     __asm ("strd r0, r1, [sp, 0x4c]");
    0x0000ae22 orrs r3, r2                                           |     r3 |= r2;
                                                                     |     if (r3 == r2) {
    0x0000ae24 beq 0xaf00                                            |         goto label_49;
                                                                     |     }
                                                                     | label_42:
    0x0000ae26 ldr r3, [sp, 0x64]                                    |     r3 = *(arg_4h);
    0x0000ae28 ldr r2, [sp, 0x50]                                    |     r2 = var_50h;
    0x0000ae2a ldr r1, [sp, 0x3c]                                    |     r1 = var_ch;
    0x0000ae2c ldrd r6, fp, [r3, 0x28]                               |     __asm ("ldrd r6, fp, [r3, 0x28]");
    0x0000ae30 ldr r3, [sp, 0x4c]                                    |     r3 = var_4ch;
    0x0000ae32 subs r3, r3, r6                                       |     r3 -= r6;
    0x0000ae34 sbc.w r2, r2, fp                                      |     __asm ("sbc.w r2, r2, fp");
    0x0000ae38 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000ae3a cmp r3, r1                                            |     
    0x0000ae3c ldr r3, [sp, 0x40]                                    |     r3 = var_40h;
    0x0000ae3e str r2, [sp, 0x44]                                    |     var_44h = r2;
    0x0000ae40 sbcs r2, r3                                           |     __asm ("sbcs r2, r3");
                                                                     |     if (r3 >= r1) {
    0x0000ae42 bhs 0xae98                                            |         goto label_50;
                                                                     |     }
    0x0000ae44 ldr r0, [sp, 0x4c]                                    |     r0 = var_4ch;
    0x0000ae46 ldr r4, [sp, 0x3c]                                    |     r4 = var_ch;
    0x0000ae48 ldr r3, [sp, 0x50]                                    |     r3 = var_50h;
    0x0000ae4a subs r2, r6, r0                                       |     r2 = r6 - r0;
    0x0000ae4c sbc.w r1, fp, r3                                      |     __asm ("sbc.w r1, fp, r3");
    0x0000ae50 adds r2, r2, r4                                       |     r2 += r4;
    0x0000ae52 ldr r4, [sp, 0x40]                                    |     r4 = var_40h;
    0x0000ae54 adc.w r1, r4, r1                                      |     __asm ("adc.w r1, r4, r1");
    0x0000ae56 lsls r1, r0, 4                                        |     r1 = r0 << 4;
    0x0000ae58 strd r2, r1, [sp, 0x3c]                               |     __asm ("strd r2, r1, [sp, 0x3c]");
    0x0000ae5c mov r1, r3                                            |     r1 = r3;
    0x0000ae5e b 0xac50                                              |     goto label_10;
                                                                     | label_43:
    0x0000ae60 ldr r3, [sp, 0x34]                                    |     r3 = var_4h;
    0x0000ae62 movs r2, 0                                            |     r2 = 0;
    0x0000ae64 str r2, [sp, 8]                                       |     var_8h_2 = r2;
    0x0000ae66 mov r2, r6                                            |     r2 = r6;
    0x0000ae68 ldr r0, [sp, 0x28]                                    |     r0 = var_28h;
    0x0000ae6a str r3, [sp, 4]                                       |     var_4h_2 = r3;
    0x0000ae6c ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000ae6e str r3, [sp]                                          |     *(sp) = r3;
    0x0000ae70 mov r3, fp                                            |     r3 = fp;
    0x0000ae72 blx 0x2f1c                                            |     r0 = ext2fs_zero_blocks2 ();
    0x0000ae76 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ae78 beq.w 0xac76                                          |         goto label_11;
                                                                     |     }
    0x0000ae7c ldr r3, [sp, 0x38]                                    |     r3 = s2;
    0x0000ae7e mov r1, r0                                            |     r1 = r0;
    0x0000ae80 ldr r2, [pc, 0x194]                                   |     r2 = *(0xb018);
    0x0000ae82 ldrd r4, r5, [sp, 0x80]                               |     __asm ("ldrd r4, r5, [arg_80h]");
    0x0000ae86 ldr r2, [r3, r2]                                      |     r2 = *((r3 + r2));
    0x0000ae88 ldr r0, [r2]                                          |     r0 = *(0xb018);
    0x0000ae8a ldr r2, [pc, 0x1a8]                                   |     
    0x0000ae8c strd r4, r5, [sp]                                     |     __asm ("strd r4, r5, [sp]");
    0x0000ae90 add r2, pc                                            |     r2 = 0x15eca;
    0x0000ae92 blx 0x32cc                                            |     fcn_000032cc ();
    0x0000ae96 b 0xac76                                              |     goto label_11;
                                                                     | label_50:
    0x0000ae98 ldr r3, [sp, 0x3c]                                    |     r3 = var_ch;
    0x0000ae9a ldr r2, [sp, 0x40]                                    |     r2 = var_40h;
    0x0000ae9c adds r0, r6, r3                                       |     r0 = r6 + r3;
    0x0000ae9e str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000aea0 mov.w r3, 0                                           |     r3 = 0;
    0x0000aea4 adc.w r1, fp, r2                                      |     __asm ("adc.w r1, fp, r2");
    0x0000aea8 str r3, [sp, 0x3c]                                    |     var_ch = r3;
    0x0000aeaa strd r3, r2, [sp, 0x40]                               |     __asm ("strd r3, r2, [sp, 0x40]");
    0x0000aeae b 0xac50                                              |     goto label_10;
                                                                     | label_35:
    0x0000aeb0 ldr r3, [pc, 0x184]                                   |     
    0x0000aeb2 add r3, pc                                            |     
    0x0000aeb4 ldr r3, [r3, 8]                                       |     r3 = *(0x15ef6);
    0x0000aeb6 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000aeb8 bne.w 0xaacc                                          |         goto label_12;
                                                                     |     }
                                                                     |     do {
    0x0000aebc mov.w fp, 0                                           |         
    0x0000aec0 b 0xacfc                                              |         goto label_13;
                                                                     | label_38:
    0x0000aec2 ldr r3, [sp, 0x70]                                    |         r3 = *(arg_70h);
    0x0000aec4 ldr.w fp, [r3]                                        |         fp = *(r3);
    0x0000aec8 cmp.w fp, 0                                           |         
    0x0000aecc bne 0xaebc                                            |         
                                                                     |     } while (fp != 0);
    0x0000aece ldr r1, [sp, 0x38]                                    |     r1 = s2;
    0x0000aed0 movs r2, 5                                            |     r2 = 5;
    0x0000aed2 ldr r3, [pc, 0x120]                                   |     
    0x0000aed4 ldr r0, [pc, 0x164]                                   |     
    0x0000aed6 ldr r3, [r1, r3]                                      |     r3 = *((r1 + r3));
    0x0000aed8 movs r1, 1                                            |     r1 = 1;
    0x0000aeda add r0, pc                                            |     r0 = 0x15f1a;
    0x0000aedc ldr r3, [r3]                                          |     r3 = *(0xaff6);
    0x0000aede blx 0x3324                                            |     strcat (r0, r1);
    0x0000aee2 b 0xacfc                                              |     goto label_13;
                                                                     | label_34:
    0x0000aee4 subs r2, r5, r2                                       |     r2 = r5 - r2;
    0x0000aee6 adds r2, r2, r4                                       |     r2 += r4;
    0x0000aee8 mov r4, r2                                            |     r4 = r2;
    0x0000aeea adc r7, r7, 0                                         |     __asm ("adc r7, r7, 0");
    0x0000aeee b 0xaa0e                                              |     goto label_14;
                                                                     | label_30:
    0x0000aef0 movs r3, 1                                            |     r3 = 1;
    0x0000aef2 mov r6, r7                                            |     r6 = r7;
    0x0000aef4 ldrd sb, r5, [sp, 0x28]                               |     __asm ("ldrd sb, r5, [var_28h]");
    0x0000aef8 mov fp, r3                                            |     
    0x0000aefa mov r7, r3                                            |     r7 = r3;
    0x0000aefc str r3, [r4, 8]                                       |     *((r4 + 8)) = r3;
    0x0000aefe b 0xa932                                              |     goto label_15;
                                                                     | label_49:
    0x0000af00 ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000af02 str r3, [sp, 0x3c]                                    |     var_ch = r3;
    0x0000af04 ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0000af06 str r3, [sp, 0x40]                                    |     var_40h = r3;
    0x0000af08 b 0xac38                                              |     goto label_16;
                                                                     | label_37:
    0x0000af0a ldr r1, [pc, 0x134]                                   |     
    0x0000af0c movs r0, 1                                            |     r0 = 1;
    0x0000af0e add r1, pc                                            |     r1 = 0x15f54;
    0x0000af10 blx 0x3620                                            |     fcn_00003620 ();
    0x0000af14 b 0xaa9e                                              |     goto label_17;
                                                                     | label_33:
    0x0000af16 mov r2, r5                                            |     r2 = r5;
    0x0000af18 mov r5, fp                                            |     r5 = fp;
    0x0000af1a adds r4, r2, r5                                       |     r4 = r2 + r5;
    0x0000af1c adc.w r7, r6, r3                                      |     __asm ("adc.w r7, r6, r3");
    0x0000af20 b 0xa9ea                                              |     goto label_18;
                                                                     | label_46:
    0x0000af22 str r2, [sp]                                          |     *(sp) = r2;
    0x0000af24 mov r1, r4                                            |     r1 = r4;
    0x0000af26 ldr r0, [r3, 0x20]                                    |     r0 = *((r3 + 0x20));
    0x0000af28 mov.w r2, -1                                          |     r2 = -1;
    0x0000af2c ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0000af2e str r3, [sp, 4]                                       |     var_4h_2 = r3;
    0x0000af30 ldr r3, [pc, 0x110]                                   |     
    0x0000af32 add r3, pc                                            |     r3 = 0x15f7a;
    0x0000af34 blx 0x3594                                            |     ext2fs_open2 ();
    0x0000af38 b 0xadb4                                              |     goto label_19;
                                                                     | label_31:
    0x0000af3a blx 0x31f4                                            |     r0 = fcn_000031f4 ();
                                                                     | label_48:
    0x0000af3e mov fp, r0                                            |     
    0x0000af40 mov r0, r3                                            |     r0 = r3;
    0x0000af42 b 0xabea                                              |     goto label_20;
                                                                     | label_28:
    0x0000af44 mov r0, r7                                            |     r0 = r7;
    0x0000af46 mov.w fp, 0xc                                         |     
    0x0000af4a blx 0x3098                                            |     fcn_00003098 ();
    0x0000af4e b 0xa82a                                              |     goto label_2;
                                                                     | label_24:
    0x0000af50 ldr r0, [sp, 0x10]                                    |     r0 = var_10h;
    0x0000af52 mov.w fp, 0xc                                         |     
    0x0000af56 blx 0x3098                                            |     fcn_00003098 ();
    0x0000af5a b 0xa82a                                              |     goto label_2;
                                                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0xb460 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) fcn.0000b460 ()                                  | void fcn_0000b460 (int16_t arg_b0h, int16_t arg_c0h, int16_t arg_2e0h, int16_t arg_340h, int16_t arg_390h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_ch;
                                                             |     int16_t var_0h;
                                                             |     int16_t c;
                                                             |     int16_t var_ch_2;
                                                             |     int16_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_18h_2;
                                                             |     int16_t var_26h;
                                                             |     int32_t var_34h;
                                                             |     int32_t var_34h_2;
                                                             |     int16_t var_8ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x0000b460 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x0000b464 and r7, r3, 0xf000                            |     r7 = r3 & 0xf000;
    0x0000b468 ldr r4, [pc, 0x1d0]                           |     
    0x0000b46a cmp.w r7, 0x6000                              |     
    0x0000b46e sub sp, 0x94                                  |     
    0x0000b470 mov r5, r0                                    |     r5 = r0;
    0x0000b472 ldr r3, [pc, 0x1cc]                           |     r3 = *(0xb642);
    0x0000b474 mov r6, r1                                    |     r6 = r1;
    0x0000b476 add r4, pc                                    |     r4 = 0x16ab6;
    0x0000b478 mov r8, r2                                    |     r8 = r2;
    0x0000b47a ldr r3, [r4, r3]                              |     
    0x0000b47c ldr r3, [r3]                                  |     r3 = *(0x16ab6);
    0x0000b47e str r3, [sp, 0x8c]                            |     var_8ch = r3;
    0x0000b480 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r7 == 0x6000) {
    0x0000b484 beq.w 0xb5c0                                  |         goto label_5;
                                                             |     }
                                                             |     if (r7 > 0x6000) {
    0x0000b488 bhi.w 0xb590                                  |         goto label_6;
                                                             |     }
    0x0000b48c cmp.w r7, 0x1000                              |     
                                                             |     if (r7 == 0x1000) {
    0x0000b490 beq.w 0xb5a6                                  |         goto label_7;
                                                             |     }
    0x0000b494 cmp.w r7, 0x2000                              |     
    0x0000b498 it eq                                         |     
                                                             |     if (r7 != 0x2000) {
    0x0000b49a moveq sb, 3                                   |         sb = 3;
                                                             |     }
                                                             |     if (r7 != 0x2000) {
    0x0000b49e bne 0xb59c                                    |         goto label_8;
                                                             |     }
                                                             |     do {
                                                             | label_1:
    0x0000b4a0 add r3, sp, 8                                 |         r3 += c;
    0x0000b4a2 movw r2, 0x11ed                               |         r2 = 0x11ed;
    0x0000b4a6 str r3, [sp]                                  |         *(sp) = r3;
    0x0000b4a8 mov r1, r6                                    |         r1 = r6;
    0x0000b4aa movs r3, 0                                    |         r3 = 0;
    0x0000b4ac mov r0, r5                                    |         r0 = r5;
    0x0000b4ae blx 0x336c                                    |         strcpy (r0, r1)
    0x0000b4b0 vmax.s16 d20, d14, d4                         |         __asm ("vmax.s16 d20, d14, d4");
    0x0000b4b2 mov r4, r0                                    |         r4 = r0;
    0x0000b4b4 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0000b4b6 bne 0xb5ac                                    |             goto label_9;
                                                             |         }
    0x0000b4b8 ldr r3, [sp, 8]                               |         r3 = c;
    0x0000b4ba mov r2, r8                                    |         r2 = r8;
    0x0000b4bc mov r1, r6                                    |         r1 = r6;
    0x0000b4be mov r0, r5                                    |         r0 = r5;
    0x0000b4c0 str.w sb, [sp]                                |         __asm ("str.w sb, [sp]");
    0x0000b4c4 blx 0x387c                                    |         uuid_generate_time ();
    0x0000b4c8 movw r3, 0xb726                               |         
    0x0000b4ca strb r6, [r4, 0xc]                            |         *((r4 + 0xc)) = r6;
    0x0000b4cc mov r4, r0                                    |         r4 = r0;
    0x0000b4ce movt r3, 0x7f2b                               |         r3 = 0x7f2bb726;
    0x0000b4d2 cmp r0, r3                                    |         
                                                             |         if (r0 == r3) {
    0x0000b4d4 beq 0xb5c6                                    |             goto label_10;
                                                             |         }
    0x0000b4d6 cmp r4, 0                                     |         
                                                             |         if (r4 != 0) {
    0x0000b4d8 bne.w 0xb5ea                                  |             goto label_11;
                                                             |         }
                                                             | label_2:
    0x0000b4dc ldr r2, [sp, 8]                               |         r2 = c;
    0x0000b4de mov r3, r4                                    |         r3 = r4;
    0x0000b4e0 ldr r0, [r5, 0x2c]                            |         r0 = *((r5 + 0x2c));
    0x0000b4e2 blx 0x3738                                    |         r0 = ext2fs_block_bitmap_loc_set ();
    0x0000b4e6 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0000b4e8 bne.w 0xb5fa                                  |             goto label_12;
                                                             |         }
                                                             | label_3:
    0x0000b4ec ldr r1, [sp, 8]                               |         r1 = c;
    0x0000b4ee movs r3, 0                                    |         r3 = 0;
    0x0000b4f0 movs r2, 1                                    |         r2 = 1;
    0x0000b4f2 mov r0, r5                                    |         r0 = r5;
    0x0000b4f4 add r6, sp, 0xc                               |         r6 += var_ch_2;
    0x0000b4f6 blx 0x3798                                    |         strrchr (r0, r1);
    0x0000b4fa movs r2, 0x80                                 |         r2 = 0x80;
    0x0000b4fc movs r1, 0                                    |         r1 = 0;
    0x0000b4fe mov r0, r6                                    |         r0 = r6;
    0x0000b500 blx 0x35bc                                    |         fcn_000035bc ();
    0x0000b504 ldr r0, [r5, 0x60]                            |         r0 = *((r5 + 0x60));
    0x0000b506 strh.w r7, [sp, 0xc]                          |         var_ch_2 = r7;
    0x0000b50a cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0000b50c beq.w 0xb620                                  |             goto label_13;
                                                             |         }
                                                             | label_4:
    0x0000b510 ldr r3, [sp, 0xb0]                            |         r3 = *(arg_b0h);
    0x0000b512 mov r7, r0                                    |         r7 = r0;
    0x0000b514 ldr r2, [sp, 0xb0]                            |         r2 = *(arg_b0h);
    0x0000b516 strd r7, r7, [sp, 0x18]                       |         __asm ("strd r7, r7, [var_18h]");
    0x0000b51a str r7, [sp, 0x14]                            |         var_14h = r7;
    0x0000b51c lsrs r1, r3, 8                                |         r1 = r3 >> 8;
    0x0000b51e lsrs r3, r3, 0xc                              |         r3 >>= 0xc;
    0x0000b520 uxtb r2, r2                                   |         r2 = (int8_t) r2;
    0x0000b522 bic r3, r3, 0xff                              |         r3 = BIT_MASK (r3, 0xff);
    0x0000b526 orrs r3, r2                                   |         r3 |= r2;
    0x0000b528 ubfx r0, r1, 0, 0xc                           |         r0 = (r1 >> 0) & ((1 << 0xc) - 1);
    0x0000b52c and r1, r1, 0xf00                             |         r1 &= 0xf00;
    0x0000b530 cmp r3, 0xff                                  |         
    0x0000b532 it ls                                         |         
                                                             |         if (r3 <= 0xff) {
    0x0000b534 cmpls r1, 0                                   |             __asm ("cmpls r1, 0");
                                                             |         }
    0x0000b536 itttt ne                                      |         
                                                             |         if (r3 == 0xff) {
    0x0000b538 movne r1, 0                                   |             r1 = 0;
                                                             |         }
                                                             |         if (r3 != 0xff) {
    0x0000b53a uxtbne r2, r3                                 |             __asm ("uxtbne r2, r3");
                                                             |         }
                                                             |         if (r3 != 0xff) {
    0x0000b53c movtne r1, 0xfff0                             |             __asm ("movtne r1, 0xfff0");
                                                             |         }
                                                             |         if (r3 != 0xff) {
    0x0000b540 orr.w r2, r2, r0, lsl 8                       |             r2 |= (r0 << 8);
                                                             |         }
    0x0000b544 iteet ne                                      |         
                                                             |         if (r3 == 0xff) {
    0x0000b546 andne r1, r1, r3, lsl 12                      |             r1 &= (r3 << 12);
                                                             |         }
                                                             |         if (r3 != 0xff) {
    0x0000b548 addeq r1, 3                                   |             r1 += 3;
                                                             |         }
                                                             |         if (r3 != 0xff) {
    0x0000b54a moveq r4, 1                                   |             r4 = 1;
                                                             |         }
                                                             |         if (r3 == 0xff) {
    0x0000b54c addne r4, r3, r0, lsl 8                       |             r4 = r3 + (r0 << 8);
                                                             |         }
    0x0000b550 orr.w r3, r2, r1                              |         r3 = r2 | r1;
    0x0000b554 ldr r1, [sp, 8]                               |         r1 = c;
    0x0000b556 ite ne                                        |         
                                                             |         if (r3 == 0xff) {
    0x0000b558 movne r4, 0                                   |             r4 = 0;
                                                             |         }
                                                             |         if (r3 != 0xff) {
    0x0000b55a moveq r3, 0                                   |             r3 = 0;
                                                             |         }
    0x0000b55c mov r0, r5                                    |         r0 = r5;
    0x0000b55e mov r2, r6                                    |         r2 = r6;
    0x0000b560 movs r5, 1                                    |         r5 = 1;
    0x0000b562 strd r4, r3, [sp, 0x34]                       |         __asm ("strd r4, r3, [var_34h]");
    0x0000b566 strh.w r5, [sp, 0x26]                         |         var_26h = r5;
    0x0000b56a blx 0x3400                                    |         r0 = fcn_00003400 ();
    0x0000b56e mov r4, r0                                    |         r4 = r0;
    0x0000b570 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0000b572 bne 0xb60c                                    |             goto label_14;
                                                             |         }
                                                             | label_0:
    0x0000b574 ldr r2, [pc, 0xcc]                            |         
    0x0000b576 ldr r3, [pc, 0xc8]                            |         r3 = *(0xb642);
    0x0000b578 add r2, pc                                    |         r2 = 0x16bc0;
    0x0000b57a ldr r3, [r2, r3]                              |         r3 = *(0x16bc0);
    0x0000b57c ldr r2, [r3]                                  |         r2 = *(0x16bc0);
    0x0000b57e ldr r3, [sp, 0x8c]                            |         r3 = var_8ch;
    0x0000b580 eors r2, r3                                   |         r2 ^= r3;
    0x0000b582 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000b586 bne 0xb638                                    |             goto label_15;
                                                             |         }
    0x0000b588 mov r0, r4                                    |         r0 = r4;
    0x0000b58a add sp, 0x94                                  |         
    0x0000b58c pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             | label_6:
    0x0000b590 cmp.w r7, 0xc000                              |         
    0x0000b594 it eq                                         |         
                                                             |         if (r7 != 0xc000) {
    0x0000b596 moveq sb, 6                                   |             sb = 6;
                                                             |         }
    0x0000b59a beq 0xb4a0                                    |         
                                                             |     } while (r7 == 0xc000);
                                                             | label_8:
    0x0000b59c movw r4, 0xb747                               |     
    0x0000b5a0 movt r4, 0x7f2b                               |     r4 = 0x7f2bb747;
    0x0000b5a4 b 0xb574                                      |     goto label_0;
                                                             | label_7:
    0x0000b5a6 mov.w sb, 5                                   |     sb = 5;
    0x0000b5aa b 0xb4a0                                      |     goto label_1;
                                                             | label_9:
    0x0000b5ac ldr r0, [pc, 0x98]                            |     
    0x0000b5ae mov r3, r8                                    |     r3 = r8;
    0x0000b5b0 ldr r2, [pc, 0x98]                            |     
    0x0000b5b2 mov r1, r4                                    |     r1 = r4;
    0x0000b5b4 add r0, pc                                    |     r0 = 0x16c00;
    0x0000b5b6 add r2, pc                                    |     r2 = 0x16c06;
    0x0000b5b8 adds r0, 0x10                                 |     r0 += 0x10;
    0x0000b5ba blx 0x32cc                                    |     fcn_000032cc ();
    0x0000b5be b 0xb574                                      |     goto label_0;
                                                             | label_5:
    0x0000b5c0 mov.w sb, 4                                   |     sb = 4;
    0x0000b5c4 b 0xb4a0                                      |     goto label_1;
                                                             | label_10:
    0x0000b5c6 mov r1, r6                                    |     r1 = r6;
    0x0000b5c8 mov r0, r5                                    |     r0 = r5;
    0x0000b5ca blx 0x3570                                    |     r0 = ext2fs_init_csum_seed ();
    0x0000b5ce mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 != 0) {
    0x0000b5d0 cbnz r0, 0xb626                               |         goto label_16;
                                                             |     }
    0x0000b5d2 ldr r3, [sp, 8]                               |     r3 = c;
    0x0000b5d4 mov r1, r6                                    |     r1 = r6;
    0x0000b5d6 mov r2, r8                                    |     r2 = r8;
    0x0000b5d8 mov r0, r5                                    |     r0 = r5;
    0x0000b5da str.w sb, [sp]                                |     __asm ("str.w sb, [sp]");
    0x0000b5de blx 0x387c                                    |     r0 = uuid_generate_time ();
    0x0000b5e2 mov r4, r0                                    |     r4 = r0;
    0x0000b5e4 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x0000b5e6 beq.w 0xb4dc                                  |         goto label_2;
                                                             |     }
                                                             | label_11:
    0x0000b5ea ldr r2, [pc, 0x64]                            |     
    0x0000b5ec mov r3, r8                                    |     r3 = r8;
    0x0000b5ee mov r1, r4                                    |     r1 = r4;
    0x0000b5f0 mov r0, r8                                    |     r0 = r8;
    0x0000b5f2 add r2, pc                                    |     r2 = 0x16c48;
    0x0000b5f4 blx 0x32cc                                    |     fcn_000032cc ();
    0x0000b5f8 b 0xb574                                      |     goto label_0;
                                                             | label_12:
    0x0000b5fa ldr r0, [pc, 0x58]                            |     
    0x0000b5fc mov r1, r4                                    |     r1 = r4;
    0x0000b5fe ldr r2, [pc, 0x58]                            |     
    0x0000b600 add r0, pc                                    |     r0 = 0x16c5a;
    0x0000b602 add r2, pc                                    |     r2 = 0x16c60;
    0x0000b604 adds r0, 0x10                                 |     r0 += 0x10;
    0x0000b606 blx 0x32cc                                    |     fcn_000032cc ();
    0x0000b60a b 0xb4ec                                      |     goto label_3;
                                                             | label_14:
    0x0000b60c ldr r0, [pc, 0x4c]                            |     
    0x0000b60e mov r1, r4                                    |     r1 = r4;
    0x0000b610 ldr r2, [pc, 0x4c]                            |     
    0x0000b612 ldr r3, [sp, 8]                               |     r3 = c;
    0x0000b614 add r0, pc                                    |     r0 = 0x16c74;
    0x0000b616 add r2, pc                                    |     r2 = 0x16c7a;
    0x0000b618 adds r0, 0x10                                 |     r0 += 0x10;
    0x0000b61a blx 0x32cc                                    |     fcn_000032cc ();
    0x0000b61c cdp p7, 5, c14, c8, c9, 5                     |     __asm ("cdp p7, 5, c14, c8, c9, 5");
                                                             | label_13:
    0x0000b620 blx 0x3134                                    |     fcn_00003134 ();
    0x0000b624 b 0xb510                                      |     goto label_4;
                                                             | label_16:
    0x0000b626 ldr r0, [pc, 0x3c]                            |     
    0x0000b628 mov r1, r4                                    |     r1 = r4;
    0x0000b62a ldr r2, [pc, 0x3c]                            |     
    0x0000b62c add r0, pc                                    |     r0 = 0x16c96;
    0x0000b62e add r2, pc                                    |     r2 = 0x16c9c;
    0x0000b630 adds r0, 0x10                                 |     r0 += 0x10;
    0x0000b632 blx 0x32cc                                    |     fcn_000032cc ();
    0x0000b636 b 0xb574                                      |     goto label_0;
                                                             | label_15:
    0x0000b638 blx 0x31f4                                    |     fcn_000031f4 ();
    0x0000b63c stm r7!, {r1, r2, r3, r5, r6}                 |     *(r7!) = r1;
                                                             |     *((r7! + 4)) = r2;
                                                             |     *((r7! + 8)) = r3;
                                                             |     *((r7! + 12)) = r5;
                                                             |     *((r7! + 16)) = r6;
    0x0000b63e movs r1, r0                                   |     r1 = r0;
    0x0000b640 lsls r4, r5, 0xe                              |     r4 = r5 << 0xe;
    0x0000b642 movs r0, r0                                   |     
    0x0000b644 stm r6!, {r2, r3, r5, r6}                     |     *(r6!) = r2;
                                                             |     *((r6! + 4)) = r3;
                                                             |     *((r6! + 8)) = r5;
                                                             |     *((r6! + 12)) = r6;
    0x0000b646 movs r1, r0                                   |     r1 = r0;
    0x0000b648 add r2, sp, 0xc0                              |     r2 += arg_c0h;
    0x0000b64a movs r0, r0                                   |     
    0x0000b64c adr r6, 0x2b8                                 |     r6 = segment.PHDR;
    0x0000b64e movs r0, r0                                   |     
    0x0000b650 adr r6, 0x2a8                                 |     r6 = fcn.00000004;
    0x0000b652 movs r0, r0                                   |     
    0x0000b654 add r1, sp, 0x390                             |     r1 += arg_390h;
    0x0000b656 movs r0, r0                                   |     
    0x0000b658 adr r6, 0x2d8                                 |     r6 = 0x2d8;
    0x0000b65a movs r0, r0                                   |     
    0x0000b65c add r1, sp, 0x340                             |     r1 += arg_340h;
    0x0000b65e movs r0, r0                                   |     
    0x0000b660 adr r6, 0x2f8                                 |     r6 = 0x2f8;
    0x0000b662 movs r0, r0                                   |     
    0x0000b664 add r1, sp, 0x2e0                             |     r1 += arg_2e0h;
    0x0000b666 movs r0, r0                                   |     
    0x0000b668 adr r6, 0x148                                 |     r6 = 0x148;
    0x0000b66a movs r0, r0                                   |     
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0xb860 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0000b860 ()                                      | void fcn_0000b860 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h_3;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h_3;
                                                                 |     int16_t var_ch_3;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t c;
                                                                 |     char * src;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_9ch;
                                                                 |     int16_t var_a4h;
                                                                 |     int16_t var_b6h;
                                                                 |     int16_t var_bch;
                                                                 |     int16_t var_11ch;
                                                                 |     int16_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0000b860 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000b864 mov r4, r1                                        |     r4 = r1;
    0x0000b866 ldr.w r1, [pc, 0x4cc]                             |     r1 = *(0x0000bd34);
    0x0000b86a mov r7, r3                                        |     r7 = r3;
    0x0000b86c mov r8, r2                                        |     r8 = r2;
    0x0000b86e movs r2, 0                                        |     r2 = 0;
    0x0000b870 ldr.w r3, [pc, 0x4c4]                             |     
    0x0000b874 sub sp, 0x124                                     |     
    0x0000b876 add r1, pc                                        |     r1 += pc;
    0x0000b878 mov r6, r0                                        |     r6 = r0;
    0x0000b87a mov r0, r8                                        |     r0 = r8;
    0x0000b87c ldr r3, [r1, r3]                                  |     r3 = *((r1 + r3));
    0x0000b87e mov r1, r2                                        |     r1 = r2;
    0x0000b880 ldr r3, [r3]                                      |     r3 = *(0xbd38);
    0x0000b882 str r3, [sp, 0x11c]                               |     var_11ch = r3;
    0x0000b884 mov.w r3, 0                                       |     r3 = 0;
    0x0000b888 blx 0x39a8                                        |     r0 = fcn_000039a8 ();
    0x0000b88c subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 < r0) {
    0x0000b88e blt 0xb92c                                        |         goto label_12;
                                                                 |     }
    0x0000b890 add r1, sp, 0x30                                  |     r1 += var_30h;
    0x0000b892 blx 0x38b8                                        |     r0 = scandir64 ();
    0x0000b896 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000b898 blt.w 0xbad2                                      |         goto label_13;
                                                                 |     }
    0x0000b89c movs r1, 0x2f                                     |     r1 = 0x2f;
    0x0000b89e mov r0, r7                                        |     r0 = r7;
    0x0000b8a0 blx 0x37bc                                        |     r0 = ext2fs_bg_itable_unused ();
    0x0000b8a4 mov r8, r0                                        |     r8 = r0;
    0x0000b8a6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000b8a8 beq 0xb928                                        |         goto label_14;
                                                                 |     }
    0x0000b8aa movs r3, 0                                        |     r3 = 0;
    0x0000b8ac mov r2, r4                                        |     r2 = r4;
    0x0000b8ae strb r3, [r0]                                     |     *(r0) = r3;
    0x0000b8b0 add r3, sp, 0x28                                  |     r3 += src;
    0x0000b8b2 str r3, [sp]                                      |     *(sp) = r3;
    0x0000b8b4 mov r0, r6                                        |     r0 = r6;
    0x0000b8b6 ldr r1, [sp, 0x148]                               |     r1 = var_0h_2;
    0x0000b8b8 mov r3, r7                                        |     r3 = r7;
    0x0000b8ba blx 0x3110                                        |     r0 = fcn_00003110 ();
    0x0000b8be mov r4, r0                                        |     r4 = r0;
    0x0000b8c0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000b8c2 bne.w 0xbada                                      |         goto label_15;
                                                                 |     }
    0x0000b8c6 ldr r4, [sp, 0x28]                                |     r4 = src;
    0x0000b8c8 add.w r7, r8, 1                                   |     r7 = r8 + 1;
                                                                 |     do {
    0x0000b8cc add.w r8, sp, 0x24                                |         r8 += c;
    0x0000b8d0 mov r2, r4                                        |         r2 = r4;
    0x0000b8d2 ldr r1, [sp, 0x148]                               |         r1 = var_0h_2;
    0x0000b8d4 mov r3, r7                                        |         r3 = r7;
    0x0000b8d6 mov r0, r6                                        |         r0 = r6;
    0x0000b8d8 movw r4, 0xb79b                                   |         
    0x0000b8dc str.w r8, [sp]                                    |         __asm ("str.w r8, [sp]");
    0x0000b8e0 movt r4, 0x7f2b                                   |         r4 = 0x7f2bb79b;
    0x0000b8e4 blx 0x3110                                        |         r0 = fcn_00003110 ();
                                                                 |         if (r0 != 0) {
    0x0000b8e8 cbz r0, 0xb900                                    |             
    0x0000b8ea ldr r1, [sp, 0x28]                                |             r1 = src;
    0x0000b8ec movs r3, 0                                        |             r3 = 0;
    0x0000b8ee movw r2, 0x11ed                                   |             r2 = 0x11ed;
    0x0000b8f2 mov r0, r6                                        |             r0 = r6;
    0x0000b8f4 str.w r8, [sp]                                    |             __asm ("str.w r8, [sp]");
    0x0000b8f8 blx 0x336c                                        |             r0 = strcpy (r0, r1)
    0x0000b8fc mov r4, r0                                        |             r4 = r0;
                                                                 |             if (r0 == 0) {
    0x0000b8fe cbz r0, 0xb94a                                    |                 goto label_16;
                                                                 |             }
                                                                 |         }
                                                                 | label_1:
    0x0000b900 mov r0, r5                                        |         r0 = r5;
    0x0000b902 blx 0x3960                                        |         ext2fs_inode_table_loc ();
                                                                 | label_0:
    0x0000b906 ldr.w r2, [pc, 0x434]                             |         r2 = *(0x0000bd3c);
    0x0000b90a ldr.w r3, [pc, 0x42c]                             |         r3 = *(0xbd3a);
    0x0000b90e add r2, pc                                        |         r2 += pc;
    0x0000b910 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x0000b912 ldr r2, [r3]                                      |         r2 = *(0xbd3a);
    0x0000b914 ldr r3, [sp, 0x11c]                               |         r3 = var_11ch;
    0x0000b916 eors r2, r3                                       |         r2 ^= r3;
    0x0000b918 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000b91c bne.w 0xbb62                                      |             goto label_17;
                                                                 |         }
    0x0000b920 mov r0, r4                                        |         r0 = r4;
    0x0000b922 add sp, 0x124                                     |         
    0x0000b924 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_14:
    0x0000b928 str r4, [sp, 0x28]                                |         src = r4;
    0x0000b92a b 0xb8cc                                          |         
                                                                 |     } while (1);
                                                                 | label_12:
    0x0000b92c blx 0x357c                                        |     r0 = sprintf_chk ();
    0x0000b930 ldr r4, [r0]                                      |     r4 = *(r0);
    0x0000b932 mov r3, r8                                        |     r3 = r8;
    0x0000b934 ldr.w r0, [pc, 0x408]                             |     
    0x0000b938 ldr.w r2, [pc, 0x408]                             |     
    0x0000b93c mov r1, r4                                        |     r1 = r4;
    0x0000b93e add r0, pc                                        |     r0 = 0x17682;
    0x0000b940 add r2, pc                                        |     r2 = 0x17688;
    0x0000b942 adds r0, 0x38                                     |     r0 += 0x38;
    0x0000b944 blx 0x32cc                                        |     fcn_000032cc ();
    0x0000b948 b 0xb906                                          |     goto label_0;
                                                                 | label_16:
    0x0000b94a mov.w r8, 1                                       |     r8 = 1;
    0x0000b94e ldr r3, [sp, 0x24]                                |     r3 = c;
    0x0000b950 ldr r1, [sp, 0x28]                                |     r1 = src;
    0x0000b952 mov r2, r7                                        |     r2 = r7;
    0x0000b954 mov r0, r6                                        |     r0 = r6;
    0x0000b956 str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x0000b95a blx 0x387c                                        |     uuid_generate_time ();
    0x0000b95e movw r3, 0xb726                                   |     
    0x0000b962 mov r4, r0                                        |     r4 = r0;
    0x0000b964 movt r3, 0x7f2b                                   |     r3 = 0x7f2bb726;
    0x0000b968 cmp r0, r3                                        |     
                                                                 |     if (r0 == r3) {
    0x0000b96a beq.w 0xbaea                                      |         goto label_18;
                                                                 |     }
                                                                 | label_2:
    0x0000b96e cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x0000b970 bne 0xb900                                        |         goto label_1;
                                                                 |     }
    0x0000b972 ldr r2, [sp, 0x24]                                |     r2 = c;
    0x0000b974 mov r3, r4                                        |     r3 = r4;
    0x0000b976 ldr r0, [r6, 0x2c]                                |     r0 = *((r6 + 0x2c));
    0x0000b978 blx 0x3738                                        |     r0 = ext2fs_block_bitmap_loc_set ();
    0x0000b97c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000b97e bne.w 0xbb14                                      |         goto label_19;
                                                                 |     }
                                                                 | label_4:
    0x0000b982 movs r3, 0                                        |     r3 = 0;
    0x0000b984 ldr r1, [sp, 0x24]                                |     r1 = c;
    0x0000b986 movs r2, 1                                        |     r2 = 1;
    0x0000b988 mov r0, r6                                        |     r0 = r6;
    0x0000b98a add r7, sp, 0x9c                                  |     r7 += var_9ch;
    0x0000b98c blx 0x3798                                        |     strrchr (r0, r1);
    0x0000b990 movs r2, 0x80                                     |     r2 = 0x80;
    0x0000b992 movs r1, 0                                        |     r1 = 0;
    0x0000b994 mov r0, r7                                        |     r0 = r7;
    0x0000b996 blx 0x35bc                                        |     fcn_000035bc ();
    0x0000b99a ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0000b99c ldr r0, [r6, 0x60]                                |     r0 = *((r6 + 0x60));
    0x0000b99e ubfx r3, r3, 0, 0xc                               |     r3 = (r3 >> 0) & ((1 << 0xc) - 1);
    0x0000b9a2 mvn.w r3, r3, lsl 17                              |     r3 = ~r3;
    0x0000b9a6 mvn.w r3, r3, lsr 17                              |     r3 = ~r3;
    0x0000b9aa strh.w r3, [sp, 0x9c]                             |     var_9ch = r3;
    0x0000b9ae cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000b9b0 beq.w 0xbb0e                                      |         goto label_20;
                                                                 |     }
                                                                 | label_3:
    0x0000b9b4 movs r3, 1                                        |     r3 = 1;
    0x0000b9b6 strd r0, r0, [sp, 0xa8]                           |     __asm ("strd r0, r0, [sp, 0xa8]");
    0x0000b9ba str r0, [sp, 0xa4]                                |     var_a4h = r0;
    0x0000b9bc mov r1, r7                                        |     r1 = r7;
    0x0000b9be strh.w r3, [sp, 0xb6]                             |     var_b6h = r3;
    0x0000b9c2 mov r0, r6                                        |     r0 = r6;
    0x0000b9c4 ldrd r2, r3, [sp, 0x60]                           |     __asm ("ldrd r2, r3, [var_60h]");
    0x0000b9c8 blx 0x32f0                                        |     r0 = fcn_000032f0 ();
    0x0000b9cc mov r4, r0                                        |     r4 = r0;
    0x0000b9ce cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000b9d0 bne 0xb900                                        |         goto label_1;
                                                                 |     }
    0x0000b9d2 ldr r3, [r6, 0x10]                                |     r3 = *((r6 + 0x10));
    0x0000b9d4 ldr r1, [sp, 0x24]                                |     r1 = c;
    0x0000b9d6 ldr r3, [r3, 0x60]                                |     r3 = *((r3 + 0x60));
    0x0000b9d8 lsls r2, r3, 0x10                                 |     r2 = r3 << 0x10;
                                                                 |     if (r2 >= r3) {
    0x0000b9da bpl.w 0xbb26                                      |         goto label_21;
                                                                 |     }
    0x0000b9de ldr r3, [sp, 0xbc]                                |     r3 = var_bch;
    0x0000b9e0 orr r3, r3, 0x10000000                            |     r3 |= 0x10000000;
    0x0000b9e4 str r3, [sp, 0xbc]                                |     var_bch = r3;
                                                                 | label_5:
    0x0000b9e6 mov r2, r7                                        |     r2 = r7;
    0x0000b9e8 mov r0, r6                                        |     r0 = r6;
    0x0000b9ea blx 0x3400                                        |     r0 = fcn_00003400 ();
    0x0000b9ee mov r4, r0                                        |     r4 = r0;
    0x0000b9f0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000b9f2 bne 0xb900                                        |         goto label_1;
                                                                 |     }
    0x0000b9f4 ldr r3, [sp, 0xbc]                                |     r3 = var_bch;
    0x0000b9f6 lsls r7, r3, 3                                    |     r7 = r3 << 3;
                                                                 |     if (r7 < r3) {
    0x0000b9f8 bmi.w 0xbb50                                      |         goto label_22;
                                                                 |     }
                                                                 | label_6:
    0x0000b9fc ldrh.w r3, [sp, 0x9c]                             |     r3 = var_9ch;
    0x0000ba00 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x0000ba04 cmp.w r3, 0x8000                                  |     
                                                                 |     if (r3 != 0x8000) {
    0x0000ba08 bne.w 0xb900                                      |         goto label_1;
                                                                 |     }
    0x0000ba0c ldr r1, [sp, 0x24]                                |     r1 = c;
    0x0000ba0e add r3, sp, 0x2c                                  |     r3 += var_2ch;
    0x0000ba10 movs r2, 1                                        |     r2 = 1;
    0x0000ba12 mov r0, r6                                        |     r0 = r6;
    0x0000ba14 blx 0x30f8                                        |     r0 = fcn_000030f8 ();
    0x0000ba16 sbcs.w r6, r0, r4, lsl 16                         |     __asm ("sbcs.w r6, r0, r4, lsl 16");
    0x0000ba1a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000ba1c bne.w 0xb900                                      |         goto label_1;
                                                                 |     }
    0x0000ba20 mov.w r0, 0x10000                                 |     r0 = 0x10000;
    0x0000ba24 blx 0x3450                                        |     strerror (r0);
    0x0000ba28 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000ba2a mov r8, r0                                        |     r8 = r0;
    0x0000ba2c str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0000ba2e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000ba30 beq.w 0xbd1c                                      |         goto label_23;
                                                                 |     }
    0x0000ba34 ldr r0, [r6, 0x14]                                |     r0 = *((r6 + 0x14));
    0x0000ba36 movs r1, 1                                        |     r1 = 1;
    0x0000ba38 blx 0x2f10                                        |     r0 = calloc (r0, r1);
    0x0000ba3c mov sl, r0                                        |     sl = r0;
    0x0000ba3e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000ba40 beq.w 0xbd1c                                      |         goto label_23;
                                                                 |     }
    0x0000ba44 mov r7, r4                                        |     r7 = r4;
    0x0000ba46 mov sb, r4                                        |     sb = r4;
    0x0000ba48 b 0xbab0                                          |     
                                                                 |     while (r7 < r2) {
    0x0000ba4a movs r1, 3                                        |         r1 = 3;
    0x0000ba4c mov r2, r7                                        |         r2 = r7;
    0x0000ba4e mov r3, sb                                        |         r3 = sb;
    0x0000ba50 mov r0, r5                                        |         r0 = r5;
    0x0000ba52 str r1, [sp]                                      |         *(sp) = r1;
    0x0000ba54 blx 0x3348                                        |         ext2fs_inline_data_init ();
    0x0000ba58 subs.w fp, r1, 0                                  |         
    0x0000ba5c mov r4, r0                                        |         r4 = r0;
                                                                 |         if (fp < r1) {
    0x0000ba5e blt.w 0xbcec                                      |             goto label_24;
                                                                 |         }
    0x0000ba62 movs r3, 4                                        |         r3 = 4;
    0x0000ba64 mov r2, r0                                        |         r2 = r0;
    0x0000ba66 str r3, [sp]                                      |         *(sp) = r3;
    0x0000ba68 mov r0, r5                                        |         r0 = r5;
    0x0000ba6a mov r3, fp                                        |         r3 = fp;
    0x0000ba6c blx 0x3348                                        |         ext2fs_inline_data_init ();
    0x0000ba70 subs.w sb, r1, 0                                  |         sb = r1 - 0;
    0x0000ba74 mov r7, r0                                        |         r7 = r0;
                                                                 |         if (sb < r1) {
    0x0000ba76 blt.w 0xbb88                                      |             goto label_25;
                                                                 |         }
    0x0000ba7a str.w fp, [sp, 4]                                 |         __asm ("str.w fp, [var_4h]");
    0x0000ba7e mov r1, r5                                        |         r1 = r5;
    0x0000ba80 strd r8, sl, [sp, 0x10]                           |         __asm ("strd r8, sl, [sp, 0x10]");
    0x0000ba84 mov r0, r6                                        |         r0 = r6;
    0x0000ba86 ldr.w ip, [r6, 0x14]                              |         ip = *((r6 + 0x14));
    0x0000ba8a ldr r2, [sp, 0x18]                                |         r2 = var_18h;
    0x0000ba8c add.w r3, ip, -1                                  |         r3 = ip + -1;
    0x0000ba90 rsb.w ip, ip, 0                                   |         
    0x0000ba94 adds r3, r7, r3                                   |         r3 = r7 + r3;
    0x0000ba96 and.w r4, r4, ip                                  |         r4 &= ip;
    0x0000ba9a and.w r3, r3, ip                                  |         r3 &= ip;
    0x0000ba9e str r4, [sp]                                      |         *(sp) = r4;
    0x0000baa0 str r3, [sp, 8]                                   |         var_8h_3 = r3;
    0x0000baa2 adc r3, sb, 0                                     |         __asm ("adc r3, sb, 0");
    0x0000baa6 str r3, [sp, 0xc]                                 |         var_ch_3 = r3;
    0x0000baa8 bl 0xb048                                         |         r0 = fcn_0000b048 (r0, r1, r2, r3, r4, r5, r6);
    0x0000baac cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000baae bne 0xbb66                                        |             goto label_26;
                                                                 |         }
    0x0000bab0 ldrd r2, r3, [sp, 0x60]                           |         __asm ("ldrd r2, r3, [var_60h]");
    0x0000bab4 cmp r7, r2                                        |         
    0x0000bab6 sbcs.w r3, sb, r3                                 |         __asm ("sbcs.w r3, sb, r3");
    0x0000baba blt 0xba4a                                        |         
                                                                 |     }
                                                                 | label_9:
    0x0000babc mov r0, sl                                        |     r0 = sl;
    0x0000babe blx 0x3098                                        |     fcn_00003098 ();
    0x0000bac2 mov r0, r8                                        |     r0 = r8;
    0x0000bac4 blx 0x3098                                        |     fcn_00003098 ();
    0x0000bac8 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x0000baca blx 0x304c                                        |     r0 = fcn_0000304c ();
    0x0000bace mov r4, r0                                        |     r4 = r0;
    0x0000bad0 b 0xb900                                          |     goto label_1;
                                                                 | label_13:
    0x0000bad2 blx 0x357c                                        |     r0 = sprintf_chk ();
    0x0000bad6 ldr r4, [r0]                                      |     r4 = *(r0);
    0x0000bad8 b 0xb900                                          |     goto label_1;
                                                                 | label_15:
    0x0000bada ldr r2, [pc, 0x26c]                               |     
    0x0000badc mov r3, r7                                        |     r3 = r7;
    0x0000bade mov r0, r7                                        |     r0 = r7;
    0x0000bae0 mov r1, r4                                        |     r1 = r4;
    0x0000bae2 add r2, pc                                        |     r2 = 0x17830;
    0x0000bae4 blx 0x32cc                                        |     fcn_000032cc ();
    0x0000bae8 b 0xb900                                          |     goto label_1;
                                                                 | label_18:
    0x0000baea ldr r1, [sp, 0x28]                                |     r1 = src;
    0x0000baec mov r0, r6                                        |     r0 = r6;
    0x0000baee blx 0x3570                                        |     r0 = ext2fs_init_csum_seed ();
    0x0000baf2 mov r4, r0                                        |     r4 = r0;
    0x0000baf4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000baf6 bne.w 0xb900                                      |         goto label_1;
                                                                 |     }
    0x0000bafa ldr r3, [sp, 0x24]                                |     r3 = c;
    0x0000bafc mov r2, r7                                        |     r2 = r7;
    0x0000bafe ldr r1, [sp, 0x28]                                |     r1 = src;
    0x0000bb00 mov r0, r6                                        |     r0 = r6;
    0x0000bb02 str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x0000bb06 blx 0x387c                                        |     r0 = uuid_generate_time ();
    0x0000bb0a mov r4, r0                                        |     r4 = r0;
    0x0000bb0c b 0xb96e                                          |     goto label_2;
                                                                 | label_20:
    0x0000bb0e blx 0x3134                                        |     fcn_00003134 ();
    0x0000bb12 b 0xb9b4                                          |     goto label_3;
                                                                 | label_19:
    0x0000bb14 ldr r0, [pc, 0x234]                               |     
    0x0000bb16 mov r1, r4                                        |     r1 = r4;
    0x0000bb18 ldr r2, [pc, 0x234]                               |     
    0x0000bb1a add r0, pc                                        |     r0 = 0x1786a;
    0x0000bb1c add r2, pc                                        |     r2 = 0x17870;
    0x0000bb1e adds r0, 0x38                                     |     r0 += 0x38;
    0x0000bb20 blx 0x32cc                                        |     fcn_000032cc ();
    0x0000bb24 b 0xb982                                          |     goto label_4;
                                                                 | label_21:
    0x0000bb26 lsls r3, r3, 0x19                                 |     r3 <<= 0x19;
                                                                 |     if (r3 >= r3) {
    0x0000bb28 bpl.w 0xb9e6                                      |         goto label_5;
                                                                 |     }
    0x0000bb2c ldr r3, [sp, 0xbc]                                |     r3 = var_bch;
    0x0000bb2e mov r2, r7                                        |     r2 = r7;
    0x0000bb30 mov r0, r6                                        |     r0 = r6;
    0x0000bb32 bic r3, r3, 0x80000                               |     r3 = BIT_MASK (r3, 0x80000);
    0x0000bb36 str r3, [sp, 0xbc]                                |     var_bch = r3;
    0x0000bb38 add r3, sp, 0x2c                                  |     r3 += var_2ch;
    0x0000bb3a blx 0x3644                                        |     r0 = fcn_00003644 ();
    0x0000bb3e mov r4, r0                                        |     r4 = r0;
    0x0000bb40 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000bb42 bne.w 0xb900                                      |         goto label_1;
                                                                 |     }
    0x0000bb46 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x0000bb48 blx 0x37f8                                        |     ext2fs_numeric_progress_close ();
    0x0000bb4c ldr r1, [sp, 0x24]                                |     r1 = c;
    0x0000bb4e b 0xb9e6                                          |     goto label_5;
                                                                 | label_22:
    0x0000bb50 ldr r1, [sp, 0x24]                                |     r1 = c;
    0x0000bb52 mov r0, r6                                        |     r0 = r6;
    0x0000bb54 blx 0x3354                                        |     r0 = ext2fs_open_inode_scan ();
    0x0000bb58 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000bb5a beq.w 0xb9fc                                      |         goto label_6;
                                                                 |     }
    0x0000bb5e mov r4, r0                                        |     r4 = r0;
    0x0000bb60 b 0xb900                                          |     goto label_1;
                                                                 | label_17:
    0x0000bb62 blx 0x31f4                                        |     fcn_000031f4 ();
                                                                 | label_26:
    0x0000bb66 movw r3, 0xb750                                   |     
    0x0000bb6a mov r4, r0                                        |     r4 = r0;
    0x0000bb6c movt r3, 0x7f2b                                   |     r3 = 0x7f2bb750;
    0x0000bb70 cmp r0, r3                                        |     
                                                                 |     if (r0 != r3) {
    0x0000bb72 beq 0xbb88                                        |         
                                                                 | label_11:
    0x0000bb74 mov r0, sl                                        |         r0 = sl;
    0x0000bb76 blx 0x3098                                        |         fcn_00003098 ();
    0x0000bb7a mov r0, r8                                        |         r0 = r8;
    0x0000bb7c blx 0x3098                                        |         fcn_00003098 ();
    0x0000bb80 ldr r0, [sp, 0x2c]                                |         r0 = var_2ch;
    0x0000bb82 blx 0x304c                                        |         fcn_0000304c ();
    0x0000bb86 b 0xb900                                          |         goto label_1;
                                                                 |     }
                                                                 | label_25:
    0x0000bb88 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000bb8a str r3, [sp, 0x18]                                |     var_18h = r3;
                                                                 | label_10:
    0x0000bb8c movs r1, 1                                        |     r1 = 1;
    0x0000bb8e movw r0, 0x7020                                   |     r0 = 0x7020;
    0x0000bb92 blx 0x2f10                                        |     r0 = calloc (r0, r1);
    0x0000bb96 mov r7, r0                                        |     r7 = r0;
    0x0000bb98 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000bb9a beq.w 0xbd12                                      |         goto label_27;
                                                                 |     }
    0x0000bb9e add.w r2, r0, 0x20                                |     r2 = r0 + 0x20;
    0x0000bba2 vmov.i8 d16, 0xff                                 |     __asm ("vmov.i8 d16, 0xff");
    0x0000bba6 movs r3, 0                                        |     r3 = 0;
    0x0000bba8 movw fp, 0x660b                                   |     
    0x0000bbac movs r1, 1                                        |     r1 = 1;
    0x0000bbae str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x0000bbb0 movt fp, 0xc020                                   |     fp = 0xc020660b;
    0x0000bbb4 mov r2, r3                                        |     r2 = r3;
    0x0000bbb6 str r1, [r0, 0x10]                                |     *((r0 + 0x10)) = r1;
    0x0000bbb8 mov.w r1, 0x200                                   |     r1 = 0x200;
    0x0000bbbc vstr d16, [r0, 8]                                 |     __asm ("vstr d16, [r0, 8]");
    0x0000bbc0 str r1, [r0, 0x18]                                |     *((r0 + 0x18)) = r1;
                                                                 | label_8:
    0x0000bbc2 strd r3, r2, [r7]                                 |     __asm ("strd r3, r2, [r7]");
    0x0000bbc6 movs r1, 0                                        |     r1 = 0;
    0x0000bbc8 mov.w r2, 0x7000                                  |     r2 = 0x7000;
    0x0000bbcc ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x0000bbce blx 0x35bc                                        |     fcn_000035bc ();
    0x0000bbd2 mov r2, r7                                        |     r2 = r7;
    0x0000bbd4 mov r1, fp                                        |     r1 = fp;
    0x0000bbd6 mov r0, r5                                        |     r0 = r5;
    0x0000bbd8 blx 0x333c                                        |     r0 = lseek64 ();
    0x0000bbdc subs.w sb, r0, 0                                  |     sb = r0 - 0;
                                                                 |     if (sb < r0) {
    0x0000bbe0 blt 0xbc82                                        |         goto label_28;
                                                                 |     }
    0x0000bbe2 ldr r3, [r7, 0x14]                                |     r3 = *((r7 + 0x14));
                                                                 |     if (r3 == 0) {
    0x0000bbe4 cbz r3, 0xbc52                                    |         goto label_29;
                                                                 |     }
    0x0000bbe6 add.w sb, r7, 0x58                                |     sb = r7 + 0x58;
    0x0000bbea movs r4, 0                                        |     r4 = 0;
    0x0000bbec b 0xbbfa                                          |     
                                                                 |     while (r0 == 0) {
    0x0000bbee ldr r0, [r7, 0x14]                                |         r0 = *((r7 + 0x14));
    0x0000bbf0 adds r4, 1                                        |         r4++;
    0x0000bbf2 add.w sb, sb, 0x38                                |         sb += 0x38;
    0x0000bbf6 cmp r4, r0                                        |         
                                                                 |         if (r4 >= r0) {
    0x0000bbf8 bhs 0xbcbe                                        |             goto label_30;
                                                                 |         }
    0x0000bbfa ldrd r1, r3, [sb, -0x38]                          |         __asm ("ldrd r1, r3, [sb, -0x38]");
    0x0000bbfe strd r8, sl, [sp, 0x10]                           |         __asm ("strd r8, sl, [sp, 0x10]");
    0x0000bc02 ldr r2, [sb, -0x28]                               |         r2 = *((sb - 0x28));
    0x0000bc06 ldr r0, [sb, -0x24]                               |         r0 = *((sb - 0x24));
    0x0000bc0a strd r1, r3, [sp]                                 |         __asm ("strd r1, r3, [sp]");
    0x0000bc0e adds r2, r1, r2                                   |         r2 = r1 + r2;
    0x0000bc10 mov r1, r5                                        |         r1 = r5;
    0x0000bc12 adc.w r3, r3, r0                                  |         __asm ("adc.w r3, r3, r0");
    0x0000bc16 str r2, [sp, 8]                                   |         var_8h_3 = r2;
    0x0000bc18 mov r0, r6                                        |         r0 = r6;
    0x0000bc1a ldr r2, [sp, 0x18]                                |         r2 = var_18h;
    0x0000bc1c str r3, [sp, 0xc]                                 |         var_ch_3 = r3;
    0x0000bc1e bl 0xb048                                         |         fcn_0000b048 (r0, r1, r2, r3, r4, r5, r6);
    0x0000bc22 mov r1, sb                                        |         r1 = sb;
    0x0000bc24 cmp r0, 0                                         |         
    0x0000bc26 beq 0xbbee                                        |         
                                                                 |     }
    0x0000bc28 mov r4, r0                                        |     r4 = r0;
    0x0000bc2a mov r0, r7                                        |     r0 = r7;
    0x0000bc2c blx 0x3098                                        |     fcn_00003098 ();
    0x0000bc30 movw r3, 0xb750                                   |     
    0x0000bc34 ldr r7, [sp, 0x2c]                                |     r7 = var_2ch;
    0x0000bc36 movt r3, 0x7f2b                                   |     r3 = 0x7f2bb750;
    0x0000bc3a cmp r4, r3                                        |     
                                                                 |     if (r4 == r3) {
    0x0000bc3c beq 0xbc9c                                        |         goto label_31;
                                                                 |     }
    0x0000bc3e mov r0, sl                                        |     r0 = sl;
    0x0000bc40 blx 0x3098                                        |     fcn_00003098 ();
    0x0000bc44 mov r0, r8                                        |     r0 = r8;
    0x0000bc46 blx 0x3098                                        |     fcn_00003098 ();
    0x0000bc4a mov r0, r7                                        |     r0 = r7;
    0x0000bc4c blx 0x304c                                        |     fcn_0000304c ();
    0x0000bc50 b 0xb900                                          |     goto label_1;
                                                                 |     do {
                                                                 | label_29:
    0x0000bc52 mov r0, r7                                        |         r0 = r7;
    0x0000bc54 blx 0x3098                                        |         r0 = fcn_00003098 ();
    0x0000bc56 bic.w r2, r0, fp, lsl 29                          |         r2 = BIT_MASK (r0, fp);
    0x0000bc5a strb r0, [r2, 0xd]                                |         *((r2 + 0xd)) = r0;
    0x0000bc5c movt r3, 0x7f2b                                   |         r3 = (r3 & 0xFFFF) | 0x7f2b0000;
    0x0000bc60 cmp sb, r3                                        |         
                                                                 |         if (sb == r3) {
    0x0000bc62 beq 0xbc9c                                        |             goto label_31;
                                                                 |         }
                                                                 | label_7:
    0x0000bc64 mov r0, sl                                        |         r0 = sl;
    0x0000bc66 blx 0x3098                                        |         fcn_00003098 ();
    0x0000bc6a mov r0, r8                                        |         r0 = r8;
    0x0000bc6c blx 0x3098                                        |         fcn_00003098 ();
    0x0000bc70 ldr r0, [sp, 0x2c]                                |         r0 = var_2ch;
    0x0000bc72 blx 0x304c                                        |         fcn_0000304c ();
    0x0000bc76 cmp.w sb, 0                                       |         
    0x0000bc7a ite ne                                            |         
                                                                 |         if (sb == 0) {
    0x0000bc7c movne r4, sb                                      |             r4 = sb;
                                                                 |         }
                                                                 |         if (sb != 0) {
    0x0000bc7e moveq r4, r0                                      |             r4 = r0;
                                                                 |         }
    0x0000bc80 b 0xb900                                          |         goto label_1;
                                                                 | label_28:
    0x0000bc82 blx 0x357c                                        |         r0 = sprintf_chk ();
    0x0000bc86 ldr.w sb, [r0]                                    |         sb = *(r0);
    0x0000bc8a cmp.w sb, 0x5f                                    |         
                                                                 |         if (sb == 0x5f) {
    0x0000bc8e beq 0xbc96                                        |             goto label_32;
                                                                 |         }
    0x0000bc90 cmp.w sb, 0x19                                    |         
    0x0000bc94 bne 0xbc52                                        |         
                                                                 |     } while (sb != 0x19);
                                                                 | label_32:
    0x0000bc96 mov r0, r7                                        |     r0 = r7;
    0x0000bc98 blx 0x3098                                        |     fcn_00003098 ();
                                                                 | label_31:
    0x0000bc9c vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x0000bca0 mov r0, r6                                        |     r0 = r6;
    0x0000bca2 ldrd r6, r7, [sp, 0x60]                           |     __asm ("ldrd r6, r7, [var_60h]");
    0x0000bca6 mov r1, r5                                        |     r1 = r5;
    0x0000bca8 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x0000bcaa strd r8, sl, [sp, 0x10]                           |     __asm ("strd r8, sl, [sp, 0x10]");
    0x0000bcae vstr d16, [sp]                                    |     __asm ("vstr d16, [sp]");
    0x0000bcb2 strd r6, r7, [sp, 8]                              |     __asm ("strd r6, r7, [sp, 8]");
    0x0000bcb6 bl 0xb048                                         |     r0 = fcn_0000b048 (r0, r1, r2, r3, r4, r5, r6);
    0x0000bcba mov sb, r0                                        |     sb = r0;
    0x0000bcbc b 0xbc64                                          |     goto label_7;
                                                                 | label_30:
    0x0000bcbe ldr r2, [r1, -0x28]                               |     r2 = *((r1 - 0x28));
    0x0000bcc2 ldr r3, [r1, -0x38]                               |     r3 = *((r1 - 0x38));
    0x0000bcc6 ldr r4, [r1, -0x24]                               |     r4 = *((r1 - 0x24));
    0x0000bcc8 ldr r4, [pc, 0x90]                                |     r4 = *(0xbd5c);
    0x0000bcca adds r3, r3, r2                                   |     r3 += r2;
    0x0000bccc ldr r2, [r1, -0x34]                               |     r2 = *((r1 - 0x34));
    0x0000bcd0 adc.w r2, r2, r4                                  |     __asm ("adc.w r2, r2, r4");
    0x0000bcd4 cmp.w r0, 0x200                                   |     
                                                                 |     if (r0 != 0x200) {
    0x0000bcd8 bne 0xbce4                                        |         goto label_33;
                                                                 |     }
    0x0000bcda ldr r1, [r1, -0x10]                               |     r1 = *((r1 - 0x10));
    0x0000bcde lsls r1, r1, 0x1f                                 |     r1 <<= 0x1f;
                                                                 |     if (r1 >= r1) {
    0x0000bce0 bpl.w 0xbbc2                                      |         goto label_8;
                                                                 |     }
                                                                 | label_33:
    0x0000bce4 mov r0, r7                                        |     r0 = r7;
    0x0000bce6 blx 0x3098                                        |     fcn_00003098 ();
    0x0000bcea b 0xbabc                                          |     goto label_9;
                                                                 | label_24:
    0x0000bcec blx 0x357c                                        |     r0 = sprintf_chk ();
    0x0000bcf0 ldr r3, [r0]                                      |     r3 = *(r0);
    0x0000bcf2 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x0000bcf4 cmp r3, 6                                         |     
    0x0000bcf6 str r2, [sp, 0x18]                                |     var_18h = r2;
                                                                 |     if (r3 != 6) {
    0x0000bcf8 bne.w 0xbb8c                                      |         goto label_10;
                                                                 |     }
    0x0000bcfc mov r0, sl                                        |     r0 = sl;
    0x0000bcfe blx 0x3098                                        |     fcn_00003098 ();
    0x0000bd02 mov r0, r8                                        |     r0 = r8;
    0x0000bd04 blx 0x3098                                        |     fcn_00003098 ();
    0x0000bd08 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x0000bd0a blx 0x304c                                        |     r0 = fcn_0000304c ();
    0x0000bd0e mov r4, r0                                        |     r4 = r0;
    0x0000bd10 b 0xb900                                          |     goto label_1;
                                                                 | label_27:
    0x0000bd12 movw r4, 0xb746                                   |     
    0x0000bd16 movt r4, 0x7f2b                                   |     r4 = 0x7f2bb746;
    0x0000bd1a b 0xbb74                                          |     goto label_11;
                                                                 | label_23:
    0x0000bd1c mov r0, r8                                        |     r0 = r8;
    0x0000bd1e movw r4, 0xb746                                   |     
    0x0000bd22 blx 0x3098                                        |     fcn_00003098 ();
    0x0000bd26 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x0000bd28 movt r4, 0x7f2b                                   |     r4 = 0x7f2bb746;
    0x0000bd2c blx 0x304c                                        |     fcn_0000304c ();
    0x0000bd30 b 0xb900                                          |     goto label_1;
                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0xf1f8 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000f1f8 ()                                          | void fcn_0000f1f8 (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_2;
                                                                     |     int16_t c;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_36h;
                                                                     |     int16_t var_3ch;
                                                                     |     int16_t var_88h;
                                                                     |     int16_t var_9ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x0000f1f8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000f1fc mov r6, r2                                            |     r6 = r2;
    0x0000f1fe ldr r2, [pc, 0x284]                                   |     
    0x0000f200 mov r8, r3                                            |     r8 = r3;
    0x0000f202 adds r3, 1                                            |     r3++;
    0x0000f204 sub sp, 0xa4                                          |     
    0x0000f206 ldr r3, [pc, 0x280]                                   |     r3 = *(0xf48a);
    0x0000f208 it eq                                                 |     
                                                                     |     if (r3 != 1) {
    0x0000f20a moveq r8, 4                                           |         r8 = 4;
                                                                     |     }
    0x0000f20e add r2, pc                                            |     r2 = 0x1e698;
    0x0000f210 ldr r7, [pc, 0x278]                                   |     
    0x0000f212 cmp r6, 1                                             |     
    0x0000f214 mov r5, r1                                            |     r5 = r1;
    0x0000f216 ldr r3, [r2, r3]                                      |     
    0x0000f218 mov sb, r0                                            |     sb = r0;
    0x0000f21a add r7, pc                                            |     r7 = 0x1e6aa;
    0x0000f21c ldr r3, [r3]                                          |     r3 = *(0x1e698);
    0x0000f21e str r3, [sp, 0x9c]                                    |     var_9ch = r3;
    0x0000f220 mov.w r3, 0                                           |     r3 = 0;
    0x0000f222 lsls r0, r0, 0xc                                      |     r0 <<= 0xc;
    0x0000f224 ldr r3, [r1, 0x10]                                    |     r3 = *((r1 + 0x10));
    0x0000f226 str r1, [r0, 0x10]                                    |     *((r0 + 0x10)) = r1;
                                                                     |     if (r0 == r0) {
    0x0000f228 beq 0xf25c                                            |         goto label_6;
                                                                     |     }
    0x0000f22a cmp r6, 2                                             |     
                                                                     |     if (r6 == 2) {
    0x0000f22c beq.w 0xf3a4                                          |         goto label_7;
                                                                     |     }
    0x0000f230 movw r4, 0xb729                                       |     
    0x0000f234 movt r4, 0x7f2b                                       |     r4 = 0x7f2bb729;
    0x0000f238 cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0000f23a beq.w 0xf39e                                          |         goto label_8;
                                                                     |     }
                                                                     |     do {
                                                                     | label_0:
    0x0000f23e ldr r2, [pc, 0x250]                                   |         
    0x0000f240 ldr r3, [pc, 0x244]                                   |         r3 = *(0xf488);
    0x0000f242 add r2, pc                                            |         r2 = 0x1e6d8;
    0x0000f244 ldr r3, [r2, r3]                                      |         r3 = *(0x1e6d8);
    0x0000f246 ldr r2, [r3]                                          |         r2 = *(0x1e6d8);
    0x0000f248 ldr r3, [sp, 0x9c]                                    |         r3 = var_9ch;
    0x0000f24a eors r2, r3                                           |         r2 ^= r3;
    0x0000f24c mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000f250 bne.w 0xf480                                          |             goto label_9;
                                                                     |         }
    0x0000f254 mov r0, r4                                            |         r0 = r4;
    0x0000f256 add sp, 0xa4                                          |         
    0x0000f258 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_6:
    0x0000f25c movs r3, 4                                            |         r3 = 4;
    0x0000f25e str r3, [sp, 0x18]                                    |         c = r3;
                                                                     | label_1:
    0x0000f260 mov r0, r5                                            |         r0 = r5;
    0x0000f262 blx 0x3010                                            |         r0 = fcn_00003010 ();
    0x0000f266 mov r4, r0                                            |         r4 = r0;
    0x0000f268 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000f26a bne.w 0xf38e                                          |             goto label_2;
                                                                     |         }
    0x0000f26e ldr.w fp, [sp, 0x18]                                  |         fp = c;
    0x0000f272 add.w sl, sp, 0x1c                                    |         sl += var_1ch;
    0x0000f276 mov r2, sl                                            |         r2 = sl;
    0x0000f278 mov r0, r5                                            |         r0 = r5;
    0x0000f27a mov r1, fp                                            |         r1 = fp;
    0x0000f27c blx 0x2f58                                            |         ext2fs_read_inode ();
    0x0000f27e cdp p6, 6, c4, c12, c4, 0                             |         __asm ("cdp p6, 6, c4, c12, c4, 0");
    0x0000f282 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000f284 bne.w 0xf40a                                          |             goto label_10;
                                                                     |         }
    0x0000f288 ldr r2, [sp, 0x88]                                    |         r2 = var_88h;
    0x0000f28a ldr r3, [sp, 0x20]                                    |         r3 = var_20h;
    0x0000f28c orrs r3, r2                                           |         r3 |= r2;
                                                                     |         if (r3 != r2) {
    0x0000f28e beq 0xf2a0                                            |             
    0x0000f290 mov r1, fp                                            |             r1 = fp;
    0x0000f292 mov r0, r5                                            |             r0 = r5;
    0x0000f294 bl 0xf13c                                             |             r0 = fcn_0000f13c (r0, r1);
    0x0000f298 mov r4, r0                                            |             r4 = r0;
    0x0000f29a cmp r0, 0                                             |             
                                                                     |             if (r0 != 0) {
    0x0000f29c bne.w 0xf454                                          |                 goto label_11;
                                                                     |             }
                                                                     |         }
    0x0000f2a0 movs r2, 0x80                                         |         r2 = 0x80;
    0x0000f2a2 movs r1, 0                                            |         r1 = 0;
    0x0000f2a4 mov r0, sl                                            |         r0 = sl;
    0x0000f2a6 blx 0x35bc                                            |         fcn_000035bc ();
    0x0000f2a8 invalid                                               |         
    0x0000f2ac mov r0, r5                                            |         r0 = r5;
    0x0000f2ae movs r2, 0                                            |         r2 = 0;
    0x0000f2b0 movs r3, 0                                            |         r3 = 0;
    0x0000f2b2 blx 0x3088                                            |         fcn_00003088 ();
    0x0000f2b6 ldr r0, [r5, 0x60]                                    |         r0 = *((r5 + 0x60));
    0x0000f2b8 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000f2ba beq.w 0xf404                                          |             goto label_12;
                                                                     |         }
                                                                     | label_3:
    0x0000f2be ldr r3, [r5, 0x10]                                    |         r3 = *((r5 + 0x10));
    0x0000f2c0 movs r1, 1                                            |         r1 = 1;
    0x0000f2c2 strh.w r1, [sp, 0x36]                                 |         var_36h = r1;
    0x0000f2c6 movw r1, 0x8180                                       |         r1 = 0x8180;
    0x0000f2ca strh.w r1, [sp, 0x1c]                                 |         var_1ch = r1;
    0x0000f2ce ldr r2, [r3, 0x60]                                    |         r2 = *((r3 + 0x60));
    0x0000f2d0 ldr r3, [sp, 0x3c]                                    |         r3 = var_3ch;
    0x0000f2d2 strd r0, r0, [sp, 0x28]                               |         __asm ("strd r0, r0, [sp, 0x28]");
    0x0000f2d6 lsls r2, r2, 0x19                                     |         r2 <<= 0x19;
    0x0000f2d8 str r0, [sp, 0x24]                                    |         var_24h = r0;
    0x0000f2da orr r1, r3, 0x10                                      |         r1 = r3 | 0x10;
    0x0000f2de it mi                                                 |         
                                                                     |         if (r2 >= r2) {
    0x0000f2e0 orrmi r3, r3, 0x80000                                 |             r3 |= 0x80000;
                                                                     |         }
    0x0000f2e4 str r1, [sp, 0x3c]                                    |         var_3ch = r1;
    0x0000f2e6 it mi                                                 |         
                                                                     |         if (r2 >= r2) {
    0x0000f2e8 orrmi r3, r3, 0x10                                    |             r3 |= 0x10;
                                                                     |         }
    0x0000f2ec mov r2, sl                                            |         r2 = sl;
    0x0000f2ee mov r1, fp                                            |         r1 = fp;
    0x0000f2f0 mov r0, r5                                            |         r0 = r5;
    0x0000f2f2 it mi                                                 |         
                                                                     |         if (r2 >= r2) {
    0x0000f2f4 strmi r3, [sp, 0x3c]                                  |             var_3ch = r3;
                                                                     |         }
    0x0000f2f6 blx 0x3400                                            |         r0 = fcn_00003400 ();
    0x0000f2fa mov r4, r0                                            |         r4 = r0;
    0x0000f2fc cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000f2fe bne.w 0xf45a                                          |             goto label_13;
                                                                     |         }
    0x0000f302 ldr r3, [pc, 0x190]                                   |         
    0x0000f304 movs r2, 3                                            |         r2 = 3;
    0x0000f306 ldr r1, [sp, 0x18]                                    |         r1 = c;
    0x0000f308 mov r0, r5                                            |         r0 = r5;
    0x0000f30a str.w r2, [sb, 8]                                     |         __asm ("str.w r2, [sb, 8]");
    0x0000f30e add r3, pc                                            |         r3 = 0x1e7a8;
    0x0000f310 str.w r3, [sb, 0x20]                                  |         __asm ("str.w r3, [sb, 0x20]");
    0x0000f314 ldr r3, [pc, 0x180]                                   |         
    0x0000f316 str.w r1, [sb, 0x14]                                  |         __asm ("str.w r1, [sb, 0x14]");
    0x0000f31a add r3, pc                                            |         r3 = 0x1e7b6;
    0x0000f31c str.w r3, [sb, 0x1c]                                  |         __asm ("str.w r3, [sb, 0x1c]");
    0x0000f31e adds r0, 0x1c                                         |         r0 += 0x1c;
    0x0000f320 add r3, sp, 0x14                                      |         r3 += var_14h_2;
    0x0000f322 blx 0x30f8                                            |         r0 = fcn_000030f8 ();
    0x0000f326 mov r4, r0                                            |         r4 = r0;
    0x0000f328 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000f32a bne 0xf3de                                            |             goto label_14;
                                                                     |         }
    0x0000f32c ldr r3, [sp, 0x14]                                    |         r3 = var_14h_2;
    0x0000f32e movs r2, 0x28                                         |         r2 = 0x28;
    0x0000f330 mov r1, r0                                            |         r1 = r0;
    0x0000f332 str.w r0, [sb, 0xc]                                   |         __asm ("str.w r0, [sb, 0xc]");
    0x0000f336 str.w r6, [sb]                                        |         __asm ("str.w r6, [sb]");
    0x0000f33a add.w r0, sb, r2                                      |         r0 = sb + r2;
    0x0000f33e str.w r3, [sb, 0x18]                                  |         __asm ("str.w r3, [sb, 0x18]");
    0x0000f340 adds r0, 0x18                                         |         r0 += 0x18;
    0x0000f342 str.w r8, [sb, 4]                                     |         __asm ("str.w r8, [sb, 4]");
    0x0000f346 blx 0x35bc                                            |         fcn_000035bc ();
    0x0000f34a ldr r3, [pc, 0x150]                                   |         
    0x0000f34c ldr r3, [r7, r3]                                      |         r3 = *((r7 + r3));
    0x0000f34e str.w r3, [sb, 0x24]                                  |         __asm ("str.w r3, [sb, 0x24]");
    0x0000f352 ldr r3, [r3, 8]                                       |         r3 = *(0xf4a6);
    0x0000f354 cmp r3, 0                                             |         
    0x0000f356 beq.w 0xf23e                                          |         
                                                                     |     } while (r3 == 0);
    0x0000f358 add r7, sp, 0x1c8                                     |     r7 = sp + 0x1c8;
    0x0000f35a mov r0, sb                                            |     r0 = sb;
    0x0000f35c blx r3                                                |     r0 = uint32_t (*r3)(uint32_t) (r0);
    0x0000f35e cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x0000f360 bge.w 0xf23e                                          |         goto label_0;
                                                                     |     }
    0x0000f364 ldr r3, [pc, 0x138]                                   |     
    0x0000f366 movw r0, 0x169                                        |     r0 = 0x169;
    0x0000f36a ldr r2, [pc, 0x138]                                   |     r2 = *(0xf4a6);
    0x0000f36c movs r4, 5                                            |     r4 = 5;
    0x0000f36e add r3, pc                                            |     r3 = 0x1e812;
    0x0000f370 adds r3, 0x40                                         |     r3 += 0x40;
    0x0000f372 ldr r1, [r7, r2]                                      |     r1 = *((r7 + r2));
    0x0000f374 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000f376 ldr r2, [pc, 0x130]                                   |     
    0x0000f378 ldr r3, [pc, 0x130]                                   |     
    0x0000f37a str r0, [sp]                                          |     *(sp) = r0;
    0x0000f37c add r2, pc                                            |     r2 = 0x1e82a;
    0x0000f37e ldr r0, [r1]                                          |     r0 = *(r1);
    0x0000f380 add r3, pc                                            |     r3 = 0x1e830;
    0x0000f382 movs r1, 1                                            |     r1 = 1;
    0x0000f384 blx 0x3684                                            |     ext2fs_write_inode ();
    0x0000f388 ldr r0, [sp, 0x14]                                    |     r0 = var_14h_2;
    0x0000f38a blx 0x304c                                            |     fcn_0000304c ();
                                                                     | label_2:
    0x0000f38e ldr r1, [sp, 0x18]                                    |     r1 = c;
    0x0000f390 cmp r1, 0                                             |     
                                                                     |     if (r1 == 0) {
    0x0000f392 beq.w 0xf23e                                          |         goto label_0;
                                                                     |     }
                                                                     | label_4:
    0x0000f396 mov r0, r5                                            |     r0 = r5;
    0x0000f398 bl 0xf13c                                             |     fcn_0000f13c (r0, r1);
    0x0000f39c b 0xf23e                                              |     goto label_0;
                                                                     | label_8:
    0x0000f39e movs r3, 3                                            |     r3 = 3;
    0x0000f3a0 str r3, [sp, 0x18]                                    |     c = r3;
    0x0000f3a2 b 0xf260                                              |     goto label_1;
                                                                     | label_7:
    0x0000f3a4 ldr.w r3, [r3, 0x26c]                                 |     r3 = *((r3 + 0x26c));
    0x0000f3a8 str r3, [sp, 0x18]                                    |     c = r3;
    0x0000f3aa cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000f3ac bne.w 0xf260                                          |         goto label_1;
                                                                     |     }
    0x0000f3ae add r7, sp, 0x160                                     |     r7 = sp + 0x160;
    0x0000f3b0 add r2, sp, 0x18                                      |     r2 += c;
    0x0000f3b2 mov r1, r6                                            |     r1 = r6;
    0x0000f3b4 str r2, [sp]                                          |     *(sp) = r2;
    0x0000f3b6 mov r0, r5                                            |     r0 = r5;
    0x0000f3b8 movw r2, 0x8180                                       |     r2 = 0x8180;
    0x0000f3bc blx 0x336c                                            |     r0 = strcpy (r0, r1)
    0x0000f3c0 mov r4, r0                                            |     r4 = r0;
    0x0000f3c2 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000f3c4 bne.w 0xf23e                                          |         goto label_0;
                                                                     |     }
    0x0000f3c8 mov r3, r0                                            |     r3 = r0;
    0x0000f3ca ldr r1, [sp, 0x18]                                    |     r1 = c;
    0x0000f3cc movs r2, 1                                            |     r2 = 1;
    0x0000f3ce mov r0, r5                                            |     r0 = r5;
    0x0000f3d0 blx 0x3798                                            |     strrchr (r0, r1);
    0x0000f3d4 ldr r3, [r5, 8]                                       |     r3 = *((r5 + 8));
    0x0000f3d6 orr r3, r3, 0x12                                      |     r3 |= 0x12;
    0x0000f3da str r3, [r5, 8]                                       |     *((r5 + 8)) = r3;
    0x0000f3dc b 0xf260                                              |     goto label_1;
                                                                     | label_14:
    0x0000f3de ldr r2, [pc, 0xc4]                                    |     r2 = *(0xf4a6);
    0x0000f3e0 ldr r3, [pc, 0xcc]                                    |     
    0x0000f3e2 ldr r1, [r7, r2]                                      |     r1 = *((r7 + r2));
    0x0000f3e4 movw r2, 0x15d                                        |     r2 = 0x15d;
    0x0000f3e8 add r3, pc                                            |     r3 = 0x1e89c;
    0x0000f3ea adds r3, 0x40                                         |     r3 += 0x40;
    0x0000f3ec strd r3, r0, [sp, 4]                                  |     __asm ("strd r3, r0, [sp, 4]");
    0x0000f3f0 ldr r3, [pc, 0xc0]                                    |     
    0x0000f3f2 ldr r0, [r1]                                          |     r0 = *(r1);
    0x0000f3f4 movs r1, 1                                            |     r1 = 1;
    0x0000f3f6 str r2, [sp]                                          |     *(sp) = r2;
    0x0000f3f8 ldr r2, [pc, 0xbc]                                    |     
    0x0000f3fa add r3, pc                                            |     r3 = 0x1e8b2;
    0x0000f3fc add r2, pc                                            |     r2 = 0x1e8b8;
    0x0000f3fe blx 0x3684                                            |     ext2fs_write_inode ();
    0x0000f402 b 0xf38e                                              |     goto label_2;
                                                                     | label_12:
    0x0000f404 blx 0x3134                                            |     fcn_00003134 ();
    0x0000f408 b 0xf2be                                              |     goto label_3;
                                                                     | label_10:
    0x0000f40a ldr r2, [pc, 0x98]                                    |     r2 = *(0xf4a6);
    0x0000f40c movs r1, 1                                            |     r1 = 1;
    0x0000f40e ldr r3, [pc, 0xac]                                    |     
    0x0000f410 ldr r6, [r7, r2]                                      |     r6 = *((r7 + r2));
    0x0000f412 add r3, pc                                            |     r3 = 0x1e8d4;
    0x0000f414 ldr r2, [pc, 0xa8]                                    |     
    0x0000f416 adds r3, 0x28                                         |     r3 += 0x28;
    0x0000f418 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000f41a str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000f41c mov.w r3, 0x116                                       |     r3 = 0x116;
    0x0000f420 str r3, [sp]                                          |     *(sp) = r3;
    0x0000f422 add r2, pc                                            |     r2 = 0x1e8e6;
    0x0000f424 ldr r3, [pc, 0x9c]                                    |     
    0x0000f426 add r3, pc                                            |     r3 = 0x1e8ee;
    0x0000f428 blx 0x3684                                            |     ext2fs_write_inode ();
                                                                     | label_5:
    0x0000f42c ldr r2, [pc, 0x98]                                    |     
    0x0000f42e mov.w r3, 0x152                                       |     r3 = 0x152;
    0x0000f432 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000f434 movs r1, 1                                            |     r1 = 1;
    0x0000f436 str r3, [sp]                                          |     *(sp) = r3;
    0x0000f438 add r2, pc                                            |     r2 = 0x1e904;
    0x0000f43a ldr r3, [pc, 0x90]                                    |     
    0x0000f43c adds r2, 0x40                                         |     r2 += 0x40;
    0x0000f43e str r2, [sp, 4]                                       |     var_4h = r2;
    0x0000f440 ldr r2, [pc, 0x8c]                                    |     
    0x0000f442 add r3, pc                                            |     r3 = 0x1e914;
    0x0000f444 add r2, pc                                            |     r2 = 0x1e918;
    0x0000f446 blx 0x3684                                            |     ext2fs_write_inode ();
    0x0000f44a ldr r1, [sp, 0x18]                                    |     r1 = c;
    0x0000f44c cmp r1, 0                                             |     
                                                                     |     if (r1 == 0) {
    0x0000f44e beq.w 0xf23e                                          |         goto label_0;
                                                                     |     }
    0x0000f452 b 0xf396                                              |     goto label_4;
                                                                     | label_11:
    0x0000f454 ldr r3, [pc, 0x4c]                                    |     r3 = *(0xf4a4);
    0x0000f456 ldr r6, [r7, r3]                                      |     r6 = *((r7 + r3));
    0x0000f458 b 0xf42c                                              |     goto label_5;
                                                                     | label_13:
    0x0000f45a ldr r2, [pc, 0x48]                                    |     r2 = *(0xf4a6);
    0x0000f45c movs r1, 1                                            |     r1 = 1;
    0x0000f45e ldr r3, [pc, 0x74]                                    |     
    0x0000f460 ldr r6, [r7, r2]                                      |     r6 = *((r7 + r2));
    0x0000f462 add r3, pc                                            |     r3 = 0x1e93c;
    0x0000f464 ldr r2, [pc, 0x70]                                    |     
    0x0000f466 adds r3, 0x28                                         |     r3 += 0x28;
    0x0000f468 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000f46a str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000f46c mov.w r3, 0x12c                                       |     r3 = 0x12c;
    0x0000f470 str r3, [sp]                                          |     *(sp) = r3;
    0x0000f472 add r2, pc                                            |     r2 = 0x1e94e;
    0x0000f474 ldr r3, [pc, 0x64]                                    |     
    0x0000f476 str r4, [sp, 8]                                       |     var_8h = r4;
    0x0000f478 add r3, pc                                            |     r3 = 0x1e958;
    0x0000f47a blx 0x3684                                            |     ext2fs_write_inode ();
    0x0000f47e b 0xf42c                                              |     goto label_5;
                                                                     | label_9:
    0x0000f480 blx 0x31f4                                            |     fcn_000031f4 ();
    0x0000f484 ldrh r6, [r2, 0xe]                                    |     r6 = *((r2 + 0xe));
    0x0000f486 movs r1, r0                                           |     r1 = r0;
    0x0000f488 lsls r4, r5, 0xe                                      |     r4 = r5 << 0xe;
    0x0000f48a movs r0, r0                                           |     
    0x0000f48c ldrh r2, [r1, 0xe]                                    |     r2 = *((r1 + 0xe));
    0x0000f48e movs r1, r0                                           |     r1 = r0;
    0x0000f490 ldrh r2, [r4, 0xc]                                    |     r2 = *((r4 + 0xc));
    0x0000f492 movs r1, r0                                           |     r1 = r0;
    0x0000f494 stc2 p15, c15, [pc], -0x3fc                           |     __asm ("stc2 p15, c15, [pc], -0x3fc");
    0x0000f498 invalid                                               |     
                                                                     | }

[*] Function strcpy used 6 times mkfs.ext3