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