[*] Binary protection state of libstdc++.so.6.0.29

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


[*] Function strcpy tear down of libstdc++.so.6.0.29

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0xe5414 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000e5414 ()                  | void fcn_000e5414 (uint32_t arg1, int16_t arg2, uint32_t arg3) {
                                             |     int16_t var_4h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     r2 = arg3;
    0x000e5414 invalid                       |     
    0x000e5418 ldrd r0, r4, [r0]             |     __asm ("ldrd r0, r4, [r0]");
    0x000e541c sub sp, 8                     |     
    0x000e541e sub.w r4, r4, -1              |     r4 -= -1;
    0x000e5422 clz r4, r4                    |     r4 &= r4;
    0x000e5426 lsrs r4, r4, 5                |     r4 >>= 5;
    0x000e5428 cmp r0, 0                     |     
    0x000e542a ite eq                        |     
                                             |     if (r0 != 0) {
    0x000e542c moveq r6, 0                   |         r6 = 0;
                                             |     }
                                             |     if (r0 == 0) {
    0x000e542e andne r6, r4, 1               |         r6 = r4 & 1;
                                             |     }
    0x000e5432 cbnz r6, 0xe545a              |     
                                             |     while (1) {
    0x000e5434 ldrd r3, r0, [r1]             |         __asm ("ldrd r3, r0, [r1]");
    0x000e5438 sub.w r0, r0, -1              |         r0 -= -1;
    0x000e543c clz r0, r0                    |         r0 &= r0;
    0x000e5440 lsrs r0, r0, 5                |         r0 >>= 5;
    0x000e5442 cmp r3, 0                     |         
    0x000e5444 ite eq                        |         
                                             |         if (r3 != 0) {
    0x000e5446 moveq r5, 0                   |             r5 = 0;
                                             |         }
                                             |         if (r3 == 0) {
    0x000e5448 andne r5, r0, 1               |             r5 = r0 & 1;
                                             |         }
                                             |         if (r5 != 0) {
    0x000e544c cbnz r5, 0xe5472              |             goto label_2;
                                             |         }
                                             | label_0:
    0x000e544e subs r0, r4, r0               |         r0 = r4 - r0;
    0x000e5450 clz r0, r0                    |         r0 &= r0;
    0x000e5454 lsrs r0, r0, 5                |         r0 >>= 5;
    0x000e5456 add sp, 8                     |         
    0x000e5458 pop {r4, r5, r6, pc}          |         
    0x000e545a ldrd r3, r2, [r0, 8]          |         __asm ("ldrd r3, r2, [r0, 8]");
    0x000e545e cmp r3, r2                    |         
                                             |         if (r3 >= r2) {
    0x000e5460 bhs 0xe548a                   |             goto label_3;
                                             |         }
    0x000e5462 ldr r0, [r3]                  |         r0 = *(r3);
                                             | label_1:
    0x000e5464 adds r0, 1                    |         r0++;
    0x000e5466 ittet eq                      |         
                                             |         if (r0 != 1) {
    0x000e5468 moveq r3, 0                   |             r3 = 0;
                                             |         }
                                             |         if (r0 != 1) {
    0x000e546a moveq r4, r6                  |             r4 = r6;
                                             |         }
                                             |         if (r0 == 1) {
    0x000e546c movne r4, 0                   |             r4 = 0;
                                             |         }
                                             |         if (r0 != 1) {
    0x000e546e streq r3, [r5]                |             *(r5) = r3;
                                             |         }
    0x000e5470 b 0xe5434                     |         
                                             |     }
                                             | label_2:
    0x000e5472 ldrd r2, r0, [r3, 8]          |     __asm ("ldrd r2, r0, [r3, 8]");
    0x000e5476 cmp r2, r0                    |     
                                             |     if (r2 >= r0) {
    0x000e5478 bhs 0xe5496                   |         goto label_4;
                                             |     }
    0x000e547a ldr r0, [r2]                  |     r0 = *(r2);
                                             |     do {
    0x000e547c adds r0, 1                    |         r0++;
    0x000e547e ittet eq                      |         
                                             |         if (r0 != 1) {
    0x000e5480 moveq r3, 0                   |             r3 = 0;
                                             |         }
                                             |         if (r0 != 1) {
    0x000e5482 moveq r0, r5                  |             r0 = r5;
                                             |         }
                                             |         if (r0 == 1) {
    0x000e5484 movne r0, 0                   |             r0 = 0;
                                             |         }
                                             |         if (r0 != 1) {
    0x000e5486 streq r3, [r1]                |             *(r1) = r3;
                                             |         }
    0x000e5488 b 0xe544e                     |         goto label_0;
                                             | label_3:
    0x000e548a ldr r3, [r0]                  |         r3 = *(r0);
    0x000e548c str r1, [sp, 4]               |         var_4h = r1;
    0x000e548e ldr r3, [r3, 0x24]            |         r3 = *((r3 + 0x24));
    0x000e5490 blx r3                        |         uint32_t (*r3)(uint32_t, uint32_t) (r1, r3);
    0x000e5492 ldr r1, [sp, 4]               |         r1 = var_4h;
    0x000e5494 b 0xe5464                     |         goto label_1;
                                             | label_4:
    0x000e5496 ldr r2, [r3]                  |         r2 = *(r3);
    0x000e5498 mov r0, r3                    |         r0 = r3;
    0x000e549a str r1, [sp, 4]               |         var_4h = r1;
    0x000e549c ldr r3, [r2, 0x24]            |         r3 = *((r2 + 0x24));
    0x000e549e blx r3                        |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000e54a0 ldr r1, [sp, 4]               |         r1 = var_4h;
    0x000e54a2 b 0xe547c                     |         
                                             |     } while (1);
                                             | }
    ; assembly                                                                                                                                                                           | /* r2dec pseudo code output */
                                                                                                                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0xec374 */
                                                                                                                                                                                         | #include <stdint.h>
                                                                                                                                                                                         |  
    ; (fcn) method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___._M_mutate_unsigned_int__unsigned_int__wchar_t_const__unsigned_int_ ()        | void method_std::_cxx11::basic_string_wchar_t_std::char_traits_wchar_t_std::allocator_wchar_t_M_mutate_unsigned_int_unsigned_int_wchar_t_const_unsigned_int_ (int16_t arg_30h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                                                                                                                         |     int16_t var_4h;
                                                                                                                                                                                         |     r0 = arg1;
                                                                                                                                                                                         |     r1 = arg2;
                                                                                                                                                                                         |     r2 = arg3;
                                                                                                                                                                                         |     r3 = arg4;
                                                                                                                                                                                         |     /* std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_mutate(unsigned int, unsigned int, wchar_t const*, unsigned int) */
    0x000ec374 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                                                                                                               |     
    0x000ec378 sub sp, 0xc                                                                                                                                                               |     
    0x000ec37a ldr.w fp, [sp, 0x30]                                                                                                                                                      |     fp = *(arg_30h);
    0x000ec37e mov sl, r3                                                                                                                                                                |     sl = r3;
    0x000ec380 mov sb, r0                                                                                                                                                                |     sb = r0;
    0x000ec382 mov r5, r1                                                                                                                                                                |     r5 = r1;
    0x000ec384 ldr r7, [r0, 4]                                                                                                                                                           |     r7 = *((r0 + 4));
    0x000ec386 adds r6, r1, r2                                                                                                                                                           |     r6 = r1 + r2;
    0x000ec388 sub.w r3, fp, r2                                                                                                                                                          |     r3 = fp - r2;
    0x000ec38c add r1, sp, 4                                                                                                                                                             |     r1 += var_4h;
    0x000ec38e mov r4, r0                                                                                                                                                                |     r4 = r0;
    0x000ec390 add r3, r7                                                                                                                                                                |     r3 += r7;
    0x000ec392 subs r7, r7, r6                                                                                                                                                           |     r7 -= r6;
    0x000ec394 str r3, [sp, 4]                                                                                                                                                           |     var_4h = r3;
    0x000ec396 ldr r3, [sb], 8                                                                                                                                                           |     r3 = *(sb);
                                                                                                                                                                                         |     sb += 8;
    0x000ec39a cmp sb, r3                                                                                                                                                                |     
    0x000ec39c ite ne                                                                                                                                                                    |     
                                                                                                                                                                                         |     if (sb == r3) {
    0x000ec39e ldrne r2, [r0, 8]                                                                                                                                                         |         r2 = *((r0 + 8));
                                                                                                                                                                                         |     }
                                                                                                                                                                                         |     if (sb != r3) {
    0x000ec3a0 moveq r2, 3                                                                                                                                                               |         r2 = 3;
                                                                                                                                                                                         |     }
    0x000ec3a2 blx 0x77d68                                                                                                                                                               |     r0 = fcn_00077d68 ();
    0x000ec3a6 mov r8, r0                                                                                                                                                                |     r8 = r0;
                                                                                                                                                                                         |     if (r5 == 0) {
    0x000ec3a8 cbz r5, 0xec3b6                                                                                                                                                           |         goto label_2;
                                                                                                                                                                                         |     }
    0x000ec3aa cmp r5, 1                                                                                                                                                                 |     
    0x000ec3ac ldr r1, [r4]                                                                                                                                                              |     r1 = *(r4);
                                                                                                                                                                                         |     if (r5 == 1) {
    0x000ec3ae beq 0xec406                                                                                                                                                               |         goto label_3;
                                                                                                                                                                                         |     }
    0x000ec3b0 mov r2, r5                                                                                                                                                                |     r2 = r5;
    0x000ec3b2 blx 0x78d44                                                                                                                                                               |     fcn_00078d44 ();
                                                                                                                                                                                         |     do {
                                                                                                                                                                                         | label_2:
    0x000ec3b6 cmp.w sl, 0                                                                                                                                                               |         
    0x000ec3ba it ne                                                                                                                                                                     |         
                                                                                                                                                                                         |         if (sl != 0) {
    0x000ec3bc cmpne fp, 0                                                                                                                                                               |             __asm ("cmpne fp, 0");
                                                                                                                                                                                         |         }
                                                                                                                                                                                         |         if (sl != 0) {
    0x000ec3c0 beq 0xec3d4                                                                                                                                                               |             
    0x000ec3c2 cmp.w fp, 1                                                                                                                                                               |             
    0x000ec3c6 add.w r0, r8, r5, lsl 2                                                                                                                                                   |             r0 = r8 + (r5 << 2);
                                                                                                                                                                                         |             if (fp == 1) {
    0x000ec3ca beq 0xec416                                                                                                                                                               |                 goto label_4;
                                                                                                                                                                                         |             }
    0x000ec3cc mov r1, sl                                                                                                                                                                |             r1 = sl;
    0x000ec3ce mov r2, fp                                                                                                                                                                |             r2 = fp;
    0x000ec3d0 blx 0x78d44                                                                                                                                                               |             fcn_00078d44 ();
                                                                                                                                                                                         |         }
                                                                                                                                                                                         | label_1:
    0x000ec3d4 ldr r0, [r4]                                                                                                                                                              |         r0 = *(r4);
                                                                                                                                                                                         |         if (r7 != 0) {
    0x000ec3d6 cbz r7, 0xec3f0                                                                                                                                                           |             
    0x000ec3d8 cmp r7, 1                                                                                                                                                                 |             
    0x000ec3da add r5, fp                                                                                                                                                                |             r5 += fp;
    0x000ec3dc add.w r1, r0, r6, lsl 2                                                                                                                                                   |             r1 = r0 + (r6 << 2);
    0x000ec3e0 add.w r3, r8, r5, lsl 2                                                                                                                                                   |             r3 = r8 + (r5 << 2);
                                                                                                                                                                                         |             if (r7 == 1) {
    0x000ec3e4 beq 0xec40c                                                                                                                                                               |                 goto label_5;
                                                                                                                                                                                         |             }
    0x000ec3e6 mov r2, r7                                                                                                                                                                |             r2 = r7;
    0x000ec3e8 mov r0, r3                                                                                                                                                                |             r0 = r3;
    0x000ec3ea blx 0x78d44                                                                                                                                                               |             fcn_00078d44 ();
    0x000ec3ee ldr r0, [r4]                                                                                                                                                              |             r0 = *(r4);
                                                                                                                                                                                         |         }
                                                                                                                                                                                         | label_0:
    0x000ec3f0 cmp sb, r0                                                                                                                                                                |         
                                                                                                                                                                                         |         if (sb != r0) {
    0x000ec3f2 beq 0xec3f8                                                                                                                                                               |             
    0x000ec3f4 blx 0x789a8                                                                                                                                                               |             fcn_000789a8 ();
                                                                                                                                                                                         |         }
    0x000ec3f8 ldr r3, [sp, 4]                                                                                                                                                           |         r3 = var_4h;
    0x000ec3fa str.w r8, [r4]                                                                                                                                                            |         __asm ("str.w r8, [r4]");
    0x000ec3fe str r3, [r4, 8]                                                                                                                                                           |         *((r4 + 8)) = r3;
    0x000ec400 add sp, 0xc                                                                                                                                                               |         
    0x000ec402 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                                                                                                |         
                                                                                                                                                                                         | label_3:
    0x000ec406 ldr r3, [r1]                                                                                                                                                              |         r3 = *(r1);
    0x000ec408 str r3, [r0]                                                                                                                                                              |         *(r0) = r3;
    0x000ec40a b 0xec3b6                                                                                                                                                                 |         
                                                                                                                                                                                         |     } while (1);
                                                                                                                                                                                         | label_5:
    0x000ec40c ldr.w r3, [r0, r6, lsl 2]                                                                                                                                                 |     offset_0 = r6 << 2;
                                                                                                                                                                                         |     r3 = *((r0 + offset_0));
    0x000ec410 str.w r3, [r8, r5, lsl 2]                                                                                                                                                 |     __asm ("str.w r3, [r8, r5, lsl 2]");
    0x000ec414 b 0xec3f0                                                                                                                                                                 |     goto label_0;
                                                                                                                                                                                         | label_4:
    0x000ec416 ldr.w r3, [sl]                                                                                                                                                            |     r3 = *(sl);
    0x000ec41a str.w r3, [r8, r5, lsl 2]                                                                                                                                                 |     __asm ("str.w r3, [r8, r5, lsl 2]");
    0x000ec41e b 0xec3d4                                                                                                                                                                 |     goto label_1;
                                                                                                                                                                                         | }
    ; assembly                                                                                                                                           | /* r2dec pseudo code output */
                                                                                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0xf6bd0 */
                                                                                                                                                         | #include <stdint.h>
                                                                                                                                                         |  
    ; (fcn) method.std::filesystem.create_symlink_std::filesystem::__cxx11::path_const__std::filesystem::__cxx11::path_const__std::error_code_ ()        | void method_std::filesystem_create_symlink_std::filesystem::_cxx11::path_const_std::filesystem::_cxx11::path_const_std::error_code_ (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                                                                                                         |     r0 = arg1;
                                                                                                                                                         |     r1 = arg2;
                                                                                                                                                         |     r2 = arg3;
                                                                                                                                                         |     /* std::filesystem::create_symlink(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&, std::error_code&) */
    0x000f6bd0 push {r3, r4, r5, lr}                                                                                                                     |     
    0x000f6bd2 mov r5, r2                                                                                                                                |     r5 = r2;
    0x000f6bd4 ldr r1, [r1]                                                                                                                              |     r1 = *(r1);
    0x000f6bd6 ldr r0, [r0]                                                                                                                              |     r0 = *(r0);
    0x000f6bd8 blx 0x79214                                                                                                                               |     r0 = fcn_00079214 ();
                                                                                                                                                         |     if (r0 != 0) {
    0x000f6bdc cbz r0, 0xf6bee                                                                                                                           |         
    0x000f6bde blx 0x7b0b0                                                                                                                               |         r0 = fcn_0007b0b0 ();
    0x000f6be2 ldr r4, [r0]                                                                                                                              |         r4 = *(r0);
    0x000f6be4 blx 0x7a898                                                                                                                               |         r0 = fcn_0007a898 ();
    0x000f6be8 strd r4, r0, [r5]                                                                                                                         |         __asm ("strd r4, r0, [r5]");
    0x000f6bec pop {r3, r4, r5, pc}                                                                                                                      |         
                                                                                                                                                         |     }
    0x000f6bee mov r4, r0                                                                                                                                |     r4 = r0;
    0x000f6bf0 blx 0x7a5b0                                                                                                                               |     r0 = fcn_0007a5b0 ();
    0x000f6bf4 strd r4, r0, [r5]                                                                                                                         |     __asm ("strd r4, r0, [r5]");
    0x000f6bf8 pop {r3, r4, r5, pc}                                                                                                                      |     
                                                                                                                                                         | }
    ; assembly                                                                                                   | /* r2dec pseudo code output */
                                                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0xf6d20 */
                                                                                                                 | #include <stdint.h>
                                                                                                                 |  
    ; (fcn) method.std::filesystem.current_path_std::filesystem::__cxx11::path_const__std::error_code_ ()        | void method_std::filesystem_current_path_std::filesystem::_cxx11::path_const_std::error_code_ (int16_t arg1, int16_t arg2) {
                                                                                                                 |     r0 = arg1;
                                                                                                                 |     r1 = arg2;
                                                                                                                 |     /* std::filesystem::current_path(std::filesystem::__cxx11::path const&, std::error_code&) */
    0x000f6d20 invalid                                                                                           |     
    0x000f6d24 ldr r0, [r0]                                                                                      |     r0 = *(r0);
    0x000f6d26 blx 0x7a144                                                                                       |     r0 = lstat64 ();
                                                                                                                 |     if (r0 != 0) {
    0x000f6d2a cbz r0, 0xf6d3c                                                                                   |         
    0x000f6d2c blx 0x7b0b0                                                                                       |         r0 = fcn_0007b0b0 ();
    0x000f6d30 ldr r4, [r0]                                                                                      |         r4 = *(r0);
    0x000f6d32 blx 0x7a898                                                                                       |         r0 = fcn_0007a898 ();
    0x000f6d36 strd r4, r0, [r5]                                                                                 |         __asm ("strd r4, r0, [r5]");
    0x000f6d3a pop {r3, r4, r5, pc}                                                                              |         
                                                                                                                 |     }
    0x000f6d3c mov r4, r0                                                                                        |     r4 = r0;
    0x000f6d3e blx 0x7a5b0                                                                                       |     r0 = fcn_0007a5b0 ();
    0x000f6d42 strd r4, r0, [r5]                                                                                 |     __asm ("strd r4, r0, [r5]");
    0x000f6d46 pop {r3, r4, r5, pc}                                                                              |     
                                                                                                                 | }
    ; assembly                                                                                                                       | /* r2dec pseudo code output */
                                                                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0xf75c4 */
                                                                                                                                     | #include <stdint.h>
                                                                                                                                     |  
    ; (fcn) method.std::filesystem.resize_file_std::filesystem::__cxx11::path_const__unsigned_long_long__std::error_code_ ()         | void method_std::filesystem_resize_file_std::filesystem::_cxx11::path_const_unsigned_long_long_std::error_code_ (int16_t arg1, uint32_t arg4) {
                                                                                                                                     |     int16_t var_10h_2;
                                                                                                                                     |     r0 = arg1;
                                                                                                                                     |     r3 = arg4;
                                                                                                                                     |     if (? >= ?) {
                                                                                                                                     |         /* std::filesystem::resize_file(std::filesystem::__cxx11::path const&, unsigned long long, std::error_code&) */
    0x000f75c4 ldrlt r2, [r8, -0xb00]!                                                                                               |         r2 = *((r8 -= 0xb00));
                                                                                                                                     |     }
    0x000f75c8 ldr r5, [sp, 0x10]                                                                                                    |     r5 = var_10h_2;
                                                                                                                                     |     if (? < ?) {
    0x000f75ca bge 0xf75d8                                                                                                           |         
    0x000f75cc movs r4, 0x16                                                                                                         |         r4 = 0x16;
    0x000f75ce blx 0x7a898                                                                                                           |         r0 = fcn_0007a898 ();
    0x000f75d2 strd r4, r0, [r5]                                                                                                     |         __asm ("strd r4, r0, [r5]");
    0x000f75d6 pop {r3, r4, r5, pc}                                                                                                  |         
                                                                                                                                     |     }
    0x000f75d8 ldr r0, [r0]                                                                                                          |     r0 = *(r0);
    0x000f75da blx 0x7b270                                                                                                           |     r0 = fcn_0007b270 ();
    0x000f75de mov r4, r0                                                                                                            |     r4 = r0;
                                                                                                                                     |     if (r0 != 0) {
    0x000f75e0 cbz r0, 0xf75f2                                                                                                       |         
    0x000f75e2 blx 0x7b0b0                                                                                                           |         r0 = fcn_0007b0b0 ();
    0x000f75e6 ldr r4, [r0]                                                                                                          |         r4 = *(r0);
    0x000f75e8 blx 0x7a898                                                                                                           |         r0 = fcn_0007a898 ();
    0x000f75ec strd r4, r0, [r5]                                                                                                     |         __asm ("strd r4, r0, [r5]");
    0x000f75f0 pop {r3, r4, r5, pc}                                                                                                  |         
                                                                                                                                     |     }
    0x000f75f2 blx 0x7a5b0                                                                                                           |     r0 = fcn_0007a5b0 ();
    0x000f75f6 strd r4, r0, [r5]                                                                                                     |     __asm ("strd r4, r0, [r5]");
    0x000f75fa pop {r3, r4, r5, pc}                                                                                                  |     
                                                                                                                                     | }
    ; assembly                                                                                                           | /* r2dec pseudo code output */
                                                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0x104fe8 */
                                                                                                                         | #include <stdint.h>
                                                                                                                         |  
    ; (fcn) method.std::filesystem.resize_file_std::filesystem::path_const__unsigned_long_long__std::error_code_ ()      | void method_std::filesystem_resize_file_std::filesystem::path_const_unsigned_long_long_std::error_code_ (int16_t arg_10h, int16_t arg1, uint32_t arg4) {
                                                                                                                         |     r0 = arg1;
                                                                                                                         |     r3 = arg4;
                                                                                                                         |     if (? >= ?) {
                                                                                                                         |         /* std::filesystem::resize_file(std::filesystem::path const&, unsigned long long, std::error_code&) */
    0x00104fe8 ldrlt r2, [r8, -0xb00]!                                                                                   |         r2 = *((r8 -= 0xb00));
                                                                                                                         |     }
    0x00104fec ldr r5, [sp, 0x10]                                                                                        |     r5 = *(arg_10h);
                                                                                                                         |     if (? < ?) {
    0x00104fee bge 0x104ffc                                                                                              |         
    0x00104ff0 movs r4, 0x16                                                                                             |         r4 = 0x16;
    0x00104ff2 blx 0x7a898                                                                                               |         r0 = fcn_0007a898 ();
    0x00104ff6 strd r4, r0, [r5]                                                                                         |         __asm ("strd r4, r0, [r5]");
    0x00104ffa pop {r3, r4, r5, pc}                                                                                      |         
                                                                                                                         |     }
    0x00104ffc ldr r0, [r0]                                                                                              |     r0 = *(r0);
    0x00104ffe blx 0x7b270                                                                                               |     r0 = fcn_0007b270 ();
    0x00105002 mov r4, r0                                                                                                |     r4 = r0;
                                                                                                                         |     if (r0 != 0) {
    0x00105004 cbz r0, 0x105016                                                                                          |         
    0x00105006 blx 0x7b0b0                                                                                               |         r0 = fcn_0007b0b0 ();
    0x0010500a ldr r4, [r0]                                                                                              |         r4 = *(r0);
    0x0010500c blx 0x7a898                                                                                               |         r0 = fcn_0007a898 ();
    0x00105010 strd r4, r0, [r5]                                                                                         |         __asm ("strd r4, r0, [r5]");
    0x00105014 pop {r3, r4, r5, pc}                                                                                      |         
                                                                                                                         |     }
    0x00105016 blx 0x7a5b0                                                                                               |     r0 = fcn_0007a5b0 ();
    0x0010501a strd r4, r0, [r5]                                                                                         |     __asm ("strd r4, r0, [r5]");
    0x0010501e pop {r3, r4, r5, pc}                                                                                      |     
                                                                                                                         | }
    ; assembly                                                                           | /* r2dec pseudo code output */
                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0xfc994 */
                                                                                         | #include <stdint.h>
                                                                                         |  
    ; (fcn) method.std::filesystem::__cxx11::path.has_relative_path___const ()           | void method_std::filesystem::_cxx11::path_has_relative_path_const (int16_t arg1) {
                                                                                         |     r0 = arg1;
                                                                                         |     /* std::filesystem::__cxx11::path::has_relative_path() const */
    0x000fc994 stmibvs r3, {r3, r4, r5, r8, sl, ip, sp, pc}                              |     __asm ("stmibvs r3, {r3, r4, r5, r8, sl, ip, sp, pc}");
    0x000fc998 and r2, r3, 3                                                             |     r2 = r3 & 3;
    0x000fc99c cmp r2, 3                                                                 |     
    0x000fc99e beq 0xfc9ae                                                               |     
                                                                                         |     while (r2 == 0) {
    0x000fc9a0 bics r3, r3, 3                                                            |         __asm ("bics r3, r3, 3");
                                                                                         |         if (r2 != 3) {
    0x000fc9a4 beq 0xfc9aa                                                               |             
    0x000fc9a6 ldr r3, [r3]                                                              |             r3 = *(r3);
                                                                                         |             if (r3 != 0) {
    0x000fc9a8 cbnz r3, 0xfc9b8                                                          |                 goto label_1;
                                                                                         |             }
                                                                                         |         }
                                                                                         | label_0:
    0x000fc9aa movs r0, 0                                                                |         r0 = 0;
    0x000fc9ac pop {r3, r4, r5, pc}                                                      |         
    0x000fc9ae ldr r2, [r0, 4]                                                           |         r2 = *((r0 + 4));
    0x000fc9b0 cmp r2, 0                                                                 |         
    0x000fc9b2 beq 0xfc9a0                                                               |         
                                                                                         |     }
    0x000fc9b4 movs r0, 1                                                                |     r0 = 1;
    0x000fc9b6 pop {r3, r4, r5, pc}                                                      |     
                                                                                         | label_1:
    0x000fc9b8 add.w r4, r0, 0x18                                                        |     r4 = r0 + 0x18;
    0x000fc9bc mov r0, r4                                                                |     r0 = r4;
    0x000fc9be blx 0x79388                                                               |     fcn_00079388 ();
    0x000fc9c2 ldr r3, [r0, 0x18]                                                        |     r3 = *((r0 + 0x18));
    0x000fc9c4 mov r5, r0                                                                |     r5 = r0;
    0x000fc9c6 mov r0, r4                                                                |     r0 = r4;
    0x000fc9c8 and r3, r3, 3                                                             |     r3 &= 3;
    0x000fc9cc cmp r3, 1                                                                 |     
    0x000fc9ce it eq                                                                     |     
                                                                                         |     if (r3 != 1) {
    0x000fc9d0 addeq r5, 0x20                                                            |         r5 += 0x20;
                                                                                         |     }
    0x000fc9d2 blx 0x7a438                                                               |     r0 = fcn_0007a438 ();
    0x000fc9d6 cmp r5, r0                                                                |     
                                                                                         |     if (r5 != r0) {
    0x000fc9d8 beq 0xfc9e6                                                               |         
    0x000fc9da ldr r3, [r5, 0x18]                                                        |         r3 = *((r5 + 0x18));
    0x000fc9dc and r3, r3, 3                                                             |         r3 &= 3;
    0x000fc9e0 cmp r3, 2                                                                 |         
    0x000fc9e2 it eq                                                                     |         
                                                                                         |         if (r3 == 2) {
    0x000fc9e4 addeq r5, 0x20                                                            |             r5 += 0x20;
                                                                                         |             goto label_2;
                                                                                         |         }
                                                                                         |     }
                                                                                         | label_2:
    0x000fc9e6 mov r0, r4                                                                |     r0 = r4;
    0x000fc9e8 blx 0x7a438                                                               |     r0 = fcn_0007a438 ();
    0x000fc9ec cmp r5, r0                                                                |     
                                                                                         |     if (r5 == r0) {
    0x000fc9ee beq 0xfc9aa                                                               |         goto label_0;
                                                                                         |     }
    0x000fc9f0 ldr r0, [r5, 4]                                                           |     r0 = *((r5 + 4));
    0x000fc9f2 subs r0, 0                                                                |     
    0x000fc9f4 it ne                                                                     |     
                                                                                         |     if (r0 == 0) {
    0x000fc9f6 movne r0, 1                                                               |         r0 = 1;
                                                                                         |     }
    0x000fc9f8 pop {r3, r4, r5, pc}                                                      |     
                                                                                         | }
    ; assembly                                                                       | /* r2dec pseudo code output */
                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0xfc2c8 */
                                                                                     | #include <stdint.h>
                                                                                     |  
    ; (fcn) method.std::filesystem::__cxx11::path.has_root_name___const ()           | void method_std::filesystem::_cxx11::path_has_root_name_const (int16_t arg1) {
                                                                                     |     r0 = arg1;
                                                                                     |     /* std::filesystem::__cxx11::path::has_root_name() const */
    0x000fc2c8 ldr r2, [r0, 0x18]                                                    |     r2 = *((r0 + 0x18));
    0x000fc2ca push {r3, lr}                                                         |     
    0x000fc2cc and r3, r2, 3                                                         |     r3 = r2 & 3;
    0x000fc2d0 cmp r3, 1                                                             |     
                                                                                     |     if (r3 != 1) {
    0x000fc2d2 beq 0xfc2de                                                           |         
    0x000fc2d4 bics r3, r2, 3                                                        |         __asm ("bics r3, r2, 3");
                                                                                     |         if (r3 == 1) {
    0x000fc2d8 beq 0xfc2de                                                           |             goto label_0;
                                                                                     |         }
    0x000fc2da ldr r3, [r3]                                                          |         r3 = *(r3);
                                                                                     |         if (r3 != 0) {
    0x000fc2dc cbnz r3, 0xfc2e2                                                      |             goto label_1;
                                                                                     |         }
                                                                                     |     }
                                                                                     | label_0:
    0x000fc2de mov r0, r3                                                            |     r0 = r3;
    0x000fc2e0 pop {r3, pc}                                                          |     
                                                                                     | label_1:
    0x000fc2e2 adds r0, 0x18                                                         |     r0 += 0x18;
    0x000fc2e4 blx 0x79388                                                           |     fcn_00079388 ();
    0x000fc2e8 ldr r0, [r0, 0x18]                                                    |     r0 = *((r0 + 0x18));
    0x000fc2ea and r0, r0, 3                                                         |     r0 &= 3;
    0x000fc2ee sub.w r0, r0, 1                                                       |     r0--;
    0x000fc2f2 clz r0, r0                                                            |     r0 &= r0;
    0x000fc2f6 lsrs r0, r0, 5                                                        |     r0 >>= 5;
    0x000fc2f8 pop {r3, pc}                                                          |     
                                                                                     | }
    ; assembly                                                                                               | /* r2dec pseudo code output */
                                                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0xfe3c4 */
                                                                                                             | #include <stdint.h>
                                                                                                             |  
                                                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                                             |  
    ; (fcn) method.std::filesystem::__cxx11::path.operator_std::filesystem::__cxx11::path_const_ ()          | void method_std::filesystem::_cxx11::path_operator_std::filesystem::_cxx11::path_const_ (int16_t arg1, int16_t arg2) {
                                                                                                             |     int16_t var_4h;
                                                                                                             |     int16_t var_8h;
                                                                                                             |     int16_t var_ch;
                                                                                                             |     int16_t var_10h;
                                                                                                             |     int16_t var_14h;
                                                                                                             |     int16_t var_18h;
                                                                                                             |     int16_t var_1ch;
                                                                                                             |     int16_t var_20h;
                                                                                                             |     int16_t var_24h;
                                                                                                             |     int16_t var_28h;
                                                                                                             |     int16_t var_38h;
                                                                                                             |     int16_t var_3ch;
                                                                                                             |     int16_t var_40h;
                                                                                                             |     int16_t var_44h;
                                                                                                             |     int16_t var_48h;
                                                                                                             |     int16_t var_58h;
                                                                                                             |     int16_t var_5ch;
                                                                                                             |     int32_t var_18h_2;
                                                                                                             |     int32_t var_0h;
                                                                                                             |     int32_t var_0h_2;
                                                                                                             |     r0 = arg1;
                                                                                                             |     r1 = arg2;
                                                                                                             |     /* std::filesystem::__cxx11::path::operator+=(std::filesystem::__cxx11::path const&) */
    0x000fe3c4 push {r1, r3, r6, fp, sp, lr}                                                                 |     
    0x000fe3c8 ldr r7, [pc, 0x3c0]                                                                           |     r7 = *(0xfe78c);
    0x000fe3ca mov r7, r0                                                                                    |     r7 = r0;
    0x000fe3cc sub sp, 0x64                                                                                  |     
    0x000fe3ce cmp r2, 0                                                                                     |     
                                                                                                             |     if (r2 == 0) {
    0x000fe3d0 beq.w 0xfe554                                                                                 |         goto label_18;
                                                                                                             |     }
    0x000fe3d4 ldr.w fp, [r0, 4]                                                                             |     fp = *((r0 + 4));
    0x000fe3d8 cmp.w fp, 0                                                                                   |     
                                                                                                             |     if (fp == 0) {
    0x000fe3dc beq.w 0xfe69a                                                                                 |         goto label_19;
                                                                                                             |     }
    0x000fe3e0 ldr r3, [r0, 0x18]                                                                            |     r3 = *((r0 + 0x18));
    0x000fe3e2 mov sl, r1                                                                                    |     sl = r1;
    0x000fe3e4 and r1, r3, 3                                                                                 |     r1 = r3 & 3;
    0x000fe3e8 bics r3, r3, 3                                                                                |     __asm ("bics r3, r3, 3");
    0x000fe3ec it ne                                                                                         |     
                                                                                                             |     if (fp == 0) {
    0x000fe3ee ldrne r3, [r3]                                                                                |         r3 = *(r3);
                                                                                                             |     }
    0x000fe3f0 str r1, [sp, 4]                                                                               |     var_4h = r1;
    0x000fe3f2 add.w r1, fp, r2                                                                              |     r1 = fp + r2;
    0x000fe3f6 str r3, [sp, 0x14]                                                                            |     var_14h = r3;
    0x000fe3f8 blx 0x79cc8                                                                                   |     fcn_00079cc8 ();
    0x000fe3fc movs r3, 0                                                                                    |     r3 = 0;
    0x000fe3fe add r0, sp, 0x38                                                                              |     r0 += var_38h;
    0x000fe400 str r3, [sp, 0x24]                                                                            |     var_24h = r3;
    0x000fe402 strb.w r3, [sp, 0x28]                                                                         |     var_28h = r3;
    0x000fe406 add r3, sp, 0x28                                                                              |     r3 += var_28h;
    0x000fe408 str r3, [sp, 8]                                                                               |     var_8h = r3;
    0x000fe40a str r3, [sp, 0x20]                                                                            |     var_20h = r3;
    0x000fe40c str r0, [sp, 0xc]                                                                             |     var_ch = r0;
    0x000fe40e blx 0x7aa50                                                                                   |     fcn_0007aa50 ();
    0x000fe412 ldr.w r2, [sl, 0x18]                                                                          |     r2 = *((sl + 0x18));
    0x000fe416 mov.w r3, -1                                                                                  |     r3 = -1;
    0x000fe41a str r3, [sp, 0x3c]                                                                            |     var_3ch = r3;
    0x000fe41c ands r4, r2, 3                                                                                |     r4 = r2 & 3;
                                                                                                             |     if (r4 != r2) {
    0x000fe420 bne.w 0xfe560                                                                                 |         goto label_20;
                                                                                                             |     }
    0x000fe424 mov r5, r2                                                                                    |     r5 = r2;
    0x000fe426 ldr r3, [r5], 8                                                                               |     r3 = *(r5);
                                                                                                             |     r5 += 8;
    0x000fe42a add.w sb, r2, r3, lsl 5                                                                       |     sb = r2 + (r3 << 5);
    0x000fe42e add.w sb, sb, 8                                                                               |     sb += 8;
                                                                                                             | label_1:
    0x000fe432 ldr r3, [r5, 0x18]                                                                            |     r3 = var_38h;
    0x000fe434 and r1, r3, 3                                                                                 |     r1 = r3 & 3;
    0x000fe438 ldr r3, [r7, 0x18]                                                                            |     r3 = *((r7 + 0x18));
    0x000fe43a cmp r1, 3                                                                                     |     
    0x000fe43c and r6, r3, 3                                                                                 |     r6 = r3 & 3;
                                                                                                             |     if (r1 == 3) {
    0x000fe440 beq.w 0xfe608                                                                                 |         goto label_21;
                                                                                                             |     }
    0x000fe444 ldrd r1, r0, [r7]                                                                             |     __asm ("ldrd r1, r0, [r7]");
    0x000fe448 add r1, r0                                                                                    |     r1 += r0;
    0x000fe44a ldrb r1, [r1, -0x1]                                                                           |     r1 = *((r1 - 0x1));
    0x000fe44e cmp r1, 0x2f                                                                                  |     
                                                                                                             |     if (r1 == 0x2f) {
    0x000fe450 beq.w 0xfe6c2                                                                                 |         goto label_22;
                                                                                                             |     }
    0x000fe454 movs r6, 0                                                                                    |     r6 = 0;
    0x000fe456 mov.w r1, -1                                                                                  |     r1 = -1;
    0x000fe45a mov r8, r6                                                                                    |     r8 = r6;
    0x000fe45c str r1, [sp, 0x10]                                                                            |     var_10h = r1;
                                                                                                             | label_12:
    0x000fe45e lsls r1, r3, 0x1e                                                                             |     r1 = r3 << 0x1e;
    0x000fe460 itt ne                                                                                        |     
                                                                                                             |     if (r1 != r3) {
    0x000fe462 bicne r3, r3, 3                                                                               |         __asm ("bicne r3, r3, 3");
                                                                                                             |     }
                                                                                                             |     if (r1 != r3) {
    0x000fe466 movs r1, 1                                                                                    |         r1 = 1;
                                                                                                             |     }
                                                                                                             |     if (r1 == 1) {
    0x000fe468 bne 0xfe474                                                                                   |         
                                                                                                             | label_2:
    0x000fe46a bics r3, r3, 3                                                                                |         __asm ("bics r3, r3, 3");
    0x000fe46e ite ne                                                                                        |         
                                                                                                             |         if (r1 == 1) {
    0x000fe470 ldrne r1, [r3]                                                                                |             r1 = *(r3);
                                                                                                             |         }
                                                                                                             |         if (r1 == 1) {
    0x000fe472 moveq r1, r3                                                                                  |             r1 = r3;
                                                                                                             |             goto label_6;
                                                                                                             |         }
                                                                                                             |     }
                                                                                                             | label_6:
    0x000fe474 cmp r4, 0                                                                                     |     
                                                                                                             |     if (r4 != 0) {
    0x000fe476 bne 0xfe55c                                                                                   |         goto label_23;
                                                                                                             |     }
    0x000fe478 bics r2, r2, 3                                                                                |     __asm ("bics r2, r2, 3");
                                                                                                             |     if (r4 != 0) {
    0x000fe47c bne.w 0xfe602                                                                                 |         goto label_24;
                                                                                                             |     }
                                                                                                             | label_0:
    0x000fe480 str r3, [r7, 0x18]                                                                            |     *((r7 + 0x18)) = r3;
    0x000fe482 add.w r3, r7, 0x18                                                                            |     r3 = r7 + 0x18;
    0x000fe486 movs r2, 0                                                                                    |     r2 = 0;
    0x000fe488 mov r0, r3                                                                                    |     r0 = r3;
    0x000fe48a str r3, [sp, 0x18]                                                                            |     var_18h = r3;
    0x000fe48c bl 0xfcec0                                                                                    |     fcn_000fcec0 (r0, r1);
    0x000fe490 ldr r2, [r7, 0x18]                                                                            |     r2 = *((r7 + 0x18));
    0x000fe492 ldr r0, [sp, 4]                                                                               |     r0 = var_4h;
    0x000fe494 ldr r3, [r2]                                                                                  |     r3 = *(r2);
    0x000fe496 lsls r3, r3, 5                                                                                |     r3 <<= 5;
    0x000fe498 add.w r1, r3, 8                                                                               |     r1 = r3 + 8;
    0x000fe49c adds r4, r2, r1                                                                               |     r4 = r2 + r1;
    0x000fe49e cmp r0, 0                                                                                     |     
                                                                                                             |     if (r0 != 0) {
    0x000fe4a0 bne.w 0xfe636                                                                                 |         goto label_25;
                                                                                                             |     }
    0x000fe4a4 ldr r1, [sp, 0x10]                                                                            |     r1 = var_10h;
    0x000fe4a6 cmp sb, r5                                                                                    |     
    0x000fe4a8 clz r1, r1                                                                                    |     r1 &= r1;
    0x000fe4ac lsr.w r1, r1, 5                                                                               |     r1 >>= 5;
    0x000fe4b0 it eq                                                                                         |     
                                                                                                             |     if (sb != r5) {
    0x000fe4b2 moveq r1, 0                                                                                   |         r1 = 0;
                                                                                                             |     }
    0x000fe4b4 cmp r1, 0                                                                                     |     
                                                                                                             |     if (r1 != 0) {
    0x000fe4b6 bne.w 0xfe6de                                                                                 |         goto label_26;
                                                                                                             |     }
                                                                                                             | label_3:
    0x000fe4ba cmp sb, r5                                                                                    |     
                                                                                                             |     if (sb == r5) {
    0x000fe4bc beq 0xfe520                                                                                   |         goto label_5;
                                                                                                             |     }
                                                                                                             | label_8:
    0x000fe4be ldr r3, [r5, 0x18]                                                                            |     r3 = var_58h;
    0x000fe4c0 and r3, r3, 3                                                                                 |     r3 &= 3;
    0x000fe4c4 cmp r3, 1                                                                                     |     
                                                                                                             |     if (r3 == 1) {
    0x000fe4c6 beq.w 0xfe73e                                                                                 |         goto label_27;
                                                                                                             |     }
                                                                                                             | label_10:
    0x000fe4ca cmp r5, sb                                                                                    |     
                                                                                                             |     if (r5 == sb) {
    0x000fe4cc beq 0xfe520                                                                                   |         goto label_5;
                                                                                                             |     }
    0x000fe4ce ldr r3, [r5, 0x18]                                                                            |     r3 = var_18h_2;
    0x000fe4d0 and r3, r3, 3                                                                                 |     r3 &= 3;
    0x000fe4d4 cmp r3, 2                                                                                     |     
                                                                                                             |     if (r3 == 2) {
    0x000fe4d6 beq.w 0xfe6a6                                                                                 |         goto label_28;
                                                                                                             |     }
                                                                                                             |     do {
                                                                                                             | label_4:
    0x000fe4da ldrd r1, r2, [r5]                                                                             |         __asm ("ldrd r1, r2, [r5]");
    0x000fe4de adds r4, 0x20                                                                                 |         r4 += 0x20;
    0x000fe4e0 ldr r6, [r5, 0x1c]                                                                            |         r6 = *((r5 + 0x1c));
    0x000fe4e2 sub.w r8, r4, 0x20                                                                            |         r8 = r4 - 0x20;
    0x000fe4e6 sub.w r3, r4, 0x18                                                                            |         r3 = r4 - 0x18;
    0x000fe4ea mov r0, r8                                                                                    |         r0 = r8;
    0x000fe4ec add r2, r1                                                                                    |         r2 += r1;
    0x000fe4ee str r3, [r4, -0x20]                                                                           |         *((r4 - 0x20)) = r3;
    0x000fe4f2 add r6, fp                                                                                    |         r6 += fp;
    0x000fe4f4 bl 0xfc01c                                                                                    |         fcn_000fc01c (r0, r1, r2, r3);
    0x000fe4f8 sub.w r0, r4, 8                                                                               |         r0 = r4 - 8;
    0x000fe4fc blx 0x7aa50                                                                                   |         fcn_0007aa50 ();
    0x000fe500 ldr r3, [r4, -0x8]                                                                            |         r3 = *((r4 - 0x8));
    0x000fe504 adds r5, 0x20                                                                                 |         r5 += 0x20;
    0x000fe506 str r6, [r4, -0x4]                                                                            |         *((r4 - 0x4)) = r6;
    0x000fe50a cmp sb, r5                                                                                    |         
    0x000fe50c orr r3, r3, 3                                                                                 |         r3 |= 3;
    0x000fe510 str r3, [r4, -0x8]                                                                            |         *((r4 - 0x8)) = r3;
    0x000fe514 ldr r2, [r7, 0x18]                                                                            |         r2 = *((r7 + 0x18));
    0x000fe516 ldr r3, [r2]                                                                                  |         r3 = *(r2);
    0x000fe518 add.w r3, r3, 1                                                                               |         r3++;
    0x000fe51c str r3, [r2]                                                                                  |         *(r2) = r3;
    0x000fe51e bne 0xfe4da                                                                                   |         
                                                                                                             |     } while (sb != r5);
                                                                                                             | label_5:
    0x000fe520 ldrd r1, r2, [sl]                                                                             |     __asm ("ldrd r1, r2, [sl]");
    0x000fe524 mov r0, r7                                                                                    |     r0 = r7;
    0x000fe526 blx 0x78af0                                                                                   |     fcn_00078af0 ();
    0x000fe52a ldrd r3, r5, [r7]                                                                             |     __asm ("ldrd r3, r5, [r7]");
    0x000fe52e add r3, r5                                                                                    |     r3 += r5;
    0x000fe530 ldrb r3, [r3, -0x1]                                                                           |     r3 = *((r3 - 0x1));
    0x000fe534 cmp r3, 0x2f                                                                                  |     
                                                                                                             |     if (r3 == 0x2f) {
    0x000fe536 beq.w 0xfe712                                                                                 |         goto label_29;
                                                                                                             |     }
                                                                                                             | label_9:
    0x000fe53a ldr r1, [sp, 0x38]                                                                            |     r1 = var_38h;
                                                                                                             |     if (r1 != 0) {
    0x000fe53c cbz r1, 0xfe544                                                                               |         
    0x000fe53e ldr r0, [sp, 0xc]                                                                             |         r0 = var_ch;
    0x000fe540 blx 0x793e4                                                                                   |         fcn_000793e4 ();
                                                                                                             |     }
    0x000fe544 ldr r0, [sp, 0x20]                                                                            |     r0 = var_20h;
    0x000fe546 ldr r3, [sp, 8]                                                                               |     r3 = var_8h;
    0x000fe548 cmp r0, r3                                                                                    |     
                                                                                                             |     if (r0 != r3) {
    0x000fe54a beq 0xfe554                                                                                   |         
    0x000fe54c ldr r1, [sp, 0x28]                                                                            |         r1 = var_28h;
    0x000fe54e adds r1, 1                                                                                    |         r1++;
    0x000fe550 blx 0x7ae30                                                                                   |         fcn_0007ae30 ();
                                                                                                             |     }
                                                                                                             | label_18:
    0x000fe554 mov r0, r7                                                                                    |     r0 = r7;
    0x000fe556 add sp, 0x64                                                                                  |     
    0x000fe558 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                    |     
                                                                                                             | label_23:
    0x000fe55c adds r1, 1                                                                                    |     r1++;
    0x000fe55e b 0xfe480                                                                                     |     goto label_0;
                                                                                                             | label_20:
    0x000fe560 ldrd r1, r2, [sl]                                                                             |     __asm ("ldrd r1, r2, [sl]");
    0x000fe564 add.w sb, sp, 0x40                                                                            |     sb += var_40h;
    0x000fe568 add r5, sp, 0x48                                                                              |     r5 += var_48h;
    0x000fe56a mov r0, sb                                                                                    |     r0 = sb;
    0x000fe56c str r5, [sp, 0x40]                                                                            |     var_40h = r5;
    0x000fe56e add r2, r1                                                                                    |     r2 += r1;
    0x000fe570 bl 0xfc01c                                                                                    |     fcn_000fc01c (r0, r1, r2, r3);
    0x000fe574 add r6, sp, 0x58                                                                              |     r6 += var_58h;
    0x000fe576 mov r0, r6                                                                                    |     r0 = r6;
    0x000fe578 blx 0x7aa50                                                                                   |     fcn_0007aa50 ();
    0x000fe57c ldr r3, [sp, 0x58]                                                                            |     r3 = var_58h;
    0x000fe57e movs r2, 0                                                                                    |     r2 = 0;
    0x000fe580 str r2, [sp, 0x5c]                                                                            |     var_5ch = r2;
    0x000fe582 ldr r0, [sp, 0x20]                                                                            |     r0 = var_20h;
    0x000fe584 bic r3, r3, 3                                                                                 |     r3 = BIT_MASK (r3, 3);
    0x000fe588 ldr r2, [sp, 0x44]                                                                            |     r2 = var_44h;
    0x000fe58a orrs r3, r4                                                                                   |     r3 |= r4;
    0x000fe58c str r3, [sp, 0x58]                                                                            |     var_58h = r3;
    0x000fe58e ldr r3, [sp, 0x40]                                                                            |     r3 = var_40h;
    0x000fe590 cmp r3, r5                                                                                    |     
                                                                                                             |     if (r3 == r5) {
    0x000fe592 beq.w 0xfe7b0                                                                                 |         goto label_30;
                                                                                                             |     }
    0x000fe596 ldr r4, [sp, 8]                                                                               |     r4 = var_8h;
    0x000fe598 ldr r1, [sp, 0x48]                                                                            |     r1 = var_48h;
    0x000fe59a strd r3, r2, [sp, 0x20]                                                                       |     __asm ("strd r3, r2, [var_24h]");
    0x000fe59e cmp r0, r4                                                                                    |     
    0x000fe5a0 it eq                                                                                         |     
                                                                                                             |     if (r0 != r4) {
    0x000fe5a2 streq r1, [sp, 0x28]                                                                          |         var_28h = r1;
                                                                                                             |     }
                                                                                                             |     if (r0 == r4) {
    0x000fe5a4 beq.w 0xfe7ca                                                                                 |         goto label_31;
                                                                                                             |     }
    0x000fe5a8 ldr r3, [sp, 0x28]                                                                            |     r3 = var_28h;
    0x000fe5aa str r1, [sp, 0x28]                                                                            |     var_28h = r1;
    0x000fe5ac cmp r0, 0                                                                                     |     
                                                                                                             |     if (r0 == 0) {
    0x000fe5ae beq.w 0xfe7ca                                                                                 |         goto label_31;
                                                                                                             |     }
    0x000fe5b2 str r3, [sp, 0x48]                                                                            |     var_48h = r3;
    0x000fe5b4 str r0, [sp, 0x40]                                                                            |     var_40h = r0;
                                                                                                             | label_13:
    0x000fe5b6 movs r3, 0                                                                                    |     r3 = 0;
    0x000fe5b8 str r3, [sp, 0x44]                                                                            |     var_44h = r3;
    0x000fe5ba strb r3, [r0]                                                                                 |     *(r0) = r3;
    0x000fe5bc ldr r1, [sp, 0x38]                                                                            |     r1 = var_38h;
    0x000fe5be ldr r2, [sp, 0x58]                                                                            |     r2 = var_58h;
    0x000fe5c0 str r3, [sp, 0x58]                                                                            |     var_58h = r3;
    0x000fe5c2 str r2, [sp, 0x38]                                                                            |     var_38h = r2;
                                                                                                             |     if (r1 != 0) {
    0x000fe5c4 cbz r1, 0xfe5cc                                                                               |         
    0x000fe5c6 ldr r0, [sp, 0xc]                                                                             |         r0 = var_ch;
    0x000fe5c8 blx 0x793e4                                                                                   |         fcn_000793e4 ();
                                                                                                             |     }
    0x000fe5cc ldr r2, [sp, 0x40]                                                                            |     r2 = var_40h;
    0x000fe5ce movs r3, 0                                                                                    |     r3 = 0;
    0x000fe5d0 str r3, [sp, 0x44]                                                                            |     var_44h = r3;
    0x000fe5d2 mov r0, sb                                                                                    |     r0 = sb;
    0x000fe5d4 strb r3, [r2]                                                                                 |     *(r2) = r3;
    0x000fe5d6 blx 0x7b200                                                                                   |     fcn_0007b200 ();
    0x000fe5da ldrd r1, r3, [sp, 0x58]                                                                       |     __asm ("ldrd r1, r3, [var_58h]");
    0x000fe5de str r3, [sp, 0x3c]                                                                            |     var_3ch = r3;
                                                                                                             |     if (r1 != 0) {
    0x000fe5e0 cbz r1, 0xfe5e8                                                                               |         
    0x000fe5e2 mov r0, r6                                                                                    |         r0 = r6;
    0x000fe5e4 blx 0x793e4                                                                                   |         fcn_000793e4 ();
                                                                                                             |     }
    0x000fe5e8 ldr r0, [sp, 0x40]                                                                            |     r0 = var_40h;
    0x000fe5ea cmp r0, r5                                                                                    |     
                                                                                                             |     if (r0 != r5) {
    0x000fe5ec beq 0xfe5f6                                                                                   |         
    0x000fe5ee ldr r1, [sp, 0x48]                                                                            |         r1 = var_48h;
    0x000fe5f0 adds r1, 1                                                                                    |         r1++;
    0x000fe5f2 blx 0x7ae30                                                                                   |         fcn_0007ae30 ();
                                                                                                             |     }
    0x000fe5f6 ldr.w r2, [sl, 0x18]                                                                          |     r2 = *((sl + 0x18));
    0x000fe5fa add r5, sp, 0x20                                                                              |     r5 += var_20h;
    0x000fe5fc and r4, r2, 3                                                                                 |     r4 = r2 & 3;
    0x000fe600 b 0xfe432                                                                                     |     goto label_1;
                                                                                                             | label_24:
    0x000fe602 ldr r2, [r2]                                                                                  |     r2 = *(r2);
    0x000fe604 add r1, r2                                                                                    |     r1 += r2;
    0x000fe606 b 0xfe480                                                                                     |     goto label_0;
                                                                                                             | label_21:
    0x000fe608 cmp r6, 3                                                                                     |     
                                                                                                             |     if (r6 == 3) {
    0x000fe60a beq.w 0xfe776                                                                                 |         goto label_32;
                                                                                                             |     }
    0x000fe60e cmp r6, 0                                                                                     |     
                                                                                                             |     if (r6 != 0) {
    0x000fe610 bne 0xfe6b0                                                                                   |         goto label_33;
                                                                                                             |     }
    0x000fe612 ldr r1, [r3]                                                                                  |     r1 = *(r3);
    0x000fe614 add.w r1, r3, r1, lsl 5                                                                       |     r1 = r3 + (r1 << 5);
    0x000fe618 sub.w r0, r1, 0x18                                                                            |     r0 = r1 - 0x18;
    0x000fe61c ldr r1, [r0, 0x18]                                                                            |     r1 = *((r0 + 0x18));
    0x000fe61e and r1, r1, 3                                                                                 |     r1 &= 3;
    0x000fe622 cmp r1, 3                                                                                     |     
    0x000fe624 itt ne                                                                                        |     
                                                                                                             |     if (r1 == 3) {
    0x000fe626 movne r1, -1                                                                                  |         r1 = -1;
                                                                                                             |     }
                                                                                                             |     if (r1 != 3) {
    0x000fe62a str r1, [sp, 0x10]                                                                            |         var_10h = r1;
                                                                                                             |     }
                                                                                                             |     if (r1 == 3) {
    0x000fe62c beq.w 0xfe78e                                                                                 |         goto label_34;
                                                                                                             |     }
                                                                                                             | label_7:
    0x000fe630 movs r6, 0                                                                                    |     r6 = 0;
    0x000fe632 mov r8, r6                                                                                    |     r8 = r6;
    0x000fe634 b 0xfe46a                                                                                     |     goto label_2;
                                                                                                             | label_25:
    0x000fe636 add.w r3, r4, 8                                                                               |     r3 = r4 + 8;
    0x000fe63a mov r0, r4                                                                                    |     r0 = r4;
    0x000fe63c str r3, [r2, r1]                                                                              |     *((r2 + r1)) = r3;
    0x000fe63e movs r2, 0                                                                                    |     r2 = 0;
    0x000fe640 add.w r3, r4, 0x20                                                                            |     r3 = r4 + 0x20;
    0x000fe644 mov r1, r2                                                                                    |     r1 = r2;
    0x000fe646 str r3, [sp, 0x1c]                                                                            |     var_1ch = r3;
    0x000fe648 bl 0xfc01c                                                                                    |     fcn_000fc01c (r0, r1, r2, r3);
    0x000fe64c add.w r0, r4, 0x18                                                                            |     r0 = r4 + 0x18;
    0x000fe650 blx 0x7aa50                                                                                   |     fcn_0007aa50 ();
    0x000fe654 ldr r3, [r4, 0x18]                                                                            |     r3 = *((r4 + 0x18));
    0x000fe656 mov r0, r4                                                                                    |     r0 = r4;
    0x000fe658 ldr r2, [sp, 4]                                                                               |     r2 = var_4h;
    0x000fe65a bic r3, r3, 3                                                                                 |     r3 = BIT_MASK (r3, 3);
    0x000fe65e orrs r3, r2                                                                                   |     r3 |= r2;
    0x000fe660 str r3, [r4, 0x18]                                                                            |     *((r4 + 0x18)) = r3;
    0x000fe662 movs r3, 0                                                                                    |     r3 = 0;
    0x000fe664 ldr r2, [r7, 0x18]                                                                            |     r2 = *((r7 + 0x18));
    0x000fe666 str r3, [r4, 0x1c]                                                                            |     *((r4 + 0x1c)) = r3;
    0x000fe668 ldr r3, [r2]                                                                                  |     r3 = *(r2);
    0x000fe66a adds r3, 1                                                                                    |     r3++;
    0x000fe66c str r3, [r2]                                                                                  |     *(r2) = r3;
    0x000fe66e ldr r1, [r7, 4]                                                                               |     r1 = *((r7 + 4));
    0x000fe670 add r1, r8                                                                                    |     r1 += r8;
    0x000fe672 blx 0x79cc8                                                                                   |     fcn_00079cc8 ();
    0x000fe676 mov r1, r7                                                                                    |     r1 = r7;
    0x000fe678 mov r0, r4                                                                                    |     r0 = r4;
    0x000fe67a blx 0x7aef0                                                                                   |     fcn_0007aef0 ();
    0x000fe67e ldr r2, [r4, 4]                                                                               |     r2 = *((r4 + 4));
    0x000fe680 mvn r3, 0xc0000000                                                                            |     r3 = ~0xc0000000;
    0x000fe684 subs r3, r3, r2                                                                               |     r3 -= r2;
    0x000fe686 cmp r3, r8                                                                                    |     
                                                                                                             |     if (r3 <= r8) {
    0x000fe688 blo.w 0xfe80c                                                                                 |         goto label_35;
                                                                                                             |     }
    0x000fe68c mov r2, r8                                                                                    |     r2 = r8;
    0x000fe68e mov r1, r6                                                                                    |     r1 = r6;
    0x000fe690 mov r0, r4                                                                                    |     r0 = r4;
    0x000fe692 blx 0x78af0                                                                                   |     fcn_00078af0 ();
    0x000fe696 ldr r4, [sp, 0x1c]                                                                            |     r4 = var_1ch;
    0x000fe698 b 0xfe4ba                                                                                     |     goto label_3;
                                                                                                             | label_19:
    0x000fe69a blx 0x7969c                                                                                   |     fcn_0007969c ();
    0x000fe69e mov r0, r7                                                                                    |     r0 = r7;
    0x000fe6a0 add sp, 0x64                                                                                  |     
    0x000fe6a2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                                    |     
                                                                                                             | label_28:
    0x000fe6a6 adds r5, 0x20                                                                                 |     r5 += 0x20;
    0x000fe6a8 cmp sb, r5                                                                                    |     
                                                                                                             |     if (sb != r5) {
    0x000fe6aa bne.w 0xfe4da                                                                                 |         goto label_4;
                                                                                                             |     }
    0x000fe6ae b 0xfe520                                                                                     |     goto label_5;
                                                                                                             |     do {
                                                                                                             | label_33:
    0x000fe6b0 movs r6, 0                                                                                    |         r6 = 0;
    0x000fe6b2 mov r8, r6                                                                                    |         r8 = r6;
                                                                                                             | label_11:
    0x000fe6b4 mov.w r1, -1                                                                                  |         r1 = -1;
    0x000fe6b8 bic r3, r3, 3                                                                                 |         r3 = BIT_MASK (r3, 3);
    0x000fe6bc str r1, [sp, 0x10]                                                                            |         var_10h = r1;
    0x000fe6be movs r1, 1                                                                                    |         r1 = 1;
    0x000fe6c0 b 0xfe474                                                                                     |         goto label_6;
                                                                                                             | label_22:
    0x000fe6c2 cmp r6, 0                                                                                     |         
    0x000fe6c4 bne 0xfe6b0                                                                                   |         
                                                                                                             |     } while (r6 != 0);
    0x000fe6c6 ldr r1, [r3]                                                                                  |     r1 = *(r3);
    0x000fe6c8 add.w r1, r3, r1, lsl 5                                                                       |     r1 = r3 + (r1 << 5);
    0x000fe6cc ldr r1, [r1]                                                                                  |     r1 = *(r1);
    0x000fe6ce and r1, r1, 3                                                                                 |     r1 &= 3;
    0x000fe6d2 subs r1, 3                                                                                    |     r1 -= 3;
    0x000fe6d4 it ne                                                                                         |     
                                                                                                             |     if (r1 == 3) {
    0x000fe6d6 movne r1, -1                                                                                  |         r1 = -1;
                                                                                                             |     }
    0x000fe6da str r1, [sp, 0x10]                                                                            |     var_10h = r1;
    0x000fe6dc b 0xfe630                                                                                     |     goto label_7;
                                                                                                             | label_26:
    0x000fe6de sub.w r6, r3, 0x18                                                                            |     r6 = r3 - 0x18;
    0x000fe6e2 adds r4, r2, r6                                                                               |     r4 = r2 + r6;
    0x000fe6e4 ldr r1, [r4, 0x18]                                                                            |     r1 = *((r4 + 0x18));
                                                                                                             |     if (r1 != 0) {
    0x000fe6e6 cbz r1, 0xfe6f4                                                                               |         
    0x000fe6e8 add.w r0, r4, 0x18                                                                            |         r0 = r4 + 0x18;
    0x000fe6ec str r2, [sp, 0x1c]                                                                            |         var_1ch = r2;
    0x000fe6ee blx 0x793e4                                                                                   |         fcn_000793e4 ();
    0x000fe6f2 ldr r2, [sp, 0x1c]                                                                            |         r2 = var_1ch;
                                                                                                             |     }
    0x000fe6f4 ldr r0, [r2, r6]                                                                              |     r0 = *((r2 + r6));
    0x000fe6f6 add.w r3, r4, 8                                                                               |     r3 = r4 + 8;
    0x000fe6fa cmp r0, r3                                                                                    |     
                                                                                                             |     if (r0 != r3) {
    0x000fe6fc beq 0xfe70a                                                                                   |         
    0x000fe6fe ldr r1, [r4, 8]                                                                               |         r1 = *((r4 + 8));
    0x000fe700 str r2, [sp, 0x1c]                                                                            |         var_1ch = r2;
    0x000fe702 adds r1, 1                                                                                    |         r1++;
    0x000fe704 blx 0x7ae30                                                                                   |         fcn_0007ae30 ();
    0x000fe708 ldr r2, [sp, 0x1c]                                                                            |         r2 = var_1ch;
                                                                                                             |     }
    0x000fe70a ldr r3, [r2]                                                                                  |     r3 = *(r2);
    0x000fe70c subs r3, 1                                                                                    |     r3--;
    0x000fe70e str r3, [r2]                                                                                  |     *(r2) = r3;
    0x000fe710 b 0xfe4be                                                                                     |     goto label_8;
                                                                                                             | label_29:
    0x000fe712 add.w r3, r4, 8                                                                               |     r3 = r4 + 8;
    0x000fe716 movs r2, 0                                                                                    |     r2 = 0;
    0x000fe718 mov r1, r2                                                                                    |     r1 = r2;
    0x000fe71a mov r0, r4                                                                                    |     r0 = r4;
    0x000fe71c str r3, [r4]                                                                                  |     *(r4) = r3;
    0x000fe71e bl 0xfc01c                                                                                    |     fcn_000fc01c (r0, r1, r2, r3);
    0x000fe722 add.w r0, r4, 0x18                                                                            |     r0 = r4 + 0x18;
    0x000fe726 blx 0x7aa50                                                                                   |     fcn_0007aa50 ();
    0x000fe72a ldr r3, [r4, 0x18]                                                                            |     r3 = *((r4 + 0x18));
    0x000fe72c str r5, [r4, 0x1c]                                                                            |     *((r4 + 0x1c)) = r5;
    0x000fe72e orr r3, r3, 3                                                                                 |     r3 |= 3;
    0x000fe732 str r3, [r4, 0x18]                                                                            |     *((r4 + 0x18)) = r3;
    0x000fe734 ldr r2, [r7, 0x18]                                                                            |     r2 = *((r7 + 0x18));
    0x000fe736 ldr r3, [r2]                                                                                  |     r3 = *(r2);
    0x000fe738 adds r3, 1                                                                                    |     r3++;
    0x000fe73a str r3, [r2]                                                                                  |     *(r2) = r3;
    0x000fe73c b 0xfe53a                                                                                     |     goto label_9;
                                                                                                             | label_27:
    0x000fe73e ldrd r1, r2, [r5]                                                                             |     __asm ("ldrd r1, r2, [r5]");
    0x000fe742 add.w r3, r4, 8                                                                               |     r3 = r4 + 8;
    0x000fe746 mov r0, r4                                                                                    |     r0 = r4;
    0x000fe748 str r3, [r4]                                                                                  |     *(r4) = r3;
    0x000fe74a add.w r6, r4, 0x20                                                                            |     r6 = r4 + 0x20;
    0x000fe74e add r2, r1                                                                                    |     r2 += r1;
    0x000fe750 bl 0xfc01c                                                                                    |     fcn_000fc01c (r0, r1, r2, r3);
    0x000fe754 add.w r0, r4, 0x18                                                                            |     r0 = r4 + 0x18;
    0x000fe758 blx 0x7aa50                                                                                   |     fcn_0007aa50 ();
    0x000fe75c ldr r3, [r4, 0x18]                                                                            |     r3 = *((r4 + 0x18));
    0x000fe75e adds r5, 0x20                                                                                 |     r5 += 0x20;
    0x000fe760 str.w fp, [r4, 0x1c]                                                                          |     __asm ("str.w fp, [r4, 0x1c]");
    0x000fe764 orr r3, r3, 3                                                                                 |     r3 |= 3;
    0x000fe768 str r3, [r4, 0x18]                                                                            |     *((r4 + 0x18)) = r3;
    0x000fe76a mov r4, r6                                                                                    |     r4 = r6;
    0x000fe76c ldr r2, [r7, 0x18]                                                                            |     r2 = *((r7 + 0x18));
    0x000fe76e ldr r3, [r2]                                                                                  |     r3 = *(r2);
    0x000fe770 adds r3, 1                                                                                    |     r3++;
    0x000fe772 str r3, [r2]                                                                                  |     *(r2) = r3;
    0x000fe774 b 0xfe4ca                                                                                     |     goto label_10;
                                                                                                             | label_32:
    0x000fe776 cmp r4, 3                                                                                     |     
    0x000fe778 itt ne                                                                                        |     
                                                                                                             |     if (r4 != 3) {
    0x000fe77a ldrdne r6, r8, [r5]                                                                           |         __asm ("ldrdne r6, r8, [r5]");
                                                                                                             |     }
                                                                                                             |     if (r4 == 3) {
    0x000fe77e adds r5, 0x20                                                                                 |         r5 += 0x20;
                                                                                                             |         goto label_36;
                                                                                                             |     }
                                                                                                             |     if (r5 != 0x20) {
                                                                                                             | label_36:
    0x000fe780 bne 0xfe6b4                                                                                   |         goto label_11;
                                                                                                             |     }
    0x000fe782 ldrd r1, r2, [sl]                                                                             |     __asm ("ldrd r1, r2, [sl]");
    0x000fe786 mov r0, r7                                                                                    |     r0 = r7;
    0x000fe788 blx 0x78af0                                                                                   |     fcn_00078af0 ();
    0x000fe78c b 0xfe53a                                                                                     |     goto label_9;
                                                                                                             | label_34:
    0x000fe78e cmp r4, 3                                                                                     |     
    0x000fe790 ldr r3, [r0, 4]                                                                               |     r3 = *((r0 + 4));
                                                                                                             |     if (r4 == 3) {
    0x000fe792 beq 0xfe7de                                                                                   |         goto label_37;
                                                                                                             |     }
    0x000fe794 ldrd r1, r2, [r5]                                                                             |     __asm ("ldrd r1, r2, [r5]");
    0x000fe798 str r3, [sp, 0x10]                                                                            |     var_10h = r3;
    0x000fe79a blx 0x78af0                                                                                   |     fcn_00078af0 ();
    0x000fe79e ldr.w r2, [sl, 0x18]                                                                          |     r2 = *((sl + 0x18));
    0x000fe7a2 ldrd r6, r8, [r5]                                                                             |     __asm ("ldrd r6, r8, [r5]");
    0x000fe7a6 adds r5, 0x20                                                                                 |     r5 += 0x20;
    0x000fe7a8 ldr r3, [r7, 0x18]                                                                            |     r3 = *((r7 + 0x18));
    0x000fe7aa and r4, r2, 3                                                                                 |     r4 = r2 & 3;
    0x000fe7ae b 0xfe45e                                                                                     |     goto label_12;
                                                                                                             |     if (r2 == 0) {
                                                                                                             | label_30:
    0x000fe7b0 cbz r2, 0xfe7c0                                                                               |         goto label_38;
                                                                                                             |     }
    0x000fe7b2 cmp r2, 1                                                                                     |     
                                                                                                             |     if (r2 == 1) {
    0x000fe7b4 beq 0xfe7d2                                                                                   |         goto label_39;
                                                                                                             |     }
    0x000fe7b6 mov r1, r5                                                                                    |     r1 = r5;
    0x000fe7b8 blx 0x79638                                                                                   |     fcn_00079638 ();
    0x000fe7bc ldr r2, [sp, 0x44]                                                                            |     r2 = var_44h;
    0x000fe7be ldr r0, [sp, 0x20]                                                                            |     r0 = var_20h;
                                                                                                             |     do {
                                                                                                             | label_38:
    0x000fe7c0 movs r3, 0                                                                                    |         r3 = 0;
    0x000fe7c2 str r2, [sp, 0x24]                                                                            |         var_24h = r2;
    0x000fe7c4 strb r3, [r0, r2]                                                                             |         *((r0 + r2)) = r3;
    0x000fe7c6 ldr r0, [sp, 0x40]                                                                            |         r0 = var_40h;
    0x000fe7c8 b 0xfe5b6                                                                                     |         goto label_13;
                                                                                                             | label_31:
    0x000fe7ca str r5, [sp, 0x40]                                                                            |         var_40h = r5;
    0x000fe7cc add r5, sp, 0x48                                                                              |         r5 += var_48h;
    0x000fe7ce mov r0, r5                                                                                    |         r0 = r5;
    0x000fe7d0 b 0xfe5b6                                                                                     |         goto label_13;
                                                                                                             | label_39:
    0x000fe7d2 ldrb.w r3, [sp, 0x48]                                                                         |         r3 = var_48h;
    0x000fe7d6 strb r3, [r0]                                                                                 |         *(r0) = r3;
    0x000fe7d8 ldr r2, [sp, 0x44]                                                                            |         r2 = var_44h;
    0x000fe7da ldr r0, [sp, 0x20]                                                                            |         r0 = var_20h;
    0x000fe7dc b 0xfe7c0                                                                                     |         
                                                                                                             |     } while (1);
                                                                                                             | label_37:
    0x000fe7de ldrd r5, r4, [sl]                                                                             |     __asm ("ldrd r5, r4, [sl]");
    0x000fe7e2 mvn r2, 0xc0000000                                                                            |     r2 = ~0xc0000000;
    0x000fe7e6 subs r3, r2, r3                                                                               |     r3 = r2 - r3;
    0x000fe7e8 cmp r4, r3                                                                                    |     
                                                                                                             |     if (r4 <= r3) {
    0x000fe7ea bhi 0xfe81c                                                                                   |         
    0x000fe7ec mov r2, r4                                                                                    |         r2 = r4;
    0x000fe7ee mov r1, r5                                                                                    |         r1 = r5;
    0x000fe7f0 blx 0x78af0                                                                                   |         fcn_00078af0 ();
    0x000fe7f4 ldr r2, [r7, 4]                                                                               |         r2 = *((r7 + 4));
    0x000fe7f6 mvn r3, 0xc0000000                                                                            |         r3 = ~0xc0000000;
    0x000fe7fa subs r3, r3, r2                                                                               |         r3 -= r2;
    0x000fe7fc cmp r4, r3                                                                                    |         
                                                                                                             |         if (r4 <= r3) {
    0x000fe7fe bhi 0xfe814                                                                                   |             
    0x000fe800 mov r2, r4                                                                                    |             r2 = r4;
    0x000fe802 mov r1, r5                                                                                    |             r1 = r5;
    0x000fe804 mov r0, r7                                                                                    |             r0 = r7;
    0x000fe806 blx 0x78af0                                                                                   |             fcn_00078af0 ();
    0x000fe80a b 0xfe53a                                                                                     |             goto label_9;
                                                                                                             | label_35:
    0x000fe80c ldr r0, [pc, 0x128]                                                                           |             
    0x000fe80e add r0, pc                                                                                    |             r0 = 0x1fd14a;
    0x000fe810 blx 0x7888c                                                                                   |             fcn_0007888c ();
                                                                                                             |         }
    0x000fe814 ldr r0, [pc, 0x124]                                                                           |         
    0x000fe816 add r0, pc                                                                                    |         r0 = 0x1fd156;
    0x000fe818 blx 0x7888c                                                                                   |         fcn_0007888c ();
                                                                                                             |     }
    0x000fe81c ldr r0, [pc, 0x120]                                                                           |     
    0x000fe81e add r0, pc                                                                                    |     r0 = 0x1fd162;
    0x000fe820 blx 0x7888c                                                                                   |     r0 = fcn_0007888c ();
                                                                                                             |     do {
    0x000fe824 mov r3, r0                                                                                    |         r3 = r0;
    0x000fe826 mov r0, r4                                                                                    |         r0 = r4;
    0x000fe828 mov r4, r3                                                                                    |         r4 = r3;
    0x000fe82a blx 0x7a618                                                                                   |         aeabi_idiv ();
    0x000fe82e mov r0, r4                                                                                    |         r0 = r4;
    0x000fe830 blx 0x780c4                                                                                   |         fcn_000780c4 ();
    0x000fe834 movs r2, 0                                                                                    |         r2 = 0;
    0x000fe836 mov r1, fp                                                                                    |         r1 = fp;
    0x000fe838 mov r0, r7                                                                                    |         r0 = r7;
    0x000fe83a blx 0x792f0                                                                                   |         fcn_000792f0 ();
    0x000fe83e ldr r3, [sp, 4]                                                                               |         r3 = var_4h;
                                                                                                             |         if (r3 == 0) {
    0x000fe840 cbz r3, 0xfe882                                                                               |             goto label_40;
                                                                                                             |         }
    0x000fe842 ldr r0, [sp, 0x18]                                                                            |         r0 = var_18h;
    0x000fe844 bl 0xfc284                                                                                    |         fcn_000fc284 (r0);
                                                                                                             | label_15:
    0x000fe848 ldr r3, [r7, 0x18]                                                                            |         r3 = *((r7 + 0x18));
                                                                                                             | label_14:
    0x000fe84a ldr r2, [sp, 4]                                                                               |         r2 = var_4h;
    0x000fe84c bic r3, r3, 3                                                                                 |         r3 = BIT_MASK (r3, 3);
    0x000fe850 orrs r3, r2                                                                                   |         r3 |= r2;
    0x000fe852 str r3, [r7, 0x18]                                                                            |         *((r7 + 0x18)) = r3;
    0x000fe854 blx 0x7ae54                                                                                   |         fcn_0007ae54 ();
    0x000fe858 b 0xfe824                                                                                     |         
                                                                                                             |     } while (1);
                                                                                                             | label_40:
    0x000fe882 ldr r3, [r7, 0x18]                                                                            |     r3 = *((r7 + 0x18));
    0x000fe884 bics r2, r3, 3                                                                                |     __asm ("bics r2, r3, 3");
    0x000fe888 mov r0, r3                                                                                    |     r0 = r3;
                                                                                                             |     if (r3 == r2) {
    0x000fe88a beq 0xfe8e2                                                                                   |         goto label_41;
                                                                                                             |     }
    0x000fe88c ldr r1, [r2]                                                                                  |     r1 = *(r2);
    0x000fe88e ldr r4, [sp, 0x14]                                                                            |     r4 = var_14h;
    0x000fe890 cmp r4, r1                                                                                    |     
    0x000fe892 it lt                                                                                         |     
                                                                                                             |     if (r4 >= r1) {
    0x000fe894 addlt r2, 8                                                                                   |         r2 += 8;
                                                                                                             |     }
                                                                                                             |     if (r4 < r1) {
    0x000fe896 blt 0xfe8ea                                                                                   |         goto label_42;
                                                                                                             |     }
    0x000fe898 ldr r1, [sp, 0x10]                                                                            |     r1 = var_10h;
    0x000fe89a adds r1, 1                                                                                    |     r1++;
                                                                                                             |     if (r1 == 1) {
    0x000fe89c beq 0xfe84a                                                                                   |         goto label_14;
                                                                                                             |     }
                                                                                                             | label_16:
    0x000fe89e ldr r2, [r2]                                                                                  |     r2 = *(r2);
                                                                                                             | label_17:
    0x000fe8a0 ldr r1, [sp, 0x14]                                                                            |     r1 = var_14h;
    0x000fe8a2 ldr r3, [r0]                                                                                  |     r3 = *(r0);
    0x000fe8a4 cmp r1, r2                                                                                    |     
                                                                                                             |     if (r1 == r2) {
    0x000fe8a6 beq 0xfe910                                                                                   |         goto label_43;
                                                                                                             |     }
    0x000fe8a8 lsls r3, r3, 5                                                                                |     r3 <<= 5;
    0x000fe8aa movs r2, 0                                                                                    |     r2 = 0;
    0x000fe8ac mov r1, r2                                                                                    |     r1 = r2;
    0x000fe8ae adds r3, 8                                                                                    |     r3 += 8;
    0x000fe8b0 adds r4, r0, r3                                                                               |     r4 = r0 + r3;
    0x000fe8b2 add.w r5, r4, 8                                                                               |     r5 = r4 + 8;
    0x000fe8b6 str r5, [r0, r3]                                                                              |     *((r0 + r3)) = r5;
    0x000fe8b8 mov r0, r4                                                                                    |     r0 = r4;
    0x000fe8ba bl 0xfc01c                                                                                    |     fcn_000fc01c (r0, r1, r2, r3);
    0x000fe8bc umull pc, r1, pc, r4                                                                          |     pc:r1 = pc * r4;
    0x000fe8c0 movs r0, r3                                                                                   |     r0 = r3;
    0x000fe8c2 blx 0x7aa50                                                                                   |     fcn_0007aa50 ();
    0x000fe8c6 ldr r3, [r4, 0x18]                                                                            |     r3 = *((r4 + 0x18));
    0x000fe8c8 str.w fp, [r4, 0x1c]                                                                          |     __asm ("str.w fp, [r4, 0x1c]");
    0x000fe8cc orr r3, r3, 3                                                                                 |     r3 |= 3;
    0x000fe8d0 str r3, [r4, 0x18]                                                                            |     *((r4 + 0x18)) = r3;
    0x000fe8d2 ldr r3, [r7, 0x18]                                                                            |     r3 = *((r7 + 0x18));
    0x000fe8d4 ldr r2, [r3]                                                                                  |     r2 = *(r3);
    0x000fe8d6 adds r2, 1                                                                                    |     r2++;
    0x000fe8d8 str r2, [r3]                                                                                  |     *(r3) = r2;
    0x000fe8da b 0xfe84a                                                                                     |     goto label_14;
                                                                                                             | label_41:
    0x000fe8e2 ldr r2, [sp, 0x14]                                                                            |     r2 = var_14h;
    0x000fe8e4 cmp r2, 0                                                                                     |     
                                                                                                             |     if (r2 >= 0) {
    0x000fe8e6 bge 0xfe906                                                                                   |         goto label_44;
                                                                                                             |     }
    0x000fe8e8 ldr r2, [sp, 4]                                                                               |     r2 = var_4h;
                                                                                                             | label_42:
    0x000fe8ea ldr r1, [sp, 0x14]                                                                            |     r1 = var_14h;
    0x000fe8ec mov r0, r3                                                                                    |     r0 = r3;
    0x000fe8ee add.w r1, r2, r1, lsl 5                                                                       |     r1 = r2 + (r1 << 5);
    0x000fe8f2 bl 0xfc188                                                                                    |     fcn_000fc188 (r0, r1);
    0x000fe8f6 ldr r3, [sp, 0x10]                                                                            |     r3 = var_10h;
    0x000fe8f8 adds r3, 1                                                                                    |     r3++;
                                                                                                             |     if (r3 == 1) {
    0x000fe8fa beq 0xfe848                                                                                   |         goto label_15;
                                                                                                             |     }
    0x000fe8fc ldr r0, [r7, 0x18]                                                                            |     r0 = *((r7 + 0x18));
    0x000fe8fe bics r2, r0, 3                                                                                |     __asm ("bics r2, r0, 3");
                                                                                                             |     if (r3 != 1) {
    0x000fe902 bne 0xfe89e                                                                                   |         goto label_16;
                                                                                                             |     }
    0x000fe904 b 0xfe8a0                                                                                     |     goto label_17;
                                                                                                             | label_44:
    0x000fe906 ldr r2, [sp, 0x10]                                                                            |     r2 = var_10h;
    0x000fe908 adds r2, 1                                                                                    |     r2++;
                                                                                                             |     if (r2 == 1) {
    0x000fe90a beq 0xfe84a                                                                                   |         goto label_14;
                                                                                                             |     }
    0x000fe90c ldr r2, [sp, 4]                                                                               |     r2 = var_4h;
    0x000fe90e b 0xfe8a0                                                                                     |     goto label_17;
                                                                                                             | label_43:
    0x000fe910 add.w r3, r0, r3, lsl 5                                                                       |     r3 = r0 + (r3 << 5);
    0x000fe914 ldr r1, [sp, 0x10]                                                                            |     r1 = var_10h;
    0x000fe916 movs r2, 0                                                                                    |     r2 = 0;
    0x000fe918 sub.w r4, r3, 0x18                                                                            |     r4 = r3 - 0x18;
    0x000fe91c mov r0, r4                                                                                    |     r0 = r4;
    0x000fe91e blx 0x792f0                                                                                   |     fcn_000792f0 ();
    0x000fe922 ldr r3, [sp, 0x10]                                                                            |     r3 = var_10h;
    0x000fe924 cmp r3, 0                                                                                     |     
                                                                                                             |     if (r3 != 0) {
    0x000fe926 bne 0xfe848                                                                                   |         goto label_15;
                                                                                                             |     }
    0x000fe928 ldr r3, [r7, 0x18]                                                                            |     r3 = *((r7 + 0x18));
    0x000fe92a str.w fp, [r4, 0x1c]                                                                          |     __asm ("str.w fp, [r4, 0x1c]");
    0x000fe92e b 0xfe84a                                                                                     |     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/libstdc++.so.6.0.29 @ 0xff22c */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) method.std::filesystem::__cxx11::path.parent_path___const ()         | void method_std::filesystem::_cxx11::path_parent_path_const (int16_t arg1, int16_t arg2) {
                                                                                 |     int16_t var_4h;
                                                                                 |     int16_t var_8h;
                                                                                 |     int16_t var_ch;
                                                                                 |     int16_t var_1ch;
                                                                                 |     int16_t var_20h;
                                                                                 |     int16_t var_24h;
                                                                                 |     int16_t var_34h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
                                                                                 |     /* std::filesystem::__cxx11::path::parent_path() const */
    0x000ff22c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}                       |     
    0x000ff230 movs r3, 0                                                        |     r3 = 0;
    0x000ff232 add.w r6, r0, 8                                                   |     r6 = r0 + 8;
    0x000ff236 add.w r7, r0, 0x18                                                |     r7 = r0 + 0x18;
    0x000ff23a sub sp, 0x3c                                                      |     
    0x000ff23c mov r5, r1                                                        |     r5 = r1;
    0x000ff23e strd r6, r3, [r0]                                                 |     __asm ("strd r6, r3, [r0]");
    0x000ff242 mov r4, r0                                                        |     r4 = r0;
    0x000ff244 strb r3, [r0, 8]                                                  |     *((r0 + 8)) = r3;
    0x000ff246 mov r0, r7                                                        |     r0 = r7;
    0x000ff248 blx 0x7aa50                                                       |     fcn_0007aa50 ();
    0x000ff24c mov r0, r5                                                        |     r0 = r5;
    0x000ff24e blx 0x78e48                                                       |     r0 = log (r0);
                                                                                 |     if (r0 == 0) {
    0x000ff252 cbz r0, 0xff26a                                                   |         goto label_2;
                                                                                 |     }
    0x000ff254 ldr r3, [r5, 0x18]                                                |     r3 = *((r5 + 0x18));
    0x000ff256 bics r3, r3, 3                                                    |     __asm ("bics r3, r3, 3");
                                                                                 |     if (r0 == 0) {
    0x000ff25a beq 0xff262                                                       |         goto label_0;
                                                                                 |     }
    0x000ff25c ldr r3, [r3]                                                      |     r3 = *(r3);
    0x000ff25e cmp r3, 1                                                         |     
    0x000ff260 bgt 0xff27a                                                       |     
                                                                                 |     while (r0 == r5) {
                                                                                 | label_0:
    0x000ff262 mov r0, r4                                                        |         r0 = r4;
    0x000ff264 add sp, 0x3c                                                      |         
    0x000ff266 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                        |         
                                                                                 | label_2:
    0x000ff26a mov r1, r5                                                        |         r1 = r5;
    0x000ff26c mov r0, r4                                                        |         r0 = r4;
    0x000ff26e blx 0x7969c                                                       |         fcn_0007969c ();
    0x000ff272 mov r0, r4                                                        |         r0 = r4;
    0x000ff274 add sp, 0x3c                                                      |         
    0x000ff276 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                        |         
    0x000ff27a add.w r0, r5, 0x18                                                |         r0 = r5 + 0x18;
    0x000ff27e add.w fp, sp, 4                                                   |         
    0x000ff282 blx 0x7a438                                                       |         fcn_0007a438 ();
    0x000ff286 ldr r3, [r0, -0x24]                                               |         r3 = *((r0 - 0x24));
    0x000ff28a ldr r0, [r0, -0x3c]                                               |         r0 = *((r0 - 0x3c));
    0x000ff28e ldrd r1, r2, [r5]                                                 |         __asm ("ldrd r1, r2, [r5]");
    0x000ff292 add r5, sp, 0xc                                                   |         r5 += var_ch;
    0x000ff294 str r5, [sp, 4]                                                   |         var_4h = r5;
    0x000ff296 add r3, r0                                                        |         r3 += r0;
    0x000ff298 mov r0, fp                                                        |         r0 = fp;
    0x000ff29a cmp r3, r2                                                        |         
    0x000ff29c ite ls                                                            |         
                                                                                 |         if (r3 > r2) {
    0x000ff29e addls r2, r1, r3                                                  |             r2 = r1 + r3;
                                                                                 |         }
                                                                                 |         if (r3 <= r2) {
    0x000ff2a0 addhi r2, r1, r2                                                  |             r2 = r1 + r2;
                                                                                 |         }
    0x000ff2a2 bl 0xfc01c                                                        |         fcn_000fc01c (r0, r1, r2, r3);
    0x000ff2a6 ldr r3, [sp, 4]                                                   |         r3 = var_4h;
    0x000ff2a8 add.w r8, sp, 0x24                                                |         r8 += var_24h;
    0x000ff2ac str.w r8, [sp, 0x1c]                                              |         __asm ("str.w r8, [var_1ch]");
    0x000ff2b0 add.w sl, sp, 0x34                                                |         sl += var_34h;
    0x000ff2b4 str r5, [sp, 4]                                                   |         var_4h = r5;
    0x000ff2b6 cmp r3, r5                                                        |         
    0x000ff2b8 iteet eq                                                          |         
                                                                                 |         if (r3 != r5) {
    0x000ff2ba ldmeq r5, {r0, r1, r2, r3}                                        |             r0 = *(r5);
                                                                                 |             r1 = *((r5 + 4));
                                                                                 |             r2 = *((r5 + 8));
                                                                                 |             r3 = *((r5 + 12));
                                                                                 |         }
                                                                                 |         if (r3 == r5) {
    0x000ff2be strne r3, [sp, 0x1c]                                              |             var_1ch = r3;
                                                                                 |         }
                                                                                 |         if (r3 != r5) {
    0x000ff2c0 ldreq r3, [sp, 0xc]                                               |             r3 = var_ch;
                                                                                 |         }
                                                                                 |         if (r3 == r5) {
    0x000ff2c2 stm.w r8, {r0, r1, r2, r3}                                        |             *(r8) = r0;
                                                                                 |             *((r8 + 4)) = r1;
                                                                                 |             *((r8 + 8)) = r2;
                                                                                 |             *((r8 + 12)) = r3;
                                                                                 |         }
    0x000ff2c6 mov r0, sl                                                        |         r0 = sl;
    0x000ff2c8 it ne                                                             |         
                                                                                 |         if (r3 == r5) {
    0x000ff2ca strne r3, [sp, 0x24]                                              |             var_24h = r3;
                                                                                 |         }
    0x000ff2cc ldr r3, [sp, 8]                                                   |         r3 = var_8h;
    0x000ff2ce str r3, [sp, 0x20]                                                |         var_20h = r3;
    0x000ff2d0 movs r3, 0                                                        |         r3 = 0;
    0x000ff2d2 str r3, [sp, 8]                                                   |         var_8h = r3;
    0x000ff2d4 strb.w r3, [sp, 0xc]                                              |         var_ch = r3;
    0x000ff2d8 blx 0x7aa50                                                       |         fcn_0007aa50 ();
    0x000ff2dc add.w sb, sp, 0x1c                                                |         sb += var_1ch;
    0x000ff2e0 mov r0, sb                                                        |         r0 = sb;
    0x000ff2e2 blx 0x7b200                                                       |         fcn_0007b200 ();
    0x000ff2e6 ldr r3, [sp, 0x1c]                                                |         r3 = var_1ch;
    0x000ff2e8 ldr r0, [r4]                                                      |         r0 = *(r4);
    0x000ff2ea ldr r2, [sp, 0x20]                                                |         r2 = var_20h;
    0x000ff2ec cmp r3, r8                                                        |         
                                                                                 |         if (r3 == r8) {
    0x000ff2ee beq 0xff356                                                       |             goto label_3;
                                                                                 |         }
    0x000ff2f0 ldr r1, [sp, 0x24]                                                |         r1 = var_24h;
    0x000ff2f2 cmp r6, r0                                                        |         
    0x000ff2f4 strd r3, r2, [r4]                                                 |         __asm ("strd r3, r2, [r4]");
    0x000ff2f8 it eq                                                             |         
                                                                                 |         if (r6 != r0) {
    0x000ff2fa streq r1, [r4, 8]                                                 |             *((r4 + 8)) = r1;
                                                                                 |         }
                                                                                 |         if (r6 == r0) {
    0x000ff2fc beq 0xff370                                                       |             goto label_4;
                                                                                 |         }
    0x000ff2fe ldr r3, [r4, 8]                                                   |         r3 = *((r4 + 8));
    0x000ff300 str r1, [r4, 8]                                                   |         *((r4 + 8)) = r1;
    0x000ff302 cmp r0, 0                                                         |         
                                                                                 |         if (r0 == 0) {
    0x000ff304 beq 0xff370                                                       |             goto label_4;
                                                                                 |         }
    0x000ff306 str r3, [sp, 0x24]                                                |         var_24h = r3;
    0x000ff308 str r0, [sp, 0x1c]                                                |         var_1ch = r0;
                                                                                 | label_1:
    0x000ff30a movs r3, 0                                                        |         r3 = 0;
    0x000ff30c str r3, [sp, 0x20]                                                |         var_20h = r3;
    0x000ff30e strb r3, [r0]                                                     |         *(r0) = r3;
    0x000ff310 ldr r1, [r4, 0x18]                                                |         r1 = *((r4 + 0x18));
    0x000ff312 ldr r2, [sp, 0x34]                                                |         r2 = var_34h;
    0x000ff314 str r3, [sp, 0x34]                                                |         var_34h = r3;
    0x000ff316 str r2, [r4, 0x18]                                                |         *((r4 + 0x18)) = r2;
                                                                                 |         if (r1 != 0) {
    0x000ff318 cbz r1, 0xff320                                                   |             
    0x000ff31a mov r0, r7                                                        |             r0 = r7;
    0x000ff31c blx 0x793e4                                                       |             fcn_000793e4 ();
                                                                                 |         }
    0x000ff320 ldr r2, [sp, 0x1c]                                                |         r2 = var_1ch;
    0x000ff322 movs r3, 0                                                        |         r3 = 0;
    0x000ff324 str r3, [sp, 0x20]                                                |         var_20h = r3;
    0x000ff326 mov r0, sb                                                        |         r0 = sb;
    0x000ff328 strb r3, [r2]                                                     |         *(r2) = r3;
    0x000ff32a blx 0x7b200                                                       |         fcn_0007b200 ();
    0x000ff32e ldr r1, [sp, 0x34]                                                |         r1 = var_34h;
                                                                                 |         if (r1 != 0) {
    0x000ff330 cbz r1, 0xff338                                                   |             
    0x000ff332 mov r0, sl                                                        |             r0 = sl;
    0x000ff334 blx 0x793e4                                                       |             fcn_000793e4 ();
                                                                                 |         }
    0x000ff338 ldr r0, [sp, 0x1c]                                                |         r0 = var_1ch;
    0x000ff33a cmp r0, r8                                                        |         
                                                                                 |         if (r0 != r8) {
    0x000ff33c beq 0xff346                                                       |             
    0x000ff33e ldr r1, [sp, 0x24]                                                |             r1 = var_24h;
    0x000ff340 adds r1, 1                                                        |             r1++;
    0x000ff342 blx 0x7ae30                                                       |             fcn_0007ae30 ();
                                                                                 |         }
    0x000ff346 ldr r0, [sp, 4]                                                   |         r0 = var_4h;
    0x000ff348 cmp r0, r5                                                        |         
    0x000ff34a beq 0xff262                                                       |         
                                                                                 |     }
    0x000ff34c ldr r1, [sp, 0xc]                                                 |     r1 = var_ch;
    0x000ff34e adds r1, 1                                                        |     r1++;
    0x000ff350 blx 0x7ae30                                                       |     fcn_0007ae30 ();
    0x000ff354 b 0xff262                                                         |     goto label_0;
                                                                                 |     if (r2 == 0) {
                                                                                 | label_3:
    0x000ff356 cbz r2, 0xff366                                                   |         goto label_5;
                                                                                 |     }
    0x000ff358 cmp r2, 1                                                         |     
                                                                                 |     if (r2 == 1) {
    0x000ff35a beq 0xff37c                                                       |         goto label_6;
                                                                                 |     }
    0x000ff35c mov r1, r8                                                        |     r1 = r8;
    0x000ff35e blx 0x79638                                                       |     fcn_00079638 ();
    0x000ff362 ldr r2, [sp, 0x20]                                                |     r2 = var_20h;
    0x000ff364 ldr r0, [r4]                                                      |     r0 = *(r4);
                                                                                 |     do {
                                                                                 | label_5:
    0x000ff366 movs r3, 0                                                        |         r3 = 0;
    0x000ff368 str r2, [r4, 4]                                                   |         *((r4 + 4)) = r2;
    0x000ff36a strb r3, [r0, r2]                                                 |         *((r0 + r2)) = r3;
    0x000ff36c ldr r0, [sp, 0x1c]                                                |         r0 = var_1ch;
    0x000ff36e b 0xff30a                                                         |         goto label_1;
                                                                                 | label_4:
    0x000ff370 str.w r8, [sp, 0x1c]                                              |         __asm ("str.w r8, [var_1ch]");
    0x000ff374 add.w r8, sp, 0x24                                                |         r8 += var_24h;
    0x000ff378 mov r0, r8                                                        |         r0 = r8;
    0x000ff37a b 0xff30a                                                         |         goto label_1;
                                                                                 | label_6:
    0x000ff37c ldrb.w r3, [sp, 0x24]                                             |         r3 = var_24h;
    0x000ff380 strb r3, [r0]                                                     |         *(r0) = r3;
    0x000ff382 ldr r2, [sp, 0x20]                                                |         r2 = var_20h;
    0x000ff384 ldr r0, [r4]                                                      |         r0 = *(r4);
    0x000ff386 b 0xff366                                                         |         
                                                                                 |     } while (1);
                                                                                 | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0x10b10c */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) method.std::filesystem::path::_List.end___const ()           | uint32_t method_std::filesystem::path::_List_end_const (int16_t arg1) {
                                                                         |     r0 = arg1;
                                                                         |     /* std::filesystem::path::_List::end() const */
    0x0010b10c ldr r0, [r0]                                              |     r0 = *(r0);
    0x0010b10e bics r0, r0, 3                                            |     __asm ("bics r0, r0, 3");
    0x0010b112 itttt ne                                                  |     
                                                                         |     if (? == ?) {
    0x0010b114 ldrne r3, [r0]                                            |         r3 = *(r0);
                                                                         |     }
                                                                         |     if (? == ?) {
    0x0010b116 addne r3, r3, r3, lsl 1                                   |         r3 += (r3 << 1);
                                                                         |     }
                                                                         |     if (? == ?) {
    0x0010b11a addne r0, r0, r3, lsl 2                                   |         r0 += (r3 << 2);
                                                                         |     }
                                                                         |     if (? != ?) {
    0x0010b11e adds r0, 8                                                |         r0 += 8;
                                                                         |     }
    0x0010b120 bx lr                                                     |     return r0;
                                                                         | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0xadf14).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libstdc++.so.6.0.29 @ 0xb47e8).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.

[*] Function strcpy used 1 times libstdc++.so.6.0.29