[*] Binary protection state of busybox

  
  	Partial RELRO  No Canary found   NX disabled  No PIE       No RPATH     No RUNPATH   No Symbols


[*] Function popen 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 @ 0x88d88 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00088d88 ()                                  | void fcn_00088d88 (int32_t arg_0h, void * ptr, int32_t arg_14h, int32_t arg_18h, char * src, int32_t arg1, void * arg2) {
                                                             |     int32_t var_21h;
                                                             |     int32_t var_0h;
                                                             |     int32_t var_0h_2;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_10h_2;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_28h;
                                                             |     char * filename;
                                                             |     int32_t var_30h;
                                                             |     int32_t var_34h;
                                                             |     int32_t var_38h;
                                                             |     int32_t var_3ch;
                                                             |     int32_t var_44h;
                                                             |     int32_t var_4ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00088d88 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00088d8c subs r4, r0, 0                                |     r4 -= arg_0h;
    0x00088d90 sub sp, sp, 0x4c                              |     
    0x00088d94 mov r5, r1                                    |     r5 = r1;
                                                             |     if (r4 == arg_0h) {
    0x00088d98 bne 0x88db8                                   |         
    0x00088d9c mov r1, r4                                    |         r1 = r4;
    0x00088da0 mov r0, r5                                    |         r0 = r5;
    0x00088da4 bl 0x87a44                                    |         fcn_00087a44 (r0, r1);
    0x00088da8 str r0, [sp, 0x18]                            |         var_18h = r0;
                                                             | label_0:
    0x00088dac ldr r0, [sp, 0x18]                            |         r0 = var_18h;
    0x00088db0 add sp, sp, 0x4c                              |         
    0x00088db4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             |     }
    0x00088db8 mov r0, 2                                     |     r0 = 2;
    0x00088dbc bl 0x86b54                                    |     fcn_00086b54 (r0);
    0x00088dc0 str r5, [sp, 0x18]                            |     var_18h = r5;
    0x00088dc4 str r0, [sp, 0x28]                            |     var_28h = r0;
                                                             |     do {
    0x00088dc8 ldr r3, [r4]                                  |         r3 = *(r4);
    0x00088dcc ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00088dd0 str r3, [sp, 0x1c]                            |         var_1ch = r3;
    0x00088dd4 and fp, r3, 0x7f                              |         
    0x00088dd8 ldr r3, [pc, 0xe50]                           |         r3 = *(0x89c2c);
    0x00088ddc ldr r8, [r3]                                  |         r8 = *(0x89c2c);
    0x00088de0 ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x00088de4 str r3, [r8, -0x38]                           |         *((r8 - 0x38)) = r3;
    0x00088de8 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x00088dec str r0, [sp, 0x44]                            |         var_44h = r0;
    0x00088df0 lsr sb, r3, 8                                 |         sb = r3 >> 8;
    0x00088df4 and sb, sb, 0xff                              |         sb &= 0xff;
    0x00088df8 cmp sb, 1                                     |         
                                                             |         if (sb != 1) {
    0x00088dfc bne 0x88eb4                                   |             goto label_27;
                                                             |         }
    0x00088e00 ldr r3, [r0]                                  |         r3 = *(r0);
    0x00088e04 and r3, r3, 0xff00                            |         r3 &= 0xff00;
    0x00088e08 cmp r3, 0x2700                                |         
                                                             |         if (r3 != 0x2700) {
    0x00088e0c ldreq r5, [r0, 8]                             |             r5 = *((r0 + 8));
                                                             |         }
                                                             |         if (r3 != 0x2700) {
    0x00088e10 beq 0x88e2c                                   |             
    0x00088e14 cmp r3, 0x1800                                |             
                                                             |             if (r3 != 0x1800) {
    0x00088e18 bne 0x88e9c                                   |                 goto label_28;
                                                             |             }
    0x00088e1c ldr r3, [r8, 0x8c]                            |             r3 = *((r8 + 0x8c));
    0x00088e20 ldr r2, [r0, 8]                               |             r2 = *((r0 + 8));
    0x00088e24 mov r8, 0x18                                  |             r8 = 0x18;
    0x00088e28 mla r5, r2, r8, r3                            |             __asm ("mla r5, r2, r8, r3");
                                                             |         }
    0x00088e2c ldr r0, [r0, 0xc]                             |         r0 = *((r0 + 0xc));
    0x00088e30 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00088e34 beq 0x88ea4                                   |             goto label_29;
                                                             |         }
    0x00088e38 ldr r1, [sp, 0x28]                            |         r1 = var_28h;
    0x00088e3c bl 0x88d88                                    |         r0 = fcn_00088d88 (r0, r1, r2, r3, r4, r5, r6);
    0x00088e40 bl 0x87498                                    |         r0 = fcn_00087498 (r0);
    0x00088e44 mov sb, r0                                    |         sb = r0;
    0x00088e48 mov r0, r5                                    |         r0 = r5;
    0x00088e4c bl 0x86aec                                    |         fcn_00086aec (r0);
    0x00088e50 mov r1, sb                                    |         r1 = sb;
    0x00088e54 bl 0x871d0                                    |         fcn_000871d0 (r0, r1);
                                                             | label_1:
    0x00088e58 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x00088e5c and r3, r3, 0xff00                            |         r3 &= 0xff00;
    0x00088e60 cmp r3, 0x600                                 |         
                                                             |         if (r3 > 0x600) {
    0x00088e64 ldrls r4, [r4, 0x10]                          |             r4 = *((r4 + 0x10));
                                                             |         }
                                                             |         if (r3 >= 0x600) {
    0x00088e68 bls 0x88e74                                   |             
    0x00088e6c cmp r3, 0x1000                                |             
                                                             |             if (r3 >= 0x1000) {
    0x00088e70 bhs 0x88e90                                   |                 goto label_30;
                                                             |             }
                                                             |         }
    0x00088e74 ldr r3, [pc, 0xdb4]                           |         
    0x00088e78 ldr r3, [r3]                                  |         
    0x00088e7c ldr r3, [r3, -0x14]                           |         r3 = *(0x89c18);
    0x00088e80 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00088e84 bne 0x88e90                                   |             goto label_30;
                                                             |         }
    0x00088e88 cmp r4, 0                                     |         
    0x00088e8c bne 0x88dc8                                   |         
                                                             |     } while (r4 != 0);
                                                             | label_30:
    0x00088e90 ldr r0, [sp, 0x28]                            |     r0 = var_28h;
    0x00088e94 bl 0x8815c                                    |     fcn_0008815c (r0);
    0x00088e98 b 0x88dac                                     |     goto label_0;
                                                             | label_28:
    0x00088e9c ldr r0, [pc, 0xd90]                           |     r0 = *(0x89c30);
                                                             | label_12:
    0x00088ea0 bl 0x87374                                    |     fcn_00087374 (r0);
                                                             | label_29:
    0x00088ea4 mov r0, r5                                    |     r0 = r5;
    0x00088ea8 bl 0x86aec                                    |     r0 = fcn_00086aec (r0);
    0x00088eac bl 0x86d28                                    |     fcn_00086d28 (r0);
    0x00088eb0 b 0x88e58                                     |     goto label_1;
                                                             | label_27:
    0x00088eb4 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00088eb8 tst r3, 0x10000                               |     
                                                             |     if ((r3 & 0x10000) != 0) {
    0x00088ebc beq 0x88ecc                                   |         
    0x00088ec0 ldr r1, [sp, 0x28]                            |         r1 = var_28h;
    0x00088ec4 bl 0x88d88                                    |         r0 = fcn_00088d88 (r0, r1, r2, r3, r4, r5, r6);
    0x00088ec8 mov r6, r0                                    |         r6 = r0;
                                                             |     }
    0x00088ecc ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00088ed0 tst r3, 0x20000                               |     
                                                             |     if ((r3 & 0x20000) != 0) {
    0x00088ed4 beq 0x88eec                                   |         
    0x00088ed8 ldr r3, [sp, 0x28]                            |         r3 = var_28h;
    0x00088edc ldr r0, [r4, 0xc]                             |         r0 = *((r4 + 0xc));
    0x00088ee0 add r1, r3, 0x18                              |         r1 = r3 + 0x18;
    0x00088ee4 bl 0x88d88                                    |         r0 = fcn_00088d88 (r0, r1, r2, r3, r4, r5, r6);
    0x00088ee8 mov sl, r0                                    |         sl = r0;
                                                             |     }
    0x00088eec ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00088ef0 tst r3, 0x40000                               |     
                                                             |     if ((r3 & 0x40000) != 0) {
    0x00088ef4 beq 0x88f04                                   |         
    0x00088ef8 mov r0, r6                                    |         r0 = r6;
    0x00088efc bl 0x87498                                    |         r0 = fcn_00087498 (r0);
    0x00088f00 mov r7, r0                                    |         r7 = r0;
                                                             |     }
    0x00088f04 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00088f08 tst r3, 0x80000                               |     
                                                             |     if ((r3 & 0x80000) != 0) {
    0x00088f0c beq 0x88f1c                                   |         
    0x00088f10 mov r0, sl                                    |         r0 = sl;
    0x00088f14 bl 0x87498                                    |         fcn_00087498 (r0);
    0x00088f18 str r0, [sp, 0x2c]                            |         filename = r0;
                                                             |     }
    0x00088f1c ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00088f20 tst r3, 0x100000                              |     
                                                             |     if ((r3 & 0x100000) != 0) {
    0x00088f24 beq 0x88f34                                   |         
    0x00088f28 mov r0, r6                                    |         r0 = r6;
    0x00088f2c bl 0x86f20                                    |         fcn_00086f20 (r0);
    0x00088f30 strd r0, r1, [sp, 0x10]                       |         __asm ("strd r0, r1, [var_10h]");
                                                             |     }
    0x00088f34 sub sb, sb, 2                                 |     sb -= 2;
    0x00088f38 cmp sb, 0x26                                  |     
                                                             |     if (sb > 0x26) {
                                                             |         /* switch table (39 cases) at 0x88f44 */
    0x00088f3c ldrls pc, [pc, sb, lsl 2]                     |         offset_0 = sb << 2;
                                                             |         pc = *((pc + offset_0));
                                                             |     }
    0x00088f40 b 0x89430                                     |     goto label_31;
    0x00088fe0 ldr r0, [sp, 0x44]                            |     r0 = var_44h;
    0x00088fe4 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00088fe8 and r3, r3, 0xff00                            |     r3 &= 0xff00;
    0x00088fec cmp r3, 0x1300                                |     
                                                             |     if (r3 != 0x1300) {
    0x00088ff0 bne 0x89048                                   |         goto label_32;
                                                             |     }
    0x00088ff4 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00088ff8 tst r3, 0x200000                              |     
    0x00088ffc beq 0x89030                                   |     
                                                             |     while (r0 != 0) {
    0x00089000 ldr r3, [r4]                                  |         r3 = *(r4);
    0x00089004 orr r3, r3, 0x200000                          |         r3 |= 0x200000;
    0x00089008 str r3, [r4]                                  |         *(r4) = r3;
    0x0008900c ldr r3, [sp, 0x44]                            |         r3 = var_44h;
    0x00089010 ldr r0, [r3, 0xc]                             |         r0 = *((r3 + 0xc));
    0x00089014 bl 0x8a800                                    |         r0 = fcn_0008a800 (r0);
    0x00089018 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0008901c ldrne r3, [r4]                                |             r3 = *(r4);
                                                             |         }
    0x00089020 bicne r3, r3, 0x200000                        |         __asm ("bicne r3, r3, 0x200000");
                                                             |         if (r0 == 0) {
    0x00089024 strne r3, [r4]                                |             *(r4) = r3;
                                                             |         }
                                                             | label_2:
    0x00089028 ldr r4, [r4, 0x10]                            |         r4 = *((r4 + 0x10));
    0x0008902c b 0x88e58                                     |         goto label_1;
    0x00089030 ldr r0, [r0, 8]                               |         r0 = *((r0 + 8));
    0x00089034 bl 0x8a800                                    |         r0 = fcn_0008a800 (r0);
    0x00089038 cmp r0, 0                                     |         
    0x0008903c bne 0x89000                                   |         
                                                             |     }
                                                             |     do {
                                                             | label_6:
    0x00089040 ldr r4, [r4, 0xc]                             |         r4 = *((r4 + 0xc));
    0x00089044 b 0x88e58                                     |         goto label_1;
                                                             | label_32:
    0x00089048 bl 0x8a800                                    |         r0 = fcn_0008a800 (r0);
                                                             | label_3:
    0x0008904c cmp r0, 0                                     |         
    0x00089050 beq 0x89040                                   |         
                                                             |     } while (r0 == 0);
    0x00089054 b 0x89028                                     |     goto label_2;
    0x00089058 mov r0, r6                                    |     r0 = r6;
    0x0008905c bl 0x86fbc                                    |     fcn_00086fbc (r0);
    0x00089060 b 0x8904c                                     |     goto label_3;
    0x00089064 mov r0, sl                                    |     r0 = sl;
    0x00089068 bl 0x86aec                                    |     fcn_00086aec (r0);
    0x0008906c ldr r2, [r6]                                  |     r2 = *(r6);
    0x00089070 ands sb, r2, 0x800                            |     sb = r2 & 0x800;
                                                             |     if (sb != r2) {
    0x00089074 orreq r2, r2, 0x800                           |         r2 |= 0x800;
                                                             |     }
                                                             |     if (sb != r2) {
    0x00089078 streq r2, [r6]                                |         *(r6) = r2;
                                                             |     }
                                                             |     if (sb == r2) {
    0x0008907c ldrne sb, [r6, 0x14]                          |         sb = *((r6 + 0x14));
                                                             |     }
    0x00089080 mov r3, r0                                    |     r3 = r0;
    0x00089084 ldr r0, [r0, 0xc]                             |     r0 = *((r0 + 0xc));
    0x00089088 str r3, [sp, 0x34]                            |     var_34h = r3;
    0x0008908c add r0, r0, 0x11                              |     r0 += 0x11;
    0x00089090 bl 0x189b8                                    |     fcn_000189b8 (r0);
    0x00089094 ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x00089098 add r2, r0, 0xc                               |     r2 = r0 + 0xc;
    0x0008909c str r0, [r6, 0x14]                            |     *((r6 + 0x14)) = r0;
    0x000890a0 mov r8, r0                                    |     r8 = r0;
    0x000890a4 stmib r0, {r2, sb}                            |     __asm ("stmib r0, {r2, sb}");
    0x000890a8 mov sb, 0                                     |     sb = 0;
    0x000890ac str r2, [r0]                                  |     *(r0) = r2;
                                                             | label_4:
    0x000890b0 ldr r2, [r3, 4]                               |     r2 = *((r3 + 4));
    0x000890b4 cmp sb, r2                                    |     
                                                             |     if (sb >= r2) {
    0x000890b8 bhs 0x88e58                                   |         goto label_1;
                                                             |     }
    0x000890bc ldr r2, [r3, 0x10]                            |     r2 = *((r3 + 0x10));
    0x000890c0 ldr fp, [r2, sb, lsl 2]                       |     offset_1 = sb << 2;
                                                             |     fp = *((r2 + offset_1));
                                                             | label_5:
    0x000890c4 cmp fp, 0                                     |     
                                                             |     if (fp == 0) {
    0x000890c8 addeq sb, sb, 1                               |         sb++;
                                                             |         goto label_33;
                                                             |     }
                                                             |     if (fp == 0) {
                                                             | label_33:
    0x000890cc beq 0x890b0                                   |         goto label_4;
                                                             |     }
    0x000890d0 add r1, fp, 0x1c                              |     r1 += src;
    0x000890d4 ldr r0, [r8]                                  |     r0 = *(r8);
    0x000890d8 str r3, [sp, 0x34]                            |     var_34h = r3;
    0x000890dc bl 0x142f4                                    |     strcpy (r0, r1);
    0x000890e0 mov r0, r8                                    |     r0 = r8;
    0x000890e4 bl 0x86a4c                                    |     fcn_00086a4c (r0);
    0x000890e8 ldr fp, [fp, 0x18]                            |     fp = *(arg_18h);
    0x000890ec ldr r3, [sp, 0x34]                            |     r3 = var_34h;
    0x000890f0 b 0x890c4                                     |     goto label_5;
    0x000890f4 ldr r0, [r6, 0x14]                            |     r0 = *((r6 + 0x14));
    0x000890f8 ldr r2, [r0, 4]                               |     r2 = *((r0 + 4));
    0x000890fc ldr r3, [r0]                                  |     r3 = *(r0);
    0x00089100 cmp r2, r3                                    |     
                                                             |     if (r2 > r3) {
    0x00089104 blo 0x89118                                   |         
    0x00089108 ldr r8, [r0, 8]                               |         r8 = *((r0 + 8));
    0x0008910c bl 0x152a8                                    |         free (r0);
    0x00089110 str r8, [r6, 0x14]                            |         *((r6 + 0x14)) = r8;
    0x00089114 b 0x89040                                     |         goto label_6;
                                                             |     }
    0x00089118 add r0, r0, 4                                 |     r0 += 4;
    0x0008911c bl 0x86a4c                                    |     r0 = fcn_00086a4c (r0);
    0x00089120 mov r1, r0                                    |     r1 = r0;
    0x00089124 mov r0, r6                                    |     r0 = r6;
    0x00089128 bl 0x87a68                                    |     fcn_00087a68 (r0, r1);
    0x0008912c b 0x89028                                     |     goto label_2;
    0x00089130 ldr r3, [pc, 0xb00]                           |     r3 = "Not an array";
    0x00089134 ldr sb, [r3]                                  |     sb = "Not an array";
    0x00089138 ldr r3, [r4, 0xc]                             |     r3 = *((r4 + 0xc));
    0x0008913c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00089140 beq 0x89194                                   |         goto label_34;
                                                             |     }
    0x00089144 ldr r1, [sp, 0x2c]                            |     r1 = filename;
    0x00089148 ldr r0, [r8, -0x44]                           |     r0 = *((r8 - 0x44));
    0x0008914c bl 0x870ac                                    |     r0 = fcn_000870ac (r0, r1);
    0x00089150 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00089154 mov sb, r0                                    |     sb = r0;
    0x00089158 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0008915c bne 0x89190                                   |         goto label_35;
                                                             |     }
    0x00089160 cmp fp, 0x7c                                  |     
    0x00089164 ldr r1, [pc, 0xad0]                           |     r1 = stdout;
                                                             |     if (fp != 0x7c) {
    0x00089168 bne 0x891ec                                   |         goto label_36;
                                                             |     }
    0x0008916c ldr r0, [sp, 0x2c]                            |     r0 = filename;
    0x00089170 bl 0x14354                                    |     r0 = popen (r0, r1)
    0x00089174 cmp r0, 0                                     |     
    0x00089178 str r0, [sb]                                  |     *(sb) = r0;
                                                             |     if (r0 == 0) {
    0x0008917c bne 0x89188                                   |         
    0x00089180 ldr r0, [pc, 0xab8]                           |         r0 = *(0x89c3c);
    0x00089184 bl 0x17fd8                                    |         fcn_00017fd8 ();
                                                             |     }
    0x00089188 mov r3, 1                                     |     r3 = 1;
    0x0008918c str r3, [sb, 0x14]                            |     *((sb + 0x14)) = r3;
                                                             |     do {
                                                             | label_35:
    0x00089190 ldr sb, [sb]                                  |         sb = *(sb);
                                                             | label_34:
    0x00089194 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x00089198 ldr r0, [sp, 0x44]                            |         r0 = var_44h;
    0x0008919c and r3, r3, 0xff00                            |         r3 &= 0xff00;
    0x000891a0 cmp r3, 0x400                                 |         
                                                             |         if (r3 != 0x400) {
    0x000891a4 bne 0x892ac                                   |             goto label_37;
                                                             |         }
    0x000891a8 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000891ac ldrne r3, [pc, 0xa7c]                         |             r3 = *(0x00089c30);
                                                             |         }
                                                             |         if (r0 == 0) {
    0x000891b0 ldrne r8, [r3]                                |             r8 = *(r3);
                                                             |         }
                                                             |         if (r0 != 0) {
    0x000891b4 bne 0x8928c                                   |             goto label_38;
                                                             |         }
    0x000891b8 ldr r0, [r8, 0x34]                            |         r0 = *((r8 + 0x34));
    0x000891bc bl 0x87498                                    |         fcn_00087498 (r0);
    0x000891c0 mov r1, sb                                    |         r1 = sb;
    0x000891c4 bl 0x149d8                                    |         fputs_unlocked ();
                                                             | label_7:
    0x000891c8 ldr r3, [pc, 0xa60]                           |         
    0x000891cc ldr r3, [r3]                                  |         r3 = *(0x89c2c);
    0x000891d0 ldr r0, [r3, 0x20]                            |         r0 = "Possible_syntax_error";
    0x000891d4 bl 0x87498                                    |         fcn_00087498 ("Possible_syntax_error");
    0x000891d8 mov r1, sb                                    |         r1 = sb;
    0x000891dc bl 0x149d8                                    |         fputs_unlocked ();
                                                             | label_9:
    0x000891e0 mov r0, sb                                    |         r0 = sb;
    0x000891e4 bl 0x147ec                                    |         fflush (r0);
    0x000891e8 b 0x88e58                                     |         goto label_1;
                                                             | label_36:
    0x000891ec ldr r3, [pc, 0xa50]                           |         r3 = "popen"
    0x000891f0 cmp fp, 0x77                                  |         
                                                             |         if (fp == 0x77) {
    0x000891f4 movne r1, r3                                  |             r1 = r3;
                                                             |         }
    0x000891f8 ldr r0, [sp, 0x2c]                            |         r0 = filename;
    0x000891fc bl 0x18a6c                                    |         fcn_00018a6c (r0);
    0x00089200 str r0, [sb]                                  |         *(sb) = r0;
    0x00089204 b 0x89190                                     |         
                                                             |     } while (1);
                                                             |     do {
    0x00089208 add r0, sp, 0x44                              |         r0 += var_44h;
    0x0008920c bl 0x86a88                                    |         fcn_00086a88 (r0);
    0x00089210 ldr r1, [sp, 0x28]                            |         r1 = var_28h;
    0x00089214 bl 0x88d88                                    |         r0 = fcn_00088d88 (r0, r1, r2, r3, r4, r5, r6);
    0x00089218 ldr r3, [r0]                                  |         r3 = *(r0);
    0x0008921c tst r3, 1                                     |         
                                                             |         if ((r3 & 1) == 0) {
    0x00089220 beq 0x892a0                                   |             goto label_39;
                                                             |         }
    0x00089224 ldr r3, [r8, -0x20]                           |         r3 = *((r8 - 0x20));
    0x00089228 str r0, [sp, 0x3c]                            |         var_3ch = r0;
    0x0008922c ldr r0, [r8, 0x14]                            |         r0 = *((r8 + 0x14));
    0x00089230 str r3, [sp, 0x38]                            |         var_38h = r3;
    0x00089234 bl 0x87498                                    |         fcn_00087498 (r0);
    0x00089238 ldr r1, [sp, 0x3c]                            |         r1 = var_3ch;
    0x0008923c str r0, [sp, 0x34]                            |         var_34h = r0;
    0x00089240 mov r0, r1                                    |         r0 = r1;
    0x00089244 bl 0x86f20                                    |         fcn_00086f20 (r0);
    0x00089248 ldr r3, [sp, 0x38]                            |         r3 = var_38h;
    0x0008924c str fp, [sp, 8]                               |         var_8h = fp;
    0x00089250 ldr r2, [sp, 0x34]                            |         r2 = var_34h;
    0x00089254 strd r0, r1, [sp]                             |         __asm ("strd r0, r1, [sp]");
    0x00089258 mov r1, 0xf0                                  |         r1 = 0xf0;
    0x0008925c mov r0, r3                                    |         r0 = r3;
    0x00089260 bl 0x8739c                                    |         fcn_0008739c (r0, r1, r2);
    0x00089264 ldr r0, [r8, -0x20]                           |         r0 = *((r8 - 0x20));
    0x00089268 mov r1, sb                                    |         r1 = sb;
                                                             | label_8:
    0x0008926c bl 0x149d8                                    |         fputs_unlocked ();
    0x00089270 ldr r3, [sp, 0x44]                            |         r3 = var_44h;
    0x00089274 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00089278 beq 0x89290                                   |             
    0x0008927c ldr r0, [r8, 0x1c]                            |             r0 = *((r8 + 0x1c));
    0x00089280 bl 0x87498                                    |             fcn_00087498 (r0);
    0x00089284 mov r1, sb                                    |             r1 = sb;
    0x00089288 bl 0x149d8                                    |             fputs_unlocked ();
                                                             | label_38:
    0x0008928c mov fp, 1                                     |             
                                                             |         }
    0x00089290 ldr r3, [sp, 0x44]                            |         r3 = var_44h;
    0x00089294 cmp r3, 0                                     |         
    0x00089298 bne 0x89208                                   |         
                                                             |     } while (r3 != 0);
    0x0008929c b 0x891c8                                     |     goto label_7;
                                                             | label_39:
    0x000892a0 bl 0x87498                                    |     fcn_00087498 (r0);
    0x000892a4 mov r1, sb                                    |     r1 = sb;
    0x000892a8 b 0x8926c                                     |     goto label_8;
                                                             | label_37:
    0x000892ac bl 0x8a5ec                                    |     fcn_0008a5ec (r0);
    0x000892b0 mov r1, sb                                    |     r1 = sb;
    0x000892b4 mov r8, r0                                    |     r8 = r0;
    0x000892b8 bl 0x149d8                                    |     fputs_unlocked ();
    0x000892bc mov r0, r8                                    |     r0 = r8;
    0x000892c0 bl 0x152a8                                    |     free (r0);
    0x000892c4 b 0x891e0                                     |     goto label_9;
    0x000892c8 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x000892cc str r3, [r8, -0x3c]                           |     *((r8 - 0x3c)) = r3;
    0x000892d0 b 0x88e58                                     |     goto label_1;
    0x000892d4 mov r1, r6                                    |     r1 = r6;
    0x000892d8 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x000892dc bl 0x87d18                                    |     fcn_00087d18 (r0, r1);
    0x000892e0 b 0x88e58                                     |     goto label_1;
    0x000892e4 mov r3, 1                                     |     r3 = 1;
    0x000892e8 str r3, [r8, -0x10]                           |     *((r8 - 0x10)) = r3;
    0x000892ec mov r3, 1                                     |     r3 = 1;
    0x000892f0 str r3, [r8, -0x14]                           |     *((r8 - 0x14)) = r3;
    0x000892f4 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x000892f8 bl 0x86c40                                    |     fcn_00086c40 (r0);
    0x000892fc b 0x88e58                                     |     goto label_1;
    0x00089300 ldrd r0, r1, [sp, 0x10]                       |     __asm ("ldrd r0, r1, [var_10h]");
    0x00089304 bl 0xa70f4                                    |     r0 = fcn_000a70f4 (r0, r1);
    0x00089308 bl 0x89c84                                    |     fcn_00089c84 (r0);
    0x0008930c ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x00089310 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00089314 ldr r2, [sp, 0x18]                            |     r2 = var_18h;
    0x00089318 ldr r3, [r8, 0x50]                            |     r3 = *((r8 + 0x50));
    0x0008931c cmp r2, r3                                    |     
                                                             |     if (r2 == r3) {
    0x00089320 bne 0x89328                                   |         
    0x00089324 bl 0x877b8                                    |         fcn_000877b8 ();
                                                             |     }
                                                             | label_10:
    0x00089328 ldr r3, [r4, 0xc]                             |     r3 = *((r4 + 0xc));
    0x0008932c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00089330 beq 0x88e58                                   |         goto label_1;
                                                             |     }
    0x00089334 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x00089338 bl 0x86aec                                    |     fcn_00086aec (r0);
    0x0008933c ldr r1, [sp, 0x2c]                            |     r1 = filename;
    0x00089340 bl 0x870ac                                    |     fcn_000870ac (r0, r1);
                                                             | label_11:
    0x00089344 str r0, [sp, 0x18]                            |     var_18h = r0;
    0x00089348 b 0x88e58                                     |     goto label_1;
    0x0008934c ldr r5, [r4, 8]                               |     r5 = *((r4 + 8));
    0x00089350 ldr r3, [r8, 0x8c]                            |     r3 = *((r8 + 0x8c));
    0x00089354 mov r2, 0x18                                  |     r2 = 0x18;
    0x00089358 mla r1, r2, r5, r3                            |     __asm ("mla r1, r2, r5, r3");
    0x0008935c str r1, [sp, 0x18]                            |     var_18h = r1;
    0x00089360 b 0x89328                                     |     goto label_10;
    0x00089364 mov r0, sl                                    |     r0 = sl;
    0x00089368 bl 0x86aec                                    |     fcn_00086aec (r0);
    0x0008936c mov r1, r7                                    |     r1 = r7;
    0x00089370 bl 0x8705c                                    |     fcn_0008705c (r0, r1);
    0x00089374 mov r2, 0                                     |     r2 = 0;
    0x00089378 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0008937c beq 0x899e4                                   |         goto label_40;
                                                             |     }
                                                             | label_22:
    0x00089380 ldr r3, [pc, 0x8c0]                           |     r3 = *(0x89c44);
    0x00089384 b 0x89644                                     |     goto label_15;
    0x00089388 ldr r0, [r8, 0x34]                            |     r0 = *((r8 + 0x34));
    0x0008938c str r4, [sp, 0x44]                            |     var_44h = r4;
    0x00089390 bl 0x87498                                    |     r0 = fcn_00087498 (r0);
    0x00089394 mov r7, r0                                    |     r7 = r0;
                                                             |     do {
    0x00089398 add r8, r8, 0x94                              |         r8 += 0x94;
    0x0008939c mov r1, r8                                    |         r1 = r8;
    0x000893a0 ldr r0, [sp, 0x44]                            |         r0 = var_44h;
    0x000893a4 bl 0x89d1c                                    |         fcn_00089d1c (r0, r1);
    0x000893a8 mov r3, 0                                     |         r3 = 0;
    0x000893ac str r3, [sp]                                  |         *(sp) = r3;
    0x000893b0 mov r2, r3                                    |         r2 = r3;
    0x000893b4 mov r1, r7                                    |         r1 = r7;
    0x000893b8 mov sb, r0                                    |         sb = r0;
    0x000893bc bl 0x14e34                                    |         regexec ();
    0x000893c0 cmp r8, sb                                    |         
    0x000893c4 mov r3, r0                                    |         r3 = r0;
                                                             |         if (r8 == sb) {
    0x000893c8 bne 0x893dc                                   |             
    0x000893cc str r0, [sp, 0x34]                            |             var_34h = r0;
    0x000893d0 mov r0, r8                                    |             r0 = r8;
    0x000893d4 bl 0x15170                                    |             regfree ();
    0x000893d8 ldr r3, [sp, 0x34]                            |             r3 = var_34h;
                                                             |         }
    0x000893dc sub r0, fp, 0x21                              |         r0 = fp - 0x21;
    0x000893e0 clz r0, r0                                    |         r0 &= r0;
    0x000893e4 lsr r0, r0, 5                                 |         r0 >>= 5;
    0x000893e8 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x000893ec eoreq r0, r0, 1                               |             r0 ^= 1;
                                                             |         }
                                                             | label_13:
    0x000893f0 bl 0xa6a74                                    |         r0 = fcn_000a6a74 (r0);
    0x000893f4 mov r2, r0                                    |         r2 = r0;
    0x000893f8 mov r3, r1                                    |         r3 = r1;
    0x000893fc b 0x89644                                     |         goto label_15;
    0x00089400 ldr r3, [r4, 0xc]                             |         r3 = *((r4 + 0xc));
    0x00089404 str r3, [sp, 0x44]                            |         var_44h = r3;
    0x00089408 b 0x89398                                     |         
                                                             |     } while (1);
    0x0008940c mov r1, sl                                    |     r1 = sl;
    0x00089410 mov r0, r6                                    |     r0 = r6;
    0x00089414 bl 0x87d18                                    |     fcn_00087d18 (r0, r1);
    0x00089418 b 0x89344                                     |     goto label_11;
    0x0008941c ldr r3, [r4, 0xc]                             |     r3 = *((r4 + 0xc));
    0x00089420 ldr r3, [r3]                                  |     r3 = *(r3);
    0x00089424 and r3, r3, 0xff00                            |     r3 &= 0xff00;
    0x00089428 cmp r3, 0x1200                                |     
                                                             |     if (r3 != 0x1200) {
    0x0008942c beq 0x89438                                   |         
                                                             | label_31:
    0x00089430 ldr r0, [pc, 0x814]                           |         r0 = *(0x89c48);
    0x00089434 b 0x88ea0                                     |         goto label_12;
                                                             |     }
    0x00089438 mov r0, r6                                    |     r0 = r6;
    0x0008943c bl 0x86fbc                                    |     fcn_00086fbc (r0);
    0x00089440 ldr r3, [r4, 0xc]                             |     r3 = *((r4 + 0xc));
    0x00089444 ldr r1, [sp, 0x18]                            |     r1 = var_18h;
    0x00089448 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0008944c ldrne r0, [r3, 8]                             |         r0 = *((r3 + 8));
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00089450 ldreq r0, [r3, 0xc]                           |         r0 = *((r3 + 0xc));
                                                             |     }
    0x00089454 bl 0x88d88                                    |     fcn_00088d88 (r0, r1, r2, r3, r4, r5, r6);
    0x00089458 b 0x89344                                     |     goto label_11;
    0x0008945c ldr r3, [r4, 0xc]                             |     r3 = *((r4 + 0xc));
    0x00089460 ldr r0, [r3]                                  |     r0 = *(r3);
    0x00089464 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00089468 bne 0x8947c                                   |         goto label_41;
                                                             |     }
    0x0008946c ldr r3, [r3, 4]                               |     r3 = *((r3 + 4));
    0x00089470 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00089474 ldreq r0, [pc, 0x7d4]                         |         r0 = "Call to undefined function";
                                                             |         goto label_42;
                                                             |     }
                                                             |     if (r3 == 0) {
                                                             | label_42:
    0x00089478 beq 0x88ea0                                   |         goto label_12;
                                                             |     }
                                                             | label_41:
    0x0008947c add r0, r0, 1                                 |     r0++;
    0x00089480 bl 0x86b54                                    |     r0 = fcn_00086b54 (r0);
    0x00089484 mov fp, r0                                    |     
    0x00089488 add sb, r0, 0x18                              |     sb = r0 + 0x18;
                                                             |     do {
    0x0008948c ldr r3, [sp, 0x44]                            |         r3 = var_44h;
    0x00089490 sub r2, sb, 0x18                              |         r2 = sb - 0x18;
    0x00089494 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00089498 beq 0x89500                                   |             goto label_43;
                                                             |         }
    0x0008949c add r0, sp, 0x44                              |         r0 += var_44h;
    0x000894a0 str r2, [sp, 0x38]                            |         var_38h = r2;
    0x000894a4 bl 0x86a88                                    |         fcn_00086a88 (r0);
    0x000894a8 ldr r1, [sp, 0x28]                            |         r1 = var_28h;
    0x000894ac bl 0x88d88                                    |         fcn_00088d88 (r0, r1, r2, r3, r4, r5, r6);
    0x000894b0 ldr r2, [sp, 0x38]                            |         r2 = var_38h;
    0x000894b4 mov r1, r0                                    |         r1 = r0;
    0x000894b8 str r0, [sp, 0x34]                            |         var_34h = r0;
    0x000894bc mov r0, r2                                    |         r0 = r2;
    0x000894c0 bl 0x87d18                                    |         fcn_00087d18 (r0, r1);
    0x000894c4 ldr r2, [sb, -0x18]                           |         r2 = *((sb - 0x18));
    0x000894c8 ldr r3, [sp, 0x34]                            |         r3 = var_34h;
    0x000894cc orr r2, r2, 0x2000                            |         r2 |= 0x2000;
    0x000894d0 str r2, [sb, -0x18]                           |         *((sb - 0x18)) = r2;
    0x000894d4 ldr r2, [pc, 0x778]                           |         
    0x000894d8 str r3, [sb, -4]                              |         *((sb - 4)) = r3;
    0x000894dc sub r3, sb, fp                                |         r3 = sb - fp;
    0x000894e0 asr r3, r3, 3                                 |         r3 >>= 3;
    0x000894e4 mul r2, r3, r2                                |         r2 = r3 * r2;
    0x000894e8 add sb, sb, 0x18                              |         sb += 0x18;
    0x000894ec mov r3, r2                                    |         r3 = r2;
    0x000894f0 ldr r2, [r4, 0xc]                             |         r2 = *((r4 + 0xc));
    0x000894f4 ldr r2, [r2]                                  |         r2 = "Call to undefined function";
    0x000894f8 cmp r3, r2                                    |         
    0x000894fc blo 0x8948c                                   |         
                                                             |     } while (r3 <= r2);
                                                             | label_43:
    0x00089500 ldr r3, [r4, 0xc]                             |     r3 = *((r4 + 0xc));
    0x00089504 ldr sb, [r8, 0x8c]                            |     sb = *((r8 + 0x8c));
    0x00089508 ldr r1, [sp, 0x18]                            |     r1 = var_18h;
    0x0008950c str fp, [r8, 0x8c]                            |     *((r8 + 0x8c)) = fp;
    0x00089510 ldr r0, [r3, 4]                               |     r0 = *((r3 + 4));
    0x00089514 ldr fp, [r8, -0x3c]                           |     fp = *((r8 - 0x3c));
    0x00089518 bl 0x88d88                                    |     fcn_00088d88 (r0, r1, r2, r3, r4, r5, r6);
    0x0008951c str fp, [r8, -0x3c]                           |     *((r8 - 0x3c)) = fp;
    0x00089520 str r0, [sp, 0x18]                            |     var_18h = r0;
    0x00089524 ldr r0, [r8, 0x8c]                            |     r0 = *((r8 + 0x8c));
    0x00089528 bl 0x8815c                                    |     fcn_0008815c (r0);
    0x0008952c str sb, [r8, 0x8c]                            |     *((r8 + 0x8c)) = sb;
    0x00089530 b 0x88e58                                     |     goto label_1;
    0x00089534 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00089538 and sb, r3, 0xff00                            |     sb = r3 & 0xff00;
    0x0008953c ldr r3, [sp, 0x44]                            |     r3 = var_44h;
    0x00089540 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00089544 beq 0x895f4                                   |         goto label_44;
                                                             |     }
    0x00089548 ldr r0, [r8, -0x44]                           |     r0 = *((r8 - 0x44));
    0x0008954c mov r1, r7                                    |     r1 = r7;
    0x00089550 bl 0x870ac                                    |     r0 = fcn_000870ac (r0, r1);
    0x00089554 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00089558 mov r8, r0                                    |     r8 = r0;
    0x0008955c cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00089560 bne 0x89584                                   |         goto label_14;
                                                             |     }
    0x00089564 cmp sb, 0x2000                                |     
                                                             |     if (sb != 0x2000) {
    0x00089568 bne 0x895e4                                   |         goto label_45;
                                                             |     }
    0x0008956c ldr r1, [pc, 0x6e4]                           |     r1 = *(0x89c54);
    0x00089570 mov r0, r7                                    |     r0 = r7;
    0x00089574 bl 0x14354                                    |     popen (r0, r1)
    0x00089578 mov r3, 1                                     |     r3 = 1;
    0x0008957c str r3, [r8, 0x14]                            |     *((r8 + 0x14)) = r3;
    0x00089580 str r0, [r8]                                  |     *(r8) = r0;
                                                             |     do {
                                                             | label_14:
    0x00089584 ldr r3, [r8]                                  |         r3 = *(r8);
    0x00089588 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x0008958c beq 0x89614                                   |             goto label_46;
                                                             |         }
    0x00089590 ldr r3, [r4, 0xc]                             |         r3 = *((r4 + 0xc));
    0x00089594 mov r0, r8                                    |         r0 = r8;
    0x00089598 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x0008959c ldreq r3, [pc, 0x68c]                         |             r3 = *(0x00089c30);
                                                             |         }
                                                             |         if (r3 != 0) {
    0x000895a0 ldreq r3, [r3]                                |             r3 = *(r3);
                                                             |         }
                                                             |         if (r3 != 0) {
    0x000895a4 ldreq sl, [r3, 0x34]                          |             sl = *((r3 + 0x34));
                                                             |         }
    0x000895a8 mov r1, sl                                    |         r1 = sl;
    0x000895ac bl 0x88254                                    |         r0 = fcn_00088254 (r0, r1);
    0x000895b0 subs sb, r0, 0                                |         sb = r0 - 0;
                                                             |         if (sb > r0) {
    0x000895b4 ble 0x895dc                                   |             
    0x000895b8 ldr r3, [sp, 0x44]                            |             r3 = var_44h;
    0x000895bc cmp r3, 0                                     |             
                                                             |             if (r3 != 0) {
    0x000895c0 bne 0x895dc                                   |                 goto label_47;
                                                             |             }
    0x000895c4 ldr r3, [pc, 0x664]                           |             r3 = *(0x89c2c);
    0x000895c8 ldr r8, [r3]                                  |             r8 = *(0x89c2c);
    0x000895cc ldr r0, [r8, 0x48]                            |             r0 = *(0x89c74);
    0x000895d0 bl 0x87bc8                                    |             fcn_00087bc8 (r0);
    0x000895d4 ldr r0, [r8, 0x4c]                            |             r0 = "_s_s_s";
    0x000895d8 bl 0x87bc8                                    |             fcn_00087bc8 ("_s_s_s");
                                                             |         }
                                                             | label_47:
    0x000895dc mov r0, sb                                    |         r0 = sb;
    0x000895e0 b 0x893f0                                     |         goto label_13;
                                                             | label_45:
    0x000895e4 mov r0, r7                                    |         r0 = r7;
    0x000895e8 bl 0xa5630                                    |         fcn_000a5630 ();
    0x000895ec str r0, [r8]                                  |         *(r8) = r0;
    0x000895f0 b 0x89584                                     |         
                                                             |     } while (1);
                                                             | label_44:
    0x000895f4 ldr r3, [r8, -0x50]                           |     r3 = *((r8 - 0x50));
    0x000895f8 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000895fc bne 0x89608                                   |         
    0x00089600 bl 0x87bf8                                    |         fcn_00087bf8 ();
    0x00089604 str r0, [r8, -0x50]                           |         *((r8 - 0x50)) = r0;
                                                             |     }
    0x00089608 ldr r8, [r8, -0x50]                           |     r8 = *((r8 - 0x50));
    0x0008960c cmp r8, 0                                     |     
                                                             |     if (r8 != 0) {
    0x00089610 bne 0x89584                                   |         goto label_14;
                                                             |     }
                                                             | label_46:
    0x00089614 ldr r3, [pc, 0x640]                           |     
    0x00089618 ldr r3, [r3]                                  |     r3 = *(0x89c58);
    0x0008961c ldr r0, [r3]                                  |     r0 = *(0x89c58);
    0x00089620 bl 0xa6a74                                    |     fcn_000a6a74 (r0);
    0x00089624 mov r3, r1                                    |     r3 = r1;
    0x00089628 ldr r1, [pc, 0x600]                           |     
    0x0008962c mov r2, r0                                    |     r2 = r0;
    0x00089630 ldr r1, [r1]                                  |     r1 = *(0x89c2c);
    0x00089634 ldr r0, [r1, 0x44]                            |     r0 = "Access to negative field";
    0x00089638 bl 0x87b94                                    |     fcn_00087b94 ("Access to negative field");
    0x0008963c ldr r3, [pc, 0x61c]                           |     r3 = *(0x89c5c);
    0x00089640 mov r2, 0                                     |     r2 = 0;
                                                             | label_15:
    0x00089644 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x00089648 bl 0x87b94                                    |     fcn_00087b94 (r0);
    0x0008964c b 0x88e58                                     |     goto label_1;
    0x00089650 cmp fp, 0xc                                   |     
                                                             |     if (fp > 0xc) {
                                                             |         /* switch table (13 cases) at 0x8965c */
    0x00089654 ldrls pc, [pc, fp, lsl 2]                     |         offset_2 = fp << 2;
                                                             |         pc = *((pc + offset_2));
                                                             |     }
    0x00089658 b 0x896ec                                     |     goto label_18;
    0x00089690 ldrd r0, r1, [sp, 0x10]                       |     __asm ("ldrd r0, r1, [var_10h]");
    0x00089694 bl 0xa78d4                                    |     r0 = fcn_000a78d4 (r0, r1);
    0x00089698 bl 0xa6af8                                    |     fcn_000a6af8 (r0, r1);
                                                             |     do {
                                                             | label_16:
    0x0008969c strd r0, r1, [sp, 0x20]                       |         __asm ("strd r0, r1, [sp, 0x20]");
    0x000896a0 b 0x896ec                                     |         goto label_18;
    0x000896a4 bl 0x14b28                                    |         rand ();
    0x000896a8 bl 0xa6a74                                    |         fcn_000a6a74 (r0);
    0x000896ac ldr r2, [pc, 0x5b0]                           |         r2 = *(0x89c60);
    0x000896b0 ldr r3, [pc, 0x5b0]                           |         r3 = *(0x89c64);
    0x000896b4 bl 0xa6dc4                                    |         fcn_000a6dc4 (r0);
    0x000896b8 b 0x8969c                                     |         
                                                             |     } while (1);
    0x000896bc ldr r0, [pc, 0x5a8]                           |     r0 = *(0x89c68);
    0x000896c0 b 0x88ea0                                     |     goto label_12;
    0x000896c4 ldr r0, [r8, 0x90]                            |     r0 = *((r8 + 0x90));
    0x000896c8 bl 0xa6a50                                    |     fcn_000a6a50 (r0);
    0x000896cc strd r0, r1, [sp, 0x20]                       |     __asm ("strd r0, r1, [sp, 0x20]");
    0x000896d0 ldr r0, [sp, 0x44]                            |     r0 = var_44h;
    0x000896d4 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000896d8 beq 0x896f4                                   |         goto label_48;
                                                             |     }
    0x000896dc ldrd r0, r1, [sp, 0x10]                       |     __asm ("ldrd r0, r1, [var_10h]");
    0x000896e0 bl 0xa7150                                    |     fcn_000a7150 (r0, r1);
                                                             |     do {
    0x000896e4 str r0, [r8, 0x90]                            |         *((r8 + 0x90)) = r0;
    0x000896e8 bl 0x14dc8                                    |         srand (r0);
                                                             | label_18:
    0x000896ec ldrd r2, r3, [sp, 0x20]                       |         __asm ("ldrd r2, r3, [var_20h]");
    0x000896f0 b 0x89644                                     |         goto label_15;
                                                             | label_48:
    0x000896f4 bl 0x14e40                                    |         time (r0);
    0x000896f8 b 0x896e4                                     |         
                                                             |     } while (1);
    0x000896fc mov r0, 0                                     |     r0 = 0;
    0x00089700 bl 0x14e40                                    |     r0 = time (r0);
                                                             | label_17:
    0x00089704 bl 0xa6a74                                    |     fcn_000a6a74 (r0);
    0x00089708 b 0x8969c                                     |     goto label_16;
    0x0008970c ldr r3, [sp, 0x44]                            |     r3 = var_44h;
    0x00089710 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00089714 bne 0x89730                                   |         goto label_49;
                                                             |     }
    0x00089718 ldr r0, [r8, 0x34]                            |     r0 = *((r8 + 0x34));
    0x0008971c bl 0x87498                                    |     r0 = fcn_00087498 (r0);
    0x00089720 mov r7, r0                                    |     r7 = r0;
                                                             |     do {
    0x00089724 mov r0, r7                                    |         r0 = r7;
    0x00089728 bl 0x1514c                                    |         strlen (r0);
    0x0008972c b 0x89744                                     |         goto label_50;
                                                             | label_49:
    0x00089730 ldr r3, [r6]                                  |         r3 = *(r6);
    0x00089734 tst r3, 2                                     |         
                                                             |         if ((r3 & 2) == 0) {
    0x00089738 ldrne r3, [r6, 0x14]                          |             r3 = *((r6 + 0x14));
                                                             |         }
                                                             |         if ((r3 & 2) == 0) {
    0x0008973c ldrne r0, [r3]                                |             r0 = *(r3);
                                                             |         }
    0x00089740 beq 0x89724                                   |         
                                                             |     } while ((r3 & 2) == 0);
                                                             | label_50:
    0x00089744 bl 0xa6a50                                    |     fcn_000a6a50 (r0);
    0x00089748 b 0x8969c                                     |     goto label_16;
    0x0008974c bl 0x18cdc                                    |     fcn_00018cdc ();
    0x00089750 cmp r7, 0                                     |     
                                                             |     if (r7 == 0) {
    0x00089754 beq 0x89840                                   |         goto label_51;
                                                             |     }
    0x00089758 ldrb r3, [r7]                                 |     r3 = *(r7);
    0x0008975c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00089760 beq 0x89840                                   |         goto label_51;
                                                             |     }
    0x00089764 mov r0, r7                                    |     r0 = r7;
    0x00089768 bl 0x146c0                                    |     r0 = system (r0);
    0x0008976c asr r0, r0, 8                                 |     r0 >>= 8;
    0x00089770 b 0x89704                                     |     goto label_17;
    0x00089774 ldr r3, [sp, 0x44]                            |     r3 = var_44h;
    0x00089778 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0008977c ldreq r3, [pc, 0x4b4]                         |         r3 = obj.stdout;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x00089780 ldreq r0, [r3]                                |         r0 = *(r3);
                                                             |     }
                                                             |     if (r3 != 0) {
    0x00089784 beq 0x897ac                                   |         
    0x00089788 cmp r7, 0                                     |         
                                                             |         if (r7 == 0) {
    0x0008978c beq 0x897b4                                   |             goto label_52;
                                                             |         }
    0x00089790 ldrb r3, [r7]                                 |         r3 = *(r7);
    0x00089794 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00089798 beq 0x897b4                                   |             goto label_52;
                                                             |         }
    0x0008979c mov r1, r7                                    |         r1 = r7;
    0x000897a0 ldr r0, [r8, -0x44]                           |         r0 = *((r8 - 0x44));
    0x000897a4 bl 0x870ac                                    |         r0 = fcn_000870ac (r0, r1);
    0x000897a8 ldr r0, [r0]                                  |         r0 = *(r0);
                                                             |     }
    0x000897ac bl 0x147ec                                    |     fflush (r0);
    0x000897b0 b 0x896ec                                     |     goto label_18;
                                                             | label_52:
    0x000897b4 bl 0x18cdc                                    |     fcn_00018cdc ();
    0x000897b8 b 0x896ec                                     |     goto label_18;
    0x000897bc mov r1, r7                                    |     r1 = r7;
    0x000897c0 ldr r0, [r8, -0x44]                           |     r0 = *((r8 - 0x44));
    0x000897c4 bl 0x8705c                                    |     r0 = fcn_0008705c (r0, r1);
    0x000897c8 subs fp, r0, 0                                |     
                                                             |     if (fp != r0) {
    0x000897cc moveq sb, fp                                  |         sb = fp;
                                                             |     }
                                                             |     if (fp == r0) {
    0x000897d0 beq 0x89830                                   |         goto label_53;
                                                             |     }
    0x000897d4 ldr r0, [fp]                                  |     r0 = *(fp);
    0x000897d8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000897dc beq 0x897f0                                   |         goto label_54;
                                                             |     }
    0x000897e0 ldr r3, [fp, 0x14]                            |     r3 = *(arg_14h);
    0x000897e4 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000897e8 beq 0x89838                                   |         goto label_55;
                                                             |     }
    0x000897ec bl 0x14438                                    |     r0 = pclose (r0);
                                                             |     do {
                                                             | label_54:
    0x000897f0 mov sb, r0                                    |         sb = r0;
    0x000897f4 ldr r0, [fp, 4]                               |         r0 = *(ptr);
    0x000897f8 bl 0x152a8                                    |         free (r0);
    0x000897fc mov r1, r7                                    |         r1 = r7;
    0x00089800 ldr r0, [r8, -0x44]                           |         r0 = *((r8 - 0x44));
    0x00089804 bl 0x871d0                                    |         fcn_000871d0 (r0, r1);
    0x00089808 cmp sb, 0                                     |         
                                                             |         if (sb != 0) {
    0x0008980c beq 0x89830                                   |             
    0x00089810 ldr r3, [pc, 0x444]                           |             
    0x00089814 ldr r3, [r3]                                  |             r3 = *(0x89c58);
    0x00089818 ldr r0, [r3]                                  |             r0 = *(0x89c58);
    0x0008981c bl 0xa6a74                                    |             r0 = fcn_000a6a74 (r0);
    0x00089820 mov r2, r0                                    |             r2 = r0;
    0x00089824 mov r3, r1                                    |             r3 = r1;
    0x00089828 ldr r0, [r8, 0x44]                            |             r0 = *((r8 + 0x44));
    0x0008982c bl 0x87b94                                    |             fcn_00087b94 (r0);
                                                             |         }
                                                             | label_53:
    0x00089830 mov r0, sb                                    |         r0 = sb;
    0x00089834 b 0x89704                                     |         goto label_17;
                                                             | label_55:
    0x00089838 bl 0x14dec                                    |         fclose (r0);
    0x0008983c b 0x897f0                                     |         
                                                             |     } while (1);
                                                             | label_51:
    0x00089840 mov r2, 0                                     |     r2 = 0;
    0x00089844 mov r3, 0                                     |     r3 = 0;
    0x00089848 strd r2, r3, [sp, 0x20]                       |     __asm ("strd r2, r3, [sp, 0x20]");
    0x0008984c b 0x896ec                                     |     goto label_18;
    0x00089850 ldr r1, [sp, 0x18]                            |     r1 = var_18h;
    0x00089854 mov r0, r4                                    |     r0 = r4;
    0x00089858 bl 0x8a03c                                    |     fcn_0008a03c (r0, r1);
    0x0008985c b 0x89344                                     |     goto label_11;
    0x00089860 ldr r0, [sp, 0x44]                            |     r0 = var_44h;
    0x00089864 bl 0x8a5ec                                    |     r0 = fcn_0008a5ec (r0);
                                                             | label_21:
    0x00089868 mov r1, r0                                    |     r1 = r0;
    0x0008986c ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x00089870 bl 0x87a44                                    |     fcn_00087a44 (r0, r1);
    0x00089874 b 0x88e58                                     |     goto label_1;
    0x00089878 mov r0, sl                                    |     r0 = sl;
    0x0008987c bl 0x86f20                                    |     fcn_00086f20 (r0);
    0x00089880 cmp fp, 0x4d                                  |     
    0x00089884 mov r8, r0                                    |     r8 = r0;
    0x00089888 mov sb, r1                                    |     sb = r1;
                                                             |     if (fp == 0x4d) {
    0x0008988c beq 0x89900                                   |         goto label_56;
                                                             |     }
                                                             |     if (fp > 0x4d) {
    0x00089890 bgt 0x898b0                                   |         goto label_57;
                                                             |     }
    0x00089894 cmp fp, 0x21                                  |     
                                                             |     if (fp == 0x21) {
    0x00089898 beq 0x89920                                   |         goto label_58;
                                                             |     }
    0x0008989c cmp fp, 0x2d                                  |     
    0x000898a0 addeq sb, r1, 0x80000000                      |     sb = r1 + 0x80000000;
                                                             |     while (fp != 0x50) {
                                                             | label_19:
    0x000898a4 mov r2, r8                                    |         r2 = r8;
    0x000898a8 mov r3, sb                                    |         r3 = sb;
    0x000898ac b 0x89644                                     |         goto label_15;
                                                             | label_57:
    0x000898b0 cmp fp, 0x6d                                  |         
                                                             |         if (fp == 0x6d) {
    0x000898b4 beq 0x89910                                   |             goto label_59;
                                                             |         }
    0x000898b8 cmp fp, 0x70                                  |         
                                                             |         if (fp == 0x70) {
    0x000898bc beq 0x898e0                                   |             goto label_60;
                                                             |         }
    0x000898c0 cmp fp, 0x50                                  |         
    0x000898c4 bne 0x898a4                                   |         
                                                             |     }
    0x000898c8 mov r2, 0                                     |     r2 = 0;
    0x000898cc ldr r3, [pc, 0x374]                           |     r3 = *(0x89c44);
    0x000898d0 bl 0xa67a4                                    |     r0 = fcn_000a67a4 (r0, r1);
                                                             |     do {
    0x000898d4 mov r8, r0                                    |         r8 = r0;
    0x000898d8 mov sb, r1                                    |         sb = r1;
    0x000898dc b 0x898ec                                     |         goto label_20;
                                                             | label_60:
    0x000898e0 mov r2, 0                                     |         r2 = 0;
    0x000898e4 ldr r3, [pc, 0x35c]                           |         r3 = *(0x89c44);
    0x000898e8 bl 0xa67a4                                    |         r0 = fcn_000a67a4 (r0, r1);
                                                             | label_20:
    0x000898ec mov r2, r0                                    |         r2 = r0;
    0x000898f0 mov r3, r1                                    |         r3 = r1;
    0x000898f4 mov r0, sl                                    |         r0 = sl;
    0x000898f8 bl 0x87b94                                    |         fcn_00087b94 (r0);
    0x000898fc b 0x898a4                                     |         goto label_19;
                                                             | label_56:
    0x00089900 mov r2, 0                                     |         r2 = 0;
    0x00089904 ldr r3, [pc, 0x33c]                           |         r3 = *(0x89c44);
    0x00089908 bl 0xa67a0                                    |         fcn_000a67a0 (r0, r1);
    0x0008990c b 0x898d4                                     |         
                                                             |     } while (1);
                                                             | label_59:
    0x00089910 mov r2, 0                                     |     r2 = 0;
    0x00089914 ldr r3, [pc, 0x32c]                           |     r3 = *(0x89c44);
    0x00089918 bl 0xa67a0                                    |     fcn_000a67a0 (r0, r1);
    0x0008991c b 0x898ec                                     |     goto label_20;
                                                             | label_58:
    0x00089920 mov r0, sl                                    |     r0 = sl;
    0x00089924 bl 0x86fbc                                    |     r0 = fcn_00086fbc (r0);
    0x00089928 subs r8, r0, 0                                |     r8 = r0 - 0;
                                                             |     if (r8 == r0) {
    0x0008992c movne r8, 0                                   |         r8 = 0;
                                                             |     }
                                                             |     if (r8 != r0) {
    0x00089930 ldreq sb, [pc, 0x310]                         |         sb = *(0x00089c48);
                                                             |     }
                                                             |     if (r8 == r0) {
    0x00089934 movne sb, r8                                  |         sb = r8;
                                                             |     }
    0x00089938 b 0x898a4                                     |     goto label_19;
    0x0008993c mov r0, sl                                    |     r0 = sl;
    0x00089940 bl 0x86f20                                    |     r0 = fcn_00086f20 (r0);
    0x00089944 bl 0xa70f4                                    |     r0 = fcn_000a70f4 (r0, r1);
    0x00089948 subs sb, r0, 0                                |     sb = r0 - 0;
                                                             |     if (sb < r0) {
    0x0008994c ldrlt r0, [pc, 0x31c]                         |         r0 = "Access to negative field";
                                                             |         goto label_61;
                                                             |     }
                                                             |     if (sb < r0) {
                                                             | label_61:
    0x00089950 blt 0x88ea0                                   |         goto label_12;
                                                             |     }
                                                             |     if (sb != r0) {
    0x00089954 ldreq r3, [r8, 0x34]                          |         r3 = *((r8 + 0x34));
                                                             |     }
                                                             |     if (sb != r0) {
    0x00089958 beq 0x89988                                   |         
    0x0008995c bl 0x877b8                                    |         fcn_000877b8 ();
    0x00089960 ldr r3, [r8, -0x34]                           |         r3 = *((r8 - 0x34));
    0x00089964 cmp r3, sb                                    |         
                                                             |         if (r3 < sb) {
    0x00089968 bge 0x89974                                   |             
    0x0008996c mov r0, sb                                    |             r0 = sb;
    0x00089970 bl 0x86c88                                    |             fcn_00086c88 (r0, r1);
                                                             |         }
    0x00089974 mov r3, 0x18                                  |         r3 = 0x18;
    0x00089978 mul r5, r3, sb                                |         r5 = r3 * sb;
    0x0008997c ldr r3, [r8, -0x2c]                           |         r3 = *((r8 - 0x2c));
    0x00089980 sub r5, r5, 0x18                              |         r5 -= 0x18;
    0x00089984 add r3, r3, r5                                |         r3 += r5;
                                                             |     }
    0x00089988 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x0008998c b 0x88e58                                     |     goto label_1;
    0x00089990 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00089994 and r3, r3, 0xff00                            |     r3 &= 0xff00;
    0x00089998 cmp r3, 0x1300                                |     
                                                             |     if (r3 == 0x1300) {
    0x0008999c ldrne r2, [pc, 0x2d0]                         |         r2 = *((pc + 0x2d0));
                                                             |     }
                                                             |     if (r3 == 0x1300) {
    0x000899a0 bne 0x899b0                                   |         
    0x000899a4 ldr r0, [r8, 0x30]                            |         r0 = *((r8 + 0x30));
    0x000899a8 bl 0x87498                                    |         r0 = fcn_00087498 (r0);
    0x000899ac mov r2, r0                                    |         r2 = r0;
                                                             |     }
    0x000899b0 ldr r3, [sp, 0x2c]                            |     r3 = filename;
    0x000899b4 mov r1, r7                                    |     r1 = r7;
    0x000899b8 ldr r0, [pc, 0x2b8]                           |     r0 = *(0x89c74);
    0x000899bc bl 0x18d1c                                    |     fcn_00018d1c ();
    0x000899c0 b 0x89868                                     |     goto label_21;
    0x000899c4 mov r0, r6                                    |     r0 = r6;
    0x000899c8 bl 0x86fbc                                    |     r0 = fcn_00086fbc (r0);
    0x000899cc cmp r0, 0                                     |     
    0x000899d0 beq 0x899e0                                   |     
                                                             |     while (r0 == 0) {
    0x000899d4 ldr r0, [r4, 0xc]                             |         r0 = *((r4 + 0xc));
    0x000899d8 bl 0x8a800                                    |         fcn_0008a800 (r0);
    0x000899dc b 0x893f0                                     |         goto label_13;
    0x000899e0 mov r2, 0                                     |         r2 = 0;
                                                             | label_40:
    0x000899e4 mov r3, 0                                     |         r3 = 0;
    0x000899e8 b 0x89644                                     |         goto label_15;
    0x000899ec mov r0, r6                                    |         r0 = r6;
    0x000899f0 bl 0x86fbc                                    |         r0 = fcn_00086fbc (r0);
    0x000899f4 cmp r0, 0                                     |         
    0x000899f8 beq 0x899d4                                   |         
                                                             |     }
    0x000899fc mov r2, 0                                     |     r2 = 0;
    0x00089a00 b 0x89380                                     |     goto label_22;
    0x00089a04 mov r0, sl                                    |     r0 = sl;
    0x00089a08 bl 0x86f20                                    |     fcn_00086f20 (r0);
    0x00089a0c sub fp, fp, 0x25                              |     
    0x00089a10 mov r8, r0                                    |     r8 = r0;
    0x00089a14 mov sb, r1                                    |     sb = r1;
    0x00089a18 cmp fp, 0xa                                   |     
                                                             |     if (fp > 0xa) {
                                                             |         /* switch table (11 cases) at 0x89a24 */
    0x00089a1c ldrls pc, [pc, fp, lsl 2]                     |         offset_3 = fp << 2;
                                                             |         pc = *((pc + offset_3));
                                                             |     }
    0x00089a20 b 0x89a64                                     |     goto label_62;
    0x00089a50 mov r2, r0                                    |     r2 = r0;
    0x00089a54 mov r3, r1                                    |     r3 = r1;
    0x00089a58 ldrd r0, r1, [sp, 0x10]                       |     __asm ("ldrd r0, r1, [var_10h]");
    0x00089a5c bl 0xa67a4                                    |     fcn_000a67a4 (r0, r1);
                                                             |     do {
                                                             | label_23:
    0x00089a60 strd r0, r1, [sp, 0x10]                       |         __asm ("strd r0, r1, [sp, 0x10]");
                                                             | label_62:
    0x00089a64 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x00089a68 ldr r1, [sp, 0x18]                            |         r1 = var_18h;
    0x00089a6c and r0, r3, 0xff00                            |         r0 = r3 & 0xff00;
    0x00089a70 cmp r0, 0x1000                                |         
                                                             |         if (r0 == 0x1000) {
    0x00089a74 movne r1, r6                                  |             r1 = r6;
                                                             |         }
    0x00089a78 ldrd r2, r3, [sp, 0x10]                       |         __asm ("ldrd r2, r3, [var_10h]");
    0x00089a7c mov r0, r1                                    |         r0 = r1;
    0x00089a80 bl 0x87b94                                    |         fcn_00087b94 (r0);
    0x00089a84 b 0x89344                                     |         goto label_11;
    0x00089a88 mov r2, r0                                    |         r2 = r0;
    0x00089a8c mov r3, r1                                    |         r3 = r1;
                                                             | label_24:
    0x00089a90 ldrd r0, r1, [sp, 0x10]                       |         __asm ("ldrd r0, r1, [var_10h]");
    0x00089a94 bl 0xa67a0                                    |         fcn_000a67a0 (r0, r1);
    0x00089a98 b 0x89a60                                     |         
                                                             |     } while (1);
    0x00089a9c mov r2, r0                                    |     r2 = r0;
    0x00089aa0 mov r3, r1                                    |     r3 = r1;
    0x00089aa4 ldrd r0, r1, [sp, 0x10]                       |     __asm ("ldrd r0, r1, [var_10h]");
    0x00089aa8 bl 0xa6b58                                    |     fcn_000a6b58 (r0);
    0x00089aac b 0x89a60                                     |     goto label_23;
    0x00089ab0 mov r2, 0                                     |     r2 = 0;
    0x00089ab4 mov r3, 0                                     |     r3 = 0;
    0x00089ab8 bl 0xa7090                                    |     r0 = fcn_000a7090 (r0, r1);
    0x00089abc cmp r0, 0                                     |     
    0x00089ac0 beq 0x89acc                                   |     
                                                             |     while (r0 != 0) {
    0x00089ac4 ldr r0, [pc, 0x1b0]                           |         r0 = "_s_s_s";
    0x00089ac8 b 0x88ea0                                     |         goto label_12;
    0x00089acc mov r2, r8                                    |         r2 = r8;
    0x00089ad0 mov r3, sb                                    |         r3 = sb;
    0x00089ad4 ldrd r0, r1, [sp, 0x10]                       |         __asm ("ldrd r0, r1, [var_10h]");
    0x00089ad8 bl 0xa6dc4                                    |         fcn_000a6dc4 (r0);
    0x00089adc b 0x89a60                                     |         goto label_23;
    0x00089ae0 mov r2, 0                                     |         r2 = 0;
    0x00089ae4 mov r3, 0                                     |         r3 = 0;
    0x00089ae8 bl 0xa7090                                    |         r0 = fcn_000a7090 (r0, r1);
    0x00089aec cmp r0, 0                                     |         
    0x00089af0 bne 0x89ac4                                   |         
                                                             |     }
    0x00089af4 mov r2, r8                                    |     r2 = r8;
    0x00089af8 mov r3, sb                                    |     r3 = sb;
    0x00089afc ldrd r0, r1, [sp, 0x10]                       |     __asm ("ldrd r0, r1, [var_10h]");
    0x00089b00 bl 0xa6dc4                                    |     r0 = fcn_000a6dc4 (r0);
    0x00089b04 bl 0xa78d4                                    |     r0 = fcn_000a78d4 (r0, r1);
    0x00089b08 bl 0xa6af8                                    |     fcn_000a6af8 (r0, r1);
    0x00089b0c mov r2, r8                                    |     r2 = r8;
    0x00089b10 mov r3, sb                                    |     r3 = sb;
    0x00089b14 bl 0xa6b58                                    |     r0 = fcn_000a6b58 (r0);
    0x00089b18 mov r2, r0                                    |     r2 = r0;
    0x00089b1c mov r3, r1                                    |     r3 = r1;
    0x00089b20 b 0x89a90                                     |     goto label_24;
    0x00089b24 mov r0, r6                                    |     r0 = r6;
    0x00089b28 bl 0x86f20                                    |     fcn_00086f20 (r0);
    0x00089b2c ldr r3, [r6]                                  |     r3 = *(r6);
    0x00089b30 ldr sb, [pc, 0x148]                           |     sb = *(0x00089c80);
    0x00089b34 eor r3, r3, 0x4000                            |     r3 ^= 0x4000;
    0x00089b38 tst r3, sb                                    |     
                                                             |     if ((r3 & sb) == 0) {
    0x00089b3c beq 0x89bd4                                   |         goto label_63;
                                                             |     }
    0x00089b40 mov r0, sl                                    |     r0 = sl;
    0x00089b44 bl 0x86f20                                    |     fcn_00086f20 (r0);
    0x00089b48 ldr r3, [sl]                                  |     r3 = *(sl);
    0x00089b4c eor r3, r3, 0x4000                            |     r3 ^= 0x4000;
    0x00089b50 tst r3, sb                                    |     
                                                             |     if ((r3 & sb) == 0) {
    0x00089b54 beq 0x89bd4                                   |         goto label_63;
                                                             |     }
    0x00089b58 mov r0, r6                                    |     r0 = r6;
    0x00089b5c bl 0x86f20                                    |     r0 = fcn_00086f20 (r0);
    0x00089b60 mov r8, r0                                    |     r8 = r0;
    0x00089b64 mov r0, sl                                    |     r0 = sl;
    0x00089b68 mov sb, r1                                    |     sb = r1;
    0x00089b6c bl 0x86f20                                    |     r0 = fcn_00086f20 (r0);
    0x00089b70 mov r2, r0                                    |     r2 = r0;
    0x00089b74 mov r3, r1                                    |     r3 = r1;
    0x00089b78 mov r0, r8                                    |     r0 = r8;
    0x00089b7c mov r1, sb                                    |     r1 = sb;
    0x00089b80 bl 0xa67a0                                    |     fcn_000a67a0 (r0, r1);
                                                             |     do {
    0x00089b84 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x00089b88 and r3, r3, 0x7e                              |         r3 &= 0x7e;
    0x00089b8c cmp r3, 2                                     |         
                                                             |         if (r3 == 2) {
    0x00089b90 beq 0x89c10                                   |             goto label_64;
                                                             |         }
    0x00089b94 cmp r3, 4                                     |         
                                                             |         if (r3 == 4) {
    0x00089b98 beq 0x89c20                                   |             goto label_65;
                                                             |         }
    0x00089b9c cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00089ba0 bne 0x89bbc                                   |             
    0x00089ba4 mov r2, 0                                     |             r2 = 0;
    0x00089ba8 mov r3, 0                                     |             r3 = 0;
    0x00089bac bl 0xa70e0                                    |             r0 = fcn_000a70e0 ();
                                                             | label_26:
    0x00089bb0 adds r3, r0, 0                                |             r3 = r0 + 0;
                                                             |             if (r3 == r0) {
    0x00089bb4 movne r3, 1                                   |                 r3 = 1;
                                                             |             }
    0x00089bb8 str r3, [sp, 0x30]                            |             var_30h = r3;
                                                             |         }
    0x00089bbc ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x00089bc0 mvn r0, r3                                    |         r0 = ~r3;
    0x00089bc4 ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x00089bc8 and r0, r0, 1                                 |         r0 &= 1;
    0x00089bcc eor r0, r0, r3                                |         r0 ^= r3;
    0x00089bd0 b 0x893f0                                     |         goto label_13;
                                                             | label_63:
    0x00089bd4 mov r0, r6                                    |         r0 = r6;
    0x00089bd8 bl 0x87498                                    |         r0 = fcn_00087498 (r0);
    0x00089bdc mov sb, r0                                    |         sb = r0;
    0x00089be0 mov r0, sl                                    |         r0 = sl;
    0x00089be4 bl 0x87498                                    |         fcn_00087498 (r0);
    0x00089be8 ldr r3, [r8, -0x1c]                           |         r3 = *((r8 - 0x1c));
    0x00089bec cmp r3, 0                                     |         
    0x00089bf0 mov r1, r0                                    |         r1 = r0;
    0x00089bf4 mov r0, sb                                    |         r0 = sb;
                                                             |         if (r3 == 0) {
    0x00089bf8 beq 0x89c08                                   |             goto label_66;
                                                             |         }
    0x00089bfc bl 0x14c0c                                    |         r0 = strcasecmp (r0, r1);
                                                             | label_25:
    0x00089c00 bl 0xa6a74                                    |         fcn_000a6a74 (r0);
    0x00089c04 b 0x89b84                                     |         
                                                             |     } while (1);
                                                             | label_66:
    0x00089c08 bl 0x14ed0                                    |     strcmp (r0, r1);
    0x00089c0c b 0x89c00                                     |     goto label_25;
                                                             | label_64:
    0x00089c10 mov r2, 0                                     |     r2 = 0;
    0x00089c14 mov r3, 0                                     |     r3 = 0;
    0x00089c18 bl 0xa70cc                                    |     fcn_000a70cc (r0, r1);
    0x00089c1c b 0x89bb0                                     |     goto label_26;
                                                             | label_65:
    0x00089c20 mov r2, 0                                     |     r2 = 0;
    0x00089c24 mov r3, 0                                     |     r3 = 0;
    0x00089c28 bl 0xa7090                                    |     fcn_000a7090 (r0, r1);
    0x00089c2c b 0x89bb0                                     |     goto label_26;
                                                             | }

[*] Function popen used 4 times busybox