[*] Binary protection state of libapr-1.so.0.7.0

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


[*] Function popen tear down of libapr-1.so.0.7.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/libapr-1.so.0.7.0 @ 0x1cee0 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 | uint32_t rotate_right32 (uint32_t value, uint32_t count) {
                                                                 |     const uint32_t mask = (CHAR_BIT * sizeof (value)) - 1;
                                                                 |     count &= mask;
                                                                 |     return (value >> count) | (value << (-count & mask));
                                                                 | }
                                                                 | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                                 |                                ((n & 0x0000ff00) <<  8) | \
                                                                 |                                ((n & 0x00ff0000) >>  8) | \
                                                                 |                                ((n & 0xff000000) >> 24)))
                                                                 |  
    ; (fcn) sym.apr__SHA256_Transform ()                         | void apr_SHA256_Transform (int16_t arg1, int16_t arg2) {
                                                                 |     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;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0001cee0 push {r0, r1, sb, sl, lr}                         |     
    0x0001cee4 ldr r7, [pc, 0x3c0]                               |     r7 = *(0x1d2a8);
    0x0001cee6 mov fp, r1                                        |     
    0x0001cee8 ldrd r6, r1, [r3, 0x10]                           |     __asm ("ldrd r6, r1, [r3, 0x10]");
    0x0001ceec sub sp, 0x24                                      |     
    0x0001ceee mov r7, r0                                        |     r7 = r0;
    0x0001cef0 ldr r2, [pc, 0x1d8]                               |     
    0x0001cef2 str r1, [sp, 8]                                   |     var_8h = r1;
    0x0001cef4 ldr r1, [r3, 0x18]                                |     r1 = *((r3 + 0x18));
    0x0001cef6 ldr.w sl, [r3, 0x1c]                              |     sl = *((r3 + 0x1c));
    0x0001cefa add r2, pc                                        |     r2 = 0x39fca;
    0x0001cefc ldr r5, [r0, 4]                                   |     r5 = *((r0 + 4));
    0x0001cefe add.w ip, r2, 0x20                                |     
    0x0001cf02 ldr r4, [r7], 0x28                                |     r4 = *(r7);
                                                                 |     r7 += 0x28;
    0x0001cf06 adds r2, 0x5c                                     |     r2 += 0x5c;
    0x0001cf08 str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x0001cf0a ldrd r0, sb, [r0, 8]                              |     __asm ("ldrd r0, sb, [r0, 8]");
    0x0001cf0e str r1, [sp, 4]                                   |     var_4h = r1;
    0x0001cf10 mov r1, r3                                        |     r1 = r3;
    0x0001cf12 movw r3, 0x2f98                                   |     
    0x0001cf16 add.w r8, r1, 0x24                                |     r8 = r1 + 0x24;
    0x0001cf1a movt r3, 0x428a                                   |     r3 = 0x428a2f98;
    0x0001cf1e str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x0001cf22 mov lr, r0                                        |     lr = r0;
    0x0001cf24 ldr.w r8, [sp, 4]                                 |     r8 = var_4h;
    0x0001cf28 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x0001cf2a str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h]");
    0x0001cf2e mov fp, sl                                        |     
    0x0001cf30 str r7, [sp, 0x14]                                |     var_14h = r7;
    0x0001cf32 ldr.w sl, [sp, 8]                                 |     sl = var_8h;
    0x0001cf36 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0001cf38 b 0x1cf4c                                         |     
                                                                 |     while (r3 != ip) {
    0x0001cf3a ldr r3, [ip, 4]!                                  |         r3 = *((ip += 4));
    0x0001cf3e mov r8, sl                                        |         r8 = sl;
    0x0001cf40 mov lr, r5                                        |         lr = r5;
    0x0001cf42 mov sl, r6                                        |         sl = r6;
    0x0001cf44 mov r5, r4                                        |         r5 = r4;
    0x0001cf46 mov r6, r0                                        |         r6 = r0;
    0x0001cf48 mov r4, r2                                        |         r4 = r2;
    0x0001cf4a str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x0001cf4c ldr r2, [sp, 4]                                   |         r2 = var_4h;
    0x0001cf4e and.w r3, r6, sl                                  |         r3 = r6 & sl;
    0x0001cf52 ldr r1, [sp]                                      |         r1 = *(sp);
    0x0001cf54 bic.w r0, r8, r6                                  |         r0 = BIT_MASK (r8, r6);
    0x0001cf58 eors r0, r3                                       |         r0 ^= r3;
    0x0001cf5a ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x0001cf5c ldr r7, [r2], 4                                   |         r7 = *(r2);
                                                                 |         r2 += 4;
    0x0001cf60 str r2, [sp, 4]                                   |         var_4h = r2;
    0x0001cf62 ror.w r2, r6, 0xb                                 |         r2 = rotate_right32 (r6, 11);
    0x0001cf66 rev r7, r7                                        |         r7 = SWAP32 (r7);
    0x0001cf68 eor.w r2, r2, r6, ror 6                           |         r2 ^= (r6 >>> 6);
    0x0001cf6c str r7, [r1, 4]!                                  |         *((r1 += 4)) = r7;
    0x0001cf70 str r1, [sp]                                      |         *(sp) = r1;
    0x0001cf72 ror.w r1, r4, 0xd                                 |         r1 = rotate_right32 (r4, 13);
    0x0001cf76 eor.w r2, r2, r6, ror 25                          |         r2 ^= (r6 >>> 25);
    0x0001cf7a eor.w r1, r1, r4, ror 2                           |         r1 ^= (r4 >>> 2);
    0x0001cf7e add r2, r0                                        |         r2 += r0;
    0x0001cf80 add r2, r7                                        |         r2 += r7;
    0x0001cf82 eor.w r1, r1, r4, ror 22                          |         r1 ^= (r4 >>> 22);
    0x0001cf86 add r2, fp                                        |         r2 += fp;
    0x0001cf88 add r2, r3                                        |         r2 += r3;
    0x0001cf8a eor.w r3, r5, lr                                  |         r3 = r5 ^ lr;
    0x0001cf8e ands r3, r4                                       |         r3 &= r4;
    0x0001cf90 and.w r7, r5, lr                                  |         r7 = r5 & lr;
    0x0001cf94 eors r3, r7                                       |         r3 ^= r7;
    0x0001cf96 add.w r0, sb, r2                                  |         r0 = sb + r2;
    0x0001cf9a add r3, r1                                        |         r3 += r1;
    0x0001cf9c mov fp, r8                                        |         
    0x0001cf9e add r2, r3                                        |         r2 += r3;
    0x0001cfa0 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x0001cfa2 mov sb, lr                                        |         sb = lr;
    0x0001cfa4 cmp r3, ip                                        |         
    0x0001cfa6 bne 0x1cf3a                                       |         
                                                                 |     }
    0x0001cfa8 ldr r3, [pc, 0x124]                               |     
    0x0001cfaa ldr r7, [sp, 0x14]                                |     r7 = var_14h;
    0x0001cfac str.w r8, [sp, 4]                                 |     __asm ("str.w r8, [var_4h]");
    0x0001cfb0 mov.w r8, 0x10                                    |     r8 = 0x10;
    0x0001cfb4 add r3, pc                                        |     r3 = 0x3a088;
    0x0001cfb6 strd sl, lr, [sp, 8]                              |     __asm ("strd sl, lr, [var_8h]");
    0x0001cfba adds r3, 0x60                                     |     r3 += 0x60;
    0x0001cfbc str r4, [sp]                                      |     *(sp) = r4;
    0x0001cfbe str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0001cfc0 movw r3, 0x69c1                                   |     
    0x0001cfc4 movt r3, 0xe49b                                   |     r3 = 0xe49b69c1;
    0x0001cfc8 str r6, [sp, 0x10]                                |     var_10h = r6;
    0x0001cfca str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0001cfcc b 0x1cfe4                                         |     
                                                                 |     while (r5 != r0) {
    0x0001cfce ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x0001cfd0 mov r5, r6                                        |         r5 = r6;
    0x0001cfd2 str r2, [sp]                                      |         *(sp) = r2;
    0x0001cfd4 str r0, [sp, 0x10]                                |         var_10h = r0;
    0x0001cfd6 mov r0, r1                                        |         r0 = r1;
    0x0001cfd8 ldr r2, [r3, 4]!                                  |         r2 = *((r3 += 4));
    0x0001cfdc str r4, [sp, 8]                                   |         var_8h = r4;
    0x0001cfde strd r2, r3, [sp, 0x14]                           |         __asm ("strd r2, r3, [var_14h]");
    0x0001cfe2 mov r2, lr                                        |         r2 = lr;
    0x0001cfe4 add.w sb, r8, 1                                   |         sb = r8 + 1;
    0x0001cfe8 add.w r1, r8, 0xe                                 |         r1 = r8 + 0xe;
    0x0001cfec and r3, sb, 0xf                                   |         r3 = sb & 0xf;
    0x0001cff0 and r1, r1, 0xf                                   |         r1 &= 0xf;
    0x0001cff4 ldr.w r3, [r7, r3, lsl 2]                         |         offset_0 = r3 << 2;
                                                                 |         r3 = *((r7 + offset_0));
    0x0001cff8 and sl, r8, 0xf                                   |         sl = r8 & 0xf;
    0x0001cffc ldr.w fp, [r7, r1, lsl 2]                         |         offset_1 = r1 << 2;
                                                                 |         fp = *((r7 + offset_1));
    0x0001d000 cmp.w sb, 0x40                                    |         
    0x0001d004 ldr.w r6, [r7, sl, lsl 2]                         |         offset_2 = sl << 2;
                                                                 |         r6 = *((r7 + offset_2));
    0x0001d008 ldr r4, [sp, 0x10]                                |         r4 = var_10h;
    0x0001d00a ror.w lr, r3, 0x12                                |         lr = rotate_right32 (r3, 18);
    0x0001d00e ror.w ip, fp, 0x13                                |         ip = rotate_right32 (fp, 19);
    0x0001d012 eor.w lr, lr, r3, ror 7                           |         lr ^= (r3 >>> 7);
    0x0001d016 eor.w ip, ip, fp, ror 17                          |         
    0x0001d01a eor.w lr, lr, r3, lsr 3                           |         lr ^= (r3 >> 3);
    0x0001d01e add.w r3, r8, 9                                   |         r3 = r8 + 9;
    0x0001d022 and r3, r3, 0xf                                   |         r3 &= 0xf;
    0x0001d026 eor.w ip, ip, fp, lsr 10                          |         
    0x0001d02a ldr.w r1, [r7, r3, lsl 2]                         |         offset_3 = r3 << 2;
                                                                 |         r1 = *((r7 + offset_3));
    0x0001d02e ror.w r3, r0, 0xb                                 |         r3 = rotate_right32 (r0, 11);
    0x0001d032 mov r8, sb                                        |         r8 = sb;
    0x0001d034 eor.w r3, r3, r0, ror 6                           |         r3 ^= (r0 >>> 6);
    0x0001d038 add r1, r6                                        |         r1 += r6;
    0x0001d03a ldr r6, [sp, 8]                                   |         r6 = var_8h;
    0x0001d03c add r1, lr                                        |         r1 += lr;
    0x0001d03e eor.w r3, r3, r0, ror 25                          |         r3 ^= (r0 >>> 25);
    0x0001d042 add r1, ip                                        |         r1 += ip;
    0x0001d044 ror.w ip, r2, 0xd                                 |         ip = rotate_right32 (r2, 13);
    0x0001d048 bic.w lr, r6, r0                                  |         lr = BIT_MASK (r6, r0);
    0x0001d04c str.w r1, [r7, sl, lsl 2]                         |         __asm ("str.w r1, [r7, sl, lsl 2]");
    0x0001d050 and.w sl, r0, r4                                  |         sl = r0 & r4;
    0x0001d054 eor.w ip, ip, r2, ror 2                           |         
    0x0001d058 eor.w lr, lr, sl                                  |         lr ^= sl;
    0x0001d05c add r3, lr                                        |         r3 += lr;
    0x0001d05e eor.w ip, ip, r2, ror 22                          |         
    0x0001d062 add r3, r1                                        |         r3 += r1;
    0x0001d064 ldr r1, [sp, 4]                                   |         r1 = var_4h;
    0x0001d066 str r6, [sp, 4]                                   |         var_4h = r6;
    0x0001d068 ldr r6, [sp]                                      |         r6 = *(sp);
    0x0001d06a add r3, r1                                        |         r3 += r1;
    0x0001d06c ldr r1, [sp, 0x14]                                |         r1 = var_14h;
    0x0001d06e eor.w lr, r6, r5                                  |         lr = r6 ^ r5;
    0x0001d070 lsrs r5, r0, 0x18                                 |         r5 = r0 >> 0x18;
    0x0001d072 and.w sl, r6, r5                                  |         sl = r6 & r5;
    0x0001d076 add r3, r1                                        |         r3 += r1;
    0x0001d078 and.w lr, lr, r2                                  |         lr &= r2;
    0x0001d07c ldr r1, [sp, 0xc]                                 |         r1 = var_ch;
    0x0001d07e eor.w lr, lr, sl                                  |         lr ^= sl;
    0x0001d082 add lr, ip                                        |         lr += ip;
    0x0001d084 str r5, [sp, 0xc]                                 |         var_ch = r5;
    0x0001d086 add lr, r3                                        |         lr += r3;
    0x0001d088 add r1, r3                                        |         r1 += r3;
    0x0001d08a bne 0x1cfce                                       |         
                                                                 |     }
    0x0001d08c ldr r7, [sp, 0x1c]                                |     r7 = var_1ch;
    0x0001d08e ldr r4, [sp]                                      |     r4 = *(sp);
    0x0001d090 ldr r6, [sp, 0x10]                                |     r6 = var_10h;
    0x0001d092 ldr r3, [r7]                                      |     r3 = *(r7);
    0x0001d094 add r3, lr                                        |     r3 += lr;
    0x0001d096 str r3, [r7]                                      |     *(r7) = r3;
    0x0001d098 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x0001d09a add r3, r2                                        |     r3 += r2;
    0x0001d09c ldr r2, [r7, 0x18]                                |     r2 = *((r7 + 0x18));
    0x0001d09e str r3, [r7, 4]                                   |     *((r7 + 4)) = r3;
    0x0001d0a0 ldr r3, [r7, 8]                                   |     r3 = *((r7 + 8));
    0x0001d0a2 add r6, r2                                        |     r6 += r2;
    0x0001d0a4 str r6, [r7, 0x18]                                |     *((r7 + 0x18)) = r6;
    0x0001d0a6 add r3, r4                                        |     r3 += r4;
    0x0001d0a8 str r3, [r7, 8]                                   |     *((r7 + 8)) = r3;
    0x0001d0aa ldr r3, [r7, 0xc]                                 |     r3 = *((r7 + 0xc));
    0x0001d0ac add r3, r5                                        |     r3 += r5;
    0x0001d0ae str r3, [r7, 0xc]                                 |     *((r7 + 0xc)) = r3;
    0x0001d0b0 ldr r3, [r7, 0x10]                                |     r3 = *((r7 + 0x10));
    0x0001d0b2 add r3, r1                                        |     r3 += r1;
    0x0001d0b4 ldr r1, [sp, 8]                                   |     r1 = var_8h;
    0x0001d0b6 str r3, [r7, 0x10]                                |     *((r7 + 0x10)) = r3;
    0x0001d0b8 ldr r3, [r7, 0x14]                                |     r3 = *((r7 + 0x14));
    0x0001d0ba add r3, r0                                        |     r3 += r0;
    0x0001d0bc str r3, [r7, 0x14]                                |     *((r7 + 0x14)) = r3;
    0x0001d0be ldr r3, [r7, 0x1c]                                |     r3 = *((r7 + 0x1c));
    0x0001d0c0 add r3, r1                                        |     r3 += r1;
    0x0001d0c2 str r3, [r7, 0x1c]                                |     *((r7 + 0x1c)) = r3;
    0x0001d0c4 add sp, 0x24                                      |     
    0x0001d0c6 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/libapr-1.so.0.7.0 @ 0x17db4 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.apr_pool_clear ()                                    | void apr_pool_clear (int16_t arg_0h, int16_t arg_4h, int16_t arg_10h, int16_t arg1, int16_t arg2) {
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x00017db4 push.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00017db8 mov r4, r0                                            |     r4 = r0;
    0x00017dba ldr r3, [r0, 0x38]                                    |     r3 = *(arg_0hx38);
                                                                     |     if (r3 == 0) {
    0x00017dbc cbz r3, 0x17dce                                       |         goto label_4;
                                                                     |     }
                                                                     |     do {
    0x00017dbe ldr r1, [r3]                                          |         r1 = *(r3);
    0x00017dc0 ldr r2, [r3, 8]                                       |         r2 = *((r3 + 8));
    0x00017dc2 str r1, [r4, 0x38]                                    |         *((r4 + 0x38)) = r1;
    0x00017dc4 ldr r0, [r3, 4]                                       |         r0 = *((r3 + 4));
    0x00017dc6 blx r2                                                |         uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x00017dc8 ldr r3, [r4, 0x38]                                    |         r3 = *((r4 + 0x38));
    0x00017dca cmp r3, 0                                             |         
    0x00017dcc bne 0x17dbe                                           |         
                                                                     |     } while (r3 != 0);
                                                                     | label_4:
    0x00017dce ldr r0, [r4, 4]                                       |     r0 = *((r4 + 4));
    0x00017dd0 movs r3, 0                                            |     r3 = 0;
    0x00017dd2 str r3, [r4, 0x38]                                    |     *((r4 + 0x38)) = r3;
                                                                     |     if (r0 == 0) {
    0x00017dd4 cbz r0, 0x17dee                                       |         goto label_5;
                                                                     |     }
                                                                     |     do {
    0x00017dd6 blx 0xa780                                            |         fcn_0000a780 ();
    0x00017dda ldr r0, [r4, 4]                                       |         r0 = *((r4 + 4));
    0x00017ddc cmp r0, 0                                             |         
    0x00017dde bne 0x17dd6                                           |         
                                                                     |     } while (r0 != 0);
    0x00017de0 ldr r3, [r4, 0x10]                                    |     r3 = *((r4 + 0x10));
                                                                     |     if (r3 == 0) {
    0x00017de2 cbz r3, 0x17df4                                       |         goto label_6;
                                                                     |     }
                                                                     |     do {
    0x00017de4 ldr r1, [r3]                                          |         r1 = *(r3);
    0x00017de6 ldr r2, [r3, 8]                                       |         r2 = *((r3 + 8));
    0x00017de8 str r1, [r4, 0x10]                                    |         *((r4 + 0x10)) = r1;
    0x00017dea ldr r0, [r3, 4]                                       |         r0 = *((r3 + 4));
    0x00017dec blx r2                                                |         uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                     | label_5:
    0x00017dee ldr r3, [r4, 0x10]                                    |         r3 = *((r4 + 0x10));
    0x00017df0 cmp r3, 0                                             |         
    0x00017df2 bne 0x17de4                                           |         
                                                                     |     } while (r3 != 0);
                                                                     | label_6:
    0x00017df4 ldr r0, [r4, 0x1c]                                    |     r0 = *((r4 + 0x1c));
    0x00017df6 movs r3, 0                                            |     r3 = 0;
    0x00017df8 strd r3, r3, [r4, 0x10]                               |     __asm ("strd r3, r3, [r4, 0x10]");
                                                                     |     if (r0 != 0) {
    0x00017dfc cbz r0, 0x17e02                                       |         
    0x00017dfe bl 0x17760                                            |         fcn_00017760 (r0);
                                                                     |     }
    0x00017e02 ldrd fp, r1, [r4, 0x30]                               |     __asm ("ldrd fp, r1, [r4, 0x30]");
    0x00017e06 movs r3, 0                                            |     r3 = 0;
    0x00017e08 str r3, [r4, 0x1c]                                    |     *((r4 + 0x1c)) = r3;
    0x00017e0a str r3, [r4, 0x24]                                    |     *((r4 + 0x24)) = r3;
    0x00017e0c ldr.w r2, [fp]                                        |     r2 = *(fp);
    0x00017e10 str.w fp, [r4, 0x2c]                                  |     __asm ("str.w fp, [r4, 0x2c]");
    0x00017e14 str.w r1, [fp, 0x10]                                  |     __asm ("str.w r1, [arg_10h]");
    0x00017e18 cmp fp, r2                                            |     
                                                                     |     if (fp == r2) {
    0x00017e1a beq 0x17ea0                                           |         goto label_7;
                                                                     |     }
    0x00017e1c ldr r7, [r4, 0x18]                                    |     r7 = *((r4 + 0x18));
    0x00017e1e ldr.w r2, [fp, 4]                                     |     r2 = *(arg_4h);
    0x00017e22 ldr.w r8, [r7, 0xc]                                   |     r8 = *((r7 + 0xc));
    0x00017e26 str r3, [r2]                                          |     *(r2) = r3;
    0x00017e28 ldr.w r5, [fp]                                        |     r5 = *(fp);
    0x00017e2c cmp.w r8, 0                                           |     
                                                                     |     if (r8 != 0) {
    0x00017e30 beq 0x17e3c                                           |         
    0x00017e32 mov r0, r8                                            |         r0 = r8;
    0x00017e34 blx 0xa268                                            |         fcn_0000a268 ();
    0x00017e38 ldr.w r8, [r7, 0xc]                                   |         r8 = *((r7 + 0xc));
                                                                     |     }
    0x00017e3c ldrd sb, r0, [r7]                                     |     __asm ("ldrd sb, r0, [r7]");
    0x00017e40 movs r4, 0                                            |     r4 = 0;
    0x00017e42 ldr r1, [r7, 8]                                       |     r1 = *((r7 + 8));
                                                                     |     do {
                                                                     | label_1:
    0x00017e44 mov r3, r5                                            |         r3 = r5;
    0x00017e46 ldr r5, [r5]                                          |         r5 = *(r5);
    0x00017e48 ldr r2, [r3, 8]                                       |         r2 = *((r3 + 8));
    0x00017e4a add.w ip, r2, 1                                       |         
                                                                     |         if (r0 == 0) {
    0x00017e4e cbz r0, 0x17ea4                                       |             goto label_8;
                                                                     |         }
    0x00017e50 cmp r1, ip                                            |         
    0x00017e52 itt lo                                                |         
                                                                     |         if (r1 >= ip) {
    0x00017e54 strlo r4, [r3]                                        |             *(r3) = r4;
                                                                     |         }
                                                                     |         if (r1 >= ip) {
    0x00017e56 movlo r4, r3                                          |             r4 = r3;
                                                                     |         }
                                                                     |         if (r1 > ip) {
    0x00017e58 blo 0x17e78                                           |             
    0x00017e5a cmp r2, 0x13                                          |             
                                                                     |             if (r2 > 0x13) {
    0x00017e5c bhi 0x17ee0                                           |                 goto label_9;
                                                                     |             }
    0x00017e5e add.w lr, r7, r2, lsl 2                               |             lr = r7 + (r2 << 2);
    0x00017e62 ldr.w sl, [lr, 0x14]                                  |             sl = *((lr + 0x14));
    0x00017e66 str.w sl, [r3]                                        |             __asm ("str.w sl, [r3]");
    0x00017e6a cmp.w sl, 0                                           |             
                                                                     |             if (sl == 0) {
    0x00017e6e beq 0x17ee8                                           |                 goto label_10;
                                                                     |             }
    0x00017e70 str.w r3, [lr, 0x14]                                  |             __asm ("str.w r3, [lr, 0x14]");
                                                                     | label_0:
    0x00017e74 subs r1, 1                                            |             r1--;
    0x00017e76 subs r1, r1, r2                                       |             r1 -= r2;
                                                                     |         }
    0x00017e78 cmp r5, 0                                             |         
    0x00017e7a bne 0x17e44                                           |         
                                                                     |     } while (r5 != 0);
                                                                     | label_2:
    0x00017e7c str.w sb, [r7]                                        |     __asm ("str.w sb, [r7]");
    0x00017e80 str r1, [r7, 8]                                       |     *((r7 + 8)) = r1;
    0x00017e82 cmp.w r8, 0                                           |     
                                                                     |     if (r8 != 0) {
    0x00017e86 beq 0x17e8e                                           |         
    0x00017e88 mov r0, r8                                            |         r0 = r8;
    0x00017e8a blx 0xacfc                                            |         fcn_0000acfc ();
                                                                     |     }
                                                                     |     if (r4 == 0) {
    0x00017e8e cbz r4, 0x17e9c                                       |         goto label_11;
                                                                     |     }
                                                                     |     do {
    0x00017e90 mov r0, r4                                            |         r0 = r4;
    0x00017e92 ldr r4, [r4]                                          |         r4 = *(r4);
    0x00017e94 blx 0x9c34                                            |         fcn_00009c34 ();
    0x00017e98 cmp r4, 0                                             |         
    0x00017e9a bne 0x17e90                                           |         
                                                                     |     } while (r4 != 0);
                                                                     | label_11:
    0x00017e9c strd fp, fp, [fp]                                     |     __asm ("strd fp, fp, [fp]");
                                                                     | label_7:
    0x00017ea0 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                     | label_8:
    0x00017ea4 cmp r2, 0x13                                          |     
                                                                     |     if (r2 > 0x13) {
    0x00017ea6 bhi 0x17ecc                                           |         goto label_12;
                                                                     |     }
    0x00017ea8 add.w lr, r7, r2, lsl 2                               |     lr = r7 + (r2 << 2);
    0x00017eac ldr.w sl, [lr, 0x14]                                  |     sl = *((lr + 0x14));
    0x00017eb0 str.w sl, [r3]                                        |     __asm ("str.w sl, [r3]");
    0x00017eb4 cmp.w sl, 0                                           |     
                                                                     |     if (sl == 0) {
    0x00017eb8 beq 0x17ee8                                           |         goto label_10;
                                                                     |     }
                                                                     | label_3:
    0x00017eba cmp r1, ip                                            |     
    0x00017ebc str.w r3, [lr, 0x14]                                  |     __asm ("str.w r3, [lr, 0x14]");
    0x00017ec0 it lo                                                 |     
                                                                     |     if (r1 < ip) {
    0x00017ec2 movlo r1, 0                                           |         r1 = 0;
                                                                     |         goto label_13;
                                                                     |     }
                                                                     |     if (r1 >= ip) {
                                                                     | label_13:
    0x00017ec4 bhs 0x17e74                                           |         goto label_0;
                                                                     |     }
    0x00017ec6 cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x00017ec8 bne 0x17e44                                           |         goto label_1;
                                                                     |     }
    0x00017eca b 0x17e7c                                             |     goto label_2;
                                                                     | label_12:
    0x00017ecc ldr r6, [r7, 0x14]                                    |     r6 = *((r7 + 0x14));
    0x00017ece cmp r1, ip                                            |     
    0x00017ed0 it lo                                                 |     
                                                                     |     if (r1 >= ip) {
    0x00017ed2 movlo r1, r0                                          |         r1 = r0;
                                                                     |     }
    0x00017ed4 str r6, [r3]                                          |     *(r3) = r6;
    0x00017ed6 str r3, [r7, 0x14]                                    |     *((r7 + 0x14)) = r3;
                                                                     |     if (r1 >= ip) {
    0x00017ed8 bhs 0x17e74                                           |         goto label_0;
                                                                     |     }
    0x00017eda cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x00017edc bne 0x17e44                                           |         goto label_1;
                                                                     |     }
    0x00017ede b 0x17e7c                                             |     goto label_2;
                                                                     | label_9:
    0x00017ee0 ldr r6, [r7, 0x14]                                    |     r6 = *((r7 + 0x14));
    0x00017ee2 str r6, [r3]                                          |     *(r3) = r6;
    0x00017ee4 str r3, [r7, 0x14]                                    |     *((r7 + 0x14)) = r3;
    0x00017ee6 b 0x17e74                                             |     goto label_0;
                                                                     | label_10:
    0x00017ee8 cmp sb, r2                                            |     
    0x00017eea it lo                                                 |     
                                                                     |     if (sb >= r2) {
    0x00017eec movlo sb, r2                                          |         sb = r2;
                                                                     |     }
    0x00017eee b 0x17eba                                             |     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/libapr-1.so.0.7.0 @ 0x18648 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.apr_pool_clear_debug ()      | void apr_pool_clear_debug () {
                                             |     do {
    0x00009d34 bx pc                         |         return void (*pc)() ();
    0x00018648 b.w 0x9d34                    |         
                                             |     } while (1);
                                             | }

[*] Function popen used 1 times libapr-1.so.0.7.0