[*] Binary protection state of ext4.ko

  
  	No RELRO       No Canary found   NX disabled  REL          No RPATH     No RUNPATH   Symbols


[*] Function printf tear down of ext4.ko

    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x800e458 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.__es_insert_extent ()                                    | void es_insert_extent (int32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_4h;
                                                                         |     int32_t var_ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x0800e458 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                 |     
    0x0800e45c add r7, r0, 0x18c                                         |     r7 = r0 + 0x18c;
    0x0800e460 mov r6, r0                                                |     r6 = r0;
    0x0800e464 ldr r5, [r0, 0x18c]                                       |     r5 = *((r0 + 0x18c));
    0x0800e468 sub sp, sp, 0xc                                           |     
    0x0800e46c mov r8, r1                                                |     r8 = r1;
    0x0800e470 mov r4, r7                                                |     r4 = r7;
    0x0800e474 cmp r5, 0                                                 |     
                                                                         |     if (r5 != 0) {
    0x0800e478 bne 0x800e4c4                                             |         goto label_10;
                                                                         |     }
    0x0800e47c b 0x800e4fc                                               |     goto label_11;
                                                                         |     do {
    0x0800e480 ldr r1, [r5, 0x10]                                        |         r1 = *((r5 + 0x10));
    0x0800e484 adds r3, r3, r1                                           |         r3 += r1;
                                                                         |         if (r3 >= r3) {
    0x0800e488 bhs 0x800e7f8                                             |             goto label_12;
                                                                         |         }
    0x0800e48c sub r3, r3, 1                                             |         r3--;
    0x0800e490 cmp r2, r3                                                |         
                                                                         |         if (r2 < r3) {
    0x0800e494 bls 0x800e7f8                                             |             goto label_12;
                                                                         |         }
    0x0800e498 mov r1, r8                                                |         r1 = r8;
    0x0800e49c mov r0, r5                                                |         r0 = r5;
    0x0800e4a0 bl 0x800d840                                              |         r0 = ext4_es_can_be_merged ();
    0x0800e4a4 cmp r0, 0                                                 |         
                                                                         |         if (r0 != 0) {
    0x0800e4a8 bne 0x800e65c                                             |             goto label_13;
                                                                         |         }
    0x0800e4ac ldr r4, [r4]                                              |         r4 = *(r4);
    0x0800e4b0 add r4, r4, 4                                             |         r4 += 4;
    0x0800e4b4 ldr r3, [r4]                                              |         r3 = *(r4);
    0x0800e4b8 cmp r3, 0                                                 |         
                                                                         |         if (r3 == 0) {
    0x0800e4bc beq 0x800e4fc                                             |             goto label_11;
                                                                         |         }
                                                                         | label_0:
    0x0800e4c0 mov r5, r3                                                |         r5 = r3;
                                                                         | label_10:
    0x0800e4c4 ldr r2, [r8, 0xc]                                         |         r2 = *((r8 + 0xc));
    0x0800e4c8 ldr r3, [r5, 0xc]                                         |         r3 = *((r5 + 0xc));
    0x0800e4cc cmp r2, r3                                                |         
    0x0800e4d0 bhs 0x800e480                                             |         
                                                                         |     } while (r2 >= r3);
    0x0800e4d4 mov r1, r5                                                |     r1 = r5;
    0x0800e4d8 mov r0, r8                                                |     r0 = r8;
    0x0800e4dc bl 0x800d840                                              |     r0 = ext4_es_can_be_merged ();
    0x0800e4e0 cmp r0, 0                                                 |     
                                                                         |     if (r0 != 0) {
    0x0800e4e4 bne 0x800e6d0                                             |         goto label_14;
                                                                         |     }
    0x0800e4e8 ldr r4, [r4]                                              |     r4 = *(r4);
    0x0800e4ec add r4, r4, 8                                             |     r4 += 8;
    0x0800e4f0 ldr r3, [r4]                                              |     r3 = *(r4);
    0x0800e4f4 cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x0800e4f8 bne 0x800e4c0                                             |         goto label_0;
                                                                         |     }
                                                                         | label_11:
    0x0800e4fc stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}                  |     __asm ("stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}");
    0x0800e500 stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}                  |     __asm ("stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}");
    0x0800e504 mov r1, 0xa20                                             |     r1 = 0xa20;
    0x0800e508 ldr fp, [r8, 0x10]                                        |     fp = *((r8 + 0x10));
    0x0800e50c ldr sl, [r8, 0x18]                                        |     sl = *((r8 + 0x18));
    0x0800e510 ldr r0, [r3, 4]                                           |     r0 = *((r3 + 4));
    0x0800e514 ldr r3, [r8, 0xc]                                         |     r3 = *((r8 + 0xc));
    0x0800e518 ldr sb, [r8, 0x1c]                                        |     sb = *((r8 + 0x1c));
    0x0800e51c str r3, [sp, 4]                                           |     var_4h = r3;
    0x0800e520 stmdaeq r8, {r4, r8, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r4, r8, sb, sl, ip, sp, lr}");
    0x0800e524 subs r8, r0, 0                                            |     r8 = r0 - 0;
                                                                         |     if (r8 == r0) {
    0x0800e528 beq 0x800e840                                             |         goto label_15;
                                                                         |     }
    0x0800e52c ldr r3, [sp, 4]                                           |     r3 = var_4h;
    0x0800e530 tst sb, 0x20000000                                        |     
    0x0800e534 str r3, [r8, 0xc]                                         |     *((r8 + 0xc)) = r3;
    0x0800e538 mov r3, sp                                                |     r3 = sp;
    0x0800e53c bic r3, r3, 0x1fc0                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800e540 str fp, [r8, 0x10]                                        |     *((r8 + 0x10)) = fp;
    0x0800e544 bic r3, r3, 0x3f                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x0800e548 str sl, [r8, 0x18]                                        |     *((r8 + 0x18)) = sl;
    0x0800e54c str sb, [r8, 0x1c]                                        |     *((r8 + 0x1c)) = sb;
                                                                         |     if ((sb & 0x20000000) == 0) {
    0x0800e550 bne 0x800e5bc                                             |         
    0x0800e554 ldr r2, [r6, 0x1a0]                                       |         r2 = *((r6 + 0x1a0));
    0x0800e558 cmp r2, 0                                                 |         
    0x0800e55c add r2, r2, 1                                             |         r2++;
    0x0800e560 str r2, [r6, 0x1a0]                                       |         *((r6 + 0x1a0)) = r2;
    0x0800e564 ldr r2, [r6, 0x14]                                        |         r2 = *((r6 + 0x14));
    0x0800e568 ldr r2, [r2, 0x1f0]                                       |         r2 = *((r2 + 0x1f0));
                                                                         |         if (r2 == 0) {
    0x0800e56c beq 0x800e7a0                                             |             goto label_16;
                                                                         |         }
                                                                         | label_6:
    0x0800e570 ldr r1, [r3, 4]                                           |         r1 = *((r3 + 4));
    0x0800e574 add r1, r1, 1                                             |         r1++;
    0x0800e578 str r1, [r3, 4]                                           |         *((r3 + 4)) = r1;
    0x0800e57c add r3, r2, 0x290                                         |         r3 = r2 + 0x290;
    0x0800e580 ldr r2, [r2, 0x288]                                       |         r2 = *((r2 + 0x288));
    0x0800e584 adds r2, r2, 1                                            |         r2++;
    0x0800e588 str r2, [r3, -8]                                          |         *((r3 - 8)) = r2;
    0x0800e58c ldr r2, [r3, -4]                                          |         r2 = *((r3 - 4));
    0x0800e590 adc r2, r2, 0                                             |         __asm ("adc r2, r2, 0");
    0x0800e594 str r2, [r3, -4]                                          |         *((r3 - 4)) = r2;
    0x0800e598 mov sb, 0xe000                                            |         
    0x0800e59c movt sb, 0xffff                                           |         sb = 0x-2000;
    0x0800e5a0 mov r3, sp                                                |         r3 = sp;
    0x0800e5a4 and r3, r3, sb                                            |         r3 &= sb;
    0x0800e5a8 ldr r2, [r3, 4]                                           |         r2 = *((r3 + 4));
    0x0800e5ac sub r2, r2, 1                                             |         r2--;
    0x0800e5b0 str r2, [r3, 4]                                           |         *((r3 + 4)) = r2;
    0x0800e5b4 cmp r2, 0                                                 |         
                                                                         |         if (r2 == 0) {
    0x0800e5b8 beq 0x800e778                                             |             goto label_17;
                                                                         |         }
                                                                         |     }
                                                                         | label_3:
    0x0800e5bc ldr r2, [r6, 0x19c]                                       |     r2 = *((r6 + 0x19c));
    0x0800e5c0 add r2, r2, 1                                             |     r2++;
    0x0800e5c4 str r2, [r6, 0x19c]                                       |     *((r6 + 0x19c)) = r2;
    0x0800e5c8 ldr r2, [r6, 0x14]                                        |     r2 = *((r6 + 0x14));
    0x0800e5cc ldr r1, [r3, 4]                                           |     r1 = *((r3 + 4));
    0x0800e5d0 ldr r2, [r2, 0x1f0]                                       |     r2 = *((r2 + 0x1f0));
    0x0800e5d4 add r1, r1, 1                                             |     r1++;
    0x0800e5d8 str r1, [r3, 4]                                           |     *((r3 + 4)) = r1;
    0x0800e5dc ldr r3, [r2, 0x280]                                       |     r3 = *((r2 + 0x280));
    0x0800e5e0 ldr r1, [r2, 0x284]                                       |     r1 = *((r2 + 0x284));
    0x0800e5e4 adds r3, r3, 1                                            |     r3++;
    0x0800e5e8 str r3, [r2, 0x280]                                       |     *((r2 + 0x280)) = r3;
    0x0800e5ec adc r3, r1, 0                                             |     __asm ("adc r3, r1, 0");
    0x0800e5f0 str r3, [r2, 0x284]                                       |     *((r2 + 0x284)) = r3;
    0x0800e5f4 mov r3, sp                                                |     r3 = sp;
    0x0800e5f8 bic r3, r3, 0x1fc0                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800e5fc bic r3, r3, 0x3f                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x0800e600 ldr r2, [r3, 4]                                           |     r2 = *((r3 + 4));
    0x0800e604 sub r2, r2, 1                                             |     r2--;
    0x0800e608 str r2, [r3, 4]                                           |     *((r3 + 4)) = r2;
    0x0800e60c cmp r2, 0                                                 |     
    0x0800e610 beq 0x800e648                                             |     
                                                                         |     while ((r3 & 2) == 0) {
                                                                         | label_1:
    0x0800e614 str r5, [r8]                                              |         *(r8) = r5;
    0x0800e618 mov r3, 0                                                 |         r3 = 0;
    0x0800e61c mov r1, r7                                                |         r1 = r7;
    0x0800e620 str r3, [r8, 4]                                           |         *((r8 + 4)) = r3;
    0x0800e624 str r3, [r8, 8]                                           |         *((r8 + 8)) = r3;
    0x0800e628 mov r0, r8                                                |         r0 = r8;
    0x0800e62c str r8, [r4]                                              |         *(r4) = r8;
    0x0800e630 mov r5, r8                                                |         r5 = r8;
    0x0800e634 stmdaeq r8, {r2, r4, r8, sb, sl, ip, sp, lr}              |         __asm ("stmdaeq r8, {r2, r4, r8, sb, sl, ip, sp, lr}");
                                                                         | label_2:
    0x0800e638 str r5, [r6, 0x190]                                       |         *((r6 + 0x190)) = r5;
    0x0800e63c mov r0, 0                                                 |         r0 = 0;
                                                                         | label_9:
    0x0800e640 add sp, sp, 0xc                                           |         
    0x0800e644 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |         
    0x0800e648 ldr r3, [r3]                                              |         r3 = *(r3);
    0x0800e64c tst r3, 2                                                 |         
    0x0800e650 beq 0x800e614                                             |         
                                                                         |     }
    0x0800e654 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x0800e658 b 0x800e614                                               |     goto label_1;
                                                                         | label_13:
    0x0800e65c ldr r3, [r5, 0x10]                                        |     r3 = *((r5 + 0x10));
    0x0800e660 mov r0, r5                                                |     r0 = r5;
    0x0800e664 ldr r2, [r8, 0x10]                                        |     r2 = *((r8 + 0x10));
    0x0800e668 add r3, r3, r2                                            |     r3 += r2;
    0x0800e66c str r3, [r5, 0x10]                                        |     *((r5 + 0x10)) = r3;
    0x0800e670 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800e674 subs r4, r0, 0                                            |     r4 = r0 - 0;
                                                                         |     if (r4 == r0) {
    0x0800e678 beq 0x800e638                                             |         goto label_2;
                                                                         |     }
    0x0800e67c mov r1, r4                                                |     r1 = r4;
    0x0800e680 mov r0, r5                                                |     r0 = r5;
    0x0800e684 bl 0x800d840                                              |     r0 = ext4_es_can_be_merged ();
    0x0800e688 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x0800e68c beq 0x800e638                                             |         goto label_2;
                                                                         |     }
    0x0800e690 ldr r2, [r4, 0x10]                                        |     r2 = *((r4 + 0x10));
    0x0800e694 mov r1, r7                                                |     r1 = r7;
    0x0800e698 ldr r3, [r5, 0x10]                                        |     r3 = *((r5 + 0x10));
    0x0800e69c mov r0, r4                                                |     r0 = r4;
    0x0800e6a0 add r3, r3, r2                                            |     r3 += r2;
    0x0800e6a4 str r3, [r5, 0x10]                                        |     *((r5 + 0x10)) = r3;
    0x0800e6a8 ldr r3, [r4, 0x1c]                                        |     r3 = *((r4 + 0x1c));
    0x0800e6ac cmp r3, 0                                                 |     
                                                                         |     if (r3 >= 0) {
    0x0800e6b0 ldrlt r3, [r5, 0x1c]                                      |         r3 = *((r5 + 0x1c));
                                                                         |     }
                                                                         |     if (r3 >= 0) {
    0x0800e6b4 orrlt r3, r3, 0x80000000                                  |         r3 |= 0x80000000;
                                                                         |     }
                                                                         |     if (r3 >= 0) {
    0x0800e6b8 strlt r3, [r5, 0x1c]                                      |         *((r5 + 0x1c)) = r3;
                                                                         |     }
    0x0800e6bc stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}");
    0x0800e6c0 mov r1, r4                                                |     r1 = r4;
    0x0800e6c4 mov r0, r6                                                |     r0 = r6;
    0x0800e6c8 bl 0x800de04                                              |     ext4_es_free_extent ();
    0x0800e6cc b 0x800e638                                               |     goto label_2;
                                                                         | label_14:
    0x0800e6d0 ldr r3, [r8, 0xc]                                         |     r3 = *((r8 + 0xc));
    0x0800e6d4 str r3, [r5, 0xc]                                         |     *((r5 + 0xc)) = r3;
    0x0800e6d8 ldr r3, [r5, 0x1c]                                        |     r3 = *((r5 + 0x1c));
    0x0800e6dc ldr r2, [r5, 0x10]                                        |     r2 = *((r5 + 0x10));
    0x0800e6e0 ldr r1, [r8, 0x10]                                        |     r1 = *((r8 + 0x10));
    0x0800e6e4 tst r3, 0x8000000                                         |     
    0x0800e6e8 add r2, r2, r1                                            |     r2 += r1;
    0x0800e6ec str r2, [r5, 0x10]                                        |     *((r5 + 0x10)) = r2;
    0x0800e6f0 lsr r2, r3, 0x1b                                          |     r2 = r3 >> 0x1b;
                                                                         |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0800e6f4 beq 0x800e794                                             |         goto label_18;
                                                                         |     }
                                                                         | label_5:
    0x0800e6f8 ldr r2, [r8, 0x1c]                                        |     r2 = *((r8 + 0x1c));
    0x0800e6fc and r3, r3, 0xf8000000                                    |     r3 &= 0xf8000000;
    0x0800e700 ldr r1, [r8, 0x18]                                        |     r1 = *((r8 + 0x18));
    0x0800e704 bic r2, r2, 0xf8000000                                    |     r2 = BIT_MASK (r2, 0xf8000000);
    0x0800e708 str r1, [r5, 0x18]                                        |     *((r5 + 0x18)) = r1;
    0x0800e70c orr r3, r2, r3                                            |     r3 = r2 | r3;
    0x0800e710 str r3, [r5, 0x1c]                                        |     *((r5 + 0x1c)) = r3;
                                                                         | label_4:
    0x0800e714 mov r0, r5                                                |     r0 = r5;
    0x0800e718 stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800e71c subs r4, r0, 0                                            |     r4 = r0 - 0;
                                                                         |     if (r4 == r0) {
    0x0800e720 beq 0x800e638                                             |         goto label_2;
                                                                         |     }
    0x0800e724 mov r1, r5                                                |     r1 = r5;
    0x0800e728 bl 0x800d840                                              |     r0 = ext4_es_can_be_merged ();
    0x0800e72c cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x0800e730 beq 0x800e638                                             |         goto label_2;
                                                                         |     }
    0x0800e734 ldr r2, [r5, 0x10]                                        |     r2 = *((r5 + 0x10));
    0x0800e738 mov r0, r5                                                |     r0 = r5;
    0x0800e73c ldr r3, [r4, 0x10]                                        |     r3 = *((r4 + 0x10));
    0x0800e740 mov r1, r7                                                |     r1 = r7;
    0x0800e744 add r3, r3, r2                                            |     r3 += r2;
    0x0800e748 str r3, [r4, 0x10]                                        |     *((r4 + 0x10)) = r3;
    0x0800e74c ldr r3, [r5, 0x1c]                                        |     r3 = *((r5 + 0x1c));
    0x0800e750 cmp r3, 0                                                 |     
                                                                         |     if (r3 >= 0) {
    0x0800e754 ldrlt r3, [r4, 0x1c]                                      |         r3 = *((r4 + 0x1c));
                                                                         |     }
                                                                         |     if (r3 >= 0) {
    0x0800e758 orrlt r3, r3, 0x80000000                                  |         r3 |= 0x80000000;
                                                                         |     }
                                                                         |     if (r3 >= 0) {
    0x0800e75c strlt r3, [r4, 0x1c]                                      |         *((r4 + 0x1c)) = r3;
                                                                         |     }
    0x0800e760 stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}");
    0x0800e764 mov r1, r5                                                |     r1 = r5;
    0x0800e768 mov r0, r6                                                |     r0 = r6;
    0x0800e76c mov r5, r4                                                |     r5 = r4;
    0x0800e770 bl 0x800de04                                              |     ext4_es_free_extent ();
    0x0800e774 b 0x800e638                                               |     goto label_2;
                                                                         | label_17:
    0x0800e778 ldr r2, [r3]                                              |     r2 = *(r3);
    0x0800e77c tst r2, 2                                                 |     
                                                                         |     if ((r2 & 2) == 0) {
    0x0800e780 beq 0x800e5bc                                             |         goto label_3;
                                                                         |     }
    0x0800e784 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x0800e788 mov r3, sp                                                |     r3 = sp;
    0x0800e78c and r3, r3, sb                                            |     r3 &= sb;
    0x0800e790 b 0x800e5bc                                               |     goto label_3;
                                                                         | label_18:
    0x0800e794 tst r2, 2                                                 |     
                                                                         |     if ((r2 & 2) == 0) {
    0x0800e798 beq 0x800e714                                             |         goto label_4;
                                                                         |     }
    0x0800e79c b 0x800e6f8                                               |     goto label_5;
                                                                         | label_16:
    0x0800e7a0 ldr r0, [r6, 0x194]                                       |     r0 = *((r6 + 0x194));
    0x0800e7a4 add r1, r6, 0x194                                         |     r1 = r6 + 0x194;
    0x0800e7a8 cmp r1, r0                                                |     
                                                                         |     if (r1 != r0) {
    0x0800e7ac bne 0x800e570                                             |         goto label_6;
                                                                         |     }
    0x0800e7b0 ldr r0, [r3, 4]                                           |     r0 = *((r3 + 4));
    0x0800e7b4 add r0, r0, 1                                             |     r0++;
    0x0800e7b8 str r0, [r3, 4]                                           |     *((r3 + 4)) = r0;
    0x0800e7bc ldr r3, [r6, 0x194]                                       |     r3 = *((r6 + 0x194));
    0x0800e7c0 cmp r1, r3                                                |     
                                                                         |     if (r1 == r3) {
    0x0800e7c4 beq 0x800e818                                             |         goto label_19;
                                                                         |     }
                                                                         | label_8:
    0x0800e7c8 mov sb, 0xe000                                            |     
    0x0800e7cc movt sb, 0xffff                                           |     sb = 0x-2000;
    0x0800e7d0 mov r3, sp                                                |     r3 = sp;
    0x0800e7d4 and r3, r3, sb                                            |     r3 &= sb;
    0x0800e7d8 ldr r2, [r3, 4]                                           |     r2 = *((r3 + 4));
    0x0800e7dc sub r2, r2, 1                                             |     r2--;
    0x0800e7e0 str r2, [r3, 4]                                           |     *((r3 + 4)) = r2;
    0x0800e7e4 cmp r2, 0                                                 |     
    0x0800e7e8 beq 0x800e7fc                                             |     
                                                                         |     while ((r2 & 2) == 0) {
                                                                         | label_7:
    0x0800e7ec ldr r2, [r6, 0x14]                                        |         r2 = *((r6 + 0x14));
    0x0800e7f0 ldr r2, [r2, 0x1f0]                                       |         r2 = *((r2 + 0x1f0));
    0x0800e7f4 b 0x800e570                                               |         goto label_6;
                                                                         | label_12:
    0x0800e7f8 udf 0x12                                                  |         __asm ("udf 0x12");
    0x0800e7fc ldr r2, [r3]                                              |         r2 = *(r3);
    0x0800e800 tst r2, 2                                                 |         
    0x0800e804 beq 0x800e7ec                                             |         
                                                                         |     }
    0x0800e808 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x0800e80c mov r3, sp                                                |     r3 = sp;
    0x0800e810 and r3, r3, sb                                            |     r3 &= sb;
    0x0800e814 b 0x800e7ec                                               |     goto label_7;
                                                                         | label_19:
    0x0800e818 ldr r3, [r2, 0x250]                                       |     r3 = *((r2 + 0x250));
    0x0800e81c add r0, r2, 0x24c                                         |     r0 = r2 + 0x24c;
    0x0800e820 str r1, [r2, 0x250]                                       |     *((r2 + 0x250)) = r1;
    0x0800e824 str r3, [r6, 0x198]                                       |     *((r6 + 0x198)) = r3;
    0x0800e828 str r0, [r6, 0x194]                                       |     *((r6 + 0x194)) = r0;
    0x0800e82c str r1, [r3]                                              |     *(r3) = r1;
    0x0800e830 ldr r3, [r2, 0x254]                                       |     r3 = *((r2 + 0x254));
    0x0800e834 add r3, r3, 1                                             |     r3++;
    0x0800e838 str r3, [r2, 0x254]                                       |     *((r2 + 0x254)) = r3;
    0x0800e83c b 0x800e7c8                                               |     goto label_8;
                                                                         | label_15:
    0x0800e840 mvn r0, 0xb                                               |     r0 = ~0xb;
    0x0800e844 b 0x800e640                                               |     goto label_9;
                                                                         | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x800e848 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.__es_remove_extent ()                                    | void es_remove_extent (int32_t arg_2ch, int32_t arg_30h, int32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_8h;
                                                                         |     int32_t var_ch;
                                                                         |     int32_t var_10h;
                                                                         |     int32_t var_14h;
                                                                         |     int32_t var_18h;
                                                                         |     int32_t var_1ch;
                                                                         |     int32_t var_24h;
                                                                         |     int32_t var_28h;
                                                                         |     int32_t var_2ch;
                                                                         |     int32_t var_30h;
                                                                         |     int32_t var_34h;
                                                                         |     int32_t var_38h;
                                                                         |     int32_t var_40h;
                                                                         |     int32_t var_4ch;
                                                                         |     int32_t var_50h;
                                                                         |     int32_t var_58h;
                                                                         |     int32_t var_5ch;
                                                                         |     int32_t var_60h;
                                                                         |     int32_t var_6ch;
                                                                         |     int32_t var_70h;
                                                                         |     int32_t var_78h;
                                                                         |     int32_t var_7ch;
                                                                         |     int32_t var_84h;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x0800e848 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                 |     
    0x0800e84c cmp r3, 0                                                 |     
    0x0800e850 mov r7, r0                                                |     r7 = r0;
    0x0800e854 sub sp, sp, 0x84                                          |     
    0x0800e858 mov sl, r1                                                |     sl = r1;
    0x0800e85c mov sb, r2                                                |     sb = r2;
    0x0800e860 add fp, r0, 0x18c                                         |     
    0x0800e864 str r3, [sp, 0x1c]                                        |     var_1ch = r3;
                                                                         |     if (r3 == 0) {
    0x0800e868 ldrne r3, [r0, 0x14]                                      |         r3 = *((r0 + 0x14));
                                                                         |     }
                                                                         |     if (r3 != 0) {
    0x0800e86c ldreq r3, [sp, 0x1c]                                      |         r3 = var_1ch;
                                                                         |     }
    0x0800e870 str fp, [sp, 0xc]                                         |     var_ch = fp;
                                                                         |     if (r3 == 0) {
    0x0800e874 ldrne r3, [r3, 0x1f0]                                     |         r3 = *((r3 + 0x1f0));
                                                                         |     }
                                                                         |     if (r3 == 0) {
    0x0800e878 ldrne r3, [r3, 0x4c]                                      |         r3 = *((r3 + 0x4c));
                                                                         |     }
    0x0800e87c ubfxne r3, r3, 0x1b, 1                                    |     __asm ("ubfxne r3, r3, 0x1b, 1");
    0x0800e880 str r3, [sp, 0x10]                                        |     var_10h = r3;
    0x0800e884 movw r3, 0xbeef                                           |     
    0x0800e888 movt r3, 0xdead                                           |     r3 = 0xdeadbeef;
    0x0800e88c str r3, [sp, 0x18]                                        |     var_18h = r3;
    0x0800e890 add r3, r2, 1                                             |     r3 = r2 + 1;
    0x0800e894 str r3, [sp, 0x14]                                        |     var_14h = r3;
                                                                         |     do {
    0x0800e898 ldr r0, [sp, 0xc]                                         |         r0 = var_ch;
    0x0800e89c mov r1, sl                                                |         r1 = sl;
    0x0800e8a0 bl 0x800dac8                                              |         r0 = es_tree_search ();
    0x0800e8a4 subs r4, r0, 0                                            |         r4 = r0 - 0;
                                                                         |         if (r4 == r0) {
    0x0800e8a8 beq 0x800eab4                                             |             goto label_6;
                                                                         |         }
    0x0800e8ac ldr r2, [r4, 0xc]                                         |         r2 = *((r4 + 0xc));
    0x0800e8b0 cmp r2, sb                                                |         
                                                                         |         if (r2 > sb) {
    0x0800e8b4 bhi 0x800eab4                                             |             goto label_6;
                                                                         |         }
    0x0800e8b8 ldr r3, [sp, 0x10]                                        |         r3 = var_10h;
    0x0800e8bc cmp r3, 0                                                 |         
    0x0800e8c0 mov r3, 0                                                 |         r3 = 0;
    0x0800e8c4 str r3, [r7, 0x190]                                       |         *((r7 + 0x190)) = r3;
                                                                         |         if (r3 != 0) {
    0x0800e8c8 bne 0x800ea40                                             |             goto label_19;
                                                                         |         }
    0x0800e8cc ldr r6, [r4, 0xc]                                         |         r6 = *((r4 + 0xc));
                                                                         | label_1:
    0x0800e8d0 cmp sl, r6                                                |         
    0x0800e8d4 ldr r5, [r4, 0x10]                                        |         r5 = *((r4 + 0x10));
    0x0800e8d8 ldr ip, [r4, 0x18]                                        |         ip = *((r4 + 0x18));
                                                                         |         if (sl <= r6) {
    0x0800e8dc subhi r2, sl, r6                                          |             r2 = sl - r6;
                                                                         |         }
    0x0800e8e0 ldr r0, [r4, 0x1c]                                        |         r0 = *((r4 + 0x1c));
                                                                         |         if (sl > r6) {
    0x0800e8e4 movls r2, 0                                               |             r2 = 0;
                                                                         |         }
    0x0800e8e8 str r6, [sp, 0x4c]                                        |         var_4ch = r6;
    0x0800e8ec adds r8, r5, r6                                           |         r8 = r5 + r6;
    0x0800e8f0 str r5, [sp, 0x50]                                        |         var_50h = r5;
    0x0800e8f4 str ip, [sp, 0x58]                                        |         var_58h = ip;
    0x0800e8f8 str r0, [sp, 0x5c]                                        |         var_5ch = r0;
                                                                         |         if (r8 >= r5) {
    0x0800e8fc bhs 0x800ee1c                                             |             goto label_20;
                                                                         |         }
    0x0800e900 sub r8, r8, 1                                             |         r8--;
    0x0800e904 cmp sb, r8                                                |         
                                                                         |         if (sb >= r8) {
    0x0800e908 bhs 0x800ea7c                                             |             goto label_21;
                                                                         |         }
    0x0800e90c lsr lr, r0, 0x1b                                          |         lr = r0 >> 0x1b;
    0x0800e910 cmp r2, 0                                                 |         
    0x0800e914 sub r1, r8, sb                                            |         r1 = r8 - sb;
    0x0800e918 and fp, lr, 1                                             |         
                                                                         |         if (r2 == 0) {
    0x0800e91c bne 0x800e994                                             |             
    0x0800e920 ldr r6, [sp, 0x14]                                        |             r6 = var_14h;
    0x0800e924 mov r3, r8                                                |             r3 = r8;
    0x0800e928 cmp fp, 0                                                 |             
    0x0800e92c str r6, [r4, 0xc]                                         |             *((r4 + 0xc)) = r6;
    0x0800e930 str r1, [r4, 0x10]                                        |             *((r4 + 0x10)) = r1;
                                                                         |             if (fp == 0) {
    0x0800e934 beq 0x800ec28                                             |                 goto label_22;
                                                                         |             }
                                                                         | label_7:
    0x0800e938 adds ip, r5, ip                                           |             
    0x0800e93c and lr, r0, 0xf8000000                                    |             lr = r0 & 0xf8000000;
    0x0800e940 adc r0, r0, 0                                             |             __asm ("adc r0, r0, 0");
    0x0800e944 subs ip, ip, r1                                           |             
    0x0800e948 sbc r1, r0, 0                                             |             __asm ("sbc r1, r0, 0");
    0x0800e94c str ip, [r4, 0x18]                                        |             *((r4 + 0x18)) = ip;
    0x0800e950 bic r1, r1, 0xf8000000                                    |             r1 = BIT_MASK (r1, 0xf8000000);
    0x0800e954 orr r1, r1, lr                                            |             r1 |= lr;
    0x0800e958 str r1, [r4, 0x1c]                                        |             *((r4 + 0x1c)) = r1;
                                                                         | label_4:
    0x0800e95c ldr r1, [sp, 0x10]                                        |             r1 = var_10h;
    0x0800e960 cmp r1, 0                                                 |             
                                                                         |             if (r1 == 0) {
    0x0800e964 beq 0x800eab4                                             |                 goto label_6;
                                                                         |             }
    0x0800e968 add r5, r5, sb                                            |             r5 += sb;
    0x0800e96c add ip, sp, 0x24                                          |             
    0x0800e970 sub r3, r5, r3                                            |             r3 = r5 - r3;
    0x0800e974 mov r1, sl                                                |             r1 = sl;
    0x0800e978 sub r2, r3, r2                                            |             r2 = r3 - r2;
    0x0800e97c mov r0, r7                                                |             r0 = r7;
    0x0800e980 add r3, sp, 0x40                                          |             r3 += var_40h;
    0x0800e984 str ip, [sp]                                              |             *(sp) = ip;
    0x0800e988 mov r8, 0                                                 |             r8 = 0;
    0x0800e98c bl 0x800dc74                                              |             count_rsvd ();
    0x0800e990 b 0x800eab8                                               |             goto label_23;
                                                                         |         }
    0x0800e994 ldr r3, [sp, 0x14]                                        |         r3 = var_14h;
    0x0800e998 cmp fp, 0                                                 |         
    0x0800e99c str r2, [r4, 0x10]                                        |         *((r4 + 0x10)) = r2;
    0x0800e9a0 str r3, [sp, 0x6c]                                        |         var_6ch = r3;
    0x0800e9a4 str r1, [sp, 0x70]                                        |         var_70h = r1;
                                                                         |         if (fp != 0) {
    0x0800e9a8 bne 0x800ea24                                             |             goto label_24;
                                                                         |         }
    0x0800e9ac tst lr, 2                                                 |         
                                                                         |         if ((lr & 2) != 0) {
    0x0800e9b0 bne 0x800ea24                                             |             goto label_24;
                                                                         |         }
    0x0800e9b4 ldr ip, [sp, 0x18]                                        |         ip = var_18h;
    0x0800e9b8 mov lr, 0x7f                                              |         lr = 0x7f;
                                                                         | label_0:
    0x0800e9bc and r0, r0, 0xf8000000                                    |         r0 &= 0xf8000000;
    0x0800e9c0 add r1, sp, 0x60                                          |         r1 += var_60h;
    0x0800e9c4 orr r0, r0, lr                                            |         r0 |= lr;
    0x0800e9c8 str r0, [sp, 0x7c]                                        |         var_7ch = r0;
    0x0800e9cc mov r0, r7                                                |         r0 = r7;
    0x0800e9d0 str r2, [sp, 8]                                           |         var_8h = r2;
    0x0800e9d4 str ip, [sp, 0x78]                                        |         var_78h = ip;
    0x0800e9d8 bl 0x800e458                                              |         es_insert_extent ();
    0x0800e9dc ldr r2, [sp, 8]                                           |         r2 = var_8h;
    0x0800e9e0 subs fp, r0, 0                                            |         
                                                                         |         if (fp == r0) {
    0x0800e9e4 beq 0x800eb38                                             |             goto label_25;
                                                                         |         }
    0x0800e9e8 cmn fp, 0xc                                               |         
    0x0800e9ec str r6, [r4, 0xc]                                         |         *((r4 + 0xc)) = r6;
    0x0800e9f0 str r5, [r4, 0x10]                                        |         *((r4 + 0x10)) = r5;
                                                                         |         if (fp != 0xc) {
    0x0800e9f4 bne 0x800ea14                                             |             goto label_26;
                                                                         |         }
    0x0800e9f8 ldr r2, [r7, 0x14]                                        |         r2 = *((r7 + 0x14));
    0x0800e9fc mov r1, 0x80                                              |         r1 = 0x80;
    0x0800ea00 ldr r0, [r2, 0x1f0]                                       |         r0 = *((r2 + 0x1f0));
    0x0800ea04 sub r2, r7, 0xc0                                          |         r2 = r7 - 0xc0;
    0x0800ea08 bl 0x800e190                                              |         r0 = es_shrink ();
    0x0800ea0c cmp r0, 0                                                 |         
    0x0800ea10 bne 0x800e898                                             |         
                                                                         |     } while (r0 != 0);
                                                                         | label_26:
    0x0800ea14 mov r8, fp                                                |     r8 = fp;
    0x0800ea18 mov r0, r8                                                |     r0 = r8;
    0x0800ea1c add sp, sp, 0x84                                          |     
    0x0800ea20 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |     
                                                                         | label_24:
    0x0800ea24 adds ip, ip, r5                                           |     
    0x0800ea28 bic lr, r0, 0xf8000000                                    |     lr = BIT_MASK (r0, 0xf8000000);
    0x0800ea2c adc lr, lr, 0                                             |     __asm ("adc lr, lr, 0");
    0x0800ea30 subs ip, ip, r1                                           |     
    0x0800ea34 sbc lr, lr, 0                                             |     __asm ("sbc lr, lr, 0");
    0x0800ea38 bic lr, lr, 0xf8000000                                    |     lr = BIT_MASK (lr, 0xf8000000);
    0x0800ea3c b 0x800e9bc                                               |     goto label_0;
                                                                         | label_19:
    0x0800ea40 ldr r2, [r7, 0x14]                                        |     r2 = *((r7 + 0x14));
    0x0800ea44 mov r3, 0                                                 |     r3 = 0;
    0x0800ea48 ldr r6, [r4, 0xc]                                         |     r6 = *((r4 + 0xc));
    0x0800ea4c str r3, [sp, 0x24]                                        |     var_24h = r3;
    0x0800ea50 ldr r2, [r2, 0x1f0]                                       |     r2 = *((r2 + 0x1f0));
    0x0800ea54 ldr r2, [r2, 0x2c]                                        |     r2 = *((r2 + 0x2c));
    0x0800ea58 cmp r2, 1                                                 |     
                                                                         |     if (r2 < 1) {
    0x0800ea5c bls 0x800e8d0                                             |         goto label_1;
                                                                         |     }
    0x0800ea60 cmp r6, sl                                                |     
    0x0800ea64 strb r3, [sp, 0x28]                                       |     var_28h = r3;
                                                                         |     if (r6 >= sl) {
    0x0800ea68 strlo r4, [sp, 0x34]                                      |         var_34h = r4;
                                                                         |     }
                                                                         |     if (r6 >= sl) {
    0x0800ea6c bhs 0x800eb28                                             |         goto label_27;
                                                                         |     }
                                                                         | label_3:
    0x0800ea70 mov r3, 0                                                 |     r3 = 0;
    0x0800ea74 strb r3, [sp, 0x38]                                       |     var_38h = r3;
    0x0800ea78 b 0x800e8d0                                               |     goto label_1;
                                                                         | label_21:
    0x0800ea7c ldr fp, [sp, 0xc]                                         |     fp = var_ch;
    0x0800ea80 cmp r2, 0                                                 |     
    0x0800ea84 bne 0x800ea94                                             |     
                                                                         |     while (r4 != r0) {
                                                                         | label_5:
    0x0800ea88 ldr r8, [sp, 0x10]                                        |         r8 = var_10h;
    0x0800ea8c add r6, sp, 0x24                                          |         r6 += var_24h;
    0x0800ea90 b 0x800eb00                                               |         goto label_28;
    0x0800ea94 ldr r3, [sp, 0x10]                                        |         r3 = var_10h;
    0x0800ea98 str r2, [r4, 0x10]                                        |         *((r4 + 0x10)) = r2;
    0x0800ea9c cmp r3, 0                                                 |         
                                                                         |         if (r3 != 0) {
    0x0800eaa0 bne 0x800eb40                                             |             goto label_29;
                                                                         |         }
    0x0800eaa4 mov r0, r4                                                |         r0 = r4;
    0x0800eaa8 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}          |         __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800eaac subs r4, r0, 0                                            |         r4 = r0 - 0;
    0x0800eab0 bne 0x800ea88                                             |         
                                                                         |     }
                                                                         | label_6:
    0x0800eab4 mov r8, 0                                                 |     r8 = 0;
                                                                         | label_23:
    0x0800eab8 mov r0, r8                                                |     r0 = r8;
    0x0800eabc add sp, sp, 0x84                                          |     
    0x0800eac0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |     
                                                                         | label_2:
    0x0800eac4 mov r3, r4                                                |     r3 = r4;
    0x0800eac8 mov r0, r7                                                |     r0 = r7;
    0x0800eacc str r6, [sp]                                              |     *(sp) = r6;
    0x0800ead0 bl 0x800dc74                                              |     count_rsvd ();
                                                                         |     do {
    0x0800ead4 mov r0, r4                                                |         r0 = r4;
    0x0800ead8 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}          |         __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800eadc mov r1, fp                                                |         r1 = fp;
    0x0800eae0 mov r5, r0                                                |         r5 = r0;
    0x0800eae4 mov r0, r4                                                |         r0 = r4;
    0x0800eae8 stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}                  |         __asm ("stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}");
    0x0800eaec mov r1, r4                                                |         r1 = r4;
    0x0800eaf0 mov r0, r7                                                |         r0 = r7;
    0x0800eaf4 bl 0x800de04                                              |         ext4_es_free_extent ();
    0x0800eaf8 subs r4, r5, 0                                            |         r4 = r5 - 0;
                                                                         |         if (r4 == r5) {
    0x0800eafc beq 0x800ec9c                                             |             goto label_30;
                                                                         |         }
                                                                         | label_28:
    0x0800eb00 ldr r1, [r4, 0xc]                                         |         r1 = *((r4 + 0xc));
    0x0800eb04 ldr r2, [r4, 0x10]                                        |         r2 = *((r4 + 0x10));
    0x0800eb08 adds r3, r1, r2                                           |         r3 = r1 + r2;
                                                                         |         if (r3 >= r1) {
    0x0800eb0c bhs 0x800ee1c                                             |             goto label_20;
                                                                         |         }
    0x0800eb10 sub r3, r3, 1                                             |         r3--;
    0x0800eb14 cmp sb, r3                                                |         
                                                                         |         if (sb <= r3) {
    0x0800eb18 blo 0x800ec34                                             |             goto label_31;
                                                                         |         }
    0x0800eb1c cmp r8, 0                                                 |         
    0x0800eb20 beq 0x800ead4                                             |         
                                                                         |     } while (r8 == 0);
    0x0800eb24 b 0x800eac4                                               |     goto label_2;
                                                                         | label_27:
    0x0800eb28 stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800eb2c ldr r6, [r4, 0xc]                                         |     r6 = *((r4 + 0xc));
    0x0800eb30 str r0, [sp, 0x34]                                        |     var_34h = r0;
    0x0800eb34 b 0x800ea70                                               |     goto label_3;
                                                                         | label_25:
    0x0800eb38 mov r3, r8                                                |     r3 = r8;
    0x0800eb3c b 0x800e95c                                               |     goto label_4;
                                                                         | label_29:
    0x0800eb40 add r0, sp, 0x24                                          |     r0 += var_24h;
    0x0800eb44 sub r2, r5, r2                                            |     r2 = r5 - r2;
    0x0800eb48 mov r1, sl                                                |     r1 = sl;
    0x0800eb4c add r3, sp, 0x40                                          |     r3 += var_40h;
    0x0800eb50 str r0, [sp]                                              |     *(sp) = r0;
    0x0800eb54 mov r0, r7                                                |     r0 = r7;
    0x0800eb58 bl 0x800dc74                                              |     count_rsvd ();
    0x0800eb5c mov r0, r4                                                |     r0 = r4;
    0x0800eb60 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800eb64 subs r4, r0, 0                                            |     r4 = r0 - 0;
                                                                         |     if (r4 != r0) {
    0x0800eb68 bne 0x800ea88                                             |         goto label_5;
                                                                         |     }
                                                                         | label_8:
    0x0800eb6c ldr r3, [r7, 0x14]                                        |     r3 = *((r7 + 0x14));
    0x0800eb70 ldr r5, [sp, 0x24]                                        |     r5 = var_24h;
    0x0800eb74 ldr fp, [r3, 0x1f0]                                       |     fp = *((r3 + 0x1f0));
    0x0800eb78 ldr r3, [fp, 0x2c]                                        |     r3 = *(arg_2ch);
    0x0800eb7c cmp r3, 1                                                 |     
                                                                         |     if (r3 >= 1) {
    0x0800eb80 bls 0x800ec1c                                             |         
    0x0800eb84 ldrb r3, [sp, 0x38]                                       |         r3 = var_38h;
    0x0800eb88 cmp r3, 0                                                 |         
                                                                         |         if (r3 == 0) {
    0x0800eb8c addne r5, r5, 1                                           |             r5++;
                                                                         |         }
                                                                         |         if (r3 == 0) {
    0x0800eb90 strne r5, [sp, 0x24]                                      |             var_24h = r5;
                                                                         |         }
    0x0800eb94 cmp r5, 0                                                 |         
                                                                         |         if (r5 == 0) {
    0x0800eb98 beq 0x800ec1c                                             |             goto label_10;
                                                                         |         }
    0x0800eb9c ldr sl, [fp, 0x30]                                        |         sl = *(arg_30h);
    0x0800eba0 ldr r3, [sp, 0x30]                                        |         r3 = var_30h;
    0x0800eba4 ldr r8, [sp, 0x2c]                                        |         r8 = var_2ch;
    0x0800eba8 ldr r0, [sp, 0x34]                                        |         r0 = var_34h;
    0x0800ebac str r3, [sp, 8]                                           |         var_8h = r3;
    0x0800ebb0 lsr r6, r8, sl                                            |         r6 = r8 >> sl;
    0x0800ebb4 cmp r0, 0                                                 |         
    0x0800ebb8 lsr sl, r3, sl                                            |         sl = r3 >> sl;
                                                                         |         if (r0 == 0) {
    0x0800ebbc beq 0x800ecb8                                             |             goto label_32;
                                                                         |         }
                                                                         | label_9:
    0x0800ebc0 ldr r3, [r0, 0xc]                                         |         r3 = *((r0 + 0xc));
    0x0800ebc4 ldr r2, [r0, 0x10]                                        |         r2 = *((r0 + 0x10));
    0x0800ebc8 adds r3, r3, r2                                           |         r3 += r2;
                                                                         |         if (r3 >= r3) {
    0x0800ebcc bhs 0x800ee1c                                             |             goto label_20;
                                                                         |         }
    0x0800ebd0 ldr r2, [fp, 0x2c]                                        |         r2 = *(arg_2ch);
    0x0800ebd4 sub r3, r3, 1                                             |         r3--;
    0x0800ebd8 rsb r2, r2, 0                                             |         r2 -= ;
    0x0800ebdc and r2, r2, r8                                            |         r2 &= r8;
    0x0800ebe0 cmp r3, r2                                                |         
                                                                         |         if (r3 <= r2) {
    0x0800ebe4 blo 0x800ecb8                                             |             goto label_32;
                                                                         |         }
    0x0800ebe8 ldr r3, [r0, 0x1c]                                        |         r3 = *((r0 + 0x1c));
    0x0800ebec tst r3, 0x20000000                                        |         
    0x0800ebf0 lsr r3, r3, 0x1b                                          |         r3 >>= 0x1b;
                                                                         |         if ((r3 & 0x20000000) == 0) {
    0x0800ebf4 beq 0x800ecac                                             |             goto label_33;
                                                                         |         }
    0x0800ebf8 tst r3, 2                                                 |         
                                                                         |         if ((r3 & 2) != 0) {
    0x0800ebfc bne 0x800ecac                                             |             goto label_33;
                                                                         |         }
    0x0800ec00 sub r5, r5, 1                                             |         r5--;
    0x0800ec04 cmp r4, 0                                                 |         
    0x0800ec08 str r5, [sp, 0x24]                                        |         var_24h = r5;
                                                                         |         if (r4 == 0) {
    0x0800ec0c beq 0x800ee4c                                             |             goto label_34;
                                                                         |         }
    0x0800ec10 cmp r6, sl                                                |         
                                                                         |         if (r6 == sl) {
    0x0800ec14 movne r8, 1                                               |             r8 = 1;
                                                                         |         }
                                                                         |         if (r6 != sl) {
    0x0800ec18 bne 0x800ecc4                                             |             goto label_35;
                                                                         |         }
                                                                         |     }
                                                                         | label_10:
    0x0800ec1c ldr r3, [sp, 0x1c]                                        |     r3 = var_1ch;
    0x0800ec20 str r5, [r3]                                              |     *(r3) = r5;
    0x0800ec24 b 0x800eab4                                               |     goto label_6;
                                                                         | label_22:
    0x0800ec28 tst lr, 2                                                 |     
                                                                         |     if ((lr & 2) == 0) {
    0x0800ec2c beq 0x800e95c                                             |         goto label_4;
                                                                         |     }
    0x0800ec30 b 0x800e938                                               |     goto label_7;
                                                                         | label_31:
    0x0800ec34 add r6, sb, 1                                             |     r6 = sb + 1;
    0x0800ec38 mov r5, r2                                                |     r5 = r2;
    0x0800ec3c cmp r6, r1                                                |     
                                                                         |     if (r6 >= r1) {
    0x0800ec40 bls 0x800ec9c                                             |         
    0x0800ec44 ldr r2, [sp, 0x10]                                        |         r2 = var_10h;
    0x0800ec48 sub r8, r3, sb                                            |         r8 = r3 - sb;
    0x0800ec4c cmp r2, 0                                                 |         
                                                                         |         if (r2 != 0) {
    0x0800ec50 bne 0x800edfc                                             |             goto label_36;
                                                                         |         }
                                                                         | label_12:
    0x0800ec54 ldr r3, [r4, 0x1c]                                        |         r3 = *((r4 + 0x1c));
    0x0800ec58 ldr r2, [r4, 0x18]                                        |         r2 = *((r4 + 0x18));
    0x0800ec5c tst r3, 0x8000000                                         |         
    0x0800ec60 str r6, [r4, 0xc]                                         |         *((r4 + 0xc)) = r6;
    0x0800ec64 lsr r1, r3, 0x1b                                          |         r1 = r3 >> 0x1b;
    0x0800ec68 str r8, [r4, 0x10]                                        |         *((r4 + 0x10)) = r8;
                                                                         |         if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0800ec6c bne 0x800ec78                                             |             
    0x0800ec70 tst r1, 2                                                 |             
                                                                         |             if ((r1 & 2) == 0) {
    0x0800ec74 beq 0x800ec9c                                             |                 goto label_30;
                                                                         |             }
                                                                         |         }
    0x0800ec78 adds r2, r5, r2                                           |         r2 = r5 + r2;
    0x0800ec7c and r1, r3, 0xf8000000                                    |         r1 = r3 & 0xf8000000;
    0x0800ec80 adc r3, r3, 0                                             |         __asm ("adc r3, r3, 0");
    0x0800ec84 subs r2, r2, r8                                           |         r2 -= r8;
    0x0800ec88 sbc r3, r3, 0                                             |         __asm ("sbc r3, r3, 0");
    0x0800ec8c str r2, [r4, 0x18]                                        |         *((r4 + 0x18)) = r2;
    0x0800ec90 bic r3, r3, 0xf8000000                                    |         r3 = BIT_MASK (r3, 0xf8000000);
    0x0800ec94 orr r3, r3, r1                                            |         r3 |= r1;
    0x0800ec98 str r3, [r4, 0x1c]                                        |         *((r4 + 0x1c)) = r3;
                                                                         |     }
                                                                         | label_30:
    0x0800ec9c ldr r3, [sp, 0x10]                                        |     r3 = var_10h;
    0x0800eca0 cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x0800eca4 beq 0x800eab4                                             |         goto label_6;
                                                                         |     }
    0x0800eca8 b 0x800eb6c                                               |     goto label_8;
                                                                         | label_33:
    0x0800ecac stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800ecb0 cmp r0, 0                                                 |     
                                                                         |     if (r0 != 0) {
    0x0800ecb4 bne 0x800ebc0                                             |         goto label_9;
                                                                         |     }
                                                                         | label_32:
    0x0800ecb8 cmp r4, 0                                                 |     
                                                                         |     if (r4 == 0) {
    0x0800ecbc movne r8, 0                                               |         r8 = 0;
                                                                         |     }
                                                                         |     if (r4 == 0) {
    0x0800ecc0 beq 0x800ee7c                                             |         goto label_37;
                                                                         |     }
                                                                         | label_35:
    0x0800ecc4 ldr r3, [r4, 0xc]                                         |     r3 = *((r4 + 0xc));
    0x0800ecc8 ldr r1, [r4, 0x10]                                        |     r1 = *((r4 + 0x10));
    0x0800eccc adds r3, r3, r1                                           |     r3 += r1;
                                                                         |     if (r3 >= r3) {
    0x0800ecd0 bhs 0x800ee1c                                             |         goto label_20;
                                                                         |     }
    0x0800ecd4 sub r3, r3, 1                                             |     r3--;
    0x0800ecd8 cmp sb, r3                                                |     
                                                                         |     if (sb >= r3) {
    0x0800ecdc bhs 0x800ee5c                                             |         goto label_38;
                                                                         |     }
    0x0800ece0 cmp r4, 0                                                 |     
                                                                         |     if (r4 == 0) {
    0x0800ece4 beq 0x800ee2c                                             |         goto label_17;
                                                                         |     }
                                                                         | label_16:
    0x0800ece8 mov r0, r4                                                |     r0 = r4;
                                                                         | label_13:
    0x0800ecec ldr r3, [fp, 0x2c]                                        |     r3 = *(arg_2ch);
    0x0800ecf0 ldr r2, [sp, 8]                                           |     r2 = var_8h;
    0x0800ecf4 sub r3, r3, 1                                             |     r3--;
    0x0800ecf8 orr r3, r3, r2                                            |     r3 |= r2;
    0x0800ecfc ldr r2, [r0, 0xc]                                         |     r2 = *((r0 + 0xc));
    0x0800ed00 cmp r2, r3                                                |     
                                                                         |     if (r2 > r3) {
    0x0800ed04 bhi 0x800ee2c                                             |         goto label_17;
                                                                         |     }
    0x0800ed08 ldr r3, [r0, 0x1c]                                        |     r3 = *((r0 + 0x1c));
    0x0800ed0c tst r3, 0x20000000                                        |     
    0x0800ed10 lsr r3, r3, 0x1b                                          |     r3 >>= 0x1b;
                                                                         |     if ((r3 & 0x20000000) == 0) {
    0x0800ed14 beq 0x800ee20                                             |         goto label_39;
                                                                         |     }
    0x0800ed18 tst r3, 2                                                 |     
                                                                         |     if ((r3 & 2) != 0) {
    0x0800ed1c bne 0x800ee20                                             |         goto label_39;
                                                                         |     }
    0x0800ed20 ldr r3, [sp, 0x24]                                        |     r3 = var_24h;
    0x0800ed24 cmp r6, sl                                                |     
    0x0800ed28 sub r3, r3, 1                                             |     r3--;
    0x0800ed2c str r3, [sp, 0x24]                                        |     var_24h = r3;
    0x0800ed30 mov r5, r3                                                |     r5 = r3;
                                                                         |     if (r6 == sl) {
    0x0800ed34 beq 0x800ec1c                                             |         goto label_10;
                                                                         |     }
    0x0800ed38 cmp r8, 0                                                 |     
    0x0800ed3c sub sl, sl, 1                                             |     sl--;
                                                                         |     if (r8 == 0) {
    0x0800ed40 addne r6, r6, 1                                           |         r6++;
                                                                         |     }
                                                                         | label_14:
    0x0800ed44 cmp sl, r6                                                |     
    0x0800ed48 mov r5, r3                                                |     r5 = r3;
                                                                         |     if (sl <= r6) {
    0x0800ed4c blo 0x800ec1c                                             |         goto label_10;
                                                                         |     }
                                                                         | label_18:
    0x0800ed50 ldr r4, [r7, 0x1b0]                                       |     r4 = *((r7 + 0x1b0));
    0x0800ed54 mov r5, r3                                                |     r5 = r3;
    0x0800ed58 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x0800ed5c bne 0x800ed68                                             |         goto label_40;
                                                                         |     }
    0x0800ed60 b 0x800ec1c                                               |     goto label_10;
                                                                         |     do {
    0x0800ed64 mov r4, r3                                                |         r4 = r3;
                                                                         | label_40:
    0x0800ed68 ldr r2, [r4, 0xc]                                         |         r2 = *((r4 + 0xc));
    0x0800ed6c cmp r2, r6                                                |         
                                                                         |         if (r2 <= r6) {
    0x0800ed70 ldrhi r3, [r4, 8]                                         |             r3 = *((r4 + 8));
                                                                         |         }
                                                                         |         if (r2 <= r6) {
    0x0800ed74 bhi 0x800ed80                                             |             
                                                                         |             if (r2 >= r6) {
    0x0800ed78 bhs 0x800eda4                                             |                 goto label_41;
                                                                         |             }
    0x0800ed7c ldr r3, [r4, 4]                                           |             r3 = *((r4 + 4));
                                                                         |         }
    0x0800ed80 cmp r3, 0                                                 |         
    0x0800ed84 bne 0x800ed64                                             |         
                                                                         |     } while (r3 != 0);
    0x0800ed88 cmp r2, r6                                                |     
                                                                         |     if (r2 > r6) {
    0x0800ed8c bhi 0x800eda4                                             |         goto label_41;
                                                                         |     }
                                                                         |     if (r2 >= r6) {
    0x0800ed90 bhs 0x800ec1c                                             |         goto label_10;
                                                                         |     }
    0x0800ed94 mov r0, r4                                                |     r0 = r4;
    0x0800ed98 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800ed9c subs r4, r0, 0                                            |     r4 = r0 - 0;
                                                                         |     if (r4 == r0) {
    0x0800eda0 beq 0x800ec1c                                             |         goto label_10;
                                                                         |     }
                                                                         | label_41:
    0x0800eda4 stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}                  |     __asm ("stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}");
    0x0800eda8 stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}                  |     __asm ("stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}");
    0x0800edac add r7, r7, 0x1b0                                         |     r7 += 0x1b0;
    0x0800edb0 b 0x800edec                                               |     goto label_42;
                                                                         | label_11:
    0x0800edb4 mov r0, r4                                                |     r0 = r4;
    0x0800edb8 sub r5, r5, 1                                             |     r5--;
    0x0800edbc str r5, [sp, 0x24]                                        |     var_24h = r5;
    0x0800edc0 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800edc4 mov r1, r7                                                |     r1 = r7;
    0x0800edc8 mov r6, r0                                                |     r6 = r0;
    0x0800edcc mov r0, r4                                                |     r0 = r4;
    0x0800edd0 stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}");
    0x0800edd4 ldr r0, [r8]                                              |     r0 = *(r8);
    0x0800edd8 mov r1, r4                                                |     r1 = r4;
    0x0800eddc stmdaeq r8, {r2, r5, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r5, r8, sb, sl, ip, sp, lr}");
    0x0800ede0 cmp r6, 0                                                 |     
                                                                         |     if (r6 == 0) {
    0x0800ede4 beq 0x800ec1c                                             |         goto label_10;
                                                                         |     }
    0x0800ede8 mov r4, r6                                                |     r4 = r6;
                                                                         | label_42:
    0x0800edec ldr r3, [r4, 0xc]                                         |     r3 = *((r4 + 0xc));
    0x0800edf0 cmp sl, r3                                                |     
                                                                         |     if (sl >= r3) {
    0x0800edf4 bhs 0x800edb4                                             |         goto label_11;
                                                                         |     }
    0x0800edf8 b 0x800ec1c                                               |     goto label_10;
                                                                         | label_36:
    0x0800edfc add r2, sb, r5                                            |     r2 = sb + r5;
    0x0800ee00 mov r0, r7                                                |     r0 = r7;
    0x0800ee04 sub r2, r2, r3                                            |     r2 -= r3;
    0x0800ee08 add r3, sp, 0x24                                          |     r3 += var_24h;
    0x0800ee0c str r3, [sp]                                              |     *(sp) = r3;
    0x0800ee10 mov r3, r4                                                |     r3 = r4;
    0x0800ee14 bl 0x800dc74                                              |     count_rsvd ();
    0x0800ee18 b 0x800ec54                                               |     goto label_12;
                                                                         | label_20:
    0x0800ee1c udf 0x12                                                  |     __asm ("udf 0x12");
                                                                         | label_39:
    0x0800ee20 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800ee24 cmp r0, 0                                                 |     
                                                                         |     if (r0 != 0) {
    0x0800ee28 bne 0x800ecec                                             |         goto label_13;
                                                                         |     }
                                                                         | label_17:
    0x0800ee2c ldr r3, [sp, 0x24]                                        |     r3 = var_24h;
    0x0800ee30 cmp r6, sl                                                |     
    0x0800ee34 mov r5, r3                                                |     r5 = r3;
                                                                         |     if (r6 == sl) {
    0x0800ee38 beq 0x800ee70                                             |         goto label_43;
                                                                         |     }
    0x0800ee3c cmp r8, 0                                                 |     
                                                                         |     if (r8 == 0) {
    0x0800ee40 beq 0x800ed44                                             |         goto label_14;
                                                                         |     }
                                                                         | label_15:
    0x0800ee44 add r6, r6, 1                                             |     r6++;
    0x0800ee48 b 0x800ed44                                               |     goto label_14;
                                                                         | label_34:
    0x0800ee4c cmp r6, sl                                                |     
                                                                         |     if (r6 == sl) {
    0x0800ee50 beq 0x800ec1c                                             |         goto label_10;
                                                                         |     }
    0x0800ee54 mov r3, r5                                                |     r3 = r5;
    0x0800ee58 b 0x800ee44                                               |     goto label_15;
                                                                         | label_38:
    0x0800ee5c mov r0, r4                                                |     r0 = r4;
    0x0800ee60 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
    0x0800ee64 subs r4, r0, 0                                            |     r4 = r0 - 0;
                                                                         |     if (r4 != r0) {
    0x0800ee68 bne 0x800ece8                                             |         goto label_16;
                                                                         |     }
    0x0800ee6c b 0x800ee2c                                               |     goto label_17;
                                                                         | label_43:
    0x0800ee70 cmp r8, 0                                                 |     
                                                                         |     if (r8 == 0) {
    0x0800ee74 beq 0x800ed50                                             |         goto label_18;
                                                                         |     }
    0x0800ee78 b 0x800ec1c                                               |     goto label_10;
                                                                         | label_37:
    0x0800ee7c ldr r3, [sp, 0x24]                                        |     r3 = var_24h;
    0x0800ee80 cmp r6, sl                                                |     
                                                                         |     if (r6 != sl) {
    0x0800ee84 bne 0x800ed44                                             |         goto label_14;
                                                                         |     }
    0x0800ee88 b 0x800ed50                                               |     goto label_18;
                                                                         | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x801ccd0 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.ext4_bmap ()                                             | void ext4_bmap (int32_t arg1) {
                                                                         |     int32_t var_0h;
                                                                         |     r0 = arg1;
    0x0801ccd0 push {r4, r5, r6, r7, r8, lr}                             |     
    0x0801ccd4 mov r4, r0                                                |     r4 = r0;
    0x0801ccd8 mov r7, r2                                                |     r7 = r2;
    0x0801ccdc ldr r5, [r0]                                              |     r5 = *(r0);
    0x0801cce0 sub sp, sp, 8                                             |     
    0x0801cce4 mov r6, r3                                                |     r6 = r3;
    0x0801cce8 ldr r1, [r5, -0x6c]                                       |     r1 = *((r5 - 0x6c));
    0x0801ccec tst r1, 0x10000000                                        |     
                                                                         |     if ((r1 & 0x10000000) != 0) {
    0x0801ccf0 beq 0x801cd14                                             |         
    0x0801ccf4 movw r3, 0x1b6                                            |         r3 = 0x1b6;
    0x0801ccf8 ldrh r3, [r5, r3]                                         |         r3 = *((r5 + r3));
    0x0801ccfc cmp r3, 0                                                 |         
                                                                         |         if (r3 == 0) {
    0x0801cd00 beq 0x801cd14                                             |             goto label_3;
                                                                         |         }
                                                                         | label_2:
    0x0801cd04 mov r0, 0                                                 |         r0 = 0;
    0x0801cd08 mov r1, r0                                                |         r1 = r0;
    0x0801cd0c add sp, sp, 8                                             |         
    0x0801cd10 pop {r4, r5, r6, r7, r8, pc}                              |         
                                                                         |     }
                                                                         | label_3:
    0x0801cd14 ldr r3, [r5, 0x14]                                        |     r3 = *((r5 + 0x14));
    0x0801cd18 ldr r2, [r4, 4]                                           |     r2 = *((r4 + 4));
    0x0801cd1c ldr r3, [r3, 0x1f0]                                       |     r3 = *((r3 + 0x1f0));
    0x0801cd20 tst r2, 0x800000                                          |     
    0x0801cd24 bne 0x801cd60                                             |     
                                                                         |     while ((r2 & loc.imp.fs_overflowgid) == 0) {
                                                                         | label_0:
    0x0801cd28 ldr r3, [r3, 0x118]                                       |         r3 = *((r3 + 0x118));
    0x0801cd2c cmp r3, 0                                                 |         
                                                                         |         if (r3 != 0) {
    0x0801cd30 beq 0x801cd40                                             |             
    0x0801cd34 ldr r3, [r5, -0x70]                                       |             r3 = *((r5 - 0x70));
    0x0801cd38 tst r3, 1                                                 |             
                                                                         |             if ((r3 & 1) != 0) {
    0x0801cd3c bne 0x801cd94                                             |                 goto label_4;
                                                                         |             }
                                                                         |         }
                                                                         | label_1:
    0x0801cd40 ldr r1, [pc, 0x98]                                        |         r1 = *(0x801cddc);
    0x0801cd44 mov r2, r7                                                |         r2 = r7;
    0x0801cd48 mov r3, r6                                                |         r3 = r6;
    0x0801cd4c mov r0, r4                                                |         r0 = r4;
    0x0801cd50 str r1, [sp]                                              |         *(sp) = r1;
    0x0801cd54 stmdaeq r8, {r5, r8, fp, ip, sp, lr}                      |         __asm ("stmdaeq r8, {r5, r8, fp, ip, sp, lr}");
    0x0801cd58 add sp, sp, 8                                             |         
    0x0801cd5c pop {r4, r5, r6, r7, r8, pc}                              |         
    0x0801cd60 ldr r2, [r3, 0x4c]                                        |         r2 = *((r3 + 0x4c));
    0x0801cd64 tst r2, 0x8000000                                         |         
    0x0801cd68 beq 0x801cd28                                             |         
                                                                         |     }
    0x0801cd6c mvn r2, 0                                                 |     r2 = ~0;
    0x0801cd70 mvn r3, 0x80000000                                        |     r3 = ~0x80000000;
    0x0801cd74 mov r0, r4                                                |     r0 = r4;
    0x0801cd78 strd r2, r3, [sp]                                         |     __asm ("strd r2, r3, [sp]");
    0x0801cd7c mov r3, 0                                                 |     r3 = 0;
    0x0801cd80 mov r2, 0                                                 |     r2 = 0;
    0x0801cd84 stmdaeq r8, {r5, r6, r7, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r8, {r5, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x0801cd88 ldr r3, [r5, 0x14]                                        |     r3 = *((r5 + 0x14));
    0x0801cd8c ldr r3, [r3, 0x1f0]                                       |     r3 = *((r3 + 0x1f0));
    0x0801cd90 b 0x801cd28                                               |     goto label_0;
                                                                         | label_4:
    0x0801cd94 mrs r2, apsr                                              |     r2 = apsr;
    0x0801cd98 cpsid i                                                   |     __asm ("cpsid i");
    0x0801cd9c ldr r3, [r5, -0x70]                                       |     r3 = *((r5 - 0x70));
    0x0801cda0 bic r3, r3, 1                                             |     r3 = BIT_MASK (r3, 1);
    0x0801cda4 str r3, [r5, -0x70]                                       |     *((r5 - 0x70)) = r3;
    0x0801cda8 msr cpsr_c, r2                                            |     cpsr_c = r2;
    0x0801cdac ldr r3, [r5, 0x14]                                        |     r3 = *((r5 + 0x14));
    0x0801cdb0 ldr r3, [r3, 0x1f0]                                       |     r3 = *((r3 + 0x1f0));
    0x0801cdb4 ldr r8, [r3, 0x118]                                       |     r8 = *((r3 + 0x118));
    0x0801cdb8 mov r0, r8                                                |     r0 = r8;
    0x0801cdbc stmdaeq r8, {r2, r5, r8, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r5, r8, fp, ip, sp, lr}");
    0x0801cdc0 mov r0, r8                                                |     r0 = r8;
    0x0801cdc4 stmdaeq r8, {r3, r5, r8, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r5, r8, fp, ip, sp, lr}");
    0x0801cdc8 mov r5, r0                                                |     r5 = r0;
    0x0801cdcc mov r0, r8                                                |     r0 = r8;
    0x0801cdd0 stmdaeq r8, {r2, r3, r5, r8, fp, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r3, r5, r8, fp, ip, sp, lr}");
    0x0801cdd4 cmp r5, 0                                                 |     
                                                                         |     if (r5 == 0) {
    0x0801cdd8 beq 0x801cd40                                             |         goto label_1;
                                                                         |     }
    0x0801cddc b 0x801cd04                                               |     goto label_2;
                                                                         | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x800f0e4 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.ext4_es_insert_extent ()                                         | void ext4_es_insert_extent (int32_t arg_78h, int32_t arg_7ch, int32_t arg_80h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_10h;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_20h;
                                                                                 |     int32_t var_28h;
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_3ch;
                                                                                 |     int32_t var_40h;
                                                                                 |     int32_t var_54h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x0800f0e4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x0800f0e8 mov r4, r0                                                        |     r4 = r0;
    0x0800f0ec ldr r0, [r0, 0x14]                                                |     r0 = *(arg_78hx14);
    0x0800f0f0 sub sp, sp, 0x54                                                  |     
    0x0800f0f4 ldr sb, [r0, 0x1f0]                                               |     sb = *(arg_78hx1f0);
    0x0800f0f8 ldr sl, [sp, 0x78]                                                |     sl = *(arg_78h);
    0x0800f0fc ldr r8, [sp, 0x7c]                                                |     r8 = *(arg_7ch);
    0x0800f100 ldrh r5, [sb, 0x78]                                               |     r5 = *((sb + 0x78));
    0x0800f104 ubfx r5, r5, 5, 1                                                 |     r5 = (r5 >> 5) & ((1 << 1) - 1);
    0x0800f108 cmp r2, 0                                                         |     
                                                                                 |     if (r2 != 0) {
    0x0800f10c orreq r5, r5, 1                                                   |         r5 |= 1;
                                                                                 |     }
    0x0800f110 cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x0800f114 movne r5, 0                                                       |         r5 = 0;
                                                                                 |     }
                                                                                 |     if (r5 != 0) {
    0x0800f118 beq 0x800f128                                                     |         
                                                                                 | label_0:
    0x0800f11c mov r0, r5                                                        |         r0 = r5;
    0x0800f120 add sp, sp, 0x54                                                  |         
    0x0800f124 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
                                                                                 |     }
    0x0800f128 add r3, r1, r2                                                    |     r3 = r1 + r2;
    0x0800f12c mov r7, r1                                                        |     r7 = r1;
    0x0800f130 sub fp, r3, 1                                                     |     
    0x0800f134 mov r6, r2                                                        |     r6 = r2;
    0x0800f138 cmp r1, fp                                                        |     
    0x0800f13c str r3, [sp, 0xc]                                                 |     var_ch = r3;
                                                                                 |     if (r1 > fp) {
    0x0800f140 bhi 0x800f3a0                                                     |         goto label_6;
                                                                                 |     }
    0x0800f144 ldr r3, [sp, 0x80]                                                |     r3 = *(arg_80h);
    0x0800f148 and r3, r3, 5                                                     |     r3 &= 5;
    0x0800f14c cmp r3, 5                                                         |     
                                                                                 |     if (r3 == 5) {
    0x0800f150 beq 0x800f250                                                     |         goto label_7;
                                                                                 |     }
                                                                                 | label_2:
    0x0800f154 ldr r3, [sp, 0x80]                                                |     r3 = *(arg_80h);
    0x0800f158 bic r8, r8, 0xf8000000                                            |     r8 = BIT_MASK (r8, 0xf8000000);
    0x0800f15c str r6, [sp, 0x20]                                                |     var_20h = r6;
    0x0800f160 str sl, [sp, 0x28]                                                |     var_28h = sl;
    0x0800f164 orr r8, r8, r3, lsl 27                                            |     r8 |= (r3 << 27);
    0x0800f168 mov r3, sp                                                        |     r3 = sp;
    0x0800f16c bic r3, r3, 0x1fc0                                                |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800f170 str r7, [sp, 0x1c]                                                |     var_1ch = r7;
    0x0800f174 bic r3, r3, 0x3f                                                  |     r3 = BIT_MASK (r3, 0x3f);
    0x0800f178 str r8, [sp, 0x2c]                                                |     var_2ch = r8;
    0x0800f17c ldr r2, [r3, 4]                                                   |     r2 = *((r3 + 4));
    0x0800f180 add r2, r2, 1                                                     |     r2++;
    0x0800f184 str r2, [r3, 4]                                                   |     *((r3 + 4)) = r2;
    0x0800f188 mov r3, 0                                                         |     r3 = 0;
    0x0800f18c mov r2, fp                                                        |     r2 = fp;
    0x0800f190 mov r1, r7                                                        |     r1 = r7;
    0x0800f194 mov r0, r4                                                        |     r0 = r4;
    0x0800f198 bl 0x800e848                                                      |     r0 = es_remove_extent ();
    0x0800f19c subs r5, r0, 0                                                    |     r5 = r0 - 0;
                                                                                 |     if (r5 != r0) {
    0x0800f1a0 bne 0x800f20c                                                     |         goto label_3;
                                                                                 |     }
    0x0800f1a4 sub r6, r4, 0xc0                                                  |     r6 = r4 - 0xc0;
    0x0800f1a8 b 0x800f1c8                                                       |     
                                                                                 |     while (r0 == 0xc) {
    0x0800f1ac ldr r3, [r4, 0x14]                                                |         r3 = *((r4 + 0x14));
    0x0800f1b0 mov r2, r6                                                        |         r2 = r6;
    0x0800f1b4 mov r1, 0x80                                                      |         r1 = 0x80;
    0x0800f1b8 ldr r0, [r3, 0x1f0]                                               |         r0 = *((r3 + 0x1f0));
    0x0800f1bc bl 0x800e190                                                      |         r0 = es_shrink ();
    0x0800f1c0 cmp r0, 0                                                         |         
                                                                                 |         if (r0 == 0) {
    0x0800f1c4 beq 0x800f240                                                     |             goto label_8;
                                                                                 |         }
    0x0800f1c8 add r1, sp, 0x10                                                  |         r1 += var_10h;
    0x0800f1cc mov r0, r4                                                        |         r0 = r4;
    0x0800f1d0 bl 0x800e458                                                      |         r0 = es_insert_extent ();
    0x0800f1d4 mov r5, r0                                                        |         r5 = r0;
    0x0800f1d8 cmn r0, 0xc                                                       |         
    0x0800f1dc beq 0x800f1ac                                                     |         
                                                                                 |     }
                                                                                 | label_1:
    0x0800f1e0 ldr r3, [sb, 0x2c]                                                |     r3 = *((sb + 0x2c));
    0x0800f1e4 cmp r3, 1                                                         |     
                                                                                 |     if (r3 >= 1) {
    0x0800f1e8 bls 0x800f20c                                                     |         
    0x0800f1ec ldr r3, [r4, 0x14]                                                |         r3 = *((r4 + 0x14));
    0x0800f1f0 ldr r6, [r3, 0x1f0]                                               |         r6 = *((r3 + 0x1f0));
    0x0800f1f4 ldr r3, [r6, 0x4c]                                                |         r3 = *((r6 + 0x4c));
    0x0800f1f8 tst r3, 0x8000000                                                 |         
                                                                                 |         if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0800f1fc beq 0x800f20c                                                     |             goto label_3;
                                                                                 |         }
    0x0800f200 ldr r3, [sp, 0x80]                                                |         r3 = *(arg_80h);
    0x0800f204 tst r3, 3                                                         |         
                                                                                 |         if ((r3 & 3) != 0) {
    0x0800f208 bne 0x800f288                                                     |             goto label_9;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_3:
    0x0800f20c mov r3, sp                                                        |     r3 = sp;
    0x0800f210 bic r3, r3, 0x1fc0                                                |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800f214 bic r3, r3, 0x3f                                                  |     r3 = BIT_MASK (r3, 0x3f);
    0x0800f218 ldr r2, [r3, 4]                                                   |     r2 = *((r3 + 4));
    0x0800f21c sub r2, r2, 1                                                     |     r2--;
    0x0800f220 str r2, [r3, 4]                                                   |     *((r3 + 4)) = r2;
    0x0800f224 cmp r2, 0                                                         |     
                                                                                 |     if (r2 != 0) {
    0x0800f228 bne 0x800f11c                                                     |         goto label_0;
                                                                                 |     }
    0x0800f22c ldr r3, [r3]                                                      |     r3 = *(r3);
    0x0800f230 tst r3, 2                                                         |     
                                                                                 |     if ((r3 & 2) == 0) {
    0x0800f234 beq 0x800f11c                                                     |         goto label_0;
                                                                                 |     }
    0x0800f238 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}                      |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x0800f23c b 0x800f11c                                                       |     goto label_0;
                                                                                 | label_8:
    0x0800f240 ldr r3, [sp, 0x2c]                                                |     r3 = var_2ch;
    0x0800f244 tst r3, 0x20000000                                                |     
                                                                                 |     if ((r3 & 0x20000000) != 0) {
    0x0800f248 moveq r5, 0                                                       |         r5 = 0;
                                                                                 |     }
    0x0800f24c b 0x800f1e0                                                       |     goto label_1;
                                                                                 | label_7:
    0x0800f250 str r2, [sp, 4]                                                   |     var_4h = r2;
    0x0800f254 stmdaeq r5, {r2, r3, r5, r6, r7, r8, sl, fp, ip, pc}              |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, sl, fp, ip, pc}");
    0x0800f258 stmdaeq r5, {r2, r3, r5, r6, r7, r8, sl, fp, ip, pc}              |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, sl, fp, ip, pc}");
    0x0800f25c str r1, [sp]                                                      |     *(sp) = r1;
    0x0800f260 movw r2, 0x345                                                    |     r2 = 0x345;
    0x0800f264 ldr r1, [pc, 0x248]                                               |     r1 = *(0x800f4b0);
    0x0800f268 stmdaeq r4, {r3, r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}");
    0x0800f26c mov r3, r5                                                        |     r3 = r5;
    0x0800f270 stmdaeq r5, {r2, r3, r4, r5, r6, r8, sl, fp, ip, pc}              |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r8, sl, fp, ip, pc}");
    0x0800f274 stmdaeq r5, {r2, r3, r4, r5, r6, r8, sl, fp, ip, pc}              |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r8, sl, fp, ip, pc}");
    0x0800f278 mov r2, 9                                                         |     r2 = 9;
    0x0800f27c mov r1, 0x348                                                     |     r1 = 0x348;
    0x0800f280 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
    0x0800f284 b 0x800f154                                                       |     goto label_2;
                                                                                 | label_9:
    0x0800f288 ldr r1, [r6, 0x30]                                                |     r1 = *((r6 + 0x30));
    0x0800f28c ldr r2, [r6, 0x2c]                                                |     r2 = *((r6 + 0x2c));
    0x0800f290 lsr r0, fp, r1                                                    |     r0 = fp >> r1;
    0x0800f294 rsb r3, r2, 0                                                     |     r3 = r2 - ;
    0x0800f298 cmp r0, r7, lsr r1                                                |     
    0x0800f29c and r8, r7, r3                                                    |     r8 = r7 & r3;
                                                                                 |     if (r0 == r7) {
    0x0800f2a0 beq 0x800f3a4                                                     |         goto label_10;
                                                                                 |     }
    0x0800f2a4 cmp r7, r8                                                        |     
                                                                                 |     if (r7 != r8) {
    0x0800f2a8 beq 0x800f300                                                     |         
    0x0800f2ac sub r7, r7, 1                                                     |         r7--;
    0x0800f2b0 add r3, sp, 0x30                                                  |         r3 += var_30h;
    0x0800f2b4 mov r2, r8                                                        |         r2 = r8;
    0x0800f2b8 str r3, [sp]                                                      |         *(sp) = r3;
    0x0800f2bc mov r0, r4                                                        |         r0 = r4;
    0x0800f2c0 mov r3, r7                                                        |         r3 = r7;
    0x0800f2c4 stmdaeq r0, {r5, fp, ip, lr, pc}                                  |         __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
    0x0800f2c8 stmdaeq r0, {r5, fp, ip, lr, pc}                                  |         __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
    0x0800f2cc bl 0x800db40                                                      |         es_find_extent_range ();
    0x0800f2d0 ldr r2, [sp, 0x40]                                                |         r2 = var_40h;
    0x0800f2d4 cmp r2, 0                                                         |         
                                                                                 |         if (r2 == 0) {
    0x0800f2d8 beq 0x800f300                                                     |             goto label_11;
                                                                                 |         }
    0x0800f2dc ldr r3, [sp, 0x3c]                                                |         r3 = var_3ch;
    0x0800f2e0 cmp r3, r8                                                        |         
                                                                                 |         if (r3 <= r8) {
    0x0800f2e4 bhi 0x800f2f4                                                     |             
    0x0800f2e8 add r2, r2, r3                                                    |             r2 += r3;
    0x0800f2ec cmp r2, r8                                                        |             
                                                                                 |             if (r2 > r8) {
    0x0800f2f0 bhi 0x800f494                                                     |                 goto label_12;
                                                                                 |             }
                                                                                 |         }
    0x0800f2f4 cmp r7, r3                                                        |         
    0x0800f2f8 cmphs r3, r8                                                      |         __asm ("cmphs r3, r8");
                                                                                 |         if (r7 >= r3) {
    0x0800f2fc bhs 0x800f494                                                     |             goto label_12;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_11:
    0x0800f300 mov r1, r8                                                        |     r1 = r8;
    0x0800f304 mov r0, r4                                                        |     r0 = r4;
    0x0800f308 bl 0x800da50                                                      |     remove_pending ();
                                                                                 | label_5:
    0x0800f30c ldr r3, [r6, 0x2c]                                                |     r3 = *((r6 + 0x2c));
    0x0800f310 ldr r7, [sp, 0xc]                                                 |     r7 = var_ch;
    0x0800f314 rsb r2, r3, 0                                                     |     r2 = r3 - ;
    0x0800f318 and r2, r2, fp                                                    |     r2 &= fp;
    0x0800f31c add r2, r2, r3                                                    |     r2 += r3;
    0x0800f320 sub r6, r2, 1                                                     |     r6 = r2 - 1;
    0x0800f324 cmp r7, r2                                                        |     
                                                                                 |     if (r7 == r2) {
    0x0800f328 beq 0x800f390                                                     |         goto label_4;
                                                                                 |     }
    0x0800f32c add r3, sp, 0x30                                                  |     r3 += var_30h;
    0x0800f330 mov r2, r7                                                        |     r2 = r7;
    0x0800f334 str r3, [sp]                                                      |     *(sp) = r3;
    0x0800f338 mov r0, r4                                                        |     r0 = r4;
    0x0800f33c mov r3, r6                                                        |     r3 = r6;
    0x0800f340 stmdaeq r0, {r5, fp, ip, lr, pc}                                  |     __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
    0x0800f344 stmdaeq r0, {r5, fp, ip, lr, pc}                                  |     __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
    0x0800f348 bl 0x800db40                                                      |     es_find_extent_range ();
    0x0800f34c ldr r3, [sp, 0x40]                                                |     r3 = var_40h;
    0x0800f350 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0800f354 beq 0x800f390                                                     |         goto label_4;
                                                                                 |     }
    0x0800f358 ldr r2, [sp, 0x3c]                                                |     r2 = var_3ch;
    0x0800f35c cmp r7, r2                                                        |     
                                                                                 |     if (r7 > r2) {
    0x0800f360 blo 0x800f370                                                     |         
    0x0800f364 add r3, r3, r2                                                    |         r3 += r2;
    0x0800f368 cmp r7, r3                                                        |         
                                                                                 |         if (r7 <= r3) {
    0x0800f36c blo 0x800f484                                                     |             goto label_13;
                                                                                 |         }
                                                                                 |     }
    0x0800f370 ldr r3, [sp, 0xc]                                                 |     r3 = var_ch;
    0x0800f374 cmp r3, r2                                                        |     
                                                                                 |     if (r3 <= r2) {
    0x0800f378 movhi r3, 0                                                       |         r3 = 0;
                                                                                 |     }
                                                                                 |     if (r3 > r2) {
    0x0800f37c movls r3, 1                                                       |         r3 = 1;
                                                                                 |     }
    0x0800f380 cmp r6, r2                                                        |     
                                                                                 |     if (r6 >= r2) {
    0x0800f384 movlo r3, 0                                                       |         r3 = 0;
                                                                                 |     }
    0x0800f388 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x0800f38c bne 0x800f484                                                     |         goto label_13;
                                                                                 |     }
                                                                                 |     do {
                                                                                 | label_4:
    0x0800f390 mov r1, r6                                                        |         r1 = r6;
    0x0800f394 mov r0, r4                                                        |         r0 = r4;
    0x0800f398 bl 0x800da50                                                      |         remove_pending ();
    0x0800f39c b 0x800f20c                                                       |         goto label_3;
                                                                                 | label_6:
    0x0800f3a0 udf 0x12                                                          |         __asm ("udf 0x12");
                                                                                 | label_10:
    0x0800f3a4 cmp r7, r8                                                        |         
                                                                                 |         if (r7 != r8) {
    0x0800f3a8 beq 0x800f408                                                     |             
    0x0800f3ac sub r7, r7, 1                                                     |             r7--;
    0x0800f3b0 add r3, sp, 0x30                                                  |             r3 += var_30h;
    0x0800f3b4 mov r2, r8                                                        |             r2 = r8;
    0x0800f3b8 str r3, [sp]                                                      |             *(sp) = r3;
    0x0800f3bc mov r0, r4                                                        |             r0 = r4;
    0x0800f3c0 mov r3, r7                                                        |             r3 = r7;
    0x0800f3c4 stmdaeq r0, {r5, fp, ip, lr, pc}                                  |             __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
    0x0800f3c8 stmdaeq r0, {r5, fp, ip, lr, pc}                                  |             __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
    0x0800f3cc bl 0x800db40                                                      |             es_find_extent_range ();
    0x0800f3d0 ldr r1, [sp, 0x40]                                                |             r1 = var_40h;
    0x0800f3d4 cmp r1, 0                                                         |             
                                                                                 |             if (r1 != 0) {
    0x0800f3d8 beq 0x800f400                                                     |                 
    0x0800f3dc ldr r2, [sp, 0x3c]                                                |                 r2 = var_3ch;
    0x0800f3e0 cmp r2, r8                                                        |                 
                                                                                 |                 if (r2 <= r8) {
    0x0800f3e4 bhi 0x800f3f4                                                     |                     
    0x0800f3e8 add r1, r1, r2                                                    |                     r1 += r2;
    0x0800f3ec cmp r1, r8                                                        |                     
                                                                                 |                     if (r1 > r8) {
    0x0800f3f0 bhi 0x800f4a4                                                     |                         goto label_14;
                                                                                 |                     }
                                                                                 |                 }
    0x0800f3f4 cmp r2, r8                                                        |                 
    0x0800f3f8 cmphs r7, r2                                                      |                 __asm ("cmphs r7, r2");
                                                                                 |                 if (r2 >= r8) {
    0x0800f3fc bhs 0x800f4a4                                                     |                     goto label_14;
                                                                                 |                 }
                                                                                 |             }
    0x0800f400 ldr r2, [r6, 0x2c]                                                |             r2 = *((r6 + 0x2c));
    0x0800f404 rsb r3, r2, 0                                                     |             r3 = r2 - ;
                                                                                 |         }
    0x0800f408 ldr r7, [sp, 0xc]                                                 |         r7 = var_ch;
    0x0800f40c and r3, r3, fp                                                    |         r3 &= fp;
    0x0800f410 add r2, r3, r2                                                    |         r2 = r3 + r2;
    0x0800f414 sub r6, r2, 1                                                     |         r6 = r2 - 1;
    0x0800f418 cmp r7, r2                                                        |         
    0x0800f41c beq 0x800f390                                                     |         
                                                                                 |     } while (r7 == r2);
    0x0800f420 add r3, sp, 0x30                                                  |     r3 += var_30h;
    0x0800f424 mov r2, r7                                                        |     r2 = r7;
    0x0800f428 str r3, [sp]                                                      |     *(sp) = r3;
    0x0800f42c mov r0, r4                                                        |     r0 = r4;
    0x0800f430 mov r3, r6                                                        |     r3 = r6;
    0x0800f434 stmdaeq r0, {r5, fp, ip, lr, pc}                                  |     __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
    0x0800f438 stmdaeq r0, {r5, fp, ip, lr, pc}                                  |     __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
    0x0800f43c bl 0x800db40                                                      |     es_find_extent_range ();
    0x0800f440 ldr r2, [sp, 0x40]                                                |     r2 = var_40h;
    0x0800f444 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x0800f448 beq 0x800f390                                                     |         goto label_4;
                                                                                 |     }
    0x0800f44c ldr r3, [sp, 0x3c]                                                |     r3 = var_3ch;
    0x0800f450 cmp r7, r3                                                        |     
                                                                                 |     if (r7 > r3) {
    0x0800f454 blo 0x800f464                                                     |         
    0x0800f458 add r2, r2, r3                                                    |         r2 += r3;
    0x0800f45c cmp r7, r2                                                        |         
                                                                                 |         if (r7 <= r2) {
    0x0800f460 blo 0x800f484                                                     |             goto label_13;
                                                                                 |         }
                                                                                 |     }
    0x0800f464 ldr r2, [sp, 0xc]                                                 |     r2 = var_ch;
    0x0800f468 cmp r2, r3                                                        |     
                                                                                 |     if (r2 <= r3) {
    0x0800f46c movhi r2, 0                                                       |         r2 = 0;
                                                                                 |     }
                                                                                 |     if (r2 > r3) {
    0x0800f470 movls r2, 1                                                       |         r2 = 1;
                                                                                 |     }
    0x0800f474 cmp r6, r3                                                        |     
                                                                                 |     if (r6 >= r3) {
    0x0800f478 movlo r2, 0                                                       |         r2 = 0;
                                                                                 |     }
    0x0800f47c cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x0800f480 beq 0x800f390                                                     |         goto label_4;
                                                                                 |     }
                                                                                 | label_13:
    0x0800f484 mov r1, r6                                                        |     r1 = r6;
    0x0800f488 mov r0, r4                                                        |     r0 = r4;
    0x0800f48c bl 0x800d938                                                      |     insert_pending ();
    0x0800f490 b 0x800f20c                                                       |     goto label_3;
                                                                                 | label_12:
    0x0800f494 mov r1, r8                                                        |     r1 = r8;
    0x0800f498 mov r0, r4                                                        |     r0 = r4;
    0x0800f49c bl 0x800d938                                                      |     insert_pending ();
    0x0800f4a0 b 0x800f30c                                                       |     goto label_5;
                                                                                 | label_14:
    0x0800f4a4 mov r1, r8                                                        |     r1 = r8;
    0x0800f4a8 mov r0, r4                                                        |     r0 = r4;
    0x0800f4ac bl 0x800d938                                                      |     insert_pending ();
    0x0800f4b0 b 0x800f20c                                                       |     goto label_3;
                                                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x801c400 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.ext4_es_is_mapped ()         | uint32_t ext4_es_is_mapped (uint32_t arg1) {
                                             |     r0 = arg1;
    0x0801c400 ldr r0, [r0, 0x1c]            |     r0 = *((r0 + 0x1c));
    0x0801c404 tst r0, 0x8000000             |     
    0x0801c408 ubfxeq r0, r0, 0x1c, 1        |     __asm ("ubfxeq r0, r0, 0x1c, 1");
                                             |     if ((r0 & loc.imp.fs_overflowgid) == 0) {
    0x0801c40c movne r0, 1                   |         r0 = 1;
                                             |     }
    0x0801c410 bx lr                         |     return r0;
                                             | }
    ; assembly                                                                       | /* r2dec pseudo code output */
                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8049714 */
                                                                                     | #include <stdint.h>
                                                                                     |  
                                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                     |  
    ; (fcn) sym.ext4_fill_super ()                                                   | void ext4_fill_super (int32_t arg1, int32_t arg2) {
                                                                                     |     int32_t var_bp_20h;
                                                                                     |     int32_t var_0h;
                                                                                     |     int32_t var_4h;
                                                                                     |     int32_t var_18h;
                                                                                     |     int32_t var_1ch;
                                                                                     |     int32_t var_20h;
                                                                                     |     int32_t var_28h;
                                                                                     |     int32_t var_2ch;
                                                                                     |     int32_t var_30h;
                                                                                     |     int32_t var_34h;
                                                                                     |     int32_t var_38h;
                                                                                     |     int32_t var_78h;
                                                                                     |     int32_t var_7ch;
                                                                                     |     int32_t var_0h_2;
                                                                                     |     int32_t var_80h;
                                                                                     |     int32_t var_84h;
                                                                                     |     int32_t var_90h;
                                                                                     |     int32_t var_98h;
                                                                                     |     int32_t var_a4h;
                                                                                     |     int32_t var_38h_2;
                                                                                     |     r0 = arg1;
                                                                                     |     r1 = arg2;
    0x08049714 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                             |     
    0x08049718 stmdaeq r8, {r2, r3, r4, r5, r8, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r3, r4, r5, r8, sb, sl, ip, sp, lr}");
    0x0804971c stmdaeq r8, {r2, r3, r4, r5, r8, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r3, r4, r5, r8, sb, sl, ip, sp, lr}");
    0x08049720 sub sp, sp, 0xa4                                                      |     
    0x08049724 mov r4, r1                                                            |     r4 = r1;
    0x08049728 mov r6, r0                                                            |     r6 = r0;
    0x0804972c mov r1, 0xcc0                                                         |     r1 = 0xcc0;
    0x08049730 mov r0, r4                                                            |     r0 = r4;
    0x08049734 str r2, [sp, 0x28]                                                    |     var_28h = r2;
    0x08049738 stmdaeq r8, {r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}");
    0x0804973c mov r1, 0xdc0                                                         |     r1 = 0xdc0;
    0x08049740 mov sb, r0                                                            |     sb = r0;
    0x08049744 ldr r0, [r7, 0x28]                                                    |     r0 = *((r7 + 0x28));
    0x08049748 stmdaeq r8, {r4, r8, sb, sl, ip, sp, lr}                              |     __asm ("stmdaeq r8, {r4, r8, sb, sl, ip, sp, lr}");
    0x0804974c cmp r4, 0                                                             |     
    0x08049750 mov r5, r0                                                            |     r5 = r0;
                                                                                     |     if (r4 == 0) {
    0x08049754 beq 0x8049eec                                                         |         goto label_37;
                                                                                     |     }
    0x08049758 ldrb r3, [r4]                                                         |     r3 = *(r4);
    0x0804975c cmp r3, 0x73                                                          |     
    0x08049760 beq 0x8049d24                                                         |     
                                                                                     |     while (r3 != 0x62) {
                                                                                     | label_0:
    0x08049764 movw r3, 0x4003                                                       |         r3 = 0x4003;
    0x08049768 mov sl, 0                                                             |         sl = 0;
    0x0804976c str r3, [sp, 0x7c]                                                    |         var_7ch = r3;
    0x08049770 mov r3, 1                                                             |         r3 = 1;
    0x08049774 str r4, [sp, 0x20]                                                    |         var_20h = r4;
    0x08049778 str sl, [sp, 0x78]                                                    |         var_78h = sl;
    0x0804977c str r3, [sp, 0x18]                                                    |         var_18h = r3;
                                                                                     | label_1:
    0x08049780 cmp sb, 0                                                             |         
                                                                                     |         if (sb == 0) {
    0x08049784 beq 0x8049d9c                                                         |             goto label_38;
                                                                                     |         }
                                                                                     | label_5:
    0x08049788 cmp r5, 0                                                             |         
                                                                                     |         if (r5 == 0) {
    0x0804978c beq 0x8049d9c                                                         |             goto label_38;
                                                                                     |         }
                                                                                     | label_2:
    0x08049790 ldr r3, [sp, 0x18]                                                    |         r3 = var_18h;
    0x08049794 mov r2, 0                                                             |         r2 = 0;
    0x08049798 str r3, [r5, 0x60]                                                    |         *((r5 + 0x60)) = r3;
    0x0804979c mov r1, 0x2f                                                          |         r1 = 0x2f;
    0x080497a0 ldr r3, [r6, 0x70]                                                    |         r3 = *((r6 + 0x70));
    0x080497a4 add r0, r6, 0x210                                                     |         r0 = r6 + 0x210;
    0x080497a8 str r2, [r5, 0x314]                                                   |         *((r5 + 0x314)) = r2;
    0x080497ac mov r2, 0x10                                                          |         r2 = 0x10;
    0x080497b0 str r5, [r6, 0x1f0]                                                   |         *((r6 + 0x1f0)) = r5;
    0x080497b4 str r2, [r5, 0xd8]                                                    |         *((r5 + 0xd8)) = r2;
    0x080497b8 mov r2, 0x20                                                          |         r2 = 0x20;
    0x080497bc str r6, [r5, 0x110]                                                   |         *((r5 + 0x110)) = r6;
    0x080497c0 str r2, [r5, 0x8c]                                                    |         *((r5 + 0x8c)) = r2;
    0x080497c4 mov r2, 0x21                                                          |         r2 = 0x21;
    0x080497c8 str sl, [r5, 0x64]                                                    |         *((r5 + 0x64)) = sl;
    0x080497cc ldr r3, [r3, 0x3c]                                                    |         r3 = *((r3 + 0x3c));
    0x080497d0 cmp r3, 0                                                             |         
                                                                                     |         if (r3 == 0) {
    0x080497d4 ldrne r3, [r3, 0x14]                                                  |             r3 = *((r3 + 0x14));
                                                                                     |         }
                                                                                     |         if (r3 == 0) {
    0x080497d8 ldrne r3, [r3, 0x24]                                                  |             r3 = *((r3 + 0x24));
                                                                                     |         }
                                                                                     |         if (r3 == 0) {
    0x080497dc strne r3, [r5, 0x1dc]                                                 |             *((r5 + 0x1dc)) = r3;
                                                                                     |         }
    0x080497e0 stmdaeq r8, {r2, sl, fp, ip, sp, lr}                                  |         __asm ("stmdaeq r8, {r2, sl, fp, ip, sp, lr}");
    0x080497e4 mov r1, 0x400                                                         |         r1 = 0x400;
    0x080497e8 mov r0, r6                                                            |         r0 = r6;
    0x080497ec stmdaeq r8, {r3, sl, fp, ip, sp, lr}                                  |         __asm ("stmdaeq r8, {r3, sl, fp, ip, sp, lr}");
    0x080497f0 subs r1, r0, 0                                                        |         r1 = r0 - 0;
                                                                                     |         if (r1 == r0) {
    0x080497f4 beq 0x8049f0c                                                         |             goto label_39;
                                                                                     |         }
    0x080497f8 cmp r1, 0x400                                                         |         
                                                                                     |         if (r1 == 0x400) {
    0x080497fc beq 0x8049e44                                                         |             goto label_40;
                                                                                     |         }
    0x08049800 ldr r2, [sp, 0x18]                                                    |         r2 = var_18h;
    0x08049804 lsr sl, r2, 0x16                                                      |         sl = r2 >> 0x16;
    0x08049808 lsl r0, r2, 0xa                                                       |         r0 = r2 << 0xa;
    0x0804980c orrs r3, sl, 0                                                        |         r3 = sl;
    0x08049810 str sl, [sp, 0x84]                                                    |         var_84h = sl;
                                                                                     |         if (r3 != sl) {
    0x08049814 bne 0x804a22c                                                         |             goto label_41;
                                                                                     |         }
    0x08049818 stmdaeq r8, {r3, r4, r6, r7, sb, sl, ip, sp, lr}                      |         __asm ("stmdaeq r8, {r3, r4, r6, r7, sb, sl, ip, sp, lr}");
    0x0804981c mov r3, sl                                                            |         r3 = sl;
    0x08049820 mov r2, r0                                                            |         r2 = r0;
    0x08049824 mov fp, r1                                                            |         
    0x08049828 str r0, [sp, 0x80]                                                    |         var_80h = r0;
                                                                                     | label_3:
    0x0804982c mov r1, 0                                                             |         r1 = 0;
    0x08049830 mov r0, r6                                                            |         r0 = r6;
    0x08049834 str r1, [sp, 4]                                                       |         var_4h = r1;
    0x08049838 str r1, [sp]                                                          |         *(sp) = r1;
    0x0804983c bl 0x8045a74                                                          |         r0 = ext4_sb_bread_gfp ();
    0x08049840 mov r8, r0                                                            |         r8 = r0;
    0x08049844 cmn r0, 0x1000                                                        |         
                                                                                     |         if (r0 > 0x1000) {
    0x08049848 bhi 0x8049fb4                                                         |             goto label_42;
                                                                                     |         }
    0x0804984c ldr r3, [r0, 0x1c]                                                    |         r3 = *((r0 + 0x1c));
    0x08049850 movw r2, 0xef53                                                       |         r2 = 0xef53;
    0x08049854 add r1, r3, fp                                                        |         r1 = r3 + fp;
    0x08049858 str r1, [r5, 0x44]                                                    |         *((r5 + 0x44)) = r1;
    0x0804985c str r1, [sp, 0x1c]                                                    |         var_1ch = r1;
    0x08049860 ldrh r3, [r1, 0x38]                                                   |         r3 = *((r1 + 0x38));
    0x08049864 str r3, [r6, 0x3c]                                                    |         *((r6 + 0x3c)) = r3;
    0x08049868 cmp r3, r2                                                            |         
                                                                                     |         if (r3 != r2) {
    0x0804986c bne 0x8049dbc                                                         |             goto label_27;
                                                                                     |         }
    0x08049870 add r3, r1, 0x180                                                     |         r3 = r1 + 0x180;
    0x08049874 add r0, r5, 0x1e0                                                     |         r0 = r5 + 0x1e0;
    0x08049878 ldr r1, [r6, 0x1f0]                                                   |         r1 = *((r6 + 0x1f0));
    0x0804987c ldrd r2, r3, [r3, -8]                                                 |         __asm ("ldrd r2, r3, [r3, -8]");
    0x08049880 strd r2, r3, [r0]                                                     |         __asm ("strd r2, r3, [r0]");
    0x08049884 ldr r3, [r1, 0x44]                                                    |         r3 = *((r1 + 0x44));
    0x08049888 ldr r3, [r3, 0x64]                                                    |         r3 = *((r3 + 0x64));
    0x0804988c and r2, r3, 0x410                                                     |         r2 = r3 & 0x410;
    0x08049890 cmp r2, 0x410                                                         |         
                                                                                     |         if (r2 == 0x410) {
    0x08049894 beq 0x804a118                                                         |             goto label_43;
                                                                                     |         }
                                                                                     | label_13:
    0x08049898 tst r3, 0x400                                                         |         
                                                                                     |         if ((r3 & 0x400) != 0) {
    0x0804989c beq 0x80498b8                                                         |             
    0x080498a0 ldr r3, [sp, 0x1c]                                                    |             r3 = var_1ch;
    0x080498a4 ldrb r3, [r3, 0x175]                                                  |             r3 = *((r3 + 0x175));
    0x080498a8 cmp r3, 1                                                             |             
    0x080498ac stmdaeq r5, {r3, r4, r5, fp, ip, lr, pc}                              |             __asm ("stmdaeq r5, {r3, r4, r5, fp, ip, lr, pc}");
    0x080498b0 stmdaeq r5, {r3, r4, r5, fp, ip, lr, pc}                              |             __asm ("stmdaeq r5, {r3, r4, r5, fp, ip, lr, pc}");
                                                                                     |             if (r3 != 1) {
    0x080498b4 bne 0x804a098                                                         |                 goto label_23;
                                                                                     |             }
                                                                                     |         }
    0x080498b8 mov r2, 0                                                             |         r2 = 0;
    0x080498bc stmdaeq r5, {r2, r4, r5, r6, fp, ip, lr, pc}                          |         __asm ("stmdaeq r5, {r2, r4, r5, r6, fp, ip, lr, pc}");
    0x080498c0 stmdaeq r5, {r2, r4, r5, r6, fp, ip, lr, pc}                          |         __asm ("stmdaeq r5, {r2, r4, r5, r6, fp, ip, lr, pc}");
    0x080498c4 mov r1, r2                                                            |         r1 = r2;
    0x080498c8 stmdaeq r8, {r2, r3, sl, fp, ip, sp, lr}                              |         __asm ("stmdaeq r8, {r2, r3, sl, fp, ip, sp, lr}");
    0x080498cc cmn r0, 0x1000                                                        |         
    0x080498d0 str r0, [r5, 0x220]                                                   |         *((r5 + 0x220)) = r0;
                                                                                     |         if (r0 > 0x1000) {
    0x080498d4 bhi 0x804a1e8                                                         |             goto label_44;
                                                                                     |         }
    0x080498d8 ldr r4, [r6, 0x1f0]                                                   |         r4 = *((r6 + 0x1f0));
    0x080498dc mov r3, r4                                                            |         r3 = r4;
    0x080498e0 ldr r2, [r4, 0x44]                                                    |         r2 = *((r4 + 0x44));
    0x080498e4 ldr r1, [r2, 0x64]                                                    |         r1 = *((r2 + 0x64));
    0x080498e8 tst r1, 0x400                                                         |         
                                                                                     |         if ((r1 & 0x400) != 0) {
    0x080498ec bne 0x8049e7c                                                         |             goto label_45;
                                                                                     |         }
                                                                                     | label_28:
    0x080498f0 ldr r2, [r2, 0x60]                                                    |         r2 = *((r2 + 0x60));
    0x080498f4 tst r2, 0x2000                                                        |         
                                                                                     |         if ((r2 & 0x2000) == 0) {
    0x080498f8 beq 0x804a188                                                         |             goto label_46;
                                                                                     |         }
                                                                                     | label_8:
    0x080498fc ldr r2, [sp, 0x1c]                                                    |         r2 = var_1ch;
    0x08049900 ldr r2, [r2, 0x270]                                                   |         r2 = *((r2 + 0x270));
    0x08049904 str r2, [r5, 0x224]                                                   |         *((r5 + 0x224)) = r2;
                                                                                     | label_9:
    0x08049908 ldr r2, [sp, 0x1c]                                                    |         r2 = var_1ch;
    0x0804990c ldr sl, [r2, 0x100]                                                   |         sl = *((r2 + 0x100));
    0x08049910 ldr r2, [r3, 0x4c]                                                    |         r2 = *((r3 + 0x4c));
    0x08049914 tst sl, 1                                                             |         
    0x08049918 orr r2, r2, 0x80000000                                                |         r2 |= 0x80000000;
    0x0804991c str r2, [r3, 0x4c]                                                    |         *((r3 + 0x4c)) = r2;
                                                                                     |         if ((sl & 1) == 0) {
    0x08049920 ldrne r2, [r6, 0x1f0]                                                 |             r2 = *((r6 + 0x1f0));
                                                                                     |         }
                                                                                     |         if ((sl & 1) == 0) {
    0x08049924 ldrne r3, [r2, 0x4c]                                                  |             r3 = *((r2 + 0x4c));
                                                                                     |         }
                                                                                     |         if ((sl & 1) == 0) {
    0x08049928 orrne r3, r3, 8                                                       |             r3 |= 8;
                                                                                     |         }
                                                                                     |         if ((sl & 1) == 0) {
    0x0804992c strne r3, [r2, 0x4c]                                                  |             *((r2 + 0x4c)) = r3;
                                                                                     |         }
    0x08049930 tst sl, 2                                                             |         
                                                                                     |         if ((sl & 2) == 0) {
    0x08049934 ldrne r2, [r6, 0x1f0]                                                 |             r2 = *((r6 + 0x1f0));
                                                                                     |         }
                                                                                     |         if ((sl & 2) == 0) {
    0x08049938 ldrne r3, [r2, 0x4c]                                                  |             r3 = *((r2 + 0x4c));
                                                                                     |         }
                                                                                     |         if ((sl & 2) == 0) {
    0x0804993c orrne r3, r3, 4                                                       |             r3 |= 4;
                                                                                     |         }
                                                                                     |         if ((sl & 2) == 0) {
    0x08049940 strne r3, [r2, 0x4c]                                                  |             *((r2 + 0x4c)) = r3;
                                                                                     |         }
    0x08049944 tst sl, 0x10                                                          |         
                                                                                     |         if ((sl & 0x10) == 0) {
    0x08049948 ldrne r2, [r6, 0x1f0]                                                 |             r2 = *((r6 + 0x1f0));
                                                                                     |         }
                                                                                     |         if ((sl & 0x10) == 0) {
    0x0804994c ldrne r3, [r2, 0x4c]                                                  |             r3 = *((r2 + 0x4c));
                                                                                     |         }
                                                                                     |         if ((sl & 0x10) == 0) {
    0x08049950 orrne r3, r3, 0x2000                                                  |             r3 |= 0x2000;
                                                                                     |         }
                                                                                     |         if ((sl & 0x10) == 0) {
    0x08049954 strne r3, [r2, 0x4c]                                                  |             *((r2 + 0x4c)) = r3;
                                                                                     |         }
    0x08049958 ldr r2, [r6, 0x1f0]                                                   |         r2 = *((r6 + 0x1f0));
    0x0804995c ldr r3, [r2, 0x4c]                                                    |         r3 = *((r2 + 0x4c));
    0x08049960 orr r3, r3, 0x4000                                                    |         r3 |= 0x4000;
    0x08049964 str r3, [r2, 0x4c]                                                    |         *((r2 + 0x4c)) = r3;
    0x08049968 ldr r4, [r6, 0x1f0]                                                   |         r4 = *((r6 + 0x1f0));
    0x0804996c mov r3, r4                                                            |         r3 = r4;
    0x08049970 ldr r2, [r4, 0x44]                                                    |         r2 = *((r4 + 0x44));
    0x08049974 ldr r1, [r2, 0x5c]                                                    |         r1 = *((r2 + 0x5c));
    0x08049978 tst r1, 0x400                                                         |         
                                                                                     |         if ((r1 & 0x400) != 0) {
    0x0804997c beq 0x8049998                                                         |             
    0x08049980 ldr r3, [r4, 0x50]                                                    |             r3 = *((r4 + 0x50));
    0x08049984 orr r3, r3, 0x10                                                      |             r3 |= 0x10;
    0x08049988 str r3, [r4, 0x50]                                                    |             *((r4 + 0x50)) = r3;
    0x0804998c ldr r4, [r6, 0x1f0]                                                   |             r4 = *((r6 + 0x1f0));
    0x08049990 mov r3, r4                                                            |             r3 = r4;
    0x08049994 ldr r2, [r4, 0x44]                                                    |             r2 = *((r4 + 0x44));
                                                                                     |         }
    0x08049998 ldr r2, [r2, 0x64]                                                    |         r2 = *((r2 + 0x64));
    0x0804999c tst r2, 0x400                                                         |         
                                                                                     |         if ((r2 & 0x400) != 0) {
    0x080499a0 beq 0x80499c0                                                         |             
    0x080499a4 ldr r3, [r4, 0x220]                                                   |             r3 = *((r4 + 0x220));
    0x080499a8 cmp r3, 0                                                             |             
                                                                                     |             if (r3 == 0) {
    0x080499ac beq 0x804a210                                                         |                 goto label_47;
                                                                                     |             }
                                                                                     | label_33:
    0x080499b0 ldr r3, [r4, 0x4c]                                                    |             r3 = *((r4 + 0x4c));
    0x080499b4 orr r3, r3, 0x800000                                                  |             r3 |= 0x800000;
    0x080499b8 str r3, [r4, 0x4c]                                                    |             *((r4 + 0x4c)) = r3;
    0x080499bc ldr r3, [r6, 0x1f0]                                                   |             r3 = *((r6 + 0x1f0));
                                                                                     |         }
                                                                                     | label_19:
    0x080499c0 and r1, sl, 0x60                                                      |         r1 = sl & 0x60;
    0x080499c4 ldr r2, [r3, 0x4c]                                                    |         r2 = *((r3 + 0x4c));
    0x080499c8 cmp r1, 0x20                                                          |         
                                                                                     |         if (r1 == 0x20) {
    0x080499cc beq 0x8049fd4                                                         |             goto label_48;
                                                                                     |         }
    0x080499d0 cmp r1, 0x40                                                          |         
                                                                                     |         if (r1 == 0x40) {
    0x080499d4 beq 0x804a198                                                         |             goto label_49;
                                                                                     |         }
    0x080499d8 cmp r1, 0x60                                                          |         
                                                                                     |         if (r1 != 0x60) {
    0x080499dc orreq r2, r2, 0xc00                                                   |             r2 |= 0xc00;
                                                                                     |         }
                                                                                     |         if (r1 != 0x60) {
    0x080499e0 streq r2, [r3, 0x4c]                                                  |             *((r3 + 0x4c)) = r2;
                                                                                     |         }
                                                                                     |         if (r1 != 0x60) {
    0x080499e4 ldreq r3, [r6, 0x1f0]                                                 |             r3 = *((r6 + 0x1f0));
                                                                                     |         }
                                                                                     | label_7:
    0x080499e8 ldr r2, [r5, 0x44]                                                    |         r2 = *((r5 + 0x44));
    0x080499ec ldrh r1, [r2, 0x3c]                                                   |         r1 = *((r2 + 0x3c));
    0x080499f0 ldr r2, [r3, 0x4c]                                                    |         r2 = *((r3 + 0x4c));
    0x080499f4 cmp r1, 3                                                             |         
                                                                                     |         if (r1 != 3) {
    0x080499f8 orreq r2, r2, 0x40                                                    |             r2 |= 0x40;
                                                                                     |         }
                                                                                     |         if (r1 != 3) {
    0x080499fc beq 0x8049a0c                                                         |             
    0x08049a00 cmp r1, 1                                                             |             
                                                                                     |             if (r1 != 1) {
    0x08049a04 orreq r2, r2, 0x10                                                    |                 r2 |= 0x10;
                                                                                     |             }
                                                                                     |             if (r1 != 1) {
    0x08049a08 orrne r2, r2, 0x20                                                    |                 r2 |= 0x20;
                                                                                     |                 goto label_50;
                                                                                     |             }
                                                                                     |         }
                                                                                     | label_50:
    0x08049a0c str r2, [r3, 0x4c]                                                    |         *((r3 + 0x4c)) = r2;
    0x08049a10 tst sl, 0x400                                                         |         
    0x08049a14 ldr r4, [sp, 0x1c]                                                    |         r4 = var_1ch;
    0x08049a18 stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}");
    0x08049a1c stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}");
    0x08049a20 ldr r2, [r6, 0x1f0]                                                   |         r2 = *((r6 + 0x1f0));
    0x08049a24 ldr r3, [r2, 0x4c]                                                    |         r3 = *((r2 + 0x4c));
    0x08049a28 orr r3, r3, 0x20000000                                                |         r3 |= 0x20000000;
    0x08049a2c str r3, [r2, 0x4c]                                                    |         *((r2 + 0x4c)) = r3;
                                                                                     |         if ((sl & 0x400) == 0) {
    0x08049a30 ldrne r2, [r6, 0x1f0]                                                 |             r2 = *((r6 + 0x1f0));
                                                                                     |         }
                                                                                     |         if ((sl & 0x400) == 0) {
    0x08049a34 ldrne r3, [r2, 0x4c]                                                  |             r3 = *((r2 + 0x4c));
                                                                                     |         }
                                                                                     |         if ((sl & 0x400) == 0) {
    0x08049a38 orrne r3, r3, 0x40000000                                              |             r3 |= 0x40000000;
                                                                                     |         }
                                                                                     |         if ((sl & 0x400) == 0) {
    0x08049a3c strne r3, [r2, 0x4c]                                                  |             *((r2 + 0x4c)) = r3;
                                                                                     |         }
    0x08049a40 ldrh r1, [r4, 0x50]                                                   |         r1 = *((r4 + 0x50));
    0x08049a44 stmdaeq r8, {r2, r5, r7, fp, ip, sp, lr}                              |         __asm ("stmdaeq r8, {r2, r5, r7, fp, ip, sp, lr}");
    0x08049a48 str r0, [r5, 0x70]                                                    |         *((r5 + 0x70)) = r0;
    0x08049a4c stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}");
    0x08049a50 stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}");
    0x08049a54 ldrh r1, [r4, 0x52]                                                   |         r1 = *((r4 + 0x52));
    0x08049a58 stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}                          |         __asm ("stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}");
    0x08049a5c stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}                          |         __asm ("stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}");
    0x08049a60 stmdaeq r8, {r3, r5, r7, fp, ip, sp, lr}                              |         __asm ("stmdaeq r8, {r3, r5, r7, fp, ip, sp, lr}");
    0x08049a64 tst sl, 0x100                                                         |         
    0x08049a68 str r0, [r5, 0x74]                                                    |         *((r5 + 0x74)) = r0;
    0x08049a6c mov r3, 0x1f4                                                         |         r3 = 0x1f4;
    0x08049a70 str r3, [r5, 0x134]                                                   |         *((r5 + 0x134)) = r3;
    0x08049a74 mov r3, 0                                                             |         r3 = 0;
    0x08049a78 str r3, [r5, 0x13c]                                                   |         *((r5 + 0x13c)) = r3;
                                                                                     |         if ((sl & 0x100) != 0) {
    0x08049a7c ldreq r2, [r6, 0x1f0]                                                 |             r2 = *((r6 + 0x1f0));
                                                                                     |         }
    0x08049a80 movw r3, 0x3a98                                                       |         
    0x08049a84 str r3, [r5, 0x138]                                                   |         *((r5 + 0x138)) = r3;
                                                                                     |         if ((sl & 0x100) != 0) {
    0x08049a88 ldreq r3, [r2, 0x4c]                                                  |             r3 = *((r2 + 0x4c));
                                                                                     |         }
                                                                                     |         if ((sl & 0x100) != 0) {
    0x08049a8c orreq r3, r3, 0x20000                                                 |             r3 |= 0x20000;
                                                                                     |         }
                                                                                     |         if ((sl & 0x100) != 0) {
    0x08049a90 streq r3, [r2, 0x4c]                                                  |             *((r2 + 0x4c)) = r3;
                                                                                     |         }
    0x08049a94 ldr r3, [r6, 0x70]                                                    |         r3 = *((r6 + 0x70));
    0x08049a98 ldr r3, [r3, 0x20]                                                    |         r3 = *(0x3ab8);
    0x08049a9c cmp r3, r4                                                            |         
                                                                                     |         if (r3 != r4) {
    0x08049aa0 beq 0x8049ab8                                                         |             
    0x08049aa4 tst sl, 0x800                                                         |             
                                                                                     |             if ((sl & 0x800) != 0) {
    0x08049aa8 ldreq r2, [r6, 0x1f0]                                                 |                 r2 = *((r6 + 0x1f0));
                                                                                     |             }
                                                                                     |             if ((sl & 0x800) != 0) {
    0x08049aac ldreq r3, [r2, 0x4c]                                                  |                 r3 = *((r2 + 0x4c));
                                                                                     |             }
                                                                                     |             if ((sl & 0x800) != 0) {
    0x08049ab0 orreq r3, r3, 0x8000000                                               |                 r3 |= 0x8000000;
                                                                                     |             }
                                                                                     |             if ((sl & 0x800) == 0) {
    0x08049ab4 streq r3, [r2, 0x4c]                                                  |                 *((r2 + 0x4c)) = r3;
                                                                                     |                 goto label_51;
                                                                                     |             }
                                                                                     |         }
                                                                                     | label_51:
    0x08049ab8 mov r3, 0xa                                                           |         r3 = 0xa;
    0x08049abc str r3, [r5, 0x214]                                                   |         *((r5 + 0x214)) = r3;
    0x08049ac0 ldr r3, [sp, 0x1c]                                                    |         r3 = var_1ch;
    0x08049ac4 ldr r3, [r3, 0x18]                                                    |         r3 = *((r3 + 0x18));
    0x08049ac8 str r3, [sp, 0x2c]                                                    |         var_2ch = r3;
    0x08049acc cmp r3, 6                                                             |         
                                                                                     |         if (r3 <= 6) {
    0x08049ad0 movhi r0, r6                                                          |             r0 = r6;
                                                                                     |         }
    0x08049ad4 stmdaeq r5, {r2, r5, r6, r7, fp, ip, lr, pc}                          |         __asm ("stmdaeq r5, {r2, r5, r6, r7, fp, ip, lr, pc}");
    0x08049ad8 stmdaeq r5, {r2, r5, r6, r7, fp, ip, lr, pc}                          |         __asm ("stmdaeq r5, {r2, r5, r6, r7, fp, ip, lr, pc}");
                                                                                     |         if (r3 > 6) {
    0x08049adc bhi 0x8049f9c                                                         |             goto label_12;
                                                                                     |         }
    0x08049ae0 ldr r3, [sp, 0x1c]                                                    |         r3 = var_1ch;
    0x08049ae4 ldr r3, [r3, 0x1c]                                                    |         r3 = *((r3 + 0x1c));
    0x08049ae8 cmp r3, 0x14                                                          |         
                                                                                     |         if (r3 > 0x14) {
    0x08049aec bhi 0x804a1d8                                                         |             goto label_52;
                                                                                     |         }
    0x08049af0 ldr r2, [sp, 0x2c]                                                    |         r2 = var_2ch;
    0x08049af4 mov r3, 0x400                                                         |         r3 = 0x400;
    0x08049af8 cmp r2, 2                                                             |         
    0x08049afc lsl r3, r3, r2                                                        |         r3 <<= r2;
    0x08049b00 str r3, [sp, 0x30]                                                    |         var_30h = r3;
                                                                                     |         if (r2 != 2) {
    0x08049b04 ldreq r2, [r6, 0x1f0]                                                 |             r2 = *((r6 + 0x1f0));
                                                                                     |         }
                                                                                     |         if (r2 != 2) {
    0x08049b08 ldreq r3, [r2, 0x4c]                                                  |             r3 = *((r2 + 0x4c));
                                                                                     |         }
                                                                                     |         if (r2 != 2) {
    0x08049b0c orreq r3, r3, 0x400000                                                |             r3 |= 0x400000;
                                                                                     |         }
                                                                                     |         if (r2 != 2) {
    0x08049b10 streq r3, [r2, 0x4c]                                                  |             *((r2 + 0x4c)) = r3;
                                                                                     |         }
    0x08049b14 ldr r3, [sp, 0x1c]                                                    |         r3 = var_1ch;
    0x08049b18 ldr r3, [r3, 0x4c]                                                    |         r3 = *((r3 + 0x4c));
    0x08049b1c cmp r3, 0                                                             |         
                                                                                     |         if (r3 != 0) {
    0x08049b20 bne 0x8049f38                                                         |             goto label_53;
                                                                                     |         }
    0x08049b24 mov sl, 0x80                                                          |         sl = 0x80;
    0x08049b28 mov fp, 0xb                                                           |         
    0x08049b2c strd sl, fp, [r5, 0x84]                                               |         __asm ("strd sl, fp, [r5, 0x84]");
                                                                                     | label_20:
    0x08049b30 ldr r0, [r5, 0x44]                                                    |         r0 = *((r5 + 0x44));
    0x08049b34 ldrb r3, [r0, 0x200]                                                  |         r3 = *((r0 + 0x200));
    0x08049b38 cmp r3, 0                                                             |         
                                                                                     |         if (r3 != 0) {
    0x08049b3c bne 0x804a0b4                                                         |             goto label_54;
                                                                                     |         }
    0x08049b40 add r3, sp, 0x7c                                                      |         r3 += var_7ch;
    0x08049b44 add sl, sp, 0x78                                                      |         sl += var_78h;
    0x08049b48 mov fp, r3                                                            |         
                                                                                     | label_11:
    0x08049b4c ldr r1, [r5, 0x4c]                                                    |         r1 = *((r5 + 0x4c));
    0x08049b50 mov r2, sl                                                            |         r2 = sl;
    0x08049b54 str r1, [r5, 0x58]                                                    |         *((r5 + 0x58)) = r1;
    0x08049b58 mov ip, 0                                                             |         
    0x08049b5c ldr r0, [sp, 0x20]                                                    |         r0 = var_20h;
    0x08049b60 mov r3, fp                                                            |         r3 = fp;
    0x08049b64 mov r1, r6                                                            |         r1 = r6;
    0x08049b68 str ip, [sp]                                                          |         *(sp) = ip;
    0x08049b6c bl 0x8047030                                                          |         r0 = parse_options ();
    0x08049b70 subs sl, r0, 0                                                        |         sl = r0 - 0;
                                                                                     |         if (sl == r0) {
    0x08049b74 beq 0x8049dcc                                                         |             goto label_55;
                                                                                     |         }
    0x08049b78 ldr r2, [r6, 0x1f0]                                                   |         r2 = *((r6 + 0x1f0));
    0x08049b7c ldr r3, [r2, 0x4c]                                                    |         r3 = *((r2 + 0x4c));
    0x08049b80 and r1, r3, 0xc00                                                     |         r1 = r3 & 0xc00;
    0x08049b84 cmp r1, 0x400                                                         |         
                                                                                     |         if (r1 == 0x400) {
    0x08049b88 beq 0x804a354                                                         |             goto label_56;
                                                                                     |         }
    0x08049b8c ldr r3, [r6, 0x38]                                                    |         r3 = *((r6 + 0x38));
    0x08049b90 orr r3, r3, 1                                                         |         r3 |= 1;
    0x08049b94 str r3, [r6, 0x38]                                                    |         *((r6 + 0x38)) = r3;
    0x08049b98 ldr r3, [r2, 0x4c]                                                    |         r3 = *((r2 + 0x4c));
                                                                                     | label_24:
    0x08049b9c ubfx r1, r3, 0xf, 1                                                   |         r1 = (r3 >> 0xf) & ((1 << 1) - 1);
    0x08049ba0 ldr r3, [r6, 0x34]                                                    |         r3 = *((r6 + 0x34));
    0x08049ba4 bic r3, r3, 0x10000                                                   |         r3 = BIT_MASK (r3, 0x10000);
    0x08049ba8 orr r3, r3, r1, lsl 16                                                |         r3 |= (r1 << 16);
    0x08049bac str r3, [r6, 0x34]                                                    |         *((r6 + 0x34)) = r3;
    0x08049bb0 ldr r3, [sp, 0x1c]                                                    |         r3 = var_1ch;
    0x08049bb4 ldr r3, [r3, 0x4c]                                                    |         r3 = *((r3 + 0x4c));
    0x08049bb8 cmp r3, 0                                                             |         
                                                                                     |         if (r3 == 0) {
    0x08049bbc bne 0x8049c00                                                         |             
    0x08049bc0 ldr r3, [r2, 0x44]                                                    |             r3 = *((r2 + 0x44));
    0x08049bc4 ldr r2, [r3, 0x5c]                                                    |             r2 = *((r3 + 0x5c));
    0x08049bc8 cmp r2, 0                                                             |             
                                                                                     |             if (r2 == 0) {
    0x08049bcc bne 0x8049be8                                                         |                 
    0x08049bd0 ldr r2, [r3, 0x64]                                                    |                 r2 = *((r3 + 0x64));
    0x08049bd4 cmp r2, 0                                                             |                 
                                                                                     |                 if (r2 != 0) {
    0x08049bd8 bne 0x8049be8                                                         |                     goto label_57;
                                                                                     |                 }
    0x08049bdc ldr r3, [r3, 0x60]                                                    |                 r3 = *((r3 + 0x60));
    0x08049be0 cmp r3, 0                                                             |                 
                                                                                     |                 if (r3 == 0) {
    0x08049be4 beq 0x8049c00                                                         |                     goto label_58;
                                                                                     |                 }
                                                                                     |             }
                                                                                     | label_57:
    0x08049be8 stmdaeq r5, {r4, r7, sb, fp, ip, lr, pc}                              |             __asm ("stmdaeq r5, {r4, r7, sb, fp, ip, lr, pc}");
    0x08049bec stmdaeq r5, {r4, r7, sb, fp, ip, lr, pc}                              |             __asm ("stmdaeq r5, {r4, r7, sb, fp, ip, lr, pc}");
    0x08049bf0 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                              |             __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x08049bf4 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                              |             __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x08049bf8 mov r0, r6                                                            |             r0 = r6;
    0x08049bfc stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |             __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
                                                                                     |         }
                                                                                     | label_58:
    0x08049c00 ldr r3, [sp, 0x1c]                                                    |         r3 = var_1ch;
    0x08049c04 ldr r3, [r3, 0x48]                                                    |         r3 = *((r3 + 0x48));
    0x08049c08 cmp r3, 1                                                             |         
                                                                                     |         if (r3 == 1) {
    0x08049c0c beq 0x804a3c4                                                         |             goto label_59;
                                                                                     |         }
                                                                                     | label_25:
    0x08049c10 ldr r3, [r6, 0x70]                                                    |         r3 = *((r6 + 0x70));
    0x08049c14 ldr r3, [r3, 0x20]                                                    |         r3 = *((r3 + 0x20));
    0x08049c18 cmp r3, r4                                                            |         
                                                                                     |         if (r3 == r4) {
    0x08049c1c beq 0x804a300                                                         |             goto label_60;
                                                                                     |         }
                                                                                     | label_22:
    0x08049c20 ldr r1, [r6, 0x34]                                                    |         r1 = *((r6 + 0x34));
    0x08049c24 mov r0, r6                                                            |         r0 = r6;
    0x08049c28 and r1, r1, 1                                                         |         r1 &= 1;
    0x08049c2c bl 0x8047ac0                                                          |         r0 = ext4_feature_set_ok ();
    0x08049c30 subs sl, r0, 0                                                        |         sl = r0 - 0;
                                                                                     |         if (sl == r0) {
    0x08049c34 beq 0x8049dcc                                                         |             goto label_55;
                                                                                     |         }
    0x08049c38 ldr r3, [r5, 0x44]                                                    |         r3 = *((r5 + 0x44));
    0x08049c3c ldr r2, [sp, 0x30]                                                    |         r2 = var_30h;
    0x08049c40 ldrh r3, [r3, 0xce]                                                   |         r3 = *((r3 + 0xce));
    0x08049c44 cmp r3, r2, asr 2                                                     |         
                                                                                     |         if (r3 <= r2) {
    0x08049c48 movgt r0, r6                                                          |             r0 = r6;
                                                                                     |         }
    0x08049c4c stmdaeq r5, {r2, r4, r7, r8, sb, fp, ip, lr, pc}                      |         __asm ("stmdaeq r5, {r2, r4, r7, r8, sb, fp, ip, lr, pc}");
    0x08049c50 stmdaeq r5, {r2, r4, r7, r8, sb, fp, ip, lr, pc}                      |         __asm ("stmdaeq r5, {r2, r4, r7, r8, sb, fp, ip, lr, pc}");
                                                                                     |         if (r3 > r2) {
    0x08049c54 bgt 0x8049f9c                                                         |             goto label_12;
                                                                                     |         }
    0x08049c58 ldr r4, [r6, 0x1f0]                                                   |         r4 = *((r6 + 0x1f0));
    0x08049c5c ldr r2, [r4, 0x44]                                                    |         r2 = *((r4 + 0x44));
    0x08049c60 ldr r3, [r2, 0x60]                                                    |         r3 = *((r2 + 0x60));
    0x08049c64 tst r3, 0x10000                                                       |         
                                                                                     |         if ((r3 & 0x10000) != 0) {
    0x08049c68 beq 0x8049c88                                                         |             
    0x08049c6c ldr r3, [sp, 0x1c]                                                    |             r3 = var_1ch;
    0x08049c70 ldrb r3, [r3, 0x176]                                                  |             r3 = *((r3 + 0x176));
    0x08049c74 cmp r3, 0                                                             |             
                                                                                     |             if (r3 == 0) {
    0x08049c78 movne r0, r6                                                          |                 r0 = r6;
                                                                                     |             }
    0x08049c7c stmdaeq r5, {r3, r6, r7, r8, sb, fp, ip, lr, pc}                      |             __asm ("stmdaeq r5, {r3, r6, r7, r8, sb, fp, ip, lr, pc}");
    0x08049c80 stmdaeq r5, {r3, r6, r7, r8, sb, fp, ip, lr, pc}                      |             __asm ("stmdaeq r5, {r3, r6, r7, r8, sb, fp, ip, lr, pc}");
                                                                                     |             if (r3 != 0) {
    0x08049c84 bne 0x8049f9c                                                         |                 goto label_12;
                                                                                     |             }
                                                                                     |         }
    0x08049c88 ldr r3, [r6, 0x10]                                                    |         r3 = *((r6 + 0x10));
    0x08049c8c ldr r1, [sp, 0x30]                                                    |         r1 = var_30h;
    0x08049c90 cmp r3, r1                                                            |         
                                                                                     |         if (r3 == r1) {
    0x08049c94 beq 0x804a4b0                                                         |             goto label_61;
                                                                                     |         }
    0x08049c98 cmp r8, 0                                                             |         
                                                                                     |         if (r8 != 0) {
    0x08049c9c beq 0x8049ca8                                                         |             
    0x08049ca0 mov r0, r8                                                            |             r0 = r8;
    0x08049ca4 stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}                  |             __asm ("stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}");
                                                                                     |         }
    0x08049ca8 ldr r1, [sp, 0x30]                                                    |         r1 = var_30h;
    0x08049cac mov r0, r6                                                            |         r0 = r6;
    0x08049cb0 stmdaeq r8, {r4, sl, fp, ip, sp, lr}                                  |         __asm ("stmdaeq r8, {r4, sl, fp, ip, sp, lr}");
    0x08049cb4 cmp r0, 0                                                             |         
                                                                                     |         if (r0 != 0) {
    0x08049cb8 bne 0x804a430                                                         |             goto label_62;
                                                                                     |         }
    0x08049cbc mvn r4, 0x15                                                          |         r4 = ~0x15;
    0x08049cc0 ldr r3, [sp, 0x30]                                                    |         r3 = var_30h;
    0x08049cc4 mov r0, r6                                                            |         r0 = r6;
    0x08049cc8 stmdaeq r5, {r3, r5, r6, r7, r8, sb, fp, ip, lr, pc}                  |         __asm ("stmdaeq r5, {r3, r5, r6, r7, r8, sb, fp, ip, lr, pc}");
    0x08049ccc stmdaeq r5, {r3, r5, r6, r7, r8, sb, fp, ip, lr, pc}                  |         __asm ("stmdaeq r5, {r3, r5, r6, r7, r8, sb, fp, ip, lr, pc}");
    0x08049cd0 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |         __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049cd4 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |         __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049cd8 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |         __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
                                                                                     | label_34:
    0x08049cdc ldr r0, [r5, 0x220]                                                   |         r0 = *((r5 + 0x220));
    0x08049ce0 cmp r0, 0                                                             |         
                                                                                     |         if (r0 != 0) {
    0x08049ce4 beq 0x8049cf0                                                         |             
    0x08049ce8 add r1, r0, 0x40                                                      |             r1 = r0 + 0x40;
    0x08049cec stmdaeq r8, {r3, r4, r5, r7, r8, sb, fp, ip, sp, lr}                  |             __asm ("stmdaeq r8, {r3, r4, r5, r7, r8, sb, fp, ip, sp, lr}");
                                                                                     |         }
    0x08049cf0 ldr r0, [r5, 0x140]                                                   |         r0 = *((r5 + 0x140));
    0x08049cf4 cmp r0, 0                                                             |         
                                                                                     |         if (r0 == 0) {
    0x08049cf8 movne sl, 0                                                           |             sl = 0;
                                                                                     |         }
                                                                                     |         if (r0 != 0) {
    0x08049cfc bne 0x8049e00                                                         |             goto label_63;
                                                                                     |         }
    0x08049d00 str r0, [r6, 0x1f0]                                                   |         *((r6 + 0x1f0)) = r0;
    0x08049d04 mov sl, r4                                                            |         sl = r4;
    0x08049d08 ldr r0, [r5, 0xd8]                                                    |         r0 = *((r5 + 0xd8));
    0x08049d0c stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
    0x08049d10 mov r0, r5                                                            |         r0 = r5;
    0x08049d14 stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
    0x08049d18 mov r0, sb                                                            |         r0 = sb;
    0x08049d1c stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
    0x08049d20 b 0x8049e38                                                           |         goto label_64;
    0x08049d24 ldrb r3, [r4, 1]                                                      |         r3 = *((r4 + 1));
    0x08049d28 cmp r3, 0x62                                                          |         
    0x08049d2c bne 0x8049764                                                         |         
                                                                                     |     }
    0x08049d30 ldrb r2, [r4, 2]                                                      |     r2 = *((r4 + 2));
    0x08049d34 subs r2, r2, 0x3d                                                     |     r2 -= 0x3d;
                                                                                     |     if (r2 != r2) {
    0x08049d38 bne 0x8049764                                                         |         goto label_0;
                                                                                     |     }
    0x08049d3c add r0, r4, 3                                                         |     r0 = r4 + 3;
    0x08049d40 add r1, sp, 0x90                                                      |     r1 += var_90h;
    0x08049d44 mov sl, r2                                                            |     sl = r2;
    0x08049d48 str r0, [sp, 0x90]                                                    |     var_90h = r0;
    0x08049d4c stmdaeq r8, {r2, r4, sl, fp, ip, sp, lr}                              |     __asm ("stmdaeq r8, {r2, r4, sl, fp, ip, sp, lr}");
    0x08049d50 ldr r3, [sp, 0x90]                                                    |     r3 = var_90h;
    0x08049d54 str r3, [sp, 0x20]                                                    |     var_20h = r3;
    0x08049d58 str r0, [sp, 0x18]                                                    |     var_18h = r0;
    0x08049d5c ldrb r3, [r3]                                                         |     r3 = *(r3);
    0x08049d60 cmp r3, 0                                                             |     
    0x08049d64 cmpne r3, 0x2c                                                        |     __asm ("cmpne r3, 0x2c");
                                                                                     |     if (r3 != 0) {
    0x08049d68 bne 0x804cffc                                                         |         goto label_65;
                                                                                     |     }
    0x08049d6c cmp r3, 0x2c                                                          |     
    0x08049d70 mov r0, 0                                                             |     r0 = 0;
    0x08049d74 movw r1, 0x4003                                                       |     r1 = 0x4003;
    0x08049d78 strd r0, r1, [sp, 0x78]                                               |     __asm ("strd r0, r1, [var_7ch]");
                                                                                     |     if (r3 != 0x2c) {
    0x08049d7c ldreq r3, [sp, 0x20]                                                  |         r3 = var_20h;
                                                                                     |     }
                                                                                     |     if (r3 != 0x2c) {
    0x08049d80 addeq r3, r3, 1                                                       |         r3++;
                                                                                     |     }
                                                                                     |     if (r3 != 0x2c) {
    0x08049d84 streq r3, [sp, 0x20]                                                  |         var_20h = r3;
                                                                                     |     }
    0x08049d88 ldr r3, [sp, 0x20]                                                    |     r3 = var_20h;
    0x08049d8c cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x08049d90 bne 0x8049780                                                         |         goto label_1;
                                                                                     |     }
    0x08049d94 cmp r5, 0                                                             |     
                                                                                     |     if (r5 != 0) {
    0x08049d98 bne 0x8049790                                                         |         goto label_2;
                                                                                     |     }
                                                                                     | label_38:
    0x08049d9c mov r0, r5                                                            |     r0 = r5;
    0x08049da0 mvn sl, 0xb                                                           |     sl = ~0xb;
    0x08049da4 stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
    0x08049da8 mov r0, sb                                                            |     r0 = sb;
    0x08049dac stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
    0x08049db0 mov r0, sl                                                            |     r0 = sl;
    0x08049db4 add sp, sp, 0xa4                                                      |     
    0x08049db8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                              |     
                                                                                     | label_27:
    0x08049dbc ldr sl, [sp, 0x28]                                                    |     sl = var_28h;
    0x08049dc0 cmp sl, 0                                                             |     
                                                                                     |     if (sl == 0) {
    0x08049dc4 beq 0x8049e5c                                                         |         goto label_66;
                                                                                     |     }
                                                                                     | label_10:
    0x08049dc8 mov sl, 0                                                             |     sl = 0;
                                                                                     | label_55:
    0x08049dcc mvn r4, 0x15                                                          |     r4 = ~0x15;
                                                                                     |     do {
                                                                                     | label_4:
    0x08049dd0 ldr r0, [r5, 0x220]                                                   |         r0 = *((r5 + 0x220));
    0x08049dd4 cmp r0, 0                                                             |         
                                                                                     |         if (r0 != 0) {
    0x08049dd8 beq 0x8049de4                                                         |             
    0x08049ddc add r1, r0, 0x40                                                      |             r1 = r0 + 0x40;
    0x08049de0 stmdaeq r8, {r3, r4, r5, r7, r8, sb, fp, ip, sp, lr}                  |             __asm ("stmdaeq r8, {r3, r4, r5, r7, r8, sb, fp, ip, sp, lr}");
                                                                                     |         }
                                                                                     | label_18:
    0x08049de4 cmp r8, 0                                                             |         
                                                                                     |         if (r8 != 0) {
    0x08049de8 beq 0x8049df4                                                         |             
    0x08049dec mov r0, r8                                                            |             r0 = r8;
    0x08049df0 stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}                  |             __asm ("stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}");
                                                                                     |         }
    0x08049df4 ldr r0, [r5, 0x140]                                                   |         r0 = *((r5 + 0x140));
    0x08049df8 cmp r0, 0                                                             |         
                                                                                     |         if (r0 != 0) {
    0x08049dfc beq 0x8049e10                                                         |             
                                                                                     | label_63:
    0x08049e00 mov r1, 0x83                                                          |             r1 = 0x83;
    0x08049e04 stmdaeq r8, {r2, r3, r5, r7, r8, sb, fp, ip, sp, lr}                  |             __asm ("stmdaeq r8, {r2, r3, r5, r7, r8, sb, fp, ip, sp, lr}");
    0x08049e08 mov r3, 0                                                             |             r3 = 0;
    0x08049e0c str r3, [r5, 0x140]                                                   |             *((r5 + 0x140)) = r3;
                                                                                     |         }
    0x08049e10 cmp sl, 0                                                             |         
    0x08049e14 ldr r0, [r5, 0xd8]                                                    |         r0 = *((r5 + 0xd8));
                                                                                     |         if (sl != 0) {
    0x08049e18 moveq sl, r4                                                          |             sl = r4;
                                                                                     |         }
    0x08049e1c mov r3, 0                                                             |         r3 = 0;
    0x08049e20 str r3, [r6, 0x1f0]                                                   |         *((r6 + 0x1f0)) = r3;
                                                                                     | label_6:
    0x08049e24 stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
    0x08049e28 mov r0, r5                                                            |         r0 = r5;
    0x08049e2c stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
    0x08049e30 mov r0, sb                                                            |         r0 = sb;
    0x08049e34 stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
                                                                                     | label_64:
    0x08049e38 mov r0, sl                                                            |         r0 = sl;
    0x08049e3c add sp, sp, 0xa4                                                      |         
    0x08049e40 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                              |         
                                                                                     | label_40:
    0x08049e44 ldr r2, [sp, 0x18]                                                    |         r2 = var_18h;
    0x08049e48 mov r3, 0                                                             |         r3 = 0;
    0x08049e4c str sl, [sp, 0x84]                                                    |         var_84h = sl;
    0x08049e50 mov fp, r3                                                            |         
    0x08049e54 str r2, [sp, 0x80]                                                    |         var_80h = r2;
    0x08049e58 b 0x804982c                                                           |         goto label_3;
                                                                                     | label_66:
    0x08049e5c mov r0, r6                                                            |         r0 = r6;
    0x08049e60 stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, lr, pc}                      |         __asm ("stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, lr, pc}");
    0x08049e64 stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, lr, pc}                      |         __asm ("stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, lr, pc}");
    0x08049e68 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |         __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049e6c stmdaeq r5, {r3, r4, fp, lr, pc}                                      |         __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049e70 mvn r4, 0x15                                                          |         r4 = ~0x15;
    0x08049e74 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |         __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08049e78 b 0x8049dd0                                                           |         
                                                                                     |     } while (1);
                                                                                     | label_45:
    0x08049e7c ldr r3, [r4, 0x220]                                                   |     r3 = *((r4 + 0x220));
    0x08049e80 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x08049e84 beq 0x804a1a8                                                         |         goto label_67;
                                                                                     |     }
                                                                                     | label_30:
    0x08049e88 ldr r2, [r3]                                                          |     r2 = *(r3);
    0x08049e8c cmp r2, 4                                                             |     
    0x08049e90 ldr r2, [sp, 0x1c]                                                    |     r2 = var_1ch;
    0x08049e94 ldr r4, [r2, 0x3fc]                                                   |     r4 = *((r2 + 0x3fc));
                                                                                     |     if (r2 != 4) {
    0x08049e98 bne 0x804a1d4                                                         |         goto label_68;
                                                                                     |     }
    0x08049e9c ldr r1, [sp, 0x1c]                                                    |     r1 = var_1ch;
    0x08049ea0 add r0, sp, 0x90                                                      |     r0 += var_90h;
    0x08049ea4 mov r2, 0x3fc                                                         |     r2 = 0x3fc;
    0x08049ea8 str r3, [sp, 0x90]                                                    |     var_90h = r3;
    0x08049eac mvn r3, 0                                                             |     r3 = ~0;
    0x08049eb0 str r3, [sp, 0x98]                                                    |     var_98h = r3;
    0x08049eb4 stmdaeq r8, {r2, r3, r8, sb, sl, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r2, r3, r8, sb, sl, ip, sp, lr}");
    0x08049eb8 subs sl, r0, 0                                                        |     sl -= var_90h;
                                                                                     |     if (sl != var_90h) {
    0x08049ebc bne 0x804a1d4                                                         |         goto label_68;
                                                                                     |     }
    0x08049ec0 ldr r3, [sp, 0x98]                                                    |     r3 = var_98h;
    0x08049ec4 cmp r4, r3                                                            |     
                                                                                     |     if (r4 == r3) {
    0x08049ec8 beq 0x8049fe4                                                         |         goto label_69;
                                                                                     |     }
    0x08049ecc mov r0, r6                                                            |     r0 = r6;
    0x08049ed0 stmdaeq r5, {r3, r4, r7, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, r7, fp, ip, lr, pc}");
    0x08049ed4 stmdaeq r5, {r3, r4, r7, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, r7, fp, ip, lr, pc}");
    0x08049ed8 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049edc stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049ee0 mvn r4, 0x49                                                          |     r4 = ~0x49;
    0x08049ee4 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08049ee8 b 0x8049dd0                                                           |     goto label_4;
                                                                                     | label_37:
    0x08049eec movw r3, 0x4003                                                       |     r3 = 0x4003;
    0x08049ef0 mov sl, r4                                                            |     sl = r4;
    0x08049ef4 str r3, [sp, 0x7c]                                                    |     var_7ch = r3;
    0x08049ef8 mov r3, 1                                                             |     r3 = 1;
    0x08049efc str r4, [sp, 0x78]                                                    |     var_78h = r4;
    0x08049f00 str r4, [sp, 0x20]                                                    |     var_20h = r4;
    0x08049f04 str r3, [sp, 0x18]                                                    |     var_18h = r3;
    0x08049f08 b 0x8049788                                                           |     goto label_5;
                                                                                     | label_39:
    0x08049f0c mvn sl, 0x15                                                          |     sl = ~0x15;
    0x08049f10 mov r0, r6                                                            |     r0 = r6;
    0x08049f14 stmdaeq r5, {r6, r7, r8, sb, sl, ip, lr, pc}                          |     __asm ("stmdaeq r5, {r6, r7, r8, sb, sl, ip, lr, pc}");
    0x08049f18 stmdaeq r5, {r6, r7, r8, sb, sl, ip, lr, pc}                          |     __asm ("stmdaeq r5, {r6, r7, r8, sb, sl, ip, lr, pc}");
    0x08049f1c stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049f20 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049f24 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
                                                                                     |     do {
    0x08049f28 mov r3, 0                                                             |         r3 = 0;
    0x08049f2c ldr r0, [r5, 0xd8]                                                    |         r0 = *((r5 + 0xd8));
    0x08049f30 str r3, [r6, 0x1f0]                                                   |         *((r6 + 0x1f0)) = r3;
    0x08049f34 b 0x8049e24                                                           |         goto label_6;
                                                                                     | label_53:
    0x08049f38 ldr r2, [sp, 0x1c]                                                    |         r2 = var_1ch;
    0x08049f3c ldrh r3, [r2, 0x58]                                                   |         r3 = *((r2 + 0x58));
    0x08049f40 str r3, [r5, 0x84]                                                    |         *((r5 + 0x84)) = r3;
    0x08049f44 ldr r2, [r2, 0x54]                                                    |         r2 = *((r2 + 0x54));
    0x08049f48 str r2, [r5, 0x88]                                                    |         *((r5 + 0x88)) = r2;
    0x08049f4c cmp r2, 0xa                                                           |         
                                                                                     |         if (r2 <= 0xa) {
    0x08049f50 ble 0x804a104                                                         |             goto label_70;
                                                                                     |         }
    0x08049f54 cmp r3, 0x7f                                                          |         
                                                                                     |         if (r3 > 0x7f) {
    0x08049f58 ble 0x8049f74                                                         |             
    0x08049f5c ldr r1, [sp, 0x30]                                                    |             r1 = var_30h;
    0x08049f60 sub r2, r3, 1                                                         |             r2 = r3 - 1;
    0x08049f64 and r2, r2, r3                                                        |             r2 &= r3;
    0x08049f68 cmp r3, r1                                                            |             
    0x08049f6c cmple r2, 0                                                           |             __asm ("cmple r2, 0");
                                                                                     |             if (r3 == r1) {
    0x08049f70 beq 0x804a244                                                         |                 goto label_71;
                                                                                     |             }
                                                                                     |         }
    0x08049f74 mov r0, r6                                                            |         r0 = r6;
    0x08049f78 stmdaeq r5, {r3, r4, r5, r8, fp, ip, lr, pc}                          |         __asm ("stmdaeq r5, {r3, r4, r5, r8, fp, ip, lr, pc}");
    0x08049f7c stmdaeq r5, {r3, r4, r5, r8, fp, ip, lr, pc}                          |         __asm ("stmdaeq r5, {r3, r4, r5, r8, fp, ip, lr, pc}");
    0x08049f80 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |         __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049f84 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |         __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049f88 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |         __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08049f8c ldr r3, [sp, 0x30]                                                    |         r3 = var_30h;
    0x08049f90 stmdaeq r5, {r2, r4, r6, r8, fp, ip, lr, pc}                          |         __asm ("stmdaeq r5, {r2, r4, r6, r8, fp, ip, lr, pc}");
    0x08049f94 stmdaeq r5, {r2, r4, r6, r8, fp, ip, lr, pc}                          |         __asm ("stmdaeq r5, {r2, r4, r6, r8, fp, ip, lr, pc}");
    0x08049f98 mov r0, r6                                                            |         r0 = r6;
                                                                                     | label_12:
    0x08049f9c stmdaeq r5, {r3, r4, fp, lr, pc}                                      |         __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049fa0 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |         __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049fa4 mov sl, 0                                                             |         sl = 0;
    0x08049fa8 mvn r4, 0x15                                                          |         r4 = ~0x15;
    0x08049fac stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |         __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08049fb0 b 0x8049dd0                                                           |         goto label_4;
                                                                                     | label_42:
    0x08049fb4 mov sl, r0                                                            |         sl = r0;
    0x08049fb8 stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, ip, lr, pc}                  |         __asm ("stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, ip, lr, pc}");
    0x08049fbc stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, ip, lr, pc}                  |         __asm ("stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, ip, lr, pc}");
    0x08049fc0 mov r0, r6                                                            |         r0 = r6;
    0x08049fc4 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |         __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049fc8 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |         __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08049fcc stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |         __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08049fd0 b 0x8049f28                                                           |         
                                                                                     |     } while (1);
                                                                                     | label_48:
    0x08049fd4 orr r2, r2, 0x400                                                     |     r2 |= 0x400;
    0x08049fd8 str r2, [r3, 0x4c]                                                    |     *((r3 + 0x4c)) = r2;
    0x08049fdc ldr r3, [r6, 0x1f0]                                                   |     r3 = *((r6 + 0x1f0));
    0x08049fe0 b 0x80499e8                                                           |     goto label_7;
                                                                                     | label_69:
    0x08049fe4 ldr r4, [r6, 0x1f0]                                                   |     r4 = *((r6 + 0x1f0));
    0x08049fe8 mov r3, r4                                                            |     r3 = r4;
    0x08049fec ldr r1, [r4, 0x44]                                                    |     r1 = *((r4 + 0x44));
    0x08049ff0 ldr r2, [r1, 0x60]                                                    |     r2 = *((r1 + 0x60));
    0x08049ff4 tst r2, 0x2000                                                        |     
                                                                                     |     if ((r2 & 0x2000) != 0) {
    0x08049ff8 bne 0x80498fc                                                         |         goto label_8;
                                                                                     |     }
    0x08049ffc ldr r3, [r1, 0x64]                                                    |     r3 = *((r1 + 0x64));
    0x0804a000 tst r3, 0x400                                                         |     
                                                                                     |     if ((r3 & 0x400) == 0) {
    0x0804a004 beq 0x804a188                                                         |         goto label_46;
                                                                                     |     }
                                                                                     | label_17:
    0x0804a008 ldr r3, [r4, 0x220]                                                   |     r3 = *((r4 + 0x220));
    0x0804a00c cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804a010 beq 0x804a140                                                         |         goto label_72;
                                                                                     |     }
                                                                                     | label_14:
    0x0804a014 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
                                                                                     | label_15:
    0x0804a018 ldr r3, [r4, 0x220]                                                   |     r3 = *((r4 + 0x220));
    0x0804a01c cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804a020 beq 0x804a184                                                         |         goto label_73;
                                                                                     |     }
                                                                                     | label_16:
    0x0804a024 ldr r3, [r5, 0x220]                                                   |     r3 = *((r5 + 0x220));
    0x0804a028 ldr r2, [sp, 0x1c]                                                    |     r2 = var_1ch;
    0x0804a02c add r1, r2, 0x68                                                      |     r1 = r2 + 0x68;
    0x0804a030 ldr r2, [r3]                                                          |     r2 = *(r3);
    0x0804a034 cmp r2, 4                                                             |     
                                                                                     |     if (r2 != 4) {
    0x0804a038 bne 0x804a1d4                                                         |         goto label_68;
                                                                                     |     }
    0x0804a03c add r0, sp, 0x90                                                      |     r0 += var_90h;
    0x0804a040 mov r2, 0x10                                                          |     r2 = 0x10;
    0x0804a044 str r3, [sp, 0x90]                                                    |     var_90h = r3;
    0x0804a048 mvn r3, 0                                                             |     r3 = ~0;
    0x0804a04c str r3, [sp, 0x98]                                                    |     var_98h = r3;
    0x0804a050 stmdaeq r8, {r2, r3, r8, sb, sl, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r2, r3, r8, sb, sl, ip, sp, lr}");
    0x0804a054 cmp r0, 0                                                             |     
                                                                                     |     if (r0 != 0) {
    0x0804a058 bne 0x804a1d4                                                         |         goto label_68;
                                                                                     |     }
    0x0804a05c ldr r2, [sp, 0x98]                                                    |     r2 = var_98h;
    0x0804a060 ldr r3, [r6, 0x1f0]                                                   |     r3 = *((r6 + 0x1f0));
    0x0804a064 str r2, [r5, 0x224]                                                   |     *((r5 + 0x224)) = r2;
    0x0804a068 b 0x8049908                                                           |     goto label_9;
                                                                                     | label_21:
    0x0804a06c ldr r3, [sp, 0x28]                                                    |     r3 = var_28h;
    0x0804a070 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804a074 beq 0x804a090                                                         |         goto label_74;
                                                                                     |     }
    0x0804a078 ldr r1, [r6, 0x34]                                                    |     r1 = *((r6 + 0x34));
    0x0804a07c mov r0, r6                                                            |     r0 = r6;
    0x0804a080 and r1, r1, 1                                                         |     r1 &= 1;
    0x0804a084 bl 0x8047ac0                                                          |     r0 = ext4_feature_set_ok ();
    0x0804a088 cmp r0, 0                                                             |     
                                                                                     |     if (r0 != 0) {
    0x0804a08c bne 0x8049dc8                                                         |         goto label_10;
                                                                                     |     }
                                                                                     | label_74:
    0x0804a090 stmdaeq r5, {r2, r3, r4, r6, r8, sb, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sb, fp, ip, lr, pc}");
    0x0804a094 stmdaeq r5, {r2, r3, r4, r6, r8, sb, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sb, fp, ip, lr, pc}");
                                                                                     | label_23:
    0x0804a098 mov r0, r6                                                            |     r0 = r6;
    0x0804a09c stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x0804a0a0 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x0804a0a4 mov sl, 0                                                             |     sl = 0;
    0x0804a0a8 mvn r4, 0x15                                                          |     r4 = ~0x15;
    0x0804a0ac stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x0804a0b0 b 0x8049dd0                                                           |     goto label_4;
                                                                                     | label_54:
    0x0804a0b4 add r0, r0, 0x200                                                     |     r0 += 0x200;
    0x0804a0b8 mov r2, 0xcc0                                                         |     r2 = 0xcc0;
    0x0804a0bc mov r1, 0x40                                                          |     r1 = 0x40;
    0x0804a0c0 stmdaeq r8, {r3, r4, sl, fp, ip, sp, lr}                              |     __asm ("stmdaeq r8, {r3, r4, sl, fp, ip, sp, lr}");
    0x0804a0c4 subs r3, r0, 0                                                        |     r3 = r0 - 0;
    0x0804a0c8 str r3, [sp, 0x34]                                                    |     var_34h = r3;
                                                                                     |     if (r3 == r0) {
    0x0804a0cc beq 0x8049dc8                                                         |         goto label_10;
                                                                                     |     }
    0x0804a0d0 add sl, sp, 0x78                                                      |     sl += var_78h;
    0x0804a0d4 add r3, sp, 0x7c                                                      |     r3 += var_7ch;
    0x0804a0d8 mov ip, 0                                                             |     
    0x0804a0dc mov r2, sl                                                            |     r2 = sl;
    0x0804a0e0 mov r1, r6                                                            |     r1 = r6;
    0x0804a0e4 str ip, [sp]                                                          |     *(sp) = ip;
    0x0804a0e8 mov fp, r3                                                            |     
    0x0804a0ec bl 0x8047030                                                          |     r0 = parse_options ();
    0x0804a0f0 cmp r0, 0                                                             |     
                                                                                     |     if (r0 == 0) {
    0x0804a0f4 beq 0x804a410                                                         |         goto label_75;
                                                                                     |     }
                                                                                     | label_26:
    0x0804a0f8 ldr r0, [sp, 0x34]                                                    |     r0 = var_34h;
    0x0804a0fc stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
    0x0804a100 b 0x8049b4c                                                           |     goto label_11;
                                                                                     | label_70:
    0x0804a104 mov r3, r2                                                            |     r3 = r2;
    0x0804a108 mov r0, r6                                                            |     r0 = r6;
    0x0804a10c stmdaeq r5, {r5, r8, fp, ip, lr, pc}                                  |     __asm ("stmdaeq r5, {r5, r8, fp, ip, lr, pc}");
    0x0804a110 stmdaeq r5, {r5, r8, fp, ip, lr, pc}                                  |     __asm ("stmdaeq r5, {r5, r8, fp, ip, lr, pc}");
    0x0804a114 b 0x8049f9c                                                           |     goto label_12;
                                                                                     | label_43:
    0x0804a118 ldr r1, [pc, 0xe8c]                                                   |     r1 = .bss;
    0x0804a11c mov r0, r6                                                            |     r0 = r6;
    0x0804a120 stmdaeq r5, {r2, r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
    0x0804a124 stmdaeq r5, {r2, r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
    0x0804a128 movw r2, 0x1001                                                       |     r2 = 0x1001;
    0x0804a12c stmdaeq r4, {r3, r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}              |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}");
    0x0804a130 ldr r3, [r6, 0x1f0]                                                   |     r3 = *((r6 + 0x1f0));
    0x0804a134 ldr r3, [r3, 0x44]                                                    |     r3 = *((r3 + 0x44));
    0x0804a138 ldr r3, [r3, 0x64]                                                    |     r3 = *((r3 + 0x64));
    0x0804a13c b 0x8049898                                                           |     goto label_13;
                                                                                     | label_72:
    0x0804a140 stmdaeq r6, {r1, r2, r5, r6, r8}                                      |     __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
    0x0804a144 stmdaeq r6, {r1, r2, r5, r6, r8}                                      |     __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
    0x0804a148 ldrb r3, [ip]                                                         |     r3 = *(ip);
    0x0804a14c cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0804a150 bne 0x804a014                                                         |         goto label_14;
                                                                                     |     }
    0x0804a154 mov r2, 9                                                             |     r2 = 9;
    0x0804a158 movw r1, 0xc34                                                        |     r1 = 0xc34;
    0x0804a15c stmdaeq r5, {r6, r8, sb, sl, lr, pc}                                  |     __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
    0x0804a160 stmdaeq r5, {r6, r8, sb, sl, lr, pc}                                  |     __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
    0x0804a164 mov lr, 1                                                             |     lr = 1;
    0x0804a168 strb lr, [ip]                                                         |     
    0x0804a16c stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}                              |     __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
    0x0804a170 ldr r4, [r6, 0x1f0]                                                   |     r4 = *((r6 + 0x1f0));
    0x0804a174 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804a178 ldr r3, [r2, 0x64]                                                    |     r3 = *((r2 + 0x64));
    0x0804a17c tst r3, 0x400                                                         |     
                                                                                     |     if ((r3 & 0x400) != 0) {
    0x0804a180 bne 0x804a018                                                         |         goto label_15;
                                                                                     |     }
                                                                                     | label_73:
    0x0804a184 ldr r2, [r2, 0x60]                                                    |     r2 = *((r2 + 0x60));
                                                                                     | label_46:
    0x0804a188 tst r2, 0x400                                                         |     
                                                                                     |     if ((r2 & 0x400) == 0) {
    0x0804a18c moveq r3, r4                                                          |         r3 = r4;
                                                                                     |         goto label_76;
                                                                                     |     }
                                                                                     |     if ((r2 & 0x400) == 0) {
                                                                                     | label_76:
    0x0804a190 beq 0x8049908                                                         |         goto label_9;
                                                                                     |     }
    0x0804a194 b 0x804a024                                                           |     goto label_16;
                                                                                     | label_49:
    0x0804a198 orr r2, r2, 0x800                                                     |     r2 |= 0x800;
    0x0804a19c str r2, [r3, 0x4c]                                                    |     *((r3 + 0x4c)) = r2;
    0x0804a1a0 ldr r3, [r6, 0x1f0]                                                   |     r3 = *((r6 + 0x1f0));
    0x0804a1a4 b 0x80499e8                                                           |     goto label_7;
                                                                                     | label_67:
    0x0804a1a8 stmdaeq r6, {r1, r2, r5, r6, r8}                                      |     __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
    0x0804a1ac stmdaeq r6, {r1, r2, r5, r6, r8}                                      |     __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
    0x0804a1b0 ldrb r2, [ip]                                                         |     r2 = *(ip);
    0x0804a1b4 cmp r2, 0                                                             |     
                                                                                     |     if (r2 == 0) {
    0x0804a1b8 beq 0x804ab9c                                                         |         goto label_77;
                                                                                     |     }
                                                                                     | label_29:
    0x0804a1bc ldr r3, [r4, 0x44]                                                    |     r3 = *((r4 + 0x44));
    0x0804a1c0 ldr r3, [r3, 0x60]                                                    |     r3 = *((r3 + 0x60));
    0x0804a1c4 tst r3, 0x2000                                                        |     
    0x0804a1c8 mov r3, r4                                                            |     r3 = r4;
                                                                                     |     if ((r3 & 0x2000) != 0) {
    0x0804a1cc bne 0x80498fc                                                         |         goto label_8;
                                                                                     |     }
    0x0804a1d0 b 0x804a008                                                           |     goto label_17;
                                                                                     | label_68:
    0x0804a1d4 udf 0x12                                                              |     __asm ("udf 0x12");
                                                                                     | label_52:
    0x0804a1d8 stmdaeq r5, {r8, fp, ip, lr, pc}                                      |     __asm ("stmdaeq r5, {r8, fp, ip, lr, pc}");
    0x0804a1dc stmdaeq r5, {r8, fp, ip, lr, pc}                                      |     __asm ("stmdaeq r5, {r8, fp, ip, lr, pc}");
    0x0804a1e0 mov r0, r6                                                            |     r0 = r6;
    0x0804a1e4 b 0x8049f9c                                                           |     goto label_12;
                                                                                     | label_44:
    0x0804a1e8 mov r0, r6                                                            |     r0 = r6;
    0x0804a1ec stmdaeq r5, {r2, r3, r4, r5, r6, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, fp, ip, lr, pc}");
    0x0804a1f0 stmdaeq r5, {r2, r3, r4, r5, r6, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, fp, ip, lr, pc}");
    0x0804a1f4 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x0804a1f8 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x0804a1fc mov sl, 0                                                             |     sl = 0;
    0x0804a200 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x0804a204 ldr r4, [r5, 0x220]                                                   |     r4 = *((r5 + 0x220));
    0x0804a208 str sl, [r5, 0x220]                                                   |     *((r5 + 0x220)) = sl;
    0x0804a20c b 0x8049de4                                                           |     goto label_18;
                                                                                     | label_47:
    0x0804a210 stmdaeq r6, {r1, r2, r5, r6, r8}                                      |     __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
    0x0804a214 stmdaeq r6, {r1, r2, r5, r6, r8}                                      |     __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
    0x0804a218 ldrb r3, [ip]                                                         |     r3 = *(ip);
    0x0804a21c cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804a220 beq 0x804ac00                                                         |         goto label_78;
                                                                                     |     }
                                                                                     | label_32:
    0x0804a224 mov r3, r4                                                            |     r3 = r4;
    0x0804a228 b 0x80499c0                                                           |     goto label_19;
                                                                                     | label_41:
    0x0804a22c mov r4, r1                                                            |     r4 = r1;
    0x0804a230 mov r1, sl                                                            |     r1 = sl;
    0x0804a234 stmdaeq r8, {r2, r3, r4, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r3, r4, r6, r7, sb, sl, ip, sp, lr}");
    0x0804a238 mov fp, r1                                                            |     
    0x0804a23c strd r2, r3, [sp, 0x80]                                               |     __asm ("strd r2, r3, [var_84h]");
    0x0804a240 b 0x804982c                                                           |     goto label_3;
                                                                                     | label_71:
    0x0804a244 cmp r3, 0x8f                                                          |     
                                                                                     |     if (r3 > 0x8f) {
    0x0804a248 movls r2, 0xca00                                                      |         r2 = 0xca00;
                                                                                     |     }
                                                                                     |     if (r3 <= 0x8f) {
    0x0804a24c movhi r2, 1                                                           |         r2 = 1;
                                                                                     |     }
    0x0804a250 movtls r2, 0x3b9a                                                     |     __asm ("movtls r2, 0x3b9a");
    0x0804a254 str r2, [r6, 0x1f4]                                                   |     *((r6 + 0x1f4)) = r2;
    0x0804a258 add r2, r6, 0x200                                                     |     r2 = r6 + 0x200;
                                                                                     |     if (r3 <= 0x8f) {
    0x0804a25c mvnhi r0, 0x80000000                                                  |         r0 = ~0x80000000;
                                                                                     |     }
                                                                                     |     if (r3 <= 0x8f) {
    0x0804a260 movhi r1, 3                                                           |         r1 = 3;
                                                                                     |     }
                                                                                     |     if (r3 > 0x8f) {
    0x0804a264 mvnls r0, 0x80000000                                                  |         r0 = ~0x80000000;
                                                                                     |     }
                                                                                     |     if (r3 > 0x8f) {
    0x0804a268 movls r1, 0                                                           |         r1 = 0;
                                                                                     |     }
    0x0804a26c cmp r3, 0x80                                                          |     
    0x0804a270 strd r0, r1, [r2]                                                     |     __asm ("strd r0, r1, [r2]");
    0x0804a274 mov r0, 0x80000000                                                    |     r0 = 0x80000000;
    0x0804a278 mvn r1, 0                                                             |     r1 = ~0;
    0x0804a27c strd r0, r1, [r2, -8]                                                 |     __asm ("strd r0, r1, [r2, -8]");
                                                                                     |     if (r3 == 0x80) {
    0x0804a280 beq 0x8049b30                                                         |         goto label_20;
                                                                                     |     }
    0x0804a284 ldr r2, [r6, 0x1f0]                                                   |     r2 = *((r6 + 0x1f0));
    0x0804a288 mov r1, 0x20                                                          |     r1 = 0x20;
    0x0804a28c str r1, [r5, 0x144]                                                   |     *((r5 + 0x144)) = r1;
    0x0804a290 ldr r2, [r2, 0x44]                                                    |     r2 = *((r2 + 0x44));
    0x0804a294 ldr r2, [r2, 0x64]                                                    |     r2 = *((r2 + 0x64));
    0x0804a298 tst r2, 0x40                                                          |     
                                                                                     |     if ((r2 & 0x40) == 0) {
    0x0804a29c beq 0x8049b30                                                         |         goto label_20;
                                                                                     |     }
    0x0804a2a0 ldr r1, [sp, 0x1c]                                                    |     r1 = var_1ch;
    0x0804a2a4 sub r2, r3, 0x80                                                      |     r2 = r3 - 0x80;
    0x0804a2a8 movw r3, 0x15e                                                        |     r3 = 0x15e;
    0x0804a2ac ldrh r3, [r1, r3]                                                     |     r3 = *((r1 + r3));
    0x0804a2b0 cmp r2, r3                                                            |     
                                                                                     |     if (r2 >= r3) {
    0x0804a2b4 movlo r0, r6                                                          |         r0 = r6;
                                                                                     |     }
    0x0804a2b8 stmdaeq r5, {r2, r5, r6, r8, fp, ip, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r5, r6, r8, fp, ip, lr, pc}");
    0x0804a2bc stmdaeq r5, {r2, r5, r6, r8, fp, ip, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r5, r6, r8, fp, ip, lr, pc}");
                                                                                     |     if (r2 <= r3) {
    0x0804a2c0 blo 0x8049f9c                                                         |         goto label_12;
                                                                                     |     }
    0x0804a2c4 cmp r3, 0x20                                                          |     
                                                                                     |     if (r3 < 0x20) {
    0x0804a2c8 movhs r1, r3                                                          |         r1 = r3;
                                                                                     |     }
    0x0804a2cc ldr r3, [sp, 0x1c]                                                    |     r3 = var_1ch;
                                                                                     |     if (r3 >= 0x20) {
    0x0804a2d0 movlo r1, 0x20                                                        |         r1 = 0x20;
                                                                                     |     }
    0x0804a2d4 str r1, [r5, 0x144]                                                   |     *((r5 + 0x144)) = r1;
    0x0804a2d8 add r3, r3, 0x15c                                                     |     r3 += 0x15c;
    0x0804a2dc ldrh r3, [r3]                                                         |     r3 = *(r3);
    0x0804a2e0 cmp r2, r3                                                            |     
                                                                                     |     if (r2 >= r3) {
    0x0804a2e4 movlo r0, r6                                                          |         r0 = r6;
                                                                                     |     }
    0x0804a2e8 stmdaeq r5, {r7, r8, fp, ip, lr, pc}                                  |     __asm ("stmdaeq r5, {r7, r8, fp, ip, lr, pc}");
    0x0804a2ec stmdaeq r5, {r7, r8, fp, ip, lr, pc}                                  |     __asm ("stmdaeq r5, {r7, r8, fp, ip, lr, pc}");
                                                                                     |     if (r2 <= r3) {
    0x0804a2f0 blo 0x8049f9c                                                         |         goto label_12;
                                                                                     |     }
    0x0804a2f4 cmp r3, r1                                                            |     
                                                                                     |     if (r3 <= r1) {
    0x0804a2f8 strhi r3, [r5, 0x144]                                                 |         *((r5 + 0x144)) = r3;
                                                                                     |     }
    0x0804a2fc b 0x8049b30                                                           |     goto label_20;
                                                                                     | label_60:
    0x0804a300 ldr r3, [r6, 0x1f0]                                                   |     r3 = *((r6 + 0x1f0));
    0x0804a304 ldr r3, [r3, 0x44]                                                    |     r3 = *((r3 + 0x44));
    0x0804a308 ldr r2, [r3, 0x60]                                                    |     r2 = *((r3 + 0x60));
    0x0804a30c bics r2, r2, 0x16                                                     |     __asm ("bics r2, r2, 0x16");
                                                                                     |     if (r3 != r1) {
    0x0804a310 bne 0x804a06c                                                         |         goto label_21;
                                                                                     |     }
    0x0804a314 ldr r2, [r3, 0x5c]                                                    |     r2 = *((r3 + 0x5c));
    0x0804a318 tst r2, 4                                                             |     
                                                                                     |     if ((r2 & 4) == 0) {
    0x0804a31c beq 0x804a06c                                                         |         goto label_21;
                                                                                     |     }
    0x0804a320 ldr r2, [r6, 0x34]                                                    |     r2 = *((r6 + 0x34));
    0x0804a324 tst r2, 1                                                             |     
                                                                                     |     if ((r2 & 1) != 0) {
    0x0804a328 bne 0x804a338                                                         |         goto label_79;
                                                                                     |     }
    0x0804a32c ldr r3, [r3, 0x64]                                                    |     r3 = *((r3 + 0x64));
    0x0804a330 bics r3, r3, 7                                                        |     __asm ("bics r3, r3, 7");
                                                                                     |     if ((r2 & 1) != 0) {
    0x0804a334 bne 0x804a06c                                                         |         goto label_21;
                                                                                     |     }
                                                                                     | label_79:
    0x0804a338 mov r0, r6                                                            |     r0 = r6;
    0x0804a33c stmdaeq r5, {r3, r5, r8, sb, fp, ip, lr, pc}                          |     __asm ("stmdaeq r5, {r3, r5, r8, sb, fp, ip, lr, pc}");
    0x0804a340 stmdaeq r5, {r3, r5, r8, sb, fp, ip, lr, pc}                          |     __asm ("stmdaeq r5, {r3, r5, r8, sb, fp, ip, lr, pc}");
    0x0804a344 stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}");
    0x0804a348 stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}");
    0x0804a34c stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x0804a350 b 0x8049c20                                                           |     goto label_22;
                                                                                     | label_56:
    0x0804a354 stmdaeq r6, {r1, r2, r5, r6, r8}                                      |     __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
    0x0804a358 stmdaeq r6, {r1, r2, r5, r6, r8}                                      |     __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
    0x0804a35c ldrb r0, [r1, 3]                                                      |     r0 = *((r1 + 3));
    0x0804a360 cmp r0, 0                                                             |     
                                                                                     |     if (r0 == 0) {
    0x0804a364 beq 0x804cfdc                                                         |         goto label_80;
                                                                                     |     }
                                                                                     | label_36:
    0x0804a368 bic r3, r3, 0x400000                                                  |     r3 = BIT_MASK (r3, 0x400000);
    0x0804a36c str r3, [r2, 0x4c]                                                    |     *((r2 + 0x4c)) = r3;
    0x0804a370 ldr r2, [r6, 0x1f0]                                                   |     r2 = *((r6 + 0x1f0));
    0x0804a374 ldr r3, [r2, 0x50]                                                    |     r3 = *((r2 + 0x50));
    0x0804a378 bic r3, r3, 0x10                                                      |     r3 = BIT_MASK (r3, 0x10);
    0x0804a37c str r3, [r2, 0x50]                                                    |     *((r2 + 0x50)) = r3;
    0x0804a380 ldr r2, [r6, 0x1f0]                                                   |     r2 = *((r6 + 0x1f0));
    0x0804a384 ldr r3, [r2, 0x50]                                                    |     r3 = *((r2 + 0x50));
    0x0804a388 tst r3, 1                                                             |     
    0x0804a38c stmdaeq r5, {r5, r6, r8, sl, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r5, r6, r8, sl, ip, lr, pc}");
    0x0804a390 stmdaeq r5, {r5, r6, r8, sl, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r5, r6, r8, sl, ip, lr, pc}");
                                                                                     |     if ((r3 & 1) != 0) {
    0x0804a394 bne 0x804a098                                                         |         goto label_23;
                                                                                     |     }
    0x0804a398 ldr r3, [r2, 0x44]                                                    |     r3 = *((r2 + 0x44));
    0x0804a39c ldr r3, [r3, 0x60]                                                    |     r3 = *((r3 + 0x60));
    0x0804a3a0 tst r3, 0x10000                                                       |     
                                                                                     |     if ((r3 & 0x10000) != 0) {
    0x0804a3a4 bne 0x804abe0                                                         |         goto label_81;
                                                                                     |     }
                                                                                     | label_31:
    0x0804a3a8 ldr r3, [r2, 0x4c]                                                    |     r3 = *((r2 + 0x4c));
    0x0804a3ac tst r3, 0x8000000                                                     |     
    0x0804a3b0 bicne r3, r3, 0x8000000                                               |     __asm ("bicne r3, r3, 0x8000000");
                                                                                     |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0804a3b4 strne r3, [r2, 0x4c]                                                  |         *((r2 + 0x4c)) = r3;
                                                                                     |     }
                                                                                     |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0804a3b8 ldrne r2, [r6, 0x1f0]                                                 |         r2 = *((r6 + 0x1f0));
                                                                                     |     }
                                                                                     |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0804a3bc ldrne r3, [r2, 0x4c]                                                  |         r3 = *((r2 + 0x4c));
                                                                                     |     }
    0x0804a3c0 b 0x8049b9c                                                           |     goto label_24;
                                                                                     | label_59:
    0x0804a3c4 ldr r2, [r6, 0x1f0]                                                   |     r2 = *((r6 + 0x1f0));
    0x0804a3c8 ldr r3, [r2, 0x50]                                                    |     r3 = *((r2 + 0x50));
    0x0804a3cc orr r3, r3, 4                                                         |     r3 |= 4;
    0x0804a3d0 str r3, [r2, 0x50]                                                    |     *((r2 + 0x50)) = r3;
    0x0804a3d4 ldr r3, [r6, 0x1f0]                                                   |     r3 = *((r6 + 0x1f0));
    0x0804a3d8 ldr r3, [r3, 0x44]                                                    |     r3 = *((r3 + 0x44));
    0x0804a3dc ldr r3, [r3, 0x60]                                                    |     r3 = *((r3 + 0x60));
    0x0804a3e0 ands sl, r3, 0x80                                                     |     sl = r3 & 0x80;
                                                                                     |     if (sl != r3) {
    0x0804a3e4 bne 0x804ac44                                                         |         goto label_82;
                                                                                     |     }
    0x0804a3e8 tst r3, 0x400                                                         |     
                                                                                     |     if ((r3 & 0x400) == 0) {
    0x0804a3ec beq 0x8049c10                                                         |         goto label_25;
                                                                                     |     }
    0x0804a3f0 mov r0, r6                                                            |     r0 = r6;
    0x0804a3f4 stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, lr, pc}");
    0x0804a3f8 stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, lr, pc}");
    0x0804a3fc stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x0804a400 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x0804a404 mvn r4, 0x15                                                          |     r4 = ~0x15;
    0x0804a408 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x0804a40c b 0x8049dd0                                                           |     goto label_4;
                                                                                     | label_75:
    0x0804a410 ldr r3, [sp, 0x34]                                                    |     r3 = var_34h;
    0x0804a414 mov r0, r6                                                            |     r0 = r6;
    0x0804a418 stmdaeq r5, {r2, r3, r4, r7, r8, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r7, r8, fp, ip, lr, pc}");
    0x0804a41c stmdaeq r5, {r2, r3, r4, r7, r8, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r7, r8, fp, ip, lr, pc}");
    0x0804a420 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x0804a424 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x0804a428 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x0804a42c b 0x804a0f8                                                           |     goto label_26;
                                                                                     | label_62:
    0x0804a430 ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804a434 lsr r8, r3, 0x16                                                      |     r8 = r3 >> 0x16;
    0x0804a438 lsl r0, r3, 0xa                                                       |     r0 = r3 << 0xa;
    0x0804a43c str r8, [sp, 0x84]                                                    |     var_84h = r8;
    0x0804a440 orrs r3, r8, 0                                                        |     r3 = r8;
    0x0804a444 str r0, [sp, 0x80]                                                    |     var_80h = r0;
                                                                                     |     if (r3 != r8) {
    0x0804a448 bne 0x804ad40                                                         |         goto label_83;
                                                                                     |     }
    0x0804a44c ldr r1, [sp, 0x30]                                                    |     r1 = var_30h;
    0x0804a450 sub r4, r1, 1                                                         |     r4 = r1 - 1;
    0x0804a454 and r4, r4, r0                                                        |     r4 &= r0;
    0x0804a458 stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr}");
    0x0804a45c mov r3, r8                                                            |     r3 = r8;
    0x0804a460 mov r2, r0                                                            |     r2 = r0;
    0x0804a464 str r0, [sp, 0x80]                                                    |     var_80h = r0;
                                                                                     | label_35:
    0x0804a468 mov sl, 0                                                             |     sl = 0;
    0x0804a46c mov r0, r6                                                            |     r0 = r6;
    0x0804a470 str sl, [sp, 4]                                                       |     var_4h = sl;
    0x0804a474 str sl, [sp]                                                          |     *(sp) = sl;
    0x0804a478 bl 0x8045a74                                                          |     r0 = ext4_sb_bread_gfp ();
    0x0804a47c mov r8, r0                                                            |     r8 = r0;
    0x0804a480 cmn r0, 0x1000                                                        |     
                                                                                     |     if (r0 > 0x1000) {
    0x0804a484 bhi 0x804acc8                                                         |         goto label_84;
                                                                                     |     }
    0x0804a488 ldr r3, [r0, 0x1c]                                                    |     r3 = *((r0 + 0x1c));
    0x0804a48c add r2, r3, r4                                                        |     r2 = r3 + r4;
    0x0804a490 str r2, [r5, 0x44]                                                    |     *((r5 + 0x44)) = r2;
    0x0804a494 str r2, [sp, 0x1c]                                                    |     var_1ch = r2;
    0x0804a498 movw r3, 0xef53                                                       |     r3 = 0xef53;
    0x0804a49c ldrh r2, [r2, 0x38]                                                   |     r2 = var_38h_2;
    0x0804a4a0 cmp r2, r3                                                            |     
                                                                                     |     if (r2 != r3) {
    0x0804a4a4 bne 0x804ac50                                                         |         void (*0x804ac50)() ();
                                                                                     |     }
                                                                                     | label_61:
    0x0804a4b0 ldr r3, [r2, 0x64]                                                    |     r3 = *((r2 + 0x64));
    0x0804a4b4 ldrb sl, [r6, 0xc]                                                    |     sl = *((r6 + 0xc));
    0x0804a4b8 ands r1, r3, 8                                                        |     r1 = r3 & 8;
                                                                                     |     if (r1 != r3) {
    0x0804a4bc streq r1, [sp, 0x38]                                                  |         var_38h = r1;
                                                                                     |     }
                                                                                     |     if (r1 != r3) {
    0x0804a4c0 subeq r3, sl, 9                                                       |         r3 = sl - 9;
                                                                                     |     }
    0x0804a4c4 str r1, [sp, 0x18]                                                    |     var_18h = r1;
                                                                                     |     if (r1 != r3) {
    0x0804a4c8 mvneq r2, 0                                                           |         r2 = ~0;
                                                                                     |     }
                                                                                     |     if (r1 == r3) {
    0x0804a4cc mvnne r0, 0                                                           |         r0 = ~0;
                                                                                     |     }
                                                                                     |     if (r1 != r3) {
    0x0804a4d0 lsreq r3, r2, r3                                                      |         r3 = r2 >> r3;
                                                                                     |     }
    0x0804a4d4 movwne r1, 0xffff                                                     |     __asm ("movwne r1, 0xffff");
    0x0804a4d8 sub r2, sl, 2                                                         |     r2 = sl - 2;
    0x0804a4dc strdne r0, r1, [sp, 0x34]                                             |     __asm ("strdne r0, r1, [var_34h]");
    0x0804a4e0 mov r0, 3                                                             |     r0 = 3;
    0x0804a4e4 mvn r1, 5                                                             |     r1 = ~5;
                                                                                     |     if (r1 != r3) {
    0x0804a4e8 streq r3, [sp, 0x34]                                                  |         var_34h = r3;
                                                                                     |     }
    0x0804a4ec mov r3, 1                                                             |     r3 = 1;
    0x0804a4f0 smlabb fp, r0, sl, r1                                                 |     __asm ("smlabb fp, r0, sl, r1");
    0x0804a4f4 lsl r0, r2, r3                                                        |     r0 = r2 << r3;
    0x0804a4f8 lsl r2, r3, r2                                                        |     r2 = r3 << r2;
    0x0804a4fc str fp, [sp, 0x20]                                                    |     var_20h = fp;
    0x0804a500 lsl ip, r3, r0                                                        |     
    0x0804a504 ldr fp, [sp, 0x34]                                                    |     fp = var_34h;
    0x0804a508 add lr, ip, r2, lsl r3                                                |     lr = ip + (r2 << r3);
    0x0804a50c sub r1, sl, 0x22                                                      |     r1 = sl - 0x22;
    0x0804a510 add lr, lr, 3                                                         |     lr += 3;
    0x0804a514 subs fp, fp, lr                                                       |     
    0x0804a518 str fp, [sp, 0x34]                                                    |     var_34h = fp;
    0x0804a51c ldr fp, [sp, 0x38]                                                    |     fp = var_38h;
    0x0804a520 lsl r1, r3, r1                                                        |     r1 = r3 << r1;
    0x0804a524 sbc lr, fp, lr, asr 31                                                |     __asm ("sbc lr, fp, lr, asr 31");
    0x0804a528 str lr, [sp, 0x38]                                                    |     var_38h = lr;
    0x0804a52c rsb lr, sl, 0x22                                                      |     lr = 0x22 - sl;
    0x0804a530 adds r2, r2, 0xc                                                      |     r2 += 0xc;
    0x0804a534 ldr fp, [sp, 0x20]                                                    |     fp = var_20h;
    0x0804a538 orr r1, r1, r3, lsr lr                                                |     r1 |= (r3 >> lr);
    0x0804a53c sub lr, sl, 0x20                                                      |     lr = sl - 0x20;
    0x0804a540 adc r1, r1, 0                                                         |     __asm ("adc r1, r1, 0");
    0x0804a544 adds r2, ip, r2                                                       |     r2 = ip + r2;
    0x0804a548 sub ip, r0, 0x20                                                      |     
    0x0804a54c rsb r0, r0, 0x20                                                      |     r0 = 0x20 - r0;
    0x0804a550 lsl ip, r3, ip                                                        |     
    0x0804a554 orr ip, ip, r3, lsr r0                                                |     
    0x0804a558 rsb r0, fp, 0x20                                                      |     r0 = 0x20 - fp;
    0x0804a55c adc ip, ip, r1                                                        |     __asm ("adc ip, ip, r1");
    0x0804a560 sub r1, fp, 0x20                                                      |     r1 = fp - 0x20;
    0x0804a564 lsl r1, r3, r1                                                        |     r1 = r3 << r1;
    0x0804a568 orr r1, r1, r3, lsr r0                                                |     r1 |= (r3 >> r0);
    0x0804a56c movw r0, 0xfff                                                        |     r0 = 0xfff;
    0x0804a570 lsl r3, r3, fp                                                        |     r3 <<= fp;
    0x0804a574 adds r3, r3, r2                                                       |     r3 += r2;
    0x0804a578 adc ip, ip, r1                                                        |     __asm ("adc ip, ip, r1");
    0x0804a57c mov r1, 0xf000                                                        |     
    0x0804a580 movt r1, 0xffff                                                       |     r1 = 0x-1000;
    0x0804a584 lsl r2, ip, sl                                                        |     r2 = ip << sl;
    0x0804a588 rsb ip, sl, 0x20                                                      |     
    0x0804a58c orr r2, r2, r3, lsl lr                                                |     r2 |= (r3 << lr);
    0x0804a590 orr r2, r2, r3, lsr ip                                                |     r2 |= (r3 >> ip);
    0x0804a594 lsl r3, r3, sl                                                        |     r3 <<= sl;
    0x0804a598 cmp r1, r3                                                            |     
    0x0804a59c sbcs fp, r0, r2                                                       |     __asm ("sbcs fp, r0, r2");
                                                                                     |     if (r1 >= r3) {
    0x0804a5a0 movlt r3, r1                                                          |         r3 = r1;
                                                                                     |     }
    0x0804a5a4 ldr r1, [sp, 0x38]                                                    |     r1 = var_38h;
                                                                                     |     if (r1 >= r3) {
    0x0804a5a8 movlt r2, r0                                                          |         r2 = r0;
                                                                                     |     }
    0x0804a5ac ldr r0, [sp, 0x34]                                                    |     r0 = var_34h;
    0x0804a5b0 lsl r1, r1, sl                                                        |     r1 <<= sl;
    0x0804a5b4 orr r1, r1, r0, lsl lr                                                |     r1 |= (r0 << lr);
    0x0804a5b8 orr r1, r1, r0, lsr ip                                                |     r1 |= (r0 >> ip);
    0x0804a5bc lsl r0, r0, sl                                                        |     r0 <<= sl;
    0x0804a5c0 cmp r0, r3                                                            |     
    0x0804a5c4 sbcs fp, r1, r2                                                       |     __asm ("sbcs fp, r1, r2");
                                                                                     |     if (r0 >= r3) {
    0x0804a5c8 movlt r2, r1                                                          |         r2 = r1;
                                                                                     |     }
    0x0804a5cc ldr r1, [sp, 0x18]                                                    |     r1 = var_18h;
                                                                                     |     if (r0 >= r3) {
    0x0804a5d0 movlt r3, r0                                                          |         r3 = r0;
                                                                                     |     }
    0x0804a5d4 str r3, [r5, 0x38]                                                    |     *((r5 + 0x38)) = r3;
    0x0804a5d8 cmp r1, 0                                                             |     
    0x0804a5dc str r2, [r5, 0x3c]                                                    |     *((r5 + 0x3c)) = r2;
                                                                                     |     if (r1 != 0) {
    0x0804a5e0 subeq r3, sl, 9                                                       |         r3 = sl - 9;
                                                                                     |     }
                                                                                     |     if (r1 != 0) {
    0x0804a5e4 mvneq r2, 0                                                           |         r2 = ~0;
                                                                                     |     }
                                                                                     |     if (r1 == 0) {
    0x0804a5e8 movne r2, 0xf000                                                      |         r2 = 0xf000;
                                                                                     |     }
                                                                                     |     if (r1 != 0) {
    0x0804a5ec lsreq r2, r2, r3                                                      |         r2 >>= r3;
                                                                                     |     }
    0x0804a5f0 mvn r3, 0                                                             |     r3 = ~0;
    0x0804a5f4 lsl r0, r3, lr                                                        |     r0 = r3 << lr;
    0x0804a5f8 movtne r2, 0xffff                                                     |     __asm ("movtne r2, 0xffff");
                                                                                     |     if (r1 != 0) {
    0x0804a5fc lsleq r1, r2, lr                                                      |         r1 = r2 << lr;
                                                                                     |     }
    0x0804a600 movwne r1, 0xfff                                                      |     __asm ("movwne r1, 0xfff");
                                                                                     |     if (r1 != 0) {
    0x0804a604 orreq r1, r1, r2, lsr ip                                              |         r1 |= (r2 >> ip);
                                                                                     |     }
    0x0804a608 orr r0, r0, r3, lsr ip                                                |     r0 |= (r3 >> ip);
                                                                                     |     if (r1 != 0) {
    0x0804a60c lsleq r2, r2, sl                                                      |         r2 <<= sl;
                                                                                     |     }
    0x0804a610 lsl r3, r3, sl                                                        |     r3 <<= sl;
    0x0804a614 cmp r2, r3                                                            |     
    0x0804a618 sbcs ip, r1, r0                                                       |     __asm ("sbcs ip, r1, r0");
                                                                                     |     if (r2 >= r3) {
    0x0804a61c movlt r3, r2                                                          |         r3 = r2;
                                                                                     |     }
    0x0804a620 str r3, [r6, 0x18]                                                    |     *((r6 + 0x18)) = r3;
    0x0804a624 ldr r3, [sp, 0x1c]                                                    |     r3 = var_1ch;
                                                                                     |     if (r2 >= r3) {
    0x0804a628 movlt r0, r1                                                          |         r0 = r1;
                                                                                     |     }
    0x0804a62c str r0, [r6, 0x1c]                                                    |     *((r6 + 0x1c)) = r0;
    0x0804a630 ldrh r3, [r3, 0xfe]                                                   |     r3 = *((r3 + 0xfe));
    0x0804a634 str r3, [r5]                                                          |     *(r5) = r3;
    0x0804a638 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804a63c ldr r2, [r2, 0x60]                                                    |     r2 = *((r2 + 0x60));
    0x0804a640 tst r2, 0x80                                                          |     
                                                                                     |     if ((r2 & 0x80) != 0) {
    0x0804a644 beq 0x804a670                                                         |         
    0x0804a648 sub r2, r3, 0x40                                                      |         r2 = r3 - 0x40;
    0x0804a64c cmp r2, 0x3c0                                                         |         
                                                                                     |         if (r2 <= 0x3c0) {
    0x0804a650 bhi 0x804a660                                                         |             
    0x0804a654 sub r2, r3, 1                                                         |             r2 = r3 - 1;
    0x0804a658 tst r2, r3                                                            |             
                                                                                     |             if ((r2 & r3) == 0) {
    0x0804a65c beq 0x804a678                                                         |                 goto label_85;
                                                                                     |             }
                                                                                     |         }
    0x0804a660 stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, lr, pc}                      |         __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, lr, pc}");
    0x0804a664 stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, lr, pc}                      |         __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, lr, pc}");
    0x0804a668 mov r0, r6                                                            |         r0 = r6;
    0x0804a66c b 0x8049f9c                                                           |         goto label_12;
                                                                                     |     }
    0x0804a670 mov r3, 0x20                                                          |     r3 = 0x20;
    0x0804a674 str r3, [r5]                                                          |     *(r5) = r3;
                                                                                     | label_85:
    0x0804a678 ldr r2, [sp, 0x1c]                                                    |     r2 = var_1ch;
    0x0804a67c ldr fp, [sp, 0x30]                                                    |     fp = var_30h;
    0x0804a680 ldr r3, [r2, 0x20]                                                    |     r3 = *((r2 + 0x20));
    0x0804a684 mov r0, fp                                                            |     r0 = fp;
    0x0804a688 str r3, [r5, 8]                                                       |     *((r5 + 8)) = r3;
    0x0804a68c ldr sl, [r2, 0x28]                                                    |     sl = *((r2 + 0x28));
    0x0804a690 str sl, [r5, 0x10]                                                    |     *((r5 + 0x10)) = sl;
    0x0804a694 ldr r1, [r4, 0x84]                                                    |     r1 = *((r4 + 0x84));
    0x0804a698 stmdaeq r8, {r2, r3, r4, r5, r6, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r3, r4, r5, r6, r8, sb, sl, ip, sp, lr}");
    0x0804a69c cmp r0, 0                                                             |     
    0x0804a6a0 str r0, [r5, 4]                                                       |     *((r5 + 4)) = r0;
                                                                                     |     if (r0 == 0) {
    0x0804a6a4 beq 0x8049dbc                                                         |         goto label_27;
                                                                                     |     }
    0x0804a6a8 cmp sl, r0                                                            |     
                                                                                     |     if (sl <= r0) {
    0x0804a6ac blo 0x804ac70                                                         |         goto label_86;
                                                                                     |     }
    0x0804a6b0 lsl r3, fp, 3                                                         |     r3 = fp << 3;
    0x0804a6b4 mov fp, r3                                                            |     
    0x0804a6b8 cmp sl, r3                                                            |     
                                                                                     |     if (sl > r3) {
    0x0804a6bc bhi 0x804ac70                                                         |         goto label_86;
                                                                                     |     }
    0x0804a6c0 mov r1, r0                                                            |     r1 = r0;
    0x0804a6c4 mov r0, sl                                                            |     r0 = sl;
    0x0804a6c8 stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr}");
    0x0804a6cc str r0, [r5, 0x14]                                                    |     *((r5 + 0x14)) = r0;
    0x0804a6d0 ldr r0, [sp, 0x30]                                                    |     r0 = var_30h;
    0x0804a6d4 ldr r1, [r4]                                                          |     r1 = *(r4);
    0x0804a6d8 stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr}");
    0x0804a6dc ldr r3, [r6, 0x10]                                                    |     r3 = *((r6 + 0x10));
    0x0804a6e0 ldr r2, [sp, 0x1c]                                                    |     r2 = var_1ch;
    0x0804a6e4 cmp r3, 3                                                             |     
    0x0804a6e8 str r0, [r5, 0x1c]                                                    |     *((r5 + 0x1c)) = r0;
    0x0804a6ec str r8, [r5, 0x40]                                                    |     *((r5 + 0x40)) = r8;
                                                                                     |     if (r3 <= 3) {
    0x0804a6f0 lsrhi r3, r3, 2                                                       |         r3 >>= 2;
                                                                                     |     }
    0x0804a6f4 clzhi r3, r3                                                          |     __asm ("clzhi r3, r3");
                                                                                     |     if (r3 > 3) {
    0x0804a6f8 movls r3, 0                                                           |         r3 = 0;
                                                                                     |     }
    0x0804a6fc ldrh r2, [r2, 0x3a]                                                   |     r2 = *((r2 + 0x3a));
    0x0804a700 rsbhi r3, r3, 0x20                                                    |     __asm ("rsbhi r3, r3, 0x20");
    0x0804a704 strh r2, [r5, 0x78]                                                   |     *((r5 + 0x78)) = r2;
    0x0804a708 sub r3, r3, 1                                                         |     r3--;
    0x0804a70c str r3, [r5, 0x7c]                                                    |     *((r5 + 0x7c)) = r3;
    0x0804a710 ldr r2, [sp, 0x1c]                                                    |     r2 = var_1ch;
    0x0804a714 ldr r3, [r4, 0x1c]                                                    |     r3 = *((r4 + 0x1c));
    0x0804a718 cmp r3, 0                                                             |     
    0x0804a71c clzne r3, r3                                                          |     __asm ("clzne r3, r3");
    0x0804a720 rsbne r3, r3, 0x20                                                    |     __asm ("rsbne r3, r3, 0x20");
    0x0804a724 sub r3, r3, 1                                                         |     r3--;
    0x0804a728 str r3, [r5, 0x80]                                                    |     *((r5 + 0x80)) = r3;
    0x0804a72c ldr r3, [r2, 0xec]                                                    |     r3 = *((r2 + 0xec));
    0x0804a730 str r3, [r5, 0x94]                                                    |     *((r5 + 0x94)) = r3;
    0x0804a734 ldr r3, [r2, 0xf0]                                                    |     r3 = *((r2 + 0xf0));
    0x0804a738 str r3, [r5, 0x98]                                                    |     *((r5 + 0x98)) = r3;
    0x0804a73c ldr r3, [r2, 0xf4]                                                    |     r3 = *((r2 + 0xf4));
    0x0804a740 str r3, [r5, 0x9c]                                                    |     *((r5 + 0x9c)) = r3;
    0x0804a744 ldr r3, [r2, 0xf8]                                                    |     r3 = *((r2 + 0xf8));
    0x0804a748 str r3, [r5, 0xa0]                                                    |     *((r5 + 0xa0)) = r3;
    0x0804a74c ldrb r3, [r2, 0xfc]                                                   |     r3 = *((r2 + 0xfc));
    0x0804a750 str r3, [r5, 0xa4]                                                    |     *((r5 + 0xa4)) = r3;
    0x0804a754 ldr r3, [r4, 0x44]                                                    |     r3 = *((r4 + 0x44));
    0x0804a758 ldr r3, [r3, 0x5c]                                                    |     r3 = *((r3 + 0x5c));
    0x0804a75c tst r3, 0x20                                                          |     
                                                                                     |     if ((r3 & 0x20) == 0) {
    0x0804a760 beq 0x804a798                                                         |         goto label_87;
                                                                                     |     }
    0x0804a764 ldr r3, [r2, 0x160]                                                   |     r3 = *((r2 + 0x160));
    0x0804a768 tst r3, 2                                                             |     
                                                                                     |     if ((r3 & 2) != 0) {
    0x0804a76c bne 0x804a790                                                         |         void (*0x804a790)() ();
                                                                                     |     }
                                                                                     | label_87:
    0x0804a798 ldr r3, [r4, 0x44]                                                    |     r3 = *((r4 + 0x44));
    0x0804a79c mov r1, 0x400                                                         |     r1 = 0x400;
    0x0804a7a0 ldr r2, [r3, 0x64]                                                    |     r2 = *((r3 + 0x64));
    0x0804a7a4 ldr r3, [sp, 0x1c]                                                    |     r3 = var_1ch;
    0x0804a7a8 ands r2, r2, 0x200                                                    |     r2 &= 0x200;
    0x0804a7ac ldr r3, [r3, 0x1c]                                                    |     r3 = *((r3 + 0x1c));
    0x0804a7b0 lsl sl, r1, r3                                                        |     sl = r1 << r3;
                                                                                     |     if (r2 == r2) {
    0x0804a7b4 beq 0x804ac84                                                         |         void (*0x804ac84)() ();
                                                                                     |     }
                                                                                     | label_77:
    0x0804ab9c mov r2, 9                                                             |     r2 = 9;
    0x0804aba0 movw r1, 0xc34                                                        |     r1 = 0xc34;
    0x0804aba4 stmdaeq r5, {r6, r8, sb, sl, lr, pc}                                  |     __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
    0x0804aba8 stmdaeq r5, {r6, r8, sb, sl, lr, pc}                                  |     __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
    0x0804abac mov lr, 1                                                             |     lr = 1;
    0x0804abb0 strb lr, [ip]                                                         |     
    0x0804abb4 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}                              |     __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
    0x0804abb8 ldr r4, [r6, 0x1f0]                                                   |     r4 = *((r6 + 0x1f0));
    0x0804abbc mov r3, r4                                                            |     r3 = r4;
    0x0804abc0 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804abc4 ldr r1, [r2, 0x64]                                                    |     r1 = *((r2 + 0x64));
    0x0804abc8 tst r1, 0x400                                                         |     
                                                                                     |     if ((r1 & 0x400) == 0) {
    0x0804abcc beq 0x80498f0                                                         |         goto label_28;
                                                                                     |     }
    0x0804abd0 ldr r3, [r4, 0x220]                                                   |     r3 = *((r4 + 0x220));
    0x0804abd4 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804abd8 beq 0x804a1bc                                                         |         goto label_29;
                                                                                     |     }
    0x0804abdc b 0x8049e88                                                           |     goto label_30;
                                                                                     | label_81:
    0x0804abe0 mov r0, r6                                                            |     r0 = r6;
    0x0804abe4 stmdaeq r5, {r3, r6, sb, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r6, sb, fp, ip, lr, pc}");
    0x0804abe8 stmdaeq r5, {r3, r6, sb, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r6, sb, fp, ip, lr, pc}");
    0x0804abec stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x0804abf0 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x0804abf4 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x0804abf8 ldr r2, [r6, 0x1f0]                                                   |     r2 = *((r6 + 0x1f0));
    0x0804abfc b 0x804a3a8                                                           |     goto label_31;
                                                                                     | label_78:
    0x0804ac00 mov r2, 9                                                             |     r2 = 9;
    0x0804ac04 movw r1, 0xc34                                                        |     r1 = 0xc34;
    0x0804ac08 stmdaeq r5, {r6, r8, sb, sl, lr, pc}                                  |     __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
    0x0804ac0c stmdaeq r5, {r6, r8, sb, sl, lr, pc}                                  |     __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
    0x0804ac10 mov lr, 1                                                             |     lr = 1;
    0x0804ac14 strb lr, [ip]                                                         |     
    0x0804ac18 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}                              |     __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
    0x0804ac1c ldr r4, [r6, 0x1f0]                                                   |     r4 = *((r6 + 0x1f0));
    0x0804ac20 mov r3, r4                                                            |     r3 = r4;
    0x0804ac24 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804ac28 ldr r2, [r2, 0x64]                                                    |     r2 = *((r2 + 0x64));
    0x0804ac2c tst r2, 0x400                                                         |     
                                                                                     |     if ((r2 & 0x400) == 0) {
    0x0804ac30 beq 0x80499c0                                                         |         goto label_19;
                                                                                     |     }
    0x0804ac34 ldr r3, [r4, 0x220]                                                   |     r3 = *((r4 + 0x220));
    0x0804ac38 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804ac3c beq 0x804a224                                                         |         goto label_32;
                                                                                     |     }
    0x0804ac40 b 0x80499b0                                                           |     goto label_33;
                                                                                     | label_82:
    0x0804ac44 stmdaeq r5, {r4, r6, r7, sb, fp, ip, lr, pc}                          |     __asm ("stmdaeq r5, {r4, r6, r7, sb, fp, ip, lr, pc}");
    0x0804ac48 stmdaeq r5, {r4, r6, r7, sb, fp, ip, lr, pc}                          |     __asm ("stmdaeq r5, {r4, r6, r7, sb, fp, ip, lr, pc}");
    0x0804ac4c b 0x804a098                                                           |     goto label_23;
                                                                                     | label_86:
    0x0804ac70 stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, lr, pc}");
    0x0804ac74 stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, lr, pc}");
    0x0804ac78 mov r3, sl                                                            |     r3 = sl;
    0x0804ac7c mov r0, r6                                                            |     r0 = r6;
    0x0804ac80 b 0x8049f9c                                                           |     goto label_12;
                                                                                     | label_84:
    0x0804acc8 mov r4, r0                                                            |     r4 = r0;
    0x0804accc stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, sb, fp, ip, lr, pc}          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, sb, fp, ip, lr, pc}");
    0x0804acd0 stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, sb, fp, ip, lr, pc}          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, sb, fp, ip, lr, pc}");
    0x0804acd4 mov r0, r6                                                            |     r0 = r6;
    0x0804acd8 stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x0804acdc stmdaeq r5, {r3, r4, fp, lr, pc}                                      |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x0804ace0 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}                  |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x0804ace4 b 0x8049cdc                                                           |     goto label_34;
                                                                                     | label_83:
    0x0804ad40 ldr r1, [sp, 0x30]                                                    |     r1 = var_30h;
    0x0804ad44 add r0, sp, 0x80                                                      |     r0 += var_80h;
    0x0804ad48 bl 0x8043dc0                                                          |     r0 = div64_32 ();
    0x0804ad4c mov r4, r0                                                            |     r4 = r0;
    0x0804ad50 ldrd r2, r3, [sp, 0x80]                                               |     __asm ("ldrd r2, r3, [var_84h]");
    0x0804ad54 b 0x804a468                                                           |     goto label_35;
                                                                                     | label_80:
    0x0804cfdc stmdaeq r5, {r3, r6, r7, r8, fp, ip, lr, pc}                          |     __asm ("stmdaeq r5, {r3, r6, r7, r8, fp, ip, lr, pc}");
    0x0804cfe0 stmdaeq r5, {r3, r6, r7, r8, fp, ip, lr, pc}                          |     __asm ("stmdaeq r5, {r3, r6, r7, r8, fp, ip, lr, pc}");
    0x0804cfe4 mov r3, 1                                                             |     r3 = 1;
    0x0804cfe8 strb r3, [r1, 3]                                                      |     *((r1 + 3)) = r3;
    0x0804cfec stmdaeq r8, {r6, r8, sb, sl, ip, sp, lr}                              |     __asm ("stmdaeq r8, {r6, r8, sb, sl, ip, sp, lr}");
    0x0804cff0 ldr r2, [r6, 0x1f0]                                                   |     r2 = *((r6 + 0x1f0));
    0x0804cff4 ldr r3, [r2, 0x4c]                                                    |     r3 = *((r2 + 0x4c));
    0x0804cff8 b 0x804a368                                                           |     goto label_36;
                                                                                     | label_65:
    0x0804cffc mov r1, r4                                                            |     r1 = r4;
    0x0804d000 stmdaeq r5, {r2, r4, r7, r8, sb, sl, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r7, r8, sb, sl, ip, lr, pc}");
    0x0804d004 stmdaeq r5, {r2, r4, r7, r8, sb, sl, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r7, r8, sb, sl, ip, lr, pc}");
    0x0804d008 stmdaeq r8, {r6, r8, sb, sl, ip, sp, lr}                              |     __asm ("stmdaeq r8, {r6, r8, sb, sl, ip, sp, lr}");
    0x0804d00c b 0x8049764                                                           |     goto label_0;
                                                                                     | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x80346bc */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.ext4_ind_migrate ()                                          | void ext4_ind_migrate (int32_t arg1) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     r0 = arg1;
    0x080346bc push {r4, r5, r6, r7, r8, sb, sl, lr}                         |     
    0x080346c0 ldr r3, [r0, 0x14]                                            |     r3 = *((r0 + 0x14));
    0x080346c4 sub sp, sp, 8                                                 |     
    0x080346c8 ldr r5, [r3, 0x1f0]                                           |     r5 = *((r3 + 0x1f0));
    0x080346cc ldr sb, [r5, 0x44]                                            |     sb = *((r5 + 0x44));
    0x080346d0 ldr r3, [sb, 0x60]                                            |     r3 = *((sb + 0x60));
    0x080346d4 tst r3, 0x40                                                  |     
                                                                             |     if ((r3 & 0x40) == 0) {
    0x080346d8 beq 0x8034880                                                 |         goto label_5;
                                                                             |     }
    0x080346dc ldr r3, [r0, -0x6c]                                           |     r3 = *((r0 - 0x6c));
    0x080346e0 mov r4, r0                                                    |     r4 = r0;
    0x080346e4 tst r3, 0x80000                                               |     
                                                                             |     if ((r3 & 0x80000) == 0) {
    0x080346e8 beq 0x8034880                                                 |         goto label_5;
                                                                             |     }
    0x080346ec ldr r6, [sb, 0x64]                                            |     r6 = *((sb + 0x64));
    0x080346f0 ands r6, r6, 0x200                                            |     r6 &= 0x200;
                                                                             |     if (r6 != r6) {
    0x080346f4 bne 0x8034888                                                 |         goto label_6;
                                                                             |     }
    0x080346f8 ldr r3, [r5, 0x4c]                                            |     r3 = *((r5 + 0x4c));
    0x080346fc tst r3, 0x8000000                                             |     
                                                                             |     if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x08034700 bne 0x803486c                                                 |         goto label_7;
                                                                             |     }
                                                                             | label_2:
    0x08034704 add r5, r5, 0x2e8                                             |     r5 += 0x2e8;
    0x08034708 mov r0, r5                                                    |     r0 = r5;
    0x0803470c stmdaeq r8, {r3, r4, r6, r7, r8, fp, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r4, r6, r7, r8, fp, ip, sp, lr}");
    0x08034710 ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08034714 mov r1, 0                                                     |     r1 = 0;
    0x08034718 mov r3, 1                                                     |     r3 = 1;
    0x0803471c ldr r2, [r0, 0x1f0]                                           |     r2 = *((r0 + 0x1f0));
    0x08034720 ldr r2, [r2, 0x2c]                                            |     r2 = *((r2 + 0x2c));
    0x08034724 str r1, [sp]                                                  |     *(sp) = r1;
    0x08034728 movw r1, 0x271                                                |     r1 = 0x271;
    0x0803472c lsl r2, r2, 3                                                 |     r2 <<= 3;
    0x08034730 str r2, [sp, 4]                                               |     var_4h = r2;
    0x08034734 mov r2, 8                                                     |     r2 = 8;
    0x08034738 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
    0x0803473c cmn r0, 0x1000                                                |     
    0x08034740 mov r8, r0                                                    |     r8 = r0;
                                                                             |     if (r0 <= 0x1000) {
    0x08034744 movhi r7, r0                                                  |         r7 = r0;
                                                                             |     }
                                                                             |     if (r0 > 0x1000) {
    0x08034748 bhi 0x8034838                                                 |         goto label_8;
                                                                             |     }
    0x0803474c sub sl, r4, 0x20                                              |     sl = r4 - 0x20;
    0x08034750 mov r0, sl                                                    |     r0 = sl;
    0x08034754 stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x08034758 mov r0, r4                                                    |     r0 = r4;
    0x0803475c stmdaeq r0, {r5, r6, r7, sl, fp, ip, lr}                      |     __asm ("stmdaeq r0, {r5, r6, r7, sl, fp, ip, lr}");
    0x08034760 subs r7, r0, 0                                                |     r7 = r0 - 0;
                                                                             |     if (r7 != r0) {
    0x08034764 bne 0x8034820                                                 |         goto label_1;
                                                                             |     }
    0x08034768 ldr r3, [sb, 0x60]                                            |     r3 = *((sb + 0x60));
    0x0803476c tst r3, 0x80                                                  |     
                                                                             |     if ((r3 & 0x80) != 0) {
    0x08034770 bne 0x803484c                                                 |         goto label_9;
                                                                             |     }
                                                                             | label_0:
    0x08034774 ldrh r3, [r4, -0xba]                                          |     r3 = *((r4 - 0xba));
    0x08034778 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x0803477c bne 0x8034864                                                 |         goto label_10;
                                                                             |     }
    0x08034780 ldrh r2, [r4, -0xbe]                                          |     r2 = *((r4 - 0xbe));
    0x08034784 cmp r2, 1                                                     |     
                                                                             |     if (r2 > 1) {
    0x08034788 bhi 0x8034864                                                 |         goto label_10;
                                                                             |     }
    0x0803478c cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08034790 beq 0x8034874                                                 |         goto label_11;
                                                                             |     }
    0x08034794 ldr r6, [r4, -0xb4]                                           |     r6 = *((r4 - 0xb4));
    0x08034798 ldrh r3, [r4, -0xb0]                                          |     r3 = *((r4 - 0xb0));
    0x0803479c sub r2, r6, 1                                                 |     r2 = r6 - 1;
    0x080347a0 add sb, r2, r3                                                |     sb = r2 + r3;
    0x080347a4 cmp sb, 0xb                                                   |     
                                                                             |     if (sb > 0xb) {
    0x080347a8 bhi 0x8034864                                                 |         goto label_10;
                                                                             |     }
    0x080347ac ldr r7, [r4, -0xac]                                           |     r7 = *((r4 - 0xac));
                                                                             | label_3:
    0x080347b0 mrs r2, apsr                                                  |     r2 = apsr;
    0x080347b4 cpsid i                                                       |     __asm ("cpsid i");
    0x080347b8 ldr r3, [r4, -0x6c]                                           |     r3 = *((r4 - 0x6c));
    0x080347bc bic r3, r3, 0x80000                                           |     r3 = BIT_MASK (r3, 0x80000);
    0x080347c0 str r3, [r4, -0x6c]                                           |     *((r4 - 0x6c)) = r3;
    0x080347c4 msr cpsr_c, r2                                                |     cpsr_c = r2;
    0x080347c8 mov r2, 0x3c                                                  |     r2 = 0x3c;
    0x080347cc sub r0, r4, 0xc0                                              |     r0 = r4 - 0xc0;
    0x080347d0 mov r1, 0                                                     |     r1 = 0;
    0x080347d4 stmdaeq r8, {r3, r5, r6, r7, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r5, r6, r7, sb, sl, ip, sp, lr}");
    0x080347d8 cmp r6, sb                                                    |     
                                                                             |     if (r6 > sb) {
    0x080347dc bhi 0x8034808                                                 |         goto label_12;
                                                                             |     }
    0x080347e0 add r2, sb, 1                                                 |     r2 = sb + 1;
    0x080347e4 mov r3, r7                                                    |     r3 = r7;
    0x080347e8 add r2, r2, r7                                                |     r2 += r7;
    0x080347ec sub r2, r2, r6                                                |     r2 -= r6;
    0x080347f0 add r6, r4, r6, lsl 2                                         |     r6 = r4 + (r6 << 2);
    0x080347f4 sub r6, r6, 0xc4                                              |     r6 -= 0xc4;
                                                                             |     do {
    0x080347f8 str r3, [r6, 4]!                                              |         *((r6 += 4)) = r3;
    0x080347fc add r3, r3, 1                                                 |         r3++;
    0x08034800 cmp r3, r2                                                    |         
    0x08034804 bne 0x80347f8                                                 |         
                                                                             |     } while (r3 != r2);
                                                                             | label_12:
    0x08034808 ldr r2, [pc, 0x80]                                            |     r2 = *(0x803488c);
    0x0803480c mov r1, r4                                                    |     r1 = r4;
    0x08034810 mov r0, r8                                                    |     r0 = r8;
    0x08034814 mov r3, 0x294                                                 |     r3 = 0x294;
    0x08034818 stmdaeq r2, {r3, r5, r6, r7, r8, sp}                          |     __asm ("stmdaeq r2, {r3, r5, r6, r7, r8, sp}");
    0x0803481c mov r7, r0                                                    |     r7 = r0;
                                                                             | label_1:
    0x08034820 ldr r0, [pc, 0x68]                                            |     r0 = *(0x803488c);
    0x08034824 mov r2, r8                                                    |     r2 = r8;
    0x08034828 mov r1, 0x298                                                 |     r1 = 0x298;
    0x0803482c stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x08034830 mov r0, sl                                                    |     r0 = sl;
    0x08034834 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
                                                                             | label_8:
    0x08034838 mov r0, r5                                                    |     r0 = r5;
    0x0803483c stmdaeq r8, {r2, r3, r4, r6, r7, r8, fp, ip, sp, lr}          |     __asm ("stmdaeq r8, {r2, r3, r4, r6, r7, r8, fp, ip, sp, lr}");
                                                                             | label_4:
    0x08034840 mov r0, r7                                                    |     r0 = r7;
    0x08034844 add sp, sp, 8                                                 |     
    0x08034848 pop {r4, r5, r6, r7, r8, sb, sl, pc}                          |     
                                                                             | label_9:
    0x0803484c ldr r2, [sb, 4]                                               |     r2 = *((sb + 4));
    0x08034850 mvn r1, 0                                                     |     r1 = ~0;
    0x08034854 ldr r3, [sb, 0x150]                                           |     r3 = *((sb + 0x150));
    0x08034858 cmp r1, r2                                                    |     
    0x0803485c sbcs r3, r7, r3                                               |     __asm ("sbcs r3, r7, r3");
                                                                             |     if (r1 >= r2) {
    0x08034860 bhs 0x8034774                                                 |         goto label_0;
                                                                             |     }
                                                                             | label_10:
    0x08034864 mvn r7, 0x5e                                                  |     r7 = ~0x5e;
    0x08034868 b 0x8034820                                                   |     goto label_1;
                                                                             | label_7:
    0x0803486c stmdaeq r1, {r2, r4, sb, sl, fp, ip, sp, lr, pc}              |     __asm ("stmdaeq r1, {r2, r4, sb, sl, fp, ip, sp, lr, pc}");
    0x08034870 b 0x8034704                                                   |     goto label_2;
                                                                             | label_11:
    0x08034874 mov sb, r2                                                    |     sb = r2;
    0x08034878 mov r7, r2                                                    |     r7 = r2;
    0x0803487c b 0x80347b0                                                   |     goto label_3;
                                                                             | label_5:
    0x08034880 mvn r7, 0x15                                                  |     r7 = ~0x15;
    0x08034884 b 0x8034840                                                   |     goto label_4;
                                                                             | label_6:
    0x08034888 mvn r7, 0x5e                                                  |     r7 = ~0x5e;
    0x0803488c b 0x8034840                                                   |     goto label_4;
                                                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x800375c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.ext4_inode_journal_mode ()       | uint32_t ext4_inode_journal_mode (int32_t arg1) {
                                                 |     r0 = arg1;
    0x0800375c ldr r3, [r0, 0x14]                |     r3 = *((r0 + 0x14));
    0x08003760 ldr r2, [r3, 0x1f0]               |     r2 = *((r3 + 0x1f0));
    0x08003764 ldr r3, [r2, 0x118]               |     r3 = *((r2 + 0x118));
    0x08003768 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x0800376c beq 0x80037c8                     |         
    0x08003770 ldrh r3, [r0]                     |         r3 = *(r0);
    0x08003774 and r3, r3, 0xf000                |         r3 &= 0xf000;
    0x08003778 cmp r3, 0x8000                    |         
                                                 |         if (r3 != 0x8000) {
    0x0800377c beq 0x8003788                     |             
    0x08003780 mov r0, 1                         |             r0 = 1;
    0x08003784 bx lr                             |             return r0;
                                                 |         }
    0x08003788 ldr r3, [r0, -0x6c]               |         r3 = *((r0 - 0x6c));
    0x0800378c tst r3, 0x200000                  |         
                                                 |         if ((r3 & 0x200000) != 0) {
    0x08003790 bne 0x80037d0                     |             goto label_0;
                                                 |         }
    0x08003794 ldr r2, [r2, 0x4c]                |         r2 = *((r2 + 0x4c));
    0x08003798 and r3, r2, 0xc00                 |         r3 = r2 & 0xc00;
    0x0800379c cmp r3, 0x400                     |         
                                                 |         if (r3 == 0x400) {
    0x080037a0 beq 0x80037d0                     |             goto label_0;
                                                 |         }
    0x080037a4 ldr r1, [r0, -0x6c]               |         r1 = *((r0 - 0x6c));
    0x080037a8 tst r1, 0x4000                    |         
                                                 |         if ((r1 & 0x4000) != 0) {
    0x080037ac beq 0x80037b8                     |             
    0x080037b0 tst r2, 0x8000000                 |             
                                                 |             if ((r2 & loc.imp.fs_overflowgid) == 0) {
    0x080037b4 beq 0x80037d0                     |                 goto label_0;
                                                 |             }
                                                 |         }
    0x080037b8 cmp r3, 0x800                     |         
                                                 |         if (r3 == 0x800) {
    0x080037bc beq 0x80037e4                     |             goto label_1;
                                                 |         }
    0x080037c0 cmp r3, 0xc00                     |         
                                                 |         if (r3 != 0xc00) {
    0x080037c4 bne 0x80037ec                     |             goto label_2;
                                                 |         }
                                                 |     }
    0x080037c8 mov r0, 4                         |     r0 = 4;
    0x080037cc bx lr                             |     return r0;
                                                 | label_0:
    0x080037d0 ldr r3, [r0, 0xc]                 |     r3 = *((r0 + 0xc));
    0x080037d4 tst r3, 0x4000                    |     
                                                 |     if ((r3 & 0x4000) != 0) {
    0x080037d8 moveq r0, 1                       |         r0 = 1;
                                                 |     }
                                                 |     if ((r3 & 0x4000) == 0) {
    0x080037dc movne r0, 2                       |         r0 = 2;
                                                 |     }
    0x080037e0 bx lr                             |     return r0;
                                                 | label_1:
    0x080037e4 mov r0, 2                         |     r0 = 2;
    0x080037e8 bx lr                             |     return r0;
                                                 | label_2:
    0x080037ec udf 0x12                          |     __asm ("udf 0x12");
                                                 | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x801e600 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.ext4_map_blocks ()                                               | void ext4_map_blocks (int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_bp_0h;
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_8h;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_18h;
                                                                                 |     int32_t var_24h;
                                                                                 |     int32_t var_28h;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_34h;
                                                                                 |     int32_t var_3ch;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x0801e600 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x0801e604 mov r4, r2                                                        |     r4 = r2;
    0x0801e608 mov r7, r3                                                        |     r7 = r3;
    0x0801e60c mov r2, 0                                                         |     r2 = 0;
    0x0801e610 mov r6, r1                                                        |     r6 = r1;
    0x0801e614 ldr r3, [r4, 0xc]                                                 |     r3 = *((r4 + 0xc));
    0x0801e618 sub sp, sp, 0x3c                                                  |     
    0x0801e61c ldr r1, [r4, 8]                                                   |     r1 = *((r4 + 8));
    0x0801e620 mov r8, r0                                                        |     r8 = r0;
    0x0801e624 cmp r3, r2                                                        |     
    0x0801e628 str r2, [r4, 0x10]                                                |     *((r4 + 0x10)) = r2;
                                                                                 |     if (r3 >= r2) {
    0x0801e62c mvnlt r3, 0x80000000                                              |         r3 = ~0x80000000;
                                                                                 |     }
                                                                                 |     if (r3 >= r2) {
    0x0801e630 strlt r3, [r4, 0xc]                                               |         *((r4 + 0xc)) = r3;
                                                                                 |     }
    0x0801e634 cmn r1, 1                                                         |     
                                                                                 |     if (r1 == 1) {
    0x0801e638 beq 0x801ea8c                                                     |         goto label_20;
                                                                                 |     }
    0x0801e63c ldr r3, [r6, 0x14]                                                |     r3 = *((r6 + 0x14));
    0x0801e640 ldr r3, [r3, 0x1f0]                                               |     r3 = *((r3 + 0x1f0));
    0x0801e644 ldrh r2, [r3, 0x78]                                               |     r2 = *((r3 + 0x78));
    0x0801e648 ands r2, r2, 0x20                                                 |     r2 &= 0x20;
                                                                                 |     if (r2 == r2) {
    0x0801e64c bne 0x801e6c0                                                     |         
    0x0801e650 add r3, sp, 0x18                                                  |         r3 += var_18h;
    0x0801e654 mov r0, r6                                                        |         r0 = r6;
    0x0801e658 stmdaeq r0, {r2, r4, r7, r8, sl, ip, sp, lr, pc}                  |         __asm ("stmdaeq r0, {r2, r4, r7, r8, sl, ip, sp, lr, pc}");
    0x0801e65c cmp r0, 0                                                         |         
                                                                                 |         if (r0 == 0) {
    0x0801e660 beq 0x801e6c0                                                     |             goto label_21;
                                                                                 |         }
    0x0801e664 ldrd r2, r3, [sp, 0x30]                                           |         __asm ("ldrd r2, r3, [var_34h]");
    0x0801e668 tst r3, 0x8000000                                                 |         
    0x0801e66c lsr r1, r3, 0x1b                                                  |         r1 = r3 >> 0x1b;
                                                                                 |         if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x0801e670 bne 0x801ea04                                                     |             goto label_22;
                                                                                 |         }
    0x0801e674 tst r1, 2                                                         |         
                                                                                 |         if ((r1 & 2) != 0) {
    0x0801e678 bne 0x801eaac                                                     |             goto label_23;
                                                                                 |         }
    0x0801e67c tst r1, 0xc                                                       |         
                                                                                 |         if ((r1 & 0xc) == 0) {
    0x0801e680 beq 0x801ebe4                                                     |             goto label_24;
                                                                                 |         }
    0x0801e684 ldrd r2, r3, [sp, 0x24]                                           |         __asm ("ldrd r2, r3, [var_24h]");
    0x0801e688 add r3, r3, r2                                                    |         r3 += r2;
    0x0801e68c ldr r2, [r4, 8]                                                   |         r2 = *((r4 + 8));
    0x0801e690 sub r3, r3, r2                                                    |         r3 -= r2;
    0x0801e694 ldr r2, [r4, 0xc]                                                 |         r2 = *((r4 + 0xc));
    0x0801e698 cmp r2, r3                                                        |         
                                                                                 |         if (r2 < r3) {
    0x0801e69c movhs r2, r3                                                      |             r2 = r3;
                                                                                 |         }
    0x0801e6a0 mov r3, 0                                                         |         r3 = 0;
    0x0801e6a4 str r2, [r4, 0xc]                                                 |         *((r4 + 0xc)) = r2;
    0x0801e6a8 ands r5, r7, 1                                                    |         r5 = r7 & 1;
    0x0801e6ac mov r2, 0                                                         |         r2 = 0;
    0x0801e6b0 strd r2, r3, [r4]                                                 |         __asm ("strd r2, r3, [r4]");
                                                                                 |         if (r5 == r7) {
    0x0801e6b4 beq 0x801e90c                                                     |             goto label_7;
                                                                                 |         }
                                                                                 | label_0:
    0x0801e6b8 ldr r3, [r4, 0x10]                                                |         r3 = *((r4 + 0x10));
    0x0801e6bc b 0x801e75c                                                       |         goto label_8;
                                                                                 |     }
                                                                                 | label_21:
    0x0801e6c0 sub sb, r6, 0x20                                                  |     sb = r6 - 0x20;
    0x0801e6c4 mov r0, sb                                                        |     r0 = sb;
    0x0801e6c8 stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr}");
    0x0801e6cc ldr r3, [r6, -0x6c]                                               |     r3 = *((r6 - 0x6c));
    0x0801e6d0 mov r2, r4                                                        |     r2 = r4;
    0x0801e6d4 mov r1, r6                                                        |     r1 = r6;
    0x0801e6d8 mov r0, r8                                                        |     r0 = r8;
    0x0801e6dc ubfx r3, r3, 0x13, 1                                              |     r3 = (r3 >> 0x13) & ((1 << 1) - 1);
    0x0801e6e0 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x0801e6e4 bne 0x801e8e8                                                     |         goto label_25;
                                                                                 |     }
    0x0801e6e8 stmdaeq r1, {r2, r8, ip, sp, lr}                                  |     __asm ("stmdaeq r1, {r2, r8, ip, sp, lr}");
    0x0801e6ec mov r5, r0                                                        |     r5 = r0;
                                                                                 |     do {
    0x0801e6f0 cmp r5, 0                                                         |         
                                                                                 |         if (r5 > 0) {
    0x0801e6f4 ble 0x801e738                                                     |             
    0x0801e6f8 ldr r3, [r4, 0xc]                                                 |             r3 = *((r4 + 0xc));
    0x0801e6fc mov r2, r5                                                        |             r2 = r5;
    0x0801e700 cmp r3, r5                                                        |             
                                                                                 |             if (r3 != r5) {
    0x0801e704 bne 0x801eb20                                                     |                 goto label_26;
                                                                                 |             }
                                                                                 | label_14:
    0x0801e708 ldr r3, [r4, 0x10]                                                |             r3 = *((r4 + 0x10));
    0x0801e70c tst r3, 0x800                                                     |             
                                                                                 |             if ((r3 & 0x800) != 0) {
    0x0801e710 moveq r3, 1                                                       |                 r3 = 1;
                                                                                 |             }
                                                                                 |             if ((r3 & 0x800) != 0) {
    0x0801e714 bne 0x801e92c                                                     |                 goto label_27;
                                                                                 |             }
                                                                                 | label_1:
    0x0801e718 str r3, [sp, 8]                                                   |             var_8h = r3;
    0x0801e71c mov r0, r6                                                        |             r0 = r6;
    0x0801e720 ldrd sl, fp, [r4]                                                 |             __asm ("ldrd sl, fp, [r4]");
    0x0801e724 ldr r1, [r4, 8]                                                   |             r1 = *((r4 + 8));
    0x0801e728 strd sl, fp, [sp]                                                 |             __asm ("strd sl, fp, [sp]");
    0x0801e72c stmdaeq r0, {r2, r5, r6, r7, ip, sp, lr, pc}                      |             __asm ("stmdaeq r0, {r2, r5, r6, r7, ip, sp, lr, pc}");
    0x0801e730 cmp r0, 0                                                         |             
                                                                                 |             if (r0 < 0) {
    0x0801e734 movlt r5, r0                                                      |                 r5 = r0;
                                                                                 |                 goto label_28;
                                                                                 |             }
                                                                                 |         }
                                                                                 | label_28:
    0x0801e738 mov r0, sb                                                        |         r0 = sb;
    0x0801e73c stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}                  |         __asm ("stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}");
                                                                                 | label_6:
    0x0801e740 cmp r5, 0                                                         |         
                                                                                 |         if (r5 <= 0) {
    0x0801e744 ble 0x801e918                                                     |             goto label_29;
                                                                                 |         }
    0x0801e748 ldr r3, [r4, 0x10]                                                |         r3 = *((r4 + 0x10));
    0x0801e74c tst r3, 0x10                                                      |         
                                                                                 |         if ((r3 & 0x10) != 0) {
    0x0801e750 bne 0x801ea54                                                     |             goto label_30;
                                                                                 |         }
    0x0801e754 tst r7, 1                                                         |         
                                                                                 |         if ((r7 & 1) == 0) {
    0x0801e758 beq 0x801e90c                                                     |             goto label_7;
                                                                                 |         }
                                                                                 | label_8:
    0x0801e75c sub sb, r6, 0x20                                                  |         sb = r6 - 0x20;
    0x0801e760 bic r3, r3, 0xa30                                                 |         r3 = BIT_MASK (r3, 0xa30);
    0x0801e764 mov r0, sb                                                        |         r0 = sb;
    0x0801e768 str r3, [r4, 0x10]                                                |         *((r4 + 0x10)) = r3;
    0x0801e76c stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}                  |         __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x0801e770 ldr r3, [r6, -0x6c]                                               |         r3 = *((r6 - 0x6c));
    0x0801e774 mov r2, r4                                                        |         r2 = r4;
    0x0801e778 mov r1, r6                                                        |         r1 = r6;
    0x0801e77c tst r3, 0x80000                                                   |         
    0x0801e780 mov r0, r8                                                        |         r0 = r8;
    0x0801e784 mov r3, r7                                                        |         r3 = r7;
                                                                                 |         if ((r3 & 0x80000) == 0) {
    0x0801e788 beq 0x801e8f8                                                     |             goto label_31;
                                                                                 |         }
    0x0801e78c stmdaeq r0, {r2, r3, r6, r7, sb, sl, ip, pc}                      |         __asm ("stmdaeq r0, {r2, r3, r6, r7, sb, sl, ip, pc}");
    0x0801e790 subs r5, r0, 0                                                    |         r5 = r0 - 0;
                                                                                 |         if (r5 <= r0) {
    0x0801e794 ble 0x801e904                                                     |             goto label_9;
                                                                                 |         }
                                                                                 | label_2:
    0x0801e798 ldr r2, [r4, 0xc]                                                 |         r2 = *((r4 + 0xc));
    0x0801e79c cmp r2, r5                                                        |         
                                                                                 |         if (r2 != r5) {
    0x0801e7a0 bne 0x801eb68                                                     |             goto label_32;
                                                                                 |         }
                                                                                 | label_15:
    0x0801e7a4 ands r3, r7, 0x200                                                |         r3 = r7 & 0x200;
    0x0801e7a8 ldr r1, [r4, 8]                                                   |         r1 = *((r4 + 8));
    0x0801e7ac str r3, [sp, 0x14]                                                |         var_14h = r3;
                                                                                 |         if (r3 != r7) {
    0x0801e7b0 beq 0x801e7c4                                                     |             
    0x0801e7b4 ldr r3, [r4, 0x10]                                                |             r3 = *((r4 + 0x10));
    0x0801e7b8 and r3, r3, 0x30                                                  |             r3 &= 0x30;
    0x0801e7bc cmp r3, 0x30                                                      |             
                                                                                 |             if (r3 == 0x30) {
    0x0801e7c0 beq 0x801ead0                                                     |                 goto label_33;
                                                                                 |             }
                                                                                 |         }
                                                                                 | label_11:
    0x0801e7c4 tst r7, 8                                                         |         
                                                                                 |         if ((r7 & 8) != 0) {
    0x0801e7c8 bne 0x801e9d8                                                     |             goto label_34;
                                                                                 |         }
                                                                                 | label_5:
    0x0801e7cc ldr r3, [r4, 0x10]                                                |         r3 = *((r4 + 0x10));
    0x0801e7d0 tst r3, 0x800                                                     |         
                                                                                 |         if ((r3 & 0x800) != 0) {
    0x0801e7d4 bne 0x801e994                                                     |             goto label_35;
                                                                                 |         }
    0x0801e7d8 ldr r2, [r4, 0xc]                                                 |         r2 = *((r4 + 0xc));
    0x0801e7dc mov r3, 1                                                         |         r3 = 1;
                                                                                 | label_3:
    0x0801e7e0 str r3, [sp, 8]                                                   |         var_8h = r3;
    0x0801e7e4 mov r0, r6                                                        |         r0 = r6;
    0x0801e7e8 ldrd sl, fp, [r4]                                                 |         __asm ("ldrd sl, fp, [r4]");
    0x0801e7ec strd sl, fp, [sp]                                                 |         __asm ("strd sl, fp, [sp]");
    0x0801e7f0 stmdaeq r0, {r2, r5, r6, r7, ip, sp, lr, pc}                      |         __asm ("stmdaeq r0, {r2, r5, r6, r7, ip, sp, lr, pc}");
    0x0801e7f4 cmp r0, 0                                                         |         
                                                                                 |         if (r0 < 0) {
    0x0801e7f8 blt 0x801eaa4                                                     |             goto label_36;
                                                                                 |         }
                                                                                 | label_4:
    0x0801e7fc mov r0, sb                                                        |         r0 = sb;
    0x0801e800 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}                  |         __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
                                                                                 | label_12:
    0x0801e804 ldr r3, [r4, 0x10]                                                |         r3 = *((r4 + 0x10));
    0x0801e808 tst r3, 0x10                                                      |         
                                                                                 |         if ((r3 & 0x10) == 0) {
    0x0801e80c beq 0x801e90c                                                     |             goto label_7;
                                                                                 |         }
    0x0801e810 mov r2, r4                                                        |         r2 = r4;
    0x0801e814 mov r0, r6                                                        |         r0 = r6;
    0x0801e818 movw r1, 0x2cd                                                    |         r1 = 0x2cd;
    0x0801e81c bl 0x801cbb0                                                      |         r0 = check_block_validity_constprop_0 ();
    0x0801e820 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x0801e824 bne 0x801ea9c                                                     |             goto label_37;
                                                                                 |         }
    0x0801e828 ldr r3, [r4, 0x10]                                                |         r3 = *((r4 + 0x10));
    0x0801e82c and r3, r3, 0x820                                                 |         r3 &= 0x820;
    0x0801e830 cmp r3, 0x20                                                      |         
                                                                                 |         if (r3 == 0x20) {
    0x0801e834 bne 0x801e8c4                                                     |             
    0x0801e838 ldr r3, [sp, 0x14]                                                |             r3 = var_14h;
    0x0801e83c cmp r3, 0                                                         |             
                                                                                 |             if (r3 != 0) {
    0x0801e840 bne 0x801e8c4                                                     |                 goto label_17;
                                                                                 |             }
    0x0801e844 ldr r3, [r6, 0xc]                                                 |             r3 = *((r6 + 0xc));
    0x0801e848 tst r3, 0x20                                                      |             
                                                                                 |             if ((r3 & 0x20) != 0) {
    0x0801e84c bne 0x801ebac                                                     |                 goto label_38;
                                                                                 |             }
                                                                                 | label_16:
    0x0801e850 mov r0, r6                                                        |             r0 = r6;
    0x0801e854 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}                  |             __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x0801e858 tst r0, 2                                                         |             
                                                                                 |             if ((r0 & 2) == 0) {
    0x0801e85c beq 0x801e8c4                                                     |                 goto label_17;
                                                                                 |             }
    0x0801e860 ldrb ip, [r6, 0x6a]                                               |             ip = *((r6 + 0x6a));
    0x0801e864 tst r7, 0x400                                                     |             
    0x0801e868 ldr r1, [r4, 8]                                                   |             r1 = *((r4 + 8));
    0x0801e86c ldr r2, [r4, 0xc]                                                 |             r2 = *((r4 + 0xc));
    0x0801e870 sub r0, ip, 0x20                                                  |             r0 = ip - 0x20;
    0x0801e874 rsb lr, ip, 0x20                                                  |             lr = 0x20 - ip;
    0x0801e878 lsl r3, r1, r0                                                    |             r3 = r1 << r0;
    0x0801e87c lsl r0, r2, r0                                                    |             r0 = r2 << r0;
    0x0801e880 orr r3, r3, r1, lsr lr                                            |             r3 |= (r1 >> lr);
    0x0801e884 orr r0, r0, r2, lsr lr                                            |             r0 |= (r2 >> lr);
    0x0801e888 lsl lr, r1, ip                                                    |             lr = r1 << ip;
    0x0801e88c lsl ip, r2, ip                                                    |             
                                                                                 |             if ((r7 & 0x400) == 0) {
    0x0801e890 beq 0x801ebbc                                                     |                 goto label_39;
                                                                                 |             }
    0x0801e894 cmp r8, 0x1000                                                    |             
                                                                                 |             if (r8 <= 0x1000) {
    0x0801e898 blo 0x801e8cc                                                     |                 goto label_18;
                                                                                 |             }
    0x0801e89c str r0, [sp, 4]                                                   |             var_4h = r0;
    0x0801e8a0 mov r2, lr                                                        |             r2 = lr;
    0x0801e8a4 str ip, [sp]                                                      |             *(sp) = ip;
    0x0801e8a8 mov r0, r8                                                        |             r0 = r8;
    0x0801e8ac ldr r1, [r6, 0x168]                                               |             r1 = *((r6 + 0x168));
    0x0801e8b0 stmdaeq r8, {r3, r6, r8, fp, ip, sp, lr}                          |             __asm ("stmdaeq r8, {r3, r6, r8, fp, ip, sp, lr}");
    0x0801e8b4 mov r3, r0                                                        |             r3 = r0;
                                                                                 | label_19:
    0x0801e8b8 cmp r3, 0                                                         |             
                                                                                 |             if (r3 == 0) {
    0x0801e8bc movne r5, r3                                                      |                 r5 = r3;
                                                                                 |             }
                                                                                 |             if (r3 != 0) {
    0x0801e8c0 bne 0x801e90c                                                     |                 goto label_7;
                                                                                 |             }
                                                                                 |         }
                                                                                 | label_17:
    0x0801e8c4 ldr r2, [r4, 0xc]                                                 |         r2 = *((r4 + 0xc));
    0x0801e8c8 ldr r1, [r4, 8]                                                   |         r1 = *((r4 + 8));
                                                                                 | label_18:
    0x0801e8cc add r3, r1, r2                                                    |         r3 = r1 + r2;
    0x0801e8d0 mov r0, r8                                                        |         r0 = r8;
    0x0801e8d4 mov r2, r1                                                        |         r2 = r1;
    0x0801e8d8 sub r3, r3, 1                                                     |         r3--;
    0x0801e8dc mov r1, r6                                                        |         r1 = r6;
    0x0801e8e0 stmdaeq r5, {r7, fp, ip, lr}                                      |         __asm ("stmdaeq r5, {r7, fp, ip, lr}");
    0x0801e8e4 b 0x801e90c                                                       |         goto label_7;
                                                                                 | label_25:
    0x0801e8e8 mov r3, 0                                                         |         r3 = 0;
    0x0801e8ec stmdaeq r0, {r2, r3, r6, r7, sb, sl, ip, pc}                      |         __asm ("stmdaeq r0, {r2, r3, r6, r7, sb, sl, ip, pc}");
    0x0801e8f0 mov r5, r0                                                        |         r5 = r0;
    0x0801e8f4 b 0x801e6f0                                                       |         
                                                                                 |     } while (1);
                                                                                 | label_31:
    0x0801e8f8 stmdaeq r1, {r2, r8, ip, sp, lr}                                  |     __asm ("stmdaeq r1, {r2, r8, ip, sp, lr}");
    0x0801e8fc subs r5, r0, 0                                                    |     r5 = r0 - 0;
                                                                                 |     if (r5 > r0) {
    0x0801e900 bgt 0x801e96c                                                     |         goto label_40;
                                                                                 |     }
                                                                                 | label_9:
    0x0801e904 mov r0, sb                                                        |     r0 = sb;
    0x0801e908 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
                                                                                 | label_7:
    0x0801e90c mov r0, r5                                                        |     r0 = r5;
    0x0801e910 add sp, sp, 0x3c                                                  |     
    0x0801e914 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_29:
    0x0801e918 tst r7, 1                                                         |     
                                                                                 |     if ((r7 & 1) != 0) {
    0x0801e91c bne 0x801e6b8                                                     |         goto label_0;
                                                                                 |     }
    0x0801e920 mov r0, r5                                                        |     r0 = r5;
    0x0801e924 add sp, sp, 0x3c                                                  |     
    0x0801e928 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_27:
    0x0801e92c tst r7, 4                                                         |     
                                                                                 |     if ((r7 & 4) != 0) {
    0x0801e930 bne 0x801e964                                                     |         goto label_41;
                                                                                 |     }
    0x0801e934 ldr ip, [r4, 8]                                                   |     ip = *((r4 + 8));
    0x0801e938 mov r0, r6                                                        |     r0 = r6;
    0x0801e93c stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}                  |     __asm ("stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}");
    0x0801e940 stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}                  |     __asm ("stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}");
    0x0801e944 sub r3, ip, 1                                                     |     r3 = ip - 1;
    0x0801e948 add r3, r3, r2                                                    |     r3 += r2;
    0x0801e94c mov r2, ip                                                        |     r2 = ip;
    0x0801e950 stmdaeq r0, {r5, r8, sb, sl, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r5, r8, sb, sl, fp, sp, lr, pc}");
    0x0801e954 cmp r0, 0                                                         |     
    0x0801e958 ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
                                                                                 |     if (r0 != 0) {
    0x0801e95c movne r3, 6                                                       |         r3 = 6;
                                                                                 |         goto label_42;
                                                                                 |     }
                                                                                 |     if (r0 != 0) {
                                                                                 | label_42:
    0x0801e960 bne 0x801e718                                                     |         goto label_1;
                                                                                 |     }
                                                                                 | label_41:
    0x0801e964 mov r3, 2                                                         |     r3 = 2;
    0x0801e968 b 0x801e718                                                       |     goto label_1;
                                                                                 | label_40:
    0x0801e96c ldr r3, [r4, 0x10]                                                |     r3 = *((r4 + 0x10));
    0x0801e970 tst r3, 0x20                                                      |     
                                                                                 |     if ((r3 & 0x20) != 0) {
    0x0801e974 bne 0x801eb04                                                     |         goto label_43;
                                                                                 |     }
                                                                                 | label_13:
    0x0801e978 tst r7, 4                                                         |     
                                                                                 |     if ((r7 & 4) == 0) {
    0x0801e97c beq 0x801e798                                                     |         goto label_2;
                                                                                 |     }
    0x0801e980 mov r1, r5                                                        |     r1 = r5;
    0x0801e984 mov r0, r6                                                        |     r0 = r6;
    0x0801e988 mov r2, 1                                                         |     r2 = 1;
    0x0801e98c stmdaeq r1, {r2, r4, r6, r7, r8, sb, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r2, r4, r6, r7, r8, sb, sp, lr, pc}");
    0x0801e990 b 0x801e798                                                       |     goto label_2;
                                                                                 | label_35:
    0x0801e994 ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
    0x0801e998 tst r7, 4                                                         |     
                                                                                 |     if ((r7 & 4) != 0) {
    0x0801e99c bne 0x801e9d0                                                     |         goto label_44;
                                                                                 |     }
    0x0801e9a0 add r3, r1, r2                                                    |     r3 = r1 + r2;
    0x0801e9a4 mov r0, r6                                                        |     r0 = r6;
    0x0801e9a8 mov r2, r1                                                        |     r2 = r1;
    0x0801e9ac sub r3, r3, 1                                                     |     r3--;
    0x0801e9b0 stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}                  |     __asm ("stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}");
    0x0801e9b4 stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}                  |     __asm ("stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}");
    0x0801e9b8 stmdaeq r0, {r5, r8, sb, sl, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r5, r8, sb, sl, fp, sp, lr, pc}");
    0x0801e9bc cmp r0, 0                                                         |     
    0x0801e9c0 ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
    0x0801e9c4 ldr r1, [r4, 8]                                                   |     r1 = *((r4 + 8));
                                                                                 |     if (r0 != 0) {
    0x0801e9c8 movne r3, 6                                                       |         r3 = 6;
                                                                                 |         goto label_45;
                                                                                 |     }
                                                                                 |     if (r0 != 0) {
                                                                                 | label_45:
    0x0801e9cc bne 0x801e7e0                                                     |         goto label_3;
                                                                                 |     }
                                                                                 | label_44:
    0x0801e9d0 mov r3, 2                                                         |     r3 = 2;
    0x0801e9d4 b 0x801e7e0                                                       |     goto label_3;
                                                                                 | label_34:
    0x0801e9d8 add r3, sp, 0x18                                                  |     r3 += var_18h;
    0x0801e9dc mov r0, r6                                                        |     r0 = r6;
    0x0801e9e0 mov r2, 0                                                         |     r2 = 0;
    0x0801e9e4 stmdaeq r0, {r2, r4, r7, r8, sl, ip, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r2, r4, r7, r8, sl, ip, sp, lr, pc}");
    0x0801e9e8 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0801e9ec beq 0x801e9fc                                                     |         goto label_46;
                                                                                 |     }
    0x0801e9f0 ldr r3, [sp, 0x34]                                                |     r3 = var_34h;
    0x0801e9f4 tst r3, 0x8000000                                                 |     
                                                                                 |     if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x0801e9f8 bne 0x801e7fc                                                     |         goto label_4;
                                                                                 |     }
                                                                                 | label_46:
    0x0801e9fc ldr r1, [r4, 8]                                                   |     r1 = *((r4 + 8));
    0x0801ea00 b 0x801e7cc                                                       |     goto label_5;
                                                                                 | label_22:
    0x0801ea04 ldr r1, [sp, 0x24]                                                |     r1 = var_24h;
    0x0801ea08 bic r3, r3, 0xf8000000                                            |     r3 = BIT_MASK (r3, 0xf8000000);
    0x0801ea0c ldr r0, [r4, 8]                                                   |     r0 = *((r4 + 8));
    0x0801ea10 mov ip, 0x10                                                      |     
    0x0801ea14 subs r2, r2, r1                                                   |     r2 -= r1;
    0x0801ea18 sbc r3, r3, 0                                                     |     __asm ("sbc r3, r3, 0");
    0x0801ea1c adds r2, r2, r0                                                   |     r2 += r0;
    0x0801ea20 adc r3, r3, 0                                                     |     __asm ("adc r3, r3, 0");
                                                                                 | label_10:
    0x0801ea24 ldr r5, [sp, 0x28]                                                |     r5 = var_28h;
    0x0801ea28 strd r2, r3, [r4]                                                 |     __asm ("strd r2, r3, [r4]");
    0x0801ea2c add r5, r1, r5                                                    |     r5 = r1 + r5;
    0x0801ea30 ldr r3, [r4, 0xc]                                                 |     r3 = *((r4 + 0xc));
    0x0801ea34 sub r5, r5, r0                                                    |     r5 -= r0;
    0x0801ea38 cmp r5, r3                                                        |     
                                                                                 |     if (r5 < r3) {
    0x0801ea3c movhs r5, r3                                                      |         r5 = r3;
                                                                                 |     }
    0x0801ea40 ldr r3, [r4, 0x10]                                                |     r3 = *((r4 + 0x10));
    0x0801ea44 str r5, [r4, 0xc]                                                 |     *((r4 + 0xc)) = r5;
    0x0801ea48 orr r3, r3, ip                                                    |     r3 |= ip;
    0x0801ea4c str r3, [r4, 0x10]                                                |     *((r4 + 0x10)) = r3;
    0x0801ea50 b 0x801e740                                                       |     goto label_6;
                                                                                 | label_30:
    0x0801ea54 mov r2, r4                                                        |     r2 = r4;
    0x0801ea58 mov r0, r6                                                        |     r0 = r6;
    0x0801ea5c movw r1, 0x251                                                    |     r1 = 0x251;
    0x0801ea60 bl 0x801cbb0                                                      |     r0 = check_block_validity_constprop_0 ();
    0x0801ea64 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x0801ea68 bne 0x801ea9c                                                     |         goto label_37;
                                                                                 |     }
    0x0801ea6c tst r7, 1                                                         |     
                                                                                 |     if ((r7 & 1) == 0) {
    0x0801ea70 beq 0x801e90c                                                     |         goto label_7;
                                                                                 |     }
    0x0801ea74 ldr r3, [r4, 0x10]                                                |     r3 = *((r4 + 0x10));
    0x0801ea78 tst r3, 0x10                                                      |     
                                                                                 |     if ((r3 & 0x10) == 0) {
    0x0801ea7c beq 0x801e75c                                                     |         goto label_8;
                                                                                 |     }
    0x0801ea80 tst r7, 0x100                                                     |     
                                                                                 |     if ((r7 & 0x100) != 0) {
    0x0801ea84 bne 0x801e75c                                                     |         goto label_8;
                                                                                 |     }
    0x0801ea88 b 0x801e90c                                                       |     goto label_7;
                                                                                 | label_20:
    0x0801ea8c mvn r5, 0x74                                                      |     r5 = ~0x74;
    0x0801ea90 mov r0, r5                                                        |     r0 = r5;
    0x0801ea94 add sp, sp, 0x3c                                                  |     
    0x0801ea98 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_37:
    0x0801ea9c mov r5, r0                                                        |     r5 = r0;
    0x0801eaa0 b 0x801e90c                                                       |     goto label_7;
                                                                                 | label_36:
    0x0801eaa4 mov r5, r0                                                        |     r5 = r0;
    0x0801eaa8 b 0x801e904                                                       |     goto label_9;
                                                                                 | label_23:
    0x0801eaac ldr r1, [sp, 0x24]                                                |     r1 = var_24h;
    0x0801eab0 bic r3, r3, 0xf8000000                                            |     r3 = BIT_MASK (r3, 0xf8000000);
    0x0801eab4 ldr r0, [r4, 8]                                                   |     r0 = *((r4 + 8));
    0x0801eab8 mov ip, 0x800                                                     |     
    0x0801eabc subs r2, r2, r1                                                   |     r2 -= r1;
    0x0801eac0 sbc r3, r3, 0                                                     |     __asm ("sbc r3, r3, 0");
    0x0801eac4 adds r2, r2, r0                                                   |     r2 += r0;
    0x0801eac8 adc r3, r3, 0                                                     |     __asm ("adc r3, r3, 0");
    0x0801eacc b 0x801ea24                                                       |     goto label_10;
                                                                                 | label_33:
    0x0801ead0 ldr r3, [r4, 0xc]                                                 |     r3 = *((r4 + 0xc));
    0x0801ead4 mov r0, r6                                                        |     r0 = r6;
    0x0801ead8 str r3, [sp]                                                      |     *(sp) = r3;
    0x0801eadc ldrd r2, r3, [r4]                                                 |     __asm ("ldrd r2, r3, [r4]");
    0x0801eae0 stmdaeq r1, {r2, r4, r5, r6, r8, sl, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r2, r4, r5, r6, r8, sl, sp, lr, pc}");
    0x0801eae4 subs fp, r0, 0                                                    |     
                                                                                 |     if (fp == r0) {
    0x0801eae8 ldreq r1, [r4, 8]                                                 |         r1 = *((r4 + 8));
                                                                                 |         goto label_47;
                                                                                 |     }
                                                                                 |     if (fp == r0) {
                                                                                 | label_47:
    0x0801eaec beq 0x801e7c4                                                     |         goto label_11;
                                                                                 |     }
    0x0801eaf0 mov r0, sb                                                        |     r0 = sb;
    0x0801eaf4 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x0801eaf8 subs r5, fp, 0                                                    |     r5 -= var_bp_0h;
                                                                                 |     if (r5 > var_bp_0h) {
    0x0801eafc bgt 0x801e804                                                     |         goto label_12;
                                                                                 |     }
    0x0801eb00 b 0x801e90c                                                       |     goto label_7;
                                                                                 | label_43:
    0x0801eb04 mrs r2, apsr                                                      |     r2 = apsr;
    0x0801eb08 cpsid i                                                           |     __asm ("cpsid i");
    0x0801eb0c ldr r3, [r6, -0x70]                                               |     r3 = *((r6 - 0x70));
    0x0801eb10 bic r3, r3, 0x20                                                  |     r3 = BIT_MASK (r3, 0x20);
    0x0801eb14 str r3, [r6, -0x70]                                               |     *((r6 - 0x70)) = r3;
    0x0801eb18 msr cpsr_c, r2                                                    |     cpsr_c = r2;
    0x0801eb1c b 0x801e978                                                       |     goto label_13;
                                                                                 | label_26:
    0x0801eb20 str r3, [sp, 8]                                                   |     var_8h = r3;
    0x0801eb24 movw r2, 0x23a                                                    |     r2 = 0x23a;
    0x0801eb28 str r5, [sp, 4]                                                   |     var_4h = r5;
    0x0801eb2c ldr r1, [pc, 0xb4]                                                |     r1 = $d;
    0x0801eb30 ldr r3, [r6, 0x20]                                                |     r3 = *((r6 + 0x20));
    0x0801eb34 str r3, [sp]                                                      |     *(sp) = r3;
    0x0801eb38 stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}");
    0x0801eb3c stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}");
    0x0801eb40 ldr r0, [r6, 0x14]                                                |     r0 = *((r6 + 0x14));
    0x0801eb44 stmdaeq r4, {r3, r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}");
    0x0801eb48 mov r2, 9                                                         |     r2 = 9;
    0x0801eb4c mov r3, 0                                                         |     r3 = 0;
    0x0801eb50 movw r1, 0x23e                                                    |     r1 = 0x23e;
    0x0801eb54 stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}");
    0x0801eb58 stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}");
    0x0801eb5c stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
    0x0801eb60 ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
    0x0801eb64 b 0x801e708                                                       |     goto label_14;
                                                                                 | label_32:
    0x0801eb68 str r2, [sp, 8]                                                   |     var_8h = r2;
    0x0801eb6c movw r2, 0x299                                                    |     r2 = 0x299;
    0x0801eb70 str r5, [sp, 4]                                                   |     var_4h = r5;
    0x0801eb74 ldr r1, [pc, 0x6c]                                                |     r1 = $d;
    0x0801eb78 ldr r3, [r6, 0x20]                                                |     r3 = *((r6 + 0x20));
    0x0801eb7c str r3, [sp]                                                      |     *(sp) = r3;
    0x0801eb80 stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}");
    0x0801eb84 stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}");
    0x0801eb88 ldr r0, [r6, 0x14]                                                |     r0 = *((r6 + 0x14));
    0x0801eb8c stmdaeq r4, {r3, r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}");
    0x0801eb90 stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}");
    0x0801eb94 stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}");
    0x0801eb98 mov r3, 0                                                         |     r3 = 0;
    0x0801eb9c mov r2, 9                                                         |     r2 = 9;
    0x0801eba0 movw r1, 0x29d                                                    |     r1 = 0x29d;
    0x0801eba4 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
    0x0801eba8 b 0x801e7a4                                                       |     goto label_15;
                                                                                 | label_38:
    0x0801ebac ldr r3, [r6, -0x6c]                                               |     r3 = *((r6 - 0x6c));
    0x0801ebb0 tst r3, 0x200000                                                  |     
                                                                                 |     if ((r3 & 0x200000) != 0) {
    0x0801ebb4 bne 0x801e850                                                     |         goto label_16;
                                                                                 |     }
    0x0801ebb8 b 0x801e8c4                                                       |     goto label_17;
                                                                                 | label_39:
    0x0801ebbc cmp r8, 0x1000                                                    |     
                                                                                 |     if (r8 <= 0x1000) {
    0x0801ebc0 blo 0x801e8cc                                                     |         goto label_18;
                                                                                 |     }
    0x0801ebc4 str r0, [sp, 4]                                                   |     var_4h = r0;
    0x0801ebc8 mov r2, lr                                                        |     r2 = lr;
    0x0801ebcc str ip, [sp]                                                      |     *(sp) = ip;
    0x0801ebd0 mov r0, r8                                                        |     r0 = r8;
    0x0801ebd4 ldr r1, [r6, 0x168]                                               |     r1 = *((r6 + 0x168));
    0x0801ebd8 stmdaeq r8, {r2, r3, r6, r8, fp, ip, sp, lr}                      |     __asm ("stmdaeq r8, {r2, r3, r6, r8, fp, ip, sp, lr}");
    0x0801ebdc mov r3, r0                                                        |     r3 = r0;
    0x0801ebe0 b 0x801e8b8                                                       |     goto label_19;
                                                                                 | label_24:
    0x0801ebe4 udf 0x12                                                          |     __asm ("udf 0x12");
                                                                                 | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8026b64 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.ext4_page_mkwrite ()                                         | void ext4_page_mkwrite (int32_t arg_0h, int32_t arg_4h, int32_t arg_18h, int32_t arg1) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_10h;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_24h;
                                                                             |     r0 = arg1;
    0x08026b64 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x08026b68 ldr sl, [r0]                                                  |     sl = *(r0);
    0x08026b6c sub sp, sp, 0x24                                              |     
    0x08026b70 ldr r8, [r0, 0x24]                                            |     r8 = *(arg_0hx24);
    0x08026b74 ldr r3, [sl, 0x50]                                            |     r3 = *((sl + 0x50));
    0x08026b78 ldr r4, [r3, 0x10]                                            |     r4 = *((r3 + 0x10));
    0x08026b7c ldr r5, [r4, 0xc]                                             |     r5 = *((r4 + 0xc));
    0x08026b80 ldr r3, [r4, 0x18]                                            |     r3 = *((r4 + 0x18));
    0x08026b84 str r3, [sp, 0xc]                                             |     var_ch = r3;
    0x08026b88 ands r5, r5, 8                                                |     r5 &= 8;
    0x08026b8c mov r3, 0                                                     |     r3 = 0;
    0x08026b90 str r3, [sp, 0x1c]                                            |     var_1ch = r3;
                                                                             |     if (r5 != r5) {
    0x08026b94 bne 0x80271e0                                                 |         goto label_23;
                                                                             |     }
    0x08026b98 mov r3, sp                                                    |     r3 = sp;
    0x08026b9c mov sb, r0                                                    |     sb = r0;
    0x08026ba0 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08026ba4 ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08026ba8 bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x08026bac ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08026bb0 add r2, r2, 1                                                 |     r2++;
    0x08026bb4 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08026bb8 ldr r3, [r0, 0x198]                                           |     r3 = *((r0 + 0x198));
    0x08026bbc cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08026bc0 bne 0x80271f0                                                 |         goto label_24;
                                                                             |     }
    0x08026bc4 mrs r1, apsr                                                  |     r1 = apsr;
    0x08026bc8 cpsid i                                                       |     __asm ("cpsid i");
    0x08026bcc ldr r2, [r0, 0x1b0]                                           |     r2 = *((r0 + 0x1b0));
    0x08026bd0 ldr r3, [r2]                                                  |     r3 = *(r2);
    0x08026bd4 add r3, r3, 1                                                 |     r3++;
    0x08026bd8 str r3, [r2]                                                  |     *(r2) = r3;
    0x08026bdc msr cpsr_c, r1                                                |     cpsr_c = r1;
                                                                             | label_15:
    0x08026be0 mov r3, sp                                                    |     r3 = sp;
    0x08026be4 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08026be8 bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x08026bec ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08026bf0 sub r2, r2, 1                                                 |     r2--;
    0x08026bf4 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08026bf8 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08026bfc beq 0x8026e04                                                 |         goto label_25;
                                                                             |     }
                                                                             | label_1:
    0x08026c00 ldr r0, [sl, 0x50]                                            |     r0 = *((sl + 0x50));
    0x08026c04 stmdaeq r8, {r5, r6, r7, r8, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r5, r6, r7, r8, fp, ip, sp, lr}");
    0x08026c08 sub r3, r4, 0x10                                              |     r3 = r4 - 0x10;
    0x08026c0c mov r0, r3                                                    |     r0 = r3;
    0x08026c10 str r3, [sp, 8]                                               |     var_8h = r3;
    0x08026c14 stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr}");
    0x08026c18 mov r0, r4                                                    |     r0 = r4;
    0x08026c1c stmdaeq r1, {r3, r4, r7, sb, lr, pc}                          |     __asm ("stmdaeq r1, {r3, r4, r7, sb, lr, pc}");
    0x08026c20 subs r3, r0, 0                                                |     r3 = r0 - 0;
                                                                             |     if (r3 != r0) {
    0x08026c24 beq 0x8026cb0                                                 |         
                                                                             | label_19:
    0x08026c28 add r0, r3, 0xe                                               |         r0 = r3 + 0xe;
    0x08026c2c cmp r0, 0xe                                                   |         
                                                                             |         if (r0 < 0xe) {
    0x08026c30 bls 0x80272c0                                                 |             goto label_26;
                                                                             |         }
                                                                             | label_3:
    0x08026c34 mov r5, 2                                                     |         r5 = 2;
                                                                             | label_9:
    0x08026c38 ldr r0, [sp, 8]                                               |         r0 = var_8h;
    0x08026c3c stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}              |         __asm ("stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}");
    0x08026c40 mov r3, sp                                                    |         r3 = sp;
    0x08026c44 bic r3, r3, 0x1fc0                                            |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08026c48 ldr r0, [r4, 0x14]                                            |         r0 = *((r4 + 0x14));
    0x08026c4c bic r3, r3, 0x3f                                              |         r3 = BIT_MASK (r3, 0x3f);
    0x08026c50 ldr r2, [r3, 4]                                               |         r2 = *((r3 + 4));
    0x08026c54 add r2, r2, 1                                                 |         r2++;
    0x08026c58 str r2, [r3, 4]                                               |         *((r3 + 4)) = r2;
    0x08026c5c ldr r3, [r0, 0x198]                                           |         r3 = *((r0 + 0x198));
    0x08026c60 cmp r3, 0                                                     |         
                                                                             |         if (r3 != 0) {
    0x08026c64 bne 0x8027200                                                 |             goto label_27;
                                                                             |         }
    0x08026c68 mrs r1, apsr                                                  |         r1 = apsr;
    0x08026c6c cpsid i                                                       |         __asm ("cpsid i");
    0x08026c70 ldr r2, [r0, 0x1b0]                                           |         r2 = *((r0 + 0x1b0));
    0x08026c74 ldr r3, [r2]                                                  |         r3 = *(r2);
    0x08026c78 sub r3, r3, 1                                                 |         r3--;
    0x08026c7c str r3, [r2]                                                  |         *(r2) = r3;
    0x08026c80 msr cpsr_c, r1                                                |         cpsr_c = r1;
                                                                             | label_16:
    0x08026c84 mov r3, sp                                                    |         r3 = sp;
    0x08026c88 bic r3, r3, 0x1fc0                                            |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08026c8c bic r3, r3, 0x3f                                              |         r3 = BIT_MASK (r3, 0x3f);
    0x08026c90 ldr r2, [r3, 4]                                               |         r2 = *((r3 + 4));
    0x08026c94 sub r2, r2, 1                                                 |         r2--;
    0x08026c98 str r2, [r3, 4]                                               |         *((r3 + 4)) = r2;
    0x08026c9c cmp r2, 0                                                     |         
                                                                             |         if (r2 == 0) {
    0x08026ca0 beq 0x8026e18                                                 |             goto label_28;
                                                                             |         }
                                                                             | label_2:
    0x08026ca4 mov r0, r5                                                    |         r0 = r5;
    0x08026ca8 add sp, sp, 0x24                                              |         
    0x08026cac pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
                                                                             |     }
    0x08026cb0 mov r0, r4                                                    |     r0 = r4;
    0x08026cb4 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x08026cb8 tst r0, 1                                                     |     
                                                                             |     if ((r0 & 1) != 0) {
    0x08026cbc bne 0x8026e6c                                                 |         goto label_21;
                                                                             |     }
    0x08026cc0 ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08026cc4 ldr r3, [r0, 0x1f0]                                           |     r3 = *((r0 + 0x1f0));
    0x08026cc8 ldr r3, [r3, 0x4c]                                            |     r3 = *((r3 + 0x4c));
    0x08026ccc tst r3, 0x8000000                                             |     
                                                                             |     if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x08026cd0 beq 0x8026ce0                                                 |         
    0x08026cd4 bl 0x801c95c                                                  |         r0 = ext4_nonda_switch ();
    0x08026cd8 cmp r0, 0                                                     |         
                                                                             |         if (r0 == 0) {
    0x08026cdc beq 0x8027240                                                 |             goto label_29;
                                                                             |         }
                                                                             |     }
    0x08026ce0 ldr r3, [r8, 4]                                               |     r3 = *((r8 + 4));
    0x08026ce4 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x08026ce8 subne r3, r3, 1                                               |         r3--;
                                                                             |     }
                                                                             |     if ((r3 & 1) != 0) {
    0x08026cec moveq r3, r8                                                  |         r3 = r8;
                                                                             |     }
    0x08026cf0 ldr r2, [r3]                                                  |     r2 = *(r3);
    0x08026cf4 tst r2, 1                                                     |     
                                                                             |     if ((r2 & 1) == 0) {
    0x08026cf8 beq 0x8027088                                                 |         goto label_30;
                                                                             |     }
                                                                             | label_8:
    0x08026cfc mov r0, r8                                                    |     r0 = r8;
    0x08026d00 stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr}");
                                                                             | label_7:
    0x08026d04 mov r3, sp                                                    |     r3 = sp;
    0x08026d08 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08026d0c bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x08026d10 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08026d14 add r2, r2, 1                                                 |     r2++;
    0x08026d18 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08026d1c ldr r7, [r4, 0x30]                                            |     r7 = *((r4 + 0x30));
    0x08026d20 ldr r6, [r4, 0x34]                                            |     r6 = *((r4 + 0x34));
    0x08026d24 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08026d28 sub r2, r2, 1                                                 |     r2--;
    0x08026d2c str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08026d30 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08026d34 beq 0x8027228                                                 |         goto label_31;
                                                                             |     }
                                                                             | label_17:
    0x08026d38 ldr r3, [r8, 0xc]                                             |     r3 = *((r8 + 0xc));
    0x08026d3c ldr r2, [sp, 0xc]                                             |     r2 = var_ch;
    0x08026d40 cmp r3, r2                                                    |     
                                                                             |     if (r3 != r2) {
    0x08026d44 bne 0x80270f0                                                 |         goto label_32;
                                                                             |     }
    0x08026d48 ldr r3, [r8, 0x10]                                            |     r3 = *((r8 + 0x10));
    0x08026d4c mov r1, 0                                                     |     r1 = 0;
    0x08026d50 lsl r2, r3, 0xc                                               |     r2 = r3 << 0xc;
    0x08026d54 cmp r7, r2                                                    |     
    0x08026d58 lsr r2, r3, 0x14                                              |     r2 = r3 >> 0x14;
    0x08026d5c sbcs r2, r6, r2                                               |     __asm ("sbcs r2, r6, r2");
                                                                             |     if (r7 < r2) {
    0x08026d60 blt 0x80270f0                                                 |         goto label_32;
                                                                             |     }
    0x08026d64 lsr r2, r7, 0xc                                               |     r2 = r7 >> 0xc;
    0x08026d68 orr r2, r2, r6, lsl 20                                        |     r2 |= (r6 << 20);
    0x08026d6c asr r6, r6, 0xc                                               |     r6 >>= 0xc;
    0x08026d70 cmp r6, r1                                                    |     
    0x08026d74 cmpeq r2, r3                                                  |     __asm ("cmpeq r2, r3");
    0x08026d78 ldr r3, [r8]                                                  |     r3 = *(r8);
    0x08026d7c ubfxeq r7, r7, 0, 0xc                                         |     __asm ("ubfxeq r7, r7, 0, 0xc");
                                                                             |     if (r6 == r1) {
    0x08026d80 movne r7, 0x1000                                              |         r7 = 0x1000;
                                                                             |     }
    0x08026d84 tst r3, 0x2000                                                |     
                                                                             |     if ((r3 & 0x2000) == 0) {
    0x08026d88 beq 0x8026e34                                                 |         goto label_33;
                                                                             |     }
    0x08026d8c ldr r2, [r8]                                                  |     r2 = *(r8);
    0x08026d90 mvn r2, r2, lsr 13                                            |     r2 = ~r2;
    0x08026d94 ands r2, r2, 1                                                |     r2 &= 1;
                                                                             |     if (r2 != r2) {
    0x08026d98 bne 0x802723c                                                 |         goto label_34;
                                                                             |     }
    0x08026d9c ldr r6, [r8, 0x14]                                            |     r6 = *((r8 + 0x14));
    0x08026da0 mov r1, r6                                                    |     r1 = r6;
    0x08026da4 ldr ip, [r6, 0x18]                                            |     ip = *((r6 + 0x18));
    0x08026da8 b 0x8026db8                                                   |     
                                                                             |     while (r3 == 0) {
    0x08026dac ldr r3, [lr]                                                  |         r3 = *(lr);
    0x08026db0 tst r3, 0x10                                                  |         
                                                                             |         if ((r3 & 0x10) == 0) {
    0x08026db4 beq 0x8026e34                                                 |             goto label_33;
                                                                             |         }
    0x08026db8 mov r0, r2                                                    |         r0 = r2;
    0x08026dbc mov lr, r1                                                    |         lr = r1;
                                                                             | label_0:
    0x08026dc0 clz r3, r2                                                    |         r3 &= r2;
    0x08026dc4 lsr r3, r3, 5                                                 |         r3 >>= 5;
    0x08026dc8 cmp r6, r1                                                    |         
                                                                             |         if (r6 == r1) {
    0x08026dcc orrne r3, r3, 1                                               |             r3 |= 1;
                                                                             |         }
    0x08026dd0 cmp r3, 0                                                     |         
                                                                             |         if (r3 == 0) {
    0x08026dd4 beq 0x80272dc                                                 |             goto label_35;
                                                                             |         }
    0x08026dd8 adds r2, r2, ip                                               |         r2 += ip;
    0x08026ddc ldr r1, [r1, 4]                                               |         r1 = *((r1 + 4));
                                                                             |         if (r2 != r2) {
    0x08026de0 moveq r3, 1                                                   |             r3 = 1;
                                                                             |         }
                                                                             |         if (r2 == r2) {
    0x08026de4 movne r3, 0                                                   |             r3 = 0;
                                                                             |         }
    0x08026de8 cmp r7, r0                                                    |         
                                                                             |         if (r7 > r0) {
    0x08026dec orrls r3, r3, 1                                               |             r3 |= 1;
                                                                             |         }
    0x08026df0 add r0, r0, ip                                                |         r0 += ip;
    0x08026df4 cmp r3, 0                                                     |         
    0x08026df8 beq 0x8026dac                                                 |         
                                                                             |     }
    0x08026dfc mov lr, r1                                                    |     lr = r1;
    0x08026e00 b 0x8026dc0                                                   |     goto label_0;
                                                                             | label_25:
    0x08026e04 ldr r3, [r3]                                                  |     r3 = *(r3);
    0x08026e08 tst r3, 2                                                     |     
                                                                             |     if ((r3 & 2) == 0) {
    0x08026e0c beq 0x8026c00                                                 |         goto label_1;
                                                                             |     }
    0x08026e10 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x08026e14 b 0x8026c00                                                   |     goto label_1;
                                                                             | label_28:
    0x08026e18 ldr r3, [r3]                                                  |     r3 = *(r3);
    0x08026e1c tst r3, 2                                                     |     
                                                                             |     if ((r3 & 2) == 0) {
    0x08026e20 beq 0x8026ca4                                                 |         goto label_2;
                                                                             |     }
    0x08026e24 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x08026e28 mov r0, r5                                                    |     r0 = r5;
    0x08026e2c add sp, sp, 0x24                                              |     
    0x08026e30 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_33:
    0x08026e34 mov r0, r8                                                    |     r0 = r8;
    0x08026e38 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x08026e3c ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x08026e40 ldr r3, [r3, 0x1f0]                                           |     r3 = *((r3 + 0x1f0));
    0x08026e44 ldr r3, [r3, 0x4c]                                            |     r3 = *((r3 + 0x4c));
    0x08026e48 tst r3, 0x400000                                              |     
                                                                             |     if ((r3 & 0x400000) != 0) {
    0x08026e4c beq 0x8026e60                                                 |         
    0x08026e50 ldrh r3, [r4]                                                 |         r3 = *(r4);
    0x08026e54 and r3, r3, 0xf000                                            |         r3 &= 0xf000;
    0x08026e58 cmp r3, 0x8000                                                |         
                                                                             |         if (r3 == 0x8000) {
    0x08026e5c beq 0x8027280                                                 |             goto label_36;
                                                                             |         }
                                                                             |     }
                                                                             | label_20:
    0x08026e60 stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
    0x08026e64 stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
    0x08026e68 str r3, [sp, 0x10]                                            |     var_10h = r3;
                                                                             | label_21:
    0x08026e6c mov r3, sp                                                    |     r3 = sp;
    0x08026e70 mov r7, sb                                                    |     r7 = sb;
    0x08026e74 bic fp, r3, 0x1fc0                                            |     fp = BIT_MASK (r3, 0x1fc0);
    0x08026e78 str r5, [sp, 0x14]                                            |     var_14h = r5;
    0x08026e7c bic fp, fp, 0x3f                                              |     fp = BIT_MASK (fp, 0x3f);
                                                                             | label_4:
    0x08026e80 mov r0, r4                                                    |     r0 = r4;
    0x08026e84 stmdaeq r2, {r4, r5, r6, r7, sl, ip}                          |     __asm ("stmdaeq r2, {r4, r5, r6, r7, sl, ip}");
    0x08026e88 mov r3, r0                                                    |     r3 = r0;
    0x08026e8c ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08026e90 mov ip, 0                                                     |     
    0x08026e94 mov r2, 2                                                     |     r2 = 2;
    0x08026e98 ldr r1, [r0, 0x1f0]                                           |     r1 = *((r0 + 0x1f0));
    0x08026e9c ldr r1, [r1, 0x2c]                                            |     r1 = *((r1 + 0x2c));
    0x08026ea0 str ip, [sp]                                                  |     *(sp) = ip;
    0x08026ea4 lsl r1, r1, 3                                                 |     r1 <<= 3;
    0x08026ea8 str r1, [sp, 4]                                               |     var_4h = r1;
    0x08026eac movw r1, 0x17fa                                               |     r1 = 0x17fa;
    0x08026eb0 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
    0x08026eb4 mov r6, r0                                                    |     r6 = r0;
    0x08026eb8 cmn r0, 0x1000                                                |     
                                                                             |     if (r0 > 0x1000) {
    0x08026ebc bhi 0x8026c34                                                 |         goto label_3;
                                                                             |     }
    0x08026ec0 mov r0, r4                                                    |     r0 = r4;
    0x08026ec4 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x08026ec8 tst r0, 1                                                     |     
                                                                             |     if ((r0 & 1) != 0) {
    0x08026ecc bne 0x8026f14                                                 |         goto label_37;
                                                                             |     }
    0x08026ed0 ldr r2, [sp, 0x10]                                            |     r2 = var_10h;
    0x08026ed4 mov r1, r7                                                    |     r1 = r7;
    0x08026ed8 mov r0, sl                                                    |     r0 = sl;
    0x08026edc stmdaeq r8, {r2, r5, r6, r7, r8, fp, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r5, r6, r7, r8, fp, ip, sp, lr}");
    0x08026ee0 mov r5, r0                                                    |     r5 = r0;
                                                                             | label_11:
    0x08026ee4 ldr r0, [pc, 0x408]                                           |     r0 = *(0x80272f0);
    0x08026ee8 mov r2, r6                                                    |     r2 = r6;
    0x08026eec movw r1, 0x1826                                               |     r1 = 0x1826;
    0x08026ef0 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x08026ef4 cmn r5, 0x1c                                                  |     
                                                                             |     if (r5 != 0x1c) {
    0x08026ef8 bne 0x80272ec                                                 |         goto label_38;
                                                                             |     }
    0x08026efc ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08026f00 add r1, sp, 0x1c                                              |     r1 += var_1ch;
    0x08026f04 stmdaeq r0, {r4, r5, r6, fp}                                  |     __asm ("stmdaeq r0, {r4, r5, r6, fp}");
    0x08026f08 cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x08026f0c bne 0x8026e80                                                 |         goto label_4;
                                                                             |     }
    0x08026f10 b 0x8026c34                                                   |     goto label_3;
                                                                             | label_37:
    0x08026f14 ldr r3, [r8, 4]                                               |     r3 = *((r8 + 4));
    0x08026f18 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x08026f1c subne r3, r3, 1                                               |         r3--;
                                                                             |     }
                                                                             |     if ((r3 & 1) != 0) {
    0x08026f20 moveq r3, r8                                                  |         r3 = r8;
                                                                             |     }
    0x08026f24 ldr r2, [r3]                                                  |     r2 = *(r3);
    0x08026f28 tst r2, 1                                                     |     
                                                                             |     if ((r2 & 1) != 0) {
    0x08026f2c bne 0x802707c                                                 |         goto label_39;
                                                                             |     }
    0x08026f30 pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x08026f34 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x08026f38 orr r1, r2, 1                                                 |         r1 = r2 | 1;
    0x08026f3c strex r0, r1, [r3]                                            |         __asm ("strex r0, r1, [r3]");
    0x08026f40 teq r0, 0                                                     |         __asm ("teq r0, 0");
    0x08026f44 bne 0x8026f34                                                 |         
                                                                             |     } while ((r2 & 1) != 0);
    0x08026f48 tst r2, 1                                                     |     
                                                                             |     if ((r2 & 1) != 0) {
    0x08026f4c bne 0x802707c                                                 |         goto label_39;
                                                                             |     }
                                                                             | label_6:
    0x08026f50 ldr r3, [fp, 4]                                               |     r3 = *(arg_4h);
    0x08026f54 add r3, r3, 1                                                 |     r3++;
    0x08026f58 str r3, [fp, 4]                                               |     *(arg_4h) = r3;
    0x08026f5c ldr sb, [r4, 0x30]                                            |     sb = *((r4 + 0x30));
    0x08026f60 ldr r5, [r4, 0x34]                                            |     r5 = *((r4 + 0x34));
    0x08026f64 ldr r2, [fp, 4]                                               |     r2 = *(arg_4h);
    0x08026f68 sub r2, r2, 1                                                 |     r2--;
    0x08026f6c str r2, [fp, 4]                                               |     *(arg_4h) = r2;
    0x08026f70 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08026f74 beq 0x80270d0                                                 |         goto label_40;
                                                                             |     }
                                                                             | label_10:
    0x08026f78 ldr r2, [r8, 0xc]                                             |     r2 = *((r8 + 0xc));
    0x08026f7c ldr r3, [sp, 0xc]                                             |     r3 = var_ch;
    0x08026f80 cmp r2, r3                                                    |     
                                                                             |     if (r2 != r3) {
    0x08026f84 bne 0x80272d4                                                 |         goto label_41;
                                                                             |     }
    0x08026f88 ldr r2, [r8, 0x10]                                            |     r2 = *((r8 + 0x10));
    0x08026f8c mov ip, 0                                                     |     
    0x08026f90 lsl r0, r2, 0xc                                               |     r0 = r2 << 0xc;
    0x08026f94 cmp sb, r0                                                    |     
    0x08026f98 lsr r0, r2, 0x14                                              |     r0 = r2 >> 0x14;
    0x08026f9c sbcs r0, r5, r0                                               |     __asm ("sbcs r0, r5, r0");
                                                                             |     if (sb < r0) {
    0x08026fa0 blt 0x80272d4                                                 |         goto label_41;
                                                                             |     }
    0x08026fa4 lsr r0, sb, 0xc                                               |     r0 = sb >> 0xc;
    0x08026fa8 asr r3, r5, 0xc                                               |     r3 = r5 >> 0xc;
    0x08026fac orr r0, r0, r5, lsl 20                                        |     r0 |= (r5 << 20);
    0x08026fb0 cmp r3, ip                                                    |     
    0x08026fb4 cmpeq r0, r2                                                  |     __asm ("cmpeq r0, r2");
    0x08026fb8 mov r0, r8                                                    |     r0 = r8;
    0x08026fbc stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
    0x08026fc0 stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
    0x08026fc4 ubfxeq sb, sb, 0, 0xc                                         |     __asm ("ubfxeq sb, sb, 0, 0xc");
                                                                             |     if (r3 == ip) {
    0x08026fc8 movne sb, 0x1000                                              |         sb = 0x1000;
                                                                             |     }
    0x08026fcc str r3, [sp, 4]                                               |     var_4h = r3;
    0x08026fd0 mov r2, 0                                                     |     r2 = 0;
    0x08026fd4 str sb, [sp]                                                  |     *(sp) = sb;
    0x08026fd8 mov r3, 0                                                     |     r3 = 0;
    0x08026fdc stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}                      |     __asm ("stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}");
    0x08026fe0 subs r5, r0, 0                                                |     r5 = r0 - 0;
                                                                             |     if (r5 != r0) {
    0x08026fe4 bne 0x80270e4                                                 |         goto label_42;
                                                                             |     }
    0x08026fe8 mov r7, sb                                                    |     r7 = sb;
    0x08026fec ldr sb, [r8]                                                  |     sb = *(r8);
    0x08026ff0 ldr r5, [sp, 0x14]                                            |     r5 = var_14h;
    0x08026ff4 mvn sb, sb, lsr 13                                            |     sb = ~sb;
    0x08026ff8 ands sb, sb, 1                                                |     sb &= 1;
                                                                             |     if (sb != sb) {
    0x08026ffc bne 0x802723c                                                 |         goto label_34;
                                                                             |     }
    0x08027000 ldr r3, [r8, 0x14]                                            |     r3 = *((r8 + 0x14));
    0x08027004 str r5, [sp, 0xc]                                             |     var_ch = r5;
    0x08027008 mov r5, r6                                                    |     r5 = r6;
    0x0802700c mov sl, r3                                                    |     sl = r3;
    0x08027010 ldr fp, [r3, 0x18]                                            |     fp = *((r3 + 0x18));
    0x08027014 mov r6, fp                                                    |     r6 = fp;
    0x08027018 mov fp, r3                                                    |     
    0x0802701c b 0x8027030                                                   |     
                                                                             |     while (r3 == 0) {
    0x08027020 mov r0, r5                                                    |         r0 = r5;
    0x08027024 stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}          |         __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}");
    0x08027028 cmp r0, 0                                                     |         
                                                                             |         if (r0 != 0) {
    0x0802702c bne 0x80270ac                                                 |             goto label_43;
                                                                             |         }
    0x08027030 mov r0, sb                                                    |         r0 = sb;
    0x08027034 mov r1, sl                                                    |         r1 = sl;
                                                                             | label_5:
    0x08027038 clz r3, sb                                                    |         r3 &= sb;
    0x0802703c lsr r3, r3, 5                                                 |         r3 >>= 5;
    0x08027040 cmp fp, sl                                                    |         
                                                                             |         if (fp == sl) {
    0x08027044 orrne r3, r3, 1                                               |             r3 |= 1;
                                                                             |         }
    0x08027048 cmp r3, 0                                                     |         
                                                                             |         if (r3 == 0) {
    0x0802704c beq 0x8027100                                                 |             goto label_44;
                                                                             |         }
    0x08027050 adds sb, sb, r6                                               |         sb += r6;
    0x08027054 ldr sl, [sl, 4]                                               |         sl = *((sl + 4));
                                                                             |         if (sb != sb) {
    0x08027058 moveq r3, 1                                                   |             r3 = 1;
                                                                             |         }
                                                                             |         if (sb == sb) {
    0x0802705c movne r3, 0                                                   |             r3 = 0;
                                                                             |         }
    0x08027060 cmp r7, r0                                                    |         
                                                                             |         if (r7 > r0) {
    0x08027064 orrls r3, r3, 1                                               |             r3 |= 1;
                                                                             |         }
    0x08027068 add r0, r0, r6                                                |         r0 += r6;
    0x0802706c cmp r3, 0                                                     |         
    0x08027070 beq 0x8027020                                                 |         
                                                                             |     }
    0x08027074 mov r1, sl                                                    |     r1 = sl;
    0x08027078 b 0x8027038                                                   |     goto label_5;
                                                                             | label_39:
    0x0802707c mov r0, r8                                                    |     r0 = r8;
    0x08027080 stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr}");
    0x08027084 b 0x8026f50                                                   |     goto label_6;
                                                                             | label_30:
    0x08027088 pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x0802708c ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x08027090 orr r1, r2, 1                                                 |         r1 = r2 | 1;
    0x08027094 strex r0, r1, [r3]                                            |         __asm ("strex r0, r1, [r3]");
    0x08027098 teq r0, 0                                                     |         __asm ("teq r0, 0");
    0x0802709c bne 0x802708c                                                 |         
                                                                             |     } while (r3 != 0);
    0x080270a0 tst r2, 1                                                     |     
                                                                             |     if ((r2 & 1) == 0) {
    0x080270a4 beq 0x8026d04                                                 |         goto label_7;
                                                                             |     }
    0x080270a8 b 0x8026cfc                                                   |     goto label_8;
                                                                             | label_43:
    0x080270ac mov r6, r5                                                    |     r6 = r5;
                                                                             | label_12:
    0x080270b0 mov r5, 2                                                     |     r5 = 2;
                                                                             | label_22:
    0x080270b4 mov r0, r8                                                    |     r0 = r8;
    0x080270b8 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x080270bc mov r2, r6                                                    |     r2 = r6;
    0x080270c0 movw r1, 0x1831                                               |     r1 = 0x1831;
    0x080270c4 ldr r0, [pc, 0x228]                                           |     r0 = *(0x80272f0);
    0x080270c8 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x080270cc b 0x8026c38                                                   |     goto label_9;
                                                                             | label_40:
    0x080270d0 ldr r2, [fp]                                                  |     r2 = *(fp);
    0x080270d4 tst r2, 2                                                     |     
                                                                             |     if ((r2 & 2) == 0) {
    0x080270d8 beq 0x8026f78                                                 |         goto label_10;
                                                                             |     }
    0x080270dc stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x080270e0 b 0x8026f78                                                   |     goto label_10;
                                                                             | label_42:
    0x080270e4 mov r0, r8                                                    |     r0 = r8;
    0x080270e8 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x080270ec b 0x8026ee4                                                   |     goto label_11;
                                                                             | label_32:
    0x080270f0 mov r0, r8                                                    |     r0 = r8;
    0x080270f4 mov r5, 0x100                                                 |     r5 = 0x100;
    0x080270f8 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x080270fc b 0x8026c38                                                   |     goto label_9;
                                                                             | label_44:
    0x08027100 ldr r3, [r8]                                                  |     r3 = *(r8);
    0x08027104 mov r6, r5                                                    |     r6 = r5;
    0x08027108 ldr r5, [sp, 0xc]                                             |     r5 = var_ch;
    0x0802710c tst r3, 0x2000                                                |     
                                                                             |     if ((r3 & 0x2000) == 0) {
    0x08027110 beq 0x802723c                                                 |         goto label_34;
                                                                             |     }
    0x08027114 ldr fp, [r8, 0x14]                                            |     fp = *((r8 + 0x14));
    0x08027118 mov sb, fp                                                    |     sb = fp;
    0x0802711c ldr sl, [fp, 0x18]                                            |     sl = *(arg_18h);
    0x08027120 b 0x8027134                                                   |     goto label_45;
                                                                             | label_13:
    0x08027124 mov r0, r6                                                    |     r0 = r6;
    0x08027128 bl 0x801cb08                                                  |     r0 = write_end_fn ();
    0x0802712c cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x08027130 bne 0x80270b0                                                 |         goto label_12;
                                                                             |     }
                                                                             | label_45:
    0x08027134 mov r2, r5                                                    |     r2 = r5;
    0x08027138 mov r1, sb                                                    |     r1 = sb;
                                                                             | label_14:
    0x0802713c clz r3, r5                                                    |     r3 &= r5;
    0x08027140 lsr r3, r3, 5                                                 |     r3 >>= 5;
    0x08027144 cmp sb, fp                                                    |     
                                                                             |     if (sb == fp) {
    0x08027148 orrne r3, r3, 1                                               |         r3 |= 1;
                                                                             |     }
    0x0802714c cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08027150 beq 0x8027180                                                 |         goto label_46;
                                                                             |     }
    0x08027154 adds r5, r5, sl                                               |     r5 += sl;
    0x08027158 ldr sb, [sb, 4]                                               |     sb = *((sb + 4));
                                                                             |     if (r5 != r5) {
    0x0802715c moveq r3, 1                                                   |         r3 = 1;
                                                                             |     }
                                                                             |     if (r5 == r5) {
    0x08027160 movne r3, 0                                                   |         r3 = 0;
                                                                             |     }
    0x08027164 cmp r7, r2                                                    |     
                                                                             |     if (r7 > r2) {
    0x08027168 orrls r3, r3, 1                                               |         r3 |= 1;
                                                                             |     }
    0x0802716c add r2, r2, sl                                                |     r2 += sl;
    0x08027170 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08027174 beq 0x8027124                                                 |         goto label_13;
                                                                             |     }
    0x08027178 mov r1, sb                                                    |     r1 = sb;
    0x0802717c b 0x802713c                                                   |     goto label_14;
                                                                             | label_46:
    0x08027180 ldr r0, [r8, 0x10]                                            |     r0 = *((r8 + 0x10));
    0x08027184 cmp r6, 0x1000                                                |     
                                                                             |     if (r6 <= 0x1000) {
    0x08027188 blo 0x80271b0                                                 |         goto label_47;
                                                                             |     }
    0x0802718c ldr r1, [r4, 0x168]                                           |     r1 = *((r4 + 0x168));
    0x08027190 lsl r2, r0, 0xc                                               |     r2 = r0 << 0xc;
    0x08027194 str r3, [sp, 4]                                               |     var_4h = r3;
    0x08027198 lsr r3, r0, 0x14                                              |     r3 = r0 >> 0x14;
    0x0802719c str r7, [sp]                                                  |     *(sp) = r7;
    0x080271a0 mov r0, r6                                                    |     r0 = r6;
    0x080271a4 stmdaeq r8, {r2, r3, r6, r8, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r3, r6, r8, fp, ip, sp, lr}");
    0x080271a8 cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x080271ac bne 0x80270b0                                                 |         goto label_12;
                                                                             |     }
                                                                             | label_47:
    0x080271b0 mrs r2, apsr                                                  |     r2 = apsr;
    0x080271b4 cpsid i                                                       |     __asm ("cpsid i");
    0x080271b8 ldr r3, [r4, -0x70]                                           |     r3 = *((r4 - 0x70));
    0x080271bc orr r3, r3, 1                                                 |     r3 |= 1;
    0x080271c0 str r3, [r4, -0x70]                                           |     *((r4 - 0x70)) = r3;
    0x080271c4 msr cpsr_c, r2                                                |     cpsr_c = r2;
    0x080271c8 ldr r0, [pc, 0x124]                                           |     r0 = *(0x80272f0);
    0x080271cc mov r2, r6                                                    |     r2 = r6;
    0x080271d0 movw r1, 0x1826                                               |     r1 = 0x1826;
    0x080271d4 mov r5, 0x200                                                 |     r5 = 0x200;
    0x080271d8 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x080271dc b 0x8026c38                                                   |     goto label_9;
                                                                             | label_23:
    0x080271e0 mov r5, 2                                                     |     r5 = 2;
    0x080271e4 mov r0, r5                                                    |     r0 = r5;
    0x080271e8 add sp, sp, 0x24                                              |     
    0x080271ec pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_24:
    0x080271f0 mov r1, r5                                                    |     r1 = r5;
    0x080271f4 add r0, r0, 0x198                                             |     r0 += 0x198;
    0x080271f8 stmdaeq r8, {r2, r3, r4, r5, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r3, r4, r5, fp, ip, sp, lr}");
    0x080271fc b 0x8026be0                                                   |     goto label_15;
                                                                             | label_27:
    0x08027200 mrs r1, apsr                                                  |     r1 = apsr;
    0x08027204 cpsid i                                                       |     __asm ("cpsid i");
    0x08027208 ldr r2, [r0, 0x1b0]                                           |     r2 = *((r0 + 0x1b0));
    0x0802720c ldr r3, [r2]                                                  |     r3 = *(r2);
    0x08027210 sub r3, r3, 1                                                 |     r3--;
    0x08027214 str r3, [r2]                                                  |     *(r2) = r3;
    0x08027218 msr cpsr_c, r1                                                |     cpsr_c = r1;
    0x0802721c add r0, r0, 0x1b4                                             |     r0 += 0x1b4;
    0x08027220 stmdaeq r8, {r6, fp, ip, sp, lr}                              |     __asm ("stmdaeq r8, {r6, fp, ip, sp, lr}");
    0x08027224 b 0x8026c84                                                   |     goto label_16;
                                                                             | label_31:
    0x08027228 ldr r3, [r3]                                                  |     r3 = *(r3);
    0x0802722c tst r3, 2                                                     |     
                                                                             |     if ((r3 & 2) == 0) {
    0x08027230 beq 0x8026d38                                                 |         goto label_17;
                                                                             |     }
    0x08027234 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x08027238 b 0x8026d38                                                   |     goto label_17;
                                                                             | label_34:
    0x0802723c udf 0x12                                                      |     __asm ("udf 0x12");
                                                                             | label_29:
    0x08027240 stmdaeq r1, {r2, r5, r6, r7, r8, sl, fp, lr, pc}              |     __asm ("stmdaeq r1, {r2, r5, r6, r7, r8, sl, fp, lr, pc}");
    0x08027244 stmdaeq r1, {r2, r5, r6, r7, r8, sl, fp, lr, pc}              |     __asm ("stmdaeq r1, {r2, r5, r6, r7, r8, sl, fp, lr, pc}");
    0x08027248 b 0x8027260                                                   |     goto label_48;
                                                                             | label_18:
    0x0802724c ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08027250 add r1, sp, 0x1c                                              |     r1 += var_1ch;
    0x08027254 stmdaeq r0, {r4, r5, r6, fp}                                  |     __asm ("stmdaeq r0, {r4, r5, r6, fp}");
    0x08027258 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x0802725c beq 0x8026c34                                                 |         goto label_3;
                                                                             |     }
                                                                             | label_48:
    0x08027260 mov r2, r5                                                    |     r2 = r5;
    0x08027264 mov r1, sb                                                    |     r1 = sb;
    0x08027268 mov r0, sl                                                    |     r0 = sl;
    0x0802726c stmdaeq r8, {r2, r5, r6, r7, r8, fp, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r5, r6, r7, r8, fp, ip, sp, lr}");
    0x08027270 cmn r0, 0x1c                                                  |     
                                                                             |     if (r0 == 0x1c) {
    0x08027274 beq 0x802724c                                                 |         goto label_18;
                                                                             |     }
    0x08027278 mov r3, r0                                                    |     r3 = r0;
    0x0802727c b 0x8026c28                                                   |     goto label_19;
                                                                             | label_36:
    0x08027280 ldr r3, [r4, -0x6c]                                           |     r3 = *((r4 - 0x6c));
    0x08027284 tst r3, 0x80000                                               |     
                                                                             |     if ((r3 & 0x80000) == 0) {
    0x08027288 beq 0x8026e60                                                 |         goto label_20;
                                                                             |     }
    0x0802728c mov r0, r4                                                    |     r0 = r4;
    0x08027290 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x08027294 tst r0, 1                                                     |     
                                                                             |     if ((r0 & 1) != 0) {
    0x08027298 bne 0x8026e60                                                 |         goto label_20;
                                                                             |     }
    0x0802729c ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x080272a0 ldr r3, [r3, 0x1f0]                                           |     r3 = *((r3 + 0x1f0));
    0x080272a4 ldr r3, [r3, 0x4c]                                            |     r3 = *((r3 + 0x4c));
    0x080272a8 tst r3, 0x8000000                                             |     
                                                                             |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x080272ac beq 0x8026e60                                                 |         goto label_20;
                                                                             |     }
    0x080272b0 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}                      |     __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
    0x080272b4 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}                      |     __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
    0x080272b8 str r3, [sp, 0x10]                                            |     var_10h = r3;
    0x080272bc b 0x8026e6c                                                   |     goto label_21;
                                                                             | label_26:
    0x080272c0 stmdaeq r5, {r3, r4, r5, r6, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r5, {r3, r4, r5, r6, sb, sl, ip, sp, lr}");
    0x080272c4 stmdaeq r5, {r3, r4, r5, r6, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r5, {r3, r4, r5, r6, sb, sl, ip, sp, lr}");
    0x080272c8 add r3, r3, r0, lsl 2                                         |     r3 += (r0 << 2);
    0x080272cc ldr r5, [r3, 0x3fc]                                           |     r5 = *((r3 + 0x3fc));
    0x080272d0 b 0x8026c38                                                   |     goto label_9;
                                                                             | label_41:
    0x080272d4 mov r5, 0x100                                                 |     r5 = 0x100;
    0x080272d8 b 0x80270b4                                                   |     goto label_22;
                                                                             | label_35:
    0x080272dc mov r0, r8                                                    |     r0 = r8;
    0x080272e0 mov r5, 0x200                                                 |     r5 = 0x200;
    0x080272e4 stmdaeq r8, {r2, r3, r5, r7, r8, fp, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r3, r5, r7, r8, fp, ip, sp, lr}");
    0x080272e8 b 0x8026c38                                                   |     goto label_9;
                                                                             | label_38:
    0x080272ec mov r3, r5                                                    |     r3 = r5;
    0x080272f0 b 0x8026c28                                                   |     goto label_19;
                                                                             | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x801fe2c */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) sym.ext4_set_aops ()                                         | void ext4_set_aops (uint32_t arg1) {
                                                                         |     r0 = arg1;
    0x0801fe2c push {r4, lr}                                             |     
    0x0801fe30 mov r4, r0                                                |     r4 = r0;
    0x0801fe34 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}          |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x0801fe38 sub r3, r0, 2                                             |     r3 = r0 - 2;
    0x0801fe3c bics r3, r3, 2                                            |     __asm ("bics r3, r3, 2");
                                                                         |     if (? != ?) {
    0x0801fe40 beq 0x801fe5c                                             |         
    0x0801fe44 cmp r0, 1                                                 |         
                                                                         |         if (r0 != 1) {
    0x0801fe48 bne 0x801fe80                                             |             goto label_0;
                                                                         |         }
    0x0801fe4c ldr r3, [r4, 0x18]                                        |         r3 = *((r4 + 0x18));
    0x0801fe50 ldr r2, [pc, 0x2c]                                        |         r2 = $d;
    0x0801fe54 str r2, [r3, 0x38]                                        |         *((r3 + 0x38)) = r2;
    0x0801fe58 pop {r4, pc}                                              |         
                                                                         |     }
    0x0801fe5c ldr r3, [r4, 0x14]                                        |     r3 = *((r4 + 0x14));
    0x0801fe60 ldr r2, [r4, 0x18]                                        |     r2 = *((r4 + 0x18));
    0x0801fe64 ldr r3, [r3, 0x1f0]                                       |     r3 = *((r3 + 0x1f0));
    0x0801fe68 ldr r3, [r3, 0x4c]                                        |     r3 = *((r3 + 0x4c));
    0x0801fe6c tst r3, 0x8000000                                         |     
                                                                         |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0801fe70 ldrne r3, [pc, 0x10]                                      |         r3 = loc..LANCHOR0;
                                                                         |     }
                                                                         |     if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x0801fe74 ldreq r3, [pc, 0x10]                                      |         r3 = loc..LANCHOR0;
                                                                         |     }
    0x0801fe78 str r3, [r2, 0x38]                                        |     *((r2 + 0x38)) = r3;
    0x0801fe7c pop {r4, pc}                                              |     
                                                                         | label_0:
    0x0801fe80 udf 0x12                                                  |     __asm ("udf 0x12");
                                                                         | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8019c58 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.ext4_try_to_write_inline_data ()                             | void ext4_try_to_write_inline_data (int32_t arg_60h, int32_t arg_64h, int32_t arg_68h, int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_10h;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_20h;
                                                                             |     int32_t var_2ch;
                                                                             |     int32_t var_3ch;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08019c58 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x08019c5c mov r6, r0                                                    |     r6 = r0;
    0x08019c60 mov r4, r1                                                    |     r4 = r1;
    0x08019c64 sub sp, sp, 0x3c                                              |     
    0x08019c68 ldr r7, [sp, 0x60]                                            |     r7 = *(arg_60h);
    0x08019c6c adds r7, r7, r2                                               |     r7 += r2;
    0x08019c70 adc r5, r3, 0                                                 |     __asm ("adc r5, r3, 0");
    0x08019c74 add r3, r1, 0x1b4                                             |     r3 = r1 + 0x1b4;
    0x08019c78 ldrh r0, [r3]                                                 |     r0 = *(r3);
    0x08019c7c cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x08019c80 moveq r3, r0                                                  |         r3 = r0;
                                                                             |     }
                                                                             |     if (r0 != 0) {
    0x08019c84 beq 0x8019c94                                                 |         
    0x08019c88 mov r0, r1                                                    |         r0 = r1;
    0x08019c8c bl 0x801891c                                                  |         r0 = ext4_get_max_inline_size_part_0 ();
    0x08019c90 asr r3, r0, 0x1f                                              |         r3 = r0 >> 0x1f;
                                                                             |     }
    0x08019c94 cmp r0, r7                                                    |     
    0x08019c98 sbcs r3, r3, r5                                               |     __asm ("sbcs r3, r3, r5");
                                                                             |     if (r0 >= r7) {
    0x08019c9c bge 0x8019f64                                                 |         goto label_20;
                                                                             |     }
                                                                             | label_6:
    0x08019ca0 ldr r3, [r4, -0x6c]                                           |     r3 = *((r4 - 0x6c));
    0x08019ca4 mov r2, 0                                                     |     r2 = 0;
    0x08019ca8 str r2, [sp, 0x1c]                                            |     var_1ch = r2;
    0x08019cac tst r3, 0x10000000                                            |     
    0x08019cb0 bne 0x8019cdc                                                 |     
                                                                             |     while (r3 == r2) {
    0x08019cb4 mrs r2, apsr                                                  |         r2 = apsr;
    0x08019cb8 cpsid i                                                       |         __asm ("cpsid i");
    0x08019cbc ldr r3, [r4, -0x70]                                           |         r3 = *((r4 - 0x70));
    0x08019cc0 bic r3, r3, 0x80                                              |         r3 = BIT_MASK (r3, 0x80);
    0x08019cc4 str r3, [r4, -0x70]                                           |         *((r4 - 0x70)) = r3;
    0x08019cc8 msr cpsr_c, r2                                                |         cpsr_c = r2;
    0x08019ccc mov r5, 0                                                     |         r5 = 0;
                                                                             | label_0:
    0x08019cd0 mov r0, r5                                                    |         r0 = r5;
    0x08019cd4 add sp, sp, 0x3c                                              |         
    0x08019cd8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
    0x08019cdc movw r7, 0x1b6                                                |         r7 = 0x1b6;
    0x08019ce0 ldrh r3, [r4, r7]                                             |         r3 = *((r4 + r7));
    0x08019ce4 cmp r3, r2                                                    |         
    0x08019ce8 beq 0x8019cb4                                                 |         
                                                                             |     }
    0x08019cec mov r0, r4                                                    |     r0 = r4;
    0x08019cf0 stmdaeq r2, {r4, r5, r6, r7, sl, ip}                          |     __asm ("stmdaeq r2, {r4, r5, r6, r7, sl, ip}");
    0x08019cf4 add r1, sp, 0x2c                                              |     r1 += var_2ch;
    0x08019cf8 mov sb, r0                                                    |     sb = r0;
    0x08019cfc mov r0, r4                                                    |     r0 = r4;
    0x08019d00 stmdaeq r2, {r3, r5, r6, r7, r8}                              |     __asm ("stmdaeq r2, {r3, r5, r6, r7, r8}");
    0x08019d04 subs r5, r0, 0                                                |     r5 = r0 - 0;
                                                                             |     if (r5 != r0) {
    0x08019d08 bne 0x8019cd0                                                 |         goto label_0;
                                                                             |     }
    0x08019d0c stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
    0x08019d10 stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
    0x08019d14 add r3, r4, r7                                                |     r3 = r4 + r7;
    0x08019d18 str r3, [sp, 8]                                               |     var_8h = r3;
                                                                             | label_1:
    0x08019d1c ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08019d20 mov r3, sb                                                    |     r3 = sb;
    0x08019d24 mov r7, 0                                                     |     r7 = 0;
    0x08019d28 mov r2, 2                                                     |     r2 = 2;
    0x08019d2c ldr r1, [r0, 0x1f0]                                           |     r1 = *((r0 + 0x1f0));
    0x08019d30 ldr r1, [r1, 0x2c]                                            |     r1 = *((r1 + 0x2c));
    0x08019d34 str r7, [sp]                                                  |     *(sp) = r7;
    0x08019d38 lsl r1, r1, 3                                                 |     r1 <<= 3;
    0x08019d3c str r1, [sp, 4]                                               |     var_4h = r1;
    0x08019d40 mov r1, 0x228                                                 |     r1 = 0x228;
    0x08019d44 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
    0x08019d48 mov r8, r0                                                    |     r8 = r0;
    0x08019d4c cmn r0, 0x1000                                                |     
                                                                             |     if (r0 > 0x1000) {
    0x08019d50 bhi 0x801a198                                                 |         goto label_21;
                                                                             |     }
    0x08019d54 ldr r3, [sp, 0x64]                                            |     r3 = *(arg_64h);
    0x08019d58 mov r1, r7                                                    |     r1 = r7;
    0x08019d5c mov r0, r6                                                    |     r0 = r6;
    0x08019d60 orr r3, r3, 2                                                 |     r3 |= 2;
    0x08019d64 str r3, [sp, 0x64]                                            |     *(arg_64h) = r3;
    0x08019d68 mov r2, r3                                                    |     r2 = r3;
    0x08019d6c stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr}");
    0x08019d70 subs r7, r0, 0                                                |     r7 = r0 - 0;
                                                                             |     if (r7 == r0) {
    0x08019d74 beq 0x801a2d4                                                 |         goto label_22;
                                                                             |     }
    0x08019d78 sub sl, r4, 0x68                                              |     sl = r4 - 0x68;
    0x08019d7c mov r0, sl                                                    |     r0 = sl;
    0x08019d80 stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x08019d84 ldr r3, [r4, -0x70]                                           |     r3 = *((r4 - 0x70));
    0x08019d88 ubfx r3, r3, 3, 1                                             |     r3 = (r3 >> 3) & ((1 << 1) - 1);
    0x08019d8c str r3, [sp, 0xc]                                             |     var_ch = r3;
    0x08019d90 mrs r2, apsr                                                  |     r2 = apsr;
    0x08019d94 cpsid i                                                       |     __asm ("cpsid i");
    0x08019d98 ldr r3, [r4, -0x70]                                           |     r3 = *((r4 - 0x70));
    0x08019d9c orr r3, r3, 8                                                 |     r3 |= 8;
    0x08019da0 str r3, [r4, -0x70]                                           |     *((r4 - 0x70)) = r3;
    0x08019da4 msr cpsr_c, r2                                                |     cpsr_c = r2;
    0x08019da8 ldr r3, [r4, -0x6c]                                           |     r3 = *((r4 - 0x6c));
    0x08019dac tst r3, 0x10000000                                            |     
                                                                             |     if ((r3 & 0x10000000) == 0) {
    0x08019db0 beq 0x801a120                                                 |         goto label_11;
                                                                             |     }
    0x08019db4 ldr r3, [sp, 8]                                               |     r3 = var_8h;
    0x08019db8 ldrh r3, [r3]                                                 |     r3 = *(r3);
    0x08019dbc cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08019dc0 beq 0x801a120                                                 |         goto label_11;
                                                                             |     }
    0x08019dc4 add r3, r4, 0x1b8                                             |     r3 = r4 + 0x1b8;
    0x08019dc8 ldrh r3, [r3]                                                 |     r3 = *(r3);
    0x08019dcc str r3, [sp, 0x14]                                            |     var_14h = r3;
    0x08019dd0 ldr r3, [r7, 4]                                               |     r3 = *((r7 + 4));
    0x08019dd4 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x08019dd8 subne r3, r3, 1                                               |         r3--;
                                                                             |     }
                                                                             |     if ((r3 & 1) != 0) {
    0x08019ddc moveq r3, r7                                                  |         r3 = r7;
                                                                             |     }
    0x08019de0 ldr r3, [r3]                                                  |     r3 = *(r3);
    0x08019de4 tst r3, 4                                                     |     
                                                                             |     if ((r3 & 4) == 0) {
    0x08019de8 beq 0x801a240                                                 |         goto label_23;
                                                                             |     }
                                                                             | label_10:
    0x08019dec mov r1, r4                                                    |     r1 = r4;
    0x08019df0 mov r0, r8                                                    |     r0 = r8;
    0x08019df4 bl 0x8018da4                                                  |     r0 = ext4_destroy_inline_data_nolock ();
    0x08019df8 cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x08019dfc bne 0x801a254                                                 |         goto label_24;
                                                                             |     }
    0x08019e00 ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x08019e04 ldr r3, [r3, 0x1f0]                                           |     r3 = *((r3 + 0x1f0));
    0x08019e08 ldr r3, [r3, 0x4c]                                            |     r3 = *((r3 + 0x4c));
    0x08019e0c tst r3, 0x400000                                              |     
                                                                             |     if ((r3 & 0x400000) == 0) {
    0x08019e10 beq 0x801a210                                                 |         goto label_25;
                                                                             |     }
    0x08019e14 ldrh r3, [r4]                                                 |     r3 = *(r4);
    0x08019e18 and r3, r3, 0xf000                                            |     r3 &= 0xf000;
    0x08019e1c cmp r3, 0x8000                                                |     
                                                                             |     if (r3 != 0x8000) {
    0x08019e20 bne 0x801a210                                                 |         goto label_25;
                                                                             |     }
    0x08019e24 ldr r3, [r4, -0x6c]                                           |     r3 = *((r4 - 0x6c));
    0x08019e28 tst r3, 0x80000                                               |     
                                                                             |     if ((r3 & 0x80000) == 0) {
    0x08019e2c beq 0x801a210                                                 |         goto label_25;
                                                                             |     }
    0x08019e30 mov r0, r4                                                    |     r0 = r4;
    0x08019e34 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x08019e38 tst r0, 1                                                     |     
                                                                             |     if ((r0 & 1) != 0) {
    0x08019e3c bne 0x801a210                                                 |         goto label_25;
                                                                             |     }
    0x08019e40 ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x08019e44 ldr r3, [r3, 0x1f0]                                           |     r3 = *((r3 + 0x1f0));
    0x08019e48 ldr r3, [r3, 0x4c]                                            |     r3 = *((r3 + 0x4c));
    0x08019e4c tst r3, 0x8000000                                             |     
                                                                             |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x08019e50 beq 0x801a210                                                 |         goto label_25;
                                                                             |     }
    0x08019e54 ldr r3, [sp, 0x14]                                            |     r3 = var_14h;
    0x08019e58 mov r0, r7                                                    |     r0 = r7;
    0x08019e5c str r3, [sp]                                                  |     *(sp) = r3;
    0x08019e60 mov r2, 0                                                     |     r2 = 0;
    0x08019e64 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}                      |     __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
    0x08019e68 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}                      |     __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
    0x08019e6c str r3, [sp, 4]                                               |     var_4h = r3;
    0x08019e70 mov r3, 0                                                     |     r3 = 0;
    0x08019e74 stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}                      |     __asm ("stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}");
    0x08019e78 str r0, [sp, 0x10]                                            |     var_10h = r0;
                                                                             | label_8:
    0x08019e7c ldr r3, [sp, 0x10]                                            |     r3 = var_10h;
    0x08019e80 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08019e84 beq 0x801a0c0                                                 |         goto label_26;
                                                                             |     }
                                                                             | label_19:
    0x08019e88 mov r0, r7                                                    |     r0 = r7;
    0x08019e8c stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x08019e90 ldr r3, [r7, 4]                                               |     r3 = *((r7 + 4));
    0x08019e94 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x08019e98 subne r7, r3, 1                                               |         r7 = r3 - 1;
                                                                             |     }
    0x08019e9c add r3, r7, 0x1c                                              |     r3 = r7 + 0x1c;
    0x08019ea0 pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x08019ea4 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x08019ea8 sub r2, r2, 1                                                 |         r2--;
    0x08019eac strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x08019eb0 teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x08019eb4 bne 0x8019ea4                                                 |         
                                                                             |     } while ((r3 & 1) != 0);
    0x08019eb8 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08019ebc beq 0x801a2c8                                                 |         goto label_27;
                                                                             |     }
                                                                             | label_17:
    0x08019ec0 mov r1, r4                                                    |     r1 = r4;
    0x08019ec4 mov r0, r8                                                    |     r0 = r8;
    0x08019ec8 stmdaeq r3, {r2, r4, r5, r6, sb, fp, ip, sp, pc}              |     __asm ("stmdaeq r3, {r2, r4, r5, r6, sb, fp, ip, sp, pc}");
    0x08019ecc ldr r3, [sp, 0xc]                                             |     r3 = var_ch;
    0x08019ed0 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08019ed4 beq 0x801a2ac                                                 |         goto label_28;
                                                                             |     }
                                                                             | label_16:
    0x08019ed8 mov r0, sl                                                    |     r0 = sl;
    0x08019edc sub r7, r4, 0x10                                              |     r7 = r4 - 0x10;
    0x08019ee0 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x08019ee4 mov r1, 0x260                                                 |     r1 = 0x260;
    0x08019ee8 mov r2, r8                                                    |     r2 = r8;
    0x08019eec ldr r0, [pc, 0x440]                                           |     r0 = *(0x801a330);
    0x08019ef0 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x08019ef4 mov r0, r7                                                    |     r0 = r7;
    0x08019ef8 stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x08019efc ldr r0, [r4, 0x18]                                            |     r0 = *((r4 + 0x18));
    0x08019f00 ldrd r2, r3, [r4, 0x30]                                       |     __asm ("ldrd r2, r3, [r4, 0x30]");
    0x08019f04 stmdaeq r8, {r5, r6, fp, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r5, r6, fp, ip, sp, lr}");
    0x08019f08 mov r0, r4                                                    |     r0 = r4;
    0x08019f0c stmdaeq r2, {r3, r4, r5, r6, lr}                              |     __asm ("stmdaeq r2, {r3, r4, r5, r6, lr}");
    0x08019f10 mov r0, r7                                                    |     r0 = r7;
    0x08019f14 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x08019f18 ldr r3, [r4, 0x24]                                            |     r3 = *((r4 + 0x24));
    0x08019f1c cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08019f20 bne 0x801a29c                                                 |         goto label_29;
                                                                             |     }
                                                                             | label_15:
    0x08019f24 ldr r3, [sp, 0x10]                                            |     r3 = var_10h;
    0x08019f28 cmn r3, 0x1c                                                  |     
                                                                             |     if (r3 != 0x1c) {
    0x08019f2c bne 0x8019f44                                                 |         goto label_30;
                                                                             |     }
    0x08019f30 ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08019f34 add r1, sp, 0x1c                                              |     r1 += var_1ch;
    0x08019f38 stmdaeq r0, {r4, r5, r6, fp}                                  |     __asm ("stmdaeq r0, {r4, r5, r6, fp}");
    0x08019f3c cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x08019f40 bne 0x8019d1c                                                 |         goto label_1;
                                                                             |     }
                                                                             | label_30:
    0x08019f44 ldr r5, [sp, 0x10]                                            |     r5 = var_10h;
                                                                             | label_4:
    0x08019f48 ldr r0, [sp, 0x2c]                                            |     r0 = var_2ch;
    0x08019f4c cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x08019f50 beq 0x8019cd0                                                 |         goto label_0;
                                                                             |     }
    0x08019f54 stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}");
                                                                             | label_2:
    0x08019f58 mov r0, r5                                                    |     r0 = r5;
    0x08019f5c add sp, sp, 0x3c                                              |     
    0x08019f60 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_20:
    0x08019f64 add r1, sp, 0x20                                              |     r1 += var_20h;
    0x08019f68 mov r0, r4                                                    |     r0 = r4;
    0x08019f6c stmdaeq r2, {r3, r5, r6, r7, r8}                              |     __asm ("stmdaeq r2, {r3, r5, r6, r7, r8}");
    0x08019f70 subs r5, r0, 0                                                |     r5 = r0 - 0;
                                                                             |     if (r5 != r0) {
    0x08019f74 bne 0x8019cd0                                                 |         goto label_0;
                                                                             |     }
    0x08019f78 ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08019f7c mov r3, 1                                                     |     r3 = 1;
    0x08019f80 movw r1, 0x29b                                                |     r1 = 0x29b;
    0x08019f84 mov r2, r3                                                    |     r2 = r3;
    0x08019f88 ldr ip, [r0, 0x1f0]                                           |     ip = *((r0 + 0x1f0));
    0x08019f8c ldr ip, [ip, 0x2c]                                            |     ip = *((ip + 0x2c));
    0x08019f90 str r5, [sp]                                                  |     *(sp) = r5;
    0x08019f94 lsl ip, ip, 3                                                 |     
    0x08019f98 str ip, [sp, 4]                                               |     var_4h = ip;
    0x08019f9c stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
    0x08019fa0 cmn r0, 0x1000                                                |     
    0x08019fa4 mov r8, r0                                                    |     r8 = r0;
                                                                             |     if (r0 <= 0x1000) {
    0x08019fa8 movhi r5, r0                                                  |         r5 = r0;
                                                                             |     }
                                                                             |     if (r0 <= 0x1000) {
    0x08019fac bhi 0x801a080                                                 |         
    0x08019fb0 mov r2, r7                                                    |         r2 = r7;
    0x08019fb4 mov r1, r4                                                    |         r1 = r4;
    0x08019fb8 bl 0x80198b0                                                  |         r0 = ext4_prepare_inline_data ();
    0x08019fbc mov r5, r0                                                    |         r5 = r0;
    0x08019fc0 cmp r0, 0                                                     |         
    0x08019fc4 cmnne r0, 0x1c                                                |         __asm ("cmnne r0, 0x1c");
                                                                             |         if (r0 != 0) {
    0x08019fc8 bne 0x801a094                                                 |             goto label_31;
                                                                             |         }
    0x08019fcc cmn r0, 0x1c                                                  |         
                                                                             |         if (r0 == 0x1c) {
    0x08019fd0 beq 0x801a1a0                                                 |             goto label_32;
                                                                             |         }
    0x08019fd4 ldr r3, [sp, 0x20]                                            |         r3 = var_20h;
    0x08019fd8 mov r2, r8                                                    |         r2 = r8;
    0x08019fdc ldr r0, [pc, 0x354]                                           |         r0 = "ext4_validate_block_bitmap";
    0x08019fe0 movw r1, 0x2ad                                                |         r1 = 0x2ad;
    0x08019fe4 stmdaeq r0, {r5, r6, r8, sb, fp, ip, sp}                      |         __asm ("stmdaeq r0, {r5, r6, r8, sb, fp, ip, sp}");
    0x08019fe8 subs r5, r0, 0                                                |         r5 = r0 - 0;
                                                                             |         if (r5 != r0) {
    0x08019fec bne 0x801a094                                                 |             goto label_31;
                                                                             |         }
    0x08019ff0 ldr r3, [sp, 0x64]                                            |         r3 = *(arg_64h);
    0x08019ff4 mov r0, r6                                                    |         r0 = r6;
    0x08019ff8 mov r1, r5                                                    |         r1 = r5;
    0x08019ffc orr r2, r3, 2                                                 |         r2 = r3 | 2;
    0x0801a000 stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr}              |         __asm ("stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr}");
    0x0801a004 subs r6, r0, 0                                                |         r6 = r0 - 0;
                                                                             |         if (r6 == r0) {
    0x0801a008 beq 0x801a188                                                 |             goto label_33;
                                                                             |         }
    0x0801a00c ldr r3, [sp, 0x68]                                            |         r3 = *(arg_68h);
    0x0801a010 sub sb, r4, 0x68                                              |         sb = r4 - 0x68;
    0x0801a014 mov r0, sb                                                    |         r0 = sb;
    0x0801a018 str r6, [r3]                                                  |         *(r3) = r6;
    0x0801a01c stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr}              |         __asm ("stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr}");
    0x0801a020 ldr r7, [r4, -0x6c]                                           |         r7 = *((r4 - 0x6c));
    0x0801a024 ubfx r7, r7, 0x1c, 1                                          |         r7 = (r7 >> 0x1c) & ((1 << 1) - 1);
    0x0801a028 cmp r7, 0                                                     |         
                                                                             |         if (r7 == 0) {
    0x0801a02c beq 0x801a1c4                                                 |             goto label_34;
                                                                             |         }
    0x0801a030 movw r3, 0x1b6                                                |         r3 = 0x1b6;
    0x0801a034 ldrh r3, [r4, r3]                                             |         r3 = *((r4 + r3));
    0x0801a038 cmp r3, 0                                                     |         
                                                                             |         if (r3 == 0) {
    0x0801a03c beq 0x801a1c4                                                 |             goto label_34;
                                                                             |         }
    0x0801a040 ldr r3, [r6, 4]                                               |         r3 = *((r6 + 4));
    0x0801a044 tst r3, 1                                                     |         
                                                                             |         if ((r3 & 1) == 0) {
    0x0801a048 subne r3, r3, 1                                               |             r3--;
                                                                             |         }
                                                                             |         if ((r3 & 1) != 0) {
    0x0801a04c moveq r3, r6                                                  |             r3 = r6;
                                                                             |         }
    0x0801a050 ldr r5, [r3]                                                  |         r5 = *(r3);
    0x0801a054 ubfx r5, r5, 2, 1                                             |         r5 = (r5 >> 2) & ((1 << 1) - 1);
    0x0801a058 cmp r5, 0                                                     |         
                                                                             |         if (r5 != 0) {
    0x0801a05c bne 0x801a290                                                 |             goto label_35;
                                                                             |         }
    0x0801a060 mov r0, r4                                                    |         r0 = r4;
    0x0801a064 mov r1, r6                                                    |         r1 = r6;
    0x0801a068 bl 0x8018f94                                                  |         r0 = ext4_read_inline_page ();
    0x0801a06c subs r5, r0, 0                                                |         r5 = r0 - 0;
                                                                             |         if (r5 < r0) {
    0x0801a070 blt 0x801a2dc                                                 |             goto label_36;
                                                                             |         }
    0x0801a074 mov r0, sb                                                    |         r0 = sb;
    0x0801a078 mov r5, r7                                                    |         r5 = r7;
    0x0801a07c stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}              |         __asm ("stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}");
                                                                             |     }
                                                                             | label_3:
    0x0801a080 ldr r0, [sp, 0x20]                                            |     r0 = var_20h;
    0x0801a084 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x0801a088 beq 0x8019cd0                                                 |         goto label_0;
                                                                             |     }
    0x0801a08c stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}");
    0x0801a090 b 0x8019f58                                                   |     goto label_2;
                                                                             | label_31:
    0x0801a094 cmp r8, 0                                                     |     
    0x0801a098 cmpne r5, 1                                                   |     __asm ("cmpne r5, 1");
                                                                             |     if (r8 == 0) {
    0x0801a09c movne r4, 1                                                   |         r4 = 1;
                                                                             |     }
                                                                             |     if (r8 != 0) {
    0x0801a0a0 moveq r4, 0                                                   |         r4 = 0;
                                                                             |     }
                                                                             | label_7:
    0x0801a0a4 cmp r4, 0                                                     |     
                                                                             |     if (r4 == 0) {
    0x0801a0a8 beq 0x801a080                                                 |         goto label_3;
                                                                             |     }
                                                                             | label_5:
    0x0801a0ac mov r2, r8                                                    |     r2 = r8;
    0x0801a0b0 movw r1, 0x2d1                                                |     r1 = 0x2d1;
    0x0801a0b4 ldr r0, [pc, 0x27c]                                           |     r0 = "ext4_validate_block_bitmap";
    0x0801a0b8 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x0801a0bc b 0x801a080                                                   |     goto label_3;
                                                                             | label_26:
    0x0801a0c0 mov r0, r4                                                    |     r0 = r4;
    0x0801a0c4 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x0801a0c8 tst r0, 1                                                     |     
                                                                             |     if ((r0 & 1) != 0) {
    0x0801a0cc beq 0x801a10c                                                 |         
    0x0801a0d0 ldr r3, [r7]                                                  |         r3 = *(r7);
    0x0801a0d4 tst r3, 0x2000                                                |         
                                                                             |         if ((r3 & 0x2000) == 0) {
    0x0801a0d8 beq 0x801a328                                                 |             goto label_37;
                                                                             |         }
    0x0801a0dc ldr r3, [sp, 0x10]                                            |         r3 = var_10h;
    0x0801a0e0 mov r0, r8                                                    |         r0 = r8;
    0x0801a0e4 ldr r1, [r7, 0x14]                                            |         r1 = *((r7 + 0x14));
    0x0801a0e8 stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}          |         __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}");
    0x0801a0ec stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}          |         __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}");
    0x0801a0f0 mov r2, r3                                                    |         r2 = r3;
    0x0801a0f4 str r3, [sp]                                                  |         *(sp) = r3;
    0x0801a0f8 str ip, [sp, 4]                                               |         var_4h = ip;
    0x0801a0fc ldr r3, [sp, 0x14]                                            |         r3 = var_14h;
    0x0801a100 stmdaeq r1, {r4, r6, r8, sb, fp, ip, sp, lr, pc}              |         __asm ("stmdaeq r1, {r4, r6, r8, sb, fp, ip, sp, lr, pc}");
    0x0801a104 cmp r0, 0                                                     |         
                                                                             |         if (r0 != 0) {
    0x0801a108 bne 0x801a32c                                                 |             goto label_38;
                                                                             |         }
                                                                             |     }
    0x0801a10c mov r5, 0                                                     |     r5 = 0;
    0x0801a110 ldr r2, [sp, 0x14]                                            |     r2 = var_14h;
    0x0801a114 mov r0, r7                                                    |     r0 = r7;
    0x0801a118 mov r1, 0                                                     |     r1 = 0;
    0x0801a11c stmdaeq r8, {r2, r5, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r5, r6, r7, fp, ip, sp, lr}");
                                                                             | label_11:
    0x0801a120 mov r0, r7                                                    |     r0 = r7;
    0x0801a124 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x0801a128 ldr r3, [r7, 4]                                               |     r3 = *((r7 + 4));
    0x0801a12c tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) != 0) {
    0x0801a130 bne 0x801a288                                                 |         goto label_39;
                                                                             |     }
                                                                             | label_14:
    0x0801a134 add r3, r7, 0x1c                                              |     r3 = r7 + 0x1c;
    0x0801a138 pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x0801a13c ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x0801a140 sub r2, r2, 1                                                 |         r2--;
    0x0801a144 strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x0801a148 teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x0801a14c bne 0x801a13c                                                 |         
                                                                             |     } while ((r3 & 1) != 0);
    0x0801a150 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x0801a154 beq 0x801a234                                                 |         goto label_40;
                                                                             |     }
                                                                             | label_9:
    0x0801a158 ldr r3, [sp, 0xc]                                             |     r3 = var_ch;
    0x0801a15c cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x0801a160 beq 0x801a25c                                                 |         goto label_41;
                                                                             |     }
                                                                             | label_12:
    0x0801a164 mov r0, sl                                                    |     r0 = sl;
    0x0801a168 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
                                                                             | label_18:
    0x0801a16c cmp r8, 0                                                     |     
                                                                             |     if (r8 == 0) {
    0x0801a170 beq 0x8019f48                                                 |         goto label_4;
                                                                             |     }
    0x0801a174 mov r2, r8                                                    |     r2 = r8;
    0x0801a178 movw r1, 0x27a                                                |     r1 = 0x27a;
    0x0801a17c ldr r0, [pc, 0x1b0]                                           |     r0 = *(0x801a330);
    0x0801a180 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x0801a184 b 0x8019f48                                                   |     goto label_4;
                                                                             | label_33:
    0x0801a188 cmp r8, 0                                                     |     
    0x0801a18c mvn r5, 0xb                                                   |     r5 = ~0xb;
                                                                             |     if (r8 == 0) {
    0x0801a190 beq 0x801a080                                                 |         goto label_3;
                                                                             |     }
    0x0801a194 b 0x801a0ac                                                   |     goto label_5;
                                                                             | label_21:
    0x0801a198 mov r5, r0                                                    |     r5 = r0;
    0x0801a19c b 0x8019f48                                                   |     goto label_4;
                                                                             | label_32:
    0x0801a1a0 ldr r0, [pc, 0x190]                                           |     r0 = "ext4_validate_block_bitmap";
    0x0801a1a4 mov r2, r8                                                    |     r2 = r8;
    0x0801a1a8 mov r1, 0x2a8                                                 |     r1 = 0x2a8;
    0x0801a1ac stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x0801a1b0 ldr r0, [sp, 0x20]                                            |     r0 = var_20h;
    0x0801a1b4 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x0801a1b8 beq 0x8019ca0                                                 |         goto label_6;
                                                                             |     }
    0x0801a1bc stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}");
    0x0801a1c0 b 0x8019ca0                                                   |     goto label_6;
                                                                             | label_34:
    0x0801a1c4 mov r0, r6                                                    |     r0 = r6;
    0x0801a1c8 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x0801a1cc ldr r3, [r6, 4]                                               |     r3 = *((r6 + 4));
    0x0801a1d0 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x0801a1d4 subne r6, r3, 1                                               |         r6 = r3 - 1;
                                                                             |     }
    0x0801a1d8 add r3, r6, 0x1c                                              |     r3 = r6 + 0x1c;
    0x0801a1dc pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x0801a1e0 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x0801a1e4 sub r2, r2, 1                                                 |         r2--;
    0x0801a1e8 strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x0801a1ec teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x0801a1f0 bne 0x801a1e0                                                 |         
                                                                             |     } while ((r3 & 1) != 0);
    0x0801a1f4 subs r4, r8, 0                                                |     r4 = r8 - 0;
                                                                             |     if (r4 == r8) {
    0x0801a1f8 movne r4, 1                                                   |         r4 = 1;
                                                                             |     }
    0x0801a1fc cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x0801a200 beq 0x801a278                                                 |         goto label_42;
                                                                             |     }
                                                                             | label_13:
    0x0801a204 mov r0, sb                                                    |     r0 = sb;
    0x0801a208 stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}");
    0x0801a20c b 0x801a0a4                                                   |     goto label_7;
                                                                             | label_25:
    0x0801a210 ldr r3, [sp, 0x14]                                            |     r3 = var_14h;
    0x0801a214 mov r0, r7                                                    |     r0 = r7;
    0x0801a218 str r3, [sp]                                                  |     *(sp) = r3;
    0x0801a21c mov r2, 0                                                     |     r2 = 0;
    0x0801a220 str fp, [sp, 4]                                               |     var_4h = fp;
    0x0801a224 mov r3, 0                                                     |     r3 = 0;
    0x0801a228 stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}                      |     __asm ("stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}");
    0x0801a22c str r0, [sp, 0x10]                                            |     var_10h = r0;
    0x0801a230 b 0x8019e7c                                                   |     goto label_8;
                                                                             | label_40:
    0x0801a234 mov r0, r7                                                    |     r0 = r7;
    0x0801a238 stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
    0x0801a23c b 0x801a158                                                   |     goto label_9;
                                                                             | label_23:
    0x0801a240 mov r1, r7                                                    |     r1 = r7;
    0x0801a244 mov r0, r4                                                    |     r0 = r4;
    0x0801a248 bl 0x8018f94                                                  |     r0 = ext4_read_inline_page ();
    0x0801a24c cmp r0, 0                                                     |     
                                                                             |     if (r0 >= 0) {
    0x0801a250 bge 0x8019dec                                                 |         goto label_10;
                                                                             |     }
                                                                             | label_24:
    0x0801a254 mov r5, r0                                                    |     r5 = r0;
    0x0801a258 b 0x801a120                                                   |     goto label_11;
                                                                             | label_41:
    0x0801a25c mrs r2, apsr                                                  |     r2 = apsr;
    0x0801a260 cpsid i                                                       |     __asm ("cpsid i");
    0x0801a264 ldr r3, [r4, -0x70]                                           |     r3 = *((r4 - 0x70));
    0x0801a268 bic r3, r3, 8                                                 |     r3 = BIT_MASK (r3, 8);
    0x0801a26c str r3, [r4, -0x70]                                           |     *((r4 - 0x70)) = r3;
    0x0801a270 msr cpsr_c, r2                                                |     cpsr_c = r2;
    0x0801a274 b 0x801a164                                                   |     goto label_12;
                                                                             | label_42:
    0x0801a278 mov r0, r6                                                    |     r0 = r6;
    0x0801a27c mov r5, r2                                                    |     r5 = r2;
    0x0801a280 stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
    0x0801a284 b 0x801a204                                                   |     goto label_13;
                                                                             | label_39:
    0x0801a288 sub r7, r3, 1                                                 |     r7 = r3 - 1;
    0x0801a28c b 0x801a134                                                   |     goto label_14;
                                                                             | label_35:
    0x0801a290 mov r0, sb                                                    |     r0 = sb;
    0x0801a294 stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}");
    0x0801a298 b 0x801a080                                                   |     goto label_3;
                                                                             | label_29:
    0x0801a29c mov r1, r4                                                    |     r1 = r4;
    0x0801a2a0 mov r0, 0                                                     |     r0 = 0;
    0x0801a2a4 stmdaeq r3, {r2, r4, r6, r7, sb, ip, lr, pc}                  |     __asm ("stmdaeq r3, {r2, r4, r6, r7, sb, ip, lr, pc}");
    0x0801a2a8 b 0x8019f24                                                   |     goto label_15;
                                                                             | label_28:
    0x0801a2ac mrs r2, apsr                                                  |     r2 = apsr;
    0x0801a2b0 cpsid i                                                       |     __asm ("cpsid i");
    0x0801a2b4 ldr r3, [r4, -0x70]                                           |     r3 = *((r4 - 0x70));
    0x0801a2b8 bic r3, r3, 8                                                 |     r3 = BIT_MASK (r3, 8);
    0x0801a2bc str r3, [r4, -0x70]                                           |     *((r4 - 0x70)) = r3;
    0x0801a2c0 msr cpsr_c, r2                                                |     cpsr_c = r2;
    0x0801a2c4 b 0x8019ed8                                                   |     goto label_16;
                                                                             | label_27:
    0x0801a2c8 mov r0, r7                                                    |     r0 = r7;
    0x0801a2cc stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
    0x0801a2d0 b 0x8019ec0                                                   |     goto label_17;
                                                                             | label_22:
    0x0801a2d4 mvn r5, 0xb                                                   |     r5 = ~0xb;
    0x0801a2d8 b 0x801a16c                                                   |     goto label_18;
                                                                             | label_36:
    0x0801a2dc mov r0, r6                                                    |     r0 = r6;
    0x0801a2e0 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x0801a2e4 ldr r3, [r6, 4]                                               |     r3 = *((r6 + 4));
    0x0801a2e8 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x0801a2ec subne r6, r3, 1                                               |         r6 = r3 - 1;
                                                                             |     }
    0x0801a2f0 add r3, r6, 0x1c                                              |     r3 = r6 + 0x1c;
    0x0801a2f4 pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x0801a2f8 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x0801a2fc sub r2, r2, 1                                                 |         r2--;
    0x0801a300 strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x0801a304 teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x0801a308 bne 0x801a2f8                                                 |         
                                                                             |     } while ((r3 & 1) != 0);
    0x0801a30c subs r4, r8, 0                                                |     r4 = r8 - 0;
                                                                             |     if (r4 == r8) {
    0x0801a310 movne r4, 1                                                   |         r4 = 1;
                                                                             |     }
    0x0801a314 cmp r2, 0                                                     |     
                                                                             |     if (r2 != 0) {
    0x0801a318 bne 0x801a204                                                 |         goto label_13;
                                                                             |     }
    0x0801a31c mov r0, r6                                                    |     r0 = r6;
    0x0801a320 stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
    0x0801a324 b 0x801a204                                                   |     goto label_13;
                                                                             | label_37:
    0x0801a328 udf 0x12                                                      |     __asm ("udf 0x12");
                                                                             | label_38:
    0x0801a32c str r0, [sp, 0x10]                                            |     var_10h = r0;
    0x0801a330 b 0x8019e88                                                   |     goto label_19;
                                                                             | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8024434 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.ext4_write_begin ()                                          | void ext4_write_begin (int32_t arg_70h, int32_t arg_74h, int32_t arg_78h, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     int32_t var_10h;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_18h;
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_20h;
                                                                             |     int32_t var_24h;
                                                                             |     int32_t var_28h;
                                                                             |     int32_t var_2ch;
                                                                             |     int32_t var_30h;
                                                                             |     int32_t var_34h;
                                                                             |     int32_t var_38h;
                                                                             |     int32_t var_3ch;
                                                                             |     int32_t var_44h;
                                                                             |     int32_t var_4ch;
                                                                             |     r1 = arg2;
    0x08024434 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x08024438 mov fp, r3                                                    |     
    0x0802443c mov r3, 0                                                     |     r3 = 0;
    0x08024440 sub sp, sp, 0x4c                                              |     
    0x08024444 ldr r4, [r1]                                                  |     r4 = *(r1);
    0x08024448 str r3, [sp, 0x44]                                            |     var_44h = r3;
    0x0802444c ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x08024450 str r1, [sp, 0x10]                                            |     var_10h = r1;
    0x08024454 ldr r3, [r3, 0x1f0]                                           |     r3 = *((r3 + 0x1f0));
    0x08024458 ldr r5, [r3, 0x130]                                           |     r5 = *((r3 + 0x130));
    0x0802445c ubfx r5, r5, 1, 1                                             |     r5 = (r5 >> 1) & ((1 << 1) - 1);
    0x08024460 cmp r5, 0                                                     |     
                                                                             |     if (r5 != 0) {
    0x08024464 bne 0x80248a4                                                 |         goto label_10;
                                                                             |     }
    0x08024468 mov r0, r4                                                    |     r0 = r4;
    0x0802446c mov sl, r2                                                    |     sl = r2;
    0x08024470 stmdaeq r2, {r4, r5, r6, r7, sl, ip}                          |     __asm ("stmdaeq r2, {r4, r5, r6, r7, sl, ip}");
    0x08024474 add r3, r0, 1                                                 |     r3 = r0 + 1;
    0x08024478 str r3, [sp, 0x14]                                            |     var_14h = r3;
    0x0802447c ldr r3, [r4, -0x70]                                           |     r3 = *((r4 - 0x70));
    0x08024480 ldr r2, [sp, 0x70]                                            |     r2 = *(arg_70h);
    0x08024484 tst r3, 0x80                                                  |     
    0x08024488 lsr r3, sl, 0xc                                               |     r3 = sl >> 0xc;
    0x0802448c orr r3, r3, fp, lsl 20                                        |     r3 |= (fp << 20);
    0x08024490 str r3, [sp, 0x24]                                            |     var_24h = r3;
    0x08024494 ubfx r3, sl, 0, 0xc                                           |     r3 = (sl >> 0) & ((1 << 0xc) - 1);
    0x08024498 str r3, [sp, 0x28]                                            |     var_28h = r3;
    0x0802449c add r3, r2, r3                                                |     r3 = r2 + r3;
    0x080244a0 str r3, [sp, 0x2c]                                            |     var_2ch = r3;
                                                                             |     if ((r3 & 0x80) != 0) {
    0x080244a4 bne 0x8024854                                                 |         goto label_11;
                                                                             |     }
                                                                             | label_7:
    0x080244a8 stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
    0x080244ac stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
    0x080244b0 str r3, [sp, 0x1c]                                            |     var_1ch = r3;
    0x080244b4 mov r3, 0xf000                                                |     
    0x080244b8 movt r3, 0xffff                                               |     r3 = 0x-1000;
    0x080244bc str r3, [sp, 0x18]                                            |     var_18h = r3;
    0x080244c0 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}                      |     __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
    0x080244c4 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}                      |     __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
    0x080244c8 str r3, [sp, 0x20]                                            |     var_20h = r3;
                                                                             | label_9:
    0x080244cc ldr r2, [sp, 0x74]                                            |     r2 = *(arg_74h);
    0x080244d0 ldr r1, [sp, 0x24]                                            |     r1 = var_24h;
    0x080244d4 ldr r0, [sp, 0x10]                                            |     r0 = var_10h;
    0x080244d8 stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr}");
    0x080244dc subs r5, r0, 0                                                |     r5 = r0 - 0;
                                                                             |     if (r5 == r0) {
    0x080244e0 beq 0x802490c                                                 |         goto label_12;
                                                                             |     }
    0x080244e4 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
                                                                             | label_0:
    0x080244e8 ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x080244ec mov ip, 0                                                     |     
    0x080244f0 ldr r3, [sp, 0x14]                                            |     r3 = var_14h;
    0x080244f4 mov r2, 2                                                     |     r2 = 2;
    0x080244f8 ldr r1, [r0, 0x1f0]                                           |     r1 = *((r0 + 0x1f0));
    0x080244fc ldr r1, [r1, 0x2c]                                            |     r1 = *((r1 + 0x2c));
    0x08024500 str ip, [sp]                                                  |     *(sp) = ip;
    0x08024504 lsl r1, r1, 3                                                 |     r1 <<= 3;
    0x08024508 str r1, [sp, 4]                                               |     var_4h = r1;
    0x0802450c movw r1, 0x49c                                                |     r1 = 0x49c;
    0x08024510 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
    0x08024514 ldr r3, [r5, 4]                                               |     r3 = *((r5 + 4));
    0x08024518 mov sb, r0                                                    |     sb = r0;
    0x0802451c cmn r0, 0x1000                                                |     
                                                                             |     if (r0 > 0x1000) {
    0x08024520 bhi 0x8024808                                                 |         goto label_13;
                                                                             |     }
    0x08024524 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x08024528 subne r3, r3, 1                                               |         r3--;
                                                                             |     }
                                                                             |     if ((r3 & 1) != 0) {
    0x0802452c moveq r3, r5                                                  |         r3 = r5;
                                                                             |     }
    0x08024530 ldr r2, [r3]                                                  |     r2 = *(r3);
    0x08024534 tst r2, 1                                                     |     
                                                                             |     if ((r2 & 1) != 0) {
    0x08024538 bne 0x80246fc                                                 |         goto label_14;
                                                                             |     }
    0x0802453c pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x08024540 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x08024544 orr r1, r2, 1                                                 |         r1 = r2 | 1;
    0x08024548 strex r0, r1, [r3]                                            |         __asm ("strex r0, r1, [r3]");
    0x0802454c teq r0, 0                                                     |         __asm ("teq r0, 0");
    0x08024550 bne 0x8024540                                                 |         
                                                                             |     } while ((r2 & 1) != 0);
    0x08024554 tst r2, 1                                                     |     
                                                                             |     if ((r2 & 1) != 0) {
    0x08024558 bne 0x80246fc                                                 |         goto label_14;
                                                                             |     }
                                                                             | label_2:
    0x0802455c ldr r3, [r5, 0xc]                                             |     r3 = *((r5 + 0xc));
    0x08024560 mov r0, r5                                                    |     r0 = r5;
    0x08024564 ldr r2, [sp, 0x10]                                            |     r2 = var_10h;
    0x08024568 cmp r3, r2                                                    |     
                                                                             |     if (r3 != r2) {
    0x0802456c bne 0x80248b8                                                 |         goto label_15;
                                                                             |     }
    0x08024570 stmdaeq r8, {r2, r3, r5, r7, r8, fp, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r3, r5, r7, r8, fp, ip, sp, lr}");
    0x08024574 ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x08024578 ldr r3, [r3, 0x1f0]                                           |     r3 = *((r3 + 0x1f0));
    0x0802457c ldr r3, [r3, 0x4c]                                            |     r3 = *((r3 + 0x4c));
    0x08024580 tst r3, 0x400000                                              |     
                                                                             |     if ((r3 & 0x400000) != 0) {
    0x08024584 beq 0x80245d0                                                 |         
    0x08024588 ldrh r3, [r4]                                                 |         r3 = *(r4);
    0x0802458c ldr r2, [sp, 0x18]                                            |         r2 = var_18h;
    0x08024590 and r3, r3, r2                                                |         r3 &= r2;
    0x08024594 cmp r3, 0x8000                                                |         
                                                                             |         if (r3 != 0x8000) {
    0x08024598 bne 0x80245d0                                                 |             goto label_16;
                                                                             |         }
    0x0802459c ldr r3, [r4, -0x6c]                                           |         r3 = *((r4 - 0x6c));
    0x080245a0 tst r3, 0x80000                                               |         
                                                                             |         if ((r3 & 0x80000) == 0) {
    0x080245a4 beq 0x80245d0                                                 |             goto label_16;
                                                                             |         }
    0x080245a8 mov r0, r4                                                    |         r0 = r4;
    0x080245ac stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |         __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x080245b0 tst r0, 1                                                     |         
                                                                             |         if ((r0 & 1) != 0) {
    0x080245b4 bne 0x80245d0                                                 |             goto label_16;
                                                                             |         }
    0x080245b8 ldr r3, [r4, 0x14]                                            |         r3 = *((r4 + 0x14));
    0x080245bc ldr r3, [r3, 0x1f0]                                           |         r3 = *((r3 + 0x1f0));
    0x080245c0 ldr r3, [r3, 0x4c]                                            |         r3 = *((r3 + 0x4c));
    0x080245c4 tst r3, 0x8000000                                             |         
                                                                             |         if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x080245c8 ldrne r3, [sp, 0x20]                                          |             r3 = var_20h;
                                                                             |         }
                                                                             |         if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x080245cc bne 0x80245d4                                                 |             goto label_17;
                                                                             |         }
                                                                             |     }
                                                                             | label_16:
    0x080245d0 ldr r3, [sp, 0x1c]                                            |     r3 = var_1ch;
                                                                             | label_17:
    0x080245d4 str r3, [sp, 4]                                               |     var_4h = r3;
    0x080245d8 mov r2, sl                                                    |     r2 = sl;
    0x080245dc ldr r3, [sp, 0x70]                                            |     r3 = *(arg_70h);
    0x080245e0 mov r0, r5                                                    |     r0 = r5;
    0x080245e4 str r3, [sp]                                                  |     *(sp) = r3;
    0x080245e8 mov r3, fp                                                    |     r3 = fp;
    0x080245ec stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}                      |     __asm ("stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}");
    0x080245f0 mov r7, r0                                                    |     r7 = r0;
    0x080245f4 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x080245f8 beq 0x8024708                                                 |         goto label_18;
                                                                             |     }
                                                                             | label_4:
    0x080245fc ldr r3, [sp, 0x70]                                            |     r3 = *(arg_70h);
    0x08024600 ldr r0, [r4, 0x30]                                            |     r0 = *((r4 + 0x30));
    0x08024604 adds r1, r3, sl                                               |     r1 = r3 + sl;
    0x08024608 ldr r3, [r4, 0x34]                                            |     r3 = *((r4 + 0x34));
    0x0802460c adc r2, fp, 0                                                 |     __asm ("adc r2, arg_70h");
    0x08024610 cmp r0, r1                                                    |     
    0x08024614 sbcs r3, r3, r2                                               |     __asm ("sbcs r3, r3, r2");
                                                                             |     if (r0 >= r1) {
    0x08024618 bge 0x80246e0                                                 |         goto label_19;
                                                                             |     }
    0x0802461c mov r0, r5                                                    |     r0 = r5;
    0x08024620 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x08024624 ldrh r3, [r4]                                                 |     r3 = *(r4);
    0x08024628 ldr r2, [sp, 0x18]                                            |     r2 = var_18h;
    0x0802462c and r3, r3, r2                                                |     r3 &= r2;
    0x08024630 sub r2, r3, 0x4000                                            |     r2 = r3 - 0x4000;
    0x08024634 tst r2, 0xb000                                                |     
                                                                             |     if ((r2 & 0xb000) == 0) {
    0x08024638 beq 0x80247f8                                                 |         goto label_20;
                                                                             |     }
    0x0802463c cmp r3, 0xa000                                                |     
                                                                             |     if (r3 == 0xa000) {
    0x08024640 beq 0x80247e8                                                 |         goto label_21;
                                                                             |     }
                                                                             | label_5:
    0x08024644 movw r1, 0x4d1                                                |     r1 = 0x4d1;
    0x08024648 mov r2, sb                                                    |     r2 = sb;
    0x0802464c sub r6, r4, 0x10                                              |     r6 = r4 - 0x10;
    0x08024650 ldr r0, [pc, 0x2bc]                                           |     r0 = *(0x8024910);
    0x08024654 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x08024658 mov r0, r6                                                    |     r0 = r6;
    0x0802465c stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x08024660 ldr r0, [r4, 0x18]                                            |     r0 = *((r4 + 0x18));
    0x08024664 ldrd r2, r3, [r4, 0x30]                                       |     __asm ("ldrd r2, r3, [r4, 0x30]");
    0x08024668 stmdaeq r8, {r5, r6, fp, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r5, r6, fp, ip, sp, lr}");
    0x0802466c mov r0, r4                                                    |     r0 = r4;
    0x08024670 stmdaeq r2, {r3, r4, r5, r6, lr}                              |     __asm ("stmdaeq r2, {r3, r4, r5, r6, lr}");
    0x08024674 mov r0, r6                                                    |     r0 = r6;
    0x08024678 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x0802467c ldr r3, [r4, 0x24]                                            |     r3 = *((r4 + 0x24));
    0x08024680 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08024684 bne 0x8024844                                                 |         goto label_22;
                                                                             |     }
                                                                             | label_1:
    0x08024688 cmn r7, 0x1c                                                  |     
                                                                             |     if (r7 != 0x1c) {
    0x0802468c bne 0x80246a4                                                 |         goto label_23;
                                                                             |     }
    0x08024690 ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08024694 add r1, sp, 0x44                                              |     r1 += var_44h;
    0x08024698 stmdaeq r0, {r4, r5, r6, fp}                                  |     __asm ("stmdaeq r0, {r4, r5, r6, fp}");
    0x0802469c cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x080246a0 bne 0x80244e8                                                 |         goto label_0;
                                                                             |     }
                                                                             | label_23:
    0x080246a4 ldr r3, [r5, 4]                                               |     r3 = *((r5 + 4));
    0x080246a8 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x080246ac subne r5, r3, 1                                               |         r5 = r3 - 1;
                                                                             |     }
    0x080246b0 add r3, r5, 0x1c                                              |     r3 = r5 + 0x1c;
    0x080246b4 pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x080246b8 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x080246bc sub r2, r2, 1                                                 |         r2--;
    0x080246c0 strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x080246c4 teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x080246c8 bne 0x80246b8                                                 |         
                                                                             |     } while ((r3 & 1) != 0);
    0x080246cc cmp r2, 0                                                     |     
                                                                             |     if (r2 != 0) {
    0x080246d0 bne 0x80247c8                                                 |         goto label_6;
                                                                             |     }
    0x080246d4 mov r0, r5                                                    |     r0 = r5;
    0x080246d8 stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
    0x080246dc b 0x80247c8                                                   |     goto label_6;
                                                                             | label_19:
    0x080246e0 mov r0, r5                                                    |     r0 = r5;
    0x080246e4 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x080246e8 mov r2, sb                                                    |     r2 = sb;
    0x080246ec movw r1, 0x4d1                                                |     r1 = 0x4d1;
    0x080246f0 ldr r0, [pc, 0x21c]                                           |     r0 = *(0x8024910);
    0x080246f4 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x080246f8 b 0x8024688                                                   |     goto label_1;
                                                                             | label_14:
    0x080246fc mov r0, r5                                                    |     r0 = r5;
    0x08024700 stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr}");
    0x08024704 b 0x802455c                                                   |     goto label_2;
                                                                             | label_18:
    0x08024708 mov r0, r4                                                    |     r0 = r4;
    0x0802470c stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x08024710 tst r0, 1                                                     |     
                                                                             |     if ((r0 & 1) == 0) {
    0x08024714 beq 0x80247c0                                                 |         goto label_24;
                                                                             |     }
    0x08024718 ldr r3, [r5]                                                  |     r3 = *(r5);
    0x0802471c tst r3, 0x2000                                                |     
                                                                             |     if ((r3 & 0x2000) == 0) {
    0x08024720 beq 0x80248b4                                                 |         goto label_25;
                                                                             |     }
    0x08024724 ldr r2, [r5, 0x14]                                            |     r2 = *((r5 + 0x14));
    0x08024728 mov r6, r7                                                    |     r6 = r7;
    0x0802472c str r4, [sp, 0x30]                                            |     var_30h = r4;
    0x08024730 str r7, [sp, 0x3c]                                            |     var_3ch = r7;
    0x08024734 mov r8, r2                                                    |     r8 = r2;
    0x08024738 ldr r3, [r2, 0x18]                                            |     r3 = *((r2 + 0x18));
    0x0802473c mov r4, r2                                                    |     r4 = r2;
    0x08024740 str sl, [sp, 0x34]                                            |     var_34h = sl;
    0x08024744 mov sl, sb                                                    |     sl = sb;
    0x08024748 str fp, [sp, 0x38]                                            |     var_38h = fp;
    0x0802474c mov fp, r3                                                    |     
    0x08024750 ldr r7, [sp, 0x28]                                            |     r7 = var_28h;
    0x08024754 ldr sb, [sp, 0x2c]                                            |     sb = var_2ch;
    0x08024758 b 0x802476c                                                   |     
                                                                             |     while (r3 == 0) {
    0x0802475c mov r0, sl                                                    |         r0 = sl;
    0x08024760 stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}          |         __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}");
    0x08024764 cmp r0, 0                                                     |         
                                                                             |         if (r0 != 0) {
    0x08024768 bne 0x80247d4                                                 |             goto label_26;
                                                                             |         }
    0x0802476c mov ip, r6                                                    |         
    0x08024770 mov r1, r8                                                    |         r1 = r8;
                                                                             | label_3:
    0x08024774 clz r3, r6                                                    |         r3 &= r6;
    0x08024778 lsr r3, r3, 5                                                 |         r3 >>= 5;
    0x0802477c cmp r4, r8                                                    |         
                                                                             |         if (r4 == r8) {
    0x08024780 orrne r3, r3, 1                                               |             r3 |= 1;
                                                                             |         }
    0x08024784 cmp r3, 0                                                     |         
                                                                             |         if (r3 == 0) {
    0x08024788 beq 0x80247bc                                                 |             goto label_27;
                                                                             |         }
    0x0802478c cmp sb, ip                                                    |         
    0x08024790 add r6, r6, fp                                                |         r6 += fp;
    0x08024794 ldr r8, [r8, 4]                                               |         r8 = *((r8 + 4));
    0x08024798 add ip, ip, fp                                                |         
                                                                             |         if (sb <= ip) {
    0x0802479c movhi r3, 0                                                   |             r3 = 0;
                                                                             |         }
                                                                             |         if (sb > ip) {
    0x080247a0 movls r3, 1                                                   |             r3 = 1;
                                                                             |         }
    0x080247a4 cmp r7, r6                                                    |         
                                                                             |         if (r7 < r6) {
    0x080247a8 orrhs r3, r3, 1                                               |             r3 |= 1;
                                                                             |         }
    0x080247ac cmp r3, 0                                                     |         
    0x080247b0 beq 0x802475c                                                 |         
                                                                             |     }
    0x080247b4 mov r1, r8                                                    |     r1 = r8;
    0x080247b8 b 0x8024774                                                   |     goto label_3;
                                                                             | label_27:
    0x080247bc ldr r7, [sp, 0x3c]                                            |     r7 = var_3ch;
                                                                             | label_24:
    0x080247c0 ldr r3, [sp, 0x78]                                            |     r3 = *(arg_78h);
    0x080247c4 str r5, [r3]                                                  |     *(r3) = r5;
                                                                             | label_6:
    0x080247c8 mov r0, r7                                                    |     r0 = r7;
    0x080247cc add sp, sp, 0x4c                                              |     
    0x080247d0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_26:
    0x080247d4 mov sb, sl                                                    |     sb = sl;
    0x080247d8 ldr r4, [sp, 0x30]                                            |     r4 = var_30h;
    0x080247dc ldrd sl, fp, [sp, 0x34]                                       |     __asm ("ldrd sl, fp, [var_34h]");
    0x080247e0 mov r7, r0                                                    |     r7 = r0;
    0x080247e4 b 0x80245fc                                                   |     goto label_4;
                                                                             | label_21:
    0x080247e8 mov r0, r4                                                    |     r0 = r4;
    0x080247ec stmdaeq r1, {r3, r4, r8, sb, sp, lr, pc}                      |     __asm ("stmdaeq r1, {r3, r4, r8, sb, sp, lr, pc}");
    0x080247f0 cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x080247f4 bne 0x8024644                                                 |         goto label_5;
                                                                             |     }
                                                                             | label_20:
    0x080247f8 mov r1, r4                                                    |     r1 = r4;
    0x080247fc mov r0, sb                                                    |     r0 = sb;
    0x08024800 stmdaeq r3, {r2, r4, r5, r6, sb, fp, ip, sp, pc}              |     __asm ("stmdaeq r3, {r2, r4, r5, r6, sb, fp, ip, sp, pc}");
    0x08024804 b 0x8024644                                                   |     goto label_5;
                                                                             | label_13:
    0x08024808 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x0802480c subne r5, r3, 1                                               |         r5 = r3 - 1;
                                                                             |     }
    0x08024810 add r3, r5, 0x1c                                              |     r3 = r5 + 0x1c;
    0x08024814 pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x08024818 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x0802481c sub r2, r2, 1                                                 |         r2--;
    0x08024820 strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x08024824 teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x08024828 bne 0x8024818                                                 |         
                                                                             |     } while ((r3 & 1) != 0);
    0x0802482c cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08024830 beq 0x8024898                                                 |         goto label_28;
                                                                             |     }
                                                                             | label_8:
    0x08024834 mov r7, sb                                                    |     r7 = sb;
    0x08024838 mov r0, r7                                                    |     r0 = r7;
    0x0802483c add sp, sp, 0x4c                                              |     
    0x08024840 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_22:
    0x08024844 mov r1, r4                                                    |     r1 = r4;
    0x08024848 mov r0, 0                                                     |     r0 = 0;
    0x0802484c stmdaeq r3, {r2, r4, r6, r7, sb, ip, lr, pc}                  |     __asm ("stmdaeq r3, {r2, r4, r6, r7, sb, ip, lr, pc}");
    0x08024850 b 0x8024688                                                   |     goto label_1;
                                                                             | label_11:
    0x08024854 ldr r3, [sp, 0x78]                                            |     r3 = *(arg_78h);
    0x08024858 mov r2, sl                                                    |     r2 = sl;
    0x0802485c str r3, [sp, 8]                                               |     var_8h = r3;
    0x08024860 mov r1, r4                                                    |     r1 = r4;
    0x08024864 ldr r3, [sp, 0x74]                                            |     r3 = *(arg_74h);
    0x08024868 str r3, [sp, 4]                                               |     var_4h = r3;
    0x0802486c ldr r3, [sp, 0x70]                                            |     r3 = *(arg_70h);
    0x08024870 str r3, [sp]                                                  |     *(sp) = r3;
    0x08024874 mov r3, fp                                                    |     r3 = fp;
    0x08024878 ldr r0, [sp, 0x10]                                            |     r0 = var_10h;
    0x0802487c stmdaeq r1, {r3, r4, r6, sl, fp, ip, pc}                      |     __asm ("stmdaeq r1, {r3, r4, r6, sl, fp, ip, pc}");
    0x08024880 subs r7, r0, 0                                                |     r7 = r0 - 0;
                                                                             |     if (r7 < r0) {
    0x08024884 blt 0x80247c8                                                 |         goto label_6;
                                                                             |     }
    0x08024888 cmp r7, 1                                                     |     
                                                                             |     if (r7 != 1) {
    0x0802488c bne 0x80244a8                                                 |         goto label_7;
                                                                             |     }
    0x08024890 mov r7, r5                                                    |     r7 = r5;
    0x08024894 b 0x80247c8                                                   |     goto label_6;
                                                                             | label_28:
    0x08024898 mov r0, r5                                                    |     r0 = r5;
    0x0802489c stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
    0x080248a0 b 0x8024834                                                   |     goto label_8;
                                                                             | label_10:
    0x080248a4 mvn r7, 4                                                     |     r7 = ~4;
    0x080248a8 mov r0, r7                                                    |     r0 = r7;
    0x080248ac add sp, sp, 0x4c                                              |     
    0x080248b0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_25:
    0x080248b4 udf 0x12                                                      |     __asm ("udf 0x12");
                                                                             | label_15:
    0x080248b8 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
    0x080248bc ldr r3, [r5, 4]                                               |     r3 = *((r5 + 4));
    0x080248c0 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x080248c4 subne r5, r3, 1                                               |         r5 = r3 - 1;
                                                                             |     }
    0x080248c8 add r3, r5, 0x1c                                              |     r3 = r5 + 0x1c;
    0x080248cc pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x080248d0 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x080248d4 sub r2, r2, 1                                                 |         r2--;
    0x080248d8 strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x080248dc teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x080248e0 bne 0x80248d0                                                 |         
                                                                             |     } while ((r3 & 1) != 0);
    0x080248e4 cmp r2, 0                                                     |     
    0x080248e8 beq 0x8024900                                                 |     
                                                                             |     while (1) {
    0x080248ec mov r2, sb                                                    |         r2 = sb;
    0x080248f0 movw r1, 0x4a7                                                |         r1 = 0x4a7;
    0x080248f4 ldr r0, [pc, 0x18]                                            |         r0 = *(0x8024910);
    0x080248f8 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |         __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x080248fc b 0x80244cc                                                   |         goto label_9;
    0x08024900 mov r0, r5                                                    |         r0 = r5;
    0x08024904 stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}                  |         __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
    0x08024908 b 0x80248ec                                                   |         
                                                                             |     }
                                                                             | label_12:
    0x0802490c mvn r7, 0xb                                                   |     r7 = ~0xb;
    0x08024910 b 0x80247c8                                                   |     goto label_6;
                                                                             | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8022ae0 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.ext4_writepages ()                                           | void ext4_writepages (int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_18h;
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_20h;
                                                                             |     int32_t var_24h;
                                                                             |     int32_t var_28h;
                                                                             |     int32_t var_2ch;
                                                                             |     int32_t var_33h;
                                                                             |     int32_t var_34h;
                                                                             |     int32_t var_48h;
                                                                             |     int32_t var_0h_2;
                                                                             |     int32_t var_4ch;
                                                                             |     int32_t var_50h;
                                                                             |     int32_t var_58h;
                                                                             |     int32_t var_6ch;
                                                                             |     int32_t var_78h;
                                                                             |     int32_t var_80h;
                                                                             |     int32_t var_90h;
                                                                             |     int32_t var_9ch;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08022ae0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x08022ae4 mov r3, 0                                                     |     r3 = 0;
    0x08022ae8 mov r6, r1                                                    |     r6 = r1;
    0x08022aec ldr r4, [r0]                                                  |     r4 = *(r0);
    0x08022af0 sub sp, sp, 0x9c                                              |     
    0x08022af4 strb r3, [sp, 0x33]                                           |     var_33h = r3;
    0x08022af8 ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x08022afc ldr sl, [r3, 0x1f0]                                           |     sl = *((r3 + 0x1f0));
    0x08022b00 ldr r1, [sl, 0x130]                                           |     r1 = *((sl + 0x130));
    0x08022b04 ubfx r1, r1, 1, 1                                             |     r1 = (r1 >> 1) & ((1 << 1) - 1);
    0x08022b08 cmp r1, 0                                                     |     
                                                                             |     if (r1 != 0) {
    0x08022b0c bne 0x80230b4                                                 |         goto label_15;
                                                                             |     }
    0x08022b10 mov r3, sp                                                    |     r3 = sp;
    0x08022b14 mov sb, r0                                                    |     sb = r0;
    0x08022b18 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08022b1c bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x08022b20 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08022b24 add r2, r2, 1                                                 |     r2++;
    0x08022b28 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08022b2c ldr r3, [sl, 0x2e8]                                           |     r3 = *((sl + 0x2e8));
    0x08022b30 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08022b34 bne 0x80230c4                                                 |         goto label_16;
                                                                             |     }
    0x08022b38 mrs r1, apsr                                                  |     r1 = apsr;
    0x08022b3c cpsid i                                                       |     __asm ("cpsid i");
    0x08022b40 ldr r2, [sl, 0x300]                                           |     r2 = *((sl + 0x300));
    0x08022b44 ldr r3, [r2]                                                  |     r3 = *(r2);
    0x08022b48 add r3, r3, 1                                                 |     r3++;
    0x08022b4c str r3, [r2]                                                  |     *(r2) = r3;
    0x08022b50 msr cpsr_c, r1                                                |     cpsr_c = r1;
                                                                             | label_8:
    0x08022b54 mov r3, sp                                                    |     r3 = sp;
    0x08022b58 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08022b5c bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x08022b60 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08022b64 sub r2, r2, 1                                                 |     r2--;
    0x08022b68 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08022b6c cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08022b70 beq 0x8022e28                                                 |         goto label_17;
                                                                             |     }
                                                                             | label_1:
    0x08022b74 ldr r5, [sb, 0x2c]                                            |     r5 = *((sb + 0x2c));
    0x08022b78 cmp r5, 0                                                     |     
                                                                             |     if (r5 == 0) {
    0x08022b7c beq 0x8022b8c                                                 |         goto label_0;
                                                                             |     }
    0x08022b80 ldr r5, [sb, 4]                                               |     r5 = *((sb + 4));
    0x08022b84 ands r5, r5, 0x800000                                         |     r5 &= 0x800000;
    0x08022b88 bne 0x8022bf8                                                 |     
                                                                             |     while (r0 > 0x1000) {
                                                                             | label_0:
    0x08022b8c mov r3, sp                                                    |         r3 = sp;
    0x08022b90 bic r3, r3, 0x1fc0                                            |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08022b94 bic r3, r3, 0x3f                                              |         r3 = BIT_MASK (r3, 0x3f);
    0x08022b98 ldr r2, [r3, 4]                                               |         r2 = *((r3 + 4));
    0x08022b9c add r2, r2, 1                                                 |         r2++;
    0x08022ba0 str r2, [r3, 4]                                               |         *((r3 + 4)) = r2;
    0x08022ba4 ldr r3, [sl, 0x2e8]                                           |         r3 = *((sl + 0x2e8));
    0x08022ba8 cmp r3, 0                                                     |         
                                                                             |         if (r3 != 0) {
    0x08022bac bne 0x80230f4                                                 |             goto label_18;
                                                                             |         }
    0x08022bb0 mrs r1, apsr                                                  |         r1 = apsr;
    0x08022bb4 cpsid i                                                       |         __asm ("cpsid i");
    0x08022bb8 ldr r2, [sl, 0x300]                                           |         r2 = *((sl + 0x300));
    0x08022bbc ldr r3, [r2]                                                  |         r3 = *(r2);
    0x08022bc0 sub r3, r3, 1                                                 |         r3--;
    0x08022bc4 str r3, [r2]                                                  |         *(r2) = r3;
    0x08022bc8 msr cpsr_c, r1                                                |         cpsr_c = r1;
                                                                             | label_10:
    0x08022bcc mov r3, sp                                                    |         r3 = sp;
    0x08022bd0 bic r3, r3, 0x1fc0                                            |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08022bd4 bic r3, r3, 0x3f                                              |         r3 = BIT_MASK (r3, 0x3f);
    0x08022bd8 ldr r2, [r3, 4]                                               |         r2 = *((r3 + 4));
    0x08022bdc sub r2, r2, 1                                                 |         r2--;
    0x08022be0 str r2, [r3, 4]                                               |         *((r3 + 4)) = r2;
    0x08022be4 cmp r2, 0                                                     |         
                                                                             |         if (r2 == 0) {
    0x08022be8 beq 0x8022e3c                                                 |             goto label_19;
                                                                             |         }
                                                                             | label_2:
    0x08022bec mov r0, r5                                                    |         r0 = r5;
    0x08022bf0 add sp, sp, 0x9c                                              |         
    0x08022bf4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
    0x08022bf8 mov r0, r4                                                    |         r0 = r4;
    0x08022bfc stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |         __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x08022c00 ands r3, r0, 1                                                |         r3 = r0 & 1;
    0x08022c04 str r3, [sp, 0x24]                                            |         var_24h = r3;
                                                                             |         if (r3 != r0) {
    0x08022c08 bne 0x802311c                                                 |             goto label_20;
                                                                             |         }
    0x08022c0c ldr r3, [sb]                                                  |         r3 = *(sb);
    0x08022c10 ldr r3, [r3, 0x14]                                            |         r3 = *((r3 + 0x14));
    0x08022c14 ldr r3, [r3, 0x1f0]                                           |         r3 = *((r3 + 0x1f0));
    0x08022c18 ldr r3, [r3, 0x130]                                           |         r3 = *((r3 + 0x130));
    0x08022c1c tst r3, 2                                                     |         
                                                                             |         if ((r3 & 2) != 0) {
    0x08022c20 bne 0x8023178                                                 |             goto label_21;
                                                                             |         }
    0x08022c24 ldr r0, [r4, 0x14]                                            |         r0 = *((r4 + 0x14));
    0x08022c28 ldr r3, [r0, 0x1f0]                                           |         r3 = *((r0 + 0x1f0));
    0x08022c2c ldr r2, [r3, 0x54]                                            |         r2 = *((r3 + 0x54));
    0x08022c30 ubfx r1, r2, 1, 1                                             |         r1 = (r2 >> 1) & ((1 << 1) - 1);
    0x08022c34 str r1, [sp, 0x1c]                                            |         var_1ch = r1;
    0x08022c38 cmp r1, 0                                                     |         
                                                                             |         if (r1 != 0) {
    0x08022c3c bne 0x8023178                                                 |             goto label_21;
                                                                             |         }
    0x08022c40 ldr r2, [r4, -0x6c]                                           |         r2 = *((r4 - 0x6c));
    0x08022c44 tst r2, 0x10000000                                            |         
                                                                             |         if ((r2 & 0x10000000) == 0) {
    0x08022c48 beq 0x8022cb4                                                 |             goto label_22;
                                                                             |         }
    0x08022c4c movw r2, 0x1b6                                                |         r2 = 0x1b6;
    0x08022c50 ldrh r2, [r4, r2]                                             |         r2 = *((r4 + r2));
    0x08022c54 cmp r2, 0                                                     |         
                                                                             |         if (r2 == 0) {
    0x08022c58 beq 0x8022cb4                                                 |             goto label_22;
                                                                             |         }
    0x08022c5c ldr r3, [r3, 0x2c]                                            |         r3 = *((r3 + 0x2c));
    0x08022c60 str r1, [sp]                                                  |         *(sp) = r1;
    0x08022c64 movw r1, 0xa8c                                                |         r1 = 0xa8c;
    0x08022c68 lsl r3, r3, 3                                                 |         r3 <<= 3;
    0x08022c6c str r3, [sp, 4]                                               |         var_4h = r3;
    0x08022c70 mov r3, 1                                                     |         r3 = 1;
    0x08022c74 mov r2, r3                                                    |         r2 = r3;
    0x08022c78 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}              |         __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
    0x08022c7c mov r5, r0                                                    |         r5 = r0;
    0x08022c80 cmn r0, 0x1000                                                |         
    0x08022c84 bhi 0x8022b8c                                                 |         
                                                                             |     }
    0x08022c88 ldr r3, [r4, -0x70]                                           |     r3 = *((r4 - 0x70));
    0x08022c8c tst r3, 0x80                                                  |     
                                                                             |     if ((r3 & 0x80) != 0) {
    0x08022c90 bne 0x8023034                                                 |         goto label_23;
                                                                             |     }
    0x08022c94 mov r1, r4                                                    |     r1 = r4;
    0x08022c98 stmdaeq r1, {r3, r5, r8, sl, fp, ip, sp, pc}                  |     __asm ("stmdaeq r1, {r3, r5, r8, sl, fp, ip, sp, pc}");
    0x08022c9c ldr r0, [pc, 0x4f8]                                           |     r0 = *(0x8023198);
    0x08022ca0 mov r2, r5                                                    |     r2 = r5;
    0x08022ca4 movw r1, 0xa94                                                |     r1 = 0xa94;
    0x08022ca8 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x08022cac ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x08022cb0 ldr r3, [r3, 0x1f0]                                           |     r3 = *((r3 + 0x1f0));
                                                                             | label_22:
    0x08022cb4 ldr r3, [r3, 0x4c]                                            |     r3 = *((r3 + 0x4c));
    0x08022cb8 tst r3, 0x400000                                              |     
                                                                             |     if ((r3 & 0x400000) != 0) {
    0x08022cbc beq 0x8022cdc                                                 |         
    0x08022cc0 ldrh r3, [r4]                                                 |         r3 = *(r4);
    0x08022cc4 and r3, r3, 0xf000                                            |         r3 &= 0xf000;
    0x08022cc8 cmp r3, 0x8000                                                |         
                                                                             |         if (r3 != 0x8000) {
    0x08022ccc bne 0x8022cdc                                                 |             goto label_11;
                                                                             |         }
    0x08022cd0 ldr r3, [r4, -0x6c]                                           |         r3 = *((r4 - 0x6c));
    0x08022cd4 tst r3, 0x80000                                               |         
                                                                             |         if ((r3 & 0x80000) != 0) {
    0x08022cd8 bne 0x8023130                                                 |             goto label_24;
                                                                             |         }
                                                                             |     }
                                                                             | label_11:
    0x08022cdc mov r3, 0                                                     |     r3 = 0;
    0x08022ce0 str r3, [sp, 0x14]                                            |     var_14h = r3;
                                                                             | label_12:
    0x08022ce4 ldr r3, [r6, 8]                                               |     r3 = *((r6 + 8));
    0x08022ce8 ldr r2, [r6, 0xc]                                             |     r2 = *((r6 + 0xc));
    0x08022cec orrs r1, r3, r2                                               |     r1 = r3 | r2;
                                                                             |     if (r1 == r3) {
    0x08022cf0 bne 0x8022d0c                                                 |         
    0x08022cf4 ldrd r0, r1, [r6, 0x10]                                       |         __asm ("ldrd r0, r1, [r6, 0x10]");
    0x08022cf8 cmn r1, 0x80000001                                            |         
    0x08022cfc cmneq r0, 1                                                   |         __asm ("cmneq r0, 1");
                                                                             |         if (r1 != 0x80000001) {
    0x08022d00 moveq r1, 1                                                   |             r1 = 1;
                                                                             |         }
                                                                             |         if (r1 == 0x80000001) {
    0x08022d04 movne r1, 0                                                   |             r1 = 0;
                                                                             |         }
    0x08022d08 str r1, [sp, 0x24]                                            |         var_24h = r1;
                                                                             |     }
    0x08022d0c ldrb r1, [r6, 0x1c]                                           |     r1 = *((r6 + 0x1c));
    0x08022d10 tst r1, 0x10                                                  |     
                                                                             |     if ((r1 & 0x10) == 0) {
    0x08022d14 beq 0x80230d0                                                 |         goto label_25;
                                                                             |     }
    0x08022d18 ldr r2, [sb, 0x34]                                            |     r2 = *((sb + 0x34));
    0x08022d1c mvn r3, 0                                                     |     r3 = ~0;
    0x08022d20 str r2, [sp, 0x1c]                                            |     var_1ch = r2;
    0x08022d24 clz r5, r2                                                    |     r5 &= r2;
    0x08022d28 str r2, [sp, 0x50]                                            |     var_50h = r2;
    0x08022d2c lsr r5, r5, 5                                                 |     r5 >>= 5;
                                                                             | label_9:
    0x08022d30 mov r1, r6                                                    |     r1 = r6;
    0x08022d34 add r0, sp, 0x78                                              |     r0 += var_78h;
    0x08022d38 str r3, [sp, 0x58]                                            |     var_58h = r3;
    0x08022d3c stmdaeq r5, {r2, r3, r5, r6, r8, fp, sp, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r8, fp, sp, pc}");
    0x08022d40 stmdaeq r5, {r2, r3, r5, r6, r8, fp, sp, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r8, fp, sp, pc}");
    0x08022d44 str r4, [sp, 0x48]                                            |     var_48h = r4;
    0x08022d48 str r3, [sp, 0x28]                                            |     var_28h = r3;
    0x08022d4c stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022d50 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022d54 str r6, [sp, 0x4c]                                            |     var_4ch = r6;
    0x08022d58 str r3, [sp, 0x2c]                                            |     var_2ch = r3;
    0x08022d5c stmdaeq r3, {r2, r3, r5, r8, sb, sl, sp, lr, pc}              |     __asm ("stmdaeq r3, {r2, r3, r5, r8, sb, sl, sp, lr, pc}");
                                                                             | label_7:
    0x08022d60 ldr r3, [r6, 0x18]                                            |     r3 = *((r6 + 0x18));
    0x08022d64 cmp r3, 1                                                     |     
                                                                             |     if (r3 != 1) {
    0x08022d68 beq 0x8022d78                                                 |         
    0x08022d6c ldrb r3, [r6, 0x1c]                                           |         r3 = *((r6 + 0x1c));
    0x08022d70 tst r3, 4                                                     |         
                                                                             |         if ((r3 & 4) == 0) {
    0x08022d74 beq 0x8022d88                                                 |             goto label_26;
                                                                             |         }
                                                                             |     }
    0x08022d78 ldr r2, [sp, 0x58]                                            |     r2 = var_58h;
    0x08022d7c mov r0, sb                                                    |     r0 = sb;
    0x08022d80 ldr r1, [sp, 0x50]                                            |     r1 = var_50h;
    0x08022d84 stmdaeq r8, {r5, r7, r8, fp, ip, sp, lr}                      |     __asm ("stmdaeq r8, {r5, r7, r8, fp, ip, sp, lr}");
                                                                             | label_26:
    0x08022d88 add r0, sp, 0x34                                              |     r0 += var_34h;
    0x08022d8c stmdaeq r8, {r6, r8, fp, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r6, r8, fp, ip, sp, lr}");
    0x08022d90 ldrb r3, [sp, 0x90]                                           |     r3 = var_90h;
    0x08022d94 mov r0, r4                                                    |     r0 = r4;
    0x08022d98 mov r1, 0xcc0                                                 |     r1 = 0xcc0;
    0x08022d9c bic r3, r3, 3                                                 |     r3 = BIT_MASK (r3, 3);
    0x08022da0 strb r3, [sp, 0x90]                                           |     var_90h = r3;
    0x08022da4 stmdaeq r3, {r2, r4, r5, r6, sb, sp, lr, pc}                  |     __asm ("stmdaeq r3, {r2, r4, r5, r6, sb, sp, lr, pc}");
    0x08022da8 cmp r0, 0                                                     |     
    0x08022dac str r0, [sp, 0x80]                                            |     var_80h = r0;
                                                                             |     if (r0 == 0) {
    0x08022db0 beq 0x8023014                                                 |         goto label_27;
                                                                             |     }
    0x08022db4 add r0, sp, 0x48                                              |     r0 += var_48h;
    0x08022db8 bl 0x801d73c                                                  |     mpage_prepare_extent_to_map ();
    0x08022dbc mov r1, 0                                                     |     r1 = 0;
    0x08022dc0 mov fp, r0                                                    |     
    0x08022dc4 add r0, sp, 0x48                                              |     r0 += var_48h;
    0x08022dc8 bl 0x801c794                                                  |     mpage_release_unused_pages ();
    0x08022dcc add r0, sp, 0x78                                              |     r0 += var_78h;
    0x08022dd0 stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc}                  |     __asm ("stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc}");
    0x08022dd4 ldr r0, [sp, 0x80]                                            |     r0 = var_80h;
    0x08022dd8 stmdaeq r3, {r2, r3, r4, r5, r7, sb, sp, lr, pc}              |     __asm ("stmdaeq r3, {r2, r3, r4, r5, r7, sb, sp, lr, pc}");
    0x08022ddc mov r3, 0                                                     |     r3 = 0;
    0x08022de0 cmp fp, 0                                                     |     
    0x08022de4 str r3, [sp, 0x80]                                            |     var_80h = r3;
                                                                             |     if (fp >= 0) {
    0x08022de8 bge 0x8022e58                                                 |         goto label_28;
                                                                             |     }
                                                                             | label_14:
    0x08022dec mov r5, fp                                                    |     r5 = fp;
    0x08022df0 add r0, sp, 0x34                                              |     r0 += var_34h;
    0x08022df4 stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr}                      |     __asm ("stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr}");
                                                                             | label_4:
    0x08022df8 ldrb r3, [r6, 0x1c]                                           |     r3 = *((r6 + 0x1c));
    0x08022dfc tst r3, 0x10                                                  |     
                                                                             |     if ((r3 & 0x10) != 0) {
    0x08022e00 bne 0x8022e1c                                                 |         goto label_29;
                                                                             |     }
    0x08022e04 ldr r3, [sp, 0x24]                                            |     r3 = var_24h;
    0x08022e08 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08022e0c beq 0x8022b8c                                                 |         goto label_0;
                                                                             |     }
    0x08022e10 ldr r3, [r6]                                                  |     r3 = *(r6);
    0x08022e14 cmp r3, 0                                                     |     
                                                                             |     if (r3 <= 0) {
    0x08022e18 ble 0x8022b8c                                                 |         goto label_0;
                                                                             |     }
                                                                             | label_29:
    0x08022e1c ldr r3, [sp, 0x50]                                            |     r3 = var_50h;
    0x08022e20 str r3, [sb, 0x34]                                            |     *((sb + 0x34)) = r3;
    0x08022e24 b 0x8022b8c                                                   |     goto label_0;
                                                                             | label_17:
    0x08022e28 ldr r3, [r3]                                                  |     r3 = *(r3);
    0x08022e2c tst r3, 2                                                     |     
                                                                             |     if ((r3 & 2) == 0) {
    0x08022e30 beq 0x8022b74                                                 |         goto label_1;
                                                                             |     }
    0x08022e34 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x08022e38 b 0x8022b74                                                   |     goto label_1;
                                                                             | label_19:
    0x08022e3c ldr r3, [r3]                                                  |     r3 = *(r3);
    0x08022e40 tst r3, 2                                                     |     
                                                                             |     if ((r3 & 2) == 0) {
    0x08022e44 beq 0x8022bec                                                 |         goto label_2;
                                                                             |     }
    0x08022e48 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x08022e4c mov r0, r5                                                    |     r0 = r5;
    0x08022e50 add sp, sp, 0x9c                                              |     
    0x08022e54 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_28:
    0x08022e58 ldrb r3, [sp, 0x90]                                           |     r3 = var_90h;
    0x08022e5c ands r3, r3, 2                                                |     r3 &= 2;
    0x08022e60 str r3, [sp, 0x18]                                            |     var_18h = r3;
                                                                             |     if (r3 != r3) {
    0x08022e64 streq r5, [sp, 0x20]                                          |         var_20h = r5;
                                                                             |     }
                                                                             |     if (r3 != r3) {
    0x08022e68 bne 0x8023184                                                 |         goto label_30;
                                                                             |     }
                                                                             |     do {
    0x08022e6c ldr r3, [r6]                                                  |         r3 = *(r6);
    0x08022e70 cmp r3, 0                                                     |         
                                                                             |         if (r3 <= 0) {
    0x08022e74 ble 0x8023180                                                 |             goto label_31;
                                                                             |         }
    0x08022e78 mov r0, r4                                                    |         r0 = r4;
    0x08022e7c mov r1, 0xcc0                                                 |         r1 = 0xcc0;
    0x08022e80 stmdaeq r3, {r2, r4, r5, r6, sb, sp, lr, pc}                  |         __asm ("stmdaeq r3, {r2, r4, r5, r6, sb, sp, lr, pc}");
    0x08022e84 cmp r0, 0                                                     |         
    0x08022e88 str r0, [sp, 0x80]                                            |         var_80h = r0;
                                                                             |         if (r0 == 0) {
    0x08022e8c beq 0x8023014                                                 |             goto label_27;
                                                                             |         }
    0x08022e90 mov r0, r4                                                    |         r0 = r4;
    0x08022e94 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |         __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x08022e98 ands fp, r0, 1                                                |         
                                                                             |         if (fp != r0) {
    0x08022e9c bne 0x8023034                                                 |             goto label_23;
                                                                             |         }
    0x08022ea0 ldr r3, [r4, 0x14]                                            |         r3 = *((r4 + 0x14));
    0x08022ea4 ldr r3, [r3, 0x1f0]                                           |         r3 = *((r3 + 0x1f0));
    0x08022ea8 ldr r3, [r3, 0x118]                                           |         r3 = *((r3 + 0x118));
    0x08022eac cmp r3, 0                                                     |         
                                                                             |         if (r3 != 0) {
    0x08022eb0 moveq r2, fp                                                  |             r2 = fp;
                                                                             |         }
    0x08022eb4 movweq r1, 0x7ff                                              |         __asm ("movweq r1, 0x7ff");
                                                                             |         if (r3 != 0) {
    0x08022eb8 beq 0x8022ed0                                                 |             
    0x08022ebc mov r0, r4                                                    |             r0 = r4;
    0x08022ec0 stmdaeq r8, {r2, r7, r8, fp, ip, sp, lr}                      |             __asm ("stmdaeq r8, {r2, r7, r8, fp, ip, sp, lr}");
    0x08022ec4 add r1, r0, 0x7f0                                             |             r1 = r0 + 0x7f0;
    0x08022ec8 mov r2, r0                                                    |             r2 = r0;
    0x08022ecc add r1, r1, 0xf                                               |             r1 += 0xf;
                                                                             |         }
    0x08022ed0 mov r0, r4                                                    |         r0 = r4;
    0x08022ed4 bl 0x801c730                                                  |         r0 = ext4_meta_trans_blocks ();
    0x08022ed8 mov r3, r0                                                    |         r3 = r0;
    0x08022edc ldr r0, [r4, 0x14]                                            |         r0 = *((r4 + 0x14));
    0x08022ee0 mov r2, 2                                                     |         r2 = 2;
    0x08022ee4 ldr lr, [sp, 0x14]                                            |         lr = var_14h;
    0x08022ee8 mov r1, 0xae0                                                 |         r1 = 0xae0;
    0x08022eec ldr ip, [r0, 0x1f0]                                           |         ip = *((r0 + 0x1f0));
    0x08022ef0 ldr ip, [ip, 0x2c]                                            |         ip = *((ip + 0x2c));
    0x08022ef4 str lr, [sp]                                                  |         
    0x08022ef8 lsl ip, ip, 3                                                 |         
    0x08022efc str ip, [sp, 4]                                               |         var_4h = ip;
    0x08022f00 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}              |         __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
    0x08022f04 mov r7, r0                                                    |         r7 = r0;
    0x08022f08 cmn r0, 0x1000                                                |         
                                                                             |         if (r0 > 0x1000) {
    0x08022f0c bhi 0x8023040                                                 |             goto label_32;
                                                                             |         }
    0x08022f10 ldrb r3, [sp, 0x90]                                           |         r3 = var_90h;
    0x08022f14 add r0, sp, 0x48                                              |         r0 += var_48h;
    0x08022f18 orr r3, r3, 1                                                 |         r3 |= 1;
    0x08022f1c strb r3, [sp, 0x90]                                           |         var_90h = r3;
    0x08022f20 bl 0x801d73c                                                  |         mpage_prepare_extent_to_map ();
    0x08022f24 subs r8, r0, 0                                                |         r8 -= var_48h;
                                                                             |         if (r8 == var_48h) {
    0x08022f28 bne 0x8022f38                                                 |             
    0x08022f2c ldr r3, [sp, 0x6c]                                            |             r3 = var_6ch;
    0x08022f30 cmp r3, 0                                                     |             
                                                                             |             if (r3 != 0) {
    0x08022f34 bne 0x802301c                                                 |                 goto label_33;
                                                                             |             }
                                                                             |         }
                                                                             | label_5:
    0x08022f38 ldrb r5, [sp, 0x33]                                           |         r5 = var_33h;
    0x08022f3c cmp r7, 0x1000                                                |         
                                                                             |         if (r7 <= 0x1000) {
    0x08022f40 blo 0x8022fb0                                                 |             goto label_34;
                                                                             |         }
    0x08022f44 ldrb r2, [r7, 0x1c]                                           |         r2 = *((r7 + 0x1c));
    0x08022f48 tst r2, 1                                                     |         
                                                                             |         if ((r2 & 1) == 0) {
    0x08022f4c beq 0x8022fb0                                                 |             goto label_34;
                                                                             |         }
    0x08022f50 mov r1, r5                                                    |         r1 = r5;
    0x08022f54 add r0, sp, 0x48                                              |         r0 += var_48h;
    0x08022f58 bl 0x801c794                                                  |         mpage_release_unused_pages ();
    0x08022f5c add r0, sp, 0x78                                              |         r0 += var_78h;
    0x08022f60 stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc}                  |         __asm ("stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc}");
    0x08022f64 cmp r7, 0                                                     |         
                                                                             |         if (r7 == 0) {
    0x08022f68 beq 0x8022fe0                                                 |             goto label_35;
                                                                             |         }
    0x08022f6c ldr r0, [sp, 0x80]                                            |         r0 = var_80h;
    0x08022f70 stmdaeq r3, {r2, r3, r4, r5, r7, sb, sp, lr, pc}              |         __asm ("stmdaeq r3, {r2, r3, r4, r5, r7, sb, sp, lr, pc}");
    0x08022f74 ldr r0, [pc, 0x220]                                           |         r0 = *(0x8023198);
    0x08022f78 mov r2, r7                                                    |         r2 = r7;
    0x08022f7c mov r1, 0xb10                                                 |         r1 = 0xb10;
    0x08022f80 stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |         __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x08022f84 ldr r3, [sp, 0x18]                                            |         r3 = var_18h;
    0x08022f88 cmn r8, 0x1c                                                  |         
    0x08022f8c str r3, [sp, 0x80]                                            |         var_80h = r3;
                                                                             |         if (r8 == 0x1c) {
    0x08022f90 beq 0x8022ff8                                                 |             goto label_36;
                                                                             |         }
                                                                             | label_3:
    0x08022f94 cmp r8, 0                                                     |         
                                                                             |         if (r8 != 0) {
    0x08022f98 bne 0x8023194                                                 |             goto label_37;
                                                                             |         }
                                                                             | label_6:
    0x08022f9c ldrb r3, [sp, 0x90]                                           |         r3 = var_90h;
    0x08022fa0 tst r3, 2                                                     |         
    0x08022fa4 beq 0x8022e6c                                                 |         
                                                                             |     } while ((r3 & 2) == 0);
    0x08022fa8 ldr r5, [sp, 0x20]                                            |     r5 = var_20h;
    0x08022fac b 0x8023080                                                   |     goto label_13;
                                                                             | label_34:
    0x08022fb0 mov r2, r7                                                    |     r2 = r7;
    0x08022fb4 movw r1, 0xafe                                                |     r1 = 0xafe;
    0x08022fb8 ldr r0, [pc, 0x1dc]                                           |     r0 = *(0x8023198);
    0x08022fbc stmdaeq r0, {r2, r3, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
    0x08022fc0 ldrb r3, [sp, 0x90]                                           |     r3 = var_90h;
    0x08022fc4 add r0, sp, 0x48                                              |     r0 += var_48h;
    0x08022fc8 mov r1, r5                                                    |     r1 = r5;
    0x08022fcc bfc r3, 0, 1                                                  |     value_0 = BIT_MASK (1, );
                                                                             |     value_0 = ~value_0;
                                                                             |     r3 &= value_0;
    0x08022fd0 strb r3, [sp, 0x90]                                           |     var_90h = r3;
    0x08022fd4 bl 0x801c794                                                  |     mpage_release_unused_pages ();
    0x08022fd8 add r0, sp, 0x78                                              |     r0 += var_78h;
    0x08022fdc stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc}                  |     __asm ("stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc}");
                                                                             | label_35:
    0x08022fe0 ldr r0, [sp, 0x80]                                            |     r0 = var_80h;
    0x08022fe4 stmdaeq r3, {r2, r4, r6, r7, r8, sl, sp, lr, pc}              |     __asm ("stmdaeq r3, {r2, r4, r6, r7, r8, sl, sp, lr, pc}");
    0x08022fe8 ldr r3, [sp, 0x18]                                            |     r3 = var_18h;
    0x08022fec cmn r8, 0x1c                                                  |     
    0x08022ff0 str r3, [sp, 0x80]                                            |     var_80h = r3;
                                                                             |     if (r8 != 0x1c) {
    0x08022ff4 bne 0x8022f94                                                 |         goto label_3;
                                                                             |     }
                                                                             | label_36:
    0x08022ff8 ldr r0, [sl, 0x118]                                           |     r0 = *((sl + 0x118));
    0x08022ffc cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x08023000 bne 0x8023038                                                 |         goto label_38;
                                                                             |     }
                                                                             |     do {
    0x08023004 add r0, sp, 0x34                                              |         r0 += var_34h;
    0x08023008 mov r5, r8                                                    |         r5 = r8;
    0x0802300c stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr}                      |         __asm ("stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr}");
    0x08023010 b 0x8022df8                                                   |         goto label_4;
                                                                             | label_27:
    0x08023014 mvn r8, 0xb                                                   |         r8 = ~0xb;
    0x08023018 b 0x8023004                                                   |         
                                                                             |     } while (1);
                                                                             | label_33:
    0x0802301c add r2, sp, 0x33                                              |     r2 += var_33h;
    0x08023020 add r1, sp, 0x48                                              |     r1 += var_48h;
    0x08023024 mov r0, r7                                                    |     r0 = r7;
    0x08023028 bl 0x8022368                                                  |     r0 = mpage_map_and_submit_extent ();
    0x0802302c mov r8, r0                                                    |     r8 = r0;
    0x08023030 b 0x8022f38                                                   |     goto label_5;
                                                                             | label_23:
    0x08023034 udf 0x12                                                      |     __asm ("udf 0x12");
                                                                             | label_38:
    0x08023038 stmdaeq r8, {r2, r5, r6, r7, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r5, r6, r7, sb, sl, ip, sp, lr}");
    0x0802303c b 0x8022f9c                                                   |     goto label_6;
                                                                             | label_32:
    0x08023040 ldr r5, [sp, 0x20]                                            |     r5 = var_20h;
    0x08023044 mov fp, r0                                                    |     
    0x08023048 ldr r1, [sp, 0x2c]                                            |     r1 = var_2ch;
    0x0802304c orr r5, r0, r5                                                |     r5 = r0 | r5;
    0x08023050 ldr r0, [r4, 0x14]                                            |     r0 = *((r4 + 0x14));
    0x08023054 str r7, [sp, 8]                                               |     var_8h = r7;
    0x08023058 ldr r2, [r6]                                                  |     r2 = *(r6);
    0x0802305c ldr r3, [r4, 0x20]                                            |     r3 = *((r4 + 0x20));
    0x08023060 strd r2, r3, [sp]                                             |     __asm ("strd r2, r3, [sp]");
    0x08023064 ldr r3, [pc, 0x130]                                           |     r3 = *(0x8023198);
    0x08023068 ldr r2, [sp, 0x28]                                            |     r2 = var_28h;
    0x0802306c stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08023070 ldr r0, [sp, 0x80]                                            |     r0 = var_80h;
    0x08023074 stmdaeq r3, {r2, r4, r6, r7, r8, sl, sp, lr, pc}              |     __asm ("stmdaeq r3, {r2, r4, r6, r7, r8, sl, sp, lr, pc}");
    0x08023078 mov r3, 0                                                     |     r3 = 0;
    0x0802307c str r3, [sp, 0x80]                                            |     var_80h = r3;
                                                                             | label_13:
    0x08023080 add r0, sp, 0x34                                              |     r0 += var_34h;
    0x08023084 stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr}                      |     __asm ("stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr}");
    0x08023088 cmp r5, 0                                                     |     
                                                                             |     if (r5 != 0) {
    0x0802308c bne 0x802318c                                                 |         goto label_39;
                                                                             |     }
    0x08023090 ldr r3, [r6]                                                  |     r3 = *(r6);
    0x08023094 cmp r3, 0                                                     |     
                                                                             |     if (r3 <= 0) {
    0x08023098 ble 0x8022df8                                                 |         goto label_4;
                                                                             |     }
    0x0802309c ldr r3, [sp, 0x1c]                                            |     r3 = var_1ch;
    0x080230a0 str r5, [sp, 0x50]                                            |     var_50h = r5;
    0x080230a4 mov r5, 1                                                     |     r5 = 1;
    0x080230a8 sub r3, r3, 1                                                 |     r3--;
    0x080230ac str r3, [sp, 0x58]                                            |     var_58h = r3;
    0x080230b0 b 0x8022d60                                                   |     goto label_7;
                                                                             | label_15:
    0x080230b4 mvn r5, 4                                                     |     r5 = ~4;
    0x080230b8 mov r0, r5                                                    |     r0 = r5;
    0x080230bc add sp, sp, 0x9c                                              |     
    0x080230c0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_16:
    0x080230c4 add r0, sl, 0x2e8                                             |     r0 = sl + 0x2e8;
    0x080230c8 stmdaeq r8, {r2, r3, r4, r5, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r3, r4, r5, fp, ip, sp, lr}");
    0x080230cc b 0x8022b54                                                   |     goto label_8;
                                                                             | label_25:
    0x080230d0 lsr r3, r3, 0xc                                               |     r3 >>= 0xc;
    0x080230d4 mov r5, 1                                                     |     r5 = 1;
    0x080230d8 orr r3, r3, r2, lsl 20                                        |     r3 |= (r2 << 20);
    0x080230dc str r3, [sp, 0x50]                                            |     var_50h = r3;
    0x080230e0 ldr r3, [r6, 0x10]                                            |     r3 = *((r6 + 0x10));
    0x080230e4 ldr r2, [r6, 0x14]                                            |     r2 = *((r6 + 0x14));
    0x080230e8 lsr r3, r3, 0xc                                               |     r3 >>= 0xc;
    0x080230ec orr r3, r3, r2, lsl 20                                        |     r3 |= (r2 << 20);
    0x080230f0 b 0x8022d30                                                   |     goto label_9;
                                                                             | label_18:
    0x080230f4 mrs r1, apsr                                                  |     r1 = apsr;
    0x080230f8 cpsid i                                                       |     __asm ("cpsid i");
    0x080230fc ldr r2, [sl, 0x300]                                           |     r2 = *((sl + 0x300));
    0x08023100 ldr r3, [r2]                                                  |     r3 = *(r2);
    0x08023104 sub r3, r3, 1                                                 |     r3--;
    0x08023108 str r3, [r2]                                                  |     *(r2) = r3;
    0x0802310c msr cpsr_c, r1                                                |     cpsr_c = r1;
    0x08023110 add r0, sl, 0x304                                             |     r0 = sl + 0x304;
    0x08023114 stmdaeq r8, {r6, fp, ip, sp, lr}                              |     __asm ("stmdaeq r8, {r6, fp, ip, sp, lr}");
    0x08023118 b 0x8022bcc                                                   |     goto label_10;
                                                                             | label_20:
    0x0802311c mov r1, r6                                                    |     r1 = r6;
    0x08023120 mov r0, sb                                                    |     r0 = sb;
    0x08023124 stmdaeq r8, {r2, r5, r7, r8, fp, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r2, r5, r7, r8, fp, ip, sp, lr}");
    0x08023128 mov r5, r0                                                    |     r5 = r0;
    0x0802312c b 0x8022b8c                                                   |     goto label_0;
                                                                             | label_24:
    0x08023130 mov r0, r4                                                    |     r0 = r4;
    0x08023134 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x08023138 tst r0, 1                                                     |     
                                                                             |     if ((r0 & 1) != 0) {
    0x0802313c bne 0x8022cdc                                                 |         goto label_11;
                                                                             |     }
    0x08023140 ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x08023144 ldr r3, [r3, 0x1f0]                                           |     r3 = *((r3 + 0x1f0));
    0x08023148 ldr r3, [r3, 0x4c]                                            |     r3 = *((r3 + 0x4c));
    0x0802314c tst r3, 0x8000000                                             |     
                                                                             |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x08023150 beq 0x8022cdc                                                 |         goto label_11;
                                                                             |     }
    0x08023154 ldrb r3, [r4, 0x6a]                                           |     r3 = *((r4 + 0x6a));
    0x08023158 mov r1, 0x1000                                                |     r1 = 0x1000;
    0x0802315c mov r0, r4                                                    |     r0 = r4;
    0x08023160 mov r2, 1                                                     |     r2 = 1;
    0x08023164 lsr r1, r1, r3                                                |     r1 >>= r3;
    0x08023168 bl 0x801c730                                                  |     r0 = ext4_meta_trans_blocks ();
    0x0802316c add r3, r0, 1                                                 |     r3 = r0 + 1;
    0x08023170 str r3, [sp, 0x14]                                            |     var_14h = r3;
    0x08023174 b 0x8022ce4                                                   |     goto label_12;
                                                                             | label_21:
    0x08023178 mvn r5, 0x1d                                                  |     r5 = ~0x1d;
    0x0802317c b 0x8022b8c                                                   |     goto label_0;
                                                                             | label_31:
    0x08023180 ldr r5, [sp, 0x20]                                            |     r5 = var_20h;
                                                                             | label_30:
    0x08023184 orr r5, r5, fp                                                |     r5 |= fp;
    0x08023188 b 0x8023080                                                   |     goto label_13;
                                                                             | label_39:
    0x0802318c mov r5, fp                                                    |     r5 = fp;
    0x08023190 b 0x8022df8                                                   |     goto label_4;
                                                                             | label_37:
    0x08023194 mov fp, r8                                                    |     
    0x08023198 b 0x8022dec                                                   |     goto label_14;
                                                                             | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8022368 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.mpage_map_and_submit_extent ()                               | void mpage_map_and_submit_extent (int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_18h;
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_20h;
                                                                             |     int32_t var_24h;
                                                                             |     int32_t var_28h;
                                                                             |     int32_t var_2ch;
                                                                             |     int32_t var_30h;
                                                                             |     int32_t var_34h;
                                                                             |     int32_t var_3ch;
                                                                             |     int32_t var_40h;
                                                                             |     int32_t var_84h;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08022368 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x0802236c mov sb, r1                                                    |     sb = r1;
    0x08022370 sub sp, sp, 0x84                                              |     
    0x08022374 ldr r3, [r1]                                                  |     r3 = *(r1);
    0x08022378 str r0, [sp, 0x2c]                                            |     var_2ch = r0;
    0x0802237c ldr r0, [r1, 0x38]                                            |     r0 = *((r1 + 0x38));
    0x08022380 str r2, [sp, 0x34]                                            |     var_34h = r2;
    0x08022384 str r3, [sp, 0x24]                                            |     var_24h = r3;
    0x08022388 stmdaeq r3, {r3, r5, r6, sp, lr, pc}                          |     __asm ("stmdaeq r3, {r3, r5, r6, sp, lr, pc}");
    0x0802238c cmn r0, 0x1000                                                |     
                                                                             |     if (r0 <= 0x1000) {
    0x08022390 movhi fp, r0                                                  |         
                                                                             |     }
                                                                             |     if (r0 > 0x1000) {
    0x08022394 bhi 0x8022798                                                 |         goto label_11;
                                                                             |     }
    0x08022398 ldr r3, [sp, 0x24]                                            |     r3 = var_24h;
    0x0802239c add r2, sb, 0x18                                              |     r2 = sb + 0x18;
    0x080223a0 str r2, [sp, 0x30]                                            |     var_30h = r2;
    0x080223a4 mov sl, sb                                                    |     sl = sb;
    0x080223a8 mov r5, 0                                                     |     r5 = 0;
    0x080223ac ldrb r1, [r3, 0x6a]                                           |     r1 = *((r3 + 0x6a));
    0x080223b0 ldr r3, [sb, 0x20]                                            |     r3 = *((sb + 0x20));
    0x080223b4 sub r2, r1, 0x20                                              |     r2 = r1 - 0x20;
    0x080223b8 rsb ip, r1, 0x20                                              |     
    0x080223bc lsl r2, r3, r2                                                |     r2 = r3 << r2;
    0x080223c0 orr r2, r2, r3, lsr ip                                        |     r2 |= (r3 >> ip);
    0x080223c4 str r2, [r0, 0xc]                                             |     *((r0 + 0xc)) = r2;
    0x080223c8 lsl r3, r3, r1                                                |     r3 <<= r1;
    0x080223cc str r3, [r0, 8]                                               |     *((r0 + 8)) = r3;
                                                                             | label_2:
    0x080223d0 ldr r4, [sl]                                                  |     r4 = *(sl);
    0x080223d4 ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x080223d8 ldr r3, [r3, 0x1f0]                                           |     r3 = *((r3 + 0x1f0));
    0x080223dc ldr r3, [r3, 0x4c]                                            |     r3 = *((r3 + 0x4c));
    0x080223e0 tst r3, 0x400000                                              |     
                                                                             |     if ((r3 & 0x400000) != 0) {
    0x080223e4 beq 0x80223f8                                                 |         
    0x080223e8 ldrh r3, [r4]                                                 |         r3 = *(r4);
    0x080223ec and r3, r3, 0xf000                                            |         r3 &= 0xf000;
    0x080223f0 cmp r3, 0x8000                                                |         
                                                                             |         if (r3 == 0x8000) {
    0x080223f4 beq 0x80226c0                                                 |             goto label_14;
                                                                             |         }
                                                                             |     }
                                                                             | label_6:
    0x080223f8 mov r6, 0                                                     |     r6 = 0;
    0x080223fc movw r3, 0x421                                                |     r3 = 0x421;
                                                                             | label_7:
    0x08022400 ldr r2, [sl, 0x28]                                            |     r2 = *((sl + 0x28));
    0x08022404 mov r1, r4                                                    |     r1 = r4;
    0x08022408 ldr r0, [sp, 0x2c]                                            |     r0 = var_2ch;
    0x0802240c tst r2, 0x100                                                 |     
    0x08022410 ldr r2, [sp, 0x30]                                            |     r2 = var_30h;
                                                                             |     if ((r2 & 0x100) == 0) {
    0x08022414 orrne r3, r3, 4                                               |         r3 |= 4;
                                                                             |     }
    0x08022418 stmdaeq r1, {sb, sl, sp, lr, pc}                              |     __asm ("stmdaeq r1, {sb, sl, sp, lr, pc}");
    0x0802241c cmp r0, 0                                                     |     
                                                                             |     if (r0 < 0) {
    0x08022420 blt 0x8022740                                                 |         goto label_15;
                                                                             |     }
    0x08022424 cmp r6, 0                                                     |     
                                                                             |     if (r6 != 0) {
    0x08022428 beq 0x8022438                                                 |         
    0x0802242c ldr r3, [sl, 0x28]                                            |         r3 = *((sl + 0x28));
    0x08022430 tst r3, 0x800                                                 |         
                                                                             |         if ((r3 & 0x800) != 0) {
    0x08022434 bne 0x80226fc                                                 |             goto label_16;
                                                                             |         }
                                                                             |     }
                                                                             | label_8:
    0x08022438 ldr r2, [sl, 0x24]                                            |     r2 = *((sl + 0x24));
    0x0802243c cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08022440 beq 0x8022638                                                 |         goto label_17;
                                                                             |     }
    0x08022444 ldr r1, [sl]                                                  |     r1 = *(sl);
    0x08022448 ldr r3, [sl, 0x20]                                            |     r3 = *((sl + 0x20));
    0x0802244c ldr r7, [sl, 0x18]                                            |     r7 = *((sl + 0x18));
    0x08022450 ldrb r4, [r1, 0x6a]                                           |     r4 = *((r1 + 0x6a));
    0x08022454 add r2, r2, r3                                                |     r2 += r3;
    0x08022458 sub r2, r2, 1                                                 |     r2--;
    0x0802245c ldr sb, [sl, 0x1c]                                            |     sb = *((sl + 0x1c));
    0x08022460 rsb r4, r4, 0xc                                               |     r4 = 0xc - r4;
    0x08022464 str r1, [sp, 0x28]                                            |     var_28h = r1;
    0x08022468 lsr r3, r3, r4                                                |     r3 >>= r4;
    0x0802246c str r3, [sp, 0x3c]                                            |     var_3ch = r3;
    0x08022470 lsr r2, r2, r4                                                |     r2 >>= r4;
    0x08022474 str r2, [sp, 0x20]                                            |     var_20h = r2;
    0x08022478 lsl r4, r3, r4                                                |     r4 = r3 << r4;
    0x0802247c mov r2, 0                                                     |     r2 = 0;
    0x08022480 strh r2, [sp, 0x40]                                           |     var_40h = r2;
                                                                             | label_1:
    0x08022484 ldr r2, [sp, 0x20]                                            |     r2 = var_20h;
    0x08022488 cmp r2, r3                                                    |     
                                                                             |     if (r2 <= r3) {
    0x0802248c blo 0x80227cc                                                 |         goto label_18;
                                                                             |     }
    0x08022490 ldr r3, [sp, 0x28]                                            |     r3 = var_28h;
    0x08022494 add r2, sp, 0x3c                                              |     r2 += var_3ch;
    0x08022498 add r0, sp, 0x40                                              |     r0 += var_40h;
    0x0802249c ldr r1, [r3, 0x18]                                            |     r1 = *((r3 + 0x18));
    0x080224a0 ldr r3, [sp, 0x20]                                            |     r3 = var_20h;
    0x080224a4 stmdaeq r8, {r2, r8, fp, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r2, r8, fp, ip, sp, lr}");
    0x080224a8 subs r3, r0, 0                                                |     r3 -= var_40h;
    0x080224ac str r3, [sp, 0x1c]                                            |     var_1ch = r3;
                                                                             |     if (r3 == var_40h) {
    0x080224b0 beq 0x80227cc                                                 |         goto label_18;
                                                                             |     }
                                                                             |     if (r3 <= var_40h) {
    0x080224b4 ble 0x80225b8                                                 |         goto label_19;
                                                                             |     }
    0x080224b8 add r3, sp, 0x40                                              |     r3 += var_40h;
    0x080224bc mov r6, 0                                                     |     r6 = 0;
    0x080224c0 str r3, [sp, 0x14]                                            |     var_14h = r3;
                                                                             | label_0:
    0x080224c4 ldr r3, [sp, 0x14]                                            |     r3 = var_14h;
    0x080224c8 ldr r8, [sl, 0x38]                                            |     r8 = *((sl + 0x38));
    0x080224cc ldr r5, [r3, 4]!                                              |     r5 = *((r3 += 4));
    0x080224d0 mov r0, r8                                                    |     r0 = r8;
    0x080224d4 str r3, [sp, 0x14]                                            |     var_14h = r3;
    0x080224d8 ldr r3, [sl]                                                  |     r3 = *(sl);
    0x080224dc ldrb r3, [r3, 0x6a]                                           |     r3 = *((r3 + 0x6a));
    0x080224e0 str r3, [sp, 0x18]                                            |     var_18h = r3;
    0x080224e4 stmdaeq r3, {r3, r5, r7, sp, lr, pc}                          |     __asm ("stmdaeq r3, {r3, r5, r7, sp, lr, pc}");
    0x080224e8 ldr lr, [r5]                                                  |     
    0x080224ec mvn lr, lr, lsr 13                                            |     lr = ~lr;
    0x080224f0 ands lr, lr, 1                                                |     lr &= 1;
                                                                             |     if (lr != lr) {
    0x080224f4 bne 0x8022638                                                 |         goto label_17;
                                                                             |     }
    0x080224f8 ldr r2, [sp, 0x18]                                            |     r2 = var_18h;
    0x080224fc mov r3, 1                                                     |     r3 = 1;
    0x08022500 ldr r1, [r5, 0x14]                                            |     r1 = *((r5 + 0x14));
    0x08022504 lsl fp, r3, r2                                                |     
    0x08022508 mov r2, r1                                                    |     r2 = r1;
                                                                             |     do {
    0x0802250c ldr r3, [sl, 0x20]                                            |         r3 = *((sl + 0x20));
    0x08022510 cmp r3, r4                                                    |         
                                                                             |         if (r3 <= r4) {
    0x08022514 bhi 0x8022578                                                 |             
    0x08022518 ldr ip, [sl, 0x24]                                            |             ip = *((sl + 0x24));
    0x0802251c add r3, r3, ip                                                |             r3 += ip;
    0x08022520 cmp r4, r3                                                    |             
                                                                             |             if (r4 >= r3) {
    0x08022524 bhs 0x80225cc                                                 |                 goto label_20;
                                                                             |             }
    0x08022528 ldr r3, [r2]                                                  |             r3 = *(r2);
    0x0802252c tst r3, 0x100                                                 |             
                                                                             |             if ((r3 & 0x100) != 0) {
    0x08022530 beq 0x802255c                                                 |                 
    0x08022534 mrs ip, apsr                                                  |                 ip = apsr;
    0x08022538 cpsid i                                                       |                 __asm ("cpsid i");
    0x0802253c ldr r3, [r2]                                                  |                 r3 = *(r2);
    0x08022540 bic r3, r3, 0x100                                             |                 r3 = BIT_MASK (r3, 0x100);
    0x08022544 str r3, [r2]                                                  |                 *(r2) = r3;
    0x08022548 msr cpsr_c, ip                                                |                 cpsr_c = ip;
    0x0802254c str r7, [r2, 0x10]                                            |                 *((r2 + 0x10)) = r7;
    0x08022550 adds r7, r7, 1                                                |                 r7++;
    0x08022554 str sb, [r2, 0x14]                                            |                 *((r2 + 0x14)) = sb;
    0x08022558 adc sb, sb, 0                                                 |                 __asm ("adc sb, sb, 0");
                                                                             |             }
    0x0802255c mrs ip, apsr                                                  |             ip = apsr;
    0x08022560 cpsid i                                                       |             __asm ("cpsid i");
    0x08022564 ldr r3, [r2]                                                  |             r3 = *(r2);
    0x08022568 bic r3, r3, 0x800                                             |             r3 = BIT_MASK (r3, 0x800);
    0x0802256c str r3, [r2]                                                  |             *(r2) = r3;
    0x08022570 msr cpsr_c, ip                                                |             cpsr_c = ip;
    0x08022574 add lr, lr, fp                                                |             lr += fp;
                                                                             |         }
    0x08022578 ldr r2, [r2, 4]                                               |         r2 = *((r2 + 4));
    0x0802257c add r4, r4, 1                                                 |         r4++;
    0x08022580 cmp r1, r2                                                    |         
    0x08022584 bne 0x802250c                                                 |         
                                                                             |     } while (r1 != r2);
    0x08022588 ldr r3, [r0, 0x10]                                            |     r3 = *((r0 + 0x10));
    0x0802258c add r3, r3, lr                                                |     r3 += lr;
    0x08022590 str r3, [r0, 0x10]                                            |     *((r0 + 0x10)) = r3;
                                                                             | label_5:
    0x08022594 mov r1, r5                                                    |     r1 = r5;
    0x08022598 mov r0, sl                                                    |     r0 = sl;
    0x0802259c bl 0x801d4a0                                                  |     r0 = mpage_submit_page ();
    0x080225a0 cmp r0, 0                                                     |     
                                                                             |     if (r0 < 0) {
    0x080225a4 blt 0x80226a0                                                 |         goto label_21;
                                                                             |     }
    0x080225a8 ldr r3, [sp, 0x1c]                                            |     r3 = var_1ch;
    0x080225ac add r6, r6, 1                                                 |     r6++;
    0x080225b0 cmp r3, r6                                                    |     
                                                                             |     if (r3 != r6) {
    0x080225b4 bne 0x80224c4                                                 |         goto label_0;
                                                                             |     }
                                                                             | label_19:
    0x080225b8 ldrb r3, [sp, 0x40]                                           |     r3 = var_40h;
    0x080225bc cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x080225c0 bne 0x80227c0                                                 |         goto label_22;
                                                                             |     }
                                                                             | label_10:
    0x080225c4 ldr r3, [sp, 0x3c]                                            |     r3 = var_3ch;
    0x080225c8 b 0x8022484                                                   |     goto label_1;
                                                                             | label_20:
    0x080225cc mov r3, 0                                                     |     r3 = 0;
    0x080225d0 str r3, [sl, 0x24]                                            |     *((sl + 0x24)) = r3;
    0x080225d4 str r3, [sl, 0x28]                                            |     *((sl + 0x28)) = r3;
    0x080225d8 ldr r3, [r0, 0x10]                                            |     r3 = *((r0 + 0x10));
    0x080225dc add r3, r3, lr                                                |     r3 += lr;
    0x080225e0 str r3, [r0, 0x10]                                            |     *((r0 + 0x10)) = r3;
    0x080225e4 mov r3, r4                                                    |     r3 = r4;
    0x080225e8 mov r0, sl                                                    |     r0 = sl;
    0x080225ec bl 0x801d578                                                  |     r0 = mpage_process_page_bufs ();
    0x080225f0 cmp r0, 0                                                     |     
                                                                             |     if (r0 < 0) {
    0x080225f4 blt 0x80226a0                                                 |         goto label_21;
                                                                             |     }
    0x080225f8 ldr r3, [sl, 0x24]                                            |     r3 = *((sl + 0x24));
    0x080225fc cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08022600 beq 0x8022610                                                 |         
    0x08022604 ldr r3, [sl, 0x20]                                            |         r3 = *((sl + 0x20));
    0x08022608 cmp r4, r3                                                    |         
                                                                             |         if (r4 <= r3) {
    0x0802260c blo 0x802263c                                                 |             goto label_23;
                                                                             |         }
                                                                             |     }
    0x08022610 ldrb r3, [sp, 0x40]                                           |     r3 = var_40h;
    0x08022614 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08022618 bne 0x802267c                                                 |         goto label_24;
                                                                             |     }
                                                                             | label_3:
    0x0802261c ldr r3, [sl, 0x24]                                            |     r3 = *((sl + 0x24));
    0x08022620 mov r5, 1                                                     |     r5 = 1;
    0x08022624 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08022628 bne 0x80223d0                                                 |         goto label_2;
                                                                             |     }
                                                                             | label_4:
    0x0802262c mov sb, sl                                                    |     sb = sl;
    0x08022630 mov fp, r3                                                    |     
    0x08022634 b 0x80227e0                                                   |     goto label_25;
                                                                             | label_17:
    0x08022638 udf 0x12                                                      |     __asm ("udf 0x12");
                                                                             | label_23:
    0x0802263c mov r0, r8                                                    |     r0 = r8;
    0x08022640 stmdaeq r3, {r3, r5, r6, sp, lr, pc}                          |     __asm ("stmdaeq r3, {r3, r5, r6, sp, lr, pc}");
    0x08022644 cmn r0, 0x1000                                                |     
                                                                             |     if (r0 > 0x1000) {
    0x08022648 bhi 0x8022698                                                 |         goto label_26;
                                                                             |     }
    0x0802264c ldr ip, [sp, 0x18]                                            |     ip = var_18h;
    0x08022650 ldr r3, [sl, 0x20]                                            |     r3 = *((sl + 0x20));
    0x08022654 sub r2, ip, 0x20                                              |     r2 = ip - 0x20;
    0x08022658 rsb r1, ip, 0x20                                              |     r1 = 0x20 - ip;
    0x0802265c lsl r2, r3, r2                                                |     r2 = r3 << r2;
    0x08022660 orr r2, r2, r3, lsr r1                                        |     r2 |= (r3 >> r1);
    0x08022664 str r2, [r0, 0xc]                                             |     *((r0 + 0xc)) = r2;
    0x08022668 lsl r3, r3, ip                                                |     r3 <<= ip;
    0x0802266c str r3, [r0, 8]                                               |     *((r0 + 8)) = r3;
    0x08022670 ldrb r3, [sp, 0x40]                                           |     r3 = var_40h;
    0x08022674 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08022678 beq 0x802261c                                                 |         goto label_3;
                                                                             |     }
                                                                             | label_24:
    0x0802267c add r0, sp, 0x40                                              |     r0 += var_40h;
    0x08022680 mov r5, 1                                                     |     r5 = 1;
    0x08022684 stmdaeq r8, {r4, r8, fp, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r4, r8, fp, ip, sp, lr}");
    0x08022688 ldr r3, [sl, 0x24]                                            |     r3 = *((sl + 0x24));
    0x0802268c cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08022690 bne 0x80223d0                                                 |         goto label_2;
                                                                             |     }
    0x08022694 b 0x802262c                                                   |     goto label_4;
                                                                             | label_26:
    0x08022698 cmp r0, 0                                                     |     
                                                                             |     if (r0 >= 0) {
    0x0802269c bge 0x8022594                                                 |         goto label_5;
                                                                             |     }
                                                                             | label_21:
    0x080226a0 ldrb r3, [sp, 0x40]                                           |     r3 = var_40h;
    0x080226a4 mov fp, r0                                                    |     
    0x080226a8 mov sb, sl                                                    |     sb = sl;
    0x080226ac cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x080226b0 beq 0x80227e0                                                 |         goto label_25;
                                                                             |     }
    0x080226b4 add r0, sp, 0x40                                              |     r0 += var_40h;
    0x080226b8 stmdaeq r8, {r4, r8, fp, ip, sp, lr}                          |     __asm ("stmdaeq r8, {r4, r8, fp, ip, sp, lr}");
    0x080226bc b 0x80227e0                                                   |     goto label_25;
                                                                             | label_14:
    0x080226c0 ldr r3, [r4, -0x6c]                                           |     r3 = *((r4 - 0x6c));
    0x080226c4 tst r3, 0x80000                                               |     
                                                                             |     if ((r3 & 0x80000) == 0) {
    0x080226c8 beq 0x80223f8                                                 |         goto label_6;
                                                                             |     }
    0x080226cc mov r0, r4                                                    |     r0 = r4;
    0x080226d0 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}              |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
    0x080226d4 tst r0, 1                                                     |     
                                                                             |     if ((r0 & 1) != 0) {
    0x080226d8 bne 0x80223f8                                                 |         goto label_6;
                                                                             |     }
    0x080226dc ldr r3, [r4, 0x14]                                            |     r3 = *((r4 + 0x14));
    0x080226e0 ldr r3, [r3, 0x1f0]                                           |     r3 = *((r3 + 0x1f0));
    0x080226e4 ldr r3, [r3, 0x4c]                                            |     r3 = *((r3 + 0x4c));
    0x080226e8 tst r3, 0x8000000                                             |     
                                                                             |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x080226ec beq 0x80223f8                                                 |         goto label_6;
                                                                             |     }
    0x080226f0 mov r6, 1                                                     |     r6 = 1;
    0x080226f4 movw r3, 0x42b                                                |     r3 = 0x42b;
    0x080226f8 b 0x8022400                                                   |     goto label_7;
                                                                             | label_16:
    0x080226fc ldr r3, [sl, 0x38]                                            |     r3 = *((sl + 0x38));
    0x08022700 ldr r2, [r3, 8]                                               |     r2 = *((r3 + 8));
    0x08022704 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08022708 beq 0x80227a4                                                 |         goto label_27;
                                                                             |     }
                                                                             | label_9:
    0x0802270c ldr r2, [r3, 0x14]                                            |     r2 = *((r3 + 0x14));
    0x08022710 tst r2, 1                                                     |     
                                                                             |     if ((r2 & 1) != 0) {
    0x08022714 bne 0x8022438                                                 |         goto label_8;
                                                                             |     }
    0x08022718 add r4, r4, 0x1d4                                             |     r4 += 0x1d4;
    0x0802271c orr r2, r2, 1                                                 |     r2 |= 1;
    0x08022720 str r2, [r3, 0x14]                                            |     *((r3 + 0x14)) = r2;
    0x08022724 pld [r4]                                                      |     __asm ("pld [r4]");
                                                                             |     do {
    0x08022728 ldrex r3, [r4]                                                |         __asm ("ldrex r3, [r4]");
    0x0802272c add r3, r3, 1                                                 |         r3++;
    0x08022730 strex r2, r3, [r4]                                            |         __asm ("strex r2, r3, [r4]");
    0x08022734 teq r2, 0                                                     |         __asm ("teq r2, 0");
    0x08022738 bne 0x8022728                                                 |         
                                                                             |     } while ((r2 & 1) != 0);
    0x0802273c b 0x8022438                                                   |     goto label_8;
                                                                             | label_15:
    0x08022740 ldr r3, [sp, 0x24]                                            |     r3 = var_24h;
    0x08022744 mov fp, r0                                                    |     
    0x08022748 mov sb, sl                                                    |     sb = sl;
    0x0802274c ldr r4, [r3, 0x14]                                            |     r4 = *((r3 + 0x14));
    0x08022750 ldr r3, [r4, 0x1f0]                                           |     r3 = *((r4 + 0x1f0));
    0x08022754 ldr r2, [r3, 0x130]                                           |     r2 = *((r3 + 0x130));
    0x08022758 tst r2, 2                                                     |     
                                                                             |     if ((r2 & 2) != 0) {
    0x0802275c bne 0x80228f8                                                 |         goto label_13;
                                                                             |     }
    0x08022760 ldr r6, [r3, 0x54]                                            |     r6 = *((r3 + 0x54));
    0x08022764 ubfx r6, r6, 1, 1                                             |     r6 = (r6 >> 1) & ((1 << 1) - 1);
    0x08022768 cmp r6, 0                                                     |     
                                                                             |     if (r6 != 0) {
    0x0802276c bne 0x80228f8                                                 |         goto label_13;
                                                                             |     }
    0x08022770 cmn r0, 0xc                                                   |     
                                                                             |     if (r0 != 0xc) {
    0x08022774 beq 0x8022790                                                 |         
    0x08022778 cmn r0, 0x1c                                                  |         
                                                                             |         if (r0 != 0x1c) {
    0x0802277c bne 0x80228a4                                                 |             goto label_28;
                                                                             |         }
    0x08022780 mov r0, r4                                                    |         r0 = r4;
    0x08022784 stmdaeq r0, {r2, r3, r6, sb, fp}                              |         __asm ("stmdaeq r0, {r2, r3, r6, sb, fp}");
    0x08022788 orrs r0, r0, r1                                               |         r0 |= r1;
                                                                             |         if (r0 == r0) {
    0x0802278c beq 0x8022958                                                 |             goto label_29;
                                                                             |         }
                                                                             |     }
    0x08022790 cmp r5, 0                                                     |     
    0x08022794 bne 0x80227e0                                                 |     
                                                                             |     while (r2 >= r4) {
                                                                             | label_11:
    0x08022798 mov r0, fp                                                    |         r0 = fp;
    0x0802279c add sp, sp, 0x84                                              |         
    0x080227a0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
                                                                             | label_27:
    0x080227a4 ldr r0, [sp, 0x2c]                                            |         r0 = var_2ch;
    0x080227a8 cmp r0, 0x1000                                                |         
                                                                             |         if (r0 < 0x1000) {
    0x080227ac ldrhs r1, [r0, 4]                                             |             r1 = *((r0 + 4));
                                                                             |         }
                                                                             |         if (r0 < 0x1000) {
    0x080227b0 strhs r1, [r3, 8]                                             |             *((r3 + 8)) = r1;
                                                                             |         }
                                                                             |         if (r0 < 0x1000) {
    0x080227b4 strhs r2, [r0, 4]                                             |             *((r0 + 4)) = r2;
                                                                             |         }
                                                                             |         if (r0 < 0x1000) {
    0x080227b8 ldrhs r3, [sl, 0x38]                                          |             r3 = *((sl + 0x38));
                                                                             |         }
    0x080227bc b 0x802270c                                                   |         goto label_9;
                                                                             | label_22:
    0x080227c0 add r0, sp, 0x40                                              |         r0 += var_40h;
    0x080227c4 stmdaeq r8, {r4, r8, fp, ip, sp, lr}                          |         __asm ("stmdaeq r8, {r4, r8, fp, ip, sp, lr}");
    0x080227c8 b 0x80225c4                                                   |         goto label_10;
                                                                             | label_18:
    0x080227cc mov r3, 0                                                     |         r3 = 0;
    0x080227d0 mov sb, sl                                                    |         sb = sl;
    0x080227d4 mov fp, r3                                                    |         
    0x080227d8 str r3, [sl, 0x24]                                            |         *((sl + 0x24)) = r3;
    0x080227dc str r3, [sl, 0x28]                                            |         *((sl + 0x28)) = r3;
                                                                             | label_25:
    0x080227e0 ldr r2, [sb, 8]                                               |         r2 = *((sb + 8));
    0x080227e4 ldr r3, [sp, 0x24]                                            |         r3 = var_24h;
    0x080227e8 lsr r5, r2, 0x14                                              |         r5 = r2 >> 0x14;
    0x080227ec lsl r4, r2, 0xc                                               |         r4 = r2 << 0xc;
    0x080227f0 ldrd r2, r3, [r3, -0x28]                                      |         __asm ("ldrd r2, r3, [r3, -0x28]");
    0x080227f4 cmp r2, r4                                                    |         
    0x080227f8 sbcs r3, r3, r5                                               |         __asm ("sbcs r3, r3, r5");
    0x080227fc bge 0x8022798                                                 |         
                                                                             |     }
    0x08022800 ldr r7, [sp, 0x24]                                            |     r7 = var_24h;
    0x08022804 sub r6, r7, 0x20                                              |     r6 = r7 - 0x20;
    0x08022808 mov r0, r6                                                    |     r0 = r6;
    0x0802280c stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x08022810 mov r3, sp                                                    |     r3 = sp;
    0x08022814 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08022818 bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x0802281c ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08022820 add r2, r2, 1                                                 |     r2++;
    0x08022824 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08022828 ldr r8, [r7, 0x30]                                            |     r8 = *((r7 + 0x30));
    0x0802282c ldr r7, [r7, 0x34]                                            |     r7 = *((r7 + 0x34));
    0x08022830 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08022834 sub r2, r2, 1                                                 |     r2--;
    0x08022838 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x0802283c cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08022840 beq 0x8022944                                                 |         goto label_30;
                                                                             |     }
                                                                             | label_12:
    0x08022844 ldr r0, [sp, 0x24]                                            |     r0 = var_24h;
    0x08022848 cmp r8, r4                                                    |     
    0x0802284c sbcs r1, r7, r5                                               |     __asm ("sbcs r1, r7, r5");
    0x08022850 mov r2, r4                                                    |     r2 = r4;
                                                                             |     if (r8 >= r4) {
    0x08022854 movlt r2, r8                                                  |         r2 = r8;
                                                                             |     }
    0x08022858 mov r3, r5                                                    |     r3 = r5;
    0x0802285c ldr r1, [r0, -0x28]                                           |     r1 = *((r0 - 0x28));
                                                                             |     if (r8 >= r4) {
    0x08022860 movlt r3, r7                                                  |         r3 = r7;
                                                                             |     }
    0x08022864 cmp r1, r2                                                    |     
    0x08022868 ldr r1, [r0, -0x24]                                           |     r1 = *((r0 - 0x24));
    0x0802286c sbcs r1, r1, r3                                               |     __asm ("sbcs r1, r1, r3");
    0x08022870 strdlt r2, r3, [r0, -0x28]                                    |     __asm ("strdlt r2, r3, [r0, -0x28]");
    0x08022874 mov r0, r6                                                    |     r0 = r6;
    0x08022878 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x0802287c ldr r2, [pc, 0x258]                                           |     r2 = *(0x8022ad8);
    0x08022880 ldr r1, [sp, 0x24]                                            |     r1 = var_24h;
    0x08022884 movw r3, 0x9ce                                                |     r3 = 0x9ce;
    0x08022888 ldr r0, [sp, 0x2c]                                            |     r0 = var_2ch;
    0x0802288c stmdaeq r2, {r3, r5, r6, r7, r8, sp}                          |     __asm ("stmdaeq r2, {r3, r5, r6, r7, r8, sp}");
    0x08022890 subs r4, r0, 0                                                |     r4 = r0 - 0;
    0x08022894 bne 0x8022908                                                 |     
                                                                             |     while (1) {
    0x08022898 cmp fp, 0                                                     |         
                                                                             |         if (fp != 0) {
    0x0802289c moveq fp, r4                                                  |             
                                                                             |         }
    0x080228a0 b 0x8022798                                                   |         goto label_11;
                                                                             | label_28:
    0x080228a4 ldr r3, [sp, 0x24]                                            |         r3 = var_24h;
    0x080228a8 mov r0, r4                                                    |         r0 = r4;
    0x080228ac rsb r1, fp, 0                                                 |         r1 = fp - ;
    0x080228b0 ldr r3, [r3, 0x20]                                            |         r3 = *((r3 + 0x20));
    0x080228b4 str r6, [sp, 4]                                               |         var_4h = r6;
    0x080228b8 ldr r2, [sl, 0x24]                                            |         r2 = *((sl + 0x24));
    0x080228bc str r2, [sp, 8]                                               |         var_8h = r2;
    0x080228c0 ldr r2, [sl, 0x20]                                            |         r2 = *((sl + 0x20));
    0x080228c4 str r2, [sp]                                                  |         *(sp) = r2;
    0x080228c8 stmdaeq r5, {r3, r4, r5, fp, sp, pc}                          |         __asm ("stmdaeq r5, {r3, r4, r5, fp, sp, pc}");
    0x080228cc stmdaeq r5, {r3, r4, r5, fp, sp, pc}                          |         __asm ("stmdaeq r5, {r3, r4, r5, fp, sp, pc}");
    0x080228d0 str r1, [sp, 0xc]                                             |         var_ch = r1;
    0x080228d4 stmdaeq r5, {r5, r7, fp, sp, pc}                              |         __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x080228d8 stmdaeq r5, {r5, r7, fp, sp, pc}                              |         __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x080228dc stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |         __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x080228e0 stmdaeq r5, {r2, r5, r7, fp, sp, pc}                          |         __asm ("stmdaeq r5, {r2, r5, r7, fp, sp, pc}");
    0x080228e4 stmdaeq r5, {r2, r5, r7, fp, sp, pc}                          |         __asm ("stmdaeq r5, {r2, r5, r7, fp, sp, pc}");
    0x080228e8 stmdaeq r5, {r5, r7, fp, sp, pc}                              |         __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x080228ec stmdaeq r5, {r5, r7, fp, sp, pc}                              |         __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x080228f0 mov r0, r4                                                    |         r0 = r4;
    0x080228f4 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |         __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
                                                                             | label_13:
    0x080228f8 ldr r2, [sp, 0x34]                                            |         r2 = var_34h;
    0x080228fc mov r3, 1                                                     |         r3 = 1;
    0x08022900 strb r3, [r2]                                                 |         *(r2) = r3;
    0x08022904 b 0x8022798                                                   |         goto label_11;
    0x08022908 ldr r3, [sp, 0x24]                                            |         r3 = var_24h;
    0x0802290c mov r2, 0                                                     |         r2 = 0;
    0x08022910 ldr r1, [pc, 0x1c4]                                           |         r1 = *(0x8022ad8);
    0x08022914 ldr r0, [r3, 0x14]                                            |         r0 = *((r3 + 0x14));
    0x08022918 ldr r3, [r3, 0x20]                                            |         r3 = *((r3 + 0x20));
    0x0802291c str r3, [sp, 0xc]                                             |         var_ch = r3;
    0x08022920 stmdaeq r5, {r3, r4, fp, sp, pc}                              |         __asm ("stmdaeq r5, {r3, r4, fp, sp, pc}");
    0x08022924 stmdaeq r5, {r3, r4, fp, sp, pc}                              |         __asm ("stmdaeq r5, {r3, r4, fp, sp, pc}");
    0x08022928 str r3, [sp, 8]                                               |         var_8h = r3;
    0x0802292c mov r3, 0                                                     |         r3 = 0;
    0x08022930 strd r2, r3, [sp]                                             |         __asm ("strd r2, r3, [sp]");
    0x08022934 rsb r3, r4, 0                                                 |         r3 = r4 - ;
    0x08022938 mov r2, 0x9d0                                                 |         r2 = 0x9d0;
    0x0802293c stmdaeq r4, {r2, r4, r5, r7, r8, sb, sp, lr}                  |         __asm ("stmdaeq r4, {r2, r4, r5, r7, r8, sb, sp, lr}");
    0x08022940 b 0x8022898                                                   |         
                                                                             |     }
                                                                             | label_30:
    0x08022944 ldr r3, [r3]                                                  |     r3 = *(r3);
    0x08022948 tst r3, 2                                                     |     
                                                                             |     if ((r3 & 2) == 0) {
    0x0802294c beq 0x8022844                                                 |         goto label_12;
                                                                             |     }
    0x08022950 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
    0x08022954 b 0x8022844                                                   |     goto label_12;
                                                                             | label_29:
    0x08022958 ldr r5, [sp, 0x24]                                            |     r5 = var_24h;
    0x0802295c mov r0, r4                                                    |     r0 = r4;
    0x08022960 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022964 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022968 ldr r3, [r5, 0x20]                                            |     r3 = *((r5 + 0x20));
    0x0802296c str r6, [sp, 4]                                               |     var_4h = r6;
    0x08022970 mov r6, r5                                                    |     r6 = r5;
    0x08022974 ldr r2, [sl, 0x24]                                            |     r2 = *((sl + 0x24));
    0x08022978 str r2, [sp, 8]                                               |     var_8h = r2;
    0x0802297c ldr r2, [sl, 0x20]                                            |     r2 = *((sl + 0x20));
    0x08022980 str r2, [sp]                                                  |     *(sp) = r2;
    0x08022984 mov r2, 0x1c                                                  |     r2 = 0x1c;
    0x08022988 str r2, [sp, 0xc]                                             |     var_ch = r2;
    0x0802298c stmdaeq r5, {r3, r4, r5, fp, sp, pc}                          |     __asm ("stmdaeq r5, {r3, r4, r5, fp, sp, pc}");
    0x08022990 stmdaeq r5, {r3, r4, r5, fp, sp, pc}                          |     __asm ("stmdaeq r5, {r3, r4, r5, fp, sp, pc}");
    0x08022994 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08022998 mov r0, r4                                                    |     r0 = r4;
    0x0802299c stmdaeq r5, {r2, r5, r7, fp, sp, pc}                          |     __asm ("stmdaeq r5, {r2, r5, r7, fp, sp, pc}");
    0x080229a0 stmdaeq r5, {r2, r5, r7, fp, sp, pc}                          |     __asm ("stmdaeq r5, {r2, r5, r7, fp, sp, pc}");
    0x080229a4 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x080229a8 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x080229ac stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x080229b0 ldr r4, [r5, 0x14]                                            |     r4 = *((r5 + 0x14));
    0x080229b4 mov r0, r4                                                    |     r0 = r4;
    0x080229b8 ldr r5, [r4, 0x1f0]                                           |     r5 = *((r4 + 0x1f0));
    0x080229bc stmdaeq r0, {r2, r3, r6, sb, fp}                              |     __asm ("stmdaeq r0, {r2, r3, r6, sb, fp}");
    0x080229c0 ldr r2, [r6, 0x14]                                            |     r2 = *((r6 + 0x14));
    0x080229c4 mov r3, r0                                                    |     r3 = r0;
    0x080229c8 ldr r2, [r2, 0x1f0]                                           |     r2 = *((r2 + 0x1f0));
    0x080229cc ldr r0, [r2, 0x30]                                            |     r0 = *((r2 + 0x30));
    0x080229d0 lsl r2, r1, r0                                                |     r2 = r1 << r0;
    0x080229d4 sub r1, r0, 0x20                                              |     r1 = r0 - 0x20;
    0x080229d8 orr r2, r2, r3, lsl r1                                        |     r2 |= (r3 << r1);
    0x080229dc rsb r1, r0, 0x20                                              |     r1 = 0x20 - r0;
    0x080229e0 orr r2, r2, r3, lsr r1                                        |     r2 |= (r3 >> r1);
    0x080229e4 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x080229e8 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x080229ec lsl r3, r3, r0                                                |     r3 <<= r0;
    0x080229f0 str r2, [sp, 4]                                               |     var_4h = r2;
    0x080229f4 mov r0, r4                                                    |     r0 = r4;
    0x080229f8 str r3, [sp]                                                  |     *(sp) = r3;
    0x080229fc stmdaeq r5, {r4, r6, r7, fp, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r6, r7, fp, sp, pc}");
    0x08022a00 stmdaeq r5, {r4, r6, r7, fp, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r6, r7, fp, sp, pc}");
    0x08022a04 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08022a08 mov r0, r4                                                    |     r0 = r4;
    0x08022a0c stmdaeq r5, {r4, r5, r6, r7, fp, sp, pc}                      |     __asm ("stmdaeq r5, {r4, r5, r6, r7, fp, sp, pc}");
    0x08022a10 stmdaeq r5, {r4, r5, r6, r7, fp, sp, pc}                      |     __asm ("stmdaeq r5, {r4, r5, r6, r7, fp, sp, pc}");
    0x08022a14 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022a18 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022a1c stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08022a20 ldr r3, [r4, 0x1f0]                                           |     r3 = *((r4 + 0x1f0));
    0x08022a24 ldr r2, [r5, 0xb0]                                            |     r2 = *((r5 + 0xb0));
    0x08022a28 ldr r1, [r3, 0x30]                                            |     r1 = *((r3 + 0x30));
    0x08022a2c ldr r3, [r5, 0xb4]                                            |     r3 = *((r5 + 0xb4));
    0x08022a30 sub r0, r1, 0x20                                              |     r0 = r1 - 0x20;
    0x08022a34 lsl r3, r3, r1                                                |     r3 <<= r1;
    0x08022a38 orr r3, r3, r2, lsl r0                                        |     r3 |= (r2 << r0);
    0x08022a3c rsb r0, r1, 0x20                                              |     r0 = 0x20 - r1;
    0x08022a40 orr r3, r3, r2, lsr r0                                        |     r3 |= (r2 >> r0);
    0x08022a44 mov r0, r4                                                    |     r0 = r4;
    0x08022a48 lsl r2, r2, r1                                                |     r2 <<= r1;
    0x08022a4c stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022a50 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022a54 strd r2, r3, [sp]                                             |     __asm ("strd r2, r3, [sp]");
    0x08022a58 stmdaeq r5, {r2, r3, r8, fp, sp, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r8, fp, sp, pc}");
    0x08022a5c stmdaeq r5, {r2, r3, r8, fp, sp, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r8, fp, sp, pc}");
    0x08022a60 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08022a64 ldr r3, [r4, 0x1f0]                                           |     r3 = *((r4 + 0x1f0));
    0x08022a68 ldr r1, [r3, 0x30]                                            |     r1 = *((r3 + 0x30));
    0x08022a6c ldrd r2, r3, [r5, 0xc8]                                       |     __asm ("ldrd r2, r3, [r5, 0xc8]");
    0x08022a70 sub r0, r1, 0x20                                              |     r0 = r1 - 0x20;
    0x08022a74 lsl r3, r3, r1                                                |     r3 <<= r1;
    0x08022a78 orr r3, r3, r2, lsl r0                                        |     r3 |= (r2 << r0);
    0x08022a7c rsb r0, r1, 0x20                                              |     r0 = 0x20 - r1;
    0x08022a80 orr r3, r3, r2, lsr r0                                        |     r3 |= (r2 >> r0);
    0x08022a84 mov r0, r4                                                    |     r0 = r4;
    0x08022a88 lsl r2, r2, r1                                                |     r2 <<= r1;
    0x08022a8c stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022a90 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022a94 strd r2, r3, [sp]                                             |     __asm ("strd r2, r3, [sp]");
    0x08022a98 stmdaeq r5, {r5, r8, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r8, fp, sp, pc}");
    0x08022a9c stmdaeq r5, {r5, r8, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r8, fp, sp, pc}");
    0x08022aa0 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08022aa4 mov r0, r4                                                    |     r0 = r4;
    0x08022aa8 stmdaeq r5, {r2, r4, r5, r8, fp, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r5, r8, fp, sp, pc}");
    0x08022aac stmdaeq r5, {r2, r4, r5, r8, fp, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r5, r8, fp, sp, pc}");
    0x08022ab0 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022ab4 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022ab8 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08022abc ldr r3, [r6, 0x1ac]                                           |     r3 = *((r6 + 0x1ac));
    0x08022ac0 mov r0, r4                                                    |     r0 = r4;
    0x08022ac4 stmdaeq r5, {r4, r6, r8, fp, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r6, r8, fp, sp, pc}");
    0x08022ac8 stmdaeq r5, {r4, r6, r8, fp, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r6, r8, fp, sp, pc}");
    0x08022acc stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022ad0 stmdaeq r5, {r5, r7, fp, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
    0x08022ad4 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08022ad8 b 0x80228f8                                                   |     goto label_13;
                                                                             | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8047030 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.parse_options ()                                             | void parse_options (int32_t arg_70h, uint32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_8h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_ch_2;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_6h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_24h;
                                                                             |     int32_t var_30h;
                                                                             |     int32_t var_34h;
                                                                             |     int32_t var_4ch;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08047030 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x08047034 cmp r0, 0                                                     |     
    0x08047038 sub sp, sp, 0x4c                                              |     
    0x0804703c strd r2, r3, [sp, 0xc]                                        |     __asm ("strd r2, r3, [var_ch]");
    0x08047040 ldr r3, [r1, 0x1f0]                                           |     r3 = *((r1 + 0x1f0));
    0x08047044 str r0, [sp, 0x1c]                                            |     var_1ch = r0;
    0x08047048 str r3, [sp, 8]                                               |     var_8h = r3;
                                                                             |     if (arg_70h == ) {
    0x0804704c beq 0x8047440                                                 |         goto label_1;
                                                                             |     }
    0x08047050 mov r3, sp                                                    |     r3 = sp;
    0x08047054 ldr r8, [pc, 0xa58]                                           |     r8 = *(0x8047ab0);
    0x08047058 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0804705c stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, lr, pc}");
    0x08047060 stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, lr, pc}");
    0x08047064 movw fp, 0xae14                                               |     
    0x08047068 movt fp, 0x147                                                |     fp = 0x147ae14;
    0x0804706c mov r5, r1                                                    |     r5 = r1;
    0x08047070 bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x08047074 str r3, [sp, 0x14]                                            |     var_14h = r3;
                                                                             |     do {
                                                                             | label_2:
    0x08047078 mov r1, r6                                                    |         r1 = r6;
    0x0804707c add r0, sp, 0x1c                                              |         r0 += var_1ch;
    0x08047080 stmdaeq r8, {r6, r7, r8, sb, fp, ip, sp, lr}                  |         __asm ("stmdaeq r8, {r6, r7, r8, sb, fp, ip, sp, lr}");
    0x08047084 subs sl, r0, 0                                                |         sl -= var_1ch;
                                                                             |         if (sl == var_1ch) {
    0x08047088 beq 0x8047430                                                 |             goto label_6;
                                                                             |         }
    0x0804708c ldrb r3, [sl]                                                 |         r3 = *(sl);
    0x08047090 cmp r3, 0                                                     |         
    0x08047094 beq 0x8047078                                                 |         
                                                                             |     } while (r3 == 0);
    0x08047098 add r2, sp, 0x30                                              |     r2 += var_30h;
    0x0804709c mov r1, r8                                                    |     r1 = r8;
    0x080470a0 mov r7, 0                                                     |     r7 = 0;
    0x080470a4 str r7, [sp, 0x30]                                            |     var_30h = r7;
    0x080470a8 str r7, [sp, 0x34]                                            |     var_34h = r7;
    0x080470ac stmdaeq r8, {r2, r6, r7, r8, sb, fp, ip, sp, lr}              |     __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, fp, ip, sp, lr}");
    0x080470b0 sub r3, r0, 6                                                 |     r3 -= var_6h;
    0x080470b4 str r7, [sp, 0x24]                                            |     var_24h = r7;
    0x080470b8 mov r4, r0                                                    |     r4 = r0;
    0x080470bc ldr r7, [r5, 0x1f0]                                           |     r7 = *((r5 + 0x1f0));
    0x080470c0 cmp r3, 0x38                                                  |     
                                                                             |     if (r3 > 0x38) {
                                                                             |         /* switch table (57 cases) at 0x80470cc */
    0x080470c4 ldrls pc, [pc, r3, lsl 2]                                     |         offset_0 = r3 << 2;
                                                                             |         pc = *((pc + offset_0));
                                                                             |     }
    0x080470c8 b 0x80471d4                                                   |     
    0x080471d4 ldr sb, [pc, 0x8e0]                                           |     sb = loc..LANCHOR0;
    0x080471d8 mov r3, 1                                                     |     r3 = 1;
    0x080471dc b 0x80471ec                                                   |     
                                                                             |     while (r4 != r3) {
    0x080471e0 ldr r3, [sb, 0xc]!                                            |         r3 = *((sb += 0xc));
    0x080471e4 cmp r3, 0x2e                                                  |         
                                                                             |         if (r3 == 0x2e) {
    0x080471e8 beq 0x8047540                                                 |             goto label_7;
                                                                             |         }
    0x080471ec cmp r4, r3                                                    |         
    0x080471f0 bne 0x80471e0                                                 |         
                                                                             |     }
    0x080471f4 ldr r2, [sb, 8]                                               |     r2 = *((sb + 8));
    0x080471f8 tst r2, 0x200                                                 |     
    0x080471fc bne 0x8047450                                                 |     
                                                                             |     while (r1 != r3) {
    0x08047200 ldr r1, [sp, 0x30]                                            |         r1 = var_30h;
    0x08047204 cmp r1, 0                                                     |         
                                                                             |         if (r1 != 0) {
    0x08047208 beq 0x8047228                                                 |             
    0x0804720c tst r2, 0x400                                                 |             
                                                                             |             if ((r2 & 0x400) == 0) {
    0x08047210 beq 0x80474e8                                                 |                 goto label_8;
                                                                             |             }
    0x08047214 tst r2, 0x20                                                  |             
                                                                             |             if ((r2 & 0x20) == 0) {
    0x08047218 beq 0x8047228                                                 |                 goto label_3;
                                                                             |             }
                                                                             | label_4:
    0x0804721c ldr r3, [sp, 0x24]                                            |             r3 = var_24h;
    0x08047220 cmp r3, 0                                                     |             
                                                                             |             if (r3 < 0) {
    0x08047224 blt 0x8047518                                                 |                 goto label_9;
                                                                             |             }
                                                                             |         }
                                                                             | label_3:
    0x08047228 tst r2, 8                                                     |         
                                                                             |         if ((r2 & 8) != 0) {
    0x0804722c beq 0x8047258                                                 |             
    0x08047230 ldr r3, [sb, 4]                                               |             r3 = *((sb + 4));
    0x08047234 tst r3, 0x8000000                                             |             
                                                                             |             if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x08047238 bne 0x8047528                                                 |                 goto label_10;
                                                                             |             }
    0x0804723c tst r3, 0x800000                                              |             
                                                                             |             if ((r3 & 0x800000) == 0) {
    0x08047240 beq 0x8047518                                                 |                 goto label_9;
                                                                             |             }
    0x08047244 ldr r2, [r5, 0x1f0]                                           |             r2 = *((r5 + 0x1f0));
    0x08047248 ldr r3, [r2, 0x50]                                            |             r3 = *((r2 + 0x50));
    0x0804724c orr r3, r3, 8                                                 |             r3 |= 8;
    0x08047250 str r3, [r2, 0x50]                                            |             *((r2 + 0x50)) = r3;
    0x08047254 ldr r2, [sb, 8]                                               |             r2 = *((sb + 8));
                                                                             |         }
                                                                             | label_5:
    0x08047258 tst r2, 0x10                                                  |         
                                                                             |         if ((r2 & 0x10) == 0) {
    0x0804725c ldrne r2, [r5, 0x1f0]                                         |             r2 = *((r5 + 0x1f0));
                                                                             |         }
                                                                             |         if ((r2 & 0x10) == 0) {
    0x08047260 ldrne r3, [r2, 0x4c]                                          |             r3 = *((r2 + 0x4c));
                                                                             |         }
    0x08047264 bicne r3, r3, 0x70                                            |         __asm ("bicne r3, r3, 0x70");
                                                                             |         if ((r2 & 0x10) == 0) {
    0x08047268 strne r3, [r2, 0x4c]                                          |             *((r2 + 0x4c)) = r3;
                                                                             |         }
                                                                             |         if ((r2 & 0x10) == 0) {
    0x0804726c ldrne r2, [sb, 8]                                             |             r2 = *((sb + 8));
                                                                             |         }
    0x08047270 ands r3, r2, 4                                                |         r3 = r2 & 4;
                                                                             |         if (r3 != r2) {
    0x08047274 bne 0x80474c8                                                 |             goto label_11;
                                                                             |         }
    0x08047278 sub r0, r4, 4                                                 |         r0 -= var_4h;
    0x0804727c cmp r0, 0x47                                                  |         
                                                                             |         if (r0 > 0x47) {
                                                                             |             /* switch table (72 cases) at 0x8047288 */
    0x08047280 ldrls pc, [pc, r0, lsl 2]                                     |             offset_1 = r0 << 2;
                                                                             |             pc = *((pc + offset_1));
                                                                             |         }
    0x08047284 b 0x804756c                                                   |         goto label_12;
                                                                             | label_6:
    0x08047430 ldr r3, [r5, 0x1f0]                                           |         r3 = *((r5 + 0x1f0));
    0x08047434 ldr r3, [r3, 0x4c]                                            |         r3 = *((r3 + 0x4c));
    0x08047438 tst r3, 0x400000                                              |         
                                                                             |         if ((r3 & 0x400000) != 0) {
    0x0804743c bne 0x804748c                                                 |             goto label_13;
                                                                             |         }
                                                                             | label_1:
    0x08047440 mov sb, 1                                                     |         sb = 1;
                                                                             | label_0:
    0x08047444 mov r0, sb                                                    |         r0 = sb;
    0x08047448 add sp, sp, 0x4c                                              |         
    0x0804744c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
    0x08047450 ldr r3, [r5, 0x70]                                            |         r3 = *((r5 + 0x70));
    0x08047454 ldr r1, [r3, 0x20]                                            |         r1 = *((r3 + 0x20));
    0x08047458 stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}                  |         __asm ("stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}");
    0x0804745c stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}                  |         __asm ("stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}");
    0x08047460 cmp r1, r3                                                    |         
    0x08047464 bne 0x8047200                                                 |         
                                                                             |     }
    0x08047468 mov r3, sl                                                    |     r3 = sl;
    0x0804746c mov r0, r5                                                    |     r0 = r5;
    0x08047470 stmdaeq r5, {r2, r3, r5, r7, sl, fp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r7, sl, fp, lr, pc}");
    0x08047474 stmdaeq r5, {r2, r3, r5, r7, sl, fp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r7, sl, fp, lr, pc}");
    0x08047478 stmdaeq r5, {r3, r4, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x0804747c stmdaeq r5, {r3, r4, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08047480 mov sb, 0                                                     |     sb = 0;
    0x08047484 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08047488 b 0x8047444                                                   |     goto label_0;
                                                                             | label_13:
    0x0804748c ldr r3, [sp, 8]                                               |     r3 = var_8h;
    0x08047490 ldr r2, [r3, 0x44]                                            |     r2 = *((r3 + 0x44));
    0x08047494 mov r3, 0x400                                                 |     r3 = 0x400;
    0x08047498 ldr r2, [r2, 0x18]                                            |     r2 = *((r2 + 0x18));
    0x0804749c lsl r3, r3, r2                                                |     r3 <<= r2;
    0x080474a0 cmp r3, 0x1000                                                |     
                                                                             |     if (r3 >= 0x1000) {
    0x080474a4 bhs 0x8047440                                                 |         goto label_1;
                                                                             |     }
    0x080474a8 mov r0, r5                                                    |     r0 = r5;
    0x080474ac stmdaeq r5, {r2, r4, r5, r6, r8, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r5, {r2, r4, r5, r6, r8, sb, sl, fp, lr, pc}");
    0x080474b0 stmdaeq r5, {r2, r4, r5, r6, r8, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r5, {r2, r4, r5, r6, r8, sb, sl, fp, lr, pc}");
    0x080474b4 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x080474b8 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x080474bc mov sb, 1                                                     |     sb = 1;
    0x080474c0 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x080474c4 b 0x8047444                                                   |     goto label_0;
                                                                             | label_11:
    0x080474c8 mov r3, sl                                                    |     r3 = sl;
    0x080474cc mov r0, r5                                                    |     r0 = r5;
    0x080474d0 stmdaeq r5, {r3, r4, r6, r7, sl, fp, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r6, r7, sl, fp, lr, pc}");
    0x080474d4 stmdaeq r5, {r3, r4, r6, r7, sl, fp, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r6, r7, sl, fp, lr, pc}");
    0x080474d8 stmdaeq r5, {r3, r4, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x080474dc stmdaeq r5, {r3, r4, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x080474e0 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x080474e4 b 0x8047078                                                   |     goto label_2;
                                                                             | label_8:
    0x080474e8 add r1, sp, 0x24                                              |     r1 += var_24h;
    0x080474ec add r0, sp, 0x30                                              |     r0 += var_30h;
    0x080474f0 stmdaeq r8, {r3, r6, r7, r8, sb, fp, ip, sp, lr}              |     __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, fp, ip, sp, lr}");
    0x080474f4 cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x080474f8 bne 0x8047518                                                 |         goto label_9;
                                                                             |     }
    0x080474fc ldr r1, [sp, 0x30]                                            |     r1 = var_30h;
    0x08047500 ldr r2, [sb, 8]                                               |     r2 = *((sb + 8));
    0x08047504 cmp r1, 0                                                     |     
                                                                             |     if (r1 == 0) {
    0x08047508 beq 0x8047228                                                 |         goto label_3;
                                                                             |     }
    0x0804750c tst r2, 0x20                                                  |     
                                                                             |     if ((r2 & 0x20) == 0) {
    0x08047510 beq 0x8047228                                                 |         goto label_3;
                                                                             |     }
    0x08047514 b 0x804721c                                                   |     goto label_4;
                                                                             | label_9:
    0x08047518 mov sb, 0                                                     |     sb = 0;
    0x0804751c mov r0, sb                                                    |     r0 = sb;
    0x08047520 add sp, sp, 0x4c                                              |     
    0x08047524 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_10:
    0x08047528 ldr r2, [r5, 0x1f0]                                           |     r2 = *((r5 + 0x1f0));
    0x0804752c ldr r3, [r2, 0x50]                                            |     r3 = *((r2 + 0x50));
    0x08047530 orr r3, r3, 1                                                 |     r3 |= 1;
    0x08047534 str r3, [r2, 0x50]                                            |     *((r2 + 0x50)) = r3;
    0x08047538 ldr r2, [sb, 8]                                               |     r2 = *((sb + 8));
    0x0804753c b 0x8047258                                                   |     goto label_5;
                                                                             | label_7:
    0x08047540 mov r0, r5                                                    |     r0 = r5;
    0x08047544 mov r3, sl                                                    |     r3 = sl;
    0x08047548 stmdaeq r5, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r5, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}");
    0x0804754c stmdaeq r5, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}          |     __asm ("stmdaeq r5, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}");
    0x08047550 stmdaeq r5, {r3, r4, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08047554 stmdaeq r5, {r3, r4, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x08047558 mov sb, 0                                                     |     sb = 0;
    0x0804755c stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08047560 mov r0, sb                                                    |     r0 = sb;
    0x08047564 add sp, sp, 0x4c                                              |     
    0x08047568 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | label_12:
    0x0804756c ands ip, r2, 0x80                                             |     
                                                                             |     if (ip == r2) {
    0x08047570 beq 0x8047838                                                 |         goto label_14;
                                                                             |     }
    0x08047574 ldr r2, [sp, 0x70]                                            |     r2 = *(arg_70h);
    0x08047578 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x0804757c beq 0x80478a4                                                 |         goto label_15;
                                                                             |     }
    0x08047580 ldr r2, [r7, 0x118]                                           |     r2 = *((r7 + 0x118));
    0x08047584 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08047588 beq 0x8047a5c                                                 |         goto label_16;
                                                                             |     }
    0x0804758c ldr r2, [r5, 0x1f0]                                           |     r2 = *((r5 + 0x1f0));
    0x08047590 ldr r1, [sb, 4]                                               |     r1 = *((sb + 4));
    0x08047594 ldr r2, [r2, 0x4c]                                            |     r2 = *((r2 + 0x4c));
    0x08047598 and r2, r2, 0xc00                                             |     r2 &= 0xc00;
    0x0804759c cmp r2, r1                                                    |     
                                                                             |     if (r2 == r1) {
    0x080475a0 beq 0x8047078                                                 |         goto label_2;
                                                                             |     }
    0x080475a4 mov r0, r5                                                    |     r0 = r5;
    0x080475a8 stmdaeq r5, {r2, r4, r8, sb, sl, fp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r4, r8, sb, sl, fp, lr, pc}");
    0x080475ac stmdaeq r5, {r2, r4, r8, sb, sl, fp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r4, r8, sb, sl, fp, lr, pc}");
    0x080475b0 stmdaeq r5, {r3, r4, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x080475b4 stmdaeq r5, {r3, r4, fp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
    0x080475b8 mov sb, r3                                                    |     sb = r3;
    0x080475bc stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x080475c0 b 0x8047444                                                   |     goto label_0;
                                                                             | label_14:
    0x08047838 sub r3, r4, 0x33                                              |     r3 = r4 - 0x33;
    0x0804783c cmp r3, 3                                                     |     
                                                                             |     if (r3 < 3) {
    0x08047840 bls 0x8047958                                                 |         goto label_17;
                                                                             |     }
    0x08047844 cmp r4, 0x1f                                                  |     
                                                                             |     if (r4 == 0x1f) {
    0x08047848 beq 0x8047944                                                 |         goto label_18;
                                                                             |     }
    0x0804784c cmp r4, 0x20                                                  |     
                                                                             |     if (r4 == 0x20) {
    0x08047850 beq 0x80479bc                                                 |         goto label_19;
                                                                             |     }
    0x08047854 cmp r1, 0                                                     |     
                                                                             |     if (r1 != 0) {
    0x08047858 moveq r3, 1                                                   |         r3 = 1;
                                                                             |     }
                                                                             |     if (r1 != 0) {
    0x0804785c streq r3, [sp, 0x24]                                          |         var_24h = r3;
                                                                             |     }
    0x08047860 ands r3, r2, 2                                                |     r3 = r2 & 2;
                                                                             |     if (r3 == r2) {
    0x08047864 beq 0x80479ac                                                 |         goto label_20;
                                                                             |     }
    0x08047868 ldr r3, [sp, 0x24]                                            |     r3 = var_24h;
    0x0804786c clz r3, r3                                                    |     r3 &= r3;
    0x08047870 lsr r3, r3, 5                                                 |     r3 >>= 5;
    0x08047874 str r3, [sp, 0x24]                                            |     var_24h = r3;
                                                                             |     do {
    0x08047878 tst r2, 0x1000                                                |         
    0x0804787c ldr r2, [sb, 4]                                               |         r2 = *((sb + 4));
                                                                             |         if ((r2 & 0x1000) == 0) {
    0x08047880 beq 0x8047a44                                                 |             goto label_21;
                                                                             |         }
    0x08047884 cmp r3, 0                                                     |         
    0x08047888 ldr r3, [r7, 0x50]                                            |         r3 = *((r7 + 0x50));
                                                                             |         if (r3 == 0) {
    0x0804788c orrne r3, r3, r2                                              |             r3 |= r2;
                                                                             |         }
    0x08047890 biceq r3, r3, r2                                              |         __asm ("biceq r3, r3, r2");
    0x08047894 str r3, [r7, 0x50]                                            |         *((r7 + 0x50)) = r3;
    0x08047898 b 0x8047078                                                   |         goto label_2;
                                                                             | label_15:
    0x080478a4 ldr r2, [r5, 0x1f0]                                           |         r2 = *((r5 + 0x1f0));
    0x080478a8 ldr r3, [r2, 0x4c]                                            |         r3 = *((r2 + 0x4c));
    0x080478ac bic r3, r3, 0xc00                                             |         r3 = BIT_MASK (r3, 0xc00);
    0x080478b0 str r3, [r2, 0x4c]                                            |         *((r2 + 0x4c)) = r3;
    0x080478b4 ldr r2, [sb, 4]                                               |         r2 = *((sb + 4));
    0x080478b8 ldr r3, [r7, 0x4c]                                            |         r3 = *((r7 + 0x4c));
    0x080478bc orr r3, r3, r2                                                |         r3 |= r2;
    0x080478c0 str r3, [r7, 0x4c]                                            |         *((r7 + 0x4c)) = r3;
    0x080478c4 b 0x8047078                                                   |         goto label_2;
                                                                             | label_18:
    0x08047944 ldr r2, [sb, 4]                                               |         r2 = *((sb + 4));
    0x08047948 ldr r3, [r7, 0x4c]                                            |         r3 = *((r7 + 0x4c));
    0x0804794c orr r3, r3, r2                                                |         r3 |= r2;
    0x08047950 str r3, [r7, 0x4c]                                            |         *((r7 + 0x4c)) = r3;
    0x08047954 b 0x8047078                                                   |         goto label_2;
                                                                             | label_17:
    0x08047958 mov r0, r5                                                    |         r0 = r5;
    0x0804795c stmdaeq r5, {r3, r4, r5, r8, sb, sl, fp, lr, pc}              |         __asm ("stmdaeq r5, {r3, r4, r5, r8, sb, sl, fp, lr, pc}");
    0x08047960 stmdaeq r5, {r3, r4, r5, r8, sb, sl, fp, lr, pc}              |         __asm ("stmdaeq r5, {r3, r4, r5, r8, sb, sl, fp, lr, pc}");
    0x08047964 stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}              |         __asm ("stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}");
    0x08047968 stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}              |         __asm ("stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}");
    0x0804796c mov sb, ip                                                    |         sb = ip;
    0x08047970 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |         __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08047974 ldr r3, [r7, 0x50]                                            |         r3 = *((r7 + 0x50));
    0x08047978 orr r3, r3, 0x20                                              |         r3 |= 0x20;
    0x0804797c str r3, [r7, 0x50]                                            |         *((r7 + 0x50)) = r3;
    0x08047980 b 0x8047444                                                   |         goto label_0;
                                                                             | label_20:
    0x080479ac tst r2, 1                                                     |         
                                                                             |         if ((r2 & 1) == 0) {
    0x080479b0 beq 0x8047a78                                                 |             goto label_22;
                                                                             |         }
    0x080479b4 ldr r3, [sp, 0x24]                                            |         r3 = var_24h;
    0x080479b8 b 0x8047878                                                   |         
                                                                             |     } while (1);
                                                                             | label_19:
    0x080479bc ldr r2, [sb, 4]                                               |     r2 = *((sb + 4));
    0x080479c0 ldr r3, [r7, 0x4c]                                            |     r3 = *((r7 + 0x4c));
    0x080479c4 bic r3, r3, r2                                                |     r3 = BIT_MASK (r3, r2);
    0x080479c8 str r3, [r7, 0x4c]                                            |     *((r7 + 0x4c)) = r3;
    0x080479cc b 0x8047078                                                   |     goto label_2;
                                                                             | label_21:
    0x08047a44 cmp r3, 0                                                     |     
    0x08047a48 ldr r3, [r7, 0x4c]                                            |     r3 = *((r7 + 0x4c));
                                                                             |     if (r3 == 0) {
    0x08047a4c orrne r3, r3, r2                                              |         r3 |= r2;
                                                                             |     }
    0x08047a50 biceq r3, r3, r2                                              |     __asm ("biceq r3, r3, r2");
    0x08047a54 str r3, [r7, 0x4c]                                            |     *((r7 + 0x4c)) = r3;
    0x08047a58 b 0x8047078                                                   |     goto label_2;
                                                                             | label_16:
    0x08047a5c mov r0, r5                                                    |     r0 = r5;
    0x08047a60 stmdaeq r5, {r3, r6, r7, sb, sl, fp, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r6, r7, sb, sl, fp, lr, pc}");
    0x08047a64 stmdaeq r5, {r3, r6, r7, sb, sl, fp, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r6, r7, sb, sl, fp, lr, pc}");
    0x08047a68 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x08047a6c stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x08047a70 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08047a74 b 0x8047078                                                   |     goto label_2;
                                                                             | label_22:
    0x08047a78 mov sb, r3                                                    |     sb = r3;
    0x08047a7c mov r0, r5                                                    |     r0 = r5;
    0x08047a80 mov r3, sl                                                    |     r3 = sl;
    0x08047a84 stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, lr, pc}");
    0x08047a88 stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, lr, pc}              |     __asm ("stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, lr, pc}");
    0x08047a8c stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x08047a90 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
    0x08047a94 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}          |     __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
    0x08047a98 mov r3, sb                                                    |     r3 = sb;
    0x08047a9c mov r2, 9                                                     |     r2 = 9;
    0x08047aa0 movw r1, 0x96b                                                |     r1 = 0x96b;
    0x08047aa4 stmdaeq r5, {r4, r5, r6, r7, sb, sl, lr, pc}                  |     __asm ("stmdaeq r5, {r4, r5, r6, r7, sb, sl, lr, pc}");
    0x08047aa8 stmdaeq r5, {r4, r5, r6, r7, sb, sl, lr, pc}                  |     __asm ("stmdaeq r5, {r4, r5, r6, r7, sb, sl, lr, pc}");
    0x08047aac stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}                      |     __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
    0x08047ab0 b 0x8047444                                                   |     goto label_0;
                                                                             | }

[*] Function printf used 1 times ext4.ko