[*] Binary protection state of libupnp.so.17.1.8

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


[*] Function fprintf tear down of libupnp.so.17.1.8

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0xc540 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0000c540 ()                                      | void fcn_0000c540 (int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_38h, int16_t arg_54h, int16_t arg_58h, int16_t arg_d4h, int16_t arg_154h, int16_t arg_280h, int16_t arg_c44h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0000c540 svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x0000c544 mov r7, r2                                        |     r7 = r2;
    0x0000c546 subw sp, sp, 0xc4c                                |     __asm ("subw sp, sp, aav.0x000000ff");
    0x0000c54a ldr r2, [pc, 0x330]                               |     
    0x0000c54c mov fp, r1                                        |     
    0x0000c54e str r3, [sp, 0x24]                                |     *(arg_24h) = r3;
    0x0000c550 ldr r3, [pc, 0x32c]                               |     r3 = *(0xc880);
    0x0000c552 add r2, pc                                        |     r2 = 0x18dd4;
    0x0000c554 str r0, [sp, 0x20]                                |     var_20h = r0;
    0x0000c556 ldr r6, [pc, 0x32c]                               |     
    0x0000c558 ldr r3, [r2, r3]                                  |     
    0x0000c55a add r6, pc                                        |     r6 = 0x18de4;
    0x0000c55c ldr r3, [r3]                                      |     r3 = *(0x18dd4);
    0x0000c55e str.w r3, [sp, 0xc44]                             |     __asm ("str.w r3, [arg_c44h]");
    0x0000c562 mov.w r3, 0                                       |     r3 = 0;
    0x0000c566 add r3, sp, 0x28                                  |     r3 += arg_28h;
    0x0000c568 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0000c56a movs r3, 0                                        |     r3 = 0;
    0x0000c56c ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x0000c56e str r3, [r2]                                      |     *(r2) = r3;
    0x0000c570 ldr r3, [pc, 0x314]                               |     r3 = *(0xc888);
    0x0000c572 ldr r1, [r6, r3]                                  |     r1 = *(0x18de4);
    0x0000c574 ldrb r3, [r1]                                     |     r3 = *(r1);
    0x0000c576 cbnz r3, 0xc59a                                   |     
                                                                 |     while (r0 != 0) {
    0x0000c578 add.w r8, sp, 0x38                                |         r8 += arg_38h;
    0x0000c57c movs r2, 0x1c                                     |         r2 = 0x1c;
    0x0000c57e movs r1, 0                                        |         r1 = 0;
    0x0000c580 mov r0, r8                                        |         r0 = r8;
    0x0000c582 blx 0x9144                                        |         fcn_00009144 ();
    0x0000c586 mov r0, r7                                        |         r0 = r7;
    0x0000c588 bl 0xd314                                         |         r0 = fcn_0000d314 (r0);
    0x0000c58c mov r3, r0                                        |         r3 = r0;
    0x0000c58e str r0, [sp, 0x1c]                                |         var_1ch = r0;
    0x0000c590 adds r3, 1                                        |         r3++;
                                                                 |         if (r3 != 1) {
    0x0000c592 bne 0xc5a8                                        |             goto label_4;
                                                                 |         }
                                                                 | label_0:
    0x0000c594 mvn r0, 0x64                                      |         r0 = ~0x64;
    0x0000c598 b 0xc71c                                          |         goto label_1;
    0x0000c59a add r2, sp, 0x2c                                  |         r2 += arg_2ch;
    0x0000c59c movs r0, 2                                        |         r0 = 2;
    0x0000c59e blx 0x89ec                                        |         r0 = pthread_self ();
    0x0000c5a2 cmp r0, 0                                         |         
    0x0000c5a4 bne 0xc578                                        |         
                                                                 |     }
    0x0000c5a6 b 0xc594                                          |     goto label_0;
                                                                 | label_4:
    0x0000c5a8 cmp.w fp, 0x50                                    |     
    0x0000c5ac add r4, sp, 0x154                                 |     r4 += arg_154h;
    0x0000c5ae it ge                                             |     
                                                                 |     if (fp < 0x50) {
    0x0000c5b0 movge fp, 0x50                                    |         
                                                                 |     }
    0x0000c5b4 mov.w r2, 0x12c                                   |     r2 = 0x12c;
    0x0000c5b8 cmp.w fp, 2                                       |     
    0x0000c5bc mov.w r1, 0                                       |     r1 = 0;
    0x0000c5c0 mov r0, r4                                        |     r0 = r4;
    0x0000c5c2 it lt                                             |     
                                                                 |     if (fp >= 2) {
    0x0000c5c4 movlt fp, 2                                       |         
                                                                 |     }
    0x0000c5c8 blx 0x9144                                        |     fcn_00009144 ();
    0x0000c5cc ldr r1, [pc, 0x2bc]                               |     
    0x0000c5ce add r5, sp, 0x280                                 |     r5 += arg_280h;
    0x0000c5d0 mov r0, r5                                        |     r0 = r5;
    0x0000c5d2 add r1, pc                                        |     r1 = 0x18e62;
    0x0000c5d4 blx 0x8d68                                        |     fcn_00008d68 ();
    0x0000c5d8 movw r3, 0x76c                                    |     r3 = 0x76c;
    0x0000c5dc movs r2, 1                                        |     r2 = 1;
    0x0000c5de str r3, [sp, 8]                                   |     var_8h = r3;
    0x0000c5e0 mov r0, r4                                        |     r0 = r4;
    0x0000c5e2 ldr r3, [pc, 0x2ac]                               |     
    0x0000c5e4 add r3, pc                                        |     r3 = 0x18e7a;
    0x0000c5e6 str r3, [sp, 4]                                   |     var_4h = r3;
    0x0000c5e8 ldr r3, [pc, 0x2a8]                               |     
    0x0000c5ea add r3, pc                                        |     r3 = 0x18e82;
    0x0000c5ec str r3, [sp]                                      |     *(sp) = r3;
    0x0000c5ee mov.w r3, 0x12c                                   |     r3 = 0x12c;
    0x0000c5f2 mov r1, r3                                        |     r1 = r3;
    0x0000c5f4 blx 0x96fc                                        |     fcn_000096fc ();
    0x0000c5f8 mov r0, r5                                        |     r0 = r5;
    0x0000c5fa blx 0x8f9c                                        |     r0 = fcn_00008f9c ();
    0x0000c5fe mov sb, r0                                        |     sb = r0;
    0x0000c600 mov r0, r4                                        |     r0 = r4;
    0x0000c602 blx 0x8f9c                                        |     fcn_00008f9c ();
    0x0000c606 add r0, sb                                        |     r0 += sb;
    0x0000c608 movw sb, 0x9c3                                    |     sb = 0x9c3;
    0x0000c60c cmp r0, sb                                        |     
                                                                 |     if (r0 > sb) {
    0x0000c60e bhi.w 0xc718                                      |         goto label_5;
                                                                 |     }
    0x0000c612 movw r2, 0x9c4                                    |     r2 = 0x9c4;
    0x0000c616 mov r1, r4                                        |     r1 = r4;
    0x0000c618 mov r0, r5                                        |     r0 = r5;
    0x0000c61a blx 0x90c4                                        |     strerror_r ();
    0x0000c61e mov r0, r5                                        |     r0 = r5;
    0x0000c620 blx 0x8f9c                                        |     fcn_00008f9c ();
    0x0000c624 adds r0, 0x16                                     |     r0 += 0x16;
    0x0000c626 cmp r0, sb                                        |     
                                                                 |     if (r0 > sb) {
    0x0000c628 bhi 0xc718                                        |         goto label_5;
                                                                 |     }
    0x0000c62a ldr r1, [pc, 0x26c]                               |     
    0x0000c62c movw r2, 0x9c4                                    |     r2 = 0x9c4;
    0x0000c630 mov r0, r5                                        |     r0 = r5;
    0x0000c632 add r1, pc                                        |     r1 = 0x18ed0;
    0x0000c634 blx 0x90c4                                        |     strerror_r ();
    0x0000c638 ldr r3, [pc, 0x260]                               |     
    0x0000c63a movs r2, 1                                        |     r2 = 1;
    0x0000c63c mov r0, r4                                        |     r0 = r4;
    0x0000c63e str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h]");
    0x0000c642 add r3, pc                                        |     r3 = 0x18ee2;
    0x0000c644 str r3, [sp]                                      |     *(sp) = r3;
    0x0000c646 mov.w r3, 0x12c                                   |     r3 = 0x12c;
    0x0000c64a mov r1, r3                                        |     r1 = r3;
    0x0000c64c blx 0x96fc                                        |     fcn_000096fc ();
    0x0000c650 mov r0, r5                                        |     r0 = r5;
    0x0000c652 blx 0x8f9c                                        |     r0 = fcn_00008f9c ();
    0x0000c656 mov sl, r0                                        |     sl = r0;
    0x0000c658 mov r0, r4                                        |     r0 = r4;
    0x0000c65a blx 0x8f9c                                        |     r0 = fcn_00008f9c ();
    0x0000c65e add sl, r0                                        |     sl += r0;
    0x0000c660 cmp sl, sb                                        |     
                                                                 |     if (sl > sb) {
    0x0000c662 bhi 0xc718                                        |         goto label_5;
                                                                 |     }
    0x0000c664 movw r2, 0x9c4                                    |     r2 = 0x9c4;
    0x0000c668 mov r1, r4                                        |     r1 = r4;
    0x0000c66a mov r0, r5                                        |     r0 = r5;
    0x0000c66c blx 0x90c4                                        |     strerror_r ();
                                                                 |     if (r7 != 0) {
    0x0000c670 cbz r7, 0xc6ae                                    |         
    0x0000c672 ldr r3, [pc, 0x22c]                               |         
    0x0000c674 movs r2, 1                                        |         r2 = 1;
    0x0000c676 mov r0, r4                                        |         r0 = r4;
    0x0000c678 str r7, [sp, 4]                                   |         var_4h = r7;
    0x0000c67a add r3, pc                                        |         r3 = 0x18f20;
    0x0000c67c str r3, [sp]                                      |         *(sp) = r3;
    0x0000c67e mov.w r3, 0x12c                                   |         r3 = 0x12c;
    0x0000c682 mov r1, r3                                        |         r1 = r3;
    0x0000c684 blx 0x96fc                                        |         r0 = fcn_000096fc ();
    0x0000c688 cmp.w r0, 0x12c                                   |         
                                                                 |         if (r0 >= 0x12c) {
    0x0000c68c bhs 0xc714                                        |             goto label_6;
                                                                 |         }
    0x0000c68e mov r0, r5                                        |         r0 = r5;
    0x0000c690 blx 0x8f9c                                        |         r0 = fcn_00008f9c ();
    0x0000c694 mov sl, r0                                        |         sl = r0;
    0x0000c696 mov r0, r4                                        |         r0 = r4;
    0x0000c698 blx 0x8f9c                                        |         r0 = fcn_00008f9c ();
    0x0000c69c add sl, r0                                        |         sl += r0;
    0x0000c69e cmp sl, sb                                        |         
                                                                 |         if (sl > sb) {
    0x0000c6a0 bhi 0xc718                                        |             goto label_5;
                                                                 |         }
    0x0000c6a2 movw r2, 0x9c4                                    |         r2 = 0x9c4;
    0x0000c6a6 mov r1, r4                                        |         r1 = r4;
    0x0000c6a8 mov r0, r5                                        |         r0 = r5;
    0x0000c6aa blx 0x90c4                                        |         strerror_r ();
                                                                 |     }
    0x0000c6ae add.w sb, sp, 0x280                               |     sb += arg_280h;
    0x0000c6b2 mov r0, sb                                        |     r0 = sb;
    0x0000c6b4 blx 0x8f9c                                        |     fcn_00008f9c ();
    0x0000c6b8 movw r3, 0x9c3                                    |     r3 = 0x9c3;
    0x0000c6bc adds r0, 2                                        |     r0 += 2;
    0x0000c6be cmp r0, r3                                        |     
                                                                 |     if (r0 > r3) {
    0x0000c6c0 bhi 0xc718                                        |         goto label_5;
                                                                 |     }
    0x0000c6c2 ldr r1, [pc, 0x1e0]                               |     
    0x0000c6c4 add.w sl, sp, 0x54                                |     sl += arg_54h;
    0x0000c6c8 movw r2, 0x9c4                                    |     r2 = 0x9c4;
    0x0000c6cc mov r0, sb                                        |     r0 = sb;
    0x0000c6ce add r1, pc                                        |     r1 = 0x18f78;
    0x0000c6d0 blx 0x90c4                                        |     strerror_r ();
    0x0000c6d4 movs r2, 0x80                                     |     r2 = 0x80;
    0x0000c6d6 movs r1, 0                                        |     r1 = 0;
    0x0000c6d8 mov r0, sl                                        |     r0 = sl;
    0x0000c6da blx 0x9144                                        |     fcn_00009144 ();
    0x0000c6de ldr r1, [pc, 0x1c8]                               |     
    0x0000c6e0 movs r0, 2                                        |     r0 = 2;
    0x0000c6e2 add r2, sp, 0x58                                  |     r2 += arg_58h;
    0x0000c6e4 strh.w r0, [sl]                                   |     *(sl) = r0;
    0x0000c6e8 add r1, pc                                        |     r1 = 0x18f96;
    0x0000c6ea blx 0x89ec                                        |     pthread_self ();
    0x0000c6ee movw r3, 0x6c07                                   |     r3 = 0x6c07;
    0x0000c6f2 strh.w r3, [sl, 2]                                |     *((sl + 2)) = r3;
    0x0000c6f6 ldr r3, [pc, 0x1b4]                               |     r3 = *(0xc8ae);
    0x0000c6f8 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x0000c6fa mov r0, r3                                        |     r0 = r3;
    0x0000c6fc str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0000c6fe blx 0x8930                                        |     fcn_00008930 ();
    0x0000c702 ldr r1, [sp, 0x14]                                |     r1 = var_14h;
    0x0000c704 ldr r0, [sp, 0x20]                                |     r0 = var_20h;
    0x0000c706 bl 0x19470                                        |     r0 = fcn_00019470 (r0, r1);
    0x0000c70a mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 == 0) {
    0x0000c70c cbz r0, 0xc738                                    |         goto label_7;
                                                                 |     }
    0x0000c70e ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x0000c710 blx 0x920c                                        |     fcn_0000920c ();
                                                                 |     do {
                                                                 | label_6:
    0x0000c714 ldr r0, [pc, 0x15c]                               |         r0 = *(0xc874);
    0x0000c716 b 0xc71c                                          |         goto label_1;
                                                                 | label_5:
    0x0000c718 mvn r0, 0x69                                      |         r0 = ~0x69;
                                                                 | label_1:
    0x0000c71c ldr r2, [pc, 0x190]                               |         
    0x0000c71e ldr r3, [pc, 0x160]                               |         r3 = *(0xc882);
    0x0000c720 add r2, pc                                        |         r2 = 0x18fd4;
    0x0000c722 ldr r3, [r2, r3]                                  |         r3 = *(0x18fd4);
    0x0000c724 ldr r2, [r3]                                      |         r2 = *(0x18fd4);
    0x0000c726 ldr.w r3, [sp, 0xc44]                             |         r3 = *(arg_c44h);
    0x0000c72a eors r2, r3                                       |         r2 ^= r3;
    0x0000c72c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x0000c730 beq.w 0xc86a                                      |             goto label_8;
                                                                 |         }
    0x0000c734 blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 | label_7:
    0x0000c738 movs r0, 0x10                                     |         r0 = 0x10;
    0x0000c73a blx 0x8e30                                        |         r0 = vfprintf_chk ()
    0x0000c73e mov r5, r0                                        |         r5 = r0;
    0x0000c740 mov r0, r7                                        |         r0 = r7;
    0x0000c742 blx 0x8b40                                        |         fcn_00008b40 ();
    0x0000c744 ldrd sb, fp, [lr, 0x24]!                          |         __asm ("ldrd sb, fp, [lr, 0x24]!");
    0x0000c748 str r0, [r5, 4]                                   |         *((r5 + 4)) = r0;
    0x0000c74a movs r0, 8                                        |         r0 = 8;
    0x0000c74c str r3, [r5, 8]                                   |         *((r5 + 8)) = r3;
    0x0000c74e ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x0000c750 str r3, [r5, 0xc]                                 |         *((r5 + 0xc)) = r3;
    0x0000c752 blx 0x8e30                                        |         vfprintf_chk ()
    0x0000c756 ldr r3, [sp, 0x20]                                |         r3 = var_20h;
    0x0000c758 mov r2, r0                                        |         r2 = r0;
    0x0000c75a ldr r1, [pc, 0x158]                               |         
    0x0000c75c mov r7, r0                                        |         r7 = r0;
    0x0000c75e str r3, [r0]                                      |         *(r0) = r3;
    0x0000c760 mov r0, r8                                        |         r0 = r8;
    0x0000c762 add r1, pc                                        |         r1 = 0x1901c;
    0x0000c764 bl 0xa7d4                                         |         fcn_0000a7d4 (r0, r1, r2);
    0x0000c768 movs r1, 1                                        |         r1 = 1;
    0x0000c76a mov r0, r8                                        |         r0 = r8;
    0x0000c76c bl 0xa7ec                                         |         fcn_0000a7ec (r0, r1);
    0x0000c770 ldr r3, [pc, 0x144]                               |         r3 = *(0xc8b8);
    0x0000c772 mov r0, r8                                        |         r0 = r8;
    0x0000c774 ldr r1, [r6, r3]                                  |         r1 = *((r6 + r3));
    0x0000c776 bl 0xa7fc                                         |         fcn_0000a7fc (r0, r1);
    0x0000c77a ldr r3, [pc, 0x140]                               |         r3 = *(0xc8be);
    0x0000c77c movs r2, 1                                        |         r2 = 1;
    0x0000c77e mov r1, fp                                        |         r1 = fp;
    0x0000c780 ldr r0, [r6, r3]                                  |         r0 = *((r6 + r3));
    0x0000c782 adds r3, r7, 4                                    |         r3 = r7 + 4;
    0x0000c784 strd r4, r3, [sp]                                 |         __asm ("strd r4, r3, [sp]");
    0x0000c788 mov r3, r8                                        |         r3 = r8;
    0x0000c78a bl 0xac38                                         |         fcn_0000ac38 (r0, r1, r2, r3, r4);
    0x0000c78e ldr r3, [r7, 4]                                   |         r3 = *((r7 + 4));
    0x0000c790 mov r1, r5                                        |         r1 = r5;
    0x0000c792 add r7, sp, 0xd4                                  |         r7 += arg_d4h;
    0x0000c794 str r3, [r5]                                      |         *(r5) = r3;
    0x0000c796 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x0000c798 ldr r0, [r3]                                      |         r0 = *(r3);
    0x0000c79a add.w r0, r0, 0x264                               |         r0 += 0x264;
    0x0000c79e bl 0x992e                                         |         fcn_0000992e (r0, r1);
    0x0000c7a2 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x0000c7a4 blx 0x920c                                        |         fcn_0000920c ();
    0x0000c7a8 movs r2, 0x80                                     |         r2 = 0x80;
    0x0000c7aa mov r1, r4                                        |         r1 = r4;
    0x0000c7ac mov r0, r7                                        |         r0 = r7;
    0x0000c7ae blx 0x9144                                        |         fcn_00009144 ();
    0x0000c7b2 ldr r3, [pc, 0x10c]                               |         r3 = *(0xc8c2);
    0x0000c7b4 ldr r5, [r6, r3]                                  |         r5 = *((r6 + r3));
    0x0000c7b6 ldr r0, [r5]                                      |         r0 = *(r5);
    0x0000c7b8 adds r2, r0, 1                                    |         r2 = r0 + 1;
                                                                 |         if (r2 != r0) {
    0x0000c7ba beq 0xc7e8                                        |             
    0x0000c7bc movs r3, 4                                        |             r3 = 4;
    0x0000c7be movs r2, 0x20                                     |             r2 = 0x20;
    0x0000c7c0 mov r1, r4                                        |             r1 = r4;
    0x0000c7c2 str r3, [sp]                                      |             *(sp) = r3;
    0x0000c7c4 add r3, sp, 0x2c                                  |             r3 += arg_2ch;
    0x0000c7c6 blx 0x8814                                        |             fcn_00008814 ();
    0x0000c7ca ldr r0, [r5]                                      |             r0 = *(r5);
    0x0000c7cc blx 0x8bb8                                        |             fcn_00008bb8 ();
    0x0000c7d0 ldr r4, [r5]                                      |             r4 = *(r5);
    0x0000c7d2 movs r3, 1                                        |             r3 = 1;
    0x0000c7d4 and r2, r4, 0x1f                                  |             r2 = r4 & 0x1f;
    0x0000c7d8 lsls r3, r2                                       |             r3 <<= r2;
    0x0000c7da ldr.w r2, [r7, r0, lsl 2]                         |             offset_0 = r0 << 2;
                                                                 |             r2 = *((r7 + offset_0));
    0x0000c7de bic.w r4, r4, r4, asr 31                          |             r4 = BIT_MASK (r4, r4);
    0x0000c7e2 orrs r3, r2                                       |             r3 |= r2;
    0x0000c7e4 str.w r3, [r7, r0, lsl 2]                         |             __asm ("str.w r3, [r7, r0, lsl 2]");
                                                                 |         }
    0x0000c7e8 movs r6, 0                                        |         r6 = 0;
    0x0000c7ea mov r2, r7                                        |         r2 = r7;
    0x0000c7ec mov r3, r6                                        |         r3 = r6;
    0x0000c7ee mov r1, r6                                        |         r1 = r6;
    0x0000c7f0 adds r0, r4, 1                                    |         r0 = r4 + 1;
    0x0000c7f2 str r6, [sp]                                      |         *(sp) = r6;
    0x0000c7f4 blx 0x8aac                                        |         freeifaddrs ();
    0x0000c7f8 adds r0, 1                                        |         r0++;
                                                                 |         if (r0 != 1) {
    0x0000c7fa bne 0xc814                                        |             goto label_9;
                                                                 |         }
    0x0000c7fc blx 0x9094                                        |         strncasecmp (r0, r1, r2);
    0x0000c800 mov.w r2, 0x100                                   |         r2 = 0x100;
    0x0000c804 add r1, sp, 0x154                                 |         r1 += arg_154h;
    0x0000c806 ldr r0, [r0]                                      |         r0 = *(r0);
    0x0000c808 blx 0x9110                                        |         fcn_00009110 ();
    0x0000c80c ldr r0, [r5]                                      |         r0 = *(r5);
    0x0000c80e blx 0x966c                                        |         fcn_0000966c ();
    0x0000c812 b 0xc714                                          |         
                                                                 |     } while (1);
                                                                 | label_9:
    0x0000c814 ldr r0, [r5]                                      |     r0 = *(r5);
    0x0000c816 adds r3, r0, 1                                    |     r3 = r0 + 1;
    0x0000c818 bne 0xc81e                                        |     
                                                                 |     while ((r3 & r2) == 0) {
                                                                 | label_2:
    0x0000c81a movs r0, 1                                        |         r0 = 1;
    0x0000c81c b 0xc71c                                          |         goto label_1;
    0x0000c81e blx 0x8bb8                                        |         fcn_00008bb8 ();
    0x0000c822 ldr r3, [r5]                                      |         r3 = *(r5);
    0x0000c824 and r2, r3, 0x1f                                  |         r2 = r3 & 0x1f;
    0x0000c828 movs r3, 1                                        |         r3 = 1;
    0x0000c82a lsls r3, r2                                       |         r3 <<= r2;
    0x0000c82c ldr.w r2, [r7, r0, lsl 2]                         |         offset_1 = r0 << 2;
                                                                 |         r2 = *((r7 + offset_1));
    0x0000c830 tst r3, r2                                        |         
    0x0000c832 beq 0xc81a                                        |         
                                                                 |     }
    0x0000c834 ldr r7, [pc, 0x40]                                |     r7 = *(0xc878);
    0x0000c836 movs r4, 2                                        |     r4 = 2;
    0x0000c838 mov.w r8, 0x10                                    |     r8 = 0x10;
                                                                 | label_3:
    0x0000c83c ldr.w fp, [r5]                                    |     fp = *(r5);
    0x0000c840 mov r0, sb                                        |     r0 = sb;
    0x0000c842 blx 0x8f9c                                        |     fcn_00008f9c ();
    0x0000c846 movs r3, 0                                        |     r3 = 0;
    0x0000c848 mov r2, r0                                        |     r2 = r0;
    0x0000c84a mov r1, sb                                        |     r1 = sb;
    0x0000c84c mov r0, fp                                        |     r0 = fp;
    0x0000c84e strd sl, r8, [sp]                                 |     __asm ("strd sl, r8, [sp]");
    0x0000c852 blx 0x92cc                                        |     fcn_000092cc ();
    0x0000c856 add r0, sp, 0x30                                  |     r0 += arg_30h;
    0x0000c858 movs r1, 0                                        |     r1 = 0;
    0x0000c85a strd r6, r7, [r0]                                 |     __asm ("strd r6, r7, [r0]");
    0x0000c85e blx 0x89bc                                        |     ixmlNode_getNodeType ();
    0x0000c862 cmp r4, 1                                         |     
                                                                 |     if (r4 == 1) {
    0x0000c864 beq 0xc81a                                        |         goto label_2;
                                                                 |     }
    0x0000c866 movs r4, 1                                        |     r4 = 1;
    0x0000c868 b 0xc83c                                          |     goto label_3;
                                                                 | label_8:
    0x0000c86a addw sp, sp, 0xc4c                                |     __asm ("addw sp, var_0h");
    0x0000c86e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0xe806 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000e806 ()                                      | void fcn_0000e806 (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_a8h;
                                                                 |     int16_t var_d8h;
                                                                 |     int16_t var_a9ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 | label_2:
    0x0000d3cc ldr r2, [pc, 0x134]                               |     
    0x0000d3ce movs r1, 0                                        |     r1 = 0;
    0x0000d3d0 ldr r3, [pc, 0x134]                               |     r3 = *(0xd508);
    0x0000d3d2 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0000d3d6 sub.w sp, sp, 0xaa0                               |     
    0x0000d3da add r2, pc                                        |     r2 = 0x1a8e2;
    0x0000d3dc ldr.w r8, [pc, 0x12c]                             |     r8 = *(0x0000d50c);
    0x0000d3e0 add r6, sp, 0xc                                   |     r6 += var_ch;
    0x0000d3e2 mov r5, r0                                        |     r5 = r0;
    0x0000d3e4 ldr r3, [r2, r3]                                  |     
    0x0000d3e6 add.w sl, sp, 8                                   |     sl += var_8h;
    0x0000d3ea mov r0, r6                                        |     r0 = r6;
    0x0000d3ec movs r2, 0x1c                                     |     r2 = 0x1c;
    0x0000d3ee add r8, pc                                        |     r8 += pc;
    0x0000d3f0 ldr r3, [r3]                                      |     r3 = *(0x1a8e2);
    0x0000d3f2 str.w r3, [sp, 0xa9c]                             |     __asm ("str.w r3, [var_a9ch]");
    0x0000d3f6 mov.w r3, 0                                       |     r3 = 0;
    0x0000d3fa movs r3, 0x80                                     |     r3 = 0x80;
    0x0000d3fc str.w r3, [sl]                                    |     __asm ("str.w r3, [sl]");
    0x0000d400 blx 0x9144                                        |     fcn_00009144 ();
    0x0000d404 mov.w r0, 0x1d0                                   |     r0 = 0x1d0;
    0x0000d408 blx 0x8e30                                        |     r0 = vfprintf_chk ()
    0x0000d40c mov r4, r0                                        |     r4 = r0;
    0x0000d40e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000d410 beq 0xd4e8                                        |         goto label_3;
                                                                 |     }
    0x0000d412 ldr r3, [pc, 0xfc]                                |     
    0x0000d414 ldr.w r3, [r8, r3]                                |     r3 = *((r8 + r3));
    0x0000d418 ldr r3, [r3]                                      |     r3 = *(0xd512);
    0x0000d41a cmp r3, r5                                        |     
                                                                 |     if (r3 != r5) {
    0x0000d41c bne 0xd4da                                        |         goto label_4;
                                                                 |     }
    0x0000d41e movs r1, 9                                        |     r1 = 9;
    0x0000d420 bl 0x11342                                        |     fcn_00011342 (r0, r1);
                                                                 |     do {
    0x0000d424 movw r1, 0x9c4                                    |         r1 = 0x9c4;
    0x0000d428 add.w r0, r4, 0x114                               |         r0 = r4 + 0x114;
    0x0000d42c bl 0x102ec                                        |         r0 = fcn_000102ec (r0, r1);
    0x0000d430 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000d432 bne 0xd4e0                                        |             goto label_5;
                                                                 |         }
    0x0000d434 ldr.w r7, [r4, 0x114]                             |         r7 = *((r4 + 0x114));
                                                                 | label_0:
    0x0000d438 add.w sb, sp, 0x28                                |         sb += var_28h;
    0x0000d43c mov r0, r5                                        |         r0 = r5;
    0x0000d43e movs r3, 0                                        |         r3 = 0;
    0x0000d440 movw r2, 0x9c3                                    |         r2 = 0x9c3;
    0x0000d444 mov r1, r7                                        |         r1 = r7;
    0x0000d446 strd sb, sl, [sp]                                 |         __asm ("strd sb, sl, [sp]");
    0x0000d44a blx 0x8b18                                        |         r0 = strdup (r0);
    0x0000d44e subs r5, r0, 0                                    |         r5 = r0 - 0;
                                                                 |         if (r5 > r0) {
    0x0000d450 ble 0xd4ba                                        |             
    0x0000d452 movs r3, 0                                        |             r3 = 0;
    0x0000d454 add r0, sp, 0xa8                                  |             r0 += var_a8h;
    0x0000d456 strb r3, [r7, r5]                                 |             *((r7 + r5)) = r3;
    0x0000d458 ldrh.w r7, [sb]                                   |             r7 = *(sb);
    0x0000d45c cmp r7, 2                                         |             
                                                                 |             if (r7 != 2) {
    0x0000d45e bne 0xd4ec                                        |                 goto label_6;
                                                                 |             }
    0x0000d460 mov r2, r0                                        |             r2 = r0;
    0x0000d462 movs r3, 0x2e                                     |             r3 = 0x2e;
    0x0000d464 add r1, sp, 0x2c                                  |             r1 += var_2ch;
    0x0000d466 mov r0, r7                                        |             r0 = r7;
    0x0000d468 blx 0x9504                                        |             fcn_00009504 ();
                                                                 |             if (r4 == 0) {
                                                                 | label_1:
    0x0000d46c cbz r4, 0xd4c0                                    |                 goto label_7;
                                                                 |             }
    0x0000d46e ldr.w r3, [r4, 0x118]                             |             r3 = *((r4 + 0x118));
    0x0000d472 movs r7, 0                                        |             r7 = 0;
    0x0000d474 movs r2, 0x80                                     |             r2 = 0x80;
    0x0000d476 mov r1, sb                                        |             r1 = sb;
    0x0000d478 add.w r0, r4, 0x150                               |             r0 = r4 + 0x150;
    0x0000d47c add r3, r5                                        |             r3 += r5;
    0x0000d47e str.w r3, [r4, 0x118]                             |             __asm ("str.w r3, aav.0x000000ff");
    0x0000d482 ldr.w r3, [r4, 0x114]                             |             r3 = *((r4 + 0x114));
    0x0000d486 strb r7, [r3, r5]                                 |             *((r3 + r5)) = r7;
    0x0000d488 blx 0x8a14                                        |             fcn_00008a14 ();
    0x0000d48c ldr r1, [pc, 0x84]                                |             
    0x0000d48e mov r2, r4                                        |             r2 = r4;
    0x0000d490 mov r0, r6                                        |             r0 = r6;
    0x0000d492 add r1, pc                                        |             r1 = 0x1a9aa;
    0x0000d494 bl 0xa7d4                                         |             fcn_0000a7d4 (r0, r1, r2);
    0x0000d498 ldr r1, [pc, 0x7c]                                |             
    0x0000d49a mov r0, r6                                        |             r0 = r6;
    0x0000d49c add r1, pc                                        |             r1 = 0x1a9b8;
    0x0000d49e bl 0xa7fc                                         |             fcn_0000a7fc (r0, r1);
    0x0000d4a2 movs r1, 1                                        |             r1 = 1;
    0x0000d4a4 mov r0, r6                                        |             r0 = r6;
    0x0000d4a6 bl 0xa7ec                                         |             fcn_0000a7ec (r0, r1);
    0x0000d4aa ldr r3, [pc, 0x70]                                |             r3 = *(0xd51e);
    0x0000d4ac mov r2, r7                                        |             r2 = r7;
    0x0000d4ae mov r1, r6                                        |             r1 = r6;
    0x0000d4b0 ldr.w r0, [r8, r3]                                |             r0 = *((r8 + r3));
    0x0000d4b4 bl 0xa174                                         |             r0 = fcn_0000a174 (r0, r1, r2);
                                                                 |             if (r0 == 0) {
    0x0000d4b8 cbz r0, 0xd4c0                                    |                 goto label_7;
                                                                 |             }
                                                                 |         }
    0x0000d4ba mov r0, r4                                        |         r0 = r4;
    0x0000d4bc bl 0xc948                                         |         fcn_0000c948 (r0, r1);
                                                                 | label_7:
    0x0000d4c0 ldr r2, [pc, 0x5c]                                |         
    0x0000d4c2 ldr r3, [pc, 0x44]                                |         r3 = *(0xd50a);
    0x0000d4c4 add r2, pc                                        |         r2 = 0x1a9e8;
    0x0000d4c6 ldr r3, [r2, r3]                                  |         r3 = *(0x1a9e8);
    0x0000d4c8 ldr r2, [r3]                                      |         r2 = *(0x1a9e8);
    0x0000d4ca ldr.w r3, [sp, 0xa9c]                             |         r3 = var_a9ch;
    0x0000d4ce eors r2, r3                                       |         r2 ^= r3;
    0x0000d4d0 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x0000d4d4 beq 0xd4fc                                        |             goto label_8;
                                                                 |         }
    0x0000d4d6 blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 | label_4:
    0x0000d4da bl 0x1132c                                        |         fcn_0001132c (r0);
    0x0000d4de b 0xd424                                          |         
                                                                 |     } while (1);
                                                                 | label_5:
    0x0000d4e0 mov r0, r4                                        |     r0 = r4;
    0x0000d4e2 movs r4, 0                                        |     r4 = 0;
    0x0000d4e4 blx 0x894c                                        |     fcn_0000894c ();
    0x0000d4e6 invalid                                           |     
                                                                 | label_3:
    0x0000d4e8 add r7, sp, 0xd8                                  |     r7 += var_d8h;
    0x0000d4ea b 0xd438                                          |     goto label_0;
                                                                 | label_6:
    0x0000d4ec ldr r1, [pc, 0x34]                                |     
    0x0000d4ee movs r2, 0x2d                                     |     r2 = 0x2d;
    0x0000d4f0 strb.w r3, [r0, 0x2d]                             |     *((r0 + 0x2d)) = r3;
    0x0000d4f4 add r1, pc                                        |     r1 = 0x1aa1c;
    0x0000d4f6 blx 0x9174                                        |     fcn_00009174 ();
    0x0000d4fa b 0xd46c                                          |     goto label_1;
                                                                 | label_8:
    0x0000d4fc add.w sp, sp, 0xaa0                               |     
    0x0000d500 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
    0x0000e806 push {r3, r4, r5, lr}                             |     
    0x0000e808 adds r3, r0, 1                                    |     r3 = r0 + 1;
    0x0000e80a mov r4, r0                                        |     r4 = r0;
    0x0000e80c mov r5, r1                                        |     r5 = r1;
                                                                 |     if (r3 != r0) {
    0x0000e80e beq 0xe82e                                        |         
    0x0000e810 blx 0x8bb8                                        |         fcn_00008bb8 ();
    0x0000e814 and r2, r4, 0x1f                                  |         r2 = r4 & 0x1f;
    0x0000e816 lsls r7, r3, 8                                    |         r7 = r3 << 8;
    0x0000e818 movs r3, 1                                        |         r3 = 1;
    0x0000e81a lsls r3, r2                                       |         r3 <<= r2;
    0x0000e81c ldr.w r2, [r5, r0, lsl 2]                         |         offset_0 = r0 << 2;
                                                                 |         r2 = *((r5 + offset_0));
    0x0000e820 tst r3, r2                                        |         
                                                                 |         if ((r3 & r2) == 0) {
    0x0000e822 beq 0xe82e                                        |             goto label_9;
                                                                 |         }
    0x0000e824 mov r0, r4                                        |         r0 = r4;
    0x0000e826 pop.w {r3, r4, r5, lr}                            |         
    0x0000e82a b.w 0xd3cc                                        |         goto label_2;
                                                                 |     }
                                                                 | label_9:
    0x0000e82e 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/libupnp.so.17.1.8 @ 0xef54 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000ef54 ()                                  | void fcn_0000ef54 (int16_t arg1, int16_t arg2) {
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_24h;
                                                             |     int16_t var_a4h;
                                                             |     int16_t var_1a4h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             | label_2:
    0x0000ee74 ldr r2, [pc, 0xc0]                            |     
    0x0000ee76 ldr r3, [pc, 0xc4]                            |     r3 = *(0xef3e);
    0x0000ee78 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x0000ee7c sub sp, 0x1ac                                 |     
    0x0000ee7e add r2, pc                                    |     r2 = 0x1ddba;
    0x0000ee80 add.w r8, sp, 0x24                            |     r8 += var_24h;
    0x0000ee84 mov.w sb, 0x80                                |     sb = 0x80;
    0x0000ee88 mov r1, r8                                    |     r1 = r8;
    0x0000ee8a ldr r3, [r2, r3]                              |     
    0x0000ee8c add r2, sp, 4                                 |     r2 += var_4h;
    0x0000ee8e ldr r7, [pc, 0xb0]                            |     
    0x0000ee90 ldr r3, [r3]                                  |     r3 = *(0x1ddba);
    0x0000ee92 str r3, [sp, 0x1a4]                           |     var_1a4h = r3;
    0x0000ee94 mov.w r3, 0                                   |     r3 = 0;
    0x0000ee98 str.w sb, [r2]                                |     __asm ("str.w sb, [r2]");
    0x0000ee9c blx 0x8c58                                    |     r0 = fcn_00008c58 ();
    0x0000eea0 adds r3, r0, 1                                |     r3 = r0 + 1;
    0x0000eea2 add r7, pc                                    |     r7 = 0x1dde8;
    0x0000eea4 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r3 != r0) {
    0x0000eea6 bne 0xeed0                                    |         goto label_3;
                                                             |     }
    0x0000eea8 blx 0x9094                                    |     strncasecmp (r0, r1, r2);
    0x0000eeac mov.w r2, 0x100                               |     r2 = 0x100;
    0x0000eeb0 ldr r0, [r0]                                  |     r0 = *(r0);
    0x0000eeb2 add r1, sp, 0xa4                              |     r1 += var_a4h;
    0x0000eeb4 blx 0x9110                                    |     fcn_00009110 ();
                                                             |     do {
                                                             | label_0:
    0x0000eeb8 ldr r2, [pc, 0x88]                            |         
    0x0000eeba ldr r3, [pc, 0x80]                            |         r3 = *(0xef3e);
    0x0000eebc add r2, pc                                    |         r2 = 0x1de04;
    0x0000eebe ldr r3, [r2, r3]                              |         r3 = *(0x1de04);
    0x0000eec0 ldr r2, [r3]                                  |         r2 = *(0x1de04);
    0x0000eec2 ldr r3, [sp, 0x1a4]                           |         r3 = var_1a4h;
    0x0000eec4 eors r2, r3                                   |         r2 ^= r3;
    0x0000eec6 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 == r3) {
    0x0000eeca beq 0xef30                                    |             goto label_4;
                                                             |         }
    0x0000eecc blx 0x8b7c                                    |         fcn_00008b7c ();
                                                             | label_3:
    0x0000eed0 add r6, sp, 8                                 |         r6 += var_8h;
    0x0000eed2 movs r2, 0x1c                                 |         r2 = 0x1c;
    0x0000eed4 movs r1, 0                                    |         r1 = 0;
    0x0000eed6 mov r0, r6                                    |         r0 = r6;
    0x0000eed8 blx 0x9144                                    |         fcn_00009144 ();
    0x0000eedc movs r0, 0x84                                 |         r0 = 0x84;
    0x0000eede blx 0x8e30                                    |         r0 = vfprintf_chk ()
    0x0000eee2 mov r5, r0                                    |         r5 = r0;
                                                             |         if (r0 != 0) {
    0x0000eee4 cbnz r0, 0xeeee                               |             goto label_5;
                                                             |         }
                                                             | label_1:
    0x0000eee6 mov r0, r4                                    |         r0 = r4;
    0x0000eee8 bl 0xeb0c                                     |         fcn_0000eb0c (r0);
    0x0000eeec b 0xeeb8                                      |         
                                                             |     } while (1);
                                                             | label_5:
    0x0000eeee mov r2, sb                                    |     r2 = sb;
    0x0000eef0 mov r1, r8                                    |     r1 = r8;
    0x0000eef2 str r4, [r0], 4                               |     *(r0) = r4;
                                                             |     r0 += 4;
    0x0000eef6 blx 0x8a14                                    |     fcn_00008a14 ();
    0x0000eefa ldr r1, [pc, 0x4c]                            |     
    0x0000eefc mov r2, r5                                    |     r2 = r5;
    0x0000eefe mov r0, r6                                    |     r0 = r6;
    0x0000ef00 add r1, pc                                    |     r1 = 0x1de4e;
    0x0000ef02 bl 0xa7d4                                     |     fcn_0000a7d4 (r0, r1, r2);
    0x0000ef06 ldr r1, [pc, 0x44]                            |     
    0x0000ef08 mov r0, r6                                    |     r0 = r6;
    0x0000ef0a add r1, pc                                    |     r1 = 0x1de5c;
    0x0000ef0c bl 0xa7fc                                     |     fcn_0000a7fc (r0, r1);
    0x0000ef10 movs r1, 1                                    |     r1 = 1;
    0x0000ef12 mov r0, r6                                    |     r0 = r6;
    0x0000ef14 bl 0xa7ec                                     |     fcn_0000a7ec (r0, r1);
    0x0000ef16 stc2l p11, c4, [sl], -0x34                    |     __asm ("stc2l p11, c4, [sl], -0x34");
    0x0000ef1a movs r2, 0                                    |     r2 = 0;
    0x0000ef1c mov r1, r6                                    |     r1 = r6;
    0x0000ef1e ldr r0, [r7, r3]                              |     r0 = *((r7 + r3));
    0x0000ef20 bl 0xa174                                     |     r0 = fcn_0000a174 (r0, r1, r2);
    0x0000ef24 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000ef26 beq 0xeeb8                                    |         goto label_0;
                                                             |     }
    0x0000ef28 mov r0, r5                                    |     r0 = r5;
    0x0000ef2a blx 0x894c                                    |     fcn_0000894c ();
    0x0000ef2e b 0xeee6                                      |     goto label_1;
                                                             | label_4:
    0x0000ef30 add sp, 0x1ac                                 |     
    0x0000ef32 pop.w {r4, r5, r6, r7, r8, sb, pc}            |     
    0x0000ef54 push {r3, r4, r5, lr}                         |     
    0x0000ef56 adds r3, r0, 1                                |     r3 = r0 + 1;
    0x0000ef58 mov r4, r0                                    |     r4 = r0;
    0x0000ef5a mov r5, r1                                    |     r5 = r1;
                                                             |     if (r3 != r0) {
    0x0000ef5c beq 0xef7a                                    |         
    0x0000ef5e blx 0x8bb8                                    |         fcn_00008bb8 ();
    0x0000ef62 and r2, r4, 0x1f                              |         r2 = r4 & 0x1f;
    0x0000ef66 movs r3, 1                                    |         r3 = 1;
    0x0000ef68 lsls r3, r2                                   |         r3 <<= r2;
    0x0000ef6a ldr.w r2, [r5, r0, lsl 2]                     |         offset_0 = r0 << 2;
                                                             |         r2 = *((r5 + offset_0));
    0x0000ef6e tst r3, r2                                    |         
                                                             |         if ((r3 & r2) == 0) {
    0x0000ef70 beq 0xef7a                                    |             goto label_6;
                                                             |         }
    0x0000ef72 mov r0, r4                                    |         r0 = r4;
    0x0000ef74 pop.w {r3, r4, r5, lr}                        |         
    0x0000ef78 b 0xee74                                      |         goto label_2;
                                                             |     }
                                                             | label_6:
    0x0000ef7a 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/libupnp.so.17.1.8 @ 0xf1f4 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000f1f4 ()                                          | void fcn_0000f1f4 (int16_t arg_ch, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_2ch;
                                                                     |     int16_t var_30h;
                                                                     |     int16_t var_3ch;
                                                                     |     int16_t var_13ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x0000f1f4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000f1f8 sub sp, 0x144                                         |     
    0x0000f1fa strd r1, r2, [sp]                                     |     __asm ("strd r1, r2, [sp]");
    0x0000f1fe add r7, sp, 0x10                                      |     r7 += var_10h;
    0x0000f200 mov sb, r0                                            |     sb = r0;
    0x0000f202 movs r1, 0                                            |     r1 = 0;
    0x0000f204 ldr r2, [pc, 0x230]                                   |     
    0x0000f206 mov r0, r7                                            |     r0 = r7;
    0x0000f208 ldr r3, [pc, 0x230]                                   |     r3 = *(0xf43c);
    0x0000f20a ldr.w fp, [pc, 0x234]                                 |     fp = *(0x0000f440);
    0x0000f20e add r2, pc                                            |     r2 = 0x1e64a;
    0x0000f210 ldr.w sl, [pc, 0x230]                                 |     sl = *(0x0000f444);
    0x0000f214 ldr r3, [r2, r3]                                      |     
    0x0000f216 movs r2, 0x1c                                         |     r2 = 0x1c;
    0x0000f218 add fp, pc                                            |     
    0x0000f21a add sl, pc                                            |     sl += pc;
    0x0000f21c ldr r3, [r3]                                          |     r3 = *(0x1e64a);
    0x0000f21e str r3, [sp, 0x13c]                                   |     var_13ch = r3;
    0x0000f220 mov.w r3, 0                                           |     r3 = 0;
    0x0000f224 blx 0x9144                                            |     fcn_00009144 ();
    0x0000f228 ldr.w r5, [fp, 0xc]                                   |     r5 = *(arg_ch);
    0x0000f22c cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x0000f22e bne.w 0xf404                                          |         goto label_4;
                                                                     |     }
    0x0000f232 movs r0, 0x2c                                         |     r0 = 0x2c;
    0x0000f234 blx 0x8e30                                            |     r0 = vfprintf_chk ()
    0x0000f238 mov r4, r0                                            |     r4 = r0;
    0x0000f23a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000f23c beq.w 0xf3ae                                          |         goto label_5;
                                                                     |     }
    0x0000f240 mov.w r3, -1                                          |     r3 = -1;
    0x0000f244 ldr r2, [sp]                                          |     r2 = *(sp);
    0x0000f246 strd r3, r5, [r0, 0x18]                               |     __asm ("strd r3, r5, [r0, 0x18]");
    0x0000f24a strd r5, r3, [r0, 0x20]                               |     __asm ("strd r5, r3, [r0, 0x20]");
    0x0000f24e strd r3, r3, [r0]                                     |     __asm ("strd r3, r3, [r0]");
    0x0000f252 strd r3, r3, [r0, 8]                                  |     __asm ("strd r3, r3, [r0, 8]");
    0x0000f256 strd r3, r3, [r0, 0x10]                               |     __asm ("strd r3, r3, [r0, 0x10]");
    0x0000f25a str r3, [r0, 0x28]                                    |     *((r0 + 0x28)) = r3;
    0x0000f25c ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000f25e ldrh r2, [r2]                                         |     r2 = *(r2);
    0x0000f260 ldrh.w r1, [sb]                                       |     r1 = *(sb);
    0x0000f264 ldrh r3, [r3]                                         |     r3 = *(r3);
    0x0000f266 bl 0xecfc                                             |     r0 = fcn_0000ecfc (r0, r1, r2, r3);
    0x0000f26a mov r5, r0                                            |     r5 = r0;
    0x0000f26c cbz r0, 0xf28e                                        |     
                                                                     |     while (1) {
    0x0000f26e mov r0, r4                                            |         r0 = r4;
    0x0000f270 blx 0x894c                                            |         fcn_0000894c ();
                                                                     | label_2:
    0x0000f274 ldr r2, [pc, 0x1d0]                                   |         
    0x0000f276 ldr r3, [pc, 0x1c4]                                   |         r3 = *(0xf43e);
    0x0000f278 add r2, pc                                            |         r2 = 0x1e6c4;
    0x0000f27a ldr r3, [r2, r3]                                      |         r3 = *(0x1e6c4);
    0x0000f27c ldr r2, [r3]                                          |         r2 = *(0x1e6c4);
    0x0000f27e ldr r3, [sp, 0x13c]                                   |         r3 = var_13ch;
    0x0000f280 eors r2, r3                                           |         r2 ^= r3;
    0x0000f282 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 == r3) {
    0x0000f286 beq.w 0xf42c                                          |             goto label_6;
                                                                     |         }
    0x0000f28a blx 0x8b7c                                            |         fcn_00008b7c ();
    0x0000f28e movs r1, 2                                            |         r1 = 2;
    0x0000f290 mov r2, r0                                            |         r2 = r0;
    0x0000f292 mov r0, r1                                            |         r0 = r1;
    0x0000f294 blx 0x9528                                            |         r0 = fcn_00009528 ();
    0x0000f298 adds r3, r0, 1                                        |         r3 = r0 + 1;
    0x0000f29a mov r6, r0                                            |         r6 = r0;
                                                                     |         if (r3 != r0) {
    0x0000f29c bne 0xf2c6                                            |             goto label_7;
                                                                     |         }
    0x0000f29e mvn r5, 0xcc                                          |         r5 = ~0xcc;
    0x0000f2a2 blx 0x9094                                            |         strncasecmp (r0, r1, r2);
    0x0000f2a6 mov.w r2, 0x100                                       |         r2 = 0x100;
    0x0000f2aa ldr r0, [r0]                                          |         r0 = *(r0);
    0x0000f2ac add r1, sp, 0x3c                                      |         r1 += var_3ch;
    0x0000f2ae blx 0x9110                                            |         fcn_00009110 ();
                                                                     | label_0:
    0x0000f2b2 ldr r0, [r4]                                          |         r0 = *(r4);
    0x0000f2b4 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f2b8 ldr r0, [r4, 4]                                       |         r0 = *((r4 + 4));
    0x0000f2ba bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f2be ldr r0, [r4, 8]                                       |         r0 = *((r4 + 8));
                                                                     | label_1:
    0x0000f2c0 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f2c4 b 0xf26e                                              |         
                                                                     |     }
                                                                     | label_7:
    0x0000f2c6 add.w r8, sp, 0x2c                                    |     r8 += var_2ch;
    0x0000f2ca mov r1, r5                                            |     r1 = r5;
    0x0000f2cc movs r2, 0x10                                         |     r2 = 0x10;
    0x0000f2ce mov r0, r8                                            |     r0 = r8;
    0x0000f2d0 blx 0x9144                                            |     fcn_00009144 ();
    0x0000f2d4 ldr r0, [pc, 0x174]                                   |     
    0x0000f2d6 movs r2, 2                                            |     r2 = 2;
    0x0000f2d8 strh.w r2, [sp, 0x2c]                                 |     var_2ch = r2;
    0x0000f2dc add r0, pc                                            |     r0 = 0x1e72c;
    0x0000f2de blx 0x9574                                            |     fcn_00009574 ();
    0x0000f2e2 movs r2, 0x10                                         |     r2 = 0x10;
    0x0000f2e4 str r0, [sp, 0x30]                                    |     var_30h = r0;
    0x0000f2e6 mov r1, r8                                            |     r1 = r8;
    0x0000f2e8 mov r0, r6                                            |     r0 = r6;
    0x0000f2ea blx 0x911c                                            |     fcn_0000911c ();
    0x0000f2ee adds r0, 1                                            |     r0++;
                                                                     |     if (r0 == 1) {
    0x0000f2f0 bne 0xf2fe                                            |         
    0x0000f2f2 mov r0, r6                                            |         r0 = r6;
    0x0000f2f4 mvn r5, 0xca                                          |         r5 = ~0xca;
    0x0000f2f8 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f2fc b 0xf2b2                                              |         goto label_0;
                                                                     |     }
    0x0000f2fe ldr r3, [pc, 0x150]                                   |     r3 = *(0xf452);
    0x0000f300 mov r0, r6                                            |     r0 = r6;
    0x0000f302 ldr.w r5, [sl, r3]                                    |     r5 = *((sl + r3));
    0x0000f306 mov r1, r5                                            |     r1 = r5;
    0x0000f308 bl 0xe77c                                             |     r0 = fcn_0000e77c (r0);
    0x0000f30c cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f30e bge 0xf31a                                            |         
    0x0000f310 mov r0, r6                                            |         r0 = r6;
    0x0000f312 ldr r5, [pc, 0x120]                                   |         r5 = *(0xf436);
    0x0000f314 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f316 invalid                                               |         
                                                                     |     }
    0x0000f31a ldrh r3, [r5]                                         |     r3 = *(r5);
    0x0000f31c mov r0, r4                                            |     r0 = r4;
    0x0000f31e str r6, [r4, 0xc]                                     |     *((r4 + 0xc)) = r6;
    0x0000f320 strh r3, [r4, 0x1c]                                   |     *((r4 + 0x1c)) = r3;
    0x0000f322 bl 0xd528                                             |     r0 = fcn_0000d528 (r0);
    0x0000f326 mov r5, r0                                            |     r5 = r0;
                                                                     |     if (r0 != 0) {
    0x0000f328 cbz r0, 0xf340                                        |         
    0x0000f32a ldr r0, [r4]                                          |         r0 = *(r4);
    0x0000f32c bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f330 ldr r0, [r4, 4]                                       |         r0 = *((r4 + 4));
    0x0000f332 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f336 ldr r0, [r4, 8]                                       |         r0 = *((r4 + 8));
    0x0000f338 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f33c ldr r0, [r4, 0xc]                                     |         r0 = *((r4 + 0xc));
    0x0000f33e b 0xf2c0                                              |         goto label_1;
                                                                     |     }
    0x0000f340 ldr r1, [pc, 0x110]                                   |     
    0x0000f342 mov r2, r4                                            |     r2 = r4;
    0x0000f344 mov r0, r7                                            |     r0 = r7;
    0x0000f346 add r1, pc                                            |     r1 = 0x1e79e;
    0x0000f348 bl 0xa7d4                                             |     fcn_0000a7d4 (r0, r1, r2);
    0x0000f34c movs r1, 1                                            |     r1 = 1;
    0x0000f34e mov r0, r7                                            |     r0 = r7;
    0x0000f350 bl 0xa7ec                                             |     fcn_0000a7ec (r0, r1);
    0x0000f352 invalid                                               |     
    0x0000f356 mov r0, r7                                            |     r0 = r7;
    0x0000f358 ldr.w r1, [sl, r3]                                    |     r1 = *((sl + r3));
    0x0000f35c bl 0xa7fc                                             |     fcn_0000a7fc (r0, r1);
    0x0000f360 ldr r3, [pc, 0xf8]                                    |     r3 = *(0xf45c);
    0x0000f362 mov r2, r5                                            |     r2 = r5;
    0x0000f364 mov r1, r7                                            |     r1 = r7;
    0x0000f366 ldr.w r0, [sl, r3]                                    |     r0 = *((sl + r3));
    0x0000f36a bl 0xa0b4                                             |     r0 = fcn_0000a0b4 (r0, r1, r2);
    0x0000f36e cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x0000f370 bge 0xf408                                            |         goto label_8;
                                                                     |     }
    0x0000f372 ldr r0, [r4]                                          |     r0 = *(r4);
    0x0000f374 bl 0xeb0c                                             |     fcn_0000eb0c (r0);
    0x0000f378 ldr r0, [r4, 4]                                       |     r0 = *((r4 + 4));
    0x0000f37a bl 0xeb0c                                             |     fcn_0000eb0c (r0);
    0x0000f37e ldr r0, [r4, 8]                                       |     r0 = *((r4 + 8));
    0x0000f380 bl 0xeb0c                                             |     fcn_0000eb0c (r0);
    0x0000f384 ldr r0, [r4, 0xc]                                     |     r0 = *((r4 + 0xc));
    0x0000f386 bl 0xeb0c                                             |     fcn_0000eb0c (r0);
    0x0000f38a ldr r0, [r4, 0x10]                                    |     r0 = *((r4 + 0x10));
    0x0000f38c bl 0xeb0c                                             |     fcn_0000eb0c (r0);
    0x0000f390 ldr r0, [r4, 0x14]                                    |     r0 = *((r4 + 0x14));
    0x0000f392 bl 0xeb0c                                             |     fcn_0000eb0c (r0);
    0x0000f396 ldr r0, [r4, 0x18]                                    |     r0 = *((r4 + 0x18));
    0x0000f398 bl 0xeb0c                                             |     fcn_0000eb0c (r0);
    0x0000f39c ldr r0, [r4, 0x24]                                    |     r0 = *((r4 + 0x24));
    0x0000f39e bl 0xeb0c                                             |     fcn_0000eb0c (r0);
    0x0000f3a2 ldr r0, [r4, 0x28]                                    |     r0 = *((r4 + 0x28));
    0x0000f3a4 bl 0xeb0c                                             |     fcn_0000eb0c (r0);
    0x0000f3a8 mov r0, r4                                            |     r0 = r4;
    0x0000f3aa blx 0x894c                                            |     fcn_0000894c ();
                                                                     | label_5:
    0x0000f3ae mvn r5, 0x67                                          |     r5 = ~0x67;
    0x0000f3b2 b 0xf274                                              |     goto label_2;
                                                                     |     do {
    0x0000f3b4 adds r6, 1                                            |         r6++;
    0x0000f3b6 movs r1, 0                                            |         r1 = 0;
    0x0000f3b8 add r0, sp, 8                                         |         r0 += var_8h;
    0x0000f3ba strd r1, sl, [r0]                                     |         __asm ("strd r1, sl, [r0]");
    0x0000f3be blx 0x89bc                                            |         ixmlNode_getNodeType ();
                                                                     | label_3:
    0x0000f3c2 ldr.w r3, [fp, 0xc]                                   |         r3 = *(arg_ch);
    0x0000f3c6 cmp r3, 1                                             |         
                                                                     |         if (r3 == 1) {
    0x0000f3c8 beq 0xf414                                            |             goto label_9;
                                                                     |         }
    0x0000f3ca cmp r6, r7                                            |         
    0x0000f3cc bne 0xf3b4                                            |         
                                                                     |     } while (r6 != r7);
                                                                     |     do {
    0x0000f3ce ldr r0, [r4]                                          |         r0 = *(r4);
    0x0000f3d0 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f3d4 ldr r0, [r4, 4]                                       |         r0 = *((r4 + 4));
    0x0000f3d6 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f3da ldr r0, [r4, 8]                                       |         r0 = *((r4 + 8));
    0x0000f3dc bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f3e0 ldr r0, [r4, 0xc]                                     |         r0 = *((r4 + 0xc));
    0x0000f3e2 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f3e6 ldr r0, [r4, 0x10]                                    |         r0 = *((r4 + 0x10));
    0x0000f3e8 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f3ec ldr r0, [r4, 0x14]                                    |         r0 = *((r4 + 0x14));
    0x0000f3ee bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f3f2 ldr r0, [r4, 0x18]                                    |         r0 = *((r4 + 0x18));
    0x0000f3f4 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f3f8 ldr r0, [r4, 0x24]                                    |         r0 = *((r4 + 0x24));
    0x0000f3fa bl 0xeb0c                                             |         fcn_0000eb0c (r0);
    0x0000f3fe ldr r0, [r4, 0x28]                                    |         r0 = *((r4 + 0x28));
    0x0000f400 bl 0xeb0c                                             |         fcn_0000eb0c (r0);
                                                                     | label_4:
    0x0000f404 ldr r5, [pc, 0x2c]                                    |         r5 = *(0xf434);
    0x0000f406 b 0xf274                                              |         goto label_2;
                                                                     | label_8:
    0x0000f408 ldr.w sl, [pc, 0x54]                                  |         sl = *(0x0000f460);
    0x0000f40c mov r6, r5                                            |         r6 = r5;
    0x0000f40e movw r7, 0x2710                                       |         r7 = 0x2710;
    0x0000f412 b 0xf3c2                                              |         goto label_3;
                                                                     | label_9:
    0x0000f414 cmp r6, r7                                            |         
    0x0000f416 beq 0xf3ce                                            |         
                                                                     |     } while (r6 == r7);
    0x0000f418 ldrh r3, [r4, 0x1e]                                   |     r3 = *((r4 + 0x1e));
    0x0000f41a ldr r2, [sp]                                          |     r2 = *(sp);
    0x0000f41c strh.w r3, [sb]                                       |     *(sb) = r3;
    0x0000f420 ldrh r3, [r4, 0x20]                                   |     r3 = *((r4 + 0x20));
    0x0000f422 strh r3, [r2]                                         |     *(r2) = r3;
    0x0000f424 ldrh r3, [r4, 0x22]                                   |     r3 = *((r4 + 0x22));
    0x0000f426 ldr r2, [sp, 4]                                       |     r2 = var_4h;
    0x0000f428 strh r3, [r2]                                         |     *(r2) = r3;
    0x0000f42a b 0xf274                                              |     goto label_2;
                                                                     | label_6:
    0x0000f42c mov r0, r5                                            |     r0 = r5;
    0x0000f42e add sp, 0x144                                         |     
    0x0000f430 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0xfd40 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000fd40 ()                                          | void fcn_0000fd40 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                     |     int16_t var_0h;
                                                                     |     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_2ch;
                                                                     |     int16_t var_30h;
                                                                     |     int16_t var_34h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x0000fd40 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000fd44 mov fp, r2                                            |     
    0x0000fd46 ldr r2, [pc, 0x208]                                   |     
    0x0000fd48 sub sp, 0x3c                                          |     
    0x0000fd4a mov r4, r0                                            |     r4 = r0;
    0x0000fd4c movs r6, 0                                            |     r6 = 0;
    0x0000fd4e ldr r3, [pc, 0x204]                                   |     r3 = *(0xff56);
    0x0000fd50 add r2, pc                                            |     r2 = 0x1fca6;
    0x0000fd52 str r1, [sp]                                          |     *(sp) = r1;
    0x0000fd54 mov r1, r0                                            |     r1 = r0;
    0x0000fd56 ldr r0, [pc, 0x200]                                   |     
    0x0000fd58 ldr r3, [r2, r3]                                      |     
    0x0000fd5a add r2, sp, 0x1c                                      |     r2 += var_1ch;
    0x0000fd5c add r0, pc                                            |     r0 = 0x1fcba;
    0x0000fd5e ldr r3, [r3]                                          |     r3 = *(0x1fca6);
    0x0000fd60 str r3, [sp, 0x34]                                    |     var_34h = r3;
    0x0000fd62 mov.w r3, 0                                           |     r3 = 0;
    0x0000fd66 strd r6, r6, [sp, 0x18]                               |     __asm ("strd r6, r6, [var_1ch]");
    0x0000fd6a strd r6, r6, [sp, 0x20]                               |     __asm ("strd r6, r6, [var_20h]");
    0x0000fd6e strd r6, r6, [sp, 0x28]                               |     __asm ("strd r6, r6, [var_28h]");
    0x0000fd72 str r6, [sp, 0x30]                                    |     var_30h = r6;
    0x0000fd74 bl 0xfd02                                             |     r0 = fcn_0000fd02 (r0, r1, r2);
    0x0000fd78 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000fd7a beq.w 0xff40                                          |         goto label_8;
                                                                     |     }
    0x0000fd7e ldr r0, [pc, 0x1dc]                                   |     
    0x0000fd80 add r2, sp, 0x18                                      |     r2 += var_18h;
    0x0000fd82 mov r1, r4                                            |     r1 = r4;
    0x0000fd84 add r0, pc                                            |     r0 = 0x1fce6;
    0x0000fd86 bl 0xfd02                                             |     fcn_0000fd02 (r0, r1, r2);
    0x0000fd88 vtbl.8 d2, {d12}, d0                                  |     __asm ("vtbl.8 d2, {d12}, d0");
    0x0000fd8a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000fd8c beq.w 0xff40                                          |         goto label_8;
                                                                     |     }
    0x0000fd90 ldr r1, [pc, 0x1cc]                                   |     
    0x0000fd92 ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x0000fd94 add r1, pc                                            |     r1 = 0x1fcf8;
    0x0000fd96 blx 0x91c4                                            |     r0 = fcn_000091c4 ();
    0x0000fd9a mov r8, r0                                            |     r8 = r0;
    0x0000fd9c cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000fd9e beq.w 0xff3c                                          |         goto label_9;
                                                                     |     }
    0x0000fda2 blx 0x9230                                            |     fcn_00009230 ();
    0x0000fda6 ldr r3, [pc, 0x1bc]                                   |     
    0x0000fda8 mov r5, r6                                            |     r5 = r6;
    0x0000fdaa mov r7, r6                                            |     r7 = r6;
    0x0000fdac mov sb, r6                                            |     sb = r6;
    0x0000fdae str r0, [sp, 4]                                       |     var_4h = r0;
    0x0000fdb0 add r3, pc                                            |     r3 = 0x1fd1a;
    0x0000fdb2 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000fdb4 ldr r3, [pc, 0x1b0]                                   |     
    0x0000fdb6 add r3, pc                                            |     r3 = 0x1fd22;
    0x0000fdb8 str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0000fdba ldr r3, [pc, 0x1b0]                                   |     
    0x0000fdbc add r3, pc                                            |     r3 = 0x1fd2e;
    0x0000fdbe str r3, [sp, 0x10]                                    |     var_10h = r3;
                                                                     | label_5:
    0x0000fdc0 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000fdc2 cmp r6, r3                                            |     
                                                                     |     if (r6 == r3) {
    0x0000fdc4 bne 0xfdd6                                            |         
    0x0000fdc6 mov r0, r8                                            |         r0 = r8;
    0x0000fdc8 mov r8, sb                                            |         r8 = sb;
    0x0000fdca blx 0x93f0                                            |         fcn_000093f0 ();
                                                                     | label_6:
    0x0000fdce ldr r3, [sp]                                          |         r3 = *(sp);
    0x0000fdd0 mov r4, r8                                            |         r4 = r8;
    0x0000fdd2 str r7, [r3]                                          |         *(r3) = r7;
    0x0000fdd4 b 0xfdfa                                              |         goto label_7;
                                                                     |     }
    0x0000fdd6 mov r1, r6                                            |     r1 = r6;
    0x0000fdd8 mov r0, r8                                            |     r0 = r8;
    0x0000fdda blx 0x9260                                            |     r0 = fcn_00009260 ();
    0x0000fdde mov sl, r0                                            |     sl = r0;
    0x0000fde0 movs r0, 0x28                                         |     r0 = 0x28;
                                                                     |     if (r7 == 0) {
    0x0000fde2 cbz r7, 0xfe14                                        |         goto label_10;
                                                                     |     }
    0x0000fde4 blx 0x8e30                                            |     r0 = vfprintf_chk ()
    0x0000fde8 mov r4, r0                                            |     r4 = r0;
    0x0000fdea str r0, [r7, 0x24]                                    |     *((r7 + 0x24)) = r0;
                                                                     |     do {
                                                                     |         if (r4 != 0) {
    0x0000fdec cbnz r4, 0xfe20                                       |             goto label_11;
                                                                     |         }
    0x0000fdee mov r0, sb                                            |         r0 = sb;
    0x0000fdf0 bl 0xfc7a                                             |         fcn_0000fc7a (r0);
    0x0000fdf4 mov r0, r8                                            |         r0 = r8;
    0x0000fdf6 blx 0x93f0                                            |         fcn_000093f0 ();
                                                                     | label_7:
    0x0000fdfa ldr r2, [pc, 0x174]                                   |         
    0x0000fdfc ldr r3, [pc, 0x154]                                   |         r3 = *(0xff54);
    0x0000fdfe add r2, pc                                            |         r2 = 0x1fd74;
    0x0000fe00 ldr r3, [r2, r3]                                      |         r3 = *(0x1fd74);
    0x0000fe02 ldr r2, [r3]                                          |         r2 = *(0x1fd74);
    0x0000fe04 ldr r3, [sp, 0x34]                                    |         r3 = var_34h;
    0x0000fe06 eors r2, r3                                           |         r2 ^= r3;
    0x0000fe08 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 == r3) {
    0x0000fe0c beq.w 0xff48                                          |             goto label_12;
                                                                     |         }
    0x0000fe10 blx 0x8b7c                                            |         fcn_00008b7c ();
                                                                     | label_10:
    0x0000fe14 blx 0x8e30                                            |         vfprintf_chk ()
    0x0000fe18 mov r7, r5                                            |         r7 = r5;
    0x0000fe1a mov sb, r0                                            |         sb = r0;
    0x0000fe1c mov r4, r0                                            |         r4 = r0;
    0x0000fe1e b 0xfdec                                              |         
                                                                     |     } while (1);
                                                                     | label_11:
    0x0000fe20 movs r3, 0                                            |     r3 = 0;
    0x0000fe22 movs r2, 1                                            |     r2 = 1;
    0x0000fe24 str r2, [r4, 0x18]                                    |     *((r4 + 0x18)) = r2;
    0x0000fe26 ldr r0, [sp, 0x1c]                                    |     r0 = var_1ch;
    0x0000fe28 str r3, [r4, 0x24]                                    |     *((r4 + 0x24)) = r3;
    0x0000fe2a strd r3, r3, [r4, 0xc]                                |     __asm ("strd r3, r3, [r4, 0xc]");
    0x0000fe2e strd r3, r3, [r4]                                     |     __asm ("strd r3, r3, [r4]");
    0x0000fe32 str r3, [r4, 8]                                       |     *((r4 + 8)) = r3;
    0x0000fe34 strd r3, r3, [r4, 0x1c]                               |     __asm ("strd r3, r3, [r4, 0x1c]");
    0x0000fe38 bl 0xfcde                                             |     fcn_0000fcde ();
    0x0000fe3c add r2, sp, 0x20                                      |     r2 += var_20h;
    0x0000fe3e mov r5, r0                                            |     r5 = r0;
    0x0000fe40 str r0, [r4, 0x14]                                    |     *((r4 + 0x14)) = r0;
    0x0000fe42 mov r1, sl                                            |     r1 = sl;
    0x0000fe44 ldr r0, [sp, 8]                                       |     r0 = var_8h;
    0x0000fe46 bl 0xfd02                                             |     r0 = fcn_0000fd02 (r0, r1, r2);
                                                                     |     if (r0 == 0) {
    0x0000fe4a cbz r0, 0xfea0                                        |         goto label_13;
                                                                     |     }
    0x0000fe4c ldr r0, [sp, 0x20]                                    |     r0 = var_20h;
    0x0000fe4e bl 0xfcde                                             |     fcn_0000fcde ();
    0x0000fe52 str r0, [r4]                                          |     *(r4) = r0;
                                                                     |     if (r0 == 0) {
    0x0000fe54 cbz r0, 0xfea0                                        |         goto label_13;
                                                                     |     }
    0x0000fe56 clz r5, r5                                            |     r5 &= r5;
    0x0000fe5a lsrs r5, r5, 5                                        |     r5 >>= 5;
                                                                     |     do {
    0x0000fe5c ldr r0, [sp, 0xc]                                     |         r0 = var_ch;
    0x0000fe5e add r2, sp, 0x24                                      |         r2 += var_24h;
    0x0000fe60 mov r1, sl                                            |         r1 = sl;
    0x0000fe62 bl 0xfd02                                             |         r0 = fcn_0000fd02 (r0, r1, r2);
                                                                     |         if (r0 != 0) {
    0x0000fe66 cbz r0, 0xfe72                                        |             
    0x0000fe68 ldr r0, [sp, 0x24]                                    |             r0 = var_24h;
    0x0000fe6a bl 0xfcde                                             |             fcn_0000fcde ();
    0x0000fe6e str r0, [r4, 4]                                       |             *((r4 + 4)) = r0;
                                                                     |             if (r0 != 0) {
    0x0000fe70 cbnz r0, 0xfe74                                       |                 goto label_14;
                                                                     |             }
                                                                     |         }
    0x0000fe72 movs r5, 1                                            |         r5 = 1;
                                                                     | label_14:
    0x0000fe74 ldr r0, [sp, 0x10]                                    |         r0 = var_10h;
    0x0000fe76 add r2, sp, 0x28                                      |         r2 += var_28h;
    0x0000fe78 mov r1, sl                                            |         r1 = sl;
    0x0000fe7a bl 0xfd02                                             |         r0 = fcn_0000fd02 (r0, r1, r2);
                                                                     |         if (r0 != 0) {
    0x0000fe7e cbnz r0, 0xfea4                                       |             goto label_15;
                                                                     |         }
                                                                     | label_0:
    0x0000fe80 movs r5, 1                                            |         r5 = 1;
    0x0000fe82 movs r1, 0                                            |         r1 = 0;
                                                                     | label_1:
    0x0000fe84 mov r0, r1                                            |         r0 = r1;
    0x0000fe86 blx 0x8fa8                                            |         fcn_00008fa8 ();
    0x0000fe8a ldr r0, [pc, 0xe8]                                    |         
    0x0000fe8c add r2, sp, 0x2c                                      |         r2 += var_2ch;
    0x0000fe8e mov r1, sl                                            |         r1 = sl;
    0x0000fe90 add r0, pc                                            |         r0 = 0x1fe0a;
    0x0000fe92 bl 0xfd02                                             |         r0 = fcn_0000fd02 (r0, r1, r2);
                                                                     |         if (r0 != 0) {
    0x0000fe96 cbnz r0, 0xfec4                                       |             goto label_16;
                                                                     |         }
                                                                     | label_2:
    0x0000fe98 movs r1, 0                                            |         r1 = 0;
                                                                     | label_3:
    0x0000fe9a movs r5, 0                                            |         r5 = 0;
    0x0000fe9c str r5, [r4, 0xc]                                     |         *((r4 + 0xc)) = r5;
    0x0000fe9e b 0xfee0                                              |         goto label_17;
                                                                     | label_13:
    0x0000fea0 movs r5, 1                                            |         r5 = 1;
    0x0000fea2 b 0xfe5c                                              |         
                                                                     |     } while (1);
                                                                     | label_15:
    0x0000fea4 ldr r0, [sp, 0x28]                                    |     r0 = var_28h;
    0x0000fea6 bl 0xfcde                                             |     r0 = fcn_0000fcde ();
    0x0000feaa mov r1, r0                                            |     r1 = r0;
    0x0000feac cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000feae beq 0xfe80                                            |         goto label_0;
                                                                     |     }
    0x0000feb0 str r0, [sp, 0x14]                                    |     var_14h = r0;
    0x0000feb2 mov r0, fp                                            |     r0 = fp;
    0x0000feb4 bl 0x14b88                                            |     r0 = fcn_00014b88 (r0, r1);
    0x0000feb8 cmp r0, 0                                             |     
    0x0000feba ldr r1, [sp, 0x14]                                    |     r1 = var_14h;
    0x0000febc it eq                                                 |     
                                                                     |     if (r0 != 0) {
    0x0000febe moveq r5, 1                                           |         r5 = 1;
                                                                     |     }
    0x0000fec0 str r0, [r4, 8]                                       |     *((r4 + 8)) = r0;
    0x0000fec2 b 0xfe84                                              |     goto label_1;
                                                                     | label_16:
    0x0000fec4 ldr r0, [sp, 0x2c]                                    |     r0 = var_2ch;
    0x0000fec6 bl 0xfcde                                             |     r0 = fcn_0000fcde ();
    0x0000feca mov r1, r0                                            |     r1 = r0;
    0x0000fecc cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000fece beq 0xfe98                                            |         goto label_2;
                                                                     |     }
    0x0000fed0 str r0, [sp, 0x14]                                    |     var_14h = r0;
    0x0000fed2 mov r0, fp                                            |     r0 = fp;
    0x0000fed4 bl 0x14b88                                            |     fcn_00014b88 (r0, r1);
    0x0000fed8 ldr r1, [sp, 0x14]                                    |     r1 = var_14h;
    0x0000feda str r0, [r4, 0xc]                                     |     *((r4 + 0xc)) = r0;
    0x0000fedc cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000fede beq 0xfe9a                                            |         goto label_3;
                                                                     |     }
                                                                     | label_17:
    0x0000fee0 mov r0, r1                                            |     r0 = r1;
    0x0000fee2 blx 0x8fa8                                            |     fcn_00008fa8 ();
    0x0000fee6 ldr r0, [pc, 0x90]                                    |     
    0x0000fee8 add r2, sp, 0x30                                      |     r2 += var_30h;
    0x0000feea mov r1, sl                                            |     r1 = sl;
    0x0000feec add r0, pc                                            |     r0 = 0x1fe6a;
    0x0000feee bl 0xfd02                                             |     r0 = fcn_0000fd02 (r0, r1, r2);
    0x0000fef2 cbnz r0, 0xfefe                                       |     
                                                                     |     while (r0 == 0) {
    0x0000fef4 mov.w sl, 0                                           |         sl = 0;
                                                                     | label_4:
    0x0000fef8 movs r5, 0                                            |         r5 = 0;
    0x0000fefa str r5, [r4, 0x10]                                    |         *((r4 + 0x10)) = r5;
    0x0000fefc b 0xff18                                              |         goto label_18;
    0x0000fefe ldr r0, [sp, 0x30]                                    |         r0 = var_30h;
    0x0000ff00 bl 0xfcde                                             |         r0 = fcn_0000fcde ();
    0x0000ff04 mov sl, r0                                            |         sl = r0;
    0x0000ff06 cmp r0, 0                                             |         
    0x0000ff08 beq 0xfef4                                            |         
                                                                     |     }
    0x0000ff0a mov r1, r0                                            |     r1 = r0;
    0x0000ff0c mov r0, fp                                            |     r0 = fp;
    0x0000ff0e bl 0x14b88                                            |     fcn_00014b88 (r0, r1);
    0x0000ff12 str r0, [r4, 0x10]                                    |     *((r4 + 0x10)) = r0;
    0x0000ff14 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ff16 beq 0xfef8                                            |         goto label_4;
                                                                     |     }
                                                                     | label_18:
    0x0000ff18 mov r0, sl                                            |     r0 = sl;
    0x0000ff1a blx 0x8fa8                                            |     fcn_00008fa8 ();
                                                                     |     if (r5 == 0) {
    0x0000ff1e cbz r5, 0xff2e                                        |         goto label_19;
                                                                     |     }
    0x0000ff20 mov r0, r4                                            |     r0 = r4;
    0x0000ff22 bl 0xfc7a                                             |     fcn_0000fc7a (r0);
                                                                     |     if (r7 == 0) {
    0x0000ff26 cbz r7, 0xff36                                        |         goto label_20;
                                                                     |     }
    0x0000ff28 mov r4, r7                                            |     r4 = r7;
    0x0000ff2a movs r3, 0                                            |     r3 = 0;
    0x0000ff2c str r3, [r7, 0x24]                                    |     *((r7 + 0x24)) = r3;
                                                                     |     do {
                                                                     | label_19:
    0x0000ff2e mov r5, r7                                            |         r5 = r7;
    0x0000ff30 adds r6, 1                                            |         r6++;
    0x0000ff32 mov r7, r4                                            |         r7 = r4;
    0x0000ff34 b 0xfdc0                                              |         goto label_5;
                                                                     | label_20:
    0x0000ff36 mov r4, r7                                            |         r4 = r7;
    0x0000ff38 mov sb, r7                                            |         sb = r7;
    0x0000ff3a b 0xff2e                                              |         
                                                                     |     } while (1);
                                                                     | label_9:
    0x0000ff3c mov r7, r0                                            |     r7 = r0;
    0x0000ff3e b 0xfdce                                              |     goto label_6;
                                                                     | label_8:
    0x0000ff40 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000ff42 movs r4, 0                                            |     r4 = 0;
    0x0000ff44 str r4, [r3]                                          |     *(r3) = r4;
    0x0000ff46 b 0xfdfa                                              |     goto label_7;
                                                                     | label_12:
    0x0000ff48 mov r0, r4                                            |     r0 = r4;
    0x0000ff4a add sp, 0x3c                                          |     
    0x0000ff4c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x10288 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00010288 ()              | void fcn_00010288 (int16_t arg1, int16_t arg2) {
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x00010288 push {r4, r5, r6, lr}     |     
    0x0001028a mov r6, r0                |     r6 = r0;
    0x0001028c adds r0, r1, 1            |     r0 = r1 + 1;
    0x0001028e mov r5, r1                |     r5 = r1;
    0x00010290 blx 0x8e30                |     r0 = vfprintf_chk ()
    0x00010294 mov r4, r0                |     r4 = r0;
                                         |     if (r0 != 0) {
    0x00010296 cbz r0, 0x102a4           |         
    0x00010298 mov r2, r5                |         r2 = r5;
    0x0001029a mov r1, r6                |         r1 = r6;
    0x0001029c blx 0x8a14                |         fcn_00008a14 ();
    0x000102a0 movs r3, 0                |         r3 = 0;
    0x000102a2 strb r3, [r4, r5]         |         *((r4 + r5)) = r3;
                                         |     }
    0x000102a4 mov r0, r4                |     r0 = r4;
    0x000102a6 pop {r4, r5, r6, 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/libupnp.so.17.1.8 @ 0x11170 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00011170 ()                                      | void fcn_00011170 (int16_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int32_t var_1ch_2;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     r0 = arg1;
    0x00011170 push {r1, r2, r5, r6, r8, sb, fp, lr}             |     
    0x00011174 ldr r7, [pc, 0x3c0]                               |     r7 = *(0x11538);
    0x00011176 sub sp, 0x34                                      |     
    0x00011178 ldr r2, [pc, 0x194]                               |     
    0x0001117a mov r4, r0                                        |     r4 = r0;
    0x0001117c add r3, pc                                        |     r3 += pc;
    0x0001117e add.w sl, r0, 0x144                               |     sl = r0 + 0x144;
    0x00011182 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00011184 ldr r3, [pc, 0x18c]                               |     r3 = *(0x11314);
    0x00011186 add r2, pc                                        |     r2 = 0x2249a;
    0x00011188 ldr r3, [r2, r3]                                  |     
    0x0001118a ldr r3, [r3]                                      |     r3 = *(0x2249a);
    0x0001118c str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0001118e mov.w r3, 0                                       |     r3 = 0;
    0x00011192 ldr r3, [pc, 0x184]                               |     
    0x00011194 add r3, pc                                        |     r3 = 0x224b2;
    0x00011196 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00011198 ldr r3, [pc, 0x180]                               |     
    0x0001119a add r3, pc                                        |     r3 = 0x224ba;
    0x0001119c str r3, [sp, 0x10]                                |     var_10h = r3;
    0x0001119e ldr r3, [pc, 0x180]                               |     
    0x000111a0 add r3, pc                                        |     r3 = 0x224c6;
    0x000111a2 str r3, [sp, 0x14]                                |     var_14h = r3;
                                                                 | label_3:
    0x000111a4 add r2, sp, 0x18                                  |     r2 += var_18h;
    0x000111a6 add r1, sp, 0x1c                                  |     r1 += var_1ch;
    0x000111a8 mov r0, sl                                        |     r0 = sl;
    0x000111aa ldr.w r6, [r4, 0x148]                             |     r6 = *((r4 + 0x148));
    0x000111ae bl 0x1085a                                        |     r0 = fcn_0001085a (r0, r1, r2);
    0x000111b2 cmp r0, 4                                         |     
                                                                 |     if (r0 != 4) {
    0x000111b4 beq 0x111bc                                       |         
                                                                 | label_0:
    0x000111b6 str.w r6, [r4, 0x148]                             |         __asm ("str.w r6, aav.0x000000ff");
    0x000111ba b 0x111d6                                         |         
                                                                 |     } else {
    0x000111bc ldr r5, [sp, 0x18]                                |         r5 = var_18h;
                                                                 |         if (r5 == 0) {
    0x000111be cbz r5, 0x111f8                                   |             goto label_5;
                                                                 |         }
    0x000111c0 cmp r5, 2                                         |         
                                                                 |         if (r5 != 2) {
    0x000111c2 bne 0x11256                                       |             goto label_6;
                                                                 |         }
    0x000111c4 ldr.w r3, [r4, 0xcc]                              |         r3 = *((r4 + 0xcc));
                                                                 |         if (r3 == 0) {
    0x000111c8 cbz r3, 0x111f0                                   |             goto label_7;
                                                                 |         }
    0x000111ca ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x000111cc cmp r3, 4                                         |         
                                                                 |         if (r3 != 4) {
    0x000111ce bne 0x111f0                                       |             goto label_7;
                                                                 |         }
    0x000111d0 str.w r0, [r4, 0x130]                             |         __asm ("str.w r0, aav.0x000000ff");
    0x000111d4 movs r0, 0                                        |         r0 = 0;
                                                                 |     }
                                                                 |     do {
                                                                 | label_1:
    0x000111d6 ldr r2, [pc, 0x14c]                               |         
    0x000111d8 ldr r3, [pc, 0x138]                               |         r3 = *(0x11314);
    0x000111da add r2, pc                                        |         r2 = 0x22504;
    0x000111dc ldr r3, [r2, r3]                                  |         r3 = *(0x22504);
    0x000111de ldr r2, [r3]                                      |         r2 = *(0x22504);
    0x000111e0 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x000111e2 eors r2, r3                                       |         r2 ^= r3;
    0x000111e4 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x000111e8 beq.w 0x11306                                     |             goto label_8;
                                                                 |         }
    0x000111ec blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 | label_7:
    0x000111f0 movs r3, 3                                        |         r3 = 3;
    0x000111f2 str.w r3, [r4, 0x130]                             |         __asm ("str.w r3, aav.0x000000ff");
    0x000111f6 b 0x111d6                                         |         
                                                                 |     } while (1);
                                                                 | label_5:
    0x000111f8 ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x000111fa add r2, sp, 0x24                                  |     r2 += var_24h;
    0x000111fc mov r0, sl                                        |     r0 = sl;
    0x000111fe bl 0x10e58                                        |     r0 = fcn_00010e58 (r0);
    0x00011202 cmp r0, 4                                         |     
                                                                 |     if (r0 != 4) {
    0x00011204 bne 0x111b6                                       |         goto label_0;
                                                                 |     }
    0x00011206 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x00011208 ldr r3, [pc, 0x11c]                               |     r3 = *(0x11328);
    0x0001120a ldrd r7, r8, [sp, 0x1c]                           |     __asm ("ldrd r7, r8, [var_1ch]");
    0x0001120e ldr.w sb, [r2, r3]                                |     sb = *((r2 + r3));
    0x00011212 movs r3, 0x21                                     |     r3 = 0x21;
    0x00011214 mov r1, r8                                        |     r1 = r8;
    0x00011216 mov r0, r7                                        |     r0 = r7;
    0x00011218 str r5, [sp]                                      |     *(sp) = r5;
    0x0001121a mov r2, sb                                        |     r2 = sb;
    0x0001121c bl 0x10494                                        |     r0 = fcn_00010494 (r0, r1, r2, r3, r4);
    0x00011220 adds r3, r0, 1                                    |     r3 = r0 + 1;
    0x00011222 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r3 == r0) {
    0x00011224 beq 0x1125a                                       |         goto label_9;
                                                                 |     }
    0x00011226 add.w sb, sb, r0, lsl 3                           |     sb += (r0 << 3);
    0x0001122a movs r2, 0                                        |     r2 = 0;
    0x0001122c mov r0, r4                                        |     r0 = r4;
    0x0001122e ldr.w r6, [sb, 4]                                 |     r6 = *((sb + 4));
    0x00011232 cmp r6, 0x13                                      |     
    0x00011234 mov r1, r6                                        |     r1 = r6;
    0x00011236 itt eq                                            |     
                                                                 |     if (r6 != 0x13) {
    0x00011238 moveq r3, 0xb                                     |         r3 = 0xb;
                                                                 |     }
                                                                 |     if (r6 != 0x13) {
    0x0001123a streq r3, [r4, 4]                                 |         *((r4 + 4)) = r3;
                                                                 |     }
    0x0001123c bl 0x10f74                                        |     r0 = fcn_00010f74 (r0, r1);
                                                                 |     do {
    0x00011240 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00011242 bne 0x112da                                       |             goto label_10;
                                                                 |         }
    0x00011244 movs r0, 0x2c                                     |         r0 = 0x2c;
    0x00011246 blx 0x8e30                                        |         r0 = vfprintf_chk ()
    0x0001124a mov r5, r0                                        |         r5 = r0;
                                                                 |         if (r0 != 0) {
    0x0001124c cbnz r0, 0x11270                                  |             goto label_11;
                                                                 |         }
                                                                 | label_2:
    0x0001124e mov.w r3, 0x1f4                                   |         r3 = 0x1f4;
    0x00011252 str.w r3, [r4, 0x128]                             |         __asm ("str.w r3, aav.0x000000ff");
                                                                 | label_6:
    0x00011256 movs r0, 3                                        |         r0 = 3;
    0x00011258 b 0x111d6                                         |         goto label_1;
                                                                 | label_9:
    0x0001125a ldrb.w sb, [r7, r8]                               |         sb = *((r7 + r8));
    0x0001125e mov r1, r7                                        |         r1 = r7;
    0x00011260 mov r0, r4                                        |         r0 = r4;
    0x00011262 strb.w r5, [r7, r8]                               |         *((r7 + r8)) = r5;
    0x00011266 bl 0x10f44                                        |         fcn_00010f44 (r0, r1);
    0x0001126a strb.w sb, [r7, r8]                               |         *((r7 + r8)) = sb;
    0x0001126c str r0, [sp, 0x20]                                |         *((sp + 0x20)) = r0;
    0x0001126e b 0x11240                                         |         
                                                                 |     } while (1);
                                                                 | label_11:
    0x00011270 add.w sb, r0, 0x1c                                |     sb = r0 + 0x1c;
    0x00011274 add.w fp, r5, 0xc                                 |     
    0x00011278 mov r0, sb                                        |     r0 = sb;
    0x0001127a bl 0x1033a                                        |     fcn_0001033a (r0);
    0x0001127e mov r0, fp                                        |     r0 = fp;
    0x00011280 bl 0x1033a                                        |     fcn_0001033a (r0);
    0x00011284 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
                                                                 |     if (r2 == 0) {
    0x00011286 cbnz r2, 0x11290                                  |         
    0x00011288 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x0001128a movs r2, 1                                        |         r2 = 1;
    0x0001128c str r2, [sp, 0x28]                                |         var_28h = r2;
    0x0001128e str r3, [sp, 0x24]                                |         var_24h = r3;
                                                                 |     }
    0x00011290 mov r2, r8                                        |     r2 = r8;
    0x00011292 mov r1, r7                                        |     r1 = r7;
    0x00011294 mov r0, sb                                        |     r0 = sb;
    0x00011296 bl 0x10360                                        |     r0 = fcn_00010360 (r0, r1, r2);
    0x0001129a cbz r0, 0x112b0                                   |     
                                                                 |     while (r0 != 0) {
                                                                 | label_4:
    0x0001129c mov r0, fp                                        |         r0 = fp;
    0x0001129e bl 0x10348                                        |         fcn_00010348 (r0);
    0x000112a2 mov r0, sb                                        |         r0 = sb;
    0x000112a4 bl 0x10348                                        |         fcn_00010348 (r0);
    0x000112a8 mov r0, r5                                        |         r0 = r5;
    0x000112aa blx 0x894c                                        |         fcn_0000894c ();
    0x000112ae b 0x1124e                                         |         goto label_2;
    0x000112b0 ldrd r1, r2, [sp, 0x24]                           |         __asm ("ldrd r1, r2, [var_24h]");
    0x000112b4 mov r0, fp                                        |         r0 = fp;
    0x000112b6 bl 0x10360                                        |         r0 = fcn_00010360 (r0, r1, r2);
    0x000112ba cmp r0, 0                                         |         
    0x000112bc bne 0x1129c                                       |         
                                                                 |     }
    0x000112be ldr r2, [r5, 0x1c]                                |     r2 = *((r5 + 0x1c));
    0x000112c0 mov r1, r5                                        |     r1 = r5;
    0x000112c2 add.w r0, r4, 0xd8                                |     r0 = r4 + 0xd8;
    0x000112c6 str r2, [r5]                                      |     *(r5) = r2;
    0x000112c8 ldr r2, [r5, 0x20]                                |     r2 = *((r5 + 0x20));
    0x000112ca strd r2, r6, [r5, 4]                              |     __asm ("strd r2, r6, [r5, 4]");
    0x000112ce bl 0x992e                                         |     r0 = fcn_0000992e (r0, r1);
    0x000112d2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000112d4 bne.w 0x111a4                                     |         goto label_3;
                                                                 |     }
    0x000112d8 b 0x1129c                                         |     goto label_4;
                                                                 | label_10:
    0x000112da ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000112dc cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000112de beq.w 0x111a4                                     |         goto label_3;
                                                                 |     }
    0x000112e2 add.w r5, r0, 0xc                                 |     r5 = r0 + 0xc;
    0x000112e6 ldr r1, [sp, 0x10]                                |     r1 = var_10h;
    0x000112e8 mov r0, r5                                        |     r0 = r5;
    0x000112ea bl 0x10416                                        |     fcn_00010416 (r0, r1);
    0x000112ee ldrd r1, r2, [sp, 0x24]                           |     __asm ("ldrd r1, r2, [var_24h]");
    0x000112f2 mov r6, r0                                        |     r6 = r0;
    0x000112f4 mov r0, r5                                        |     r0 = r5;
    0x000112f6 bl 0x10410                                        |     fcn_00010410 (r0, r1, r2);
    0x000112fa adds r6, 0x68                                     |     r6 += 0x68;
                                                                 |     if (r6 == 0x68) {
    0x000112fc beq 0x1124e                                       |         goto label_2;
                                                                 |     }
    0x000112fe adds r0, 0x68                                     |     r0 += 0x68;
                                                                 |     if (r0 != 0x68) {
    0x00011300 bne.w 0x111a4                                     |         goto label_3;
                                                                 |     }
    0x00011304 b 0x1124e                                         |     goto label_2;
                                                                 | label_8:
    0x00011306 add sp, 0x34                                      |     
    0x00011308 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x11ba4 */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) fcn.00011ba4 ()                                                      | void fcn_00011ba4 (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;
    0x00011ba4 push.w {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00011ba8 mov sb, r3                                                        |     sb = r3;
    0x00011baa ldr r6, [sp, 0x30]                                                |     r6 = *(arg_30h);
    0x00011bac mov.w r3, 0x1f4                                                   |     r3 = 0x1f4;
    0x00011bb0 mov r5, r1                                                        |     r5 = r1;
    0x00011bb2 mov r7, r2                                                        |     r7 = r2;
    0x00011bb4 ldr.w fp, [pc, 0xd4]                                              |     
    0x00011bb8 str r0, [sp, 4]                                                   |     var_4h = r0;
    0x00011bba mov.w r0, 0x400                                                   |     r0 = 0x400;
    0x00011bbe str r3, [r6]                                                      |     *(r6) = r3;
    0x00011bc0 add fp, pc                                                        |     fp = 0x23850;
    0x00011bc2 blx 0x8e30                                                        |     r0 = vfprintf_chk ()
    0x00011bc6 mov r4, r0                                                        |     r4 = r0;
                                                                                 |     if (r0 == 0) {
    0x00011bc8 cbnz r0, 0x11bde                                                  |         
                                                                                 | label_1:
    0x00011bca movs r4, 0                                                        |         r4 = 0;
    0x00011bcc mvn r8, 0x67                                                      |         r8 = ~0x67;
                                                                                 | label_2:
    0x00011bd0 mov r0, r4                                                        |         r0 = r4;
    0x00011bd2 blx 0x894c                                                        |         fcn_0000894c ();
    0x00011bd6 mov r0, r8                                                        |         r0 = r8;
    0x00011bd8 add sp, 0xc                                                       |         
    0x00011bda pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                        |         
                                                                                 |     }
    0x00011bde cmp r7, 0xa                                                       |     
                                                                                 |     if (r7 != 0xa) {
    0x00011be0 bne 0x11c1c                                                       |         goto label_4;
                                                                                 |     }
    0x00011be2 mov r0, r5                                                        |     r0 = r5;
    0x00011be4 bl 0x1132c                                                        |     fcn_0001132c (r0);
                                                                                 |     do {
    0x00011be8 mov.w sl, 0                                                       |         sl = 0;
    0x00011bec mov.w r7, 0x400                                                   |         r7 = 0x400;
                                                                                 | label_0:
    0x00011bf0 ldr r0, [sp, 4]                                                   |         r0 = var_4h;
    0x00011bf2 mov r3, sb                                                        |         r3 = sb;
    0x00011bf4 mov r2, r7                                                        |         r2 = r7;
    0x00011bf6 mov r1, r4                                                        |         r1 = r4;
    0x00011bf8 bl 0x10790                                                        |         r0 = fcn_00010790 (r0, r1, r2, r3);
    0x00011bfc subs.w r8, r0, 0                                                  |         r8 = r0 - 0;
                                                                                 |         if (r8 <= r0) {
    0x00011c00 ble 0x11c6e                                                       |             goto label_5;
                                                                                 |         }
    0x00011c02 mov r2, r8                                                        |         r2 = r8;
    0x00011c04 mov r1, r4                                                        |         r1 = r4;
    0x00011c06 mov r0, r5                                                        |         r0 = r5;
    0x00011c08 bl 0x118fc                                                        |         r0 = fcn_000118fc (r0, r1, r2);
    0x00011c0c cmp r0, 6                                                         |         
                                                                                 |         if (r0 > 6) {
    0x00011c0e bhi 0x11c2a                                                       |             goto label_6;
                                                                                 |         }
                                                                                 |         /* switch table (7 cases) at 0x11c14 */
    0x00011c10 tbb [pc, r0]                                                      |         __asm ("tbb aav.0x000000ff");
                                                                                 | label_4:
    0x00011c1c mov r1, r7                                                        |         r1 = r7;
    0x00011c1e mov r0, r5                                                        |         r0 = r5;
    0x00011c20 bl 0x11342                                                        |         fcn_00011342 (r0, r1);
    0x00011c24 b 0x11be8                                                         |         
                                                                                 |     } while (1);
    0x00011c26 mov.w sl, 1                                                       |     sl = 1;
                                                                                 | label_6:
    0x00011c2a cmp r8, r7                                                        |     
                                                                                 |     if (r8 <= r7) {
    0x00011c2c blo 0x11bf0                                                       |         goto label_0;
                                                                                 |     }
    0x00011c2e lsls r7, r7, 1                                                    |     r7 <<= 1;
    0x00011c30 mov r0, r4                                                        |     r0 = r4;
    0x00011c32 blx 0x894c                                                        |     fcn_0000894c ();
    0x00011c36 mov r0, r7                                                        |     r0 = r7;
    0x00011c38 blx 0x8e30                                                        |     r0 = vfprintf_chk ()
    0x00011c3c mov r4, r0                                                        |     r4 = r0;
    0x00011c3e cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x00011c40 bne 0x11bf0                                                       |         goto label_0;
                                                                                 |     }
    0x00011c42 b 0x11bca                                                         |     goto label_1;
    0x00011c44 ldr r3, [pc, 0x48]                                                |     r3 = *(0x11c90);
    0x00011c46 ldr.w r3, [fp, r3]                                                |     r3 = *((fp + r3));
    0x00011c4a ldr r2, [r3]                                                      |     r2 = *(0x11c90);
                                                                                 |     if (r2 == 0) {
    0x00011c4c cbz r2, 0x11c84                                                   |         goto label_7;
                                                                                 |     }
    0x00011c4e ldr.w r3, [r5, 0x138]                                             |     r3 = *((r5 + 0x138));
    0x00011c52 cmp r2, r3                                                        |     
                                                                                 |     if (r2 >= r3) {
    0x00011c54 bhs 0x11c84                                                       |         goto label_7;
                                                                                 |     }
    0x00011c56 movw r3, 0x19d                                                    |     r3 = 0x19d;
    0x00011c5a ldr.w r8, [pc, 0x38]                                              |     r8 = *(0x00011c94);
    0x00011c5e str r3, [r6]                                                      |     *(r6) = r3;
    0x00011c60 b 0x11bd0                                                         |     goto label_2;
    0x00011c62 ldr.w r3, [r5, 0x128]                                             |     r3 = *((r5 + 0x128));
                                                                                 | label_3:
    0x00011c66 mvn r8, 0x76                                                      |     r8 = ~0x76;
    0x00011c6a str r3, [r6]                                                      |     *(r6) = r3;
    0x00011c6c b 0x11bd0                                                         |     goto label_2;
                                                                                 |     if (r2 != r3) {
                                                                                 | label_5:
    0x00011c6e bne 0x11c7c                                                       |         goto label_8;
                                                                                 |     }
    0x00011c70 cmp.w sl, 0                                                       |     
                                                                                 |     if (sl != 0) {
    0x00011c74 bne 0x11bd0                                                       |         goto label_2;
                                                                                 |     }
    0x00011c76 mov.w r3, 0x190                                                   |     r3 = 0x190;
    0x00011c7a b 0x11c66                                                         |     goto label_3;
                                                                                 | label_8:
    0x00011c7c ldr.w r3, [r5, 0x128]                                             |     r3 = *((r5 + 0x128));
    0x00011c80 str r3, [r6]                                                      |     *(r6) = r3;
    0x00011c82 b 0x11bd0                                                         |     goto label_2;
                                                                                 | label_7:
    0x00011c84 mov.w r8, 0                                                       |     r8 = 0;
    0x00011c88 b 0x11bd0                                                         |     goto label_2;
                                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x11c98 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00011c98 ()                                      | void fcn_00011c98 (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_bp_0h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     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_2ch;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_0h_2;
                                                                 |     int32_t var_38h;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_70h;
                                                                 |     int16_t var_4h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00011c98 push {r2, r3}                                     |     
    0x00011c9a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00011c9e sub sp, 0x4c                                      |     
    0x00011ca0 add r2, sp, 0x70                                  |     r2 += var_70h;
    0x00011ca2 movs r6, 0                                        |     r6 = 0;
    0x00011ca4 mov.w sb, 0x100000                                |     sb = 0x100000;
    0x00011ca8 mov r5, r6                                        |     r5 = r6;
    0x00011caa strd r0, r1, [sp, 0x14]                           |     __asm ("strd r0, r1, [var_18h]");
    0x00011cae mov fp, r6                                        |     
    0x00011cb0 ldr r1, [pc, 0x2b4]                               |     
    0x00011cb2 mov r8, r6                                        |     r8 = r6;
    0x00011cb4 ldr r3, [pc, 0x2b4]                               |     r3 = *(0x11f6c);
    0x00011cb6 mov r4, r6                                        |     r4 = r6;
    0x00011cb8 ldr r7, [r2], 4                                   |     r7 = *(r2);
                                                                 |     r2 += 4;
    0x00011cbc add r1, pc                                        |     r1 = 0x23c28;
    0x00011cbe ldr.w sl, [pc, 0x2b0]                             |     
    0x00011cc2 ldr r3, [r1, r3]                                  |     
    0x00011cc4 add sl, pc                                        |     sl = 0x23c3a;
    0x00011cc6 ldr r3, [r3]                                      |     r3 = *(0x23c28);
    0x00011cc8 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00011cca mov.w r3, 0                                       |     r3 = 0;
    0x00011cce strd r6, r6, [sp, 0x38]                           |     __asm ("strd r6, r6, [var_bp_0h]");
    0x00011cd2 strh.w r6, [sp, 0x40]                             |     var_40h = r6;
    0x00011cd6 str r2, [sp, 0x34]                                |     var_34h = r2;
    0x00011cd8 str r6, [sp, 0x10]                                |     var_10h = r6;
                                                                 |     do {
                                                                 | label_0:
    0x00011cda ldrb r3, [r7], 1                                  |         r3 = *(r7);
                                                                 |         r7++;
    0x00011cde cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00011ce0 beq.w 0x11f4e                                     |             goto label_11;
                                                                 |         }
    0x00011ce4 cmp r3, 0x49                                      |         
                                                                 |         if (r3 != 0x49) {
    0x00011ce6 bne 0x11d26                                       |             goto label_12;
                                                                 |         }
    0x00011ce8 cmp r6, 0                                         |         
    0x00011cea bne 0x11cda                                       |         
                                                                 |     } while (r6 != 0);
    0x00011cec ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00011cee ldr r4, [r3]                                      |     r4 = *(r3);
    0x00011cf0 adds r2, r3, 4                                    |     r2 = r3 + 4;
    0x00011cf2 str r2, [sp, 0x34]                                |     var_34h = r2;
    0x00011cf4 ldrd r5, fp, [r4, 0x1a8]                          |     __asm ("ldrd r5, fp, aav.0x0000000c");
    0x00011cf8 cmp.w fp, 0                                       |     
    0x00011cfc itt lt                                            |     
                                                                 |     if (fp >= 0) {
    0x00011cfe movlt r5, sb                                      |         r5 = sb;
                                                                 |     }
                                                                 |     if (fp >= 0) {
    0x00011d00 movlt fp, r6                                      |         
                                                                 |     }
    0x00011d02 cmp.w r5, 0x100000                                |     
    0x00011d06 sbcs r3, fp, 0                                    |     __asm ("sbcs r3, var_bp_0h");
    0x00011d0a it lt                                             |     
                                                                 |     if (r5 >= 0x100000) {
    0x00011d0c movlt sb, r5                                      |         sb = r5;
                                                                 |     }
    0x00011d0e add.w r0, sb, 0x14                                |     r0 = sb + 0x14;
    0x00011d12 blx 0x8e30                                        |     vfprintf_chk ()
    0x00011d16 str r0, [sp, 0x10]                                |     var_10h = r0;
    0x00011d18 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00011d1a beq.w 0x11f52                                     |         goto label_13;
                                                                 |     }
    0x00011d1e add.w r8, r0, 0xa                                 |     r8 = r0 + 0xa;
    0x00011d22 movs r6, 1                                        |     r6 = 1;
    0x00011d24 b 0x11cda                                         |     goto label_0;
                                                                 | label_12:
    0x00011d26 cmp r3, 0x66                                      |     
                                                                 |     if (r3 != 0x66) {
    0x00011d28 bne.w 0x11f24                                     |         goto label_14;
                                                                 |     }
    0x00011d2c ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00011d2e adds r2, r3, 4                                    |     r2 = r3 + 4;
    0x00011d30 ldr r0, [r3]                                      |     r0 = *(r3);
    0x00011d32 str r2, [sp, 0x34]                                |     var_34h = r2;
                                                                 |     if (r4 == 0) {
    0x00011d34 cbz r4, 0x11d54                                   |         goto label_15;
                                                                 |     }
    0x00011d36 ldr r3, [r4]                                      |     r3 = *(r4);
                                                                 |     if (r3 == 0) {
    0x00011d38 cbz r3, 0x11d54                                   |         goto label_15;
                                                                 |     }
    0x00011d3a ldr r3, [pc, 0x238]                               |     r3 = *(0x11f76);
    0x00011d3c movs r1, 0                                        |     r1 = 0;
    0x00011d3e ldr.w r3, [sl, r3]                                |     r3 = *((sl + r3));
    0x00011d42 ldr r6, [r3, 4]                                   |     r6 = *(0x11f7a);
    0x00011d44 ldrd r2, r3, [r4, 0x1b4]                          |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x00011d48 blx r6                                            |     r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
    0x00011d4a mov r7, r0                                        |     r7 = r0;
                                                                 |     if (r0 != 0) {
    0x00011d4c cbnz r0, 0x11d66                                  |         goto label_16;
                                                                 |     }
                                                                 |     do {
    0x00011d4e mvn r5, 0x1f6                                     |         r5 = ~0x1f6;
    0x00011d52 b 0x11db0                                         |         goto label_7;
                                                                 | label_15:
    0x00011d54 ldr r1, [pc, 0x220]                               |         
    0x00011d56 add r1, pc                                        |         r1 = 0x23cd2;
    0x00011d58 blx 0x9420                                        |         r0 = fcn_00009420 ();
    0x00011d5c mov r7, r0                                        |         r7 = r0;
    0x00011d5e cmp r0, 0                                         |         
    0x00011d60 beq 0x11d4e                                       |         
                                                                 |     } while (r0 == 0);
    0x00011d62 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00011d64 beq 0x11dd0                                       |         goto label_17;
                                                                 |     }
                                                                 | label_16:
    0x00011d66 ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x00011d68 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00011d6a beq 0x11dd0                                       |         goto label_17;
                                                                 |     }
    0x00011d6c ldr r3, [r4]                                      |     r3 = *(r4);
    0x00011d6e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00011d70 beq 0x11e4a                                       |         goto label_18;
                                                                 |     }
    0x00011d72 ldr.w r2, [r4, 0x1b8]                             |     r2 = *((r4 + 0x1b8));
    0x00011d76 mov r0, r7                                        |     r0 = r7;
    0x00011d78 ldr r3, [pc, 0x1f8]                               |     r3 = *(0x11f74);
    0x00011d7a ldr.w r3, [sl, r3]                                |     r3 = *((sl + r3));
    0x00011d7e str r2, [sp, 8]                                   |     var_8h = r2;
    0x00011d80 ldr.w r2, [r4, 0x1b4]                             |     r2 = *((r4 + 0x1b4));
    0x00011d84 str r2, [sp, 4]                                   |     var_4h = r2;
    0x00011d86 movs r2, 1                                        |     r2 = 1;
    0x00011d88 str r2, [sp]                                      |     *(sp) = r2;
    0x00011d8a ldr r1, [r3, 0x10]                                |     r1 = *(0x11f84);
    0x00011d8c ldrd r2, r3, [r4, 0x1a0]                          |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x00011d90 blx r1                                            |     r0 = uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                 | label_2:
    0x00011d92 cbz r0, 0x11dd0                                   |     
                                                                 |     while (r3 == 0) {
    0x00011d94 mvn r5, 0x1f6                                     |         r5 = ~0x1f6;
                                                                 | label_1:
    0x00011d98 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00011d9a cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00011d9c beq.w 0x11f0c                                     |             goto label_10;
                                                                 |         }
    0x00011da0 ldr r3, [pc, 0x1d0]                               |         
    0x00011da2 mov r0, r7                                        |         r0 = r7;
    0x00011da4 ldrd r1, r2, [r4, 0x1b4]                          |         __asm ("ldrd r1, r2, aav.0x000000ff");
    0x00011da8 ldr.w r3, [sl, r3]                                |         r3 = *((sl + r3));
    0x00011dac ldr r3, [r3, 0x14]                                |         r3 = *(0x11f88);
    0x00011dae blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_7:
    0x00011db0 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x00011db2 blx 0x894c                                        |         fcn_0000894c ();
    0x00011db6 ldr r2, [pc, 0x1c4]                               |         
    0x00011db8 ldr r3, [pc, 0x1b0]                               |         r3 = *(0x11f6c);
    0x00011dba add r2, pc                                        |         r2 = 0x23d3c;
    0x00011dbc ldr r3, [r2, r3]                                  |         r3 = *(0x23d3c);
    0x00011dbe ldr r2, [r3]                                      |         r2 = *(0x23d3c);
    0x00011dc0 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x00011dc2 eors r2, r3                                       |         r2 ^= r3;
    0x00011dc4 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x00011dc8 beq.w 0x11f58                                     |             goto label_19;
                                                                 |         }
    0x00011dcc blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 | label_17:
    0x00011dd0 ldr r3, [pc, 0x1ac]                               |         
    0x00011dd2 add r3, pc                                        |         r3 = 0x23d56;
    0x00011dd4 str r3, [sp, 0x24]                                |         var_24h = r3;
    0x00011dd6 ldr r3, [pc, 0x1ac]                               |         
    0x00011dd8 add r3, pc                                        |         r3 = 0x23d62;
    0x00011dda str r3, [sp, 0x28]                                |         var_28h = r3;
                                                                 | label_5:
    0x00011ddc orrs.w r3, r5, fp                                 |         r3 = r5 | fp;
                                                                 |         if (r3 == r5) {
    0x00011de0 beq.w 0x11f06                                     |             goto label_9;
                                                                 |         }
    0x00011de4 cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x00011de6 beq 0x11e66                                       |             goto label_20;
                                                                 |         }
    0x00011de8 movs r3, 0                                        |         r3 = 0;
    0x00011dea cmp r5, sb                                        |         
    0x00011dec str r3, [sp, 0x20]                                |         var_20h = r3;
    0x00011dee sbcs r3, fp, 0                                    |         __asm ("sbcs r3, var_bp_0h");
    0x00011df2 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00011df4 ite lt                                            |         
                                                                 |         if (r5 >= sb) {
    0x00011df6 movlt r2, r5                                      |             r2 = r5;
                                                                 |         }
                                                                 |         if (r5 < sb) {
    0x00011df8 movge r2, sb                                      |             r2 = sb;
                                                                 |         }
    0x00011dfa str.w sb, [sp, 0x1c]                              |         __asm ("str.w sb, [var_1ch]");
                                                                 |         if (r3 == 0) {
    0x00011dfe cbz r3, 0x11e5a                                   |             goto label_21;
                                                                 |         }
    0x00011e00 ldr r3, [pc, 0x170]                               |         r3 = *(0x11f74);
    0x00011e02 mov r0, r7                                        |         r0 = r7;
    0x00011e04 ldr.w r1, [r4, 0x1b8]                             |         r1 = *((r4 + 0x1b8));
    0x00011e08 ldr.w r3, [sl, r3]                                |         r3 = *((sl + r3));
    0x00011e0c str r1, [sp]                                      |         *(sp) = r1;
    0x00011e0e mov r1, r8                                        |         r1 = r8;
    0x00011e10 ldr r6, [r3, 8]                                   |         r6 = *(0x11f7c);
    0x00011e12 ldr.w r3, [r4, 0x1b4]                             |         r3 = *((r4 + 0x1b4));
    0x00011e16 blx r6                                            |         uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_3:
    0x00011e18 ldr.w r3, [r4, 0x1ac]                             |         r3 = *((r4 + 0x1ac));
    0x00011e1c mov r6, r0                                        |         r6 = r0;
    0x00011e1e cmp r3, 0                                         |         
                                                                 |         if (r3 >= 0) {
    0x00011e20 blt 0x11e2c                                       |             
    0x00011e22 subs r3, r5, r0                                   |             r3 = r5 - r0;
    0x00011e24 str r3, [sp, 0x1c]                                |             var_1ch = r3;
    0x00011e26 sbc r3, fp, 0                                     |             __asm ("sbc r3, var_bp_0h");
    0x00011e2a str r3, [sp, 0x20]                                |             var_20h = r3;
                                                                 |         }
                                                                 |         if (r6 != 0) {
                                                                 | label_4:
    0x00011e2c cbnz r6, 0x11e7a                                  |             goto label_22;
                                                                 |         }
    0x00011e2e cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x00011e30 beq 0x11f1e                                       |             goto label_23;
                                                                 |         }
    0x00011e32 ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x00011e34 cmp r3, 0                                         |         
    0x00011e36 beq 0x11d94                                       |         
                                                                 |     }
    0x00011e38 ldr r1, [pc, 0x14c]                               |     
    0x00011e3a movs r2, 5                                        |     r2 = 5;
    0x00011e3c ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00011e3e ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00011e40 add r1, pc                                        |     r1 = 0x23dcc;
    0x00011e42 bl 0x1079e                                        |     fcn_0001079e (r0, r1, r2, r3);
                                                                 | label_6:
    0x00011e46 movs r5, 0                                        |     r5 = 0;
    0x00011e48 b 0x11d98                                         |     goto label_1;
                                                                 | label_18:
    0x00011e4a movs r3, 1                                        |     r3 = 1;
    0x00011e4c mov r0, r7                                        |     r0 = r7;
    0x00011e4e str r3, [sp]                                      |     *(sp) = r3;
    0x00011e50 ldrd r2, r3, [r4, 0x1a0]                          |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x00011e54 blx 0x929c                                        |     fcn_0000929c ();
    0x00011e58 b 0x11d92                                         |     goto label_2;
                                                                 | label_21:
    0x00011e5a mov r3, r7                                        |     r3 = r7;
    0x00011e5c movs r1, 1                                        |     r1 = 1;
    0x00011e5e mov r0, r8                                        |     r0 = r8;
    0x00011e60 blx 0x8d8c                                        |     fcn_00008d8c ();
    0x00011e64 b 0x11e18                                         |     goto label_3;
                                                                 | label_20:
    0x00011e66 mov r3, r7                                        |     r3 = r7;
    0x00011e68 mov r2, sb                                        |     r2 = sb;
    0x00011e6a movs r1, 1                                        |     r1 = 1;
    0x00011e6c mov r0, r8                                        |     r0 = r8;
    0x00011e6e blx 0x8d8c                                        |     fcn_00008d8c ();
    0x00011e72 strd r5, fp, [sp, 0x1c]                           |     __asm ("strd r5, fp, [var_0hx1c]");
    0x00011e76 mov r6, r0                                        |     r6 = r0;
    0x00011e78 b 0x11e2c                                         |     goto label_4;
                                                                 | label_22:
    0x00011e7a cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00011e7c beq 0x11ef6                                       |         goto label_24;
                                                                 |     }
    0x00011e7e ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x00011e80 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00011e82 beq 0x11ef6                                       |         goto label_24;
                                                                 |     }
    0x00011e84 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00011e86 add.w fp, sp, 0x38                                |     
    0x00011e8a movs r5, 0                                        |     r5 = 0;
    0x00011e8c movs r2, 1                                        |     r2 = 1;
    0x00011e8e mov r0, fp                                        |     r0 = fp;
    0x00011e90 strd r5, r5, [sp, 0x38]                           |     __asm ("strd r5, r5, [var_bp_0h]");
    0x00011e94 ldrh r3, [r3]                                     |     r3 = *(r3);
    0x00011e96 strh.w r5, [sp, 0x40]                             |     var_40h = r5;
    0x00011e9a strh.w r3, [r8, r6]                               |     *((r8 + r6)) = r3;
    0x00011e9e ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00011ea0 str r6, [sp, 4]                                   |     var_4h = r6;
    0x00011ea2 str r3, [sp]                                      |     *(sp) = r3;
    0x00011ea4 movs r3, 0xa                                      |     r3 = 0xa;
    0x00011ea6 mov r1, r3                                        |     r1 = r3;
    0x00011ea8 blx 0x96fc                                        |     r0 = fcn_000096fc ();
    0x00011eac cmp r0, 0xa                                       |     
                                                                 |     if (r0 == 0xa) {
    0x00011eae beq 0x11f1a                                       |         goto label_25;
                                                                 |     }
    0x00011eb0 mov r0, fp                                        |     r0 = fp;
    0x00011eb2 adds r6, 2                                        |     r6 += 2;
    0x00011eb4 blx 0x8f9c                                        |     fcn_00008f9c ();
    0x00011eb8 mov r1, fp                                        |     r1 = fp;
    0x00011eba mov r2, r0                                        |     r2 = r0;
    0x00011ebc sub.w r0, r8, r0                                  |     r0 = r8 - r0;
    0x00011ec0 blx 0x8a14                                        |     fcn_00008a14 ();
    0x00011ec4 mov r0, fp                                        |     r0 = fp;
    0x00011ec6 blx 0x8f9c                                        |     fcn_00008f9c ();
    0x00011eca ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00011ecc adds r2, r6, r0                                   |     r2 = r6 + r0;
    0x00011ece sub.w r1, r8, r0                                  |     r1 = r8 - r0;
    0x00011ed2 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00011ed4 bl 0x1079e                                        |     r0 = fcn_0001079e (r0, r1, r2, r3);
    0x00011ed8 subs r3, r0, 0                                    |     r3 = r0 - 0;
    0x00011eda str r3, [sp, 0x2c]                                |     var_2ch = r3;
                                                                 |     if (r3 <= r0) {
    0x00011edc ble.w 0x11d98                                     |         goto label_1;
                                                                 |     }
    0x00011ee0 mov r0, fp                                        |     r0 = fp;
    0x00011ee2 blx 0x8f9c                                        |     fcn_00008f9c ();
    0x00011ee6 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00011ee8 add r6, r0                                        |     r6 += r0;
    0x00011eea cmp r6, r3                                        |     
                                                                 |     if (r6 != r3) {
    0x00011eec bne.w 0x11d98                                     |         goto label_1;
                                                                 |     }
                                                                 | label_8:
    0x00011ef0 ldrd r5, fp, [sp, 0x1c]                           |     __asm ("ldrd r5, fp, [var_1ch]");
    0x00011ef4 b 0x11ddc                                         |     goto label_5;
                                                                 | label_24:
    0x00011ef6 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00011ef8 mov r2, r6                                        |     r2 = r6;
    0x00011efa ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00011efc mov r1, r8                                        |     r1 = r8;
    0x00011efe bl 0x1079e                                        |     r0 = fcn_0001079e (r0, r1, r2, r3);
    0x00011f02 cmp r0, 0                                         |     
                                                                 |     if (r0 > 0) {
    0x00011f04 bgt 0x11f14                                       |         goto label_26;
                                                                 |     }
                                                                 | label_9:
    0x00011f06 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x00011f08 bne 0x11e46                                       |         goto label_6;
                                                                 |     }
    0x00011f0a mov r5, r4                                        |     r5 = r4;
                                                                 | label_10:
    0x00011f0c mov r0, r7                                        |     r0 = r7;
    0x00011f0e blx 0x926c                                        |     fcn_0000926c ();
    0x00011f12 b 0x11db0                                         |     goto label_7;
                                                                 | label_26:
    0x00011f14 cmp r6, r0                                        |     
                                                                 |     if (r6 == r0) {
    0x00011f16 beq 0x11ef0                                       |         goto label_8;
                                                                 |     }
    0x00011f18 b 0x11f06                                         |     goto label_9;
                                                                 | label_25:
    0x00011f1a ldr r5, [pc, 0x48]                                |     r5 = *(0x11f66);
    0x00011f1c b 0x11d98                                         |     goto label_1;
                                                                 | label_23:
    0x00011f1e mvn r5, 0x1f6                                     |     r5 = ~0x1f6;
    0x00011f22 b 0x11f0c                                         |     goto label_10;
                                                                 | label_14:
    0x00011f24 cmp r3, 0x62                                      |     
                                                                 |     if (r3 != 0x62) {
    0x00011f26 bne.w 0x11cda                                     |         goto label_0;
                                                                 |     }
    0x00011f2a ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x00011f2c mov r3, r2                                        |     r3 = r2;
    0x00011f2e ldr r2, [r2, 4]                                   |     r2 = *((r2 + 4));
    0x00011f30 ldr r1, [r3], 8                                   |     r1 = *(r3);
                                                                 |     r3 += 8;
    0x00011f34 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00011f36 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00011f38 beq.w 0x11cda                                     |         goto label_0;
                                                                 |     }
    0x00011f3c ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00011f3e ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00011f40 str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x00011f42 bl 0x1079e                                        |     fcn_0001079e (r0, r1, r2, r3);
    0x00011f46 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00011f48 cmp r2, r0                                        |     
                                                                 |     if (r2 == r0) {
    0x00011f4a beq.w 0x11cda                                     |         goto label_0;
                                                                 |     }
                                                                 | label_11:
    0x00011f4e movs r5, 0                                        |     r5 = 0;
    0x00011f50 b 0x11db0                                         |     goto label_7;
                                                                 | label_13:
    0x00011f52 mvn r5, 0x67                                      |     r5 = ~0x67;
    0x00011f56 b 0x11db0                                         |     goto label_7;
                                                                 | label_19:
    0x00011f58 mov r0, r5                                        |     r0 = r5;
    0x00011f5a add sp, 0x4c                                      |     
    0x00011f5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x00011f5e ldr r7, [pc, 0x3c0]                               |     r7 = *(0x12322);
    0x00011f60 add sp, 8                                         |     
    0x00011f62 bx lr                                             |     return;
                                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x120a2 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000120a2 ()                  | void fcn_000120a2 (uint32_t arg1, uint32_t arg2) {
                                             |     int16_t var_4h;
                                             |     int16_t var_2ch;
                                             |     int16_t var_ach;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x000120a2 ldr r2, [pc, 0xd0]            |     
    0x000120a4 ldr r3, [pc, 0xd0]            |     r3 = *(0x12178);
    0x000120a6 push {r4, r5, r6, lr}         |     
    0x000120a8 sub sp, 0xb0                  |     
    0x000120aa add r2, pc                    |     r2 = 0x24224;
    0x000120ac mov r6, r1                    |     r6 = r1;
    0x000120ae mov r4, r0                    |     r4 = r0;
    0x000120b0 ldr r3, [r2, r3]              |     
    0x000120b2 ldr r3, [r3]                  |     r3 = *(0x24224);
    0x000120b4 str r3, [sp, 0xac]            |     var_ach = r3;
    0x000120b6 mov.w r3, 0                   |     r3 = 0;
    0x000120ba cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x000120bc beq 0x12160                   |         goto label_1;
                                             |     }
    0x000120be cmp r1, 0                     |     
                                             |     if (r1 == 0) {
    0x000120c0 beq 0x12160                   |         goto label_1;
                                             |     }
    0x000120c2 movs r3, 0                    |     r3 = 0;
    0x000120c4 str r3, [r1]                  |     *(r1) = r3;
    0x000120c6 blx 0x8f9c                    |     fcn_00008f9c ();
    0x000120ca add r2, sp, 4                 |     r2 += var_4h;
    0x000120cc mov r1, r0                    |     r1 = r0;
    0x000120ce mov r0, r4                    |     r0 = r4;
    0x000120d0 bl 0x11ab4                    |     r0 = fcn_00011ab4 (r0, r1, r2);
    0x000120d2 ldc2l p6, c4, [r0], 0x10      |     __asm ("ldc2l p6, c4, [r0], 0x10");
    0x000120d6 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x000120d8 bne 0x12148                   |         goto label_0;
                                             |     }
    0x000120da mov.w r0, 0x1e0               |     r0 = 0x1e0;
    0x000120de blx 0x8e30                    |     r0 = vfprintf_chk ()
    0x000120e2 mov r5, r0                    |     r5 = r0;
    0x000120e4 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x000120e6 beq 0x12166                   |         goto label_2;
                                             |     }
    0x000120e8 mov.w r2, 0x150               |     r2 = 0x150;
    0x000120ec mov r1, r4                    |     r1 = r4;
    0x000120ee str.w r4, [r0, 0x1d8]         |     __asm ("str.w r4, aav.0x000000ff");
    0x000120f2 adds r0, 0x88                 |     r0 += 0x88;
    0x000120f4 blx 0x9144                    |     fcn_00009144 ();
    0x000120f8 mov r2, r4                    |     r2 = r4;
    0x000120fa movs r1, 1                    |     r1 = 1;
    0x000120fc ldrh.w r0, [sp, 0x2c]         |     r0 = var_2ch;
    0x00012100 blx 0x9528                    |     r0 = fcn_00009528 ();
    0x00012104 adds r2, r0, 1                |     r2 = r0 + 1;
    0x00012106 mov r1, r0                    |     r1 = r0;
                                             |     if (r2 != r0) {
    0x00012108 beq 0x1211a                   |         
    0x0001210a mov r0, r5                    |         r0 = r5;
    0x0001210c bl 0x106e0                    |         r0 = fcn_000106e0 (r0, r1);
                                             |         if (r0 == 0) {
    0x00012110 cbz r0, 0x12120               |             goto label_3;
                                             |         }
    0x00012112 movs r1, 2                    |         r1 = 2;
    0x00012114 mov r0, r5                    |         r0 = r5;
    0x00012116 bl 0x10712                    |         fcn_00010712 (r0);
    0x00012118 invalid                       |         
                                             |     }
    0x0001211a mvn r4, 0xcf                  |     r4 = ~0xcf;
    0x0001211e b 0x12146                     |     goto label_4;
                                             | label_3:
    0x00012120 ldrh.w r3, [sp, 0x2c]         |     r3 = var_2ch;
    0x00012124 add r1, sp, 0x2c              |     r1 += var_2ch;
    0x00012126 ldr r0, [r5]                  |     r0 = *(r5);
    0x00012128 cmp r3, 0xa                   |     
    0x0001212a ite eq                        |     
                                             |     if (r3 != 0xa) {
    0x0001212c moveq r2, 0x1c                |         r2 = 0x1c;
                                             |     }
                                             |     if (r3 == 0xa) {
    0x0001212e movne r2, 0x10                |         r2 = 0x10;
                                             |     }
    0x00012130 blx 0x96c0                    |     r0 = fcn_000096c0 ();
    0x00012134 adds r3, r0, 1                |     r3 = r0 + 1;
    0x00012136 mov r4, r0                    |     r4 = r0;
                                             |     if (r3 == r0) {
    0x00012138 bne 0x12146                   |         
    0x0001213a mvn r4, 0xcb                  |         r4 = ~0xcb;
    0x0001213e movs r1, 2                    |         r1 = 2;
    0x00012140 mov r0, r5                    |         r0 = r5;
    0x00012142 bl 0x10712                    |         fcn_00010712 (r0);
                                             |     }
                                             | label_4:
    0x00012146 str r5, [r6]                  |     *(r6) = r5;
                                             |     do {
                                             | label_0:
    0x00012148 ldr r2, [pc, 0x30]            |         
    0x0001214a ldr r3, [pc, 0x2c]            |         r3 = *(0x1217a);
    0x0001214c add r2, pc                    |         r2 = 0x242cc;
    0x0001214e ldr r3, [r2, r3]              |         r3 = *(0x242cc);
    0x00012150 ldr r2, [r3]                  |         r2 = *(0x242cc);
    0x00012152 ldr r3, [sp, 0xac]            |         r3 = var_ach;
    0x00012154 eors r2, r3                   |         r2 ^= r3;
    0x00012156 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 == r3) {
    0x0001215a beq 0x1216c                   |             goto label_5;
                                             |         }
    0x0001215c blx 0x8b7c                    |         fcn_00008b7c ();
                                             | label_1:
    0x00012160 mvn r4, 0x64                  |         r4 = ~0x64;
    0x00012164 b 0x12148                     |         
                                             |     } while (1);
                                             | label_2:
    0x00012166 mvn r4, 0x67                  |     r4 = ~0x67;
    0x0001216a b 0x12148                     |     goto label_0;
                                             | label_5:
    0x0001216c mov r0, r4                    |     r0 = r4;
    0x0001216e add sp, 0xb0                  |     
    0x00012170 pop {r4, r5, r6, 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/libupnp.so.17.1.8 @ 0x1331c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0001331c ()                                      | void fcn_0001331c (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_70h;
                                                                 |     int32_t var_70h_2;
                                                                 |     int16_t var_90h;
                                                                 |     int16_t var_a8h;
                                                                 |     int16_t var_c4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0001331c ldr r2, [pc, 0x1a0]                               |     
    0x0001331e ldr r3, [pc, 0x1a4]                               |     r3 = *(0x134c6);
    0x00013320 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00013324 mov r4, r1                                        |     r4 = r1;
    0x00013326 add r2, pc                                        |     r2 = 0x267ea;
    0x00013328 sub sp, 0xcc                                      |     
    0x0001332a mov r6, r0                                        |     r6 = r0;
    0x0001332c movs r1, 0                                        |     r1 = 0;
    0x0001332e ldr r3, [r2, r3]                                  |     
    0x00013330 mov r0, r4                                        |     r0 = r4;
    0x00013332 ldr r3, [r3]                                      |     r3 = *(0x267ea);
    0x00013334 str r3, [sp, 0xc4]                                |     var_c4h = r3;
    0x00013336 mov.w r3, 0                                       |     r3 = 0;
    0x0001333a blx 0x8c64                                        |     fcn_00008c64 ();
    0x0001333e ldr r1, [pc, 0x188]                               |     
    0x00013340 mov r0, r6                                        |     r0 = r6;
    0x00013342 add r1, pc                                        |     r1 = 0x26810;
    0x00013344 blx 0x9420                                        |     r0 = fcn_00009420 ();
    0x00013348 subs r1, r0, 0                                    |     r1 = r0 - 0;
    0x0001334a mov r5, r0                                        |     r5 = r0;
    0x0001334c it ne                                             |     
                                                                 |     if (r1 == r0) {
    0x0001334e movne r1, 1                                       |         r1 = 1;
                                                                 |     }
    0x00013350 mov r0, r4                                        |     r0 = r4;
    0x00013352 blx 0x87f0                                        |     fcn_000087f0 ();
                                                                 |     if (r5 == 0) {
    0x00013356 cbnz r5, 0x1335e                                  |         
                                                                 | label_0:
    0x00013358 mov.w r5, -1                                      |         r5 = -1;
    0x0001335c b 0x1346e                                         |         goto label_5;
                                                                 |     }
    0x0001335e mov r0, r5                                        |     r0 = r5;
    0x00013360 blx 0x91dc                                        |     r0 = fcn_000091dc ();
    0x00013364 adds r3, r0, 1                                    |     r3 = r0 + 1;
                                                                 |     if (r3 == r0) {
    0x00013366 beq.w 0x134ae                                     |         goto label_6;
                                                                 |     }
    0x0001336a add r1, sp, 0x40                                  |     r1 += var_40h;
    0x0001336c blx 0x9540                                        |     fcn_00009540 ();
    0x00013370 adds r0, 1                                        |     r0++;
                                                                 |     if (r0 == 1) {
    0x00013372 beq.w 0x134ae                                     |         goto label_6;
                                                                 |     }
    0x00013376 mov r0, r5                                        |     r0 = r5;
    0x00013378 blx 0x926c                                        |     fcn_0000926c ();
    0x0001337c ldr r3, [sp, 0x50]                                |     r3 = var_50h;
    0x0001337e and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00013382 cmp.w r3, 0x4000                                  |     
                                                                 |     if (r3 != 0x4000) {
    0x00013386 bne 0x133f2                                       |         goto label_7;
                                                                 |     }
    0x00013388 movs r1, 1                                        |     r1 = 1;
                                                                 | label_1:
    0x0001338a mov r0, r4                                        |     r0 = r4;
    0x0001338c blx 0x9414                                        |     fcn_00009414 ();
    0x00013390 ldrd r2, r3, [sp, 0x70]                           |     __asm ("ldrd r2, r3, [var_70h]");
    0x00013394 mov r0, r4                                        |     r0 = r4;
    0x00013396 blx 0x8f14                                        |     fcn_00008f14 ();
    0x0001339a ldr r1, [sp, 0x90]                                |     r1 = var_90h;
    0x0001339c mov r0, r4                                        |     r0 = r4;
    0x0001339e blx 0x9534                                        |     fcn_00009534 ();
    0x000133a2 movs r1, 0                                        |     r1 = 0;
    0x000133a4 mov r0, r4                                        |     r0 = r4;
    0x000133a6 blx 0x8c64                                        |     fcn_00008c64 ();
    0x000133aa movs r1, 0x2e                                     |     r1 = 0x2e;
    0x000133ac mov r0, r6                                        |     r0 = r6;
    0x000133ae blx 0x9354                                        |     r0 = fcn_00009354 ();
    0x000133b2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000133b4 beq 0x13486                                       |         goto label_8;
                                                                 |     }
    0x000133b6 ldr.w sl, [pc, 0x114]                             |     
    0x000133ba adds r5, r0, 1                                    |     r5 = r0 + 1;
    0x000133bc mov.w r8, 0x45                                    |     r8 = 0x45;
    0x000133c0 movs r7, 0                                        |     r7 = 0;
    0x000133c2 mov.w fp, 0xc                                     |     
    0x000133c6 add sl, pc                                        |     sl = 0x26898;
                                                                 |     do {
    0x000133c8 add.w r6, r7, r8                                  |         r6 = r7 + r8;
    0x000133cc mov r0, r5                                        |         r0 = r5;
    0x000133ce asrs r6, r6, 1                                    |         r6 >>= 1;
    0x000133d0 mla sb, fp, r6, sl                                |         __asm ("mla sb, fp, r6, sl");
    0x000133d4 ldr.w r1, [sb, 0x18]                              |         r1 = *((sb + 0x18));
    0x000133d8 blx 0x8c04                                        |         r0 = fcn_00008c04 ();
    0x000133dc cmp r0, 0                                         |         
                                                                 |         if (r0 <= 0) {
    0x000133de ble 0x133fc                                       |             goto label_9;
                                                                 |         }
    0x000133e0 adds r7, r6, 1                                    |         r7 = r6 + 1;
                                                                 | label_2:
    0x000133e2 cmp r8, r7                                        |         
    0x000133e4 bge 0x133c8                                       |         
                                                                 |     } while (r8 >= r7);
    0x000133e6 ldr.w r8, [pc, 0xe8]                              |     
    0x000133ea ldr r7, [pc, 0xe8]                                |     
    0x000133ec add r8, pc                                        |     r8 = 0x268c2;
    0x000133ee add r7, pc                                        |     r7 = 0x268c8;
    0x000133f0 b 0x13408                                         |     goto label_10;
                                                                 | label_7:
    0x000133f2 cmp.w r3, 0x8000                                  |     
                                                                 |     if (r3 != 0x8000) {
    0x000133f6 bne 0x13358                                       |         goto label_0;
                                                                 |     }
    0x000133f8 movs r1, 0                                        |     r1 = 0;
    0x000133fa b 0x1338a                                         |     goto label_1;
                                                                 |     if (r1 != 0) {
                                                                 | label_9:
    0x000133fc beq 0x13404                                       |         
    0x000133fe add.w r8, r6, -1                                  |         r8 = r6 + -1;
    0x00013402 b 0x133e2                                         |         goto label_2;
                                                                 |     }
    0x00013404 ldrd r7, r8, [sb, 0x1c]                           |     __asm ("ldrd r7, r8, [sb, 0x1c]");
                                                                 |     do {
                                                                 | label_10:
    0x00013408 mov r0, r7                                        |         r0 = r7;
    0x0001340a blx 0x8f9c                                        |         r0 = fcn_00008f9c ();
    0x0001340e mov r5, r0                                        |         r5 = r0;
    0x00013410 mov r0, r8                                        |         r0 = r8;
    0x00013412 blx 0x8f9c                                        |         r0 = fcn_00008f9c ();
    0x00013416 add r5, r0                                        |         r5 += r0;
    0x00013418 adds r5, 2                                        |         r5 += 2;
    0x0001341a mov r0, r5                                        |         r0 = r5;
    0x0001341c blx 0x8e30                                        |         r0 = vfprintf_chk ()
    0x00013420 mov r6, r0                                        |         r6 = r0;
                                                                 |         if (r0 != 0) {
    0x00013422 cbz r0, 0x13448                                   |             
    0x00013424 ldr r3, [pc, 0xb0]                                |             
    0x00013426 movs r2, 1                                        |             r2 = 1;
    0x00013428 mov r1, r5                                        |             r1 = r5;
    0x0001342a strd r7, r8, [sp, 4]                              |             __asm ("strd r7, r8, [var_4h]");
    0x0001342e add r3, pc                                        |             r3 = 0x2690a;
    0x00013430 str r3, [sp]                                      |             *(sp) = r3;
    0x00013432 mov.w r3, -1                                      |             r3 = -1;
    0x00013436 blx 0x96fc                                        |             r0 = fcn_000096fc ();
    0x0001343a cmp r0, 0                                         |             
                                                                 |             if (r0 >= 0) {
    0x0001343c blt 0x13442                                       |                 
    0x0001343e cmp r5, r0                                        |                 
                                                                 |                 if (r5 > r0) {
    0x00013440 bhi 0x13492                                       |                     goto label_11;
                                                                 |                 }
                                                                 |             }
    0x00013442 mov r0, r6                                        |             r0 = r6;
    0x00013444 blx 0x894c                                        |             fcn_0000894c ();
                                                                 |         }
                                                                 | label_3:
    0x00013448 mvn r5, 0x67                                      |         r5 = ~0x67;
                                                                 | label_4:
    0x0001344c mov r0, r4                                        |         r0 = r4;
    0x0001344e blx 0x8b24                                        |         ixmlNode_appendChild ();
    0x00013452 str r0, [sp, 0x10]                                |         var_10h = r0;
    0x00013454 mov r0, r4                                        |         r0 = r4;
    0x00013456 blx 0x900c                                        |         fcn_0000900c ();
    0x0001345a add r1, sp, 0x14                                  |         r1 += var_14h;
    0x0001345c add r0, sp, 0x10                                  |         r0 += var_10h;
    0x0001345e blx 0x8768                                        |         fcn_00008768 ();
    0x00013462 add r1, sp, 0xa8                                  |         r1 += var_a8h;
    0x00013464 blx 0x91e8                                        |         fcn_000091e8 ();
    0x00013468 mov r0, r4                                        |         r0 = r4;
    0x0001346a blx 0x87a8                                        |         fcn_000087a8 ();
                                                                 | label_5:
    0x0001346e ldr r2, [pc, 0x6c]                                |         
    0x00013470 ldr r3, [pc, 0x50]                                |         r3 = *(0x134c4);
    0x00013472 add r2, pc                                        |         r2 = 0x26954;
    0x00013474 ldr r3, [r2, r3]                                  |         r3 = *(0x26954);
    0x00013476 ldr r2, [r3]                                      |         r2 = *(0x26954);
    0x00013478 ldr r3, [sp, 0xc4]                                |         r3 = var_c4h;
    0x0001347a eors r2, r3                                       |         r2 ^= r3;
    0x0001347c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x00013480 beq 0x134b6                                       |             goto label_12;
                                                                 |         }
    0x00013482 blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 | label_8:
    0x00013486 ldr.w r8, [pc, 0x58]                              |         
    0x0001348a ldr r7, [pc, 0x58]                                |         
    0x0001348c add r8, pc                                        |         r8 = 0x26972;
    0x0001348e add r7, pc                                        |         r7 = 0x26978;
    0x00013490 b 0x13408                                         |         
                                                                 |     } while (1);
                                                                 | label_11:
    0x00013492 mov r1, r6                                        |     r1 = r6;
    0x00013494 mov r0, r4                                        |     r0 = r4;
    0x00013496 blx 0x8c64                                        |     fcn_00008c64 ();
    0x0001349a mov r0, r6                                        |     r0 = r6;
    0x0001349c blx 0x894c                                        |     fcn_0000894c ();
    0x000134a0 mov r0, r4                                        |     r0 = r4;
    0x000134a2 blx 0x8e08                                        |     r0 = fcn_00008e08 ();
    0x000134a6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000134a8 beq 0x13448                                       |         goto label_3;
                                                                 |     }
    0x000134aa movs r5, 0                                        |     r5 = 0;
    0x000134ac b 0x1344c                                         |     goto label_4;
                                                                 | label_6:
    0x000134ae mov r0, r5                                        |     r0 = r5;
    0x000134b0 blx 0x926c                                        |     fcn_0000926c ();
    0x000134b4 b 0x13358                                         |     goto label_0;
                                                                 | label_12:
    0x000134b6 mov r0, r5                                        |     r0 = r5;
    0x000134b8 add sp, 0xcc                                      |     
    0x000134ba pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x13574 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00013574 ()                              | void fcn_00013574 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                         |     int16_t var_4h;
                                                         |     int16_t var_14h;
                                                         |     int16_t var_24h;
                                                         |     int16_t var_28h;
                                                         |     int16_t var_2ch;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
    0x00013574 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00013578 mov sb, r2                                |     sb = r2;
    0x0001357a ldr r2, [pc, 0xd4]                        |     
    0x0001357c mov r7, r3                                |     r7 = r3;
    0x0001357e mov r6, r0                                |     r6 = r0;
    0x00013580 sub sp, 0x34                              |     
    0x00013582 ldr r3, [pc, 0xd0]                        |     r3 = *(0x13656);
    0x00013584 mov r8, r1                                |     r8 = r1;
    0x00013586 ldr r0, [pc, 0xd0]                        |     
    0x00013588 add r2, pc                                |     r2 = 0x26bde;
    0x0001358a ldr r3, [r2, r3]                          |     
    0x0001358c add r0, pc                                |     
    0x0001358e add.w r0, r0, 0x360                       |     r0 = 0x26f4a;
    0x00013592 ldr r3, [r3]                              |     r3 = *(0x26bde);
    0x00013594 str r3, [sp, 0x2c]                        |     var_2ch = r3;
    0x00013596 mov.w r3, 0                               |     r3 = 0;
    0x0001359a bl 0x132d4                                |     fcn_000132d4 (r0);
    0x0001359e cmp r6, 0                                 |     
                                                         |     if (r6 == 0) {
    0x000135a0 beq 0x13630                               |         goto label_1;
                                                         |     }
    0x000135a2 add r4, sp, 0x14                          |     r4 += var_14h;
    0x000135a4 add r5, sp, 4                             |     r5 += var_4h;
    0x000135a6 mov r0, r4                                |     r0 = r4;
    0x000135a8 bl 0x1033a                                |     fcn_0001033a (r0);
    0x000135ac mov r0, r5                                |     r0 = r5;
    0x000135ae bl 0x1033a                                |     fcn_0001033a (r0);
    0x000135b2 movs r3, 0                                |     r3 = 0;
    0x000135b4 str r3, [sp, 0x28]                        |     var_28h = r3;
    0x000135b6 ldrb r3, [r6]                             |     r3 = *(r6);
    0x000135b8 cmp r3, 0x2f                              |     
    0x000135ba bne 0x135e0                               |     
                                                         |     while (r0 == 0) {
    0x000135bc mov r1, r6                                |         r1 = r6;
    0x000135be mov r0, r5                                |         r0 = r5;
    0x000135c0 bl 0x10416                                |         r0 = fcn_00010416 (r0, r1);
    0x000135c4 mov r6, r0                                |         r6 = r0;
                                                         |         if (r0 == 0) {
    0x000135c6 cbz r0, 0x135f0                           |             goto label_2;
                                                         |         }
                                                         | label_0:
    0x000135c8 mov r0, r5                                |         r0 = r5;
    0x000135ca mvn r6, 0x67                              |         r6 = ~0x67;
    0x000135ce bl 0x10348                                |         fcn_00010348 (r0);
    0x000135d2 mov r0, r4                                |         r0 = r4;
    0x000135d4 bl 0x10348                                |         fcn_00010348 (r0);
    0x000135d8 ldr r0, [sp, 0x28]                        |         r0 = var_28h;
    0x000135da blx 0x894c                                |         fcn_0000894c ();
    0x000135de b 0x13630                                 |         goto label_1;
    0x000135e0 ldr r1, [pc, 0x78]                        |         
    0x000135e2 mov r0, r5                                |         r0 = r5;
    0x000135e4 add r1, pc                                |         r1 = 0x26c44;
    0x000135e6 bl 0x10394                                |         r0 = fcn_00010394 (r0, r1);
    0x000135ea cmp r0, 0                                 |         
    0x000135ec beq 0x135bc                               |         
                                                         |     }
    0x000135ee b 0x135c8                                 |     goto label_0;
                                                         | label_2:
    0x000135f0 movs r0, 4                                |     r0 = 4;
    0x000135f2 blx 0x8e30                                |     vfprintf_chk ()
    0x000135f6 str r0, [sp, 0x28]                        |     var_28h = r0;
    0x000135f8 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000135fa beq 0x135c8                               |         goto label_0;
                                                         |     }
    0x000135fc movs r3, 1                                |     r3 = 1;
    0x000135fe mov r2, sb                                |     r2 = sb;
    0x00013600 str r3, [r0]                              |     *(r0) = r3;
    0x00013602 mov r1, r8                                |     r1 = r8;
    0x00013604 mov r0, r4                                |     r0 = r4;
    0x00013606 bl 0x1047e                                |     fcn_0001047e (r0, r1, r2);
    0x0001360a str r7, [sp, 0x24]                        |     var_24h = r7;
    0x0001360c ldr r7, [pc, 0x50]                        |     
    0x0001360e add r7, pc                                |     r7 = 0x26c72;
    0x00013610 mov r0, r7                                |     r0 = r7;
    0x00013612 add.w r4, r7, 0x360                       |     r4 = r7 + 0x360;
    0x00013616 blx 0x8994                                |     r0 = fcn_00008994 ();
    0x0001361a ldm r5!, {r0, r1, r2, r3}                 |     r0 = *(r5!);
                                                         |     r1 = *((r5! + 4));
                                                         |     r2 = *((r5! + 8));
                                                         |     r3 = *((r5! + 12));
    0x0001361c stm r4!, {r0, r1, r2, r3}                 |     *(r4!) = r0;
                                                         |     *((r4! + 4)) = r1;
                                                         |     *((r4! + 8)) = r2;
                                                         |     *((r4! + 12)) = r3;
    0x0001361e ldm r5!, {r0, r1, r2, r3}                 |     r0 = *(r5!);
                                                         |     r1 = *((r5! + 4));
                                                         |     r2 = *((r5! + 8));
                                                         |     r3 = *((r5! + 12));
    0x00013620 stm r4!, {r0, r1, r2, r3}                 |     *(r4!) = r0;
                                                         |     *((r4! + 4)) = r1;
                                                         |     *((r4! + 8)) = r2;
                                                         |     *((r4! + 12)) = r3;
    0x00013622 ldm.w r5, {r0, r1}                        |     r0 = *(r5);
                                                         |     r1 = *((r5 + 4));
    0x00013626 stm.w r4, {r0, r1}                        |     *(r4) = r0;
                                                         |     *((r4 + 4)) = r1;
    0x0001362a mov r0, r7                                |     r0 = r7;
    0x0001362c blx 0x869c                                |     fcn_0000869c ();
                                                         | label_1:
    0x00013630 ldr r2, [pc, 0x30]                        |     
    0x00013632 ldr r3, [pc, 0x20]                        |     r3 = *(0x13656);
    0x00013634 add r2, pc                                |     r2 = 0x26c9c;
    0x00013636 ldr r3, [r2, r3]                          |     r3 = *(0x26c9c);
    0x00013638 ldr r2, [r3]                              |     r2 = *(0x26c9c);
    0x0001363a ldr r3, [sp, 0x2c]                        |     r3 = var_2ch;
    0x0001363c eors r2, r3                               |     r2 ^= r3;
    0x0001363e mov.w r3, 0                               |     r3 = 0;
                                                         |     if (r2 != r3) {
    0x00013642 beq 0x13648                               |         
    0x00013644 blx 0x8b7c                                |         fcn_00008b7c ();
                                                         |     }
    0x00013648 mov r0, r6                                |     r0 = r6;
    0x0001364a add sp, 0x34                              |     
    0x0001364c pop.w {r4, r5, r6, r7, r8, sb, 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/libupnp.so.17.1.8 @ 0x147e0 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000147e0 ()                                  | void fcn_000147e0 (int16_t arg1, int16_t arg2) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x000147e0 invalid                                       |     
    0x000147e4 mov r6, r0                                    |     r6 = r0;
    0x000147e6 ldr r0, [r0, 4]                               |     r0 = *((r0 + 4));
    0x000147e8 mov r5, r1                                    |     r5 = r1;
    0x000147ea movs r7, 0                                    |     r7 = 0;
    0x000147ec mov.w r8, 0xa8                                |     r8 = 0xa8;
    0x000147f0 blx 0x8f9c                                    |     r0 = fcn_00008f9c ();
    0x000147f4 add.w sb, r0, 1                               |     sb = r0 + 1;
    0x000147f8 str r7, [r5]                                  |     *(r5) = r7;
    0x000147fa mov r0, sb                                    |     r0 = sb;
    0x000147fc blx 0x8e30                                    |     vfprintf_chk ()
    0x00014800 str r0, [r5, 4]                               |     *((r5 + 4)) = r0;
    0x00014802 mov r4, r0                                    |     r4 = r0;
    0x00014804 ldr r0, [r6]                                  |     r0 = *(r6);
    0x00014806 mul r0, r8, r0                                |     r0 = r8 * r0;
    0x0001480a blx 0x8e30                                    |     vfprintf_chk ()
    0x0001480e str r0, [r5, 8]                               |     *((r5 + 8)) = r0;
    0x00014810 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00014812 beq 0x1488a                                   |         goto label_1;
                                                             |     }
    0x00014814 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00014816 beq 0x1488a                                   |         goto label_1;
                                                             |     }
    0x00014818 ldr r1, [r6, 4]                               |     r1 = *((r6 + 4));
    0x0001481a mov r2, sb                                    |     r2 = sb;
    0x0001481c mov r0, r4                                    |     r0 = r4;
    0x0001481e blx 0x8a14                                    |     fcn_00008a14 ();
                                                             |     do {
    0x00014822 ldr r3, [r6]                                  |         r3 = *(r6);
    0x00014824 cmp r3, r7                                    |         
                                                             |         if (r3 <= r7) {
    0x00014826 bhi 0x14830                                   |             
    0x00014828 movs r0, 1                                    |             r0 = 1;
    0x0001482a str r3, [r5]                                  |             *(r5) = r3;
                                                             | label_0:
    0x0001482c pop.w {r3, r4, r5, r6, r7, r8, sb, pc}        |             
                                                             |         }
    0x00014830 mul r2, r8, r7                                |         r2 = r8 * r7;
    0x00014834 ldr r0, [r6, 8]                               |         r0 = *((r6 + 8));
    0x00014836 ldr r1, [r5, 8]                               |         r1 = *((r5 + 8));
    0x00014838 adds r7, 1                                    |         r7++;
    0x0001483a adds r4, r0, r2                               |         r4 = r0 + r2;
    0x0001483c ldr r0, [r0, r2]                              |         r0 = *((r0 + r2));
    0x0001483e adds r3, r1, r2                               |         r3 = r1 + r2;
    0x00014840 str r0, [r1, r2]                              |         *((r1 + r2)) = r0;
    0x00014842 ldr r1, [r4, 8]                               |         r1 = *((r4 + 8));
    0x00014844 ldr r0, [r6, 4]                               |         r0 = *((r6 + 4));
    0x00014846 ldr r2, [r5, 4]                               |         r2 = *((r5 + 4));
    0x00014848 str r1, [r3, 8]                               |         *((r3 + 8)) = r1;
    0x0001484a ldr r1, [r4, 4]                               |         r1 = *((r4 + 4));
    0x0001484c subs r1, r1, r0                               |         r1 -= r0;
    0x0001484e add r1, r2                                    |         r1 += r2;
    0x00014850 str r1, [r3, 4]                               |         *((r3 + 4)) = r1;
    0x00014852 ldr r1, [r4, 0xc]                             |         r1 = *((r4 + 0xc));
    0x00014854 str r1, [r3, 0xc]                             |         *((r3 + 0xc)) = r1;
    0x00014856 ldr r1, [r4, 0x14]                            |         r1 = *((r4 + 0x14));
    0x00014858 str r1, [r3, 0x14]                            |         *((r3 + 0x14)) = r1;
    0x0001485a ldr r1, [r4, 0x10]                            |         r1 = *((r4 + 0x10));
    0x0001485c subs r1, r1, r0                               |         r1 -= r0;
    0x0001485e add r1, r2                                    |         r1 += r2;
    0x00014860 str r1, [r3, 0x10]                            |         *((r3 + 0x10)) = r1;
    0x00014862 ldr r1, [r4, 0x1c]                            |         r1 = *((r4 + 0x1c));
    0x00014864 str r1, [r3, 0x1c]                            |         *((r3 + 0x1c)) = r1;
    0x00014866 ldr r1, [r4, 0x18]                            |         r1 = *((r4 + 0x18));
    0x00014868 subs r1, r1, r0                               |         r1 -= r0;
    0x0001486a add r1, r2                                    |         r1 += r2;
    0x0001486c str r1, [r3, 0x18]                            |         *((r3 + 0x18)) = r1;
    0x0001486e ldr r1, [r4, 0x24]                            |         r1 = *((r4 + 0x24));
    0x00014870 str r1, [r3, 0x24]                            |         *((r3 + 0x24)) = r1;
    0x00014872 ldr r1, [r4, 0x20]                            |         r1 = *((r4 + 0x20));
    0x00014874 subs r1, r1, r0                               |         r1 -= r0;
    0x00014876 add.w r0, r3, 0x28                            |         r0 = r3 + 0x28;
    0x0001487a add r2, r1                                    |         r2 += r1;
    0x0001487c add.w r1, r4, 0x28                            |         r1 = r4 + 0x28;
    0x00014880 str r2, [r3, 0x20]                            |         *((r3 + 0x20)) = r2;
    0x00014882 movs r2, 0x80                                 |         r2 = 0x80;
    0x00014884 blx 0x8a14                                    |         fcn_00008a14 ();
    0x00014888 b 0x14822                                     |         
                                                             |     } while (1);
                                                             | label_1:
    0x0001488a mvn r0, 0x67                                  |     r0 = ~0x67;
    0x0001488e b 0x1482c                                     |     goto label_0;
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x14b88 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00014b88 ()                                      | void fcn_00014b88 (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_14h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h_2;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_20h;
                                                                 |     int32_t var_24h;
                                                                 |     int16_t var_bch;
                                                                 |     int16_t var_c8h;
                                                                 |     int16_t var_cch;
                                                                 |     int16_t var_d0h;
                                                                 |     int16_t var_d4h;
                                                                 |     int16_t var_d8h;
                                                                 |     int16_t var_e0h;
                                                                 |     int16_t var_164h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 | label_1:
    0x00008b3c bx pc                                             |     return void (*pc)() ();
    0x00014b88 ldr r2, [pc, 0x260]                               |     
    0x00014b8a ldr r3, [pc, 0x264]                               |     r3 = *(0x14df2);
    0x00014b8c push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00014b90 sub sp, 0x168                                     |     
    0x00014b92 add r2, pc                                        |     r2 = 0x29982;
    0x00014b94 mov r7, r1                                        |     r7 = r1;
    0x00014b96 mov r5, r0                                        |     r5 = r0;
    0x00014b98 ldr r3, [r2, r3]                                  |     
    0x00014b9a ldr r3, [r3]                                      |     r3 = *(0x29982);
    0x00014b9c str r3, [sp, 0x164]                               |     var_164h = r3;
    0x00014b9e mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r0 != 0) {
    0x00014ba2 cbnz r0, 0x14bdc                                  |         goto label_13;
                                                                 |     }
    0x00014ba4 cbnz r1, 0x14bc4                                  |     
                                                                 |     while (r0 != 1) {
                                                                 | label_2:
    0x00014ba6 movs r6, 0                                        |         r6 = 0;
                                                                 | label_6:
    0x00014ba8 ldr r2, [pc, 0x248]                               |         
    0x00014baa ldr r3, [pc, 0x244]                               |         r3 = *(0x14df2);
    0x00014bac add r2, pc                                        |         r2 = 0x299a4;
    0x00014bae ldr r3, [r2, r3]                                  |         r3 = *(0x299a4);
    0x00014bb0 ldr r2, [r3]                                      |         r2 = *(0x299a4);
    0x00014bb2 ldr r3, [sp, 0x164]                               |         r3 = var_164h;
    0x00014bb4 eors r2, r3                                       |         r2 ^= r3;
    0x00014bb6 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x00014bba bne 0x14bd8                                       |             
    0x00014bbc mov r0, r6                                        |             r0 = r6;
    0x00014bbe add sp, 0x168                                     |             
    0x00014bc0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |             
    0x00014bc4 ldr r2, [pc, 0x230]                               |             
    0x00014bc6 add r2, pc                                        |             r2 = 0x299c2;
                                                                 | label_0:
    0x00014bc8 ldr r3, [pc, 0x224]                               |             r3 = *(0x14df0);
    0x00014bca ldr r3, [r2, r3]                                  |             r3 = *((r2 + r3));
    0x00014bcc ldr r2, [r3]                                      |             r2 = *(0x14df0);
    0x00014bce ldr r3, [sp, 0x164]                               |             r3 = var_164h;
    0x00014bd0 eors r2, r3                                       |             r2 ^= r3;
    0x00014bd2 mov.w r3, 0                                       |             r3 = 0;
                                                                 |             if (r2 == r3) {
    0x00014bd6 beq 0x14bfc                                       |                 goto label_14;
                                                                 |             }
                                                                 |         }
                                                                 | label_3:
    0x00014bd8 blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 | label_13:
    0x00014bdc mov r0, r1                                        |         r0 = r1;
    0x00014bde blx 0x8f9c                                        |         fcn_00008f9c ();
    0x00014be2 add r2, sp, 0xbc                                  |         r2 += var_bch;
    0x00014be4 mov r1, r0                                        |         r1 = r0;
    0x00014be6 mov r4, r0                                        |         r4 = r0;
    0x00014be8 mov r0, r7                                        |         r0 = r7;
    0x00014bea bl 0x14a8c                                        |         r0 = fcn_00014a8c (r0, r1, r2);
    0x00014bee cmp r0, 1                                         |         
    0x00014bf0 bne 0x14ba6                                       |         
                                                                 |     }
    0x00014bf2 ldr r3, [sp, 0xbc]                                |     r3 = var_bch;
                                                                 |     if (r3 == 0) {
    0x00014bf4 cbnz r3, 0x14c08                                  |         
    0x00014bf6 ldr r2, [pc, 0x204]                               |         
    0x00014bf8 add r2, pc                                        |         r2 = 0x299fa;
    0x00014bfa b 0x14bc8                                         |         goto label_0;
                                                                 | label_14:
    0x00014bfc mov r0, r7                                        |         r0 = r7;
                                                                 | label_4:
    0x00014bfe add sp, 0x168                                     |         
    0x00014c00 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |         
    0x00014c04 b.w 0x8b3c                                        |         goto label_1;
                                                                 |     }
    0x00014c08 mov r0, r5                                        |     r0 = r5;
    0x00014c0a add.w r8, sp, 0x14                                |     r8 += var_14h;
    0x00014c0e blx 0x8f9c                                        |     fcn_00008f9c ();
    0x00014c12 mov r2, r8                                        |     r2 = r8;
    0x00014c14 mov r1, r0                                        |     r1 = r0;
    0x00014c16 mov r6, r0                                        |     r6 = r0;
    0x00014c18 mov r0, r5                                        |     r0 = r5;
    0x00014c1a bl 0x14a8c                                        |     r0 = fcn_00014a8c (r0, r1, r2);
    0x00014c1e cmp r0, 1                                         |     
    0x00014c20 mov sb, r0                                        |     sb = r0;
                                                                 |     if (r0 != 1) {
    0x00014c22 bne 0x14ba6                                       |         goto label_2;
                                                                 |     }
    0x00014c24 ldr.w sl, [r8]                                    |     sl = *(r8);
    0x00014c28 cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x00014c2c bne 0x14ba6                                       |         goto label_2;
                                                                 |     }
                                                                 |     if (r4 != 0) {
    0x00014c2e cbnz r4, 0x14c48                                  |         goto label_15;
                                                                 |     }
    0x00014c30 ldr r2, [pc, 0x1cc]                               |     
    0x00014c32 ldr r3, [pc, 0x1bc]                               |     r3 = *(0x14df2);
    0x00014c34 add r2, pc                                        |     r2 = 0x29a38;
    0x00014c36 ldr r3, [r2, r3]                                  |     r3 = *(0x29a38);
    0x00014c38 ldr r2, [r3]                                      |     r2 = *(0x29a38);
    0x00014c3a ldr r3, [sp, 0x164]                               |     r3 = var_164h;
    0x00014c3c eors r2, r3                                       |     r2 ^= r3;
    0x00014c3e mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00014c42 bne 0x14bd8                                       |         goto label_3;
                                                                 |     }
    0x00014c44 mov r0, r5                                        |     r0 = r5;
    0x00014c46 b 0x14bfe                                         |     goto label_4;
                                                                 | label_15:
    0x00014c48 adds r4, 2                                        |     r4 += 2;
    0x00014c4a add r4, r6                                        |     r4 += r6;
    0x00014c4c mov r0, r4                                        |     r0 = r4;
    0x00014c4e blx 0x8e30                                        |     r0 = vfprintf_chk ()
    0x00014c52 mov r6, r0                                        |     r6 = r0;
    0x00014c54 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00014c56 beq 0x14ba6                                       |         goto label_2;
                                                                 |     }
    0x00014c58 mov r2, r4                                        |     r2 = r4;
    0x00014c5a mov r1, sl                                        |     r1 = sl;
    0x00014c5c blx 0x9144                                        |     fcn_00009144 ();
    0x00014c60 ldr.w r3, [r8, 4]                                 |     r3 = var_4h_2;
    0x00014c64 mov r2, sb                                        |     r2 = sb;
    0x00014c66 mov r1, r4                                        |     r1 = r4;
    0x00014c68 mov r0, r6                                        |     r0 = r6;
    0x00014c6a str r3, [sp, 8]                                   |     var_8h = r3;
    0x00014c6c ldr.w r3, [r8, 8]                                 |     r3 = var_8h_2;
    0x00014c70 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00014c72 ldr r3, [pc, 0x190]                               |     
    0x00014c74 add r3, pc                                        |     r3 = 0x29a7e;
    0x00014c76 str r3, [sp]                                      |     *(sp) = r3;
    0x00014c78 mov.w r3, -1                                      |     r3 = -1;
    0x00014c7c blx 0x96fc                                        |     r0 = fcn_000096fc ();
    0x00014c80 cmp r0, 0                                         |     
    0x00014c82 bge 0x14c8c                                       |     
                                                                 |     while (r4 <= r0) {
                                                                 | label_5:
    0x00014c84 mov r0, r6                                        |         r0 = r6;
    0x00014c86 blx 0x894c                                        |         fcn_0000894c ();
    0x00014c8a b 0x14ba6                                         |         goto label_2;
    0x00014c8c cmp r4, r0                                        |         
    0x00014c8e ble 0x14c84                                       |         
                                                                 |     }
    0x00014c90 ldr.w sb, [sp, 0xe0]                              |     sb = var_e0h;
    0x00014c94 adds r5, r6, r0                                   |     r5 = r6 + r0;
    0x00014c96 subs r4, r4, r0                                   |     r4 -= r0;
    0x00014c98 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00014c9c beq 0x14cb8                                       |         goto label_16;
                                                                 |     }
    0x00014c9e ldr r2, [pc, 0x168]                               |     
    0x00014ca0 mov r3, r7                                        |     r3 = r7;
    0x00014ca2 mov r1, r4                                        |     r1 = r4;
    0x00014ca4 mov r0, r5                                        |     r0 = r5;
    0x00014ca6 add r2, pc                                        |     r2 = 0x29ab4;
    0x00014ca8 blx 0x90f8                                        |     r0 = fcn_000090f8 ();
    0x00014cac cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00014cae blt 0x14c84                                       |         goto label_5;
                                                                 |     }
    0x00014cb0 cmp r4, r0                                        |     
                                                                 |     if (r4 > r0) {
    0x00014cb2 bgt.w 0x14ba8                                     |         goto label_6;
                                                                 |     }
    0x00014cb6 b 0x14c84                                         |     goto label_5;
                                                                 | label_16:
    0x00014cb8 ldr.w r3, [r8, 0x24]                              |     r3 = var_24h;
                                                                 |     if (r3 == 0) {
    0x00014cbc cbz r3, 0x14ce6                                   |         goto label_17;
                                                                 |     }
    0x00014cbe ldr.w r2, [r8, 0x20]                              |     r2 = var_20h;
    0x00014cc2 mov r1, r4                                        |     r1 = r4;
    0x00014cc4 mov r0, r5                                        |     r0 = r5;
    0x00014cc6 strd r3, r2, [sp, 4]                              |     __asm ("strd r3, r2, [var_8h]");
    0x00014cca movs r2, 1                                        |     r2 = 1;
    0x00014ccc ldr r3, [pc, 0x13c]                               |     
    0x00014cce add r3, pc                                        |     r3 = 0x29ade;
    0x00014cd0 str r3, [sp]                                      |     *(sp) = r3;
    0x00014cd2 mov.w r3, -1                                      |     r3 = -1;
    0x00014cd6 blx 0x96fc                                        |     r0 = fcn_000096fc ();
    0x00014cda cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00014cdc blt 0x14c84                                       |         goto label_5;
                                                                 |     }
    0x00014cde cmp r4, r0                                        |     
                                                                 |     if (r4 <= r0) {
    0x00014ce0 ble 0x14c84                                       |         goto label_5;
                                                                 |     }
    0x00014ce2 add r5, r0                                        |     r5 += r0;
    0x00014ce4 subs r4, r4, r0                                   |     r4 -= r0;
                                                                 | label_17:
    0x00014ce6 ldr r3, [sp, 0xc8]                                |     r3 = var_c8h;
                                                                 |     if (r3 != 0) {
    0x00014ce8 cbnz r3, 0x14d14                                  |         goto label_18;
                                                                 |     }
    0x00014cea ldr r2, [pc, 0x124]                               |     
    0x00014cec mov r3, r7                                        |     r3 = r7;
    0x00014cee mov r1, r4                                        |     r1 = r4;
    0x00014cf0 mov r0, r5                                        |     r0 = r5;
    0x00014cf2 add r2, pc                                        |     r2 = 0x29b08;
    0x00014cf4 blx 0x90f8                                        |     fcn_000090f8 ();
                                                                 | label_7:
    0x00014cf8 mov r7, r5                                        |     r7 = r5;
                                                                 | label_8:
    0x00014cfa cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00014cfc blt 0x14c84                                       |         goto label_5;
                                                                 |     }
                                                                 | label_11:
    0x00014cfe cmp r4, r0                                        |     
                                                                 |     if (r4 <= r0) {
    0x00014d00 ble 0x14c84                                       |         goto label_5;
                                                                 |     }
    0x00014d02 adds r1, r7, r0                                   |     r1 = r7 + r0;
    0x00014d04 mov r0, r5                                        |     r0 = r5;
    0x00014d06 subs r1, r1, r5                                   |     r1 -= r5;
    0x00014d08 bl 0x14900                                        |     r0 = fcn_00014900 (r0, r1);
    0x00014d0c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00014d0e beq.w 0x14ba8                                     |         goto label_6;
                                                                 |     }
    0x00014d12 b 0x14c84                                         |     goto label_5;
                                                                 | label_18:
    0x00014d14 ldr.w r2, [r8, 0x14]                              |     r2 = var_14h_2;
                                                                 |     if (r2 == 0) {
    0x00014d18 cbnz r2, 0x14d32                                  |         
    0x00014d1a ldr r3, [pc, 0xf8]                                |         
    0x00014d1c movs r2, 1                                        |         r2 = 1;
    0x00014d1e mov r1, r4                                        |         r1 = r4;
    0x00014d20 mov r0, r5                                        |         r0 = r5;
    0x00014d22 str r7, [sp, 4]                                   |         var_4h = r7;
    0x00014d24 add r3, pc                                        |         r3 = 0x29b3e;
    0x00014d26 str r3, [sp]                                      |         *(sp) = r3;
    0x00014d28 mov.w r3, -1                                      |         r3 = -1;
    0x00014d2c blx 0x96fc                                        |         fcn_000096fc ();
    0x00014d30 b 0x14cf8                                         |         goto label_7;
                                                                 |     }
    0x00014d32 ldr r0, [sp, 0xd0]                                |     r0 = var_d0h;
                                                                 |     if (r0 != 0) {
    0x00014d34 cbnz r0, 0x14d82                                  |         goto label_19;
                                                                 |     }
    0x00014d36 ldr.w r3, [r8, 0x10]                              |     r3 = var_10h;
    0x00014d3a mov r7, r5                                        |     r7 = r5;
    0x00014d3c mov r1, r4                                        |     r1 = r4;
    0x00014d3e mov r0, r5                                        |     r0 = r5;
    0x00014d40 strd r2, r3, [sp, 4]                              |     __asm ("strd r2, r3, [var_8h]");
    0x00014d44 movs r2, 1                                        |     r2 = 1;
    0x00014d46 ldr r3, [pc, 0xd0]                                |     
    0x00014d48 add r3, pc                                        |     r3 = 0x29b66;
    0x00014d4a str r3, [sp]                                      |     *(sp) = r3;
    0x00014d4c mov.w r3, -1                                      |     r3 = -1;
    0x00014d50 blx 0x96fc                                        |     r0 = fcn_000096fc ();
                                                                 | label_9:
    0x00014d54 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00014d56 blt 0x14c84                                       |         goto label_5;
                                                                 |     }
    0x00014d58 cmp r4, r0                                        |     
                                                                 |     if (r4 <= r0) {
    0x00014d5a ble 0x14c84                                       |         goto label_5;
                                                                 |     }
    0x00014d5c ldr r3, [sp, 0xd8]                                |     r3 = var_d8h;
    0x00014d5e add r7, r0                                        |     r7 += r0;
    0x00014d60 subs r4, r4, r0                                   |     r4 -= r0;
    0x00014d62 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00014d64 beq 0x14dd6                                       |         goto label_20;
                                                                 |     }
    0x00014d66 ldr r2, [sp, 0xd4]                                |     r2 = var_d4h;
    0x00014d68 strd r3, r2, [sp, 4]                              |     __asm ("strd r3, r2, [var_8h]");
    0x00014d6a adds r2, 1                                        |     r2++;
    0x00014d6c ldr r3, [pc, 0xac]                                |     
    0x00014d6e add r3, pc                                        |     r3 = 0x29b8e;
                                                                 | label_12:
    0x00014d70 str r3, [sp]                                      |     *(sp) = r3;
    0x00014d72 movs r2, 1                                        |     r2 = 1;
    0x00014d74 mov.w r3, -1                                      |     r3 = -1;
    0x00014d78 mov r1, r4                                        |     r1 = r4;
    0x00014d7a mov r0, r7                                        |     r0 = r7;
    0x00014d7c blx 0x96fc                                        |     fcn_000096fc ();
    0x00014d80 b 0x14cfa                                         |     goto label_8;
                                                                 | label_19:
    0x00014d82 cmp r2, r4                                        |     
                                                                 |     if (r2 > r4) {
    0x00014d84 bhi.w 0x14c84                                     |         goto label_5;
                                                                 |     }
    0x00014d88 ldr.w r7, [r8, 0x10]                              |     r7 = var_10h;
    0x00014d8c movs r3, 1                                        |     r3 = 1;
                                                                 |     do {
    0x00014d8e ldrb.w r1, [r7, sb]                               |         r1 = *((r7 + sb));
    0x00014d92 mov ip, sb                                        |         
    0x00014d94 cmp r1, 0x2f                                      |         
    0x00014d96 strb.w r1, [r5, sb]                               |         *((r5 + sb)) = r1;
    0x00014d9a add.w sb, sb, 1                                   |         sb++;
                                                                 |         if (r1 != 0x2f) {
    0x00014d9e beq 0x14dce                                       |             
    0x00014da0 cmp r1, 0x3f                                      |             
                                                                 |             if (r1 != 0x3f) {
    0x00014da2 bne 0x14dd0                                       |                 goto label_21;
                                                                 |             }
    0x00014da4 ldr r2, [sp, 0xcc]                                |             r2 = var_cch;
    0x00014da6 ldrb r2, [r2]                                     |             r2 = *(r2);
    0x00014da8 cmp r2, 0x3f                                      |             
    0x00014daa it eq                                             |             
                                                                 |             if (r2 != 0x3f) {
    0x00014dac moveq r3, ip                                      |                 r3 = ip;
                                                                 |             }
                                                                 | label_10:
    0x00014dae adds r7, r5, r3                                   |             r7 = r5 + r3;
    0x00014db0 subs r4, r4, r3                                   |             r4 -= r3;
    0x00014db2 ldr r3, [sp, 0xcc]                                |             r3 = var_cch;
    0x00014db4 movs r2, 1                                        |             r2 = 1;
    0x00014db6 mov r1, r4                                        |             r1 = r4;
    0x00014db8 strd r0, r3, [sp, 4]                              |             __asm ("strd r0, r3, [var_8h]");
    0x00014dbc mov r0, r7                                        |             r0 = r7;
    0x00014dbe ldr r3, [pc, 0x60]                                |             
    0x00014dc0 add r3, pc                                        |             r3 = 0x29be6;
    0x00014dc2 str r3, [sp]                                      |             *(sp) = r3;
    0x00014dc4 mov.w r3, -1                                      |             r3 = -1;
    0x00014dc8 blx 0x96fc                                        |             fcn_000096fc ();
    0x00014dcc b 0x14d54                                         |             goto label_9;
                                                                 |         }
    0x00014dce mov r3, sb                                        |         r3 = sb;
                                                                 | label_21:
    0x00014dd0 cmp r2, sb                                        |         
    0x00014dd2 bne 0x14d8e                                       |         
                                                                 |     } while (r2 != sb);
    0x00014dd4 b 0x14dae                                         |     goto label_10;
                                                                 | label_20:
    0x00014dd6 ldr.w r0, [r8, 0x1c]                              |     r0 = var_1ch;
    0x00014dda cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00014ddc beq 0x14cfe                                       |         goto label_11;
                                                                 |     }
    0x00014dde ldr.w r3, [r8, 0x18]                              |     r3 = var_18h;
    0x00014de2 strd r0, r3, [sp, 4]                              |     __asm ("strd r0, r3, [var_8h]");
    0x00014de6 ldr r3, [pc, 0x3c]                                |     
    0x00014de8 add r3, pc                                        |     r3 = 0x29c12;
    0x00014dea b 0x14d70                                         |     goto label_12;
                                                                 | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x1514c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0001514c ()              | void fcn_0001514c (int16_t arg1) {
                                         |     int16_t var_0h;
                                         |     int16_t var_4h;
                                         |     int16_t var_8h;
                                         |     int16_t var_ch;
                                         |     int16_t var_10h;
                                         |     int16_t var_14h;
                                         |     int16_t var_18h;
                                         |     r0 = arg1;
    0x0001514c push {r4, r5, lr}         |     
    0x0001514e mov r5, r0                |     r5 = r0;
    0x00015150 sub sp, 0x24              |     
    0x00015152 movs r0, 0x76             |     r0 = 0x76;
    0x00015154 blx 0x8e30                |     r0 = vfprintf_chk ()
    0x00015158 mov r4, r0                |     r4 = r0;
                                         |     if (r0 != 0) {
    0x0001515a cbz r0, 0x15196           |         
    0x0001515c mov r0, r5                |         r0 = r5;
    0x0001515e blx 0x8f9c                |         fcn_00008f9c ();
    0x00015162 ldr r3, [pc, 0x38]        |         
    0x00015164 adds r0, 2                |         r0 += 2;
    0x00015166 str r0, [sp, 0xc]         |         var_ch = r0;
    0x00015168 movs r2, 1                |         r2 = 1;
    0x0001516a mov r0, r4                |         r0 = r4;
    0x0001516c add r3, pc                |         r3 = 0x2a30e;
    0x0001516e str r3, [sp, 0x18]        |         var_18h = r3;
    0x00015170 ldr r3, [pc, 0x2c]        |         
    0x00015172 add r3, pc                |         r3 = 0x2a316;
    0x00015174 str r3, [sp, 0x14]        |         var_14h = r3;
    0x00015176 ldr r3, [pc, 0x2c]        |         
    0x00015178 add r3, pc                |         r3 = 0x2a322;
    0x0001517a str r3, [sp, 0x10]        |         var_10h = r3;
    0x0001517c ldr r3, [pc, 0x28]        |         
    0x0001517e add r3, pc                |         r3 = 0x2a32a;
    0x00015180 str r3, [sp, 8]           |         var_8h = r3;
    0x00015182 ldr r3, [pc, 0x28]        |         
    0x00015184 add r3, pc                |         r3 = 0x2a336;
    0x00015186 str r3, [sp, 4]           |         var_4h = r3;
    0x00015188 ldr r3, [pc, 0x24]        |         
    0x0001518a add r3, pc                |         r3 = 0x2a33e;
    0x0001518c str r3, [sp]              |         *(sp) = r3;
    0x0001518e movs r3, 0x76             |         r3 = 0x76;
    0x00015190 mov r1, r3                |         r1 = r3;
    0x00015192 blx 0x96fc                |         fcn_000096fc ();
                                         |     }
    0x00015196 mov r0, r4                |     r0 = r4;
    0x00015198 add sp, 0x24              |     
    0x0001519a pop {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/libupnp.so.17.1.8 @ 0x15740 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00015740 ()                                      | void fcn_00015740 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int16_t var_8h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00015740 svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x00015744 mov r7, r0                                        |     r7 = r0;
    0x00015746 sub sp, 0x14                                      |     
    0x00015748 mov r8, r1                                        |     r8 = r1;
    0x0001574a mov r6, r2                                        |     r6 = r2;
    0x0001574c mov sb, r3                                        |     sb = r3;
    0x0001574e movs r4, 0x4b                                     |     r4 = 0x4b;
    0x00015750 movs r5, 0                                        |     r5 = 0;
                                                                 |     do {
    0x00015752 cmp r5, r6                                        |         
                                                                 |         if (r5 >= r6) {
    0x00015754 blt 0x157aa                                       |             
    0x00015756 adds r5, r4, 1                                    |             r5 = r4 + 1;
    0x00015758 mov r0, r5                                        |             r0 = r5;
    0x0001575a blx 0x8e30                                        |             r0 = vfprintf_chk ()
    0x0001575e mov r4, r0                                        |             r4 = r0;
    0x00015760 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x00015762 beq 0x157f6                                       |                 goto label_2;
                                                                 |             }
    0x00015764 mov r2, r5                                        |             r2 = r5;
    0x00015766 movs r1, 0                                        |             r1 = 0;
    0x00015768 ldr.w sl, [pc, 0x90]                              |             sl = sym.imp.memset;
    0x0001576c movs r5, 0                                        |             r5 = 0;
    0x0001576e ldr.w fp, [pc, 0x90]                              |             
    0x00015772 blx 0x9144                                        |             fcn_00009144 ();
    0x00015776 ldr r1, [pc, 0x8c]                                |             
    0x00015778 add sl, pc                                        |             sl += pc;
    0x0001577a add fp, pc                                        |             fp = 0x2af80;
    0x0001577c mov r0, r4                                        |             r0 = r4;
    0x0001577e add r1, pc                                        |             r1 = 0x2af88;
    0x00015780 blx 0x8d68                                        |             fcn_00008d68 ();
                                                                 | label_0:
    0x00015784 cmp r6, r5                                        |             
                                                                 |             if (r6 > r5) {
    0x00015786 bgt 0x157c8                                       |                 goto label_3;
                                                                 |             }
    0x00015788 ldr r1, [pc, 0x7c]                                |             
    0x0001578a mov r0, r4                                        |             r0 = r4;
    0x0001578c add r1, pc                                        |             r1 = 0x2af98;
    0x0001578e blx 0x8cec                                        |             fcn_00008cec ();
    0x00015792 mov r0, r4                                        |             r0 = r4;
    0x00015794 blx 0x8924                                        |             fcn_00008924 ();
    0x00015798 str.w r0, [sb]                                    |             __asm ("str.w r0, [sb]");
    0x0001579c mov r0, r4                                        |             r0 = r4;
    0x0001579e blx 0x894c                                        |             fcn_0000894c ();
    0x000157a2 movs r0, 0                                        |             r0 = 0;
                                                                 | label_1:
    0x000157a4 add sp, 0x14                                      |             
    0x000157a6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |             
                                                                 |         }
    0x000157aa ldr.w r0, [r7, r5, lsl 2]                         |         offset_0 = r5 << 2;
                                                                 |         r0 = *((r7 + offset_0));
    0x000157ae blx 0x8f9c                                        |         r0 = fcn_00008f9c ();
    0x000157b2 mov sl, r0                                        |         sl = r0;
    0x000157b4 ldr.w r0, [r8, r5, lsl 2]                         |         offset_1 = r5 << 2;
                                                                 |         r0 = *((r8 + offset_1));
    0x000157b8 blx 0x8f9c                                        |         fcn_00008f9c ();
    0x000157ba invalid                                           |         
    0x000157be adds r5, 1                                        |         r5++;
    0x000157c0 add r4, r0                                        |         r4 += r0;
    0x000157c2 add.w r4, r4, sl, lsl 1                           |         r4 += (sl << 1);
    0x000157c6 b 0x15752                                         |         
                                                                 |     } while (1);
                                                                 | label_3:
    0x000157c8 mov r1, sl                                        |     r1 = sl;
    0x000157ca mov r0, r4                                        |     r0 = r4;
    0x000157cc blx 0x8cec                                        |     fcn_00008cec ();
    0x000157d0 mov r0, r4                                        |     r0 = r4;
    0x000157d2 blx 0x8f9c                                        |     fcn_00008f9c ();
    0x000157d6 ldr.w r3, [r7, r5, lsl 2]                         |     offset_2 = r5 << 2;
                                                                 |     r3 = *((r7 + offset_2));
    0x000157da movs r1, 1                                        |     r1 = 1;
    0x000157dc ldr.w r2, [r8, r5, lsl 2]                         |     offset_3 = r5 << 2;
                                                                 |     r2 = *((r8 + offset_3));
    0x000157e0 add r0, r4                                        |     r0 += r4;
    0x000157e2 adds r5, 1                                        |     r5++;
    0x000157e4 str r3, [sp, 8]                                   |     var_8h = r3;
    0x000157e6 strd r3, r2, [sp]                                 |     __asm ("strd r3, r2, [sp]");
    0x000157ea mov r3, fp                                        |     r3 = fp;
    0x000157ec mov.w r2, -1                                      |     r2 = -1;
    0x000157f0 blx 0x90ec                                        |     fcn_000090ec ();
    0x000157f4 b 0x15784                                         |     goto label_0;
                                                                 | label_2:
    0x000157f6 mvn r0, 0x67                                      |     r0 = ~0x67;
    0x000157fa b 0x157a4                                         |     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/libupnp.so.17.1.8 @ 0x158c8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000158c8 ()                                      | void fcn_000158c8 (int16_t arg_20h, int16_t arg_28h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_4h_2;
                                                                 |     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_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_48h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
                                                                 | label_2:
    0x000151b4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000151b8 sub sp, 0x24                                      |     
    0x000151ba str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x000151bc mov sb, r2                                        |     sb = r2;
    0x000151be mov sl, r1                                        |     sl = r1;
    0x000151c0 movs r4, 0                                        |     r4 = 0;
    0x000151c2 ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x000151c4 ldr r2, [pc, 0x1d0]                               |     
    0x000151c6 str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x000151c8 movs r0, 0x1c                                     |     r0 = 0x1c;
    0x000151ca str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000151cc ldr r3, [pc, 0x1cc]                               |     
    0x000151ce add r2, pc                                        |     r2 = 0x2a56a;
    0x000151d0 add r3, pc                                        |     r3 = 0x2a570;
    0x000151d2 str r3, [sp, 8]                                   |     var_8h = r3;
    0x000151d4 ldr r3, [pc, 0x1c8]                               |     r3 = *(0x153a0);
    0x000151d6 ldr r3, [r2, r3]                                  |     
    0x000151d8 ldr r3, [r3]                                      |     r3 = *(0x2a56a);
    0x000151da str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x000151dc mov.w r3, 0                                       |     r3 = 0;
    0x000151e0 blx 0x8e30                                        |     vfprintf_chk ()
    0x000151e4 ldr r3, [pc, 0x1bc]                               |     r3 = *(0x153a4);
    0x000151e6 mov r7, r0                                        |     r7 = r0;
    0x000151e8 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x000151ea ldr r3, [r2, r3]                                  |     r3 = *(0x2a56a);
    0x000151ec str r3, [sp, 0x14]                                |     var_14h = r3;
    0x000151ee cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000151f0 beq.w 0x15356                                     |         goto label_3;
                                                                 |     }
    0x000151f4 movs r2, 0x1c                                     |     r2 = 0x1c;
    0x000151f6 movs r1, 0                                        |     r1 = 0;
    0x000151f8 blx 0x9144                                        |     fcn_00009144 ();
    0x000151fc movs r0, 4                                        |     r0 = 4;
    0x000151fe blx 0x8e30                                        |     r0 = vfprintf_chk ()
    0x00015202 mov fp, r0                                        |     
    0x00015204 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00015206 beq.w 0x15356                                     |         goto label_3;
                                                                 |     }
    0x0001520a str r4, [r0]                                      |     *(r0) = r4;
    0x0001520c mov r0, sl                                        |     r0 = sl;
    0x0001520e blx 0x8b40                                        |     r0 = fcn_00008b40 ();
    0x00015212 mov r5, r0                                        |     r5 = r0;
    0x00015214 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00015216 beq.w 0x15364                                     |         goto label_4;
                                                                 |     }
    0x0001521a mov r0, sb                                        |     r0 = sb;
    0x0001521c blx 0x8b40                                        |     r0 = fcn_00008b40 ();
    0x00015220 mov r6, r0                                        |     r6 = r0;
    0x00015222 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00015224 beq.w 0x1536c                                     |         goto label_5;
                                                                 |     }
    0x00015228 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x0001522a blx 0x8930                                        |     fcn_00008930 ();
    0x0001522e ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x00015230 add r1, sp, 0x18                                  |     r1 += var_18h;
    0x00015232 bl 0x19470                                        |     r0 = fcn_00019470 (r0, r1);
    0x00015236 cmp r0, 1                                         |     
    0x00015238 mov r8, r0                                        |     r8 = r0;
                                                                 |     if (r0 != 1) {
    0x0001523a bne.w 0x15372                                     |         goto label_6;
                                                                 |     }
    0x0001523e ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00015240 mov r1, sb                                        |     r1 = sb;
    0x00015242 mov r2, sl                                        |     r2 = sl;
    0x00015244 add.w r0, r0, 0x248                               |     r0 += 0x248;
    0x00015248 bl 0xfacc                                         |     r0 = fcn_0000facc (r0, r1, r2);
    0x0001524c mov sb, r0                                        |     sb = r0;
    0x0001524e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00015250 beq.w 0x1537a                                     |         goto label_7;
                                                                 |     }
    0x00015254 mov r1, r0                                        |     r1 = r0;
    0x00015256 ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00015258 bl 0xf964                                         |     r0 = fcn_0000f964 (r0, r1);
    0x0001525c mov sl, r0                                        |     sl = r0;
    0x0001525e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00015260 beq.w 0x15382                                     |         goto label_8;
                                                                 |     }
    0x00015264 ldr r3, [r0, 0x34]                                |     r3 = *((r0 + 0x34));
    0x00015266 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00015268 bne.w 0x15384                                     |         goto label_9;
                                                                 |     }
    0x0001526c str.w r8, [r0, 0x34]                              |     __asm ("str.w r8, [r0, 0x34]");
    0x00015270 ldr r0, [sp, 4]                                   |     r0 = var_4h_2;
    0x00015272 bl 0x1514c                                        |     r0 = fcn_0001514c (r0);
    0x00015276 mov sb, r0                                        |     sb = r0;
    0x00015278 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001527a beq.w 0x1538c                                     |         goto label_10;
                                                                 |     }
    0x0001527e movs r0, 0x48                                     |     r0 = 0x48;
    0x00015280 blx 0x8e30                                        |     r0 = vfprintf_chk ()
    0x00015284 mov r4, r0                                        |     r4 = r0;
    0x00015286 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00015288 beq 0x1535e                                       |         goto label_0;
                                                                 |     }
    0x0001528a movs r3, 1                                        |     r3 = 1;
    0x0001528c mov.w r8, 0                                       |     r8 = 0;
    0x00015290 str.w r3, [fp]                                    |     __asm ("str.w r3, [fp]");
    0x00015294 movs r2, 0x2b                                     |     r2 = 0x2b;
    0x00015296 ldr r3, [sp, 4]                                   |     r3 = var_4h_2;
    0x00015298 ldr r1, [sp, 0x10]                                |     r1 = var_10h;
    0x0001529a strb.w r8, [r0, 0x3b]                             |     *((r0 + 0x3b)) = r8;
    0x0001529e str r3, [r0, 4]                                   |     *((r0 + 4)) = r3;
    0x000152a0 strd r6, r5, [r0, 8]                              |     __asm ("strd r6, r5, [r0, 8]");
    0x000152a4 adds r0, 0x10                                     |     r0 += 0x10;
    0x000152a6 str sb, [r0, -0x10]                               |     *((r0 - 0x10)) = sb;
    0x000152aa blx 0x9174                                        |     fcn_00009174 ();
    0x000152ae mov r0, r8                                        |     r0 = r8;
    0x000152b0 blx 0x8a6c                                        |     fcn_00008a6c ();
    0x000152b4 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000152b6 mov r2, r4                                        |     r2 = r4;
    0x000152b8 ldr r1, [pc, 0xec]                                |     
    0x000152ba strd r0, fp, [r4, 0x3c]                           |     __asm ("strd r0, fp, [r4, 0x3c]");
    0x000152be mov r0, r7                                        |     r0 = r7;
    0x000152c0 str r3, [r4, 0x44]                                |     *((r4 + 0x44)) = r3;
    0x000152c2 add r1, pc                                        |     r1 = 0x2a66e;
    0x000152c4 bl 0xa7d4                                         |     fcn_0000a7d4 (r0, r1, r2);
    0x000152c8 ldr r1, [pc, 0xe0]                                |     
    0x000152ca mov r0, r7                                        |     r0 = r7;
    0x000152cc add r1, pc                                        |     r1 = 0x2a67c;
    0x000152ce bl 0xa7fc                                         |     fcn_0000a7fc (r0, r1);
    0x000152d2 movs r3, 1                                        |     r3 = 1;
    0x000152d4 mov r0, r7                                        |     r0 = r7;
    0x000152d6 mov r1, r3                                        |     r1 = r3;
    0x000152d8 bl 0xa7ec                                         |     fcn_0000a7ec (r0, r1);
    0x000152dc ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x000152de mov r1, r7                                        |     r1 = r7;
    0x000152e0 ldr r3, [pc, 0xcc]                                |     r3 = *(0x153b0);
    0x000152e2 ldr r0, [r2, r3]                                  |     r0 = *((r2 + r3));
    0x000152e4 mov r2, r8                                        |     r2 = r8;
    0x000152e6 bl 0xa174                                         |     r0 = fcn_0000a174 (r0, r1, r2);
    0x000152ea mov r8, r0                                        |     r8 = r0;
                                                                 |     if (r0 == 0) {
    0x000152ec cbz r0, 0x15324                                   |         goto label_11;
                                                                 |     }
    0x000152ee cmp.w r0, 0x20000000                              |     
    0x000152f2 it eq                                             |     
    0x000152f4 mvneq r8, 0x67                                    |     r8 = ~0x67;
                                                                 |     while (1) {
                                                                 | label_1:
    0x000152f8 mov r0, r7                                        |         r0 = r7;
    0x000152fa blx 0x894c                                        |         fcn_0000894c ();
    0x000152fe mov r0, r4                                        |         r0 = r4;
    0x00015300 blx 0x894c                                        |         fcn_0000894c ();
    0x00015304 mov r0, sb                                        |         r0 = sb;
    0x00015306 blx 0x894c                                        |         fcn_0000894c ();
    0x0001530a ldr r0, [sp, 4]                                   |         r0 = var_4h_2;
    0x0001530c blx 0x8fa8                                        |         fcn_00008fa8 ();
    0x00015310 mov r0, r6                                        |         r0 = r6;
    0x00015312 blx 0x894c                                        |         fcn_0000894c ();
    0x00015316 mov r0, r5                                        |         r0 = r5;
    0x00015318 blx 0x894c                                        |         fcn_0000894c ();
    0x0001531c mov r0, fp                                        |         r0 = fp;
    0x0001531e blx 0x894c                                        |         fcn_0000894c ();
    0x00015322 b 0x15338                                         |         goto label_12;
                                                                 | label_11:
    0x00015324 mov r1, r7                                        |         r1 = r7;
    0x00015326 add.w r0, sl, 0x44                                |         r0 = sl + 0x44;
    0x0001532a bl 0x992e                                         |         r0 = fcn_0000992e (r0, r1);
                                                                 |         if (r0 != 0) {
    0x0001532e cbz r0, 0x1535e                                   |             
    0x00015330 ldr r3, [r0, 8]                                   |             r3 = *((r0 + 8));
    0x00015332 mvn r2, 0xe0000000                                |             r2 = ~0xe0000000;
    0x00015336 str r2, [r3, 0x18]                                |             *((r3 + 0x18)) = r2;
                                                                 | label_12:
    0x00015338 ldr r0, [sp, 0x14]                                |             r0 = var_14h;
    0x0001533a blx 0x920c                                        |             fcn_0000920c ();
    0x0001533e ldr r2, [pc, 0x74]                                |             
    0x00015340 ldr r3, [pc, 0x5c]                                |             r3 = *(0x153a0);
    0x00015342 add r2, pc                                        |             r2 = 0x2a6fc;
    0x00015344 ldr r3, [r2, r3]                                  |             r3 = *(0x2a6fc);
    0x00015346 ldr r2, [r3]                                      |             r2 = *(0x2a6fc);
    0x00015348 ldr r3, [sp, 0x1c]                                |             r3 = var_1ch;
    0x0001534a eors r2, r3                                       |             r2 ^= r3;
    0x0001534c mov.w r3, 0                                       |             r3 = 0;
                                                                 |             if (r2 == r3) {
    0x00015350 beq 0x15390                                       |                 goto label_13;
                                                                 |             }
    0x00015352 blx 0x8b7c                                        |             fcn_00008b7c ();
                                                                 | label_3:
    0x00015356 mov sb, r4                                        |             sb = r4;
    0x00015358 mov r6, r4                                        |             r6 = r4;
    0x0001535a mov r5, r4                                        |             r5 = r4;
    0x0001535c mov fp, r4                                        |             
                                                                 |         }
                                                                 | label_0:
    0x0001535e mvn r8, 0x67                                      |         r8 = ~0x67;
    0x00015362 b 0x152f8                                         |         
                                                                 |     }
                                                                 | label_4:
    0x00015364 mov r4, r0                                        |     r4 = r0;
    0x00015366 mov sb, r0                                        |     sb = r0;
    0x00015368 mov r6, r0                                        |     r6 = r0;
    0x0001536a b 0x1535e                                         |     goto label_0;
                                                                 | label_5:
    0x0001536c mov r4, r0                                        |     r4 = r0;
    0x0001536e mov sb, r0                                        |     sb = r0;
    0x00015370 b 0x1535e                                         |     goto label_0;
                                                                 | label_6:
    0x00015372 mov sb, r4                                        |     sb = r4;
    0x00015374 mvn r8, 0x63                                      |     r8 = ~0x63;
    0x00015378 b 0x152f8                                         |     goto label_1;
                                                                 | label_7:
    0x0001537a mov r4, r0                                        |     r4 = r0;
    0x0001537c mvn r8, 0x6e                                      |     r8 = ~0x6e;
    0x00015380 b 0x152f8                                         |     goto label_1;
                                                                 | label_8:
    0x00015382 mov r4, r0                                        |     r4 = r0;
                                                                 | label_9:
    0x00015384 mov sb, r4                                        |     sb = r4;
    0x00015386 mvn r8, 0x6c                                      |     r8 = ~0x6c;
    0x0001538a b 0x152f8                                         |     goto label_1;
                                                                 | label_10:
    0x0001538c mov r4, r0                                        |     r4 = r0;
    0x0001538e b 0x1535e                                         |     goto label_0;
                                                                 | label_13:
    0x00015390 mov r0, r8                                        |     r0 = r8;
    0x00015392 add sp, 0x24                                      |     
    0x00015394 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
    0x000158c8 push.w {r0, r1, r4, r5, r6, r7, r8, lr}           |     
    0x000158cc mov r5, r0                                        |     r5 = r0;
    0x000158ce ldr r4, [pc, 0x74]                                |     
    0x000158d0 mov r0, r3                                        |     r0 = r3;
    0x000158d2 mov r6, r1                                        |     r6 = r1;
    0x000158d4 mov r7, r2                                        |     r7 = r2;
    0x000158d6 ldr r3, [pc, 0x70]                                |     r3 = *(0x1594a);
    0x000158d8 ldrd r1, r2, [sp, 0x20]                           |     __asm ("ldrd r1, r2, [arg_20h]");
    0x000158dc add r4, pc                                        |     r4 = 0x2b226;
    0x000158de ldr.w r8, [sp, 0x28]                              |     r8 = *(arg_28h);
    0x000158e2 ldr r3, [r4, r3]                                  |     
    0x000158e4 movs r4, 0                                        |     r4 = 0;
    0x000158e6 cmp r2, r4                                        |     
    0x000158e8 ldr r3, [r3]                                      |     r3 = *(0x2b226);
    0x000158ea str r3, [sp, 4]                                   |     var_4h = r3;
    0x000158ec mov.w r3, 0                                       |     r3 = 0;
    0x000158f0 str r4, [sp]                                      |     *(sp) = r4;
                                                                 |     if (r2 <= r4) {
    0x000158f2 ble 0x15928                                       |         goto label_14;
                                                                 |     }
    0x000158f4 mov r3, sp                                        |     r3 = sp;
    0x000158f6 bl 0x15740                                        |     r0 = fcn_00015740 (r0, r1, r2, r3);
                                                                 |     if (r0 != 0) {
    0x000158fa cbnz r0, 0x1592a                                  |         goto label_15;
                                                                 |     }
    0x000158fc ldr r2, [pc, 0x4c]                                |     
    0x000158fe ldr r3, [pc, 0x48]                                |     r3 = *(0x1594a);
    0x00015900 add r2, pc                                        |     r2 = 0x2b250;
    0x00015902 ldr r3, [r2, r3]                                  |     r3 = *(0x2b250);
    0x00015904 ldr r2, [r3]                                      |     r2 = *(0x2b250);
    0x00015906 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00015908 eors r2, r3                                       |     r2 ^= r3;
    0x0001590a mov.w r3, 0                                       |     r3 = 0;
    0x0001590e beq 0x15914                                       |     
                                                                 |     while (r2 != r3) {
    0x00015910 blx 0x8b7c                                        |         fcn_00008b7c ();
    0x00015914 ldr r3, [sp]                                      |         r3 = *(sp);
    0x00015916 mov r2, r7                                        |         r2 = r7;
    0x00015918 mov r1, r6                                        |         r1 = r6;
    0x0001591a mov r0, r5                                        |         r0 = r5;
    0x0001591c str.w r8, [sp, 0x20]                              |         __asm ("str.w r8, [arg_20h]");
    0x00015920 add sp, 8                                         |         
    0x00015922 pop.w {r4, r5, r6, r7, r8, lr}                    |         
    0x00015926 b 0x151b4                                         |         goto label_2;
                                                                 | label_14:
    0x00015928 mov r0, r4                                        |         r0 = r4;
                                                                 | label_15:
    0x0001592a ldr r2, [pc, 0x24]                                |         
    0x0001592c ldr r3, [pc, 0x18]                                |         r3 = *(0x15948);
    0x0001592e add r2, pc                                        |         r2 = 0x2b284;
    0x00015930 ldr r3, [r2, r3]                                  |         r3 = *(0x2b284);
    0x00015932 ldr r2, [r3]                                      |         r2 = *(0x2b284);
    0x00015934 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x00015936 eors r2, r3                                       |         r2 ^= r3;
    0x00015938 mov.w r3, 0                                       |         r3 = 0;
    0x0001593c bne 0x15910                                       |         
                                                                 |     }
    0x0001593e add sp, 8                                         |     
    0x00015940 pop.w {r4, r5, r6, r7, r8, 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/libupnp.so.17.1.8 @ 0x159a6 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000159a6 ()                                      | void fcn_000159a6 (int16_t arg_1h, int16_t arg_18h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h_2;
                                                                 |     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_2ch;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
                                                                 | label_4:
    0x000153b8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000153bc mov r4, r2                                        |     r4 = r2;
    0x000153be sub sp, 0x34                                      |     
    0x000153c0 ldr r2, [pc, 0x240]                               |     
    0x000153c2 mov r5, r1                                        |     r5 = r1;
    0x000153c4 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x000153c6 ldr r3, [pc, 0x240]                               |     r3 = *(0x1560a);
    0x000153c8 add r2, pc                                        |     r2 = 0x2a9d0;
    0x000153ca str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x000153cc movs r0, 4                                        |     r0 = 4;
    0x000153ce ldr.w sl, [pc, 0x23c]                             |     
    0x000153d2 ldr r3, [r2, r3]                                  |     
    0x000153d4 add sl, pc                                        |     sl = 0x2a9e6;
    0x000153d6 ldr r3, [r3]                                      |     r3 = *(0x2a9d0);
    0x000153d8 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x000153da mov.w r3, 0                                       |     r3 = 0;
    0x000153de blx 0x8e30                                        |     vfprintf_chk ()
    0x000153e2 ldr r3, [pc, 0x22c]                               |     r3 = *(0x15612);
    0x000153e4 mov r6, r0                                        |     r6 = r0;
    0x000153e6 ldr.w r3, [sl, r3]                                |     r3 = *(0x2a9e6);
    0x000153ea str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000153ec cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000153ee beq.w 0x155dc                                     |         goto label_5;
                                                                 |     }
    0x000153f2 movs r3, 0                                        |     r3 = 0;
    0x000153f4 str r3, [r0]                                      |     *(r0) = r3;
    0x000153f6 mov r0, r5                                        |     r0 = r5;
    0x000153f8 blx 0x8b40                                        |     fcn_00008b40 ();
    0x000153fc str r0, [sp]                                      |     *(sp) = r0;
    0x000153fe cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00015400 beq.w 0x155e2                                     |         goto label_6;
                                                                 |     }
    0x00015404 mov r0, r4                                        |     r0 = r4;
    0x00015406 blx 0x8b40                                        |     r0 = fcn_00008b40 ();
    0x0001540a mov r8, r0                                        |     r8 = r0;
    0x0001540c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001540e beq.w 0x155ea                                     |         goto label_7;
                                                                 |     }
    0x00015412 ldr r0, [sp, 4]                                   |     r0 = var_4h_2;
    0x00015414 bl 0x1514c                                        |     fcn_0001514c (r0);
    0x00015416 cdp2 p6, 9, c4, c10, c1, 4                        |     __asm ("cdp2 p6, 9, c4, c10, c1, 4");
    0x0001541a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001541c beq 0x154ea                                       |         goto label_2;
                                                                 |     }
    0x0001541e ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00015420 blx 0x8930                                        |     fcn_00008930 ();
    0x00015424 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x00015426 add r1, sp, 0x28                                  |     r1 += var_28h;
    0x00015428 bl 0x19470                                        |     r0 = fcn_00019470 (r0, r1);
    0x0001542c cmp r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x0001542e bne.w 0x155ee                                     |         goto label_8;
                                                                 |     }
    0x00015430 strh r6, [r3, 6]                                  |     *((r3 + 6)) = r6;
    0x00015432 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x00015434 mov r2, r5                                        |     r2 = r5;
    0x00015436 mov r1, r4                                        |     r1 = r4;
    0x00015438 add.w r0, r0, 0x248                               |     r0 += 0x248;
    0x0001543c bl 0xfacc                                         |     fcn_0000facc (r0, r1, r2);
    0x00015440 str r0, [sp, 8]                                   |     var_8h = r0;
    0x00015442 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00015444 beq.w 0x155f4                                     |         goto label_9;
                                                                 |     }
    0x00015448 bl 0xfa80                                         |     fcn_0000fa80 (r0);
    0x0001544c ldr r3, [pc, 0x1c4]                               |     
    0x0001544e mov r5, r0                                        |     r5 = r0;
    0x00015450 add r3, pc                                        |     r3 = 0x2aa68;
    0x00015452 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00015454 ldr r3, [pc, 0x1c0]                               |     
    0x00015456 add r3, pc                                        |     r3 = 0x2aa72;
    0x00015458 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x0001545a ldr r3, [pc, 0x1c0]                               |     
    0x0001545c add r3, pc                                        |     r3 = 0x2aa7e;
    0x0001545e str r3, [sp, 0x20]                                |     var_20h = r3;
                                                                 | label_1:
    0x00015460 ldr.w fp, [r6]                                    |     fp = *(r6);
                                                                 |     if (r5 == 0) {
    0x00015464 cbnz r5, 0x1546a                                  |         
    0x00015466 mov fp, r5                                        |         
    0x00015468 b 0x15586                                         |         goto label_3;
                                                                 |     }
    0x0001546a movs r0, 0x48                                     |     r0 = 0x48;
    0x0001546c blx 0x8e30                                        |     r0 = vfprintf_chk ()
    0x00015470 mov r4, r0                                        |     r4 = r0;
    0x00015472 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00015474 beq 0x154ea                                       |         goto label_2;
                                                                 |     }
    0x00015476 add.w r3, fp, 1                                   |     r3 += arg_1h;
    0x0001547a movs r2, 0x2b                                     |     r2 = 0x2b;
    0x0001547c str r3, [r6]                                      |     *(r6) = r3;
    0x0001547e mov r1, r5                                        |     r1 = r5;
    0x00015480 ldr r3, [sp]                                      |     r3 = *(sp);
    0x00015482 movs r7, 0                                        |     r7 = 0;
    0x00015484 str r6, [r0, 0x40]                                |     *((r0 + 0x40)) = r6;
    0x00015486 add.w fp, r5, 0x44                                |     
    0x0001548a str.w sb, [r0]                                    |     __asm ("str.w sb, [r0]");
    0x0001548e strd r8, r3, [r0, 8]                              |     __asm ("strd r8, r3, [r0, 8]");
    0x00015492 adds r0, 0x10                                     |     r0 += 0x10;
    0x00015494 ldr r3, [sp, 4]                                   |     r3 = var_4h_2;
    0x00015496 str r3, [r0, -0xc]                                |     *((r0 - 0xc)) = r3;
    0x0001549a blx 0x9174                                        |     fcn_00009174 ();
    0x0001549e mov r0, r7                                        |     r0 = r7;
    0x000154a0 strb.w r7, [r4, 0x3b]                             |     *((r4 + 0x3b)) = r7;
    0x000154a4 blx 0x8a6c                                        |     fcn_00008a6c ();
    0x000154a8 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000154aa str r0, [r4, 0x3c]                                |     *((r4 + 0x3c)) = r0;
    0x000154ac mov r0, r7                                        |     r0 = r7;
    0x000154ae str r3, [r4, 0x44]                                |     *((r4 + 0x44)) = r3;
    0x000154b0 blx 0x8a6c                                        |     fcn_00008a6c ();
    0x000154b4 str r0, [sp, 0x14]                                |     var_14h = r0;
                                                                 | label_0:
    0x000154b6 mov r0, fp                                        |     r0 = fp;
    0x000154b8 bl 0x9a28                                         |     r0 = fcn_00009a28 (r0);
    0x000154bc cmp r0, 1                                         |     
                                                                 |     if (r0 <= 1) {
    0x000154be ble 0x154da                                       |         goto label_10;
                                                                 |     }
    0x000154c0 mov r0, fp                                        |     r0 = fp;
    0x000154c2 bl 0x99ac                                         |     r0 = fcn_000099ac (r0);
                                                                 |     if (r0 != 0) {
    0x000154c6 cbz r0, 0x154cc                                   |         
    0x000154c8 ldr r7, [r0, 4]                                   |         r7 = *((r0 + 4));
                                                                 |         if (r7 != 0) {
    0x000154ca cbnz r7, 0x154f0                                  |             goto label_11;
                                                                 |         }
                                                                 |     }
    0x000154cc ldr r3, [pc, 0x150]                               |     r3 = *(0x15620);
    0x000154ce ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x000154d0 ldr.w r3, [sl, r3]                                |     r3 = *((sl + r3));
    0x000154d2 adds r0, 3                                        |     r0 += 3;
    0x000154d4 ldr r1, [r3]                                      |     r1 = *(0x15620);
    0x000154d6 blx 0x9620                                        |     fcn_00009620 ();
                                                                 |     do {
                                                                 | label_10:
    0x000154da movs r0, 0x1c                                     |         r0 = 0x1c;
    0x000154dc blx 0x8e30                                        |         r0 = vfprintf_chk ()
    0x000154e0 mov r7, r0                                        |         r7 = r0;
                                                                 |         if (r0 != 0) {
    0x000154e2 cbnz r0, 0x15534                                  |             goto label_12;
                                                                 |         }
    0x000154e4 mov r0, r4                                        |         r0 = r4;
    0x000154e6 blx 0x894c                                        |         fcn_0000894c ();
                                                                 | label_2:
    0x000154ea mvn fp, 0x67                                      |         
    0x000154ee b 0x15586                                         |         goto label_3;
                                                                 | label_11:
    0x000154f0 ldr r3, [r7, 8]                                   |         r3 = *((r7 + 8));
    0x000154f2 mov r0, fp                                        |         r0 = fp;
    0x000154f4 ldr r2, [r3, 4]                                   |         r2 = *((r3 + 4));
    0x000154f6 str r2, [sp, 0x24]                                |         var_24h = r2;
    0x000154f8 bl 0x9a28                                         |         fcn_00009a28 (r0);
    0x000154fc ldr r3, [pc, 0x124]                               |         
    0x000154fe ldr r2, [sp, 0x24]                                |         r2 = var_24h;
    0x00015500 ldr.w r3, [sl, r3]                                |         r3 = *((sl + r3));
    0x00015502 adds r0, 3                                        |         r0 += 3;
    0x00015504 ldr r3, [r3]                                      |         r3 = *(0x15624);
    0x00015506 cmp r0, r3                                        |         
                                                                 |         if (r0 > r3) {
    0x00015508 bgt 0x1551c                                       |             goto label_13;
                                                                 |         }
    0x0001550a ldr r0, [pc, 0x11c]                               |         
    0x0001550c ldr r3, [r2, 0x3c]                                |         r3 = *((r2 + 0x3c));
    0x0001550e ldr r1, [sp, 0x14]                                |         r1 = var_14h;
    0x00015510 ldr.w r0, [sl, r0]                                |         r0 = *((sl + r0));
    0x00015514 subs r3, r1, r3                                   |         r3 = r1 - r3;
    0x00015516 ldr r0, [r0]                                      |         r0 = *(0x1562a);
    0x00015518 cmp r3, r0                                        |         
    0x0001551a ble 0x154da                                       |         
                                                                 |     } while (r3 <= r0);
                                                                 | label_13:
    0x0001551c mov r0, r2                                        |     r0 = r2;
    0x0001551e bl 0x14e28                                        |     fcn_00014e28 (r0);
    0x00015522 ldr r0, [r7, 8]                                   |     r0 = *((r7 + 8));
    0x00015524 blx 0x894c                                        |     fcn_0000894c ();
    0x00015528 movs r2, 0                                        |     r2 = 0;
    0x0001552a mov r1, r7                                        |     r1 = r7;
    0x0001552c mov r0, fp                                        |     r0 = fp;
    0x0001552e bl 0x993a                                         |     fcn_0000993a (r0, r1, r2, r3);
    0x00015532 b 0x154b6                                         |     goto label_0;
                                                                 | label_12:
    0x00015534 movs r2, 0x1c                                     |     r2 = 0x1c;
    0x00015536 movs r1, 0                                        |     r1 = 0;
    0x00015538 blx 0x9144                                        |     fcn_00009144 ();
    0x0001553c mov r2, r4                                        |     r2 = r4;
    0x0001553e ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x00015540 mov r0, r7                                        |     r0 = r7;
    0x00015542 bl 0xa7d4                                         |     fcn_0000a7d4 (r0, r1, r2);
    0x00015546 ldr r1, [sp, 0x20]                                |     r1 = var_20h;
    0x00015548 mov r0, r7                                        |     r0 = r7;
    0x0001554a bl 0xa7fc                                         |     fcn_0000a7fc (r0, r1);
    0x0001554e movs r1, 1                                        |     r1 = 1;
    0x00015550 mov r0, r7                                        |     r0 = r7;
    0x00015552 bl 0xa7ec                                         |     fcn_0000a7ec (r0, r1);
    0x00015556 mov r1, r7                                        |     r1 = r7;
    0x00015558 mov r0, fp                                        |     r0 = fp;
    0x0001555a bl 0x992e                                         |     r0 = fcn_0000992e (r0, r1);
    0x0001555e mov r4, r0                                        |     r4 = r0;
    0x00015560 mov r0, fp                                        |     r0 = fp;
    0x00015562 bl 0x9a28                                         |     r0 = fcn_00009a28 (r0);
    0x00015566 cmp r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x00015568 bne 0x155d0                                       |         goto label_14;
                                                                 |     }
    0x0001556a ldr r2, [pc, 0xc0]                                |     r2 = *(0x1562e);
    0x0001556c mov r1, r7                                        |     r1 = r7;
    0x0001556e ldr.w r0, [sl, r2]                                |     r0 = *((sl + r2));
    0x00015572 movs r2, 0                                        |     r2 = 0;
    0x00015574 bl 0xa174                                         |     r0 = fcn_0000a174 (r0, r1, r2);
    0x00015578 mov fp, r0                                        |     
                                                                 |     if (r0 == 0) {
    0x0001557a cbz r0, 0x155c6                                   |         goto label_15;
                                                                 |     }
    0x0001557c cmp.w r0, 0x20000000                              |     
    0x00015580 it eq                                             |     
                                                                 |     if (r0 != 0x20000000) {
    0x00015582 mvneq fp, 0x67                                    |         
                                                                 |     }
                                                                 | label_3:
    0x00015586 ldr r3, [r6]                                      |     r3 = *(r6);
                                                                 |     if (r3 != 0) {
    0x00015588 cbnz r3, 0x155a8                                  |         goto label_16;
                                                                 |     }
    0x0001558a mov r0, sb                                        |     r0 = sb;
    0x0001558c blx 0x894c                                        |     fcn_0000894c ();
    0x00015590 ldr r0, [sp, 4]                                   |     r0 = var_4h_2;
    0x00015592 blx 0x8fa8                                        |     fcn_00008fa8 ();
    0x00015596 mov r0, r8                                        |     r0 = r8;
    0x00015598 blx 0x894c                                        |     fcn_0000894c ();
    0x0001559c ldr r0, [sp]                                      |     r0 = *(sp);
    0x0001559e blx 0x894c                                        |     fcn_0000894c ();
    0x000155a2 mov r0, r6                                        |     r0 = r6;
    0x000155a4 blx 0x894c                                        |     fcn_0000894c ();
                                                                 |     do {
                                                                 | label_16:
    0x000155a8 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x000155aa blx 0x920c                                        |         fcn_0000920c ();
    0x000155ae ldr r2, [pc, 0x80]                                |         
    0x000155b0 ldr r3, [pc, 0x54]                                |         r3 = *(0x15608);
    0x000155b2 add r2, pc                                        |         r2 = 0x2abe8;
    0x000155b4 ldr r3, [r2, r3]                                  |         r3 = *(0x2abe8);
    0x000155b6 ldr r2, [r3]                                      |         r2 = *(0x2abe8);
    0x000155b8 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x000155ba eors r2, r3                                       |         r2 ^= r3;
    0x000155bc mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x000155c0 beq 0x155fa                                       |             goto label_17;
                                                                 |         }
    0x000155c2 blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 |         if (r4 != 0) {
                                                                 | label_15:
    0x000155c6 cbz r4, 0x155d0                                   |             
    0x000155c8 ldr r3, [r4, 8]                                   |             r3 = *((r4 + 8));
    0x000155ca mvn r2, 0xe0000000                                |             r2 = ~0xe0000000;
    0x000155ce str r2, [r3, 0x18]                                |             *((r3 + 0x18)) = r2;
                                                                 |         }
                                                                 | label_14:
    0x000155d0 mov r1, r5                                        |         r1 = r5;
    0x000155d2 ldr r0, [sp, 8]                                   |         r0 = var_8h;
    0x000155d4 bl 0xf9f8                                         |         r0 = fcn_0000f9f8 (r0, r1);
    0x000155d8 mov r5, r0                                        |         r5 = r0;
    0x000155da b 0x15460                                         |         goto label_1;
                                                                 | label_5:
    0x000155dc mvn fp, 0x67                                      |         
    0x000155e0 b 0x155a8                                         |         
                                                                 |     } while (1);
                                                                 | label_6:
    0x000155e2 ldr.w sb, [sp]                                    |     sb = *(sp);
    0x000155e6 mov r8, sb                                        |     r8 = sb;
    0x000155e8 b 0x154ea                                         |     goto label_2;
                                                                 | label_7:
    0x000155ea mov sb, r0                                        |     sb = r0;
    0x000155ec b 0x154ea                                         |     goto label_2;
                                                                 | label_8:
    0x000155ee mvn fp, 0x63                                      |     
    0x000155f2 b 0x15586                                         |     goto label_3;
                                                                 | label_9:
    0x000155f4 mvn fp, 0x6e                                      |     
    0x000155f8 b 0x15586                                         |     goto label_3;
                                                                 | label_17:
    0x000155fa mov r0, fp                                        |     r0 = fp;
    0x000155fc add sp, 0x34                                      |     
    0x000155fe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
    0x000159a6 push {r0, r1, r4, r5, r6, lr}                     |     
    0x000159a8 mov r6, r2                                        |     r6 = r2;
    0x000159aa ldr r2, [pc, 0x64]                                |     
    0x000159ac mov r4, r0                                        |     r4 = r0;
    0x000159ae mov r0, r3                                        |     r0 = r3;
    0x000159b0 mov r5, r1                                        |     r5 = r1;
    0x000159b2 ldr r3, [pc, 0x60]                                |     r3 = *(0x15a16);
    0x000159b4 add r2, pc                                        |     r2 = 0x2b3ca;
    0x000159b6 ldr r3, [r2, r3]                                  |     
    0x000159b8 ldrd r1, r2, [sp, 0x18]                           |     __asm ("ldrd r1, r2, [arg_18h]");
    0x000159bc ldr r3, [r3]                                      |     r3 = *(0x2b3ca);
    0x000159be str r3, [sp, 4]                                   |     var_4h = r3;
    0x000159c0 mov.w r3, 0                                       |     r3 = 0;
    0x000159c4 movs r3, 0                                        |     r3 = 0;
    0x000159c6 str r3, [sp]                                      |     *(sp) = r3;
    0x000159c8 mov r3, sp                                        |     r3 = sp;
    0x000159ca bl 0x15740                                        |     r0 = fcn_00015740 (r0, r1, r2, r3);
                                                                 |     if (r0 != 0) {
    0x000159ce cbnz r0, 0x159f8                                  |         goto label_18;
                                                                 |     }
    0x000159d0 ldr r2, [pc, 0x44]                                |     
    0x000159d2 ldr r3, [pc, 0x40]                                |     r3 = *(0x15a16);
    0x000159d4 add r2, pc                                        |     r2 = 0x2b3f0;
    0x000159d6 ldr r3, [r2, r3]                                  |     r3 = *(0x2b3f0);
    0x000159d8 ldr r2, [r3]                                      |     r2 = *(0x2b3f0);
    0x000159da ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x000159dc eors r2, r3                                       |     r2 ^= r3;
    0x000159de mov.w r3, 0                                       |     r3 = 0;
    0x000159e2 beq 0x159e8                                       |     
                                                                 |     while (r2 != r3) {
    0x000159e4 blx 0x8b7c                                        |         fcn_00008b7c ();
    0x000159e8 ldr r3, [sp]                                      |         r3 = *(sp);
    0x000159ea mov r2, r6                                        |         r2 = r6;
    0x000159ec mov r1, r5                                        |         r1 = r5;
    0x000159ee mov r0, r4                                        |         r0 = r4;
    0x000159f0 add sp, 8                                         |         
    0x000159f2 pop.w {r4, r5, r6, lr}                            |         
    0x000159f6 b 0x153b8                                         |         goto label_4;
                                                                 | label_18:
    0x000159f8 ldr r2, [pc, 0x20]                                |         
    0x000159fa ldr r3, [pc, 0x18]                                |         r3 = *(0x15a16);
    0x000159fc add r2, pc                                        |         r2 = 0x2b41c;
    0x000159fe ldr r3, [r2, r3]                                  |         r3 = *(0x2b41c);
    0x00015a00 ldr r2, [r3]                                      |         r2 = *(0x2b41c);
    0x00015a02 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x00015a04 eors r2, r3                                       |         r2 ^= r3;
    0x00015a06 mov.w r3, 0                                       |         r3 = 0;
    0x00015a0a bne 0x159e4                                       |         
                                                                 |     }
    0x00015a0c add sp, 8                                         |     
    0x00015a0e pop {r4, r5, r6, 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/libupnp.so.17.1.8 @ 0x1633e */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0001633e ()                                      | void fcn_0001633e (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0001633e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00016342 mov r6, r2                                        |     r6 = r2;
    0x00016344 ldr r2, [pc, 0xf4]                                |     
    0x00016346 sub sp, 0x2c                                      |     
    0x00016348 add.w r8, sp, 8                                   |     r8 += var_8h;
    0x0001634c mov r7, r1                                        |     r7 = r1;
    0x0001634e ldr r3, [pc, 0xf0]                                |     r3 = *(0x16442);
    0x00016350 mov sl, r0                                        |     sl = r0;
    0x00016352 add r2, pc                                        |     r2 = 0x2c792;
    0x00016354 ldr.w fp, [pc, 0xec]                              |     
    0x00016358 movs r1, 0                                        |     r1 = 0;
    0x0001635a mov r0, r8                                        |     r0 = r8;
    0x0001635c ldr r3, [r2, r3]                                  |     
    0x0001635e movs r2, 0x1c                                     |     r2 = 0x1c;
    0x00016360 add fp, pc                                        |     fp = 0x2c7a8;
    0x00016362 ldr r3, [r3]                                      |     r3 = *(0x2c792);
    0x00016364 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00016366 mov.w r3, 0                                       |     r3 = 0;
    0x0001636a blx 0x9144                                        |     fcn_00009144 ();
    0x0001636e adds r3, r7, 1                                    |     r3 = r7 + 1;
                                                                 |     if (r3 == r7) {
    0x00016370 beq 0x16430                                       |         goto label_1;
                                                                 |     }
    0x00016372 blx 0x9684                                        |     r0 = fcn_00009684 ();
    0x00016376 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x00016378 cbz r0, 0x1638a                                   |         
    0x0001637a movs r0, 0xc                                      |         r0 = 0xc;
    0x0001637c blx 0x8e30                                        |         r0 = vfprintf_chk ()
    0x00016380 mov r4, r0                                        |         r4 = r0;
                                                                 |         if (r0 != 0) {
    0x00016382 cbnz r0, 0x16390                                  |             goto label_2;
                                                                 |         }
    0x00016384 mov r0, r5                                        |         r0 = r5;
    0x00016386 blx 0x894c                                        |         fcn_0000894c ();
                                                                 |     }
    0x0001638a mvn r5, 0x67                                      |     r5 = ~0x67;
    0x0001638e b 0x1640e                                         |     goto label_0;
                                                                 | label_2:
    0x00016390 mov.w sb, 0                                       |     sb = 0;
    0x00016394 mov r1, sb                                        |     r1 = sb;
    0x00016396 strd sb, sb, [r0]                                 |     __asm ("strd sb, sb, [r0]");
    0x0001639a str.w sb, [r0, 8]                                 |     __asm ("str.w sb, [r0, 8]");
    0x0001639e mov r0, r5                                        |     r0 = r5;
    0x000163a0 blx 0x8b00                                        |     fcn_00008b00 ();
    0x000163a4 mov r1, r7                                        |     r1 = r7;
    0x000163a6 mov r0, r5                                        |     r0 = r5;
    0x000163a8 blx 0x8d74                                        |     fcn_00008d74 ();
    0x000163ac mov r0, r6                                        |     r0 = r6;
    0x000163ae bl 0xf73e                                         |     fcn_0000f73e (r0);
    0x000163b0 vst3.16 {d20[0], d21[0], d22[0]}, [r6], r1        |     __asm ("vst3.16 {d20[0], d21[0], d22[0]}, [r6], r1");
    0x000163b4 mov r0, r5                                        |     r0 = r5;
    0x000163b6 blx 0x8b94                                        |     fcn_00008b94 ();
    0x000163ba mov r0, r6                                        |     r0 = r6;
    0x000163bc bl 0xf7ce                                         |     r0 = fcn_0000f7ce (r0);
    0x000163c0 mov r1, r0                                        |     r1 = r0;
    0x000163c2 mov r0, r5                                        |     r0 = r5;
    0x000163c4 blx 0x8f3c                                        |     fcn_00008f3c ();
    0x000163c8 ldr r1, [pc, 0x7c]                                |     
    0x000163ca mov r2, r4                                        |     r2 = r4;
    0x000163cc str r5, [r4, 8]                                   |     *((r4 + 8)) = r5;
    0x000163ce mov r0, r8                                        |     r0 = r8;
    0x000163d0 str.w sl, [r4]                                    |     __asm ("str.w sl, [r4]");
    0x000163d4 add r1, pc                                        |     r1 = 0x2c820;
    0x000163d6 bl 0xa7d4                                         |     fcn_0000a7d4 (r0, r1, r2);
    0x000163da ldr r1, [pc, 0x70]                                |     
    0x000163dc mov r0, r8                                        |     r0 = r8;
    0x000163de add r1, pc                                        |     r1 = 0x2c830;
    0x000163e0 bl 0xa7fc                                         |     fcn_0000a7fc (r0, r1);
    0x000163e4 movs r1, 1                                        |     r1 = 1;
    0x000163e6 mov r0, r8                                        |     r0 = r8;
    0x000163e8 bl 0xa7ec                                         |     fcn_0000a7ec (r0, r1);
    0x000163ec ldr r3, [pc, 0x60]                                |     r3 = *(0x16450);
    0x000163ee movs r2, 1                                        |     r2 = 1;
    0x000163f0 sub.w r1, r7, 0xa                                 |     r1 = r7 - 0xa;
    0x000163f4 ldr.w r0, [fp, r3]                                |     r0 = *((fp + r3));
    0x000163f8 adds r3, r4, 4                                    |     r3 = r4 + 4;
    0x000163fa strd sb, r3, [sp]                                 |     __asm ("strd sb, r3, [sp]");
    0x000163fe mov r3, r8                                        |     r3 = r8;
    0x00016400 bl 0xac38                                         |     r0 = fcn_0000ac38 (r0, r1, r2, r3, r4);
    0x00016404 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x00016406 cbz r0, 0x16426                                   |         goto label_3;
                                                                 |     }
    0x00016408 mov r0, r4                                        |     r0 = r4;
    0x0001640a bl 0x16324                                        |     fcn_00016324 (r0);
                                                                 |     do {
                                                                 | label_0:
    0x0001640e ldr r2, [pc, 0x44]                                |         
    0x00016410 ldr r3, [pc, 0x2c]                                |         r3 = *(0x16440);
    0x00016412 add r2, pc                                        |         r2 = 0x2c86c;
    0x00016414 ldr r3, [r2, r3]                                  |         r3 = *(0x2c86c);
    0x00016416 ldr r2, [r3]                                      |         r2 = *(0x2c86c);
    0x00016418 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x0001641a eors r2, r3                                       |         r2 ^= r3;
    0x0001641c mov.w r3, 0                                       |         r3 = 0;
    0x0001641e lsls r0, r0, 0xc                                  |         r0 <<= 0xc;
                                                                 |         if (r0 == r0) {
    0x00016420 beq 0x16434                                       |             goto label_4;
                                                                 |         }
    0x00016422 blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 | label_3:
    0x00016426 ldr r1, [r4, 4]                                   |         r1 = *((r4 + 4));
    0x00016428 mov r0, r6                                        |         r0 = r6;
    0x0001642a bl 0xf738                                         |         fcn_0000f738 (r0, r1);
    0x0001642e b 0x1640e                                         |         
                                                                 |     } while (1);
                                                                 | label_1:
    0x00016430 movs r5, 0                                        |     r5 = 0;
    0x00016432 b 0x1640e                                         |     goto label_0;
                                                                 | label_4:
    0x00016434 mov r0, r5                                        |     r0 = r5;
    0x00016436 add sp, 0x2c                                      |     
    0x00016438 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x18e2e */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00018e2e ()                                      | void fcn_00018e2e (int16_t arg_1d8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_78h;
                                                                 |     int16_t var_7ah;
                                                                 |     int16_t var_7ch;
                                                                 |     int16_t var_f8h;
                                                                 |     int16_t var_1ach;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00018e2e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00018e32 sub sp, 0x1b4                                     |     
    0x00018e34 ldrd r6, r3, [sp, 0x1d8]                          |     __asm ("ldrd r6, r3, [arg_1d8h]");
    0x00018e38 mov r8, r2                                        |     r8 = r2;
    0x00018e3a mov r5, r1                                        |     r5 = r1;
    0x00018e3c add.w sl, sp, 0xf8                                |     sl += var_f8h;
    0x00018e40 ldr r2, [pc, 0x1fc]                               |     
    0x00018e42 mov r4, r0                                        |     r4 = r0;
    0x00018e44 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00018e46 movs r1, 0                                        |     r1 = 0;
    0x00018e48 ldr r3, [pc, 0x1f8]                               |     r3 = *(0x19044);
    0x00018e4a mov r0, sl                                        |     r0 = sl;
    0x00018e4c add r2, pc                                        |     r2 = 0x31e90;
    0x00018e4e ldr.w fp, [pc, 0x1f8]                             |     
    0x00018e52 ldr r3, [r2, r3]                                  |     
    0x00018e54 movs r2, 0xb4                                     |     r2 = 0xb4;
    0x00018e56 add fp, pc                                        |     fp = 0x31ea4;
    0x00018e58 ldr r3, [r3]                                      |     r3 = *(0x31e90);
    0x00018e5a str r3, [sp, 0x1ac]                               |     var_1ach = r3;
    0x00018e5c mov.w r3, 0                                       |     r3 = 0;
    0x00018e60 blx 0x9144                                        |     fcn_00009144 ();
                                                                 |     if (r5 != 0) {
    0x00018e64 cbz r5, 0x18e6e                                   |         
                                                                 |         if (r4 == 0) {
    0x00018e66 cbz r4, 0x18e74                                   |             goto label_6;
                                                                 |         }
    0x00018e68 cmp.w r8, 0                                       |         
                                                                 |         if (r8 != 0) {
    0x00018e6c bne 0x18ed2                                       |             goto label_7;
                                                                 |         }
                                                                 |     }
                                                                 | label_1:
    0x00018e6e mvn r4, 0x64                                      |     r4 = ~0x64;
    0x00018e72 b 0x18f80                                         |     goto label_2;
                                                                 | label_6:
    0x00018e74 mov r1, r6                                        |     r1 = r6;
    0x00018e76 mov r0, r5                                        |     r0 = r5;
    0x00018e78 blx 0x8c98                                        |     r0 = ixmlDocument_createTextNode ();
    0x00018e7c mov r4, r0                                        |     r4 = r0;
    0x00018e7e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00018e80 bne 0x18f80                                       |         goto label_2;
                                                                 |     }
    0x00018e82 blx 0x8a6c                                        |     r0 = fcn_00008a6c ();
    0x00018e86 mov r7, r0                                        |     r7 = r0;
    0x00018e88 cmp.w r8, 0                                       |     
    0x00018e8a lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 == r0) {
    0x00018e8c beq.w 0x18ffe                                     |         goto label_8;
                                                                 |     }
                                                                 |     do {
    0x00018e90 movs r1, 0x2e                                     |         r1 = 0x2e;
    0x00018e92 mov r0, r5                                        |         r0 = r5;
    0x00018e94 blx 0x9354                                        |         r0 = fcn_00009354 ();
    0x00018e98 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00018e9a beq.w 0x18fee                                     |             goto label_9;
                                                                 |         }
    0x00018e9e ldr r1, [pc, 0x1ac]                               |         
    0x00018ea0 add r1, pc                                        |         r1 = 0x31ef2;
    0x00018ea2 blx 0x8c04                                        |         r0 = fcn_00008c04 ();
    0x00018ea6 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00018ea8 bne.w 0x18fee                                     |             goto label_9;
                                                                 |         }
    0x00018eac movs r1, 0x2f                                     |         r1 = 0x2f;
    0x00018eae mov r0, r5                                        |         r0 = r5;
    0x00018eb0 blx 0x9354                                        |         r0 = fcn_00009354 ();
    0x00018eb4 cmp r0, 0                                         |         
    0x00018eb6 it ne                                             |         
                                                                 |         if (r0 == 0) {
    0x00018eb8 movne r5, r0                                      |             r5 = r0;
                                                                 |         }
    0x00018eba mov r0, r5                                        |         r0 = r5;
    0x00018ebc blx 0x8f9c                                        |         r0 = fcn_00008f9c ();
    0x00018ec0 cmp r0, 0xb3                                      |         
                                                                 |         if (r0 < 0xb3) {
    0x00018ec2 bls.w 0x18ff8                                     |             goto label_10;
                                                                 |         }
                                                                 | label_4:
    0x00018ec6 ldr r0, [r6]                                      |         r0 = *(r6);
    0x00018ec8 mvn r4, 0x75                                      |         r4 = ~0x75;
    0x00018ecc blx 0x8914                                        |         ixmlCloneDOMString ();
    0x00018ed0 b 0x18f80                                         |         goto label_2;
                                                                 | label_7:
    0x00018ed2 cmp r4, 1                                         |         
                                                                 |         if (r4 != 1) {
    0x00018ed4 bne 0x18f5c                                       |             goto label_11;
                                                                 |         }
    0x00018ed6 ldr r1, [pc, 0x178]                               |         
    0x00018ed8 mov r0, r5                                        |         r0 = r5;
    0x00018eda add r1, pc                                        |         r1 = 0x31f30;
    0x00018edc blx 0x9420                                        |         r0 = fcn_00009420 ();
    0x00018ee0 mov sb, r0                                        |         sb = r0;
    0x00018ee2 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00018ee4 beq.w 0x1901c                                     |             goto label_12;
                                                                 |         }
    0x00018ee8 blx 0x91dc                                        |         r0 = fcn_000091dc ();
    0x00018eec adds r3, r0, 1                                    |         r3 = r0 + 1;
                                                                 |         if (r3 == r0) {
    0x00018eee beq.w 0x19020                                     |             goto label_13;
                                                                 |         }
    0x00018ef2 add.w r8, sp, 0x10                                |         r8 += var_10h;
    0x00018ef6 mov r1, r8                                        |         r1 = r8;
    0x00018ef8 blx 0x9540                                        |         fcn_00009540 ();
    0x00018efc adds r0, 1                                        |         r0++;
                                                                 |         if (r0 == 1) {
    0x00018efe beq.w 0x19020                                     |             goto label_13;
                                                                 |         }
    0x00018f02 ldr r2, [sp, 0x40]                                |         r2 = var_40h;
    0x00018f04 ldr r7, [sp, 0x60]                                |         r7 = var_60h;
    0x00018f06 adds r0, r2, 1                                    |         r0 = r2 + 1;
    0x00018f08 str r2, [sp, 0xc]                                 |         var_ch = r2;
    0x00018f0a blx 0x8e30                                        |         r0 = vfprintf_chk ()
    0x00018f0e mov r8, r0                                        |         r8 = r0;
    0x00018f10 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00018f12 beq.w 0x19026                                     |             goto label_14;
                                                                 |         }
    0x00018f16 ldr r2, [sp, 0xc]                                 |         r2 = var_ch;
    0x00018f18 mov r3, sb                                        |         r3 = sb;
    0x00018f1a mov r1, r4                                        |         r1 = r4;
    0x00018f1c blx 0x8d8c                                        |         fcn_00008d8c ();
    0x00018f20 ldr r2, [sp, 0xc]                                 |         r2 = var_ch;
    0x00018f22 cmp r2, r0                                        |         
                                                                 |         if (r2 != r0) {
    0x00018f24 bne 0x18f54                                       |             goto label_15;
                                                                 |         }
    0x00018f26 movs r3, 0                                        |         r3 = 0;
    0x00018f28 mov r1, r6                                        |         r1 = r6;
    0x00018f2a strb.w r3, [r8, r2]                               |         *((r8 + r2)) = r3;
    0x00018f2e mov r0, r8                                        |         r0 = r8;
    0x00018f30 blx 0x8bd0                                        |         fcn_00008bd0 ();
    0x00018f34 movs r3, 0                                        |         r3 = 0;
    0x00018f36 mov r4, r0                                        |         r4 = r0;
                                                                 | label_0:
    0x00018f38 mov r0, r8                                        |         r0 = r8;
    0x00018f3a str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x00018f3c blx 0x894c                                        |         fcn_0000894c ();
    0x00018f40 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
                                                                 | label_5:
    0x00018f42 mov r0, sb                                        |         r0 = sb;
    0x00018f44 str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x00018f46 blx 0x926c                                        |         fcn_0000926c ();
    0x00018f4a ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
                                                                 |         if (r3 != 0) {
    0x00018f4c cbnz r3, 0x18f80                                  |             goto label_2;
                                                                 |         }
    0x00018f4e cmp r4, 0                                         |         
    0x00018f50 beq 0x18e90                                       |         
                                                                 |     } while (r4 == 0);
    0x00018f52 b 0x18f74                                         |     goto label_16;
                                                                 | label_15:
    0x00018f54 mov r3, r4                                        |     r3 = r4;
    0x00018f56 mvn r4, 0x1f6                                     |     r4 = ~0x1f6;
    0x00018f5a b 0x18f38                                         |     goto label_0;
                                                                 | label_11:
    0x00018f5c cmp r4, 2                                         |     
                                                                 |     if (r4 != 2) {
    0x00018f5e bne 0x18e6e                                       |         goto label_1;
                                                                 |     }
    0x00018f60 movs r0, 0                                        |     r0 = 0;
    0x00018f62 blx 0x8a6c                                        |     fcn_00008a6c ();
    0x00018f66 mov r1, r6                                        |     r1 = r6;
    0x00018f68 mov r7, r0                                        |     r7 = r0;
    0x00018f6a mov r0, r5                                        |     r0 = r5;
    0x00018f6c blx 0x8bd0                                        |     r0 = fcn_00008bd0 ();
    0x00018f70 mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 == 0) {
    0x00018f72 cbz r0, 0x18f98                                   |         goto label_17;
                                                                 |     }
                                                                 | label_16:
    0x00018f74 cmp r4, 0x66                                      |     
    0x00018f76 ite eq                                            |     
                                                                 |     if (r4 != 0x66) {
    0x00018f78 mvneq r4, 0x67                                    |         r4 = ~0x67;
                                                                 |     }
                                                                 |     if (r4 != 0x66) {
    0x00018f7c mvn r4, 0x6a                                      |         r4 = ~0x6a;
                                                                 |     }
    0x00018f7e lsls r2, r5, 0x11                                 |     r2 = r5 << 0x11;
                                                                 |     do {
                                                                 | label_2:
    0x00018f80 ldr r2, [pc, 0xd0]                                |         
    0x00018f82 ldr r3, [pc, 0xc0]                                |         r3 = *(0x19046);
    0x00018f84 add r2, pc                                        |         r2 = 0x31fdc;
    0x00018f86 ldr r3, [r2, r3]                                  |         r3 = *(0x31fdc);
    0x00018f88 ldr r2, [r3]                                      |         r2 = *(0x31fdc);
    0x00018f8a ldr r3, [sp, 0x1ac]                               |         r3 = var_1ach;
    0x00018f8c eors r2, r3                                       |         r2 ^= r3;
    0x00018f8e mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x00018f92 beq 0x1902e                                       |             goto label_18;
                                                                 |         }
    0x00018f94 blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 | label_17:
    0x00018f98 ldr r1, [pc, 0xbc]                                |         
    0x00018f9a movs r2, 0xb3                                     |         r2 = 0xb3;
    0x00018f9c add r1, pc                                        |         r1 = 0x31ff8;
                                                                 | label_3:
    0x00018f9e add r4, sp, 0x78                                  |         r4 += var_78h;
    0x00018fa0 mov r0, sl                                        |         r0 = sl;
    0x00018fa2 blx 0x9174                                        |         fcn_00009174 ();
    0x00018fa6 movs r2, 0x80                                     |         r2 = 0x80;
    0x00018fa8 movs r1, 0                                        |         r1 = 0;
    0x00018faa mov r0, r4                                        |         r0 = r4;
    0x00018fac blx 0x9144                                        |         fcn_00009144 ();
    0x00018fb0 ldr r3, [pc, 0xa8]                                |         r3 = *(0x1905c);
    0x00018fb2 movs r0, 2                                        |         r0 = 2;
    0x00018fb4 add r2, sp, 0x7c                                  |         r2 += var_7ch;
    0x00018fb6 strh.w r0, [sp, 0x78]                             |         var_78h = r0;
    0x00018fba ldr.w r1, [fp, r3]                                |         r1 = *((fp + r3));
    0x00018fbe blx 0x89ec                                        |         pthread_self ();
    0x00018fc2 ldr r3, [pc, 0x9c]                                |         r3 = *(0x19062);
    0x00018fc4 mov r1, r4                                        |         r1 = r4;
    0x00018fc6 mov r2, sl                                        |         r2 = sl;
    0x00018fc8 ldr.w r3, [fp, r3]                                |         r3 = *((fp + r3));
    0x00018fcc ldrh r3, [r3]                                     |         r3 = *(r3);
    0x00018fce rev16 r3, r3                                      |         __asm ("rev16 r3, r3");
    0x00018fd0 strh.w r3, [sp, 0x7a]                             |         var_7ah = r3;
    0x00018fd4 ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x00018fd6 str r3, [sp]                                      |         *(sp) = r3;
    0x00018fd8 mov r3, r7                                        |         r3 = r7;
    0x00018fda ldr r0, [r6]                                      |         r0 = *(r6);
    0x00018fdc bl 0x1c7f4                                        |         r0 = fcn_0001c7f4 (r0, r1, r2, r3, r4);
    0x00018fe0 mov r4, r0                                        |         r4 = r0;
    0x00018fe2 cmp r0, 0                                         |         
    0x00018fe4 beq 0x18f80                                       |         
                                                                 |     } while (r0 == 0);
    0x00018fe6 ldr r0, [r6]                                      |     r0 = *(r6);
    0x00018fe8 blx 0x8914                                        |     ixmlCloneDOMString ();
    0x00018fec b 0x18f80                                         |     goto label_2;
                                                                 | label_9:
    0x00018fee ldr r0, [r6]                                      |     r0 = *(r6);
    0x00018ff0 ldr r4, [pc, 0x44]                                |     r4 = *(0x19038);
    0x00018ff2 blx 0x8914                                        |     ixmlCloneDOMString ();
    0x00018ff6 b 0x18f80                                         |     goto label_2;
                                                                 | label_10:
    0x00018ff8 movs r2, 0xb3                                     |     r2 = 0xb3;
    0x00018ffa mov r1, r5                                        |     r1 = r5;
    0x00018ffc b 0x18f9e                                         |     goto label_3;
                                                                 | label_8:
    0x00018ffe mov r0, r5                                        |     r0 = r5;
    0x00019000 blx 0x8f9c                                        |     r0 = fcn_00008f9c ();
    0x00019004 cmp r0, 0xb3                                      |     
                                                                 |     if (r0 > 0xb3) {
    0x00019006 bhi.w 0x18ec6                                     |         goto label_4;
                                                                 |     }
    0x0001900a ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x0001900c movs r2, 0xb3                                     |     r2 = 0xb3;
    0x0001900e mov r1, r5                                        |     r1 = r5;
    0x00019010 blx 0x9174                                        |     fcn_00009174 ();
    0x00019014 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00019016 strb.w r4, [r3, 0xb3]                             |     *((r3 + 0xb3)) = r4;
    0x0001901a b 0x18f80                                         |     goto label_2;
                                                                 | label_12:
    0x0001901c ldr r4, [pc, 0x1c]                                |     r4 = *(0x1903c);
    0x0001901e b 0x18f80                                         |     goto label_2;
                                                                 | label_13:
    0x00019020 ldr r4, [pc, 0x18]                                |     r4 = *(0x1903c);
    0x00019022 movs r3, 1                                        |     r3 = 1;
    0x00019024 b 0x18f42                                         |     goto label_5;
                                                                 | label_14:
    0x00019026 mov r3, r4                                        |     r3 = r4;
    0x00019028 mvn r4, 0x67                                      |     r4 = ~0x67;
    0x0001902c b 0x18f42                                         |     goto label_5;
                                                                 | label_18:
    0x0001902e mov r0, r4                                        |     r0 = r4;
    0x00019030 add sp, 0x1b4                                     |     
    0x00019032 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x1b654 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0001b654 ()                                      | void fcn_0001b654 (int16_t arg_38h, int16_t arg_3ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_8h_2;
                                                                 |     char * src;
                                                                 |     int16_t var_14h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0001b654 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0001b658 mov r5, r2                                        |     r5 = r2;
    0x0001b65a ldr r2, [pc, 0xf0]                                |     
    0x0001b65c mov r7, r3                                        |     r7 = r3;
    0x0001b65e sub sp, 0x18                                      |     
    0x0001b660 mov sb, r0                                        |     sb = r0;
    0x0001b662 ldr r3, [pc, 0xec]                                |     r3 = *(0x1b752);
    0x0001b664 mov r4, r1                                        |     r4 = r1;
    0x0001b666 add r2, pc                                        |     r2 = 0x36db8;
    0x0001b668 ldr.w r8, [sp, 0x38]                              |     r8 = *(arg_38h);
    0x0001b66c ldr r3, [r2, r3]                                  |     
    0x0001b66e ldr r3, [r3]                                      |     r3 = *(0x36db8);
    0x0001b670 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0001b672 mov.w r3, 0                                       |     r3 = 0;
    0x0001b676 cbnz r1, 0x1b692                                  |     
                                                                 |     while (r5 == 0) {
                                                                 | label_0:
    0x0001b678 movs r0, 0                                        |         r0 = 0;
                                                                 | label_2:
    0x0001b67a ldr r2, [pc, 0xd8]                                |         
    0x0001b67c ldr r3, [pc, 0xd0]                                |         r3 = *(0x1b750);
    0x0001b67e add r2, pc                                        |         r2 = 0x36dd8;
    0x0001b680 ldr r3, [r2, r3]                                  |         r3 = *(0x36dd8);
    0x0001b682 ldr r2, [r3]                                      |         r2 = *(0x36dd8);
    0x0001b684 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x0001b686 eors r2, r3                                       |         r2 ^= r3;
    0x0001b688 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x0001b68c beq 0x1b744                                       |             goto label_3;
                                                                 |         }
    0x0001b68e blx 0x8b7c                                        |         fcn_00008b7c ();
    0x0001b692 cmp r5, 0                                         |         
    0x0001b694 beq 0x1b678                                       |         
                                                                 |     }
    0x0001b696 mov.w r0, 0x7d0                                   |     r0 = 0x7d0;
    0x0001b69a blx 0x8e30                                        |     r0 = vfprintf_chk ()
    0x0001b69e mov r6, r0                                        |     r6 = r0;
    0x0001b6a0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001b6a2 beq 0x1b678                                       |         goto label_0;
                                                                 |     }
    0x0001b6a4 strd r5, r4, [sp, 8]                              |     __asm ("strd r5, r4, [var_8h]");
    0x0001b6a8 str r4, [sp, 4]                                   |     var_4h = r4;
    0x0001b6aa cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0001b6ae beq 0x1b6d0                                       |         goto label_4;
                                                                 |     }
    0x0001b6b0 ldr r3, [pc, 0xa4]                                |     
    0x0001b6b2 add r3, pc                                        |     r3 = 0x36e0e;
                                                                 |     do {
    0x0001b6b4 str r3, [sp]                                      |         *(sp) = r3;
    0x0001b6b6 mov.w r3, 0x7d0                                   |         r3 = 0x7d0;
    0x0001b6ba movs r2, 1                                        |         r2 = 1;
    0x0001b6bc mov r1, r3                                        |         r1 = r3;
    0x0001b6be blx 0x96fc                                        |         r0 = fcn_000096fc ();
    0x0001b6c2 cmp.w r0, 0x7d0                                   |         
                                                                 |         if (r0 <= 0x7d0) {
    0x0001b6c6 blo 0x1b6d6                                       |             goto label_5;
                                                                 |         }
                                                                 | label_1:
    0x0001b6c8 mov r0, r6                                        |         r0 = r6;
    0x0001b6ca blx 0x894c                                        |         fcn_0000894c ();
    0x0001b6ce b 0x1b678                                         |         goto label_0;
                                                                 | label_4:
    0x0001b6d0 ldr r3, [pc, 0x88]                                |         
    0x0001b6d2 add r3, pc                                        |         r3 = 0x36e32;
    0x0001b6d4 b 0x1b6b4                                         |         
                                                                 |     } while (1);
                                                                 | label_5:
    0x0001b6d6 add r1, sp, 0x10                                  |     r1 += src;
    0x0001b6d8 mov r0, r6                                        |     r0 = r6;
    0x0001b6da blx 0x8bd0                                        |     r0 = fcn_00008bd0 ();
    0x0001b6de mov r5, r0                                        |     r5 = r0;
    0x0001b6e0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001b6e2 bne 0x1b6c8                                       |         goto label_1;
                                                                 |     }
    0x0001b6e4 mov r0, r6                                        |     r0 = r6;
    0x0001b6e6 blx 0x894c                                        |     fcn_0000894c ();
    0x0001b6ea ldr r3, [sp, 0x10]                                |     r3 = src;
    0x0001b6ec cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001b6ee beq 0x1b678                                       |         goto label_0;
                                                                 |     }
    0x0001b6f0 cmp r7, 0                                         |     
                                                                 |     if (r7 <= 0) {
    0x0001b6f2 ble 0x1b740                                       |         goto label_6;
                                                                 |     }
    0x0001b6f4 ldr r4, [sp, 0x3c]                                |     r4 = *(arg_3ch);
    0x0001b6f6 adds r4, 8                                        |     r4 += 8;
                                                                 |     do {
    0x0001b6f8 cmp.w r8, 0                                       |         
                                                                 |         if (r8 != 0) {
    0x0001b6fc beq 0x1b732                                       |             
    0x0001b6fe ldr sl, [r4, -0x8]                                |             sl = *((r4 - 0x8));
    0x0001b702 ldr r0, [sp, 0x10]                                |             r0 = src;
    0x0001b704 blx 0x89c8                                        |             strndup (r0, r1);
    0x0001b708 mov r1, r8                                        |             r1 = r8;
    0x0001b70a mov sb, r0                                        |             sb = r0;
    0x0001b70c ldr r0, [sp, 0x10]                                |             r0 = src;
    0x0001b70e blx 0x8d98                                        |             r0 = fcn_00008d98 ();
    0x0001b712 mov r6, r0                                        |             r6 = r0;
    0x0001b714 cmp.w sl, 0                                       |             
    0x0001b716 lsrs r0, r0, 0x1c                                 |             r0 >>= 0x1c;
                                                                 |             if (r0 != r0) {
    0x0001b718 beq 0x1b72a                                       |                 
    0x0001b71a mov r1, sl                                        |                 r1 = sl;
    0x0001b71c ldr r0, [sp, 0x10]                                |                 r0 = src;
    0x0001b71e blx 0x8cc8                                        |                 r0 = fcn_00008cc8 ();
    0x0001b722 mov r1, r0                                        |                 r1 = r0;
    0x0001b724 mov r0, r6                                        |                 r0 = r6;
    0x0001b726 blx 0x8b4c                                        |                 fcn_00008b4c ();
                                                                 |             }
    0x0001b72a mov r1, r6                                        |             r1 = r6;
    0x0001b72c mov r0, sb                                        |             r0 = sb;
    0x0001b72e blx 0x8b4c                                        |             fcn_00008b4c ();
                                                                 |         }
    0x0001b732 adds r5, 1                                        |         r5++;
    0x0001b734 adds r4, 8                                        |         r4 += 8;
    0x0001b736 cmp r7, r5                                        |         
                                                                 |         if (r7 == r5) {
    0x0001b738 beq 0x1b740                                       |             goto label_6;
                                                                 |         }
    0x0001b73a ldr r8, [r4, -0xc]                                |         r8 = *((r4 - 0xc));
    0x0001b73e b 0x1b6f8                                         |         
                                                                 |     } while (1);
                                                                 | label_6:
    0x0001b740 ldr r0, [sp, 0x10]                                |     r0 = src;
    0x0001b742 b 0x1b67a                                         |     goto label_2;
                                                                 | label_3:
    0x0001b744 add sp, 0x18                                      |     
    0x0001b746 pop.w {r4, r5, r6, r7, r8, sb, sl, 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/libupnp.so.17.1.8 @ 0x1b760 */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) fcn.0001b760 ()                                                      | void fcn_0001b760 (int16_t arg_30h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                 |     int16_t var_0h;
                                                                                 |     int16_t var_4h;
                                                                                 |     int32_t var_8h;
                                                                                 |     int32_t var_8h_2;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
                                                                                 |     r2 = arg3;
                                                                                 |     r3 = arg4;
    0x0001b760 push.w {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0001b764 mov sl, r0                                                        |     sl = r0;
    0x0001b766 ldrd r4, r8, [sp, 0x30]                                           |     __asm ("ldrd r4, r8, [arg_30h]");
    0x0001b76a mov r5, r1                                                        |     r5 = r1;
    0x0001b76c mov sb, r3                                                        |     sb = r3;
    0x0001b76e mov r6, r2                                                        |     r6 = r2;
    0x0001b770 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x0001b772 beq 0x1b816                                                       |         goto label_3;
                                                                                 |     }
    0x0001b774 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0001b776 beq 0x1b816                                                       |         goto label_3;
                                                                                 |     }
    0x0001b778 ldr r3, [r1]                                                      |     r3 = *(r1);
                                                                                 |     if (r3 != 0) {
    0x0001b77a cbnz r3, 0x1b7e0                                                  |         goto label_4;
                                                                                 |     }
    0x0001b77c mov.w r0, 0x7d0                                                   |     r0 = 0x7d0;
    0x0001b780 blx 0x8e30                                                        |     r0 = vfprintf_chk ()
    0x0001b784 mov r7, r0                                                        |     r7 = r0;
    0x0001b786 cbnz r0, 0x1b792                                                  |     
                                                                                 |     while (1) {
                                                                                 | label_1:
    0x0001b788 mvn r0, 0x67                                                      |         r0 = ~0x67;
                                                                                 | label_2:
    0x0001b78c add sp, 0x10                                                      |         
    0x0001b78e pop.w {r4, r5, r6, r7, r8, sb, sl, pc}                            |         
    0x0001b792 strd sb, r6, [sp, 8]                                              |         __asm ("strd sb, r6, [var_8h]");
    0x0001b796 str r6, [sp, 4]                                                   |         var_4h = r6;
    0x0001b798 cmp.w sl, 0                                                       |         
                                                                                 |         if (sl == 0) {
    0x0001b79c beq 0x1b7be                                                       |             goto label_5;
                                                                                 |         }
    0x0001b79e ldr r3, [pc, 0x80]                                                |         
    0x0001b7a0 add r3, pc                                                        |         r3 = 0x36fc6;
                                                                                 | label_0:
    0x0001b7a2 str r3, [sp]                                                      |         *(sp) = r3;
    0x0001b7a4 mov.w r3, 0x7d0                                                   |         r3 = 0x7d0;
    0x0001b7a8 movs r2, 1                                                        |         r2 = 1;
    0x0001b7aa mov r1, r3                                                        |         r1 = r3;
    0x0001b7ac blx 0x96fc                                                        |         r0 = fcn_000096fc ();
    0x0001b7b0 cmp.w r0, 0x7d0                                                   |         
                                                                                 |         if (r0 <= 0x7d0) {
    0x0001b7b4 blo 0x1b7c4                                                       |             goto label_6;
                                                                                 |         }
    0x0001b7b6 mov r0, r7                                                        |         r0 = r7;
    0x0001b7b8 blx 0x894c                                                        |         fcn_0000894c ();
    0x0001b7bc b 0x1b788                                                         |         
                                                                                 |     }
                                                                                 | label_5:
    0x0001b7be ldr r3, [pc, 0x64]                                                |     
    0x0001b7c0 add r3, pc                                                        |     r3 = 0x36fea;
    0x0001b7c2 b 0x1b7a2                                                         |     goto label_0;
                                                                                 | label_6:
    0x0001b7c4 mov r1, r5                                                        |     r1 = r5;
    0x0001b7c6 mov r0, r7                                                        |     r0 = r7;
    0x0001b7c8 blx 0x8bd0                                                        |     r0 = fcn_00008bd0 ();
    0x0001b7cc mov r6, r0                                                        |     r6 = r0;
    0x0001b7ce mov r0, r7                                                        |     r0 = r7;
    0x0001b7d0 blx 0x894c                                                        |     fcn_0000894c ();
                                                                                 |     if (r6 == 0) {
    0x0001b7d4 cbz r6, 0x1b7e0                                                   |         goto label_4;
                                                                                 |     }
    0x0001b7d6 cmp r6, 0x66                                                      |     
                                                                                 |     if (r6 == 0x66) {
    0x0001b7d8 beq 0x1b788                                                       |         goto label_1;
                                                                                 |     }
    0x0001b7da mvn r0, 0x6a                                                      |     r0 = ~0x6a;
    0x0001b7de b 0x1b78c                                                         |     goto label_2;
                                                                                 |     if (r4 != 0) {
                                                                                 | label_4:
    0x0001b7e0 cbz r4, 0x1b81c                                                   |         
    0x0001b7e2 ldr r0, [r5]                                                      |         r0 = *(r5);
    0x0001b7e4 blx 0x89c8                                                        |         strndup (r0, r1);
    0x0001b7e8 mov r1, r4                                                        |         r1 = r4;
    0x0001b7ea mov r6, r0                                                        |         r6 = r0;
    0x0001b7ec ldr r0, [r5]                                                      |         r0 = *(r5);
    0x0001b7ee blx 0x8d98                                                        |         r0 = fcn_00008d98 ();
    0x0001b7f2 mov r4, r0                                                        |         r4 = r0;
    0x0001b7f4 cmp.w r8, 0                                                       |         
                                                                                 |         if (r8 != 0) {
    0x0001b7f8 beq 0x1b80a                                                       |             
    0x0001b7fa mov r1, r8                                                        |             r1 = r8;
    0x0001b7fc ldr r0, [r5]                                                      |             r0 = *(r5);
    0x0001b7fe blx 0x8cc8                                                        |             r0 = fcn_00008cc8 ();
    0x0001b802 mov r1, r0                                                        |             r1 = r0;
    0x0001b804 mov r0, r4                                                        |             r0 = r4;
    0x0001b806 blx 0x8b4c                                                        |             fcn_00008b4c ();
                                                                                 |         }
    0x0001b80a mov r1, r4                                                        |         r1 = r4;
    0x0001b80c mov r0, r6                                                        |         r0 = r6;
    0x0001b80e blx 0x8b4c                                                        |         fcn_00008b4c ();
    0x0001b812 movs r0, 0                                                        |         r0 = 0;
    0x0001b814 b 0x1b78c                                                         |         goto label_2;
                                                                                 | label_3:
    0x0001b816 mvn r0, 0x64                                                      |         r0 = ~0x64;
    0x0001b81a b 0x1b78c                                                         |         goto label_2;
                                                                                 |     }
    0x0001b81c mov r0, r4                                                        |     r0 = r4;
    0x0001b81e b 0x1b78c                                                         |     goto label_2;
                                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x1c7f4 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0001c7f4 ()                                          | void fcn_0001c7f4 (int16_t arg_1f0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int32_t var_8h;
                                                                     |     int32_t var_8h_2;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_38h;
                                                                     |     int32_t var_4h_2;
                                                                     |     int32_t var_4h_3;
                                                                     |     int32_t var_10h_2;
                                                                     |     int32_t var_14h_2;
                                                                     |     int16_t var_e0h;
                                                                     |     int16_t var_110h;
                                                                     |     int16_t var_1c4h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x0001c7f4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0001c7f8 sub sp, 0x1cc                                         |     
    0x0001c7fa str r3, [sp, 0x10]                                    |     var_10h = r3;
    0x0001c7fc mov sb, r2                                            |     sb = r2;
    0x0001c7fe mov r8, r0                                            |     r8 = r0;
    0x0001c800 mov r4, r1                                            |     r4 = r1;
    0x0001c802 ldr r3, [sp, 0x1f0]                                   |     r3 = *(arg_1f0h);
    0x0001c804 ldr r2, [pc, 0x340]                                   |     
    0x0001c806 ldrh r0, [r1]                                         |     r0 = *(r1);
    0x0001c808 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0001c80a ldr r3, [pc, 0x340]                                   |     r3 = *(0x1cb4e);
    0x0001c80c add r2, pc                                            |     r2 = 0x39358;
    0x0001c80e cmp r0, 2                                             |     
    0x0001c810 ldr r3, [r2, r3]                                      |     
    0x0001c812 ldr r3, [r3]                                          |     r3 = *(0x39358);
    0x0001c814 str r3, [sp, 0x1c4]                                   |     var_1c4h = r3;
    0x0001c816 mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (r0 != 2) {
    0x0001c81a bne.w 0x1ca02                                         |         goto label_11;
                                                                     |     }
    0x0001c81e add r5, sp, 0xe0                                      |     r5 += var_e0h;
    0x0001c820 movs r3, 0x2e                                         |     r3 = 0x2e;
    0x0001c822 mov r2, r5                                            |     r2 = r5;
    0x0001c824 adds r1, 4                                            |     r1 += 4;
    0x0001c826 blx 0x9504                                            |     fcn_00009504 ();
    0x0001c82a ldrh r3, [r4, 2]                                      |     r3 = *((r4 + 2));
    0x0001c82c rev16 r3, r3                                          |     __asm ("rev16 r3, r3");
    0x0001c82e uxth r3, r3                                           |     r3 = (int16_t) r3;
    0x0001c830 strd r5, r3, [sp, 4]                                  |     __asm ("strd r5, r3, [var_4h]");
    0x0001c834 ldr r3, [pc, 0x318]                                   |     
    0x0001c836 add r3, pc                                            |     r3 = 0x3938a;
                                                                     | label_0:
    0x0001c838 str r3, [sp]                                          |     *(sp) = r3;
    0x0001c83a movs r3, 0xb4                                         |     r3 = 0xb4;
    0x0001c83c movs r2, 1                                            |     r2 = 1;
    0x0001c83e mov r1, r3                                            |     r1 = r3;
    0x0001c840 add r0, sp, 0x110                                     |     r0 += var_110h;
    0x0001c842 blx 0x96fc                                            |     fcn_000096fc ();
                                                                     |     do {
    0x0001c846 ldr r4, [pc, 0x30c]                                   |         
    0x0001c848 add r5, sp, 0x18                                      |         r5 += var_18h;
    0x0001c84a mov r0, r5                                            |         r0 = r5;
    0x0001c84c add.w sl, sp, 0x28                                    |         sl += var_28h;
    0x0001c850 bl 0x1033a                                            |         fcn_0001033a (r0);
    0x0001c854 add r4, pc                                            |         r4 = 0x393ae;
    0x0001c856 mov r0, sl                                            |         r0 = sl;
    0x0001c858 bl 0x1033a                                            |         fcn_0001033a (r0);
    0x0001c85c mov r1, r4                                            |         r1 = r4;
    0x0001c85e mov r0, r8                                            |         r0 = r8;
    0x0001c860 blx 0x8a84                                            |         r0 = fcn_00008a84 ();
    0x0001c864 mov fp, r0                                            |         
    0x0001c866 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0001c868 bne.w 0x1ca24                                         |             goto label_12;
                                                                     |         }
    0x0001c86c mov r1, r4                                            |         r1 = r4;
    0x0001c86e mov r0, r8                                            |         r0 = r8;
    0x0001c870 blx 0x8d98                                            |         r0 = fcn_00008d98 ();
    0x0001c874 mov r6, r0                                            |         r6 = r0;
    0x0001c876 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0001c878 beq.w 0x1cb08                                         |             goto label_13;
                                                                     |         }
    0x0001c87c ldr r1, [pc, 0x2d8]                                   |         
    0x0001c87e mov r0, r5                                            |         r0 = r5;
    0x0001c880 add r1, pc                                            |         r1 = 0x393dc;
    0x0001c882 bl 0x10416                                            |         r0 = fcn_00010416 (r0, r1);
    0x0001c886 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0001c888 bne.w 0x1cb08                                         |             goto label_13;
                                                                     |         }
    0x0001c88c add r1, sp, 0x110                                     |         r1 += var_110h;
    0x0001c88e mov r0, r5                                            |         r0 = r5;
    0x0001c890 bl 0x10416                                            |         r0 = fcn_00010416 (r0, r1);
    0x0001c894 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0001c896 bne.w 0x1cb08                                         |             goto label_13;
                                                                     |         }
    0x0001c89a ldr r4, [pc, 0x2c0]                                   |         
    0x0001c89c mov r0, r5                                            |         r0 = r5;
    0x0001c89e add r4, pc                                            |         r4 = 0x39400;
    0x0001c8a0 mov r1, r4                                            |         r1 = r4;
    0x0001c8a2 bl 0x10416                                            |         r0 = fcn_00010416 (r0, r1);
    0x0001c8a6 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0001c8a8 bne.w 0x1cb08                                         |             goto label_13;
                                                                     |         }
    0x0001c8ac mov r1, r4                                            |         r1 = r4;
    0x0001c8ae mov r0, sl                                            |         r0 = sl;
    0x0001c8b0 bl 0x10416                                            |         r0 = fcn_00010416 (r0, r1);
    0x0001c8b4 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0001c8b6 bne.w 0x1cb08                                         |             goto label_13;
                                                                     |         }
    0x0001c8ba mov r0, r8                                            |         r0 = r8;
    0x0001c8bc blx 0x89c8                                            |         r0 = strndup (r0, r1);
    0x0001c8c0 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0001c8c2 beq.w 0x1cb12                                         |             goto label_14;
                                                                     |         }
    0x0001c8c6 mov r1, r6                                            |         r1 = r6;
    0x0001c8c8 blx 0x8b4c                                            |         r0 = fcn_00008b4c ();
    0x0001c8cc mov r4, r0                                            |         r4 = r0;
    0x0001c8ce cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0001c8d0 bne.w 0x1cb12                                         |             goto label_14;
                                                                     |         }
    0x0001c8d4 ldr r1, [r5]                                          |         r1 = *(r5);
    0x0001c8d6 mov r0, r8                                            |         r0 = r8;
    0x0001c8d8 blx 0x8cc8                                            |         r0 = fcn_00008cc8 ();
    0x0001c8dc mov r7, r0                                            |         r7 = r0;
                                                                     |         if (r0 != 0) {
    0x0001c8de cbz r0, 0x1c8f8                                       |             
    0x0001c8e0 mov r1, r0                                            |             r1 = r0;
    0x0001c8e2 mov r0, r6                                            |             r0 = r6;
    0x0001c8e4 blx 0x8b4c                                            |             r0 = fcn_00008b4c ();
    0x0001c8e8 cmp r0, 0                                             |             
                                                                     |             if (r0 != 0) {
    0x0001c8ea bne.w 0x1cb0e                                         |                 goto label_15;
                                                                     |             }
                                                                     | label_5:
    0x0001c8ee mov r0, sl                                            |             r0 = sl;
    0x0001c8f0 movs r4, 0                                            |             r4 = 0;
    0x0001c8f2 bl 0x10470                                            |             r0 = fcn_00010470 (r0);
    0x0001c8f6 mov r7, r0                                            |             r7 = r0;
                                                                     |         }
                                                                     | label_1:
    0x0001c8f8 mov r0, fp                                            |         r0 = fp;
    0x0001c8fa blx 0x93f0                                            |         fcn_000093f0 ();
    0x0001c8fe mov r0, sl                                            |         r0 = sl;
    0x0001c900 bl 0x10348                                            |         fcn_00010348 (r0);
    0x0001c904 mov r0, r5                                            |         r0 = r5;
    0x0001c906 bl 0x10348                                            |         fcn_00010348 (r0);
    0x0001c90a cmp r4, 0                                             |         
                                                                     |         if (r4 != 0) {
    0x0001c90c bne.w 0x1cb28                                         |             goto label_16;
                                                                     |         }
    0x0001c910 mov r0, r7                                            |         r0 = r7;
    0x0001c912 blx 0x8f9c                                            |         r0 = fcn_00008f9c ();
    0x0001c916 mov r5, r0                                            |         r5 = r0;
    0x0001c918 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0001c91a beq.w 0x1cb18                                         |             goto label_17;
                                                                     |         }
    0x0001c91e adds r3, r7, r0                                       |         r3 = r7 + r0;
    0x0001c920 ldrb r3, [r3, -0x1]                                   |         r3 = *((r3 - 0x1));
    0x0001c924 cmp r3, 0x2f                                          |         
                                                                     |         if (r3 != 0x2f) {
    0x0001c926 bne.w 0x1cb20                                         |             goto label_18;
                                                                     |         }
    0x0001c92a ldr.w sl, [pc, 0x234]                                 |         
    0x0001c92e add sl, pc                                            |         sl = 0x39494;
                                                                     | label_9:
    0x0001c930 ldrb.w r3, [sb]                                       |         r3 = *(sb);
    0x0001c934 mov r0, sl                                            |         r0 = sl;
    0x0001c936 adds r5, 1                                            |         r5++;
    0x0001c938 cmp r3, 0x2f                                          |         
    0x0001c93a it eq                                                 |         
                                                                     |         if (r3 != 0x2f) {
    0x0001c93c addeq sb, sb, 1                                       |             sb++;
                                                                     |         }
    0x0001c940 blx 0x8f9c                                            |         r0 = fcn_00008f9c ();
    0x0001c944 mov r6, r0                                            |         r6 = r0;
    0x0001c946 mov r0, sb                                            |         r0 = sb;
    0x0001c948 add r5, r6                                            |         r5 += r6;
    0x0001c94a blx 0x8f9c                                            |         r0 = fcn_00008f9c ();
    0x0001c94e add r5, r0                                            |         r5 += r0;
    0x0001c950 mov r0, r5                                            |         r0 = r5;
    0x0001c952 blx 0x8e30                                            |         r0 = vfprintf_chk ()
    0x0001c956 mov r6, r0                                            |         r6 = r0;
    0x0001c958 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0001c95a beq.w 0x1cb2e                                         |             goto label_19;
                                                                     |         }
    0x0001c95e mov r2, r5                                            |         r2 = r5;
    0x0001c960 movs r1, 0                                            |         r1 = 0;
    0x0001c962 blx 0x9144                                            |         fcn_00009144 ();
    0x0001c966 strd sl, sb, [sp, 8]                                  |         __asm ("strd sl, sb, [var_8h]");
    0x0001c96a mov r1, r5                                            |         r1 = r5;
    0x0001c96c ldr.w sb, [pc, 0x1f4]                                 |         
    0x0001c970 mov.w r3, -1                                          |         r3 = -1;
    0x0001c974 movs r2, 1                                            |         r2 = 1;
    0x0001c976 mov r0, r6                                            |         r0 = r6;
    0x0001c978 add.w sl, sp, 0x110                                   |         sl += var_110h;
    0x0001c97c str r7, [sp, 4]                                       |         var_4h = r7;
    0x0001c97e add sb, pc                                            |         sb = 0x394e6;
    0x0001c980 str.w sb, [sp]                                        |         __asm ("str.w sb, [sp]");
    0x0001c984 blx 0x96fc                                            |         fcn_000096fc ();
    0x0001c988 mov r0, sl                                            |         r0 = sl;
    0x0001c98a blx 0x8f9c                                            |         r0 = fcn_00008f9c ();
    0x0001c98e mov r5, r0                                            |         r5 = r0;
    0x0001c990 mov r0, r6                                            |         r0 = r6;
    0x0001c992 blx 0x8f9c                                            |         r0 = fcn_00008f9c ();
    0x0001c996 adds r1, r5, r0                                       |         r1 = r5 + r0;
    0x0001c998 adds r1, 8                                            |         r1 += 8;
    0x0001c99a cmp r1, 0xb4                                          |         
                                                                     |         if (r1 > 0xb4) {
    0x0001c99c bhi.w 0x1cb36                                         |             goto label_20;
                                                                     |         }
    0x0001c9a0 ldr r3, [pc, 0x1c4]                                   |         
    0x0001c9a2 movs r2, 1                                            |         r2 = 1;
    0x0001c9a4 ldr r0, [sp, 0x14]                                    |         r0 = var_14h;
    0x0001c9a6 strd sl, r6, [sp, 8]                                  |         __asm ("strd sl, r6, [var_8h]");
    0x0001c9aa add r3, pc                                            |         r3 = 0x39516;
    0x0001c9ac strd sb, r3, [sp]                                     |         __asm ("strd sb, r3, [sp]");
    0x0001c9b0 mov.w r3, -1                                          |         r3 = -1;
    0x0001c9b4 blx 0x96fc                                            |         fcn_000096fc ();
    0x0001c9b8 mov r0, r8                                            |         r0 = r8;
    0x0001c9ba blx 0x875c                                            |         r0 = fcn_0000875c ();
    0x0001c9be mov r5, r0                                            |         r5 = r0;
                                                                     |         if (r0 != 0) {
    0x0001c9c0 cbz r0, 0x1c9d4                                       |             
    0x0001c9c2 blx 0x8f9c                                            |             fcn_00008f9c ();
    0x0001c9c6 ldr r3, [sp, 0x10]                                    |             r3 = var_10h;
    0x0001c9c8 mov r2, r0                                            |             r2 = r0;
    0x0001c9ca mov r1, r5                                            |             r1 = r5;
    0x0001c9cc mov r0, r6                                            |             r0 = r6;
    0x0001c9ce bl 0x13574                                            |             r0 = fcn_00013574 (r0, r1, r2, r3);
    0x0001c9d2 mov r4, r0                                            |             r4 = r0;
                                                                     |         }
                                                                     | label_10:
    0x0001c9d4 mov r0, r7                                            |         r0 = r7;
    0x0001c9d6 blx 0x894c                                            |         fcn_0000894c ();
    0x0001c9da mov r0, r6                                            |         r0 = r6;
    0x0001c9dc blx 0x894c                                            |         fcn_0000894c ();
                                                                     |         if (r4 != 0) {
    0x0001c9e0 cbz r4, 0x1c9e8                                       |             
    0x0001c9e2 mov r0, r5                                            |             r0 = r5;
    0x0001c9e4 blx 0x8fa8                                            |             fcn_00008fa8 ();
                                                                     |         }
    0x0001c9e8 ldr r2, [pc, 0x180]                                   |         
    0x0001c9ea ldr r3, [pc, 0x160]                                   |         r3 = *(0x1cb4e);
    0x0001c9ec add r2, pc                                            |         r2 = 0x3955c;
    0x0001c9ee ldr r3, [r2, r3]                                      |         r3 = *(0x3955c);
    0x0001c9f0 ldr r2, [r3]                                          |         r2 = *(0x3955c);
    0x0001c9f2 ldr r3, [sp, 0x1c4]                                   |         r3 = var_1c4h;
    0x0001c9f4 eors r2, r3                                           |         r2 ^= r3;
    0x0001c9f6 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 == r3) {
    0x0001c9fa beq.w 0x1cb3c                                         |             goto label_21;
                                                                     |         }
    0x0001c9fc strh r7, [r3, 4]                                      |         *((r3 + 4)) = r7;
    0x0001c9fe blx 0x8b7c                                            |         r0 = fcn_00008b7c ();
                                                                     | label_11:
    0x0001ca02 cmp r0, 0xa                                           |         
    0x0001ca04 bne.w 0x1c846                                         |         
                                                                     |     } while (r0 != 0xa);
    0x0001ca08 add r5, sp, 0xe0                                      |     r5 += var_e0h;
    0x0001ca0a movs r3, 0x2e                                         |     r3 = 0x2e;
    0x0001ca0c mov r2, r5                                            |     r2 = r5;
    0x0001ca0e adds r1, 8                                            |     r1 += 8;
    0x0001ca10 blx 0x9504                                            |     fcn_00009504 ();
    0x0001ca14 ldrh r3, [r4, 2]                                      |     r3 = *((r4 + 2));
    0x0001ca16 rev16 r3, r3                                          |     __asm ("rev16 r3, r3");
    0x0001ca18 uxth r3, r3                                           |     r3 = (int16_t) r3;
    0x0001ca1a strd r5, r3, [sp, 4]                                  |     __asm ("strd r5, r3, [var_4h]");
    0x0001ca1e ldr r3, [pc, 0x150]                                   |     
    0x0001ca20 add r3, pc                                            |     r3 = 0x39596;
    0x0001ca22 b 0x1c838                                             |     goto label_0;
                                                                     | label_12:
    0x0001ca24 movs r1, 0                                            |     r1 = 0;
    0x0001ca26 blx 0x9260                                            |     fcn_00009260 ();
    0x0001ca2a blx 0x89c8                                            |     r0 = strndup (r0, r1);
    0x0001ca2e mov r6, r0                                            |     r6 = r0;
    0x0001ca30 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0001ca32 beq 0x1cb12                                           |         goto label_14;
                                                                     |     }
    0x0001ca34 blx 0x8c8c                                            |     r0 = fcn_00008c8c ();
    0x0001ca38 mov r7, r0                                            |     r7 = r0;
    0x0001ca3a cbnz r0, 0x1ca4c                                      |     
                                                                     |     while (r0 < 0) {
                                                                     | label_2:
    0x0001ca3c mvn r4, 0x6b                                          |         r4 = ~0x6b;
                                                                     | label_3:
    0x0001ca40 movs r6, 0                                            |         r6 = 0;
                                                                     | label_8:
    0x0001ca42 mov r0, r6                                            |         r0 = r6;
    0x0001ca44 movs r7, 0                                            |         r7 = 0;
    0x0001ca46 blx 0x87e4                                            |         fcn_000087e4 ();
    0x0001ca4a b 0x1c8f8                                             |         goto label_1;
    0x0001ca4c add r4, sp, 0x38                                      |         r4 += var_38h;
    0x0001ca4e blx 0x8f9c                                            |         fcn_00008f9c ();
    0x0001ca52 mov r2, r4                                            |         r2 = r4;
    0x0001ca54 mov r1, r0                                            |         r1 = r0;
    0x0001ca56 mov r0, r7                                            |         r0 = r7;
    0x0001ca58 bl 0x14a8c                                            |         r0 = fcn_00014a8c (r0, r1, r2);
    0x0001ca5c cmp r0, 0                                             |         
    0x0001ca5e blt 0x1ca3c                                           |         
                                                                     |     }
    0x0001ca60 ldr r3, [r4]                                          |     r3 = *(r4);
    0x0001ca62 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0001ca64 bne 0x1ca3c                                           |         goto label_2;
                                                                     |     }
    0x0001ca66 ldrd r1, r2, [r4, 4]                                  |     __asm ("ldrd r1, r2, [var_4h_2]");
    0x0001ca6a mov r0, r5                                            |     r0 = r5;
    0x0001ca6c bl 0x10360                                            |     r0 = fcn_00010360 (r0, r1, r2);
    0x0001ca70 cbz r0, 0x1ca78                                       |     
                                                                     |     while (r0 != 0) {
                                                                     | label_4:
    0x0001ca72 mvn r4, 0x67                                          |         r4 = ~0x67;
    0x0001ca76 b 0x1ca40                                             |         goto label_3;
    0x0001ca78 ldr r1, [pc, 0xf8]                                    |         
    0x0001ca7a mov r0, r5                                            |         r0 = r5;
    0x0001ca7c add r1, pc                                            |         r1 = 0x395f4;
    0x0001ca7e bl 0x10416                                            |         r0 = fcn_00010416 (r0, r1);
    0x0001ca82 cmp r0, 0                                             |         
    0x0001ca84 bne 0x1ca72                                           |         
                                                                     |     }
    0x0001ca86 add r1, sp, 0x110                                     |     r1 += var_110h;
    0x0001ca88 mov r0, r5                                            |     r0 = r5;
    0x0001ca8a bl 0x10416                                            |     r0 = fcn_00010416 (r0, r1);
    0x0001ca8e cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0001ca90 bne 0x1ca72                                           |         goto label_4;
                                                                     |     }
    0x0001ca92 ldr r3, [r4, 0x14]                                    |     r3 = var_14h_2;
                                                                     |     if (r3 == 0) {
    0x0001ca94 cbz r3, 0x1cad8                                       |         goto label_22;
                                                                     |     }
    0x0001ca96 ldr r3, [r4, 0x10]                                    |     r3 = var_10h_2;
    0x0001ca98 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0001ca9a cmp r3, 0x2f                                          |     
                                                                     |     if (r3 != 0x2f) {
    0x0001ca9c bne 0x1cad8                                           |         goto label_22;
                                                                     |     }
                                                                     | label_6:
    0x0001ca9e ldrd r1, r2, [r4, 0x10]                               |     __asm ("ldrd r1, r2, [var_14h_2]");
    0x0001caa2 mov r0, r5                                            |     r0 = r5;
    0x0001caa4 bl 0x10410                                            |     r0 = fcn_00010410 (r0, r1, r2);
    0x0001caa8 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0001caaa bne 0x1ca72                                           |         goto label_4;
                                                                     |     }
    0x0001caac ldrd r1, r2, [r4, 0x10]                               |     __asm ("ldrd r1, r2, [var_14h_2]");
    0x0001cab0 mov r0, sl                                            |     r0 = sl;
    0x0001cab2 bl 0x10410                                            |     r0 = fcn_00010410 (r0, r1, r2);
    0x0001cab6 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0001cab8 bne 0x1ca72                                           |         goto label_4;
                                                                     |     }
    0x0001caba ldrd r3, r2, [r5]                                     |     __asm ("ldrd r3, r2, [r5]");
    0x0001cabe add r3, r2                                            |     r3 += r2;
    0x0001cac0 ldrb r3, [r3, -0x1]                                   |     r3 = *((r3 - 0x1));
    0x0001cac4 cmp r3, 0x2f                                          |     
                                                                     |     if (r3 != 0x2f) {
    0x0001cac6 bne 0x1caf6                                           |         goto label_23;
                                                                     |     }
                                                                     | label_7:
    0x0001cac8 ldr r1, [r5]                                          |     r1 = *(r5);
    0x0001caca mov r0, r6                                            |     r0 = r6;
    0x0001cacc blx 0x8970                                            |     r0 = fcn_00008970 ();
    0x0001cad0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0001cad2 beq.w 0x1c8ee                                         |         goto label_5;
                                                                     |     }
    0x0001cad6 b 0x1ca72                                             |     goto label_4;
                                                                     | label_22:
    0x0001cad8 ldr r7, [pc, 0x9c]                                    |     
    0x0001cada mov r0, r5                                            |     r0 = r5;
    0x0001cadc add r7, pc                                            |     r7 = 0x39658;
    0x0001cade mov r1, r7                                            |     r1 = r7;
    0x0001cae0 bl 0x10416                                            |     r0 = fcn_00010416 (r0, r1);
    0x0001cae4 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0001cae6 bne 0x1ca72                                           |         goto label_4;
                                                                     |     }
    0x0001cae8 mov r1, r7                                            |     r1 = r7;
    0x0001caea mov r0, sl                                            |     r0 = sl;
    0x0001caec bl 0x10416                                            |     r0 = fcn_00010416 (r0, r1);
    0x0001caf0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0001caf2 beq 0x1ca9e                                           |         goto label_6;
                                                                     |     }
    0x0001caf4 b 0x1ca72                                             |     goto label_4;
                                                                     | label_23:
    0x0001caf6 ldr r1, [pc, 0x84]                                    |     
    0x0001caf8 movs r2, 1                                            |     r2 = 1;
    0x0001cafa mov r0, r5                                            |     r0 = r5;
    0x0001cafc add r1, pc                                            |     r1 = 0x3967e;
    0x0001cafe bl 0x10410                                            |     r0 = fcn_00010410 (r0, r1, r2);
    0x0001cb02 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0001cb04 beq 0x1cac8                                           |         goto label_7;
                                                                     |     }
    0x0001cb06 b 0x1ca72                                             |     goto label_4;
                                                                     | label_13:
    0x0001cb08 mvn r4, 0x67                                          |     r4 = ~0x67;
    0x0001cb0c b 0x1ca42                                             |     goto label_8;
                                                                     | label_15:
    0x0001cb0e ldr r4, [pc, 0x34]                                    |     r4 = *(0x1cb46);
    0x0001cb10 b 0x1ca42                                             |     goto label_8;
                                                                     | label_14:
    0x0001cb12 mvn r4, 0x6a                                          |     r4 = ~0x6a;
    0x0001cb16 b 0x1ca42                                             |     goto label_8;
                                                                     | label_17:
    0x0001cb18 ldr.w sl, [pc, 0x64]                                  |     
    0x0001cb1c add sl, pc                                            |     sl = 0x396a0;
    0x0001cb1e b 0x1c930                                             |     goto label_9;
                                                                     | label_18:
    0x0001cb20 ldr.w sl, [pc, 0x60]                                  |     
    0x0001cb24 add sl, pc                                            |     sl = 0x396ac;
    0x0001cb26 b 0x1c930                                             |     goto label_9;
                                                                     | label_16:
    0x0001cb28 movs r6, 0                                            |     r6 = 0;
                                                                     |     do {
    0x0001cb2a movs r5, 0                                            |         r5 = 0;
    0x0001cb2c b 0x1c9d4                                             |         goto label_10;
                                                                     | label_19:
    0x0001cb2e mov r5, r0                                            |         r5 = r0;
    0x0001cb30 mvn r4, 0x67                                          |         r4 = ~0x67;
    0x0001cb34 b 0x1c9d4                                             |         goto label_10;
                                                                     | label_20:
    0x0001cb36 mvn r4, 0x75                                          |         r4 = ~0x75;
    0x0001cb3a b 0x1cb2a                                             |         
                                                                     |     } while (1);
                                                                     | label_21:
    0x0001cb3c mov r0, r4                                            |     r0 = r4;
    0x0001cb3e add sp, 0x1cc                                         |     
    0x0001cb40 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x1ac34 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.UpnpAddVirtualDir ()                         | void UpnpAddVirtualDir (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                             |     int16_t var_4h;
                                                             |     int16_t var_5h;
                                                             |     int16_t var_104h;
                                                             |     int8_t var_0h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x0001ac34 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x0001ac38 mov r7, r2                                    |     r7 = r2;
    0x0001ac3a ldr r2, [pc, 0x10c]                           |     
    0x0001ac3c sub sp, 0x10c                                 |     
    0x0001ac3e add r6, sp, 4                                 |     r6 += var_4h;
    0x0001ac40 mov r4, r0                                    |     r4 = r0;
    0x0001ac42 ldr r3, [pc, 0x108]                           |     r3 = *(0x1ad4e);
    0x0001ac44 mov sb, r1                                    |     sb = r1;
    0x0001ac46 add r2, pc                                    |     r2 = 0x35994;
    0x0001ac48 ldr r5, [pc, 0x104]                           |     
    0x0001ac4a movs r1, 0                                    |     r1 = 0;
    0x0001ac4c mov r0, r6                                    |     r0 = r6;
    0x0001ac4e ldr r3, [r2, r3]                              |     
    0x0001ac50 mov.w r2, 0x100                               |     r2 = 0x100;
    0x0001ac54 add r5, pc                                    |     r5 = 0x359a8;
    0x0001ac56 ldr r3, [r3]                                  |     r3 = *(0x35994);
    0x0001ac58 str r3, [sp, 0x104]                           |     var_104h = r3;
    0x0001ac5a mov.w r3, 0                                   |     r3 = 0;
    0x0001ac5e blx 0x9144                                    |     fcn_00009144 ();
    0x0001ac62 ldr r3, [pc, 0xf0]                            |     r3 = *(0x1ad56);
    0x0001ac64 ldr r3, [r5, r3]                              |     
    0x0001ac66 ldr r3, [r3]                                  |     r3 = *(0x359a8);
    0x0001ac68 cmp r3, 1                                     |     
                                                             |     if (r3 != 1) {
    0x0001ac6a bne 0x1ad30                                   |         goto label_2;
                                                             |     }
    0x0001ac6c cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x0001ac6e beq 0x1ad36                                   |         goto label_3;
                                                             |     }
    0x0001ac70 ldrb.w r8, [r4]                               |     r8 = *(r4);
    0x0001ac74 cmp.w r8, 0                                   |     
                                                             |     if (r8 == 0) {
    0x0001ac78 beq 0x1ad36                                   |         goto label_3;
                                                             |     }
    0x0001ac7a mov r0, r4                                    |     r0 = r4;
    0x0001ac7c blx 0x8f9c                                    |     fcn_00008f9c ();
    0x0001ac80 cmp.w r8, 0x2f                                |     
                                                             |     if (r8 == 0x2f) {
    0x0001ac84 beq 0x1ace6                                   |         goto label_4;
                                                             |     }
    0x0001ac86 cmp r0, 0xfe                                  |     
                                                             |     if (r0 > 0xfe) {
    0x0001ac88 bhi 0x1ad36                                   |         goto label_3;
                                                             |     }
    0x0001ac8a movs r2, 0xfe                                 |     r2 = 0xfe;
    0x0001ac8c mov r1, r4                                    |     r1 = r4;
    0x0001ac8e add.w r0, sp, 5                               |     r0 += var_5h;
    0x0001ac92 movs r3, 0x2f                                 |     r3 = 0x2f;
    0x0001ac94 strb r3, [r6]                                 |     *(r6) = r3;
                                                             |     do {
    0x0001ac96 blx 0x9174                                    |         fcn_00009174 ();
    0x0001ac9a ldr r3, [pc, 0xbc]                            |         r3 = *(0x1ad5a);
    0x0001ac9c ldr.w r8, [r5, r3]                            |         r8 = *((r5 + r3));
    0x0001aca0 ldr.w r5, [r8]                                |         r5 = *(r8);
                                                             |         if (r5 != 0) {
                                                             | label_0:
    0x0001aca4 cbnz r5, 0x1acf2                              |             goto label_5;
                                                             |         }
    0x0001aca6 mov.w r0, 0x108                               |         r0 = 0x108;
    0x0001acaa blx 0x8e30                                    |         r0 = vfprintf_chk ()
    0x0001acae mov r4, r0                                    |         r4 = r0;
    0x0001acb0 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0001acb2 beq 0x1ad3c                                   |             goto label_6;
                                                             |         }
    0x0001acb4 str r5, [r0]                                  |         *(r0) = r5;
                                                             |         if (r7 != 0) {
    0x0001acb6 cbz r7, 0x1acba                               |             
    0x0001acb8 str r5, [r7]                                  |             *(r7) = r5;
                                                             |         }
    0x0001acba add.w r5, r4, 8                               |         r5 = r4 + 8;
    0x0001acbe movs r7, 0                                    |         r7 = 0;
    0x0001acc0 movs r2, 0xff                                 |         r2 = 0xff;
    0x0001acc2 mov r1, r6                                    |         r1 = r6;
    0x0001acc4 mov r0, r5                                    |         r0 = r5;
    0x0001acc6 str.w sb, [r4, 4]                             |         __asm ("str.w sb, [r4, 4]");
    0x0001acca strb.w r7, [r4, 0x107]                        |         *((r4 + 0x107)) = r7;
    0x0001acce blx 0x9174                                    |         fcn_00009174 ();
    0x0001acd2 mov r0, r6                                    |         r0 = r6;
    0x0001acd4 blx 0x8f9c                                    |         fcn_00008f9c ();
    0x0001acd8 strb r7, [r5, r0]                             |         *((r5 + r0)) = r7;
    0x0001acda ldr.w r0, [r8]                                |         r0 = *(r8);
                                                             |         if (r0 != 0) {
    0x0001acde cbnz r0, 0x1ad24                              |             goto label_7;
                                                             |         }
    0x0001ace0 str.w r4, [r8]                                |         __asm ("str.w r4, [r8]");
    0x0001ace4 b 0x1ad08                                     |         goto label_1;
                                                             | label_4:
    0x0001ace6 cmp r0, 0xff                                  |         
                                                             |         if (r0 > 0xff) {
    0x0001ace8 bhi 0x1ad36                                   |             goto label_3;
                                                             |         }
    0x0001acea movs r2, 0xff                                 |         r2 = 0xff;
    0x0001acec mov r1, r4                                    |         r1 = r4;
    0x0001acee mov r0, r6                                    |         r0 = r6;
    0x0001acf0 b 0x1ac96                                     |         
                                                             |     } while (1);
                                                             | label_5:
    0x0001acf2 mov r1, r6                                    |     r1 = r6;
    0x0001acf4 add.w r0, r5, 8                               |     r0 = r5 + 8;
    0x0001acf8 blx 0x8790                                    |     r0 = fcn_00008790 ();
                                                             |     if (r0 == 0) {
    0x0001acfc cbnz r0, 0x1ad20                              |         
                                                             |         if (r7 != 0) {
    0x0001acfe cbz r7, 0x1ad04                               |             
    0x0001ad00 ldr r3, [r5, 4]                               |             r3 = *((r5 + 4));
    0x0001ad02 str r3, [r7]                                  |             *(r7) = r3;
                                                             |         }
    0x0001ad04 str.w sb, [r5, 4]                             |         __asm ("str.w sb, [r5, 4]");
                                                             | label_1:
    0x0001ad08 ldr r2, [pc, 0x50]                            |         
    0x0001ad0a ldr r3, [pc, 0x40]                            |         r3 = *(0x1ad4e);
    0x0001ad0c add r2, pc                                    |         r2 = 0x35a6c;
    0x0001ad0e ldr r3, [r2, r3]                              |         r3 = *(0x35a6c);
    0x0001ad10 ldr r2, [r3]                                  |         r2 = *(0x35a6c);
    0x0001ad12 ldr r3, [sp, 0x104]                           |         r3 = var_104h;
    0x0001ad14 eors r2, r3                                   |         r2 ^= r3;
    0x0001ad16 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 == r3) {
    0x0001ad1a beq 0x1ad42                                   |             goto label_8;
                                                             |         }
    0x0001ad1c blx 0x8b7c                                    |         fcn_00008b7c ();
                                                             |     }
    0x0001ad20 ldr r5, [r5]                                  |     r5 = *(r5);
    0x0001ad22 b 0x1aca4                                     |     goto label_0;
                                                             |     do {
                                                             | label_7:
    0x0001ad24 mov r3, r0                                    |         r3 = r0;
    0x0001ad26 ldr r0, [r0]                                  |         r0 = *(r0);
    0x0001ad28 cmp r0, 0                                     |         
    0x0001ad2a bne 0x1ad24                                   |         
                                                             |     } while (r0 != 0);
    0x0001ad2c str r4, [r3]                                  |     *(r3) = r4;
    0x0001ad2e b 0x1ad08                                     |     goto label_1;
                                                             | label_2:
    0x0001ad30 mvn r0, 0x73                                  |     r0 = ~0x73;
    0x0001ad34 b 0x1ad08                                     |     goto label_1;
                                                             | label_3:
    0x0001ad36 mvn r0, 0x64                                  |     r0 = ~0x64;
    0x0001ad3a b 0x1ad08                                     |     goto label_1;
                                                             | label_6:
    0x0001ad3c mvn r0, 0x67                                  |     r0 = ~0x67;
    0x0001ad40 b 0x1ad08                                     |     goto label_1;
                                                             | label_8:
    0x0001ad42 add sp, 0x10c                                 |     
    0x0001ad44 pop.w {r4, r5, r6, r7, r8, sb, 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/libupnp.so.17.1.8 @ 0x1a8dc */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.UpnpGetServiceVarStatusAsync ()                      | void UpnpGetServiceVarStatusAsync (int16_t arg_58h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_2ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x0001a8dc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0001a8e0 sub sp, 0x34                                          |     
    0x0001a8e2 str r3, [sp]                                          |     *(sp) = r3;
    0x0001a8e4 mov r8, r2                                            |     r8 = r2;
    0x0001a8e6 add r6, sp, 0x10                                      |     r6 += var_10h;
    0x0001a8e8 mov sl, r0                                            |     sl = r0;
    0x0001a8ea ldr r3, [sp, 0x58]                                    |     r3 = *(arg_58h);
    0x0001a8ec mov sb, r1                                            |     sb = r1;
    0x0001a8ee ldr r2, [pc, 0x110]                                   |     
    0x0001a8f0 movs r1, 0                                            |     r1 = 0;
    0x0001a8f2 ldr r5, [pc, 0x110]                                   |     
    0x0001a8f4 mov r0, r6                                            |     r0 = r6;
    0x0001a8f6 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0001a8f8 ldr r3, [pc, 0x10c]                                   |     r3 = *(0x1aa08);
    0x0001a8fa add r2, pc                                            |     r2 = 0x35300;
    0x0001a8fc add r5, pc                                            |     r5 = 0x35306;
    0x0001a8fe ldr r3, [r2, r3]                                      |     
    0x0001a900 movs r2, 0x1c                                         |     r2 = 0x1c;
    0x0001a902 ldr r3, [r3]                                          |     r3 = *(0x35300);
    0x0001a904 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0001a906 mov.w r3, 0                                           |     r3 = 0;
    0x0001a90a str r1, [sp, 0xc]                                     |     var_ch = r1;
    0x0001a90c blx 0x9144                                            |     fcn_00009144 ();
    0x0001a910 ldr r3, [pc, 0xf8]                                    |     r3 = *(0x1aa0c);
    0x0001a912 ldr r3, [r5, r3]                                      |     r3 = *(0x35306);
    0x0001a914 ldr.w fp, [r3]                                        |     fp = *(0x35306);
    0x0001a918 cmp.w fp, 1                                           |     
                                                                     |     if (fp != 1) {
    0x0001a91c bne 0x1a9e6                                           |         goto label_1;
                                                                     |     }
    0x0001a91e ldr r3, [pc, 0xf0]                                    |     r3 = *(0x1aa12);
    0x0001a920 ldr r7, [r5, r3]                                      |     r7 = *((r5 + r3));
    0x0001a922 mov r0, r7                                            |     r0 = r7;
    0x0001a924 blx 0x8d34                                            |     strcpy (r0, r1);
    0x0001a928 add r1, sp, 0xc                                       |     r1 += var_ch;
    0x0001a92a mov r0, sl                                            |     r0 = sl;
    0x0001a92c bl 0x19470                                            |     r0 = fcn_00019470 (r0, r1);
    0x0001a930 mov r4, r0                                            |     r4 = r0;
    0x0001a932 mov r0, r7                                            |     r0 = r7;
                                                                     |     if (r4 == 0) {
    0x0001a934 cbz r4, 0x1a956                                       |         goto label_2;
                                                                     |     }
    0x0001a936 blx 0x920c                                            |     fcn_0000920c ();
    0x0001a93a mvn r0, 0x63                                          |     r0 = ~0x63;
                                                                     |     do {
                                                                     | label_0:
    0x0001a93e ldr r2, [pc, 0xd4]                                    |         
    0x0001a940 ldr r3, [pc, 0xc4]                                    |         r3 = *(0x1aa08);
    0x0001a942 add r2, pc                                            |         r2 = 0x3535c;
    0x0001a944 ldr r3, [r2, r3]                                      |         r3 = *(0x3535c);
    0x0001a946 ldr r2, [r3]                                          |         r2 = *(0x3535c);
    0x0001a948 ldr r3, [sp, 0x2c]                                    |         r3 = var_2ch;
    0x0001a94a eors r2, r3                                           |         r2 ^= r3;
    0x0001a94c mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 == r3) {
    0x0001a950 beq 0x1a9f8                                           |             goto label_3;
                                                                     |         }
    0x0001a952 blx 0x8b7c                                            |         fcn_00008b7c ();
                                                                     | label_2:
    0x0001a956 blx 0x920c                                            |         fcn_0000920c ();
    0x0001a95a cmp.w sb, 0                                           |         
                                                                     |         if (sb == 0) {
    0x0001a95e beq 0x1a9ec                                           |             goto label_4;
                                                                     |         }
    0x0001a960 cmp.w r8, 0                                           |         
                                                                     |         if (r8 == 0) {
    0x0001a964 beq 0x1a9ec                                           |             goto label_4;
                                                                     |         }
    0x0001a966 ldr r3, [sp]                                          |         r3 = *(sp);
    0x0001a968 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0001a96a beq 0x1a9ec                                           |             goto label_4;
                                                                     |         }
    0x0001a96c movw r0, 0x74c                                        |         r0 = 0x74c;
    0x0001a970 blx 0x8e30                                            |         r0 = vfprintf_chk ()
    0x0001a974 mov r7, r0                                            |         r7 = r0;
    0x0001a976 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0001a978 beq 0x1a9f2                                           |             goto label_5;
                                                                     |         }
    0x0001a97a movw r2, 0x74c                                        |         r2 = 0x74c;
    0x0001a97e mov r1, r4                                            |         r1 = r4;
    0x0001a980 blx 0x9144                                            |         fcn_00009144 ();
    0x0001a984 movs r2, 5                                            |         r2 = 5;
    0x0001a986 mov r1, sb                                            |         r1 = sb;
    0x0001a988 strd r2, sl, [r7]                                     |         __asm ("strd r2, sl, [r7]");
    0x0001a98c addw r0, r7, 0x60c                                    |         __asm ("addw r0, r7, aav.0x000000ff");
    0x0001a990 movs r2, 0xff                                         |         r2 = 0xff;
    0x0001a992 blx 0x9174                                            |         fcn_00009174 ();
    0x0001a996 movs r2, 0xff                                         |         r2 = 0xff;
    0x0001a998 mov r1, r8                                            |         r1 = r8;
    0x0001a99a add.w r0, r7, 0xc                                     |         r0 = r7 + 0xc;
    0x0001a99e blx 0x9174                                            |         fcn_00009174 ();
    0x0001a9a2 ldr r3, [sp]                                          |         r3 = *(sp);
    0x0001a9a4 mov r0, r6                                            |         r0 = r6;
    0x0001a9a6 ldr r2, [pc, 0x70]                                    |         r2 = *(0x1aa1a);
    0x0001a9a8 str.w r3, [r7, 0x73c]                                 |         __asm ("str.w r3, aav.0x000000ff");
    0x0001a9ac ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0001a9ae str.w r3, [r7, 0x738]                                 |         __asm ("str.w r3, aav.0x000000ff");
    0x0001a9b2 ldr r1, [r5, r2]                                      |         r1 = *((r5 + r2));
    0x0001a9b4 mov r2, r7                                            |         r2 = r7;
    0x0001a9b6 bl 0xa7d4                                             |         fcn_0000a7d4 (r0, r1, r2);
    0x0001a9ba ldr r2, [pc, 0x60]                                    |         r2 = *(0x1aa1e);
    0x0001a9bc mov r0, r6                                            |         r0 = r6;
    0x0001a9be ldr r1, [r5, r2]                                      |         r1 = *((r5 + r2));
    0x0001a9c0 bl 0xa7fc                                             |         fcn_0000a7fc (r0, r1);
    0x0001a9c4 mov r1, fp                                            |         r1 = fp;
    0x0001a9c6 mov r0, r6                                            |         r0 = r6;
    0x0001a9c8 bl 0xa7ec                                             |         fcn_0000a7ec (r0, r1);
    0x0001a9cc ldr r2, [pc, 0x50]                                    |         r2 = *(0x1aa20);
    0x0001a9ce mov r1, r6                                            |         r1 = r6;
    0x0001a9d0 ldr r0, [r5, r2]                                      |         r0 = *((r5 + r2));
    0x0001a9d2 mov r2, r4                                            |         r2 = r4;
    0x0001a9d4 bl 0xa174                                             |         r0 = fcn_0000a174 (r0, r1, r2);
    0x0001a9d8 cmp r0, 0                                             |         
    0x0001a9da beq 0x1a93e                                           |         
                                                                     |     } while (r0 == 0);
    0x0001a9dc mov r0, r7                                            |     r0 = r7;
    0x0001a9de blx 0x894c                                            |     fcn_0000894c ();
    0x0001a9e2 mov r0, r4                                            |     r0 = r4;
    0x0001a9e4 b 0x1a93e                                             |     goto label_0;
                                                                     | label_1:
    0x0001a9e6 mvn r0, 0x73                                          |     r0 = ~0x73;
    0x0001a9ea b 0x1a93e                                             |     goto label_0;
                                                                     | label_4:
    0x0001a9ec mvn r0, 0x64                                          |     r0 = ~0x64;
    0x0001a9f0 b 0x1a93e                                             |     goto label_0;
                                                                     | label_5:
    0x0001a9f2 mvn r0, 0x67                                          |     r0 = ~0x67;
    0x0001a9f6 b 0x1a93e                                             |     goto label_0;
                                                                     | label_3:
    0x0001a9f8 add sp, 0x34                                          |     
    0x0001a9fa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x1895c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.UpnpOpenHttpGetEx ()                             | void UpnpOpenHttpGetEx (int16_t arg_28h, int16_t arg_2d0h, int16_t arg_2d8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_e0h;
                                                                 |     int16_t var_f0h;
                                                                 |     int16_t var_2a4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
                                                                 | label_3:
    0x00012fa0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00012fa4 mov r8, r2                                        |     r8 = r2;
    0x00012fa6 ldr r2, [pc, 0x1fc]                               |     
    0x00012fa8 mov r6, r3                                        |     r6 = r3;
    0x00012faa sub.w sp, sp, 0x2ac                               |     
    0x00012fae mov r4, r0                                        |     r4 = r0;
    0x00012fb0 ldr r3, [pc, 0x1f4]                               |     r3 = *(0x131a8);
    0x00012fb2 add r7, sp, 0x28                                  |     r7 += var_28h;
    0x00012fb4 add r2, pc                                        |     r2 = 0x2615e;
    0x00012fb6 str r1, [sp, 0x14]                                |     var_14h = r1;
    0x00012fb8 mov r0, r7                                        |     r0 = r7;
    0x00012fba ldrd sl, fp, [sp, 0x2d0]                          |     __asm ("ldrd sl, fp, [arg_2d0h]");
    0x00012fbe ldr r3, [r2, r3]                                  |     
    0x00012fc0 ldr.w sb, [sp, 0x2d8]                             |     sb = *(arg_2d8h);
    0x00012fc4 ldr r3, [r3]                                      |     r3 = *(0x2615e);
    0x00012fc6 str r3, [sp, 0x2a4]                               |     var_2a4h = r3;
    0x00012fc8 mov.w r3, 0                                       |     r3 = 0;
    0x00012fcc bl 0x1033a                                        |     fcn_0001033a (r0);
    0x00012fd0 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00012fd2 beq.w 0x13184                                     |         goto label_4;
                                                                 |     }
    0x00012fd6 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00012fd8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00012fda beq.w 0x13184                                     |         goto label_4;
                                                                 |     }
    0x00012fde cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00012fe2 beq.w 0x13184                                     |         goto label_4;
                                                                 |     }
    0x00012fe6 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x00012fea beq.w 0x13184                                     |         goto label_4;
                                                                 |     }
    0x00012fee cmp fp, sb                                        |     
    0x00012ff0 mov.w r1, 0                                       |     r1 = 0;
    0x00012ff4 str.w r1, [sl]                                    |     __asm ("str.w r1, [sl]");
    0x00012ff8 str r1, [r3]                                      |     *(r3) = r1;
    0x00012ffa str.w r1, [r8]                                    |     __asm ("str.w r1, [r8]");
    0x00012ffe str r1, [r6]                                      |     *(r6) = r1;
                                                                 |     if (fp > sb) {
    0x00013000 bgt.w 0x1318a                                     |         goto label_5;
                                                                 |     }
    0x00013004 add r5, sp, 0xe0                                  |     r5 += var_e0h;
    0x00013006 mov.w r2, 0x1c0                                   |     r2 = 0x1c0;
    0x0001300a mov r0, r5                                        |     r0 = r5;
    0x0001300c blx 0x9144                                        |     fcn_00009144 ();
    0x00013010 ldr r3, [pc, 0x198]                               |     
    0x00013012 movs r2, 1                                        |     r2 = 1;
    0x00013014 strd fp, sb, [sp, 4]                              |     __asm ("strd fp, sb, [sp, 4]");
                                                                 |     if (r1 == 0) {
    0x00013016 cbnz r1, 0x1301a                                  |         
    0x00013018 add r0, sp, 0xf0                                  |         r0 += var_f0h;
                                                                 |     }
    0x0001301a add.w fp, sp, 0x38                                |     
    0x0001301e add r3, pc                                        |     r3 = 0x261ce;
    0x00013020 str r3, [sp]                                      |     *(sp) = r3;
    0x00013022 movs r3, 0xc8                                     |     r3 = 0xc8;
    0x00013024 mov r1, r3                                        |     r1 = r3;
    0x00013026 blx 0x96fc                                        |     fcn_000096fc ();
    0x0001302a mov r0, r7                                        |     r0 = r7;
    0x0001302c bl 0x1033a                                        |     fcn_0001033a (r0);
    0x00013030 mov r3, r5                                        |     r3 = r5;
    0x00013032 mov r2, fp                                        |     r2 = fp;
    0x00013034 mov r1, r7                                        |     r1 = r7;
    0x00013036 mov r0, r4                                        |     r0 = r4;
    0x00013038 bl 0x12eec                                        |     r0 = fcn_00012eec (r0, r1, r2, r3);
    0x0001303c mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x0001303e cbnz r0, 0x13082                                  |         goto label_0;
                                                                 |     }
    0x00013040 mov.w r0, 0x1e0                                   |     r0 = 0x1e0;
    0x00013044 blx 0x8e30                                        |     r0 = vfprintf_chk ()
    0x00013048 mov r4, r0                                        |     r4 = r0;
    0x0001304a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001304c beq.w 0x1318e                                     |         goto label_6;
                                                                 |     }
    0x00013050 mov.w r2, 0x1e0                                   |     r2 = 0x1e0;
    0x00013054 mov r1, r5                                        |     r1 = r5;
    0x00013056 add.w sb, r4, 0x88                                |     sb = r4 + 0x88;
    0x0001305a blx 0x9144                                        |     fcn_00009144 ();
    0x0001305e movs r1, 2                                        |     r1 = 2;
    0x00013060 mov r0, sb                                        |     r0 = sb;
    0x00013062 bl 0x11342                                        |     fcn_00011342 (r0, r1);
    0x00013066 movs r1, 1                                        |     r1 = 1;
    0x00013068 ldrh.w r0, [fp, 0x28]                             |     r0 = var_60h;
    0x0001306c mov r2, r5                                        |     r2 = r5;
    0x0001306e blx 0x9528                                        |     r0 = fcn_00009528 ();
    0x00013072 mov r1, r0                                        |     r1 = r0;
    0x00013074 mov r0, r4                                        |     r0 = r4;
    0x00013076 adds r3, r1, 1                                    |     r3 = r1 + 1;
    0x00013078 bne 0x130a0                                       |     
                                                                 |     while (1) {
    0x0001307a mvn r5, 0xcf                                      |         r5 = ~0xcf;
    0x0001307e blx 0x894c                                        |         fcn_0000894c ();
                                                                 | label_0:
    0x00013082 mov r0, r7                                        |         r0 = r7;
    0x00013084 bl 0x10348                                        |         fcn_00010348 (r0);
    0x00013088 ldr r2, [pc, 0x124]                               |         
    0x0001308a ldr r3, [pc, 0x11c]                               |         r3 = *(0x131aa);
    0x0001308c add r2, pc                                        |         r2 = 0x26240;
    0x0001308e ldr r3, [r2, r3]                                  |         r3 = *(0x26240);
    0x00013090 ldr r2, [r3]                                      |         r2 = *(0x26240);
    0x00013092 ldr r3, [sp, 0x2a4]                               |         r3 = var_2a4h;
    0x00013094 eors r2, r3                                       |         r2 ^= r3;
    0x00013096 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x0001309a beq 0x13194                                       |             goto label_7;
                                                                 |         }
    0x0001309c blx 0x8b7c                                        |         fcn_00008b7c ();
    0x000130a0 bl 0x106e0                                        |         r0 = fcn_000106e0 (r0, r1);
                                                                 |         if (r0 == 0) {
    0x000130a4 cbz r0, 0x130b2                                   |             goto label_8;
                                                                 |         }
    0x000130a6 movs r1, 2                                        |         r1 = 2;
    0x000130a8 mov r0, r4                                        |         r0 = r4;
    0x000130aa bl 0x10712                                        |         fcn_00010712 (r0);
    0x000130ae mov r0, r4                                        |         r0 = r4;
    0x000130b0 b 0x1307a                                         |         
                                                                 |     }
                                                                 | label_8:
    0x000130b2 ldrh.w r3, [fp, 0x28]                             |     r3 = *(arg_28h);
    0x000130b6 add r1, sp, 0x60                                  |     r1 += var_60h;
    0x000130b8 ldr r0, [r4]                                      |     r0 = *(r4);
    0x000130ba cmp r3, 0xa                                       |     
    0x000130bc ite eq                                            |     
                                                                 |     if (r3 != 0xa) {
    0x000130be moveq r2, 0x1c                                    |         r2 = 0x1c;
                                                                 |     }
                                                                 |     if (r3 == 0xa) {
    0x000130c0 movne r2, 0x10                                    |         r2 = 0x10;
                                                                 |     }
    0x000130c2 blx 0x96c0                                        |     fcn_000096c0 ();
    0x000130c6 adds r0, 1                                        |     r0++;
                                                                 |     if (r0 == 1) {
    0x000130c8 bne 0x130de                                       |         
    0x000130ca movs r1, 2                                        |         r1 = 2;
    0x000130cc mov r0, r4                                        |         r0 = r4;
    0x000130ce bl 0x10712                                        |         fcn_00010712 (r0);
    0x000130d2 mov r0, r4                                        |         r0 = r4;
    0x000130d4 mvn r5, 0xcb                                      |         r5 = ~0xcb;
    0x000130d8 blx 0x894c                                        |         fcn_0000894c ();
    0x000130dc b 0x13082                                         |         goto label_0;
                                                                 |     }
    0x000130de ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x000130e0 add.w fp, sp, 0x2dc                               |     
    0x000130e4 ldr r2, [pc, 0xcc]                                |     
    0x000130e6 mov r1, fp                                        |     r1 = fp;
    0x000130e8 mov r0, r4                                        |     r0 = r4;
    0x000130ea str r3, [sp]                                      |     *(sp) = r3;
    0x000130ec ldr r3, [r7]                                      |     r3 = *(r7);
    0x000130ee add r2, pc                                        |     r2 = 0x262a6;
    0x000130f0 bl 0x11c98                                        |     r0 = fcn_00011c98 (r0, r1);
    0x000130f4 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x000130f6 cbz r0, 0x13108                                   |         
    0x000130f8 movs r1, 2                                        |         r1 = 2;
    0x000130fa mov r0, r4                                        |         r0 = r4;
    0x000130fc bl 0x10712                                        |         fcn_00010712 (r0);
    0x00013100 mov r0, r4                                        |         r0 = r4;
    0x00013102 blx 0x894c                                        |         fcn_0000894c ();
    0x00013106 b 0x13082                                         |         goto label_0;
                                                                 |     }
    0x00013108 add r3, sp, 0x1c                                  |     r3 += var_1ch;
    0x0001310a mov r2, fp                                        |     r2 = fp;
    0x0001310c mov r1, sb                                        |     r1 = sb;
    0x0001310e mov r0, r4                                        |     r0 = r4;
    0x00013110 bl 0x11978                                        |     r0 = fcn_00011978 (r0, r1, r2, r3, r4);
    0x00013114 cmp r0, 4                                         |     
    0x00013116 beq 0x13124                                       |     
                                                                 |     while (r0 != 0) {
    0x00013118 mov r0, r4                                        |         r0 = r4;
    0x0001311a mvn r5, 0x70                                      |         r5 = ~0x70;
    0x0001311e blx 0x894c                                        |         fcn_0000894c ();
    0x00013122 b 0x13082                                         |         goto label_0;
    0x00013124 mov r0, sb                                        |         r0 = sb;
    0x00013126 bl 0x11430                                        |         r0 = fcn_00011430 (r0);
    0x0001312a cmp r0, 6                                         |         
                                                                 |         if (r0 == 6) {
    0x0001312c beq 0x13132                                       |             goto label_9;
                                                                 |         }
    0x0001312e cmp r0, 0                                         |         
    0x00013130 bne 0x13118                                       |         
                                                                 |     }
                                                                 | label_9:
    0x00013132 ldr.w r3, [r4, 0x13c]                             |     r3 = *((r4 + 0x13c));
    0x00013136 movs r1, 4                                        |     r1 = 4;
    0x00013138 mov r0, sb                                        |     r0 = sb;
    0x0001313a str.w r3, [sl]                                    |     __asm ("str.w r3, [sl]");
    0x0001313e add.w sl, sp, 0x20                                |     sl += var_20h;
    0x00013142 mov r2, sl                                        |     r2 = sl;
    0x00013144 bl 0x10f74                                        |     r0 = fcn_00010f74 (r0, r1);
                                                                 |     if (r0 != 0) {
    0x00013148 cbz r0, 0x1314c                                   |         
    0x0001314a ldr r0, [sp, 0x20]                                |         r0 = var_20h;
                                                                 |     }
    0x0001314c ldr.w r3, [r4, 0x1b8]                             |     r3 = *((r4 + 0x1b8));
    0x00013150 str.w r0, [r8]                                    |     __asm ("str.w r0, [r8]");
    0x00013154 cmp r3, 4                                         |     
                                                                 |     if (r3 != 4) {
    0x00013156 bne 0x13162                                       |         goto label_10;
                                                                 |     }
    0x00013158 movs r3, 0                                        |     r3 = 0;
                                                                 |     do {
                                                                 | label_1:
    0x0001315a str r3, [r6]                                      |         *(r6) = r3;
                                                                 | label_2:
    0x0001315c ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x0001315e str r4, [r3]                                      |         *(r3) = r4;
    0x00013160 b 0x13082                                         |         goto label_0;
                                                                 | label_10:
    0x00013162 ldr.w r3, [r4, 0x1bc]                             |         r3 = *((r4 + 0x1bc));
    0x00013166 cmp r3, 3                                         |         
                                                                 |         if (r3 != 3) {
    0x00013168 bne 0x13170                                       |             goto label_11;
                                                                 |         }
    0x0001316a mvn r3, 2                                         |         r3 = ~2;
    0x0001316e b 0x1315a                                         |         
                                                                 |     } while (1);
                                                                 | label_11:
    0x00013170 cmp r3, 2                                         |     
                                                                 |     if (r3 == 2) {
    0x00013172 bne 0x1317a                                       |         
    0x00013174 ldr.w r3, [r4, 0x1c0]                             |         r3 = *((r4 + 0x1c0));
    0x00013178 b 0x1315a                                         |         goto label_1;
                                                                 |     }
    0x0001317a cmp r3, 4                                         |     
                                                                 |     if (r3 != 4) {
    0x0001317c bne 0x1315c                                       |         goto label_2;
                                                                 |     }
    0x0001317e mvn r3, 3                                         |     r3 = ~3;
    0x00013182 b 0x1315a                                         |     goto label_1;
                                                                 | label_4:
    0x00013184 mvn r5, 0x64                                      |     r5 = ~0x64;
    0x00013188 b 0x13082                                         |     goto label_0;
                                                                 | label_5:
    0x0001318a ldr r5, [pc, 0x14]                                |     r5 = *(0x131a2);
    0x0001318c b 0x13082                                         |     goto label_0;
                                                                 | label_6:
    0x0001318e mvn r5, 0x67                                      |     r5 = ~0x67;
    0x00013192 b 0x13082                                         |     goto label_0;
                                                                 | label_7:
    0x00013194 mov r0, r5                                        |     r0 = r5;
    0x00013196 add.w sp, sp, 0x2ac                               |     
    0x0001319a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
    0x0001895c b.w 0x12fa0                                       |     goto label_3;
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x18814 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.UpnpRegisterClient ()                        | void UpnpRegisterClient (uint32_t arg1, int16_t arg2, uint32_t arg3) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x00018814 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00018818 mov r8, r0                                    |     r8 = r0;
    0x0001881a ldr r4, [pc, 0xc4]                            |     
    0x0001881c mov sl, r1                                    |     sl = r1;
    0x0001881e mov r6, r2                                    |     r6 = r2;
    0x00018820 ldr r3, [pc, 0xc0]                            |     r3 = *(0x188e4);
    0x00018822 add r4, pc                                    |     r4 = 0x31108;
    0x00018824 ldr r3, [r4, r3]                              |     
    0x00018826 ldr r3, [r3]                                  |     r3 = imp._ITM_deregisterTMCloneTable;
    0x00018828 cmp r3, 1                                     |     
                                                             |     if (r3 != 1) {
    0x0001882a bne 0x188d2                                   |         goto label_2;
                                                             |     }
    0x0001882c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0001882e beq 0x188d8                                   |         goto label_3;
                                                             |     }
    0x00018830 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x00018832 beq 0x188d8                                   |         goto label_3;
                                                             |     }
    0x00018834 ldr r3, [pc, 0xb0]                            |     r3 = *(0x188e8);
    0x00018836 ldr r7, [r4, r3]                              |     r7 = *((r4 + r3));
    0x00018838 mov r0, r7                                    |     r0 = r7;
    0x0001883a blx 0x8930                                    |     fcn_00008930 ();
    0x0001883e ldr r3, [pc, 0xac]                            |     r3 = *(0x188ee);
    0x00018840 ldr.w sb, [r4, r3]                            |     sb = *((r4 + r3));
    0x00018844 ldr r3, [pc, 0xa8]                            |     r3 = *(0x188f0);
    0x00018846 ldr r2, [r4, r3]                              |     r2 = *((r4 + r3));
    0x00018848 ldr.w r3, [sb]                                |     r3 = *(sb);
    0x0001884c ldr r2, [r2]                                  |     r2 = *(r2);
    0x0001884e add r3, r2                                    |     r3 += r2;
    0x00018850 ldr r2, [pc, 0xa0]                            |     
    0x00018852 ldr r2, [r4, r2]                              |     r2 = *((r4 + r2));
    0x00018854 ldr r2, [r2]                                  |     r2 = *(0x188f4);
    0x00018856 add r3, r2                                    |     r3 += r2;
    0x00018858 cmp r3, 0xc6                                  |     
                                                             |     if (r3 <= 0xc6) {
    0x0001885a ble 0x1886a                                   |         goto label_4;
                                                             |     }
    0x0001885c mov r0, r7                                    |     r0 = r7;
    0x0001885e blx 0x920c                                    |     fcn_0000920c ();
    0x00018862 mvn r0, 0x77                                  |     r0 = ~0x77;
                                                             |     do {
                                                             | label_1:
    0x00018866 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_4:
    0x0001886a bl 0x184c4                                    |         fcn_000184c4 ();
    0x0001886e str r0, [r6]                                  |         *(r6) = r0;
    0x00018870 adds r0, 0x66                                 |         r0 += 0x66;
                                                             |         if (r0 != 0x66) {
    0x00018872 bne 0x18880                                   |             goto label_5;
                                                             |         }
                                                             | label_0:
    0x00018874 mov r0, r7                                    |         r0 = r7;
    0x00018876 blx 0x920c                                    |         fcn_0000920c ();
    0x0001887a mvn r0, 0x67                                  |         r0 = ~0x67;
    0x0001887e b 0x18866                                     |         
                                                             |     } while (1);
                                                             | label_5:
    0x00018880 mov.w r0, 0x298                               |     r0 = 0x298;
    0x00018884 blx 0x8e30                                    |     r0 = vfprintf_chk ()
    0x00018888 mov r5, r0                                    |     r5 = r0;
    0x0001888a cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0001888c beq 0x18874                                   |         goto label_0;
                                                             |     }
    0x0001888e movs r4, 0                                    |     r4 = 0;
    0x00018890 str.w sl, [r0, 8]                             |     __asm ("str.w sl, [r0, 8]");
    0x00018894 mov r2, r4                                    |     r2 = r4;
    0x00018896 mov r1, r4                                    |     r1 = r4;
    0x00018898 strd r4, r8, [r0]                             |     __asm ("strd r4, r8, [r0]");
    0x0001889c add.w r0, r0, 0x264                           |     r0 += 0x264;
    0x000188a0 str r4, [r0, -0x4]                            |     *((r0 - 0x4)) = r4;
    0x000188a4 bl 0x9896                                     |     fcn_00009896 (r0, r1, r2);
    0x000188a8 mov.w r3, -1                                  |     r3 = -1;
    0x000188ac ldr r2, [r6]                                  |     r2 = *(r6);
    0x000188ae strd r3, r3, [r5, 0x254]                      |     __asm ("strd r3, r3, aav.0x000000ff");
    0x000188b2 mov r0, r7                                    |     r0 = r7;
    0x000188b4 ldr r3, [pc, 0x40]                            |     
    0x000188b6 str.w r4, [r5, 0x22c]                         |     __asm ("str.w r4, [r5, aav.0x0000022c]");
    0x000188ba add r3, pc                                    |     r3 = 0x311b6;
    0x000188bc str.w r5, [r3, r2, lsl 2]                     |     __asm ("str.w r5, [r3, r2, lsl 2]");
    0x000188c0 ldr.w r3, [sb]                                |     r3 = *(sb);
    0x000188c4 adds r3, 1                                    |     r3++;
    0x000188c6 str.w r3, [sb]                                |     __asm ("str.w r3, [sb]");
    0x000188ca blx 0x920c                                    |     fcn_0000920c ();
    0x000188ce mov r0, r4                                    |     r0 = r4;
    0x000188d0 b 0x18866                                     |     goto label_1;
                                                             | label_2:
    0x000188d2 mvn r0, 0x73                                  |     r0 = ~0x73;
    0x000188d6 b 0x18866                                     |     goto label_1;
                                                             | label_3:
    0x000188d8 mvn r0, 0x64                                  |     r0 = ~0x64;
    0x000188dc b 0x18866                                     |     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/libupnp.so.17.1.8 @ 0x18b08 */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) sym.UpnpRegisterRootDevice ()                                        | void UpnpRegisterRootDevice (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                 |     int16_t var_4h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
                                                                                 |     r2 = arg3;
                                                                                 |     r3 = arg4;
    0x00018b08 push.w {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00018b0c mov r5, r3                                                        |     r5 = r3;
    0x00018b0e ldr r7, [pc, 0x154]                                               |     
    0x00018b10 mov r6, r0                                                        |     r6 = r0;
    0x00018b12 mov r8, r1                                                        |     r8 = r1;
    0x00018b14 mov sl, r2                                                        |     sl = r2;
    0x00018b16 ldr r3, [pc, 0x150]                                               |     r3 = *(0x18c6a);
    0x00018b18 add r7, pc                                                        |     r7 = 0x31782;
    0x00018b1a ldr r3, [r7, r3]                                                  |     r3 = imp._ITM_deregisterTMCloneTable;
    0x00018b1c mov r0, r3                                                        |     r0 = r3;
    0x00018b1e str r3, [sp, 4]                                                   |     var_4h = r3;
    0x00018b20 blx 0x8930                                                        |     fcn_00008930 ();
    0x00018b24 ldr r3, [pc, 0x144]                                               |     r3 = *(0x18c6c);
    0x00018b26 ldr r3, [r7, r3]                                                  |     r3 = imp._ITM_deregisterTMCloneTable;
    0x00018b28 ldr.w sb, [r3]                                                    |     sb = imp._ITM_deregisterTMCloneTable;
    0x00018b2c cmp.w sb, 1                                                       |     
                                                                                 |     if (sb != 1) {
    0x00018b30 bne.w 0x18c56                                                     |         goto label_1;
                                                                                 |     }
    0x00018b34 cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x00018b36 beq.w 0x18c5c                                                     |         goto label_2;
                                                                                 |     }
    0x00018b3a cmp.w r8, 0                                                       |     
                                                                                 |     if (r8 == 0) {
    0x00018b3e beq.w 0x18c5c                                                     |         goto label_2;
                                                                                 |     }
    0x00018b42 cmp r6, 0                                                         |     
                                                                                 |     if (r6 == 0) {
    0x00018b44 beq.w 0x18c5c                                                     |         goto label_2;
                                                                                 |     }
    0x00018b48 ldrb r3, [r6]                                                     |     r3 = *(r6);
    0x00018b4a cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x00018b4c beq.w 0x18c5c                                                     |         goto label_2;
                                                                                 |     }
    0x00018b50 bl 0x184c4                                                        |     fcn_000184c4 ();
    0x00018b54 str r0, [r5]                                                      |     *(r5) = r0;
    0x00018b56 adds r0, 0x66                                                     |     r0 += 0x66;
    0x00018b58 bne 0x18b6c                                                       |     
                                                                                 |     while (r0 == 0) {
    0x00018b5a mvn r6, 0x67                                                      |         r6 = ~0x67;
                                                                                 | label_0:
    0x00018b5e ldr r0, [sp, 4]                                                   |         r0 = var_4h;
    0x00018b60 blx 0x920c                                                        |         fcn_0000920c ();
    0x00018b64 mov r0, r6                                                        |         r0 = r6;
    0x00018b66 add sp, 0xc                                                       |         
    0x00018b68 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                        |         
    0x00018b6c mov.w r0, 0x298                                                   |         r0 = 0x298;
    0x00018b70 blx 0x8e30                                                        |         r0 = vfprintf_chk ()
    0x00018b74 mov r4, r0                                                        |         r4 = r0;
    0x00018b76 cmp r0, 0                                                         |         
    0x00018b78 beq 0x18b5a                                                       |         
                                                                                 |     }
    0x00018b7a mov.w r2, 0x298                                                   |     r2 = 0x298;
    0x00018b7e movs r1, 0                                                        |     r1 = 0;
    0x00018b80 blx 0x9144                                                        |     fcn_00009144 ();
    0x00018b84 ldr r3, [pc, 0xe8]                                                |     
    0x00018b86 mov fp, r4                                                        |     
    0x00018b88 ldr r2, [r5]                                                      |     r2 = *(r5);
    0x00018b8a mov r1, r6                                                        |     r1 = r6;
    0x00018b8c str sb, [fp], 0x10                                                |     *(fp) = sb;
                                                                                 |     fp += 0x10;
    0x00018b90 mov r0, fp                                                        |     r0 = fp;
    0x00018b92 add r3, pc                                                        |     r3 = 0x31806;
    0x00018b94 str.w r4, [r3, r2, lsl 2]                                         |     __asm ("str.w r4, [r3, r2, lsl 2]");
    0x00018b98 movs r2, 0xb3                                                     |     r2 = 0xb3;
    0x00018b9a blx 0x9174                                                        |     fcn_00009174 ();
    0x00018b9e mov r1, r6                                                        |     r1 = r6;
    0x00018ba0 movs r2, 0xb3                                                     |     r2 = 0xb3;
    0x00018ba2 add.w r0, r4, 0xc4                                                |     r0 = r4 + 0xc4;
    0x00018ba6 blx 0x9174                                                        |     fcn_00009174 ();
    0x00018baa mov.w r2, 0x708                                                   |     r2 = 0x708;
    0x00018bae strd r8, sl, [r4, 4]                                              |     __asm ("strd r8, sl, [r4, 4]");
    0x00018bb0 ldrh r1, [r0, 0x10]                                               |     r1 = *((r0 + 0x10));
    0x00018bb2 str.w r2, [r4, 0x22c]                                             |     __asm ("str.w r2, [r4, aav.0x0000022c]");
    0x00018bb6 add.w r8, r4, 0x264                                               |     r8 = r4 + 0x264;
    0x00018bba movs r2, 0                                                        |     r2 = 0;
    0x00018bbc mov r0, r8                                                        |     r0 = r8;
    0x00018bbe mov r1, r2                                                        |     r1 = r2;
    0x00018bc0 mov.w sl, 0                                                       |     sl = 0;
    0x00018bc4 bl 0x9896                                                         |     fcn_00009896 (r0, r1, r2);
    0x00018bc8 mov.w r2, -1                                                      |     r2 = -1;
    0x00018bcc add.w r1, r4, 0x23c                                               |     r1 = r4 + 0x23c;
    0x00018bd0 strd r2, r2, [r4, 0x254]                                          |     __asm ("strd r2, r2, aav.0x000000ff");
    0x00018bd4 movs r2, 2                                                        |     r2 = 2;
    0x00018bd6 mov r0, fp                                                        |     r0 = fp;
    0x00018bd8 str.w sl, [r4, 0x260]                                             |     __asm ("str.w sl, aav.0x000000ff");
    0x00018bdc str.w r2, [r4, 0x25c]                                             |     __asm ("str.w r2, aav.0x000000ff");
    0x00018be0 blx 0x8c98                                                        |     r0 = ixmlDocument_createTextNode ();
    0x00018be4 mov r6, r0                                                        |     r6 = r0;
                                                                                 |     if (r0 != 0) {
    0x00018be6 cbz r0, 0x18bf8                                                   |         
    0x00018be8 mov r1, sl                                                        |         r1 = sl;
    0x00018bea mov r0, r8                                                        |         r0 = r8;
    0x00018bec bl 0x9978                                                         |         fcn_00009978 (r0, r1, r2);
    0x00018bf0 ldr r0, [r5]                                                      |         r0 = *(r5);
    0x00018bf2 bl 0x18792                                                        |         fcn_00018792 (r0);
    0x00018bf6 b 0x18b5e                                                         |         goto label_0;
                                                                                 |     }
    0x00018bf8 ldr r1, [pc, 0x78]                                                |     
    0x00018bfa ldr.w r0, [r4, 0x23c]                                             |     r0 = *((r4 + 0x23c));
    0x00018bfe add r1, pc                                                        |     r1 = 0x31876;
    0x00018c00 blx 0x8a84                                                        |     fcn_00008a84 ();
    0x00018c04 str.w r0, [r4, 0x240]                                             |     __asm ("str.w r0, aav.0x000000ff");
                                                                                 |     if (r0 == 0) {
    0x00018c08 cbnz r0, 0x18c26                                                  |         
    0x00018c0a mov r1, r6                                                        |         r1 = r6;
    0x00018c0c mov r0, r8                                                        |         r0 = r8;
    0x00018c0e bl 0x9978                                                         |         fcn_00009978 (r0, r1, r2);
    0x00018c12 ldr.w r0, [r4, 0x23c]                                             |         r0 = *((r4 + 0x23c));
    0x00018c16 mvn r6, 0x6a                                                      |         r6 = ~0x6a;
    0x00018c1a blx 0x8914                                                        |         ixmlCloneDOMString ();
    0x00018c1e ldr r0, [r5]                                                      |         r0 = *(r5);
    0x00018c20 bl 0x18792                                                        |         fcn_00018792 (r0);
    0x00018c24 b 0x18b5e                                                         |         goto label_0;
                                                                                 |     }
    0x00018c26 ldr r1, [pc, 0x50]                                                |     
    0x00018c28 ldr.w r0, [r4, 0x23c]                                             |     r0 = *((r4 + 0x23c));
    0x00018c2c add r1, pc                                                        |     r1 = 0x318aa;
    0x00018c2e blx 0x8a84                                                        |     fcn_00008a84 ();
    0x00018c32 add.w r1, r4, 0x248                                               |     r1 = r4 + 0x248;
    0x00018c36 str.w r0, [r4, 0x244]                                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00018c3a str.w r6, [r4, 0x248]                                             |     __asm ("str.w r6, aav.0x000000ff");
    0x00018c3e mov r2, fp                                                        |     r2 = fp;
    0x00018c40 strd r6, r6, [r1, 4]                                              |     __asm ("strd r6, r6, [r1, 4]");
    0x00018c44 ldr.w r0, [r4, 0x23c]                                             |     r0 = *((r4 + 0x23c));
    0x00018c48 bl 0x101ec                                                        |     fcn_000101ec (r0, r1, r2);
    0x00018c4c ldr r3, [pc, 0x2c]                                                |     r3 = *(0x18c7c);
    0x00018c4e ldr r3, [r7, r3]                                                  |     r3 = *((r7 + r3));
    0x00018c50 str.w sb, [r3]                                                    |     __asm ("str.w sb, [r3]");
    0x00018c54 b 0x18b5e                                                         |     goto label_0;
                                                                                 | label_1:
    0x00018c56 mvn r6, 0x73                                                      |     r6 = ~0x73;
    0x00018c5a b 0x18b5e                                                         |     goto label_0;
                                                                                 | label_2:
    0x00018c5c mvn r6, 0x64                                                      |     r6 = ~0x64;
    0x00018c60 b 0x18b5e                                                         |     goto label_0;
                                                                                 | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x18c80 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.UpnpRegisterRootDevice4 ()                                       | void UpnpRegisterRootDevice4 (int16_t arg_30h, int16_t arg_34h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                 |     int16_t var_4h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
                                                                                 |     r2 = arg3;
                                                                                 |     r3 = arg4;
    0x00018c80 push.w {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00018c84 mov r4, r3                                                        |     r4 = r3;
    0x00018c86 ldr r6, [pc, 0x174]                                               |     
    0x00018c88 mov r5, r0                                                        |     r5 = r0;
    0x00018c8a mov r8, r1                                                        |     r8 = r1;
    0x00018c8c mov sl, r2                                                        |     sl = r2;
    0x00018c8e ldr r3, [pc, 0x170]                                               |     r3 = *(0x18e02);
    0x00018c90 add r6, pc                                                        |     r6 = 0x31a92;
    0x00018c92 ldr r3, [r6, r3]                                                  |     r3 = imp._ITM_deregisterTMCloneTable;
    0x00018c94 mov r0, r3                                                        |     r0 = r3;
    0x00018c96 str r3, [sp, 4]                                                   |     var_4h = r3;
    0x00018c98 blx 0x8930                                                        |     fcn_00008930 ();
    0x00018c9c ldr r3, [pc, 0x164]                                               |     r3 = *(0x18e04);
    0x00018c9e ldr r3, [r6, r3]                                                  |     r3 = imp._ITM_deregisterTMCloneTable;
    0x00018ca0 ldr.w fp, [r3]                                                    |     fp = imp._ITM_deregisterTMCloneTable;
    0x00018ca4 cmp.w fp, 1                                                       |     
    0x00018ca6 lsrs r1, r0, 0x1c                                                 |     r1 = r0 >> 0x1c;
                                                                                 |     if (r1 != r0) {
    0x00018ca8 bne.w 0x18dee                                                     |         goto label_1;
                                                                                 |     }
    0x00018cac cmp r4, 0                                                         |     
                                                                                 |     if (r4 == 0) {
    0x00018cae beq.w 0x18df4                                                     |         goto label_2;
                                                                                 |     }
    0x00018cb2 cmp.w r8, 0                                                       |     
                                                                                 |     if (r8 == 0) {
    0x00018cb6 beq.w 0x18df4                                                     |         goto label_2;
                                                                                 |     }
    0x00018cba cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x00018cbc beq.w 0x18df4                                                     |         goto label_2;
                                                                                 |     }
    0x00018cc0 ldrb r3, [r5]                                                     |     r3 = *(r5);
    0x00018cc2 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x00018cc4 beq.w 0x18df4                                                     |         goto label_2;
                                                                                 |     }
    0x00018cc8 ldr r3, [sp, 0x30]                                                |     r3 = *(arg_30h);
    0x00018cca bic r3, r3, 8                                                     |     r3 = BIT_MASK (r3, 8);
    0x00018cce cmp r3, 2                                                         |     
                                                                                 |     if (r3 != 2) {
    0x00018cd0 bne.w 0x18df4                                                     |         goto label_2;
                                                                                 |     }
    0x00018cd4 bl 0x184c4                                                        |     fcn_000184c4 ();
    0x00018cd8 str r0, [r4]                                                      |     *(r4) = r0;
    0x00018cda adds r0, 0x66                                                     |     r0 += 0x66;
    0x00018cdc bne 0x18cf0                                                       |     
                                                                                 |     while (r0 == 0) {
    0x00018cde mvn r5, 0x67                                                      |         r5 = ~0x67;
                                                                                 | label_0:
    0x00018ce2 ldr r0, [sp, 4]                                                   |         r0 = var_4h;
    0x00018ce4 blx 0x920c                                                        |         fcn_0000920c ();
    0x00018ce8 mov r0, r5                                                        |         r0 = r5;
    0x00018cea add sp, 0xc                                                       |         
    0x00018cec pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                        |         
    0x00018cf0 mov.w r0, 0x298                                                   |         r0 = 0x298;
    0x00018cf4 blx 0x8e30                                                        |         r0 = vfprintf_chk ()
    0x00018cf8 mov sb, r0                                                        |         sb = r0;
    0x00018cfa cmp r0, 0                                                         |         
    0x00018cfc beq 0x18cde                                                       |         
                                                                                 |     }
    0x00018cfe mov.w r2, 0x298                                                   |     r2 = 0x298;
    0x00018d02 movs r1, 0                                                        |     r1 = 0;
    0x00018d04 blx 0x9144                                                        |     fcn_00009144 ();
    0x00018d08 ldr r2, [pc, 0xfc]                                                |     
    0x00018d0a mov r7, sb                                                        |     r7 = sb;
    0x00018d0c ldr r1, [r4]                                                      |     r1 = *(r4);
    0x00018d0e str fp, [r7], 0x10                                                |     *(r7) = fp;
                                                                                 |     r7 += 0x10;
    0x00018d12 mov r0, r7                                                        |     r0 = r7;
    0x00018d14 add r2, pc                                                        |     r2 = 0x31b20;
    0x00018d16 str.w sb, [r2, r1, lsl 2]                                         |     __asm ("str.w sb, [r2, r1, lsl 2]");
    0x00018d1a movs r2, 0xb3                                                     |     r2 = 0xb3;
    0x00018d1c mov r1, r5                                                        |     r1 = r5;
    0x00018d1e blx 0x9174                                                        |     fcn_00009174 ();
    0x00018d22 ldr r3, [sp, 0x34]                                                |     r3 = *(arg_34h);
    0x00018d24 add.w r0, sb, 0xc4                                                |     r0 = sb + 0xc4;
    0x00018d28 movs r2, 0xb3                                                     |     r2 = 0xb3;
                                                                                 |     if (r3 != 0) {
    0x00018d2a cbnz r3, 0x18d80                                                  |         goto label_3;
                                                                                 |     }
    0x00018d2c mov r1, r5                                                        |     r1 = r5;
                                                                                 |     do {
    0x00018d2e blx 0x9174                                                        |         fcn_00009174 ();
    0x00018d32 mov.w r2, 0x708                                                   |         r2 = 0x708;
    0x00018d36 strd r8, sl, [sb, 4]                                              |         __asm ("strd r8, sl, [sb, 4]");
    0x00018d3a str.w r2, [sb, 0x22c]                                             |         __asm ("str.w r2, [sb, aav.0x0000022c]");
    0x00018d3e add.w r8, sb, 0x264                                               |         r8 = sb + 0x264;
    0x00018d42 movs r2, 0                                                        |         r2 = 0;
    0x00018d44 mov r0, r8                                                        |         r0 = r8;
    0x00018d46 mov r1, r2                                                        |         r1 = r2;
    0x00018d48 mov.w sl, 0                                                       |         sl = 0;
    0x00018d4c bl 0x9896                                                         |         fcn_00009896 (r0, r1, r2);
    0x00018d50 ldr r3, [sp, 0x30]                                                |         r3 = *(arg_30h);
    0x00018d52 mov.w r2, -1                                                      |         r2 = -1;
    0x00018d56 add.w r1, sb, 0x23c                                               |         r1 = sb + 0x23c;
    0x00018d5a mov r0, r7                                                        |         r0 = r7;
    0x00018d5c str.w sl, [sb, 0x260]                                             |         __asm ("str.w sl, aav.0x000000ff");
    0x00018d60 strd r2, r2, [sb, 0x254]                                          |         __asm ("strd r2, r2, aav.0x000000ff");
    0x00018d64 str.w r3, [sb, 0x25c]                                             |         __asm ("str.w r3, aav.0x000000ff");
    0x00018d68 blx 0x8c98                                                        |         r0 = ixmlDocument_createTextNode ();
    0x00018d6c mov r5, r0                                                        |         r5 = r0;
                                                                                 |         if (r0 == 0) {
    0x00018d6e cbz r0, 0x18d84                                                   |             goto label_4;
                                                                                 |         }
    0x00018d70 mov r1, sl                                                        |         r1 = sl;
    0x00018d72 mov r0, r8                                                        |         r0 = r8;
    0x00018d74 bl 0x9978                                                         |         fcn_00009978 (r0, r1, r2);
    0x00018d78 ldr r0, [r4]                                                      |         r0 = *(r4);
    0x00018d7a bl 0x18792                                                        |         fcn_00018792 (r0);
    0x00018d7e b 0x18ce2                                                         |         goto label_0;
                                                                                 | label_3:
    0x00018d80 ldr r1, [sp, 0x34]                                                |         r1 = *(arg_34h);
    0x00018d82 b 0x18d2e                                                         |         
                                                                                 |     } while (1);
                                                                                 | label_4:
    0x00018d84 ldr r1, [pc, 0x84]                                                |     
    0x00018d86 ldr.w r0, [sb, 0x23c]                                             |     r0 = *((sb + 0x23c));
    0x00018d8a add r1, pc                                                        |     r1 = 0x31b9a;
    0x00018d8c blx 0x8a84                                                        |     fcn_00008a84 ();
    0x00018d90 str.w r0, [sb, 0x240]                                             |     __asm ("str.w r0, aav.0x000000ff");
                                                                                 |     if (r0 == 0) {
    0x00018d94 cbnz r0, 0x18db2                                                  |         
    0x00018d96 mov r1, r5                                                        |         r1 = r5;
    0x00018d98 mov r0, r8                                                        |         r0 = r8;
    0x00018d9a bl 0x9978                                                         |         fcn_00009978 (r0, r1, r2);
    0x00018d9e ldr.w r0, [sb, 0x23c]                                             |         r0 = *((sb + 0x23c));
    0x00018da2 mvn r5, 0x6a                                                      |         r5 = ~0x6a;
    0x00018da6 blx 0x8914                                                        |         ixmlCloneDOMString ();
    0x00018daa ldr r0, [r4]                                                      |         r0 = *(r4);
    0x00018dac bl 0x18792                                                        |         fcn_00018792 (r0);
    0x00018db0 b 0x18ce2                                                         |         goto label_0;
                                                                                 |     }
    0x00018db2 ldr r1, [pc, 0x5c]                                                |     
    0x00018db4 ldr.w r0, [sb, 0x23c]                                             |     r0 = *((sb + 0x23c));
    0x00018db8 add r1, pc                                                        |     r1 = 0x31bce;
    0x00018dba blx 0x8a84                                                        |     fcn_00008a84 ();
    0x00018dbe add.w r1, sb, 0x248                                               |     r1 = sb + 0x248;
    0x00018dc2 str.w r0, [sb, 0x244]                                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00018dc6 str.w r5, [sb, 0x248]                                             |     __asm ("str.w r5, aav.0x000000ff");
    0x00018dca mov r2, r7                                                        |     r2 = r7;
    0x00018dcc strd r5, r5, [r1, 4]                                              |     __asm ("strd r5, r5, [r1, 4]");
    0x00018dd0 ldr.w r0, [sb, 0x23c]                                             |     r0 = *((sb + 0x23c));
    0x00018dd4 bl 0x101ec                                                        |     fcn_000101ec (r0, r1, r2);
    0x00018dd8 ldr r3, [sp, 0x30]                                                |     r3 = *(arg_30h);
    0x00018dda cmp r3, 2                                                         |     
    0x00018ddc mov.w r3, 1                                                       |     r3 = 1;
                                                                                 |     if (r3 != 2) {
    0x00018de0 bne 0x18dea                                                       |         goto label_5;
                                                                                 |     }
    0x00018de2 ldr r2, [pc, 0x30]                                                |     r2 = *(0x18e16);
                                                                                 |     do {
    0x00018de4 ldr r2, [r6, r2]                                                  |         r2 = *((r6 + r2));
    0x00018de6 str r3, [r2]                                                      |         *(r2) = r3;
    0x00018de8 b 0x18ce2                                                         |         goto label_0;
                                                                                 | label_5:
    0x00018dea ldr r2, [pc, 0x2c]                                                |         r2 = *(0x18e1a);
    0x00018dec b 0x18de4                                                         |         
                                                                                 |     } while (1);
                                                                                 | label_1:
    0x00018dee mvn r5, 0x73                                                      |     r5 = ~0x73;
    0x00018df2 b 0x18ce2                                                         |     goto label_0;
                                                                                 | label_2:
    0x00018df4 mvn r5, 0x64                                                      |     r5 = ~0x64;
    0x00018df8 b 0x18ce2                                                         |     goto label_0;
                                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x18e1c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.UpnpRegisterRootDevice3 ()       | void UpnpRegisterRootDevice3 (int16_t arg_10h) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
    0x00018e1c push {r0, r1, r4, lr}             |     
    0x00018e1e movs r4, 0                        |     r4 = 0;
    0x00018e20 str r4, [sp, 4]                   |     var_4h = r4;
    0x00018e22 ldr r4, [sp, 0x10]                |     r4 = *(arg_10h);
    0x00018e24 str r4, [sp]                      |     *(sp) = r4;
    0x00018e26 blx 0x8f78                        |     fcn_00008f78 ();
    0x00018e2a add sp, 8                         |     
    0x00018e2c pop {r4, 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/libupnp.so.17.1.8 @ 0x19064 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.UpnpRegisterRootDevice2 ()                       | void UpnpRegisterRootDevice2 (int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg1, int16_t arg2, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r3 = arg4;
    0x00019064 svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x00019068 mov r5, r3                                        |     r5 = r3;
    0x0001906a ldr r7, [pc, 0x150]                               |     
    0x0001906c sub sp, 0x14                                      |     
    0x0001906e mov sl, r0                                        |     sl = r0;
    0x00019070 mov fp, r1                                        |     
    0x00019072 ldr r3, [pc, 0x14c]                               |     r3 = *(0x191c2);
    0x00019074 add r7, pc                                        |     r7 = 0x32236;
    0x00019076 ldr r6, [sp, 0x40]                                |     r6 = *(arg_40h);
    0x00019078 ldr r3, [r7, r3]                                  |     r3 = *(0x32236);
    0x0001907a mov r0, r3                                        |     r0 = r3;
    0x0001907c str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0001907e blx 0x8930                                        |     fcn_00008930 ();
    0x00019082 ldr r3, [pc, 0x140]                               |     r3 = *(0x191c6);
    0x00019084 ldr r3, [r7, r3]                                  |     r3 = *(0x32236);
    0x00019086 ldr.w r8, [r3]                                    |     r8 = *(0x32236);
    0x0001908a cmp.w r8, 1                                       |     
                                                                 |     if (r8 != 1) {
    0x0001908e bne.w 0x191ae                                     |         goto label_1;
                                                                 |     }
    0x00019092 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00019094 beq.w 0x191b4                                     |         goto label_2;
                                                                 |     }
    0x00019098 ldr r3, [sp, 0x38]                                |     r3 = *(arg_38h);
    0x0001909a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001909c beq.w 0x191b4                                     |         goto label_2;
                                                                 |     }
    0x000190a0 bl 0x184c4                                        |     fcn_000184c4 ();
    0x000190a4 str r0, [r6]                                      |     *(r6) = r0;
    0x000190a6 adds r0, 0x66                                     |     r0 += 0x66;
    0x000190a8 bne 0x190bc                                       |     
                                                                 |     while (r0 == 0) {
    0x000190aa mvn sl, 0x67                                      |         sl = ~0x67;
                                                                 | label_0:
    0x000190ae ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x000190b0 blx 0x920c                                        |         fcn_0000920c ();
    0x000190b4 mov r0, sl                                        |         r0 = sl;
    0x000190b6 add sp, 0x14                                      |         
    0x000190b8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x000190bc mov.w r0, 0x298                                   |         r0 = 0x298;
    0x000190c0 blx 0x8e30                                        |         r0 = vfprintf_chk ()
    0x000190c4 mov r4, r0                                        |         r4 = r0;
    0x000190c6 cmp r0, 0                                         |         
    0x000190c8 beq 0x190aa                                       |         
                                                                 |     }
    0x000190ca mov.w r2, 0x298                                   |     r2 = 0x298;
    0x000190ce movs r1, 0                                        |     r1 = 0;
    0x000190d0 blx 0x9144                                        |     fcn_00009144 ();
    0x000190d4 ldr r3, [pc, 0xf0]                                |     
    0x000190d6 add.w sb, r4, 0x10                                |     sb = r4 + 0x10;
    0x000190da ldr r2, [r6]                                      |     r2 = *(r6);
    0x000190dc mov r0, sl                                        |     r0 = sl;
    0x000190de mov r1, fp                                        |     r1 = fp;
    0x000190e0 add r3, pc                                        |     r3 = 0x322ac;
    0x000190e2 str.w r4, [r3, r2, lsl 2]                         |     __asm ("str.w r4, [r3, r2, lsl 2]");
    0x000190e6 add.w r3, r4, 0x23c                               |     r3 = r4 + 0x23c;
    0x000190ea str r3, [sp]                                      |     *(sp) = r3;
    0x000190ec mov r2, r5                                        |     r2 = r5;
    0x000190ee movs r3, 2                                        |     r3 = 2;
    0x000190f0 str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h]");
    0x000190f4 bl 0x18e2e                                        |     r0 = fcn_00018e2e (r0, r1, r2, r3, r4);
    0x000190f8 mov sl, r0                                        |     sl = r0;
                                                                 |     if (r0 != 0) {
    0x000190fa cbz r0, 0x19104                                   |         
    0x000190fc ldr r0, [r6]                                      |         r0 = *(r6);
    0x000190fe bl 0x18792                                        |         fcn_00018792 (r0);
    0x00019102 b 0x190ae                                         |         goto label_0;
                                                                 |     }
    0x00019104 movs r2, 0xb3                                     |     r2 = 0xb3;
    0x00019106 mov r1, sb                                        |     r1 = sb;
    0x00019108 add.w r0, r4, 0xc4                                |     r0 = r4 + 0xc4;
    0x0001910c blx 0x9174                                        |     fcn_00009174 ();
    0x00019110 ldr r3, [sp, 0x38]                                |     r3 = *(arg_38h);
    0x00019112 subs r5, 0                                        |     
    0x00019114 it ne                                             |     
                                                                 |     if (r5 == 0) {
    0x00019116 movne r5, 1                                       |         r5 = 1;
                                                                 |     }
    0x00019118 mov r2, sl                                        |     r2 = sl;
    0x0001911a str r5, [r4, 0xc]                                 |     *((r4 + 0xc)) = r5;
    0x0001911c add.w r5, r4, 0x264                               |     r5 = r4 + 0x264;
    0x00019120 str r3, [r4, 4]                                   |     *((r4 + 4)) = r3;
    0x00019122 mov r1, sl                                        |     r1 = sl;
    0x00019124 ldr r3, [sp, 0x3c]                                |     r3 = *(arg_3ch);
    0x00019126 mov r0, r5                                        |     r0 = r5;
    0x00019128 str.w r8, [r4]                                    |     __asm ("str.w r8, [r4]");
    0x0001912c strd sl, sl, [r4, 0x240]                          |     __asm ("strd sl, sl, aav.0x000000ff");
    0x00019130 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x00019132 mov.w r3, 0x708                                   |     r3 = 0x708;
    0x00019136 str.w r3, [r4, 0x22c]                             |     __asm ("str.w r3, [r4, aav.0x0000022c]");
    0x0001913a bl 0x9896                                         |     fcn_00009896 (r0, r1, r2);
    0x0001913e ldr r1, [pc, 0x8c]                                |     
    0x00019140 mov.w r3, -1                                      |     r3 = -1;
    0x00019144 strd r3, r3, [r4, 0x254]                          |     __asm ("strd r3, r3, aav.0x000000ff");
    0x00019148 movs r3, 2                                        |     r3 = 2;
    0x0001914a ldr.w r0, [r4, 0x23c]                             |     r0 = *((r4 + 0x23c));
    0x0001914e add r1, pc                                        |     r1 = 0x32320;
    0x00019150 str.w sl, [r4, 0x260]                             |     __asm ("str.w sl, aav.0x000000ff");
    0x00019154 str.w r3, [r4, 0x25c]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00019158 blx 0x8a84                                        |     fcn_00008a84 ();
    0x0001915c str.w r0, [r4, 0x240]                             |     __asm ("str.w r0, aav.0x000000ff");
                                                                 |     if (r0 == 0) {
    0x00019160 cbnz r0, 0x1917e                                  |         
    0x00019162 mov r1, sl                                        |         r1 = sl;
    0x00019164 mov r0, r5                                        |         r0 = r5;
    0x00019166 bl 0x9978                                         |         fcn_00009978 (r0, r1, r2);
    0x0001916a ldr.w r0, [r4, 0x23c]                             |         r0 = *((r4 + 0x23c));
    0x0001916e mvn sl, 0x6a                                      |         sl = ~0x6a;
    0x00019172 blx 0x8914                                        |         ixmlCloneDOMString ();
    0x00019176 ldr r0, [r6]                                      |         r0 = *(r6);
    0x00019178 bl 0x18792                                        |         fcn_00018792 (r0);
    0x0001917c b 0x190ae                                         |         goto label_0;
                                                                 |     }
    0x0001917e ldr r1, [pc, 0x50]                                |     
    0x00019180 ldr.w r0, [r4, 0x23c]                             |     r0 = *((r4 + 0x23c));
    0x00019182 lsls r4, r7, 8                                    |     r4 = r7 << 8;
    0x00019184 add r1, pc                                        |     r1 = 0x3235a;
    0x00019186 blx 0x8a84                                        |     fcn_00008a84 ();
    0x0001918a add.w r1, r4, 0x248                               |     r1 = r4 + 0x248;
    0x0001918e str.w r0, [r4, 0x244]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00019192 str.w sl, [r4, 0x248]                             |     __asm ("str.w sl, aav.0x000000ff");
    0x00019196 mov r2, sb                                        |     r2 = sb;
    0x00019198 strd sl, sl, [r1, 4]                              |     __asm ("strd sl, sl, [r1, 4]");
    0x0001919c ldr.w r0, [r4, 0x23c]                             |     r0 = *((r4 + 0x23c));
    0x000191a0 bl 0x101ec                                        |     fcn_000101ec (r0, r1, r2);
    0x000191a4 ldr r3, [pc, 0x2c]                                |     r3 = *(0x191d4);
    0x000191a6 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x000191a8 str.w r8, [r3]                                    |     __asm ("str.w r8, [r3]");
    0x000191ac b 0x190ae                                         |     goto label_0;
                                                                 | label_1:
    0x000191ae mvn sl, 0x73                                      |     sl = ~0x73;
    0x000191b2 b 0x190ae                                         |     goto label_0;
                                                                 | label_2:
    0x000191b4 mvn sl, 0x64                                      |     sl = ~0x64;
    0x000191b8 b 0x190ae                                         |     goto label_0;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x19064 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.UpnpRegisterRootDevice2 ()                       | void UpnpRegisterRootDevice2 (int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg1, int16_t arg2, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r3 = arg4;
    0x00019064 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00019068 mov r5, r3                                        |     r5 = r3;
    0x0001906a ldr r7, [pc, 0x150]                               |     
    0x0001906c sub sp, 0x14                                      |     
    0x0001906e mov sl, r0                                        |     sl = r0;
    0x00019070 mov fp, r1                                        |     
    0x00019072 ldr r3, [pc, 0x14c]                               |     r3 = *(0x191c2);
    0x00019074 add r7, pc                                        |     r7 = 0x32236;
    0x00019076 ldr r6, [sp, 0x40]                                |     r6 = *(arg_40h);
    0x00019078 ldr r3, [r7, r3]                                  |     r3 = *(0x32236);
    0x0001907a mov r0, r3                                        |     r0 = r3;
    0x0001907c str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0001907e blx 0x8930                                        |     fcn_00008930 ();
    0x00019082 ldr r3, [pc, 0x140]                               |     r3 = *(0x191c6);
    0x00019084 ldr r3, [r7, r3]                                  |     r3 = *(0x32236);
    0x00019086 ldr.w r8, [r3]                                    |     r8 = *(0x32236);
    0x0001908a cmp.w r8, 1                                       |     
                                                                 |     if (r8 != 1) {
    0x0001908e bne.w 0x191ae                                     |         goto label_1;
                                                                 |     }
    0x00019092 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00019094 beq.w 0x191b4                                     |         goto label_2;
                                                                 |     }
    0x00019098 ldr r3, [sp, 0x38]                                |     r3 = *(arg_38h);
    0x0001909a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001909c beq.w 0x191b4                                     |         goto label_2;
                                                                 |     }
    0x000190a0 bl 0x184c4                                        |     fcn_000184c4 ();
    0x000190a4 str r0, [r6]                                      |     *(r6) = r0;
    0x000190a6 adds r0, 0x66                                     |     r0 += 0x66;
    0x000190a8 bne 0x190bc                                       |     
                                                                 |     while (r0 == 0) {
    0x000190aa mvn sl, 0x67                                      |         sl = ~0x67;
                                                                 | label_0:
    0x000190ae ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x000190b0 blx 0x920c                                        |         fcn_0000920c ();
    0x000190b4 mov r0, sl                                        |         r0 = sl;
    0x000190b6 add sp, 0x14                                      |         
    0x000190b8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x000190bc mov.w r0, 0x298                                   |         r0 = 0x298;
    0x000190c0 blx 0x8e30                                        |         r0 = vfprintf_chk ()
    0x000190c4 mov r4, r0                                        |         r4 = r0;
    0x000190c6 cmp r0, 0                                         |         
    0x000190c8 beq 0x190aa                                       |         
                                                                 |     }
    0x000190ca mov.w r2, 0x298                                   |     r2 = 0x298;
    0x000190ce movs r1, 0                                        |     r1 = 0;
    0x000190d0 blx 0x9144                                        |     fcn_00009144 ();
    0x000190d4 ldr r3, [pc, 0xf0]                                |     
    0x000190d6 add.w sb, r4, 0x10                                |     sb = r4 + 0x10;
    0x000190da ldr r2, [r6]                                      |     r2 = *(r6);
    0x000190dc mov r0, sl                                        |     r0 = sl;
    0x000190de mov r1, fp                                        |     r1 = fp;
    0x000190e0 add r3, pc                                        |     r3 = 0x322ac;
    0x000190e2 str.w r4, [r3, r2, lsl 2]                         |     __asm ("str.w r4, [r3, r2, lsl 2]");
    0x000190e6 add.w r3, r4, 0x23c                               |     r3 = r4 + 0x23c;
    0x000190ea str r3, [sp]                                      |     *(sp) = r3;
    0x000190ec mov r2, r5                                        |     r2 = r5;
    0x000190ee movs r3, 2                                        |     r3 = 2;
    0x000190f0 str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h]");
    0x000190f4 bl 0x18e2e                                        |     r0 = fcn_00018e2e (r0, r1, r2, r3, r4);
    0x000190f8 mov sl, r0                                        |     sl = r0;
                                                                 |     if (r0 != 0) {
    0x000190fa cbz r0, 0x19104                                   |         
    0x000190fc ldr r0, [r6]                                      |         r0 = *(r6);
    0x000190fe bl 0x18792                                        |         fcn_00018792 (r0);
    0x00019102 b 0x190ae                                         |         goto label_0;
                                                                 |     }
    0x00019104 movs r2, 0xb3                                     |     r2 = 0xb3;
    0x00019106 mov r1, sb                                        |     r1 = sb;
    0x00019108 add.w r0, r4, 0xc4                                |     r0 = r4 + 0xc4;
    0x0001910c blx 0x9174                                        |     fcn_00009174 ();
    0x00019110 ldr r3, [sp, 0x38]                                |     r3 = *(arg_38h);
    0x00019112 subs r5, 0                                        |     
    0x00019114 it ne                                             |     
                                                                 |     if (r5 == 0) {
    0x00019116 movne r5, 1                                       |         r5 = 1;
                                                                 |     }
    0x00019118 mov r2, sl                                        |     r2 = sl;
    0x0001911a str r5, [r4, 0xc]                                 |     *((r4 + 0xc)) = r5;
    0x0001911c add.w r5, r4, 0x264                               |     r5 = r4 + 0x264;
    0x00019120 str r3, [r4, 4]                                   |     *((r4 + 4)) = r3;
    0x00019122 mov r1, sl                                        |     r1 = sl;
    0x00019124 ldr r3, [sp, 0x3c]                                |     r3 = *(arg_3ch);
    0x00019126 mov r0, r5                                        |     r0 = r5;
    0x00019128 str.w r8, [r4]                                    |     __asm ("str.w r8, [r4]");
    0x0001912c strd sl, sl, [r4, 0x240]                          |     __asm ("strd sl, sl, aav.0x000000ff");
    0x00019130 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x00019132 mov.w r3, 0x708                                   |     r3 = 0x708;
    0x00019136 str.w r3, [r4, 0x22c]                             |     __asm ("str.w r3, [r4, aav.0x0000022c]");
    0x0001913a bl 0x9896                                         |     fcn_00009896 (r0, r1, r2);
    0x0001913e ldr r1, [pc, 0x8c]                                |     
    0x00019140 mov.w r3, -1                                      |     r3 = -1;
    0x00019144 strd r3, r3, [r4, 0x254]                          |     __asm ("strd r3, r3, aav.0x000000ff");
    0x00019148 movs r3, 2                                        |     r3 = 2;
    0x0001914a ldr.w r0, [r4, 0x23c]                             |     r0 = *((r4 + 0x23c));
    0x0001914e add r1, pc                                        |     r1 = 0x32320;
    0x00019150 str.w sl, [r4, 0x260]                             |     __asm ("str.w sl, aav.0x000000ff");
    0x00019154 str.w r3, [r4, 0x25c]                             |     __asm ("str.w r3, aav.0x000000ff");
    0x00019158 blx 0x8a84                                        |     fcn_00008a84 ();
    0x0001915c str.w r0, [r4, 0x240]                             |     __asm ("str.w r0, aav.0x000000ff");
                                                                 |     if (r0 == 0) {
    0x00019160 cbnz r0, 0x1917e                                  |         
    0x00019162 mov r1, sl                                        |         r1 = sl;
    0x00019164 mov r0, r5                                        |         r0 = r5;
    0x00019166 bl 0x9978                                         |         fcn_00009978 (r0, r1, r2);
    0x0001916a ldr.w r0, [r4, 0x23c]                             |         r0 = *((r4 + 0x23c));
    0x0001916e mvn sl, 0x6a                                      |         sl = ~0x6a;
    0x00019172 blx 0x8914                                        |         ixmlCloneDOMString ();
    0x00019176 ldr r0, [r6]                                      |         r0 = *(r6);
    0x00019178 bl 0x18792                                        |         fcn_00018792 (r0);
    0x0001917c b 0x190ae                                         |         goto label_0;
                                                                 |     }
    0x0001917e ldr r1, [pc, 0x50]                                |     
    0x00019180 ldr.w r0, [r4, 0x23c]                             |     r0 = *((r4 + 0x23c));
    0x00019182 lsls r4, r7, 8                                    |     r4 = r7 << 8;
    0x00019184 add r1, pc                                        |     r1 = 0x3235a;
    0x00019186 blx 0x8a84                                        |     fcn_00008a84 ();
    0x0001918a add.w r1, r4, 0x248                               |     r1 = r4 + 0x248;
    0x0001918e str.w r0, [r4, 0x244]                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00019192 str.w sl, [r4, 0x248]                             |     __asm ("str.w sl, aav.0x000000ff");
    0x00019196 mov r2, sb                                        |     r2 = sb;
    0x00019198 strd sl, sl, [r1, 4]                              |     __asm ("strd sl, sl, [r1, 4]");
    0x0001919c ldr.w r0, [r4, 0x23c]                             |     r0 = *((r4 + 0x23c));
    0x000191a0 bl 0x101ec                                        |     fcn_000101ec (r0, r1, r2);
    0x000191a4 ldr r3, [pc, 0x2c]                                |     r3 = *(0x191d4);
    0x000191a6 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x000191a8 str.w r8, [r3]                                    |     __asm ("str.w r8, [r3]");
    0x000191ac b 0x190ae                                         |     goto label_0;
                                                                 | label_1:
    0x000191ae mvn sl, 0x73                                      |     sl = ~0x73;
    0x000191b2 b 0x190ae                                         |     goto label_0;
                                                                 | label_2:
    0x000191b4 mvn sl, 0x64                                      |     sl = ~0x64;
    0x000191b8 b 0x190ae                                         |     goto label_0;
                                                                 | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x18c80 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.UpnpRegisterRootDevice4 ()                                       | void UpnpRegisterRootDevice4 (int16_t arg_30h, int16_t arg_34h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                                 |     int16_t var_4h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
                                                                                 |     r2 = arg3;
                                                                                 |     r3 = arg4;
    0x00018c80 push.w {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00018c84 mov r4, r3                                                        |     r4 = r3;
    0x00018c86 ldr r6, [pc, 0x174]                                               |     
    0x00018c88 mov r5, r0                                                        |     r5 = r0;
    0x00018c8a mov r8, r1                                                        |     r8 = r1;
    0x00018c8c mov sl, r2                                                        |     sl = r2;
    0x00018c8e ldr r3, [pc, 0x170]                                               |     r3 = *(0x18e02);
    0x00018c90 add r6, pc                                                        |     r6 = 0x31a92;
    0x00018c92 ldr r3, [r6, r3]                                                  |     r3 = imp._ITM_deregisterTMCloneTable;
    0x00018c94 mov r0, r3                                                        |     r0 = r3;
    0x00018c96 str r3, [sp, 4]                                                   |     var_4h = r3;
    0x00018c98 blx 0x8930                                                        |     fcn_00008930 ();
    0x00018c9c ldr r3, [pc, 0x164]                                               |     r3 = *(0x18e04);
    0x00018c9e ldr r3, [r6, r3]                                                  |     r3 = imp._ITM_deregisterTMCloneTable;
    0x00018ca0 ldr.w fp, [r3]                                                    |     fp = imp._ITM_deregisterTMCloneTable;
    0x00018ca4 cmp.w fp, 1                                                       |     
    0x00018ca6 lsrs r1, r0, 0x1c                                                 |     r1 = r0 >> 0x1c;
                                                                                 |     if (r1 != r0) {
    0x00018ca8 bne.w 0x18dee                                                     |         goto label_1;
                                                                                 |     }
    0x00018cac cmp r4, 0                                                         |     
                                                                                 |     if (r4 == 0) {
    0x00018cae beq.w 0x18df4                                                     |         goto label_2;
                                                                                 |     }
    0x00018cb2 cmp.w r8, 0                                                       |     
                                                                                 |     if (r8 == 0) {
    0x00018cb6 beq.w 0x18df4                                                     |         goto label_2;
                                                                                 |     }
    0x00018cba cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x00018cbc beq.w 0x18df4                                                     |         goto label_2;
                                                                                 |     }
    0x00018cc0 ldrb r3, [r5]                                                     |     r3 = *(r5);
    0x00018cc2 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x00018cc4 beq.w 0x18df4                                                     |         goto label_2;
                                                                                 |     }
    0x00018cc8 ldr r3, [sp, 0x30]                                                |     r3 = *(arg_30h);
    0x00018cca bic r3, r3, 8                                                     |     r3 = BIT_MASK (r3, 8);
    0x00018cce cmp r3, 2                                                         |     
                                                                                 |     if (r3 != 2) {
    0x00018cd0 bne.w 0x18df4                                                     |         goto label_2;
                                                                                 |     }
    0x00018cd4 bl 0x184c4                                                        |     fcn_000184c4 ();
    0x00018cd8 str r0, [r4]                                                      |     *(r4) = r0;
    0x00018cda adds r0, 0x66                                                     |     r0 += 0x66;
    0x00018cdc bne 0x18cf0                                                       |     
                                                                                 |     while (r0 == 0) {
    0x00018cde mvn r5, 0x67                                                      |         r5 = ~0x67;
                                                                                 | label_0:
    0x00018ce2 ldr r0, [sp, 4]                                                   |         r0 = var_4h;
    0x00018ce4 blx 0x920c                                                        |         fcn_0000920c ();
    0x00018ce8 mov r0, r5                                                        |         r0 = r5;
    0x00018cea add sp, 0xc                                                       |         
    0x00018cec pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}                        |         
    0x00018cf0 mov.w r0, 0x298                                                   |         r0 = 0x298;
    0x00018cf4 blx 0x8e30                                                        |         r0 = vfprintf_chk ()
    0x00018cf8 mov sb, r0                                                        |         sb = r0;
    0x00018cfa cmp r0, 0                                                         |         
    0x00018cfc beq 0x18cde                                                       |         
                                                                                 |     }
    0x00018cfe mov.w r2, 0x298                                                   |     r2 = 0x298;
    0x00018d02 movs r1, 0                                                        |     r1 = 0;
    0x00018d04 blx 0x9144                                                        |     fcn_00009144 ();
    0x00018d08 ldr r2, [pc, 0xfc]                                                |     
    0x00018d0a mov r7, sb                                                        |     r7 = sb;
    0x00018d0c ldr r1, [r4]                                                      |     r1 = *(r4);
    0x00018d0e str fp, [r7], 0x10                                                |     *(r7) = fp;
                                                                                 |     r7 += 0x10;
    0x00018d12 mov r0, r7                                                        |     r0 = r7;
    0x00018d14 add r2, pc                                                        |     r2 = 0x31b20;
    0x00018d16 str.w sb, [r2, r1, lsl 2]                                         |     __asm ("str.w sb, [r2, r1, lsl 2]");
    0x00018d1a movs r2, 0xb3                                                     |     r2 = 0xb3;
    0x00018d1c mov r1, r5                                                        |     r1 = r5;
    0x00018d1e blx 0x9174                                                        |     fcn_00009174 ();
    0x00018d22 ldr r3, [sp, 0x34]                                                |     r3 = *(arg_34h);
    0x00018d24 add.w r0, sb, 0xc4                                                |     r0 = sb + 0xc4;
    0x00018d28 movs r2, 0xb3                                                     |     r2 = 0xb3;
                                                                                 |     if (r3 != 0) {
    0x00018d2a cbnz r3, 0x18d80                                                  |         goto label_3;
                                                                                 |     }
    0x00018d2c mov r1, r5                                                        |     r1 = r5;
                                                                                 |     do {
    0x00018d2e blx 0x9174                                                        |         fcn_00009174 ();
    0x00018d32 mov.w r2, 0x708                                                   |         r2 = 0x708;
    0x00018d36 strd r8, sl, [sb, 4]                                              |         __asm ("strd r8, sl, [sb, 4]");
    0x00018d3a str.w r2, [sb, 0x22c]                                             |         __asm ("str.w r2, [sb, aav.0x0000022c]");
    0x00018d3e add.w r8, sb, 0x264                                               |         r8 = sb + 0x264;
    0x00018d42 movs r2, 0                                                        |         r2 = 0;
    0x00018d44 mov r0, r8                                                        |         r0 = r8;
    0x00018d46 mov r1, r2                                                        |         r1 = r2;
    0x00018d48 mov.w sl, 0                                                       |         sl = 0;
    0x00018d4c bl 0x9896                                                         |         fcn_00009896 (r0, r1, r2);
    0x00018d50 ldr r3, [sp, 0x30]                                                |         r3 = *(arg_30h);
    0x00018d52 mov.w r2, -1                                                      |         r2 = -1;
    0x00018d56 add.w r1, sb, 0x23c                                               |         r1 = sb + 0x23c;
    0x00018d5a mov r0, r7                                                        |         r0 = r7;
    0x00018d5c str.w sl, [sb, 0x260]                                             |         __asm ("str.w sl, aav.0x000000ff");
    0x00018d60 strd r2, r2, [sb, 0x254]                                          |         __asm ("strd r2, r2, aav.0x000000ff");
    0x00018d64 str.w r3, [sb, 0x25c]                                             |         __asm ("str.w r3, aav.0x000000ff");
    0x00018d68 blx 0x8c98                                                        |         r0 = ixmlDocument_createTextNode ();
    0x00018d6c mov r5, r0                                                        |         r5 = r0;
                                                                                 |         if (r0 == 0) {
    0x00018d6e cbz r0, 0x18d84                                                   |             goto label_4;
                                                                                 |         }
    0x00018d70 mov r1, sl                                                        |         r1 = sl;
    0x00018d72 mov r0, r8                                                        |         r0 = r8;
    0x00018d74 bl 0x9978                                                         |         fcn_00009978 (r0, r1, r2);
    0x00018d78 ldr r0, [r4]                                                      |         r0 = *(r4);
    0x00018d7a bl 0x18792                                                        |         fcn_00018792 (r0);
    0x00018d7e b 0x18ce2                                                         |         goto label_0;
                                                                                 | label_3:
    0x00018d80 ldr r1, [sp, 0x34]                                                |         r1 = *(arg_34h);
    0x00018d82 b 0x18d2e                                                         |         
                                                                                 |     } while (1);
                                                                                 | label_4:
    0x00018d84 ldr r1, [pc, 0x84]                                                |     
    0x00018d86 ldr.w r0, [sb, 0x23c]                                             |     r0 = *((sb + 0x23c));
    0x00018d8a add r1, pc                                                        |     r1 = 0x31b9a;
    0x00018d8c blx 0x8a84                                                        |     fcn_00008a84 ();
    0x00018d90 str.w r0, [sb, 0x240]                                             |     __asm ("str.w r0, aav.0x000000ff");
                                                                                 |     if (r0 == 0) {
    0x00018d94 cbnz r0, 0x18db2                                                  |         
    0x00018d96 mov r1, r5                                                        |         r1 = r5;
    0x00018d98 mov r0, r8                                                        |         r0 = r8;
    0x00018d9a bl 0x9978                                                         |         fcn_00009978 (r0, r1, r2);
    0x00018d9e ldr.w r0, [sb, 0x23c]                                             |         r0 = *((sb + 0x23c));
    0x00018da2 mvn r5, 0x6a                                                      |         r5 = ~0x6a;
    0x00018da6 blx 0x8914                                                        |         ixmlCloneDOMString ();
    0x00018daa ldr r0, [r4]                                                      |         r0 = *(r4);
    0x00018dac bl 0x18792                                                        |         fcn_00018792 (r0);
    0x00018db0 b 0x18ce2                                                         |         goto label_0;
                                                                                 |     }
    0x00018db2 ldr r1, [pc, 0x5c]                                                |     
    0x00018db4 ldr.w r0, [sb, 0x23c]                                             |     r0 = *((sb + 0x23c));
    0x00018db8 add r1, pc                                                        |     r1 = 0x31bce;
    0x00018dba blx 0x8a84                                                        |     fcn_00008a84 ();
    0x00018dbe add.w r1, sb, 0x248                                               |     r1 = sb + 0x248;
    0x00018dc2 str.w r0, [sb, 0x244]                                             |     __asm ("str.w r0, aav.0x000000ff");
    0x00018dc6 str.w r5, [sb, 0x248]                                             |     __asm ("str.w r5, aav.0x000000ff");
    0x00018dca mov r2, r7                                                        |     r2 = r7;
    0x00018dcc strd r5, r5, [r1, 4]                                              |     __asm ("strd r5, r5, [r1, 4]");
    0x00018dd0 ldr.w r0, [sb, 0x23c]                                             |     r0 = *((sb + 0x23c));
    0x00018dd4 bl 0x101ec                                                        |     fcn_000101ec (r0, r1, r2);
    0x00018dd8 ldr r3, [sp, 0x30]                                                |     r3 = *(arg_30h);
    0x00018dda cmp r3, 2                                                         |     
    0x00018ddc mov.w r3, 1                                                       |     r3 = 1;
                                                                                 |     if (r3 != 2) {
    0x00018de0 bne 0x18dea                                                       |         goto label_5;
                                                                                 |     }
    0x00018de2 ldr r2, [pc, 0x30]                                                |     r2 = *(0x18e16);
                                                                                 |     do {
    0x00018de4 ldr r2, [r6, r2]                                                  |         r2 = *((r6 + r2));
    0x00018de6 str r3, [r2]                                                      |         *(r2) = r3;
    0x00018de8 b 0x18ce2                                                         |         goto label_0;
                                                                                 | label_5:
    0x00018dea ldr r2, [pc, 0x2c]                                                |         r2 = *(0x18e1a);
    0x00018dec b 0x18de4                                                         |         
                                                                                 |     } while (1);
                                                                                 | label_1:
    0x00018dee mvn r5, 0x73                                                      |     r5 = ~0x73;
    0x00018df2 b 0x18ce2                                                         |     goto label_0;
                                                                                 | label_2:
    0x00018df4 mvn r5, 0x64                                                      |     r5 = ~0x64;
    0x00018df8 b 0x18ce2                                                         |     goto label_0;
                                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x19f9c */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.UpnpRenewSubscriptionAsync ()                        | void UpnpRenewSubscriptionAsync (int16_t arg_50h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_24h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x00019f9c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00019fa0 mov sb, r2                                            |     sb = r2;
    0x00019fa2 ldr r2, [pc, 0x110]                                   |     
    0x00019fa4 mov r8, r3                                            |     r8 = r3;
    0x00019fa6 sub sp, 0x2c                                          |     
    0x00019fa8 mov sl, r0                                            |     sl = r0;
    0x00019faa ldr r3, [pc, 0x10c]                                   |     r3 = *(0x1a0ba);
    0x00019fac add r6, sp, 8                                         |     r6 += var_8h;
    0x00019fae add r2, pc                                            |     r2 = 0x34068;
    0x00019fb0 ldr r5, [pc, 0x108]                                   |     
    0x00019fb2 mov r7, r1                                            |     r7 = r1;
    0x00019fb4 mov r0, r6                                            |     r0 = r6;
    0x00019fb6 ldr r3, [r2, r3]                                      |     
    0x00019fb8 movs r1, 0                                            |     r1 = 0;
    0x00019fba movs r2, 0x1c                                         |     r2 = 0x1c;
    0x00019fbc ldr.w fp, [sp, 0x50]                                  |     fp = *(arg_50h);
    0x00019fc0 add r5, pc                                            |     r5 = 0x34080;
    0x00019fc2 ldr r3, [r3]                                          |     r3 = *(0x34068);
    0x00019fc4 str r3, [sp, 0x24]                                    |     var_24h = r3;
    0x00019fc6 mov.w r3, 0                                           |     r3 = 0;
    0x00019fca str r1, [sp, 4]                                       |     var_4h = r1;
    0x00019fcc blx 0x9144                                            |     fcn_00009144 ();
    0x00019fd0 ldr r3, [pc, 0xec]                                    |     r3 = *(0x1a0c0);
    0x00019fd2 ldr r3, [r5, r3]                                      |     
    0x00019fd4 ldr r3, [r3]                                          |     r3 = *(0x34080);
    0x00019fd6 cmp r3, 1                                             |     
                                                                     |     if (r3 != 1) {
    0x00019fd8 bne 0x1a0a0                                           |         goto label_2;
                                                                     |     }
    0x00019fda ldr r3, [pc, 0xe8]                                    |     r3 = *(0x1a0c6);
    0x00019fdc ldr r4, [r5, r3]                                      |     r4 = *((r5 + r3));
    0x00019fde mov r0, r4                                            |     r0 = r4;
    0x00019fe0 blx 0x8d34                                            |     strcpy (r0, r1);
    0x00019fe4 add r1, sp, 4                                         |     r1 += var_4h;
    0x00019fe6 mov r0, sl                                            |     r0 = sl;
    0x00019fe8 bl 0x19470                                            |     r0 = fcn_00019470 (r0, r1);
                                                                     |     if (r0 == 0) {
    0x00019fec cbz r0, 0x1a010                                       |         goto label_3;
                                                                     |     }
    0x00019fee mov r0, r4                                            |     r0 = r4;
    0x00019ff0 blx 0x920c                                            |     fcn_0000920c ();
    0x00019ff4 mvn r0, 0x63                                          |     r0 = ~0x63;
                                                                     |     do {
                                                                     | label_1:
    0x00019ff8 ldr r2, [pc, 0xcc]                                    |         
    0x00019ffa ldr r3, [pc, 0xbc]                                    |         r3 = *(0x1a0ba);
    0x00019ffc add r2, pc                                            |         r2 = 0x340c8;
    0x00019ffe ldr r3, [r2, r3]                                      |         r3 = *(0x340c8);
    0x0001a000 ldr r2, [r3]                                          |         r2 = *(0x340c8);
    0x0001a002 ldr r3, [sp, 0x24]                                    |         r3 = var_24h;
    0x0001a004 eors r2, r3                                           |         r2 ^= r3;
    0x0001a006 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 == r3) {
    0x0001a00a beq 0x1a0ac                                           |             goto label_4;
                                                                     |         }
    0x0001a00c blx 0x8b7c                                            |         fcn_00008b7c ();
                                                                     | label_3:
    0x0001a010 adds r3, r7, 1                                        |         r3 = r7 + 1;
                                                                     |         if (r3 == r7) {
    0x0001a012 beq 0x1a024                                           |             goto label_5;
                                                                     |         }
    0x0001a014 cmp r7, 0                                             |         
                                                                     |         if (r7 > 0) {
    0x0001a016 bgt 0x1a024                                           |             goto label_5;
                                                                     |         }
                                                                     | label_0:
    0x0001a018 mov r0, r4                                            |         r0 = r4;
    0x0001a01a blx 0x920c                                            |         fcn_0000920c ();
    0x0001a01e mvn r0, 0x64                                          |         r0 = ~0x64;
    0x0001a022 b 0x19ff8                                             |         
                                                                     |     } while (1);
                                                                     | label_5:
    0x0001a024 cmp.w sb, 0                                           |     
                                                                     |     if (sb == 0) {
    0x0001a028 beq 0x1a018                                           |         goto label_0;
                                                                     |     }
    0x0001a02a cmp.w r8, 0                                           |     
                                                                     |     if (r8 == 0) {
    0x0001a02e beq 0x1a018                                           |         goto label_0;
                                                                     |     }
    0x0001a030 mov r0, r4                                            |     r0 = r4;
    0x0001a032 blx 0x920c                                            |     fcn_0000920c ();
    0x0001a036 movw r0, 0x74c                                        |     r0 = 0x74c;
    0x0001a03a blx 0x8e30                                            |     r0 = vfprintf_chk ()
    0x0001a03e mov r4, r0                                            |     r4 = r0;
                                                                     |     if (r0 == 0) {
    0x0001a040 cbz r0, 0x1a0a6                                       |         goto label_6;
                                                                     |     }
    0x0001a042 movw r2, 0x74c                                        |     r2 = 0x74c;
    0x0001a046 movs r1, 0                                            |     r1 = 0;
    0x0001a048 blx 0x9144                                            |     fcn_00009144 ();
    0x0001a04c movs r3, 9                                            |     r3 = 9;
    0x0001a04e movs r2, 0x2b                                         |     r2 = 0x2b;
    0x0001a050 mov r1, sb                                            |     r1 = sb;
    0x0001a052 strd r3, sl, [r4]                                     |     __asm ("strd r3, sl, [r4]");
    0x0001a056 addw r0, r4, 0x70c                                    |     __asm ("addw r0, r4, aav.0x000000ff");
    0x0001a05a blx 0x9174                                            |     fcn_00009174 ();
    0x0001a05e ldr r3, [pc, 0x6c]                                    |     r3 = *(0x1a0ce);
    0x0001a060 mov r2, r4                                            |     r2 = r4;
    0x0001a062 str.w r8, [r4, 0x73c]                                 |     __asm ("str.w r8, aav.0x000000ff");
    0x0001a066 mov r0, r6                                            |     r0 = r6;
    0x0001a068 str.w fp, [r4, 0x738]                                 |     __asm ("str.w fp, aav.0x000000ff");
    0x0001a06c str r7, [r4, 8]                                       |     *((r4 + 8)) = r7;
    0x0001a06e ldr r1, [r5, r3]                                      |     r1 = *((r5 + r3));
    0x0001a070 bl 0xa7d4                                             |     fcn_0000a7d4 (r0, r1, r2);
    0x0001a074 ldr r3, [pc, 0x58]                                    |     r3 = *(0x1a0d0);
    0x0001a076 mov r0, r6                                            |     r0 = r6;
    0x0001a078 ldr r1, [r5, r3]                                      |     r1 = *((r5 + r3));
    0x0001a07a bl 0xa7fc                                             |     fcn_0000a7fc (r0, r1);
    0x0001a07e movs r1, 1                                            |     r1 = 1;
    0x0001a080 mov r0, r6                                            |     r0 = r6;
    0x0001a082 bl 0xa7ec                                             |     fcn_0000a7ec (r0, r1);
    0x0001a086 ldr r3, [pc, 0x4c]                                    |     r3 = *(0x1a0d6);
    0x0001a088 movs r2, 0                                            |     r2 = 0;
    0x0001a08a mov r1, r6                                            |     r1 = r6;
    0x0001a08c ldr r0, [r5, r3]                                      |     r0 = *((r5 + r3));
    0x0001a08e bl 0xa174                                             |     r0 = fcn_0000a174 (r0, r1, r2);
    0x0001a092 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0001a094 beq 0x19ff8                                           |         goto label_1;
                                                                     |     }
    0x0001a096 mov r0, r4                                            |     r0 = r4;
    0x0001a098 blx 0x894c                                            |     fcn_0000894c ();
    0x0001a09c movs r0, 0                                            |     r0 = 0;
    0x0001a09e b 0x19ff8                                             |     goto label_1;
                                                                     | label_2:
    0x0001a0a0 mvn r0, 0x73                                          |     r0 = ~0x73;
    0x0001a0a4 b 0x19ff8                                             |     goto label_1;
                                                                     | label_6:
    0x0001a0a6 mvn r0, 0x67                                          |     r0 = ~0x67;
    0x0001a0aa b 0x19ff8                                             |     goto label_1;
                                                                     | label_4:
    0x0001a0ac add sp, 0x2c                                          |     
    0x0001a0ae pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
    0x0001a0b0 ldrh r0, [r6, 0x3e]                                   |     r0 = *((r6 + 0x3e));
                                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libupnp.so.17.1.8 @ 0x1a564 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.UpnpSendActionAsync ()                               | void UpnpSendActionAsync (int16_t arg_58h, int16_t arg_60h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int16_t var_2ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x0001a564 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0001a568 sub sp, 0x34                                          |     
    0x0001a56a mov sl, r3                                            |     sl = r3;
    0x0001a56c ldrd r4, r3, [sp, 0x58]                               |     __asm ("ldrd r4, r3, [arg_58h]");
    0x0001a570 mov r7, r2                                            |     r7 = r2;
    0x0001a572 add r5, sp, 0x10                                      |     r5 += var_10h;
    0x0001a574 ldr r2, [pc, 0x154]                                   |     
    0x0001a576 mov sb, r0                                            |     sb = r0;
    0x0001a578 str r3, [sp]                                          |     *(sp) = r3;
    0x0001a57a mov r8, r1                                            |     r8 = r1;
    0x0001a57c ldr r3, [sp, 0x60]                                    |     r3 = *(arg_60h);
    0x0001a57e movs r1, 0                                            |     r1 = 0;
    0x0001a580 add r2, pc                                            |     r2 = 0x34c50;
    0x0001a582 ldr r6, [pc, 0x14c]                                   |     
    0x0001a584 mov r0, r5                                            |     r0 = r5;
    0x0001a586 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0001a588 ldr r3, [pc, 0x148]                                   |     r3 = *(0x1a6d4);
    0x0001a58a add r6, pc                                            |     r6 = 0x34c60;
    0x0001a58c ldr r3, [r2, r3]                                      |     
    0x0001a58e movs r2, 0x1c                                         |     r2 = 0x1c;
    0x0001a590 ldr r3, [r3]                                          |     r3 = *(0x34c50);
    0x0001a592 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0001a594 mov.w r3, 0                                           |     r3 = 0;
    0x0001a598 str r1, [sp, 0xc]                                     |     var_ch = r1;
    0x0001a59a blx 0x9144                                            |     fcn_00009144 ();
    0x0001a59e ldr r3, [pc, 0x138]                                   |     r3 = *(0x1a6da);
    0x0001a5a0 ldr r3, [r6, r3]                                      |     
    0x0001a5a2 ldr r3, [r3]                                          |     r3 = *(0x34c60);
    0x0001a5a4 cmp r3, 1                                             |     
                                                                     |     if (r3 != 1) {
    0x0001a5a6 bne.w 0x1a6ba                                         |         goto label_2;
                                                                     |     }
    0x0001a5aa ldr r3, [pc, 0x130]                                   |     r3 = *(0x1a6de);
    0x0001a5ac ldr.w fp, [r6, r3]                                    |     fp = *((r6 + r3));
    0x0001a5b0 mov r0, fp                                            |     r0 = fp;
    0x0001a5b2 blx 0x8d34                                            |     strcpy (r0, r1);
    0x0001a5b6 add r1, sp, 0xc                                       |     r1 += var_ch;
    0x0001a5b8 mov r0, sb                                            |     r0 = sb;
    0x0001a5ba bl 0x19470                                            |     r0 = fcn_00019470 (r0, r1);
                                                                     |     if (r0 == 0) {
    0x0001a5be cbz r0, 0x1a5e2                                       |         goto label_3;
                                                                     |     }
    0x0001a5c0 mov r0, fp                                            |     r0 = fp;
    0x0001a5c2 blx 0x920c                                            |     fcn_0000920c ();
    0x0001a5c6 mvn r0, 0x63                                          |     r0 = ~0x63;
                                                                     |     do {
                                                                     | label_1:
    0x0001a5ca ldr r2, [pc, 0x114]                                   |         
    0x0001a5cc ldr r3, [pc, 0x104]                                   |         r3 = *(0x1a6d4);
    0x0001a5ce add r2, pc                                            |         r2 = 0x34cb4;
    0x0001a5d0 ldr r3, [r2, r3]                                      |         r3 = *(0x34cb4);
    0x0001a5d2 ldr r2, [r3]                                          |         r2 = *(0x34cb4);
    0x0001a5d4 ldr r3, [sp, 0x2c]                                    |         r3 = var_2ch;
    0x0001a5d6 eors r2, r3                                           |         r2 ^= r3;
    0x0001a5d8 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 == r3) {
    0x0001a5dc beq 0x1a6c6                                           |             goto label_4;
                                                                     |         }
    0x0001a5de blx 0x8b7c                                            |         fcn_00008b7c ();
                                                                     | label_3:
    0x0001a5e2 mov r0, fp                                            |         r0 = fp;
    0x0001a5e4 blx 0x920c                                            |         fcn_0000920c ();
    0x0001a5e8 cmp.w r8, 0                                           |         
                                                                     |         if (r8 == 0) {
    0x0001a5ec beq 0x1a6c0                                           |             goto label_5;
                                                                     |         }
    0x0001a5ee cmp r7, 0                                             |         
                                                                     |         if (r7 == 0) {
    0x0001a5f0 beq 0x1a6c0                                           |             goto label_5;
                                                                     |         }
    0x0001a5f2 cmp r4, 0                                             |         
                                                                     |         if (r4 == 0) {
    0x0001a5f4 beq 0x1a6c0                                           |             goto label_5;
                                                                     |         }
    0x0001a5f6 ldr r3, [sp]                                          |         r3 = *(sp);
    0x0001a5f8 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0001a5fa beq 0x1a6c0                                           |             goto label_5;
                                                                     |         }
    0x0001a5fc cmp.w sl, 0                                           |         
                                                                     |         if (sl != 0) {
    0x0001a600 bne 0x1a6c0                                           |             goto label_5;
                                                                     |         }
    0x0001a602 mov r0, r4                                            |         r0 = r4;
    0x0001a604 blx 0x8e60                                            |         r0 = fcn_00008e60 ();
    0x0001a608 mov fp, r0                                            |         
                                                                     |         if (r0 == 0) {
    0x0001a60a cbz r0, 0x1a66a                                       |             goto label_6;
                                                                     |         }
    0x0001a60c movw r0, 0x74c                                        |         r0 = 0x74c;
    0x0001a610 blx 0x8e30                                            |         r0 = vfprintf_chk ()
    0x0001a614 mov r4, r0                                            |         r4 = r0;
                                                                     |         if (r0 != 0) {
    0x0001a616 cbnz r0, 0x1a624                                      |             goto label_7;
                                                                     |         }
    0x0001a618 mov r0, fp                                            |         r0 = fp;
    0x0001a61a blx 0x8fa8                                            |         fcn_00008fa8 ();
                                                                     | label_0:
    0x0001a61e mvn r0, 0x67                                          |         r0 = ~0x67;
    0x0001a622 b 0x1a5ca                                             |         
                                                                     |     } while (1);
                                                                     | label_7:
    0x0001a624 movw r2, 0x74c                                        |     r2 = 0x74c;
    0x0001a628 mov r1, sl                                            |     r1 = sl;
    0x0001a62a blx 0x9144                                            |     fcn_00009144 ();
    0x0001a62e movs r2, 4                                            |     r2 = 4;
    0x0001a630 mov r1, r8                                            |     r1 = r8;
    0x0001a632 strd r2, sb, [r4]                                     |     __asm ("strd r2, sb, [r4]");
    0x0001a636 addw r0, r4, 0x60c                                    |     __asm ("addw r0, r4, aav.0x000000ff");
    0x0001a63a movs r2, 0xff                                         |     r2 = 0xff;
    0x0001a63c blx 0x9174                                            |     fcn_00009174 ();
    0x0001a640 mov r1, r7                                            |     r1 = r7;
    0x0001a642 movs r2, 0xff                                         |     r2 = 0xff;
    0x0001a644 addw r0, r4, 0x40c                                    |     __asm ("addw r0, r4, aav.0x000000ff");
    0x0001a648 blx 0x9174                                            |     fcn_00009174 ();
    0x0001a64c addw r1, r4, 0x744                                    |     __asm ("addw r1, r4, aav.0x000000ff");
    0x0001a650 mov r0, fp                                            |     r0 = fp;
    0x0001a652 blx 0x8bd0                                            |     r0 = fcn_00008bd0 ();
    0x0001a656 mov r7, r0                                            |     r7 = r0;
                                                                     |     if (r0 == 0) {
    0x0001a658 cbz r0, 0x1a670                                       |         goto label_8;
                                                                     |     }
    0x0001a65a mov r0, r4                                            |     r0 = r4;
    0x0001a65c blx 0x894c                                            |     fcn_0000894c ();
    0x0001a660 mov r0, fp                                            |     r0 = fp;
    0x0001a662 blx 0x8fa8                                            |     fcn_00008fa8 ();
    0x0001a666 cmp r7, 0x66                                          |     
                                                                     |     if (r7 == 0x66) {
    0x0001a668 beq 0x1a61e                                           |         goto label_0;
                                                                     |     }
                                                                     | label_6:
    0x0001a66a mvn r0, 0x72                                          |     r0 = ~0x72;
    0x0001a66e b 0x1a5ca                                             |     goto label_1;
                                                                     | label_8:
    0x0001a670 mov r0, fp                                            |     r0 = fp;
    0x0001a672 blx 0x8fa8                                            |     fcn_00008fa8 ();
    0x0001a676 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0001a678 mov r2, r4                                            |     r2 = r4;
    0x0001a67a mov r0, r5                                            |     r0 = r5;
    0x0001a67c str.w r3, [r4, 0x738]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0001a680 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0001a682 str.w r3, [r4, 0x73c]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0001a686 ldr r3, [pc, 0x5c]                                    |     r3 = *(0x1a6e6);
    0x0001a688 ldr r1, [r6, r3]                                      |     r1 = *((r6 + r3));
    0x0001a68a bl 0xa7d4                                             |     fcn_0000a7d4 (r0, r1, r2);
    0x0001a68e ldr r1, [pc, 0x58]                                    |     
    0x0001a690 mov r0, r5                                            |     r0 = r5;
    0x0001a692 add r1, pc                                            |     r1 = 0x34d80;
    0x0001a694 bl 0xa7fc                                             |     fcn_0000a7fc (r0, r1);
    0x0001a698 movs r1, 1                                            |     r1 = 1;
    0x0001a69a mov r0, r5                                            |     r0 = r5;
    0x0001a69c bl 0xa7ec                                             |     fcn_0000a7ec (r0, r1);
    0x0001a6a0 ldr r3, [pc, 0x48]                                    |     r3 = *(0x1a6ec);
    0x0001a6a2 movs r2, 0                                            |     r2 = 0;
    0x0001a6a4 mov r1, r5                                            |     r1 = r5;
    0x0001a6a6 ldr r0, [r6, r3]                                      |     r0 = *((r6 + r3));
    0x0001a6a8 bl 0xa174                                             |     r0 = fcn_0000a174 (r0, r1, r2);
    0x0001a6ac cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0001a6ae beq 0x1a5ca                                           |         goto label_1;
                                                                     |     }
    0x0001a6b0 mov r0, r4                                            |     r0 = r4;
    0x0001a6b2 bl 0x184fa                                            |     fcn_000184fa (r0);
    0x0001a6b6 movs r0, 0                                            |     r0 = 0;
    0x0001a6b8 b 0x1a5ca                                             |     goto label_1;
                                                                     | label_2:
    0x0001a6ba mvn r0, 0x73                                          |     r0 = ~0x73;
    0x0001a6be b 0x1a5ca                                             |     goto label_1;
                                                                     | label_5:
    0x0001a6c0 mvn r0, 0x64                                          |     r0 = ~0x64;
    0x0001a6c4 b 0x1a5ca                                             |     goto label_1;
                                                                     | label_4:
    0x0001a6c6 add sp, 0x34                                          |     
    0x0001a6c8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x1a6f0 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.UpnpSendActionExAsync ()                             | void UpnpSendActionExAsync (int16_t arg_70h, int16_t arg_78h, int16_t arg_7ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                     |     int32_t var_0h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_44h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x0001a6f0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0001a6f4 sub sp, 0x4c                                          |     
    0x0001a6f6 mov fp, r3                                            |     
    0x0001a6f8 ldr r3, [sp, 0x78]                                    |     r3 = *(arg_78h);
    0x0001a6fa mov r8, r2                                            |     r8 = r2;
    0x0001a6fc add r6, sp, 0x28                                      |     r6 += var_28h;
    0x0001a6fe ldr r2, [pc, 0x1b8]                                   |     
    0x0001a700 mov sl, r0                                            |     sl = r0;
    0x0001a702 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0001a704 mov sb, r1                                            |     sb = r1;
    0x0001a706 ldr r3, [sp, 0x7c]                                    |     r3 = *(arg_7ch);
    0x0001a708 movs r1, 0                                            |     r1 = 0;
    0x0001a70a add r2, pc                                            |     r2 = 0x34fc8;
    0x0001a70c ldr r7, [pc, 0x1ac]                                   |     
    0x0001a70e mov r0, r6                                            |     r0 = r6;
    0x0001a710 ldrd r5, r4, [sp, 0x70]                               |     __asm ("ldrd r5, r4, [arg_70h]");
    0x0001a714 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0001a716 ldr r3, [pc, 0x1a8]                                   |     r3 = *(0x1a8c2);
    0x0001a718 add r7, pc                                            |     r7 = 0x34fd8;
    0x0001a71a ldr r3, [r2, r3]                                      |     
    0x0001a71c movs r2, 0x1c                                         |     r2 = 0x1c;
    0x0001a71e ldr r3, [r3]                                          |     r3 = *(0x34fc8);
    0x0001a720 str r3, [sp, 0x44]                                    |     var_44h = r3;
    0x0001a722 mov.w r3, 0                                           |     r3 = 0;
    0x0001a726 str r1, [sp, 0x24]                                    |     var_24h = r1;
    0x0001a728 blx 0x9144                                            |     fcn_00009144 ();
    0x0001a72c ldr r3, [pc, 0x194]                                   |     r3 = *(0x1a8c4);
    0x0001a72e ldr r3, [r7, r3]                                      |     
    0x0001a730 ldr r3, [r3]                                          |     r3 = *(0x34fd8);
    0x0001a732 cmp r3, 1                                             |     
                                                                     |     if (r3 != 1) {
    0x0001a734 bne.w 0x1a8a6                                         |         goto label_3;
                                                                     |     }
                                                                     |     if (r5 != 0) {
    0x0001a738 cbnz r5, 0x1a76a                                      |         goto label_4;
                                                                     |     }
    0x0001a73a ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0001a73c mov r2, r8                                            |     r2 = r8;
    0x0001a73e mov r1, sb                                            |     r1 = sb;
    0x0001a740 mov r0, sl                                            |     r0 = sl;
    0x0001a742 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0001a744 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0001a746 strd r4, r3, [sp]                                     |     __asm ("strd r4, r3, [sp]");
    0x0001a74a mov r3, fp                                            |     r3 = fp;
    0x0001a74c blx 0x9614                                            |     fcn_00009614 ();
                                                                     |     do {
                                                                     | label_0:
    0x0001a750 ldr r2, [pc, 0x174]                                   |         
    0x0001a752 ldr r3, [pc, 0x16c]                                   |         r3 = *(0x1a8c2);
    0x0001a754 add r2, pc                                            |         r2 = 0x35020;
    0x0001a756 ldr r3, [r2, r3]                                      |         r3 = *(0x35020);
    0x0001a758 ldr r2, [r3]                                          |         r2 = *(0x35020);
    0x0001a75a ldr r3, [sp, 0x44]                                    |         r3 = var_44h;
    0x0001a75c eors r2, r3                                           |         r2 ^= r3;
    0x0001a75e mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 == r3) {
    0x0001a762 beq.w 0x1a8b2                                         |             goto label_5;
                                                                     |         }
    0x0001a766 blx 0x8b7c                                            |         fcn_00008b7c ();
                                                                     | label_4:
    0x0001a76a ldr r3, [pc, 0x160]                                   |         r3 = *(0x1a8ce);
    0x0001a76c ldr.w fp, [r7, r3]                                    |         fp = *((r7 + r3));
    0x0001a770 mov r0, fp                                            |         r0 = fp;
    0x0001a772 blx 0x8d34                                            |         strcpy (r0, r1);
    0x0001a776 add r1, sp, 0x24                                      |         r1 += var_24h;
    0x0001a778 mov r0, sl                                            |         r0 = sl;
    0x0001a77a bl 0x19470                                            |         r0 = fcn_00019470 (r0, r1);
    0x0001a77e mov r3, r0                                            |         r3 = r0;
    0x0001a780 str r0, [sp, 0x18]                                    |         var_18h = r0;
    0x0001a782 mov r0, fp                                            |         r0 = fp;
                                                                     |         if (r3 == 0) {
    0x0001a784 cbz r3, 0x1a790                                       |             goto label_6;
                                                                     |         }
    0x0001a786 blx 0x920c                                            |         fcn_0000920c ();
    0x0001a78a mvn r0, 0x63                                          |         r0 = ~0x63;
    0x0001a78e b 0x1a750                                             |         
                                                                     |     } while (1);
                                                                     | label_6:
    0x0001a790 blx 0x920c                                            |     fcn_0000920c ();
    0x0001a794 cmp.w sb, 0                                           |     
                                                                     |     if (sb == 0) {
    0x0001a798 beq.w 0x1a8ac                                         |         goto label_7;
                                                                     |     }
    0x0001a79c cmp.w r8, 0                                           |     
                                                                     |     if (r8 == 0) {
    0x0001a7a0 beq.w 0x1a8ac                                         |         goto label_7;
                                                                     |     }
    0x0001a7a4 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0001a7a6 beq.w 0x1a8ac                                         |         goto label_7;
                                                                     |     }
    0x0001a7aa ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0001a7ac cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0001a7ae beq 0x1a8ac                                           |         goto label_7;
                                                                     |     }
    0x0001a7b0 mov r0, r5                                            |     r0 = r5;
    0x0001a7b2 blx 0x8e60                                            |     r0 = fcn_00008e60 ();
    0x0001a7b6 mov r5, r0                                            |     r5 = r0;
    0x0001a7b8 mov r0, r4                                            |     r0 = r4;
    0x0001a7ba blx 0x8e60                                            |     r0 = fcn_00008e60 ();
    0x0001a7be mov fp, r0                                            |     
                                                                     |     if (r0 != 0) {
    0x0001a7c0 cbnz r0, 0x1a7ce                                      |         goto label_8;
                                                                     |     }
    0x0001a7c2 mov r0, r5                                            |     r0 = r5;
    0x0001a7c4 blx 0x8fa8                                            |     fcn_00008fa8 ();
                                                                     |     do {
    0x0001a7c8 mvn r0, 0x72                                          |         r0 = ~0x72;
    0x0001a7cc b 0x1a750                                             |         goto label_0;
                                                                     | label_8:
    0x0001a7ce movw r0, 0x74c                                        |         r0 = 0x74c;
    0x0001a7d2 blx 0x8e30                                            |         r0 = vfprintf_chk ()
    0x0001a7d6 mov r4, r0                                            |         r4 = r0;
                                                                     |         if (r0 == 0) {
    0x0001a7d8 cbnz r0, 0x1a7ec                                      |             
    0x0001a7da mov r0, fp                                            |             r0 = fp;
    0x0001a7dc blx 0x8fa8                                            |             fcn_00008fa8 ();
    0x0001a7e0 mov r0, r5                                            |             r0 = r5;
    0x0001a7e2 blx 0x8fa8                                            |             fcn_00008fa8 ();
                                                                     | label_1:
    0x0001a7e6 mvn r0, 0x67                                          |             r0 = ~0x67;
    0x0001a7ea b 0x1a750                                             |             goto label_0;
                                                                     |         }
    0x0001a7ec ldr r1, [sp, 0x18]                                    |         r1 = var_18h;
    0x0001a7ee movw r2, 0x74c                                        |         r2 = 0x74c;
    0x0001a7f2 blx 0x9144                                            |         fcn_00009144 ();
    0x0001a7f6 movs r2, 4                                            |         r2 = 4;
    0x0001a7f8 mov r1, sb                                            |         r1 = sb;
    0x0001a7fa strd r2, sl, [r4]                                     |         __asm ("strd r2, sl, [r4]");
    0x0001a7fe addw r0, r4, 0x60c                                    |         __asm ("addw r0, r4, aav.0x000000ff");
    0x0001a802 movs r2, 0xff                                         |         r2 = 0xff;
    0x0001a804 blx 0x9174                                            |         fcn_00009174 ();
    0x0001a808 mov r1, r8                                            |         r1 = r8;
    0x0001a80a movs r2, 0xff                                         |         r2 = 0xff;
    0x0001a80c addw r0, r4, 0x40c                                    |         __asm ("addw r0, r4, aav.0x000000ff");
    0x0001a810 blx 0x9174                                            |         fcn_00009174 ();
    0x0001a814 add.w r1, r4, 0x740                                   |         r1 = r4 + 0x740;
    0x0001a818 mov r0, r5                                            |         r0 = r5;
    0x0001a81a blx 0x8bd0                                            |         r0 = fcn_00008bd0 ();
    0x0001a81e mov r8, r0                                            |         r8 = r0;
                                                                     |         if (r0 == 0) {
    0x0001a820 cbz r0, 0x1a83c                                       |             goto label_9;
                                                                     |         }
                                                                     | label_2:
    0x0001a822 mov r0, r4                                            |         r0 = r4;
    0x0001a824 blx 0x894c                                            |         fcn_0000894c ();
    0x0001a828 mov r0, fp                                            |         r0 = fp;
    0x0001a82a blx 0x8fa8                                            |         fcn_00008fa8 ();
    0x0001a82e mov r0, r5                                            |         r0 = r5;
    0x0001a830 blx 0x8fa8                                            |         fcn_00008fa8 ();
    0x0001a834 cmp.w r8, 0x66                                        |         
    0x0001a838 bne 0x1a7c8                                           |         
                                                                     |     } while (r8 != 0x66);
    0x0001a83a b 0x1a7e6                                             |     goto label_1;
                                                                     | label_9:
    0x0001a83c addw r1, r4, 0x744                                    |     __asm ("addw r1, r4, aav.0x000000ff");
    0x0001a840 mov r0, fp                                            |     r0 = fp;
    0x0001a842 blx 0x8bd0                                            |     r0 = fcn_00008bd0 ();
    0x0001a846 mov r8, r0                                            |     r8 = r0;
                                                                     |     if (r0 != 0) {
    0x0001a848 cbz r0, 0x1a854                                       |         
    0x0001a84a ldr.w r0, [r4, 0x740]                                 |         r0 = *((r4 + 0x740));
    0x0001a84e blx 0x8914                                            |         ixmlCloneDOMString ();
    0x0001a852 b 0x1a822                                             |         goto label_2;
                                                                     |     }
    0x0001a854 mov r0, fp                                            |     r0 = fp;
    0x0001a856 blx 0x8fa8                                            |     fcn_00008fa8 ();
    0x0001a85a mov r0, r5                                            |     r0 = r5;
    0x0001a85c blx 0x8fa8                                            |     fcn_00008fa8 ();
    0x0001a860 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0001a862 mov r2, r4                                            |     r2 = r4;
    0x0001a864 mov r0, r6                                            |     r0 = r6;
    0x0001a866 str.w r3, [r4, 0x738]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0001a86a ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0001a86c str.w r3, [r4, 0x73c]                                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0001a870 ldr r3, [pc, 0x5c]                                    |     r3 = *(0x1a8d0);
    0x0001a872 ldr r1, [r7, r3]                                      |     r1 = *((r7 + r3));
    0x0001a874 bl 0xa7d4                                             |     fcn_0000a7d4 (r0, r1, r2);
    0x0001a878 ldr r1, [pc, 0x58]                                    |     
    0x0001a87a mov r0, r6                                            |     r0 = r6;
    0x0001a87c add r1, pc                                            |     r1 = 0x35154;
    0x0001a87e bl 0xa7fc                                             |     fcn_0000a7fc (r0, r1);
    0x0001a882 movs r1, 1                                            |     r1 = 1;
    0x0001a884 mov r0, r6                                            |     r0 = r6;
    0x0001a886 bl 0xa7ec                                             |     fcn_0000a7ec (r0, r1);
    0x0001a88a ldr r3, [pc, 0x4c]                                    |     r3 = *(0x1a8da);
    0x0001a88c mov r2, r8                                            |     r2 = r8;
    0x0001a88e mov r1, r6                                            |     r1 = r6;
    0x0001a890 ldr r0, [r7, r3]                                      |     r0 = *((r7 + r3));
    0x0001a892 bl 0xa174                                             |     r0 = fcn_0000a174 (r0, r1, r2);
    0x0001a896 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0001a898 beq.w 0x1a750                                         |         goto label_0;
                                                                     |     }
    0x0001a89c mov r0, r4                                            |     r0 = r4;
    0x0001a89e bl 0x184fa                                            |     fcn_000184fa (r0);
    0x0001a8a2 mov r0, r8                                            |     r0 = r8;
    0x0001a8a4 b 0x1a750                                             |     goto label_0;
                                                                     | label_3:
    0x0001a8a6 mvn r0, 0x73                                          |     r0 = ~0x73;
    0x0001a8aa b 0x1a750                                             |     goto label_0;
                                                                     | label_7:
    0x0001a8ac mvn r0, 0x64                                          |     r0 = ~0x64;
    0x0001a8b0 b 0x1a750                                             |     goto label_0;
                                                                     | label_5:
    0x0001a8b2 add sp, 0x4c                                          |     
    0x0001a8b4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x196f4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.UpnpSendAdvertisementLowPower ()                 | void UpnpSendAdvertisementLowPower (int16_t arg_68h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_3ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x000196f4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000196f8 mov r6, r2                                        |     r6 = r2;
    0x000196fa ldr r2, [pc, 0x170]                               |     
    0x000196fc mov r4, r3                                        |     r4 = r3;
    0x000196fe sub sp, 0x44                                      |     
    0x00019700 mov r8, r0                                        |     r8 = r0;
    0x00019702 ldr r3, [pc, 0x16c]                               |     r3 = *(0x19872);
    0x00019704 add.w sb, sp, 0x20                                |     sb += var_20h;
    0x00019708 add r2, pc                                        |     r2 = 0x32f7a;
    0x0001970a ldr.w sl, [pc, 0x168]                             |     
    0x0001970e mov r5, r1                                        |     r5 = r1;
    0x00019710 mov r0, sb                                        |     r0 = sb;
    0x00019712 ldr r3, [r2, r3]                                  |     
    0x00019714 movs r1, 0                                        |     r1 = 0;
    0x00019716 movs r2, 0x1c                                     |     r2 = 0x1c;
    0x00019718 add sl, pc                                        |     sl = 0x32f92;
    0x0001971a ldr r3, [r3]                                      |     r3 = *(0x32f7a);
    0x0001971c str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x0001971e mov.w r3, 0                                       |     r3 = 0;
    0x00019722 str r1, [sp, 0x1c]                                |     var_1ch = r1;
    0x00019724 blx 0x9144                                        |     fcn_00009144 ();
    0x00019728 ldr r3, [pc, 0x14c]                               |     r3 = *(0x19878);
    0x0001972a ldr.w r3, [sl, r3]                                |     
    0x0001972e ldr r3, [r3]                                      |     r3 = *(0x32f92);
    0x00019730 cmp r3, 1                                         |     
                                                                 |     if (r3 != 1) {
    0x00019732 bne.w 0x1985e                                     |         goto label_3;
                                                                 |     }
    0x00019736 ldr r3, [pc, 0x144]                               |     r3 = *(0x1987e);
    0x00019738 ldr.w r7, [sl, r3]                                |     r7 = *((sl + r3));
    0x0001973c mov r0, r7                                        |     r0 = r7;
    0x0001973e blx 0x8930                                        |     fcn_00008930 ();
    0x00019742 add r3, sp, 0x1c                                  |     r3 += var_1ch;
    0x00019744 mov r0, r8                                        |     r0 = r8;
    0x00019746 mov r1, r3                                        |     r1 = r3;
    0x00019748 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0001974a bl 0x19470                                        |     r0 = fcn_00019470 (r0, r1);
    0x0001974e cmp r0, 1                                         |     
                                                                 |     if (r0 == 1) {
    0x00019750 beq 0x19774                                       |         goto label_4;
                                                                 |     }
    0x00019752 mov r0, r7                                        |     r0 = r7;
    0x00019754 blx 0x920c                                        |     fcn_0000920c ();
                                                                 | label_2:
    0x00019758 mvn r4, 0x63                                      |     r4 = ~0x63;
                                                                 |     do {
                                                                 | label_0:
    0x0001975c ldr r2, [pc, 0x120]                               |         
    0x0001975e ldr r3, [pc, 0x110]                               |         r3 = *(0x19872);
    0x00019760 add r2, pc                                        |         r2 = 0x32fe4;
    0x00019762 ldr r3, [r2, r3]                                  |         r3 = *(0x32fe4);
    0x00019764 ldr r2, [r3]                                      |         r2 = *(0x32fe4);
    0x00019766 ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x00019768 eors r2, r3                                       |         r2 ^= r3;
    0x0001976a mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x0001976e beq 0x19864                                       |             goto label_5;
                                                                 |         }
    0x00019770 blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 | label_4:
    0x00019774 cmp r5, 0                                         |         
                                                                 |         if (r5 <= 0) {
    0x00019776 ble 0x197d4                                       |             goto label_6;
                                                                 |         }
    0x00019778 cmp r5, 0x3c                                      |         
    0x0001977a it le                                             |         
                                                                 |         if (r5 > 0x3c) {
    0x0001977c movle r5, 0x3e                                    |             r5 = 0x3e;
                                                                 |         }
                                                                 | label_1:
    0x0001977e ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x00019780 orr.w r4, r4, r4, asr 31                          |         r4 |= (r4 >> 31);
    0x00019784 ldr r2, [sp, 0x68]                                |         r2 = *(arg_68h);
    0x00019786 mov r0, r7                                        |         r0 = r7;
    0x00019788 str.w r4, [r3, 0x234]                             |         __asm ("str.w r4, aav.0x000000ff");
    0x0001978c str.w r2, [r3, 0x238]                             |         __asm ("str.w r2, aav.0x000000ff");
    0x00019790 strd r5, r6, [r3, 0x22c]                          |         __asm ("strd r5, r6, [r3, aav.0x0000022c]");
    0x00019794 blx 0x920c                                        |         fcn_0000920c ();
    0x00019798 movs r3, 0                                        |         r3 = 0;
    0x0001979a mov r1, r8                                        |         r1 = r8;
    0x0001979c mov r2, r3                                        |         r2 = r3;
    0x0001979e movs r0, 1                                        |         r0 = 1;
    0x000197a0 str r5, [sp, 0xc]                                 |         var_ch = r5;
    0x000197a2 strd r3, r3, [sp, 4]                              |         __asm ("strd r3, r3, [var_4h]");
    0x000197a6 str r3, [sp]                                      |         *(sp) = r3;
    0x000197a8 bl 0xcc1c                                         |         r0 = fcn_0000cc1c (r0, r1, r2, r3, r4, r5, r6);
    0x000197ac mov r4, r0                                        |         r4 = r0;
    0x000197ae cmp r0, 0                                         |         
    0x000197b0 bne 0x1975c                                       |         
                                                                 |     } while (r0 != 0);
    0x000197b2 movs r0, 4                                        |     r0 = 4;
    0x000197b4 blx 0x8e30                                        |     r0 = vfprintf_chk ()
    0x000197b8 mov fp, r0                                        |     
                                                                 |     if (r0 != 0) {
    0x000197ba cbz r0, 0x197ce                                   |         
    0x000197bc movw r0, 0x74c                                    |         r0 = 0x74c;
    0x000197c0 blx 0x8e30                                        |         r0 = vfprintf_chk ()
    0x000197c4 mov r6, r0                                        |         r6 = r0;
                                                                 |         if (r0 != 0) {
    0x000197c6 cbnz r0, 0x197da                                  |             goto label_7;
                                                                 |         }
    0x000197c8 mov r0, fp                                        |         r0 = fp;
    0x000197ca blx 0x894c                                        |         fcn_0000894c ();
                                                                 |     }
    0x000197ce mvn r4, 0x67                                      |     r4 = ~0x67;
    0x000197d2 b 0x1975c                                         |     goto label_0;
                                                                 | label_6:
    0x000197d4 mov.w r5, 0x708                                   |     r5 = 0x708;
    0x000197d8 b 0x1977e                                         |     goto label_1;
                                                                 | label_7:
    0x000197da str.w r8, [r0]                                    |     __asm ("str.w r8, [r0]");
    0x000197de str.w fp, [r0, 8]                                 |     __asm ("str.w fp, [r0, 8]");
    0x000197e2 mov r0, r7                                        |     r0 = r7;
    0x000197e4 str.w r5, [fp]                                    |     __asm ("str.w r5, [fp]");
    0x000197e8 blx 0x8930                                        |     fcn_00008930 ();
    0x000197ec mov r0, r8                                        |     r0 = r8;
    0x000197ee ldr r1, [sp, 0x14]                                |     r1 = var_14h;
    0x000197f0 bl 0x19470                                        |     r0 = fcn_00019470 (r0, r1);
    0x000197f4 cmp r0, 1                                         |     
    0x000197f6 mov r8, r0                                        |     r8 = r0;
                                                                 |     if (r0 != 1) {
    0x000197f8 beq 0x1980e                                       |         
    0x000197fa mov r0, r7                                        |         r0 = r7;
    0x000197fc blx 0x920c                                        |         fcn_0000920c ();
    0x00019800 mov r0, r6                                        |         r0 = r6;
    0x00019802 blx 0x894c                                        |         fcn_0000894c ();
    0x00019806 mov r0, fp                                        |         r0 = fp;
    0x00019808 blx 0x894c                                        |         fcn_0000894c ();
    0x0001980c b 0x19758                                         |         goto label_2;
                                                                 |     }
    0x0001980e ldr r3, [pc, 0x74]                                |     r3 = *(0x19886);
    0x00019810 mov r2, r6                                        |     r2 = r6;
    0x00019812 mov r0, sb                                        |     r0 = sb;
    0x00019814 ldr.w r1, [sl, r3]                                |     r1 = *((sl + r3));
    0x00019816 asrs r3, r0, 0x20                                 |     r3 = r0 >> 0x20;
    0x00019818 bl 0xa7d4                                         |     fcn_0000a7d4 (r0, r1, r2);
    0x0001981c ldr r1, [pc, 0x68]                                |     
    0x0001981e mov r0, sb                                        |     r0 = sb;
    0x00019820 add r1, pc                                        |     r1 = 0x330ac;
    0x00019822 bl 0xa7fc                                         |     fcn_0000a7fc (r0, r1);
    0x00019826 mov r1, r8                                        |     r1 = r8;
    0x00019828 mov r0, sb                                        |     r0 = sb;
    0x0001982a bl 0xa7ec                                         |     fcn_0000a7ec (r0, r1);
    0x0001982e ldr r3, [pc, 0x5c]                                |     r3 = *(0x1988e);
    0x00019830 asrs r1, r5, 1                                    |     r1 = r5 >> 1;
    0x00019832 mov r2, r8                                        |     r2 = r8;
    0x00019834 subs r1, 0x1e                                     |     r1 -= 0x1e;
    0x00019836 ldr.w r0, [sl, r3]                                |     r0 = *((sl + r3));
    0x0001983a adds r3, r6, 4                                    |     r3 = r6 + 4;
    0x0001983c strd r4, r3, [sp]                                 |     __asm ("strd r4, r3, [sp]");
    0x00019840 mov r3, sb                                        |     r3 = sb;
    0x00019842 bl 0xac38                                         |     r0 = fcn_0000ac38 (r0, r1, r2, r3, r4);
    0x00019846 mov r4, r0                                        |     r4 = r0;
    0x00019848 mov r0, r7                                        |     r0 = r7;
                                                                 |     if (r4 != 0) {
    0x0001984a cbz r4, 0x19858                                   |         
    0x0001984c blx 0x920c                                        |         fcn_0000920c ();
    0x00019850 mov r0, r6                                        |         r0 = r6;
    0x00019852 bl 0x184e4                                        |         fcn_000184e4 (r0);
    0x00019856 b 0x1975c                                         |         goto label_0;
                                                                 |     }
    0x00019858 blx 0x920c                                        |     fcn_0000920c ();
    0x0001985c b 0x1975c                                         |     goto label_0;
                                                                 | label_3:
    0x0001985e mvn r4, 0x73                                      |     r4 = ~0x73;
    0x00019862 b 0x1975c                                         |     goto label_0;
                                                                 | label_5:
    0x00019864 mov r0, r4                                        |     r0 = r4;
    0x00019866 add sp, 0x44                                      |     
    0x00019868 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x19aa8 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.UpnpSubscribeAsync ()                                | void UpnpSubscribeAsync (int16_t arg_50h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_24h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x00019aa8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00019aac mov r7, r2                                            |     r7 = r2;
    0x00019aae ldr r2, [pc, 0x10c]                                   |     
    0x00019ab0 mov r8, r3                                            |     r8 = r3;
    0x00019ab2 sub sp, 0x2c                                          |     
    0x00019ab4 mov sl, r0                                            |     sl = r0;
    0x00019ab6 ldr r3, [pc, 0x108]                                   |     r3 = *(0x19bc2);
    0x00019ab8 add r6, sp, 8                                         |     r6 += var_8h;
    0x00019aba add r2, pc                                            |     r2 = 0x3367c;
    0x00019abc ldr r5, [pc, 0x104]                                   |     
    0x00019abe mov sb, r1                                            |     sb = r1;
    0x00019ac0 mov r0, r6                                            |     r0 = r6;
    0x00019ac2 ldr r3, [r2, r3]                                      |     
    0x00019ac4 movs r1, 0                                            |     r1 = 0;
    0x00019ac6 movs r2, 0x1c                                         |     r2 = 0x1c;
    0x00019ac8 ldr.w fp, [sp, 0x50]                                  |     fp = *(arg_50h);
    0x00019acc add r5, pc                                            |     r5 = 0x33694;
    0x00019ace ldr r3, [r3]                                          |     r3 = *(0x3367c);
    0x00019ad0 str r3, [sp, 0x24]                                    |     var_24h = r3;
    0x00019ad2 mov.w r3, 0                                           |     r3 = 0;
    0x00019ad6 str r1, [sp, 4]                                       |     var_4h = r1;
    0x00019ad8 blx 0x9144                                            |     fcn_00009144 ();
    0x00019adc ldr r3, [pc, 0xe8]                                    |     r3 = *(0x19bc8);
    0x00019ade ldr r3, [r5, r3]                                      |     
    0x00019ae0 ldr r3, [r3]                                          |     r3 = *(0x33694);
    0x00019ae2 cmp r3, 1                                             |     
                                                                     |     if (r3 != 1) {
    0x00019ae4 bne 0x19baa                                           |         goto label_2;
                                                                     |     }
    0x00019ae6 ldr r3, [pc, 0xe4]                                    |     r3 = *(0x19bce);
    0x00019ae8 ldr r4, [r5, r3]                                      |     r4 = *((r5 + r3));
    0x00019aea mov r0, r4                                            |     r0 = r4;
    0x00019aec blx 0x8d34                                            |     strcpy (r0, r1);
    0x00019af0 add r1, sp, 4                                         |     r1 += var_4h;
    0x00019af2 mov r0, sl                                            |     r0 = sl;
    0x00019af4 bl 0x19470                                            |     r0 = fcn_00019470 (r0, r1);
                                                                     |     if (r0 == 0) {
    0x00019af8 cbz r0, 0x19b1c                                       |         goto label_3;
                                                                     |     }
    0x00019afa mov r0, r4                                            |     r0 = r4;
    0x00019afc blx 0x920c                                            |     fcn_0000920c ();
    0x00019b00 mvn r0, 0x63                                          |     r0 = ~0x63;
                                                                     |     do {
                                                                     | label_1:
    0x00019b04 ldr r2, [pc, 0xc8]                                    |         
    0x00019b06 ldr r3, [pc, 0xb8]                                    |         r3 = *(0x19bc2);
    0x00019b08 add r2, pc                                            |         r2 = 0x336dc;
    0x00019b0a ldr r3, [r2, r3]                                      |         r3 = *(0x336dc);
    0x00019b0c ldr r2, [r3]                                          |         r2 = *(0x336dc);
    0x00019b0e ldr r3, [sp, 0x24]                                    |         r3 = var_24h;
    0x00019b10 eors r2, r3                                           |         r2 ^= r3;
    0x00019b12 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 == r3) {
    0x00019b16 beq 0x19bb6                                           |             goto label_4;
                                                                     |         }
    0x00019b18 blx 0x8b7c                                            |         fcn_00008b7c ();
                                                                     | label_3:
    0x00019b1c cmp.w sb, 0                                           |         
                                                                     |         if (sb != 0) {
    0x00019b20 bne 0x19b2e                                           |             goto label_5;
                                                                     |         }
                                                                     | label_0:
    0x00019b22 mov r0, r4                                            |         r0 = r4;
    0x00019b24 blx 0x920c                                            |         fcn_0000920c ();
    0x00019b28 mvn r0, 0x64                                          |         r0 = ~0x64;
    0x00019b2c b 0x19b04                                             |         
                                                                     |     } while (1);
                                                                     | label_5:
    0x00019b2e adds r3, r7, 1                                        |     r3 = r7 + 1;
                                                                     |     if (r3 == r7) {
    0x00019b30 beq 0x19b36                                           |         goto label_6;
                                                                     |     }
    0x00019b32 cmp r7, 0                                             |     
                                                                     |     if (r7 <= 0) {
    0x00019b34 ble 0x19b22                                           |         goto label_0;
                                                                     |     }
                                                                     | label_6:
    0x00019b36 cmp.w r8, 0                                           |     
                                                                     |     if (r8 == 0) {
    0x00019b3a beq 0x19b22                                           |         goto label_0;
                                                                     |     }
    0x00019b3c mov r0, r4                                            |     r0 = r4;
    0x00019b3e blx 0x920c                                            |     fcn_0000920c ();
    0x00019b42 movw r0, 0x74c                                        |     r0 = 0x74c;
    0x00019b46 blx 0x8e30                                            |     r0 = vfprintf_chk ()
    0x00019b4a mov r4, r0                                            |     r4 = r0;
                                                                     |     if (r0 == 0) {
    0x00019b4c cbz r0, 0x19bb0                                       |         goto label_7;
                                                                     |     }
    0x00019b4e movw r2, 0x74c                                        |     r2 = 0x74c;
    0x00019b52 movs r1, 0                                            |     r1 = 0;
    0x00019b54 blx 0x9144                                            |     fcn_00009144 ();
    0x00019b58 movs r2, 0xff                                         |     r2 = 0xff;
    0x00019b5a mov r1, sb                                            |     r1 = sb;
    0x00019b5c addw r0, r4, 0x60c                                    |     __asm ("addw r0, r4, aav.0x000000ff");
    0x00019b60 str.w sl, [r4, 4]                                     |     __asm ("str.w sl, [r4, 4]");
    0x00019b64 blx 0x9174                                            |     fcn_00009174 ();
    0x00019b68 ldr r3, [pc, 0x68]                                    |     r3 = *(0x19bd4);
    0x00019b6a mov r2, r4                                            |     r2 = r4;
    0x00019b6c str r7, [r4, 8]                                       |     *((r4 + 8)) = r7;
    0x00019b6e mov r0, r6                                            |     r0 = r6;
    0x00019b70 str.w r8, [r4, 0x73c]                                 |     __asm ("str.w r8, aav.0x000000ff");
    0x00019b74 str.w fp, [r4, 0x738]                                 |     __asm ("str.w fp, aav.0x000000ff");
    0x00019b78 ldr r1, [r5, r3]                                      |     r1 = *((r5 + r3));
    0x00019b7a bl 0xa7d4                                             |     fcn_0000a7d4 (r0, r1, r2);
    0x00019b7e ldr r3, [pc, 0x58]                                    |     r3 = *(0x19bda);
    0x00019b80 mov r0, r6                                            |     r0 = r6;
    0x00019b82 ldr r1, [r5, r3]                                      |     r1 = *((r5 + r3));
    0x00019b84 bl 0xa7fc                                             |     fcn_0000a7fc (r0, r1);
    0x00019b88 movs r1, 1                                            |     r1 = 1;
    0x00019b8a mov r0, r6                                            |     r0 = r6;
    0x00019b8c bl 0xa7ec                                             |     fcn_0000a7ec (r0, r1);
    0x00019b90 ldr r3, [pc, 0x48]                                    |     r3 = *(0x19bdc);
    0x00019b92 movs r2, 0                                            |     r2 = 0;
    0x00019b94 mov r1, r6                                            |     r1 = r6;
    0x00019b96 ldr r0, [r5, r3]                                      |     r0 = *((r5 + r3));
    0x00019b98 bl 0xa174                                             |     r0 = fcn_0000a174 (r0, r1, r2);
    0x00019b9c cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00019b9e beq 0x19b04                                           |         goto label_1;
                                                                     |     }
    0x00019ba0 mov r0, r4                                            |     r0 = r4;
    0x00019ba2 blx 0x894c                                            |     fcn_0000894c ();
    0x00019ba6 movs r0, 0                                            |     r0 = 0;
    0x00019ba8 b 0x19b04                                             |     goto label_1;
                                                                     | label_2:
    0x00019baa mvn r0, 0x73                                          |     r0 = ~0x73;
    0x00019bae b 0x19b04                                             |     goto label_1;
                                                                     | label_7:
    0x00019bb0 mvn r0, 0x67                                          |     r0 = ~0x67;
    0x00019bb4 b 0x19b04                                             |     goto label_1;
                                                                     | label_4:
    0x00019bb6 add sp, 0x2c                                          |     
    0x00019bb8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x19da8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.UpnpUnSubscribeAsync ()                          | void UpnpUnSubscribeAsync (int16_t arg_70ch, int16_t arg_738h, int16_t arg_73ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_2ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00019da8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00019dac mov r7, r2                                        |     r7 = r2;
    0x00019dae sub sp, 0x34                                      |     
    0x00019db0 ldr r2, [pc, 0xfc]                                |     
    0x00019db2 add r6, sp, 0x10                                  |     r6 += var_10h;
    0x00019db4 mov sb, r0                                        |     sb = r0;
    0x00019db6 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00019db8 mov r8, r1                                        |     r8 = r1;
    0x00019dba ldr r3, [pc, 0xf8]                                |     r3 = *(0x19eb6);
    0x00019dbc add r2, pc                                        |     r2 = 0x33c70;
    0x00019dbe movs r1, 0                                        |     r1 = 0;
    0x00019dc0 ldr r5, [pc, 0xf4]                                |     
    0x00019dc2 mov r0, r6                                        |     r0 = r6;
    0x00019dc4 ldr r3, [r2, r3]                                  |     
    0x00019dc6 movs r2, 0x1c                                     |     r2 = 0x1c;
    0x00019dc8 add r5, pc                                        |     r5 = 0x33c84;
    0x00019dca ldr r3, [r3]                                      |     r3 = *(0x33c70);
    0x00019dcc str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00019dce mov.w r3, 0                                       |     r3 = 0;
    0x00019dd2 str r1, [sp, 0xc]                                 |     var_ch = r1;
    0x00019dd4 blx 0x9144                                        |     fcn_00009144 ();
    0x00019dd8 ldr r3, [pc, 0xe0]                                |     r3 = *(0x19ebc);
    0x00019dda ldr r3, [r5, r3]                                  |     r3 = *(0x33c84);
    0x00019ddc ldr.w sl, [r3]                                    |     sl = *(0x33c84);
    0x00019de0 cmp.w sl, 1                                       |     
                                                                 |     if (sl != 1) {
    0x00019de4 bne 0x19e96                                       |         goto label_1;
                                                                 |     }
    0x00019de6 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00019dea beq 0x19e9c                                       |         goto label_2;
                                                                 |     }
    0x00019dec cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00019dee beq 0x19e9c                                       |         goto label_2;
                                                                 |     }
    0x00019df0 ldr r3, [pc, 0xcc]                                |     r3 = *(0x19ec0);
    0x00019df2 ldr.w fp, [r5, r3]                                |     fp = *((r5 + r3));
    0x00019df6 mov r0, fp                                        |     r0 = fp;
    0x00019df8 blx 0x8d34                                        |     strcpy (r0, r1);
    0x00019dfc add r1, sp, 0xc                                   |     r1 += var_ch;
    0x00019dfe mov r0, sb                                        |     r0 = sb;
    0x00019e00 bl 0x19470                                        |     r0 = fcn_00019470 (r0, r1);
    0x00019e04 mov r4, r0                                        |     r4 = r0;
    0x00019e06 mov r0, fp                                        |     r0 = fp;
                                                                 |     if (r4 == 0) {
    0x00019e08 cbz r4, 0x19e2a                                   |         goto label_3;
                                                                 |     }
    0x00019e0a blx 0x920c                                        |     fcn_0000920c ();
    0x00019e0e mvn r0, 0x63                                      |     r0 = ~0x63;
                                                                 |     do {
                                                                 | label_0:
    0x00019e12 ldr r2, [pc, 0xb0]                                |         
    0x00019e14 ldr r3, [pc, 0x9c]                                |         r3 = *(0x19eb4);
    0x00019e16 add r2, pc                                        |         r2 = 0x33ce0;
    0x00019e18 ldr r3, [r2, r3]                                  |         r3 = *(0x33ce0);
    0x00019e1a ldr r2, [r3]                                      |         r2 = *(0x33ce0);
    0x00019e1c ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x00019e1e eors r2, r3                                       |         r2 ^= r3;
    0x00019e20 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 == r3) {
    0x00019e24 beq 0x19ea8                                       |             goto label_4;
                                                                 |         }
    0x00019e26 blx 0x8b7c                                        |         fcn_00008b7c ();
                                                                 | label_3:
    0x00019e2a blx 0x920c                                        |         fcn_0000920c ();
    0x00019e2e movw r0, 0x74c                                    |         r0 = 0x74c;
    0x00019e32 blx 0x8e30                                        |         r0 = vfprintf_chk ()
    0x00019e36 mov fp, r0                                        |         
                                                                 |         if (r0 == 0) {
    0x00019e38 cbz r0, 0x19ea2                                   |             goto label_5;
                                                                 |         }
    0x00019e3a movw r2, 0x74c                                    |         r2 = 0x74c;
    0x00019e3e mov r1, r4                                        |         r1 = r4;
    0x00019e40 blx 0x9144                                        |         fcn_00009144 ();
    0x00019e44 movs r2, 0x2b                                     |         r2 = 0x2b;
    0x00019e46 mov r1, r8                                        |         r1 = r8;
    0x00019e48 addw r0, fp, 0x70c                                |         __asm ("addw r0, arg_70ch");
    0x00019e4c strd sl, sb, [fp]                                 |         __asm ("strd sl, sb, [fp]");
    0x00019e50 blx 0x9174                                        |         fcn_00009174 ();
    0x00019e54 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x00019e56 mov r0, r6                                        |         r0 = r6;
    0x00019e58 ldr r2, [pc, 0x6c]                                |         r2 = *(0x19ec8);
    0x00019e5a str.w r7, [fp, 0x73c]                             |         __asm ("str.w r7, [arg_73ch]");
    0x00019e5e str.w r3, [fp, 0x738]                             |         __asm ("str.w r3, [arg_738h]");
    0x00019e62 ldr r1, [r5, r2]                                  |         r1 = *((r5 + r2));
    0x00019e64 mov r2, fp                                        |         r2 = fp;
    0x00019e66 bl 0xa7d4                                         |         fcn_0000a7d4 (r0, r1, r2);
    0x00019e6a ldr r2, [pc, 0x60]                                |         r2 = *(0x19ece);
    0x00019e6c mov r0, r6                                        |         r0 = r6;
    0x00019e6e ldr r1, [r5, r2]                                  |         r1 = *((r5 + r2));
    0x00019e70 bl 0xa7fc                                         |         fcn_0000a7fc (r0, r1);
    0x00019e74 mov r1, sl                                        |         r1 = sl;
    0x00019e76 mov r0, r6                                        |         r0 = r6;
    0x00019e78 bl 0xa7ec                                         |         fcn_0000a7ec (r0, r1);
    0x00019e7c ldr r2, [pc, 0x50]                                |         r2 = *(0x19ed0);
    0x00019e7e mov r1, r6                                        |         r1 = r6;
    0x00019e80 ldr r0, [r5, r2]                                  |         r0 = *((r5 + r2));
    0x00019e82 mov r2, r4                                        |         r2 = r4;
    0x00019e84 bl 0xa174                                         |         r0 = fcn_0000a174 (r0, r1, r2);
    0x00019e88 cmp r0, 0                                         |         
    0x00019e8a beq 0x19e12                                       |         
                                                                 |     } while (r0 == 0);
    0x00019e8c mov r0, fp                                        |     r0 = fp;
    0x00019e8e blx 0x894c                                        |     fcn_0000894c ();
    0x00019e92 mov r0, r4                                        |     r0 = r4;
    0x00019e94 b 0x19e12                                         |     goto label_0;
                                                                 | label_1:
    0x00019e96 mvn r0, 0x73                                      |     r0 = ~0x73;
    0x00019e9a b 0x19e12                                         |     goto label_0;
                                                                 | label_2:
    0x00019e9c mvn r0, 0x64                                      |     r0 = ~0x64;
    0x00019ea0 b 0x19e12                                         |     goto label_0;
                                                                 | label_5:
    0x00019ea2 mvn r0, 0x67                                      |     r0 = ~0x67;
    0x00019ea6 b 0x19e12                                         |     goto label_0;
                                                                 | label_4:
    0x00019ea8 add sp, 0x34                                      |     
    0x00019eaa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, 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/libupnp.so.17.1.8 @ 0x1892c */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.UpnpWriteHttpPost ()                     | void UpnpWriteHttpPost (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_ch;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
                                                         | label_2:
    0x00012180 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00012184 sub sp, 0x14                              |     
    0x00012186 mov r6, r1                                |     r6 = r1;
    0x00012188 mov r5, r2                                |     r5 = r2;
    0x0001218a mov r8, r0                                |     r8 = r0;
    0x0001218c str r3, [sp, 0xc]                         |     var_ch = r3;
                                                         |     if (r0 == 0) {
    0x0001218e cbz r0, 0x1219a                           |         goto label_3;
                                                         |     }
                                                         |     if (r2 == 0) {
    0x00012190 cbz r2, 0x1219e                           |         goto label_4;
                                                         |     }
                                                         |     if (r1 != 0) {
    0x00012192 cbnz r1, 0x121a4                          |         goto label_5;
                                                         |     }
                                                         |     do {
    0x00012194 movs r3, 0                                |         r3 = 0;
    0x00012196 str r3, [r5]                              |         *(r5) = r3;
    0x00012198 b 0x1219e                                 |         goto label_4;
                                                         | label_3:
    0x0001219a cmp r2, 0                                 |         
    0x0001219c bne 0x12194                               |         
                                                         |     } while (r2 != 0);
                                                         | label_4:
    0x0001219e mvn r4, 0x64                              |     r4 = ~0x64;
    0x000121a2 b 0x12216                                 |     goto label_1;
                                                         | label_5:
    0x000121a4 ldr.w r3, [r0, 0x84]                      |     r3 = *((r0 + 0x84));
    0x000121a8 ldr r4, [r2]                              |     r4 = *(r2);
    0x000121aa adds r3, 3                                |     r3 += 3;
                                                         |     if (r3 != 3) {
    0x000121ac bne 0x1221e                               |         goto label_6;
                                                         |     }
    0x000121ae cmp r4, 0                                 |     
                                                         |     if (r4 == 0) {
    0x000121b0 beq 0x12222                               |         goto label_7;
                                                         |     }
    0x000121b2 add.w r0, r4, 0x14                        |     r0 = r4 + 0x14;
    0x000121b6 blx 0x8e30                                |     r0 = vfprintf_chk ()
    0x000121ba mov r7, r0                                |     r7 = r0;
                                                         |     if (r0 == 0) {
    0x000121bc cbz r0, 0x12228                           |         goto label_8;
                                                         |     }
    0x000121be ldr r3, [pc, 0x70]                        |     
    0x000121c0 mov.w r2, -1                              |     r2 = -1;
    0x000121c4 movs r1, 1                                |     r1 = 1;
    0x000121c6 str r4, [sp]                              |     *(sp) = r4;
    0x000121c8 add r3, pc                                |     r3 = 0x243fe;
    0x000121ca blx 0x90ec                                |     fcn_000090ec ();
    0x000121ce mov r0, r7                                |     r0 = r7;
    0x000121d0 blx 0x8f9c                                |     fcn_00008f9c ();
    0x000121d4 ldr r4, [r5]                              |     r4 = *(r5);
    0x000121d6 mov sb, r0                                |     sb = r0;
    0x000121d8 mov r1, r6                                |     r1 = r6;
    0x000121da adds r0, r7, r0                           |     r0 = r7 + r0;
    0x000121dc mov r6, r7                                |     r6 = r7;
    0x000121de mov r2, r4                                |     r2 = r4;
    0x000121e0 add r4, sb                                |     r4 += sb;
    0x000121e2 blx 0x8a14                                |     fcn_00008a14 ();
    0x000121e6 ldr r3, [pc, 0x4c]                        |     
    0x000121e8 add r3, pc                                |     r3 = 0x24422;
    0x000121ea ldrh r3, [r3]                             |     r3 = *(r3);
    0x000121ec strh r3, [r7, r4]                         |     *((r7 + r4)) = r3;
    0x000121ee adds r4, 2                                |     r4 += 2;
    0x000121f0 movs r7, 1                                |     r7 = 1;
                                                         |     do {
                                                         | label_0:
    0x000121f2 mov r2, r4                                |         r2 = r4;
    0x000121f4 add r3, sp, 0xc                           |         r3 += var_ch;
    0x000121f6 mov r1, r6                                |         r1 = r6;
    0x000121f8 mov r0, r8                                |         r0 = r8;
    0x000121fa bl 0x1079e                                |         r0 = fcn_0001079e (r0, r1, r2, r3);
    0x000121fe mov r4, r0                                |         r4 = r0;
                                                         |         if (r7 != 0) {
    0x00012200 cbz r7, 0x12208                           |             
    0x00012202 mov r0, r6                                |             r0 = r6;
    0x00012204 blx 0x894c                                |             fcn_0000894c ();
                                                         |         }
    0x00012208 cmp r4, 0                                 |         
    0x0001220a mov.w r3, 0                               |         r3 = 0;
    0x0001220e itte ge                                   |         
                                                         |         if (r4 < 0) {
    0x00012210 strge r4, [r5]                            |             *(r5) = r4;
                                                         |         }
                                                         |         if (r4 < 0) {
    0x00012212 movge r4, r3                              |             r4 = r3;
                                                         |         }
                                                         |         if (r4 >= 0) {
    0x00012214 strlt r3, [r5]                            |             *(r5) = r3;
                                                         |         }
                                                         | label_1:
    0x00012216 mov r0, r4                                |         r0 = r4;
    0x00012218 add sp, 0x14                              |         
    0x0001221a pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_6:
    0x0001221e movs r7, 0                                |         r7 = 0;
    0x00012220 b 0x121f2                                 |         
                                                         |     } while (1);
                                                         | label_7:
    0x00012222 mov r7, r4                                |     r7 = r4;
    0x00012224 mov r6, r4                                |     r6 = r4;
    0x00012226 b 0x121f2                                 |     goto label_0;
                                                         | label_8:
    0x00012228 mvn r4, 0x67                              |     r4 = ~0x67;
    0x0001222c b 0x12216                                 |     goto label_1;
    0x0001892c b.w 0x12180                               |     goto label_2;
                                                         | }

[*] Function fprintf used 49 times libupnp.so.17.1.8