[*] 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