[*] Binary protection state of busybox
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of busybox
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x8e5d4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0008e5d4 () | void fcn_0008e5d4 () {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_36h;
| void * ptr;
| int32_t var_38h;
| int32_t var_3ch;
0x0008e5d4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0008e5d8 ldr r4, [pc, 0xe04] | r4 = *(0x8f3e0);
0x0008e5dc sub sp, sp, 0x3c |
0x0008e5e0 add r1, sp, 0x38 | r1 += var_38h;
0x0008e5e4 mov r3, 0xa | r3 = 0xa;
0x0008e5e8 strb r3, [r1, -2]! | *((r1 -= 2)) = r3;
0x0008e5ec add r0, sp, 0x37 | r0 += ptr;
0x0008e5f0 bl 0x8e3ec | fcn_0008e3ec (r0, r1);
0x0008e5f4 mov sl, 0 | sl = 0;
0x0008e5f8 mov r6, r0 | r6 = r0;
| label_16:
0x0008e5fc cmp r6, 0 |
| if (r6 == 0) {
0x0008e600 beq 0x8f3dc | goto label_27;
| }
0x0008e604 add r1, sp, 0x36 | r1 += var_36h;
0x0008e608 add r0, sp, 0x37 | r0 += ptr;
0x0008e60c ldrb fp, [sp, 0x37] | fp = ptr;
0x0008e610 bl 0x8e3ec | fcn_0008e3ec (r0, r1);
0x0008e614 add sl, sl, 1 | sl++;
0x0008e618 mov r3, 0 | r3 = 0;
0x0008e61c str r3, [sp, 0xc] | var_ch = r3;
0x0008e620 mov sb, r0 | sb = r0;
| label_7:
0x0008e624 ldrb r3, [r4, 0x7d] | r3 = *((r4 + 0x7d));
0x0008e628 ldrb r5, [r4, 0x7c] | r5 = *((r4 + 0x7c));
0x0008e62c orr r5, r5, r3, lsl 8 | r5 |= (r3 << 8);
0x0008e630 ldrb r3, [r4, 0x7e] | r3 = *((r4 + 0x7e));
0x0008e634 orr r5, r5, r3, lsl 16 | r5 |= (r3 << 16);
0x0008e638 ldrb r3, [r4, 0x7f] | r3 = *((r4 + 0x7f));
0x0008e63c orr r5, r5, r3, lsl 24 | r5 |= (r3 << 24);
| label_6:
0x0008e640 cmp r5, 0 |
| if (r5 == 0) {
0x0008e644 beq 0x8f04c | goto label_20;
| }
0x0008e648 ldrb r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0008e64c ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x0008e650 lsr r7, r3, 1 | r7 = r3 >> 1;
0x0008e654 tst r3, 2 |
0x0008e658 and r7, r7, 1 | r7 &= 1;
| if ((r3 & 2) != 0) {
0x0008e65c bne 0x8e68c | goto label_2;
| }
0x0008e660 cmp r2, 0 |
| if (r2 != 0) {
0x0008e664 bne 0x8e6f4 | goto label_28;
| }
0x0008e668 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x0008e66c ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x0008e670 cmp r1, 0 |
| if (r1 != 0) {
0x0008e674 bne 0x8e728 | goto label_29;
| }
0x0008e678 cmp r2, 0 |
| if (r2 != 0) {
0x0008e67c bne 0x8e728 | goto label_29;
| }
0x0008e680 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0008e684 cmp r2, 0 |
| if (r2 != 0) {
| label_0:
0x0008e688 bne 0x8e728 | goto label_29;
| }
| do {
| label_2:
0x0008e68c orr r3, r3, 2 | r3 |= 2;
0x0008e690 strb r3, [r5, 0x2c] | *((r5 + 0x2c)) = r3;
0x0008e694 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x0008e698 cmn r3, 1 |
| if (r3 >= 1) {
0x0008e69c sublt r3, sl, r3 | r3 = sl - r3;
| }
| if (r3 >= 1) {
0x0008e6a0 sublt r3, r3, 2 | r3 -= 2;
| }
| if (r3 >= 1) {
0x0008e6a4 strlt r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
| }
0x0008e6a8 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0008e6ac ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x0008e6b0 cmp r3, 0 |
| if (r3 <= 0) {
0x0008e6b4 mvngt r3, 1 | r3 = ~1;
| }
| if (r3 <= 0) {
0x0008e6b8 strgt r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
| }
0x0008e6bc cmp r0, 0 |
| if (r0 == 0) {
0x0008e6c0 beq 0x8e838 | goto label_30;
| }
0x0008e6c4 cmn r0, 1 |
| if (r0 != 1) {
0x0008e6c8 bne 0x8e7f8 | goto label_31;
| }
0x0008e6cc cmp sb, 0 |
| if (sb != 0) {
0x0008e6d0 bne 0x8e800 | goto label_5;
| }
| label_3:
0x0008e6d4 mov r0, 0 | r0 = 0;
| label_4:
0x0008e6d8 ldrb r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0008e6dc and r0, r0, 1 | r0 &= 1;
0x0008e6e0 bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x0008e6e4 orr r0, r3, r0, lsl 1 | r0 = r3 | (r0 << 1);
0x0008e6e8 strb r0, [r5, 0x2c] | *((r5 + 0x2c)) = r0;
0x0008e6ec mov r3, 1 | r3 = 1;
0x0008e6f0 b 0x8e798 | goto label_32;
| if (sb <= 0) {
| label_28:
0x0008e6f4 ble 0x8e728 | goto label_29;
| }
0x0008e6f8 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x0008e6fc cmp r1, 0 |
| if (r1 == 0) {
0x0008e700 bne 0x8e710 |
0x0008e704 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0008e708 cmp r1, 0 |
| if (r1 == 0) {
0x0008e70c beq 0x8e720 | goto label_33;
| }
| }
0x0008e710 cmp sl, r2 |
| if (sl < r2) {
0x0008e714 blt 0x8e728 | goto label_29;
| }
| label_1:
0x0008e718 ldrb r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0008e71c b 0x8e68c |
| } while (1);
| label_33:
0x0008e720 cmp sl, r2 |
0x0008e724 b 0x8e688 | goto label_0;
| label_29:
0x0008e728 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0008e72c cmp r0, 0 |
| if (r0 != 0) {
0x0008e730 beq 0x8e774 |
0x0008e734 mov r3, 0 | r3 = 0;
0x0008e738 str r3, [sp] | *(sp) = r3;
0x0008e73c mov r2, r3 | r2 = r3;
0x0008e740 mov r1, r6 | r1 = r6;
0x0008e744 bl 0x14e34 | r0 = regexec ();
0x0008e748 cmp r0, 0 |
| if (r0 != 0) {
0x0008e74c bne 0x8e774 | goto label_34;
| }
0x0008e750 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0008e754 lsr r2, r3, 8 | r2 = r3 >> 8;
0x0008e758 strb r3, [r4, 0x78] | *((r4 + 0x78)) = r3;
0x0008e75c strb r2, [r4, 0x79] | *((r4 + 0x79)) = r2;
0x0008e760 lsr r2, r3, 0x10 | r2 = r3 >> 0x10;
0x0008e764 lsr r3, r3, 0x18 | r3 >>= 0x18;
0x0008e768 strb r2, [r4, 0x7a] | *((r4 + 0x7a)) = r2;
0x0008e76c strb r3, [r4, 0x7b] | *((r4 + 0x7b)) = r3;
0x0008e770 b 0x8e718 | goto label_1;
| }
| label_34:
0x0008e774 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0008e778 cmn r3, 1 |
0x0008e77c ldrb r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
| if (r3 != 1) {
0x0008e780 bne 0x8e78c | goto label_35;
| }
0x0008e784 cmp sb, 0 |
| if (sb == 0) {
0x0008e788 beq 0x8e68c | goto label_2;
| }
| label_35:
0x0008e78c bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x0008e790 strb r3, [r5, 0x2c] | *((r5 + 0x2c)) = r3;
0x0008e794 mov r3, 0 | r3 = 0;
| label_32:
0x0008e798 ldrb r1, [r5, 0x2e] | r1 = *((r5 + 0x2e));
0x0008e79c ldrb r2, [r5, 0x2c] | r2 = *((r5 + 0x2c));
0x0008e7a0 cmp r1, 0x7b |
0x0008e7a4 and r2, r2, 1 | r2 &= 1;
| if (r1 != 0x7b) {
0x0008e7a8 bne 0x8e848 | goto label_36;
| }
0x0008e7ac cmp r2, 0 |
| if (r2 == 0) {
0x0008e7b0 andne r3, r3, 1 | r3 &= 1;
| }
| if (r2 != 0) {
0x0008e7b4 eoreq r3, r3, 1 | r3 ^= 1;
| }
0x0008e7b8 cmp r3, 0 |
| if (r3 == 0) {
0x0008e7bc beq 0x8e9d8 | goto label_9;
| }
0x0008e7c0 mov r3, 0 | r3 = 0;
| do {
0x0008e7c4 ldrb r2, [r5, 0x2e] | r2 = *((r5 + 0x2e));
0x0008e7c8 cmp r2, 0x7b |
| if (r2 != 0x7b) {
0x0008e7cc addeq r3, r3, 1 | r3++;
| }
| if (r2 != 0x7b) {
0x0008e7d0 beq 0x8e7e4 |
0x0008e7d4 cmp r2, 0x7d |
| if (r2 != 0x7d) {
0x0008e7d8 bne 0x8e7e4 | goto label_37;
| }
0x0008e7dc subs r3, r3, 1 | r3--;
| if (r3 == r3) {
0x0008e7e0 beq 0x8e9d8 | goto label_9;
| }
| }
| label_37:
0x0008e7e4 ldr r5, [r5] | r5 = *(r5);
0x0008e7e8 cmp r5, 0 |
0x0008e7ec bne 0x8e7c4 |
| } while (r5 != 0);
0x0008e7f0 ldr r0, [pc, 0xbf0] | r0 = *(0x8f3e4);
| label_8:
0x0008e7f4 bl 0x18254 | r0 = fcn_00018254 ();
| label_31:
0x0008e7f8 cmp r0, sl |
| if (r0 <= sl) {
0x0008e7fc ble 0x8e6d4 | goto label_3;
| }
| label_5:
0x0008e800 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0008e804 cmp r0, 0 |
| if (r0 != 0) {
0x0008e808 moveq r7, 0 | r7 = 0;
| }
0x0008e80c cmp r7, 0 |
| if (r7 == 0) {
0x0008e810 moveq r0, 1 | r0 = 1;
| goto label_38;
| }
| if (r7 == 0) {
| label_38:
0x0008e814 beq 0x8e6d8 | goto label_4;
| }
0x0008e818 mov r3, 0 | r3 = 0;
0x0008e81c str r3, [sp] | *(sp) = r3;
0x0008e820 mov r2, r3 | r2 = r3;
0x0008e824 mov r1, r6 | r1 = r6;
0x0008e828 bl 0x14e34 | r0 = regexec ();
0x0008e82c adds r0, r0, 0 | r0 += 0;
| if (r0 == r0) {
0x0008e830 movne r0, 1 | r0 = 1;
| }
0x0008e834 b 0x8e6d8 | goto label_4;
| label_30:
0x0008e838 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0008e83c cmp r3, 0 |
| if (r3 == 0) {
0x0008e840 beq 0x8e6d8 | goto label_4;
| }
0x0008e844 b 0x8e800 | goto label_5;
| label_36:
0x0008e848 cmp r2, 0 |
| if (r2 == 0) {
0x0008e84c andne r3, r3, 1 | r3 &= 1;
| }
| if (r2 != 0) {
0x0008e850 eoreq r3, r3, 1 | r3 ^= 1;
| }
0x0008e854 str r3, [sp, 0x10] | var_10h = r3;
0x0008e858 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0008e85c cmp r3, 0 |
| if (r3 != 0) {
0x0008e860 bne 0x8e9d8 | goto label_9;
| }
0x0008e864 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0008e868 cmp r3, 0 |
| if (r3 != 0) {
0x0008e86c beq 0x8e88c |
0x0008e870 lsr r2, r3, 8 | r2 = r3 >> 8;
0x0008e874 strb r3, [r4, 0x78] | *((r4 + 0x78)) = r3;
0x0008e878 strb r2, [r4, 0x79] | *((r4 + 0x79)) = r2;
0x0008e87c lsr r2, r3, 0x10 | r2 = r3 >> 0x10;
0x0008e880 lsr r3, r3, 0x18 | r3 >>= 0x18;
0x0008e884 strb r2, [r4, 0x7a] | *((r4 + 0x7a)) = r2;
0x0008e888 strb r3, [r4, 0x7b] | *((r4 + 0x7b)) = r3;
| }
0x0008e88c ldrb r3, [r5, 0x2e] | r3 = *((r5 + 0x2e));
0x0008e890 sub r3, r3, 0x3d | r3 -= 0x3d;
0x0008e894 cmp r3, 0x3c |
| if (r3 > 0x3c) {
| /* switch table (61 cases) at 0x8e8a0 */
0x0008e898 ldrls pc, [pc, r3, lsl 2] | offset_0 = r3 << 2;
| pc = *((pc + offset_0));
| }
0x0008e89c b 0x8e9d8 | goto label_9;
0x0008e994 sub r1, r6, 1 | r1 = r6 - 1;
| label_23:
0x0008e998 ldrb r0, [r1, 1]! | r0 = *((r1 += 1));
0x0008e99c cmp r0, 0 |
| if (r0 == 0) {
0x0008e9a0 beq 0x8e9d8 | goto label_9;
| }
0x0008e9a4 ldr r2, [r5, 0x24] | r2 = *((r5 + 0x24));
0x0008e9a8 mov r3, 0 | r3 = 0;
0x0008e9ac b 0x8f190 | goto label_39;
0x0008e9b0 ldrb r0, [r4, 9] | r0 = *((r4 + 9));
0x0008e9b4 ldrb r3, [r4, 8] | r3 = *((r4 + 8));
0x0008e9b8 mov r2, sl | r2 = sl;
0x0008e9bc orr r3, r3, r0, lsl 8 | r3 |= (r0 << 8);
0x0008e9c0 ldrb r0, [r4, 0xa] | r0 = *((r4 + 0xa));
0x0008e9c4 ldr r1, [pc, 0xa20] | r1 = "unterminated {";
0x0008e9c8 orr r3, r3, r0, lsl 16 | r3 |= (r0 << 16);
0x0008e9cc ldrb r0, [r4, 0xb] | r0 = *((r4 + 0xb));
0x0008e9d0 orr r0, r3, r0, lsl 24 | r0 = r3 | (r0 << 24);
0x0008e9d4 bl 0x149c0 | fprintf (r0, "unterminated {", r2, r3);
| do {
| label_9:
0x0008e9d8 ldr r5, [r5] | r5 = *(r5);
0x0008e9dc b 0x8e640 | goto label_6;
0x0008e9e0 mov r1, 0xa | r1 = 0xa;
0x0008e9e4 mov r0, r6 | r0 = r6;
0x0008e9e8 bl 0x1517c | r0 = strchr (r0, r1);
0x0008e9ec subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x0008e9f0 beq 0x8ea34 | goto label_40;
| }
0x0008e9f4 mov r3, 0 | r3 = 0;
0x0008e9f8 strb r3, [r7] | *(r7) = r3;
0x0008e9fc ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0008ea00 ldrb r1, [r4, 8] | r1 = *((r4 + 8));
0x0008ea04 ldrb r0, [r4, 0xb] | r0 = *((r4 + 0xb));
0x0008ea08 orr r1, r1, r3, lsl 8 | r1 |= (r3 << 8);
0x0008ea0c ldrb r3, [r4, 0xa] | r3 = *((r4 + 0xa));
0x0008ea10 add r2, sp, 0x36 | r2 += var_36h;
0x0008ea14 orr r1, r1, r3, lsl 16 | r1 |= (r3 << 16);
0x0008ea18 orr r1, r1, r0, lsl 24 | r1 |= (r0 << 24);
0x0008ea1c mov r3, 0xa | r3 = 0xa;
0x0008ea20 mov r0, r6 | r0 = r6;
0x0008ea24 bl 0x8e28c | fcn_0008e28c (r0, r1);
0x0008ea28 mov r3, 0xa | r3 = 0xa;
0x0008ea2c strb r3, [r7] | *(r7) = r3;
0x0008ea30 b 0x8e9d8 |
| } while (1);
| label_40:
0x0008ea34 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0008ea38 ldrb r1, [r4, 8] | r1 = *((r4 + 8));
0x0008ea3c ldrb r0, [r4, 0xb] | r0 = *((r4 + 0xb));
0x0008ea40 orr r1, r1, r3, lsl 8 | r1 |= (r3 << 8);
0x0008ea44 ldrb r3, [r4, 0xa] | r3 = *((r4 + 0xa));
0x0008ea48 add r2, sp, 0x36 | r2 += var_36h;
0x0008ea4c orr r1, r1, r3, lsl 16 | r1 |= (r3 << 16);
0x0008ea50 orr r1, r1, r0, lsl 24 | r1 |= (r0 << 24);
0x0008ea54 mov r3, 0xa | r3 = 0xa;
| label_17:
0x0008ea58 mov r0, r6 | r0 = r6;
0x0008ea5c b 0x8ef18 | goto label_41;
0x0008ea60 mov r1, 0xa | r1 = 0xa;
0x0008ea64 mov r0, r6 | r0 = r6;
0x0008ea68 bl 0x1517c | r0 = strchr (r0, r1);
0x0008ea6c subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 == r0) {
0x0008ea70 beq 0x8ef58 | goto label_18;
| }
0x0008ea74 add r1, r1, 1 | r1++;
0x0008ea78 mov r0, r6 | r0 = r6;
0x0008ea7c bl 0xa410c | fcn_000a410c (r0, r1);
0x0008ea80 b 0x8e624 | goto label_7;
0x0008ea84 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0008ea88 cmp r3, 0 |
0x0008ea8c str r3, [sp, 8] | var_8h = r3;
| if (r3 != 0) {
0x0008ea90 bne 0x8eabc | goto label_42;
| }
0x0008ea94 ldrb r2, [r4, 0x79] | r2 = *((r4 + 0x79));
0x0008ea98 ldrb r3, [r4, 0x78] | r3 = *((r4 + 0x78));
0x0008ea9c orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x0008eaa0 ldrb r2, [r4, 0x7a] | r2 = *((r4 + 0x7a));
0x0008eaa4 orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x0008eaa8 ldrb r2, [r4, 0x7b] | r2 = *((r4 + 0x7b));
0x0008eaac orrs r3, r3, r2, lsl 24 | r3 |= (r2 << 24);
0x0008eab0 str r3, [sp, 8] | var_8h = r3;
| if (r3 == r3) {
0x0008eab4 ldreq r0, [pc, 0x934] | r0 = "no_previous_regexp";
| goto label_43;
| }
| if (r3 == r3) {
| label_43:
0x0008eab8 beq 0x8e7f4 | goto label_8;
| }
| label_42:
0x0008eabc ldr r3, [sp, 8] | r3 = var_8h;
0x0008eac0 mov r7, 0 | r7 = 0;
0x0008eac4 strb r3, [r4, 0x78] | *((r4 + 0x78)) = r3;
0x0008eac8 lsr r3, r3, 8 | r3 >>= 8;
0x0008eacc strb r3, [r4, 0x79] | *((r4 + 0x79)) = r3;
0x0008ead0 ldr r3, [sp, 8] | r3 = var_8h;
0x0008ead4 str r7, [sp] | *(sp) = r7;
0x0008ead8 lsr r3, r3, 0x10 | r3 >>= 0x10;
0x0008eadc strb r3, [r4, 0x7a] | *((r4 + 0x7a)) = r3;
0x0008eae0 ldr r3, [sp, 8] | r3 = var_8h;
0x0008eae4 mov r2, 0xa | r2 = 0xa;
0x0008eae8 lsr r3, r3, 0x18 | r3 >>= 0x18;
0x0008eaec strb r3, [r4, 0x7b] | *((r4 + 0x7b)) = r3;
0x0008eaf0 mov r1, r6 | r1 = r6;
0x0008eaf4 ldr r3, [pc, 0x8f8] | r3 = "no_previous_regexp";
0x0008eaf8 ldr r0, [sp, 8] | r0 = var_8h;
0x0008eafc bl 0x14e34 | r0 = regexec ();
0x0008eb00 cmp r0, 1 |
| if (r0 == 1) {
0x0008eb04 beq 0x8e9d8 | goto label_9;
| }
0x0008eb08 mov r0, 0x40 | r0 = 0x40;
0x0008eb0c bl 0x18968 | fcn_00018968 (r0);
0x0008eb10 strb r7, [r4, 0x95] | *((r4 + 0x95)) = r7;
0x0008eb14 strb r7, [r4, 0x96] | *((r4 + 0x96)) = r7;
0x0008eb18 strb r7, [r4, 0x97] | *((r4 + 0x97)) = r7;
0x0008eb1c strb r7, [r4, 0x90] | *((r4 + 0x90)) = r7;
0x0008eb20 strb r7, [r4, 0x91] | *((r4 + 0x91)) = r7;
0x0008eb24 strb r7, [r4, 0x92] | *((r4 + 0x92)) = r7;
0x0008eb28 strb r7, [r4, 0x93] | *((r4 + 0x93)) = r7;
0x0008eb2c str r7, [sp, 0x18] | var_18h = r7;
0x0008eb30 mov r7, r6 | r7 = r6;
0x0008eb34 lsr r3, r0, 8 | r3 = r0 >> 8;
0x0008eb38 strb r3, [r4, 0x8d] | *((r4 + 0x8d)) = r3;
0x0008eb3c lsr r3, r0, 0x10 | r3 = r0 >> 0x10;
0x0008eb40 strb r3, [r4, 0x8e] | *((r4 + 0x8e)) = r3;
0x0008eb44 mov r3, 0x40 | r3 = 0x40;
0x0008eb48 strb r3, [r4, 0x94] | *((r4 + 0x94)) = r3;
0x0008eb4c mov r3, 1 | r3 = 1;
0x0008eb50 strb r0, [r4, 0x8c] | *((r4 + 0x8c)) = r0;
0x0008eb54 str r3, [sp, 0x20] | var_20h = r3;
0x0008eb58 lsr r0, r0, 0x18 | r0 >>= 0x18;
0x0008eb5c mov r3, 0 | r3 = 0;
0x0008eb60 strb r0, [r4, 0x8f] | *((r4 + 0x8f)) = r0;
0x0008eb64 str r3, [sp, 0x1c] | var_1ch = r3;
| label_10:
0x0008eb68 ldrb r2, [r4, 0x29] | r2 = *((r4 + 0x29));
0x0008eb6c ldrb r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0008eb70 ldrb r8, [r4, 0x2c] | r8 = *((r4 + 0x2c));
0x0008eb74 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x0008eb78 ldrb r2, [r4, 0x2a] | r2 = *((r4 + 0x2a));
0x0008eb7c orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x0008eb80 ldrb r2, [r4, 0x2b] | r2 = *((r4 + 0x2b));
0x0008eb84 orr r3, r3, r2, lsl 24 | r3 |= (r2 << 24);
0x0008eb88 str r3, [sp, 0x14] | var_14h = r3;
0x0008eb8c ldrb r3, [r4, 0x2d] | r3 = *((r4 + 0x2d));
0x0008eb90 orr r8, r8, r3, lsl 8 | r8 |= (r3 << 8);
0x0008eb94 ldrb r3, [r4, 0x2e] | r3 = *((r4 + 0x2e));
0x0008eb98 orr r8, r8, r3, lsl 16 | r8 |= (r3 << 16);
0x0008eb9c ldrb r3, [r4, 0x2f] | r3 = *((r4 + 0x2f));
0x0008eba0 orr r8, r8, r3, lsl 24 | r8 |= (r3 << 24);
0x0008eba4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0008eba8 add r3, r3, 1 | r3++;
0x0008ebac str r3, [sp, 0x1c] | var_1ch = r3;
0x0008ebb0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0008ebb4 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0008ebb8 cmp r3, 0 |
0x0008ebbc cmpne r2, r3 | __asm ("cmpne r2, r3");
| if (r3 != 0) {
0x0008ebc0 moveq r3, r7 | r3 = r7;
| }
| if (r3 == 0) {
0x0008ebc4 subne r3, r7, 1 | r3 = r7 - 1;
| }
| if (r3 != 0) {
0x0008ebc8 bne 0x8ecf4 | goto label_44;
| }
| label_12:
0x0008ebcc ldr r1, [sp, 0x14] | r1 = var_14h;
0x0008ebd0 sub r2, r3, r7 | r2 = r3 - r7;
0x0008ebd4 cmp r1, r2 |
| if (r1 > r2) {
0x0008ebd8 bgt 0x8ed70 | goto label_45;
| }
0x0008ebdc mov r3, r1 | r3 = r1;
0x0008ebe0 orrs r3, r3, r8 | r3 |= r8;
0x0008ebe4 ldr r3, [sp, 0x20] | r3 = var_20h;
| if (r3 == r3) {
0x0008ebe8 movne r3, 1 | r3 = 1;
| }
0x0008ebec cmp r3, 0 |
0x0008ebf0 str r3, [sp, 0x20] | var_20h = r3;
| if (r3 == 0) {
0x0008ebf4 ldrne r3, [r5, 0x24] | r3 = *((r5 + 0x24));
| }
| if (r3 == 0) {
0x0008ebf8 movne r1, 0 | r1 = 0;
| }
| if (r3 == 0) {
0x0008ebfc strne r3, [sp, 0x10] | var_10h = r3;
| }
| if (r3 != 0) {
0x0008ec00 bne 0x8eddc | goto label_46;
| }
| label_13:
0x0008ec04 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0008ec08 ldrb r0, [r7, r8] | r0 = *((r7 + r8));
0x0008ec0c cmp r3, r8 |
| if (r3 != r8) {
0x0008ec10 moveq r3, 1 | r3 = 1;
| }
| if (r3 == r8) {
0x0008ec14 movne r3, 0 | r3 = 0;
| }
0x0008ec18 str r3, [sp, 0x20] | var_20h = r3;
| if (r3 == r8) {
0x0008ec1c bne 0x8ec38 |
0x0008ec20 cmp r0, 0 |
| if (r0 != 0) {
0x0008ec24 moveq r3, 1 | r3 = 1;
| }
| if (r0 != 0) {
0x0008ec28 streq r3, [sp, 0x18] | var_18h = r3;
| }
| if (r0 == 0) {
0x0008ec2c beq 0x8ec38 | goto label_47;
| }
0x0008ec30 bl 0x8e160 | fcn_0008e160 (r0);
0x0008ec34 add r8, r8, 1 | r8++;
| }
| label_47:
0x0008ec38 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0008ec3c add r7, r7, r8 | r7 += r8;
0x0008ec40 cmp r3, 0 |
| if (r3 == 0) {
0x0008ec44 beq 0x8ed28 | goto label_48;
| }
| do {
| label_11:
0x0008ec48 ldrb r8, [r7], 1 | r8 = *(r7);
| r7++;
0x0008ec4c mov r0, r8 | r0 = r8;
0x0008ec50 bl 0x8e160 | fcn_0008e160 (r0);
0x0008ec54 cmp r8, 0 |
0x0008ec58 bne 0x8ec48 |
| } while (r8 != 0);
| label_26:
0x0008ec5c mov r0, r6 | r0 = r6;
0x0008ec60 bl 0x152a8 | free (r0);
0x0008ec64 ldrb r3, [r4, 0x8d] | r3 = *((r4 + 0x8d));
0x0008ec68 ldrb r6, [r4, 0x8c] | r6 = *((r4 + 0x8c));
0x0008ec6c orr r6, r6, r3, lsl 8 | r6 |= (r3 << 8);
0x0008ec70 ldrb r3, [r4, 0x8e] | r3 = *((r4 + 0x8e));
0x0008ec74 orr r6, r6, r3, lsl 16 | r6 |= (r3 << 16);
0x0008ec78 ldrb r3, [r4, 0x8f] | r3 = *((r4 + 0x8f));
0x0008ec7c orr r6, r6, r3, lsl 24 | r6 |= (r3 << 24);
0x0008ec80 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0008ec84 cmp r3, 0 |
| if (r3 == 0) {
0x0008ec88 beq 0x8e9d8 | goto label_9;
| }
0x0008ec8c ldrb r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0008ec90 tst r3, 4 |
| if ((r3 & 4) != 0) {
0x0008ec94 beq 0x8ecc4 |
0x0008ec98 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0008ec9c ldrb r1, [r4, 8] | r1 = *((r4 + 8));
0x0008eca0 ldrb r0, [r4, 0xb] | r0 = *((r4 + 0xb));
0x0008eca4 orr r1, r1, r3, lsl 8 | r1 |= (r3 << 8);
0x0008eca8 ldrb r3, [r4, 0xa] | r3 = *((r4 + 0xa));
0x0008ecac add r2, sp, 0x36 | r2 += var_36h;
0x0008ecb0 orr r1, r1, r3, lsl 16 | r1 |= (r3 << 16);
0x0008ecb4 orr r1, r1, r0, lsl 24 | r1 |= (r0 << 24);
0x0008ecb8 mov r3, fp | r3 = fp;
0x0008ecbc mov r0, r6 | r0 = r6;
0x0008ecc0 bl 0x8e28c | fcn_0008e28c (r0, r1);
| }
0x0008ecc4 ldr r1, [r5, 0x20] | r1 = *((r5 + 0x20));
0x0008ecc8 cmp r1, 0 |
| if (r1 != 0) {
0x0008eccc beq 0x8ece0 |
0x0008ecd0 mov r3, fp | r3 = fp;
0x0008ecd4 add r2, r5, 0x2d | r2 = r5 + 0x2d;
0x0008ecd8 mov r0, r6 | r0 = r6;
0x0008ecdc bl 0x8e28c | fcn_0008e28c (r0, r1);
| }
0x0008ece0 mov r3, 1 | r3 = 1;
0x0008ece4 b 0x8f038 | goto label_49;
| do {
0x0008ece8 str r3, [sp, 0x24] | var_24h = r3;
0x0008ecec bl 0x8e160 | fcn_0008e160 (r0);
0x0008ecf0 ldr r3, [sp, 0x24] | r3 = var_24h;
| label_44:
0x0008ecf4 ldrb r0, [r3, 1]! | r0 = *((r3 += 1));
0x0008ecf8 sub r2, r3, r7 | r2 = r3 - r7;
0x0008ecfc cmp r2, r8 |
0x0008ed00 blt 0x8ece8 |
| } while (r2 < r8);
0x0008ed04 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0008ed08 cmp r8, 0 |
| if (r8 < 0) {
0x0008ed0c addge r7, r7, r8 | r7 += r8;
| }
0x0008ed10 cmp r3, r8 |
| if (r3 == r8) {
0x0008ed14 bne 0x8ed28 |
0x0008ed18 cmp r0, 0 |
| if (r0 == 0) {
0x0008ed1c beq 0x8ed28 | goto label_48;
| }
0x0008ed20 add r7, r7, 1 | r7++;
0x0008ed24 bl 0x8e160 | fcn_0008e160 (r0);
| }
| label_48:
0x0008ed28 ldrb r0, [r7] | r0 = *(r7);
0x0008ed2c cmp r0, 0 |
| if (r0 == 0) {
0x0008ed30 bne 0x8ed48 |
0x0008ed34 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0008ed38 cmp r3, 0 |
| if (r3 != 0) {
0x0008ed3c bne 0x8f3d4 | goto label_50;
| }
0x0008ed40 mov r3, 1 | r3 = 1;
0x0008ed44 str r3, [sp, 0x18] | var_18h = r3;
| }
0x0008ed48 mov r3, 1 | r3 = 1;
0x0008ed4c str r3, [sp] | *(sp) = r3;
0x0008ed50 mov r2, 0xa | r2 = 0xa;
0x0008ed54 ldr r3, [pc, 0x698] | r3 = "no_previous_regexp";
0x0008ed58 mov r1, r7 | r1 = r7;
0x0008ed5c ldr r0, [sp, 8] | r0 = var_8h;
0x0008ed60 bl 0x14e34 | r0 = regexec ();
0x0008ed64 cmp r0, 1 |
| if (r0 != 1) {
0x0008ed68 bne 0x8eb68 | goto label_10;
| }
0x0008ed6c b 0x8ec48 | goto label_11;
| label_45:
0x0008ed70 ldrb r0, [r3], 1 | r0 = *(r3);
| r3++;
0x0008ed74 str r3, [sp, 0x24] | var_24h = r3;
0x0008ed78 bl 0x8e160 | fcn_0008e160 (r0);
0x0008ed7c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008ed80 b 0x8ebcc | goto label_12;
| do {
0x0008ed84 cmp r0, 0x5c |
0x0008ed88 add r2, r1, 1 | r2 = r1 + 1;
| if (r0 != 0x5c) {
0x0008ed8c bne 0x8ee54 | goto label_51;
| }
0x0008ed90 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0008ed94 ldrb r0, [r3, r2] | r0 = *((r3 + r2));
0x0008ed98 sub r3, r0, 0x30 | r3 = r0 - 0x30;
0x0008ed9c cmp r3, 9 |
| if (r3 > 9) {
0x0008eda0 bhi 0x8ee44 | goto label_52;
| }
0x0008eda4 sub r0, r0, 0x2b | r0 -= 0x2b;
0x0008eda8 ldrb r3, [r4, r0, lsl 3] | offset_1 = r0 << 3;
| r3 = *((r4 + offset_1));
0x0008edac add r0, r4, r0, lsl 3 | r0 = r4 + (r0 << 3);
0x0008edb0 ldrb r1, [r0, 1] | r1 = *((r0 + 1));
0x0008edb4 orr r3, r3, r1, lsl 8 | r3 |= (r1 << 8);
0x0008edb8 ldrb r1, [r0, 2] | r1 = *((r0 + 2));
0x0008edbc orr r3, r3, r1, lsl 16 | r3 |= (r1 << 16);
0x0008edc0 ldrb r1, [r0, 3] | r1 = *((r0 + 3));
0x0008edc4 orr r3, r3, r1, lsl 24 | r3 |= (r1 << 24);
0x0008edc8 cmn r3, 1 |
| if (r3 == 1) {
0x0008edcc addne r3, r7, r3 | r3 = r7 + r3;
| }
| if (r3 == 1) {
0x0008edd0 movne r1, r0 | r1 = r0;
| }
| if (r3 != 1) {
0x0008edd4 bne 0x8ee18 | goto label_53;
| }
| label_14:
0x0008edd8 add r1, r2, 1 | r1 = r2 + 1;
| label_46:
0x0008eddc ldr r3, [sp, 0x10] | r3 = var_10h;
0x0008ede0 ldrb r0, [r3, r1] | r0 = *((r3 + r1));
0x0008ede4 cmp r0, 0 |
0x0008ede8 bne 0x8ed84 |
| } while (r0 != 0);
0x0008edec ldr r3, [sp, 0x20] | r3 = var_20h;
0x0008edf0 str r3, [sp, 0x10] | var_10h = r3;
0x0008edf4 b 0x8ec04 | goto label_13;
| do {
0x0008edf8 ldrb r0, [r3], 1 | r0 = *(r3);
| r3++;
0x0008edfc str r1, [sp, 0x2c] | var_2ch = r1;
0x0008ee00 str r2, [sp, 0x28] | var_28h = r2;
0x0008ee04 str r3, [sp, 0x24] | var_24h = r3;
0x0008ee08 bl 0x8e160 | fcn_0008e160 (r0);
0x0008ee0c ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0008ee10 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0008ee14 ldr r3, [sp, 0x24] | r3 = var_24h;
| label_53:
0x0008ee18 ldrb lr, [r1, 5] |
0x0008ee1c ldrb r0, [r1, 4] | r0 = *((r1 + 4));
0x0008ee20 sub ip, r3, r7 |
0x0008ee24 orr r0, r0, lr, lsl 8 | r0 |= (lr << 8);
0x0008ee28 ldrb lr, [r1, 6] |
0x0008ee2c orr r0, r0, lr, lsl 16 | r0 |= (lr << 16);
0x0008ee30 ldrb lr, [r1, 7] |
0x0008ee34 orr r0, r0, lr, lsl 24 | r0 |= (lr << 24);
0x0008ee38 cmp ip, r0 |
0x0008ee3c blt 0x8edf8 |
| } while (ip < r0);
0x0008ee40 b 0x8edd8 | goto label_14;
| label_52:
0x0008ee44 str r2, [sp, 0x24] | var_24h = r2;
0x0008ee48 bl 0x8e160 | fcn_0008e160 (r0);
0x0008ee4c ldr r2, [sp, 0x24] | r2 = var_24h;
0x0008ee50 b 0x8edd8 | goto label_14;
| label_51:
0x0008ee54 cmp r0, 0x26 |
| if (r0 != 0x26) {
0x0008ee58 bne 0x8eec8 | goto label_54;
| }
0x0008ee5c ldrb r2, [r4, 0x29] | r2 = *((r4 + 0x29));
0x0008ee60 ldrb r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0008ee64 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x0008ee68 ldrb r2, [r4, 0x2a] | r2 = *((r4 + 0x2a));
0x0008ee6c orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x0008ee70 ldrb r2, [r4, 0x2b] | r2 = *((r4 + 0x2b));
0x0008ee74 orr r3, r3, r2, lsl 24 | r3 |= (r2 << 24);
0x0008ee78 add r3, r7, r3 | r3 = r7 + r3;
| do {
0x0008ee7c ldrb ip, [r4, 0x2d] | ip = *((r4 + 0x2d));
0x0008ee80 ldrb r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x0008ee84 sub r0, r3, r7 | r0 = r3 - r7;
0x0008ee88 orr r2, r2, ip, lsl 8 | r2 |= (ip << 8);
0x0008ee8c ldrb ip, [r4, 0x2e] | ip = *((r4 + 0x2e));
0x0008ee90 orr r2, r2, ip, lsl 16 | r2 |= (ip << 16);
0x0008ee94 ldrb ip, [r4, 0x2f] | ip = *((r4 + 0x2f));
0x0008ee98 orr r2, r2, ip, lsl 24 | r2 |= (ip << 24);
0x0008ee9c cmp r0, r2 |
| if (r0 >= r2) {
0x0008eea0 blt 0x8eeac |
| label_15:
0x0008eea4 mov r2, r1 | r2 = r1;
0x0008eea8 b 0x8edd8 | goto label_14;
| }
0x0008eeac ldrb r0, [r3], 1 | r0 = *(r3);
| r3++;
0x0008eeb0 str r1, [sp, 0x28] | var_28h = r1;
0x0008eeb4 str r3, [sp, 0x24] | var_24h = r3;
0x0008eeb8 bl 0x8e160 | fcn_0008e160 (r0);
0x0008eebc ldr r1, [sp, 0x28] | r1 = var_28h;
0x0008eec0 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0008eec4 b 0x8ee7c |
| } while (1);
| label_54:
0x0008eec8 str r1, [sp, 0x24] | var_24h = r1;
0x0008eecc bl 0x8e160 | fcn_0008e160 (r0);
0x0008eed0 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0008eed4 b 0x8eea4 | goto label_15;
0x0008eed8 ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x0008eedc bl 0x189d4 | r0 = fcn_000189d4 (r0);
0x0008eee0 mov r1, r0 | r1 = r0;
0x0008eee4 ldr r0, [pc, 0x50c] | r0 = *(0x8f3f4);
0x0008eee8 bl 0x9fe38 | fcn_0009fe38 (r0, r1);
0x0008eeec b 0x8e9d8 | goto label_9;
0x0008eef0 ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0008eef4 ldrb r1, [r4, 8] | r1 = *((r4 + 8));
0x0008eef8 ldrb r0, [r4, 0xb] | r0 = *((r4 + 0xb));
0x0008eefc orr r1, r1, r3, lsl 8 | r1 |= (r3 << 8);
0x0008ef00 ldrb r3, [r4, 0xa] | r3 = *((r4 + 0xa));
0x0008ef04 add r2, sp, 0x36 | r2 += var_36h;
0x0008ef08 orr r1, r1, r3, lsl 16 | r1 |= (r3 << 16);
0x0008ef0c orr r1, r1, r0, lsl 24 | r1 |= (r0 << 24);
0x0008ef10 ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x0008ef14 mov r3, 0xa | r3 = 0xa;
| label_41:
0x0008ef18 bl 0x8e28c | fcn_0008e28c (r0, r1);
0x0008ef1c b 0x8e9d8 | goto label_9;
0x0008ef20 ldrb r3, [r5, 0x2c] | r3 = *((r5 + 0x2c));
0x0008ef24 tst r3, 2 |
| if ((r3 & 2) == 0) {
0x0008ef28 bne 0x8ef58 |
0x0008ef2c ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0008ef30 ldrb r1, [r4, 8] | r1 = *((r4 + 8));
0x0008ef34 ldrb r0, [r4, 0xb] | r0 = *((r4 + 0xb));
0x0008ef38 orr r1, r1, r3, lsl 8 | r1 |= (r3 << 8);
0x0008ef3c ldrb r3, [r4, 0xa] | r3 = *((r4 + 0xa));
0x0008ef40 add r2, sp, 0x36 | r2 += var_36h;
0x0008ef44 orr r1, r1, r3, lsl 16 | r1 |= (r3 << 16);
0x0008ef48 orr r1, r1, r0, lsl 24 | r1 |= (r0 << 24);
0x0008ef4c ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x0008ef50 mov r3, 0xa | r3 = 0xa;
| label_19:
0x0008ef54 bl 0x8e28c | fcn_0008e28c (r0, r1);
| }
| label_18:
0x0008ef58 add r0, sp, 0x36 | r0 += var_36h;
0x0008ef5c bl 0x8e394 | fcn_0008e394 (r0);
0x0008ef60 mov r0, r6 | r0 = r6;
0x0008ef64 bl 0x152a8 | free (r0);
0x0008ef68 mov r6, sb | r6 = sb;
0x0008ef6c b 0x8e5fc | goto label_16;
0x0008ef70 ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x0008ef74 bl 0xa5630 | r0 = fcn_000a5630 ();
0x0008ef78 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x0008ef7c ldrne r8, [pc, 0x474] | r8 = *(0x0008f3f8);
| goto label_55;
| }
| if (r7 == r0) {
| label_55:
0x0008ef80 beq 0x8e9d8 | goto label_9;
| }
| do {
0x0008ef84 mov r0, r7 | r0 = r7;
0x0008ef88 bl 0x9b0b4 | r0 = fcn_0009b0b4 ();
0x0008ef8c subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 == r0) {
0x0008ef90 bne 0x8efa0 |
0x0008ef94 mov r0, r7 | r0 = r7;
0x0008ef98 bl 0x14dec | fclose (r0);
0x0008ef9c b 0x8e9d8 | goto label_9;
| }
0x0008efa0 mov r0, r8 | r0 = r8;
0x0008efa4 bl 0x9fe38 | fcn_0009fe38 (r0, r1);
0x0008efa8 b 0x8ef84 |
| } while (1);
0x0008efac mov r3, fp | r3 = fp;
0x0008efb0 add r2, r5, 0x2d | r2 = r5 + 0x2d;
0x0008efb4 ldr r1, [r5, 0x20] | r1 = *((r5 + 0x20));
0x0008efb8 b 0x8ea58 | goto label_17;
0x0008efbc ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0008efc0 ldrb r3, [r4] | r3 = *(r4);
0x0008efc4 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x0008efc8 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x0008efcc orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x0008efd0 ldrb r2, [r4, 3] | r2 = *((r4 + 3));
0x0008efd4 orrs r3, r3, r2, lsl 24 | r3 |= (r2 << 24);
| if (r3 == r3) {
0x0008efd8 bne 0x8f008 |
0x0008efdc ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0008efe0 ldrb r1, [r4, 8] | r1 = *((r4 + 8));
0x0008efe4 ldrb r0, [r4, 0xb] | r0 = *((r4 + 0xb));
0x0008efe8 orr r1, r1, r3, lsl 8 | r1 |= (r3 << 8);
0x0008efec ldrb r3, [r4, 0xa] | r3 = *((r4 + 0xa));
0x0008eff0 add r2, sp, 0x36 | r2 += var_36h;
0x0008eff4 orr r1, r1, r3, lsl 16 | r1 |= (r3 << 16);
0x0008eff8 orr r1, r1, r0, lsl 24 | r1 |= (r0 << 24);
0x0008effc mov r3, fp | r3 = fp;
0x0008f000 mov r0, r6 | r0 = r6;
0x0008f004 bl 0x8e28c | fcn_0008e28c (r0, r1);
| }
0x0008f008 cmp sb, 0 |
| if (sb == 0) {
0x0008f00c beq 0x8ef58 | goto label_18;
| }
0x0008f010 mov r0, r6 | r0 = r6;
0x0008f014 bl 0x152a8 | free (r0);
0x0008f018 add r0, sp, 0x38 | r0 += var_38h;
0x0008f01c ldrb fp, [r0, -1]! | fp = *((r0 -= 1));
0x0008f020 add r1, sp, 0x36 | r1 += var_36h;
0x0008f024 bl 0x8e3ec | fcn_0008e3ec (r0, r1);
0x0008f028 mov r6, sb | r6 = sb;
0x0008f02c add sl, sl, 1 | sl++;
0x0008f030 mov r3, 0 | r3 = 0;
0x0008f034 mov sb, r0 | sb = r0;
| label_49:
0x0008f038 str r3, [sp, 0xc] | var_ch = r3;
0x0008f03c b 0x8e9d8 | goto label_9;
0x0008f040 mov r0, sb | r0 = sb;
0x0008f044 bl 0x152a8 | free (r0);
0x0008f048 mov sb, 0 | sb = 0;
| label_20:
0x0008f04c ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0008f050 ldrb r3, [r4] | r3 = *(r4);
0x0008f054 orr r3, r3, r2, lsl 8 | r3 |= (r2 << 8);
0x0008f058 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x0008f05c orr r3, r3, r2, lsl 16 | r3 |= (r2 << 16);
0x0008f060 ldrb r2, [r4, 3] | r2 = *((r4 + 3));
0x0008f064 orrs r3, r3, r2, lsl 24 | r3 |= (r2 << 24);
| if (r3 != r3) {
0x0008f068 bne 0x8ef58 | goto label_18;
| }
0x0008f06c ldrb r3, [r4, 9] | r3 = *((r4 + 9));
0x0008f070 ldrb r1, [r4, 8] | r1 = *((r4 + 8));
0x0008f074 ldrb r0, [r4, 0xb] | r0 = *((r4 + 0xb));
0x0008f078 orr r1, r1, r3, lsl 8 | r1 |= (r3 << 8);
0x0008f07c ldrb r3, [r4, 0xa] | r3 = *((r4 + 0xa));
0x0008f080 add r2, sp, 0x36 | r2 += var_36h;
0x0008f084 orr r1, r1, r3, lsl 16 | r1 |= (r3 << 16);
0x0008f088 orr r1, r1, r0, lsl 24 | r1 |= (r0 << 24);
0x0008f08c mov r3, fp | r3 = fp;
0x0008f090 mov r0, r6 | r0 = r6;
0x0008f094 b 0x8ef54 | goto label_19;
0x0008f098 cmp sb, 0 |
| if (sb == 0) {
0x0008f09c beq 0x8f04c | goto label_20;
| }
0x0008f0a0 mov r0, r6 | r0 = r6;
0x0008f0a4 bl 0x1514c | strlen (r0);
0x0008f0a8 add sl, sl, 1 | sl++;
0x0008f0ac mov r7, r0 | r7 = r0;
0x0008f0b0 mov r0, sb | r0 = sb;
0x0008f0b4 bl 0x1514c | r0 = strlen (r0);
0x0008f0b8 add r1, r7, r0 | r1 = r7 + r0;
0x0008f0bc add r1, r1, 2 | r1 += 2;
0x0008f0c0 mov r0, r6 | r0 = r6;
0x0008f0c4 bl 0x18990 | fcn_00018990 (r0, r1);
0x0008f0c8 mov r3, 0xa | r3 = 0xa;
0x0008f0cc mov r1, sb | r1 = sb;
0x0008f0d0 strb r3, [r0, r7] | *((r0 + r7)) = r3;
0x0008f0d4 mov r6, r0 | r6 = r0;
0x0008f0d8 add r0, r7, 1 | r0 = r7 + 1;
0x0008f0dc add r0, r6, r0 | r0 = r6 + r0;
0x0008f0e0 bl 0x142f4 | strcpy (r0, r1);
0x0008f0e4 add r1, sp, 0x36 | r1 += var_36h;
0x0008f0e8 add r0, sp, 0x37 | r0 += ptr;
0x0008f0ec ldrb fp, [sp, 0x37] | fp = ptr;
0x0008f0f0 bl 0x8e3ec | r0 = fcn_0008e3ec (r0, r1);
0x0008f0f4 mov sb, r0 | sb = r0;
0x0008f0f8 b 0x8e9d8 | goto label_9;
0x0008f0fc ldr r3, [sp, 0xc] | r3 = var_ch;
0x0008f100 cmp r3, 0 |
| if (r3 == 0) {
0x0008f104 movne r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x0008f108 strne r3, [sp, 0xc] | var_ch = r3;
| goto label_56;
| }
| if (r3 == 0) {
| label_56:
0x0008f10c beq 0x8e9d8 | goto label_9;
| }
| label_21:
0x0008f110 ldr r7, [r5, 0x24] | r7 = *((r5 + 0x24));
0x0008f114 cmp r7, 0 |
| if (r7 == 0) {
0x0008f118 beq 0x8f04c | goto label_20;
| }
0x0008f11c ldrb r3, [r4, 0x7d] | r3 = *((r4 + 0x7d));
0x0008f120 ldrb r5, [r4, 0x7c] | r5 = *((r4 + 0x7c));
0x0008f124 orr r5, r5, r3, lsl 8 | r5 |= (r3 << 8);
0x0008f128 ldrb r3, [r4, 0x7e] | r3 = *((r4 + 0x7e));
0x0008f12c orr r5, r5, r3, lsl 16 | r5 |= (r3 << 16);
0x0008f130 ldrb r3, [r4, 0x7f] | r3 = *((r4 + 0x7f));
0x0008f134 orr r5, r5, r3, lsl 24 | r5 |= (r3 << 24);
| label_22:
0x0008f138 cmp r5, 0 |
| if (r5 != 0) {
0x0008f13c bne 0x8f15c | goto label_57;
| }
0x0008f140 mov r1, r7 | r1 = r7;
0x0008f144 ldr r0, [pc, 0x2b0] | r0 = *(0x8f3f8);
0x0008f148 bl 0x18254 | fcn_00018254 ();
0x0008f14c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0008f150 cmp r3, 0 |
| if (r3 != 0) {
0x0008f154 bne 0x8e9d8 | goto label_9;
| }
0x0008f158 b 0x8f110 | goto label_21;
| label_57:
0x0008f15c ldrb r3, [r5, 0x2e] | r3 = *((r5 + 0x2e));
0x0008f160 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x0008f164 bne 0x8f184 | goto label_58;
| }
0x0008f168 ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x0008f16c cmp r0, 0 |
| if (r0 == 0) {
0x0008f170 beq 0x8f184 | goto label_58;
| }
0x0008f174 mov r1, r7 | r1 = r7;
0x0008f178 bl 0x14ed0 | r0 = strcmp (r0, r1);
0x0008f17c cmp r0, 0 |
| if (r0 == 0) {
0x0008f180 beq 0x8e9d8 | goto label_9;
| }
| label_58:
0x0008f184 ldr r5, [r5] | r5 = *(r5);
0x0008f188 b 0x8f138 | goto label_22;
| label_24:
0x0008f18c add r3, r3, 2 | r3 += 2;
| label_39:
0x0008f190 ldrb ip, [r2, r3] | ip = *((r2 + r3));
0x0008f194 cmp ip, 0 |
| if (ip == 0) {
0x0008f198 beq 0x8e998 | goto label_23;
| }
0x0008f19c cmp ip, r0 |
| if (ip != r0) {
0x0008f1a0 bne 0x8f18c | goto label_24;
| }
0x0008f1a4 add r3, r2, r3 | r3 = r2 + r3;
0x0008f1a8 ldrb r3, [r3, 1] | r3 = *((r3 + 1));
0x0008f1ac strb r3, [r1] | *(r1) = r3;
0x0008f1b0 b 0x8e998 | goto label_23;
0x0008f1b4 mov r0, r6 | r0 = r6;
0x0008f1b8 bl 0x152a8 | free (r0);
0x0008f1bc ldrb r3, [r4, 0x11] | r3 = *((r4 + 0x11));
0x0008f1c0 ldrb r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0008f1c4 orr r0, r0, r3, lsl 8 | r0 |= (r3 << 8);
0x0008f1c8 ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
0x0008f1cc orr r0, r0, r3, lsl 16 | r0 |= (r3 << 16);
0x0008f1d0 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0008f1d4 orrs r0, r0, r3, lsl 24 | r0 |= (r3 << 24);
0x0008f1d8 ldr r3, [pc, 0x220] | r3 = "can't find label for jump to '%s';
| if (r0 != r0) {
0x0008f1dc moveq r0, r3 | r0 = r3;
| }
0x0008f1e0 bl 0x189d4 | r0 = fcn_000189d4 (r0);
0x0008f1e4 mov r6, r0 | r6 = r0;
0x0008f1e8 b 0x8e9d8 | goto label_9;
0x0008f1ec cmp r6, 0 |
| if (r6 != 0) {
0x0008f1f0 moveq r7, 2 | r7 = 2;
| }
| if (r6 != 0) {
0x0008f1f4 beq 0x8f204 |
0x0008f1f8 mov r0, r6 | r0 = r6;
0x0008f1fc bl 0x1514c | r0 = strlen (r0);
0x0008f200 add r7, r0, 2 | r7 = r0 + 2;
| }
0x0008f204 ldrb r1, [r4, 0x11] | r1 = *((r4 + 0x11));
0x0008f208 ldrb r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0008f20c orr r0, r0, r1, lsl 8 | r0 |= (r1 << 8);
0x0008f210 ldrb r1, [r4, 0x12] | r1 = *((r4 + 0x12));
0x0008f214 orr r0, r0, r1, lsl 16 | r0 |= (r1 << 16);
0x0008f218 ldrb r1, [r4, 0x13] | r1 = *((r4 + 0x13));
0x0008f21c orrs r0, r0, r1, lsl 24 | r0 |= (r1 << 24);
| if (r0 != r0) {
0x0008f220 beq 0x8f228 |
0x0008f224 bl 0x1514c | r0 = strlen (r0);
| }
0x0008f228 add r1, r7, r0 | r1 = r7 + r0;
0x0008f22c mov r0, r6 | r0 = r6;
0x0008f230 bl 0x18990 | fcn_00018990 (r0, r1);
0x0008f234 cmp r7, 2 |
| if (r7 != 2) {
0x0008f238 moveq r3, 0 | r3 = 0;
| }
0x0008f23c ldr r1, [pc, 0x1c0] | r1 = *(0x8f400);
| if (r7 != 2) {
0x0008f240 strbeq r3, [r0] | *(r0) = r3;
| }
0x0008f244 mov r6, r0 | r6 = r0;
0x0008f248 bl 0x149f0 | strcat (r0, r1)
0x0008f24c ldrb r3, [r4, 0x11] | r3 = *((r4 + 0x11));
0x0008f250 ldrb r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x0008f254 orr r1, r1, r3, lsl 8 | r1 |= (r3 << 8);
0x0008f258 ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
0x0008f25c orr r1, r1, r3, lsl 16 | r1 |= (r3 << 16);
0x0008f260 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0008f264 orrs r1, r1, r3, lsl 24 | r1 |= (r3 << 24);
| if (r1 != r1) {
0x0008f268 beq 0x8f274 |
0x0008f26c mov r0, r6 | r0 = r6;
0x0008f270 bl 0x149f0 | strcat (r0, r1)
| }
| label_25:
0x0008f274 mov fp, 0xa |
0x0008f278 b 0x8e9d8 | goto label_9;
0x0008f27c ldrb r0, [r4, 0x11] | r0 = *((r4 + 0x11));
0x0008f280 ldrb r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0008f284 orr r3, r3, r0, lsl 8 | r3 |= (r0 << 8);
0x0008f288 ldrb r0, [r4, 0x12] | r0 = *((r4 + 0x12));
0x0008f28c orr r3, r3, r0, lsl 16 | r3 |= (r0 << 16);
0x0008f290 ldrb r0, [r4, 0x13] | r0 = *((r4 + 0x13));
0x0008f294 orr r0, r3, r0, lsl 24 | r0 = r3 | (r0 << 24);
0x0008f298 bl 0x152a8 | free (r0);
0x0008f29c mov r0, r6 | r0 = r6;
0x0008f2a0 bl 0x189d4 | r0 = fcn_000189d4 (r0);
0x0008f2a4 lsr r3, r0, 8 | r3 = r0 >> 8;
0x0008f2a8 strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x0008f2ac strb r3, [r4, 0x11] | *((r4 + 0x11)) = r3;
0x0008f2b0 lsr r3, r0, 0x10 | r3 = r0 >> 0x10;
0x0008f2b4 lsr r0, r0, 0x18 | r0 >>= 0x18;
0x0008f2b8 strb r3, [r4, 0x12] | *((r4 + 0x12)) = r3;
0x0008f2bc strb r0, [r4, 0x13] | *((r4 + 0x13)) = r0;
0x0008f2c0 b 0x8e9d8 | goto label_9;
0x0008f2c4 ldrb r3, [r4, 0x11] | r3 = *((r4 + 0x11));
0x0008f2c8 ldrb r7, [r4, 0x10] | r7 = *((r4 + 0x10));
0x0008f2cc orr r7, r7, r3, lsl 8 | r7 |= (r3 << 8);
0x0008f2d0 ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
0x0008f2d4 orr r7, r7, r3, lsl 16 | r7 |= (r3 << 16);
0x0008f2d8 ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0008f2dc orrs r7, r7, r3, lsl 24 | r7 |= (r3 << 24);
| if (r7 != r7) {
0x0008f2e0 moveq r8, 2 | r8 = 2;
| }
| if (r7 != r7) {
0x0008f2e4 beq 0x8f2f4 |
0x0008f2e8 mov r0, r7 | r0 = r7;
0x0008f2ec bl 0x1514c | r0 = strlen (r0);
0x0008f2f0 add r8, r0, 2 | r8 = r0 + 2;
| }
0x0008f2f4 subs r0, r6, 0 | r0 = r6 - 0;
| if (r0 != r6) {
0x0008f2f8 beq 0x8f300 |
0x0008f2fc bl 0x1514c | r0 = strlen (r0);
| }
0x0008f300 add r1, r8, r0 | r1 = r8 + r0;
0x0008f304 mov r0, r7 | r0 = r7;
0x0008f308 bl 0x18990 | fcn_00018990 (r0, r1);
0x0008f30c cmp r8, 2 |
0x0008f310 ldr r1, [pc, 0xec] | r1 = *(0x8f400);
0x0008f314 lsr r3, r0, 8 | r3 = r0 >> 8;
0x0008f318 strb r3, [r4, 0x11] | *((r4 + 0x11)) = r3;
0x0008f31c lsr r3, r0, 0x10 | r3 = r0 >> 0x10;
0x0008f320 strb r3, [r4, 0x12] | *((r4 + 0x12)) = r3;
0x0008f324 lsr r3, r0, 0x18 | r3 = r0 >> 0x18;
0x0008f328 strb r3, [r4, 0x13] | *((r4 + 0x13)) = r3;
| if (r8 != 2) {
0x0008f32c moveq r3, 0 | r3 = 0;
| }
0x0008f330 strb r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
| if (r8 != 2) {
0x0008f334 strbeq r3, [r0] | *(r0) = r3;
| }
0x0008f338 ldrb r0, [r4, 0x11] | r0 = *((r4 + 0x11));
0x0008f33c ldrb r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0008f340 orr r3, r3, r0, lsl 8 | r3 |= (r0 << 8);
0x0008f344 ldrb r0, [r4, 0x12] | r0 = *((r4 + 0x12));
0x0008f348 orr r3, r3, r0, lsl 16 | r3 |= (r0 << 16);
0x0008f34c ldrb r0, [r4, 0x13] | r0 = *((r4 + 0x13));
0x0008f350 orr r0, r3, r0, lsl 24 | r0 = r3 | (r0 << 24);
0x0008f354 bl 0x149f0 | strcat (r0, r1)
0x0008f358 cmp r6, 0 |
| if (r6 == 0) {
0x0008f35c beq 0x8e9d8 | goto label_9;
| }
0x0008f360 ldrb r0, [r4, 0x11] | r0 = *((r4 + 0x11));
0x0008f364 ldrb r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0008f368 mov r1, r6 | r1 = r6;
0x0008f36c orr r3, r3, r0, lsl 8 | r3 |= (r0 << 8);
0x0008f370 ldrb r0, [r4, 0x12] | r0 = *((r4 + 0x12));
0x0008f374 orr r3, r3, r0, lsl 16 | r3 |= (r0 << 16);
0x0008f378 ldrb r0, [r4, 0x13] | r0 = *((r4 + 0x13));
0x0008f37c orr r0, r3, r0, lsl 24 | r0 = r3 | (r0 << 24);
0x0008f380 bl 0x149f0 | strcat (r0, r1)
0x0008f384 b 0x8e9d8 | goto label_9;
0x0008f388 ldrb r3, [r4, 0x11] | r3 = *((r4 + 0x11));
0x0008f38c ldrb r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0008f390 orr r0, r0, r3, lsl 8 | r0 |= (r3 << 8);
0x0008f394 ldrb r3, [r4, 0x12] | r3 = *((r4 + 0x12));
0x0008f398 orr r0, r0, r3, lsl 16 | r0 |= (r3 << 16);
0x0008f39c ldrb r3, [r4, 0x13] | r3 = *((r4 + 0x13));
0x0008f3a0 orrs r0, r0, r3, lsl 24 | r0 |= (r3 << 24);
| if (r0 == r0) {
0x0008f3a4 bne 0x8f3b0 |
0x0008f3a8 mov r0, 1 | r0 = 1;
0x0008f3ac bl 0x189b8 | fcn_000189b8 (r0);
| }
0x0008f3b0 lsr r3, r6, 8 | r3 = r6 >> 8;
0x0008f3b4 strb r6, [r4, 0x10] | *((r4 + 0x10)) = r6;
0x0008f3b8 strb r3, [r4, 0x11] | *((r4 + 0x11)) = r3;
0x0008f3bc lsr r3, r6, 0x10 | r3 = r6 >> 0x10;
0x0008f3c0 lsr r6, r6, 0x18 | r6 >>= 0x18;
0x0008f3c4 strb r6, [r4, 0x13] | *((r4 + 0x13)) = r6;
0x0008f3c8 strb r3, [r4, 0x12] | *((r4 + 0x12)) = r3;
0x0008f3cc mov r6, r0 | r6 = r0;
0x0008f3d0 b 0x8f274 | goto label_25;
| label_50:
0x0008f3d4 bl 0x8e160 | fcn_0008e160 (r0);
0x0008f3d8 b 0x8ec5c | goto label_26;
| label_27:
0x0008f3dc add sp, sp, 0x3c |
0x0008f3e0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x90018 */
| #include <stdint.h>
|
; (fcn) fcn.00090018 () | void fcn_00090018 () {
| int32_t var_4h;
| int32_t var_ch;
| char * format;
| int32_t var_1ch;
0x00090018 push {r0, r1, r2, r3} |
0x0009001c push {r0, r1, r2, r4, r5, lr} |
0x00090020 ldr r1, [pc, 0x4c] | r1 = *(0x90070);
0x00090024 add r3, sp, 0x1c | r3 += var_1ch;
0x00090028 str r3, [sp, 4] | var_4h = r3;
0x0009002c ldr r3, [pc, 0x44] | r3 = "\e[7m";
0x00090030 ldr r4, [r3] | r4 = "\e[7m";
0x00090034 add r5, r4, 0x2e8 | r5 = r4 + 0x2e8;
0x00090038 mov r0, r5 | r0 = r5;
0x0009003c bl 0x142f4 | strcpy (r0, r1);
0x00090040 ldr r2, [sp, 4] | r2 = var_4h;
0x00090044 ldr r1, [sp, 0x18] | r1 = format;
0x00090048 add r0, r4, 0x2ec | r0 = r4 + 0x2ec;
0x0009004c bl 0x14378 | vsprintf (r0, r1, r2);
0x00090050 ldr r1, [pc, 0x24] | r1 = *(0x90078);
0x00090054 mov r0, r5 | r0 = r5;
0x00090058 bl 0x149f0 | strcat (r0, r1)
0x0009005c mov r3, 8 | r3 = 8;
0x00090060 str r3, [r4, 0x48] | *((r4 + 0x48)) = r3;
0x00090064 add sp, sp, 0xc |
0x00090068 pop {r4, r5, lr} |
0x0009006c add sp, sp, 0x10 |
0x00090070 bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x9ddd4 */
| #include <stdint.h>
|
; (fcn) fcn.0009ddd4 () | void fcn_0009ddd4 (int32_t arg_1h, int32_t arg_2h, int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_dh;
| char * endptr;
| int8_t var_3h;
| char * str;
| int8_t var_1h;
| int32_t var_20h;
| int32_t var_24h;
| r0 = arg1;
0x0009ddd4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0009ddd8 ldr sb, [pc, 0x364] | sb = *(0x0009e144);
0x0009dddc sub sp, sp, 0x24 |
0x0009dde0 str r0, [sp, 4] | var_4h = r0;
0x0009dde4 mov r0, 1 | r0 = 1;
0x0009dde8 bl 0x189b8 | fcn_000189b8 (r0);
0x0009ddec mov r4, 0 | r4 = 0;
0x0009ddf0 mov r7, 0x5b | r7 = 0x5b;
0x0009ddf4 mov sl, r4 | sl = r4;
0x0009ddf8 strb r4, [sp, 0xd] | var_dh = r4;
0x0009ddfc mov r6, r0 | r6 = r0;
| label_0:
0x0009de00 ldr fp, [sp, 4] | fp = var_4h;
0x0009de04 ldrb r3, [fp] | r3 = *(fp);
0x0009de08 cmp r3, 0 |
0x0009de0c bne 0x9de5c |
| while (r3 == 0) {
0x0009de10 ldr r3, [pc, 0x330] | r3 = *(0x9e144);
0x0009de14 cmp r4, r3 |
| if (r4 != r3) {
0x0009de18 beq 0x9de24 |
0x0009de1c mov r0, r4 | r0 = r4;
0x0009de20 bl 0x152a8 | free (r0);
| }
0x0009de24 ldr r4, [sb] | r4 = *(sb);
0x0009de28 mov r1, 0xa | r1 = 0xa;
0x0009de2c str r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
0x0009de30 str r6, [r4, 0x24] | *((r4 + 0x24)) = r6;
0x0009de34 mov r0, r6 | r0 = r6;
0x0009de38 bl 0x1496c | r0 = strrchr (r0, r1);
0x0009de3c cmp r0, 0 |
0x0009de40 str r0, [sp, 4] | var_4h = r0;
| if (r0 == 0) {
0x0009de44 addne r0, r0, 1 | r0++;
| }
| if (r0 == 0) {
0x0009de48 strne r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
| }
0x0009de4c mov r0, 1 | r0 = 1;
0x0009de50 bl 0x9dd80 | fcn_0009dd80 (r0);
0x0009de54 add sp, sp, 0x24 |
0x0009de58 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0009de5c add r3, sp, 0xc | r3 += var_ch;
0x0009de60 add r5, fp, 1 | r5 += arg_1h;
0x0009de64 str r3, [sp, 0x10] | endptr = r3;
0x0009de68 str r5, [sp, 4] | var_4h = r5;
0x0009de6c ldrb r8, [fp] | r8 = *(fp);
0x0009de70 cmp r8, 0x5c |
| if (r8 != 0x5c) {
0x0009de74 bne 0x9dee0 | goto label_1;
| }
0x0009de78 ldrb r8, [fp, 1] | r8 = *(arg_1h);
0x0009de7c cmp r8, 0x74 |
| if (r8 != 0x74) {
0x0009de80 beq 0x9de90 |
0x0009de84 add r0, sp, 4 | r0 += var_4h;
0x0009de88 bl 0xa14e0 | r0 = fcn_000a14e0 (r0);
0x0009de8c mov r8, r0 | r8 = r0;
| }
0x0009de90 ldr r2, [sp, 4] | r2 = var_4h;
0x0009de94 ldr r3, [sb] | r3 = *(sb);
0x0009de98 cmp r5, r2 |
0x0009de9c str r3, [sp] | *(sp) = r3;
| if (r5 != r2) {
0x0009dea0 bne 0x9dee0 | goto label_1;
| }
0x0009dea4 ldrb r3, [fp, 1] | r3 = *(arg_1h);
0x0009dea8 cmp r3, 0 |
0x0009deac beq 0x9de10 |
| }
0x0009deb0 add r3, fp, 2 | r3 += arg_2h;
0x0009deb4 str r3, [sp, 4] | var_4h = r3;
0x0009deb8 ldrb r8, [fp, 1] | r8 = *(arg_1h);
0x0009debc cmp r8, 0x58 |
| if (r8 == 0x58) {
0x0009dec0 beq 0x9e0a0 | goto label_5;
| }
| if (r8 > 0x58) {
0x0009dec4 bhi 0x9df7c | goto label_6;
| }
0x0009dec8 cmp r8, 0x41 |
| if (r8 > 0x41) {
0x0009decc bhi 0x9dee8 | goto label_7;
| }
0x0009ded0 cmp r8, 0x40 |
| if (r8 >= 0x40) {
0x0009ded4 bhs 0x9dff4 | goto label_8;
| }
0x0009ded8 cmp r8, 0x24 |
| if (r8 == 0x24) {
0x0009dedc beq 0x9dfe4 | goto label_9;
| }
| do {
| label_1:
0x0009dee0 mov r5, 0 | r5 = 0;
0x0009dee4 b 0x9df24 | goto label_2;
| label_7:
0x0009dee8 cmp r8, 0x54 |
| if (r8 == 0x54) {
0x0009deec beq 0x9dff4 | goto label_8;
| }
0x0009def0 cmp r8, 0x57 |
| if (r8 == 0x57) {
0x0009def4 beq 0x9e018 | goto label_10;
| }
0x0009def8 cmp r8, 0x48 |
0x0009defc bne 0x9dee0 |
| } while (r8 != 0x48);
| do {
0x0009df00 bl 0xa4060 | fcn_000a4060 ();
0x0009df04 cmp r8, 0x68 |
0x0009df08 mov r5, r0 | r5 = r0;
0x0009df0c str r0, [sp, 0x10] | endptr = r0;
| if (r8 == 0x68) {
0x0009df10 bne 0x9df24 |
0x0009df14 mov r1, 0x2e | r1 = 0x2e;
0x0009df18 bl 0x151e8 | strchrnul ();
0x0009df1c mov r3, 0 | r3 = 0;
0x0009df20 strb r3, [r0] | *(r0) = r3;
| }
| label_2:
0x0009df24 ldr r0, [sp, 0x10] | r0 = endptr;
0x0009df28 strb r8, [sp, 0xc] | var_ch = r8;
0x0009df2c bl 0x1514c | strlen (r0);
0x0009df30 ldr r3, [sb] | r3 = *(sb);
0x0009df34 cmp r8, 0xa |
| if (r8 != 0xa) {
0x0009df38 moveq r2, 0 | r2 = 0;
| }
0x0009df3c add sl, sl, r0 | sl += r0;
| if (r8 != 0xa) {
0x0009df40 streq r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
| }
| if (r8 != 0xa) {
0x0009df44 beq 0x9df58 |
0x0009df48 cmp r7, 0x5d |
| if (r7 == 0x5d) {
0x0009df4c ldrne r2, [r3, 0x10] | r2 = *((r3 + 0x10));
| }
| if (r7 == 0x5d) {
0x0009df50 addne r0, r2, r0 | r0 = r2 + r0;
| }
| if (r7 != 0x5d) {
0x0009df54 strne r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
| goto label_11;
| }
| }
| label_11:
0x0009df58 add r1, sl, 1 | r1 = sl + 1;
0x0009df5c mov r0, r6 | r0 = r6;
0x0009df60 bl 0x18990 | fcn_00018990 (r0, r1);
0x0009df64 ldr r1, [sp, 0x10] | r1 = endptr;
0x0009df68 bl 0x149f0 | r0 = strcat (r0, r1)
0x0009df6c mov r6, r0 | r6 = r0;
0x0009df70 mov r0, r5 | r0 = r5;
0x0009df74 bl 0x152a8 | free (r0);
0x0009df78 b 0x9de00 | goto label_0;
| label_6:
0x0009df7c cmp r8, 0x74 |
| if (r8 == 0x74) {
0x0009df80 beq 0x9dff4 | goto label_8;
| }
| if (r8 > 0x74) {
0x0009df84 bhi 0x9dfb0 | goto label_12;
| }
0x0009df88 cmp r8, 0x5d |
| if (r8 == 0x5d) {
0x0009df8c beq 0x9dfa0 | goto label_13;
| }
0x0009df90 cmp r8, 0x68 |
0x0009df94 beq 0x9df00 |
| } while (r8 == 0x68);
0x0009df98 cmp r8, 0x5b |
| if (r8 != 0x5b) {
0x0009df9c bne 0x9dee0 | goto label_1;
| }
| label_13:
0x0009dfa0 cmp r7, r8 |
| if (r7 == r8) {
0x0009dfa4 eoreq r7, r7, 6 | r7 ^= 6;
| goto label_14;
| }
| if (r7 == r8) {
| label_14:
0x0009dfa8 beq 0x9de00 | goto label_0;
| }
0x0009dfac b 0x9dee0 | goto label_1;
| label_12:
0x0009dfb0 cmp r8, 0x77 |
| if (r8 == 0x77) {
0x0009dfb4 beq 0x9e018 | goto label_10;
| }
0x0009dfb8 cmp r8, 0x78 |
| if (r8 == 0x78) {
0x0009dfbc beq 0x9e0a0 | goto label_5;
| }
0x0009dfc0 cmp r8, 0x75 |
| if (r8 != 0x75) {
0x0009dfc4 bne 0x9dee0 | goto label_1;
| }
0x0009dfc8 ldr r3, [sp] | r3 = *(sp);
0x0009dfcc ldr r2, [pc, 0x178] | r2 = "_unknown_";
0x0009dfd0 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x0009dfd4 cmp r3, 0 |
| if (r3 != 0) {
0x0009dfd8 moveq r3, r2 | r3 = r2;
| }
| label_3:
0x0009dfdc str r3, [sp, 0x10] | endptr = r3;
0x0009dfe0 b 0x9dee0 | goto label_1;
| label_9:
0x0009dfe4 bl 0x143fc | r0 = geteuid ();
0x0009dfe8 cmp r0, 0 |
| if (r0 != 0) {
0x0009dfec moveq r8, 0x23 | r8 = 0x23;
| }
0x0009dff0 b 0x9dee0 | goto label_1;
| label_8:
0x0009dff4 add fp, sp, 0x14 |
0x0009dff8 mov r2, 0 | r2 = 0;
0x0009dffc mov r1, 9 | r1 = 9;
0x0009e000 mov r0, fp | r0 = fp;
0x0009e004 bl 0x19e78 | fcn_00019e78 (r0, r1);
0x0009e008 mov r5, 0 | r5 = 0;
0x0009e00c strb r5, [r0, -3] | var_3h = r5;
0x0009e010 str fp, [sp, 0x10] | endptr = fp;
0x0009e014 b 0x9df24 | goto label_2;
| label_10:
0x0009e018 cmp r4, 0 |
| if (r4 == 0) {
0x0009e01c bne 0x9e074 |
0x0009e020 mov r0, r4 | r0 = r4;
0x0009e024 bl 0xa6298 | r0 = fcn_000a6298 (r0);
0x0009e028 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0009e02c ldreq r4, [pc, 0x114] | r4 = "_unknown_";
| }
| if (r4 == r0) {
0x0009e030 beq 0x9e074 | goto label_15;
| }
0x0009e034 ldr r3, [sp] | r3 = *(sp);
0x0009e038 ldr r1, [r3, 0x30] | r1 = *((r3 + 0x30));
0x0009e03c ldrb r3, [r1] | r3 = *(r1);
0x0009e040 cmp r3, 0 |
| if (r3 == 0) {
0x0009e044 beq 0x9e074 | goto label_15;
| }
0x0009e048 bl 0x17c98 | r0 = fcn_00017c98 (r0, r1);
0x0009e04c subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 == r0) {
0x0009e050 beq 0x9e074 | goto label_15;
| }
0x0009e054 ldrb r3, [r1] | r3 = *(r1);
0x0009e058 cmp r3, 0 |
0x0009e05c cmpne r3, 0x2f | __asm ("cmpne r3, 0x2f");
| if (r3 != 0) {
0x0009e060 bne 0x9e074 | goto label_15;
| }
0x0009e064 mov r0, r4 | r0 = r4;
0x0009e068 mov r3, 0x7e | r3 = 0x7e;
0x0009e06c strb r3, [r0], 1 | *(r0) = r3;
| r0++;
0x0009e070 bl 0xa410c | fcn_000a410c (r0, r1);
| }
| label_15:
0x0009e074 cmp r8, 0x77 |
0x0009e078 str r4, [sp, 0x10] | endptr = r4;
| if (r8 == 0x77) {
0x0009e07c beq 0x9dee0 | goto label_1;
| }
0x0009e080 mov r1, 0x2f | r1 = 0x2f;
0x0009e084 mov r0, r4 | r0 = r4;
0x0009e088 bl 0x1496c | r0 = strrchr (r0, r1);
0x0009e08c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x0009e090 addne r5, r5, 1 | r5++;
| }
| if (r5 != r0) {
0x0009e094 strne r5, [sp, 0x10] | endptr = r5;
| goto label_16;
| }
| if (r5 != r0) {
| label_16:
0x0009e098 bne 0x9dee0 | goto label_1;
| }
0x0009e09c b 0x9df24 | goto label_2;
| label_5:
0x0009e0a0 add r8, sp, 0x14 | r8 += str;
0x0009e0a4 mov r5, 0 | r5 = 0;
0x0009e0a8 mov fp, r8 |
| do {
0x0009e0ac ldr r2, [sp, 4] | r2 = var_4h;
0x0009e0b0 add r3, r5, 1 | r3 = r5 + 1;
0x0009e0b4 ldrb r2, [r2] | r2 = *(r2);
0x0009e0b8 str r3, [sp] | *(sp) = r3;
0x0009e0bc strb r2, [r8] | *(r8) = r2;
0x0009e0c0 mov r3, 0 | r3 = 0;
0x0009e0c4 mov r2, 0x10 | r2 = 0x10;
0x0009e0c8 strb r3, [r8, 1]! | *((r8 += 1)) = r3;
0x0009e0cc add r1, sp, r2 | r1 = sp + r2;
0x0009e0d0 mov r0, fp | r0 = fp;
0x0009e0d4 bl 0x14768 | strtoul (r0, r1, r2);
0x0009e0d8 ldr r3, [sp] | r3 = *(sp);
0x0009e0dc cmp r0, 0xff |
| if (r0 <= 0xff) {
0x0009e0e0 bhi 0x9e0f4 |
0x0009e0e4 ldr r2, [sp, 0x10] | r2 = endptr;
0x0009e0e8 sub r2, r2, fp | r2 -= fp;
0x0009e0ec cmp r2, r3 |
| if (r2 >= r3) {
0x0009e0f0 bge 0x9e128 | goto label_17;
| }
| }
0x0009e0f4 add r3, sp, 0x20 | r3 += var_20h;
0x0009e0f8 add r5, r3, r5 | r5 = r3 + r5;
0x0009e0fc mov r3, 0 | r3 = 0;
0x0009e100 strb r3, [r5, -0xc] | str = r3;
| label_4:
0x0009e104 mov r2, 0x10 | r2 = 0x10;
0x0009e108 mov r1, 0 | r1 = 0;
0x0009e10c mov r0, fp | r0 = fp;
0x0009e110 bl 0x14768 | strtoul (r0, r1, r2);
0x0009e114 add r3, sp, 0xc | r3 += var_ch;
0x0009e118 and r8, r0, 0xff | r8 = r0 & 0xff;
0x0009e11c cmp r8, 0 |
| if (r8 != 0) {
0x0009e120 moveq r8, 0x3f | r8 = 0x3f;
| }
0x0009e124 b 0x9dfdc | goto label_3;
| label_17:
0x0009e128 ldr r2, [sp, 4] | r2 = var_4h;
0x0009e12c cmp r3, 3 |
0x0009e130 add r2, r2, 1 | r2++;
0x0009e134 str r2, [sp, 4] | var_4h = r2;
0x0009e138 mov r5, r3 | r5 = r3;
0x0009e13c bne 0x9e0ac |
| } while (r3 != 3);
0x0009e140 b 0x9e104 | goto label_4;
| }
[*] Function strcat used 7 times busybox