[*] Binary protection state of busybox

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


[*] Function strcpy 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 @ 0x1803c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0001803c ()                                  | void fcn_0001803c (int32_t arg_1h, uint32_t arg1, int32_t arg2) {
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     char * dest;
                                                             |     int32_t var_1h;
                                                             |     size_t size;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     char * s;
                                                             |     int32_t var_0h_3;
                                                             |     int32_t var_6ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x0001803c ldr r3, [pc, 0x1f8]                           |     r3 = *(0x18238);
    0x00018040 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00018044 mov r6, r2                                    |     r6 = r2;
    0x00018048 ldr r2, [r3]                                  |     r2 = *(0x18238);
    0x0001804c sub sp, sp, 0x6c                              |     
    0x00018050 cmp r2, 0                                     |     
    0x00018054 str r3, [sp, 8]                               |     var_8h = r3;
                                                             |     if (r2 == 0) {
    0x00018058 beq 0x181a0                                   |         goto label_0;
                                                             |     }
    0x0001805c ldr r7, [pc, 0x1dc]                           |     r7 = *(0x1823c);
    0x00018060 ldr r3, [pc, 0x1dc]                           |     r3 = *(0x18240);
    0x00018064 cmp r0, 0                                     |     
    0x00018068 mov r4, r0                                    |     r4 = r0;
    0x0001806c ldr r0, [r7]                                  |     r0 = *(0x1823c);
                                                             |     if (r0 != 0) {
    0x00018070 moveq r4, r3                                  |         r4 = r3;
                                                             |     }
    0x00018074 mov sl, r1                                    |     sl = r1;
    0x00018078 bl 0x1514c                                    |     strlen (r0);
    0x0001807c cmp r6, 0                                     |     
    0x00018080 str r7, [sp, 0xc]                             |     var_ch = r7;
                                                             |     if (r6 != 0) {
    0x00018084 moveq r7, r6                                  |         r7 = r6;
                                                             |     }
    0x00018088 add r5, r0, 2                                 |     r5 = r0 + 2;
    0x0001808c mov sb, r0                                    |     sb = r0;
    0x00018090 str r5, [sp, 4]                               |     var_4h = r5;
                                                             |     if (r6 != 0) {
    0x00018094 beq 0x180a4                                   |         
    0x00018098 mov r0, r6                                    |         r0 = r6;
    0x0001809c bl 0x1514c                                    |         r0 = strlen (r0);
    0x000180a0 mov r7, r0                                    |         r7 = r0;
                                                             |     }
    0x000180a4 ldr r3, [pc, 0x19c]                           |     r3 = *(0x18244);
    0x000180a8 ldr r0, [r3]                                  |     r0 = *(0x18244);
    0x000180ac bl 0x1514c                                    |     strlen (r0);
    0x000180b0 rsb r1, r5, 0x50                              |     r1 = 0x50 - r5;
    0x000180b4 cmp r1, 0                                     |     
    0x000180b8 mov r8, r0                                    |     r8 = r0;
                                                             |     if (r1 > 0) {
    0x000180bc ble 0x180f0                                   |         
    0x000180c0 add fp, sp, 0x18                              |         
    0x000180c4 mov r3, sl                                    |         r3 = sl;
    0x000180c8 add r0, fp, r5                                |         r0 = fp + r5;
    0x000180cc mov r2, r4                                    |         r2 = r4;
    0x000180d0 str sl, [sp, 0x14]                            |         var_14h = sl;
    0x000180d4 bl 0x14738                                    |         vsnprintf (r0, r1, r2, r3);
    0x000180d8 rsb r3, r8, 0x4d                              |         r3 = 0x4d - r8;
    0x000180dc str fp, [sp, 0x10]                            |         dest = fp;
    0x000180e0 sub r3, r3, r7                                |         r3 -= r7;
    0x000180e4 add fp, r5, r0                                |         
    0x000180e8 cmp r3, fp                                    |         
                                                             |         if (r3 > fp) {
    0x000180ec bgt 0x181b8                                   |             goto label_1;
                                                             |         }
                                                             |     }
    0x000180f0 mov r2, sl                                    |     r2 = sl;
    0x000180f4 mov r1, r4                                    |     r1 = r4;
    0x000180f8 add r0, sp, 0x10                              |     r0 += dest;
    0x000180fc bl 0x151d0                                    |     vasprintf ();
    0x00018100 subs sl, r0, 0                                |     sl -= dest;
                                                             |     if (sl < dest) {
    0x00018104 blt 0x181a0                                   |         goto label_0;
                                                             |     }
    0x00018108 add fp, r5, sl                                |     
    0x0001810c add r1, fp, r7                                |     r1 = fp + r7;
    0x00018110 add r1, r1, r8                                |     r1 += r8;
    0x00018114 add r1, r1, 3                                 |     r1 += 3;
    0x00018118 ldr r0, [sp, 0x10]                            |     r0 = dest;
    0x0001811c bl 0x14c3c                                    |     r0 = realloc (r0, r1);
    0x00018120 subs r1, r0, 0                                |     r1 = r0 - 0;
                                                             |     if (r1 != r0) {
    0x00018124 bne 0x181a8                                   |         goto label_2;
                                                             |     }
    0x00018128 ldr r3, [sp, 0x10]                            |     r3 = dest;
    0x0001812c mov r2, 0xa                                   |     r2 = 0xa;
    0x00018130 add r8, sl, 1                                 |     r8 += var_1h;
    0x00018134 strb r2, [r3, sl]                             |     *((r3 + sl)) = r2;
    0x00018138 str r1, [sp, 4]                               |     var_4h = r1;
                                                             |     do {
    0x0001813c ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00018140 ldr r3, [r3]                                  |         r3 = *(r3);
    0x00018144 tst r3, 1                                     |         
                                                             |         if ((r3 & 1) != 0) {
    0x00018148 beq 0x18160                                   |             
    0x0001814c bl 0x18cdc                                    |             fcn_00018cdc ();
    0x00018150 mov r2, r8                                    |             r2 = r8;
    0x00018154 ldr r1, [sp, 0x10]                            |             r1 = dest;
    0x00018158 mov r0, 2                                     |             r0 = 2;
    0x0001815c bl 0x19630                                    |             fcn_00019630 (r0, r1);
                                                             |         }
    0x00018160 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00018164 ldr r2, [sp, 0x10]                            |         r2 = dest;
    0x00018168 ldr r3, [r3]                                  |         r3 = *(r3);
    0x0001816c tst r3, 2                                     |         
                                                             |         if ((r3 & 2) != 0) {
    0x00018170 beq 0x1818c                                   |             
    0x00018174 ldr r3, [sp, 4]                               |             r3 = var_4h;
    0x00018178 ldr r1, [pc, 0xcc]                            |             r1 = *(0x18248);
    0x0001817c add r2, r2, r3                                |             r2 += r3;
    0x00018180 ldr r3, [pc, 0xc8]                            |             r3 = "_s";
    0x00018184 ldr r0, [r3]                                  |             r0 = "_s";
    0x00018188 bl 0x14ea0                                    |             syslog ();
                                                             |         }
    0x0001818c ldr r0, [sp, 0x10]                            |         r0 = dest;
    0x00018190 add r3, sp, 0x18                              |         r3 += var_18h;
    0x00018194 cmp r0, r3                                    |         
                                                             |         if (r0 != r3) {
    0x00018198 beq 0x181a0                                   |             
    0x0001819c bl 0x152a8                                    |             free (r0);
                                                             |         }
                                                             | label_0:
    0x000181a0 add sp, sp, 0x6c                              |         
    0x000181a4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_2:
    0x000181a8 mov r2, sl                                    |         r2 = sl;
    0x000181ac add r0, r1, r5                                |         r0 = r1 + r5;
    0x000181b0 str r1, [sp, 0x10]                            |         dest = r1;
    0x000181b4 bl 0x1442c                                    |         memmove (r0, r1, r2);
                                                             | label_1:
    0x000181b8 ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x000181bc ldr r0, [sp, 0x10]                            |         r0 = dest;
    0x000181c0 ldr r1, [r3]                                  |         r1 = *(r3);
    0x000181c4 bl 0x142f4                                    |         strcpy (r0, r1)
    0x000181c8 ldr r3, [sp, 0x10]                            |         r3 = dest;
    0x000181cc mov r1, 0x3a                                  |         r1 = 0x3a;
    0x000181d0 strb r1, [r3, sb]                             |         *((r3 + sb)) = r1;
    0x000181d4 ldr r3, [sp, 0x10]                            |         r3 = dest;
    0x000181d8 mov r2, 0x20                                  |         r2 = 0x20;
    0x000181dc add sb, r3, sb                                |         sb = r3 + sb;
    0x000181e0 cmp r6, 0                                     |         
    0x000181e4 strb r2, [sb, 1]                              |         *((sb + 1)) = r2;
                                                             |         if (r6 != 0) {
    0x000181e8 beq 0x18220                                   |             
    0x000181ec ldrb r3, [r4]                                 |             r3 = *(r4);
    0x000181f0 ldr r0, [sp, 0x10]                            |             r0 = dest;
    0x000181f4 cmp r3, 0                                     |             
                                                             |             if (r3 == 0) {
    0x000181f8 strbne r1, [r0, fp]                           |                 *((r0 + fp)) = r1;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x000181fc ldrne r1, [sp, 0x10]                          |                 r1 = dest;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x00018200 addne r3, fp, 1                               |                 r3 += arg_1h;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x00018204 strbne r2, [r1, r3]                           |                 *((r1 + r3)) = r2;
                                                             |             }
    0x00018208 ldr r0, [sp, 0x10]                            |             r0 = dest;
                                                             |             if (r3 == 0) {
    0x0001820c addne fp, fp, 2                               |                 
                                                             |             }
    0x00018210 add r0, r0, fp                                |             r0 += fp;
    0x00018214 mov r1, r6                                    |             r1 = r6;
    0x00018218 bl 0x142f4                                    |             strcpy (r0, r1)
    0x0001821c add fp, fp, r7                                |             
                                                             |         }
    0x00018220 ldr r3, [pc, 0x20]                            |         r3 = *(0x18244);
    0x00018224 ldr r0, [sp, 0x10]                            |         r0 = dest;
    0x00018228 ldr r1, [r3]                                  |         r1 = *(0x18244);
    0x0001822c add r0, r0, fp                                |         r0 += fp;
    0x00018230 bl 0x142f4                                    |         strcpy (r0, r1)
    0x00018234 add r8, fp, r8                                |         r8 = fp + r8;
    0x00018238 b 0x1813c                                     |         
                                                             |     } while (1);
                                                             | }
    ; 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 @ 0x1926c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0001926c ()                      | void fcn_0001926c (int32_t arg1) {
                                                 |     r0 = arg1;
    0x0001926c push {r4, r5, r6, r7, r8, lr}     |     
    0x00019270 bl 0x189d4                        |     fcn_000189d4 (r0);
    0x00019274 mov r7, 0x15                      |     r7 = 0x15;
    0x00019278 mov r4, r0                        |     r4 = r0;
                                                 | label_0:
    0x0001927c mov r0, r4                        |     r0 = r4;
    0x00019280 bl 0x1514c                        |     r0 = strlen (r0);
    0x00019284 add r6, r0, 1                     |     r6 = r0 + 1;
    0x00019288 b 0x192d4                         |     
                                                 |     while (r5 != r0) {
    0x0001928c subs r7, r7, 1                    |         r7--;
                                                 |         if (r7 == r7) {
    0x00019290 bne 0x1929c                       |             
    0x00019294 bl 0x152a8                        |             free (r0);
    0x00019298 b 0x192fc                         |             goto label_1;
                                                 |         }
    0x0001929c ldrb r3, [r5]                     |         r3 = *(r5);
    0x000192a0 cmp r3, 0x2f                      |         
                                                 |         if (r3 == 0x2f) {
    0x000192a4 beq 0x19310                       |             goto label_2;
                                                 |         }
    0x000192a8 bl 0x1514c                        |         r0 = strlen (r0);
    0x000192ac add r6, r6, r0                    |         r6 += r0;
    0x000192b0 mov r1, r6                        |         r1 = r6;
    0x000192b4 mov r0, r4                        |         r0 = r4;
    0x000192b8 bl 0x18990                        |         r0 = fcn_00018990 (r0, r1);
    0x000192bc mov r4, r0                        |         r4 = r0;
    0x000192c0 bl 0x17eec                        |         fcn_00017eec (r0);
    0x000192c4 mov r1, r5                        |         r1 = r5;
    0x000192c8 bl 0x142f4                        |         strcpy (r0, r1)
    0x000192cc mov r0, r5                        |         r0 = r5;
    0x000192d0 bl 0x152a8                        |         free (r0);
    0x000192d4 mov r0, r4                        |         r0 = r4;
    0x000192d8 bl 0x19208                        |         r0 = fcn_00019208 (r0);
    0x000192dc subs r5, r0, 0                    |         r5 = r0 - 0;
    0x000192e0 bne 0x1928c                       |         
                                                 |     }
    0x000192e4 ldr r3, [pc, 0x34]                |     
    0x000192e8 ldr r3, [r3]                      |     
    0x000192ec ldr r3, [r3]                      |     r3 = *(0x1931c);
    0x000192f0 cmp r3, 2                         |     
    0x000192f4 cmpne r3, 0x16                    |     __asm ("cmpne r3, 0x16");
                                                 |     if (r3 != 2) {
    0x000192f8 beq 0x19308                       |         
                                                 | label_1:
    0x000192fc mov r0, r4                        |         r0 = r4;
    0x00019300 bl 0x152a8                        |         free (r0);
    0x00019304 mov r4, 0                         |         r4 = 0;
                                                 |     }
    0x00019308 mov r0, r4                        |     r0 = r4;
    0x0001930c pop {r4, r5, r6, r7, r8, pc}      |     
                                                 | label_2:
    0x00019310 mov r0, r4                        |     r0 = r4;
    0x00019314 bl 0x152a8                        |     free (r0);
    0x00019318 mov r4, r5                        |     r4 = r5;
    0x0001931c b 0x1927c                         |     goto label_0;
                                                 | }
    ; 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 @ 0x19380 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00019380 ()                      | void fcn_00019380 (int32_t arg1) {
                                                 |     r0 = arg1;
    0x00019380 ldr r3, [pc, 0x98]                |     r3 = *(0x1941c);
    0x00019384 push {r4, r5, r6, r7, r8, lr}     |     
    0x00019388 ldr r6, [r3]                      |     r6 = *(0x1941c);
    0x0001938c mov r3, 0                         |     r3 = 0;
    0x00019390 str r3, [r6]                      |     *(r6) = r3;
    0x00019394 mov r5, r0                        |     r5 = r0;
    0x00019398 bl 0x19378                        |     r0 = fcn_00019378 ();
    0x0001939c subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 == r0) {
    0x000193a0 bne 0x19418                       |         
    0x000193a4 ldr r3, [r6]                      |         r3 = *(r6);
    0x000193a8 cmp r3, 2                         |         
                                                 |         if (r3 != 2) {
    0x000193ac bne 0x19418                       |             goto label_0;
                                                 |         }
    0x000193b0 mov r1, 0x2f                      |         r1 = 0x2f;
    0x000193b4 mov r0, r5                        |         r0 = r5;
    0x000193b8 bl 0x1496c                        |         r0 = strrchr (r0, r1);
    0x000193bc cmp r0, 0                         |         
                                                 |         if (r0 == 0) {
    0x000193c0 beq 0x19418                       |             goto label_0;
                                                 |         }
    0x000193c4 strb r4, [r0]                     |         *(r0) = r4;
    0x000193c8 add r6, r0, 1                     |         r6 = r0 + 1;
    0x000193cc mov r0, r5                        |         r0 = r5;
    0x000193d0 bl 0x19378                        |         r0 = fcn_00019378 ();
    0x000193d4 subs r7, r0, 0                    |         r7 = r0 - 0;
                                                 |         if (r7 == r0) {
    0x000193d8 beq 0x19418                       |             goto label_0;
                                                 |         }
    0x000193dc bl 0x1514c                        |         r0 = strlen (r0);
    0x000193e0 mov r5, r0                        |         r5 = r0;
    0x000193e4 mov r0, r6                        |         r0 = r6;
    0x000193e8 bl 0x1514c                        |         r0 = strlen (r0);
    0x000193ec add r1, r0, r5                    |         r1 = r0 + r5;
    0x000193f0 add r1, r1, 2                     |         r1 += 2;
    0x000193f4 mov r0, r7                        |         r0 = r7;
    0x000193f8 bl 0x18990                        |         fcn_00018990 (r0, r1);
    0x000193fc mov r3, 0x2f                      |         r3 = 0x2f;
    0x00019400 mov r1, r6                        |         r1 = r6;
    0x00019404 mov r4, r0                        |         r4 = r0;
    0x00019408 strb r3, [r0, r5]                 |         *((r0 + r5)) = r3;
    0x0001940c add r0, r5, 1                     |         r0 = r5 + 1;
    0x00019410 add r0, r4, r0                    |         r0 = r4 + r0;
    0x00019414 bl 0x142f4                        |         strcpy (r0, r1)
                                                 |     }
                                                 | label_0:
    0x00019418 mov r0, r4                        |     r0 = r4;
    0x0001941c pop {r4, r5, r6, r7, r8, pc}      |     
                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x1d07c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0001d07c ()                          | void fcn_0001d07c (int32_t arg1) {
                                                     |     r0 = arg1;
    0x0001d07c ldr r3, [pc, 0x40]                    |     
    0x0001d080 push {r4, r5, r6, r7, r8, lr}         |     
    0x0001d084 ldr r3, [r3]                          |     r3 = *(0x1d0c0);
    0x0001d088 mov r7, r0                            |     r7 = r0;
    0x0001d08c ldr r4, [r3, 0x30]                    |     r4 = *(0x1d0f0);
    0x0001d090 bl 0x1514c                            |     strlen (r0);
    0x0001d094 ldr r6, [r4, 4]                       |     r6 = *(0x1d0f4);
    0x0001d098 add r5, r6, 1                         |     r5 = r6 + 1;
    0x0001d09c add r5, r5, r0                        |     r5 += r0;
    0x0001d0a0 mov r1, r5                            |     r1 = r5;
    0x0001d0a4 mov r0, r4                            |     r0 = r4;
    0x0001d0a8 bl 0x1caf8                            |     fcn_0001caf8 (r0, r1);
    0x0001d0ac ldr r0, [r4]                          |     
    0x0001d0b0 mov r1, r7                            |     r1 = r7;
    0x0001d0b4 add r0, r0, r6                        |     r0 = 0x1d0f0;
    0x0001d0b8 bl 0x142f4                            |     strcpy (r0, r1)
    0x0001d0bc str r5, [r4, 4]                       |     *((r4 + 4)) = r5;
    0x0001d0c0 pop {r4, r5, r6, r7, r8, pc}          |     
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x2a680 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0002a680 ()                                      | void fcn_0002a680 () {
                                                                 |     int32_t var_38h;
                                                                 |     int32_t var_34h;
                                                                 |     int32_t var_30h;
                                                                 |     int32_t var_2ch;
                                                                 |     int32_t var_28h;
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     char * dest;
    0x0002a680 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0002a684 ldr r0, [pc, 0x310]                               |     r0 = *(0x2a998);
    0x0002a688 add fp, sp, 0x20                                  |     
    0x0002a68c mov r2, 0                                         |     r2 = 0;
    0x0002a690 sub sp, sp, 0x24                                  |     
    0x0002a694 mov r1, r2                                        |     r1 = r2;
    0x0002a698 bl 0x1436c                                        |     printf (r0, r1, r2, r3, r4);
    0x0002a69c mov sb, 0                                         |     sb = 0;
                                                                 |     do {
    0x0002a6a0 ldr r3, [pc, 0x2f8]                               |         r3 = "\e[%u;%uH";
    0x0002a6a4 ldr r4, [pc, 0x2f8]                               |         r4 = *(0x2a9a0);
    0x0002a6a8 ldr r5, [r3]                                      |         r5 = "\e[%u;%uH";
    0x0002a6ac ldr r2, [r5, 0x1c]                                |         r2 = *(0x2a9b8);
    0x0002a6b0 cmp r2, sb                                        |         
                                                                 |         if (r2 < sb) {
    0x0002a6b4 bhs 0x2a6f4                                       |             
    0x0002a6b8 ldr r3, [r4]                                      |             r3 = *(r4);
    0x0002a6bc tst r3, 0x41                                      |             
                                                                 |             if ((r3 & 0x41) == 0) {
    0x0002a6c0 beq 0x2a990                                       |                 goto label_5;
                                                                 |             }
    0x0002a6c4 ldr r1, [r5, 0x24]                                |             r1 = *((r5 + 0x24));
    0x0002a6c8 cmp r1, 0                                         |             
                                                                 |             if (r1 > 0) {
    0x0002a6cc bgt 0x2a990                                       |                 goto label_5;
                                                                 |             }
    0x0002a6d0 tst r3, 0x40                                      |             
                                                                 |             if ((r3 & 0x40) != 0) {
    0x0002a6d4 ldreq r1, [r5]                                    |                 r1 = *(r5);
                                                                 |             }
    0x0002a6d8 ldr r3, [r5, 0x14]                                |             r3 = *((r5 + 0x14));
                                                                 |             if ((r3 & 0x40) == 0) {
    0x0002a6dc movne r1, 0                                       |                 r1 = 0;
                                                                 |             }
    0x0002a6e0 sub r3, r3, r1                                    |             r3 -= r1;
    0x0002a6e4 cmp r2, r3                                        |             
                                                                 |             if (r2 <= r3) {
    0x0002a6e8 blo 0x2a990                                       |                 goto label_5;
                                                                 |             }
    0x0002a6ec mov r0, 0                                         |             r0 = 0;
    0x0002a6f0 bl 0x29dd0                                        |             fcn_00029dd0 (r0);
                                                                 |         }
    0x0002a6f4 ldr r0, [pc, 0x2ac]                               |         r0 = *(0x2a9a4);
    0x0002a6f8 bl 0x1436c                                        |         printf (r0);
    0x0002a6fc ldr r3, [r4]                                      |         r3 = *(r4);
    0x0002a700 lsl r6, sb, 2                                     |         r6 = sb << 2;
    0x0002a704 tst r3, 8                                         |         
                                                                 |         if ((r3 & 8) != 0) {
    0x0002a708 beq 0x2a738                                       |             
    0x0002a70c ldr r3, [r5, 0x30]                                |             r3 = *((r5 + 0x30));
    0x0002a710 ldr r2, [r5, 0x38]                                |             r2 = *((r5 + 0x38));
    0x0002a714 ldr r3, [r3, sb, lsl 2]                           |             offset_0 = sb << 2;
                                                                 |             r3 = *((r3 + offset_0));
    0x0002a718 cmp r3, r2                                        |             
                                                                 |             if (r3 == r2) {
    0x0002a71c ldrne r3, [r3, -4]                                |                 r3 = *((r3 - 4));
                                                                 |             }
                                                                 |             if (r3 == r2) {
    0x0002a720 ldrne r0, [pc, 0x284]                             |                 r0 = "%7u ";
                                                                 |             }
                                                                 |             if (r3 == r2) {
    0x0002a724 addne r3, r3, 1                                   |                 r3++;
                                                                 |             }
                                                                 |             if (r3 == r2) {
    0x0002a728 strne r3, [fp, -0x30]                             |                 var_30h = r3;
                                                                 |             }
                                                                 |             if (r3 != r2) {
    0x0002a72c ldreq r0, [pc, 0x27c]                             |                 r0 = *((pc + 0x27c));
                                                                 |             }
    0x0002a730 ldr r1, [fp, -0x30]                               |             r1 = var_30h;
    0x0002a734 bl 0x1436c                                        |             printf ("%7u ", r1, r2, r3);
                                                                 |         }
    0x0002a738 ldr r3, [r5, 0x30]                                |         r3 = *((r5 + 0x30));
    0x0002a73c ldr r2, [r5, 0x80]                                |         r2 = *((r5 + 0x80));
    0x0002a740 ldr r4, [r3, r6]                                  |         r4 = *((r3 + r6));
    0x0002a744 ldr r3, [r5, 0x20]                                |         r3 = *((r5 + 0x20));
    0x0002a748 cmp r2, 0                                         |         
    0x0002a74c add r3, r3, 8                                     |         r3 += 8;
                                                                 |         if (r2 == 0) {
    0x0002a750 beq 0x2a8c0                                       |             goto label_6;
                                                                 |         }
    0x0002a754 bic r3, r3, 7                                     |         r3 = BIT_MASK (r3, 7);
    0x0002a758 str sp, [fp, -0x34]                               |         var_34h = sp;
    0x0002a75c sub sp, sp, r3                                    |         
    0x0002a760 add r8, sp, 8                                     |         r8 += dest;
    0x0002a764 mov r7, r8                                        |         r7 = r8;
    0x0002a768 mov r6, r4                                        |         r6 = r4;
                                                                 | label_1:
    0x0002a76c ldrb r3, [r6]                                     |         r3 = *(r6);
    0x0002a770 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0002a774 bne 0x2a800                                       |             goto label_7;
                                                                 |         }
                                                                 | label_0:
    0x0002a778 mov r0, r7                                        |         r0 = r7;
    0x0002a77c ldr sl, [pc, 0x230]                               |         sl = "%s%.*s\e[7m%.*s\e[m";
    0x0002a780 ldr r7, [pc, 0x230]                               |         r7 = "%s%.*s\e[7m%.*s\e[m";
    0x0002a784 mov r1, r6                                        |         r1 = r6;
    0x0002a788 mov r6, 0                                         |         r6 = 0;
    0x0002a78c bl 0x142f4                                        |         strcpy (r0, r1)
    0x0002a790 mov r3, r6                                        |         r3 = r6;
                                                                 | label_2:
    0x0002a794 mov r1, r4                                        |         r1 = r4;
    0x0002a798 str r3, [sp]                                      |         *(sp) = r3;
    0x0002a79c mov r2, 1                                         |         r2 = 1;
    0x0002a7a0 sub r3, fp, 0x2c                                  |         r3 -= var_30h;
    0x0002a7a4 add r0, r5, 0x60                                  |         r0 = r5 + 0x60;
    0x0002a7a8 bl 0x14e34                                        |         regexec ();
    0x0002a7ac ldr r2, [fp, -0x2c]                               |         r2 = var_30h;
    0x0002a7b0 ldr r3, [fp, -0x28]                               |         r3 = var_2ch;
    0x0002a7b4 cmp r3, r2                                        |         
                                                                 |         if (r3 > r2) {
    0x0002a7b8 movle r1, 0                                       |             r1 = 0;
                                                                 |         }
                                                                 |         if (r3 <= r2) {
    0x0002a7bc movgt r1, 1                                       |             r1 = 1;
                                                                 |         }
    0x0002a7c0 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0002a7c4 moveq r0, r1                                      |             r0 = r1;
                                                                 |         }
                                                                 |         if (r0 == 0) {
    0x0002a7c8 movne r0, 0                                       |             r0 = 0;
                                                                 |         }
    0x0002a7cc cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0002a7d0 bne 0x2a870                                       |             goto label_8;
                                                                 |         }
    0x0002a7d4 cmp r6, 0                                         |         
    0x0002a7d8 ldr r1, [pc, 0x1d8]                               |         r1 = "%s%.*s\e[7m%.*s\e[m";
    0x0002a7dc mov r2, r8                                        |         r2 = r8;
                                                                 |         if (r6 == 0) {
    0x0002a7e0 movne r1, r6                                      |             r1 = r6;
                                                                 |         }
    0x0002a7e4 ldr r0, [pc, 0x1d0]                               |         r0 = *(0x2a9b8);
    0x0002a7e8 bl 0x1436c                                        |         printf (r0, "%s%.*s\e[7m%.*s\e[m", r2, r3, r4, r5, r6);
    0x0002a7ec mov r0, r6                                        |         r0 = r6;
    0x0002a7f0 bl 0x152a8                                        |         free (r0);
    0x0002a7f4 ldr sp, [fp, -0x34]                               |         sp = var_34h;
                                                                 | label_3:
    0x0002a7f8 add sb, sb, 1                                     |         sb++;
    0x0002a7fc b 0x2a6a0                                         |         
                                                                 |     } while (1);
                                                                 | label_7:
    0x0002a800 ldr r1, [pc, 0x1b8]                               |     r1 = *(0x2a9bc);
    0x0002a804 mov r0, r6                                        |     r0 = r6;
    0x0002a808 bl 0x14f60                                        |     r0 = strcspn (r0, r1);
    0x0002a80c subs sl, r0, 0                                    |     sl = r0 - 0;
                                                                 |     if (sl == r0) {
    0x0002a810 beq 0x2a844                                       |         goto label_9;
                                                                 |     }
    0x0002a814 ldrb r2, [r6, sl]                                 |     r2 = *((r6 + sl));
    0x0002a818 add r3, r6, sl                                    |     r3 = r6 + sl;
    0x0002a81c cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0002a820 beq 0x2a778                                       |         goto label_0;
                                                                 |     }
    0x0002a824 mov r1, r6                                        |     r1 = r6;
    0x0002a828 mov r0, r7                                        |     r0 = r7;
    0x0002a82c mov r2, sl                                        |     r2 = sl;
    0x0002a830 str r3, [fp, -0x38]                               |     var_38h = r3;
    0x0002a834 bl 0x14624                                        |     memcpy (r0, r1, r2);
    0x0002a838 ldr r3, [fp, -0x38]                               |     r3 = var_38h;
    0x0002a83c add r7, r7, sl                                    |     r7 += sl;
    0x0002a840 mov r6, r3                                        |     r6 = r3;
                                                                 | label_9:
    0x0002a844 ldr r1, [pc, 0x174]                               |     r1 = *(0x2a9bc);
    0x0002a848 mov r0, r6                                        |     r0 = r6;
    0x0002a84c bl 0x15134                                        |     strspn (r0, r1);
    0x0002a850 mov r1, 0x2e                                      |     r1 = 0x2e;
    0x0002a854 mov sl, r0                                        |     sl = r0;
    0x0002a858 mov r2, r0                                        |     r2 = r0;
    0x0002a85c mov r0, r7                                        |     r0 = r7;
    0x0002a860 bl 0x14d98                                        |     memset (r0, r1, r2);
    0x0002a864 add r7, r7, sl                                    |     r7 += sl;
    0x0002a868 add r6, r6, sl                                    |     r6 += sl;
    0x0002a86c b 0x2a76c                                         |     goto label_1;
                                                                 | label_8:
    0x0002a870 add r1, r8, r2                                    |     r1 = r8 + r2;
    0x0002a874 sub r3, r3, r2                                    |     r3 -= r2;
    0x0002a878 cmp r6, 0                                         |     
    0x0002a87c str r1, [sp, 4]                                   |     var_4h = r1;
    0x0002a880 str r3, [sp]                                      |     *(sp) = r3;
                                                                 |     if (r6 == 0) {
    0x0002a884 movne r1, r6                                      |         r1 = r6;
                                                                 |     }
    0x0002a888 mov r3, r8                                        |     r3 = r8;
                                                                 |     if (r6 != 0) {
    0x0002a88c moveq r1, r7                                      |         r1 = r7;
                                                                 |     }
    0x0002a890 mov r0, sl                                        |     r0 = sl;
    0x0002a894 bl 0x18d1c                                        |     fcn_00018d1c ();
    0x0002a898 str r0, [fp, -0x38]                               |     var_38h = r0;
    0x0002a89c mov r0, r6                                        |     r0 = r6;
    0x0002a8a0 bl 0x152a8                                        |     free (r0);
    0x0002a8a4 ldr r3, [fp, -0x28]                               |     r3 = var_2ch;
    0x0002a8a8 ldr r2, [fp, -0x38]                               |     r2 = var_38h;
    0x0002a8ac add r8, r8, r3                                    |     r8 += r3;
    0x0002a8b0 add r4, r4, r3                                    |     r4 += r3;
    0x0002a8b4 mov r6, r2                                        |     r6 = r2;
    0x0002a8b8 mov r3, 1                                         |     r3 = 1;
    0x0002a8bc b 0x2a794                                         |     goto label_2;
                                                                 | label_6:
    0x0002a8c0 bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x0002a8c4 ldr r6, [pc, 0xf4]                                |     r6 = *(0x2a9bc);
    0x0002a8c8 mov r7, sp                                        |     r7 = sp;
    0x0002a8cc sub sp, sp, r3                                    |     
    0x0002a8d0 add r5, sp, 8                                     |     r5 += dest;
                                                                 | label_4:
    0x0002a8d4 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x0002a8d8 cmp r3, 0                                         |     
    0x0002a8dc bne 0x2a8f0                                       |     
                                                                 |     while (r3 == 0) {
    0x0002a8e0 mov r0, r4                                        |         r0 = r4;
    0x0002a8e4 bl 0x14660                                        |         puts (r0);
    0x0002a8e8 mov sp, r7                                        |         
    0x0002a8ec b 0x2a7f8                                         |         goto label_3;
    0x0002a8f0 mov r1, r6                                        |         r1 = r6;
    0x0002a8f4 mov r0, r4                                        |         r0 = r4;
    0x0002a8f8 bl 0x14f60                                        |         r0 = strcspn (r0, r1);
    0x0002a8fc subs r1, r0, 0                                    |         r1 = r0 - 0;
                                                                 |         if (r1 == r0) {
    0x0002a900 beq 0x2a924                                       |             goto label_10;
                                                                 |         }
    0x0002a904 ldrb r3, [r4, r1]                                 |         r3 = *((r4 + r1));
    0x0002a908 add r8, r4, r1                                    |         r8 = r4 + r1;
    0x0002a90c cmp r3, 0                                         |         
    0x0002a910 beq 0x2a8e0                                       |         
                                                                 |     }
    0x0002a914 mov r2, r4                                        |     r2 = r4;
    0x0002a918 ldr r0, [pc, 0xa4]                                |     r0 = *(0x2a9c0);
    0x0002a91c bl 0x1436c                                        |     printf (r0, r1, r2);
    0x0002a920 mov r4, r8                                        |     r4 = r8;
                                                                 | label_10:
    0x0002a924 mov r1, r6                                        |     r1 = r6;
    0x0002a928 mov r0, r4                                        |     r0 = r4;
    0x0002a92c bl 0x15134                                        |     strspn (r0, r1);
    0x0002a930 mov r8, 0x3f                                      |     r8 = 0x3f;
    0x0002a934 sub r1, r4, 1                                     |     r1 = r4 - 1;
    0x0002a938 mov r3, r5                                        |     r3 = r5;
    0x0002a93c mov lr, 0x7b                                      |     lr = 0x7b;
    0x0002a940 add ip, r5, r0                                    |     
                                                                 |     do {
    0x0002a944 ldrb r2, [r1, 1]!                                 |         r2 = *((r1 += 1));
    0x0002a948 add r3, r3, 1                                     |         r3++;
    0x0002a94c cmp r2, 0x7f                                      |         
                                                                 |         if (r2 != 0x7f) {
    0x0002a950 strbeq r8, [r3, -1]                               |             *((r3 - 1)) = r8;
                                                                 |         }
                                                                 |         if (r2 != 0x7f) {
    0x0002a954 beq 0x2a96c                                       |             
    0x0002a958 cmp r2, 0x9b                                      |             
                                                                 |             if (r2 == 0x9b) {
    0x0002a95c ldrne sl, [pc, 0x64]                              |                 sl = "@ABCDEFGHI@KLMNOPQRSTUVWXYZ[\\]^_";
                                                                 |             }
                                                                 |             if (r2 != 0x9b) {
    0x0002a960 strbeq lr, [r3, -1]                               |                 
                                                                 |             }
                                                                 |             if (r2 == 0x9b) {
    0x0002a964 ldrbne r2, [sl, r2]                               |                 r2 = *((sl + r2));
                                                                 |             }
                                                                 |             if (r2 != 0x9b) {
    0x0002a968 strbne r2, [r3, -1]                               |                 dest = r2;
                                                                 |                 goto label_11;
                                                                 |             }
                                                                 |         }
                                                                 | label_11:
    0x0002a96c cmp ip, r3                                        |         
    0x0002a970 bne 0x2a944                                       |         
                                                                 |     } while (ip != r3);
    0x0002a974 mov r3, 0                                         |     r3 = 0;
    0x0002a978 add r4, r4, r0                                    |     r4 += r0;
    0x0002a97c strb r3, [r5, r0]                                 |     *((r5 + r0)) = r3;
    0x0002a980 mov r1, r5                                        |     r1 = r5;
    0x0002a984 ldr r0, [pc, 0x40]                                |     r0 = "@ABCDEFGHI@KLMNOPQRSTUVWXYZ[\\]^_";
    0x0002a988 bl 0x1436c                                        |     printf ("@ABCDEFGHI@KLMNOPQRSTUVWXYZ[\\]^_", r1, r2, r3, r4);
    0x0002a98c b 0x2a8d4                                         |     goto label_4;
                                                                 | label_5:
    0x0002a990 bl 0x2a5e0                                        |     fcn_0002a5e0 ();
    0x0002a994 sub sp, fp, 0x20                                  |     
    0x0002a998 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |     
                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x3d208 */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) fcn.0003d208 ()                      | void fcn_0003d208 (int32_t arg2) {
                                                 |     int32_t var_0h;
                                                 |     int32_t var_4h;
                                                 |     void * s2;
                                                 |     int32_t var_ch;
                                                 |     int32_t var_10h;
                                                 |     int32_t var_14h;
                                                 |     int32_t var_18h;
                                                 |     char * dest;
                                                 |     void * s1;
                                                 |     int32_t var_ach;
                                                 |     r1 = arg2;
    0x0003d208 ldrh r0, [r1, 4]                  |     r0 = *((r1 + 4));
    0x0003d20c push {r4, r5, r6, r7, lr}         |     
    0x0003d210 ldr r3, [r1]                      |     r3 = *(r1);
    0x0003d214 sub r2, r0, 0x14                  |     r2 = r0 - 0x14;
    0x0003d218 cmp r2, 1                         |     
    0x0003d21c sub sp, sp, 0xac                  |     
                                                 |     if (r2 < 1) {
    0x0003d220 bls 0x3d234                       |         goto label_9;
                                                 |     }
                                                 | label_0:
    0x0003d224 mov r6, 0                         |     r6 = 0;
                                                 |     do {
                                                 | label_1:
    0x0003d228 mov r0, r6                        |         r0 = r6;
    0x0003d22c add sp, sp, 0xac                  |         
    0x0003d230 pop {r4, r5, r6, r7, pc}          |         
                                                 | label_9:
    0x0003d234 subs r3, r3, 0x18                 |         r3 -= 0x18;
    0x0003d238 mov r5, r1                        |         r5 = r1;
                                                 |         if (r3 >= r3) {
    0x0003d23c bpl 0x3d254                       |             goto label_10;
                                                 |         }
    0x0003d240 mov r1, r3                        |         r1 = r3;
    0x0003d244 ldr r0, [pc, 0x5f0]               |         r0 = *(0x3d838);
    0x0003d248 bl 0x18274                        |         fcn_00018274 ();
                                                 | label_4:
    0x0003d24c mvn r6, 0                         |         r6 = ~0;
    0x0003d250 b 0x3d228                         |         
                                                 |     } while (1);
                                                 | label_10:
    0x0003d254 ldr r4, [pc, 0x5e4]               |     r4 = *(0x3d83c);
    0x0003d258 ldrb r1, [r4, 5]                  |     r1 = *((r4 + 5));
    0x0003d25c ldrb r2, [r4, 4]                  |     r2 = *((r4 + 4));
    0x0003d260 orr r2, r2, r1, lsl 8             |     r2 |= (r1 << 8);
    0x0003d264 ldrb r1, [r4, 6]                  |     r1 = *((r4 + 6));
    0x0003d268 orr r2, r2, r1, lsl 16            |     r2 |= (r1 << 16);
    0x0003d26c ldrb r1, [r4, 7]                  |     r1 = *((r4 + 7));
    0x0003d270 orrs r2, r2, r1, lsl 24           |     r2 |= (r1 << 24);
                                                 |     if (r2 == r2) {
    0x0003d274 movne r2, 1                       |         r2 = 1;
                                                 |     }
                                                 |     if (r2 != r2) {
    0x0003d278 moveq r2, 0                       |         r2 = 0;
                                                 |     }
    0x0003d27c cmp r0, 0x14                      |     
                                                 |     if (r0 != 0x14) {
    0x0003d280 moveq r2, 0                       |         r2 = 0;
                                                 |     }
                                                 |     if (r0 == 0x14) {
    0x0003d284 andne r2, r2, 1                   |         r2 &= 1;
                                                 |     }
    0x0003d288 cmp r2, 0                         |     
                                                 |     if (r2 != 0) {
    0x0003d28c bne 0x3d224                       |         goto label_0;
                                                 |     }
    0x0003d290 add r2, r5, 0x18                  |     r2 = r5 + 0x18;
    0x0003d294 mov r1, 9                         |     r1 = 9;
    0x0003d298 mov r0, sp                        |     r0 = sp;
    0x0003d29c bl 0x4395c                        |     fcn_0004395c (r0, r1);
    0x0003d2a0 ldr r3, [sp, 8]                   |     r3 = s2;
    0x0003d2a4 cmp r3, 0                         |     
    0x0003d2a8 ldr r3, [sp, 4]                   |     r3 = var_4h;
                                                 |     if (r3 != 0) {
    0x0003d2ac streq r3, [sp, 8]                 |         s2 = r3;
                                                 |     }
    0x0003d2b0 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x0003d2b4 ldreq r3, [sp, 8]                 |         r3 = s2;
                                                 |     }
                                                 |     if (r3 != 0) {
    0x0003d2b8 streq r3, [sp, 4]                 |         var_4h = r3;
                                                 |     }
    0x0003d2bc ldrb r2, [r4, 0x25]               |     r2 = *((r4 + 0x25));
    0x0003d2c0 ldrb r3, [r4, 0x24]               |     r3 = *((r4 + 0x24));
    0x0003d2c4 orr r3, r3, r2, lsl 8             |     r3 |= (r2 << 8);
    0x0003d2c8 ldrb r2, [r4, 0x26]               |     r2 = *((r4 + 0x26));
    0x0003d2cc orr r3, r3, r2, lsl 16            |     r3 |= (r2 << 16);
    0x0003d2d0 ldrb r2, [r4, 0x27]               |     r2 = *((r4 + 0x27));
    0x0003d2d4 orrs r3, r3, r2, lsl 24           |     r3 |= (r2 << 24);
                                                 |     if (r3 == r3) {
    0x0003d2d8 beq 0x3d2e8                       |         goto label_11;
                                                 |     }
    0x0003d2dc ldr r2, [r5, 0x14]                |     r2 = *((r5 + 0x14));
    0x0003d2e0 cmp r3, r2                        |     
                                                 |     if (r3 != r2) {
    0x0003d2e4 bne 0x3d224                       |         goto label_0;
                                                 |     }
                                                 | label_11:
    0x0003d2e8 ldrb r2, [r4, 0xd]                |     r2 = *((r4 + 0xd));
    0x0003d2ec ldrb r3, [r4, 0xc]                |     r3 = *((r4 + 0xc));
    0x0003d2f0 ldrb r1, [r4, 0x11]               |     r1 = *((r4 + 0x11));
    0x0003d2f4 orr r3, r3, r2, lsl 8             |     r3 |= (r2 << 8);
    0x0003d2f8 ldrb r2, [r4, 0xe]                |     r2 = *((r4 + 0xe));
    0x0003d2fc orr r3, r3, r2, lsl 16            |     r3 |= (r2 << 16);
    0x0003d300 ldrb r2, [r4, 0xf]                |     r2 = *((r4 + 0xf));
    0x0003d304 orr r3, r3, r2, lsl 24            |     r3 |= (r2 << 24);
    0x0003d308 ldrb r2, [r5, 0x13]               |     r2 = *((r5 + 0x13));
    0x0003d30c eor r3, r3, r2                    |     r3 ^= r2;
    0x0003d310 ldrb r2, [r4, 0x10]               |     r2 = *((r4 + 0x10));
    0x0003d314 orr r2, r2, r1, lsl 8             |     r2 |= (r1 << 8);
    0x0003d318 ldrb r1, [r4, 0x12]               |     r1 = *((r4 + 0x12));
    0x0003d31c orr r2, r2, r1, lsl 16            |     r2 |= (r1 << 16);
    0x0003d320 ldrb r1, [r4, 0x13]               |     r1 = *((r4 + 0x13));
    0x0003d324 orr r2, r2, r1, lsl 24            |     r2 |= (r1 << 24);
    0x0003d328 tst r3, r2                        |     
                                                 |     if ((r3 & r2) != 0) {
    0x0003d32c bne 0x3d224                       |         goto label_0;
                                                 |     }
    0x0003d330 ldrb r3, [r4, 0x15]               |     r3 = *((r4 + 0x15));
    0x0003d334 ldrb r6, [r4, 0x14]               |     r6 = *((r4 + 0x14));
    0x0003d338 ldrb r2, [r4, 0x19]               |     r2 = *((r4 + 0x19));
    0x0003d33c orr r6, r6, r3, lsl 8             |     r6 |= (r3 << 8);
    0x0003d340 ldrb r3, [r4, 0x16]               |     r3 = *((r4 + 0x16));
    0x0003d344 orr r6, r6, r3, lsl 16            |     r6 |= (r3 << 16);
    0x0003d348 ldrb r3, [r4, 0x17]               |     r3 = *((r4 + 0x17));
    0x0003d34c orr r6, r6, r3, lsl 24            |     r6 |= (r3 << 24);
    0x0003d350 ldrb r3, [r5, 0x12]               |     r3 = *((r5 + 0x12));
    0x0003d354 eor r6, r6, r3                    |     r6 ^= r3;
    0x0003d358 ldrb r3, [r4, 0x18]               |     r3 = *((r4 + 0x18));
    0x0003d35c orr r3, r3, r2, lsl 8             |     r3 |= (r2 << 8);
    0x0003d360 ldrb r2, [r4, 0x1a]               |     r2 = *((r4 + 0x1a));
    0x0003d364 orr r3, r3, r2, lsl 16            |     r3 |= (r2 << 16);
    0x0003d368 ldrb r2, [r4, 0x1b]               |     r2 = *((r4 + 0x1b));
    0x0003d36c orr r3, r3, r2, lsl 24            |     r3 |= (r2 << 24);
    0x0003d370 ands r6, r6, r3                   |     r6 &= r3;
                                                 |     if (r6 != r6) {
    0x0003d374 bne 0x3d224                       |         goto label_0;
                                                 |     }
    0x0003d378 ldrb r2, [r4, 1]                  |     r2 = *((r4 + 1));
    0x0003d37c ldrb r3, [r4]                     |     r3 = *(r4);
    0x0003d380 orr r3, r3, r2, lsl 8             |     r3 |= (r2 << 8);
    0x0003d384 ldrb r2, [r4, 2]                  |     r2 = *((r4 + 2));
    0x0003d388 orr r3, r3, r2, lsl 16            |     r3 |= (r2 << 16);
    0x0003d38c ldrb r2, [r4, 3]                  |     r2 = *((r4 + 3));
    0x0003d390 orrs r3, r3, r2, lsl 24           |     r3 |= (r2 << 24);
                                                 |     if (r3 == r3) {
    0x0003d394 bne 0x3d4fc                       |         
                                                 | label_2:
    0x0003d398 ldrb r3, [r4, 0x3c]               |         r3 = *((r4 + 0x3c));
    0x0003d39c cmp r3, 0                         |         
                                                 |         if (r3 != 0) {
    0x0003d3a0 bne 0x3d548                       |             goto label_12;
                                                 |         }
                                                 | label_3:
    0x0003d3a4 ldrb r2, [r4, 5]                  |         r2 = *((r4 + 5));
    0x0003d3a8 ldrb r3, [r4, 4]                  |         r3 = *((r4 + 4));
    0x0003d3ac orr r3, r3, r2, lsl 8             |         r3 |= (r2 << 8);
    0x0003d3b0 ldrb r2, [r4, 6]                  |         r2 = *((r4 + 6));
    0x0003d3b4 orr r3, r3, r2, lsl 16            |         r3 |= (r2 << 16);
    0x0003d3b8 ldrb r2, [r4, 7]                  |         r2 = *((r4 + 7));
    0x0003d3bc orrs r3, r3, r2, lsl 24           |         r3 |= (r2 << 24);
                                                 |         if (r3 == r3) {
    0x0003d3c0 beq 0x3d5bc                       |             goto label_13;
                                                 |         }
    0x0003d3c4 ldrb r2, [r4, 0x1d]               |         r2 = *((r4 + 0x1d));
    0x0003d3c8 ldrb r3, [r4, 0x1c]               |         r3 = *((r4 + 0x1c));
    0x0003d3cc ldrb r1, [r4, 0x21]               |         r1 = *((r4 + 0x21));
    0x0003d3d0 orr r3, r3, r2, lsl 8             |         r3 |= (r2 << 8);
    0x0003d3d4 ldrb r2, [r4, 0x1e]               |         r2 = *((r4 + 0x1e));
    0x0003d3d8 orr r3, r3, r2, lsl 16            |         r3 |= (r2 << 16);
    0x0003d3dc ldrb r2, [r4, 0x1f]               |         r2 = *((r4 + 0x1f));
    0x0003d3e0 orr r3, r3, r2, lsl 24            |         r3 |= (r2 << 24);
    0x0003d3e4 ldr r2, [r5]                      |         r2 = *(r5);
    0x0003d3e8 add r3, r3, 3                     |         r3 += 3;
    0x0003d3ec bic r3, r3, 3                     |         r3 = BIT_MASK (r3, 3);
    0x0003d3f0 add r3, r3, r2                    |         r3 += r2;
    0x0003d3f4 ldrb r2, [r4, 0x20]               |         r2 = *((r4 + 0x20));
    0x0003d3f8 orr r2, r2, r1, lsl 8             |         r2 |= (r1 << 8);
    0x0003d3fc ldrb r1, [r4, 0x22]               |         r1 = *((r4 + 0x22));
    0x0003d400 orr r2, r2, r1, lsl 16            |         r2 |= (r1 << 16);
    0x0003d404 ldrb r1, [r4, 0x23]               |         r1 = *((r4 + 0x23));
    0x0003d408 orr r2, r2, r1, lsl 24            |         r2 |= (r1 << 24);
    0x0003d40c cmp r3, r2                        |         
                                                 |         if (r3 > r2) {
    0x0003d410 bhi 0x3d5ac                       |             goto label_14;
                                                 |         }
                                                 | label_5:
    0x0003d414 ldrb r2, [r4, 5]                  |         r2 = *((r4 + 5));
    0x0003d418 ldrb r3, [r4, 4]                  |         r3 = *((r4 + 4));
    0x0003d41c ldrb r1, [r4, 0x1d]               |         r1 = *((r4 + 0x1d));
    0x0003d420 orr r3, r3, r2, lsl 8             |         r3 |= (r2 << 8);
    0x0003d424 ldrb r2, [r4, 6]                  |         r2 = *((r4 + 6));
    0x0003d428 orr r3, r3, r2, lsl 16            |         r3 |= (r2 << 16);
    0x0003d42c ldrb r2, [r4, 7]                  |         r2 = *((r4 + 7));
    0x0003d430 orr r2, r3, r2, lsl 24            |         r2 = r3 | (r2 << 24);
    0x0003d434 ldrb r3, [r4, 0x1c]               |         r3 = *((r4 + 0x1c));
    0x0003d438 orr r3, r3, r1, lsl 8             |         r3 |= (r1 << 8);
    0x0003d43c ldrb r1, [r4, 0x1e]               |         r1 = *((r4 + 0x1e));
    0x0003d440 orr r3, r3, r1, lsl 16            |         r3 |= (r1 << 16);
    0x0003d444 ldrb r1, [r4, 0x1f]               |         r1 = *((r4 + 0x1f));
    0x0003d448 orr r3, r3, r1, lsl 24            |         r3 |= (r1 << 24);
    0x0003d44c add r3, r3, 3                     |         r3 += 3;
    0x0003d450 bic r3, r3, 3                     |         r3 = BIT_MASK (r3, 3);
    0x0003d454 add r3, r2, r3                    |         r3 = r2 + r3;
    0x0003d458 mov r1, r5                        |         r1 = r5;
    0x0003d45c ldr r2, [r5]                      |         r2 = *(r5);
    0x0003d460 mov r0, r3                        |         r0 = r3;
    0x0003d464 bl 0x14624                        |         memcpy (r0, r1, r2);
    0x0003d468 ldr r2, [pc, 0x3d4]               |         r2 = *(0x3d840);
    0x0003d46c str r2, [r0, 4]                   |         *((r0 + 4)) = r2;
    0x0003d470 ldrb r1, [r4, 9]                  |         r1 = *((r4 + 9));
    0x0003d474 ldrb r2, [r4, 8]                  |         r2 = *((r4 + 8));
    0x0003d478 orr r2, r2, r1, lsl 8             |         r2 |= (r1 << 8);
    0x0003d47c ldrb r1, [r4, 0xa]                |         r1 = *((r4 + 0xa));
    0x0003d480 orr r2, r2, r1, lsl 16            |         r2 |= (r1 << 16);
    0x0003d484 ldrb r1, [r4, 0xb]                |         r1 = *((r4 + 0xb));
    0x0003d488 orr r2, r2, r1, lsl 24            |         r2 |= (r1 << 24);
    0x0003d48c ldr r1, [r2, 0x1c]                |         r1 = stdout;
    0x0003d490 add r1, r1, 1                     |         r1++;
    0x0003d494 str r1, [r2, 0x1c]                |         *((r2 + 0x1c)) = r1;
    0x0003d498 ldr r2, [r5]                      |         r2 = *(r5);
    0x0003d49c str r1, [r0, 8]                   |         *((r0 + 8)) = r1;
    0x0003d4a0 add r3, r0, r2                    |         r3 = r0 + r2;
    0x0003d4a4 ldrb r1, [r4, 5]                  |         r1 = *((r4 + 5));
    0x0003d4a8 ldrb r2, [r4, 4]                  |         r2 = *((r4 + 4));
    0x0003d4ac orr r2, r2, r1, lsl 8             |         r2 |= (r1 << 8);
    0x0003d4b0 ldrb r1, [r4, 6]                  |         r1 = *((r4 + 6));
    0x0003d4b4 orr r2, r2, r1, lsl 16            |         r2 |= (r1 << 16);
    0x0003d4b8 ldrb r1, [r4, 7]                  |         r1 = *((r4 + 7));
    0x0003d4bc orr r2, r2, r1, lsl 24            |         r2 |= (r1 << 24);
    0x0003d4c0 sub r3, r3, r2                    |         r3 -= r2;
    0x0003d4c4 lsr r1, r3, 8                     |         r1 = r3 >> 8;
    0x0003d4c8 strb r3, [r4, 0x1c]               |         *((r4 + 0x1c)) = r3;
    0x0003d4cc strb r1, [r4, 0x1d]               |         *((r4 + 0x1d)) = r1;
    0x0003d4d0 lsr r1, r3, 0x10                  |         r1 = r3 >> 0x10;
    0x0003d4d4 lsr r3, r3, 0x18                  |         r3 >>= 0x18;
    0x0003d4d8 mov r2, 0                         |         r2 = 0;
    0x0003d4dc strb r3, [r4, 0x1f]               |         *((r4 + 0x1f)) = r3;
    0x0003d4e0 mov r3, 1                         |         r3 = 1;
    0x0003d4e4 strb r1, [r4, 0x1e]               |         *((r4 + 0x1e)) = r1;
    0x0003d4e8 strb r3, [r4, 0x38]               |         *((r4 + 0x38)) = r3;
    0x0003d4ec strb r2, [r4, 0x39]               |         *((r4 + 0x39)) = r2;
    0x0003d4f0 strb r2, [r4, 0x3a]               |         *((r4 + 0x3a)) = r2;
    0x0003d4f4 strb r2, [r4, 0x3b]               |         *((r4 + 0x3b)) = r2;
    0x0003d4f8 b 0x3d228                         |         goto label_1;
                                                 |     }
    0x0003d4fc ldr r1, [sp, 0xc]                 |     r1 = var_ch;
    0x0003d500 cmp r1, 0                         |     
                                                 |     if (r1 == 0) {
    0x0003d504 addne r1, r1, 4                   |         r1 += 4;
                                                 |     }
                                                 |     if (r1 == 0) {
    0x0003d508 bne 0x3d518                       |         
    0x0003d50c ldr r0, [r5, 0x14]                |         r0 = *((r5 + 0x14));
    0x0003d510 bl 0x43d04                        |         r0 = fcn_00043d04 (r0);
    0x0003d514 mov r1, r0                        |         r1 = r0;
                                                 |     }
    0x0003d518 ldrb r0, [r4, 1]                  |     r0 = *((r4 + 1));
    0x0003d51c ldrb r3, [r4]                     |     r3 = *(r4);
    0x0003d520 mov r2, 0                         |     r2 = 0;
    0x0003d524 orr r3, r3, r0, lsl 8             |     r3 |= (r0 << 8);
    0x0003d528 ldrb r0, [r4, 2]                  |     r0 = *((r4 + 2));
    0x0003d52c orr r3, r3, r0, lsl 16            |     r3 |= (r0 << 16);
    0x0003d530 ldrb r0, [r4, 3]                  |     r0 = *((r4 + 3));
    0x0003d534 orr r0, r3, r0, lsl 24            |     r0 = r3 | (r0 << 24);
    0x0003d538 bl 0x14da4                        |     r0 = fnmatch ();
    0x0003d53c cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0003d540 bne 0x3d224                       |         goto label_0;
                                                 |     }
    0x0003d544 b 0x3d398                         |     goto label_2;
                                                 | label_12:
    0x0003d548 ldr r7, [sp, 8]                   |     r7 = s2;
    0x0003d54c cmp r7, 0                         |     
                                                 |     if (r7 == 0) {
    0x0003d550 beq 0x3d3a4                       |         goto label_3;
                                                 |     }
    0x0003d554 mov r2, 0x14                      |     r2 = 0x14;
    0x0003d558 mov r1, 0                         |     r1 = 0;
    0x0003d55c add r0, sp, 0x28                  |     r0 += dest;
    0x0003d560 bl 0x14d98                        |     memset (r0, r1, r2);
    0x0003d564 ldrb r3, [r5, 0x10]               |     r3 = *((r5 + 0x10));
    0x0003d568 mov r1, r7                        |     r1 = r7;
    0x0003d56c strb r3, [sp, 0x28]               |     dest = r3;
    0x0003d570 ldrh r2, [r1], 4                  |     r2 = *(r1);
                                                 |     r1 += 4;
    0x0003d574 add r0, sp, 0x2c                  |     r0 += s1;
    0x0003d578 sub r2, r2, 4                     |     r2 -= 4;
    0x0003d57c bl 0x14624                        |     memcpy (r0, r1, r2);
    0x0003d580 ldrb r2, [r4, 0x3e]               |     r2 = *((r4 + 0x3e));
    0x0003d584 ldrb r3, [r4, 0x3f]               |     r3 = *((r4 + 0x3f));
    0x0003d588 ldr r1, [pc, 0x2b8]               |     r1 = *(0x3d844);
    0x0003d58c orr r2, r2, r3, lsl 8             |     r2 |= (r3 << 8);
    0x0003d590 lsl r2, r2, 0x10                  |     r2 <<= 0x10;
    0x0003d594 asr r2, r2, 0x10                  |     r2 >>= 0x10;
    0x0003d598 add r0, sp, 0x28                  |     r0 += dest;
    0x0003d59c bl 0x44bbc                        |     r0 = fcn_00044bbc (r0, r1);
    0x0003d5a0 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0003d5a4 bne 0x3d228                       |         goto label_1;
                                                 |     }
    0x0003d5a8 b 0x3d3a4                         |     goto label_3;
                                                 | label_14:
    0x0003d5ac bl 0x3d170                        |     r0 = fcn_0003d170 ();
    0x0003d5b0 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0003d5b4 bne 0x3d24c                       |         goto label_4;
                                                 |     }
    0x0003d5b8 b 0x3d414                         |     goto label_5;
                                                 | label_13:
    0x0003d5bc ldrh r3, [r5, 4]                  |     r3 = *((r5 + 4));
    0x0003d5c0 cmp r3, 0x15                      |     
                                                 |     if (r3 == 0x15) {
    0x0003d5c4 bne 0x3d5d0                       |         
    0x0003d5c8 ldr r0, [pc, 0x27c]               |         r0 = *(0x3d848);
    0x0003d5cc bl 0x1436c                        |         printf (r0);
                                                 |     }
    0x0003d5d0 ldrb r2, [r4, 0x31]               |     r2 = *((r4 + 0x31));
    0x0003d5d4 ldrb r3, [r4, 0x30]               |     r3 = *((r4 + 0x30));
    0x0003d5d8 orr r3, r3, r2, lsl 8             |     r3 |= (r2 << 8);
    0x0003d5dc ldrb r2, [r4, 0x32]               |     r2 = *((r4 + 0x32));
    0x0003d5e0 orr r3, r3, r2, lsl 16            |     r3 |= (r2 << 16);
    0x0003d5e4 ldrb r2, [r4, 0x33]               |     r2 = *((r4 + 0x33));
    0x0003d5e8 orrs r3, r3, r2, lsl 24           |     r3 |= (r2 << 24);
                                                 |     if (r3 != r3) {
    0x0003d5ec beq 0x3d60c                       |         
    0x0003d5f0 ldr r4, [r5, 0x14]                |         r4 = *((r5 + 0x14));
    0x0003d5f4 mov r0, r4                        |         r0 = r4;
    0x0003d5f8 bl 0x43d04                        |         fcn_00043d04 (r0);
    0x0003d5fc mov r1, r4                        |         r1 = r4;
    0x0003d600 mov r2, r0                        |         r2 = r0;
    0x0003d604 ldr r0, [pc, 0x244]               |         r0 = "Deleted ";
    0x0003d608 bl 0x1436c                        |         printf ("Deleted ", r1, r2);
                                                 |     }
    0x0003d60c ldrb r1, [r5, 0x10]               |     r1 = *((r5 + 0x10));
    0x0003d610 cmp r1, 2                         |     
                                                 |     if (r1 != 2) {
    0x0003d614 ldreq r0, [pc, 0x238]             |         r0 = "    inet ";
                                                 |     }
                                                 |     if (r1 != 2) {
    0x0003d618 beq 0x3d628                       |         
    0x0003d61c cmp r1, 0xa                       |         
                                                 |         if (r1 != 0xa) {
    0x0003d620 bne 0x3d7f0                       |             goto label_15;
                                                 |         }
    0x0003d624 ldr r0, [pc, 0x22c]               |         r0 = "    inet ";
                                                 |     }
    0x0003d628 bl 0x1436c                        |     printf ("    inet ");
                                                 |     do {
    0x0003d62c ldr r1, [sp, 8]                   |         r1 = s2;
    0x0003d630 cmp r1, 0                         |         
                                                 |         if (r1 != 0) {
    0x0003d634 beq 0x3d688                       |             
    0x0003d638 add r1, r1, 4                     |             r1 += 4;
    0x0003d63c ldrb r0, [r5, 0x10]               |             r0 = *((r5 + 0x10));
    0x0003d640 bl 0x44c28                        |             fcn_00044c28 (r0, r1);
    0x0003d644 ldr r3, [pc, 0x210]               |             r3 = "    inet6 ";
    0x0003d648 ldr r1, [r3]                      |             r1 = "    inet6 ";
    0x0003d64c bl 0x149d8                        |             fputs_unlocked ();
    0x0003d650 ldr r4, [sp, 4]                   |             r4 = var_4h;
    0x0003d654 cmp r4, 0                         |             
                                                 |             if (r4 != 0) {
    0x0003d658 beq 0x3d67c                       |                 
    0x0003d65c ldr r1, [sp, 8]                   |                 r1 = s2;
    0x0003d660 mov r2, 4                         |                 r2 = 4;
    0x0003d664 add r4, r4, 4                     |                 r4 += 4;
    0x0003d668 add r1, r1, r2                    |                 r1 += r2;
    0x0003d66c mov r0, r4                        |                 r0 = r4;
    0x0003d670 bl 0x14c60                        |                 r0 = memcmp (r0, r1, r2);
    0x0003d674 cmp r0, 0                         |                 
                                                 |                 if (r0 != 0) {
    0x0003d678 bne 0x3d7fc                       |                     goto label_16;
                                                 |                 }
                                                 |             }
    0x0003d67c ldrb r1, [r5, 0x11]               |             r1 = *((r5 + 0x11));
    0x0003d680 ldr r0, [pc, 0x1d8]               |             r0 = stdout;
    0x0003d684 bl 0x1436c                        |             printf (r0, r1);
                                                 |         }
                                                 | label_6:
    0x0003d688 ldr r1, [sp, 0x10]                |         r1 = var_10h;
    0x0003d68c cmp r1, 0                         |         
                                                 |         if (r1 != 0) {
    0x0003d690 beq 0x3d6ac                       |             
    0x0003d694 add r1, r1, 4                     |             r1 += 4;
    0x0003d698 ldrb r0, [r5, 0x10]               |             r0 = *((r5 + 0x10));
    0x0003d69c bl 0x44c28                        |             r0 = fcn_00044c28 (r0, r1);
    0x0003d6a0 mov r1, r0                        |             r1 = r0;
    0x0003d6a4 ldr r0, [pc, 0x1b8]               |             r0 = *(0x3d860);
    0x0003d6a8 bl 0x1436c                        |             printf (r0, r1);
                                                 |         }
    0x0003d6ac ldr r1, [sp, 0x14]                |         r1 = var_14h;
    0x0003d6b0 cmp r1, 0                         |         
                                                 |         if (r1 != 0) {
    0x0003d6b4 beq 0x3d6d0                       |             
    0x0003d6b8 add r1, r1, 4                     |             r1 += 4;
    0x0003d6bc ldrb r0, [r5, 0x10]               |             r0 = *((r5 + 0x10));
    0x0003d6c0 bl 0x44c28                        |             r0 = fcn_00044c28 (r0, r1);
    0x0003d6c4 mov r1, r0                        |             r1 = r0;
    0x0003d6c8 ldr r0, [pc, 0x198]               |             r0 = "brd__s_";
    0x0003d6cc bl 0x1436c                        |             printf ("brd__s_", r1);
                                                 |         }
    0x0003d6d0 ldrb r0, [r5, 0x13]               |         r0 = *((r5 + 0x13));
    0x0003d6d4 bl 0x44220                        |         r0 = fcn_00044220 (r0);
    0x0003d6d8 mov r1, r0                        |         r1 = r0;
    0x0003d6dc ldr r0, [pc, 0x188]               |         r0 = "any__s_";
    0x0003d6e0 bl 0x1436c                        |         printf ("any__s_", r1);
    0x0003d6e4 ldrb r3, [r5, 0x12]               |         r3 = *((r5 + 0x12));
    0x0003d6e8 tst r3, 1                         |         
                                                 |         if ((r3 & 1) != 0) {
    0x0003d6ec beq 0x3d700                       |             
    0x0003d6f0 bic r3, r3, 1                     |             r3 = BIT_MASK (r3, 1);
    0x0003d6f4 strb r3, [r5, 0x12]               |             *((r5 + 0x12)) = r3;
    0x0003d6f8 ldr r0, [pc, 0x170]               |             r0 = "scope__s_";
    0x0003d6fc bl 0x1436c                        |             printf ("scope__s_", r1, r2, r3);
                                                 |         }
    0x0003d700 ldrb r3, [r5, 0x12]               |         r3 = *((r5 + 0x12));
    0x0003d704 tst r3, 0x40                      |         
                                                 |         if ((r3 & 0x40) != 0) {
    0x0003d708 beq 0x3d71c                       |             
    0x0003d70c bic r3, r3, 0x40                  |             r3 = BIT_MASK (r3, 0x40);
    0x0003d710 strb r3, [r5, 0x12]               |             *((r5 + 0x12)) = r3;
    0x0003d714 ldr r0, [pc, 0x158]               |             r0 = "secondary_";
    0x0003d718 bl 0x1436c                        |             printf ("secondary_", r1, r2, r3);
                                                 |         }
    0x0003d71c ldrb r3, [r5, 0x12]               |         r3 = *((r5 + 0x12));
    0x0003d720 tst r3, 0x20                      |         
                                                 |         if ((r3 & 0x20) != 0) {
    0x0003d724 beq 0x3d738                       |             
    0x0003d728 bic r3, r3, 0x20                  |             r3 = BIT_MASK (r3, 0x20);
    0x0003d72c strb r3, [r5, 0x12]               |             *((r5 + 0x12)) = r3;
    0x0003d730 ldr r0, [pc, 0x140]               |             r0 = "tentative ";
    0x0003d734 bl 0x1436c                        |             printf ("tentative ", r1, r2, r3);
                                                 |         }
    0x0003d738 ldrb r3, [r5, 0x12]               |         r3 = *((r5 + 0x12));
    0x0003d73c tst r3, 0x80                      |         
                                                 |         if ((r3 & 0x80) == 0) {
    0x0003d740 andne r3, r3, 0x7f                |             r3 &= 0x7f;
                                                 |         }
                                                 |         if ((r3 & 0x80) == 0) {
    0x0003d744 strbne r3, [r5, 0x12]             |             *((r5 + 0x12)) = r3;
                                                 |         }
                                                 |         if ((r3 & 0x80) == 0) {
    0x0003d748 bne 0x3d754                       |             
    0x0003d74c ldr r0, [pc, 0x128]               |             r0 = "deprecated_";
    0x0003d750 bl 0x1436c                        |             printf ("deprecated_");
                                                 |         }
    0x0003d754 ldrb r1, [r5, 0x12]               |         r1 = *((r5 + 0x12));
    0x0003d758 cmp r1, 0                         |         
                                                 |         if (r1 != 0) {
    0x0003d75c beq 0x3d768                       |             
    0x0003d760 ldr r0, [pc, 0x118]               |             r0 = "dynamic_";
    0x0003d764 bl 0x1436c                        |             printf ("dynamic_");
                                                 |         }
    0x0003d768 ldr r0, [sp, 0xc]                 |         r0 = var_ch;
    0x0003d76c cmp r0, 0                         |         
                                                 |         if (r0 != 0) {
    0x0003d770 beq 0x3d784                       |             
    0x0003d774 ldr r3, [pc, 0xe0]                |             r3 = "    inet6 ";
    0x0003d778 add r0, r0, 4                     |             r0 += 4;
    0x0003d77c ldr r1, [r3]                      |             r1 = "    inet6 ";
    0x0003d780 bl 0x149d8                        |             fputs_unlocked ();
                                                 |         }
    0x0003d784 ldr r4, [sp, 0x18]                |         r4 = var_18h;
    0x0003d788 cmp r4, 0                         |         
                                                 |         if (r4 != 0) {
    0x0003d78c beq 0x3d7e4                       |             
    0x0003d790 ldr r3, [pc, 0xec]                |             r3 = "flags %02x ";
    0x0003d794 ldrb r0, [r3]                     |             r0 = *(r3);
    0x0003d798 bl 0x18ce4                        |             fcn_00018ce4 (r0);
    0x0003d79c ldr r2, [r4, 8]                   |             r2 = *((r4 + 8));
    0x0003d7a0 cmn r2, 1                         |             
                                                 |             if (r2 != 1) {
    0x0003d7a4 bne 0x3d81c                       |                 goto label_17;
                                                 |             }
    0x0003d7a8 ldr r1, [pc, 0xd8]                |             r1 = *(0x3d884);
    0x0003d7ac add r0, sp, 0x28                  |             r0 += dest;
    0x0003d7b0 bl 0x142f4                        |             strcpy (r0, r1)
                                                 | label_7:
    0x0003d7b4 add r0, sp, 0x28                  |             r0 += dest;
    0x0003d7b8 bl 0x1514c                        |             strlen (r0);
    0x0003d7bc ldr r4, [r4, 4]                   |             r4 = *((r4 + 4));
    0x0003d7c0 add r3, sp, 0x28                  |             r3 += dest;
    0x0003d7c4 cmn r4, 1                         |             
    0x0003d7c8 add r0, r3, r0                    |             r0 = r3 + r0;
                                                 |             if (r4 != 1) {
    0x0003d7cc bne 0x3d82c                       |                 goto label_18;
                                                 |             }
    0x0003d7d0 ldr r1, [pc, 0xb4]                |             r1 = "valid_lft forever";
    0x0003d7d4 bl 0x142f4                        |             strcpy (r0, "valid_lft forever")
                                                 | label_8:
    0x0003d7d8 add r1, sp, 0x28                  |             r1 += dest;
    0x0003d7dc ldr r0, [pc, 0xac]                |             r0 = " preferred_lft forever";
    0x0003d7e0 bl 0x1436c                        |             printf (" preferred_lft forever", r1);
                                                 |         }
    0x0003d7e4 mov r0, 0xa                       |         r0 = 0xa;
    0x0003d7e8 bl 0x18ce4                        |         fcn_00018ce4 (r0);
    0x0003d7ec b 0x3d228                         |         goto label_1;
                                                 | label_15:
    0x0003d7f0 ldr r0, [pc, 0x9c]                |         r0 = "       %s";
    0x0003d7f4 bl 0x1436c                        |         printf ("       %s");
    0x0003d7f8 b 0x3d62c                         |         
                                                 |     } while (1);
                                                 | label_16:
    0x0003d7fc mov r1, r4                        |     r1 = r4;
    0x0003d800 ldrb r0, [r5, 0x10]               |     r0 = *((r5 + 0x10));
    0x0003d804 bl 0x44c28                        |     fcn_00044c28 (r0, r1);
    0x0003d808 ldrb r2, [r5, 0x11]               |     r2 = *((r5 + 0x11));
    0x0003d80c mov r1, r0                        |     r1 = r0;
    0x0003d810 ldr r0, [pc, 0x80]                |     r0 = "family__d_";
    0x0003d814 bl 0x1436c                        |     printf ("family__d_", r1, r2);
    0x0003d818 b 0x3d688                         |     goto label_6;
                                                 | label_17:
    0x0003d81c ldr r1, [pc, 0x78]                |     r1 = " peer %s/%d ";
    0x0003d820 add r0, sp, 0x28                  |     r0 += dest;
    0x0003d824 bl 0x14f48                        |     sprintf (r0, " peer %s/%d ", r2);
    0x0003d828 b 0x3d7b4                         |     goto label_7;
                                                 | label_18:
    0x0003d82c mov r2, r4                        |     r2 = r4;
    0x0003d830 ldr r1, [pc, 0x68]                |     r1 = "valid_lft %dsec";
    0x0003d834 bl 0x14f48                        |     sprintf (r0, "valid_lft %dsec", r2);
    0x0003d838 b 0x3d7d8                         |     goto label_8;
                                                 | }
    ; 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 @ 0x43bdc */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00043bdc ()                  | uint32_t fcn_00043bdc (int32_t arg2) {
                                             |     int32_t var_0h;
                                             |     int32_t var_4h;
                                             |     char * src;
                                             |     int32_t var_d0h;
                                             |     r1 = arg2;
    0x00043bdc ldrh r3, [r1, 4]              |     r3 = *((r1 + 4));
    0x00043be0 cmp r3, 0x10                  |     
                                             |     if (r3 != 0x10) {
    0x00043be4 beq 0x43bf0                   |         
    0x00043be8 mov r0, 0                     |         r0 = 0;
    0x00043bec bx lr                         |         return r0;
                                             |     }
    0x00043bf0 ldr r3, [r1]                  |     r3 = *(r1);
    0x00043bf4 cmp r3, 0x13                  |     
                                             |     if (r3 < 0x13) {
    0x00043bf8 bls 0x43cf8                   |         goto label_2;
                                             |     }
    0x00043bfc push {r4, r5, r6, lr}         |     
    0x00043c00 sub sp, sp, 0xd0              |     
    0x00043c04 sub r3, r3, 0x20              |     r3 -= 0x20;
    0x00043c08 add r2, r1, 0x20              |     r2 = r1 + 0x20;
    0x00043c0c mov r5, r1                    |     r5 = r1;
    0x00043c10 mov r0, sp                    |     r0 = sp;
    0x00043c14 mov r1, 0x33                  |     r1 = 0x33;
    0x00043c18 bl 0x4395c                    |     fcn_0004395c (r0, r1);
    0x00043c1c ldr r3, [sp, 0xc]             |     r3 = src;
    0x00043c20 cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x00043c24 beq 0x43cc8                   |         goto label_3;
                                             |     }
    0x00043c28 ldr r4, [pc, 0xd0]            |     r4 = *(0x43cfc);
    0x00043c2c ldr r3, [r4]                  |     r3 = *(0x43cfc);
    0x00043c30 cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x00043c34 bne 0x43c44                   |         
    0x00043c38 mov r0, 0x40                  |         r0 = 0x40;
    0x00043c3c bl 0x189b8                    |         fcn_000189b8 (r0);
    0x00043c40 str r0, [r4]                  |         *(r4) = r0;
                                             |     }
    0x00043c44 ldr r3, [r5, 0x14]            |     r3 = *((r5 + 0x14));
    0x00043c48 ldr r6, [r4]                  |     r6 = *(r4);
    0x00043c4c and r2, r3, 0xf               |     r2 = r3 & 0xf;
    0x00043c50 add r6, r6, r2, lsl 2         |     r6 += (r2 << 2);
                                             | label_0:
    0x00043c54 ldr r4, [r6]                  |     r4 = *(r6);
    0x00043c58 cmp r4, 0                     |     
                                             |     if (r4 != 0) {
    0x00043c5c bne 0x43cd4                   |         goto label_4;
                                             |     }
    0x00043c60 mov r0, 0x2c                  |     r0 = 0x2c;
    0x00043c64 bl 0x18968                    |     fcn_00018968 (r0);
    0x00043c68 ldr r3, [r6]                  |     r3 = *(r6);
    0x00043c6c str r3, [r0]                  |     *(r0) = r3;
    0x00043c70 ldr r3, [r5, 0x14]            |     r3 = *((r5 + 0x14));
    0x00043c74 mov r4, r0                    |     r4 = r0;
    0x00043c78 str r3, [r0, 4]               |     *((r0 + 4)) = r3;
    0x00043c7c str r0, [r6]                  |     *(r6) = r0;
                                             |     do {
    0x00043c80 ldrh r3, [r5, 0x12]           |         r3 = *((r5 + 0x12));
    0x00043c84 ldr r1, [sp, 4]               |         r1 = var_4h;
    0x00043c88 str r3, [r4, 8]               |         *((r4 + 8)) = r3;
    0x00043c8c ldr r3, [r5, 0x18]            |         r3 = *((r5 + 0x18));
    0x00043c90 cmp r1, 0                     |         
    0x00043c94 str r3, [r4, 0x10]            |         *((r4 + 0x10)) = r3;
    0x00043c98 add r0, r4, 0x14              |         r0 = r4 + 0x14;
                                             |         if (r1 == 0) {
    0x00043c9c beq 0x43ce8                   |             goto label_5;
                                             |         }
    0x00043ca0 ldrh r2, [r1], 4              |         r2 = *(r1);
                                             |         r1 += 4;
    0x00043ca4 sub r2, r2, 4                 |         r2 -= 4;
    0x00043ca8 cmp r2, 8                     |         
    0x00043cac str r2, [r4, 0xc]             |         *((r4 + 0xc)) = r2;
                                             |         if (r2 < 8) {
    0x00043cb0 movge r2, 8                   |             r2 = 8;
                                             |         }
    0x00043cb4 bl 0x14624                    |         memcpy (r0, r1, r2);
                                             | label_1:
    0x00043cb8 ldr r1, [sp, 0xc]             |         r1 = src;
    0x00043cbc add r0, r4, 0x1c              |         r0 = r4 + 0x1c;
    0x00043cc0 add r1, r1, 4                 |         r1 += 4;
    0x00043cc4 bl 0x142f4                    |         strcpy (r0, r1)
                                             | label_3:
    0x00043cc8 mov r0, 0                     |         r0 = 0;
    0x00043ccc add sp, sp, 0xd0              |         
    0x00043cd0 pop {r4, r5, r6, pc}          |         
                                             | label_4:
    0x00043cd4 ldr r2, [r4, 4]               |         r2 = *((r4 + 4));
    0x00043cd8 cmp r3, r2                    |         
    0x00043cdc beq 0x43c80                   |         
                                             |     } while (r3 == r2);
    0x00043ce0 mov r6, r4                    |     r6 = r4;
    0x00043ce4 b 0x43c54                     |     goto label_0;
                                             | label_5:
    0x00043ce8 str r1, [r4, 0xc]             |     *((r4 + 0xc)) = r1;
    0x00043cec mov r2, 8                     |     r2 = 8;
    0x00043cf0 bl 0x14d98                    |     memset (r0, r1, r2);
    0x00043cf4 b 0x43cb8                     |     goto label_1;
                                             | label_2:
    0x00043cf8 mvn r0, 0                     |     r0 = ~0;
    0x00043cfc bx lr                         |     return r0;
                                             | }
    ; 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 @ 0x45b94 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00045b94 ()                  | void fcn_00045b94 (int32_t arg1, int32_t arg2) {
                                             |     char * dest;
                                             |     int32_t var_14h;
                                             |     int32_t var_20h;
                                             |     int32_t var_288h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x00045b94 ldr r3, [pc, 0xb0]            |     r3 = *(0x45c48);
    0x00045b98 push {r4, r5, r6, lr}         |     
    0x00045b9c ldr r2, [r3]                  |     r2 = *(0x45c48);
    0x00045ba0 sub sp, sp, 0x288             |     
    0x00045ba4 sub r2, r2, 2                 |     r2 -= 2;
    0x00045ba8 cmp r2, 3                     |     
    0x00045bac mov r4, r3                    |     r4 = r3;
                                             |     if (r2 <= 3) {
    0x00045bb0 bhi 0x45c20                   |         
    0x00045bb4 mov r5, r1                    |         r5 = r1;
    0x00045bb8 mov r6, r0                    |         r6 = r0;
    0x00045bbc bl 0x14e04                    |         r0 = inet_ntoa (r0);
    0x00045bc0 mov r1, r0                    |         r1 = r0;
    0x00045bc4 add r0, sp, 4                 |         r0 += dest;
    0x00045bc8 bl 0x142f4                    |         strcpy (r0, r1)
    0x00045bcc mov r0, r5                    |         r0 = r5;
    0x00045bd0 bl 0x14e04                    |         inet_ntoa (r0);
    0x00045bd4 add r2, sp, 4                 |         r2 += dest;
    0x00045bd8 mov r1, r0                    |         r1 = r0;
    0x00045bdc ldr r0, [pc, 0x6c]            |         r0 = *(0x45c4c);
    0x00045be0 bl 0x18274                    |         fcn_00018274 ();
    0x00045be4 mov r1, 7                     |         r1 = 7;
    0x00045be8 add r0, sp, 0x14              |         r0 += var_14h;
    0x00045bec bl 0x44cc8                    |         fcn_00044cc8 (r0, r1);
    0x00045bf0 mov r2, r6                    |         r2 = r6;
    0x00045bf4 mov r1, 0x36                  |         r1 = 0x36;
    0x00045bf8 add r0, sp, 0x14              |         r0 += var_14h;
    0x00045bfc str r5, [sp, 0x20]            |         var_20h = r5;
    0x00045c00 bl 0x4736c                    |         fcn_0004736c (r0, r1);
    0x00045c04 ldr r1, [pc, 0x48]            |         r1 = "unicasting_a_release_of__s_to__s";
    0x00045c08 ldr r0, [pc, 0x48]            |         r0 = "release";
    0x00045c0c bl 0x18274                    |         fcn_00018274 ();
    0x00045c10 mov r2, r6                    |         r2 = r6;
    0x00045c14 mov r1, r5                    |         r1 = r5;
    0x00045c18 add r0, sp, 0x14              |         r0 += var_14h;
    0x00045c1c bl 0x45070                    |         fcn_00045070 (r0, r1);
                                             |     }
    0x00045c20 ldr r0, [pc, 0x34]            |     r0 = "sending %s";
    0x00045c24 bl 0x18274                    |     fcn_00018274 ();
    0x00045c28 ldr r1, [pc, 0x30]            |     r1 = "entering released state";
    0x00045c2c mov r0, 0                     |     r0 = 0;
    0x00045c30 bl 0x457f8                    |     fcn_000457f8 (r0, "entering released state");
    0x00045c34 mov r0, 0                     |     r0 = 0;
    0x00045c38 bl 0x45370                    |     fcn_00045370 (r0);
    0x00045c3c mov r3, 6                     |     r3 = 6;
    0x00045c40 str r3, [r4]                  |     *(r4) = r3;
    0x00045c44 add sp, sp, 0x288             |     
    0x00045c48 pop {r4, r5, r6, pc}          |     
                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x4c320 */
                                             | #include <stdint.h>
                                             |  
                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                             |  
    ; (fcn) fcn.0004c320 ()                  | void fcn_0004c320 (int32_t arg1) {
                                             |     r0 = arg1;
    0x0004c320 push {r4, r5, r6, lr}         |     
    0x0004c324 ldr r5, [pc, 0x24]            |     r5 = *(0x4c34c);
    0x0004c328 mov r6, r0                    |     r6 = r0;
    0x0004c32c bl 0x1514c                    |     strlen (r0);
    0x0004c330 ldr r4, [r5]                  |     r4 = *(0x4c34c);
    0x0004c334 mov r1, r6                    |     r1 = r6;
    0x0004c338 add r0, r0, 8                 |     r0 += 8;
    0x0004c33c bic r0, r0, 7                 |     r0 = BIT_MASK (r0, 7);
    0x0004c340 sub r0, r4, r0                |     r0 = r4 - r0;
    0x0004c344 str r0, [r5]                  |     *(r5) = r0;
    0x0004c348 pop {r4, r5, r6, lr}          |     
    0x0004c34c b 0x142f4                     |     return void (*0x142f4)() ();
                                             | }
    ; 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 @ 0x4c5bc */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0004c5bc ()                          | void fcn_0004c5bc (int32_t arg1, int32_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0004c5bc mov r3, r0                            |     r3 = r0;
    0x0004c5c0 push {r4, r5, r6, r7, r8, lr}         |     
    0x0004c5c4 mov r5, r0                            |     r5 = r0;
    0x0004c5c8 ldrb r0, [r3], -1                     |     r0 = *(r3);
                                                     |     r3 += -1;
    0x0004c5cc mov r7, r1                            |     r7 = r1;
    0x0004c5d0 lsl r0, r0, 4                         |     r0 <<= 4;
                                                     |     do {
    0x0004c5d4 ldrb r2, [r3, 1]!                     |         r2 = *((r3 += 1));
    0x0004c5d8 cmp r2, 0                             |         
                                                     |         if (r2 == 0) {
    0x0004c5dc bne 0x4c658                           |             
    0x0004c5e0 lsl r0, r0, 0x11                      |             r0 <<= 0x11;
    0x0004c5e4 mov r1, 0x1f                          |             r1 = 0x1f;
    0x0004c5e8 lsr r0, r0, 0x11                      |             r0 >>= 0x11;
    0x0004c5ec bl 0xa667c                            |             fcn_000a667c (r0, r1);
    0x0004c5f0 ldr r3, [pc, 0x88]                    |             
    0x0004c5f4 ldr r3, [r3]                          |             r3 = *(0x4c67c);
    0x0004c5f8 ldr r4, [r3, r1, lsl 2]               |             r4 = *(0x4c67c);
    0x0004c5fc add r6, r3, r1, lsl 2                 |             r6 = r3 + (r1 << 2);
                                                     | label_1:
    0x0004c600 cmp r4, 0                             |             
                                                     |             if (r4 != 0) {
    0x0004c604 bne 0x4c660                           |                 goto label_2;
                                                     |             }
                                                     | label_0:
    0x0004c608 cmp r4, 0                             |             
                                                     |             if (r4 != 0) {
    0x0004c60c andeq r7, r7, 1                       |                 r7 &= 1;
                                                     |             }
                                                     |             if (r4 == 0) {
    0x0004c610 movne r7, 0                           |                 r7 = 0;
                                                     |             }
    0x0004c614 cmp r7, 0                             |             
                                                     |             if (r7 != 0) {
    0x0004c618 beq 0x4c648                           |                 
    0x0004c61c mov r0, r5                            |                 r0 = r5;
    0x0004c620 bl 0x1514c                            |                 r0 = strlen (r0);
    0x0004c624 add r0, r0, 0x10                      |                 r0 += 0x10;
    0x0004c628 bl 0x189b8                            |                 fcn_000189b8 (r0);
    0x0004c62c mvn r3, 0                             |                 r3 = ~0;
    0x0004c630 mov r1, r5                            |                 r1 = r5;
    0x0004c634 str r0, [r6]                          |                 *(r6) = r0;
    0x0004c638 mov r4, r0                            |                 r4 = r0;
    0x0004c63c str r3, [r0, 8]                       |                 *((r0 + 8)) = r3;
    0x0004c640 add r0, r0, 0xd                       |                 r0 += 0xd;
    0x0004c644 bl 0x142f4                            |                 strcpy (r0, r1)
                                                     |             }
    0x0004c648 ldr r3, [pc, 0x34]                    |             r3 = *(0x4c680);
    0x0004c64c mov r0, r4                            |             r0 = r4;
    0x0004c650 str r6, [r3]                          |             *(r3) = r6;
    0x0004c654 pop {r4, r5, r6, r7, r8, pc}          |             
                                                     |         }
    0x0004c658 add r0, r0, r2                        |         r0 += r2;
    0x0004c65c b 0x4c5d4                             |         
                                                     |     } while (1);
                                                     | label_2:
    0x0004c660 mov r1, r5                            |     r1 = r5;
    0x0004c664 add r0, r4, 0xd                       |     r0 = r4 + 0xd;
    0x0004c668 bl 0x14ed0                            |     r0 = strcmp (r0, r1);
    0x0004c66c cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0004c670 beq 0x4c608                           |         goto label_0;
                                                     |     }
    0x0004c674 mov r6, r4                            |     r6 = r4;
    0x0004c678 ldr r4, [r4]                          |     r4 = *(r4);
    0x0004c67c b 0x4c600                             |     goto label_1;
                                                     | }
    ; 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 @ 0x4ecdc */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0004ecdc ()                  | void fcn_0004ecdc (int32_t arg2, char * s) {
                                             |     r1 = arg2;
                                             |     r0 = s;
    0x0004ecdc push {r4, r5, r6, lr}         |     
    0x0004ece0 ands r4, r1, 0x7f             |     r4 = r1 & 0x7f;
                                             |     if (r4 == r1) {
    0x0004ece4 beq 0x4ed64                   |         goto label_2;
                                             |     }
    0x0004ece8 and r3, r1, 0xff              |     r3 = r1 & 0xff;
    0x0004ecec cmp r3, 0x7f                  |     
    0x0004ecf0 mov r6, r0                    |     r6 = r0;
                                             |     if (r3 != 0x7f) {
    0x0004ecf4 bne 0x4ed48                   |         goto label_3;
                                             |     }
    0x0004ecf8 asr r4, r1, 8                 |     r4 = r1 >> 8;
    0x0004ecfc cmp r2, 0                     |     
    0x0004ed00 and r4, r4, 0xff              |     r4 &= 0xff;
                                             |     if (r2 != 0) {
    0x0004ed04 bne 0x4ed5c                   |         goto label_4;
                                             |     }
                                             |     do {
                                             | label_0:
    0x0004ed08 and r0, r4, 0x7f              |         r0 = r4 & 0x7f;
    0x0004ed0c mov r5, r1                    |         r5 = r1;
    0x0004ed10 bl 0x14f24                    |         strsignal ();
    0x0004ed14 mov r1, 0x20                  |         r1 = 0x20;
    0x0004ed18 mov r2, r0                    |         r2 = r0;
    0x0004ed1c mov r0, r6                    |         r0 = r6;
    0x0004ed20 bl 0x4ec90                    |         fcn_0004ec90 (r0, r1);
    0x0004ed24 tst r5, 0x80                  |         
    0x0004ed28 mov r4, r0                    |         r4 = r0;
                                             |         if ((r5 & 0x80) != 0) {
    0x0004ed2c beq 0x4ed40                   |             
    0x0004ed30 ldr r1, [pc, 0x54]            |             r1 = *(0x4ed88);
    0x0004ed34 add r0, r6, r0                |             r0 = r6 + r0;
    0x0004ed38 bl 0x142f4                    |             strcpy (r0, r1)
    0x0004ed3c add r4, r4, 0xe               |             r4 += 0xe;
                                             |         }
                                             | label_1:
    0x0004ed40 mov r0, r4                    |         r0 = r4;
    0x0004ed44 pop {r4, r5, r6, pc}          |         
                                             | label_3:
    0x0004ed48 cmp r2, 0                     |         
    0x0004ed4c beq 0x4ed08                   |         
                                             |     } while (r2 == 0);
    0x0004ed50 cmp r4, 0xd                   |     
    0x0004ed54 cmpne r4, 2                   |     __asm ("cmpne r4, 2");
                                             |     if (r4 != 0xd) {
    0x0004ed58 bne 0x4ed08                   |         goto label_0;
                                             |     }
                                             | label_4:
    0x0004ed5c mov r4, 0                     |     r4 = 0;
    0x0004ed60 b 0x4ed40                     |     goto label_1;
                                             | label_2:
    0x0004ed64 cmp r2, 0                     |     
                                             |     if (r2 != 0) {
    0x0004ed68 bne 0x4ed40                   |         goto label_1;
                                             |     }
    0x0004ed6c asr r1, r1, 8                 |     r1 >>= 8;
    0x0004ed70 ands r3, r1, 0xff             |     r3 = r1 & 0xff;
    0x0004ed74 ldr r1, [pc, 0x14]            |     r1 = " (core dumped)";
    0x0004ed78 ldr r2, [pc, 0x14]            |     r2 = "Done";
    0x0004ed7c pop {r4, r5, r6, lr}          |     
                                             |     if (r3 != r1) {
    0x0004ed80 moveq r2, r1                  |         r2 = r1;
                                             |     }
    0x0004ed84 mov r1, 0x10                  |     r1 = 0x10;
    0x0004ed88 b 0x4ec90                     |     return void (*0x4ec90)() ();
                                             | }
    ; 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 @ 0x4f1a4 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0004f1a4 ()                                      | void fcn_0004f1a4 (int32_t arg1, uint32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_1h;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_60h;
                                                                 |     int32_t var_64h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0004f1a4 tst r1, 8                                         |     
                                                                 |     if ((r1 & 8) == 0) {
    0x0004f1a8 ldrne r3, [pc, 0x1c4]                             |         r3 = obj.stderr;
                                                                 |     }
                                                                 |     if ((r1 & 8) != 0) {
    0x0004f1ac ldreq r3, [pc, 0x1c4]                             |         r3 = obj.stdout;
                                                                 |     }
    0x0004f1b0 tst r1, 1                                         |     
    0x0004f1b4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0004f1b8 ldr r8, [r3]                                      |     r8 = *(r3);
    0x0004f1bc sub sp, sp, 0x64                                  |     
    0x0004f1c0 mov r4, r0                                        |     r4 = r0;
    0x0004f1c4 mov r6, r1                                        |     r6 = r1;
    0x0004f1c8 ldr r5, [r0, 0xc]                                 |     r5 = *((r0 + 0xc));
                                                                 |     if ((r1 & 1) == 0) {
    0x0004f1cc beq 0x4f1e8                                       |         goto label_3;
                                                                 |     }
    0x0004f1d0 ldr r2, [r5]                                      |     r2 = *(r5);
    0x0004f1d4 ldr r1, [pc, 0x1a0]                               |     r1 = stdout;
    0x0004f1d8 mov r0, r8                                        |     r0 = r8;
    0x0004f1dc bl 0x149c0                                        |     fprintf (r0, r1, r2);
                                                                 |     do {
                                                                 | label_0:
    0x0004f1e0 add sp, sp, 0x64                                  |         
    0x0004f1e4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_3:
    0x0004f1e8 ldr r3, [pc, 0x190]                               |         
    0x0004f1ec mov r1, 0x10                                      |         r1 = 0x10;
    0x0004f1f0 ldr r3, [r3]                                      |         r3 = "_d";
    0x0004f1f4 ldr r2, [pc, 0x188]                               |         r2 = *(0x4f380);
    0x0004f1f8 sub r3, r0, r3                                    |         r3 = r0 - r3;
    0x0004f1fc asr r3, r3, 5                                     |         r3 >>= 5;
    0x0004f200 add r3, r3, 1                                     |         r3++;
    0x0004f204 add r0, sp, r1                                    |         r0 = sp + r1;
    0x0004f208 bl 0x4ec90                                        |         fcn_0004ec90 (r0, r1);
    0x0004f20c ldr r3, [pc, 0x174]                               |         
    0x0004f210 ldr r3, [r3]                                      |         r3 = "[%d]   ";
    0x0004f214 cmp r3, r4                                        |         
                                                                 |         if (r3 != r4) {
    0x0004f218 moveq r2, 0x2b                                    |             r2 = 0x2b;
                                                                 |         }
    0x0004f21c mov r7, r0                                        |         r7 = r0;
                                                                 |         if (r3 != r4) {
    0x0004f220 beq 0x4f23c                                       |             
    0x0004f224 cmp r3, 0                                         |             
                                                                 |             if (r3 == 0) {
    0x0004f228 beq 0x4f248                                       |                 goto label_4;
                                                                 |             }
    0x0004f22c ldr r3, [r3, 0x1c]                                |             r3 = *((r3 + 0x1c));
    0x0004f230 cmp r3, r4                                        |             
                                                                 |             if (r3 != r4) {
    0x0004f234 bne 0x4f248                                       |                 goto label_4;
                                                                 |             }
    0x0004f238 mov r2, 0x2d                                      |             r2 = 0x2d;
                                                                 |         }
    0x0004f23c add r3, sp, 0x60                                  |         r3 += var_60h;
    0x0004f240 add r3, r3, r7                                    |         r3 += r7;
    0x0004f244 strb r2, [r3, -0x53]                              |         *((r3 - 0x53)) = r2;
                                                                 | label_4:
    0x0004f248 add r3, sp, 0x10                                  |         r3 += var_10h;
    0x0004f24c ands r6, r6, 2                                    |         r6 &= 2;
    0x0004f250 add r0, r3, r7                                    |         r0 = r3 + r7;
                                                                 |         if (r6 != r6) {
    0x0004f254 moveq sl, r7                                      |             sl = r7;
                                                                 |         }
                                                                 |         if (r6 != r6) {
    0x0004f258 beq 0x4f270                                       |             
    0x0004f25c ldr r3, [r5]                                      |             r3 = *(r5);
    0x0004f260 ldr r2, [pc, 0x124]                               |             r2 = *(0x4f388);
    0x0004f264 mov r1, 0x10                                      |             r1 = 0x10;
    0x0004f268 bl 0x4ec90                                        |             r0 = fcn_0004ec90 (r0, r1);
    0x0004f26c add sl, r7, r0                                    |             sl = r7 + r0;
                                                                 |         }
    0x0004f270 ldr sb, [r4, 0x14]                                |         sb = *((r4 + 0x14));
    0x0004f274 mov r3, 0xc                                       |         r3 = 0xc;
    0x0004f278 mla r2, r3, sb, r5                                |         __asm ("mla r2, r3, sb, r5");
    0x0004f27c ldrb r3, [r4, 0x18]                               |         r3 = *((r4 + 0x18));
    0x0004f280 mov sb, r2                                        |         sb = r2;
    0x0004f284 cmp r3, 0                                         |         
    0x0004f288 add r2, sp, 0x10                                  |         r2 += var_10h;
    0x0004f28c add r0, r2, sl                                    |         r0 = r2 + sl;
                                                                 |         if (r3 != 0) {
    0x0004f290 bne 0x4f31c                                       |             goto label_5;
                                                                 |         }
    0x0004f294 ldr r1, [pc, 0xf4]                                |         r1 = *(0x4f38c);
    0x0004f298 bl 0x142f4                                        |         strcpy (r0, r1)
    0x0004f29c add r0, sl, 7                                     |         r0 = sl + 7;
                                                                 | label_1:
    0x0004f2a0 ldr fp, [pc, 0xec]                                |         fp = "Running";
                                                                 | label_2:
    0x0004f2a4 ldr r3, [r4, 0xc]                                 |         r3 = *((r4 + 0xc));
    0x0004f2a8 ldr r2, [pc, 0xe8]                                |         r2 = "__";
    0x0004f2ac cmp r3, r5                                        |         
                                                                 |         if (r3 == r5) {
    0x0004f2b0 movne r2, fp                                      |             r2 = fp;
                                                                 |         }
    0x0004f2b4 mov r3, r2                                        |         r3 = r2;
    0x0004f2b8 ldr r2, [r5, 8]                                   |         r2 = *((r5 + 8));
    0x0004f2bc rsb r0, r0, 0x21                                  |         r0 = 0x21 - r0;
    0x0004f2c0 mov sl, 0x20                                      |         sl = 0x20;
    0x0004f2c4 str r2, [sp, 8]                                   |         var_8h = r2;
    0x0004f2c8 str r3, [sp, 4]                                   |         var_4h = r3;
    0x0004f2cc str sl, [sp]                                      |         *(sp) = sl;
    0x0004f2d0 bic r3, r0, r0, asr 31                            |         r3 = BIT_MASK (r0, r0);
    0x0004f2d4 add r2, sp, 0x10                                  |         r2 += var_10h;
    0x0004f2d8 ldr r1, [pc, 0xbc]                                |         r1 = *(0x4f398);
    0x0004f2dc mov r0, r8                                        |         r0 = r8;
    0x0004f2e0 add r5, r5, 0xc                                   |         r5 += 0xc;
    0x0004f2e4 bl 0x149c0                                        |         fprintf (r0, r1, r2, r3, r4, r5);
    0x0004f2e8 cmp sb, r5                                        |         
                                                                 |         if (sb != r5) {
    0x0004f2ec bne 0x4f338                                       |             goto label_6;
                                                                 |         }
    0x0004f2f0 mov r0, r8                                        |         r0 = r8;
    0x0004f2f4 bl 0x4d2ac                                        |         fcn_0004d2ac (r0);
    0x0004f2f8 ldrb r3, [r4, 0x19]                               |         r3 = *((r4 + 0x19));
    0x0004f2fc bic r3, r3, 0x10                                  |         r3 = BIT_MASK (r3, 0x10);
    0x0004f300 strb r3, [r4, 0x19]                               |         *((r4 + 0x19)) = r3;
    0x0004f304 ldrb r3, [r4, 0x18]                               |         r3 = *((r4 + 0x18));
    0x0004f308 cmp r3, 2                                         |         
    0x0004f30c bne 0x4f1e0                                       |         
                                                                 |     } while (r3 != 2);
    0x0004f310 mov r0, r4                                        |     r0 = r4;
    0x0004f314 bl 0x4d164                                        |     fcn_0004d164 (r0);
    0x0004f318 b 0x4f1e0                                         |     goto label_0;
                                                                 | label_5:
    0x0004f31c cmp r3, 1                                         |     
    0x0004f320 ldr r1, [sb, -8]                                  |     r1 = *((sb - 8));
    0x0004f324 mov r2, 0                                         |     r2 = 0;
                                                                 |     if (r3 != 1) {
    0x0004f328 ldreq r1, [r4, 0x10]                              |         r1 = *((r4 + 0x10));
                                                                 |     }
    0x0004f32c bl 0x4ecdc                                        |     r0 = fcn_0004ecdc (r0, r1);
    0x0004f330 add r0, sl, r0                                    |     r0 = sl + r0;
    0x0004f334 b 0x4f2a0                                         |     goto label_1;
                                                                 | label_6:
    0x0004f338 mov r3, 0                                         |     r3 = 0;
    0x0004f33c cmp r6, r3                                        |     
    0x0004f340 strb r3, [sp, 0x10]                               |     var_10h = r3;
                                                                 |     if (r6 == r3) {
    0x0004f344 moveq r0, 0x21                                    |         r0 = 0x21;
                                                                 |         goto label_7;
                                                                 |     }
                                                                 |     if (r6 == r3) {
                                                                 | label_7:
    0x0004f348 beq 0x4f2a4                                       |         goto label_2;
                                                                 |     }
    0x0004f34c ldr r3, [r5]                                      |     r3 = *(r5);
    0x0004f350 ldr r2, [pc, 0x48]                                |     r2 = "%s%*c%s%s";
    0x0004f354 str r3, [sp, 4]                                   |     var_4h = r3;
    0x0004f358 str sl, [sp]                                      |     *(sp) = sl;
    0x0004f35c mov r3, r7                                        |     r3 = r7;
    0x0004f360 mov r1, 0x30                                      |     r1 = 0x30;
    0x0004f364 add r0, sp, 0x10                                  |     r0 += var_10h;
    0x0004f368 bl 0x4ec90                                        |     fcn_0004ec90 (r0, r1);
    0x0004f36c sub r0, r0, 1                                     |     r0 -= var_1h;
    0x0004f370 b 0x4f2a4                                         |     goto label_2;
                                                                 | }
    ; 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 @ 0x50340 */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) fcn.00050340 ()                                              | void fcn_00050340 (int32_t arg1, char * s) {
                                                                         |     int32_t var_4h;
                                                                         |     int32_t var_ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = s;
    0x00050340 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00050344 ldr r5, [r0]                                              |     r5 = *(r0);
    0x00050348 cmp r5, 0                                                 |     
                                                                         |     if (r5 == 0) {
    0x0005034c movne r6, r5                                              |         r6 = r5;
                                                                         |     }
                                                                         |     if (r5 != 0) {
    0x00050350 bne 0x50364                                               |         goto label_1;
                                                                         |     }
    0x00050354 mov r0, r5                                                |     r0 = r5;
    0x00050358 add sp, sp, 0xc                                           |     
    0x0005035c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |     
                                                                         |     do {
    0x00050360 mov r6, r4                                                |         r6 = r4;
                                                                         | label_1:
    0x00050364 mov r4, r6                                                |         r4 = r6;
    0x00050368 ldrb r2, [r4], 1                                          |         r2 = *(r4);
                                                                         |         r4++;
    0x0005036c mov r8, r6                                                |         r8 = r6;
    0x00050370 subs r3, r2, 0x3a                                         |         r3 = r2 - 0x3a;
                                                                         |         if (r3 == r2) {
    0x00050374 movne r3, 1                                               |             r3 = 1;
                                                                         |         }
    0x00050378 cmp r2, 0                                                 |         
                                                                         |         if (r2 != 0) {
    0x0005037c moveq r3, 0                                               |             r3 = 0;
                                                                         |         }
    0x00050380 cmp r2, 0x25                                              |         
                                                                         |         if (r2 != 0x25) {
    0x00050384 moveq r3, 0                                               |             r3 = 0;
                                                                         |         }
                                                                         |         if (r2 == 0x25) {
    0x00050388 andne r3, r3, 1                                           |             r3 &= 1;
                                                                         |         }
    0x0005038c cmp r3, 0                                                 |         
    0x00050390 bne 0x50360                                               |         
                                                                         |     } while (r3 != 0);
    0x00050394 mov r7, r0                                                |     r7 = r0;
    0x00050398 mov r0, r1                                                |     r0 = r1;
    0x0005039c mov sl, r1                                                |     sl = r1;
    0x000503a0 bl 0x1514c                                                |     strlen (r0);
    0x000503a4 ldr r3, [pc, 0xb0]                                        |     
    0x000503a8 sub fp, r6, r5                                            |     
    0x000503ac ldr r3, [r3]                                              |     r3 = *(0x50458);
    0x000503b0 add r0, r0, 2                                             |     r0 += 2;
    0x000503b4 add sb, r0, fp                                            |     sb = r0 + fp;
                                                                         | label_0:
    0x000503b8 ldr r2, [r3, 0xc]                                         |     r2 = *((r3 + 0xc));
    0x000503bc cmp r2, sb                                                |     
                                                                         |     if (r2 <= sb) {
    0x000503c0 blo 0x5044c                                               |         goto label_2;
                                                                         |     }
    0x000503c4 cmp r5, r6                                                |     
    0x000503c8 ldr r0, [r3, 4]                                           |     r0 = *((r3 + 4));
                                                                         |     if (r5 != r6) {
    0x000503cc beq 0x503ec                                               |         
    0x000503d0 mov r2, fp                                                |         r2 = fp;
    0x000503d4 mov r1, r5                                                |         r1 = r5;
    0x000503d8 bl 0x147e0                                                |         mempcpy ();
    0x000503dc mov r2, 0x2f                                              |         r2 = 0x2f;
    0x000503e0 mov r3, r0                                                |         r3 = r0;
    0x000503e4 add r0, r0, 1                                             |         r0++;
    0x000503e8 strb r2, [r3]                                             |         *(r3) = r2;
                                                                         |     }
    0x000503ec mov r1, sl                                                |     r1 = sl;
    0x000503f0 bl 0x142f4                                                |     strcpy (r0, r1)
    0x000503f4 ldr r3, [pc, 0x64]                                        |     r3 = *(0x5045c);
    0x000503f8 mov r2, 0                                                 |     r2 = 0;
    0x000503fc str r2, [r3]                                              |     *(r3) = r2;
    0x00050400 ldrb r2, [r6]                                             |     r2 = *(r6);
    0x00050404 cmp r2, 0x25                                              |     
                                                                         |     if (r2 != 0x25) {
    0x00050408 bne 0x50424                                               |         goto label_3;
                                                                         |     }
    0x0005040c str r4, [r3]                                              |     *(r3) = r4;
                                                                         |     do {
    0x00050410 mov r8, r4                                                |         r8 = r4;
    0x00050414 ldrb r3, [r4], 1                                          |         r3 = *(r4);
                                                                         |         r4++;
    0x00050418 cmp r3, 0                                                 |         
    0x0005041c cmpne r3, 0x3a                                            |         __asm ("cmpne r3, 0x3a");
    0x00050420 bne 0x50410                                               |         
                                                                         |     } while (r3 != 0);
                                                                         | label_3:
    0x00050424 ldrb r3, [r8]                                             |     r3 = *(r8);
    0x00050428 mov r0, sb                                                |     r0 = sb;
    0x0005042c cmp r3, 0x3a                                              |     
                                                                         |     if (r3 != 0x3a) {
    0x00050430 addeq r8, r8, 1                                           |         r8++;
                                                                         |     }
                                                                         |     if (r3 == 0x3a) {
    0x00050434 movne r3, 0                                               |         r3 = 0;
                                                                         |     }
                                                                         |     if (r3 != 0x3a) {
    0x00050438 streq r8, [r7]                                            |         *(r7) = r8;
                                                                         |     }
                                                                         |     if (r3 == 0x3a) {
    0x0005043c strne r3, [r7]                                            |         *(r7) = r3;
                                                                         |     }
    0x00050440 add sp, sp, 0xc                                           |     
    0x00050444 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                  |     
    0x00050448 b 0x4e170                                                 |     void (*0x4e170)() ();
                                                                         | label_2:
    0x0005044c str r3, [sp, 4]                                           |     var_4h = r3;
    0x00050450 bl 0x4f990                                                |     fcn_0004f990 ();
    0x00050454 ldr r3, [sp, 4]                                           |     r3 = var_4h;
    0x00050458 b 0x503b8                                                 |     goto label_0;
                                                                         | }
    ; 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 @ 0x50d1c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00050d1c ()                                  | void fcn_00050d1c (int32_t arg1, int32_t arg2) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_7ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00050d1c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00050d20 ldr r6, [r0]                                  |     r6 = *(r0);
    0x00050d24 mov r7, r0                                    |     r7 = r0;
    0x00050d28 sub sp, sp, 0x7c                              |     
    0x00050d2c mov sl, r1                                    |     sl = r1;
    0x00050d30 add r6, r6, r3                                |     r6 += r3;
    0x00050d34 mov r8, r1                                    |     r8 = r1;
    0x00050d38 mov r5, r1                                    |     r5 = r1;
    0x00050d3c mov r0, 0                                     |     r0 = 0;
                                                             | label_0:
    0x00050d40 ldrb r4, [r5]                                 |     r4 = *(r5);
    0x00050d44 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00050d48 bne 0x50db4                                   |         
    0x00050d4c cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00050d50 bne 0x50e78                                   |             goto label_8;
                                                             |         }
    0x00050d54 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00050d58 beq 0x50dac                                   |             
                                                             | label_2:
    0x00050d5c ldrb r2, [sl]                                 |             r2 = *(sl);
    0x00050d60 add r3, sl, 1                                 |             r3 = sl + 1;
    0x00050d64 cmp r2, 0x5c                                  |             
                                                             |             if (r2 == 0x5c) {
    0x00050d68 bne 0x50d78                                   |                 
    0x00050d6c ldrb r2, [sl, 1]                              |                 r2 = *((sl + 1));
    0x00050d70 cmp r2, 0                                     |                 
                                                             |                 if (r2 != 0) {
    0x00050d74 movne sl, r3                                  |                     sl = r3;
                                                             |                     goto label_9;
                                                             |                 }
                                                             |             }
                                                             | label_9:
    0x00050d78 mov r3, sl                                    |             r3 = sl;
    0x00050d7c ldrb r2, [r3], 1                              |             r2 = *(r3);
                                                             |             r3++;
    0x00050d80 strb r2, [r6], 1                              |             *(r6) = r2;
                                                             |             r6++;
    0x00050d84 ldrb r2, [sl]                                 |             r2 = *(sl);
    0x00050d88 cmp r2, 0                                     |             
                                                             |             if (r2 != 0) {
    0x00050d8c bne 0x50e70                                   |                 goto label_10;
                                                             |             }
    0x00050d90 add r1, sp, 0x10                              |             r1 += var_10h;
    0x00050d94 ldr r0, [r7]                                  |             r0 = *(r7);
    0x00050d98 bl 0x14cc0                                    |             r0 = lstat64 ();
    0x00050d9c cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x00050da0 bne 0x50dac                                   |                 goto label_3;
                                                             |             }
    0x00050da4 ldr r0, [r7]                                  |             r0 = *(r7);
    0x00050da8 bl 0x4ec00                                    |             fcn_0004ec00 (r0);
                                                             |         }
                                                             | label_3:
    0x00050dac add sp, sp, 0x7c                              |         
    0x00050db0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             |     }
    0x00050db4 cmp r4, 0x3f                                  |     
    0x00050db8 cmpne r4, 0x2a                                |     __asm ("cmpne r4, 0x2a");
                                                             |     if (r4 != 0x3f) {
    0x00050dbc moveq r1, 1                                   |         r1 = 1;
                                                             |     }
                                                             |     if (r4 == 0x3f) {
    0x00050dc0 movne r1, 0                                   |         r1 = 0;
                                                             |     }
                                                             |     if (r4 == 0x3f) {
    0x00050dc4 beq 0x50e60                                   |         goto label_11;
                                                             |     }
    0x00050dc8 cmp r4, 0x5b                                  |     
                                                             |     if (r4 != 0x5b) {
    0x00050dcc bne 0x50e20                                   |         goto label_12;
                                                             |     }
    0x00050dd0 ldrb ip, [r5, 1]                              |     ip = *((r5 + 1));
    0x00050dd4 add r1, r5, 1                                 |     r1 = r5 + 1;
    0x00050dd8 cmp ip, 0x21                                  |     
    0x00050ddc addeq r1, r5, 2                               |     r1 = r5 + 2;
                                                             |     while (ip != 0x5d) {
    0x00050de0 ldrb ip, [r1]                                 |         ip = *(r1);
    0x00050de4 cmp ip, 0x5c                                  |         
                                                             |         if (ip != 0x5c) {
    0x00050de8 addeq ip, r1, 1                               |             
                                                             |         }
                                                             |         if (ip == 0x5c) {
    0x00050dec movne ip, r1                                  |             
                                                             |         }
    0x00050df0 ldrb r4, [ip]                                 |         r4 = *(ip);
    0x00050df4 cmp r4, 0                                     |         
    0x00050df8 cmpne r4, 0x2f                                |         __asm ("cmpne r4, 0x2f");
                                                             |         if (r4 != 0) {
    0x00050dfc moveq r4, 1                                   |             r4 = 1;
                                                             |         }
                                                             |         if (r4 == 0) {
    0x00050e00 movne r4, 0                                   |             r4 = 0;
                                                             |         }
                                                             |         if (r4 == 0) {
    0x00050e04 beq 0x50e68                                   |             goto label_13;
                                                             |         }
    0x00050e08 add r1, ip, 1                                 |         r1 = ip + 1;
    0x00050e0c ldrb ip, [ip, 1]                              |         ip = *((ip + 1));
    0x00050e10 cmp ip, 0x5d                                  |         
    0x00050e14 bne 0x50de0                                   |         
                                                             |     }
                                                             |     do {
    0x00050e18 mov r0, 1                                     |         r0 = 1;
    0x00050e1c b 0x50e54                                     |         goto label_1;
                                                             | label_12:
    0x00050e20 cmp r4, 0x5c                                  |         
                                                             |         if (r4 == 0x5c) {
    0x00050e24 movne r4, r1                                  |             r4 = r1;
                                                             |         }
                                                             |         if (r4 == 0x5c) {
    0x00050e28 bne 0x50e38                                   |             
    0x00050e2c ldrb r4, [r5, 1]                              |             r4 = *((r5 + 1));
    0x00050e30 adds r4, r4, 0                                |             r4 += 0;
                                                             |             if (r4 != r4) {
    0x00050e34 movne r4, 1                                   |                 r4 = 1;
                                                             |                 goto label_14;
                                                             |             }
                                                             |         }
                                                             | label_14:
    0x00050e38 ldrb r1, [r5, r4]                             |         r1 = *((r5 + r4));
    0x00050e3c cmp r1, 0x2f                                  |         
                                                             |         if (r1 == 0x2f) {
    0x00050e40 bne 0x50e54                                   |             
    0x00050e44 cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x00050e48 bne 0x50e78                                   |                 goto label_8;
                                                             |             }
    0x00050e4c add r8, r4, 1                                 |             r8 = r4 + 1;
    0x00050e50 add r8, r5, r8                                |             r8 = r5 + r8;
                                                             |         }
                                                             | label_1:
    0x00050e54 add r4, r4, 1                                 |         r4++;
    0x00050e58 add r5, r5, r4                                |         r5 += r4;
    0x00050e5c b 0x50d40                                     |         goto label_0;
                                                             | label_11:
    0x00050e60 mov r4, 0                                     |         r4 = 0;
    0x00050e64 b 0x50e18                                     |         
                                                             |     } while (1);
                                                             | label_13:
    0x00050e68 mov r4, 0                                     |     r4 = 0;
    0x00050e6c b 0x50e54                                     |     goto label_1;
                                                             | label_10:
    0x00050e70 mov sl, r3                                    |     sl = r3;
    0x00050e74 b 0x50d5c                                     |     goto label_2;
                                                             | label_8:
    0x00050e78 cmp r8, sl                                    |     
                                                             |     if (r8 <= sl) {
    0x00050e7c movhi r3, sl                                  |         r3 = sl;
                                                             |     }
                                                             |     if (r8 > sl) {
    0x00050e80 bhi 0x50f34                                   |         goto label_15;
                                                             |     }
                                                             | label_4:
    0x00050e84 mov sb, 0                                     |     sb = 0;
    0x00050e88 strb sb, [r6]                                 |     *(r6) = sb;
    0x00050e8c ldr r3, [r7]                                  |     r3 = *(r7);
    0x00050e90 str r2, [sp]                                  |     *(sp) = r2;
    0x00050e94 subs r2, r6, r3                               |     r2 = r6 - r3;
    0x00050e98 ldr r0, [pc, 0x1b4]                           |     r0 = *(0x51050);
                                                             |     if (r2 == r6) {
    0x00050e9c movne r0, r3                                  |         r0 = r3;
                                                             |     }
    0x00050ea0 str r2, [sp, 8]                               |     var_8h = r2;
    0x00050ea4 bl 0x14e4c                                    |     opendir ();
    0x00050ea8 ldr r2, [sp]                                  |     r2 = *(sp);
    0x00050eac subs fp, r0, 0                                |     
                                                             |     if (fp == r0) {
    0x00050eb0 beq 0x50dac                                   |         goto label_3;
                                                             |     }
    0x00050eb4 ldrb r3, [r5]                                 |     r3 = *(r5);
    0x00050eb8 cmp r3, sb                                    |     
                                                             |     if (r3 == sb) {
    0x00050ebc addne r3, r4, 1                               |         r3 = r4 + 1;
                                                             |     }
                                                             |     if (r3 == sb) {
    0x00050ec0 strbne sb, [r5]                               |         *(r5) = sb;
                                                             |     }
                                                             |     if (r3 == sb) {
    0x00050ec4 addne r5, r5, r3                              |         r5 += r3;
                                                             |     }
    0x00050ec8 ldrb r3, [r8]                                 |     r3 = *(r8);
                                                             |     if (r3 != sb) {
    0x00050ecc moveq sb, 1                                   |         sb = 1;
                                                             |     }
    0x00050ed0 cmp r3, 0x5c                                  |     
                                                             |     if (r3 != 0x5c) {
    0x00050ed4 addeq r3, r8, 1                               |         r3 = r8 + 1;
                                                             |     }
                                                             |     if (r3 == 0x5c) {
    0x00050ed8 movne r3, r8                                  |         r3 = r8;
                                                             |     }
    0x00050edc ldrb r3, [r3]                                 |     r3 = *(r3);
    0x00050ee0 sub sl, r5, sl                                |     sl = r5 - sl;
    0x00050ee4 str r3, [sp]                                  |     *(sp) = r3;
    0x00050ee8 ldr r3, [pc, 0x168]                           |     
    0x00050eec sub sl, r2, sl                                |     sl = r2 - sl;
    0x00050ef0 ldr r3, [r3]                                  |     r3 = *(0x51054);
    0x00050ef4 str r3, [sp, 4]                               |     var_4h = r3;
                                                             | label_5:
    0x00050ef8 ldr r3, [sp, 4]                               |     r3 = var_4h;
    0x00050efc ldr r3, [r3, 0x2c]                            |     r3 = *((r3 + 0x2c));
    0x00050f00 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00050f04 beq 0x50fdc                                   |         goto label_16;
                                                             |     }
                                                             | label_6:
    0x00050f08 mov r0, fp                                    |     r0 = fp;
    0x00050f0c bl 0x151c4                                    |     closedir ();
    0x00050f10 cmp sb, 0                                     |     
                                                             |     if (sb != 0) {
    0x00050f14 bne 0x50dac                                   |         goto label_3;
                                                             |     }
    0x00050f18 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00050f1c moveq r3, 0x2f                                |         r3 = 0x2f;
                                                             |     }
                                                             |     if (r4 == 0) {
    0x00050f20 movne r3, 0x5c                                |         r3 = 0x5c;
                                                             |     }
    0x00050f24 mvn r4, r4                                    |     r4 = ~r4;
    0x00050f28 strb r3, [r5, r4]                             |     *((r5 + r4)) = r3;
    0x00050f2c b 0x50dac                                     |     goto label_3;
                                                             |     do {
    0x00050f30 mov r3, r1                                    |         r3 = r1;
                                                             | label_15:
    0x00050f34 ldrb r0, [r3]                                 |         r0 = *(r3);
    0x00050f38 add r1, r3, 1                                 |         r1 = r3 + 1;
    0x00050f3c cmp r0, 0x5c                                  |         
                                                             |         if (r0 == 0x5c) {
    0x00050f40 bne 0x50f50                                   |             
    0x00050f44 ldrb r0, [r3, 1]                              |             r0 = *((r3 + 1));
    0x00050f48 cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x00050f4c movne r3, r1                                  |                 r3 = r1;
                                                             |                 goto label_17;
                                                             |             }
                                                             |         }
                                                             | label_17:
    0x00050f50 add r1, r3, 1                                 |         r1 = r3 + 1;
    0x00050f54 ldrb r3, [r3]                                 |         r3 = *(r3);
    0x00050f58 cmp r8, r1                                    |         
    0x00050f5c strb r3, [r6], 1                              |         *(r6) = r3;
                                                             |         r6++;
    0x00050f60 bhi 0x50f30                                   |         
                                                             |     } while (r8 > r1);
    0x00050f64 b 0x50e84                                     |     goto label_4;
                                                             | label_7:
    0x00050f68 bl 0x142dc                                    |     stpcpy ();
    0x00050f6c mov r3, 0x2f                                  |     r3 = 0x2f;
    0x00050f70 strb r3, [r0]                                 |     *(r0) = r3;
    0x00050f74 mov r6, r0                                    |     r6 = r0;
    0x00050f78 ldr r0, [r7]                                  |     r0 = *(r7);
    0x00050f7c ldr r1, [r7, 4]                               |     r1 = *((r7 + 4));
    0x00050f80 sub r6, r6, r0                                |     r6 -= r0;
    0x00050f84 add r6, r6, 1                                 |     r6++;
    0x00050f88 add r3, sl, r6                                |     r3 = sl + r6;
    0x00050f8c add r2, r3, 0xff                              |     r2 = r3 + 0xff;
    0x00050f90 cmp r1, r2                                    |     
                                                             |     if (r1 < r2) {
    0x00050f94 bhs 0x50fb8                                   |         
    0x00050f98 add r3, r3, 0x10c0                            |         r3 += 0x10c0;
    0x00050f9c add r3, r3, 0x3f                              |         r3 += 0x3f;
    0x00050fa0 mov r1, r3                                    |         r1 = r3;
    0x00050fa4 str r3, [sp, 0xc]                             |         var_ch = r3;
    0x00050fa8 bl 0x18990                                    |         fcn_00018990 (r0, r1);
    0x00050fac ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00050fb0 str r3, [r7, 4]                               |         *((r7 + 4)) = r3;
    0x00050fb4 str r0, [r7]                                  |         *(r7) = r0;
                                                             |     }
    0x00050fb8 mov r3, r6                                    |     r3 = r6;
    0x00050fbc mov r2, sl                                    |     r2 = sl;
    0x00050fc0 mov r1, r5                                    |     r1 = r5;
    0x00050fc4 mov r0, r7                                    |     r0 = r7;
    0x00050fc8 bl 0x50d1c                                    |     fcn_00050d1c (r0, r1);
    0x00050fcc ldr r6, [r7]                                  |     r6 = *(r7);
    0x00050fd0 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00050fd4 add r6, r6, r3                                |     r6 += r3;
    0x00050fd8 b 0x50ef8                                     |     goto label_5;
                                                             | label_16:
    0x00050fdc mov r0, fp                                    |     r0 = fp;
    0x00050fe0 bl 0x14c48                                    |     r0 = readdir64 ();
    0x00050fe4 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00050fe8 beq 0x50f08                                   |         goto label_6;
                                                             |     }
    0x00050fec ldrb r2, [r0, 0x13]                           |     r2 = *((r0 + 0x13));
    0x00050ff0 ldr r3, [sp]                                  |     r3 = *(sp);
    0x00050ff4 sub r1, r2, 0x2e                              |     r1 = r2 - 0x2e;
    0x00050ff8 cmp r3, 0x2e                                  |     
    0x00050ffc clz r1, r1                                    |     r1 &= r1;
    0x00051000 lsr r1, r1, 5                                 |     r1 >>= 5;
                                                             |     if (r3 != 0x2e) {
    0x00051004 moveq r1, 0                                   |         r1 = 0;
                                                             |     }
    0x00051008 cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x0005100c bne 0x50ef8                                   |         goto label_5;
                                                             |     }
    0x00051010 add r3, r0, 0x13                              |     r3 = r0 + 0x13;
    0x00051014 mov r2, r1                                    |     r2 = r1;
    0x00051018 mov r0, r8                                    |     r0 = r8;
    0x0005101c mov r1, r3                                    |     r1 = r3;
    0x00051020 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x00051024 bl 0x14da4                                    |     fnmatch ();
    0x00051028 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x0005102c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00051030 bne 0x50ef8                                   |         goto label_5;
                                                             |     }
    0x00051034 cmp sb, 0                                     |     
    0x00051038 mov r1, r3                                    |     r1 = r3;
    0x0005103c mov r0, r6                                    |     r0 = r6;
                                                             |     if (sb == 0) {
    0x00051040 beq 0x50f68                                   |         goto label_7;
                                                             |     }
    0x00051044 bl 0x142f4                                    |     strcpy (r0, r1)
    0x00051048 ldr r0, [r7]                                  |     r0 = *(r7);
    0x0005104c bl 0x4ec00                                    |     fcn_0004ec00 (r0);
    0x00051050 b 0x50ef8                                     |     goto label_5;
                                                             | }
    ; 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 @ 0x5895c */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) fcn.0005895c ()                      | void fcn_0005895c (int32_t arg1, int32_t arg2) {
                                                 |     int32_t var_0h;
                                                 |     int32_t var_4h;
                                                 |     int32_t var_ch;
                                                 |     int32_t var_10h;
                                                 |     int32_t var_14h;
                                                 |     jmpbuf env;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0005895c push {r4, r5, r6, r7, r8, lr}     |     
    0x00058960 sub sp, sp, 0x130                 |     
    0x00058964 str r0, [sp, 4]                   |     var_4h = r0;
    0x00058968 mov r0, 0x1ec                     |     r0 = 0x1ec;
    0x0005896c str r1, [sp]                      |     *(sp) = r1;
    0x00058970 bl 0x189b8                        |     fcn_000189b8 (r0);
    0x00058974 ldr r3, [pc, 0x52c]               |     r3 = *(0x58ea4);
    0x00058978 str r0, [r3]                      |     *(r3) = r0;
    0x0005897c add r3, r0, 0x3c                  |     r3 = r0 + 0x3c;
    0x00058980 str r3, [r0, 0x18]                |     *((r0 + 0x18)) = r3;
    0x00058984 str r3, [r0, 0x1c]                |     *((r0 + 0x1c)) = r3;
    0x00058988 add r3, r0, 0xd0                  |     r3 = r0 + 0xd0;
    0x0005898c str r3, [r0, 0x1d4]               |     *((r0 + 0x1d4)) = r3;
    0x00058990 mov r0, 0x20c                     |     r0 = 0x20c;
    0x00058994 bl 0x189b8                        |     fcn_000189b8 (r0);
    0x00058998 ldr r3, [pc, 0x50c]               |     r3 = *(0x58ea8);
    0x0005899c str r0, [r3]                      |     *(r3) = r0;
    0x000589a0 add r2, r0, 0x10                  |     r2 = r0 + 0x10;
    0x000589a4 mov r3, r0                        |     r3 = r0;
    0x000589a8 str r2, [r3], 0x14                |     *(r3) = r2;
                                                 |     r3 += 0x14;
    0x000589ac str r3, [r0, 4]                   |     *((r0 + 4)) = r3;
    0x000589b0 mov r3, 0x1f8                     |     r3 = 0x1f8;
    0x000589b4 str r3, [r0, 0xc]                 |     *((r0 + 0xc)) = r3;
    0x000589b8 add r3, r0, 0x20c                 |     r3 = r0 + 0x20c;
    0x000589bc str r3, [r0, 8]                   |     *((r0 + 8)) = r3;
    0x000589c0 mov r0, 0x160                     |     r0 = 0x160;
    0x000589c4 bl 0x189b8                        |     fcn_000189b8 (r0);
    0x000589c8 ldr r3, [pc, 0x4e0]               |     r3 = *(0x58eac);
    0x000589cc mov r4, r0                        |     r4 = r0;
    0x000589d0 str r0, [r3]                      |     *(r3) = r0;
    0x000589d4 ldr r2, [pc, 0x4d8]               |     r2 = *(0x58eb0);
    0x000589d8 mov r3, r0                        |     r3 = r0;
    0x000589dc add r1, r0, 0x90                  |     r1 = r0 + 0x90;
                                                 |     do {
    0x000589e0 ldr r0, [r2]                      |         r0 = *(r2);
    0x000589e4 add r3, r3, 0x10                  |         r3 += 0x10;
    0x000589e8 str r0, [r3, 0xac]                |         *((r3 + 0xac)) = r0;
    0x000589ec ldr r0, [r2, 4]                   |         r0 = *((r2 + 4));
    0x000589f0 add r2, r2, 0xc                   |         r2 += 0xc;
    0x000589f4 str r0, [r3, 0xb0]                |         *((r3 + 0xb0)) = r0;
    0x000589f8 ldr r0, [r2, -4]                  |         r0 = *((r2 - 4));
    0x000589fc str r0, [r3, 0xb4]                |         *((r3 + 0xb4)) = r0;
    0x00058a00 cmp r1, r3                        |         
    0x00058a04 bne 0x589e0                       |         
                                                 |     } while (r1 != r3);
    0x00058a08 add r3, r4, 0x14c                 |     r3 = r4 + 0x14c;
    0x00058a0c ldr r1, [pc, 0x4a4]               |     r1 = *(0x58eb4);
    0x00058a10 mov r0, r3                        |     r0 = r3;
    0x00058a14 bl 0x142f4                        |     strcpy (r0, r1)
    0x00058a18 str r0, [r4, 0x120]               |     *((r4 + 0x120)) = r0;
    0x00058a1c mov r0, 0x9c                      |     r0 = 0x9c;
    0x00058a20 bl 0x189b8                        |     fcn_000189b8 (r0);
    0x00058a24 ldr r3, [pc, 0x490]               |     r3 = "LINENO=";
    0x00058a28 str r0, [r3]                      |     *(r3) = r0;
    0x00058a2c mov r0, 0x7c                      |     r0 = 0x7c;
    0x00058a30 bl 0x189b8                        |     fcn_000189b8 (r0);
    0x00058a34 ldr r3, [pc, 0x484]               |     r3 = *(0x58ebc);
    0x00058a38 str r0, [r3]                      |     *(r3) = r0;
    0x00058a3c mov r0, 0x13                      |     r0 = 0x13;
    0x00058a40 bl 0x9eef4                        |     fcn_0009eef4 (r0);
    0x00058a44 ldr r3, [pc, 0x478]               |     r3 = *(0x58ec0);
    0x00058a48 str r0, [r3]                      |     *(r3) = r0;
    0x00058a4c mov r3, 0                         |     r3 = 0;
    0x00058a50 add r0, sp, 0x20                  |     r0 += env;
    0x00058a54 str r3, [sp, 0xc]                 |     var_ch = r3;
    0x00058a58 bl 0x150ec                        |     setjmp (r0);
    0x00058a5c subs r5, r0, 0                    |     r5 -= env;
                                                 |     if (r5 == env) {
    0x00058a60 beq 0x58c6c                       |         goto label_9;
                                                 |     }
    0x00058a64 ldr r3, [pc, 0x45c]               |     r3 = *(0x58ec4);
    0x00058a68 mov r4, 0                         |     r4 = 0;
    0x00058a6c str r4, [r3]                      |     *(r3) = r4;
    0x00058a70 ldr r3, [pc, 0x454]               |     r3 = *(0x58ec8);
    0x00058a74 ldr r5, [pc, 0x454]               |     r5 = *(0x58ecc);
    0x00058a78 str r4, [r3]                      |     *(r3) = r4;
    0x00058a7c bl 0x4cc48                        |     fcn_0004cc48 ();
    0x00058a80 ldr r3, [pc, 0x44c]               |     r3 = *(0x58ed0);
    0x00058a84 ldr r2, [r3]                      |     r2 = *(0x58ed0);
    0x00058a88 str r4, [r2, 0x10]                |     *((r2 + 0x10)) = r4;
    0x00058a8c str r4, [r2, 0xc]                 |     *((r2 + 0xc)) = r4;
    0x00058a90 mov r4, r3                        |     r4 = r3;
                                                 |     do {
    0x00058a94 ldr r3, [r4]                      |         r3 = *(r4);
    0x00058a98 cmp r3, r5                        |         
                                                 |         if (r3 == r5) {
    0x00058a9c bne 0x58b04                       |             
    0x00058aa0 ldr r3, [pc, 0x408]               |             r3 = *(0x58eac);
    0x00058aa4 mov r5, 0                         |             r5 = 0;
    0x00058aa8 ldr r4, [r3]                      |             r4 = *(0x58eac);
                                                 | label_0:
    0x00058aac ldr r0, [r4, 0x14]                |             r0 = *((r4 + 0x14));
    0x00058ab0 cmp r0, 0                         |             
                                                 |             if (r0 != 0) {
    0x00058ab4 bne 0x58b0c                       |                 goto label_10;
                                                 |             }
    0x00058ab8 ldr r5, [pc, 0x418]               |             r5 = *(0x58ed4);
    0x00058abc mov r4, r0                        |             r4 = r0;
                                                 | label_1:
    0x00058ac0 ldr r3, [r5]                      |             r3 = *(r5);
    0x00058ac4 cmp r3, 0                         |             
                                                 |             if (r3 != 0) {
    0x00058ac8 bne 0x58b18                       |                 goto label_11;
                                                 |             }
    0x00058acc ldr r3, [pc, 0x3d4]               |             
    0x00058ad0 ldr r4, [sp, 0xc]                 |             r4 = var_ch;
    0x00058ad4 ldr r3, [r3]                      |             r3 = *(0x58ea4);
    0x00058ad8 ldr r2, [r3, 0x38]                |             r2 = "HOME";
    0x00058adc cmp r4, 0                         |             
    0x00058ae0 cmpne r2, 4                       |             __asm ("cmpne r2, 4");
                                                 |             if (r4 != 0) {
    0x00058ae4 beq 0x58b00                       |                 
    0x00058ae8 ldrb r1, [r3, 0x40]               |                 r1 = *((r3 + 0x40));
    0x00058aec cmp r1, 0                         |                 
                                                 |                 if (r1 == 0) {
    0x00058af0 beq 0x58b00                       |                     goto label_2;
                                                 |                 }
    0x00058af4 ldr r3, [r3, 0xc]                 |                 r3 = *((r3 + 0xc));
    0x00058af8 cmp r3, 0                         |                 
                                                 |                 if (r3 == 0) {
    0x00058afc beq 0x58b24                       |                     goto label_12;
                                                 |                 }
                                                 |             }
                                                 | label_2:
    0x00058b00 bl 0x56a00                        |             fcn_00056a00 ();
                                                 |         }
    0x00058b04 bl 0x4cdec                        |         fcn_0004cdec ();
    0x00058b08 b 0x58a94                         |         
                                                 |     } while (1);
                                                 | label_10:
    0x00058b0c mov r0, r5                        |     r0 = r5;
    0x00058b10 bl 0x4d8fc                        |     fcn_0004d8fc (r0);
    0x00058b14 b 0x58aac                         |     goto label_0;
                                                 | label_11:
    0x00058b18 mov r0, r4                        |     r0 = r4;
    0x00058b1c bl 0x580c4                        |     fcn_000580c4 (r0);
    0x00058b20 b 0x58ac0                         |     goto label_1;
                                                 | label_12:
    0x00058b24 cmp r2, 0                         |     
    0x00058b28 beq 0x58b64                       |     
                                                 |     while (1) {
    0x00058b2c add r0, sp, 0x14                  |         r0 += var_14h;
    0x00058b30 bl 0x4d1e8                        |         r0 = fcn_0004d1e8 (r0);
    0x00058b34 bl 0x4ca38                        |         fcn_0004ca38 ();
    0x00058b38 cmp r4, 1                         |         
                                                 |         if (r4 != 1) {
    0x00058b3c bne 0x58b74                       |             goto label_13;
                                                 |         }
                                                 | label_4:
    0x00058b40 mov r3, 2                         |         r3 = 2;
    0x00058b44 ldr r0, [pc, 0x390]               |         r0 = *(0x58ed8);
    0x00058b48 str r3, [sp, 0xc]                 |         var_ch = r3;
    0x00058b4c bl 0x51b80                        |         r0 = fcn_00051b80 (r0);
    0x00058b50 cmp r0, 0                         |         
                                                 |         if (r0 == 0) {
    0x00058b54 beq 0x58b7c                       |             goto label_3;
                                                 |         }
    0x00058b58 ldr r0, [pc, 0x380]               |         r0 = "HOME";
    0x00058b5c bl 0x576d4                        |         fcn_000576d4 ("HOME");
    0x00058b60 b 0x58b7c                         |         goto label_3;
    0x00058b64 ldr r3, [pc, 0x378]               |         r3 = "_HOME_.profile";
    0x00058b68 ldr r0, [r3]                      |         r0 = "_HOME_.profile";
    0x00058b6c bl 0x4d2ac                        |         fcn_0004d2ac ("_HOME_.profile");
    0x00058b70 b 0x58b2c                         |         
                                                 |     }
                                                 | label_13:
    0x00058b74 cmp r4, 2                         |     
                                                 |     if (r4 == 2) {
    0x00058b78 bne 0x58ba4                       |         
                                                 | label_3:
    0x00058b7c mov r3, 3                         |         r3 = 3;
    0x00058b80 str r3, [sp, 0xc]                 |         var_ch = r3;
    0x00058b84 ldr r3, [pc, 0x31c]               |         
    0x00058b88 ldr r3, [r3]                      |         r3 = *(0x58ea4);
    0x00058b8c ldrb r3, [r3, 0x40]               |         r3 = *((r3 + 0x40));
    0x00058b90 cmp r3, 0                         |         
                                                 |         if (r3 != 0) {
    0x00058b94 bne 0x58e74                       |             goto label_14;
                                                 |         }
                                                 | label_7:
    0x00058b98 add r0, sp, 0x14                  |         r0 += var_14h;
    0x00058b9c bl 0x4d1e8                        |         fcn_0004d1e8 (r0);
    0x00058ba0 b 0x58bac                         |         
                                                 |     } else {
    0x00058ba4 cmp r4, 3                         |         
                                                 |         if (r4 != 3) {
    0x00058ba8 bne 0x58c60                       |             goto label_15;
                                                 |         }
                                                 |     }
    0x00058bac mov r3, 4                         |     r3 = 4;
    0x00058bb0 str r3, [sp, 0xc]                 |     var_ch = r3;
    0x00058bb4 ldr r3, [pc, 0x2ec]               |     r3 = *(0x58ea4);
    0x00058bb8 ldr r4, [r3]                      |     r4 = *(0x58ea4);
    0x00058bbc ldr r0, [r4, 0x14]                |     r0 = "LINENO=";
    0x00058bc0 ldrb r1, [r4, 0x43]               |     r1 = *((r4 + 0x43));
    0x00058bc4 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x00058bc8 bne 0x58e98                       |         goto label_16;
                                                 |     }
                                                 | label_8:
    0x00058bcc ldrb r3, [r4, 0x43]               |     r3 = *((r4 + 0x43));
    0x00058bd0 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x00058bd4 bne 0x58be4                       |         goto label_17;
                                                 |     }
    0x00058bd8 ldr r3, [r4, 0x14]                |     r3 = *((r4 + 0x14));
    0x00058bdc cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x00058be0 bne 0x58b00                       |         goto label_2;
                                                 |     }
                                                 | label_17:
    0x00058be4 ldrb r3, [r4, 0x40]               |     r3 = *((r4 + 0x40));
    0x00058be8 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x00058bec beq 0x58c60                       |         
    0x00058bf0 ldr r5, [pc, 0x2f0]               |         r5 = stderr;
    0x00058bf4 mov r0, r5                        |         r0 = r5;
    0x00058bf8 bl 0x51b80                        |         r0 = fcn_00051b80 (r0);
    0x00058bfc cmp r0, 0                         |         
                                                 |         if (r0 == 0) {
    0x00058c00 bne 0x58c54                       |             
    0x00058c04 ldr r0, [pc, 0x2d0]               |             r0 = *(0x58ed8);
    0x00058c08 bl 0x51b80                        |             r0 = fcn_00051b80 (r0);
    0x00058c0c cmp r0, 0                         |             
                                                 |             if (r0 == 0) {
    0x00058c10 beq 0x58c60                       |                 goto label_15;
                                                 |             }
    0x00058c14 ldr r3, [r4, 0x28]                |             r3 = *((r4 + 0x28));
    0x00058c18 add r3, r3, 1                     |             r3++;
    0x00058c1c str r3, [r4, 0x28]                |             *((r4 + 0x28)) = r3;
    0x00058c20 ldr r1, [pc, 0x2c4]               |             r1 = "HISTFILE";
    0x00058c24 bl 0x17e30                        |             r0 = fcn_00017e30 (r0, "HISTFILE");
    0x00058c28 mov r1, r0                        |             r1 = r0;
    0x00058c2c mov r4, r0                        |             r4 = r0;
    0x00058c30 mov r0, r5                        |             r0 = r5;
    0x00058c34 bl 0x4d744                        |             fcn_0004d744 (r0, r1);
    0x00058c38 mov r0, r4                        |             r0 = r4;
    0x00058c3c bl 0x152a8                        |             r0 = free (r0);
    0x00058c40 bl 0x4ca60                        |             fcn_0004ca60 ();
    0x00058c44 mov r0, r5                        |             r0 = r5;
    0x00058c48 bl 0x51b80                        |             r0 = fcn_00051b80 (r0);
    0x00058c4c cmp r0, 0                         |             
                                                 |             if (r0 == 0) {
    0x00058c50 beq 0x58c60                       |                 goto label_15;
                                                 |             }
                                                 |         }
    0x00058c54 ldr r3, [pc, 0x268]               |         
    0x00058c58 ldr r3, [r3]                      |         r3 = *(0x58ec0);
    0x00058c5c str r0, [r3, 0x1c]                |         *((r3 + 0x1c)) = r0;
                                                 |     }
                                                 | label_15:
    0x00058c60 mov r0, 1                         |     r0 = 1;
    0x00058c64 bl 0x56a88                        |     fcn_00056a88 (r0);
    0x00058c68 b 0x58b00                         |     goto label_2;
                                                 | label_9:
    0x00058c6c ldr r3, [pc, 0x234]               |     r3 = *(0x58ea4);
    0x00058c70 ldr r4, [r3]                      |     r4 = *(0x58ea4);
    0x00058c74 add r3, sp, 0x20                  |     r3 += env;
    0x00058c78 str r3, [r4, 0x24]                |     *((r4 + 0x24)) = r3;
    0x00058c7c bl 0x14588                        |     getpid ();
    0x00058c80 str r0, [r4, 8]                   |     *((r4 + 8)) = r0;
    0x00058c84 bl 0x51c34                        |     fcn_00051c34 ();
    0x00058c88 add r0, sp, 0x14                  |     r0 += var_14h;
    0x00058c8c bl 0x4e244                        |     fcn_0004e244 (r0);
    0x00058c90 ldr r3, [sp, 4]                   |     r3 = var_4h;
    0x00058c94 cmp r3, 0                         |     
                                                 |     if (r3 < 0) {
    0x00058c98 bge 0x58ca8                       |         
    0x00058c9c mvn r0, r3                        |         r0 = ~r3;
    0x00058ca0 bl 0x17704                        |         fcn_00017704 (r0);
    0x00058ca4 str r0, [r4, 0x14]                |         *((r4 + 0x14)) = r0;
                                                 |     }
    0x00058ca8 ldr r3, [sp]                      |     r3 = *(sp);
    0x00058cac ldr r1, [r4, 0x14]                |     r1 = *((r4 + 0x14));
    0x00058cb0 ldr r3, [r3]                      |     r3 = *(r3);
    0x00058cb4 ldr r2, [sp]                      |     r2 = *(sp);
    0x00058cb8 cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x00058cbc ldrbne r5, [r3]                   |         r5 = *(r3);
                                                 |     }
    0x00058cc0 add r2, r2, 4                     |     r2 += 4;
                                                 |     if (r3 == 0) {
    0x00058cc4 subne r5, r5, 0x2d                |         r5 -= 0x2d;
                                                 |     }
    0x00058cc8 clzne r5, r5                      |     __asm ("clzne r5, r5");
                                                 |     if (r3 == 0) {
    0x00058ccc lsrne r5, r5, 5                   |         r5 >>= 5;
                                                 |     }
    0x00058cd0 cmp r1, 0                         |     
    0x00058cd4 str r5, [sp, 0x10]                |     var_10h = r5;
                                                 |     if (r1 != 0) {
    0x00058cd8 bne 0x58e5c                       |         goto label_18;
                                                 |     }
    0x00058cdc str r3, [r4, 0x20]                |     *((r4 + 0x20)) = r3;
    0x00058ce0 ldr r3, [pc, 0x208]               |     r3 = "_ash_history";
    0x00058ce4 add r6, r4, 0x3d                  |     r6 = r4 + 0x3d;
    0x00058ce8 str r2, [r3]                      |     *(r3) = r2;
    0x00058cec mov r7, r6                        |     r7 = r6;
    0x00058cf0 add r3, r4, 0x4c                  |     r3 = r4 + 0x4c;
    0x00058cf4 mov r2, 2                         |     r2 = 2;
                                                 |     do {
    0x00058cf8 strb r2, [r7], 1                  |         *(r7) = r2;
                                                 |         r7++;
    0x00058cfc cmp r3, r7                        |         
    0x00058d00 bne 0x58cf8                       |         
                                                 |     } while (r3 != r7);
    0x00058d04 add r1, sp, 0x10                  |     r1 += var_10h;
    0x00058d08 mov r0, 1                         |     r0 = 1;
    0x00058d0c bl 0x4e728                        |     r0 = fcn_0004e728 (r0, r1, r2);
    0x00058d10 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x00058d14 beq 0x58d20                       |         
    0x00058d18 mov r0, 1                         |         r0 = 1;
    0x00058d1c bl 0x4c754                        |         fcn_0004c754 (r0);
                                                 |     }
    0x00058d20 ldr r3, [pc, 0x1c8]               |     r3 = "_ash_history";
    0x00058d24 ldr r8, [r4, 0x14]                |     r8 = *((r4 + 0x14));
    0x00058d28 ldr r5, [r3]                      |     r5 = "_ash_history";
    0x00058d2c ldr r3, [r5]                      |     r3 = "_ash_history";
    0x00058d30 cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x00058d34 bne 0x58d54                       |         
    0x00058d38 cmp r8, 0                         |         
                                                 |         if (r8 != 0) {
    0x00058d3c beq 0x58d4c                       |             
    0x00058d40 ldr r1, [pc, 0x1ac]               |             r1 = *(0x58ef0);
    0x00058d44 ldr r0, [pc, 0x1ac]               |             r0 = "_c";
    0x00058d48 bl 0x4d3d0                        |             fcn_0004d3d0 ();
                                                 |         }
    0x00058d4c mov r3, 1                         |         r3 = 1;
    0x00058d50 strb r3, [r4, 0x43]               |         *((r4 + 0x43)) = r3;
                                                 |     }
    0x00058d54 ldr r3, [r4, 0x40]                |     r3 = *((r4 + 0x40));
    0x00058d58 ldr r2, [pc, 0x19c]               |     r2 = "%s requires an argument";
    0x00058d5c bic r3, r3, 0xff0000              |     r3 = BIT_MASK (r3, 0xff0000);
    0x00058d60 bic r3, r3, 0xff00                |     r3 = BIT_MASK (r3, 0xff00);
    0x00058d64 cmp r3, r2                        |     
                                                 |     if (r3 == r2) {
    0x00058d68 bne 0x58d90                       |         
    0x00058d6c mov r0, 0                         |         r0 = 0;
    0x00058d70 bl 0x146e4                        |         r0 = isatty (r0);
    0x00058d74 cmp r0, 0                         |         
                                                 |         if (r0 == 0) {
    0x00058d78 beq 0x58d90                       |             goto label_19;
                                                 |         }
    0x00058d7c mov r0, 1                         |         r0 = 1;
    0x00058d80 bl 0x146e4                        |         r0 = isatty (r0);
    0x00058d84 cmp r0, 0                         |         
                                                 |         if (r0 == 0) {
    0x00058d88 movne r3, 1                       |             r3 = 1;
                                                 |         }
                                                 |         if (r0 != 0) {
    0x00058d8c strbne r3, [r4, 0x40]             |             *((r4 + 0x40)) = r3;
                                                 |             goto label_19;
                                                 |         }
                                                 |     }
                                                 | label_19:
    0x00058d90 ldrb r3, [r4, 0x41]               |     r3 = *((r4 + 0x41));
    0x00058d94 cmp r3, 2                         |     
                                                 |     if (r3 != 2) {
    0x00058d98 ldrbeq r3, [r4, 0x40]             |         r3 = *((r4 + 0x40));
                                                 |     }
                                                 |     if (r3 != 2) {
    0x00058d9c strbeq r3, [r4, 0x41]             |         *((r4 + 0x41)) = r3;
                                                 |     }
    0x00058da0 mov r3, 0                         |     r3 = 0;
                                                 |     do {
    0x00058da4 ldrb r2, [r6], 1                  |         r2 = *(r6);
                                                 |         r6++;
    0x00058da8 cmp r2, 2                         |         
                                                 |         if (r2 != 2) {
    0x00058dac strbeq r3, [r6, -1]               |             *((r6 - 1)) = r3;
                                                 |         }
    0x00058db0 cmp r6, r7                        |         
    0x00058db4 bne 0x58da4                       |         
                                                 |     } while (r6 != r7);
    0x00058db8 cmp r8, 0                         |     
    0x00058dbc ldr r0, [r5]                      |     r0 = *(r5);
                                                 |     if (r8 == 0) {
    0x00058dc0 beq 0x58e28                       |         goto label_20;
                                                 |     }
    0x00058dc4 str r0, [r4, 0x14]                |     *((r4 + 0x14)) = r0;
    0x00058dc8 ldr r2, [r5, 4]                   |     r2 = *((r5 + 4));
    0x00058dcc add r3, r5, 4                     |     r3 = r5 + 4;
    0x00058dd0 cmp r2, 0                         |     
                                                 |     if (r2 != 0) {
    0x00058dd4 bne 0x58e44                       |         goto label_21;
                                                 |     }
                                                 | label_5:
    0x00058dd8 ldr r2, [pc, 0xd0]                |     
    0x00058ddc mov r1, 1                         |     r1 = 1;
    0x00058de0 ldr r2, [r2]                      |     r2 = *(0x58eac);
    0x00058de4 str r3, [r2, 0x10]                |     *((r2 + 0x10)) = r3;
    0x00058de8 str r1, [r2, 4]                   |     *((r2 + 4)) = r1;
    0x00058dec sub r3, r3, 4                     |     r3 -= 4;
    0x00058df0 mvn r1, 0                         |     r1 = ~0;
    0x00058df4 str r1, [r2, 8]                   |     *((r2 + 8)) = r1;
                                                 | label_6:
    0x00058df8 ldr r1, [r3, 4]!                  |     r1 = *((r3 += 4));
    0x00058dfc cmp r1, 0                         |     
                                                 |     if (r1 != 0) {
    0x00058e00 bne 0x58e64                       |         goto label_22;
                                                 |     }
    0x00058e04 bl 0x4e0f8                        |     fcn_0004e0f8 ();
    0x00058e08 ldr r3, [sp, 0x10]                |     r3 = var_10h;
    0x00058e0c cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x00058e10 beq 0x58b7c                       |         goto label_3;
                                                 |     }
    0x00058e14 mov r3, 1                         |     r3 = 1;
    0x00058e18 ldr r0, [pc, 0xe0]                |     r0 = *(0x58efc);
    0x00058e1c str r3, [sp, 0xc]                 |     var_ch = r3;
    0x00058e20 bl 0x576d4                        |     fcn_000576d4 (r0);
    0x00058e24 b 0x58b40                         |     goto label_4;
                                                 | label_20:
    0x00058e28 ldrb r3, [r4, 0x43]               |     r3 = *((r4 + 0x43));
    0x00058e2c cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x00058e30 movne r3, r5                      |         r3 = r5;
                                                 |         goto label_23;
                                                 |     }
                                                 |     if (r3 != 0) {
                                                 | label_23:
    0x00058e34 bne 0x58dd8                       |         goto label_5;
                                                 |     }
    0x00058e38 mov r1, r8                        |     r1 = r8;
    0x00058e3c bl 0x4e328                        |     fcn_0004e328 (r0, r1);
    0x00058e40 mov r3, r5                        |     r3 = r5;
                                                 |     do {
                                                 | label_21:
    0x00058e44 ldr r2, [r3]                      |         r2 = *(r3);
    0x00058e48 ldr r1, [pc, 0xb4]                |         r1 = "/etc/profile";
    0x00058e4c str r2, [r4, 0x20]                |         *((r4 + 0x20)) = r2;
    0x00058e50 str r2, [r1]                      |         *(r1) = r2;
    0x00058e54 add r3, r3, 4                     |         r3 += 4;
    0x00058e58 b 0x58dd8                         |         goto label_5;
                                                 | label_18:
    0x00058e5c ldr r3, [sp]                      |         r3 = *(sp);
    0x00058e60 b 0x58e44                         |         
                                                 |     } while (1);
                                                 | label_22:
    0x00058e64 ldr r1, [r2]                      |     r1 = *(r2);
    0x00058e68 add r1, r1, 1                     |     r1++;
    0x00058e6c str r1, [r2]                      |     *(r2) = r1;
    0x00058e70 b 0x58df8                         |     goto label_6;
                                                 | label_14:
    0x00058e74 ldr r0, [pc, 0x8c]                |     r0 = *(0x58f04);
    0x00058e78 bl 0x51b80                        |     r0 = fcn_00051b80 (r0);
    0x00058e7c subs r3, r0, 0                    |     r3 = r0 - 0;
                                                 |     if (r3 == r0) {
    0x00058e80 beq 0x58b98                       |         goto label_7;
                                                 |     }
    0x00058e84 ldrb r3, [r3]                     |     r3 = *(r3);
    0x00058e88 cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x00058e8c beq 0x58b98                       |         goto label_7;
                                                 |     }
    0x00058e90 bl 0x576d4                        |     fcn_000576d4 (r0);
    0x00058e94 b 0x58b98                         |     goto label_7;
                                                 | label_16:
    0x00058e98 clz r1, r1                        |     r1 &= r1;
    0x00058e9c lsr r1, r1, 5                     |     r1 >>= 5;
    0x00058ea0 bl 0x54320                        |     fcn_00054320 (r0, r1);
    0x00058ea4 b 0x58bcc                         |     goto label_8;
                                                 | }
    ; 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 @ 0x5a448 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0005a448 ()              | void fcn_0005a448 () {
                                         |     int32_t var_0h;
                                         |     char * path;
                                         |     int32_t var_70h;
    0x0005a448 push {r4, lr}             |     
    0x0005a44c sub sp, sp, 0x70          |     
    0x0005a450 mov r2, 0x6c              |     r2 = 0x6c;
    0x0005a454 mov r1, 0                 |     r1 = 0;
    0x0005a458 add r0, sp, 2             |     r0 += path;
    0x0005a45c bl 0x14d98                |     memset (r0, r1, r2);
    0x0005a460 mov r3, 1                 |     r3 = 1;
    0x0005a464 ldr r1, [pc, 0x70]        |     r1 = *(0x5a4d8);
    0x0005a468 add r0, sp, 2             |     r0 += path;
    0x0005a46c strh r3, [sp]             |     *(sp) = r3;
    0x0005a470 bl 0x142f4                |     strcpy (r0, r1)
    0x0005a474 ldr r0, [pc, 0x60]        |     r0 = *(0x5a4d8);
    0x0005a478 bl 0x1926c                |     r0 = fcn_0001926c (r0);
    0x0005a47c subs r4, r0, 0            |     r4 = r0 - 0;
                                         |     if (r4 != r0) {
    0x0005a480 beq 0x5a49c               |         
    0x0005a484 mov r2, 0x6c              |         r2 = 0x6c;
    0x0005a488 mov r1, r4                |         r1 = r4;
    0x0005a48c add r0, sp, 2             |         r0 += path;
    0x0005a490 bl 0xa40f4                |         fcn_000a40f4 (r0);
    0x0005a494 mov r0, r4                |         r0 = r4;
    0x0005a498 bl 0x152a8                |         free (r0);
                                         |     }
    0x0005a49c add r0, sp, 2             |     r0 += path;
    0x0005a4a0 bl 0x14bdc                |     unlink (r0);
    0x0005a4a4 mov r2, 0                 |     r2 = 0;
    0x0005a4a8 mov r1, 2                 |     r1 = 2;
    0x0005a4ac mov r0, 1                 |     r0 = 1;
    0x0005a4b0 bl 0x18f88                |     fcn_00018f88 (r0, r1);
    0x0005a4b4 mov r2, 0x6e              |     r2 = 0x6e;
    0x0005a4b8 mov r1, sp                |     r1 = sp;
    0x0005a4bc mov r4, r0                |     r4 = r0;
    0x0005a4c0 bl 0x18fa4                |     fcn_00018fa4 (r0, r1);
    0x0005a4c4 ldr r1, [pc, 0x14]        |     r1 = "/dev/log";
    0x0005a4c8 ldr r0, [pc, 0xc]         |     r0 = *(0x5a4d8);
    0x0005a4cc bl 0x14894                |     chmod (r0, "/dev/log");
    0x0005a4d0 mov r0, r4                |     r0 = r4;
    0x0005a4d4 add sp, sp, 0x70          |     
    0x0005a4d8 pop {r4, pc}              |     
                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x61c84 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00061c84 ()                                  | void fcn_00061c84 (int32_t arg_0h, int32_t arg1, char * s) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_28h;
                                                             |     int32_t var_2ch;
                                                             |     int32_t var_30h;
                                                             |     int32_t var_34h;
                                                             |     int32_t var_3ch;
                                                             |     r0 = arg1;
                                                             |     r1 = s;
    0x00061c84 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00061c88 ldr r4, [pc, 0xc30]                           |     r4 = *(0x628bc);
    0x00061c8c sub sp, sp, 0x3c                              |     
    0x00061c90 mov r6, r0                                    |     r6 = r0;
    0x00061c94 mov r0, r1                                    |     r0 = r1;
    0x00061c98 mov r5, r1                                    |     r5 = r1;
    0x00061c9c mov r7, r2                                    |     r7 = r2;
    0x00061ca0 bl 0x1514c                                    |     strlen (r0);
    0x00061ca4 mvn sl, 0                                     |     sl = ~0;
    0x00061ca8 cmp r7, 0                                     |     
    0x00061cac str sl, [sp, 0x20]                            |     var_20h = sl;
    0x00061cb0 mov sb, r0                                    |     sb = r0;
    0x00061cb4 add r8, r5, r0                                |     r8 = r5 + r0;
                                                             |     if (r7 == 0) {
    0x00061cb8 bne 0x61d38                                   |         
    0x00061cbc ldr r1, [pc, 0xc00]                           |         r1 = *(0x628c0);
    0x00061cc0 mov r0, r8                                    |         r0 = r8;
    0x00061cc4 add fp, r8, 1                                 |         
    0x00061cc8 bl 0x142f4                                    |         strcpy (r0, r1)
    0x00061ccc mov r2, 0x7f                                  |         r2 = 0x7f;
    0x00061cd0 mov r1, fp                                    |         r1 = fp;
    0x00061cd4 mov r0, r5                                    |         r0 = r5;
    0x00061cd8 bl 0x19740                                    |         fcn_00019740 (r0);
    0x00061cdc strb r7, [r5, sb]                             |         *((r5 + sb)) = r7;
    0x00061ce0 cmp r0, 0                                     |         
                                                             |         if (r0 <= 0) {
    0x00061ce4 ble 0x61d38                                   |             goto label_14;
                                                             |         }
    0x00061ce8 add r3, sp, 0x24                              |         r3 += var_24h;
    0x00061cec add r2, sp, 0x20                              |         r2 += var_20h;
    0x00061cf0 ldr r1, [pc, 0xbd0]                           |         r1 = "_dev";
    0x00061cf4 mov r0, fp                                    |         r0 = fp;
    0x00061cf8 bl 0x14c9c                                    |         r0 = sscanf (r0, "_dev", r2);
    0x00061cfc cmp r0, 2                                     |         
                                                             |         if (r0 == 2) {
    0x00061d00 strne sl, [sp, 0x20]                          |             var_20h = sl;
                                                             |         }
                                                             |         if (r0 != 2) {
    0x00061d04 bne 0x61d38                                   |             goto label_14;
                                                             |         }
    0x00061d08 ldrb r2, [r4, 9]                              |         r2 = *((r4 + 9));
    0x00061d0c ldrb r3, [r4, 8]                              |         r3 = *((r4 + 8));
    0x00061d10 orr r3, r3, r2, lsl 8                         |         r3 |= (r2 << 8);
    0x00061d14 ldrb r2, [r4, 0xa]                            |         r2 = *((r4 + 0xa));
    0x00061d18 orr r3, r3, r2, lsl 16                        |         r3 |= (r2 << 16);
    0x00061d1c ldrb r2, [r4, 0xb]                            |         r2 = *((r4 + 0xb));
    0x00061d20 orrs r3, r3, r2, lsl 24                       |         r3 |= (r2 << 24);
                                                             |         if (r3 == r3) {
    0x00061d24 beq 0x61d38                                   |             goto label_14;
                                                             |         }
    0x00061d28 ldr r2, [sp, 0x24]                            |         r2 = var_24h;
    0x00061d2c ldr r1, [sp, 0x20]                            |         r1 = var_20h;
    0x00061d30 ldr r0, [pc, 0xb94]                           |         r0 = *(0x628c8);
    0x00061d34 bl 0x18274                                    |         fcn_00018274 ();
                                                             |     }
                                                             | label_14:
    0x00061d38 cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x00061d3c bne 0x61da0                                   |         
    0x00061d40 ldr r1, [pc, 0xb88]                           |         r1 = "dev %u,%u";
    0x00061d44 add sl, r8, 1                                 |         sl = r8 + 1;
    0x00061d48 mov r0, r8                                    |         r0 = r8;
    0x00061d4c bl 0x142f4                                    |         strcpy (r0, r1)
    0x00061d50 mov r2, 0x7f                                  |         r2 = 0x7f;
    0x00061d54 mov r1, sl                                    |         r1 = sl;
    0x00061d58 mov r0, r5                                    |         r0 = r5;
    0x00061d5c bl 0x19740                                    |         fcn_00019740 (r0);
    0x00061d60 strb r6, [r5, sb]                             |         *((r5 + sb)) = r6;
    0x00061d64 ldr r1, [pc, 0xb68]                           |         r1 = "_uevent";
    0x00061d68 mov fp, r6                                    |         
    0x00061d6c cmp r0, 0                                     |         
                                                             |         if (r0 < 0) {
    0x00061d70 addge r0, r8, r0                              |             r0 = r8 + r0;
                                                             |         }
                                                             |         if (r0 >= 0) {
    0x00061d74 addlt r0, r8, 0                               |             r0 = r8 + 0;
                                                             |         }
    0x00061d78 strb r6, [r0, 1]                              |         *((r0 + 1)) = r6;
    0x00061d7c mov r0, sl                                    |         r0 = sl;
    0x00061d80 bl 0x14b10                                    |         r0 = strstr (r0, r1);
    0x00061d84 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00061d88 beq 0x61f5c                                   |             goto label_15;
                                                             |         }
    0x00061d8c add r6, r0, 9                                 |         r6 = r0 + 9;
    0x00061d90 mov r1, 0xa                                   |         r1 = 0xa;
    0x00061d94 mov r0, r6                                    |         r0 = r6;
    0x00061d98 bl 0x151e8                                    |         r0 = strchrnul ();
    0x00061d9c strb fp, [r0]                                 |         *(r0) = fp;
                                                             |     }
                                                             | label_1:
    0x00061da0 ldr r1, [pc, 0xb30]                           |     r1 = "\nDEVNAME=";
    0x00061da4 mov r0, r5                                    |     r0 = r5;
    0x00061da8 bl 0x14b10                                    |     r0 = strstr (r0, "\nDEVNAME=");
    0x00061dac cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00061db0 bne 0x61f7c                                   |         goto label_16;
                                                             |     }
    0x00061db4 ldrb r3, [r4, 0xd]                            |     r3 = *((r4 + 0xd));
    0x00061db8 ldrb r0, [r4, 0xc]                            |     r0 = *((r4 + 0xc));
    0x00061dbc orr r0, r0, r3, lsl 8                         |     r0 |= (r3 << 8);
    0x00061dc0 ldrb r3, [r4, 0xe]                            |     r3 = *((r4 + 0xe));
    0x00061dc4 orr r0, r0, r3, lsl 16                        |     r0 |= (r3 << 16);
    0x00061dc8 ldrb r3, [r4, 0xf]                            |     r3 = *((r4 + 0xf));
    0x00061dcc orrs r0, r0, r3, lsl 24                       |     r0 |= (r3 << 24);
                                                             |     if (r0 != r0) {
    0x00061dd0 bne 0x61f6c                                   |         goto label_17;
                                                             |     }
                                                             | label_2:
    0x00061dd4 mov r3, 0x2000                                |     r3 = 0x2000;
                                                             | label_3:
    0x00061dd8 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00061ddc mov r3, 0                                     |     r3 = 0;
    0x00061de0 strb r3, [r4, 0x20]                           |     *((r4 + 0x20)) = r3;
    0x00061de4 strb r3, [r4, 0x21]                           |     *((r4 + 0x21)) = r3;
    0x00061de8 strb r3, [r4, 0x22]                           |     *((r4 + 0x22)) = r3;
    0x00061dec strb r3, [r4, 0x23]                           |     *((r4 + 0x23)) = r3;
                                                             |     do {
                                                             | label_0:
    0x00061df0 ldrb r3, [r4, 0x19]                           |         r3 = *((r4 + 0x19));
    0x00061df4 ldrb r5, [r4, 0x18]                           |         r5 = *((r4 + 0x18));
    0x00061df8 orr r5, r5, r3, lsl 8                         |         r5 |= (r3 << 8);
    0x00061dfc ldrb r3, [r4, 0x1a]                           |         r3 = *((r4 + 0x1a));
    0x00061e00 orr r5, r5, r3, lsl 16                        |         r5 |= (r3 << 16);
    0x00061e04 ldrb r3, [r4, 0x1b]                           |         r3 = *((r4 + 0x1b));
    0x00061e08 orrs r5, r5, r3, lsl 24                       |         r5 |= (r3 << 24);
                                                             |         if (r5 == r5) {
    0x00061e0c bne 0x61e64                                   |             
    0x00061e10 ldrb r3, [r4, 0x15]                           |             r3 = *((r4 + 0x15));
    0x00061e14 ldrb r0, [r4, 0x14]                           |             r0 = *((r4 + 0x14));
    0x00061e18 orr r0, r0, r3, lsl 8                         |             r0 |= (r3 << 8);
    0x00061e1c ldrb r3, [r4, 0x16]                           |             r3 = *((r4 + 0x16));
    0x00061e20 orr r0, r0, r3, lsl 16                        |             r0 |= (r3 << 16);
    0x00061e24 ldrb r3, [r4, 0x17]                           |             r3 = *((r4 + 0x17));
    0x00061e28 orrs r0, r0, r3, lsl 24                       |             r0 |= (r3 << 24);
                                                             |             if (r0 == r0) {
    0x00061e2c beq 0x61e64                                   |                 goto label_18;
                                                             |             }
    0x00061e30 ldr r1, [pc, 0xaa4]                           |             r1 = "/block/";
    0x00061e34 bl 0xa0ab8                                    |             fcn_000a0ab8 (r0);
    0x00061e38 strb r5, [r4, 0x14]                           |             *((r4 + 0x14)) = r5;
    0x00061e3c strb r5, [r4, 0x15]                           |             *((r4 + 0x15)) = r5;
    0x00061e40 strb r5, [r4, 0x16]                           |             *((r4 + 0x16)) = r5;
    0x00061e44 strb r5, [r4, 0x17]                           |             *((r4 + 0x17)) = r5;
    0x00061e48 lsr r3, r0, 8                                 |             r3 = r0 >> 8;
    0x00061e4c strb r0, [r4, 0x18]                           |             *((r4 + 0x18)) = r0;
    0x00061e50 strb r3, [r4, 0x19]                           |             *((r4 + 0x19)) = r3;
    0x00061e54 lsr r3, r0, 0x10                              |             r3 = r0 >> 0x10;
    0x00061e58 lsr r0, r0, 0x18                              |             r0 >>= 0x18;
    0x00061e5c strb r3, [r4, 0x1a]                           |             *((r4 + 0x1a)) = r3;
    0x00061e60 strb r0, [r4, 0x1b]                           |             *((r4 + 0x1b)) = r0;
                                                             |         }
                                                             | label_18:
    0x00061e64 ldrb r2, [r4, 0x1d]                           |         r2 = *((r4 + 0x1d));
    0x00061e68 ldrb r3, [r4, 0x1c]                           |         r3 = *((r4 + 0x1c));
    0x00061e6c ldr r8, [pc, 0xa4c]                           |         r8 = *(0x628bc);
    0x00061e70 orr r3, r3, r2, lsl 8                         |         r3 |= (r2 << 8);
    0x00061e74 ldrb r2, [r4, 0x1e]                           |         r2 = *((r4 + 0x1e));
    0x00061e78 orr r3, r3, r2, lsl 16                        |         r3 |= (r2 << 16);
    0x00061e7c ldrb r2, [r4, 0x1f]                           |         r2 = *((r4 + 0x1f));
    0x00061e80 orrs r3, r3, r2, lsl 24                       |         r3 |= (r2 << 24);
                                                             |         if (r3 == r3) {
    0x00061e84 beq 0x61fb0                                   |             goto label_19;
                                                             |         }
    0x00061e88 ldrb r1, [r4, 0x21]                           |         r1 = *((r4 + 0x21));
    0x00061e8c ldrb r2, [r4, 0x20]                           |         r2 = *((r4 + 0x20));
    0x00061e90 orr r2, r2, r1, lsl 8                         |         r2 |= (r1 << 8);
    0x00061e94 ldrb r1, [r4, 0x22]                           |         r1 = *((r4 + 0x22));
    0x00061e98 orr r2, r2, r1, lsl 16                        |         r2 |= (r1 << 16);
    0x00061e9c ldrb r1, [r4, 0x23]                           |         r1 = *((r4 + 0x23));
    0x00061ea0 orr r2, r2, r1, lsl 24                        |         r2 |= (r1 << 24);
    0x00061ea4 ldr r1, [r3, r2, lsl 2]                       |         offset_0 = r2 << 2;
                                                             |         r1 = *((r3 + offset_0));
    0x00061ea8 cmp r1, 0                                     |         
                                                             |         if (r1 == 0) {
    0x00061eac beq 0x61f84                                   |             goto label_20;
                                                             |         }
    0x00061eb0 add r1, r2, 1                                 |         r1 = r2 + 1;
    0x00061eb4 lsr r0, r1, 8                                 |         r0 = r1 >> 8;
    0x00061eb8 strb r1, [r4, 0x20]                           |         *((r4 + 0x20)) = r1;
    0x00061ebc strb r0, [r4, 0x21]                           |         *((r4 + 0x21)) = r0;
    0x00061ec0 lsr r0, r1, 0x10                              |         r0 = r1 >> 0x10;
    0x00061ec4 lsr r1, r1, 0x18                              |         r1 >>= 0x18;
    0x00061ec8 strb r0, [r4, 0x22]                           |         *((r4 + 0x22)) = r0;
    0x00061ecc strb r1, [r4, 0x23]                           |         *((r4 + 0x23)) = r1;
    0x00061ed0 ldr sb, [r3, r2, lsl 2]                       |         offset_1 = r2 << 2;
                                                             |         sb = *((r3 + offset_1));
                                                             | label_4:
    0x00061ed4 ldr r5, [sb, 0x48]                            |         r5 = *((sb + 0x48));
    0x00061ed8 mov sl, 0                                     |         sl = 0;
                                                             | label_11:
    0x00061edc cmp r5, 0                                     |         
                                                             |         if (r5 != 0) {
    0x00061ee0 bne 0x62414                                   |             goto label_21;
                                                             |         }
    0x00061ee4 ldr r3, [sb, 8]                               |         r3 = *((sb + 8));
    0x00061ee8 cmp r3, 0                                     |         
                                                             |         if (r3 >= 0) {
    0x00061eec bge 0x62448                                   |             goto label_22;
                                                             |         }
    0x00061ef0 ldr r0, [sb, 0x1c]                            |         r0 = *((sb + 0x1c));
    0x00061ef4 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00061ef8 beq 0x62540                                   |             goto label_23;
                                                             |         }
    0x00061efc bl 0x144d4                                    |         r0 = getenv (r0);
    0x00061f00 subs r5, r0, 0                                |         r5 = r0 - 0;
    0x00061f04 beq 0x61df0                                   |         
                                                             |     } while (r5 == r0);
                                                             | label_12:
    0x00061f08 ldrb r3, [sb, 1]                              |     r3 = *((sb + 1));
    0x00061f0c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00061f10 beq 0x62478                                   |         goto label_24;
                                                             |     }
    0x00061f14 mov r3, 0                                     |     r3 = 0;
    0x00061f18 str r3, [sp]                                  |     *(sp) = r3;
    0x00061f1c mov r2, 1                                     |     r2 = 1;
    0x00061f20 add r3, sp, 0x28                              |     r3 += var_28h;
    0x00061f24 mov r1, r5                                    |     r1 = r5;
    0x00061f28 add r0, sb, 0x28                              |     r0 = sb + 0x28;
    0x00061f2c bl 0x14e34                                    |     r0 = regexec ();
    0x00061f30 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00061f34 bne 0x61df0                                   |         goto label_0;
                                                             |     }
    0x00061f38 ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x00061f3c cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00061f40 bne 0x61df0                                   |         goto label_0;
                                                             |     }
    0x00061f44 mov r0, r5                                    |     r0 = r5;
    0x00061f48 bl 0x1514c                                    |     strlen (r0);
    0x00061f4c ldr r3, [sp, 0x2c]                            |     r3 = var_2ch;
    0x00061f50 cmp r3, r0                                    |     
                                                             |     if (r3 != r0) {
    0x00061f54 bne 0x61df0                                   |         goto label_0;
                                                             |     }
    0x00061f58 b 0x62478                                     |     goto label_24;
                                                             | label_15:
    0x00061f5c mov r0, r5                                    |     r0 = r5;
    0x00061f60 bl 0x17e94                                    |     r0 = fcn_00017e94 (r0);
    0x00061f64 mov r6, r0                                    |     r6 = r0;
    0x00061f68 b 0x61da0                                     |     goto label_1;
                                                             | label_17:
    0x00061f6c ldr r1, [pc, 0x96c]                           |     r1 = *(0x628dc);
    0x00061f70 bl 0x17c98                                    |     r0 = fcn_00017c98 (r0, r1);
    0x00061f74 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00061f78 beq 0x61dd4                                   |         goto label_2;
                                                             |     }
                                                             | label_16:
    0x00061f7c mov r3, 0x6000                                |     r3 = 0x6000;
    0x00061f80 b 0x61dd8                                     |     goto label_3;
                                                             | label_20:
    0x00061f84 bl 0x61b3c                                    |     fcn_00061b3c ();
                                                             |     do {
    0x00061f88 ldrb r2, [r4, 0x19]                           |         r2 = *((r4 + 0x19));
    0x00061f8c ldrb r3, [r4, 0x18]                           |         r3 = *((r4 + 0x18));
    0x00061f90 orr r3, r3, r2, lsl 8                         |         r3 |= (r2 << 8);
    0x00061f94 ldrb r2, [r4, 0x1a]                           |         r2 = *((r4 + 0x1a));
    0x00061f98 orr r3, r3, r2, lsl 16                        |         r3 |= (r2 << 16);
    0x00061f9c ldrb r2, [r4, 0x1b]                           |         r2 = *((r4 + 0x1b));
    0x00061fa0 orrs r3, r3, r2, lsl 24                       |         r3 |= (r2 << 24);
                                                             |         if (r3 != r3) {
    0x00061fa4 bne 0x62020                                   |             goto label_25;
                                                             |         }
                                                             | label_9:
    0x00061fa8 ldr sb, [pc, 0x934]                           |         sb = *(0x000628e4);
    0x00061fac b 0x61ed4                                     |         goto label_4;
                                                             | label_19:
    0x00061fb0 bl 0x61b90                                    |         fcn_00061b90 ();
    0x00061fb4 b 0x61f88                                     |         
                                                             |     } while (1);
                                                             |     do {
                                                             | label_5:
    0x00061fb8 ldrb sl, [r5]                                 |         sl = *(r5);
    0x00061fbc cmp sl, 0x40                                  |         
                                                             |         if (sl != 0x40) {
    0x00061fc0 bne 0x62174                                   |             goto label_26;
                                                             |         }
    0x00061fc4 ldr r3, [pc, 0x91c]                           |         r3 = *(0x628e4);
    0x00061fc8 ldr r1, [pc, 0x91c]                           |         r1 = *(0x628e8);
    0x00061fcc str r3, [sp]                                  |         *(sp) = r3;
    0x00061fd0 sub r3, r3, 4                                 |         r3 -= 4;
    0x00061fd4 sub r2, r3, 4                                 |         r2 = r3 - 4;
    0x00061fd8 mov r0, r5                                    |         r0 = r5;
    0x00061fdc bl 0x14c9c                                    |         r0 = sscanf (r0, r1, r2);
    0x00061fe0 cmp r0, 1                                     |         
                                                             |         if (r0 > 1) {
    0x00061fe4 ble 0x61ff4                                   |             
    0x00061fe8 ldrb r3, [r4, 0x2f]                           |             r3 = *((r4 + 0x2f));
    0x00061fec tst r3, 0x80                                  |             
                                                             |             if ((r3 & 0x80) == 0) {
    0x00061ff0 beq 0x620f0                                   |                 goto label_27;
                                                             |             }
                                                             |         }
    0x00061ff4 ldrb r2, [r4, 0x19]                           |         r2 = *((r4 + 0x19));
    0x00061ff8 ldrb r3, [r4, 0x18]                           |         r3 = *((r4 + 0x18));
    0x00061ffc ldr r0, [pc, 0x8ec]                           |         r0 = "@%u,%u-%u";
    0x00062000 orr r3, r3, r2, lsl 8                         |         r3 |= (r2 << 8);
    0x00062004 ldrb r2, [r4, 0x1a]                           |         r2 = *((r4 + 0x1a));
    0x00062008 orr r3, r3, r2, lsl 16                        |         r3 |= (r2 << 16);
    0x0006200c ldrb r2, [r4, 0x1b]                           |         r2 = *((r4 + 0x1b));
    0x00062010 orr r3, r3, r2, lsl 24                        |         r3 |= (r2 << 24);
    0x00062014 ldr r1, [r3, 0x18]                            |         r1 = *((r3 + 0x18));
                                                             | label_8:
    0x00062018 bl 0x18274                                    |         fcn_00018274 ();
                                                             | label_7:
    0x0006201c bl 0x61b90                                    |         fcn_00061b90 ();
                                                             | label_25:
    0x00062020 ldrb r3, [r4, 0x19]                           |         r3 = *((r4 + 0x19));
    0x00062024 ldrb r0, [r4, 0x18]                           |         r0 = *((r4 + 0x18));
    0x00062028 ldrb ip, [r4, 0x1b]                           |         ip = *((r4 + 0x1b));
    0x0006202c orr r0, r0, r3, lsl 8                         |         r0 |= (r3 << 8);
    0x00062030 ldrb r3, [r4, 0x1a]                           |         r3 = *((r4 + 0x1a));
    0x00062034 ldr r2, [pc, 0x8b8]                           |         r2 = "bad &commataj,min on line %d";
    0x00062038 orr r0, r0, r3, lsl 16                        |         r0 |= (r3 << 16);
    0x0006203c add r1, sp, 0x28                              |         r1 += var_28h;
    0x00062040 ldr r3, [pc, 0x8b0]                           |         r3 = *(0x628f4);
    0x00062044 orr r0, r0, ip, lsl 24                        |         r0 |= (ip << 24);
    0x00062048 bl 0xa0b1c                                    |         r0 = fcn_000a0b1c (r0, r1, r2);
    0x0006204c subs r5, r0, 0                                |         r5 = r0 - 0;
                                                             |         if (r5 == r0) {
    0x00062050 beq 0x623e0                                   |             goto label_28;
                                                             |         }
    0x00062054 ldr r5, [sp, 0x28]                            |         r5 = var_28h;
    0x00062058 ldr sb, [pc, 0x89c]                           |         sb = *(0x000628fc);
    0x0006205c ldrb r0, [r5]                                 |         r0 = *(r5);
    0x00062060 sub r0, r0, 0x2d                              |         r0 -= 0x2d;
    0x00062064 clz r0, r0                                    |         r0 &= r0;
    0x00062068 lsr r0, r0, 5                                 |         r0 >>= 5;
    0x0006206c add r5, r5, r0                                |         r5 += r0;
    0x00062070 strb r0, [r4, 0x24]                           |         *((r4 + 0x24)) = r0;
                                                             | label_6:
    0x00062074 mov r1, 0x3d                                  |         r1 = 0x3d;
    0x00062078 mov r0, r5                                    |         r0 = r5;
    0x0006207c bl 0x1517c                                    |         r0 = strchr (r0, r1);
    0x00062080 subs sl, r0, 0                                |         sl = r0 - 0;
    0x00062084 beq 0x61fb8                                   |         
                                                             |     } while (sl == r0);
    0x00062088 mov r0, r5                                    |     r0 = r5;
    0x0006208c bl 0x9a758                                    |     r0 = fcn_0009a758 (r0);
    0x00062090 cmp sl, r0                                    |     
                                                             |     if (sl != r0) {
    0x00062094 bne 0x61fb8                                   |         goto label_5;
                                                             |     }
    0x00062098 mov r1, 0x3b                                  |     r1 = 0x3b;
    0x0006209c bl 0x1517c                                    |     r0 = strchr (r0, r1);
    0x000620a0 subs fp, r0, 0                                |     
                                                             |     if (fp == r0) {
    0x000620a4 beq 0x61fb8                                   |         goto label_5;
                                                             |     }
    0x000620a8 mov r0, 0x28                                  |     r0 = 0x28;
    0x000620ac bl 0x189b8                                    |     fcn_000189b8 (r0);
    0x000620b0 sub r1, sl, r5                                |     r1 = sl - r5;
    0x000620b4 str r0, [sb]                                  |     *(sb) = r0;
    0x000620b8 mov sb, r0                                    |     sb = r0;
    0x000620bc mov r0, r5                                    |     r0 = r5;
    0x000620c0 bl 0x189f8                                    |     fcn_000189f8 (r0, r1);
    0x000620c4 mov r3, 0                                     |     r3 = 0;
    0x000620c8 mov r2, 1                                     |     r2 = 1;
    0x000620cc add r1, sl, r2                                |     r1 = sl + r2;
    0x000620d0 mov r5, fp                                    |     r5 = fp;
    0x000620d4 str r0, [sb, 4]                               |     *((sb + 4)) = r0;
    0x000620d8 strb r3, [fp]                                 |     *(fp) = r3;
    0x000620dc add r0, sb, 8                                 |     r0 = sb + 8;
    0x000620e0 bl 0xa63d8                                    |     fcn_000a63d8 (r0, r1);
    0x000620e4 mov r3, 0x3b                                  |     r3 = 0x3b;
    0x000620e8 strb r3, [r5], 1                              |     *(r5) = r3;
                                                             |     r5++;
    0x000620ec b 0x62074                                     |     goto label_6;
                                                             | label_27:
    0x000620f0 cmp r0, 2                                     |     
                                                             |     if (r0 != 2) {
    0x000620f4 bne 0x62130                                   |         goto label_29;
                                                             |     }
    0x000620f8 ldrb r2, [r4, 0x31]                           |     r2 = *((r4 + 0x31));
    0x000620fc ldrb r3, [r4, 0x30]                           |     r3 = *((r4 + 0x30));
    0x00062100 orr r3, r3, r2, lsl 8                         |     r3 |= (r2 << 8);
    0x00062104 ldrb r2, [r4, 0x32]                           |     r2 = *((r4 + 0x32));
    0x00062108 orr r3, r3, r2, lsl 16                        |     r3 |= (r2 << 16);
    0x0006210c ldrb r2, [r4, 0x33]                           |     r2 = *((r4 + 0x33));
    0x00062110 orr r3, r3, r2, lsl 24                        |     r3 |= (r2 << 24);
    0x00062114 lsr r2, r3, 8                                 |     r2 = r3 >> 8;
    0x00062118 strb r3, [r4, 0x34]                           |     *((r4 + 0x34)) = r3;
    0x0006211c strb r2, [r4, 0x35]                           |     *((r4 + 0x35)) = r2;
    0x00062120 lsr r2, r3, 0x10                              |     r2 = r3 >> 0x10;
    0x00062124 lsr r3, r3, 0x18                              |     r3 >>= 0x18;
    0x00062128 strb r2, [r4, 0x36]                           |     *((r4 + 0x36)) = r2;
    0x0006212c strb r3, [r4, 0x37]                           |     *((r4 + 0x37)) = r3;
                                                             |     do {
                                                             | label_29:
    0x00062130 ldr r1, [sp, 0x2c]                            |         r1 = var_2ch;
    0x00062134 ldr r0, [pc, 0x7c4]                           |         r0 = *(0x628fc);
    0x00062138 bl 0xa6404                                    |         r0 = fcn_000a6404 (r0, r1);
    0x0006213c cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00062140 bne 0x62204                                   |             goto label_30;
                                                             |         }
    0x00062144 ldrb r2, [r4, 0x19]                           |         r2 = *((r4 + 0x19));
    0x00062148 ldrb r3, [r4, 0x18]                           |         r3 = *((r4 + 0x18));
    0x0006214c ldr r1, [sp, 0x2c]                            |         r1 = var_2ch;
    0x00062150 orr r3, r3, r2, lsl 8                         |         r3 |= (r2 << 8);
    0x00062154 ldrb r2, [r4, 0x1a]                           |         r2 = *((r4 + 0x1a));
    0x00062158 ldr r0, [pc, 0x7a4]                           |         r0 = *(0x62900);
    0x0006215c orr r3, r3, r2, lsl 16                        |         r3 |= (r2 << 16);
    0x00062160 ldrb r2, [r4, 0x1b]                           |         r2 = *((r4 + 0x1b));
    0x00062164 orr r3, r3, r2, lsl 24                        |         r3 |= (r2 << 24);
    0x00062168 ldr r2, [r3, 0x18]                            |         r2 = *((r3 + 0x18));
    0x0006216c bl 0x18274                                    |         fcn_00018274 ();
    0x00062170 b 0x6201c                                     |         goto label_7;
                                                             | label_26:
    0x00062174 mov r1, 0x3d                                  |         r1 = 0x3d;
    0x00062178 mov r0, r5                                    |         r0 = r5;
    0x0006217c bl 0x1517c                                    |         strchr (r0, r1);
    0x00062180 cmp sl, 0x24                                  |         
    0x00062184 mov sb, r0                                    |         sb = r0;
                                                             |         if (sl == 0x24) {
    0x00062188 bne 0x621e8                                   |             
    0x0006218c cmp sb, 0                                     |             
    0x00062190 add r0, r5, 1                                 |             r0 = r5 + 1;
                                                             |             if (sb == 0) {
    0x00062194 bne 0x621c0                                   |                 
    0x00062198 ldrb r2, [r4, 0x19]                           |                 r2 = *((r4 + 0x19));
    0x0006219c ldrb r3, [r4, 0x18]                           |                 r3 = *((r4 + 0x18));
    0x000621a0 ldr r0, [pc, 0x760]                           |                 r0 = "unknown_user_group__s_on_line__d";
    0x000621a4 orr r3, r3, r2, lsl 8                         |                 r3 |= (r2 << 8);
    0x000621a8 ldrb r2, [r4, 0x1a]                           |                 r2 = *((r4 + 0x1a));
    0x000621ac orr r3, r3, r2, lsl 16                        |                 r3 |= (r2 << 16);
    0x000621b0 ldrb r2, [r4, 0x1b]                           |                 r2 = *((r4 + 0x1b));
    0x000621b4 orr r3, r3, r2, lsl 24                        |                 r3 |= (r2 << 24);
    0x000621b8 ldr r1, [r3, 0x18]                            |                 r1 = *((r3 + 0x18));
    0x000621bc b 0x62018                                     |                 goto label_8;
                                                             |             }
    0x000621c0 sub r1, sb, r0                                |             r1 = sb - r0;
    0x000621c4 bl 0x189f8                                    |             fcn_000189f8 (r0, r1);
    0x000621c8 add r5, sb, 1                                 |             r5 = sb + 1;
    0x000621cc lsr r3, r0, 8                                 |             r3 = r0 >> 8;
    0x000621d0 strb r0, [r4, 0x40]                           |             *((r4 + 0x40)) = r0;
    0x000621d4 strb r3, [r4, 0x41]                           |             *((r4 + 0x41)) = r3;
    0x000621d8 lsr r3, r0, 0x10                              |             r3 = r0 >> 0x10;
    0x000621dc lsr r0, r0, 0x18                              |             r0 >>= 0x18;
    0x000621e0 strb r3, [r4, 0x42]                           |             *((r4 + 0x42)) = r3;
    0x000621e4 strb r0, [r4, 0x43]                           |             *((r4 + 0x43)) = r0;
                                                             |         }
    0x000621e8 mov r2, 1                                     |         r2 = 1;
    0x000621ec mov r1, r5                                    |         r1 = r5;
    0x000621f0 ldr r0, [pc, 0x714]                           |         r0 = "bad $envvar=regex on line %d";
    0x000621f4 bl 0xa63d8                                    |         fcn_000a63d8 ("bad $envvar=regex on line %d", r1);
    0x000621f8 mov r3, 1                                     |         r3 = 1;
    0x000621fc strb r3, [r8, 0x25]                           |         *((r8 + 0x25)) = r3;
    0x00062200 b 0x62130                                     |         
                                                             |     } while (1);
                                                             | label_30:
    0x00062204 ldrb r1, [r4, 0x29]                           |     r1 = *((r4 + 0x29));
    0x00062208 ldrb r3, [r4, 0x28]                           |     r3 = *((r4 + 0x28));
    0x0006220c ldr r0, [sp, 0x30]                            |     r0 = var_30h;
    0x00062210 orr r3, r3, r1, lsl 8                         |     r3 |= (r1 << 8);
    0x00062214 ldrb r1, [r4, 0x2a]                           |     r1 = *((r4 + 0x2a));
    0x00062218 orr r3, r3, r1, lsl 16                        |     r3 |= (r1 << 16);
    0x0006221c ldrb r1, [r4, 0x2b]                           |     r1 = *((r4 + 0x2b));
    0x00062220 orr r1, r3, r1, lsl 24                        |     r1 = r3 | (r1 << 24);
    0x00062224 bl 0xa0df8                                    |     fcn_000a0df8 (r0, r1);
    0x00062228 ldr sb, [sp, 0x34]                            |     sb = var_34h;
    0x0006222c cmp sb, 0                                     |     
    0x00062230 lsr r3, r0, 8                                 |     r3 = r0 >> 8;
    0x00062234 strb r0, [r4, 0x28]                           |     *((r4 + 0x28)) = r0;
    0x00062238 strb r3, [r4, 0x29]                           |     *((r4 + 0x29)) = r3;
    0x0006223c lsr r3, r0, 0x10                              |     r3 = r0 >> 0x10;
    0x00062240 lsr r0, r0, 0x18                              |     r0 >>= 0x18;
    0x00062244 strb r3, [r4, 0x2a]                           |     *((r4 + 0x2a)) = r3;
    0x00062248 strb r0, [r4, 0x2b]                           |     *((r4 + 0x2b)) = r0;
                                                             |     if (sb != 0) {
    0x0006224c beq 0x62310                                   |         
    0x00062250 ldrb r1, [sb]                                 |         r1 = *(sb);
    0x00062254 ldr r0, [pc, 0x6b4]                           |         r0 = *(0x6290c);
    0x00062258 bl 0x1517c                                    |         r0 = strchr (r0, r1);
    0x0006225c cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00062260 beq 0x622a8                                   |             
    0x00062264 mov r0, sb                                    |             r0 = sb;
    0x00062268 bl 0xa4454                                    |             r0 = fcn_000a4454 (r0);
    0x0006226c sub r1, r0, sb                                |             r1 = r0 - sb;
    0x00062270 mov r5, r0                                    |             r5 = r0;
    0x00062274 mov r0, sb                                    |             r0 = sb;
    0x00062278 bl 0x189f8                                    |             r0 = fcn_000189f8 (r0, r1);
    0x0006227c lsr r3, r0, 8                                 |             r3 = r0 >> 8;
    0x00062280 strb r0, [r4, 0x44]                           |             *((r4 + 0x44)) = r0;
    0x00062284 strb r3, [r4, 0x45]                           |             *((r4 + 0x45)) = r3;
    0x00062288 lsr r3, r0, 0x10                              |             r3 = r0 >> 0x10;
    0x0006228c lsr r0, r0, 0x18                              |             r0 >>= 0x18;
    0x00062290 strb r0, [r4, 0x47]                           |             *((r4 + 0x47)) = r0;
    0x00062294 mov r0, r5                                    |             r0 = r5;
    0x00062298 strb r3, [r4, 0x46]                           |             *((r4 + 0x46)) = r3;
    0x0006229c bl 0xa4434                                    |             r0 = fcn_000a4434 (r0);
    0x000622a0 subs sb, r0, 0                                |             sb = r0 - 0;
                                                             |             if (sb == r0) {
    0x000622a4 beq 0x62310                                   |                 goto label_10;
                                                             |             }
                                                             |         }
    0x000622a8 ldrb r1, [sb]                                 |         r1 = *(sb);
    0x000622ac cmp r1, 0                                     |         
                                                             |         if (r1 == 0) {
    0x000622b0 beq 0x62310                                   |             goto label_10;
                                                             |         }
    0x000622b4 ldr r0, [pc, 0x658]                           |         r0 = *(0x62910);
    0x000622b8 bl 0x1517c                                    |         r0 = strchr (r0, r1);
    0x000622bc cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000622c0 bne 0x622ec                                   |             
    0x000622c4 ldrb r2, [r4, 0x19]                           |             r2 = *((r4 + 0x19));
    0x000622c8 ldrb r3, [r4, 0x18]                           |             r3 = *((r4 + 0x18));
    0x000622cc ldr r0, [pc, 0x644]                           |             r0 = *(0x62914);
    0x000622d0 orr r3, r3, r2, lsl 8                         |             r3 |= (r2 << 8);
    0x000622d4 ldrb r2, [r4, 0x1a]                           |             r2 = *((r4 + 0x1a));
    0x000622d8 orr r3, r3, r2, lsl 16                        |             r3 |= (r2 << 16);
    0x000622dc ldrb r2, [r4, 0x1b]                           |             r2 = *((r4 + 0x1b));
    0x000622e0 orr r3, r3, r2, lsl 24                        |             r3 |= (r2 << 24);
    0x000622e4 ldr r1, [r3, 0x18]                            |             r1 = *((r3 + 0x18));
    0x000622e8 b 0x62018                                     |             goto label_8;
                                                             |         }
    0x000622ec mov r0, sb                                    |         r0 = sb;
    0x000622f0 bl 0x189d4                                    |         r0 = fcn_000189d4 (r0);
    0x000622f4 lsr r3, r0, 8                                 |         r3 = r0 >> 8;
    0x000622f8 strb r0, [r4, 0x48]                           |         *((r4 + 0x48)) = r0;
    0x000622fc strb r3, [r4, 0x49]                           |         *((r4 + 0x49)) = r3;
    0x00062300 lsr r3, r0, 0x10                              |         r3 = r0 >> 0x10;
    0x00062304 lsr r0, r0, 0x18                              |         r0 >>= 0x18;
    0x00062308 strb r3, [r4, 0x4a]                           |         *((r4 + 0x4a)) = r3;
    0x0006230c strb r0, [r4, 0x4b]                           |         *((r4 + 0x4b)) = r0;
                                                             |     }
                                                             | label_10:
    0x00062310 ldrb r2, [r4, 0x1d]                           |     r2 = *((r4 + 0x1d));
    0x00062314 ldrb r3, [r4, 0x1c]                           |     r3 = *((r4 + 0x1c));
    0x00062318 orr r3, r3, r2, lsl 8                         |     r3 |= (r2 << 8);
    0x0006231c ldrb r2, [r4, 0x1e]                           |     r2 = *((r4 + 0x1e));
    0x00062320 orr r3, r3, r2, lsl 16                        |     r3 |= (r2 << 16);
    0x00062324 ldrb r2, [r4, 0x1f]                           |     r2 = *((r4 + 0x1f));
    0x00062328 orrs r3, r3, r2, lsl 24                       |     r3 |= (r2 << 24);
                                                             |     if (r3 == r3) {
    0x0006232c beq 0x61fa8                                   |         goto label_9;
                                                             |     }
    0x00062330 mov r1, 0x4c                                  |     r1 = 0x4c;
    0x00062334 ldr r0, [pc, 0x5a8]                           |     r0 = "block";
    0x00062338 bl 0x18a48                                    |     fcn_00018a48 ("block", r1);
    0x0006233c ldrb r3, [r4, 0x21]                           |     r3 = *((r4 + 0x21));
    0x00062340 ldrb r2, [r4, 0x20]                           |     r2 = *((r4 + 0x20));
    0x00062344 ldrb r1, [r4, 0x23]                           |     r1 = *((r4 + 0x23));
    0x00062348 orr r2, r2, r3, lsl 8                         |     r2 |= (r3 << 8);
    0x0006234c ldrb r3, [r4, 0x22]                           |     r3 = *((r4 + 0x22));
    0x00062350 orr r2, r2, r3, lsl 16                        |     r2 |= (r3 << 16);
    0x00062354 ldrb r3, [r4, 0x1c]                           |     r3 = *((r4 + 0x1c));
    0x00062358 orr r2, r2, r1, lsl 24                        |     r2 |= (r1 << 24);
    0x0006235c ldr r1, [pc, 0x5b8]                           |     r1 = "bad line %u";
    0x00062360 mov sb, r0                                    |     sb = r0;
    0x00062364 ldrb r0, [r4, 0x1d]                           |     r0 = *((r4 + 0x1d));
    0x00062368 orr r3, r3, r0, lsl 8                         |     r3 |= (r0 << 8);
    0x0006236c ldrb r0, [r4, 0x1e]                           |     r0 = *((r4 + 0x1e));
    0x00062370 orr r3, r3, r0, lsl 16                        |     r3 |= (r0 << 16);
    0x00062374 ldrb r0, [r4, 0x1f]                           |     r0 = *((r4 + 0x1f));
    0x00062378 orr r0, r3, r0, lsl 24                        |     r0 = r3 | (r0 << 24);
    0x0006237c bl 0xa6338                                    |     fcn_000a6338 (r0, r1);
    0x00062380 ldrb r2, [r4, 0x21]                           |     r2 = *((r4 + 0x21));
    0x00062384 lsr r3, r0, 8                                 |     r3 = r0 >> 8;
    0x00062388 strb r3, [r4, 0x1d]                           |     *((r4 + 0x1d)) = r3;
    0x0006238c lsr r3, r0, 0x10                              |     r3 = r0 >> 0x10;
    0x00062390 strb r3, [r4, 0x1e]                           |     *((r4 + 0x1e)) = r3;
    0x00062394 lsr r3, r0, 0x18                              |     r3 = r0 >> 0x18;
    0x00062398 strb r3, [r4, 0x1f]                           |     *((r4 + 0x1f)) = r3;
    0x0006239c ldrb r3, [r4, 0x20]                           |     r3 = *((r4 + 0x20));
    0x000623a0 strb r0, [r4, 0x1c]                           |     *((r4 + 0x1c)) = r0;
    0x000623a4 orr r3, r3, r2, lsl 8                         |     r3 |= (r2 << 8);
    0x000623a8 ldrb r2, [r4, 0x22]                           |     r2 = *((r4 + 0x22));
    0x000623ac orr r3, r3, r2, lsl 16                        |     r3 |= (r2 << 16);
    0x000623b0 ldrb r2, [r4, 0x23]                           |     r2 = *((r4 + 0x23));
    0x000623b4 orr r3, r3, r2, lsl 24                        |     r3 |= (r2 << 24);
    0x000623b8 add r2, r3, 1                                 |     r2 = r3 + 1;
    0x000623bc lsr r1, r2, 8                                 |     r1 = r2 >> 8;
    0x000623c0 strb r2, [r4, 0x20]                           |     *((r4 + 0x20)) = r2;
    0x000623c4 strb r1, [r4, 0x21]                           |     *((r4 + 0x21)) = r1;
    0x000623c8 lsr r1, r2, 0x10                              |     r1 = r2 >> 0x10;
    0x000623cc lsr r2, r2, 0x18                              |     r2 >>= 0x18;
    0x000623d0 strb r1, [r4, 0x22]                           |     *((r4 + 0x22)) = r1;
    0x000623d4 strb r2, [r4, 0x23]                           |     *((r4 + 0x23)) = r2;
    0x000623d8 str sb, [r0, r3, lsl 2]                       |     offset_2 = r3 << 2;
                                                             |     *((r0 + offset_2)) = sb;
    0x000623dc b 0x61ed4                                     |     goto label_4;
                                                             | label_28:
    0x000623e0 ldrb r0, [r4, 0x19]                           |     r0 = *((r4 + 0x19));
    0x000623e4 ldrb r3, [r4, 0x18]                           |     r3 = *((r4 + 0x18));
    0x000623e8 orr r3, r3, r0, lsl 8                         |     r3 |= (r0 << 8);
    0x000623ec ldrb r0, [r4, 0x1a]                           |     r0 = *((r4 + 0x1a));
    0x000623f0 orr r3, r3, r0, lsl 16                        |     r3 |= (r0 << 16);
    0x000623f4 ldrb r0, [r4, 0x1b]                           |     r0 = *((r4 + 0x1b));
    0x000623f8 orr r0, r3, r0, lsl 24                        |     r0 = r3 | (r0 << 24);
    0x000623fc bl 0xa0aec                                    |     fcn_000a0aec (r0);
    0x00062400 strb r5, [r4, 0x18]                           |     *((r4 + 0x18)) = r5;
    0x00062404 strb r5, [r4, 0x19]                           |     *((r4 + 0x19)) = r5;
    0x00062408 strb r5, [r4, 0x1a]                           |     *((r4 + 0x1a)) = r5;
    0x0006240c strb r5, [r4, 0x1b]                           |     *((r4 + 0x1b)) = r5;
    0x00062410 b 0x62310                                     |     goto label_10;
                                                             | label_21:
    0x00062414 ldr r0, [r5, 4]                               |     r0 = *((r5 + 4));
    0x00062418 bl 0x144d4                                    |     r0 = getenv (r0);
    0x0006241c subs r1, r0, 0                                |     r1 = r0 - 0;
                                                             |     if (r1 == r0) {
    0x00062420 beq 0x61df0                                   |         goto label_0;
                                                             |     }
    0x00062424 mov r3, 0                                     |     r3 = 0;
    0x00062428 str sl, [sp]                                  |     *(sp) = sl;
    0x0006242c mov r2, r3                                    |     r2 = r3;
    0x00062430 add r0, r5, 8                                 |     r0 = r5 + 8;
    0x00062434 bl 0x14e34                                    |     r0 = regexec ();
    0x00062438 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0006243c bne 0x61df0                                   |         goto label_0;
                                                             |     }
    0x00062440 ldr r5, [r5]                                  |     r5 = *(r5);
    0x00062444 b 0x61edc                                     |     goto label_11;
                                                             | label_22:
    0x00062448 ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x0006244c cmp r3, r2                                    |     
                                                             |     if (r3 != r2) {
    0x00062450 bne 0x61df0                                   |         goto label_0;
                                                             |     }
    0x00062454 ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x00062458 ldr r2, [sb, 0xc]                             |     r2 = *((sb + 0xc));
    0x0006245c cmp r2, r3                                    |     
                                                             |     if (r2 > r3) {
    0x00062460 bgt 0x61df0                                   |         goto label_0;
                                                             |     }
    0x00062464 ldr r2, [sb, 0x10]                            |     r2 = *((sb + 0x10));
    0x00062468 cmp r3, r2                                    |     
                                                             |     if (r3 > r2) {
    0x0006246c strle r5, [sp, 0x28]                          |         var_28h = r5;
                                                             |     }
                                                             |     if (r3 <= r2) {
    0x00062470 strle r5, [sp, 0x2c]                          |         var_2ch = r5;
                                                             |         goto label_31;
                                                             |     }
                                                             |     if (r3 > r2) {
                                                             | label_31:
    0x00062474 bgt 0x61df0                                   |         goto label_0;
                                                             |     }
                                                             | label_24:
    0x00062478 ldrb r2, [r4, 9]                              |     r2 = *((r4 + 9));
    0x0006247c ldrb r3, [r4, 8]                              |     r3 = *((r4 + 8));
    0x00062480 orr r3, r3, r2, lsl 8                         |     r3 |= (r2 << 8);
    0x00062484 ldrb r2, [r4, 0xa]                            |     r2 = *((r4 + 0xa));
    0x00062488 orr r3, r3, r2, lsl 16                        |     r3 |= (r2 << 16);
    0x0006248c ldrb r2, [r4, 0xb]                            |     r2 = *((r4 + 0xb));
    0x00062490 orr r3, r3, r2, lsl 24                        |     r3 |= (r2 << 24);
    0x00062494 cmp r3, 1                                     |     
                                                             |     if (r3 > 1) {
    0x00062498 ble 0x624c8                                   |         
    0x0006249c ldrb r2, [r4, 0x19]                           |         r2 = *((r4 + 0x19));
    0x000624a0 ldrb r3, [r4, 0x18]                           |         r3 = *((r4 + 0x18));
    0x000624a4 ldr r0, [pc, 0x474]                           |         r0 = *(0x6291c);
    0x000624a8 orr r3, r3, r2, lsl 8                         |         r3 |= (r2 << 8);
    0x000624ac ldrb r2, [r4, 0x1a]                           |         r2 = *((r4 + 0x1a));
    0x000624b0 orr r3, r3, r2, lsl 16                        |         r3 |= (r2 << 16);
    0x000624b4 ldrb r2, [r4, 0x1b]                           |         r2 = *((r4 + 0x1b));
    0x000624b8 orrs r3, r3, r2, lsl 24                       |         r3 |= (r2 << 24);
                                                             |         if (r3 == r3) {
    0x000624bc ldrne r1, [r3, 0x18]                          |             r1 = *((r3 + 0x18));
                                                             |         }
                                                             |         if (r3 != r3) {
    0x000624c0 mvneq r1, 0                                   |             r1 = ~0;
                                                             |         }
    0x000624c4 bl 0x18274                                    |         fcn_00018274 ();
                                                             |     }
    0x000624c8 ldr r5, [sb, 0x20]                            |     r5 = *((sb + 0x20));
    0x000624cc cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x000624d0 beq 0x6250c                                   |         goto label_32;
                                                             |     }
    0x000624d4 ldrb r3, [r5]                                 |     r3 = *(r5);
    0x000624d8 cmp r3, 0x21                                  |     
    0x000624dc str r3, [sp, 0x14]                            |     var_14h = r3;
                                                             |     if (r3 != 0x21) {
    0x000624e0 mvneq r3, 1                                   |         r3 = ~1;
                                                             |     }
                                                             |     if (r3 != 0x21) {
    0x000624e4 streq r3, [sp, 0x20]                          |         var_20h = r3;
                                                             |     }
                                                             |     if (r3 == 0x21) {
    0x000624e8 beq 0x62548                                   |         goto label_33;
                                                             |     }
    0x000624ec ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x000624f0 sub r3, r3, 0x3d                              |     r3 -= 0x3d;
    0x000624f4 and r3, r3, 0xff                              |     r3 &= 0xff;
    0x000624f8 cmp r3, 1                                     |     
                                                             |     if (r3 > 1) {
    0x000624fc bhi 0x62548                                   |         goto label_33;
                                                             |     }
    0x00062500 add r0, r5, 1                                 |     r0 = r5 + 1;
    0x00062504 bl 0x189d4                                    |     r0 = fcn_000189d4 (r0);
    0x00062508 mov r5, r0                                    |     r5 = r0;
                                                             |     do {
                                                             | label_32:
    0x0006250c ldr fp, [sb, 0x24]                            |         fp = *((sb + 0x24));
    0x00062510 cmp fp, 0                                     |         
                                                             |         if (fp == 0) {
    0x00062514 beq 0x62568                                   |             goto label_34;
                                                             |         }
    0x00062518 ldrb r3, [fp]                                 |         r3 = *(fp);
    0x0006251c cmp r3, 0x40                                  |         
                                                             |         if (r3 != 0x40) {
    0x00062520 bne 0x62550                                   |             goto label_35;
                                                             |         }
    0x00062524 cmp r7, 0                                     |         
                                                             |         if (r7 == 0) {
    0x00062528 beq 0x62564                                   |             goto label_36;
                                                             |         }
    0x0006252c cmp r5, 0                                     |         
                                                             |         if (r5 != 0) {
    0x00062530 moveq sl, r6                                  |             sl = r6;
                                                             |         }
                                                             |         if (r5 == 0) {
    0x00062534 beq 0x62804                                   |             goto label_37;
                                                             |         }
    0x00062538 mov fp, 0                                     |         
    0x0006253c b 0x62574                                     |         goto label_38;
                                                             | label_23:
    0x00062540 mov r5, r6                                    |         r5 = r6;
    0x00062544 b 0x61f08                                     |         goto label_12;
                                                             | label_33:
    0x00062548 mov r5, 0                                     |         r5 = 0;
    0x0006254c b 0x6250c                                     |         
                                                             |     } while (1);
                                                             | label_35:
    0x00062550 cmp r3, 0x24                                  |     
                                                             |     if (r3 != 0x24) {
    0x00062554 bne 0x62784                                   |         goto label_39;
                                                             |     }
    0x00062558 cmp r7, 1                                     |     
                                                             |     if (r7 == 1) {
                                                             |         do {
    0x0006255c movne fp, 0                                   |             
                                                             |         }
                                                             |         if (r7 == 1) {
    0x00062560 bne 0x62568                                   |             
                                                             | label_36:
    0x00062564 add fp, fp, 1                                 |             
                                                             |         }
                                                             | label_34:
    0x00062568 cmp r5, 0                                     |         
                                                             |         if (r5 != 0) {
    0x0006256c moveq sl, r6                                  |             sl = r6;
                                                             |         }
                                                             |         if (r5 != 0) {
    0x00062570 beq 0x625c8                                   |             
                                                             | label_38:
    0x00062574 mov r1, 0x2f                                  |             r1 = 0x2f;
    0x00062578 mov r0, r5                                    |             r0 = r5;
    0x0006257c bl 0x1496c                                    |             r0 = strrchr (r0, r1);
    0x00062580 subs sl, r0, 0                                |             sl = r0 - 0;
                                                             |             if (sl == r0) {
    0x00062584 beq 0x6278c                                   |                 goto label_40;
                                                             |             }
    0x00062588 mov r3, 0                                     |             r3 = 0;
    0x0006258c strb r3, [sl]                                 |             *(sl) = r3;
    0x00062590 mov r0, r5                                    |             r0 = r5;
    0x00062594 bl 0x61c54                                    |             fcn_00061c54 (r0);
    0x00062598 mov r3, 0x2f                                  |             r3 = 0x2f;
    0x0006259c strb r3, [sl]                                 |             *(sl) = r3;
    0x000625a0 ldrb r3, [sl, 1]                              |             r3 = *((sl + 1));
    0x000625a4 cmp r3, 0                                     |             
                                                             |             if (r3 != 0) {
    0x000625a8 bne 0x6278c                                   |                 goto label_40;
                                                             |             }
    0x000625ac mov r1, r6                                    |             r1 = r6;
    0x000625b0 mov r0, r5                                    |             r0 = r5;
    0x000625b4 bl 0x17e30                                    |             r0 = fcn_00017e30 (r0, r1);
    0x000625b8 mov sl, r0                                    |             sl = r0;
    0x000625bc mov r0, r5                                    |             r0 = r5;
    0x000625c0 bl 0x152a8                                    |             free (r0);
    0x000625c4 mov r5, sl                                    |             r5 = sl;
                                                             |         }
                                                             | label_13:
    0x000625c8 cmp r7, 0                                     |         
                                                             |         if (r7 != 0) {
    0x000625cc bne 0x62794                                   |             goto label_41;
                                                             |         }
    0x000625d0 ldr r3, [sp, 0x20]                            |         r3 = var_20h;
    0x000625d4 cmp r3, 0                                     |         
                                                             |         if (r3 >= 0) {
    0x000625d8 blt 0x62778                                   |             
    0x000625dc mov r1, 0x2f                                  |             r1 = 0x2f;
    0x000625e0 mov r0, sl                                    |             r0 = sl;
    0x000625e4 bl 0x1496c                                    |             r0 = strrchr (r0, r1);
    0x000625e8 subs r3, r0, 0                                |             r3 = r0 - 0;
                                                             |             if (r3 != r0) {
    0x000625ec beq 0x6260c                                   |                 
    0x000625f0 strb r7, [r3]                                 |                 *(r3) = r7;
    0x000625f4 mov r0, sl                                    |                 r0 = sl;
    0x000625f8 str r3, [sp, 0x1c]                            |                 var_1ch = r3;
    0x000625fc bl 0x61c54                                    |                 fcn_00061c54 (r0);
    0x00062600 ldr r3, [sp, 0x1c]                            |                 r3 = var_1ch;
    0x00062604 mov r2, 0x2f                                  |                 r2 = 0x2f;
    0x00062608 strb r2, [r3]                                 |                 *(r3) = r2;
                                                             |             }
    0x0006260c ldr r1, [sp, 0x18]                            |             r1 = var_18h;
    0x00062610 ldr r0, [sb, 4]                               |             r0 = *((sb + 4));
    0x00062614 ldrb ip, [r8, 9]                              |             ip = *((r8 + 9));
    0x00062618 orr r0, r1, r0                                |             r0 = r1 | r0;
    0x0006261c ldrb r1, [r8, 8]                              |             r1 = *((r8 + 8));
    0x00062620 ldrd r2, r3, [sp, 0x20]                       |             __asm ("ldrd r2, r3, [var_20h]");
    0x00062624 orr r1, r1, ip, lsl 8                         |             r1 |= (ip << 8);
    0x00062628 ldrb ip, [r8, 0xa]                            |             ip = *((r8 + 0xa));
    0x0006262c orr r1, r1, ip, lsl 16                        |             r1 |= (ip << 16);
    0x00062630 ldrb ip, [r8, 0xb]                            |             ip = *((r8 + 0xb));
    0x00062634 orrs r1, r1, ip, lsl 24                       |             r1 |= (ip << 24);
                                                             |             if (r1 != r1) {
    0x00062638 beq 0x62658                                   |                 
    0x0006263c ldr r1, [sb, 0x18]                            |                 r1 = *((sb + 0x18));
    0x00062640 str r1, [sp, 8]                               |                 var_8h = r1;
    0x00062644 ldr r1, [sb, 0x14]                            |                 r1 = *((sb + 0x14));
    0x00062648 stm sp, {r0, r1}                              |                 *(sp) = r0;
                                                             |                 *((sp + 4)) = r1;
    0x0006264c ldr r0, [pc, 0x2d0]                           |                 r0 = "rule matched, line %d";
    0x00062650 mov r1, sl                                    |                 r1 = sl;
    0x00062654 bl 0x18274                                    |                 fcn_00018274 ();
                                                             |             }
    0x00062658 ldr r3, [sp, 0x18]                            |             r3 = var_18h;
    0x0006265c ldr r8, [sb, 4]                               |             r8 = *((sb + 4));
    0x00062660 ldrd r0, r1, [sp, 0x20]                       |             __asm ("ldrd r0, r1, [var_20h]");
    0x00062664 orr r8, r3, r8                                |             r8 = r3 | r8;
    0x00062668 bl 0xa06e4                                    |             r0 = fcn_000a06e4 ();
    0x0006266c mov r2, r0                                    |             r2 = r0;
    0x00062670 mov r3, r1                                    |             r3 = r1;
    0x00062674 mov r0, sl                                    |             r0 = sl;
    0x00062678 mov r1, r8                                    |             r1 = r8;
    0x0006267c bl 0x1448c                                    |             r0 = mknod ();
    0x00062680 cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x00062684 beq 0x626a8                                   |                 
    0x00062688 ldr r3, [pc, 0x298]                           |                 
    0x0006268c ldr r3, [r3]                                  |                 
    0x00062690 ldr r3, [r3]                                  |                 r3 = "mknod %s (%d,%d) %o %u:%u";
    0x00062694 cmp r3, 0x11                                  |                 
                                                             |                 if (r3 == 0x11) {
    0x00062698 beq 0x626a8                                   |                     goto label_42;
                                                             |                 }
    0x0006269c mov r1, sl                                    |                 r1 = sl;
    0x000626a0 ldr r0, [pc, 0x284]                           |                 r0 = *(0x62928);
    0x000626a4 bl 0x17f8c                                    |                 fcn_00017f8c ();
                                                             |             }
                                                             | label_42:
    0x000626a8 ldr r1, [sb, 4]                               |             r1 = *((sb + 4));
    0x000626ac mov r0, sl                                    |             r0 = sl;
    0x000626b0 bl 0x14894                                    |             chmod (r0, r1);
    0x000626b4 ldr r2, [sb, 0x18]                            |             r2 = *((sb + 0x18));
    0x000626b8 ldr r1, [sb, 0x14]                            |             r1 = *((sb + 0x14));
    0x000626bc mov r0, sl                                    |             r0 = sl;
    0x000626c0 bl 0x14834                                    |             chown ();
    0x000626c4 ldrb r2, [r4, 1]                              |             r2 = *((r4 + 1));
    0x000626c8 ldrb r3, [r4]                                 |             r3 = *(r4);
    0x000626cc orr r3, r3, r2, lsl 8                         |             r3 |= (r2 << 8);
    0x000626d0 ldrb r2, [r4, 2]                              |             r2 = *((r4 + 2));
    0x000626d4 orr r3, r3, r2, lsl 16                        |             r3 |= (r2 << 16);
    0x000626d8 ldrb r2, [r4, 3]                              |             r2 = *((r4 + 3));
    0x000626dc orr r3, r3, r2, lsl 24                        |             r3 |= (r2 << 24);
    0x000626e0 ldr r2, [sp, 0x20]                            |             r2 = var_20h;
    0x000626e4 cmp r3, r2                                    |             
                                                             |             if (r3 == r2) {
    0x000626e8 bne 0x62720                                   |                 
    0x000626ec ldrb r2, [r4, 5]                              |                 r2 = *((r4 + 5));
    0x000626f0 ldrb r3, [r4, 4]                              |                 r3 = *((r4 + 4));
    0x000626f4 orr r3, r3, r2, lsl 8                         |                 r3 |= (r2 << 8);
    0x000626f8 ldrb r2, [r4, 6]                              |                 r2 = *((r4 + 6));
    0x000626fc orr r3, r3, r2, lsl 16                        |                 r3 |= (r2 << 16);
    0x00062700 ldrb r2, [r4, 7]                              |                 r2 = *((r4 + 7));
    0x00062704 orr r3, r3, r2, lsl 24                        |                 r3 |= (r2 << 24);
    0x00062708 ldr r2, [sp, 0x24]                            |                 r2 = var_24h;
    0x0006270c cmp r3, r2                                    |                 
                                                             |                 if (r3 != r2) {
    0x00062710 bne 0x62720                                   |                     goto label_43;
                                                             |                 }
    0x00062714 ldr r1, [pc, 0x214]                           |                 r1 = "cant_create__s";
    0x00062718 mov r0, sl                                    |                 r0 = sl;
    0x0006271c bl 0x14d68                                    |                 symlink (r0, "cant_create__s");
                                                             |             }
                                                             | label_43:
    0x00062720 ldr r3, [sp, 0x14]                            |             r3 = var_14h;
    0x00062724 cmp r5, 0                                     |             
    0x00062728 sub r3, r3, 0x3e                              |             r3 -= 0x3e;
    0x0006272c clz r3, r3                                    |             r3 &= r3;
    0x00062730 lsr r3, r3, 5                                 |             r3 >>= 5;
                                                             |             if (r5 != 0) {
    0x00062734 moveq r3, 0                                   |                 r3 = 0;
                                                             |             }
    0x00062738 cmp r3, 0                                     |             
                                                             |             if (r3 == 0) {
    0x0006273c beq 0x62778                                   |                 goto label_44;
                                                             |             }
    0x00062740 ldrb r2, [r4, 9]                              |             r2 = *((r4 + 9));
    0x00062744 ldrb r3, [r4, 8]                              |             r3 = *((r4 + 8));
    0x00062748 orr r3, r3, r2, lsl 8                         |             r3 |= (r2 << 8);
    0x0006274c ldrb r2, [r4, 0xa]                            |             r2 = *((r4 + 0xa));
    0x00062750 orr r3, r3, r2, lsl 16                        |             r3 |= (r2 << 16);
    0x00062754 ldrb r2, [r4, 0xb]                            |             r2 = *((r4 + 0xb));
    0x00062758 orrs r3, r3, r2, lsl 24                       |             r3 |= (r2 << 24);
                                                             |             if (r3 != r3) {
    0x0006275c beq 0x6276c                                   |                 
    0x00062760 mov r1, r6                                    |                 r1 = r6;
    0x00062764 ldr r0, [pc, 0x1c8]                           |                 r0 = *(0x62930);
    0x00062768 bl 0x18274                                    |                 fcn_00018274 ();
                                                             |             }
    0x0006276c mov r1, r6                                    |             r1 = r6;
    0x00062770 mov r0, sl                                    |             r0 = sl;
    0x00062774 bl 0x14d68                                    |             symlink (r0, r1);
                                                             |         }
                                                             | label_44:
    0x00062778 cmp fp, 0                                     |         
                                                             |         if (fp != 0) {
    0x0006277c bne 0x6279c                                   |             goto label_45;
                                                             |         }
    0x00062780 b 0x628a4                                     |         goto label_46;
                                                             | label_39:
    0x00062784 cmp r3, 0x2a                                  |         
    0x00062788 b 0x6255c                                     |         
                                                             |     } while (1);
                                                             | label_40:
    0x0006278c mov sl, r5                                    |     sl = r5;
    0x00062790 b 0x625c8                                     |     goto label_13;
                                                             | label_41:
    0x00062794 cmp fp, 0                                     |     
                                                             |     if (fp != 0) {
    0x00062798 beq 0x62804                                   |         
                                                             | label_45:
    0x0006279c mov r2, sl                                    |         r2 = sl;
    0x000627a0 ldr r1, [pc, 0x190]                           |         r1 = "symlink: %s";
    0x000627a4 ldr r0, [pc, 0x190]                           |         r0 = "MDEV";
    0x000627a8 bl 0x18d1c                                    |         r0 = fcn_00018d1c ();
    0x000627ac mov r8, r0                                    |         r8 = r0;
    0x000627b0 bl 0x14804                                    |         putenv ();
    0x000627b4 ldrb r2, [r4, 9]                              |         r2 = *((r4 + 9));
    0x000627b8 ldrb r3, [r4, 8]                              |         r3 = *((r4 + 8));
    0x000627bc orr r3, r3, r2, lsl 8                         |         r3 |= (r2 << 8);
    0x000627c0 ldrb r2, [r4, 0xa]                            |         r2 = *((r4 + 0xa));
    0x000627c4 orr r3, r3, r2, lsl 16                        |         r3 |= (r2 << 16);
    0x000627c8 ldrb r2, [r4, 0xb]                            |         r2 = *((r4 + 0xb));
    0x000627cc orrs r3, r3, r2, lsl 24                       |         r3 |= (r2 << 24);
                                                             |         if (r3 != r3) {
    0x000627d0 beq 0x627e0                                   |             
    0x000627d4 mov r1, fp                                    |             r1 = fp;
    0x000627d8 ldr r0, [pc, 0x160]                           |             r0 = *(0x6293c);
    0x000627dc bl 0x18274                                    |             fcn_00018274 ();
                                                             |         }
    0x000627e0 mov r0, fp                                    |         r0 = fp;
    0x000627e4 bl 0x146c0                                    |         r0 = system (r0);
    0x000627e8 cmn r0, 1                                     |         
                                                             |         if (r0 == 1) {
    0x000627ec bne 0x627fc                                   |             
    0x000627f0 mov r1, fp                                    |             r1 = fp;
    0x000627f4 ldr r0, [pc, 0x148]                           |             r0 = *(0x62940);
    0x000627f8 bl 0x17f8c                                    |             fcn_00017f8c ();
                                                             |         }
    0x000627fc mov r0, r8                                    |         r0 = r8;
    0x00062800 bl 0x18de0                                    |         fcn_00018de0 (r0);
                                                             |     }
                                                             | label_37:
    0x00062804 cmp r7, 1                                     |     
                                                             |     if (r7 == 1) {
    0x00062808 bne 0x628a4                                   |         
    0x0006280c ldr r3, [sp, 0x20]                            |         r3 = var_20h;
    0x00062810 cmn r3, 1                                     |         
                                                             |         if (r3 < 1) {
    0x00062814 blt 0x628a4                                   |             goto label_46;
                                                             |         }
    0x00062818 ldrb r2, [r4, 9]                              |         r2 = *((r4 + 9));
    0x0006281c ldrb r3, [r4, 8]                              |         r3 = *((r4 + 8));
    0x00062820 cmp r5, 0                                     |         
    0x00062824 orr r3, r3, r2, lsl 8                         |         r3 |= (r2 << 8);
    0x00062828 ldrb r2, [r4, 0xa]                            |         r2 = *((r4 + 0xa));
    0x0006282c orr r3, r3, r2, lsl 16                        |         r3 |= (r2 << 16);
    0x00062830 ldrb r2, [r4, 0xb]                            |         r2 = *((r4 + 0xb));
    0x00062834 orr r3, r3, r2, lsl 24                        |         r3 |= (r2 << 24);
    0x00062838 ldr r2, [sp, 0x14]                            |         r2 = var_14h;
    0x0006283c sub r2, r2, 0x3e                              |         r2 -= 0x3e;
    0x00062840 clz r2, r2                                    |         r2 &= r2;
    0x00062844 lsr r2, r2, 5                                 |         r2 >>= 5;
                                                             |         if (r5 != 0) {
    0x00062848 moveq r2, 0                                   |             r2 = 0;
                                                             |         }
    0x0006284c cmp r2, 0                                     |         
                                                             |         if (r2 != 0) {
    0x00062850 beq 0x62870                                   |             
    0x00062854 cmp r3, 0                                     |             
                                                             |             if (r3 != 0) {
    0x00062858 beq 0x62868                                   |                 
    0x0006285c mov r1, r6                                    |                 r1 = r6;
    0x00062860 ldr r0, [pc, 0xe0]                            |                 r0 = "cant_run__s";
    0x00062864 bl 0x18274                                    |                 fcn_00018274 ();
                                                             |             }
    0x00062868 mov r0, r6                                    |             r0 = r6;
    0x0006286c bl 0x14bdc                                    |             unlink (r0);
                                                             |         }
    0x00062870 ldrb r2, [r4, 9]                              |         r2 = *((r4 + 9));
    0x00062874 ldrb r3, [r4, 8]                              |         r3 = *((r4 + 8));
    0x00062878 orr r3, r3, r2, lsl 8                         |         r3 |= (r2 << 8);
    0x0006287c ldrb r2, [r4, 0xa]                            |         r2 = *((r4 + 0xa));
    0x00062880 orr r3, r3, r2, lsl 16                        |         r3 |= (r2 << 16);
    0x00062884 ldrb r2, [r4, 0xb]                            |         r2 = *((r4 + 0xb));
    0x00062888 orrs r3, r3, r2, lsl 24                       |         r3 |= (r2 << 24);
                                                             |         if (r3 != r3) {
    0x0006288c beq 0x6289c                                   |             
    0x00062890 mov r1, sl                                    |             r1 = sl;
    0x00062894 ldr r0, [pc, 0xac]                            |             r0 = "cant_run__s";
    0x00062898 bl 0x18274                                    |             fcn_00018274 ();
                                                             |         }
    0x0006289c mov r0, sl                                    |         r0 = sl;
    0x000628a0 bl 0x14bdc                                    |         unlink (r0);
                                                             |     }
                                                             | label_46:
    0x000628a4 mov r0, r5                                    |     r0 = r5;
    0x000628a8 bl 0x152a8                                    |     free (r0);
    0x000628ac ldrb r3, [sb]                                 |     r3 = *(sb);
    0x000628b0 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000628b4 bne 0x61df0                                   |         goto label_0;
                                                             |     }
    0x000628b8 add sp, sp, 0x3c                              |     
    0x000628bc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |     
                                                             | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x64a74 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) fcn.00064a74 ()                                                  | void fcn_00064a74 (int32_t arg1, char * arg2) {
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_ch;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x00064a74 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x00064a78 ldr fp, [pc, 0x11c]                                           |     fp = *(0x64b98);
    0x00064a7c mov r4, r0                                                    |     r4 = r0;
    0x00064a80 mov sb, r1                                                    |     sb = r1;
    0x00064a84 mov r6, 0x8000                                                |     r6 = 0x8000;
    0x00064a88 mov sl, 0x2c                                                  |     sl = 0x2c;
                                                                             |     do {
    0x00064a8c mov r1, 0x2c                                                  |         r1 = 0x2c;
    0x00064a90 mov r0, r4                                                    |         r0 = r4;
    0x00064a94 bl 0x1517c                                                    |         strchr (r0, r1);
    0x00064a98 ldr r7, [pc, 0x100]                                           |         r7 = *(0x64b9c);
    0x00064a9c subs r8, r0, 0                                                |         r8 = r0 - 0;
                                                                             |         if (r8 == r0) {
    0x00064aa0 movne r3, 0                                                   |             r3 = 0;
                                                                             |         }
                                                                             |         if (r8 == r0) {
    0x00064aa4 strbne r3, [r8]                                               |             *(r8) = r3;
                                                                             |         }
    0x00064aa8 mov r3, 0                                                     |         r3 = 0;
                                                                             | label_1:
    0x00064aac mov r0, r7                                                    |         r0 = r7;
    0x00064ab0 str r3, [sp, 4]                                               |         var_4h = r3;
    0x00064ab4 bl 0x1514c                                                    |         strlen (r0);
    0x00064ab8 mov r1, r4                                                    |         r1 = r4;
    0x00064abc mov r2, r0                                                    |         r2 = r0;
    0x00064ac0 mov r5, r0                                                    |         r5 = r0;
    0x00064ac4 mov r0, r7                                                    |         r0 = r7;
    0x00064ac8 bl 0x14840                                                    |         strncasecmp (r0, r1, r2);
    0x00064acc ldr r3, [sp, 4]                                               |         r3 = var_4h;
    0x00064ad0 cmp r0, 0                                                     |         
                                                                             |         if (r0 != 0) {
    0x00064ad4 bne 0x64b18                                                   |             goto label_3;
                                                                             |         }
    0x00064ad8 ldrb r2, [r4, r5]                                             |         r2 = *((r4 + r5));
    0x00064adc cmp r2, 0                                                     |         
                                                                             |         if (r2 != 0) {
    0x00064ae0 bne 0x64b08                                                   |             goto label_4;
                                                                             |         }
                                                                             | label_0:
    0x00064ae4 ldr r3, [fp, r3, lsl 2]                                       |         offset_0 = r3 << 2;
                                                                             |         r3 = *((fp + offset_0));
    0x00064ae8 cmp r3, 0                                                     |         
                                                                             |         if (r3 >= 0) {
    0x00064aec andlt r6, r6, r3                                              |             r6 &= r3;
                                                                             |         }
                                                                             |         if (r3 < 0) {
    0x00064af0 orrge r6, r6, r3                                              |             r6 |= r3;
                                                                             |         }
                                                                             | label_2:
    0x00064af4 cmp r8, 0                                                     |         
                                                                             |         if (r8 == 0) {
    0x00064af8 beq 0x64b90                                                   |             goto label_5;
                                                                             |         }
    0x00064afc mov r4, r8                                                    |         r4 = r8;
    0x00064b00 strb sl, [r4], 1                                              |         *(r4) = sl;
                                                                             |         r4++;
    0x00064b04 b 0x64a8c                                                     |         
                                                                             |     } while (1);
                                                                             | label_4:
    0x00064b08 add r2, r7, r5                                                |     r2 = r7 + r5;
    0x00064b0c ldrb r2, [r2, -1]                                             |     r2 = *((r2 - 1));
    0x00064b10 cmp r2, 0x3d                                                  |     
                                                                             |     if (r2 == 0x3d) {
    0x00064b14 beq 0x64ae4                                                   |         goto label_0;
                                                                             |     }
                                                                             | label_3:
    0x00064b18 add r3, r3, 1                                                 |     r3++;
    0x00064b1c add r5, r5, 1                                                 |     r5++;
    0x00064b20 cmp r3, 0x2c                                                  |     
    0x00064b24 add r7, r7, r5                                                |     r7 += r5;
                                                                             |     if (r3 != 0x2c) {
    0x00064b28 bne 0x64aac                                                   |         goto label_1;
                                                                             |     }
    0x00064b2c ldrb r3, [r4]                                                 |     r3 = *(r4);
    0x00064b30 cmp r3, 0                                                     |     
    0x00064b34 cmpne sb, 0                                                   |     __asm ("cmpne sb, 0");
                                                                             |     if (r3 == 0) {
    0x00064b38 beq 0x64af4                                                   |         goto label_2;
                                                                             |     }
    0x00064b3c ldr r7, [sb]                                                  |     r7 = *(sb);
    0x00064b40 cmp r7, 0                                                     |     
                                                                             |     if (r7 != 0) {
    0x00064b44 moveq r5, r7                                                  |         r5 = r7;
                                                                             |     }
                                                                             |     if (r7 != 0) {
    0x00064b48 beq 0x64b58                                                   |         
    0x00064b4c mov r0, r7                                                    |         r0 = r7;
    0x00064b50 bl 0x1514c                                                    |         r0 = strlen (r0);
    0x00064b54 mov r5, r0                                                    |         r5 = r0;
                                                                             |     }
    0x00064b58 mov r0, r4                                                    |     r0 = r4;
    0x00064b5c bl 0x1514c                                                    |     r0 = strlen (r0);
    0x00064b60 add r1, r0, r5                                                |     r1 = r0 + r5;
    0x00064b64 add r1, r1, 2                                                 |     r1 += 2;
    0x00064b68 mov r0, r7                                                    |     r0 = r7;
    0x00064b6c bl 0x18990                                                    |     fcn_00018990 (r0, r1);
    0x00064b70 cmp r5, 0                                                     |     
    0x00064b74 mov r1, r4                                                    |     r1 = r4;
    0x00064b78 str r0, [sb]                                                  |     *(sb) = r0;
                                                                             |     if (r5 == 0) {
    0x00064b7c strbne sl, [r0, r5]                                           |         *((r0 + r5)) = sl;
                                                                             |     }
                                                                             |     if (r5 == 0) {
    0x00064b80 addne r5, r5, 1                                               |         r5++;
                                                                             |     }
    0x00064b84 add r0, r0, r5                                                |     r0 += r5;
    0x00064b88 bl 0x142f4                                                    |     strcpy (r0, r1)
    0x00064b8c b 0x64af4                                                     |     goto label_2;
                                                                             | label_5:
    0x00064b90 mov r0, r6                                                    |     r0 = r6;
    0x00064b94 add sp, sp, 0xc                                               |     
    0x00064b98 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |     
                                                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x6c008 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0006c008 ()                  | void fcn_0006c008 (int32_t arg1, char * arg2) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x0006c008 push {r4, r5, r6, lr}         |     
    0x0006c00c mov r4, r1                    |     r4 = r1;
    0x0006c010 mov r6, r0                    |     r6 = r0;
    0x0006c014 add r0, r4, 0x100             |     r0 = r4 + 0x100;
    0x0006c018 ldr r1, [pc, 0x58]            |     r1 = *(0x6c074);
    0x0006c01c add r0, r0, 1                 |     r0++;
    0x0006c020 add r5, r4, 0x94              |     r5 = r4 + 0x94;
    0x0006c024 bl 0x142f4                    |     strcpy (r0, r1)
    0x0006c028 mov r2, 8                     |     r2 = 8;
    0x0006c02c mov r1, 0x20                  |     r1 = 0x20;
    0x0006c030 mov r0, r5                    |     r0 = r5;
    0x0006c034 bl 0x14d98                    |     memset (r0, r1, r2);
    0x0006c038 add r1, r4, 0x200             |     r1 = r4 + 0x200;
    0x0006c03c mov r3, r4                    |     r3 = r4;
    0x0006c040 mov r2, 0                     |     r2 = 0;
                                             |     do {
    0x0006c044 ldrb r0, [r3], 1              |         r0 = *(r3);
                                             |         r3++;
    0x0006c048 cmp r3, r1                    |         
    0x0006c04c add r2, r2, r0                |         r2 += r0;
    0x0006c050 bne 0x6c044                   |         
                                             |     } while (r3 != r1);
    0x0006c054 mov r0, r5                    |     r0 = r5;
    0x0006c058 asr r3, r2, 0x1f              |     r3 = r2 >> 0x1f;
    0x0006c05c mov r1, 7                     |     r1 = 7;
    0x0006c060 bl 0x6bfb4                    |     fcn_0006bfb4 (r0, r1);
    0x0006c064 mov r1, r4                    |     r1 = r4;
    0x0006c068 mov r0, r6                    |     r0 = r6;
    0x0006c06c mov r2, 0x200                 |     r2 = 0x200;
    0x0006c070 pop {r4, r5, r6, lr}          |     
    0x0006c074 b 0x18bac                     |     return void (*0x18bac)() ();
                                             | }
    ; 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 @ 0x6c07c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0006c07c ()                          | void fcn_0006c07c (int32_t arg1, int32_t arg2) {
                                                     |     char * dest;
                                                     |     void * s1;
                                                     |     int32_t var_7ch;
                                                     |     int32_t var_9ch;
                                                     |     int32_t var_200h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0006c07c push {r4, r5, r6, r7, r8, lr}         |     
    0x0006c080 mov r6, r0                            |     r6 = r0;
    0x0006c084 sub sp, sp, 0x200                     |     
    0x0006c088 mov r0, r2                            |     r0 = r2;
    0x0006c08c mov r5, r3                            |     r5 = r3;
    0x0006c090 mov r8, r1                            |     r8 = r1;
    0x0006c094 mov r7, r2                            |     r7 = r2;
    0x0006c098 bl 0x1514c                            |     strlen (r0);
    0x0006c09c add r4, r5, 1                         |     r4 = r5 + 1;
    0x0006c0a0 mov r2, 0x200                         |     r2 = 0x200;
    0x0006c0a4 mov r1, 0                             |     r1 = 0;
    0x0006c0a8 lsl r5, r5, 1                         |     r5 <<= 1;
    0x0006c0ac add r4, r4, r0                        |     r4 += r0;
    0x0006c0b0 mov r0, sp                            |     r0 = sp;
    0x0006c0b4 bl 0x14d98                            |     memset (r0, r1, r2);
    0x0006c0b8 ldr r1, [pc, 0x8c]                    |     r1 = *(0x6c148);
    0x0006c0bc mov r0, sp                            |     r0 = sp;
    0x0006c0c0 bl 0x142f4                            |     strcpy (r0, r1)
    0x0006c0c4 mov r2, 0x30                          |     r2 = 0x30;
    0x0006c0c8 ldr r1, [pc, 0x80]                    |     r1 = "__.__LongLink";
    0x0006c0cc add r0, sp, 0x64                      |     r0 += s1;
    0x0006c0d0 bl 0x14624                            |     memcpy (r0, "__.__LongLink", r2);
    0x0006c0d4 asr r3, r4, 0x1f                      |     r3 = r4 >> 0x1f;
    0x0006c0d8 mov r2, r4                            |     r2 = r4;
    0x0006c0dc add r0, sp, 0x7c                      |     r0 += var_7ch;
    0x0006c0e0 mov r1, 0xc                           |     r1 = 0xc;
    0x0006c0e4 bl 0x6bfb4                            |     fcn_0006bfb4 (r0, r1);
    0x0006c0e8 mov r1, sp                            |     r1 = sp;
    0x0006c0ec mov r0, r6                            |     r0 = r6;
    0x0006c0f0 strb r8, [sp, 0x9c]                   |     var_9ch = r8;
    0x0006c0f4 bl 0x6c008                            |     fcn_0006c008 (r0, r1);
    0x0006c0f8 sub r2, r4, r5                        |     r2 = r4 - r5;
    0x0006c0fc rsb r4, r4, 0                         |     r4 -= ;
    0x0006c100 mov r1, r7                            |     r1 = r7;
    0x0006c104 mov r0, r6                            |     r0 = r6;
    0x0006c108 lsl r4, r4, 0x17                      |     r4 <<= 0x17;
    0x0006c10c bl 0x18bac                            |     fcn_00018bac (r0, r1);
    0x0006c110 lsr r4, r4, 0x17                      |     r4 >>= 0x17;
    0x0006c114 mov r2, r5                            |     r2 = r5;
    0x0006c118 mov r0, r6                            |     r0 = r6;
    0x0006c11c ldr r1, [pc, 0x30]                    |     r1 = "_000000";
    0x0006c120 bl 0x18bac                            |     fcn_00018bac (r0, "_000000");
    0x0006c124 mov r2, r4                            |     r2 = r4;
    0x0006c128 mov r1, 0                             |     r1 = 0;
    0x0006c12c mov r0, sp                            |     r0 = sp;
    0x0006c130 bl 0x14d98                            |     memset (r0, r1, r2);
    0x0006c134 mov r2, r4                            |     r2 = r4;
    0x0006c138 mov r1, sp                            |     r1 = sp;
    0x0006c13c mov r0, r6                            |     r0 = r6;
    0x0006c140 bl 0x18bac                            |     fcn_00018bac (r0, r1);
    0x0006c144 add sp, sp, 0x200                     |     
    0x0006c148 pop {r4, r5, r6, r7, r8, pc}          |     
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x6cc28 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0006cc28 ()                                      | void fcn_0006cc28 (int32_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_20h;
                                                                 |     int32_t var_24h;
                                                                 |     int32_t var_28h;
                                                                 |     int32_t var_2ch;
                                                                 |     int32_t var_30h;
                                                                 |     char * dest;
                                                                 |     int32_t var_39h;
                                                                 |     int32_t var_3ch;
                                                                 |     int32_t var_3eh;
                                                                 |     int32_t var_40h;
                                                                 |     char * format;
                                                                 |     int32_t var_44h;
                                                                 |     int32_t var_46h;
                                                                 |     int32_t var_48h;
                                                                 |     int32_t var_4ah;
                                                                 |     int32_t var_4ch;
                                                                 |     int32_t var_4eh;
                                                                 |     int32_t var_50h;
                                                                 |     int32_t var_52h;
                                                                 |     int32_t var_54h;
                                                                 |     char * s;
                                                                 |     int32_t var_60h;
                                                                 |     int32_t var_64h;
                                                                 |     int32_t var_66h;
                                                                 |     int32_t var_68h;
                                                                 |     int32_t var_6ah;
                                                                 |     int32_t var_6ch;
                                                                 |     int32_t var_6eh;
                                                                 |     int32_t var_70h;
                                                                 |     int32_t var_72h;
                                                                 |     int32_t var_74h;
                                                                 |     int32_t var_78h;
                                                                 |     int32_t var_7ch;
                                                                 |     int32_t var_7eh;
                                                                 |     int32_t var_80h;
                                                                 |     int32_t var_84h;
                                                                 |     int32_t var_88h;
                                                                 |     int32_t var_90h;
                                                                 |     int32_t var_e4h;
                                                                 |     r0 = arg1;
    0x0006cc28 push {r4, lr}                                     |     
    0x0006cc2c mov r4, r0                                        |     r4 = r0;
    0x0006cc30 bl 0x18cdc                                        |     fcn_00018cdc ();
    0x0006cc34 ldr r3, [pc, 0x1c]                                |     r3 = *(0x6cc54);
    0x0006cc38 mov r1, 0x50                                      |     r1 = 0x50;
    0x0006cc3c ldr r2, [r3]                                      |     r2 = *(0x6cc54);
    0x0006cc40 mov r0, r4                                        |     r0 = r4;
    0x0006cc44 bl 0x150f8                                        |     r0 = fgets_unlocked ();
    0x0006cc48 cmp r0, 0                                         |     
    0x0006cc4c popne {r4, pc}                                    |     
    0x0006cc50 ldr r0, [pc, 4]                                   |     r0 = "cant_read_standard_input";
    0x0006cc54 bl 0x17fd8                                        |     fcn_00017fd8 ();
                                                                 |     if (r0 != 0) {
    0x0006cc58 andeq sp, sp, ip, lsr 11                          |         
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x0006cc5c andeq r7, ip, r2, asr fp                          |         r7 = ip & (r2 >> fp);
                                                                 |     }
    0x0006cc60 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0006cc64 ldr fp, [pc, 0xba4]                               |     fp = "_d:lnopqxjv";
    0x0006cc68 ldr r8, [pc, 0xba4]                               |     r8 = "_d:lnopqxjv";
    0x0006cc6c mov r5, 0                                         |     r5 = 0;
    0x0006cc70 sub sp, sp, 0xe4                                  |     
    0x0006cc74 mov sb, r0                                        |     sb = r0;
    0x0006cc78 mov sl, r1                                        |     sl = r1;
    0x0006cc7c mov r7, r5                                        |     r7 = r5;
    0x0006cc80 mvn r6, 0                                         |     r6 = ~0;
    0x0006cc84 mov r4, r5                                        |     r4 = r5;
    0x0006cc88 str r5, [sp, 0x28]                                |     var_28h = r5;
    0x0006cc8c str r5, [sp, 0x2c]                                |     var_2ch = r5;
    0x0006cc90 str r5, [sp, 0x30]                                |     var_30h = r5;
    0x0006cc94 str r5, [sp, 0x10]                                |     var_10h = r5;
    0x0006cc98 str r5, [sp, 0x18]                                |     var_18h = r5;
    0x0006cc9c str r5, [sp, 0x14]                                |     var_14h = r5;
                                                                 | label_0:
    0x0006cca0 mov r2, fp                                        |     r2 = fp;
    0x0006cca4 mov r1, sl                                        |     r1 = sl;
    0x0006cca8 mov r0, sb                                        |     r0 = sb;
    0x0006ccac bl 0x14d80                                        |     r0 = getopt (r0, r1, r2);
    0x0006ccb0 cmn r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x0006ccb4 bne 0x6ce3c                                       |         goto label_19;
                                                                 |     }
    0x0006ccb8 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0006ccbc beq 0x6ce5c                                       |         goto label_1;
                                                                 |     }
    0x0006ccc0 ldrb r3, [r7]                                     |     r3 = *(r7);
    0x0006ccc4 cmp r3, 0x2d                                      |     
                                                                 |     if (r3 != 0x2d) {
    0x0006ccc8 bne 0x6cf34                                       |         goto label_20;
                                                                 |     }
    0x0006cccc ldrb r0, [r7, 1]                                  |     r0 = *((r7 + 1));
    0x0006ccd0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0006ccd4 bne 0x6cf34                                       |         goto label_20;
                                                                 |     }
    0x0006ccd8 mov r1, 3                                         |     r1 = 3;
    0x0006ccdc bl 0x18b6c                                        |     fcn_00018b6c (r0);
    0x0006cce0 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0006cce4 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0006cce8 moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x0006ccec str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 | label_3:
    0x0006ccf0 cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x0006ccf4 beq 0x6cd00                                       |         
    0x0006ccf8 mov r0, r5                                        |         r0 = r5;
    0x0006ccfc bl 0x18ec4                                        |         fcn_00018ec4 (r0);
                                                                 |     }
    0x0006cd00 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x0006cd04 cmp r3, 1                                         |     
                                                                 |     if (r3 <= 1) {
    0x0006cd08 bgt 0x6cd48                                       |         
    0x0006cd0c cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0006cd10 bne 0x6cd28                                       |             
    0x0006cd14 mov r0, r7                                        |             r0 = r7;
    0x0006cd18 bl 0xa14d4                                        |             r0 = fcn_000a14d4 (r0);
    0x0006cd1c mov r1, r0                                        |             r1 = r0;
    0x0006cd20 ldr r0, [pc, 0xaf0]                               |             r0 = optarg;
    0x0006cd24 bl 0x1436c                                        |             printf (r0, r1);
                                                                 |         }
    0x0006cd28 tst r4, 1                                         |         
                                                                 |         if ((r4 & 1) == 0) {
    0x0006cd2c beq 0x6cd48                                       |             goto label_21;
                                                                 |         }
    0x0006cd30 ldr r2, [sp, 0x18]                                |         r2 = var_18h;
    0x0006cd34 ldr r3, [pc, 0xae0]                               |         r3 = "Archive:___s";
    0x0006cd38 cmp r2, 0                                         |         
    0x0006cd3c ldr r0, [pc, 0xadc]                               |         r0 = "Length___Method____Size__Cmpr____Date____Time___CRC_32___Name______________________________________________________________";
                                                                 |         if (r2 == 0) {
    0x0006cd40 movne r0, r3                                      |             r0 = r3;
                                                                 |         }
    0x0006cd44 bl 0x14660                                        |         puts (r0);
                                                                 |     }
                                                                 | label_21:
    0x0006cd48 mov r3, 2                                         |     r3 = 2;
    0x0006cd4c str r3, [sp]                                      |     *(sp) = r3;
    0x0006cd50 mov r2, 0                                         |     r2 = 0;
    0x0006cd54 mov r3, 0                                         |     r3 = 0;
    0x0006cd58 mov r0, 3                                         |     r0 = 3;
    0x0006cd5c bl 0x15158                                        |     lseek64 ();
    0x0006cd60 mvn r3, 0                                         |     r3 = ~0;
    0x0006cd64 mvn r2, 0                                         |     r2 = ~0;
    0x0006cd68 cmp r1, r3                                        |     
    0x0006cd6c cmpeq r0, r2                                      |     __asm ("cmpeq r0, r2");
                                                                 |     if (r1 != r3) {
    0x0006cd70 mvneq fp, 0                                       |         
                                                                 |     }
                                                                 |     if (r1 != r3) {
    0x0006cd74 beq 0x6cde4                                       |         
    0x0006cd78 subs r8, r0, 0x10000                              |         r8 = r0 - 0x10000;
    0x0006cd7c sbc sb, r1, 0                                     |         __asm ("sbc sb, r1, 0");
    0x0006cd80 cmp r8, 0                                         |         
    0x0006cd84 sbcs r3, sb, 0                                    |         __asm ("sbcs r3, sb, 0");
                                                                 |         if (r8 >= 0) {
    0x0006cd88 movlt r8, 0                                       |             r8 = 0;
                                                                 |         }
                                                                 |         if (r8 >= 0) {
    0x0006cd8c movlt sb, 0                                       |             sb = 0;
                                                                 |         }
    0x0006cd90 mov r3, 0                                         |         r3 = 0;
    0x0006cd94 mov r2, r8                                        |         r2 = r8;
    0x0006cd98 str r3, [sp]                                      |         *(sp) = r3;
    0x0006cd9c mov r0, 3                                         |         r0 = 3;
    0x0006cda0 mov r3, sb                                        |         r3 = sb;
    0x0006cda4 bl 0x18c28                                        |         fcn_00018c28 (r0);
    0x0006cda8 mov r0, 0x10000                                   |         r0 = 0x10000;
    0x0006cdac bl 0x189b8                                        |         fcn_000189b8 (r0);
    0x0006cdb0 mov r2, 0x10000                                   |         r2 = 0x10000;
    0x0006cdb4 mvn fp, 0                                         |         
    0x0006cdb8 mov r5, r0                                        |         r5 = r0;
    0x0006cdbc mov r1, r0                                        |         r1 = r0;
    0x0006cdc0 add r7, r5, 0xff00                                |         r7 = r5 + 0xff00;
    0x0006cdc4 mov r0, 3                                         |         r0 = 3;
    0x0006cdc8 bl 0x196c8                                        |         fcn_000196c8 (r0, r1);
    0x0006cdcc add r7, r7, 0xec                                  |         r7 += 0xec;
    0x0006cdd0 mov r3, r5                                        |         r3 = r5;
                                                                 | label_4:
    0x0006cdd4 cmp r3, r7                                        |         
                                                                 |         if (r3 < r7) {
    0x0006cdd8 bls 0x6cf9c                                       |             goto label_22;
                                                                 |         }
    0x0006cddc mov r0, r5                                        |         r0 = r5;
    0x0006cde0 bl 0x152a8                                        |         free (r0);
                                                                 |     }
    0x0006cde4 mov r5, 0                                         |     r5 = 0;
    0x0006cde8 mov sl, r5                                        |     sl = r5;
    0x0006cdec str r5, [sp, 0x1c]                                |     var_1ch = r5;
    0x0006cdf0 str r5, [sp, 0x20]                                |     var_20h = r5;
                                                                 | label_13:
    0x0006cdf4 cmn fp, 1                                         |     
                                                                 |     if (fp != 1) {
    0x0006cdf8 bne 0x6d050                                       |         goto label_23;
                                                                 |     }
                                                                 |     do {
    0x0006cdfc add r1, sp, 0x58                                  |         r1 += s;
    0x0006ce00 mov r2, 4                                         |         r2 = 4;
    0x0006ce04 mov r0, 3                                         |         r0 = 3;
    0x0006ce08 bl 0xa3804                                        |         fcn_000a3804 (r0, r1);
    0x0006ce0c ldr r1, [sp, 0x58]                                |         r1 = s;
    0x0006ce10 ldr r3, [pc, 0xa0c]                               |         r3 = "Length______Date____Time____Name__________________________________";
    0x0006ce14 cmp r1, r3                                        |         
                                                                 |         if (r1 == r3) {
    0x0006ce18 beq 0x6d758                                       |             goto label_24;
                                                                 |         }
    0x0006ce1c add r3, r3, 0x6000000                             |         r3 += 0x6000000;
    0x0006ce20 add r3, r3, 0x60000                               |         r3 += 0x60000;
    0x0006ce24 cmp r1, r3                                        |         
                                                                 |         if (r1 != r3) {
    0x0006ce28 bne 0x6d018                                       |             goto label_25;
                                                                 |         }
    0x0006ce2c mov r0, 0xc                                       |         r0 = 0xc;
    0x0006ce30 mov r1, 0                                         |         r1 = 0;
    0x0006ce34 bl 0x6cbc4                                        |         fcn_0006cbc4 (r0, r1);
    0x0006ce38 b 0x6cdfc                                         |         
                                                                 |     } while (1);
                                                                 | label_19:
    0x0006ce3c cmp r0, 0x6e                                      |     
                                                                 |     if (r0 == 0x6e) {
    0x0006ce40 beq 0x6cf20                                       |         goto label_26;
                                                                 |     }
                                                                 |     if (r0 > 0x6e) {
    0x0006ce44 bgt 0x6ce78                                       |         goto label_27;
                                                                 |     }
    0x0006ce48 cmp r0, 0x64                                      |     
                                                                 |     if (r0 == 0x64) {
    0x0006ce4c beq 0x6cec0                                       |         goto label_28;
                                                                 |     }
                                                                 |     if (r0 > 0x64) {
    0x0006ce50 bgt 0x6ce60                                       |         goto label_29;
                                                                 |     }
    0x0006ce54 cmp r0, 1                                         |     
                                                                 |     if (r0 == 1) {
    0x0006ce58 beq 0x6cee0                                       |         goto label_30;
                                                                 |     }
                                                                 |     do {
                                                                 | label_1:
    0x0006ce5c bl 0x175e8                                        |         r0 = fcn_000175e8 ();
                                                                 | label_29:
    0x0006ce60 cmp r0, 0x6a                                      |         
                                                                 |         if (r0 == 0x6a) {
    0x0006ce64 beq 0x6ced8                                       |             goto label_31;
                                                                 |         }
    0x0006ce68 cmp r0, 0x6c                                      |         
    0x0006ce6c bne 0x6ce5c                                       |         
                                                                 |     } while (r0 != 0x6c);
                                                                 | label_2:
    0x0006ce70 orr r4, r4, 1                                     |     r4 |= 1;
    0x0006ce74 b 0x6cca0                                         |     goto label_0;
                                                                 | label_27:
    0x0006ce78 cmp r0, 0x71                                      |     
                                                                 |     if (r0 == 0x71) {
    0x0006ce7c beq 0x6ce98                                       |         goto label_32;
                                                                 |     }
                                                                 |     if (r0 > 0x71) {
    0x0006ce80 bgt 0x6cea8                                       |         goto label_33;
                                                                 |     }
    0x0006ce84 cmp r0, 0x6f                                      |     
                                                                 |     if (r0 == 0x6f) {
    0x0006ce88 beq 0x6cf2c                                       |         goto label_34;
                                                                 |     }
    0x0006ce8c cmp r0, 0x70                                      |     
                                                                 |     if (r0 != 0x70) {
    0x0006ce90 bne 0x6ce5c                                       |         goto label_1;
                                                                 |     }
    0x0006ce94 mov r6, 1                                         |     r6 = 1;
                                                                 | label_32:
    0x0006ce98 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x0006ce9c add r3, r3, 1                                     |     r3++;
    0x0006cea0 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0006cea4 b 0x6cca0                                         |     goto label_0;
                                                                 | label_33:
    0x0006cea8 cmp r0, 0x76                                      |     
                                                                 |     if (r0 == 0x76) {
    0x0006ceac beq 0x6cec8                                       |         goto label_35;
                                                                 |     }
    0x0006ceb0 cmp r0, 0x78                                      |     
                                                                 |     if (r0 != 0x78) {
    0x0006ceb4 bne 0x6ce5c                                       |         goto label_1;
                                                                 |     }
    0x0006ceb8 orr r4, r4, 2                                     |     r4 |= 2;
    0x0006cebc b 0x6cca0                                         |     goto label_0;
                                                                 | label_28:
    0x0006cec0 ldr r5, [r8]                                      |     r5 = *(r8);
    0x0006cec4 b 0x6cca0                                         |     goto label_0;
                                                                 | label_35:
    0x0006cec8 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0006cecc add r3, r3, 1                                     |     r3++;
    0x0006ced0 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0006ced4 b 0x6ce70                                         |     goto label_2;
                                                                 | label_31:
    0x0006ced8 orr r4, r4, 4                                     |     r4 |= 4;
    0x0006cedc b 0x6cca0                                         |     goto label_0;
                                                                 | label_30:
    0x0006cee0 cmp r7, 0                                         |     
    0x0006cee4 ldr r1, [r8]                                      |     r1 = *(r8);
                                                                 |     if (r7 == 0) {
    0x0006cee8 bne 0x6cf0c                                       |         
    0x0006ceec mov r0, r1                                        |         r0 = r1;
    0x0006cef0 bl 0x1514c                                        |         r0 = strlen (r0);
    0x0006cef4 add r0, r0, 5                                     |         r0 += 5;
    0x0006cef8 bl 0x18968                                        |         fcn_00018968 (r0);
    0x0006cefc ldr r1, [r8]                                      |         r1 = *(r8);
    0x0006cf00 mov r7, r0                                        |         r7 = r0;
    0x0006cf04 bl 0x142f4                                        |         strcpy (r0, r1)
    0x0006cf08 b 0x6cca0                                         |         goto label_0;
                                                                 |     }
    0x0006cf0c tst r4, 2                                         |     
                                                                 |     if ((r4 & 2) != 0) {
    0x0006cf10 addeq r0, sp, 0x28                                |         r0 += var_28h;
                                                                 |     }
                                                                 |     if ((r4 & 2) == 0) {
    0x0006cf14 addne r0, sp, 0x2c                                |         r0 += var_2ch;
                                                                 |     }
    0x0006cf18 bl 0x9fe10                                        |     fcn_0009fe10 (r0, r1);
    0x0006cf1c b 0x6cca0                                         |     goto label_0;
                                                                 | label_26:
    0x0006cf20 mov r3, 1                                         |     r3 = 1;
                                                                 |     do {
    0x0006cf24 str r3, [sp, 0x10]                                |         var_10h = r3;
    0x0006cf28 b 0x6cca0                                         |         goto label_0;
                                                                 | label_34:
    0x0006cf2c mov r3, 2                                         |         r3 = 2;
    0x0006cf30 b 0x6cf24                                         |         
                                                                 |     } while (1);
                                                                 | label_20:
    0x0006cf34 mov r0, r7                                        |     r0 = r7;
    0x0006cf38 bl 0x1514c                                        |     strlen (r0);
    0x0006cf3c ldr sb, [pc, 0x8e4]                               |     sb = *(0x6d824);
    0x0006cf40 mov sl, 0                                         |     sl = 0;
    0x0006cf44 add r8, r7, r0                                    |     r8 = r7 + r0;
                                                                 |     do {
    0x0006cf48 mov r1, 0                                         |         r1 = 0;
    0x0006cf4c mov r0, r7                                        |         r0 = r7;
    0x0006cf50 bl 0x14df8                                        |         r0 = open64 ();
    0x0006cf54 cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x0006cf58 bge 0x6cf90                                       |             goto label_36;
                                                                 |         }
    0x0006cf5c add sl, sl, 1                                     |         sl++;
    0x0006cf60 cmp sl, 3                                         |         
                                                                 |         if (sl == 3) {
    0x0006cf64 bne 0x6cf7c                                       |             
    0x0006cf68 ldr r0, [pc, 0x8bc]                               |             r0 = *(0x6d828);
    0x0006cf6c mov r3, 0                                         |             r3 = 0;
    0x0006cf70 mov r1, r7                                        |             r1 = r7;
    0x0006cf74 strb r3, [r8]                                     |             *(r8) = r3;
                                                                 | label_5:
    0x0006cf78 bl 0x18254                                        |             fcn_00018254 ();
                                                                 |         }
    0x0006cf7c add r1, sl, sl, lsl 2                             |         r1 = sl + (sl << 2);
    0x0006cf80 add r1, sb, r1                                    |         r1 = sb + r1;
    0x0006cf84 mov r0, r8                                        |         r0 = r8;
    0x0006cf88 bl 0x142f4                                        |         strcpy (r0, r1)
    0x0006cf8c b 0x6cf48                                         |         
                                                                 |     } while (1);
                                                                 | label_36:
    0x0006cf90 mov r1, 3                                         |     r1 = 3;
    0x0006cf94 bl 0x18b8c                                        |     fcn_00018b8c (r0, r1);
    0x0006cf98 b 0x6ccf0                                         |     goto label_3;
                                                                 | label_22:
    0x0006cf9c ldrb r2, [r3]                                     |     r2 = *(r3);
    0x0006cfa0 add lr, r3, 1                                     |     lr = r3 + 1;
    0x0006cfa4 cmp r2, 0x50                                      |     
                                                                 |     if (r2 == 0x50) {
    0x0006cfa8 bne 0x6d010                                       |         
    0x0006cfac ldrb r2, [r3, 1]                                  |         r2 = *((r3 + 1));
    0x0006cfb0 cmp r2, 0x4b                                      |         
                                                                 |         if (r2 != 0x4b) {
    0x0006cfb4 bne 0x6d010                                       |             goto label_37;
                                                                 |         }
    0x0006cfb8 ldrb r2, [r3, 2]                                  |         r2 = *((r3 + 2));
    0x0006cfbc add lr, r3, 2                                     |         lr = r3 + 2;
    0x0006cfc0 cmp r2, 5                                         |         
                                                                 |         if (r2 != 5) {
    0x0006cfc4 bne 0x6d010                                       |             goto label_37;
                                                                 |         }
    0x0006cfc8 ldrb r2, [r3, 3]                                  |         r2 = *((r3 + 3));
    0x0006cfcc add lr, r3, 3                                     |         lr = r3 + 3;
    0x0006cfd0 cmp r2, 6                                         |         
                                                                 |         if (r2 != 6) {
    0x0006cfd4 bne 0x6d010                                       |             goto label_37;
                                                                 |         }
    0x0006cfd8 ldrb r2, [r3, 0x11]                               |         r2 = *((r3 + 0x11));
    0x0006cfdc ldrb ip, [r3, 0x10]                               |         ip = *((r3 + 0x10));
    0x0006cfe0 sub sl, lr, r5                                    |         sl = lr - r5;
    0x0006cfe4 orr ip, ip, r2, lsl 8                             |         
    0x0006cfe8 ldrb r2, [r3, 0x12]                               |         r2 = *((r3 + 0x12));
    0x0006cfec ldrb r3, [r3, 0x13]                               |         r3 = *((r3 + 0x13));
    0x0006cff0 orr ip, ip, r2, lsl 16                            |         
    0x0006cff4 orr ip, ip, r3, lsl 24                            |         
    0x0006cff8 adds r2, r8, sl                                   |         r2 = r8 + sl;
    0x0006cffc adc r3, sb, sl, asr 31                            |         __asm ("adc r3, sb, sl, asr 31");
    0x0006d000 mov r1, 0                                         |         r1 = 0;
    0x0006d004 cmp ip, r2                                        |         
    0x0006d008 sbcs r3, r1, r3                                   |         __asm ("sbcs r3, r1, r3");
                                                                 |         if (ip < r2) {
    0x0006d00c movlt fp, ip                                      |             goto label_37;
                                                                 |         }
                                                                 |     }
                                                                 | label_37:
    0x0006d010 mov r3, lr                                        |     r3 = lr;
    0x0006d014 b 0x6cdd4                                         |     goto label_4;
                                                                 | label_25:
    0x0006d018 ldr r3, [pc, 0x810]                               |     r3 = "cant_open__s_.zip_";
    0x0006d01c cmp r1, r3                                        |     
                                                                 |     if (r1 != r3) {
    0x0006d020 ldrne r0, [pc, 0x80c]                             |         r0 = "invalid_zip_magic__08X";
                                                                 |         goto label_38;
                                                                 |     }
                                                                 |     if (r1 != r3) {
                                                                 | label_38:
    0x0006d024 bne 0x6cf78                                       |         goto label_5;
                                                                 |     }
    0x0006d028 mov r2, 0x1a                                      |     r2 = 0x1a;
    0x0006d02c add r1, sp, 0x3c                                  |     r1 += var_3ch;
    0x0006d030 mov r0, 3                                         |     r0 = 3;
    0x0006d034 bl 0xa3804                                        |     fcn_000a3804 (r0, r1);
    0x0006d038 ldrh r3, [sp, 0x3e]                               |     r3 = var_3eh;
    0x0006d03c tst r3, 8                                         |     
                                                                 |     if ((r3 & 8) == 0) {
    0x0006d040 beq 0x6d13c                                       |         goto label_39;
                                                                 |     }
    0x0006d044 ldr r1, [pc, 0x7ec]                               |     r1 = "invalid_zip_magic__08X";
                                                                 |     do {
    0x0006d048 ldr r0, [pc, 0x7ec]                               |         r0 = "8 (streaming)";
    0x0006d04c b 0x6cf78                                         |         goto label_5;
                                                                 | label_23:
    0x0006d050 mov r7, 0                                         |         r7 = 0;
    0x0006d054 mov r3, r7                                        |         r3 = r7;
    0x0006d058 mov r2, fp                                        |         r2 = fp;
    0x0006d05c str r7, [sp]                                      |         *(sp) = r7;
    0x0006d060 mov r0, 3                                         |         r0 = 3;
    0x0006d064 bl 0x18c28                                        |         fcn_00018c28 (r0);
    0x0006d068 mov r2, 4                                         |         r2 = 4;
    0x0006d06c add r1, sp, 0x3c                                  |         r1 += var_3ch;
    0x0006d070 mov r0, 3                                         |         r0 = 3;
    0x0006d074 bl 0xa3804                                        |         fcn_000a3804 (r0, r1);
    0x0006d078 ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x0006d07c ldr r2, [pc, 0x7bc]                               |         r2 = "zip flag %s is not supported";
    0x0006d080 cmp r3, r2                                        |         
                                                                 |         if (r3 == r2) {
    0x0006d084 beq 0x6d758                                       |             goto label_24;
                                                                 |         }
    0x0006d088 mov r2, 0x2a                                      |         r2 = 0x2a;
    0x0006d08c add r1, sp, 0x58                                  |         r1 += s;
    0x0006d090 mov r0, 3                                         |         r0 = 3;
    0x0006d094 bl 0xa3804                                        |         fcn_000a3804 (r0, r1);
    0x0006d098 ldrh r3, [sp, 0x70]                               |         r3 = var_70h;
    0x0006d09c ldrh r2, [sp, 0x72]                               |         r2 = var_72h;
    0x0006d0a0 add r3, r3, 0x2e                                  |         r3 += 0x2e;
    0x0006d0a4 add r3, r3, r2                                    |         r3 += r2;
    0x0006d0a8 ldrh r2, [sp, 0x74]                               |         r2 = var_74h;
    0x0006d0ac add r3, r3, r2                                    |         r3 += r2;
    0x0006d0b0 adds fp, fp, r3                                   |         
                                                                 |         if (fp == fp) {
    0x0006d0b4 beq 0x6d758                                       |             goto label_24;
                                                                 |         }
    0x0006d0b8 ldrh r3, [sp, 0x80]                               |         r3 = var_80h;
    0x0006d0bc ldrh r2, [sp, 0x7e]                               |         r2 = var_7eh;
    0x0006d0c0 str r7, [sp]                                      |         *(sp) = r7;
    0x0006d0c4 orr r2, r2, r3, lsl 16                            |         r2 |= (r3 << 16);
    0x0006d0c8 add r2, r2, 4                                     |         r2 += 4;
    0x0006d0cc mov r3, r7                                        |         r3 = r7;
    0x0006d0d0 mov r0, 3                                         |         r0 = 3;
    0x0006d0d4 bl 0x18c28                                        |         fcn_00018c28 (r0);
    0x0006d0d8 mov r2, 0x1a                                      |         r2 = 0x1a;
    0x0006d0dc add r1, sp, 0x3c                                  |         r1 += var_3ch;
    0x0006d0e0 mov r0, 3                                         |         r0 = 3;
    0x0006d0e4 bl 0xa3804                                        |         fcn_000a3804 (r0, r1);
    0x0006d0e8 ldrh r3, [sp, 0x3e]                               |         r3 = var_3eh;
    0x0006d0ec tst r3, 8                                         |         
                                                                 |         if ((r3 & 8) != 0) {
    0x0006d0f0 beq 0x6d124                                       |             
    0x0006d0f4 ldrh r3, [sp, 0x64]                               |             r3 = var_64h;
    0x0006d0f8 strh r3, [sp, 0x46]                               |             var_46h = r3;
    0x0006d0fc ldrh r3, [sp, 0x66]                               |             r3 = var_66h;
    0x0006d100 strh r3, [sp, 0x48]                               |             var_48h = r3;
    0x0006d104 ldrh r3, [sp, 0x68]                               |             r3 = var_68h;
    0x0006d108 strh r3, [sp, 0x4a]                               |             var_4ah = r3;
    0x0006d10c ldrh r3, [sp, 0x6a]                               |             r3 = var_6ah;
    0x0006d110 strh r3, [sp, 0x4c]                               |             var_4ch = r3;
    0x0006d114 ldrh r3, [sp, 0x6c]                               |             r3 = var_6ch;
    0x0006d118 strh r3, [sp, 0x4e]                               |             var_4eh = r3;
    0x0006d11c ldrh r3, [sp, 0x6e]                               |             r3 = var_6eh;
    0x0006d120 strh r3, [sp, 0x50]                               |             var_50h = r3;
                                                                 |         }
    0x0006d124 ldrh r3, [sp, 0x58]                               |         r3 = s;
    0x0006d128 lsr r3, r3, 8                                     |         r3 >>= 8;
    0x0006d12c cmp r3, 3                                         |         
    0x0006d130 ldrheq r8, [sp, 0x7c]                             |         __asm ("ldrheq r8, [var_7ch]");
                                                                 |         if (r3 != 3) {
    0x0006d134 moveq r7, r8                                      |             r7 = r8;
                                                                 |         }
                                                                 |         if (r3 != 3) {
    0x0006d138 beq 0x6d144                                       |             
                                                                 | label_39:
    0x0006d13c ldr r7, [pc, 0x700]                               |             r7 = *(0x6d840);
    0x0006d140 ldr r8, [pc, 0x700]                               |             r8 = *(0x6d844);
                                                                 |         }
    0x0006d144 ldrh sb, [sp, 0x3e]                               |         sb = var_3eh;
    0x0006d148 ands sb, sb, 1                                    |         sb &= 1;
                                                                 |         if (sb == sb) {
    0x0006d14c ldrne r1, [pc, 0x6f8]                             |             r1 = "1 (encryption)";
                                                                 |         }
    0x0006d150 bne 0x6d048                                       |         
                                                                 |     } while (sb != sb);
    0x0006d154 mov r0, r5                                        |     r0 = r5;
    0x0006d158 bl 0x152a8                                        |     free (r0);
    0x0006d15c ldrh r0, [sp, 0x52]                               |     r0 = var_52h;
    0x0006d160 ldr r3, [pc, 0x6e8]                               |     r3 = "1 (encryption)";
    0x0006d164 cmp r0, r3                                        |     
                                                                 |     if (r0 >= r3) {
    0x0006d168 bls 0x6d174                                       |         
                                                                 | label_12:
    0x0006d16c ldr r0, [pc, 0x6e0]                               |         r0 = *(0x6d850);
                                                                 | label_14:
    0x0006d170 bl 0x18254                                        |         r0 = fcn_00018254 ();
                                                                 |     }
    0x0006d174 add r0, r0, 1                                     |     r0++;
    0x0006d178 bl 0x189b8                                        |     fcn_000189b8 (r0);
    0x0006d17c ldrh r2, [sp, 0x52]                               |     r2 = var_52h;
    0x0006d180 mov r5, r0                                        |     r5 = r0;
    0x0006d184 mov r1, r0                                        |     r1 = r0;
    0x0006d188 mov r0, 3                                         |     r0 = 3;
    0x0006d18c bl 0xa3804                                        |     fcn_000a3804 (r0, r1);
    0x0006d190 mov r1, sb                                        |     r1 = sb;
    0x0006d194 ldrh r0, [sp, 0x54]                               |     r0 = var_54h;
    0x0006d198 bl 0x6cbc4                                        |     fcn_0006cbc4 (r0, r1);
    0x0006d19c mov r0, r5                                        |     r0 = r5;
    0x0006d1a0 bl 0x74690                                        |     r0 = fcn_00074690 (r0);
    0x0006d1a4 mov r1, r0                                        |     r1 = r0;
    0x0006d1a8 mov r0, r5                                        |     r0 = r5;
    0x0006d1ac bl 0xa410c                                        |     fcn_000a410c (r0, r1);
    0x0006d1b0 mov r1, r5                                        |     r1 = r5;
    0x0006d1b4 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x0006d1b8 bl 0x728b0                                        |     r0 = fcn_000728b0 (r0, r1);
    0x0006d1bc cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0006d1c0 bne 0x6d26c                                       |         goto label_8;
                                                                 |     }
    0x0006d1c4 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x0006d1c8 cmp r0, 0                                         |     
    0x0006d1cc bne 0x6d25c                                       |     
                                                                 |     while (r0 != 0) {
    0x0006d1d0 tst r4, 1                                         |         
                                                                 |         if ((r4 & 1) != 0) {
    0x0006d1d4 bne 0x6d284                                       |             goto label_40;
                                                                 |         }
    0x0006d1d8 cmp r6, 1                                         |         
                                                                 |         if (r6 == 1) {
    0x0006d1dc beq 0x6d58c                                       |             goto label_41;
                                                                 |         }
    0x0006d1e0 tst r4, 4                                         |         
                                                                 |         if ((r4 & 4) != 0) {
    0x0006d1e4 beq 0x6d1fc                                       |             
    0x0006d1e8 mov r0, r5                                        |             r0 = r5;
    0x0006d1ec bl 0x17e94                                        |             r0 = fcn_00017e94 (r0);
    0x0006d1f0 mov r1, r0                                        |             r1 = r0;
    0x0006d1f4 mov r0, r5                                        |             r0 = r5;
    0x0006d1f8 bl 0xa410c                                        |             fcn_000a410c (r0, r1);
                                                                 |         }
    0x0006d1fc ldrb r3, [r5]                                     |         r3 = *(r5);
    0x0006d200 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0006d204 beq 0x6d26c                                       |             goto label_8;
                                                                 |         }
    0x0006d208 mov r1, 0x2f                                      |         r1 = 0x2f;
    0x0006d20c mov r0, r5                                        |         r0 = r5;
    0x0006d210 bl 0x17f40                                        |         r0 = fcn_00017f40 (r0, r1);
    0x0006d214 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0006d218 bne 0x6d40c                                       |             goto label_42;
                                                                 |         }
    0x0006d21c ldr sb, [pc, 0x634]                               |         sb = "replace__s___y_es___n_o___A_ll___N_one___r_ename:_";
    0x0006d220 ldr r8, [pc, 0x634]                               |         r8 = "replace__s___y_es___n_o___A_ll___N_one___r_ename:_";
                                                                 | label_10:
    0x0006d224 mov r0, r5                                        |         r0 = r5;
    0x0006d228 bl 0x6cb40                                        |         r0 = fcn_0006cb40 (r0);
    0x0006d22c cmn r0, 1                                         |         
                                                                 |         if (r0 == 1) {
    0x0006d230 beq 0x6d4fc                                       |             goto label_43;
                                                                 |         }
    0x0006d234 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x0006d238 cmp r3, 1                                         |         
                                                                 |         if (r3 == 1) {
    0x0006d23c beq 0x6d26c                                       |             goto label_8;
                                                                 |         }
    0x0006d240 and r0, r0, 0xf000                                |         r0 &= 0xf000;
    0x0006d244 cmp r0, 0x8000                                    |         
                                                                 |         if (r0 == 0x8000) {
    0x0006d248 beq 0x6d484                                       |             goto label_44;
                                                                 |         }
                                                                 | label_9:
    0x0006d24c mov r0, r5                                        |         r0 = r5;
    0x0006d250 bl 0xa14d4                                        |         fcn_000a14d4 (r0);
    0x0006d254 ldr r2, [pc, 0x604]                               |         r2 = "new_name:_";
    0x0006d258 b 0x6d478                                         |         goto label_45;
    0x0006d25c mov r1, r5                                        |         r1 = r5;
    0x0006d260 bl 0x728b0                                        |         r0 = fcn_000728b0 (r0, r1);
    0x0006d264 cmp r0, 0                                         |         
    0x0006d268 bne 0x6d1d0                                       |         
                                                                 |     }
                                                                 |     do {
                                                                 | label_8:
    0x0006d26c ldrh r3, [sp, 0x4a]                               |         r3 = var_4ah;
    0x0006d270 ldrh r0, [sp, 0x4c]                               |         r0 = var_4ch;
    0x0006d274 mov r1, 0                                         |         r1 = 0;
    0x0006d278 orr r0, r3, r0, lsl 16                            |         r0 = r3 | (r0 << 16);
    0x0006d27c bl 0x6cbc4                                        |         fcn_0006cbc4 (r0, r1);
    0x0006d280 b 0x6d620                                         |         goto label_46;
                                                                 | label_40:
    0x0006d284 ldrh r1, [sp, 0x42]                               |         r1 = format;
    0x0006d288 ldrh r3, [sp, 0x44]                               |         r3 = var_44h;
    0x0006d28c lsr r0, r1, 5                                     |         r0 = r1 >> 5;
    0x0006d290 lsr r1, r1, 0xb                                   |         r1 >>= 0xb;
    0x0006d294 str r1, [sp, 4]                                   |         var_4h = r1;
    0x0006d298 lsr r1, r3, 9                                     |         r1 = r3 >> 9;
    0x0006d29c add r1, r1, 0x7b0                                 |         r1 += 0x7b0;
    0x0006d2a0 lsr r2, r3, 5                                     |         r2 = r3 >> 5;
    0x0006d2a4 and r0, r0, 0x3f                                  |         r0 &= 0x3f;
    0x0006d2a8 add r1, r1, 0xc                                   |         r1 += 0xc;
    0x0006d2ac str r0, [sp, 8]                                   |         var_8h = r0;
    0x0006d2b0 str r1, [sp]                                      |         *(sp) = r1;
    0x0006d2b4 and r3, r3, 0x1f                                  |         r3 &= 0x1f;
    0x0006d2b8 and r2, r2, 0xf                                   |         r2 &= 0xf;
    0x0006d2bc ldr r1, [pc, 0x5a0]                               |         r1 = "regular_file";
    0x0006d2c0 add r0, sp, 0x58                                  |         r0 += s;
    0x0006d2c4 bl 0x14f48                                        |         sprintf (r0, "regular_file", r2);
    0x0006d2c8 ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x0006d2cc cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0006d2d0 bne 0x6d310                                       |             goto label_47;
                                                                 |         }
    0x0006d2d4 ldrh r1, [sp, 0x50]                               |         r1 = var_50h;
    0x0006d2d8 ldrh r7, [sp, 0x4e]                               |         r7 = var_4eh;
    0x0006d2dc mov r0, r5                                        |         r0 = r5;
    0x0006d2e0 orr r7, r7, r1, lsl 16                            |         r7 |= (r1 << 16);
    0x0006d2e4 bl 0xa14d4                                        |         fcn_000a14d4 (r0);
    0x0006d2e8 add r2, sp, 0x58                                  |         r2 += s;
    0x0006d2ec mov r1, r7                                        |         r1 = r7;
    0x0006d2f0 mov r3, r0                                        |         r3 = r0;
    0x0006d2f4 ldr r0, [pc, 0x56c]                               |         r0 = "%02u-%02u-%04u %02u:%02u";
    0x0006d2f8 bl 0x1436c                                        |         printf ("%02u-%02u-%04u %02u:%02u", r1, r2, r3);
                                                                 | label_6:
    0x0006d2fc ldrh r3, [sp, 0x4e]                               |         r3 = var_4eh;
    0x0006d300 ldrh r2, [sp, 0x50]                               |         r2 = var_50h;
    0x0006d304 orr r3, r3, r2, lsl 16                            |         r3 |= (r2 << 16);
    0x0006d308 add sl, sl, r3                                    |         sl += r3;
    0x0006d30c b 0x6d26c                                         |         
                                                                 |     } while (1);
                                                                 | label_47:
    0x0006d310 ldrh r2, [sp, 0x40]                               |     r2 = var_40h;
    0x0006d314 ldr r1, [pc, 0x550]                               |     r1 = "_9u___s____s";
    0x0006d318 add r0, sp, 0x34                                  |     r0 += dest;
    0x0006d31c bl 0x14f48                                        |     sprintf (r0, "_9u___s____s", r2);
    0x0006d320 ldrh r3, [sp, 0x40]                               |     r3 = var_40h;
    0x0006d324 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0006d328 bne 0x6d3dc                                       |         goto label_48;
                                                                 |     }
    0x0006d32c ldr r1, [pc, 0x53c]                               |     r1 = "_6u";
    0x0006d330 add r0, sp, 0x34                                  |     r0 += dest;
    0x0006d334 bl 0x142f4                                        |     strcpy (r0, "_6u")
                                                                 |     do {
                                                                 | label_7:
    0x0006d338 ldrh r3, [sp, 0x50]                               |         r3 = var_50h;
    0x0006d33c ldrh r7, [sp, 0x4e]                               |         r7 = var_4eh;
    0x0006d340 ldrh r8, [sp, 0x4a]                               |         r8 = var_4ah;
    0x0006d344 orr r7, r7, r3, lsl 16                            |         r7 |= (r3 << 16);
    0x0006d348 ldrh r3, [sp, 0x4c]                               |         r3 = var_4ch;
    0x0006d34c cmp r7, 0                                         |         
    0x0006d350 orr r8, r8, r3, lsl 16                            |         r8 |= (r3 << 16);
    0x0006d354 sub sb, r7, r8                                    |         sb = r7 - r8;
    0x0006d358 bic sb, sb, sb, asr 31                            |         sb = BIT_MASK (sb, sb);
    0x0006d35c mov r3, 0x64                                      |         r3 = 0x64;
    0x0006d360 mul r2, r3, sb                                    |         r2 = r3 * sb;
    0x0006d364 mov sb, r2                                        |         sb = r2;
                                                                 |         if (r7 != 0) {
    0x0006d368 beq 0x6d37c                                       |             
    0x0006d36c mov r1, r7                                        |             r1 = r7;
    0x0006d370 mov r0, r2                                        |             r0 = r2;
    0x0006d374 bl 0xa65d4                                        |             r0 = fcn_000a65d4 (r0, r1);
    0x0006d378 mov sb, r0                                        |             sb = r0;
                                                                 |         }
    0x0006d37c ldrh r2, [sp, 0x48]                               |         r2 = var_48h;
    0x0006d380 ldrh r3, [sp, 0x46]                               |         r3 = var_46h;
    0x0006d384 mov r0, r5                                        |         r0 = r5;
    0x0006d388 orr r3, r3, r2, lsl 16                            |         r3 |= (r2 << 16);
    0x0006d38c str r3, [sp, 0x24]                                |         var_24h = r3;
    0x0006d390 bl 0xa14d4                                        |         fcn_000a14d4 (r0);
    0x0006d394 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x0006d398 add r2, sp, 0x34                                  |         r2 += dest;
    0x0006d39c str r3, [sp, 8]                                   |         var_8h = r3;
    0x0006d3a0 add r3, sp, 0x58                                  |         r3 += s;
    0x0006d3a4 str r3, [sp, 4]                                   |         var_4h = r3;
    0x0006d3a8 str sb, [sp]                                      |         *(sp) = sb;
    0x0006d3ac mov r3, r8                                        |         r3 = r8;
    0x0006d3b0 mov r1, r7                                        |         r1 = r7;
    0x0006d3b4 str r0, [sp, 0xc]                                 |         var_ch = r0;
    0x0006d3b8 ldr r0, [pc, 0x4b4]                               |         r0 = "Stored";
    0x0006d3bc bl 0x1436c                                        |         printf (r0, r1, r2, r3);
    0x0006d3c0 ldrh r2, [sp, 0x4c]                               |         r2 = var_4ch;
    0x0006d3c4 ldrh r3, [sp, 0x4a]                               |         r3 = var_4ah;
    0x0006d3c8 orr r3, r3, r2, lsl 16                            |         r3 |= (r2 << 16);
    0x0006d3cc ldr r2, [sp, 0x20]                                |         r2 = var_20h;
    0x0006d3d0 add r3, r2, r3                                    |         r3 = r2 + r3;
    0x0006d3d4 str r3, [sp, 0x20]                                |         var_20h = r3;
    0x0006d3d8 b 0x6d2fc                                         |         goto label_6;
                                                                 | label_48:
    0x0006d3dc cmp r3, 8                                         |         
    0x0006d3e0 bne 0x6d338                                       |         
                                                                 |     } while (r3 != 8);
    0x0006d3e4 ldr r1, [pc, 0x48c]                               |     r1 = "_8u___s_9u_4u____s__08x___s";
    0x0006d3e8 add r0, sp, 0x34                                  |     r0 += dest;
    0x0006d3ec bl 0x142f4                                        |     strcpy (r0, "_8u___s_9u_4u____s__08x___s")
    0x0006d3f0 ldrh r3, [sp, 0x3e]                               |     r3 = var_3eh;
    0x0006d3f4 ldr r2, [pc, 0x480]                               |     r2 = "Defl:N";
    0x0006d3f8 lsl r3, r3, 0xf                                   |     r3 <<= 0xf;
    0x0006d3fc and r3, r3, 0x30000                               |     r3 &= 0x30000;
    0x0006d400 ldrb r3, [r2, r3, lsr 16]                         |     offset_0 = r3 >> 16;
                                                                 |     r3 = *((r2 + offset_0));
    0x0006d404 strb r3, [sp, 0x39]                               |     var_39h = r3;
    0x0006d408 b 0x6d338                                         |     goto label_7;
                                                                 | label_42:
    0x0006d40c mov r0, r5                                        |     r0 = r5;
    0x0006d410 bl 0x6cb40                                        |     r0 = fcn_0006cb40 (r0);
    0x0006d414 cmn r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x0006d418 bne 0x6d460                                       |         goto label_49;
                                                                 |     }
    0x0006d41c ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x0006d420 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0006d424 bne 0x6d43c                                       |         
    0x0006d428 mov r0, r5                                        |         r0 = r5;
    0x0006d42c bl 0xa14d4                                        |         r0 = fcn_000a14d4 (r0);
    0x0006d430 mov r1, r0                                        |         r1 = r0;
    0x0006d434 ldr r0, [pc, 0x444]                               |         r0 = "NXFS";
    0x0006d438 bl 0x1436c                                        |         printf ("NXFS", r1);
                                                                 |     }
    0x0006d43c mov r0, r5                                        |     r0 = r5;
    0x0006d440 bl 0x6cb90                                        |     fcn_0006cb90 (r0);
    0x0006d444 mov r2, 0x80000000                                |     r2 = 0x80000000;
    0x0006d448 mov r1, r8                                        |     r1 = r8;
    0x0006d44c mov r0, r5                                        |     r0 = r5;
    0x0006d450 bl 0xa0518                                        |     r0 = fcn_000a0518 (r0, r1, r2);
    0x0006d454 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0006d458 beq 0x6d26c                                       |         goto label_8;
                                                                 |     }
    0x0006d45c bl 0x182a0                                        |     r0 = fcn_000182a0 ();
                                                                 | label_49:
    0x0006d460 and r0, r0, 0xf000                                |     r0 &= 0xf000;
    0x0006d464 cmp r0, 0x4000                                    |     
                                                                 |     if (r0 == 0x4000) {
    0x0006d468 beq 0x6d26c                                       |         goto label_8;
                                                                 |     }
    0x0006d46c mov r0, r5                                        |     r0 = r5;
    0x0006d470 bl 0xa14d4                                        |     fcn_000a14d4 (r0);
    0x0006d474 ldr r2, [pc, 0x408]                               |     r2 = "   creating: %s\n";
                                                                 | label_45:
    0x0006d478 mov r1, r0                                        |     r1 = r0;
    0x0006d47c ldr r0, [pc, 0x404]                               |     r0 = *(0x6d884);
    0x0006d480 bl 0x18254                                        |     fcn_00018254 ();
                                                                 | label_44:
    0x0006d484 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0006d488 cmp r3, 2                                         |     
                                                                 |     if (r3 == 2) {
    0x0006d48c beq 0x6d4fc                                       |         goto label_43;
                                                                 |     }
    0x0006d490 mov r0, r5                                        |     r0 = r5;
    0x0006d494 bl 0xa14d4                                        |     r0 = fcn_000a14d4 (r0);
    0x0006d498 mov r1, r0                                        |     r1 = r0;
    0x0006d49c mov r0, sb                                        |     r0 = sb;
    0x0006d4a0 bl 0x1436c                                        |     printf (r0, r1);
    0x0006d4a4 add r0, sp, 0x90                                  |     r0 += var_90h;
    0x0006d4a8 bl 0x6cc28                                        |     fcn_0006cc28 (r0);
    0x0006d4ac mov r0, r5                                        |     r0 = r5;
    0x0006d4b0 bl 0x6cb40                                        |     r0 = fcn_0006cb40 (r0);
    0x0006d4b4 and r0, r0, 0xf000                                |     r0 &= 0xf000;
    0x0006d4b8 cmp r0, 0x8000                                    |     
                                                                 |     if (r0 != 0x8000) {
    0x0006d4bc bne 0x6d24c                                       |         goto label_9;
                                                                 |     }
    0x0006d4c0 ldrb r1, [sp, 0x90]                               |     r1 = var_90h;
    0x0006d4c4 cmp r1, 0x6e                                      |     
                                                                 |     if (r1 == 0x6e) {
    0x0006d4c8 beq 0x6d26c                                       |         goto label_8;
                                                                 |     }
                                                                 |     if (r1 > 0x6e) {
    0x0006d4cc bhi 0x6d4ec                                       |         goto label_50;
                                                                 |     }
    0x0006d4d0 cmp r1, 0x41                                      |     
                                                                 |     if (r1 == 0x41) {
    0x0006d4d4 beq 0x6d580                                       |         goto label_51;
                                                                 |     }
    0x0006d4d8 cmp r1, 0x4e                                      |     
                                                                 |     if (r1 == 0x4e) {
    0x0006d4dc beq 0x6d574                                       |         goto label_52;
                                                                 |     }
                                                                 |     do {
    0x0006d4e0 ldr r0, [pc, 0x3a4]                               |         r0 = "__s_exists_but_is_not_a__s";
    0x0006d4e4 bl 0x1436c                                        |         printf ("__s_exists_but_is_not_a__s");
    0x0006d4e8 b 0x6d224                                         |         goto label_10;
                                                                 | label_50:
    0x0006d4ec cmp r1, 0x72                                      |         
                                                                 |         if (r1 == 0x72) {
    0x0006d4f0 beq 0x6d72c                                       |             goto label_53;
                                                                 |         }
    0x0006d4f4 cmp r1, 0x79                                      |         
    0x0006d4f8 bne 0x6d4e0                                       |         
                                                                 |     } while (r1 != 0x79);
                                                                 |     do {
                                                                 | label_43:
    0x0006d4fc mov r0, r5                                        |         r0 = r5;
    0x0006d500 bl 0x6cb90                                        |         fcn_0006cb90 (r0);
    0x0006d504 and r3, r7, 0xf000                                |         r3 = r7 & 0xf000;
    0x0006d508 cmp r3, 0xa000                                    |         
                                                                 |         if (r3 == 0xa000) {
    0x0006d50c beq 0x6d7fc                                       |             goto label_54;
                                                                 |         }
    0x0006d510 mov r2, r7                                        |         r2 = r7;
    0x0006d514 ldr r1, [pc, 0x374]                               |         r1 = "error: invalid response [%c]\n";
    0x0006d518 mov r0, r5                                        |         r0 = r5;
    0x0006d51c bl 0x18a90                                        |         fcn_00018a90 (r0);
    0x0006d520 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x0006d524 cmp r3, 0                                         |         
    0x0006d528 mov r6, r0                                        |         r6 = r0;
                                                                 |         if (r3 == 0) {
    0x0006d52c beq 0x6d598                                       |             goto label_17;
                                                                 |         }
                                                                 | label_11:
    0x0006d530 ldrh r3, [sp, 0x40]                               |         r3 = var_40h;
    0x0006d534 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0006d538 bne 0x6d638                                       |             goto label_55;
                                                                 |         }
    0x0006d53c ldrh r3, [sp, 0x50]                               |         r3 = var_50h;
    0x0006d540 ldrh r2, [sp, 0x4e]                               |         r2 = var_4eh;
    0x0006d544 orr r2, r2, r3, lsl 16                            |         r2 |= (r3 << 16);
    0x0006d548 mov r3, 0                                         |         r3 = 0;
    0x0006d54c orrs r1, r2, r3                                   |         r1 = r2 | r3;
                                                                 |         if (r1 != r2) {
    0x0006d550 beq 0x6d560                                       |             
    0x0006d554 mov r1, r6                                        |             r1 = r6;
    0x0006d558 mov r0, 3                                         |             r0 = 3;
    0x0006d55c bl 0x195d0                                        |             fcn_000195d0 (r0, r1);
                                                                 |         }
                                                                 | label_15:
    0x0006d560 cmp r6, 1                                         |         
                                                                 |         if (r6 == 1) {
    0x0006d564 beq 0x6d620                                       |             goto label_46;
                                                                 |         }
    0x0006d568 mov r0, r6                                        |         r0 = r6;
    0x0006d56c bl 0x15260                                        |         close (r0);
    0x0006d570 b 0x6d620                                         |         goto label_46;
                                                                 | label_52:
    0x0006d574 mov r3, 1                                         |         r3 = 1;
    0x0006d578 str r3, [sp, 0x10]                                |         var_10h = r3;
    0x0006d57c b 0x6d26c                                         |         goto label_8;
                                                                 | label_51:
    0x0006d580 mov r3, 2                                         |         r3 = 2;
    0x0006d584 str r3, [sp, 0x10]                                |         var_10h = r3;
    0x0006d588 b 0x6d4fc                                         |         
                                                                 |     } while (1);
                                                                 | label_41:
    0x0006d58c ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x0006d590 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0006d594 bne 0x6d5ac                                       |         
                                                                 | label_17:
    0x0006d598 mov r0, r5                                        |         r0 = r5;
    0x0006d59c bl 0xa14d4                                        |         r0 = fcn_000a14d4 (r0);
    0x0006d5a0 mov r1, r0                                        |         r1 = r0;
    0x0006d5a4 ldr r0, [pc, 0x2e8]                               |         r0 = *(0x6d890);
    0x0006d5a8 bl 0x1436c                                        |         printf (r0, r1);
                                                                 |     }
    0x0006d5ac and r7, r7, 0xf000                                |     r7 &= 0xf000;
    0x0006d5b0 cmp r7, 0xa000                                    |     
                                                                 |     if (r7 != 0xa000) {
    0x0006d5b4 bne 0x6d530                                       |         goto label_11;
                                                                 |     }
    0x0006d5b8 cmp r6, 1                                         |     
                                                                 |     if (r6 == 1) {
    0x0006d5bc beq 0x6d620                                       |         goto label_46;
                                                                 |     }
                                                                 | label_18:
    0x0006d5c0 ldrh r0, [sp, 0x4e]                               |     r0 = var_4eh;
    0x0006d5c4 ldrh r3, [sp, 0x50]                               |     r3 = var_50h;
    0x0006d5c8 orr r0, r0, r3, lsl 16                            |     r0 |= (r3 << 16);
    0x0006d5cc cmp r0, 0x1000                                    |     
                                                                 |     if (r0 >= 0x1000) {
    0x0006d5d0 bhs 0x6d16c                                       |         goto label_12;
                                                                 |     }
    0x0006d5d4 ldrh r8, [sp, 0x40]                               |     r8 = var_40h;
    0x0006d5d8 cmp r8, 0                                         |     
                                                                 |     if (r8 == 0) {
    0x0006d5dc bne 0x6d630                                       |         
    0x0006d5e0 add r0, r0, 1                                     |         r0++;
    0x0006d5e4 bl 0x189b8                                        |         fcn_000189b8 (r0);
    0x0006d5e8 ldrh r3, [sp, 0x4e]                               |         r3 = var_4eh;
    0x0006d5ec ldrh r2, [sp, 0x50]                               |         r2 = var_50h;
    0x0006d5f0 orr r2, r3, r2, lsl 16                            |         r2 = r3 | (r2 << 16);
    0x0006d5f4 mov r7, r0                                        |         r7 = r0;
    0x0006d5f8 mov r1, r0                                        |         r1 = r0;
    0x0006d5fc mov r0, 3                                         |         r0 = 3;
    0x0006d600 bl 0xa3804                                        |         fcn_000a3804 (r0, r1);
    0x0006d604 add r0, sp, 0x30                                  |         r0 += var_30h;
    0x0006d608 mov r3, r8                                        |         r3 = r8;
    0x0006d60c mov r2, r5                                        |         r2 = r5;
    0x0006d610 mov r1, r7                                        |         r1 = r7;
    0x0006d614 bl 0x74728                                        |         fcn_00074728 (r0, r1);
    0x0006d618 mov r0, r7                                        |         r0 = r7;
    0x0006d61c bl 0x152a8                                        |         free (r0);
                                                                 | label_46:
    0x0006d620 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x0006d624 add r3, r3, 1                                     |         r3++;
    0x0006d628 str r3, [sp, 0x1c]                                |         var_1ch = r3;
    0x0006d62c b 0x6cdf4                                         |         goto label_13;
                                                                 |     }
    0x0006d630 ldr r0, [pc, 0x260]                               |     r0 = "  inflating: %s\n";
    0x0006d634 b 0x6d170                                         |     goto label_14;
                                                                 | label_55:
    0x0006d638 add r0, sp, 0x58                                  |     r0 += s;
    0x0006d63c bl 0x74474                                        |     fcn_00074474 ();
    0x0006d640 ldrh r3, [sp, 0x4a]                               |     r3 = var_4ah;
    0x0006d644 ldrh r2, [sp, 0x4c]                               |     r2 = var_4ch;
    0x0006d648 ldrh r1, [sp, 0x40]                               |     r1 = var_40h;
    0x0006d64c orr r3, r3, r2, lsl 16                            |     r3 |= (r2 << 16);
    0x0006d650 str r3, [sp, 0x80]                                |     var_80h = r3;
    0x0006d654 mov r3, 0                                         |     r3 = 0;
    0x0006d658 str r3, [sp, 0x84]                                |     var_84h = r3;
    0x0006d65c cmp r1, 8                                         |     
    0x0006d660 mov r3, 3                                         |     r3 = 3;
    0x0006d664 str r3, [sp, 0x60]                                |     var_60h = r3;
    0x0006d668 str r6, [sp, 0x64]                                |     var_64h = r6;
                                                                 |     if (r1 != 8) {
    0x0006d66c bne 0x6d6b0                                       |         goto label_56;
                                                                 |     }
    0x0006d670 add r0, sp, 0x58                                  |     r0 += s;
    0x0006d674 bl 0x6fe04                                        |     r0 = fcn_0006fe04 (r0);
    0x0006d678 cmp r0, 0                                         |     
    0x0006d67c sbcs r3, r1, 0                                    |     __asm ("sbcs r3, r1, 0");
    0x0006d680 bge 0x6d68c                                       |     
                                                                 |     while (r0 < 0) {
    0x0006d684 ldr r0, [pc, 0x210]                               |         r0 = "compressed_symlink_is_not_supported";
    0x0006d688 b 0x6d170                                         |         goto label_14;
    0x0006d68c ldrh r3, [sp, 0x48]                               |         r3 = var_48h;
    0x0006d690 ldrh r2, [sp, 0x46]                               |         r2 = var_46h;
    0x0006d694 orr r2, r2, r3, lsl 16                            |         r2 |= (r3 << 16);
    0x0006d698 ldr r3, [sp, 0x88]                                |         r3 = var_88h;
    0x0006d69c mvn r3, r3                                        |         r3 = ~r3;
    0x0006d6a0 cmp r2, r3                                        |         
                                                                 |         if (r2 == r3) {
    0x0006d6a4 beq 0x6d6d0                                       |             goto label_57;
                                                                 |         }
    0x0006d6a8 ldr r0, [pc, 0x1f0]                               |         r0 = "inflate_error";
    0x0006d6ac b 0x6d170                                         |         goto label_14;
                                                                 | label_56:
    0x0006d6b0 cmp r1, 0xc                                       |         
                                                                 |         if (r1 != 0xc) {
    0x0006d6b4 bne 0x6d6fc                                       |             goto label_58;
                                                                 |         }
    0x0006d6b8 add r0, sp, 0x58                                  |         r0 += s;
    0x0006d6bc bl 0x6e858                                        |         r0 = fcn_0006e858 (r0);
                                                                 | label_16:
    0x0006d6c0 cmp r0, 0                                         |         
    0x0006d6c4 sbcs r3, r1, 0                                    |         __asm ("sbcs r3, r1, 0");
    0x0006d6c8 strd r0, r1, [sp, 0x78]                           |         __asm ("strd r0, r1, [var_7ch]");
    0x0006d6cc blt 0x6d684                                       |         
                                                                 |     }
                                                                 | label_57:
    0x0006d6d0 ldrh r3, [sp, 0x50]                               |     r3 = var_50h;
    0x0006d6d4 ldrh r0, [sp, 0x4e]                               |     r0 = var_4eh;
    0x0006d6d8 mov r1, 0                                         |     r1 = 0;
    0x0006d6dc orr r0, r0, r3, lsl 16                            |     r0 |= (r3 << 16);
    0x0006d6e0 ldrd r2, r3, [sp, 0x78]                           |     __asm ("ldrd r2, r3, [var_7ch]");
    0x0006d6e4 cmp r1, r3                                        |     
    0x0006d6e8 cmpeq r0, r2                                      |     __asm ("cmpeq r0, r2");
                                                                 |     if (r1 == r3) {
    0x0006d6ec beq 0x6d560                                       |         goto label_15;
                                                                 |     }
    0x0006d6f0 ldr r0, [pc, 0x1ac]                               |     r0 = "crc_error";
    0x0006d6f4 bl 0x18274                                        |     fcn_00018274 ();
    0x0006d6f8 b 0x6d560                                         |     goto label_15;
                                                                 | label_58:
    0x0006d6fc cmp r1, 0xe                                       |     
                                                                 |     if (r1 == 0xe) {
    0x0006d700 bne 0x6d710                                       |         
    0x0006d704 add r0, sp, 0x58                                  |         r0 += s;
    0x0006d708 bl 0x70238                                        |         fcn_00070238 (r0, r1);
    0x0006d70c b 0x6d6c0                                         |         goto label_16;
                                                                 |     }
    0x0006d710 cmp r1, 0x5f                                      |     
                                                                 |     if (r1 == 0x5f) {
    0x0006d714 bne 0x6d724                                       |         
    0x0006d718 add r0, sp, 0x58                                  |         r0 += s;
    0x0006d71c bl 0x71e0c                                        |         fcn_00071e0c (r0, r1);
    0x0006d720 b 0x6d6c0                                         |         goto label_16;
                                                                 |     }
    0x0006d724 ldr r0, [pc, 0x17c]                               |     r0 = "bad_length";
    0x0006d728 b 0x6cf78                                         |     goto label_5;
                                                                 | label_53:
    0x0006d72c mov r0, r8                                        |     r0 = r8;
    0x0006d730 bl 0x1436c                                        |     printf (r0);
    0x0006d734 add r0, sp, 0x90                                  |     r0 += var_90h;
    0x0006d738 bl 0x6cc28                                        |     fcn_0006cc28 (r0);
    0x0006d73c mov r0, r5                                        |     r0 = r5;
    0x0006d740 bl 0x152a8                                        |     free (r0);
    0x0006d744 add r0, sp, 0x90                                  |     r0 += var_90h;
    0x0006d748 bl 0x189d4                                        |     r0 = fcn_000189d4 (r0);
    0x0006d74c mov r5, r0                                        |     r5 = r0;
    0x0006d750 bl 0x98be4                                        |     fcn_00098be4 (r0);
    0x0006d754 b 0x6d224                                         |     goto label_10;
                                                                 | label_24:
    0x0006d758 ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x0006d75c bl 0x747cc                                        |     fcn_000747cc (r0);
    0x0006d760 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x0006d764 cmp r3, 1                                         |     
                                                                 |     if (r3 <= 1) {
    0x0006d768 movgt r4, 0                                       |         r4 = 0;
                                                                 |     }
                                                                 |     if (r3 > 1) {
    0x0006d76c andle r4, r4, 1                                   |         r4 &= 1;
                                                                 |     }
    0x0006d770 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0006d774 beq 0x6d7a0                                       |         goto label_59;
                                                                 |     }
    0x0006d778 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0006d77c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0006d780 bne 0x6d7ac                                       |         goto label_60;
                                                                 |     }
    0x0006d784 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0006d788 mov r2, sl                                        |     r2 = sl;
    0x0006d78c str r3, [sp]                                      |     *(sp) = r3;
    0x0006d790 ldr r3, [pc, 0x114]                               |     r3 = "unsupported_method__u";
    0x0006d794 ldr r0, [pc, 0x114]                               |     r0 = *(0x6d8ac);
    0x0006d798 mov r1, r3                                        |     r1 = r3;
    0x0006d79c bl 0x1436c                                        |     printf (r0, r1, r2, r3);
                                                                 |     do {
                                                                 | label_59:
    0x0006d7a0 mov r0, 0                                         |         r0 = 0;
    0x0006d7a4 add sp, sp, 0xe4                                  |         
    0x0006d7a8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_60:
    0x0006d7ac ldr r3, [sp, 0x20]                                |         r3 = var_20h;
    0x0006d7b0 cmp sl, 0                                         |         
    0x0006d7b4 sub r0, sl, r3                                    |         r0 = sl - r3;
    0x0006d7b8 bic r0, r0, r0, asr 31                            |         r0 = BIT_MASK (r0, r0);
    0x0006d7bc mov r3, 0x64                                      |         r3 = 0x64;
    0x0006d7c0 mul r2, r3, r0                                    |         r2 = r3 * r0;
                                                                 |         if (sl != 0) {
    0x0006d7c4 beq 0x6d7d8                                       |             
    0x0006d7c8 mov r0, r2                                        |             r0 = r2;
    0x0006d7cc mov r1, sl                                        |             r1 = sl;
    0x0006d7d0 bl 0xa65d4                                        |             r0 = fcn_000a65d4 (r0, r1);
    0x0006d7d4 mov r2, r0                                        |             r2 = r0;
                                                                 |         }
    0x0006d7d8 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x0006d7dc ldr r1, [pc, 0xc8]                                |         r1 = "unsupported_method__u";
    0x0006d7e0 str r2, [sp]                                      |         *(sp) = r2;
    0x0006d7e4 stmib sp, {r1, r3}                                |         __asm ("stmib sp, {r1, r3}");
    0x0006d7e8 ldr r0, [pc, 0xc4]                                |         r0 = " --------%21s-------\n%9lu%21s%u files\n";
    0x0006d7ec ldr r3, [sp, 0x20]                                |         r3 = var_20h;
    0x0006d7f0 mov r2, sl                                        |         r2 = sl;
    0x0006d7f4 bl 0x1436c                                        |         printf (" --------%21s-------\n%9lu%21s%u files\n", "unsupported_method__u", r2, r3);
    0x0006d7f8 b 0x6d7a0                                         |         
                                                                 |     } while (1);
                                                                 | label_54:
    0x0006d7fc ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x0006d800 mvn r6, 0                                         |     r6 = ~0;
    0x0006d804 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0006d808 beq 0x6d598                                       |         goto label_17;
                                                                 |     }
    0x0006d80c b 0x6d5c0                                         |     goto label_18;
                                                                 | }
    ; 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 @ 0x71e0c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00071e0c ()                                  | void fcn_00071e0c (int32_t arg_0h, char * arg1) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_0h_2;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_8h_2;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_10h_2;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     void * s;
                                                             |     int32_t var_0h_3;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_28h;
                                                             |     int32_t var_2ch;
                                                             |     int32_t var_30h;
                                                             |     int32_t var_34h;
                                                             |     int32_t var_3ch;
                                                             |     r0 = arg1;
    0x00071e0c ldr r3, [pc, 0xa14]                           |     
    0x00071e10 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00071e14 ldr r3, [r3]                                  |     r3 = *(0x72824);
    0x00071e18 sub sp, sp, 0x3c                              |     
    0x00071e1c cmp r3, 0                                     |     
    0x00071e20 mov r8, r0                                    |     r8 = r0;
                                                             |     if (r3 == 0) {
    0x00071e24 bne 0x71e2c                                   |         
    0x00071e28 bl 0x99530                                    |         fcn_00099530 ();
                                                             |     }
    0x00071e2c mov r2, 0x18                                  |     r2 = 0x18;
    0x00071e30 mov r1, 0                                     |     r1 = 0;
    0x00071e34 add r0, sp, 0x20                              |     r0 += s;
    0x00071e38 bl 0x14d98                                    |     memset (r0, r1, r2);
    0x00071e3c mov r0, 0x2000                                |     r0 = 0x2000;
    0x00071e40 bl 0x18968                                    |     fcn_00018968 (r0);
    0x00071e44 cmp r8, 0                                     |     
    0x00071e48 add r3, r0, 0x1000                            |     r3 = r0 + 0x1000;
    0x00071e4c str r3, [sp, 0x2c]                            |     var_2ch = r3;
    0x00071e50 mov r3, 0x1000                                |     r3 = 0x1000;
    0x00071e54 mov r6, r0                                    |     r6 = r0;
    0x00071e58 str r0, [sp, 0x20]                            |     s = r0;
    0x00071e5c str r3, [sp, 0x34]                            |     var_34h = r3;
                                                             |     if (r8 != 0) {
    0x00071e60 beq 0x71e70                                   |         
    0x00071e64 ldr r3, [r8]                                  |         r3 = *(r8);
    0x00071e68 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00071e6c beq 0x71e84                                   |             goto label_19;
                                                             |         }
                                                             |     }
    0x00071e70 ldr r1, [pc, 0x9b4]                           |     r1 = *(0x72828);
    0x00071e74 mov r0, r6                                    |     r0 = r6;
    0x00071e78 bl 0x142f4                                    |     strcpy (r0, r1)
    0x00071e7c mov r3, 6                                     |     r3 = 6;
    0x00071e80 str r3, [sp, 0x28]                            |     var_28h = r3;
                                                             | label_19:
    0x00071e84 mov r0, 0x4b0                                 |     r0 = 0x4b0;
    0x00071e88 bl 0x146d8                                    |     r0 = malloc (r0);
    0x00071e8c subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 == r0) {
    0x00071e90 beq 0x71ebc                                   |         goto label_20;
                                                             |     }
    0x00071e94 mov r7, 2                                     |     r7 = 2;
    0x00071e98 str r7, [r4, 0x20]                            |     *((r4 + 0x20)) = r7;
    0x00071e9c ldr r0, [pc, 0x98c]                           |     r0 = *(0x7282c);
    0x00071ea0 bl 0x146d8                                    |     malloc (r0);
    0x00071ea4 mov r3, 0                                     |     r3 = 0;
    0x00071ea8 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 != r0) {
    0x00071eac bne 0x71f28                                   |         goto label_21;
                                                             |     }
    0x00071eb0 mov r0, r4                                    |     r0 = r4;
    0x00071eb4 bl 0x152a8                                    |     free (r0);
    0x00071eb8 mov r4, r5                                    |     r4 = r5;
                                                             |     do {
                                                             | label_20:
    0x00071ebc ldr sb, [pc, 0x970]                           |         sb = *(0x72830);
    0x00071ec0 mov r2, 0                                     |         r2 = 0;
    0x00071ec4 mov r3, 0                                     |         r3 = 0;
    0x00071ec8 mov r7, 1                                     |         r7 = 1;
    0x00071ecc strd r2, r3, [sp]                             |         __asm ("strd r2, r3, [sp]");
                                                             | label_12:
    0x00071ed0 ldr r2, [sp, 0x24]                            |         r2 = var_24h;
    0x00071ed4 ldr r3, [sp, 0x28]                            |         r3 = var_28h;
    0x00071ed8 cmp r2, r3                                    |         
                                                             |         if (r2 != r3) {
    0x00071edc bne 0x71f70                                   |             goto label_22;
                                                             |         }
    0x00071ee0 mov r2, 0x1000                                |         r2 = 0x1000;
    0x00071ee4 mov r1, r6                                    |         r1 = r6;
    0x00071ee8 ldr r0, [r8, 8]                               |         r0 = *((r8 + 8));
    0x00071eec bl 0x19684                                    |         r0 = fcn_00019684 (r0, r1);
    0x00071ef0 cmp r0, 0                                     |         
                                                             |         if (r0 >= 0) {
    0x00071ef4 bge 0x71f4c                                   |             goto label_23;
                                                             |         }
    0x00071ef8 ldr r0, [pc, 0x938]                           |         r0 = *(0x72834);
    0x00071efc bl 0x18274                                    |         fcn_00018274 ();
    0x00071f00 mvn r2, 0                                     |         r2 = ~0;
    0x00071f04 mvn r3, 0                                     |         r3 = ~0;
    0x00071f08 strd r2, r3, [sp]                             |         __asm ("strd r2, r3, [sp]");
                                                             | label_0:
    0x00071f0c cmp r4, 0                                     |         
                                                             |         if (r4 != 0) {
    0x00071f10 bne 0x725f4                                   |             goto label_24;
                                                             |         }
                                                             | label_13:
    0x00071f14 mov r0, r6                                    |         r0 = r6;
    0x00071f18 bl 0x152a8                                    |         free (r0);
    0x00071f1c ldrd r0, r1, [sp]                             |         __asm ("ldrd r0, r1, [sp]");
    0x00071f20 add sp, sp, 0x3c                              |         
    0x00071f24 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_21:
    0x00071f28 mov r2, 0x4000000                             |         r2 = 0x4000000;
    0x00071f2c str r7, [r5, 0x3c]                            |         *((r5 + 0x3c)) = r7;
    0x00071f30 str r2, [r5, 0x34]                            |         *((r5 + 0x34)) = r2;
    0x00071f34 str r3, [r5, 0x18]                            |         *((r5 + 0x18)) = r3;
    0x00071f38 str r3, [r5, 0x38]                            |         *((r5 + 0x38)) = r3;
    0x00071f3c str r5, [r4, 0x4a8]                           |         *((r4 + 0x4a8)) = r5;
    0x00071f40 mov r0, r4                                    |         r0 = r4;
    0x00071f44 bl 0x715f4                                    |         fcn_000715f4 (r0);
    0x00071f48 b 0x71ebc                                     |         
                                                             |     } while (1);
                                                             |     if (r4 != 0) {
                                                             | label_23:
    0x00071f4c moveq r3, 1                                   |         r3 = 1;
                                                             |     }
                                                             |     if (r4 == 0) {
    0x00071f50 movne r3, 0                                   |         r3 = 0;
                                                             |     }
    0x00071f54 cmp r7, 1                                     |     
                                                             |     if (r7 == 1) {
    0x00071f58 movne r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r7 != 1) {
    0x00071f5c andeq r3, r3, 1                               |         r3 &= 1;
                                                             |     }
    0x00071f60 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00071f64 bne 0x71f0c                                   |         goto label_0;
                                                             |     }
    0x00071f68 str r0, [sp, 0x28]                            |     var_28h = r0;
    0x00071f6c str r3, [sp, 0x24]                            |     var_24h = r3;
                                                             | label_22:
    0x00071f70 cmp r7, 1                                     |     
    0x00071f74 ldr r3, [sp, 0x24]                            |     r3 = var_24h;
                                                             |     if (r7 == 1) {
    0x00071f78 bne 0x71fa0                                   |         
    0x00071f7c ldr r1, [sp, 0x28]                            |         r1 = var_28h;
    0x00071f80 mov r2, 0                                     |         r2 = 0;
                                                             | label_1:
    0x00071f84 ldrb r0, [r6, r3]                             |         r0 = *((r6 + r3));
    0x00071f88 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00071f8c beq 0x71ff4                                   |             goto label_25;
                                                             |         }
    0x00071f90 cmp r2, 0                                     |         
    0x00071f94 mov r0, r4                                    |         r0 = r4;
                                                             |         if (r2 == 0) {
    0x00071f98 strne r3, [sp, 0x24]                          |             var_24h = r3;
                                                             |         }
    0x00071f9c bl 0x715f4                                    |         fcn_000715f4 (r0);
                                                             |     }
                                                             | label_2:
    0x00071fa0 ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x00071fa4 mov r5, 1                                     |     r5 = 1;
    0x00071fa8 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00071fac ldr r3, [sp, 0x30]                            |     r3 = var_30h;
    0x00071fb0 str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x00071fb4 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x00071fb8 str r3, [r4, 0x10]                            |     *((r4 + 0x10)) = r3;
                                                             | label_4:
    0x00071fbc ldr r3, [r4]                                  |     r3 = *(r4);
                                                             |     do {
    0x00071fc0 cmp r3, 9                                     |         
                                                             |         if (r3 > 9) {
                                                             |             /* switch table (10 cases) at 0x71fcc */
    0x00071fc4 ldrls pc, [pc, r3, lsl 2]                     |             offset_0 = r3 << 2;
                                                             |             pc = *((pc + offset_0));
                                                             |         }
    0x00071fc8 b 0x71fc0                                     |         
                                                             |     } while (1);
                                                             | label_25:
    0x00071ff4 add r3, r3, 1                                 |     r3++;
    0x00071ff8 cmp r3, r1                                    |     
    0x00071ffc mov r2, 1                                     |     r2 = 1;
                                                             |     if (r3 <= r1) {
    0x00072000 blo 0x71f84                                   |         goto label_1;
                                                             |     }
    0x00072004 str r3, [sp, 0x24]                            |     var_24h = r3;
    0x00072008 b 0x71fa0                                     |     goto label_2;
    0x0007200c mov r5, 2                                     |     r5 = 2;
                                                             | label_15:
    0x00072010 ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x00072014 add r2, sp, 0x24                              |     r2 += var_24h;
    0x00072018 ldr r1, [sp, 0x20]                            |     r1 = s;
    0x0007201c mov r0, r4                                    |     r0 = r4;
    0x00072020 bl 0x714d0                                    |     r0 = fcn_000714d0 (r0, r1);
    0x00072024 cmp r0, 1                                     |     
    0x00072028 mov r7, r0                                    |     r7 = r0;
                                                             |     if (r0 == 1) {
    0x0007202c beq 0x72628                                   |         goto label_26;
                                                             |     }
    0x00072030 add r1, sp, 0x20                              |     r1 += s;
    0x00072034 mov r0, r4                                    |     r0 = r4;
    0x00072038 bl 0x71670                                    |     fcn_00071670 (r0, r1);
                                                             | label_9:
    0x0007203c cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00072040 bne 0x72094                                   |         goto label_6;
                                                             |     }
    0x00072044 b 0x72564                                     |     goto label_17;
    0x00072048 add r1, sp, 0x20                              |     r1 += s;
    0x0007204c mov r0, r4                                    |     r0 = r4;
    0x00072050 bl 0x716b0                                    |     r0 = fcn_000716b0 (r0, r1);
    0x00072054 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00072058 beq 0x72564                                   |         goto label_17;
                                                             |     }
    0x0007205c mov r0, r4                                    |     r0 = r4;
    0x00072060 mov r2, 6                                     |     r2 = 6;
    0x00072064 str r5, [r0], 0xa8                            |     *(r0) = r5;
                                                             |     r0 += 0xa8;
    0x00072068 ldr r1, [pc, 0x7bc]                           |     r1 = *(0x72828);
    0x0007206c bl 0x14c60                                    |     r0 = memcmp (r0, r1, r2);
    0x00072070 subs r2, r0, 0                                |     r2 = r0 - 0;
                                                             |     if (r2 != r0) {
    0x00072074 bne 0x72808                                   |         goto label_27;
                                                             |     }
    0x00072078 mov r1, 2                                     |     r1 = 2;
    0x0007207c add r0, r4, 0xae                              |     r0 = r4 + 0xae;
    0x00072080 bl 0x71644                                    |     fcn_00071644 (r0, r1);
    0x00072084 ldr r3, [r4, 0xb0]                            |     r3 = *((r4 + 0xb0));
    0x00072088 cmp r0, r3                                    |     
                                                             |     if (r0 == r3) {
    0x0007208c beq 0x7209c                                   |         goto label_28;
                                                             |     }
                                                             | label_5:
    0x00072090 mov r7, 7                                     |     r7 = 7;
                                                             |     do {
                                                             | label_6:
    0x00072094 mov r3, 0                                     |         r3 = 0;
    0x00072098 b 0x72598                                     |         goto label_29;
                                                             | label_28:
    0x0007209c ldrb r3, [r4, 0xae]                           |         r3 = *((r4 + 0xae));
    0x000720a0 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x000720a4 beq 0x720b0                                   |             goto label_30;
                                                             |         }
                                                             | label_3:
    0x000720a8 mov r7, 6                                     |         r7 = 6;
    0x000720ac b 0x72094                                     |         
                                                             |     } while (1);
                                                             | label_30:
    0x000720b0 ldrb r3, [r4, 0xaf]                           |     r3 = *((r4 + 0xaf));
    0x000720b4 cmp r3, 0xf                                   |     
    0x000720b8 str r3, [r4, 0x1c]                            |     *((r4 + 0x1c)) = r3;
                                                             |     if (r3 > 0xf) {
    0x000720bc bhi 0x720a8                                   |         goto label_3;
                                                             |     }
    0x000720c0 cmp r3, 1                                     |     
                                                             |     if (r3 > 1) {
    0x000720c4 bhi 0x72810                                   |         goto label_31;
                                                             |     }
    0x000720c8 ldr r2, [sp, 0x24]                            |     r2 = var_24h;
    0x000720cc ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x000720d0 cmp r2, r3                                    |     
                                                             |     if (r2 == r3) {
    0x000720d4 beq 0x72564                                   |         goto label_17;
                                                             |     }
    0x000720d8 ldr r3, [sp, 0x20]                            |     r3 = s;
    0x000720dc ldrb r3, [r3, r2]                             |     r3 = *((r3 + r2));
    0x000720e0 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000720e4 bne 0x72100                                   |         
    0x000720e8 add r3, r2, 1                                 |         r3 = r2 + 1;
    0x000720ec str r3, [sp, 0x24]                            |         var_24h = r3;
    0x000720f0 mov r3, 6                                     |         r3 = 6;
    0x000720f4 str r2, [r4, 0x10]                            |         *((r4 + 0x10)) = r2;
    0x000720f8 str r3, [r4]                                  |         *(r4) = r3;
    0x000720fc b 0x71fbc                                     |         goto label_4;
                                                             |     }
    0x00072100 add r3, r3, 1                                 |     r3++;
    0x00072104 lsl r3, r3, 2                                 |     r3 <<= 2;
    0x00072108 str r3, [r4, 0x38]                            |     *((r4 + 0x38)) = r3;
    0x0007210c str r3, [r4, 0xa4]                            |     *((r4 + 0xa4)) = r3;
    0x00072110 mov r3, 0                                     |     r3 = 0;
    0x00072114 str r3, [r4, 0xa0]                            |     *((r4 + 0xa0)) = r3;
    0x00072118 mov r3, 2                                     |     r3 = 2;
    0x0007211c str r3, [r4]                                  |     *(r4) = r3;
    0x00072120 add r1, sp, 0x20                              |     r1 += s;
    0x00072124 mov r0, r4                                    |     r0 = r4;
    0x00072128 bl 0x716b0                                    |     r0 = fcn_000716b0 (r0, r1);
    0x0007212c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00072130 beq 0x72564                                   |         goto label_17;
                                                             |     }
    0x00072134 ldr r1, [r4, 0xa4]                            |     r1 = *((r4 + 0xa4));
    0x00072138 add r7, r4, 0xa8                              |     r7 = r4 + 0xa8;
    0x0007213c sub r1, r1, 4                                 |     r1 -= 4;
    0x00072140 mov r2, 0                                     |     r2 = 0;
    0x00072144 str r1, [r4, 0xa4]                            |     *((r4 + 0xa4)) = r1;
    0x00072148 mov r0, r7                                    |     r0 = r7;
    0x0007214c bl 0x71644                                    |     fcn_00071644 (r0, r1);
    0x00072150 ldr r3, [r4, 0xa4]                            |     r3 = *((r4 + 0xa4));
    0x00072154 ldr r2, [r7, r3]                              |     r2 = *((r7 + r3));
    0x00072158 cmp r0, r2                                    |     
                                                             |     if (r0 != r2) {
    0x0007215c bne 0x72090                                   |         goto label_5;
                                                             |     }
    0x00072160 mov r2, 2                                     |     r2 = 2;
    0x00072164 str r2, [r4, 0xa0]                            |     *((r4 + 0xa0)) = r2;
    0x00072168 ldrb r2, [r4, 0xa9]                           |     r2 = *((r4 + 0xa9));
    0x0007216c tst r2, 0x3f                                  |     
                                                             |     if ((r2 & 0x3f) != 0) {
    0x00072170 bne 0x720a8                                   |         goto label_3;
                                                             |     }
    0x00072174 tst r2, 0x40                                  |     
                                                             |     if ((r2 & 0x40) == 0) {
    0x00072178 beq 0x7229c                                   |         goto label_32;
                                                             |     }
    0x0007217c add r2, r4, 0xa0                              |     r2 = r4 + 0xa0;
    0x00072180 mov r1, r7                                    |     r1 = r7;
    0x00072184 mov r0, r4                                    |     r0 = r4;
    0x00072188 bl 0x714d0                                    |     r0 = fcn_000714d0 (r0, r1);
    0x0007218c cmp r0, 1                                     |     
                                                             |     if (r0 != 1) {
    0x00072190 bne 0x72090                                   |         goto label_5;
                                                             |     }
    0x00072194 ldrd r2, r3, [r4, 8]                          |     __asm ("ldrd r2, r3, [r4, 8]");
                                                             | label_7:
    0x00072198 strd r2, r3, [r4, 0x28]                       |     __asm ("strd r2, r3, [r4, 0x28]");
    0x0007219c ldrsb r2, [r4, 0xa9]                          |     r2 = *((r4 + 0xa9));
    0x000721a0 ldr r3, [r4, 0xa4]                            |     r3 = *((r4 + 0xa4));
    0x000721a4 cmp r2, 0                                     |     
                                                             |     if (r2 >= 0) {
    0x000721a8 bge 0x722a8                                   |         goto label_33;
                                                             |     }
    0x000721ac add r2, r4, 0xa0                              |     r2 = r4 + 0xa0;
    0x000721b0 mov r1, r7                                    |     r1 = r7;
    0x000721b4 mov r0, r4                                    |     r0 = r4;
    0x000721b8 bl 0x714d0                                    |     r0 = fcn_000714d0 (r0, r1);
    0x000721bc cmp r0, 1                                     |     
                                                             |     if (r0 != 1) {
    0x000721c0 bne 0x72090                                   |         goto label_5;
                                                             |     }
    0x000721c4 ldrd r2, r3, [r4, 8]                          |     __asm ("ldrd r2, r3, [r4, 8]");
                                                             | label_8:
    0x000721c8 ldr r0, [r4, 0xa4]                            |     r0 = *((r4 + 0xa4));
    0x000721cc strd r2, r3, [r4, 0x30]                       |     __asm ("strd r2, r3, [r4, 0x30]");
    0x000721d0 ldr r3, [r4, 0xa0]                            |     r3 = *((r4 + 0xa0));
    0x000721d4 sub r2, r0, r3                                |     r2 = r0 - r3;
    0x000721d8 cmp r2, 1                                     |     
                                                             |     if (r2 < 1) {
    0x000721dc bls 0x72090                                   |         goto label_5;
                                                             |     }
    0x000721e0 add r1, r3, 1                                 |     r1 = r3 + 1;
    0x000721e4 add r2, r4, r3                                |     r2 = r4 + r3;
    0x000721e8 str r1, [r4, 0xa0]                            |     *((r4 + 0xa0)) = r1;
    0x000721ec ldrb r2, [r2, 0xa8]                           |     r2 = *((r2 + 0xa8));
    0x000721f0 cmp r2, 0x21                                  |     
                                                             |     if (r2 != 0x21) {
    0x000721f4 bne 0x720a8                                   |         goto label_3;
                                                             |     }
    0x000721f8 add r2, r3, 2                                 |     r2 = r3 + 2;
    0x000721fc add r1, r4, r1                                |     r1 = r4 + r1;
    0x00072200 str r2, [r4, 0xa0]                            |     *((r4 + 0xa0)) = r2;
    0x00072204 ldrb r1, [r1, 0xa8]                           |     r1 = *((r1 + 0xa8));
    0x00072208 cmp r1, 1                                     |     
                                                             |     if (r1 != 1) {
    0x0007220c bne 0x720a8                                   |         goto label_3;
                                                             |     }
    0x00072210 cmp r0, r2                                    |     
                                                             |     if (r0 == r2) {
    0x00072214 beq 0x72090                                   |         goto label_5;
                                                             |     }
    0x00072218 add r3, r3, 3                                 |     r3 += 3;
    0x0007221c add r2, r4, r2                                |     r2 = r4 + r2;
    0x00072220 str r3, [r4, 0xa0]                            |     *((r4 + 0xa0)) = r3;
    0x00072224 ldrb r2, [r2, 0xa8]                           |     r2 = *((r2 + 0xa8));
    0x00072228 ldr r7, [r4, 0x4a8]                           |     r7 = *((r4 + 0x4a8));
    0x0007222c cmp r2, 0x27                                  |     
                                                             |     if (r2 > 0x27) {
    0x00072230 bhi 0x720a8                                   |         goto label_3;
                                                             |     }
    0x00072234 and r3, r2, 1                                 |     r3 = r2 & 1;
    0x00072238 lsr r2, r2, 1                                 |     r2 >>= 1;
    0x0007223c add r2, r2, 0xb                               |     r2 += 0xb;
    0x00072240 add r3, r3, 2                                 |     r3 += 2;
    0x00072244 lsl r3, r3, r2                                |     r3 <<= r2;
    0x00072248 ldr r2, [r7, 0x34]                            |     r2 = *((r7 + 0x34));
    0x0007224c str r3, [r7, 0x30]                            |     *((r7 + 0x30)) = r3;
    0x00072250 cmp r3, r2                                    |     
                                                             |     if (r3 > r2) {
    0x00072254 bhi 0x72818                                   |         goto label_34;
                                                             |     }
    0x00072258 ldr r2, [r7, 0x3c]                            |     r2 = *((r7 + 0x3c));
    0x0007225c str r3, [r7, 0x2c]                            |     *((r7 + 0x2c)) = r3;
    0x00072260 cmp r2, 2                                     |     
                                                             |     if (r2 == 2) {
    0x00072264 bne 0x722b4                                   |         
    0x00072268 ldr r2, [r7, 0x38]                            |         r2 = *((r7 + 0x38));
    0x0007226c cmp r3, r2                                    |         
                                                             |         if (r3 < r2) {
    0x00072270 bls 0x722b4                                   |             goto label_35;
                                                             |         }
    0x00072274 ldr r0, [r7, 0x18]                            |         r0 = *((r7 + 0x18));
    0x00072278 bl 0x152a8                                    |         free (r0);
    0x0007227c ldr r0, [r7, 0x30]                            |         r0 = *((r7 + 0x30));
    0x00072280 bl 0x146d8                                    |         r0 = malloc (r0);
    0x00072284 cmp r0, 0                                     |         
    0x00072288 str r0, [r7, 0x18]                            |         *((r7 + 0x18)) = r0;
                                                             |         if (r0 != 0) {
    0x0007228c bne 0x722b4                                   |             goto label_35;
                                                             |         }
    0x00072290 str r0, [r7, 0x38]                            |         *((r7 + 0x38)) = r0;
    0x00072294 mov r7, 3                                     |         r7 = 3;
    0x00072298 b 0x72094                                     |         goto label_6;
                                                             | label_32:
    0x0007229c mvn r2, 0                                     |         r2 = ~0;
    0x000722a0 mvn r3, 0                                     |         r3 = ~0;
    0x000722a4 b 0x72198                                     |         goto label_7;
                                                             | label_33:
    0x000722a8 mvn r2, 0                                     |         r2 = ~0;
    0x000722ac mvn r3, 0                                     |         r3 = ~0;
    0x000722b0 b 0x721c8                                     |         goto label_8;
                                                             |     }
                                                             | label_35:
    0x000722b4 ldr r2, [r4, 0xa4]                            |     r2 = *((r4 + 0xa4));
    0x000722b8 mov r3, 0                                     |     r3 = 0;
    0x000722bc str r3, [r7, 0x68]                            |     *((r7 + 0x68)) = r3;
    0x000722c0 str r3, [r7, 0x40]                            |     *((r7 + 0x40)) = r3;
    0x000722c4 strb r5, [r7, 0x50]                           |     *((r7 + 0x50)) = r5;
    0x000722c8 add r7, r7, 0x6000                            |     r7 += 0x6000;
    0x000722cc str r3, [r7, 0xee4]                           |     *((r7 + 0xee4)) = r3;
                                                             | label_10:
    0x000722d0 ldr r3, [r4, 0xa0]                            |     r3 = *((r4 + 0xa0));
    0x000722d4 cmp r3, r2                                    |     
                                                             |     if (r3 <= r2) {
    0x000722d8 blo 0x724e8                                   |         goto label_36;
                                                             |     }
    0x000722dc mov r3, 0                                     |     r3 = 0;
    0x000722e0 mov r2, 0                                     |     r2 = 0;
    0x000722e4 str r3, [r4, 0xa0]                            |     *((r4 + 0xa0)) = r3;
    0x000722e8 mov r3, 0                                     |     r3 = 0;
    0x000722ec strd r2, r3, [r4, 0x40]                       |     __asm ("strd r2, r3, [r4, 0x40]");
    0x000722f0 strd r2, r3, [r4, 0x48]                       |     __asm ("strd r2, r3, [r4, 0x48]");
    0x000722f4 mov r3, 3                                     |     r3 = 3;
    0x000722f8 str r3, [r4]                                  |     *(r4) = r3;
    0x000722fc ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x00072300 add r1, sp, 0x20                              |     r1 += s;
    0x00072304 str r3, [r4, 0x10]                            |     *((r4 + 0x10)) = r3;
    0x00072308 ldr r3, [sp, 0x30]                            |     r3 = var_30h;
    0x0007230c ldr r0, [r4, 0x4a8]                           |     r0 = *((r4 + 0x4a8));
    0x00072310 str r3, [r4, 0x14]                            |     *((r4 + 0x14)) = r3;
    0x00072314 bl 0x71724                                    |     fcn_00071724 (r0, r1);
    0x00072318 ldr r2, [r4, 0x10]                            |     r2 = *((r4 + 0x10));
    0x0007231c ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x00072320 ldrd sl, fp, [r4, 0x40]                       |     __asm ("ldrd sl, fp, [r4, 0x40]");
    0x00072324 sub r3, r3, r2                                |     r3 -= r2;
    0x00072328 mov r7, r0                                    |     r7 = r0;
    0x0007232c adds r0, sl, r3                               |     r0 = sl + r3;
    0x00072330 adc r1, fp, 0                                 |     __asm ("adc r1, arg_0h");
    0x00072334 strd r0, r1, [sp, 8]                          |     __asm ("strd r0, r1, [var_8h]");
    0x00072338 mov r2, r0                                    |     r2 = r0;
    0x0007233c mov r3, r1                                    |     r3 = r1;
    0x00072340 ldr r0, [r4, 0x14]                            |     r0 = *((r4 + 0x14));
    0x00072344 ldr r1, [sp, 0x30]                            |     r1 = var_30h;
    0x00072348 strd r2, r3, [r4, 0x40]                       |     __asm ("strd r2, r3, [r4, 0x40]");
    0x0007234c ldrd r2, r3, [r4, 0x48]                       |     __asm ("ldrd r2, r3, [r4, 0x48]");
    0x00072350 sub r1, r1, r0                                |     r1 -= r0;
    0x00072354 adds sl, r2, r1                               |     sl = r2 + r1;
    0x00072358 adc fp, r3, 0                                 |     __asm ("adc fp, r3, 0");
    0x0007235c mov r2, sl                                    |     r2 = sl;
    0x00072360 mov r3, fp                                    |     r3 = fp;
    0x00072364 strd sl, fp, [sp, 0x10]                       |     __asm ("strd sl, fp, [var_0hx10]");
    0x00072368 strd r2, r3, [r4, 0x48]                       |     __asm ("strd r2, r3, [r4, 0x48]");
    0x0007236c ldrd sl, fp, [sp, 8]                          |     __asm ("ldrd sl, fp, [var_8h]");
    0x00072370 ldrd r2, r3, [r4, 0x28]                       |     __asm ("ldrd r2, r3, [r4, 0x28]");
    0x00072374 cmp fp, r3                                    |     
    0x00072378 cmpeq sl, r2                                  |     __asm ("cmpeq sl, r2");
                                                             |     if (fp > r3) {
    0x0007237c bhi 0x72090                                   |         goto label_5;
                                                             |     }
    0x00072380 ldrd sl, fp, [r4, 0x30]                       |     __asm ("ldrd sl, fp, [r4, 0x30]");
    0x00072384 ldrd r2, r3, [sp, 0x10]                       |     __asm ("ldrd r2, r3, [var_10h]");
    0x00072388 cmp r3, fp                                    |     
    0x0007238c cmpeq r2, sl                                  |     __asm ("cmpeq r2, sl");
                                                             |     if (r3 > fp) {
    0x00072390 bhi 0x72090                                   |         goto label_5;
                                                             |     }
    0x00072394 ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x00072398 cmp r3, 1                                     |     
                                                             |     if (r3 == 1) {
    0x0007239c bne 0x723b4                                   |         
    0x000723a0 ldr r3, [sp, 0x2c]                            |         r3 = var_2ch;
    0x000723a4 ldr r2, [r4, 0x18]                            |         r2 = *((r4 + 0x18));
    0x000723a8 add r0, r3, r0                                |         r0 = r3 + r0;
    0x000723ac bl 0x71644                                    |         fcn_00071644 (r0, r1);
    0x000723b0 str r0, [r4, 0x18]                            |         *((r4 + 0x18)) = r0;
                                                             |     }
    0x000723b4 cmp r7, 1                                     |     
                                                             |     if (r7 != 1) {
    0x000723b8 bne 0x7203c                                   |         goto label_9;
                                                             |     }
    0x000723bc ldrd r0, r1, [r4, 0x28]                       |     __asm ("ldrd r0, r1, [r4, 0x28]");
    0x000723c0 mvn r3, 0                                     |     r3 = ~0;
    0x000723c4 mvn r2, 0                                     |     r2 = ~0;
    0x000723c8 cmp r1, r3                                    |     
    0x000723cc cmpeq r0, r2                                  |     __asm ("cmpeq r0, r2");
                                                             |     if (r1 == r3) {
    0x000723d0 beq 0x723e4                                   |         goto label_37;
                                                             |     }
    0x000723d4 ldrd r2, r3, [r4, 0x40]                       |     __asm ("ldrd r2, r3, [r4, 0x40]");
    0x000723d8 cmp r1, r3                                    |     
    0x000723dc cmpeq r0, r2                                  |     __asm ("cmpeq r0, r2");
                                                             |     if (r1 != r3) {
    0x000723e0 bne 0x72090                                   |         goto label_5;
                                                             |     }
                                                             | label_37:
    0x000723e4 ldrd r0, r1, [r4, 0x48]                       |     __asm ("ldrd r0, r1, [r4, 0x48]");
    0x000723e8 ldrd r2, r3, [r4, 0x30]                       |     __asm ("ldrd r2, r3, [r4, 0x30]");
    0x000723ec strd r0, r1, [sp, 8]                          |     __asm ("strd r0, r1, [var_8h]");
    0x000723f0 mvn r1, 0                                     |     r1 = ~0;
    0x000723f4 mvn r0, 0                                     |     r0 = ~0;
    0x000723f8 cmp r3, r1                                    |     
    0x000723fc cmpeq r2, r0                                  |     __asm ("cmpeq r2, r0");
                                                             |     if (r3 == r1) {
    0x00072400 beq 0x72414                                   |         goto label_38;
                                                             |     }
    0x00072404 ldrd r0, r1, [sp, 8]                          |     __asm ("ldrd r0, r1, [var_8h]");
    0x00072408 cmp r3, r1                                    |     
    0x0007240c cmpeq r2, r0                                  |     __asm ("cmpeq r2, r0");
                                                             |     if (r3 != r1) {
    0x00072410 bne 0x72090                                   |         goto label_5;
                                                             |     }
                                                             | label_38:
    0x00072414 ldrd r0, r1, [r4, 0x58]                       |     __asm ("ldrd r0, r1, [r4, 0x58]");
    0x00072418 ldrd r2, r3, [r4, 0x40]                       |     __asm ("ldrd r2, r3, [r4, 0x40]");
    0x0007241c adds sl, r2, r0                               |     sl = r2 + r0;
    0x00072420 adc fp, r3, r1                                |     __asm ("adc fp, r3, r1");
    0x00072424 ldr r1, [r4, 0x38]                            |     r1 = *((r4 + 0x38));
    0x00072428 adds r2, sl, r1                               |     r2 = sl + r1;
    0x0007242c ldr r1, [r4, 0x1c]                            |     r1 = *((r4 + 0x1c));
    0x00072430 adc r3, fp, 0                                 |     __asm ("adc r3, arg_0h");
    0x00072434 ldrb r0, [sb, r1]                             |     r0 = *((sb + r1));
    0x00072438 mov r1, 0                                     |     r1 = 0;
    0x0007243c adds r2, r2, r0                               |     r2 += r0;
    0x00072440 adc r3, r3, r1                                |     __asm ("adc r3, r3, r1");
    0x00072444 strd r2, r3, [r4, 0x58]                       |     __asm ("strd r2, r3, [r4, 0x58]");
    0x00072448 ldrd r0, r1, [sp, 8]                          |     __asm ("ldrd r0, r1, [var_8h]");
    0x0007244c ldrd r2, r3, [r4, 0x60]                       |     __asm ("ldrd r2, r3, [r4, 0x60]");
    0x00072450 adds r0, r0, r2                               |     r0 += r2;
    0x00072454 adc r1, r1, r3                                |     __asm ("adc r1, r1, r3");
    0x00072458 strd r0, r1, [r4, 0x60]                       |     __asm ("strd r0, r1, [r4, 0x60]");
    0x0007245c ldr r2, [r4, 0x68]                            |     r2 = *((r4 + 0x68));
    0x00072460 mov r1, 0x18                                  |     r1 = 0x18;
    0x00072464 add r0, r4, 0x58                              |     r0 = r4 + 0x58;
    0x00072468 bl 0x71644                                    |     fcn_00071644 (r0, r1);
    0x0007246c ldrd r2, r3, [r4, 0x50]                       |     __asm ("ldrd r2, r3, [r4, 0x50]");
    0x00072470 str r0, [r4, 0x68]                            |     *((r4 + 0x68)) = r0;
    0x00072474 adds r0, r2, 1                                |     r0 = r2 + 1;
    0x00072478 adc r1, r3, 0                                 |     __asm ("adc r1, r3, 0");
    0x0007247c mov r3, 4                                     |     r3 = 4;
    0x00072480 strd r0, r1, [r4, 0x50]                       |     __asm ("strd r0, r1, [r4, 0x50]");
    0x00072484 str r3, [r4]                                  |     *(r4) = r3;
    0x00072488 ldr ip, [sp, 0x28]                            |     ip = var_28h;
    0x0007248c ldr lr, [sp, 0x20]                            |     lr = s;
                                                             | label_11:
    0x00072490 ldrd sl, fp, [r4, 0x40]                       |     __asm ("ldrd sl, fp, [r4, 0x40]");
    0x00072494 mov r1, 0                                     |     r1 = 0;
    0x00072498 and r0, sl, 3                                 |     r0 = sl & 3;
    0x0007249c orrs r3, r0, r1                               |     r3 = r0 | r1;
                                                             |     if (r3 != r0) {
    0x000724a0 bne 0x72504                                   |         goto label_39;
                                                             |     }
    0x000724a4 mov r3, 5                                     |     r3 = 5;
    0x000724a8 str r3, [r4]                                  |     *(r4) = r3;
    0x000724ac ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x000724b0 cmp r3, 1                                     |     
                                                             |     if (r3 == 1) {
    0x000724b4 beq 0x72534                                   |         goto label_40;
                                                             |     }
    0x000724b8 ldrb r0, [sb, r3]                             |     r0 = *((sb + r3));
    0x000724bc ldr ip, [sp, 0x28]                            |     ip = var_28h;
    0x000724c0 ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x000724c4 mov r1, 0                                     |     r1 = 0;
                                                             | label_14:
    0x000724c8 ldr r2, [r4, 4]                               |     r2 = *((r4 + 4));
    0x000724cc cmp r2, r0                                    |     
                                                             |     if (r2 <= r0) {
    0x000724d0 blo 0x72554                                   |         goto label_41;
                                                             |     }
    0x000724d4 cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x000724d8 strne r3, [sp, 0x24]                          |         var_24h = r3;
                                                             |     }
    0x000724dc mov r3, 0                                     |     r3 = 0;
    0x000724e0 str r3, [r4, 4]                               |     *((r4 + 4)) = r3;
    0x000724e4 b 0x7254c                                     |     goto label_42;
                                                             | label_36:
    0x000724e8 add r1, r3, 1                                 |     r1 = r3 + 1;
    0x000724ec add r3, r4, r3                                |     r3 = r4 + r3;
    0x000724f0 str r1, [r4, 0xa0]                            |     *((r4 + 0xa0)) = r1;
    0x000724f4 ldrb r3, [r3, 0xa8]                           |     r3 = *((r3 + 0xa8));
    0x000724f8 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000724fc bne 0x720a8                                   |         goto label_3;
                                                             |     }
    0x00072500 b 0x722d0                                     |     goto label_10;
                                                             | label_39:
    0x00072504 ldr r1, [sp, 0x24]                            |     r1 = var_24h;
    0x00072508 cmp r1, ip                                    |     
                                                             |     if (r1 == ip) {
    0x0007250c beq 0x72564                                   |         goto label_17;
                                                             |     }
    0x00072510 add r0, r1, 1                                 |     r0 = r1 + 1;
    0x00072514 str r0, [sp, 0x24]                            |     var_24h = r0;
    0x00072518 ldrb r1, [lr, r1]                             |     r1 = *((lr + r1));
    0x0007251c cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00072520 bne 0x72090                                   |         goto label_5;
                                                             |     }
    0x00072524 adds r2, sl, 1                                |     r2 = sl + 1;
    0x00072528 adc r3, fp, 0                                 |     __asm ("adc r3, arg_0h");
    0x0007252c strd r2, r3, [r4, 0x40]                       |     __asm ("strd r2, r3, [r4, 0x40]");
    0x00072530 b 0x72490                                     |     goto label_11;
                                                             | label_40:
    0x00072534 add r1, sp, 0x20                              |     r1 += s;
    0x00072538 mov r0, r4                                    |     r0 = r4;
    0x0007253c bl 0x71584                                    |     r0 = fcn_00071584 (r0, r1);
    0x00072540 cmp r0, 1                                     |     
    0x00072544 mov r7, r0                                    |     r7 = r0;
                                                             |     if (r0 != 1) {
    0x00072548 bne 0x7203c                                   |         goto label_9;
                                                             |     }
                                                             | label_42:
    0x0007254c str r5, [r4]                                  |     *(r4) = r5;
    0x00072550 b 0x71fbc                                     |     goto label_4;
                                                             | label_41:
    0x00072554 cmp r3, ip                                    |     
                                                             |     if (r3 != ip) {
    0x00072558 bne 0x72614                                   |         goto label_43;
                                                             |     }
    0x0007255c cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00072560 strne r3, [sp, 0x24]                          |         var_24h = r3;
                                                             |     }
                                                             | label_17:
    0x00072564 ldr r2, [sp, 0x24]                            |     r2 = var_24h;
    0x00072568 ldr r1, [sp, 0x18]                            |     r1 = var_18h;
    0x0007256c ldr r3, [sp, 0x30]                            |     r3 = var_30h;
    0x00072570 cmp r1, r2                                    |     
                                                             |     if (r1 != r2) {
    0x00072574 bne 0x72820                                   |         goto label_44;
                                                             |     }
    0x00072578 ldr r2, [sp, 0x1c]                            |     r2 = var_1ch;
    0x0007257c cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x00072580 bne 0x72820                                   |         goto label_44;
                                                             |     }
    0x00072584 ldrb r3, [r4, 0x24]                           |     r3 = *((r4 + 0x24));
    0x00072588 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0007258c movne r7, 8                                   |         r7 = 8;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x00072590 moveq r7, 0                                   |         r7 = 0;
                                                             |     }
    0x00072594 mov r3, 1                                     |     r3 = 1;
                                                             | label_29:
    0x00072598 ldr r2, [sp, 0x30]                            |     r2 = var_30h;
    0x0007259c strb r3, [r4, 0x24]                           |     *((r4 + 0x24)) = r3;
    0x000725a0 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x000725a4 beq 0x725d0                                   |         
    0x000725a8 ldr r1, [sp, 0x2c]                            |         r1 = var_2ch;
    0x000725ac mov r0, r8                                    |         r0 = r8;
    0x000725b0 bl 0x74588                                    |         fcn_00074588 (r0, r1);
    0x000725b4 ldr r3, [sp, 0x30]                            |         r3 = var_30h;
    0x000725b8 ldrd r0, r1, [sp]                             |         __asm ("ldrd r0, r1, [sp]");
    0x000725bc adds r0, r0, r3                               |         r0 += r3;
    0x000725c0 adc r1, r1, 0                                 |         __asm ("adc r1, r1, 0");
    0x000725c4 mov r3, 0                                     |         r3 = 0;
    0x000725c8 strd r0, r1, [sp]                             |         __asm ("strd r0, r1, [sp]");
    0x000725cc str r3, [sp, 0x30]                            |         var_30h = r3;
                                                             |     }
    0x000725d0 cmp r7, 1                                     |     
                                                             |     if (r7 == 1) {
    0x000725d4 beq 0x71ed0                                   |         goto label_12;
                                                             |     }
    0x000725d8 bics r3, r7, 2                                |     __asm ("bics r3, r7, 2");
                                                             |     if (r7 == 1) {
    0x000725dc beq 0x71ed0                                   |         goto label_12;
                                                             |     }
    0x000725e0 ldr r0, [pc, 0x254]                           |     r0 = *(0x72838);
    0x000725e4 bl 0x18274                                    |     fcn_00018274 ();
    0x000725e8 mvn r2, 0                                     |     r2 = ~0;
    0x000725ec mvn r3, 0                                     |     r3 = ~0;
    0x000725f0 strd r2, r3, [sp]                             |     __asm ("strd r2, r3, [sp]");
                                                             | label_24:
    0x000725f4 ldr r5, [r4, 0x4a8]                           |     r5 = *((r4 + 0x4a8));
    0x000725f8 ldr r0, [r5, 0x18]                            |     r0 = *((r5 + 0x18));
    0x000725fc bl 0x152a8                                    |     free (r0);
    0x00072600 mov r0, r5                                    |     r0 = r5;
    0x00072604 bl 0x152a8                                    |     free (r0);
    0x00072608 mov r0, r4                                    |     r0 = r4;
    0x0007260c bl 0x152a8                                    |     free (r0);
    0x00072610 b 0x71f14                                     |     goto label_13;
                                                             | label_43:
    0x00072614 add r2, r2, 1                                 |     r2++;
    0x00072618 add r3, r3, 1                                 |     r3++;
    0x0007261c str r2, [r4, 4]                               |     *((r4 + 4)) = r2;
    0x00072620 mov r1, 1                                     |     r1 = 1;
    0x00072624 b 0x724c8                                     |     goto label_14;
                                                             | label_26:
    0x00072628 ldr r3, [r4, 0x70]                            |     r3 = *((r4 + 0x70));
    0x0007262c cmp r3, 1                                     |     
                                                             |     if (r3 == 1) {
    0x00072630 beq 0x72688                                   |         goto label_45;
                                                             |     }
                                                             |     if (r3 <= 1) {
    0x00072634 blo 0x72668                                   |         goto label_46;
                                                             |     }
    0x00072638 cmp r3, 2                                     |     
                                                             |     if (r3 == 2) {
    0x0007263c beq 0x726a4                                   |         goto label_47;
                                                             |     }
                                                             | label_16:
    0x00072640 ldrd r2, r3, [r4, 0x80]                       |     __asm ("ldrd r2, r3, [r4, 0x80]");
    0x00072644 orrs r3, r2, r3                               |     r3 = r2 | r3;
                                                             |     if (r3 != r2) {
    0x00072648 bne 0x72010                                   |         goto label_15;
                                                             |     }
    0x0007264c mov r3, 7                                     |     r3 = 7;
    0x00072650 str r3, [r4]                                  |     *(r4) = r3;
    0x00072654 ldrd sl, fp, [r4, 0x78]                       |     __asm ("ldrd sl, fp, [r4, 0x78]");
    0x00072658 ldr r2, [r4, 0x10]                            |     r2 = *((r4 + 0x10));
    0x0007265c ldr ip, [sp, 0x28]                            |     ip = var_28h;
    0x00072660 ldr lr, [sp, 0x20]                            |     lr = s;
    0x00072664 b 0x7270c                                     |     goto label_48;
                                                             | label_46:
    0x00072668 ldrd r0, r1, [r4, 8]                          |     __asm ("ldrd r0, r1, [r4, 8]");
    0x0007266c ldrd r2, r3, [r4, 0x50]                       |     __asm ("ldrd r2, r3, [r4, 0x50]");
    0x00072670 strd r0, r1, [r4, 0x80]                       |     __asm ("strd r0, r1, [r4, 0x80]");
    0x00072674 cmp r1, r3                                    |     
    0x00072678 cmpeq r0, r2                                  |     __asm ("cmpeq r0, r2");
                                                             |     if (r1 != r3) {
    0x0007267c bne 0x72090                                   |         goto label_5;
                                                             |     }
                                                             |     do {
    0x00072680 str r7, [r4, 0x70]                            |         *((r4 + 0x70)) = r7;
    0x00072684 b 0x72640                                     |         goto label_16;
                                                             | label_45:
    0x00072688 ldrd r2, r3, [r4, 0x88]                       |         __asm ("ldrd r2, r3, [r4, 0x88]");
    0x0007268c ldrd r0, r1, [r4, 8]                          |         __asm ("ldrd r0, r1, [r4, 8]");
    0x00072690 str r5, [r4, 0x70]                            |         *((r4 + 0x70)) = r5;
    0x00072694 adds sl, r2, r0                               |         sl = r2 + r0;
    0x00072698 adc fp, r3, r1                                |         __asm ("adc fp, r3, r1");
    0x0007269c strd sl, fp, [r4, 0x88]                       |         __asm ("strd sl, fp, [r4, 0x88]");
    0x000726a0 b 0x72640                                     |         goto label_16;
                                                             | label_47:
    0x000726a4 ldrd r2, r3, [r4, 0x90]                       |         __asm ("ldrd r2, r3, [r4, 0x90]");
    0x000726a8 ldrd r0, r1, [r4, 8]                          |         __asm ("ldrd r0, r1, [r4, 8]");
    0x000726ac adds sl, r2, r0                               |         sl = r2 + r0;
    0x000726b0 adc fp, r3, r1                                |         __asm ("adc fp, r3, r1");
    0x000726b4 ldr r2, [r4, 0x98]                            |         r2 = *((r4 + 0x98));
    0x000726b8 mov r1, 0x18                                  |         r1 = 0x18;
    0x000726bc strd sl, fp, [r4, 0x90]                       |         __asm ("strd sl, fp, [r4, 0x90]");
    0x000726c0 add r0, r4, 0x88                              |         r0 = r4 + 0x88;
    0x000726c4 bl 0x71644                                    |         fcn_00071644 (r0, r1);
    0x000726c8 ldrd r2, r3, [r4, 0x80]                       |         __asm ("ldrd r2, r3, [r4, 0x80]");
    0x000726cc str r0, [r4, 0x98]                            |         *((r4 + 0x98)) = r0;
    0x000726d0 subs r0, r2, 1                                |         r0 = r2 - 1;
    0x000726d4 sbc r1, r3, 0                                 |         __asm ("sbc r1, r3, 0");
    0x000726d8 strd r0, r1, [r4, 0x80]                       |         __asm ("strd r0, r1, [r4, 0x80]");
    0x000726dc b 0x72680                                     |         
                                                             |     } while (1);
                                                             | label_18:
    0x000726e0 cmp ip, r3                                    |     
                                                             |     if (ip == r3) {
    0x000726e4 bne 0x726f8                                   |         
    0x000726e8 add r1, sp, 0x20                              |         r1 += s;
    0x000726ec mov r0, r4                                    |         r0 = r4;
    0x000726f0 bl 0x71670                                    |         fcn_00071670 (r0, r1);
    0x000726f4 b 0x72564                                     |         goto label_17;
                                                             |     }
    0x000726f8 add r1, r3, 1                                 |     r1 = r3 + 1;
    0x000726fc str r1, [sp, 0x24]                            |     var_24h = r1;
    0x00072700 ldrb r3, [lr, r3]                             |     r3 = *((lr + r3));
    0x00072704 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00072708 bne 0x72090                                   |         goto label_5;
                                                             |     }
                                                             | label_48:
    0x0007270c ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x00072710 mov r1, 0                                     |     r1 = 0;
    0x00072714 sub r5, r3, r2                                |     r5 = r3 - r2;
    0x00072718 adds r0, sl, r5                               |     r0 = sl + r5;
    0x0007271c and r0, r0, 3                                 |     r0 &= 3;
    0x00072720 orrs r1, r0, r1                               |     r1 = r0 | r1;
                                                             |     if (r1 != r0) {
    0x00072724 bne 0x726e0                                   |         goto label_18;
                                                             |     }
    0x00072728 add r1, sp, 0x20                              |     r1 += s;
    0x0007272c mov r0, r4                                    |     r0 = r4;
    0x00072730 bl 0x71670                                    |     fcn_00071670 (r0, r1);
    0x00072734 mov r2, 0x18                                  |     r2 = 0x18;
    0x00072738 add r1, r4, 0x88                              |     r1 = r4 + 0x88;
    0x0007273c add r0, r4, 0x58                              |     r0 = r4 + 0x58;
    0x00072740 bl 0x14c60                                    |     r0 = memcmp (r0, r1, r2);
    0x00072744 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00072748 bne 0x72090                                   |         goto label_5;
                                                             |     }
    0x0007274c mov r3, 8                                     |     r3 = 8;
    0x00072750 str r3, [r4]                                  |     *(r4) = r3;
    0x00072754 add r1, sp, 0x20                              |     r1 += s;
    0x00072758 mov r0, r4                                    |     r0 = r4;
    0x0007275c bl 0x71584                                    |     r0 = fcn_00071584 (r0, r1);
    0x00072760 cmp r0, 1                                     |     
    0x00072764 mov r7, r0                                    |     r7 = r0;
                                                             |     if (r0 != 1) {
    0x00072768 bne 0x7203c                                   |         goto label_9;
                                                             |     }
    0x0007276c mov r3, 0xc                                   |     r3 = 0xc;
    0x00072770 str r3, [r4, 0xa4]                            |     *((r4 + 0xa4)) = r3;
    0x00072774 mov r3, 9                                     |     r3 = 9;
    0x00072778 str r3, [r4]                                  |     *(r4) = r3;
    0x0007277c add r1, sp, 0x20                              |     r1 += s;
    0x00072780 mov r0, r4                                    |     r0 = r4;
    0x00072784 bl 0x716b0                                    |     r0 = fcn_000716b0 (r0, r1);
    0x00072788 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0007278c beq 0x72564                                   |         goto label_17;
                                                             |     }
    0x00072790 mov r2, 2                                     |     r2 = 2;
    0x00072794 ldr r1, [pc, 0xa4]                            |     r1 = "corrupted_data";
    0x00072798 add r0, r4, 0xb2                              |     r0 = r4 + 0xb2;
    0x0007279c bl 0x14c60                                    |     r0 = memcmp (r0, "corrupted_data", r2);
    0x000727a0 subs r2, r0, 0                                |     r2 = r0 - 0;
                                                             |     if (r2 != r0) {
    0x000727a4 bne 0x72090                                   |         goto label_5;
                                                             |     }
    0x000727a8 mov r1, 6                                     |     r1 = 6;
    0x000727ac add r0, r4, 0xac                              |     r0 = r4 + 0xac;
    0x000727b0 bl 0x71644                                    |     fcn_00071644 (r0, r1);
    0x000727b4 ldr r3, [r4, 0xa8]                            |     r3 = *((r4 + 0xa8));
    0x000727b8 cmp r0, r3                                    |     
                                                             |     if (r0 != r3) {
    0x000727bc bne 0x72090                                   |         goto label_5;
                                                             |     }
    0x000727c0 ldrd r0, r1, [r4, 0x78]                       |     __asm ("ldrd r0, r1, [r4, 0x78]");
    0x000727c4 lsr r2, r0, 2                                 |     r2 = r0 >> 2;
    0x000727c8 ldr r0, [r4, 0xac]                            |     r0 = *((r4 + 0xac));
    0x000727cc orr r2, r2, r1, lsl 30                        |     r2 |= (r1 << 30);
    0x000727d0 lsr r3, r1, 2                                 |     r3 = r1 >> 2;
    0x000727d4 mov r1, 0                                     |     r1 = 0;
    0x000727d8 cmp r3, r1                                    |     
    0x000727dc cmpeq r2, r0                                  |     __asm ("cmpeq r2, r0");
                                                             |     if (r3 != r1) {
    0x000727e0 bne 0x72090                                   |         goto label_5;
                                                             |     }
    0x000727e4 ldrb r3, [r4, 0xb0]                           |     r3 = *((r4 + 0xb0));
    0x000727e8 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000727ec bne 0x72090                                   |         goto label_5;
                                                             |     }
    0x000727f0 ldrb r2, [r4, 0xb1]                           |     r2 = *((r4 + 0xb1));
    0x000727f4 ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x000727f8 cmp r2, r3                                    |     
                                                             |     if (r2 == r3) {
    0x000727fc moveq r7, 1                                   |         r7 = 1;
                                                             |         goto label_49;
                                                             |     }
                                                             |     if (r2 == r3) {
                                                             | label_49:
    0x00072800 beq 0x72094                                   |         goto label_6;
                                                             |     }
    0x00072804 b 0x72090                                     |     goto label_5;
                                                             | label_27:
    0x00072808 mov r7, 5                                     |     r7 = 5;
    0x0007280c b 0x72094                                     |     goto label_6;
                                                             | label_31:
    0x00072810 mov r7, 2                                     |     r7 = 2;
    0x00072814 b 0x72094                                     |     goto label_6;
                                                             | label_34:
    0x00072818 mov r7, 4                                     |     r7 = 4;
    0x0007281c b 0x72094                                     |     goto label_6;
                                                             | label_44:
    0x00072820 mov r7, 0                                     |     r7 = 0;
    0x00072824 b 0x72094                                     |     goto label_6;
                                                             | }
    ; 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 @ 0x729a8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000729a8 ()                  | void fcn_000729a8 (int32_t arg1) {
                                             |     int32_t var_0h;
                                             |     int32_t var_4h;
                                             |     int32_t var_8h;
                                             |     int32_t var_ch;
                                             |     int32_t var_10h;
                                             |     int32_t var_14h;
                                             |     int32_t var_18h;
                                             |     int32_t var_1ch;
                                             |     int32_t var_20h;
                                             |     int32_t var_24h;
                                             |     int32_t var_28h;
                                             |     int32_t var_2ch;
                                             |     int32_t var_30h;
                                             |     int32_t var_34h;
                                             |     int32_t var_38h;
                                             |     int32_t var_3ch;
                                             |     int32_t var_40h;
                                             |     int32_t var_44h;
                                             |     int32_t var_48h;
                                             |     int32_t var_0h_2;
                                             |     int32_t var_4dh;
                                             |     char * s;
                                             |     int32_t var_bch;
                                             |     r0 = arg1;
    0x000729a8 push {r4, r5, r6, r7, lr}     |     
    0x000729ac ldr r5, [r0, 0x18]            |     r5 = *((r0 + 0x18));
    0x000729b0 sub sp, sp, 0xbc              |     
    0x000729b4 mov r4, r0                    |     r4 = r0;
    0x000729b8 mov r1, 4                     |     r1 = 4;
    0x000729bc bl 0x74860                    |     fcn_00074860 (r0, r1);
    0x000729c0 mov r2, 0x6e                  |     r2 = 0x6e;
    0x000729c4 add r1, sp, 0x48              |     r1 += var_48h;
    0x000729c8 ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x000729cc bl 0x196c8                    |     r0 = fcn_000196c8 (r0, r1);
    0x000729d0 cmp r0, 0                     |     
    0x000729d4 str r0, [sp, 0x38]            |     var_38h = r0;
                                             |     if (r0 == 0) {
    0x000729d8 beq 0x72b74                   |         goto label_3;
                                             |     }
    0x000729dc cmp r0, 0x6e                  |     
                                             |     if (r0 == 0x6e) {
    0x000729e0 ldrne r0, [pc, 0x400]         |         r0 = *(0x00072de8);
                                             |     }
                                             |     if (r0 != 0x6e) {
    0x000729e4 bne 0x72a20                   |         goto label_4;
                                             |     }
    0x000729e8 ldrd r2, r3, [r4, 0x30]       |     __asm ("ldrd r2, r3, [r4, 0x30]");
    0x000729ec adds r0, r2, 0x6e             |     r0 = r2 + 0x6e;
    0x000729f0 adc r1, r3, 0                 |     __asm ("adc r1, var_0h_2");
    0x000729f4 strd r0, r1, [r4, 0x30]       |     __asm ("strd r0, r1, [r4, 0x30]");
    0x000729f8 ldr r1, [pc, 0x3ec]           |     r1 = "short read";
    0x000729fc add r0, sp, 0x48              |     r0 += var_48h;
    0x00072a00 bl 0x17c98                    |     r0 = fcn_00017c98 (r0, "short read");
    0x00072a04 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x00072a08 beq 0x72a1c                   |         
    0x00072a0c ldrb r3, [sp, 0x4d]           |         r3 = var_4dh;
    0x00072a10 sub r3, r3, 0x31              |         r3 -= 0x31;
    0x00072a14 cmp r3, 1                     |         
                                             |         if (r3 < 1) {
    0x00072a18 bls 0x72a24                   |             goto label_5;
                                             |         }
                                             |     }
    0x00072a1c ldr r0, [pc, 0x3cc]           |     r0 = "07070";
                                             |     do {
                                             | label_4:
    0x00072a20 bl 0x18254                    |         fcn_00018254 ();
                                             | label_5:
    0x00072a24 add r3, sp, 0x20              |         r3 += var_20h;
    0x00072a28 str r3, [sp, 0x1c]            |         var_1ch = r3;
    0x00072a2c add r3, sp, 0x28              |         r3 += var_28h;
    0x00072a30 str r3, [sp, 0x18]            |         var_18h = r3;
    0x00072a34 add r3, sp, 0x24              |         r3 += var_24h;
    0x00072a38 str r3, [sp, 0x14]            |         var_14h = r3;
    0x00072a3c add r3, sp, 0x38              |         r3 += var_38h;
    0x00072a40 str r3, [sp, 0x10]            |         var_10h = r3;
    0x00072a44 add r3, sp, 0x44              |         r3 += var_44h;
    0x00072a48 str r3, [sp, 0xc]             |         var_ch = r3;
    0x00072a4c add r3, sp, 0x2c              |         r3 += var_2ch;
    0x00072a50 str r3, [sp, 8]               |         var_8h = r3;
    0x00072a54 add r3, sp, 0x40              |         r3 += var_40h;
    0x00072a58 str r3, [sp, 4]               |         var_4h = r3;
    0x00072a5c add r3, sp, 0x3c              |         r3 += var_3ch;
    0x00072a60 str r3, [sp]                  |         *(sp) = r3;
    0x00072a64 add r2, sp, 0x34              |         r2 += var_34h;
    0x00072a68 add r3, sp, 0x30              |         r3 += var_30h;
    0x00072a6c ldr r1, [pc, 0x380]           |         r1 = "unsupported cpio format, use newc or crc";
    0x00072a70 add r0, sp, 0x4e              |         r0 += s;
    0x00072a74 bl 0x14c9c                    |         r0 = sscanf (r0, "unsupported cpio format, use newc or crc", r2);
    0x00072a78 cmp r0, 0xa                   |         
                                             |         if (r0 == 0xa) {
    0x00072a7c ldrne r0, [pc, 0x374]         |             r0 = "damaged_cpio_file";
                                             |         }
    0x00072a80 bne 0x72a20                   |         
                                             |     } while (r0 != 0xa);
    0x00072a84 ldr r3, [sp, 0x30]            |     r3 = var_30h;
    0x00072a88 ldr r0, [sp, 0x20]            |     r0 = var_20h;
    0x00072a8c str r3, [r5, 0x18]            |     *((r5 + 0x18)) = r3;
    0x00072a90 ldr r3, [r4, 0x58]            |     r3 = *((r4 + 0x58));
    0x00072a94 lsl r0, r0, 0x13              |     r0 <<= 0x13;
    0x00072a98 cmn r3, 1                     |     
                                             |     if (r3 == 1) {
    0x00072a9c strne r3, [sp, 0x3c]          |         var_3ch = r3;
                                             |     }
    0x00072aa0 ldr r3, [r4, 0x5c]            |     r3 = *((r4 + 0x5c));
    0x00072aa4 lsr r0, r0, 0x13              |     r0 >>= 0x13;
    0x00072aa8 cmn r3, 1                     |     
                                             |     if (r3 == 1) {
    0x00072aac strne r3, [sp, 0x40]          |         var_40h = r3;
                                             |     }
    0x00072ab0 ldr r3, [sp, 0x3c]            |     r3 = var_3ch;
    0x00072ab4 str r0, [sp, 0x20]            |     var_20h = r0;
    0x00072ab8 str r3, [r5, 0x10]            |     *((r5 + 0x10)) = r3;
    0x00072abc ldr r3, [sp, 0x40]            |     r3 = var_40h;
    0x00072ac0 add r0, r0, 1                 |     r0++;
    0x00072ac4 str r3, [r5, 0x14]            |     *((r5 + 0x14)) = r3;
    0x00072ac8 ldr r3, [sp, 0x44]            |     r3 = var_44h;
    0x00072acc str r3, [r5, 0x1c]            |     *((r5 + 0x1c)) = r3;
    0x00072ad0 ldr r3, [sp, 0x38]            |     r3 = var_38h;
    0x00072ad4 str r3, [r5, 8]               |     *((r5 + 8)) = r3;
    0x00072ad8 mov r3, 0                     |     r3 = 0;
    0x00072adc str r3, [r5, 0xc]             |     *((r5 + 0xc)) = r3;
    0x00072ae0 bl 0x189b8                    |     fcn_000189b8 (r0);
    0x00072ae4 ldr r2, [sp, 0x20]            |     r2 = var_20h;
    0x00072ae8 mov r1, r0                    |     r1 = r0;
    0x00072aec str r0, [r5]                  |     *(r5) = r0;
    0x00072af0 ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x00072af4 bl 0xa3804                    |     fcn_000a3804 (r0, r1);
    0x00072af8 ldr r0, [r5]                  |     r0 = *(r5);
    0x00072afc ldrb r3, [r0]                 |     r3 = *(r0);
    0x00072b00 cmp r3, 0x2f                  |     
                                             |     if (r3 != 0x2f) {
    0x00072b04 bne 0x72b1c                   |         goto label_6;
                                             |     }
    0x00072b08 mov r1, r0                    |     r1 = r0;
                                             |     do {
    0x00072b0c ldrb r3, [r1, 1]!             |         r3 = *((r1 += 1));
    0x00072b10 cmp r3, 0x2f                  |         
    0x00072b14 beq 0x72b0c                   |         
                                             |     } while (r3 == 0x2f);
    0x00072b18 bl 0xa410c                    |     fcn_000a410c (r0, r1);
                                             | label_6:
    0x00072b1c ldrd r2, r3, [r4, 0x30]       |     __asm ("ldrd r2, r3, [r4, 0x30]");
    0x00072b20 ldr r1, [sp, 0x20]            |     r1 = var_20h;
    0x00072b24 mov r0, r4                    |     r0 = r4;
    0x00072b28 adds r6, r2, r1               |     r6 = r2 + r1;
    0x00072b2c adc r7, r3, r1, asr 31        |     __asm ("adc r7, r3, r1, asr 31");
    0x00072b30 strd r6, r7, [r4, 0x30]       |     __asm ("strd r6, r7, [r4, 0x30]");
    0x00072b34 mov r1, 4                     |     r1 = 4;
    0x00072b38 bl 0x74860                    |     fcn_00074860 (r0, r1);
    0x00072b3c ldr r1, [pc, 0x2b8]           |     r1 = "damaged_cpio_file";
    0x00072b40 ldr r0, [r5]                  |     r0 = *(r5);
    0x00072b44 bl 0x14ed0                    |     r0 = strcmp (r0, "damaged_cpio_file");
    0x00072b48 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x00072b4c bne 0x72ba4                   |         
    0x00072b50 ldrd r2, r3, [r4, 0x30]       |         __asm ("ldrd r2, r3, [r4, 0x30]");
    0x00072b54 ldr r0, [pc, 0x2a4]           |         r0 = "TRAILER___";
    0x00072b58 mov r1, 0                     |         r1 = 0;
    0x00072b5c adds r6, r2, r0               |         r6 = r2 + r0;
    0x00072b60 adc r7, r3, r1                |         __asm ("adc r7, r3, r1");
    0x00072b64 lsr r2, r6, 9                 |         r2 = r6 >> 9;
    0x00072b68 orr r2, r2, r7, lsl 23        |         r2 |= (r7 << 23);
    0x00072b6c lsr r3, r7, 9                 |         r3 = r7 >> 9;
    0x00072b70 strd r2, r3, [r4, 0x50]       |         __asm ("strd r2, r3, [r4, 0x50]");
                                             | label_3:
    0x00072b74 ldr r0, [r5, 4]               |         r0 = *((r5 + 4));
    0x00072b78 bl 0x152a8                    |         free (r0);
    0x00072b7c ldr r0, [r5]                  |         r0 = *(r5);
                                             | label_1:
    0x00072b80 bl 0x152a8                    |         free (r0);
                                             | label_0:
    0x00072b84 ldr r6, [r4, 0x60]            |         r6 = *((r4 + 0x60));
    0x00072b88 cmp r6, 0                     |         
                                             |         if (r6 != 0) {
    0x00072b8c bne 0x72d14                   |             goto label_7;
                                             |         }
                                             | label_2:
    0x00072b90 ldr r0, [r4, 0x64]            |         r0 = *((r4 + 0x64));
    0x00072b94 cmp r0, 0                     |         
                                             |         if (r0 != 0) {
    0x00072b98 bne 0x72dd8                   |             goto label_8;
                                             |         }
    0x00072b9c mov r0, 1                     |         r0 = 1;
    0x00072ba0 b 0x72d00                     |         goto label_9;
                                             |     }
    0x00072ba4 mov r3, 0                     |     r3 = 0;
    0x00072ba8 str r3, [r5, 4]               |     *((r5 + 4)) = r3;
    0x00072bac ldr r3, [r5, 0x18]            |     r3 = *((r5 + 0x18));
    0x00072bb0 and r3, r3, 0xf000            |     r3 &= 0xf000;
    0x00072bb4 cmp r3, 0xa000                |     
                                             |     if (r3 == 0xa000) {
    0x00072bb8 bne 0x72c10                   |         
    0x00072bbc ldrd r0, r1, [r5, 8]          |         __asm ("ldrd r0, r1, [r5, 8]");
    0x00072bc0 ldr r2, [pc, 0x23c]           |         r2 = *(0x72e00);
    0x00072bc4 mov r3, 0                     |         r3 = 0;
    0x00072bc8 and r7, r1, r3                |         r7 = r1 & r3;
    0x00072bcc and r6, r0, r2                |         r6 = r0 & r2;
    0x00072bd0 strd r6, r7, [r5, 8]          |         __asm ("strd r6, r7, [r5, 8]");
    0x00072bd4 add r0, r6, 1                 |         r0 = r6 + 1;
    0x00072bd8 bl 0x189b8                    |         fcn_000189b8 (r0);
    0x00072bdc ldr r2, [r5, 8]               |         r2 = *((r5 + 8));
    0x00072be0 mov r1, r0                    |         r1 = r0;
    0x00072be4 str r0, [r5, 4]               |         *((r5 + 4)) = r0;
    0x00072be8 ldr r0, [r4, 4]               |         r0 = *((r4 + 4));
    0x00072bec bl 0xa3804                    |         fcn_000a3804 (r0, r1);
    0x00072bf0 ldrd r2, r3, [r4, 0x30]       |         __asm ("ldrd r2, r3, [r4, 0x30]");
    0x00072bf4 ldrd r0, r1, [r5, 8]          |         __asm ("ldrd r0, r1, [r5, 8]");
    0x00072bf8 adds r6, r2, r0               |         r6 = r2 + r0;
    0x00072bfc adc r7, r3, r1                |         __asm ("adc r7, r3, r1");
    0x00072c00 mov r2, 0                     |         r2 = 0;
    0x00072c04 mov r3, 0                     |         r3 = 0;
    0x00072c08 strd r6, r7, [r4, 0x30]       |         __asm ("strd r6, r7, [r4, 0x30]");
    0x00072c0c strd r2, r3, [r5, 8]          |         __asm ("strd r2, r3, [r5, 8]");
                                             |     }
    0x00072c10 ldr r3, [sp, 0x2c]            |     r3 = var_2ch;
    0x00072c14 cmp r3, 1                     |     
                                             |     if (r3 > 1) {
    0x00072c18 ble 0x72c94                   |         
    0x00072c1c ldr r3, [r5, 0x18]            |         r3 = *((r5 + 0x18));
    0x00072c20 and r3, r3, 0xf000            |         r3 &= 0xf000;
    0x00072c24 cmp r3, 0x8000                |         
                                             |         if (r3 != 0x8000) {
    0x00072c28 bne 0x72c94                   |             goto label_10;
                                             |         }
    0x00072c2c ldr r0, [sp, 0x20]            |         r0 = var_20h;
    0x00072c30 add r0, r0, 0x1c              |         r0 += 0x1c;
    0x00072c34 bl 0x18968                    |         fcn_00018968 (r0);
    0x00072c38 ldr r3, [sp, 0x34]            |         r3 = var_34h;
    0x00072c3c ldr r1, [r5]                  |         r1 = *(r5);
    0x00072c40 str r3, [r0, 4]               |         *((r0 + 4)) = r3;
    0x00072c44 ldr r3, [sp, 0x30]            |         r3 = var_30h;
    0x00072c48 mov r6, r0                    |         r6 = r0;
    0x00072c4c str r3, [r0, 8]               |         *((r0 + 8)) = r3;
    0x00072c50 ldr r3, [sp, 0x44]            |         r3 = var_44h;
    0x00072c54 add r0, r0, 0x18              |         r0 += 0x18;
    0x00072c58 str r3, [r0, -0xc]            |         *((r0 - 0xc)) = r3;
    0x00072c5c ldr r3, [sp, 0x3c]            |         r3 = var_3ch;
    0x00072c60 str r3, [r0, -8]              |         *((r0 - 8)) = r3;
    0x00072c64 ldr r3, [sp, 0x40]            |         r3 = var_40h;
    0x00072c68 str r3, [r0, -4]              |         *((r0 - 4)) = r3;
    0x00072c6c bl 0x142f4                    |         strcpy (r0, r1)
    0x00072c70 ldr r0, [sp, 0x38]            |         r0 = var_38h;
    0x00072c74 cmp r0, 0                     |         
                                             |         if (r0 != 0) {
    0x00072c78 ldreq r3, [r4, 0x60]          |             r3 = *((r4 + 0x60));
                                             |         }
                                             |         if (r0 != 0) {
    0x00072c7c streq r6, [r4, 0x60]          |             *((r4 + 0x60)) = r6;
                                             |         }
                                             |         if (r0 != 0) {
    0x00072c80 streq r3, [r6]                |             *(r6) = r3;
                                             |         }
                                             |         if (r0 == 0) {
    0x00072c84 beq 0x72d00                   |             goto label_9;
                                             |         }
    0x00072c88 ldr r3, [r4, 0x64]            |         r3 = *((r4 + 0x64));
    0x00072c8c str r6, [r4, 0x64]            |         *((r4 + 0x64)) = r6;
    0x00072c90 str r3, [r6]                  |         *(r6) = r3;
                                             |     }
                                             | label_10:
    0x00072c94 ldr r1, [sp, 0x28]            |     r1 = var_28h;
    0x00072c98 ldr r0, [sp, 0x24]            |     r0 = var_24h;
    0x00072c9c bl 0xa06e4                    |     fcn_000a06e4 ();
    0x00072ca0 ldr r3, [r4, 8]               |     r3 = *((r4 + 8));
    0x00072ca4 strd r0, r1, [r5, 0x20]       |     __asm ("strd r0, r1, [r5, 0x20]");
    0x00072ca8 mov r0, r4                    |     r0 = r4;
    0x00072cac blx r3                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00072cb0 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x00072cb4 bne 0x72d08                   |         goto label_11;
                                             |     }
    0x00072cb8 ldr r3, [r4, 0x24]            |     r3 = *((r4 + 0x24));
    0x00072cbc mov r0, r4                    |     r0 = r4;
    0x00072cc0 blx r3                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00072cc4 ldr r3, [r4, 0x20]            |     r3 = *((r4 + 0x20));
    0x00072cc8 mov r0, r5                    |     r0 = r5;
    0x00072ccc blx r3                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                             |     do {
    0x00072cd0 ldrd r0, r1, [r5, 8]          |         __asm ("ldrd r0, r1, [r5, 8]");
    0x00072cd4 ldrd r2, r3, [r4, 0x30]       |         __asm ("ldrd r2, r3, [r4, 0x30]");
    0x00072cd8 adds r6, r2, r0               |         r6 = r2 + r0;
    0x00072cdc adc r7, r3, r1                |         __asm ("adc r7, r3, r1");
    0x00072ce0 ldr r0, [r5, 4]               |         r0 = *((r5 + 4));
    0x00072ce4 strd r6, r7, [r4, 0x30]       |         __asm ("strd r6, r7, [r4, 0x30]");
    0x00072ce8 bl 0x152a8                    |         free (r0);
    0x00072cec ldr r0, [r5]                  |         r0 = *(r5);
    0x00072cf0 bl 0x152a8                    |         free (r0);
    0x00072cf4 mov r0, 0                     |         r0 = 0;
    0x00072cf8 str r0, [r5, 4]               |         *((r5 + 4)) = r0;
    0x00072cfc str r0, [r5]                  |         *(r5) = r0;
                                             | label_9:
    0x00072d00 add sp, sp, 0xbc              |         
    0x00072d04 pop {r4, r5, r6, r7, pc}      |         
                                             | label_11:
    0x00072d08 mov r0, r4                    |         r0 = r4;
    0x00072d0c bl 0x6de28                    |         fcn_0006de28 (r0);
    0x00072d10 b 0x72cd0                     |         
                                             |     } while (1);
                                             | label_7:
    0x00072d14 ldr r3, [r6]                  |     r3 = *(r6);
    0x00072d18 mov r2, 0x28                  |     r2 = 0x28;
    0x00072d1c str r3, [r4, 0x60]            |     *((r4 + 0x60)) = r3;
    0x00072d20 mov r1, 0                     |     r1 = 0;
    0x00072d24 mov r0, r5                    |     r0 = r5;
    0x00072d28 bl 0x14d98                    |     memset (r0, r1, r2);
    0x00072d2c ldr r3, [r6, 0xc]             |     r3 = *((r6 + 0xc));
    0x00072d30 str r3, [r5, 0x1c]            |     *((r5 + 0x1c)) = r3;
    0x00072d34 add r3, r6, 0x18              |     r3 = r6 + 0x18;
    0x00072d38 str r3, [r5]                  |     *(r5) = r3;
    0x00072d3c ldr r3, [r6, 8]               |     r3 = *((r6 + 8));
    0x00072d40 str r3, [r5, 0x18]            |     *((r5 + 0x18)) = r3;
    0x00072d44 ldr r3, [r6, 0x10]            |     r3 = *((r6 + 0x10));
    0x00072d48 str r3, [r5, 0x10]            |     *((r5 + 0x10)) = r3;
    0x00072d4c ldr r3, [r6, 0x14]            |     r3 = *((r6 + 0x14));
    0x00072d50 str r3, [r5, 0x14]            |     *((r5 + 0x14)) = r3;
    0x00072d54 ldr r3, [r4, 0x64]            |     r3 = *((r4 + 0x64));
                                             |     do {
    0x00072d58 cmp r3, 0                     |         
                                             |         if (r3 == 0) {
    0x00072d5c bne 0x72d90                   |             
    0x00072d60 ldr r3, [r4, 8]               |             r3 = *((r4 + 8));
    0x00072d64 mov r0, r4                    |             r0 = r4;
    0x00072d68 blx r3                        |             r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00072d6c cmp r0, 0                     |             
                                             |             if (r0 == 0) {
    0x00072d70 bne 0x72d80                   |                 
    0x00072d74 ldr r3, [r4, 0x24]            |                 r3 = *((r4 + 0x24));
    0x00072d78 mov r0, r4                    |                 r0 = r4;
    0x00072d7c blx r3                        |                 uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                             |             }
    0x00072d80 ldr r3, [r4, 0x64]            |             r3 = *((r4 + 0x64));
    0x00072d84 str r3, [r6]                  |             *(r6) = r3;
    0x00072d88 str r6, [r4, 0x64]            |             *((r4 + 0x64)) = r6;
    0x00072d8c b 0x72b84                     |             goto label_0;
                                             |         }
    0x00072d90 ldr r1, [r3, 4]               |         r1 = *((r3 + 4));
    0x00072d94 ldr r2, [r6, 4]               |         r2 = *((r6 + 4));
    0x00072d98 cmp r1, r2                    |         
                                             |         if (r1 == r2) {
    0x00072d9c bne 0x72dd0                   |             
    0x00072da0 add r3, r3, 0x18              |             r3 += 0x18;
    0x00072da4 str r3, [r5, 4]               |             *((r5 + 4)) = r3;
    0x00072da8 mov r0, r4                    |             r0 = r4;
    0x00072dac ldr r3, [r4, 8]               |             r3 = *((r4 + 8));
    0x00072db0 blx r3                        |             r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00072db4 cmp r0, 0                     |             
                                             |             if (r0 == 0) {
    0x00072db8 bne 0x72dc8                   |                 
    0x00072dbc ldr r3, [r4, 0x24]            |                 r3 = *((r4 + 0x24));
    0x00072dc0 mov r0, r4                    |                 r0 = r4;
    0x00072dc4 blx r3                        |                 uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                             |             }
    0x00072dc8 mov r0, r6                    |             r0 = r6;
    0x00072dcc b 0x72b80                     |             goto label_1;
                                             |         }
    0x00072dd0 ldr r3, [r3]                  |         r3 = *(r3);
    0x00072dd4 b 0x72d58                     |         
                                             |     } while (1);
                                             | label_8:
    0x00072dd8 ldr r3, [r0]                  |     r3 = *(r0);
    0x00072ddc str r3, [r4, 0x64]            |     *((r4 + 0x64)) = r3;
    0x00072de0 bl 0x152a8                    |     free (r0);
    0x00072de4 b 0x72b90                     |     goto label_2;
                                             | }
    ; 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 @ 0x83dfc */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00083dfc ()                      | void fcn_00083dfc (int32_t arg1) {
                                                 |     char * s;
                                                 |     int32_t var_3h;
                                                 |     char * ptr;
                                                 |     char * s1;
                                                 |     int32_t var_30h;
                                                 |     int32_t var_37h;
                                                 |     int32_t var_80h;
                                                 |     r0 = arg1;
    0x00083dfc push {r4, r5, r6, r7, r8, lr}     |     
    0x00083e00 ldr r4, [pc, 0x2c4]               |     r4 = *(0x840c8);
    0x00083e04 sub sp, sp, 0x80                  |     
    0x00083e08 ldrb r2, [r4, 0xd]                |     r2 = *((r4 + 0xd));
    0x00083e0c ldrb r3, [r4, 0xc]                |     r3 = *((r4 + 0xc));
    0x00083e10 mov r5, r0                        |     r5 = r0;
    0x00083e14 orr r3, r3, r2, lsl 8             |     r3 |= (r2 << 8);
    0x00083e18 ldrb r2, [r4, 0xe]                |     r2 = *((r4 + 0xe));
    0x00083e1c orr r3, r3, r2, lsl 16            |     r3 |= (r2 << 16);
    0x00083e20 ldrb r2, [r4, 0xf]                |     r2 = *((r4 + 0xf));
    0x00083e24 orrs r3, r3, r2, lsl 24           |     r3 |= (r2 << 24);
                                                 |     if (r3 != r3) {
    0x00083e28 beq 0x83f50                       |         
    0x00083e2c mov r2, r0                        |         r2 = r0;
    0x00083e30 ldr r1, [pc, 0x298]               |         r1 = *(0x840cc);
    0x00083e34 add r0, sp, 0x18                  |         r0 += ptr;
    0x00083e38 bl 0x14f48                        |         sprintf (r0, r1, r2);
    0x00083e3c add r3, sp, 0x18                  |         r3 += ptr;
    0x00083e40 sub r0, r0, 3                     |         r0 -= var_3h;
    0x00083e44 add r7, r3, r0                    |         r7 = r3 + r0;
    0x00083e48 mov r0, r3                        |         r0 = r3;
    0x00083e4c bl 0x19208                        |         fcn_00019208 (r0);
    0x00083e50 subs r8, r0, 0                    |         r8 -= ptr;
                                                 |         if (r8 != ptr) {
    0x00083e54 moveq r6, r8                      |             r6 = r8;
                                                 |         }
                                                 |         if (r8 != ptr) {
    0x00083e58 beq 0x83e88                       |             
    0x00083e5c ldrb r0, [r4, 0xd]                |             r0 = *((r4 + 0xd));
    0x00083e60 ldrb r3, [r4, 0xc]                |             r3 = *((r4 + 0xc));
    0x00083e64 mov r1, r8                        |             r1 = r8;
    0x00083e68 orr r3, r3, r0, lsl 8             |             r3 |= (r0 << 8);
    0x00083e6c ldrb r0, [r4, 0xe]                |             r0 = *((r4 + 0xe));
    0x00083e70 orr r3, r3, r0, lsl 16            |             r3 |= (r0 << 16);
    0x00083e74 ldrb r0, [r4, 0xf]                |             r0 = *((r4 + 0xf));
    0x00083e78 orr r0, r3, r0, lsl 24            |             r0 = r3 | (r0 << 24);
    0x00083e7c bl 0x14ed0                        |             r0 = strcmp (r0, r1);
    0x00083e80 clz r6, r0                        |             r6 &= r0;
    0x00083e84 lsr r6, r6, 5                     |             r6 >>= 5;
                                                 |         }
    0x00083e88 mov r0, r8                        |         r0 = r8;
    0x00083e8c bl 0x152a8                        |         free (r0);
    0x00083e90 cmp r6, 0                         |         
                                                 |         if (r6 != 0) {
    0x00083e94 bne 0x83f50                       |             goto label_2;
                                                 |         }
    0x00083e98 ldr r1, [pc, 0x234]               |         r1 = "/proc/%u/exe";
    0x00083e9c mov r0, r7                        |         r0 = r7;
    0x00083ea0 bl 0x142f4                        |         strcpy (r0, "/proc/%u/exe")
    0x00083ea4 ldrb r3, [r4, 0x19]               |         r3 = *((r4 + 0x19));
    0x00083ea8 ldrb r2, [r4, 0x18]               |         r2 = *((r4 + 0x18));
    0x00083eac ldrb r1, [r4, 0x15]               |         r1 = *((r4 + 0x15));
    0x00083eb0 orr r2, r2, r3, lsl 8             |         r2 |= (r3 << 8);
    0x00083eb4 ldrb r3, [r4, 0x1a]               |         r3 = *((r4 + 0x1a));
    0x00083eb8 ldrb r0, [r4, 0x1b]               |         r0 = *((r4 + 0x1b));
    0x00083ebc orr r2, r2, r3, lsl 16            |         r2 |= (r3 << 16);
    0x00083ec0 ldrb r3, [r4, 0x14]               |         r3 = *((r4 + 0x14));
    0x00083ec4 orr r2, r2, r0, lsl 24            |         r2 |= (r0 << 24);
    0x00083ec8 orr r3, r3, r1, lsl 8             |         r3 |= (r1 << 8);
    0x00083ecc ldrb r1, [r4, 0x16]               |         r1 = *((r4 + 0x16));
    0x00083ed0 add r0, sp, 0x18                  |         r0 += ptr;
    0x00083ed4 orr r3, r3, r1, lsl 16            |         r3 |= (r1 << 16);
    0x00083ed8 ldrb r1, [r4, 0x17]               |         r1 = *((r4 + 0x17));
    0x00083edc orr r1, r3, r1, lsl 24            |         r1 = r3 | (r1 << 24);
    0x00083ee0 bl 0x19740                        |         r0 = fcn_00019740 (r0);
    0x00083ee4 cmp r0, 0                         |         
                                                 |         if (r0 <= 0) {
    0x00083ee8 ble 0x84074                       |             goto label_1;
                                                 |         }
    0x00083eec ldrb r2, [r4, 0x15]               |         r2 = *((r4 + 0x15));
    0x00083ef0 ldrb r3, [r4, 0x14]               |         r3 = *((r4 + 0x14));
    0x00083ef4 orr r3, r3, r2, lsl 8             |         r3 |= (r2 << 8);
    0x00083ef8 ldrb r2, [r4, 0x16]               |         r2 = *((r4 + 0x16));
    0x00083efc orr r3, r3, r2, lsl 16            |         r3 |= (r2 << 16);
    0x00083f00 ldrb r2, [r4, 0x17]               |         r2 = *((r4 + 0x17));
    0x00083f04 orr r3, r3, r2, lsl 24            |         r3 |= (r2 << 24);
    0x00083f08 strb r6, [r3, r0]                 |         *((r3 + r0)) = r6;
    0x00083f0c ldrb r1, [r4, 0x15]               |         r1 = *((r4 + 0x15));
    0x00083f10 ldrb r0, [r4, 0xd]                |         r0 = *((r4 + 0xd));
    0x00083f14 ldrb r2, [r4, 0x14]               |         r2 = *((r4 + 0x14));
    0x00083f18 ldrb r3, [r4, 0xc]                |         r3 = *((r4 + 0xc));
    0x00083f1c orr r2, r2, r1, lsl 8             |         r2 |= (r1 << 8);
    0x00083f20 orr r3, r3, r0, lsl 8             |         r3 |= (r0 << 8);
    0x00083f24 ldrb r1, [r4, 0x16]               |         r1 = *((r4 + 0x16));
    0x00083f28 ldrb r0, [r4, 0xe]                |         r0 = *((r4 + 0xe));
    0x00083f2c orr r2, r2, r1, lsl 16            |         r2 |= (r1 << 16);
    0x00083f30 orr r3, r3, r0, lsl 16            |         r3 |= (r0 << 16);
    0x00083f34 ldrb r1, [r4, 0x17]               |         r1 = *((r4 + 0x17));
    0x00083f38 ldrb r0, [r4, 0xf]                |         r0 = *((r4 + 0xf));
    0x00083f3c orr r1, r2, r1, lsl 24            |         r1 = r2 | (r1 << 24);
    0x00083f40 orr r0, r3, r0, lsl 24            |         r0 = r3 | (r0 << 24);
    0x00083f44 bl 0x14ed0                        |         r0 = strcmp (r0, r1);
    0x00083f48 cmp r0, 0                         |         
                                                 |         if (r0 != 0) {
    0x00083f4c bne 0x84074                       |             goto label_1;
                                                 |         }
                                                 |     }
                                                 | label_2:
    0x00083f50 ldrb r2, [r4, 9]                  |     r2 = *((r4 + 9));
    0x00083f54 ldrb r3, [r4, 8]                  |     r3 = *((r4 + 8));
    0x00083f58 orr r3, r3, r2, lsl 8             |     r3 |= (r2 << 8);
    0x00083f5c ldrb r2, [r4, 0xa]                |     r2 = *((r4 + 0xa));
    0x00083f60 orr r3, r3, r2, lsl 16            |     r3 |= (r2 << 16);
    0x00083f64 ldrb r2, [r4, 0xb]                |     r2 = *((r4 + 0xb));
    0x00083f68 orrs r3, r3, r2, lsl 24           |     r3 |= (r2 << 24);
    0x00083f6c bne 0x83fd8                       |     
                                                 |     while (r0 == r7) {
    0x00083f70 ldrb r2, [r4, 5]                  |         r2 = *((r4 + 5));
    0x00083f74 ldrb r3, [r4, 4]                  |         r3 = *((r4 + 4));
    0x00083f78 orr r3, r3, r2, lsl 8             |         r3 |= (r2 << 8);
    0x00083f7c ldrb r2, [r4, 6]                  |         r2 = *((r4 + 6));
    0x00083f80 orr r3, r3, r2, lsl 16            |         r3 |= (r2 << 16);
    0x00083f84 ldrb r2, [r4, 7]                  |         r2 = *((r4 + 7));
    0x00083f88 orrs r3, r3, r2, lsl 24           |         r3 |= (r2 << 24);
                                                 |         if (r3 != r3) {
    0x00083f8c bne 0x8407c                       |             goto label_3;
                                                 |         }
                                                 | label_0:
    0x00083f90 mov r0, 8                         |         r0 = 8;
    0x00083f94 bl 0x18968                        |         fcn_00018968 (r0);
    0x00083f98 ldrb r2, [r4, 1]                  |         r2 = *((r4 + 1));
    0x00083f9c ldrb r3, [r4]                     |         r3 = *(r4);
    0x00083fa0 orr r3, r3, r2, lsl 8             |         r3 |= (r2 << 8);
    0x00083fa4 ldrb r2, [r4, 2]                  |         r2 = *((r4 + 2));
    0x00083fa8 orr r3, r3, r2, lsl 16            |         r3 |= (r2 << 16);
    0x00083fac ldrb r2, [r4, 3]                  |         r2 = *((r4 + 3));
    0x00083fb0 orr r3, r3, r2, lsl 24            |         r3 |= (r2 << 24);
    0x00083fb4 stm r0, {r3, r5}                  |         *(r0) = r3;
                                                 |         *((r0 + 4)) = r5;
    0x00083fb8 lsr r3, r0, 8                     |         r3 = r0 >> 8;
    0x00083fbc strb r0, [r4]                     |         *(r4) = r0;
    0x00083fc0 strb r3, [r4, 1]                  |         *((r4 + 1)) = r3;
    0x00083fc4 lsr r3, r0, 0x10                  |         r3 = r0 >> 0x10;
    0x00083fc8 lsr r0, r0, 0x18                  |         r0 >>= 0x18;
    0x00083fcc strb r3, [r4, 2]                  |         *((r4 + 2)) = r3;
    0x00083fd0 strb r0, [r4, 3]                  |         *((r4 + 3)) = r0;
    0x00083fd4 b 0x84074                         |         goto label_1;
    0x00083fd8 mov r2, r5                        |         r2 = r5;
    0x00083fdc ldr r1, [pc, 0xf4]                |         r1 = *(0x840d4);
    0x00083fe0 add r0, sp, 0x18                  |         r0 += ptr;
    0x00083fe4 bl 0x14f48                        |         sprintf (r0, r1, r2);
    0x00083fe8 add r1, sp, 0x18                  |         r1 += ptr;
    0x00083fec mov r2, 0x1f                      |         r2 = 0x1f;
    0x00083ff0 mov r0, r1                        |         r0 = r1;
    0x00083ff4 bl 0x19740                        |         r0 = fcn_00019740 (r0);
    0x00083ff8 cmp r0, 0                         |         
                                                 |         if (r0 < 0) {
    0x00083ffc blt 0x84074                       |             goto label_1;
                                                 |         }
    0x00084000 mov r7, 0                         |         r7 = 0;
    0x00084004 mov r1, 0x28                      |         r1 = 0x28;
    0x00084008 add r0, sp, 0x18                  |         r0 += ptr;
    0x0008400c strb r7, [sp, 0x37]               |         var_37h = r7;
    0x00084010 bl 0x1517c                        |         r0 = strchr (r0, r1);
    0x00084014 cmp r0, 0                         |         
                                                 |         if (r0 == 0) {
    0x00084018 beq 0x84074                       |             goto label_1;
                                                 |         }
    0x0008401c add r6, r0, 1                     |         r6 += s1;
    0x00084020 mov r1, 0x29                      |         r1 = 0x29;
    0x00084024 mov r0, r6                        |         r0 = r6;
    0x00084028 bl 0x1496c                        |         r0 = strrchr (r0, r1);
    0x0008402c cmp r0, 0                         |         
                                                 |         if (r0 == 0) {
    0x00084030 beq 0x84074                       |             goto label_1;
                                                 |         }
    0x00084034 strb r7, [r0]                     |         *(r0) = r7;
    0x00084038 mov r0, r6                        |         r0 = r6;
    0x0008403c bl 0x1514c                        |         r0 = strlen (r0);
    0x00084040 cmp r0, 0xe                       |         
                                                 |         if (r0 > 0xe) {
    0x00084044 bhi 0x84074                       |             goto label_1;
                                                 |         }
    0x00084048 ldrb r1, [r4, 9]                  |         r1 = *((r4 + 9));
    0x0008404c ldrb r3, [r4, 8]                  |         r3 = *((r4 + 8));
    0x00084050 mov r0, r6                        |         r0 = r6;
    0x00084054 orr r3, r3, r1, lsl 8             |         r3 |= (r1 << 8);
    0x00084058 ldrb r1, [r4, 0xa]                |         r1 = *((r4 + 0xa));
    0x0008405c orr r3, r3, r1, lsl 16            |         r3 |= (r1 << 16);
    0x00084060 ldrb r1, [r4, 0xb]                |         r1 = *((r4 + 0xb));
    0x00084064 orr r1, r3, r1, lsl 24            |         r1 = r3 | (r1 << 24);
    0x00084068 bl 0x14ed0                        |         r0 = strcmp (r0, r1);
    0x0008406c cmp r0, r7                        |         
    0x00084070 beq 0x83f70                       |         
                                                 |     }
                                                 |     do {
                                                 | label_1:
    0x00084074 add sp, sp, 0x80                  |         
    0x00084078 pop {r4, r5, r6, r7, r8, pc}      |         
                                                 | label_3:
    0x0008407c mov r2, r5                        |         r2 = r5;
    0x00084080 ldr r1, [pc, 0x54]                |         r1 = "_proc__u_stat";
    0x00084084 add r0, sp, 4                     |         r0 += s;
    0x00084088 bl 0x14f48                        |         sprintf (r0, "_proc__u_stat", r2);
    0x0008408c add r1, sp, 0x18                  |         r1 += ptr;
    0x00084090 add r0, sp, 4                     |         r0 += s;
    0x00084094 bl 0x14420                        |         r0 = stat64 ();
    0x00084098 cmp r0, 0                         |         
    0x0008409c bne 0x84074                       |         
                                                 |     } while (r0 != 0);
    0x000840a0 ldrb r2, [r4, 0x1d]               |     r2 = *((r4 + 0x1d));
    0x000840a4 ldrb r3, [r4, 0x1c]               |     r3 = *((r4 + 0x1c));
    0x000840a8 orr r3, r3, r2, lsl 8             |     r3 |= (r2 << 8);
    0x000840ac ldrb r2, [r4, 0x1e]               |     r2 = *((r4 + 0x1e));
    0x000840b0 orr r3, r3, r2, lsl 16            |     r3 |= (r2 << 16);
    0x000840b4 ldrb r2, [r4, 0x1f]               |     r2 = *((r4 + 0x1f));
    0x000840b8 orr r3, r3, r2, lsl 24            |     r3 |= (r2 << 24);
    0x000840bc ldr r2, [sp, 0x30]                |     r2 = var_30h;
    0x000840c0 cmp r2, r3                        |     
                                                 |     if (r2 == r3) {
    0x000840c4 beq 0x83f90                       |         goto label_0;
                                                 |     }
    0x000840c8 b 0x84074                         |     goto label_1;
                                                 | }
    ; 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 @ 0x870ac */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) fcn.000870ac ()                                              | void fcn_000870ac (int32_t arg1, char * arg2) {
                                                                         |     int32_t var_4h;
                                                                         |     int32_t var_ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x000870ac push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x000870b0 mov r4, r0                                                |     r4 = r0;
    0x000870b4 mov r7, r1                                                |     r7 = r1;
    0x000870b8 bl 0x8705c                                                |     r0 = fcn_0008705c (r0, r1);
    0x000870bc subs r5, r0, 0                                            |     r5 = r0 - 0;
                                                                         |     if (r5 != r0) {
    0x000870c0 bne 0x87180                                               |         goto label_1;
                                                                         |     }
    0x000870c4 ldr r0, [r4]                                              |     r0 = *(r4);
    0x000870c8 ldr r1, [r4, 4]                                           |     r1 = *((r4 + 4));
    0x000870cc add r0, r0, 1                                             |     r0++;
    0x000870d0 str r0, [r4]                                              |     *(r4) = r0;
    0x000870d4 bl 0xa65d4                                                |     r0 = fcn_000a65d4 (r0, r1);
    0x000870d8 cmp r0, 0xa                                               |     
                                                                         |     if (r0 < 0xa) {
    0x000870dc bls 0x8712c                                               |         goto label_2;
                                                                         |     }
    0x000870e0 ldr r3, [r4, 8]                                           |     r3 = *((r4 + 8));
    0x000870e4 cmp r3, 5                                                 |     
                                                                         |     if (r3 == 5) {
    0x000870e8 beq 0x8712c                                               |         goto label_2;
                                                                         |     }
    0x000870ec add r2, r3, 1                                             |     r2 = r3 + 1;
    0x000870f0 str r2, [r4, 8]                                           |     *((r4 + 8)) = r2;
    0x000870f4 ldr r2, [pc, 0xd0]                                        |     r2 = *(0x871c8);
    0x000870f8 lsl r3, r3, 1                                             |     r3 <<= 1;
    0x000870fc ldrh sb, [r2, r3]                                         |     sb = *((r2 + r3));
    0x00087100 lsl r0, sb, 2                                             |     r0 = sb << 2;
    0x00087104 bl 0x189b8                                                |     fcn_000189b8 (r0);
    0x00087108 ldr fp, [r4, 4]                                           |     fp = *((r4 + 4));
    0x0008710c ldr sl, [r4, 0x10]                                        |     sl = *((r4 + 0x10));
    0x00087110 mov r8, r0                                                |     r8 = r0;
                                                                         |     do {
    0x00087114 cmp r5, fp                                                |         
                                                                         |         if (r5 == fp) {
    0x00087118 bne 0x8718c                                               |             
    0x0008711c mov r0, sl                                                |             r0 = sl;
    0x00087120 bl 0x152a8                                                |             free (r0);
    0x00087124 str sb, [r4, 4]                                           |             *((r4 + 4)) = sb;
    0x00087128 str r8, [r4, 0x10]                                        |             *((r4 + 0x10)) = r8;
                                                                         | label_2:
    0x0008712c mov r0, r7                                                |             r0 = r7;
    0x00087130 bl 0x1514c                                                |             r0 = strlen (r0);
    0x00087134 mov r6, r0                                                |             r6 = r0;
    0x00087138 add r0, r0, 0x21                                          |             r0 += 0x21;
    0x0008713c bl 0x189b8                                                |             fcn_000189b8 (r0);
    0x00087140 mov r1, r7                                                |             r1 = r7;
    0x00087144 mov r5, r0                                                |             r5 = r0;
    0x00087148 add r0, r0, 0x1c                                          |             r0 += 0x1c;
    0x0008714c bl 0x142f4                                                |             strcpy (r0, r1)
    0x00087150 mov r0, r7                                                |             r0 = r7;
    0x00087154 bl 0x869e0                                                |             fcn_000869e0 (r0);
    0x00087158 ldr r1, [r4, 4]                                           |             r1 = *((r4 + 4));
    0x0008715c bl 0xa667c                                                |             fcn_000a667c (r0, r1);
    0x00087160 ldr r3, [r4, 0x10]                                        |             r3 = *((r4 + 0x10));
    0x00087164 ldr r0, [r4, 0xc]                                         |             r0 = *((r4 + 0xc));
    0x00087168 add r0, r0, 1                                             |             r0++;
    0x0008716c add r0, r0, r6                                            |             r0 += r6;
    0x00087170 ldr r2, [r3, r1, lsl 2]                                   |             offset_0 = r1 << 2;
                                                                         |             r2 = *((r3 + offset_0));
    0x00087174 str r2, [r5, 0x18]                                        |             *((r5 + 0x18)) = r2;
    0x00087178 str r5, [r3, r1, lsl 2]                                   |             offset_1 = r1 << 2;
                                                                         |             *((r3 + offset_1)) = r5;
    0x0008717c str r0, [r4, 0xc]                                         |             *((r4 + 0xc)) = r0;
                                                                         | label_1:
    0x00087180 mov r0, r5                                                |             r0 = r5;
    0x00087184 add sp, sp, 0xc                                           |             
    0x00087188 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |             
                                                                         |         }
    0x0008718c ldr r6, [sl, r5, lsl 2]                                   |         offset_2 = r5 << 2;
                                                                         |         r6 = *((sl + offset_2));
                                                                         | label_0:
    0x00087190 cmp r6, 0                                                 |         
                                                                         |         if (r6 != 0) {
    0x00087194 addeq r5, r5, 1                                           |             r5++;
                                                                         |         }
    0x00087198 beq 0x87114                                               |         
                                                                         |     } while (r6 == 0);
    0x0008719c ldr r3, [r6, 0x18]                                        |     r3 = *((r6 + 0x18));
    0x000871a0 add r0, r6, 0x1c                                          |     r0 = r6 + 0x1c;
    0x000871a4 str r3, [sp, 4]                                           |     var_4h = r3;
    0x000871a8 bl 0x869e0                                                |     fcn_000869e0 (r0);
    0x000871ac mov r1, sb                                                |     r1 = sb;
    0x000871b0 bl 0xa667c                                                |     fcn_000a667c (r0, r1);
    0x000871b4 ldr r3, [sp, 4]                                           |     r3 = var_4h;
    0x000871b8 ldr r2, [r8, r1, lsl 2]                                   |     offset_3 = r1 << 2;
                                                                         |     r2 = *((r8 + offset_3));
    0x000871bc str r2, [r6, 0x18]                                        |     *((r6 + 0x18)) = r2;
    0x000871c0 str r6, [r8, r1, lsl 2]                                   |     offset_4 = r1 << 2;
                                                                         |     *((r8 + offset_4)) = r6;
    0x000871c4 mov r6, r3                                                |     r6 = r3;
    0x000871c8 b 0x87190                                                 |     goto label_0;
                                                                         | }
    ; 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 @ 0x87524 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00087524 ()                              | void fcn_00087524 (int32_t arg1, int32_t arg2) {
                                                         |     int32_t var_0h;
                                                         |     char * var_8h;
                                                         |     int32_t var_9h;
                                                         |     char * s2;
                                                         |     char * s1;
                                                         |     int32_t var_10h;
                                                         |     int32_t var_14h;
                                                         |     int32_t var_20h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x00087524 push {r4, r5, r6, r7, r8, sb, sl, lr}     |     
    0x00087528 sub sp, sp, 0x20                          |     
    0x0008752c mov r4, r2                                |     r4 = r2;
    0x00087530 mov r8, r1                                |     r8 = r1;
    0x00087534 mov r5, r0                                |     r5 = r0;
    0x00087538 bl 0x1514c                                |     r0 = strlen (r0);
    0x0008753c lsl r0, r0, 1                             |     r0 <<= 1;
    0x00087540 add r0, r0, 3                             |     r0 += 3;
    0x00087544 bl 0x189b8                                |     fcn_000189b8 (r0);
    0x00087548 mov r1, r5                                |     r1 = r5;
    0x0008754c str r0, [r4]                              |     *(r4) = r0;
    0x00087550 ldr r4, [pc, 0x25c]                       |     r4 = *(0x877b0);
    0x00087554 str r0, [sp, 0xc]                         |     s1 = r0;
    0x00087558 bl 0x142f4                                |     strcpy (r0, r1)
    0x0008755c ldrb r3, [r8]                             |     r3 = *(r8);
    0x00087560 ldr r6, [r4]                              |     r6 = *(0x877b0);
    0x00087564 strb r3, [sp, 9]                          |     var_9h = r3;
    0x00087568 strb r3, [sp, 8]                          |     var_8h = r3;
    0x0008756c ldr r0, [r6, 0x24]                        |     r0 = *(0x877d4);
    0x00087570 mov r3, 0                                 |     r3 = 0;
    0x00087574 strh r3, [sp, 0xa]                        |     s2 = r3;
    0x00087578 bl 0x87498                                |     r0 = fcn_00087498 (r0);
    0x0008757c ldrb r3, [r0]                             |     r3 = *(r0);
    0x00087580 cmp r3, 0                                 |     
                                                         |     if (r3 != 0) {
    0x00087584 moveq r2, 0xa                             |         r2 = 0xa;
                                                         |     }
                                                         |     if (r3 != 0) {
    0x00087588 strbeq r2, [sp, 0xa]                      |         s2 = r2;
                                                         |     }
    0x0008758c ldr r2, [r8]                              |     r2 = *(r8);
    0x00087590 mov r3, r4                                |     r3 = r4;
    0x00087594 and r2, r2, 0xff00                        |     r2 &= 0xff00;
    0x00087598 cmp r2, 0x2100                            |     
                                                         |     if (r2 != 0x2100) {
    0x0008759c bne 0x87688                               |         goto label_7;
                                                         |     }
    0x000875a0 ldrb r4, [r5]                             |     r4 = *(r5);
    0x000875a4 cmp r4, 0                                 |     
                                                         |     if (r4 == 0) {
    0x000875a8 beq 0x87664                               |         goto label_3;
                                                         |     }
    0x000875ac ldr sl, [r3]                              |     sl = *(r3);
    0x000875b0 mov r4, 1                                 |     r4 = 1;
    0x000875b4 mov sb, 0                                 |     sb = 0;
                                                         | label_0:
    0x000875b8 add r1, sp, 0xa                           |     r1 += s2;
    0x000875bc mov r0, r5                                |     r0 = r5;
    0x000875c0 bl 0x14f60                                |     strcspn (r0, r1);
    0x000875c4 ldr r3, [sl, -0x1c]                       |     r3 = *((sl - 0x1c));
    0x000875c8 mov r2, 1                                 |     r2 = 1;
    0x000875cc cmp r3, 0                                 |     
    0x000875d0 str sb, [sp]                              |     *(sp) = sb;
    0x000875d4 add r3, sp, 0x10                          |     r3 += var_10h;
    0x000875d8 mov r1, r5                                |     r1 = r5;
    0x000875dc mov r7, r0                                |     r7 = r0;
    0x000875e0 mov r6, r0                                |     r6 = r0;
                                                         |     if (r3 == 0) {
    0x000875e4 ldrne r0, [r8, 0xc]                       |         r0 = *((r8 + 0xc));
                                                         |     }
                                                         |     if (r3 != 0) {
    0x000875e8 ldreq r0, [r8, 8]                         |         r0 = *((r8 + 8));
                                                         |     }
    0x000875ec bl 0x14e34                                |     r0 = regexec ();
    0x000875f0 cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x000875f4 bne 0x87670                               |         goto label_8;
                                                         |     }
    0x000875f8 ldr r3, [sp, 0x10]                        |     r3 = var_10h;
    0x000875fc cmp r3, r7                                |     
                                                         |     if (r3 > r7) {
    0x00087600 bgt 0x87670                               |         goto label_8;
                                                         |     }
    0x00087604 ldr r1, [sp, 0x14]                        |     r1 = var_14h;
    0x00087608 add r2, r3, 1                             |     r2 = r3 + 1;
    0x0008760c cmp r1, 0                                 |     
                                                         |     if (r1 != 0) {
    0x00087610 moveq r3, 1                               |         r3 = 1;
                                                         |     }
                                                         |     if (r1 != 0) {
    0x00087614 streq r3, [sp, 0x14]                      |         var_14h = r3;
                                                         |     }
                                                         |     if (r1 != 0) {
    0x00087618 moveq r3, r2                              |         r3 = r2;
                                                         |     }
    0x0008761c add r4, r4, 1                             |     r4++;
    0x00087620 mov r6, r3                                |     r6 = r3;
                                                         | label_1:
    0x00087624 mov r2, r6                                |     r2 = r6;
    0x00087628 mov r1, r5                                |     r1 = r5;
    0x0008762c ldr r0, [sp, 0xc]                         |     r0 = s1;
    0x00087630 bl 0x14624                                |     memcpy (r0, r1, r2);
                                                         |     do {
    0x00087634 ldr r3, [sp, 0xc]                         |         r3 = s1;
    0x00087638 strb sb, [r3, r6]                         |         *((r3 + r6)) = sb;
    0x0008763c ldr r3, [sp, 0x14]                        |         r3 = var_14h;
    0x00087640 add r6, r6, 1                             |         r6++;
    0x00087644 cmp r3, r6                                |         
    0x00087648 bgt 0x87634                               |         
                                                         |     } while (r3 > r6);
    0x0008764c add r0, sp, 0xc                           |     r0 += s1;
    0x00087650 bl 0x86a4c                                |     fcn_00086a4c (r0);
    0x00087654 ldr r3, [sp, 0x14]                        |     r3 = var_14h;
    0x00087658 ldrb r3, [r5, r3]!                        |     r3 = *((r5 += r3));
    0x0008765c cmp r3, 0                                 |     
                                                         |     if (r3 != 0) {
    0x00087660 bne 0x875b8                               |         goto label_0;
                                                         |     }
                                                         |     do {
                                                         | label_3:
    0x00087664 mov r0, r4                                |         r0 = r4;
    0x00087668 add sp, sp, 0x20                          |         
    0x0008766c pop {r4, r5, r6, r7, r8, sb, sl, pc}      |         
                                                         | label_8:
    0x00087670 ldrb r2, [r5, r7]                         |         r2 = *((r5 + r7));
    0x00087674 add r3, r7, 1                             |         r3 = r7 + 1;
    0x00087678 cmp r2, 0                                 |         
    0x0008767c str r7, [sp, 0x14]                        |         var_14h = r7;
                                                         |         if (r2 == 0) {
    0x00087680 strne r3, [sp, 0x14]                      |             var_14h = r3;
                                                         |         }
    0x00087684 b 0x87624                                 |         goto label_1;
                                                         | label_7:
    0x00087688 ldrb r3, [sp, 8]                          |         r3 = var_8h;
    0x0008768c cmp r3, 0                                 |         
                                                         |         if (r3 != 0) {
    0x00087690 moveq r2, r5                              |             r2 = r5;
                                                         |         }
                                                         |         if (r3 == 0) {
    0x00087694 beq 0x87734                               |             goto label_9;
                                                         |         }
    0x00087698 cmp r3, 0x20                              |         
                                                         |         if (r3 == 0x20) {
    0x0008769c beq 0x877a8                               |             goto label_10;
                                                         |         }
    0x000876a0 ldr r2, [r6, -0x1c]                       |         r2 = *((r6 - 0x1c));
    0x000876a4 cmp r2, 0                                 |         
                                                         |         if (r2 != 0) {
    0x000876a8 beq 0x876d8                               |             
    0x000876ac sub r2, r3, 0x61                          |             r2 = r3 - 0x61;
    0x000876b0 cmp r2, 0x19                              |             
                                                         |             if (r2 > 0x19) {
    0x000876b4 subls r3, r3, 0x20                        |                 r3 -= 0x20;
                                                         |             }
                                                         |             if (r2 > 0x19) {
    0x000876b8 andls r3, r3, 0xff                        |                 r3 &= 0xff;
                                                         |             }
    0x000876bc strb r3, [sp, 8]                          |             var_8h = r3;
    0x000876c0 ldrb r3, [sp, 9]                          |             r3 = var_9h;
    0x000876c4 sub r2, r3, 0x41                          |             r2 = r3 - 0x41;
    0x000876c8 cmp r2, 0x19                              |             
                                                         |             if (r2 > 0x19) {
    0x000876cc addls r3, r3, 0x20                        |                 r3 += 0x20;
                                                         |             }
                                                         |             if (r2 > 0x19) {
    0x000876d0 andls r3, r3, 0xff                        |                 r3 &= 0xff;
                                                         |             }
    0x000876d4 strb r3, [sp, 9]                          |             var_9h = r3;
                                                         |         }
    0x000876d8 ldr r3, [sp, 0xc]                         |         r3 = s1;
    0x000876dc mov r5, 0                                 |         r5 = 0;
    0x000876e0 ldrb r4, [r3]                             |         r4 = *(r3);
    0x000876e4 adds r4, r4, 0                            |         r4 += 0;
                                                         |         if (r4 == r4) {
    0x000876e8 movne r4, 1                               |             r4 = 1;
                                                         |         }
                                                         | label_2:
    0x000876ec add r1, sp, 8                             |         r1 += var_8h;
    0x000876f0 ldr r0, [sp, 0xc]                         |         r0 = s1;
    0x000876f4 bl 0x15278                                |         r0 = strpbrk (r0, r1);
    0x000876f8 cmp r0, 0                                 |         
    0x000876fc beq 0x87664                               |         
                                                         |     } while (r0 == 0);
    0x00087700 add r3, r0, 1                             |     r3 = r0 + 1;
    0x00087704 str r3, [sp, 0xc]                         |     s1 = r3;
    0x00087708 add r4, r4, 1                             |     r4++;
    0x0008770c strb r5, [r0]                             |     *(r0) = r5;
    0x00087710 b 0x876ec                                 |     goto label_2;
                                                         |     do {
    0x00087714 ldr r0, [sp, 0xc]                         |         r0 = s1;
    0x00087718 add ip, r0, 1                             |         
    0x0008771c str ip, [sp, 0xc]                         |         s1 = ip;
    0x00087720 strb r1, [r0]                             |         *(r0) = r1;
    0x00087724 ldr r1, [sp, 0xc]                         |         r1 = s1;
    0x00087728 add r0, r1, 1                             |         r0 = r1 + 1;
    0x0008772c str r0, [sp, 0xc]                         |         s1 = r0;
    0x00087730 strb r3, [r1]                             |         *(r1) = r3;
                                                         | label_9:
    0x00087734 sub r4, r2, r5                            |         r4 = r2 - r5;
    0x00087738 ldrb r1, [r2], 1                          |         r1 = *(r2);
                                                         |         r2++;
    0x0008773c cmp r1, 0                                 |         
    0x00087740 bne 0x87714                               |         
                                                         |     } while (r1 != 0);
    0x00087744 b 0x87664                                 |     goto label_3;
                                                         | label_4:
    0x00087748 mov r0, r5                                |     r0 = r5;
    0x0008774c bl 0xa4434                                |     r0 = fcn_000a4434 (r0);
    0x00087750 ldrb r3, [r0]                             |     r3 = *(r0);
    0x00087754 cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x00087758 beq 0x87664                               |         goto label_3;
                                                         |     }
    0x0008775c add r4, r4, 1                             |     r4++;
                                                         | label_5:
    0x00087760 ldr r2, [sp, 0xc]                         |     r2 = s1;
    0x00087764 mov r5, r0                                |     r5 = r0;
    0x00087768 ldrb r3, [r0], 1                          |     r3 = *(r0);
                                                         |     r0++;
    0x0008776c add r1, r2, 1                             |     r1 = r2 + 1;
    0x00087770 tst r3, 0xdf                              |     
    0x00087774 str r1, [sp, 0xc]                         |     s1 = r1;
                                                         |     if ((r3 & 0xdf) != 0) {
    0x00087778 beq 0x87788                               |         
    0x0008777c sub r3, r3, 9                             |         r3 -= 9;
    0x00087780 cmp r3, 4                                 |         
                                                         |         if (r3 > 4) {
    0x00087784 bhi 0x8779c                               |             goto label_11;
                                                         |         }
                                                         |     }
    0x00087788 strb r6, [r2]                             |     *(r2) = r6;
                                                         | label_6:
    0x0008778c ldrb r3, [r5]                             |     r3 = *(r5);
    0x00087790 cmp r3, 0                                 |     
                                                         |     if (r3 != 0) {
    0x00087794 bne 0x87748                               |         goto label_4;
                                                         |     }
    0x00087798 b 0x87664                                 |     goto label_3;
                                                         | label_11:
    0x0008779c ldrb r3, [r0, -1]                         |     r3 = *((r0 - 1));
    0x000877a0 strb r3, [r2]                             |     *(r2) = r3;
    0x000877a4 b 0x87760                                 |     goto label_5;
                                                         | label_10:
    0x000877a8 mov r4, 0                                 |     r4 = 0;
    0x000877ac mov r6, r4                                |     r6 = r4;
    0x000877b0 b 0x8778c                                 |     goto label_6;
                                                         | }
    ; 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;
                                                             | }
    ; 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 @ 0x89dc0 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00089dc0 ()                                  | void fcn_00089dc0 (int32_t arg_c8h, int32_t arg_cch, int32_t arg1, char * arg2) {
                                                             |     int32_t var_0h;
                                                             |     void * s1;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     char * s;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_2ch;
                                                             |     int32_t var_30h;
                                                             |     int32_t var_50h;
                                                             |     int32_t var_54h;
                                                             |     int32_t var_a0h;
                                                             |     int32_t var_a4h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00089dc0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00089dc4 sub sp, sp, 0xa4                              |     
    0x00089dc8 str r1, [sp, 0x14]                            |     s = r1;
    0x00089dcc add r1, sp, 0x30                              |     r1 += var_30h;
    0x00089dd0 mov r4, r3                                    |     r4 = r3;
    0x00089dd4 str r2, [sp, 0x18]                            |     var_18h = r2;
    0x00089dd8 bl 0x89d1c                                    |     fcn_00089d1c (r0, r1);
    0x00089ddc cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00089de0 ldreq r3, [pc, 0x250]                         |         r3 = *(0x0008a038);
                                                             |     }
                                                             |     if (r4 != 0) {
    0x00089de4 ldreq r3, [r3]                                |         r3 = *(r3);
                                                             |     }
    0x00089de8 mov sl, r0                                    |     sl = r0;
                                                             |     if (r4 != 0) {
    0x00089dec ldreq r4, [r3, 0x34]                          |         r4 = *((r3 + 0x34));
                                                             |     }
    0x00089df0 mov r0, r4                                    |     r0 = r4;
    0x00089df4 bl 0x87498                                    |     r0 = fcn_00087498 (r0);
    0x00089df8 mov r7, r0                                    |     r7 = r0;
    0x00089dfc ldr r0, [sp, 0x14]                            |     r0 = s;
    0x00089e00 bl 0x1514c                                    |     strlen (r0);
    0x00089e04 mov r3, 0                                     |     r3 = 0;
    0x00089e08 mov r4, r3                                    |     r4 = r3;
    0x00089e0c mov sb, r3                                    |     sb = r3;
    0x00089e10 mov r6, r3                                    |     r6 = r3;
    0x00089e14 str r0, [sp, 0xc]                             |     var_ch = r0;
                                                             | label_1:
    0x00089e18 str r3, [sp]                                  |     *(sp) = r3;
    0x00089e1c mov r2, 0xa                                   |     r2 = 0xa;
    0x00089e20 add r3, sp, 0x50                              |     r3 += var_50h;
    0x00089e24 mov r1, r7                                    |     r1 = r7;
    0x00089e28 mov r0, sl                                    |     r0 = sl;
    0x00089e2c bl 0x14e34                                    |     regexec ();
    0x00089e30 mov r3, r4                                    |     r3 = r4;
    0x00089e34 subs r5, r0, 0                                |     r5 = r0 - 0;
    0x00089e38 beq 0x89ea8                                   |     
                                                             |     while (sb == r3) {
    0x00089e3c mov r0, r7                                    |         r0 = r7;
    0x00089e40 bl 0x1514c                                    |         strlen (r0);
    0x00089e44 add r2, sp, 0x2c                              |         r2 += var_2ch;
    0x00089e48 add r1, r0, r4                                |         r1 = r0 + r4;
    0x00089e4c mov r0, r6                                    |         r0 = r6;
    0x00089e50 bl 0x86c18                                    |         fcn_00086c18 (r0, r1);
    0x00089e54 mov r1, r7                                    |         r1 = r7;
    0x00089e58 mov r6, r0                                    |         r6 = r0;
    0x00089e5c add r0, r0, r4                                |         r0 += r4;
    0x00089e60 bl 0x142f4                                    |         strcpy (r0, r1)
                                                             | label_0:
    0x00089e64 ldr r3, [sp, 0xc8]                            |         r3 = *(arg_c8h);
    0x00089e68 mov r1, r6                                    |         r1 = r6;
    0x00089e6c cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00089e70 ldreq r3, [pc, 0x1c0]                         |             r3 = *(0x0008a038);
                                                             |         }
                                                             |         if (r3 != 0) {
    0x00089e74 ldreq r3, [r3]                                |             r3 = *(r3);
                                                             |         }
                                                             |         if (r3 != 0) {
    0x00089e78 ldreq r3, [r3, 0x34]                          |             r3 = *((r3 + 0x34));
                                                             |         }
                                                             |         if (r3 != 0) {
    0x00089e7c streq r3, [sp, 0xc8]                          |             *(arg_c8h) = r3;
                                                             |         }
    0x00089e80 ldr r0, [sp, 0xc8]                            |         r0 = *(arg_c8h);
    0x00089e84 bl 0x87a44                                    |         fcn_00087a44 (r0, r1);
    0x00089e88 add r3, sp, 0x30                              |         r3 += var_30h;
    0x00089e8c cmp sl, r3                                    |         
                                                             |         if (sl == r3) {
    0x00089e90 bne 0x89e9c                                   |             
    0x00089e94 mov r0, sl                                    |             r0 = sl;
    0x00089e98 bl 0x15170                                    |             regfree ();
                                                             |         }
    0x00089e9c mov r0, sb                                    |         r0 = sb;
    0x00089ea0 add sp, sp, 0xa4                              |         
    0x00089ea4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
    0x00089ea8 str r3, [sp, 8]                               |         s1 = r3;
    0x00089eac ldr r3, [sp, 0x50]                            |         r3 = var_50h;
    0x00089eb0 ldr fp, [sp, 0x54]                            |         fp = var_54h;
    0x00089eb4 str r3, [sp, 0x10]                            |         var_10h = r3;
    0x00089eb8 ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00089ebc add r4, r4, fp                                |         r4 += fp;
    0x00089ec0 add r8, sp, 0x2c                              |         r8 += var_2ch;
    0x00089ec4 add r1, r4, r3                                |         r1 = r4 + r3;
    0x00089ec8 mov r2, r8                                    |         r2 = r8;
    0x00089ecc mov r0, r6                                    |         r0 = r6;
    0x00089ed0 bl 0x86c18                                    |         fcn_00086c18 (r0, r1);
    0x00089ed4 ldr r3, [sp, 8]                               |         r3 = s1;
    0x00089ed8 mov r2, fp                                    |         r2 = fp;
    0x00089edc mov r1, r7                                    |         r1 = r7;
    0x00089ee0 add sb, sb, 1                                 |         sb++;
    0x00089ee4 mov r6, r0                                    |         r6 = r0;
    0x00089ee8 add r0, r0, r3                                |         r0 += r3;
    0x00089eec bl 0x14624                                    |         memcpy (r0, r1, r2);
    0x00089ef0 ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00089ef4 cmp sb, r3                                    |         
                                                             |         if (sb >= r3) {
    0x00089ef8 blt 0x89f3c                                   |             
    0x00089efc ldr r3, [sp, 0x10]                            |             r3 = var_10h;
    0x00089f00 str r8, [sp, 0x20]                            |             var_20h = r8;
    0x00089f04 sub r3, fp, r3                                |             r3 = fp - r3;
    0x00089f08 sub r4, r4, r3                                |             r4 -= r3;
    0x00089f0c ldr r3, [sp, 0x14]                            |             r3 = s;
    0x00089f10 sub r3, r3, 1                                 |             r3--;
    0x00089f14 str r3, [sp, 8]                               |             s1 = r3;
    0x00089f18 ldr r3, [sp, 0xcc]                            |             r3 = *(arg_cch);
    0x00089f1c and r3, r3, 1                                 |             r3 &= 1;
    0x00089f20 str r3, [sp, 0x24]                            |             var_24h = r3;
                                                             | label_2:
    0x00089f24 ldr r2, [sp, 8]                               |             r2 = s1;
    0x00089f28 ldrb r3, [r2, 1]!                             |             r3 = *((r2 += 1));
    0x00089f2c cmp r3, 0                                     |             
    0x00089f30 str r2, [sp, 8]                               |             s1 = r2;
    0x00089f34 mov r2, r4                                    |             r2 = r4;
                                                             |             if (r3 != 0) {
    0x00089f38 bne 0x89f7c                                   |                 goto label_3;
                                                             |             }
                                                             |         }
    0x00089f3c ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00089f40 add r7, r7, fp                                |         r7 += fp;
    0x00089f44 cmp sb, r3                                    |         
    0x00089f48 beq 0x89e3c                                   |         
                                                             |     }
    0x00089f4c ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00089f50 cmp r3, fp                                    |     
                                                             |     if (r3 != fp) {
    0x00089f54 bne 0x89f74                                   |         goto label_4;
                                                             |     }
    0x00089f58 ldrb r3, [r7]                                 |     r3 = *(r7);
    0x00089f5c strb r3, [r6, r4]                             |     *((r6 + r4)) = r3;
    0x00089f60 ldrb r3, [r7]                                 |     r3 = *(r7);
    0x00089f64 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00089f68 beq 0x89e64                                   |         goto label_0;
                                                             |     }
    0x00089f6c add r7, r7, 1                                 |     r7++;
    0x00089f70 add r4, r4, 1                                 |     r4++;
                                                             | label_4:
    0x00089f74 mov r3, 1                                     |     r3 = 1;
    0x00089f78 b 0x89e18                                     |     goto label_1;
                                                             | label_3:
    0x00089f7c cmp r3, 0x5c                                  |     
    0x00089f80 add r4, r4, 1                                 |     r4++;
    0x00089f84 strb r3, [r6, r2]                             |     *((r6 + r2)) = r3;
                                                             |     if (r3 == 0x5c) {
    0x00089f88 addeq r5, r5, 1                               |         r5++;
                                                             |         goto label_5;
                                                             |     }
                                                             |     if (r3 == 0x5c) {
                                                             | label_5:
    0x00089f8c beq 0x89f24                                   |         goto label_2;
                                                             |     }
    0x00089f90 cmp r3, 0x26                                  |     
                                                             |     if (r3 == 0x26) {
    0x00089f94 beq 0x89fb8                                   |         goto label_6;
                                                             |     }
    0x00089f98 ldr r1, [sp, 0x24]                            |     r1 = var_24h;
    0x00089f9c sub r2, r3, 0x30                              |     r2 = r3 - 0x30;
    0x00089fa0 cmp r2, 9                                     |     
                                                             |     if (r2 <= 9) {
    0x00089fa4 movhi r1, 0                                   |         r1 = 0;
                                                             |     }
                                                             |     if (r2 > 9) {
    0x00089fa8 andls r1, r1, 1                               |         r1 &= 1;
                                                             |     }
    0x00089fac cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00089fb0 moveq r5, r1                                  |         r5 = r1;
                                                             |         goto label_7;
                                                             |     }
                                                             |     if (r1 == 0) {
                                                             | label_7:
    0x00089fb4 beq 0x89f24                                   |         goto label_2;
                                                             |     }
                                                             | label_6:
    0x00089fb8 cmp r3, 0x26                                  |     
    0x00089fbc add r8, r5, 3                                 |     r8 = r5 + 3;
                                                             |     if (r3 == 0x26) {
    0x00089fc0 addne r5, r5, 1                               |         r5++;
                                                             |     }
    0x00089fc4 sub r8, r4, r8, asr 1                         |     r8 = r4 - (r8 >> 1);
                                                             |     if (r3 == 0x26) {
    0x00089fc8 subne r4, r3, 0x30                            |         r4 = r3 - 0x30;
                                                             |     }
                                                             |     if (r3 != 0x26) {
    0x00089fcc moveq r4, 0                                   |         r4 = 0;
                                                             |     }
    0x00089fd0 ands r2, r5, 1                                |     r2 = r5 & 1;
    0x00089fd4 str r2, [sp, 0x1c]                            |     var_1ch = r2;
                                                             |     if (r2 == r5) {
    0x00089fd8 beq 0x89fec                                   |         goto label_8;
                                                             |     }
    0x00089fdc add r4, r8, 1                                 |     r4 = r8 + 1;
    0x00089fe0 strb r3, [r6, r8]                             |     *((r6 + r8)) = r3;
                                                             |     do {
    0x00089fe4 mov r5, 0                                     |         r5 = 0;
    0x00089fe8 b 0x89f24                                     |         goto label_2;
                                                             | label_8:
    0x00089fec add r3, sp, 0xa0                              |         r3 += var_a0h;
    0x00089ff0 add r4, r3, r4, lsl 3                         |         r4 = r3 + (r4 << 3);
    0x00089ff4 ldr r2, [r4, -0x4c]                           |         r2 = *((r4 - 0x4c));
    0x00089ff8 ldr r3, [r4, -0x50]                           |         r3 = *((r4 - 0x50));
    0x00089ffc mov r0, r6                                    |         r0 = r6;
    0x0008a000 sub r5, r2, r3                                |         r5 = r2 - r3;
    0x0008a004 ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x0008a008 ldr r2, [sp, 0x20]                            |         r2 = var_20h;
    0x0008a00c add r1, r3, r8                                |         r1 = r3 + r8;
    0x0008a010 add r1, r1, r5                                |         r1 += r5;
    0x0008a014 bl 0x86c18                                    |         fcn_00086c18 (r0, r1);
    0x0008a018 ldr r1, [r4, -0x50]                           |         r1 = *((r4 - 0x50));
    0x0008a01c mov r2, r5                                    |         r2 = r5;
    0x0008a020 add r1, r7, r1                                |         r1 = r7 + r1;
    0x0008a024 add r4, r8, r5                                |         r4 = r8 + r5;
    0x0008a028 mov r6, r0                                    |         r6 = r0;
    0x0008a02c add r0, r0, r8                                |         r0 += r8;
    0x0008a030 bl 0x14624                                    |         memcpy (r0, r1, r2);
    0x0008a034 b 0x89fe4                                     |         
                                                             |     } while (1);
                                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x8e5d4 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) fcn.0008e5d4 ()                                  | void fcn_0008e5d4 () {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_28h;
                                                             |     int32_t var_2ch;
                                                             |     int32_t var_36h;
                                                             |     void * ptr;
                                                             |     int32_t var_38h;
                                                             |     int32_t var_3ch;
    0x0008e5d4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x0008e5d8 ldr r4, [pc, 0xe04]                           |     r4 = *(0x8f3e0);
    0x0008e5dc sub sp, sp, 0x3c                              |     
    0x0008e5e0 add r1, sp, 0x38                              |     r1 += var_38h;
    0x0008e5e4 mov r3, 0xa                                   |     r3 = 0xa;
    0x0008e5e8 strb r3, [r1, -2]!                            |     *((r1 -= 2)) = r3;
    0x0008e5ec add r0, sp, 0x37                              |     r0 += ptr;
    0x0008e5f0 bl 0x8e3ec                                    |     fcn_0008e3ec (r0, r1);
    0x0008e5f4 mov sl, 0                                     |     sl = 0;
    0x0008e5f8 mov r6, r0                                    |     r6 = r0;
                                                             | label_16:
    0x0008e5fc cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x0008e600 beq 0x8f3dc                                   |         goto label_27;
                                                             |     }
    0x0008e604 add r1, sp, 0x36                              |     r1 += var_36h;
    0x0008e608 add r0, sp, 0x37                              |     r0 += ptr;
    0x0008e60c ldrb fp, [sp, 0x37]                           |     fp = ptr;
    0x0008e610 bl 0x8e3ec                                    |     fcn_0008e3ec (r0, r1);
    0x0008e614 add sl, sl, 1                                 |     sl++;
    0x0008e618 mov r3, 0                                     |     r3 = 0;
    0x0008e61c str r3, [sp, 0xc]                             |     var_ch = r3;
    0x0008e620 mov sb, r0                                    |     sb = r0;
                                                             | label_7:
    0x0008e624 ldrb r3, [r4, 0x7d]                           |     r3 = *((r4 + 0x7d));
    0x0008e628 ldrb r5, [r4, 0x7c]                           |     r5 = *((r4 + 0x7c));
    0x0008e62c orr r5, r5, r3, lsl 8                         |     r5 |= (r3 << 8);
    0x0008e630 ldrb r3, [r4, 0x7e]                           |     r3 = *((r4 + 0x7e));
    0x0008e634 orr r5, r5, r3, lsl 16                        |     r5 |= (r3 << 16);
    0x0008e638 ldrb r3, [r4, 0x7f]                           |     r3 = *((r4 + 0x7f));
    0x0008e63c orr r5, r5, r3, lsl 24                        |     r5 |= (r3 << 24);
                                                             | label_6:
    0x0008e640 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x0008e644 beq 0x8f04c                                   |         goto label_20;
                                                             |     }
    0x0008e648 ldrb r3, [r5, 0x2c]                           |     r3 = *((r5 + 0x2c));
    0x0008e64c ldr r2, [r5, 0x10]                            |     r2 = *((r5 + 0x10));
    0x0008e650 lsr r7, r3, 1                                 |     r7 = r3 >> 1;
    0x0008e654 tst r3, 2                                     |     
    0x0008e658 and r7, r7, 1                                 |     r7 &= 1;
                                                             |     if ((r3 & 2) != 0) {
    0x0008e65c bne 0x8e68c                                   |         goto label_2;
                                                             |     }
    0x0008e660 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x0008e664 bne 0x8e6f4                                   |         goto label_28;
                                                             |     }
    0x0008e668 ldr r1, [r5, 0x18]                            |     r1 = *((r5 + 0x18));
    0x0008e66c ldr r2, [r5, 4]                               |     r2 = *((r5 + 4));
    0x0008e670 cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x0008e674 bne 0x8e728                                   |         goto label_29;
                                                             |     }
    0x0008e678 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x0008e67c bne 0x8e728                                   |         goto label_29;
                                                             |     }
    0x0008e680 ldr r2, [r5, 8]                               |     r2 = *((r5 + 8));
    0x0008e684 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
                                                             | label_0:
    0x0008e688 bne 0x8e728                                   |         goto label_29;
                                                             |     }
                                                             |     do {
                                                             | label_2:
    0x0008e68c orr r3, r3, 2                                 |         r3 |= 2;
    0x0008e690 strb r3, [r5, 0x2c]                           |         *((r5 + 0x2c)) = r3;
    0x0008e694 ldr r3, [r5, 0x18]                            |         r3 = *((r5 + 0x18));
    0x0008e698 cmn r3, 1                                     |         
                                                             |         if (r3 >= 1) {
    0x0008e69c sublt r3, sl, r3                              |             r3 = sl - r3;
                                                             |         }
                                                             |         if (r3 >= 1) {
    0x0008e6a0 sublt r3, r3, 2                               |             r3 -= 2;
                                                             |         }
                                                             |         if (r3 >= 1) {
    0x0008e6a4 strlt r3, [r5, 0x18]                          |             *((r5 + 0x18)) = r3;
                                                             |         }
    0x0008e6a8 ldr r3, [r5, 0x10]                            |         r3 = *((r5 + 0x10));
    0x0008e6ac ldr r0, [r5, 0x18]                            |         r0 = *((r5 + 0x18));
    0x0008e6b0 cmp r3, 0                                     |         
                                                             |         if (r3 <= 0) {
    0x0008e6b4 mvngt r3, 1                                   |             r3 = ~1;
                                                             |         }
                                                             |         if (r3 <= 0) {
    0x0008e6b8 strgt r3, [r5, 0x10]                          |             *((r5 + 0x10)) = r3;
                                                             |         }
    0x0008e6bc cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0008e6c0 beq 0x8e838                                   |             goto label_30;
                                                             |         }
    0x0008e6c4 cmn r0, 1                                     |         
                                                             |         if (r0 != 1) {
    0x0008e6c8 bne 0x8e7f8                                   |             goto label_31;
                                                             |         }
    0x0008e6cc cmp sb, 0                                     |         
                                                             |         if (sb != 0) {
    0x0008e6d0 bne 0x8e800                                   |             goto label_5;
                                                             |         }
                                                             | label_3:
    0x0008e6d4 mov r0, 0                                     |         r0 = 0;
                                                             | label_4:
    0x0008e6d8 ldrb r3, [r5, 0x2c]                           |         r3 = *((r5 + 0x2c));
    0x0008e6dc and r0, r0, 1                                 |         r0 &= 1;
    0x0008e6e0 bic r3, r3, 2                                 |         r3 = BIT_MASK (r3, 2);
    0x0008e6e4 orr r0, r3, r0, lsl 1                         |         r0 = r3 | (r0 << 1);
    0x0008e6e8 strb r0, [r5, 0x2c]                           |         *((r5 + 0x2c)) = r0;
    0x0008e6ec mov r3, 1                                     |         r3 = 1;
    0x0008e6f0 b 0x8e798                                     |         goto label_32;
                                                             |         if (sb <= 0) {
                                                             | label_28:
    0x0008e6f4 ble 0x8e728                                   |             goto label_29;
                                                             |         }
    0x0008e6f8 ldr r1, [r5, 0x18]                            |         r1 = *((r5 + 0x18));
    0x0008e6fc cmp r1, 0                                     |         
                                                             |         if (r1 == 0) {
    0x0008e700 bne 0x8e710                                   |             
    0x0008e704 ldr r1, [r5, 8]                               |             r1 = *((r5 + 8));
    0x0008e708 cmp r1, 0                                     |             
                                                             |             if (r1 == 0) {
    0x0008e70c beq 0x8e720                                   |                 goto label_33;
                                                             |             }
                                                             |         }
    0x0008e710 cmp sl, r2                                    |         
                                                             |         if (sl < r2) {
    0x0008e714 blt 0x8e728                                   |             goto label_29;
                                                             |         }
                                                             | label_1:
    0x0008e718 ldrb r3, [r5, 0x2c]                           |         r3 = *((r5 + 0x2c));
    0x0008e71c b 0x8e68c                                     |         
                                                             |     } while (1);
                                                             | label_33:
    0x0008e720 cmp sl, r2                                    |     
    0x0008e724 b 0x8e688                                     |     goto label_0;
                                                             | label_29:
    0x0008e728 ldr r0, [r5, 4]                               |     r0 = *((r5 + 4));
    0x0008e72c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0008e730 beq 0x8e774                                   |         
    0x0008e734 mov r3, 0                                     |         r3 = 0;
    0x0008e738 str r3, [sp]                                  |         *(sp) = r3;
    0x0008e73c mov r2, r3                                    |         r2 = r3;
    0x0008e740 mov r1, r6                                    |         r1 = r6;
    0x0008e744 bl 0x14e34                                    |         r0 = regexec ();
    0x0008e748 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0008e74c bne 0x8e774                                   |             goto label_34;
                                                             |         }
    0x0008e750 ldr r3, [r5, 4]                               |         r3 = *((r5 + 4));
    0x0008e754 lsr r2, r3, 8                                 |         r2 = r3 >> 8;
    0x0008e758 strb r3, [r4, 0x78]                           |         *((r4 + 0x78)) = r3;
    0x0008e75c strb r2, [r4, 0x79]                           |         *((r4 + 0x79)) = r2;
    0x0008e760 lsr r2, r3, 0x10                              |         r2 = r3 >> 0x10;
    0x0008e764 lsr r3, r3, 0x18                              |         r3 >>= 0x18;
    0x0008e768 strb r2, [r4, 0x7a]                           |         *((r4 + 0x7a)) = r2;
    0x0008e76c strb r3, [r4, 0x7b]                           |         *((r4 + 0x7b)) = r3;
    0x0008e770 b 0x8e718                                     |         goto label_1;
                                                             |     }
                                                             | label_34:
    0x0008e774 ldr r3, [r5, 0x10]                            |     r3 = *((r5 + 0x10));
    0x0008e778 cmn r3, 1                                     |     
    0x0008e77c ldrb r3, [r5, 0x2c]                           |     r3 = *((r5 + 0x2c));
                                                             |     if (r3 != 1) {
    0x0008e780 bne 0x8e78c                                   |         goto label_35;
                                                             |     }
    0x0008e784 cmp sb, 0                                     |     
                                                             |     if (sb == 0) {
    0x0008e788 beq 0x8e68c                                   |         goto label_2;
                                                             |     }
                                                             | label_35:
    0x0008e78c bic r3, r3, 2                                 |     r3 = BIT_MASK (r3, 2);
    0x0008e790 strb r3, [r5, 0x2c]                           |     *((r5 + 0x2c)) = r3;
    0x0008e794 mov r3, 0                                     |     r3 = 0;
                                                             | label_32:
    0x0008e798 ldrb r1, [r5, 0x2e]                           |     r1 = *((r5 + 0x2e));
    0x0008e79c ldrb r2, [r5, 0x2c]                           |     r2 = *((r5 + 0x2c));
    0x0008e7a0 cmp r1, 0x7b                                  |     
    0x0008e7a4 and r2, r2, 1                                 |     r2 &= 1;
                                                             |     if (r1 != 0x7b) {
    0x0008e7a8 bne 0x8e848                                   |         goto label_36;
                                                             |     }
    0x0008e7ac cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x0008e7b0 andne r3, r3, 1                               |         r3 &= 1;
                                                             |     }
                                                             |     if (r2 != 0) {
    0x0008e7b4 eoreq r3, r3, 1                               |         r3 ^= 1;
                                                             |     }
    0x0008e7b8 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0008e7bc beq 0x8e9d8                                   |         goto label_9;
                                                             |     }
    0x0008e7c0 mov r3, 0                                     |     r3 = 0;
                                                             |     do {
    0x0008e7c4 ldrb r2, [r5, 0x2e]                           |         r2 = *((r5 + 0x2e));
    0x0008e7c8 cmp r2, 0x7b                                  |         
                                                             |         if (r2 != 0x7b) {
    0x0008e7cc addeq r3, r3, 1                               |             r3++;
                                                             |         }
                                                             |         if (r2 != 0x7b) {
    0x0008e7d0 beq 0x8e7e4                                   |             
    0x0008e7d4 cmp r2, 0x7d                                  |             
                                                             |             if (r2 != 0x7d) {
    0x0008e7d8 bne 0x8e7e4                                   |                 goto label_37;
                                                             |             }
    0x0008e7dc subs r3, r3, 1                                |             r3--;
                                                             |             if (r3 == r3) {
    0x0008e7e0 beq 0x8e9d8                                   |                 goto label_9;
                                                             |             }
                                                             |         }
                                                             | label_37:
    0x0008e7e4 ldr r5, [r5]                                  |         r5 = *(r5);
    0x0008e7e8 cmp r5, 0                                     |         
    0x0008e7ec bne 0x8e7c4                                   |         
                                                             |     } while (r5 != 0);
    0x0008e7f0 ldr r0, [pc, 0xbf0]                           |     r0 = *(0x8f3e4);
                                                             | label_8:
    0x0008e7f4 bl 0x18254                                    |     r0 = fcn_00018254 ();
                                                             | label_31:
    0x0008e7f8 cmp r0, sl                                    |     
                                                             |     if (r0 <= sl) {
    0x0008e7fc ble 0x8e6d4                                   |         goto label_3;
                                                             |     }
                                                             | label_5:
    0x0008e800 ldr r0, [r5, 8]                               |     r0 = *((r5 + 8));
    0x0008e804 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0008e808 moveq r7, 0                                   |         r7 = 0;
                                                             |     }
    0x0008e80c cmp r7, 0                                     |     
                                                             |     if (r7 == 0) {
    0x0008e810 moveq r0, 1                                   |         r0 = 1;
                                                             |         goto label_38;
                                                             |     }
                                                             |     if (r7 == 0) {
                                                             | label_38:
    0x0008e814 beq 0x8e6d8                                   |         goto label_4;
                                                             |     }
    0x0008e818 mov r3, 0                                     |     r3 = 0;
    0x0008e81c str r3, [sp]                                  |     *(sp) = r3;
    0x0008e820 mov r2, r3                                    |     r2 = r3;
    0x0008e824 mov r1, r6                                    |     r1 = r6;
    0x0008e828 bl 0x14e34                                    |     r0 = regexec ();
    0x0008e82c adds r0, r0, 0                                |     r0 += 0;
                                                             |     if (r0 == r0) {
    0x0008e830 movne r0, 1                                   |         r0 = 1;
                                                             |     }
    0x0008e834 b 0x8e6d8                                     |     goto label_4;
                                                             | label_30:
    0x0008e838 ldr r3, [r5, 8]                               |     r3 = *((r5 + 8));
    0x0008e83c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0008e840 beq 0x8e6d8                                   |         goto label_4;
                                                             |     }
    0x0008e844 b 0x8e800                                     |     goto label_5;
                                                             | label_36:
    0x0008e848 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x0008e84c andne r3, r3, 1                               |         r3 &= 1;
                                                             |     }
                                                             |     if (r2 != 0) {
    0x0008e850 eoreq r3, r3, 1                               |         r3 ^= 1;
                                                             |     }
    0x0008e854 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x0008e858 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x0008e85c cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0008e860 bne 0x8e9d8                                   |         goto label_9;
                                                             |     }
    0x0008e864 ldr r3, [r5, 4]                               |     r3 = *((r5 + 4));
    0x0008e868 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0008e86c beq 0x8e88c                                   |         
    0x0008e870 lsr r2, r3, 8                                 |         r2 = r3 >> 8;
    0x0008e874 strb r3, [r4, 0x78]                           |         *((r4 + 0x78)) = r3;
    0x0008e878 strb r2, [r4, 0x79]                           |         *((r4 + 0x79)) = r2;
    0x0008e87c lsr r2, r3, 0x10                              |         r2 = r3 >> 0x10;
    0x0008e880 lsr r3, r3, 0x18                              |         r3 >>= 0x18;
    0x0008e884 strb r2, [r4, 0x7a]                           |         *((r4 + 0x7a)) = r2;
    0x0008e888 strb r3, [r4, 0x7b]                           |         *((r4 + 0x7b)) = r3;
                                                             |     }
    0x0008e88c ldrb r3, [r5, 0x2e]                           |     r3 = *((r5 + 0x2e));
    0x0008e890 sub r3, r3, 0x3d                              |     r3 -= 0x3d;
    0x0008e894 cmp r3, 0x3c                                  |     
                                                             |     if (r3 > 0x3c) {
                                                             |         /* switch table (61 cases) at 0x8e8a0 */
    0x0008e898 ldrls pc, [pc, r3, lsl 2]                     |         offset_0 = r3 << 2;
                                                             |         pc = *((pc + offset_0));
                                                             |     }
    0x0008e89c b 0x8e9d8                                     |     goto label_9;
    0x0008e994 sub r1, r6, 1                                 |     r1 = r6 - 1;
                                                             | label_23:
    0x0008e998 ldrb r0, [r1, 1]!                             |     r0 = *((r1 += 1));
    0x0008e99c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0008e9a0 beq 0x8e9d8                                   |         goto label_9;
                                                             |     }
    0x0008e9a4 ldr r2, [r5, 0x24]                            |     r2 = *((r5 + 0x24));
    0x0008e9a8 mov r3, 0                                     |     r3 = 0;
    0x0008e9ac b 0x8f190                                     |     goto label_39;
    0x0008e9b0 ldrb r0, [r4, 9]                              |     r0 = *((r4 + 9));
    0x0008e9b4 ldrb r3, [r4, 8]                              |     r3 = *((r4 + 8));
    0x0008e9b8 mov r2, sl                                    |     r2 = sl;
    0x0008e9bc orr r3, r3, r0, lsl 8                         |     r3 |= (r0 << 8);
    0x0008e9c0 ldrb r0, [r4, 0xa]                            |     r0 = *((r4 + 0xa));
    0x0008e9c4 ldr r1, [pc, 0xa20]                           |     r1 = "unterminated {";
    0x0008e9c8 orr r3, r3, r0, lsl 16                        |     r3 |= (r0 << 16);
    0x0008e9cc ldrb r0, [r4, 0xb]                            |     r0 = *((r4 + 0xb));
    0x0008e9d0 orr r0, r3, r0, lsl 24                        |     r0 = r3 | (r0 << 24);
    0x0008e9d4 bl 0x149c0                                    |     fprintf (r0, "unterminated {", r2, r3);
                                                             |     do {
                                                             | label_9:
    0x0008e9d8 ldr r5, [r5]                                  |         r5 = *(r5);
    0x0008e9dc b 0x8e640                                     |         goto label_6;
    0x0008e9e0 mov r1, 0xa                                   |         r1 = 0xa;
    0x0008e9e4 mov r0, r6                                    |         r0 = r6;
    0x0008e9e8 bl 0x1517c                                    |         r0 = strchr (r0, r1);
    0x0008e9ec subs r7, r0, 0                                |         r7 = r0 - 0;
                                                             |         if (r7 == r0) {
    0x0008e9f0 beq 0x8ea34                                   |             goto label_40;
                                                             |         }
    0x0008e9f4 mov r3, 0                                     |         r3 = 0;
    0x0008e9f8 strb r3, [r7]                                 |         *(r7) = r3;
    0x0008e9fc ldrb r3, [r4, 9]                              |         r3 = *((r4 + 9));
    0x0008ea00 ldrb r1, [r4, 8]                              |         r1 = *((r4 + 8));
    0x0008ea04 ldrb r0, [r4, 0xb]                            |         r0 = *((r4 + 0xb));
    0x0008ea08 orr r1, r1, r3, lsl 8                         |         r1 |= (r3 << 8);
    0x0008ea0c ldrb r3, [r4, 0xa]                            |         r3 = *((r4 + 0xa));
    0x0008ea10 add r2, sp, 0x36                              |         r2 += var_36h;
    0x0008ea14 orr r1, r1, r3, lsl 16                        |         r1 |= (r3 << 16);
    0x0008ea18 orr r1, r1, r0, lsl 24                        |         r1 |= (r0 << 24);
    0x0008ea1c mov r3, 0xa                                   |         r3 = 0xa;
    0x0008ea20 mov r0, r6                                    |         r0 = r6;
    0x0008ea24 bl 0x8e28c                                    |         fcn_0008e28c (r0, r1);
    0x0008ea28 mov r3, 0xa                                   |         r3 = 0xa;
    0x0008ea2c strb r3, [r7]                                 |         *(r7) = r3;
    0x0008ea30 b 0x8e9d8                                     |         
                                                             |     } while (1);
                                                             | label_40:
    0x0008ea34 ldrb r3, [r4, 9]                              |     r3 = *((r4 + 9));
    0x0008ea38 ldrb r1, [r4, 8]                              |     r1 = *((r4 + 8));
    0x0008ea3c ldrb r0, [r4, 0xb]                            |     r0 = *((r4 + 0xb));
    0x0008ea40 orr r1, r1, r3, lsl 8                         |     r1 |= (r3 << 8);
    0x0008ea44 ldrb r3, [r4, 0xa]                            |     r3 = *((r4 + 0xa));
    0x0008ea48 add r2, sp, 0x36                              |     r2 += var_36h;
    0x0008ea4c orr r1, r1, r3, lsl 16                        |     r1 |= (r3 << 16);
    0x0008ea50 orr r1, r1, r0, lsl 24                        |     r1 |= (r0 << 24);
    0x0008ea54 mov r3, 0xa                                   |     r3 = 0xa;
                                                             | label_17:
    0x0008ea58 mov r0, r6                                    |     r0 = r6;
    0x0008ea5c b 0x8ef18                                     |     goto label_41;
    0x0008ea60 mov r1, 0xa                                   |     r1 = 0xa;
    0x0008ea64 mov r0, r6                                    |     r0 = r6;
    0x0008ea68 bl 0x1517c                                    |     r0 = strchr (r0, r1);
    0x0008ea6c subs r1, r0, 0                                |     r1 = r0 - 0;
                                                             |     if (r1 == r0) {
    0x0008ea70 beq 0x8ef58                                   |         goto label_18;
                                                             |     }
    0x0008ea74 add r1, r1, 1                                 |     r1++;
    0x0008ea78 mov r0, r6                                    |     r0 = r6;
    0x0008ea7c bl 0xa410c                                    |     fcn_000a410c (r0, r1);
    0x0008ea80 b 0x8e624                                     |     goto label_7;
    0x0008ea84 ldr r3, [r5, 0xc]                             |     r3 = *((r5 + 0xc));
    0x0008ea88 cmp r3, 0                                     |     
    0x0008ea8c str r3, [sp, 8]                               |     var_8h = r3;
                                                             |     if (r3 != 0) {
    0x0008ea90 bne 0x8eabc                                   |         goto label_42;
                                                             |     }
    0x0008ea94 ldrb r2, [r4, 0x79]                           |     r2 = *((r4 + 0x79));
    0x0008ea98 ldrb r3, [r4, 0x78]                           |     r3 = *((r4 + 0x78));
    0x0008ea9c orr r3, r3, r2, lsl 8                         |     r3 |= (r2 << 8);
    0x0008eaa0 ldrb r2, [r4, 0x7a]                           |     r2 = *((r4 + 0x7a));
    0x0008eaa4 orr r3, r3, r2, lsl 16                        |     r3 |= (r2 << 16);
    0x0008eaa8 ldrb r2, [r4, 0x7b]                           |     r2 = *((r4 + 0x7b));
    0x0008eaac orrs r3, r3, r2, lsl 24                       |     r3 |= (r2 << 24);
    0x0008eab0 str r3, [sp, 8]                               |     var_8h = r3;
                                                             |     if (r3 == r3) {
    0x0008eab4 ldreq r0, [pc, 0x934]                         |         r0 = "no_previous_regexp";
                                                             |         goto label_43;
                                                             |     }
                                                             |     if (r3 == r3) {
                                                             | label_43:
    0x0008eab8 beq 0x8e7f4                                   |         goto label_8;
                                                             |     }
                                                             | label_42:
    0x0008eabc ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x0008eac0 mov r7, 0                                     |     r7 = 0;
    0x0008eac4 strb r3, [r4, 0x78]                           |     *((r4 + 0x78)) = r3;
    0x0008eac8 lsr r3, r3, 8                                 |     r3 >>= 8;
    0x0008eacc strb r3, [r4, 0x79]                           |     *((r4 + 0x79)) = r3;
    0x0008ead0 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x0008ead4 str r7, [sp]                                  |     *(sp) = r7;
    0x0008ead8 lsr r3, r3, 0x10                              |     r3 >>= 0x10;
    0x0008eadc strb r3, [r4, 0x7a]                           |     *((r4 + 0x7a)) = r3;
    0x0008eae0 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x0008eae4 mov r2, 0xa                                   |     r2 = 0xa;
    0x0008eae8 lsr r3, r3, 0x18                              |     r3 >>= 0x18;
    0x0008eaec strb r3, [r4, 0x7b]                           |     *((r4 + 0x7b)) = r3;
    0x0008eaf0 mov r1, r6                                    |     r1 = r6;
    0x0008eaf4 ldr r3, [pc, 0x8f8]                           |     r3 = "no_previous_regexp";
    0x0008eaf8 ldr r0, [sp, 8]                               |     r0 = var_8h;
    0x0008eafc bl 0x14e34                                    |     r0 = regexec ();
    0x0008eb00 cmp r0, 1                                     |     
                                                             |     if (r0 == 1) {
    0x0008eb04 beq 0x8e9d8                                   |         goto label_9;
                                                             |     }
    0x0008eb08 mov r0, 0x40                                  |     r0 = 0x40;
    0x0008eb0c bl 0x18968                                    |     fcn_00018968 (r0);
    0x0008eb10 strb r7, [r4, 0x95]                           |     *((r4 + 0x95)) = r7;
    0x0008eb14 strb r7, [r4, 0x96]                           |     *((r4 + 0x96)) = r7;
    0x0008eb18 strb r7, [r4, 0x97]                           |     *((r4 + 0x97)) = r7;
    0x0008eb1c strb r7, [r4, 0x90]                           |     *((r4 + 0x90)) = r7;
    0x0008eb20 strb r7, [r4, 0x91]                           |     *((r4 + 0x91)) = r7;
    0x0008eb24 strb r7, [r4, 0x92]                           |     *((r4 + 0x92)) = r7;
    0x0008eb28 strb r7, [r4, 0x93]                           |     *((r4 + 0x93)) = r7;
    0x0008eb2c str r7, [sp, 0x18]                            |     var_18h = r7;
    0x0008eb30 mov r7, r6                                    |     r7 = r6;
    0x0008eb34 lsr r3, r0, 8                                 |     r3 = r0 >> 8;
    0x0008eb38 strb r3, [r4, 0x8d]                           |     *((r4 + 0x8d)) = r3;
    0x0008eb3c lsr r3, r0, 0x10                              |     r3 = r0 >> 0x10;
    0x0008eb40 strb r3, [r4, 0x8e]                           |     *((r4 + 0x8e)) = r3;
    0x0008eb44 mov r3, 0x40                                  |     r3 = 0x40;
    0x0008eb48 strb r3, [r4, 0x94]                           |     *((r4 + 0x94)) = r3;
    0x0008eb4c mov r3, 1                                     |     r3 = 1;
    0x0008eb50 strb r0, [r4, 0x8c]                           |     *((r4 + 0x8c)) = r0;
    0x0008eb54 str r3, [sp, 0x20]                            |     var_20h = r3;
    0x0008eb58 lsr r0, r0, 0x18                              |     r0 >>= 0x18;
    0x0008eb5c mov r3, 0                                     |     r3 = 0;
    0x0008eb60 strb r0, [r4, 0x8f]                           |     *((r4 + 0x8f)) = r0;
    0x0008eb64 str r3, [sp, 0x1c]                            |     var_1ch = r3;
                                                             | label_10:
    0x0008eb68 ldrb r2, [r4, 0x29]                           |     r2 = *((r4 + 0x29));
    0x0008eb6c ldrb r3, [r4, 0x28]                           |     r3 = *((r4 + 0x28));
    0x0008eb70 ldrb r8, [r4, 0x2c]                           |     r8 = *((r4 + 0x2c));
    0x0008eb74 orr r3, r3, r2, lsl 8                         |     r3 |= (r2 << 8);
    0x0008eb78 ldrb r2, [r4, 0x2a]                           |     r2 = *((r4 + 0x2a));
    0x0008eb7c orr r3, r3, r2, lsl 16                        |     r3 |= (r2 << 16);
    0x0008eb80 ldrb r2, [r4, 0x2b]                           |     r2 = *((r4 + 0x2b));
    0x0008eb84 orr r3, r3, r2, lsl 24                        |     r3 |= (r2 << 24);
    0x0008eb88 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x0008eb8c ldrb r3, [r4, 0x2d]                           |     r3 = *((r4 + 0x2d));
    0x0008eb90 orr r8, r8, r3, lsl 8                         |     r8 |= (r3 << 8);
    0x0008eb94 ldrb r3, [r4, 0x2e]                           |     r3 = *((r4 + 0x2e));
    0x0008eb98 orr r8, r8, r3, lsl 16                        |     r8 |= (r3 << 16);
    0x0008eb9c ldrb r3, [r4, 0x2f]                           |     r3 = *((r4 + 0x2f));
    0x0008eba0 orr r8, r8, r3, lsl 24                        |     r8 |= (r3 << 24);
    0x0008eba4 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x0008eba8 add r3, r3, 1                                 |     r3++;
    0x0008ebac str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x0008ebb0 ldr r2, [sp, 0x1c]                            |     r2 = var_1ch;
    0x0008ebb4 ldr r3, [r5, 0x28]                            |     r3 = *((r5 + 0x28));
    0x0008ebb8 cmp r3, 0                                     |     
    0x0008ebbc cmpne r2, r3                                  |     __asm ("cmpne r2, r3");
                                                             |     if (r3 != 0) {
    0x0008ebc0 moveq r3, r7                                  |         r3 = r7;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x0008ebc4 subne r3, r7, 1                               |         r3 = r7 - 1;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x0008ebc8 bne 0x8ecf4                                   |         goto label_44;
                                                             |     }
                                                             | label_12:
    0x0008ebcc ldr r1, [sp, 0x14]                            |     r1 = var_14h;
    0x0008ebd0 sub r2, r3, r7                                |     r2 = r3 - r7;
    0x0008ebd4 cmp r1, r2                                    |     
                                                             |     if (r1 > r2) {
    0x0008ebd8 bgt 0x8ed70                                   |         goto label_45;
                                                             |     }
    0x0008ebdc mov r3, r1                                    |     r3 = r1;
    0x0008ebe0 orrs r3, r3, r8                               |     r3 |= r8;
    0x0008ebe4 ldr r3, [sp, 0x20]                            |     r3 = var_20h;
                                                             |     if (r3 == r3) {
    0x0008ebe8 movne r3, 1                                   |         r3 = 1;
                                                             |     }
    0x0008ebec cmp r3, 0                                     |     
    0x0008ebf0 str r3, [sp, 0x20]                            |     var_20h = r3;
                                                             |     if (r3 == 0) {
    0x0008ebf4 ldrne r3, [r5, 0x24]                          |         r3 = *((r5 + 0x24));
                                                             |     }
                                                             |     if (r3 == 0) {
    0x0008ebf8 movne r1, 0                                   |         r1 = 0;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x0008ebfc strne r3, [sp, 0x10]                          |         var_10h = r3;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x0008ec00 bne 0x8eddc                                   |         goto label_46;
                                                             |     }
                                                             | label_13:
    0x0008ec04 ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x0008ec08 ldrb r0, [r7, r8]                             |     r0 = *((r7 + r8));
    0x0008ec0c cmp r3, r8                                    |     
                                                             |     if (r3 != r8) {
    0x0008ec10 moveq r3, 1                                   |         r3 = 1;
                                                             |     }
                                                             |     if (r3 == r8) {
    0x0008ec14 movne r3, 0                                   |         r3 = 0;
                                                             |     }
    0x0008ec18 str r3, [sp, 0x20]                            |     var_20h = r3;
                                                             |     if (r3 == r8) {
    0x0008ec1c bne 0x8ec38                                   |         
    0x0008ec20 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0008ec24 moveq r3, 1                                   |             r3 = 1;
                                                             |         }
                                                             |         if (r0 != 0) {
    0x0008ec28 streq r3, [sp, 0x18]                          |             var_18h = r3;
                                                             |         }
                                                             |         if (r0 == 0) {
    0x0008ec2c beq 0x8ec38                                   |             goto label_47;
                                                             |         }
    0x0008ec30 bl 0x8e160                                    |         fcn_0008e160 (r0);
    0x0008ec34 add r8, r8, 1                                 |         r8++;
                                                             |     }
                                                             | label_47:
    0x0008ec38 ldr r3, [r5, 0x28]                            |     r3 = *((r5 + 0x28));
    0x0008ec3c add r7, r7, r8                                |     r7 += r8;
    0x0008ec40 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0008ec44 beq 0x8ed28                                   |         goto label_48;
                                                             |     }
                                                             |     do {
                                                             | label_11:
    0x0008ec48 ldrb r8, [r7], 1                              |         r8 = *(r7);
                                                             |         r7++;
    0x0008ec4c mov r0, r8                                    |         r0 = r8;
    0x0008ec50 bl 0x8e160                                    |         fcn_0008e160 (r0);
    0x0008ec54 cmp r8, 0                                     |         
    0x0008ec58 bne 0x8ec48                                   |         
                                                             |     } while (r8 != 0);
                                                             | label_26:
    0x0008ec5c mov r0, r6                                    |     r0 = r6;
    0x0008ec60 bl 0x152a8                                    |     free (r0);
    0x0008ec64 ldrb r3, [r4, 0x8d]                           |     r3 = *((r4 + 0x8d));
    0x0008ec68 ldrb r6, [r4, 0x8c]                           |     r6 = *((r4 + 0x8c));
    0x0008ec6c orr r6, r6, r3, lsl 8                         |     r6 |= (r3 << 8);
    0x0008ec70 ldrb r3, [r4, 0x8e]                           |     r3 = *((r4 + 0x8e));
    0x0008ec74 orr r6, r6, r3, lsl 16                        |     r6 |= (r3 << 16);
    0x0008ec78 ldrb r3, [r4, 0x8f]                           |     r3 = *((r4 + 0x8f));
    0x0008ec7c orr r6, r6, r3, lsl 24                        |     r6 |= (r3 << 24);
    0x0008ec80 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x0008ec84 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0008ec88 beq 0x8e9d8                                   |         goto label_9;
                                                             |     }
    0x0008ec8c ldrb r3, [r5, 0x2c]                           |     r3 = *((r5 + 0x2c));
    0x0008ec90 tst r3, 4                                     |     
                                                             |     if ((r3 & 4) != 0) {
    0x0008ec94 beq 0x8ecc4                                   |         
    0x0008ec98 ldrb r3, [r4, 9]                              |         r3 = *((r4 + 9));
    0x0008ec9c ldrb r1, [r4, 8]                              |         r1 = *((r4 + 8));
    0x0008eca0 ldrb r0, [r4, 0xb]                            |         r0 = *((r4 + 0xb));
    0x0008eca4 orr r1, r1, r3, lsl 8                         |         r1 |= (r3 << 8);
    0x0008eca8 ldrb r3, [r4, 0xa]                            |         r3 = *((r4 + 0xa));
    0x0008ecac add r2, sp, 0x36                              |         r2 += var_36h;
    0x0008ecb0 orr r1, r1, r3, lsl 16                        |         r1 |= (r3 << 16);
    0x0008ecb4 orr r1, r1, r0, lsl 24                        |         r1 |= (r0 << 24);
    0x0008ecb8 mov r3, fp                                    |         r3 = fp;
    0x0008ecbc mov r0, r6                                    |         r0 = r6;
    0x0008ecc0 bl 0x8e28c                                    |         fcn_0008e28c (r0, r1);
                                                             |     }
    0x0008ecc4 ldr r1, [r5, 0x20]                            |     r1 = *((r5 + 0x20));
    0x0008ecc8 cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x0008eccc beq 0x8ece0                                   |         
    0x0008ecd0 mov r3, fp                                    |         r3 = fp;
    0x0008ecd4 add r2, r5, 0x2d                              |         r2 = r5 + 0x2d;
    0x0008ecd8 mov r0, r6                                    |         r0 = r6;
    0x0008ecdc bl 0x8e28c                                    |         fcn_0008e28c (r0, r1);
                                                             |     }
    0x0008ece0 mov r3, 1                                     |     r3 = 1;
    0x0008ece4 b 0x8f038                                     |     goto label_49;
                                                             |     do {
    0x0008ece8 str r3, [sp, 0x24]                            |         var_24h = r3;
    0x0008ecec bl 0x8e160                                    |         fcn_0008e160 (r0);
    0x0008ecf0 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
                                                             | label_44:
    0x0008ecf4 ldrb r0, [r3, 1]!                             |         r0 = *((r3 += 1));
    0x0008ecf8 sub r2, r3, r7                                |         r2 = r3 - r7;
    0x0008ecfc cmp r2, r8                                    |         
    0x0008ed00 blt 0x8ece8                                   |         
                                                             |     } while (r2 < r8);
    0x0008ed04 ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x0008ed08 cmp r8, 0                                     |     
                                                             |     if (r8 < 0) {
    0x0008ed0c addge r7, r7, r8                              |         r7 += r8;
                                                             |     }
    0x0008ed10 cmp r3, r8                                    |     
                                                             |     if (r3 == r8) {
    0x0008ed14 bne 0x8ed28                                   |         
    0x0008ed18 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0008ed1c beq 0x8ed28                                   |             goto label_48;
                                                             |         }
    0x0008ed20 add r7, r7, 1                                 |         r7++;
    0x0008ed24 bl 0x8e160                                    |         fcn_0008e160 (r0);
                                                             |     }
                                                             | label_48:
    0x0008ed28 ldrb r0, [r7]                                 |     r0 = *(r7);
    0x0008ed2c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0008ed30 bne 0x8ed48                                   |         
    0x0008ed34 ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x0008ed38 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x0008ed3c bne 0x8f3d4                                   |             goto label_50;
                                                             |         }
    0x0008ed40 mov r3, 1                                     |         r3 = 1;
    0x0008ed44 str r3, [sp, 0x18]                            |         var_18h = r3;
                                                             |     }
    0x0008ed48 mov r3, 1                                     |     r3 = 1;
    0x0008ed4c str r3, [sp]                                  |     *(sp) = r3;
    0x0008ed50 mov r2, 0xa                                   |     r2 = 0xa;
    0x0008ed54 ldr r3, [pc, 0x698]                           |     r3 = "no_previous_regexp";
    0x0008ed58 mov r1, r7                                    |     r1 = r7;
    0x0008ed5c ldr r0, [sp, 8]                               |     r0 = var_8h;
    0x0008ed60 bl 0x14e34                                    |     r0 = regexec ();
    0x0008ed64 cmp r0, 1                                     |     
                                                             |     if (r0 != 1) {
    0x0008ed68 bne 0x8eb68                                   |         goto label_10;
                                                             |     }
    0x0008ed6c b 0x8ec48                                     |     goto label_11;
                                                             | label_45:
    0x0008ed70 ldrb r0, [r3], 1                              |     r0 = *(r3);
                                                             |     r3++;
    0x0008ed74 str r3, [sp, 0x24]                            |     var_24h = r3;
    0x0008ed78 bl 0x8e160                                    |     fcn_0008e160 (r0);
    0x0008ed7c ldr r3, [sp, 0x24]                            |     r3 = var_24h;
    0x0008ed80 b 0x8ebcc                                     |     goto label_12;
                                                             |     do {
    0x0008ed84 cmp r0, 0x5c                                  |         
    0x0008ed88 add r2, r1, 1                                 |         r2 = r1 + 1;
                                                             |         if (r0 != 0x5c) {
    0x0008ed8c bne 0x8ee54                                   |             goto label_51;
                                                             |         }
    0x0008ed90 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x0008ed94 ldrb r0, [r3, r2]                             |         r0 = *((r3 + r2));
    0x0008ed98 sub r3, r0, 0x30                              |         r3 = r0 - 0x30;
    0x0008ed9c cmp r3, 9                                     |         
                                                             |         if (r3 > 9) {
    0x0008eda0 bhi 0x8ee44                                   |             goto label_52;
                                                             |         }
    0x0008eda4 sub r0, r0, 0x2b                              |         r0 -= 0x2b;
    0x0008eda8 ldrb r3, [r4, r0, lsl 3]                      |         offset_1 = r0 << 3;
                                                             |         r3 = *((r4 + offset_1));
    0x0008edac add r0, r4, r0, lsl 3                         |         r0 = r4 + (r0 << 3);
    0x0008edb0 ldrb r1, [r0, 1]                              |         r1 = *((r0 + 1));
    0x0008edb4 orr r3, r3, r1, lsl 8                         |         r3 |= (r1 << 8);
    0x0008edb8 ldrb r1, [r0, 2]                              |         r1 = *((r0 + 2));
    0x0008edbc orr r3, r3, r1, lsl 16                        |         r3 |= (r1 << 16);
    0x0008edc0 ldrb r1, [r0, 3]                              |         r1 = *((r0 + 3));
    0x0008edc4 orr r3, r3, r1, lsl 24                        |         r3 |= (r1 << 24);
    0x0008edc8 cmn r3, 1                                     |         
                                                             |         if (r3 == 1) {
    0x0008edcc addne r3, r7, r3                              |             r3 = r7 + r3;
                                                             |         }
                                                             |         if (r3 == 1) {
    0x0008edd0 movne r1, r0                                  |             r1 = r0;
                                                             |         }
                                                             |         if (r3 != 1) {
    0x0008edd4 bne 0x8ee18                                   |             goto label_53;
                                                             |         }
                                                             | label_14:
    0x0008edd8 add r1, r2, 1                                 |         r1 = r2 + 1;
                                                             | label_46:
    0x0008eddc ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x0008ede0 ldrb r0, [r3, r1]                             |         r0 = *((r3 + r1));
    0x0008ede4 cmp r0, 0                                     |         
    0x0008ede8 bne 0x8ed84                                   |         
                                                             |     } while (r0 != 0);
    0x0008edec ldr r3, [sp, 0x20]                            |     r3 = var_20h;
    0x0008edf0 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x0008edf4 b 0x8ec04                                     |     goto label_13;
                                                             |     do {
    0x0008edf8 ldrb r0, [r3], 1                              |         r0 = *(r3);
                                                             |         r3++;
    0x0008edfc str r1, [sp, 0x2c]                            |         var_2ch = r1;
    0x0008ee00 str r2, [sp, 0x28]                            |         var_28h = r2;
    0x0008ee04 str r3, [sp, 0x24]                            |         var_24h = r3;
    0x0008ee08 bl 0x8e160                                    |         fcn_0008e160 (r0);
    0x0008ee0c ldr r1, [sp, 0x2c]                            |         r1 = var_2ch;
    0x0008ee10 ldr r2, [sp, 0x28]                            |         r2 = var_28h;
    0x0008ee14 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
                                                             | label_53:
    0x0008ee18 ldrb lr, [r1, 5]                              |         
    0x0008ee1c ldrb r0, [r1, 4]                              |         r0 = *((r1 + 4));
    0x0008ee20 sub ip, r3, r7                                |         
    0x0008ee24 orr r0, r0, lr, lsl 8                         |         r0 |= (lr << 8);
    0x0008ee28 ldrb lr, [r1, 6]                              |         
    0x0008ee2c orr r0, r0, lr, lsl 16                        |         r0 |= (lr << 16);
    0x0008ee30 ldrb lr, [r1, 7]                              |         
    0x0008ee34 orr r0, r0, lr, lsl 24                        |         r0 |= (lr << 24);
    0x0008ee38 cmp ip, r0                                    |         
    0x0008ee3c blt 0x8edf8                                   |         
                                                             |     } while (ip < r0);
    0x0008ee40 b 0x8edd8                                     |     goto label_14;
                                                             | label_52:
    0x0008ee44 str r2, [sp, 0x24]                            |     var_24h = r2;
    0x0008ee48 bl 0x8e160                                    |     fcn_0008e160 (r0);
    0x0008ee4c ldr r2, [sp, 0x24]                            |     r2 = var_24h;
    0x0008ee50 b 0x8edd8                                     |     goto label_14;
                                                             | label_51:
    0x0008ee54 cmp r0, 0x26                                  |     
                                                             |     if (r0 != 0x26) {
    0x0008ee58 bne 0x8eec8                                   |         goto label_54;
                                                             |     }
    0x0008ee5c ldrb r2, [r4, 0x29]                           |     r2 = *((r4 + 0x29));
    0x0008ee60 ldrb r3, [r4, 0x28]                           |     r3 = *((r4 + 0x28));
    0x0008ee64 orr r3, r3, r2, lsl 8                         |     r3 |= (r2 << 8);
    0x0008ee68 ldrb r2, [r4, 0x2a]                           |     r2 = *((r4 + 0x2a));
    0x0008ee6c orr r3, r3, r2, lsl 16                        |     r3 |= (r2 << 16);
    0x0008ee70 ldrb r2, [r4, 0x2b]                           |     r2 = *((r4 + 0x2b));
    0x0008ee74 orr r3, r3, r2, lsl 24                        |     r3 |= (r2 << 24);
    0x0008ee78 add r3, r7, r3                                |     r3 = r7 + r3;
                                                             |     do {
    0x0008ee7c ldrb ip, [r4, 0x2d]                           |         ip = *((r4 + 0x2d));
    0x0008ee80 ldrb r2, [r4, 0x2c]                           |         r2 = *((r4 + 0x2c));
    0x0008ee84 sub r0, r3, r7                                |         r0 = r3 - r7;
    0x0008ee88 orr r2, r2, ip, lsl 8                         |         r2 |= (ip << 8);
    0x0008ee8c ldrb ip, [r4, 0x2e]                           |         ip = *((r4 + 0x2e));
    0x0008ee90 orr r2, r2, ip, lsl 16                        |         r2 |= (ip << 16);
    0x0008ee94 ldrb ip, [r4, 0x2f]                           |         ip = *((r4 + 0x2f));
    0x0008ee98 orr r2, r2, ip, lsl 24                        |         r2 |= (ip << 24);
    0x0008ee9c cmp r0, r2                                    |         
                                                             |         if (r0 >= r2) {
    0x0008eea0 blt 0x8eeac                                   |             
                                                             | label_15:
    0x0008eea4 mov r2, r1                                    |             r2 = r1;
    0x0008eea8 b 0x8edd8                                     |             goto label_14;
                                                             |         }
    0x0008eeac ldrb r0, [r3], 1                              |         r0 = *(r3);
                                                             |         r3++;
    0x0008eeb0 str r1, [sp, 0x28]                            |         var_28h = r1;
    0x0008eeb4 str r3, [sp, 0x24]                            |         var_24h = r3;
    0x0008eeb8 bl 0x8e160                                    |         fcn_0008e160 (r0);
    0x0008eebc ldr r1, [sp, 0x28]                            |         r1 = var_28h;
    0x0008eec0 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x0008eec4 b 0x8ee7c                                     |         
                                                             |     } while (1);
                                                             | label_54:
    0x0008eec8 str r1, [sp, 0x24]                            |     var_24h = r1;
    0x0008eecc bl 0x8e160                                    |     fcn_0008e160 (r0);
    0x0008eed0 ldr r1, [sp, 0x24]                            |     r1 = var_24h;
    0x0008eed4 b 0x8eea4                                     |     goto label_15;
    0x0008eed8 ldr r0, [r5, 0x24]                            |     r0 = *((r5 + 0x24));
    0x0008eedc bl 0x189d4                                    |     r0 = fcn_000189d4 (r0);
    0x0008eee0 mov r1, r0                                    |     r1 = r0;
    0x0008eee4 ldr r0, [pc, 0x50c]                           |     r0 = *(0x8f3f4);
    0x0008eee8 bl 0x9fe38                                    |     fcn_0009fe38 (r0, r1);
    0x0008eeec b 0x8e9d8                                     |     goto label_9;
    0x0008eef0 ldrb r3, [r4, 9]                              |     r3 = *((r4 + 9));
    0x0008eef4 ldrb r1, [r4, 8]                              |     r1 = *((r4 + 8));
    0x0008eef8 ldrb r0, [r4, 0xb]                            |     r0 = *((r4 + 0xb));
    0x0008eefc orr r1, r1, r3, lsl 8                         |     r1 |= (r3 << 8);
    0x0008ef00 ldrb r3, [r4, 0xa]                            |     r3 = *((r4 + 0xa));
    0x0008ef04 add r2, sp, 0x36                              |     r2 += var_36h;
    0x0008ef08 orr r1, r1, r3, lsl 16                        |     r1 |= (r3 << 16);
    0x0008ef0c orr r1, r1, r0, lsl 24                        |     r1 |= (r0 << 24);
    0x0008ef10 ldr r0, [r5, 0x24]                            |     r0 = *((r5 + 0x24));
    0x0008ef14 mov r3, 0xa                                   |     r3 = 0xa;
                                                             | label_41:
    0x0008ef18 bl 0x8e28c                                    |     fcn_0008e28c (r0, r1);
    0x0008ef1c b 0x8e9d8                                     |     goto label_9;
    0x0008ef20 ldrb r3, [r5, 0x2c]                           |     r3 = *((r5 + 0x2c));
    0x0008ef24 tst r3, 2                                     |     
                                                             |     if ((r3 & 2) == 0) {
    0x0008ef28 bne 0x8ef58                                   |         
    0x0008ef2c ldrb r3, [r4, 9]                              |         r3 = *((r4 + 9));
    0x0008ef30 ldrb r1, [r4, 8]                              |         r1 = *((r4 + 8));
    0x0008ef34 ldrb r0, [r4, 0xb]                            |         r0 = *((r4 + 0xb));
    0x0008ef38 orr r1, r1, r3, lsl 8                         |         r1 |= (r3 << 8);
    0x0008ef3c ldrb r3, [r4, 0xa]                            |         r3 = *((r4 + 0xa));
    0x0008ef40 add r2, sp, 0x36                              |         r2 += var_36h;
    0x0008ef44 orr r1, r1, r3, lsl 16                        |         r1 |= (r3 << 16);
    0x0008ef48 orr r1, r1, r0, lsl 24                        |         r1 |= (r0 << 24);
    0x0008ef4c ldr r0, [r5, 0x24]                            |         r0 = *((r5 + 0x24));
    0x0008ef50 mov r3, 0xa                                   |         r3 = 0xa;
                                                             | label_19:
    0x0008ef54 bl 0x8e28c                                    |         fcn_0008e28c (r0, r1);
                                                             |     }
                                                             | label_18:
    0x0008ef58 add r0, sp, 0x36                              |     r0 += var_36h;
    0x0008ef5c bl 0x8e394                                    |     fcn_0008e394 (r0);
    0x0008ef60 mov r0, r6                                    |     r0 = r6;
    0x0008ef64 bl 0x152a8                                    |     free (r0);
    0x0008ef68 mov r6, sb                                    |     r6 = sb;
    0x0008ef6c b 0x8e5fc                                     |     goto label_16;
    0x0008ef70 ldr r0, [r5, 0x24]                            |     r0 = *((r5 + 0x24));
    0x0008ef74 bl 0xa5630                                    |     r0 = fcn_000a5630 ();
    0x0008ef78 subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 != r0) {
    0x0008ef7c ldrne r8, [pc, 0x474]                         |         r8 = *(0x0008f3f8);
                                                             |         goto label_55;
                                                             |     }
                                                             |     if (r7 == r0) {
                                                             | label_55:
    0x0008ef80 beq 0x8e9d8                                   |         goto label_9;
                                                             |     }
                                                             |     do {
    0x0008ef84 mov r0, r7                                    |         r0 = r7;
    0x0008ef88 bl 0x9b0b4                                    |         r0 = fcn_0009b0b4 ();
    0x0008ef8c subs r1, r0, 0                                |         r1 = r0 - 0;
                                                             |         if (r1 == r0) {
    0x0008ef90 bne 0x8efa0                                   |             
    0x0008ef94 mov r0, r7                                    |             r0 = r7;
    0x0008ef98 bl 0x14dec                                    |             fclose (r0);
    0x0008ef9c b 0x8e9d8                                     |             goto label_9;
                                                             |         }
    0x0008efa0 mov r0, r8                                    |         r0 = r8;
    0x0008efa4 bl 0x9fe38                                    |         fcn_0009fe38 (r0, r1);
    0x0008efa8 b 0x8ef84                                     |         
                                                             |     } while (1);
    0x0008efac mov r3, fp                                    |     r3 = fp;
    0x0008efb0 add r2, r5, 0x2d                              |     r2 = r5 + 0x2d;
    0x0008efb4 ldr r1, [r5, 0x20]                            |     r1 = *((r5 + 0x20));
    0x0008efb8 b 0x8ea58                                     |     goto label_17;
    0x0008efbc ldrb r2, [r4, 1]                              |     r2 = *((r4 + 1));
    0x0008efc0 ldrb r3, [r4]                                 |     r3 = *(r4);
    0x0008efc4 orr r3, r3, r2, lsl 8                         |     r3 |= (r2 << 8);
    0x0008efc8 ldrb r2, [r4, 2]                              |     r2 = *((r4 + 2));
    0x0008efcc orr r3, r3, r2, lsl 16                        |     r3 |= (r2 << 16);
    0x0008efd0 ldrb r2, [r4, 3]                              |     r2 = *((r4 + 3));
    0x0008efd4 orrs r3, r3, r2, lsl 24                       |     r3 |= (r2 << 24);
                                                             |     if (r3 == r3) {
    0x0008efd8 bne 0x8f008                                   |         
    0x0008efdc ldrb r3, [r4, 9]                              |         r3 = *((r4 + 9));
    0x0008efe0 ldrb r1, [r4, 8]                              |         r1 = *((r4 + 8));
    0x0008efe4 ldrb r0, [r4, 0xb]                            |         r0 = *((r4 + 0xb));
    0x0008efe8 orr r1, r1, r3, lsl 8                         |         r1 |= (r3 << 8);
    0x0008efec ldrb r3, [r4, 0xa]                            |         r3 = *((r4 + 0xa));
    0x0008eff0 add r2, sp, 0x36                              |         r2 += var_36h;
    0x0008eff4 orr r1, r1, r3, lsl 16                        |         r1 |= (r3 << 16);
    0x0008eff8 orr r1, r1, r0, lsl 24                        |         r1 |= (r0 << 24);
    0x0008effc mov r3, fp                                    |         r3 = fp;
    0x0008f000 mov r0, r6                                    |         r0 = r6;
    0x0008f004 bl 0x8e28c                                    |         fcn_0008e28c (r0, r1);
                                                             |     }
    0x0008f008 cmp sb, 0                                     |     
                                                             |     if (sb == 0) {
    0x0008f00c beq 0x8ef58                                   |         goto label_18;
                                                             |     }
    0x0008f010 mov r0, r6                                    |     r0 = r6;
    0x0008f014 bl 0x152a8                                    |     free (r0);
    0x0008f018 add r0, sp, 0x38                              |     r0 += var_38h;
    0x0008f01c ldrb fp, [r0, -1]!                            |     fp = *((r0 -= 1));
    0x0008f020 add r1, sp, 0x36                              |     r1 += var_36h;
    0x0008f024 bl 0x8e3ec                                    |     fcn_0008e3ec (r0, r1);
    0x0008f028 mov r6, sb                                    |     r6 = sb;
    0x0008f02c add sl, sl, 1                                 |     sl++;
    0x0008f030 mov r3, 0                                     |     r3 = 0;
    0x0008f034 mov sb, r0                                    |     sb = r0;
                                                             | label_49:
    0x0008f038 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x0008f03c b 0x8e9d8                                     |     goto label_9;
    0x0008f040 mov r0, sb                                    |     r0 = sb;
    0x0008f044 bl 0x152a8                                    |     free (r0);
    0x0008f048 mov sb, 0                                     |     sb = 0;
                                                             | label_20:
    0x0008f04c ldrb r2, [r4, 1]                              |     r2 = *((r4 + 1));
    0x0008f050 ldrb r3, [r4]                                 |     r3 = *(r4);
    0x0008f054 orr r3, r3, r2, lsl 8                         |     r3 |= (r2 << 8);
    0x0008f058 ldrb r2, [r4, 2]                              |     r2 = *((r4 + 2));
    0x0008f05c orr r3, r3, r2, lsl 16                        |     r3 |= (r2 << 16);
    0x0008f060 ldrb r2, [r4, 3]                              |     r2 = *((r4 + 3));
    0x0008f064 orrs r3, r3, r2, lsl 24                       |     r3 |= (r2 << 24);
                                                             |     if (r3 != r3) {
    0x0008f068 bne 0x8ef58                                   |         goto label_18;
                                                             |     }
    0x0008f06c ldrb r3, [r4, 9]                              |     r3 = *((r4 + 9));
    0x0008f070 ldrb r1, [r4, 8]                              |     r1 = *((r4 + 8));
    0x0008f074 ldrb r0, [r4, 0xb]                            |     r0 = *((r4 + 0xb));
    0x0008f078 orr r1, r1, r3, lsl 8                         |     r1 |= (r3 << 8);
    0x0008f07c ldrb r3, [r4, 0xa]                            |     r3 = *((r4 + 0xa));
    0x0008f080 add r2, sp, 0x36                              |     r2 += var_36h;
    0x0008f084 orr r1, r1, r3, lsl 16                        |     r1 |= (r3 << 16);
    0x0008f088 orr r1, r1, r0, lsl 24                        |     r1 |= (r0 << 24);
    0x0008f08c mov r3, fp                                    |     r3 = fp;
    0x0008f090 mov r0, r6                                    |     r0 = r6;
    0x0008f094 b 0x8ef54                                     |     goto label_19;
    0x0008f098 cmp sb, 0                                     |     
                                                             |     if (sb == 0) {
    0x0008f09c beq 0x8f04c                                   |         goto label_20;
                                                             |     }
    0x0008f0a0 mov r0, r6                                    |     r0 = r6;
    0x0008f0a4 bl 0x1514c                                    |     strlen (r0);
    0x0008f0a8 add sl, sl, 1                                 |     sl++;
    0x0008f0ac mov r7, r0                                    |     r7 = r0;
    0x0008f0b0 mov r0, sb                                    |     r0 = sb;
    0x0008f0b4 bl 0x1514c                                    |     r0 = strlen (r0);
    0x0008f0b8 add r1, r7, r0                                |     r1 = r7 + r0;
    0x0008f0bc add r1, r1, 2                                 |     r1 += 2;
    0x0008f0c0 mov r0, r6                                    |     r0 = r6;
    0x0008f0c4 bl 0x18990                                    |     fcn_00018990 (r0, r1);
    0x0008f0c8 mov r3, 0xa                                   |     r3 = 0xa;
    0x0008f0cc mov r1, sb                                    |     r1 = sb;
    0x0008f0d0 strb r3, [r0, r7]                             |     *((r0 + r7)) = r3;
    0x0008f0d4 mov r6, r0                                    |     r6 = r0;
    0x0008f0d8 add r0, r7, 1                                 |     r0 = r7 + 1;
    0x0008f0dc add r0, r6, r0                                |     r0 = r6 + r0;
    0x0008f0e0 bl 0x142f4                                    |     strcpy (r0, r1)
    0x0008f0e4 add r1, sp, 0x36                              |     r1 += var_36h;
    0x0008f0e8 add r0, sp, 0x37                              |     r0 += ptr;
    0x0008f0ec ldrb fp, [sp, 0x37]                           |     fp = ptr;
    0x0008f0f0 bl 0x8e3ec                                    |     r0 = fcn_0008e3ec (r0, r1);
    0x0008f0f4 mov sb, r0                                    |     sb = r0;
    0x0008f0f8 b 0x8e9d8                                     |     goto label_9;
    0x0008f0fc ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x0008f100 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0008f104 movne r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x0008f108 strne r3, [sp, 0xc]                           |         var_ch = r3;
                                                             |         goto label_56;
                                                             |     }
                                                             |     if (r3 == 0) {
                                                             | label_56:
    0x0008f10c beq 0x8e9d8                                   |         goto label_9;
                                                             |     }
                                                             | label_21:
    0x0008f110 ldr r7, [r5, 0x24]                            |     r7 = *((r5 + 0x24));
    0x0008f114 cmp r7, 0                                     |     
                                                             |     if (r7 == 0) {
    0x0008f118 beq 0x8f04c                                   |         goto label_20;
                                                             |     }
    0x0008f11c ldrb r3, [r4, 0x7d]                           |     r3 = *((r4 + 0x7d));
    0x0008f120 ldrb r5, [r4, 0x7c]                           |     r5 = *((r4 + 0x7c));
    0x0008f124 orr r5, r5, r3, lsl 8                         |     r5 |= (r3 << 8);
    0x0008f128 ldrb r3, [r4, 0x7e]                           |     r3 = *((r4 + 0x7e));
    0x0008f12c orr r5, r5, r3, lsl 16                        |     r5 |= (r3 << 16);
    0x0008f130 ldrb r3, [r4, 0x7f]                           |     r3 = *((r4 + 0x7f));
    0x0008f134 orr r5, r5, r3, lsl 24                        |     r5 |= (r3 << 24);
                                                             | label_22:
    0x0008f138 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x0008f13c bne 0x8f15c                                   |         goto label_57;
                                                             |     }
    0x0008f140 mov r1, r7                                    |     r1 = r7;
    0x0008f144 ldr r0, [pc, 0x2b0]                           |     r0 = *(0x8f3f8);
    0x0008f148 bl 0x18254                                    |     fcn_00018254 ();
    0x0008f14c ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x0008f150 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0008f154 bne 0x8e9d8                                   |         goto label_9;
                                                             |     }
    0x0008f158 b 0x8f110                                     |     goto label_21;
                                                             | label_57:
    0x0008f15c ldrb r3, [r5, 0x2e]                           |     r3 = *((r5 + 0x2e));
    0x0008f160 cmp r3, 0x3a                                  |     
                                                             |     if (r3 != 0x3a) {
    0x0008f164 bne 0x8f184                                   |         goto label_58;
                                                             |     }
    0x0008f168 ldr r0, [r5, 0x24]                            |     r0 = *((r5 + 0x24));
    0x0008f16c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0008f170 beq 0x8f184                                   |         goto label_58;
                                                             |     }
    0x0008f174 mov r1, r7                                    |     r1 = r7;
    0x0008f178 bl 0x14ed0                                    |     r0 = strcmp (r0, r1);
    0x0008f17c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0008f180 beq 0x8e9d8                                   |         goto label_9;
                                                             |     }
                                                             | label_58:
    0x0008f184 ldr r5, [r5]                                  |     r5 = *(r5);
    0x0008f188 b 0x8f138                                     |     goto label_22;
                                                             | label_24:
    0x0008f18c add r3, r3, 2                                 |     r3 += 2;
                                                             | label_39:
    0x0008f190 ldrb ip, [r2, r3]                             |     ip = *((r2 + r3));
    0x0008f194 cmp ip, 0                                     |     
                                                             |     if (ip == 0) {
    0x0008f198 beq 0x8e998                                   |         goto label_23;
                                                             |     }
    0x0008f19c cmp ip, r0                                    |     
                                                             |     if (ip != r0) {
    0x0008f1a0 bne 0x8f18c                                   |         goto label_24;
                                                             |     }
    0x0008f1a4 add r3, r2, r3                                |     r3 = r2 + r3;
    0x0008f1a8 ldrb r3, [r3, 1]                              |     r3 = *((r3 + 1));
    0x0008f1ac strb r3, [r1]                                 |     *(r1) = r3;
    0x0008f1b0 b 0x8e998                                     |     goto label_23;
    0x0008f1b4 mov r0, r6                                    |     r0 = r6;
    0x0008f1b8 bl 0x152a8                                    |     free (r0);
    0x0008f1bc ldrb r3, [r4, 0x11]                           |     r3 = *((r4 + 0x11));
    0x0008f1c0 ldrb r0, [r4, 0x10]                           |     r0 = *((r4 + 0x10));
    0x0008f1c4 orr r0, r0, r3, lsl 8                         |     r0 |= (r3 << 8);
    0x0008f1c8 ldrb r3, [r4, 0x12]                           |     r3 = *((r4 + 0x12));
    0x0008f1cc orr r0, r0, r3, lsl 16                        |     r0 |= (r3 << 16);
    0x0008f1d0 ldrb r3, [r4, 0x13]                           |     r3 = *((r4 + 0x13));
    0x0008f1d4 orrs r0, r0, r3, lsl 24                       |     r0 |= (r3 << 24);
    0x0008f1d8 ldr r3, [pc, 0x220]                           |     r3 = "can't find label for jump to '%s';
                                                             |     if (r0 != r0) {
    0x0008f1dc moveq r0, r3                                  |         r0 = r3;
                                                             |     }
    0x0008f1e0 bl 0x189d4                                    |     r0 = fcn_000189d4 (r0);
    0x0008f1e4 mov r6, r0                                    |     r6 = r0;
    0x0008f1e8 b 0x8e9d8                                     |     goto label_9;
    0x0008f1ec cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x0008f1f0 moveq r7, 2                                   |         r7 = 2;
                                                             |     }
                                                             |     if (r6 != 0) {
    0x0008f1f4 beq 0x8f204                                   |         
    0x0008f1f8 mov r0, r6                                    |         r0 = r6;
    0x0008f1fc bl 0x1514c                                    |         r0 = strlen (r0);
    0x0008f200 add r7, r0, 2                                 |         r7 = r0 + 2;
                                                             |     }
    0x0008f204 ldrb r1, [r4, 0x11]                           |     r1 = *((r4 + 0x11));
    0x0008f208 ldrb r0, [r4, 0x10]                           |     r0 = *((r4 + 0x10));
    0x0008f20c orr r0, r0, r1, lsl 8                         |     r0 |= (r1 << 8);
    0x0008f210 ldrb r1, [r4, 0x12]                           |     r1 = *((r4 + 0x12));
    0x0008f214 orr r0, r0, r1, lsl 16                        |     r0 |= (r1 << 16);
    0x0008f218 ldrb r1, [r4, 0x13]                           |     r1 = *((r4 + 0x13));
    0x0008f21c orrs r0, r0, r1, lsl 24                       |     r0 |= (r1 << 24);
                                                             |     if (r0 != r0) {
    0x0008f220 beq 0x8f228                                   |         
    0x0008f224 bl 0x1514c                                    |         r0 = strlen (r0);
                                                             |     }
    0x0008f228 add r1, r7, r0                                |     r1 = r7 + r0;
    0x0008f22c mov r0, r6                                    |     r0 = r6;
    0x0008f230 bl 0x18990                                    |     fcn_00018990 (r0, r1);
    0x0008f234 cmp r7, 2                                     |     
                                                             |     if (r7 != 2) {
    0x0008f238 moveq r3, 0                                   |         r3 = 0;
                                                             |     }
    0x0008f23c ldr r1, [pc, 0x1c0]                           |     r1 = *(0x8f400);
                                                             |     if (r7 != 2) {
    0x0008f240 strbeq r3, [r0]                               |         *(r0) = r3;
                                                             |     }
    0x0008f244 mov r6, r0                                    |     r6 = r0;
    0x0008f248 bl 0x149f0                                    |     strcat (r0, r1);
    0x0008f24c ldrb r3, [r4, 0x11]                           |     r3 = *((r4 + 0x11));
    0x0008f250 ldrb r1, [r4, 0x10]                           |     r1 = *((r4 + 0x10));
    0x0008f254 orr r1, r1, r3, lsl 8                         |     r1 |= (r3 << 8);
    0x0008f258 ldrb r3, [r4, 0x12]                           |     r3 = *((r4 + 0x12));
    0x0008f25c orr r1, r1, r3, lsl 16                        |     r1 |= (r3 << 16);
    0x0008f260 ldrb r3, [r4, 0x13]                           |     r3 = *((r4 + 0x13));
    0x0008f264 orrs r1, r1, r3, lsl 24                       |     r1 |= (r3 << 24);
                                                             |     if (r1 != r1) {
    0x0008f268 beq 0x8f274                                   |         
    0x0008f26c mov r0, r6                                    |         r0 = r6;
    0x0008f270 bl 0x149f0                                    |         strcat (r0, r1);
                                                             |     }
                                                             | label_25:
    0x0008f274 mov fp, 0xa                                   |     
    0x0008f278 b 0x8e9d8                                     |     goto label_9;
    0x0008f27c ldrb r0, [r4, 0x11]                           |     r0 = *((r4 + 0x11));
    0x0008f280 ldrb r3, [r4, 0x10]                           |     r3 = *((r4 + 0x10));
    0x0008f284 orr r3, r3, r0, lsl 8                         |     r3 |= (r0 << 8);
    0x0008f288 ldrb r0, [r4, 0x12]                           |     r0 = *((r4 + 0x12));
    0x0008f28c orr r3, r3, r0, lsl 16                        |     r3 |= (r0 << 16);
    0x0008f290 ldrb r0, [r4, 0x13]                           |     r0 = *((r4 + 0x13));
    0x0008f294 orr r0, r3, r0, lsl 24                        |     r0 = r3 | (r0 << 24);
    0x0008f298 bl 0x152a8                                    |     free (r0);
    0x0008f29c mov r0, r6                                    |     r0 = r6;
    0x0008f2a0 bl 0x189d4                                    |     r0 = fcn_000189d4 (r0);
    0x0008f2a4 lsr r3, r0, 8                                 |     r3 = r0 >> 8;
    0x0008f2a8 strb r0, [r4, 0x10]                           |     *((r4 + 0x10)) = r0;
    0x0008f2ac strb r3, [r4, 0x11]                           |     *((r4 + 0x11)) = r3;
    0x0008f2b0 lsr r3, r0, 0x10                              |     r3 = r0 >> 0x10;
    0x0008f2b4 lsr r0, r0, 0x18                              |     r0 >>= 0x18;
    0x0008f2b8 strb r3, [r4, 0x12]                           |     *((r4 + 0x12)) = r3;
    0x0008f2bc strb r0, [r4, 0x13]                           |     *((r4 + 0x13)) = r0;
    0x0008f2c0 b 0x8e9d8                                     |     goto label_9;
    0x0008f2c4 ldrb r3, [r4, 0x11]                           |     r3 = *((r4 + 0x11));
    0x0008f2c8 ldrb r7, [r4, 0x10]                           |     r7 = *((r4 + 0x10));
    0x0008f2cc orr r7, r7, r3, lsl 8                         |     r7 |= (r3 << 8);
    0x0008f2d0 ldrb r3, [r4, 0x12]                           |     r3 = *((r4 + 0x12));
    0x0008f2d4 orr r7, r7, r3, lsl 16                        |     r7 |= (r3 << 16);
    0x0008f2d8 ldrb r3, [r4, 0x13]                           |     r3 = *((r4 + 0x13));
    0x0008f2dc orrs r7, r7, r3, lsl 24                       |     r7 |= (r3 << 24);
                                                             |     if (r7 != r7) {
    0x0008f2e0 moveq r8, 2                                   |         r8 = 2;
                                                             |     }
                                                             |     if (r7 != r7) {
    0x0008f2e4 beq 0x8f2f4                                   |         
    0x0008f2e8 mov r0, r7                                    |         r0 = r7;
    0x0008f2ec bl 0x1514c                                    |         r0 = strlen (r0);
    0x0008f2f0 add r8, r0, 2                                 |         r8 = r0 + 2;
                                                             |     }
    0x0008f2f4 subs r0, r6, 0                                |     r0 = r6 - 0;
                                                             |     if (r0 != r6) {
    0x0008f2f8 beq 0x8f300                                   |         
    0x0008f2fc bl 0x1514c                                    |         r0 = strlen (r0);
                                                             |     }
    0x0008f300 add r1, r8, r0                                |     r1 = r8 + r0;
    0x0008f304 mov r0, r7                                    |     r0 = r7;
    0x0008f308 bl 0x18990                                    |     fcn_00018990 (r0, r1);
    0x0008f30c cmp r8, 2                                     |     
    0x0008f310 ldr r1, [pc, 0xec]                            |     r1 = *(0x8f400);
    0x0008f314 lsr r3, r0, 8                                 |     r3 = r0 >> 8;
    0x0008f318 strb r3, [r4, 0x11]                           |     *((r4 + 0x11)) = r3;
    0x0008f31c lsr r3, r0, 0x10                              |     r3 = r0 >> 0x10;
    0x0008f320 strb r3, [r4, 0x12]                           |     *((r4 + 0x12)) = r3;
    0x0008f324 lsr r3, r0, 0x18                              |     r3 = r0 >> 0x18;
    0x0008f328 strb r3, [r4, 0x13]                           |     *((r4 + 0x13)) = r3;
                                                             |     if (r8 != 2) {
    0x0008f32c moveq r3, 0                                   |         r3 = 0;
                                                             |     }
    0x0008f330 strb r0, [r4, 0x10]                           |     *((r4 + 0x10)) = r0;
                                                             |     if (r8 != 2) {
    0x0008f334 strbeq r3, [r0]                               |         *(r0) = r3;
                                                             |     }
    0x0008f338 ldrb r0, [r4, 0x11]                           |     r0 = *((r4 + 0x11));
    0x0008f33c ldrb r3, [r4, 0x10]                           |     r3 = *((r4 + 0x10));
    0x0008f340 orr r3, r3, r0, lsl 8                         |     r3 |= (r0 << 8);
    0x0008f344 ldrb r0, [r4, 0x12]                           |     r0 = *((r4 + 0x12));
    0x0008f348 orr r3, r3, r0, lsl 16                        |     r3 |= (r0 << 16);
    0x0008f34c ldrb r0, [r4, 0x13]                           |     r0 = *((r4 + 0x13));
    0x0008f350 orr r0, r3, r0, lsl 24                        |     r0 = r3 | (r0 << 24);
    0x0008f354 bl 0x149f0                                    |     strcat (r0, r1);
    0x0008f358 cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x0008f35c beq 0x8e9d8                                   |         goto label_9;
                                                             |     }
    0x0008f360 ldrb r0, [r4, 0x11]                           |     r0 = *((r4 + 0x11));
    0x0008f364 ldrb r3, [r4, 0x10]                           |     r3 = *((r4 + 0x10));
    0x0008f368 mov r1, r6                                    |     r1 = r6;
    0x0008f36c orr r3, r3, r0, lsl 8                         |     r3 |= (r0 << 8);
    0x0008f370 ldrb r0, [r4, 0x12]                           |     r0 = *((r4 + 0x12));
    0x0008f374 orr r3, r3, r0, lsl 16                        |     r3 |= (r0 << 16);
    0x0008f378 ldrb r0, [r4, 0x13]                           |     r0 = *((r4 + 0x13));
    0x0008f37c orr r0, r3, r0, lsl 24                        |     r0 = r3 | (r0 << 24);
    0x0008f380 bl 0x149f0                                    |     strcat (r0, r1);
    0x0008f384 b 0x8e9d8                                     |     goto label_9;
    0x0008f388 ldrb r3, [r4, 0x11]                           |     r3 = *((r4 + 0x11));
    0x0008f38c ldrb r0, [r4, 0x10]                           |     r0 = *((r4 + 0x10));
    0x0008f390 orr r0, r0, r3, lsl 8                         |     r0 |= (r3 << 8);
    0x0008f394 ldrb r3, [r4, 0x12]                           |     r3 = *((r4 + 0x12));
    0x0008f398 orr r0, r0, r3, lsl 16                        |     r0 |= (r3 << 16);
    0x0008f39c ldrb r3, [r4, 0x13]                           |     r3 = *((r4 + 0x13));
    0x0008f3a0 orrs r0, r0, r3, lsl 24                       |     r0 |= (r3 << 24);
                                                             |     if (r0 == r0) {
    0x0008f3a4 bne 0x8f3b0                                   |         
    0x0008f3a8 mov r0, 1                                     |         r0 = 1;
    0x0008f3ac bl 0x189b8                                    |         fcn_000189b8 (r0);
                                                             |     }
    0x0008f3b0 lsr r3, r6, 8                                 |     r3 = r6 >> 8;
    0x0008f3b4 strb r6, [r4, 0x10]                           |     *((r4 + 0x10)) = r6;
    0x0008f3b8 strb r3, [r4, 0x11]                           |     *((r4 + 0x11)) = r3;
    0x0008f3bc lsr r3, r6, 0x10                              |     r3 = r6 >> 0x10;
    0x0008f3c0 lsr r6, r6, 0x18                              |     r6 >>= 0x18;
    0x0008f3c4 strb r6, [r4, 0x13]                           |     *((r4 + 0x13)) = r6;
    0x0008f3c8 strb r3, [r4, 0x12]                           |     *((r4 + 0x12)) = r3;
    0x0008f3cc mov r6, r0                                    |     r6 = r0;
    0x0008f3d0 b 0x8f274                                     |     goto label_25;
                                                             | label_50:
    0x0008f3d4 bl 0x8e160                                    |     fcn_0008e160 (r0);
    0x0008f3d8 b 0x8ec5c                                     |     goto label_26;
                                                             | label_27:
    0x0008f3dc add sp, sp, 0x3c                              |     
    0x0008f3e0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |     
                                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x90018 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00090018 ()                      | void fcn_00090018 () {
                                                 |     int32_t var_4h;
                                                 |     int32_t var_ch;
                                                 |     char * format;
                                                 |     int32_t var_1ch;
    0x00090018 push {r0, r1, r2, r3}             |     
    0x0009001c push {r0, r1, r2, r4, r5, lr}     |     
    0x00090020 ldr r1, [pc, 0x4c]                |     r1 = *(0x90070);
    0x00090024 add r3, sp, 0x1c                  |     r3 += var_1ch;
    0x00090028 str r3, [sp, 4]                   |     var_4h = r3;
    0x0009002c ldr r3, [pc, 0x44]                |     r3 = "\e[7m";
    0x00090030 ldr r4, [r3]                      |     r4 = "\e[7m";
    0x00090034 add r5, r4, 0x2e8                 |     r5 = r4 + 0x2e8;
    0x00090038 mov r0, r5                        |     r0 = r5;
    0x0009003c bl 0x142f4                        |     strcpy (r0, r1)
    0x00090040 ldr r2, [sp, 4]                   |     r2 = var_4h;
    0x00090044 ldr r1, [sp, 0x18]                |     r1 = format;
    0x00090048 add r0, r4, 0x2ec                 |     r0 = r4 + 0x2ec;
    0x0009004c bl 0x14378                        |     vsprintf (r0, r1, r2);
    0x00090050 ldr r1, [pc, 0x24]                |     r1 = *(0x90078);
    0x00090054 mov r0, r5                        |     r0 = r5;
    0x00090058 bl 0x149f0                        |     strcat (r0, r1);
    0x0009005c mov r3, 8                         |     r3 = 8;
    0x00090060 str r3, [r4, 0x48]                |     *((r4 + 0x48)) = r3;
    0x00090064 add sp, sp, 0xc                   |     
    0x00090068 pop {r4, r5, lr}                  |     
    0x0009006c add sp, sp, 0x10                  |     
    0x00090070 bx lr                             |     return;
                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x90080 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00090080 ()                              | void fcn_00090080 (char * arg1) {
                                                         |     char * dest;
                                                         |     char * var_1h;
                                                         |     int32_t var_3h;
                                                         |     int32_t var_5h;
                                                         |     int32_t var_80h;
                                                         |     r0 = arg1;
    0x00090080 push {r4, r5, r6, r7, r8, sb, sl, lr}     |     
    0x00090084 ldrb r2, [r0]                             |     r2 = *(r0);
    0x00090088 mov r5, 0                                 |     r5 = 0;
    0x0009008c ldr r4, [pc, 0xd8]                        |     r4 = *(0x90168);
    0x00090090 sub sp, sp, 0x80                          |     
    0x00090094 cmp r2, r5                                |     
    0x00090098 ldr r7, [pc, 0xd0]                        |     r7 = "_NULL_";
    0x0009009c ldr r8, [pc, 0xd0]                        |     r8 = *(0x90170);
    0x000900a0 add r3, sp, 0x80                          |     r3 += var_80h;
                                                         |     if (r2 == r5) {
    0x000900a4 movne r4, r0                              |         r4 = r0;
                                                         |     }
    0x000900a8 strb r5, [r3, -0x80]!                     |     *((r3 -= 0x80)) = r5;
    0x000900ac sub r4, r4, 1                             |     r4--;
    0x000900b0 mov r6, r3                                |     r6 = r3;
                                                         |     do {
    0x000900b4 ldrb sl, [r4, 1]!                         |         sl = *((r4 += 1));
    0x000900b8 cmp sl, 0                                 |         
                                                         |         if (sl == 0) {
    0x000900bc beq 0x90158                               |             goto label_0;
                                                         |         }
    0x000900c0 cmp sl, 0x9b                              |         
                                                         |         if (sl == 0x9b) {
    0x000900c4 movne r2, sl                              |             r2 = sl;
                                                         |         }
                                                         |         if (sl == 0x9b) {
    0x000900c8 movne r1, 0                               |             r1 = 0;
                                                         |         }
                                                         |         if (sl == 0x9b) {
    0x000900cc bne 0x900e8                               |             
    0x000900d0 mov r1, r7                                |             r1 = r7;
    0x000900d4 mov r0, r3                                |             r0 = r3;
    0x000900d8 bl 0x142f4                                |             strcpy (r0, r1)
    0x000900dc mov r1, 1                                 |             r1 = 1;
    0x000900e0 mov r2, 0x2e                              |             r2 = 0x2e;
    0x000900e4 add r3, r0, 3                             |             r3 += var_3h;
                                                         |         }
    0x000900e8 cmp r2, 0x7f                              |         
    0x000900ec cmpne r2, 0x1f                            |         __asm ("cmpne r2, 0x1f");
    0x000900f0 add sb, r3, 1                             |         sb += var_1h;
                                                         |         if (r2 <= 0x7f) {
    0x000900f4 movhi sb, r3                              |             sb = r3;
                                                         |         }
                                                         |         if (r2 <= 0x7f) {
    0x000900f8 bhi 0x90114                               |             
    0x000900fc orr r2, r2, 0x40                          |             r2 |= 0x40;
    0x00090100 and r2, r2, 0xff                          |             r2 &= 0xff;
    0x00090104 cmp r2, 0x7f                              |             
    0x00090108 mov r0, 0x5e                              |             r0 = 0x5e;
                                                         |             if (r2 != 0x7f) {
    0x0009010c moveq r2, 0x3f                            |                 r2 = 0x3f;
                                                         |             }
    0x00090110 strb r0, [r3]                             |             *(r3) = r0;
                                                         |         }
    0x00090114 cmp r1, 0                                 |         
    0x00090118 add r3, sb, 1                             |         r3 += var_1h;
    0x0009011c strb r2, [sb]                             |         *(sb) = r2;
    0x00090120 strb r5, [sb, 1]                          |         var_1h = r5;
                                                         |         if (r1 != 0) {
    0x00090124 beq 0x90138                               |             
    0x00090128 mov r0, r3                                |             r0 = r3;
    0x0009012c mov r1, r8                                |             r1 = r8;
    0x00090130 bl 0x142f4                                |             strcpy (r0, r1)
    0x00090134 add r3, sb, 5                             |             r3 += var_5h;
                                                         |         }
    0x00090138 cmp sl, 0xa                               |         
                                                         |         if (sl != 0xa) {
    0x0009013c moveq r2, 0x24                            |             r2 = 0x24;
                                                         |         }
                                                         |         if (sl != 0xa) {
    0x00090140 strbeq r2, [r3]                           |             *(r3) = r2;
                                                         |         }
                                                         |         if (sl != 0xa) {
    0x00090144 strbeq r5, [r3, 1]                        |             *((r3 + 1)) = r5;
                                                         |         }
                                                         |         if (sl != 0xa) {
    0x00090148 addeq r3, r3, 1                           |             r3++;
                                                         |         }
    0x0009014c sub r2, r3, r6                            |         r2 = r3 - r6;
    0x00090150 cmp r2, 0x76                              |         
    0x00090154 ble 0x900b4                               |         
                                                         |     } while (r2 <= 0x76);
                                                         | label_0:
    0x00090158 mov r1, r6                                |     r1 = r6;
    0x0009015c ldr r0, [pc, 0x14]                        |     r0 = "\e[7m";
    0x00090160 bl 0x90018                                |     fcn_00090018 ();
    0x00090164 add sp, sp, 0x80                          |     
    0x00090168 pop {r4, r5, r6, r7, r8, sb, sl, pc}      |     
                                                         | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x9125c */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.0009125c ()                              | void fcn_0009125c (char * src) {
                                                         |     r0 = src;
    0x0009125c ldr r3, [pc, 0xd4]                        |     r3 = *(0x91334);
    0x00091260 push {r4, r5, r6, r7, r8, sb, sl, lr}     |     
    0x00091264 ldr r5, [r3]                              |     r5 = *(0x91334);
    0x00091268 mov r1, r0                                |     r1 = r0;
    0x0009126c add r7, r5, 0x430                         |     r7 = r5 + 0x430;
    0x00091270 mov r4, r0                                |     r4 = r0;
    0x00091274 mov r6, 0                                 |     r6 = 0;
    0x00091278 mov r0, r7                                |     r0 = r7;
    0x0009127c bl 0x142f4                                |     strcpy (r0, r1)
    0x00091280 str r6, [r5, 0x4c]                        |     *((r5 + 0x4c)) = r6;
    0x00091284 bl 0x90ae0                                |     fcn_00090ae0 ();
    0x00091288 mov r0, r4                                |     r0 = r4;
    0x0009128c bl 0x90a74                                |     fcn_00090a74 ();
    0x00091290 mov r0, r7                                |     r0 = r7;
    0x00091294 bl 0x1514c                                |     strlen (r0);
    0x00091298 ldr r8, [pc, 0x9c]                        |     r8 = *(0x91338);
    0x0009129c ldr sb, [pc, 0x9c]                        |     sb = *(0x9133c);
    0x000912a0 mov r4, r0                                |     r4 = r0;
                                                         |     do {
                                                         | label_0:
    0x000912a4 cmp r4, 0x7f                              |         
                                                         |         if (r4 > 0x7f) {
    0x000912a8 bgt 0x91300                               |             goto label_1;
                                                         |         }
    0x000912ac bl 0x90bc4                                |         r0 = fcn_00090bc4 ();
    0x000912b0 cmp r0, 0x1b                              |         
                                                         |         if (r0 <= 0x1b) {
    0x000912b4 bhi 0x912c4                               |             
    0x000912b8 mvn r3, r8, lsr r0                        |             r3 = ~r8;
    0x000912bc tst r3, 1                                 |             
                                                         |             if ((r3 & 1) == 0) {
    0x000912c0 beq 0x91300                               |                 goto label_1;
                                                         |             }
                                                         |         }
    0x000912c4 ldrb r3, [r5, 0x68]                       |         r3 = *((r5 + 0x68));
    0x000912c8 cmp r3, r0                                |         
                                                         |         if (r3 != r0) {
    0x000912cc beq 0x912e4                               |             
    0x000912d0 cmp r0, 0x7f                              |             
    0x000912d4 cmpne r0, 8                               |             __asm ("cmpne r0, 8");
                                                         |             if (r0 != 0x7f) {
    0x000912d8 moveq r2, 1                               |                 r2 = 1;
                                                         |             }
                                                         |             if (r0 == 0x7f) {
    0x000912dc movne r2, 0                               |                 r2 = 0;
                                                         |             }
                                                         |             if (r0 != 0x7f) {
    0x000912e0 bne 0x91310                               |                 goto label_2;
                                                         |             }
                                                         |         }
    0x000912e4 sub r4, r4, 1                             |         r4--;
    0x000912e8 add r3, r5, r4                            |         r3 = r5 + r4;
    0x000912ec strb r6, [r3, 0x430]                      |         *((r3 + 0x430)) = r6;
    0x000912f0 mov r0, sb                                |         r0 = sb;
    0x000912f4 bl 0x90a74                                |         fcn_00090a74 ();
    0x000912f8 cmp r4, 0                                 |         
    0x000912fc bgt 0x912a4                               |         
                                                         |     } while (r4 > 0);
                                                         | label_1:
    0x00091300 mov r0, 0                                 |     r0 = 0;
    0x00091304 bl 0x90f60                                |     fcn_00090f60 (r0);
    0x00091308 mov r0, r7                                |     r0 = r7;
    0x0009130c pop {r4, r5, r6, r7, r8, sb, sl, pc}      |     
                                                         | label_2:
    0x00091310 sub r3, r0, 1                             |     r3 = r0 - 1;
    0x00091314 cmp r3, 0xfe                              |     
                                                         |     if (r3 > 0xfe) {
    0x00091318 bhi 0x912a4                               |         goto label_0;
                                                         |     }
    0x0009131c add r3, r5, r4                            |     r3 = r5 + r4;
    0x00091320 add r4, r4, 1                             |     r4++;
    0x00091324 strb r0, [r3, 0x430]                      |     *((r3 + 0x430)) = r0;
    0x00091328 add r3, r5, r4                            |     r3 = r5 + r4;
    0x0009132c strb r2, [r3, 0x430]                      |     *((r3 + 0x430)) = r2;
    0x00091330 bl 0x18ce4                                |     fcn_00018ce4 (r0);
    0x00091334 b 0x912a4                                 |     goto label_0;
                                                         | }
    ; 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 @ 0x919ec */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000919ec ()                                  | void fcn_000919ec (int32_t arg1) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_1ch;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     char * s1;
                                                             |     int32_t var_29h;
                                                             |     char * s;
                                                             |     int32_t var_0h_3;
                                                             |     int32_t var_1h;
                                                             |     char * dest;
                                                             |     int32_t var_128h;
                                                             |     int32_t var_12ch;
                                                             |     r0 = arg1;
    0x000919ec push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x000919f0 ldrb r3, [r0]                                 |     r3 = *(r0);
    0x000919f4 sub sp, sp, 0x12c                             |     
    0x000919f8 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000919fc beq 0x91c34                                   |         goto label_2;
                                                             |     }
    0x00091a00 cmp r3, 0x3a                                  |     
    0x00091a04 mvn r3, 0                                     |     r3 = ~0;
    0x00091a08 str r3, [sp, 0x20]                            |     var_20h = r3;
    0x00091a0c str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x00091a10 ldr r3, [pc, 0xbec]                           |     r3 = *(0x92600);
    0x00091a14 mov r6, r0                                    |     r6 = r0;
    0x00091a18 ldr r5, [r3]                                  |     r5 = *(0x92600);
                                                             |     if (r3 != 0x3a) {
    0x00091a1c addeq r6, r0, 1                               |         r6 = r0 + 1;
                                                             |     }
    0x00091a20 ldm r5, {r4, r8}                              |     r4 = *(r5);
                                                             |     r8 = *((r5 + 4));
    0x00091a24 sub r8, r8, 1                                 |     r8--;
    0x00091a28 mov r1, r8                                    |     r1 = r8;
    0x00091a2c mov r0, r4                                    |     r0 = r4;
    0x00091a30 bl 0x90770                                    |     fcn_00090770 (r0, r1);
    0x00091a34 ldr fp, [r5, 0x50]                            |     fp = *(0x92650);
                                                             |     do {
    0x00091a38 mov r0, r6                                    |         r0 = r6;
    0x00091a3c ldrb r3, [r6], 1                              |         r3 = *(r6);
                                                             |         r6++;
    0x00091a40 cmp r3, 9                                     |         
    0x00091a44 cmpne r3, 0x20                                |         __asm ("cmpne r3, 0x20");
    0x00091a48 beq 0x91a38                                   |         
                                                             |     } while (r3 == 9);
    0x00091a4c cmp r3, 0x25                                  |     
                                                             |     if (r3 != 0x25) {
    0x00091a50 bne 0x91a94                                   |         goto label_14;
                                                             |     }
    0x00091a54 mov r3, 1                                     |     r3 = 1;
    0x00091a58 mov r1, r8                                    |     r1 = r8;
    0x00091a5c mov r0, r4                                    |     r0 = r4;
    0x00091a60 str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x00091a64 bl 0x90770                                    |     fcn_00090770 (r0, r1);
    0x00091a68 str r0, [sp, 0x20]                            |     var_20h = r0;
                                                             | label_1:
    0x00091a6c mov r0, r6                                    |     r0 = r6;
                                                             |     do {
    0x00091a70 str r0, [sp, 0xc]                             |         var_ch = r0;
    0x00091a74 ldrb r3, [r0], 1                              |         r3 = *(r0);
                                                             |         r0++;
    0x00091a78 cmp r3, 9                                     |         
    0x00091a7c cmpne r3, 0x20                                |         __asm ("cmpne r3, 0x20");
    0x00091a80 beq 0x91a70                                   |         
                                                             |     } while (r3 == 9);
                                                             | label_0:
    0x00091a84 add r2, sp, 0x28                              |     r2 += s1;
    0x00091a88 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x00091a8c mov sb, r2                                    |     sb = r2;
    0x00091a90 b 0x91af4                                     |     goto label_15;
                                                             | label_14:
    0x00091a94 add r1, sp, 0x1c                              |     r1 += var_1ch;
    0x00091a98 bl 0x907e0                                    |     fcn_000907e0 (r0, r1);
                                                             |     do {
    0x00091a9c str r0, [sp, 0xc]                             |         var_ch = r0;
    0x00091aa0 ldrb r3, [r0], 1                              |         r3 = *(r0);
                                                             |         r0++;
    0x00091aa4 cmp r3, 9                                     |         
    0x00091aa8 cmpne r3, 0x20                                |         __asm ("cmpne r3, 0x20");
    0x00091aac beq 0x91a9c                                   |         
                                                             |     } while (r3 == 9);
    0x00091ab0 cmp r3, 0x2c                                  |     
                                                             |     if (r3 != 0x2c) {
    0x00091ab4 bne 0x91a84                                   |         goto label_0;
                                                             |     }
    0x00091ab8 mov r3, r0                                    |     r3 = r0;
                                                             |     do {
    0x00091abc mov r0, r3                                    |         r0 = r3;
    0x00091ac0 ldrb r2, [r3], 1                              |         r2 = *(r3);
                                                             |         r3++;
    0x00091ac4 cmp r2, 9                                     |         
    0x00091ac8 cmpne r2, 0x20                                |         __asm ("cmpne r2, 0x20");
    0x00091acc beq 0x91abc                                   |         
                                                             |     } while (r2 == 9);
    0x00091ad0 add r1, sp, 0x20                              |     r1 += var_20h;
    0x00091ad4 bl 0x907e0                                    |     r0 = fcn_000907e0 (r0, r1);
    0x00091ad8 mov r6, r0                                    |     r6 = r0;
    0x00091adc b 0x91a6c                                     |     goto label_1;
                                                             |     do {
    0x00091ae0 sub ip, r1, 9                                 |         
    0x00091ae4 cmp ip, 4                                     |         
                                                             |         if (ip < 4) {
    0x00091ae8 bls 0x91b04                                   |             goto label_16;
                                                             |         }
    0x00091aec mov r3, r0                                    |         r3 = r0;
    0x00091af0 strb r1, [r2], 1                              |         *(r2) = r1;
                                                             |         r2++;
                                                             | label_15:
    0x00091af4 mov r0, r3                                    |         r0 = r3;
    0x00091af8 ldrb r1, [r0], 1                              |         r1 = *(r0);
                                                             |         r0++;
    0x00091afc tst r1, 0xdf                                  |         
    0x00091b00 bne 0x91ae0                                   |         
                                                             |     } while ((r1 & 0xdf) != 0);
                                                             | label_16:
    0x00091b04 mov r1, 0                                     |     r1 = 0;
    0x00091b08 strb r1, [r2]                                 |     *(r2) = r1;
                                                             |     do {
    0x00091b0c mov r1, r3                                    |         r1 = r3;
    0x00091b10 ldrb r2, [r3], 1                              |         r2 = *(r3);
                                                             |         r3++;
    0x00091b14 cmp r2, 9                                     |         
    0x00091b18 cmpne r2, 0x20                                |         __asm ("cmpne r2, 0x20");
                                                             |         if (r2 != 9) {
    0x00091b1c moveq r6, 1                                   |             r6 = 1;
                                                             |         }
                                                             |         if (r2 == 9) {
    0x00091b20 movne r6, 0                                   |             r6 = 0;
                                                             |         }
    0x00091b24 beq 0x91b0c                                   |         
                                                             |     } while (r2 == 9);
    0x00091b28 add r0, sp, 0xa8                              |     r0 += dest;
    0x00091b2c bl 0x142f4                                    |     strcpy (r0, r1)
    0x00091b30 mov r1, 0x21                                  |     r1 = 0x21;
    0x00091b34 mov r0, sb                                    |     r0 = sb;
    0x00091b38 bl 0x17f40                                    |     r0 = fcn_00017f40 (r0, r1);
    0x00091b3c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00091b40 strbne r6, [r0]                               |         *(r0) = r6;
                                                             |     }
    0x00091b44 ldr sl, [sp, 0x1c]                            |     sl = var_1ch;
                                                             |     if (r0 == 0) {
    0x00091b48 movne r3, 1                                   |         r3 = 1;
                                                             |     }
                                                             |     if (r0 == 0) {
    0x00091b4c strne r3, [sp, 0x10]                          |         var_10h = r3;
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00091b50 streq r0, [sp, 0x10]                          |         var_10h = r0;
                                                             |     }
    0x00091b54 cmp sl, 0                                     |     
                                                             |     if (sl >= 0) {
    0x00091b58 blt 0x91b70                                   |         
    0x00091b5c mov r0, sl                                    |         r0 = sl;
    0x00091b60 bl 0x90658                                    |         r0 = fcn_00090658 (r0);
    0x00091b64 mov r4, r0                                    |         r4 = r0;
    0x00091b68 bl 0x905e0                                    |         r0 = fcn_000905e0 (r0);
    0x00091b6c mov r8, r0                                    |         r8 = r0;
                                                             |     }
    0x00091b70 ldr r3, [sp, 0x20]                            |     r3 = var_20h;
    0x00091b74 cmp r3, 0                                     |     
    0x00091b78 str r3, [sp, 0x14]                            |     var_14h = r3;
                                                             |     if (r3 >= 0) {
    0x00091b7c blt 0x91b90                                   |         
    0x00091b80 mov r0, r3                                    |         r0 = r3;
    0x00091b84 bl 0x90658                                    |         r0 = fcn_00090658 (r0);
    0x00091b88 bl 0x905e0                                    |         r0 = fcn_000905e0 (r0);
    0x00091b8c mov r8, r0                                    |         r8 = r0;
                                                             |     }
    0x00091b90 mov r0, sb                                    |     r0 = sb;
    0x00091b94 bl 0x1514c                                    |     strlen (r0);
    0x00091b98 subs r7, r0, 0                                |     r7 -= s1;
                                                             |     if (r7 != s1) {
    0x00091b9c bne 0x91bbc                                   |         goto label_17;
                                                             |     }
    0x00091ba0 cmp sl, 0                                     |     
                                                             |     if (sl < 0) {
    0x00091ba4 blt 0x91c34                                   |         goto label_2;
                                                             |     }
    0x00091ba8 mov r0, sl                                    |     r0 = sl;
    0x00091bac bl 0x90658                                    |     fcn_00090658 (r0);
                                                             |     do {
    0x00091bb0 str r0, [r5, 8]                               |         *((r5 + 8)) = r0;
    0x00091bb4 bl 0x8f8c8                                    |         fcn_0008f8c8 ();
    0x00091bb8 b 0x91c34                                     |         goto label_2;
                                                             | label_17:
    0x00091bbc ldrb r6, [sp, 0x28]                           |         r6 = s1;
    0x00091bc0 cmp r6, 0x21                                  |         
                                                             |         if (r6 == 0x21) {
    0x00091bc4 bne 0x91bf8                                   |             
    0x00091bc8 bl 0x90ae0                                    |             fcn_00090ae0 ();
    0x00091bcc bl 0x90a54                                    |             fcn_00090a54 ();
    0x00091bd0 ldr r3, [sp, 0xc]                             |             r3 = var_ch;
    0x00091bd4 add r0, r3, 1                                 |             r0 = r3 + 1;
    0x00091bd8 bl 0x146c0                                    |             r0 = system (r0);
    0x00091bdc subs r1, r0, 0                                |             r1 = r0 - 0;
                                                             |             if (r1 != r0) {
    0x00091be0 beq 0x91bec                                   |                 
    0x00091be4 ldr r0, [pc, 0xa1c]                           |                 r0 = *(0x92604);
    0x00091be8 bl 0x1436c                                    |                 r0 = printf (r0);
                                                             |             }
                                                             | label_3:
    0x00091bec bl 0x8fa84                                    |             fcn_0008fa84 ();
                                                             | label_4:
    0x00091bf0 bl 0x9138c                                    |             fcn_0009138c ();
    0x00091bf4 b 0x91c34                                     |             
                                                             |         } else {
    0x00091bf8 cmp r6, 0x3d                                  |             
                                                             |             if (r6 != 0x3d) {
    0x00091bfc bne 0x91c50                                   |                 goto label_18;
                                                             |             }
    0x00091c00 ldrb r3, [sp, 0x29]                           |             r3 = var_29h;
    0x00091c04 cmp r3, 0                                     |             
                                                             |             if (r3 != 0) {
    0x00091c08 bne 0x91c50                                   |                 goto label_18;
                                                             |             }
    0x00091c0c cmp sl, 0                                     |             
                                                             |             if (sl < 0) {
    0x00091c10 bge 0x91c28                                   |                 
    0x00091c14 ldr r0, [r5]                                  |                 r0 = *(r5);
    0x00091c18 ldr r1, [r5, 8]                               |                 r1 = *((r5 + 8));
    0x00091c1c bl 0x90770                                    |                 fcn_00090770 (r0, r1);
    0x00091c20 str r0, [sp, 0x20]                            |                 var_20h = r0;
    0x00091c24 str r0, [sp, 0x1c]                            |                 var_1ch = r0;
                                                             |             }
    0x00091c28 ldr r1, [sp, 0x1c]                            |             r1 = var_1ch;
    0x00091c2c ldr r0, [pc, 0x9d8]                           |             r0 = "shell_returned__i";
    0x00091c30 bl 0x9017c                                    |             fcn_0009017c ();
                                                             |         }
                                                             | label_2:
    0x00091c34 ldr r3, [pc, 0x9c8]                           |         r3 = *(0x92600);
    0x00091c38 ldr r4, [r3]                                  |         r4 = *(0x92600);
    0x00091c3c ldr r0, [r4, 8]                               |         r0 = "shell_returned__i";
    0x00091c40 bl 0x91698                                    |         fcn_00091698 ("shell_returned__i");
    0x00091c44 str r0, [r4, 8]                               |         *((r4 + 8)) = r0;
                                                             | label_13:
    0x00091c48 add sp, sp, 0x12c                             |         
    0x00091c4c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_18:
    0x00091c50 mov r2, r7                                    |         r2 = r7;
    0x00091c54 ldr r1, [pc, 0x9b4]                           |         r1 = *(0x9260c);
    0x00091c58 mov r0, sb                                    |         r0 = sb;
    0x00091c5c bl 0x14b94                                    |         r0 = strncmp (r0, r1, r2);
    0x00091c60 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00091c64 bne 0x91ca8                                   |             goto label_19;
                                                             |         }
    0x00091c68 cmp sl, 0                                     |         
                                                             |         if (sl < 0) {
    0x00091c6c bge 0x91c8c                                   |             
    0x00091c70 ldr r6, [r5, 8]                               |             r6 = *((r5 + 8));
    0x00091c74 mov r0, r6                                    |             r0 = r6;
    0x00091c78 bl 0x904a4                                    |             r0 = fcn_000904a4 (r0);
    0x00091c7c mov r4, r0                                    |             r4 = r0;
    0x00091c80 mov r0, r6                                    |             r0 = r6;
    0x00091c84 bl 0x905e0                                    |             r0 = fcn_000905e0 (r0);
    0x00091c88 mov r8, r0                                    |             r8 = r0;
                                                             |         }
    0x00091c8c mov r3, 1                                     |         r3 = 1;
    0x00091c90 str r3, [sp]                                  |         *(sp) = r3;
    0x00091c94 mov r2, r3                                    |         r2 = r3;
    0x00091c98 mov r1, r8                                    |         r1 = r8;
    0x00091c9c mov r0, r4                                    |         r0 = r4;
    0x00091ca0 bl 0x8febc                                    |         fcn_0008febc (r0, r1, r2);
    0x00091ca4 b 0x91bb0                                     |         
                                                             |     } while (1);
                                                             | label_19:
    0x00091ca8 mov r2, r7                                    |     r2 = r7;
    0x00091cac ldr r1, [pc, 0x960]                           |     r1 = "delete";
    0x00091cb0 mov r0, sb                                    |     r0 = sb;
    0x00091cb4 bl 0x14b94                                    |     r0 = strncmp (r0, "delete", r2);
    0x00091cb8 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00091cbc bne 0x91dc8                                   |         goto label_20;
                                                             |     }
    0x00091cc0 ldr r0, [r5, 0x20]                            |     r0 = *((r5 + 0x20));
    0x00091cc4 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00091cc8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00091ccc eorne r0, r3, 1                               |         r0 = r3 ^ 1;
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00091cd0 moveq r0, 0                                   |         r0 = 0;
                                                             |     }
    0x00091cd4 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00091cd8 beq 0x91cec                                   |         
                                                             | label_7:
    0x00091cdc ldr r0, [pc, 0x934]                           |         r0 = "edit";
    0x00091ce0 add r1, sp, 0x28                              |         r1 += s1;
                                                             | label_9:
    0x00091ce4 bl 0x90018                                    |         fcn_00090018 ();
    0x00091ce8 b 0x91c34                                     |         goto label_2;
                                                             |     }
    0x00091cec ldrb r3, [sp, 0xa8]                           |     r3 = dest;
    0x00091cf0 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00091cf4 bne 0x91d1c                                   |         goto label_21;
                                                             |     }
    0x00091cf8 ldr r3, [r5, 0x50]                            |     r3 = *((r5 + 0x50));
    0x00091cfc cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00091d00 beq 0x91d10                                   |         
    0x00091d04 ldrb r3, [r3]                                 |         r3 = *(r3);
    0x00091d08 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00091d0c bne 0x91d20                                   |             goto label_22;
                                                             |         }
                                                             |     }
    0x00091d10 ldr r0, [pc, 0x904]                           |     r0 = "No_write_since_last_change__:_s__overrides_";
                                                             |     do {
                                                             | label_10:
    0x00091d14 bl 0x90018                                    |         fcn_00090018 ();
    0x00091d18 b 0x91c34                                     |         goto label_2;
                                                             | label_21:
    0x00091d1c add fp, sp, 0xa8                              |         
                                                             | label_22:
    0x00091d20 mov r0, fp                                    |         r0 = fp;
    0x00091d24 bl 0x9192c                                    |         fcn_0009192c (r0);
    0x00091d28 ldr r3, [r5, 0x94]                            |         r3 = *((r5 + 0x94));
    0x00091d2c cmp r3, 0x1b                                  |         
    0x00091d30 mov r6, r0                                    |         r6 = r0;
                                                             |         if (r3 <= 0x1b) {
    0x00091d34 bhi 0x91d54                                   |             
    0x00091d38 add r3, r3, 0x26                              |             r3 += 0x26;
    0x00091d3c ldr r0, [r5, r3, lsl 2]                       |             offset_0 = r3 << 2;
                                                             |             r0 = *((r5 + offset_0));
    0x00091d40 bl 0x152a8                                    |             free (r0);
    0x00091d44 ldr r3, [r5, 0x94]                            |             r3 = *((r5 + 0x94));
    0x00091d48 mov r2, 0                                     |             r2 = 0;
    0x00091d4c add r3, r3, 0x26                              |             r3 += 0x26;
    0x00091d50 str r2, [r5, r3, lsl 2]                       |             offset_1 = r3 << 2;
                                                             |             *((r5 + offset_1)) = r2;
                                                             |         }
    0x00091d54 ldr r3, [r5, 0x90]                            |         r3 = *((r5 + 0x90));
    0x00091d58 cmp r3, 0x1b                                  |         
                                                             |         if (r3 <= 0x1b) {
    0x00091d5c bhi 0x91d7c                                   |             
    0x00091d60 add r3, r3, 0x26                              |             r3 += 0x26;
    0x00091d64 ldr r0, [r5, r3, lsl 2]                       |             offset_2 = r3 << 2;
                                                             |             r0 = *((r5 + offset_2));
    0x00091d68 bl 0x152a8                                    |             free (r0);
    0x00091d6c ldr r3, [r5, 0x90]                            |             r3 = *((r5 + 0x90));
    0x00091d70 mov r2, 0                                     |             r2 = 0;
    0x00091d74 add r3, r3, 0x26                              |             r3 += 0x26;
    0x00091d78 str r2, [r5, r3, lsl 2]                       |             offset_3 = r3 << 2;
                                                             |             *((r5 + offset_3)) = r2;
                                                             |         }
    0x00091d7c ldr r7, [r5]                                  |         r7 = *(r5);
    0x00091d80 ldr r4, [r5, 4]                               |         r4 = *((r5 + 4));
    0x00091d84 mov r0, r7                                    |         r0 = r7;
    0x00091d88 sub r1, r4, 1                                 |         r1 = r4 - 1;
    0x00091d8c bl 0x90770                                    |         fcn_00090770 (r0, r1);
    0x00091d90 ldr ip, [r5, 0x14]                            |         ip = *((r5 + 0x14));
    0x00091d94 ldr r2, [pc, 0x884]                           |         r2 = "No_current_filename";
    0x00091d98 sub r4, r4, r7                                |         r4 -= r7;
    0x00091d9c ldr r1, [r5, 0x50]                            |         r1 = *((r5 + 0x50));
    0x00091da0 cmp ip, 0                                     |         
    0x00091da4 ldr r3, [pc, 0x878]                           |         r3 = *(0x92620);
                                                             |         if (ip != 0) {
    0x00091da8 moveq r3, r2                                  |             r3 = r2;
                                                             |         }
    0x00091dac cmp r6, 0                                     |         
    0x00091db0 stm sp, {r0, r4}                              |         *(sp) = r0;
                                                             |         *((sp + 4)) = r4;
    0x00091db4 ldr r0, [pc, 0x86c]                           |         r0 = " [Readonly]";
                                                             |         if (r6 >= 0) {
    0x00091db8 movlt r2, r0                                  |             r2 = r0;
                                                             |         }
    0x00091dbc ldr r0, [pc, 0x868]                           |         r0 = "_New_file_";
    0x00091dc0 bl 0x9017c                                    |         fcn_0009017c ();
    0x00091dc4 b 0x91c34                                     |         goto label_2;
                                                             | label_20:
    0x00091dc8 mov r2, r7                                    |         r2 = r7;
    0x00091dcc ldr r1, [pc, 0x85c]                           |         r1 = "__s_s_s__dL___dC";
    0x00091dd0 mov r0, sb                                    |         r0 = sb;
    0x00091dd4 bl 0x14b94                                    |         r0 = strncmp (r0, "__s_s_s__dL___dC", r2);
    0x00091dd8 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00091ddc bne 0x91e1c                                   |             goto label_23;
                                                             |         }
    0x00091de0 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00091de4 cmn r3, 1                                     |         
    0x00091de8 cmneq sl, 1                                   |         __asm ("cmneq sl, 1");
                                                             |         if (r3 == 1) {
    0x00091dec ldrne r0, [pc, 0x840]                         |             r0 = "No_address_allowed_on_this_command";
                                                             |         }
    0x00091df0 bne 0x91d14                                   |         
                                                             |     } while (r3 != 1);
    0x00091df4 ldrb r3, [sp, 0xa8]                           |     r3 = dest;
    0x00091df8 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00091dfc streq r3, [r5, 0x4c]                          |         *((r5 + 0x4c)) = r3;
                                                             |         goto label_24;
                                                             |     }
                                                             |     if (r3 == 0) {
                                                             | label_24:
    0x00091e00 beq 0x91c34                                   |         goto label_2;
                                                             |     }
    0x00091e04 ldr r0, [r5, 0x50]                            |     r0 = *((r5 + 0x50));
    0x00091e08 bl 0x152a8                                    |     free (r0);
    0x00091e0c add r0, sp, 0xa8                              |     r0 += dest;
    0x00091e10 bl 0x189d4                                    |     fcn_000189d4 (r0);
    0x00091e14 str r0, [r5, 0x50]                            |     *((r5 + 0x50)) = r0;
    0x00091e18 b 0x91c34                                     |     goto label_2;
                                                             | label_23:
    0x00091e1c mov r2, r7                                    |     r2 = r7;
    0x00091e20 ldr r1, [pc, 0x810]                           |     r1 = "No_address_allowed_on_this_command";
    0x00091e24 mov r0, sb                                    |     r0 = sb;
    0x00091e28 bl 0x14b94                                    |     r0 = strncmp (r0, "No_address_allowed_on_this_command", r2);
    0x00091e2c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00091e30 bne 0x91e48                                   |         
    0x00091e34 bl 0x90ae0                                    |         fcn_00090ae0 ();
    0x00091e38 bl 0x90a54                                    |         fcn_00090a54 ();
    0x00091e3c ldr r0, [pc, 0x7f8]                           |         r0 = *(0x92638);
    0x00091e40 bl 0x14660                                    |         puts (r0);
    0x00091e44 b 0x91bec                                     |         goto label_3;
                                                             |     }
    0x00091e48 mov r2, r7                                    |     r2 = r7;
    0x00091e4c ldr r1, [pc, 0x7ec]                           |     r1 = "These features are available:\n\tPattern searches with / and ?\n\tLast command repeat with .\n\tLine marking with 'x\n\tNamed buffers with \"x\n\tSome colon mode commands with :\n\tSettable options with \":set\"\n\tSignal catching- ^C\n\tJob suspend and resume with ^Z\n\tAdapt to window re-sizes";
    0x00091e50 mov r0, sb                                    |     r0 = sb;
    0x00091e54 bl 0x14b94                                    |     r0 = strncmp (r0, "These features are available:\n\tPattern searches with / and ?\n\tLast command repeat with .\n\tLine marking with 'x\n\tNamed buffers with \"x\n\tSome colon mode commands with :\n\tSettable options with \":set\"\n\tSignal catching- ^C\n\tJob suspend and resume with ^Z\n\tAdapt to window re-sizes", r2);
    0x00091e58 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00091e5c bne 0x91f28                                   |         goto label_25;
                                                             |     }
    0x00091e60 cmp sl, 0                                     |     
                                                             |     if (sl < 0) {
    0x00091e64 bge 0x91e84                                   |         
    0x00091e68 ldr r5, [r5, 8]                               |         r5 = *((r5 + 8));
    0x00091e6c mov r0, r5                                    |         r0 = r5;
    0x00091e70 bl 0x904a4                                    |         r0 = fcn_000904a4 (r0);
    0x00091e74 mov r4, r0                                    |         r4 = r0;
    0x00091e78 mov r0, r5                                    |         r0 = r5;
    0x00091e7c bl 0x905e0                                    |         r0 = fcn_000905e0 (r0);
    0x00091e80 mov r8, r0                                    |         r8 = r0;
                                                             |     }
    0x00091e84 bl 0x90ae0                                    |     fcn_00090ae0 ();
    0x00091e88 ldr r0, [pc, 0x7b4]                           |     r0 = "list";
    0x00091e8c bl 0x14660                                    |     puts ("list");
    0x00091e90 ldr r6, [pc, 0x7b0]                           |     r6 = *(0x92644);
    0x00091e94 ldr r7, [pc, 0x7b0]                           |     r7 = *(0x92648);
    0x00091e98 ldr sb, [pc, 0x7b0]                           |     sb = *(0x00092650);
                                                             | label_5:
    0x00091e9c cmp r8, r4                                    |     
                                                             |     if (r8 <= r4) {
    0x00091ea0 blo 0x91bf0                                   |         goto label_4;
                                                             |     }
    0x00091ea4 ldrb r5, [r4], 1                              |     r5 = *(r4);
                                                             |     r4++;
    0x00091ea8 tst r5, 0x80                                  |     
                                                             |     if ((r5 & 0x80) != 0) {
    0x00091eac beq 0x91ef0                                   |         
    0x00091eb0 cmp r5, 0x9b                                  |         
                                                             |         if (r5 != 0x9b) {
    0x00091eb4 bne 0x91f20                                   |             goto label_26;
                                                             |         }
    0x00091eb8 mov r0, r7                                    |         r0 = r7;
    0x00091ebc bl 0x90a74                                    |         fcn_00090a74 ();
    0x00091ec0 mov sl, 1                                     |         sl = 1;
    0x00091ec4 mov r5, 0x2e                                  |         r5 = 0x2e;
                                                             | label_6:
    0x00091ec8 cmp r5, 0x7f                                  |         
    0x00091ecc cmpne r5, 0x1f                                |         __asm ("cmpne r5, 0x1f");
                                                             |         if (r5 > 0x7f) {
    0x00091ed0 bhi 0x91f04                                   |             goto label_27;
                                                             |         }
    0x00091ed4 mov r0, 0x5e                                  |         r0 = 0x5e;
    0x00091ed8 bl 0x18ce4                                    |         fcn_00018ce4 (r0);
    0x00091edc cmp r5, 0x7f                                  |         
                                                             |         if (r5 == 0x7f) {
    0x00091ee0 addne r5, r5, 0x40                            |             r5 += 0x40;
                                                             |         }
                                                             |         if (r5 == 0x7f) {
    0x00091ee4 andne r5, r5, 0xff                            |             r5 &= 0xff;
                                                             |         }
                                                             |         if (r5 != 0x7f) {
    0x00091ee8 moveq r5, 0x3f                                |             r5 = 0x3f;
                                                             |         }
    0x00091eec b 0x91f04                                     |         
                                                             |     } else {
    0x00091ef0 cmp r5, 0xa                                   |         
                                                             |         if (r5 != 0xa) {
    0x00091ef4 bne 0x91f20                                   |             goto label_26;
                                                             |         }
    0x00091ef8 mov r0, r6                                    |         r0 = r6;
    0x00091efc bl 0x90a74                                    |         fcn_00090a74 ();
    0x00091f00 mov sl, 0                                     |         sl = 0;
                                                             |     }
                                                             | label_27:
    0x00091f04 mov r0, r5                                    |     r0 = r5;
    0x00091f08 bl 0x18ce4                                    |     fcn_00018ce4 (r0);
    0x00091f0c cmp sl, 0                                     |     
                                                             |     if (sl == 0) {
    0x00091f10 beq 0x91e9c                                   |         goto label_5;
                                                             |     }
    0x00091f14 mov r0, sb                                    |     r0 = sb;
    0x00091f18 bl 0x90a74                                    |     fcn_00090a74 ();
    0x00091f1c b 0x91e9c                                     |     goto label_5;
                                                             | label_26:
    0x00091f20 mov sl, 0                                     |     sl = 0;
    0x00091f24 b 0x91ec8                                     |     goto label_6;
                                                             | label_25:
    0x00091f28 mov r2, r7                                    |     r2 = r7;
    0x00091f2c ldr r1, [pc, 0x720]                           |     r1 = *(0x92650);
    0x00091f30 mov r0, sb                                    |     r0 = sb;
    0x00091f34 bl 0x14b94                                    |     r0 = strncmp (r0, r1, r2);
    0x00091f38 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00091f3c beq 0x91f70                                   |         
    0x00091f40 mov r2, r7                                    |         r2 = r7;
    0x00091f44 ldr r1, [pc, 0x70c]                           |         r1 = "quit";
    0x00091f48 mov r0, sb                                    |         r0 = sb;
    0x00091f4c bl 0x14b94                                    |         r0 = strncmp (r0, "quit", r2);
    0x00091f50 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00091f54 beq 0x91f70                                   |             goto label_28;
                                                             |         }
    0x00091f58 mov r2, r7                                    |         r2 = r7;
    0x00091f5c ldr r1, [pc, 0x6f8]                           |         r1 = "next";
    0x00091f60 mov r0, sb                                    |         r0 = sb;
    0x00091f64 bl 0x14b94                                    |         r0 = strncmp (r0, "next", r2);
    0x00091f68 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00091f6c bne 0x92008                                   |             goto label_29;
                                                             |         }
                                                             |     }
                                                             | label_28:
    0x00091f70 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00091f74 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00091f78 beq 0x91f98                                   |         
    0x00091f7c cmp r6, 0x71                                  |         
                                                             |         if (r6 != 0x71) {
    0x00091f80 ldreq r2, [r5, 0x28]                          |             r2 = *((r5 + 0x28));
                                                             |         }
                                                             |         if (r6 != 0x71) {
    0x00091f84 ldreq r3, [pc, 0x6d4]                         |             r3 = obj.optind;
                                                             |         }
                                                             |         if (r6 != 0x71) {
    0x00091f88 streq r2, [r3]                                |             *(r3) = r2;
                                                             |         }
                                                             | label_8:
    0x00091f8c mov r3, 0                                     |         r3 = 0;
    0x00091f90 str r3, [r5, 0x18]                            |         *((r5 + 0x18)) = r3;
    0x00091f94 b 0x91c34                                     |         goto label_2;
                                                             |     }
    0x00091f98 ldr r3, [r5, 0x20]                            |     r3 = *((r5 + 0x20));
    0x00091f9c cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00091fa0 bne 0x91cdc                                   |         goto label_7;
                                                             |     }
    0x00091fa4 ldr r2, [pc, 0x6b4]                           |     r2 = "prev";
    0x00091fa8 ldr r1, [r5, 0x28]                            |     r1 = *((r5 + 0x28));
    0x00091fac ldr r3, [r2]                                  |     r3 = "prev";
    0x00091fb0 cmp r6, 0x71                                  |     
    0x00091fb4 sub r1, r1, r3                                |     r1 -= r3;
    0x00091fb8 sub r1, r1, 1                                 |     r1--;
                                                             |     if (r6 != 0x71) {
    0x00091fbc bne 0x91fd0                                   |         goto label_30;
                                                             |     }
    0x00091fc0 cmp r1, 0                                     |     
                                                             |     if (r1 <= 0) {
    0x00091fc4 ble 0x91f8c                                   |         goto label_8;
                                                             |     }
    0x00091fc8 ldr r0, [pc, 0x694]                           |     r0 = optind;
    0x00091fcc b 0x91ce4                                     |     goto label_9;
                                                             | label_30:
    0x00091fd0 cmp r6, 0x6e                                  |     
                                                             |     if (r6 != 0x6e) {
    0x00091fd4 bne 0x91fe8                                   |         goto label_31;
                                                             |     }
    0x00091fd8 cmp r1, 0                                     |     
                                                             |     if (r1 > 0) {
    0x00091fdc bgt 0x91f8c                                   |         goto label_8;
                                                             |     }
    0x00091fe0 ldr r0, [pc, 0x680]                           |     r0 = "%d more file(s) to edit";
    0x00091fe4 b 0x91d14                                     |     goto label_10;
                                                             | label_31:
    0x00091fe8 cmp r6, 0x70                                  |     
                                                             |     if (r6 != 0x70) {
    0x00091fec bne 0x91f8c                                   |         goto label_8;
                                                             |     }
    0x00091ff0 cmp r3, 0                                     |     
                                                             |     if (r3 <= 0) {
    0x00091ff4 ldrle r0, [pc, 0x670]                         |         r0 = "No previous files to edit";
                                                             |         goto label_32;
                                                             |     }
                                                             |     if (r3 <= 0) {
                                                             | label_32:
    0x00091ff8 ble 0x91d14                                   |         goto label_10;
                                                             |     }
    0x00091ffc sub r3, r3, 2                                 |     r3 -= 2;
    0x00092000 str r3, [r2]                                  |     *(r2) = r3;
    0x00092004 b 0x91f8c                                     |     goto label_8;
                                                             | label_29:
    0x00092008 mov r2, r7                                    |     r2 = r7;
    0x0009200c ldr r1, [pc, 0x65c]                           |     r1 = "No previous files to edit";
    0x00092010 mov r0, sb                                    |     r0 = sb;
    0x00092014 bl 0x14b94                                    |     r0 = strncmp (r0, "No previous files to edit", r2);
    0x00092018 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0009201c bne 0x920e0                                   |         goto label_33;
                                                             |     }
    0x00092020 ldrb r3, [sp, 0xa8]                           |     r3 = dest;
    0x00092024 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00092028 ldreq r0, [pc, 0x644]                         |         r0 = "No filename given";
                                                             |         goto label_34;
                                                             |     }
                                                             |     if (r3 == 0) {
                                                             | label_34:
    0x0009202c beq 0x91d14                                   |         goto label_10;
                                                             |     }
    0x00092030 cmp sl, 0                                     |     
                                                             |     if (sl >= 0) {
    0x00092034 bge 0x92060                                   |         goto label_35;
                                                             |     }
    0x00092038 ldr r0, [r5, 8]                               |     r0 = *((r5 + 8));
    0x0009203c bl 0x904a4                                    |     r0 = fcn_000904a4 (r0);
    0x00092040 mov r4, r0                                    |     r4 = r0;
                                                             |     do {
    0x00092044 mov r0, r4                                    |         r0 = r4;
    0x00092048 bl 0x90624                                    |         fcn_00090624 (r0);
    0x0009204c ldr r4, [r5, 4]                               |         r4 = *((r5 + 4));
    0x00092050 sub r3, r4, 1                                 |         r3 = r4 - 1;
    0x00092054 cmp r3, r0                                    |         
                                                             |         if (r3 == r0) {
    0x00092058 movne r4, r0                                  |             r4 = r0;
                                                             |         }
    0x0009205c b 0x92064                                     |         goto label_36;
                                                             | label_35:
    0x00092060 bne 0x92044                                   |         
                                                             |     } while (r3 != r0);
                                                             | label_36:
    0x00092064 mov r1, r4                                    |     r1 = r4;
    0x00092068 mov r2, 0                                     |     r2 = 0;
    0x0009206c add r0, sp, 0xa8                              |     r0 += dest;
    0x00092070 ldr r6, [r5]                                  |     r6 = *(r5);
    0x00092074 bl 0x90c58                                    |     fcn_00090c58 (r0, r1);
    0x00092078 sub r6, r4, r6                                |     r6 = r4 - r6;
    0x0009207c ldr r4, [r5]                                  |     r4 = *(r5);
    0x00092080 add r4, r4, r6                                |     r4 += r6;
    0x00092084 subs r6, r0, 0                                |     r6 -= dest;
                                                             |     if (r6 < dest) {
    0x00092088 blt 0x91c34                                   |         goto label_2;
                                                             |     }
    0x0009208c sub r1, r6, 1                                 |     r1 -= var_1h;
    0x00092090 add r1, r4, r1                                |     r1 = r4 + r1;
    0x00092094 mov r0, r4                                    |     r0 = r4;
    0x00092098 bl 0x90770                                    |     fcn_00090770 (r0, r1);
    0x0009209c ldr ip, [r5, 0x14]                            |     ip = *((r5 + 0x14));
    0x000920a0 ldr r1, [pc, 0x57c]                           |     r1 = *(0x92620);
    0x000920a4 cmp ip, 0                                     |     
    0x000920a8 ldr r2, [pc, 0x570]                           |     r2 = "No_current_filename";
    0x000920ac str r6, [sp]                                  |     *(sp) = r6;
                                                             |     if (ip == 0) {
    0x000920b0 movne r2, r1                                  |         r2 = r1;
                                                             |     }
    0x000920b4 add r1, sp, 0xa8                              |     r1 += dest;
    0x000920b8 mov r3, r0                                    |     r3 = r0;
    0x000920bc ldr r0, [pc, 0x5b4]                           |     r0 = "No filename given";
    0x000920c0 bl 0x9017c                                    |     fcn_0009017c ();
    0x000920c4 cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x000920c8 beq 0x91c34                                   |         goto label_2;
                                                             |     }
    0x000920cc ldr r3, [r5, 8]                               |     r3 = *((r5 + 8));
    0x000920d0 cmp r3, r4                                    |     
                                                             |     if (r3 < r4) {
    0x000920d4 addhs r3, r3, r6                              |         r3 += r6;
                                                             |     }
                                                             |     if (r3 < r4) {
    0x000920d8 strhs r3, [r5, 8]                             |         *((r5 + 8)) = r3;
                                                             |     }
    0x000920dc b 0x91c34                                     |     goto label_2;
                                                             | label_33:
    0x000920e0 mov r2, r7                                    |     r2 = r7;
    0x000920e4 ldr r1, [pc, 0x590]                           |     r1 = '%s'%s %dL, %dC";
    0x000920e8 mov r0, sb                                    |     r0 = sb;
    0x000920ec bl 0x14b94                                    |     r0 = strncmp (r0, '%s'%s %dL, %dC", r2);
    0x000920f0 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000920f4 bne 0x92128                                   |         goto label_37;
                                                             |     }
    0x000920f8 ldr r0, [r5, 0x20]                            |     r0 = *((r5 + 0x20));
    0x000920fc ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00092100 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00092104 eorne r0, r3, 1                               |         r0 = r3 ^ 1;
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00092108 moveq r0, 0                                   |         r0 = 0;
                                                             |     }
    0x0009210c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00092110 bne 0x91cdc                                   |         goto label_7;
                                                             |     }
    0x00092114 ldr r3, [pc, 0x544]                           |     r3 = "prev";
    0x00092118 mvn r2, 0                                     |     r2 = ~0;
    0x0009211c str r2, [r3]                                  |     *(r3) = r2;
    0x00092120 str r0, [r5, 0x18]                            |     *((r5 + 0x18)) = r0;
    0x00092124 b 0x91c34                                     |     goto label_2;
                                                             | label_37:
    0x00092128 mov r2, r7                                    |     r2 = r7;
    0x0009212c ldr r1, [pc, 0x54c]                           |     r1 = "rewind";
    0x00092130 add r0, sp, 0x28                              |     r0 += s1;
    0x00092134 bl 0x14b94                                    |     strncmp (r0, "rewind", r2);
    0x00092138 subs sb, r0, 0                                |     sb -= s1;
                                                             |     if (sb != s1) {
    0x0009213c bne 0x922a8                                   |         goto label_38;
                                                             |     }
    0x00092140 ldrb r3, [sp, 0xa8]                           |     r3 = dest;
    0x00092144 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00092148 beq 0x92160                                   |         
    0x0009214c ldr r1, [pc, 0x530]                           |         r1 = *(0x92680);
    0x00092150 add r0, sp, 0xa8                              |         r0 += dest;
    0x00092154 bl 0x14c0c                                    |         r0 = strcasecmp (r0, r1);
    0x00092158 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0009215c bne 0x92294                                   |             goto label_39;
                                                             |         }
                                                             |     }
    0x00092160 ldr lr, [r5, 0x10]                            |     
    0x00092164 ldr r0, [pc, 0x51c]                           |     r0 = "all";
    0x00092168 ldr ip, [pc, 0x4b0]                           |     ip = "No_current_filename";
    0x0009216c tst lr, 1                                     |     
                                                             |     if ((lr & 1) != 0) {
    0x00092170 moveq r1, r0                                  |         r1 = r0;
                                                             |     }
                                                             |     if ((lr & 1) == 0) {
    0x00092174 movne r1, ip                                  |         r1 = ip;
                                                             |     }
    0x00092178 tst lr, 8                                     |     
                                                             |     if ((lr & 8) != 0) {
    0x0009217c moveq r2, r0                                  |         r2 = r0;
                                                             |     }
                                                             |     if ((lr & 8) == 0) {
    0x00092180 movne r2, ip                                  |         r2 = ip;
                                                             |     }
    0x00092184 tst lr, 4                                     |     
                                                             |     if ((lr & 4) != 0) {
    0x00092188 moveq r3, r0                                  |         r3 = r0;
                                                             |     }
                                                             |     if ((lr & 4) == 0) {
    0x0009218c movne r3, ip                                  |         r3 = ip;
                                                             |     }
    0x00092190 tst lr, 2                                     |     
                                                             |     if ((lr & 2) == 0) {
    0x00092194 movne r0, ip                                  |         r0 = ip;
                                                             |     }
    0x00092198 ldr ip, [r5, 0x60]                            |     ip = *((r5 + 0x60));
    0x0009219c stm sp, {r0, ip}                              |     *(sp) = r0;
                                                             |     *((sp + 4)) = ip;
    0x000921a0 ldr r0, [pc, 0x4e4]                           |     r0 = "no";
    0x000921a4 bl 0x90018                                    |     fcn_00090018 ();
    0x000921a8 b 0x91c34                                     |     goto label_2;
                                                             |     do {
    0x000921ac mov r2, 2                                     |         r2 = 2;
    0x000921b0 mov r1, r6                                    |         r1 = r6;
    0x000921b4 mov r0, r4                                    |         r0 = r4;
    0x000921b8 bl 0x14b94                                    |         strncmp (r0, r1, r2);
    0x000921bc mov r3, 1                                     |         r3 = 1;
    0x000921c0 str r3, [sp]                                  |         *(sp) = r3;
    0x000921c4 mov r1, r8                                    |         r1 = r8;
    0x000921c8 mov r3, r7                                    |         r3 = r7;
    0x000921cc mov sl, 8                                     |         sl = 8;
    0x000921d0 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x000921d4 moveq sb, 2                                   |             sb = 2;
                                                             |         }
    0x000921d8 mov r2, sb                                    |         r2 = sb;
    0x000921dc mov r0, r4                                    |         r0 = r4;
    0x000921e0 bl 0x9038c                                    |         fcn_0009038c (r0, r1, r2);
    0x000921e4 ldr r3, [pc, 0x4a4]                           |         r3 = "_sautoindent__sflash__signorecase__sshowmatch_tabstop_u";
    0x000921e8 mov r2, sb                                    |         r2 = sb;
    0x000921ec ldr r1, [pc, 0x4a0]                           |         r1 = "fl";
    0x000921f0 mov r0, r4                                    |         r0 = r4;
    0x000921f4 str sl, [sp]                                  |         *(sp) = sl;
    0x000921f8 bl 0x9038c                                    |         fcn_0009038c (r0, "fl", r2);
    0x000921fc mov r3, 4                                     |         r3 = 4;
    0x00092200 str r3, [sp]                                  |         *(sp) = r3;
    0x00092204 mov r2, sb                                    |         r2 = sb;
    0x00092208 ldr r3, [pc, 0x488]                           |         r3 = "flash_";
    0x0009220c ldr r1, [pc, 0x488]                           |         r1 = *(0x92698);
    0x00092210 mov r0, r4                                    |         r0 = r4;
    0x00092214 bl 0x9038c                                    |         fcn_0009038c (r0, r1, r2);
    0x00092218 mov r3, 2                                     |         r3 = 2;
    0x0009221c str r3, [sp]                                  |         *(sp) = r3;
    0x00092220 mov r2, sb                                    |         r2 = sb;
    0x00092224 ldr r3, [pc, 0x474]                           |         r3 = "ignorecase ";
    0x00092228 ldr r1, [pc, 0x474]                           |         r1 = *(0x926a0);
    0x0009222c mov r0, r4                                    |         r0 = r4;
    0x00092230 bl 0x9038c                                    |         fcn_0009038c (r0, r1, r2);
    0x00092234 mov r2, sl                                    |         r2 = sl;
    0x00092238 ldr r1, [pc, 0x468]                           |         r1 = "showmatch_";
    0x0009223c add r0, r4, sb                                |         r0 = r4 + sb;
    0x00092240 bl 0x14b94                                    |         r0 = strncmp (r0, "showmatch_", r2);
    0x00092244 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00092248 bne 0x92274                                   |             
    0x0009224c add r2, sp, 0x128                             |             r2 += var_128h;
    0x00092250 str r0, [r2, -0x104]!                         |             *((r2 -= 0x104)) = r0;
    0x00092254 add r0, sb, sl                                |             r0 = sb + sl;
    0x00092258 ldr r1, [pc, 0x44c]                           |             r1 = "tabstop=";
    0x0009225c add r0, r4, r0                                |             r0 = r4 + r0;
    0x00092260 bl 0x14c9c                                    |             sscanf (r0, "tabstop=", r2);
    0x00092264 ldr r3, [sp, 0x24]                            |             r3 = var_24h;
    0x00092268 sub r2, r3, 1                                 |             r2 = r3 - 1;
    0x0009226c cmp r2, 0x1f                                  |             
                                                             |             if (r2 <= 0x1f) {
    0x00092270 strls r3, [r5, 0x60]                          |                 *((r5 + 0x60)) = r3;
                                                             |                 goto label_40;
                                                             |             }
                                                             |         }
                                                             | label_40:
    0x00092274 mov r0, r4                                    |         r0 = r4;
    0x00092278 bl 0xa4454                                    |         r0 = fcn_000a4454 (r0);
    0x0009227c bl 0xa4434                                    |         r0 = fcn_000a4434 (r0);
    0x00092280 mov r4, r0                                    |         r4 = r0;
                                                             | label_11:
    0x00092284 ldrb r3, [r4]                                 |         r3 = *(r4);
    0x00092288 cmp r3, 0                                     |         
    0x0009228c bne 0x921ac                                   |         
                                                             |     } while (r3 != 0);
    0x00092290 b 0x91c34                                     |     goto label_2;
                                                             | label_39:
    0x00092294 add r4, sp, 0xa8                              |     r4 += dest;
    0x00092298 ldr r6, [pc, 0x3e8]                           |     r6 = "all";
    0x0009229c ldr r7, [pc, 0x40c]                           |     r7 = "_u";
    0x000922a0 ldr r8, [pc, 0x40c]                           |     r8 = *(0x926b0);
    0x000922a4 b 0x92284                                     |     goto label_11;
                                                             | label_38:
    0x000922a8 cmp r6, 0x73                                  |     
                                                             |     if (r6 != 0x73) {
    0x000922ac bne 0x923dc                                   |         goto label_41;
                                                             |     }
    0x000922b0 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x000922b4 ldrb sl, [r3, 1]                              |     sl = *((r3 + 1));
    0x000922b8 add r7, r3, 2                                 |     r7 = r3 + 2;
    0x000922bc mov r1, sl                                    |     r1 = sl;
    0x000922c0 mov r0, r7                                    |     r0 = r7;
    0x000922c4 bl 0x1517c                                    |     r0 = strchr (r0, r1);
    0x000922c8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000922cc beq 0x925f8                                   |         goto label_42;
                                                             |     }
    0x000922d0 add r8, r0, 1                                 |     r8 = r0 + 1;
    0x000922d4 mov r6, 0                                     |     r6 = 0;
    0x000922d8 strb r6, [r0]                                 |     *(r0) = r6;
    0x000922dc sub sb, r0, r7                                |     sb = r0 - r7;
    0x000922e0 mov r1, sl                                    |     r1 = sl;
    0x000922e4 mov r0, r8                                    |     r0 = r8;
    0x000922e8 bl 0x1517c                                    |     r0 = strchr (r0, r1);
    0x000922ec cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000922f0 beq 0x925f8                                   |         goto label_42;
                                                             |     }
    0x000922f4 ldrb r3, [r0, 1]                              |     r3 = *((r0 + 1));
    0x000922f8 strb r6, [r0]                                 |     *(r0) = r6;
    0x000922fc sub fp, r0, r8                                |     
    0x00092300 mov r0, r4                                    |     r0 = r4;
    0x00092304 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x00092308 bl 0x904a4                                    |     fcn_000904a4 (r0);
    0x0009230c ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00092310 cmp r3, r6                                    |     
    0x00092314 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r3 < r6) {
    0x00092318 bge 0x92338                                   |         
    0x0009231c ldr r0, [r5, 8]                               |         r0 = *((r5 + 8));
    0x00092320 bl 0x904a4                                    |         r0 = fcn_000904a4 (r0);
    0x00092324 mov r1, r0                                    |         r1 = r0;
    0x00092328 mov r4, r0                                    |         r4 = r0;
    0x0009232c ldr r0, [r5]                                  |         r0 = *(r5);
    0x00092330 bl 0x90770                                    |         fcn_00090770 (r0, r1);
    0x00092334 str r0, [sp, 0x1c]                            |         var_1ch = r0;
                                                             |     }
    0x00092338 ldr r3, [sp, 0x20]                            |     r3 = var_20h;
    0x0009233c ldr r5, [sp, 0x1c]                            |     r5 = var_1ch;
    0x00092340 cmp r3, 0                                     |     
    0x00092344 mov sl, 1                                     |     sl = 1;
    0x00092348 sub sb, sb, 1                                 |     sb--;
                                                             |     if (r3 >= 0) {
    0x0009234c strlt r5, [sp, 0x20]                          |         var_20h = r5;
                                                             |     }
                                                             | label_12:
    0x00092350 ldr r2, [sp, 0x20]                            |     r2 = var_20h;
    0x00092354 cmp r2, r5                                    |     
                                                             |     if (r2 < r5) {
    0x00092358 blt 0x91c34                                   |         goto label_2;
                                                             |     }
    0x0009235c mov r6, r4                                    |     r6 = r4;
                                                             |     do {
    0x00092360 mov r0, r4                                    |         r0 = r4;
    0x00092364 mov r2, 2                                     |         r2 = 2;
    0x00092368 mov r1, r7                                    |         r1 = r7;
    0x0009236c bl 0x90684                                    |         r0 = fcn_00090684 (r0, r1);
    0x00092370 subs r4, r0, 0                                |         r4 = r0 - 0;
                                                             |         if (r4 == r0) {
    0x00092374 beq 0x923c0                                   |             goto label_43;
                                                             |         }
    0x00092378 mov r2, sl                                    |         r2 = sl;
    0x0009237c add r1, r4, sb                                |         r1 = r4 + sb;
    0x00092380 bl 0x8fdd0                                    |         fcn_0008fdd0 (r0, r1);
    0x00092384 mov r2, 2                                     |         r2 = 2;
    0x00092388 mov r1, r8                                    |         r1 = r8;
    0x0009238c mov r0, r4                                    |         r0 = r4;
    0x00092390 bl 0x901bc                                    |         fcn_000901bc (r0, r1);
    0x00092394 ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00092398 cmp r3, 0x67                                  |         
    0x0009239c add r6, r6, r0                                |         r6 += r0;
                                                             |         if (r3 != 0x67) {
    0x000923a0 bne 0x923d4                                   |             goto label_44;
                                                             |         }
    0x000923a4 add r0, fp, r0                                |         r0 = fp + r0;
    0x000923a8 add r4, r4, r0                                |         r4 += r0;
    0x000923ac mov r0, r6                                    |         r0 = r6;
    0x000923b0 bl 0x905e0                                    |         fcn_000905e0 (r0);
    0x000923b4 mov sl, 2                                     |         sl = 2;
    0x000923b8 cmp r4, r0                                    |         
    0x000923bc blo 0x92360                                   |         
                                                             |     } while (r4 <= r0);
                                                             |     do {
                                                             | label_43:
    0x000923c0 mov r0, r6                                    |         r0 = r6;
    0x000923c4 bl 0x90624                                    |         fcn_00090624 (r0);
    0x000923c8 add r5, r5, 1                                 |         r5++;
    0x000923cc mov r4, r0                                    |         r4 = r0;
    0x000923d0 b 0x92350                                     |         goto label_12;
                                                             | label_44:
    0x000923d4 mov sl, 2                                     |         sl = 2;
    0x000923d8 b 0x923c0                                     |         
                                                             |     } while (1);
                                                             | label_41:
    0x000923dc mov r2, r7                                    |     r2 = r7;
    0x000923e0 ldr r1, [pc, 0x2d0]                           |     r1 = "autoindent_";
    0x000923e4 add r0, sp, 0x28                              |     r0 += s1;
    0x000923e8 bl 0x14b94                                    |     r0 = strncmp (r0, "autoindent_", r2);
    0x000923ec cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000923f0 bne 0x92400                                   |         
    0x000923f4 ldr r0, [pc, 0x2c0]                           |         r0 = "version";
    0x000923f8 bl 0x9017c                                    |         fcn_0009017c ();
    0x000923fc b 0x91c34                                     |         goto label_2;
                                                             |     }
    0x00092400 mov r2, r7                                    |     r2 = r7;
    0x00092404 ldr r1, [pc, 0x2b4]                           |     r1 = "_.30.1";
    0x00092408 add r0, sp, 0x28                              |     r0 += s1;
    0x0009240c bl 0x14b94                                    |     r0 = strncmp (r0, "_.30.1", r2);
    0x00092410 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00092414 beq 0x9245c                                   |         
    0x00092418 mov r2, r7                                    |         r2 = r7;
    0x0009241c ldr r1, [pc, 0x2a0]                           |         r1 = "write";
    0x00092420 add r0, sp, 0x28                              |         r0 += s1;
    0x00092424 bl 0x14b94                                    |         r0 = strncmp (r0, "write", r2);
    0x00092428 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0009242c beq 0x9245c                                   |             goto label_45;
                                                             |         }
    0x00092430 mov r2, r7                                    |         r2 = r7;
    0x00092434 ldr r1, [pc, 0x28c]                           |         r1 = *(0x926c4);
    0x00092438 add r0, sp, 0x28                              |         r0 += s1;
    0x0009243c bl 0x14b94                                    |         r0 = strncmp (r0, r1, r2);
    0x00092440 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00092444 beq 0x9245c                                   |             goto label_45;
                                                             |         }
    0x00092448 cmp r6, 0x78                                  |         
                                                             |         if (r6 != 0x78) {
    0x0009244c bne 0x92564                                   |             goto label_46;
                                                             |         }
    0x00092450 ldrb r3, [sp, 0x29]                           |         r3 = var_29h;
    0x00092454 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x00092458 bne 0x92564                                   |             goto label_46;
                                                             |         }
                                                             |     }
                                                             | label_45:
    0x0009245c ldrb r3, [sp, 0xa8]                           |     r3 = dest;
    0x00092460 ldr r0, [r5, 0x14]                            |     r0 = *((r5 + 0x14));
    0x00092464 cmp r3, 0                                     |     
    0x00092468 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
                                                             |     if (r3 == 0) {
    0x0009246c addne fp, sp, 0xa8                            |         
                                                             |     }
    0x00092470 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00092474 eorne r0, r3, 1                               |         r0 = r3 ^ 1;
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00092478 moveq r0, 0                                   |         r0 = 0;
                                                             |     }
    0x0009247c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00092480 movne r1, fp                                  |         r1 = fp;
                                                             |     }
                                                             |     if (r0 != 0) {
    0x00092484 ldrne r0, [pc, 0x240]                         |         r0 = "__s_is_read_only";
                                                             |         goto label_47;
                                                             |     }
                                                             |     if (r0 != 0) {
                                                             | label_47:
    0x00092488 bne 0x91ce4                                   |         goto label_9;
                                                             |     }
    0x0009248c ldr r3, [r5, 0x20]                            |     r3 = *((r5 + 0x20));
    0x00092490 subs r6, r6, 0x78                             |     r6 -= 0x78;
                                                             |     if (r6 == r6) {
    0x00092494 movne r6, 1                                   |         r6 = 1;
                                                             |     }
    0x00092498 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0009249c movne r6, 1                                   |         r6 = 1;
                                                             |     }
    0x000924a0 cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x000924a4 moveq r5, r6                                  |         r5 = r6;
                                                             |     }
                                                             |     if (r6 == 0) {
    0x000924a8 beq 0x924e0                                   |         goto label_48;
                                                             |     }
    0x000924ac mov r2, r8                                    |     r2 = r8;
    0x000924b0 mov r1, r4                                    |     r1 = r4;
    0x000924b4 mov r0, fp                                    |     r0 = fp;
    0x000924b8 bl 0x90420                                    |     fcn_00090420 (r0, r1);
    0x000924bc sub r6, r8, r4                                |     r6 = r8 - r4;
    0x000924c0 add r6, r6, 1                                 |     r6++;
    0x000924c4 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 >= r0) {
    0x000924c8 bge 0x924e0                                   |         goto label_48;
                                                             |     }
    0x000924cc cmn r5, 1                                     |     
                                                             |     if (r5 != 1) {
    0x000924d0 moveq r1, fp                                  |         r1 = fp;
                                                             |     }
                                                             |     if (r5 == 1) {
    0x000924d4 ldreq r0, [pc, 0x1f4]                         |         r0 = "__s__m";
                                                             |         goto label_49;
                                                             |     }
                                                             |     if (r5 == 1) {
                                                             | label_49:
    0x000924d8 beq 0x91ce4                                   |         goto label_9;
                                                             |     }
    0x000924dc b 0x91c34                                     |     goto label_2;
                                                             | label_48:
    0x000924e0 sub r1, r5, 1                                 |     r1 = r5 - 1;
    0x000924e4 add r1, r4, r1                                |     r1 = r4 + r1;
    0x000924e8 mov r0, r4                                    |     r0 = r4;
    0x000924ec bl 0x90770                                    |     fcn_00090770 (r0, r1);
    0x000924f0 mov r3, r5                                    |     r3 = r5;
    0x000924f4 mov r1, fp                                    |     r1 = fp;
    0x000924f8 mov r2, r0                                    |     r2 = r0;
    0x000924fc ldr r0, [pc, 0x1d0]                           |     r0 = "__s__m";
    0x00092500 bl 0x9017c                                    |     fcn_0009017c ();
    0x00092504 ldr r3, [pc, 0xf8]                            |     
    0x00092508 cmp r5, r6                                    |     
    0x0009250c ldr r3, [r3]                                  |     r3 = *(0x92600);
                                                             |     if (r5 != r6) {
    0x00092510 bne 0x91c34                                   |         goto label_2;
                                                             |     }
    0x00092514 ldr r2, [r3]                                  |     r2 = *(r3);
    0x00092518 cmp r2, r4                                    |     
                                                             |     if (r2 == r4) {
    0x0009251c bne 0x92538                                   |         
    0x00092520 ldr r2, [r3, 4]                               |         r2 = *((r3 + 4));
    0x00092524 add r4, r4, r5                                |         r4 += r5;
    0x00092528 cmp r2, r4                                    |         
                                                             |         if (r2 != r4) {
    0x0009252c moveq r0, 0                                   |             r0 = 0;
                                                             |         }
                                                             |         if (r2 != r4) {
    0x00092530 mvneq r1, 0                                   |             r1 = ~0;
                                                             |         }
    0x00092534 strdeq r0, r1, [r3, 0x20]                     |         __asm ("strdeq r0, r1, [r3, 0x20]");
                                                             |     }
    0x00092538 ldrb r2, [sp, 0x28]                           |     r2 = s1;
    0x0009253c cmp r2, 0x78                                  |     
                                                             |     if (r2 == 0x78) {
    0x00092540 beq 0x92558                                   |         goto label_50;
                                                             |     }
    0x00092544 ldrb r2, [sp, 0x29]                           |     r2 = var_29h;
    0x00092548 and r2, r2, 0xdf                              |     r2 &= 0xdf;
    0x0009254c cmp r2, 0x51                                  |     
    0x00092550 cmpne r2, 0x4e                                |     __asm ("cmpne r2, 0x4e");
                                                             |     if (r2 != 0x51) {
    0x00092554 bne 0x91c34                                   |         goto label_2;
                                                             |     }
                                                             | label_50:
    0x00092558 mov r2, 0                                     |     r2 = 0;
    0x0009255c str r2, [r3, 0x18]                            |     *((r3 + 0x18)) = r2;
    0x00092560 b 0x91c34                                     |     goto label_2;
                                                             | label_46:
    0x00092564 mov r2, r7                                    |     r2 = r7;
    0x00092568 ldr r1, [pc, 0x168]                           |     r1 = "__s__dL___dC";
    0x0009256c add r0, sp, 0x28                              |     r0 += s1;
    0x00092570 bl 0x14b94                                    |     r0 = strncmp (r0, "__s__dL___dC", r2);
    0x00092574 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00092578 bne 0x925ec                                   |         
    0x0009257c cmp sl, 0                                     |         
                                                             |         if (sl < 0) {
    0x00092580 bge 0x925a0                                   |             
    0x00092584 ldr r6, [r5, 8]                               |             r6 = *((r5 + 8));
    0x00092588 mov r0, r6                                    |             r0 = r6;
    0x0009258c bl 0x904a4                                    |             r0 = fcn_000904a4 (r0);
    0x00092590 mov r4, r0                                    |             r4 = r0;
    0x00092594 mov r0, r6                                    |             r0 = r6;
    0x00092598 bl 0x905e0                                    |             r0 = fcn_000905e0 (r0);
    0x0009259c mov r8, r0                                    |             r8 = r0;
                                                             |         }
    0x000925a0 ldr r2, [r5, 0x90]                            |         r2 = *((r5 + 0x90));
    0x000925a4 mov r1, r8                                    |         r1 = r8;
    0x000925a8 mov r0, r4                                    |         r0 = r4;
    0x000925ac bl 0x8f984                                    |         fcn_0008f984 (r0, r1);
    0x000925b0 mov r1, r8                                    |         r1 = r8;
    0x000925b4 mov r0, r4                                    |         r0 = r4;
    0x000925b8 bl 0x90770                                    |         fcn_00090770 (r0, r1);
    0x000925bc ldr r3, [r5, 0x90]                            |         r3 = *((r5 + 0x90));
    0x000925c0 add r3, r3, 0x26                              |         r3 += 0x26;
    0x000925c4 mov r4, r0                                    |         r4 = r0;
    0x000925c8 ldr r0, [r5, r3, lsl 2]                       |         offset_4 = r3 << 2;
                                                             |         r0 = *((r5 + offset_4));
    0x000925cc bl 0x1514c                                    |         r0 = strlen (r0);
    0x000925d0 mov r2, r0                                    |         r2 = r0;
    0x000925d4 bl 0x8f940                                    |         fcn_0008f940 ();
    0x000925d8 mov r1, r4                                    |         r1 = r4;
    0x000925dc mov r3, r0                                    |         r3 = r0;
    0x000925e0 ldr r0, [pc, 0xf4]                            |         r0 = "yank";
    0x000925e4 bl 0x9017c                                    |         fcn_0009017c ();
    0x000925e8 b 0x91c34                                     |         goto label_2;
                                                             |     }
    0x000925ec add r0, sp, 0x28                              |     r0 += s1;
    0x000925f0 bl 0x90080                                    |     fcn_00090080 (r0);
    0x000925f4 b 0x91c34                                     |     goto label_2;
                                                             | label_42:
    0x000925f8 ldr r0, [pc, 0xe0]                            |     r0 = "Yank %d lines (%d chars) into [%c]";
    0x000925fc bl 0x9017c                                    |     fcn_0009017c ();
    0x00092600 b 0x91c48                                     |     goto label_13;
                                                             | }
    ; 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 @ 0x926e4 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) fcn.000926e4 ()                                  | void fcn_000926e4 (int32_t arg1) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_14h;
                                                             |     int32_t var_18h;
                                                             |     char * dest;
                                                             |     int32_t var_1dh;
                                                             |     int32_t var_1eh;
                                                             |     int32_t var_20h;
                                                             |     int32_t var_24h;
                                                             |     int32_t var_2ch;
                                                             |     r0 = arg1;
    0x000926e4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x000926e8 ldr r6, [pc, 0xfc8]                           |     r6 = *(0x936b4);
    0x000926ec mov r5, r0                                    |     r5 = r0;
    0x000926f0 sub sp, sp, 0x2c                              |     
    0x000926f4 mov r3, 0                                     |     r3 = 0;
    0x000926f8 add r7, r5, 0xb                               |     r7 = r5 + 0xb;
    0x000926fc str r3, [sp, 0x1c]                            |     dest = r3;
    0x00092700 str r3, [sp, 0x20]                            |     var_20h = r3;
    0x00092704 str r3, [sp, 0x24]                            |     var_24h = r3;
    0x00092708 bl 0x913d0                                    |     fcn_000913d0 ();
    0x0009270c cmp r7, 9                                     |     
                                                             |     if (r7 <= 9) {
    0x00092710 bhi 0x92724                                   |         
    0x00092714 ldr r3, [pc, 0xfa0]                           |         r3 = *(0x936b8);
    0x00092718 mov r2, 1                                     |         r2 = 1;
    0x0009271c ands r3, r3, r2, lsl r7                       |         r3 &= (r2 << r7);
                                                             |         if (r3 != r3) {
    0x00092720 bne 0x928d0                                   |             goto label_44;
                                                             |         }
                                                             |     }
    0x00092724 ldr r4, [r6]                                  |     r4 = *(r6);
    0x00092728 ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x0009272c cmp r3, 2                                     |     
                                                             |     if (r3 == 2) {
    0x00092730 bne 0x92758                                   |         
    0x00092734 cmn r5, 8                                     |         
                                                             |         if (r5 == 8) {
    0x00092738 beq 0x93508                                   |             goto label_21;
                                                             |         }
    0x0009273c ldr r1, [r4, 8]                               |         r1 = *((r4 + 8));
    0x00092740 ldrb r3, [r1]                                 |         r3 = *(r1);
    0x00092744 cmp r3, 0xa                                   |         
                                                             |         if (r3 != 0xa) {
    0x00092748 bne 0x9278c                                   |             goto label_45;
                                                             |         }
    0x0009274c mov r3, 1                                     |         r3 = 1;
    0x00092750 str r3, [r4, 0x1c]                            |         *((r4 + 0x1c)) = r3;
    0x00092754 bl 0x8ff5c                                    |         fcn_0008ff5c ();
                                                             |     }
    0x00092758 ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x0009275c cmp r3, 1                                     |     
                                                             |     if (r3 != 1) {
    0x00092760 bne 0x928d0                                   |         goto label_44;
                                                             |     }
    0x00092764 cmn r5, 8                                     |     
    0x00092768 and r1, r5, 0xff                              |     r1 = r5 & 0xff;
                                                             |     if (r5 == 8) {
    0x0009276c beq 0x93838                                   |         goto label_46;
                                                             |     }
    0x00092770 cmp r5, 0                                     |     
                                                             |     if (r5 <= 0) {
    0x00092774 bgt 0x92784                                   |         
    0x00092778 cmp r1, 0x9b                                  |         
    0x0009277c cmpne r1, 0x1f                                |         __asm ("cmpne r1, 0x1f");
                                                             |         if (r1 < 0x9b) {
    0x00092780 bls 0x927a4                                   |             goto label_0;
                                                             |         }
                                                             |     }
    0x00092784 mov r2, 3                                     |     r2 = 3;
    0x00092788 b 0x928c0                                     |     goto label_47;
                                                             | label_45:
    0x0009278c cmp r5, 0                                     |     
    0x00092790 and r7, r5, 0xff                              |     r7 = r5 & 0xff;
                                                             |     if (r5 > 0) {
    0x00092794 bgt 0x92898                                   |         goto label_48;
                                                             |     }
    0x00092798 cmp r7, 0x9b                                  |     
    0x0009279c cmpne r7, 0x1f                                |     __asm ("cmpne r7, 0x1f");
    0x000927a0 bhi 0x928a0                                   |     
                                                             |     while (1) {
                                                             | label_0:
    0x000927a4 ldr r4, [r6]                                  |         r4 = *(r6);
    0x000927a8 ldr r0, [r4, 4]                               |         r0 = *((r4 + 4));
    0x000927ac ldr r3, [r4]                                  |         r3 = *(r4);
    0x000927b0 cmp r0, r3                                    |         
                                                             |         if (r0 == r3) {
    0x000927b4 bne 0x927cc                                   |             
    0x000927b8 mov r2, 0                                     |             r2 = 0;
    0x000927bc mov r1, 0xa                                   |             r1 = 0xa;
    0x000927c0 bl 0x916e4                                    |             fcn_000916e4 (r0, r1);
    0x000927c4 ldr r3, [r4]                                  |             r3 = *(r4);
    0x000927c8 str r3, [r4, 8]                               |             *((r4 + 8)) = r3;
                                                             |         }
    0x000927cc ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x000927d0 ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x000927d4 cmp r0, r3                                    |         
                                                             |         if (r0 != r3) {
    0x000927d8 beq 0x927e4                                   |             
    0x000927dc bl 0x91698                                    |             fcn_00091698 (r0);
    0x000927e0 str r0, [r4, 8]                               |             *((r4 + 8)) = r0;
                                                             |         }
    0x000927e4 ldr r6, [r4, 8]                               |         r6 = *((r4 + 8));
    0x000927e8 ldr r3, [r4, 0x178]                           |         r3 = *((r4 + 0x178));
    0x000927ec and r5, r5, 0xff                              |         r5 &= 0xff;
    0x000927f0 cmp r6, r3                                    |         
                                                             |         if (r6 > r3) {
    0x000927f4 blo 0x92804                                   |             
    0x000927f8 ldr r3, [r4, 0x17c]                           |             r3 = *((r4 + 0x17c));
    0x000927fc cmp r6, r3                                    |             
                                                             |             if (r6 < r3) {
    0x00092800 bls 0x92844                                   |                 goto label_49;
                                                             |             }
                                                             |         }
    0x00092804 mov r1, r5                                    |         r1 = r5;
    0x00092808 ldr r0, [pc, 0xeb0]                           |         r0 = *(0x936bc);
    0x0009280c bl 0x1517c                                    |         r0 = strchr (r0, r1);
    0x00092810 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00092814 beq 0x92844                                   |             
    0x00092818 ldr r3, [r4, 0x170]                           |             r3 = *((r4 + 0x170));
    0x0009281c mov r0, r6                                    |             r0 = r6;
    0x00092820 str r3, [r4, 0x174]                           |             *((r4 + 0x174)) = r3;
    0x00092824 str r6, [r4, 0x170]                           |             *((r4 + 0x170)) = r6;
    0x00092828 bl 0x904e4                                    |             r0 = fcn_000904e4 (r0);
    0x0009282c bl 0x904e4                                    |             fcn_000904e4 (r0);
    0x00092830 str r0, [r4, 0x178]                           |             *((r4 + 0x178)) = r0;
    0x00092834 mov r0, r6                                    |             r0 = r6;
    0x00092838 bl 0x90624                                    |             r0 = fcn_00090624 (r0);
    0x0009283c bl 0x90624                                    |             fcn_00090624 (r0);
    0x00092840 str r0, [r4, 0x17c]                           |             *((r4 + 0x17c)) = r0;
                                                             |         }
                                                             | label_49:
    0x00092844 sub r5, r5, 0x30                              |         r5 -= 0x30;
    0x00092848 cmp r5, 9                                     |         
                                                             |         if (r5 <= 9) {
    0x0009284c movhi r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r5 <= 9) {
    0x00092850 strhi r3, [r4, 0x2c]                          |             *((r4 + 0x2c)) = r3;
                                                             |         }
    0x00092854 mov r0, r6                                    |         r0 = r6;
    0x00092858 bl 0x904a4                                    |         fcn_000904a4 (r0);
    0x0009285c ldrb r2, [r6]                                 |         r2 = *(r6);
    0x00092860 sub r3, r2, 0xa                               |         r3 = r2 - 0xa;
    0x00092864 clz r3, r3                                    |         r3 &= r3;
    0x00092868 lsr r3, r3, 5                                 |         r3 >>= 5;
    0x0009286c sub r0, r6, r0                                |         r0 = r6 - r0;
    0x00092870 cmp r0, 0                                     |         
                                                             |         if (r0 > 0) {
    0x00092874 movle r3, 0                                   |             r3 = 0;
                                                             |         }
    0x00092878 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x0009287c beq 0x92890                                   |             
    0x00092880 ldr r3, [r4, 0x1c]                            |             r3 = *((r4 + 0x1c));
    0x00092884 cmp r3, 0                                     |             
                                                             |             if (r3 != 0) {
    0x00092888 subeq r6, r6, 1                               |                 r6--;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x0009288c streq r6, [r4, 8]                             |                 *((r4 + 8)) = r6;
                                                             |                 goto label_50;
                                                             |             }
                                                             |         }
                                                             | label_50:
    0x00092890 add sp, sp, 0x2c                              |         
    0x00092894 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_48:
    0x00092898 cmp r5, 0x1b                                  |         
                                                             |         if (r5 != 0x1b) {
    0x0009289c beq 0x928b8                                   |             
    0x000928a0 mov r3, 1                                     |             r3 = 1;
    0x000928a4 str r3, [sp]                                  |             *(sp) = r3;
    0x000928a8 mov r2, 0                                     |             r2 = 0;
    0x000928ac mov r0, r1                                    |             r0 = r1;
    0x000928b0 bl 0x8febc                                    |             fcn_0008febc (r0, r1, r2);
    0x000928b4 str r0, [r4, 8]                               |             *((r4 + 8)) = r0;
                                                             |         }
    0x000928b8 mov r2, 2                                     |         r2 = 2;
    0x000928bc mov r1, r7                                    |         r1 = r7;
                                                             | label_47:
    0x000928c0 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x000928c4 bl 0x916e4                                    |         fcn_000916e4 (r0, r1);
                                                             | label_15:
    0x000928c8 str r0, [r4, 8]                               |         *((r4 + 8)) = r0;
    0x000928cc b 0x927a4                                     |         
                                                             |     }
                                                             | label_44:
    0x000928d0 ldr r4, [r6]                                  |     r4 = *(r6);
    0x000928d4 cmp r7, 0x8a                                  |     
                                                             |     if (r7 > 0x8a) {
                                                             |         /* switch table (139 cases) at 0x928e0 */
    0x000928d8 ldrls pc, [pc, r7, lsl 2]                     |         offset_0 = r7 << 2;
                                                             |         pc = *((pc + offset_0));
                                                             |     }
    0x000928dc b 0x92c00                                     |     goto label_51;
    0x00092b0c ldr r7, [pc, 0xbe8]                           |     r7 = "Write error: %m";
                                                             |     do {
    0x00092b10 ldr r8, [r4, 8]                               |         r8 = *((r4 + 8));
    0x00092b14 ldrb r1, [r8]                                 |         r1 = *(r8);
    0x00092b18 sub r3, r1, 0x30                              |         r3 = r1 - 0x30;
    0x00092b1c cmp r3, 9                                     |         
                                                             |         if (r3 >= 9) {
    0x00092b20 bls 0x92b38                                   |             
    0x00092b24 orr r3, r1, 0x20                              |             r3 = r1 | 0x20;
    0x00092b28 sub r3, r3, 0x61                              |             r3 -= 0x61;
    0x00092b2c cmp r1, 0x5f                                  |             
    0x00092b30 cmpne r3, 0x19                                |             __asm ("cmpne r3, 0x19");
                                                             |             if (r1 > 0x5f) {
    0x00092b34 bhi 0x93d48                                   |                 goto label_52;
                                                             |             }
                                                             |         }
    0x00092b38 mov r3, 5                                     |         r3 = 5;
                                                             | label_40:
    0x00092b3c mov r2, 1                                     |         r2 = 1;
    0x00092b40 mov r1, r2                                    |         r1 = r2;
    0x00092b44 mov r0, r8                                    |         r0 = r8;
    0x00092b48 bl 0x90250                                    |         fcn_00090250 (r0, r1);
    0x00092b4c str r0, [r4, 8]                               |         *((r4 + 8)) = r0;
                                                             | label_39:
    0x00092b50 ldmib r4, {r2, r3}                            |         __asm ("ldmib r4, {r2, r3}");
    0x00092b54 sub r2, r2, 1                                 |         r2--;
    0x00092b58 cmp r3, r2                                    |         
                                                             |         if (r3 >= r2) {
    0x00092b5c addlo r3, r3, 1                               |             r3++;
                                                             |         }
                                                             |         if (r3 >= r2) {
    0x00092b60 strlo r3, [r4, 8]                             |             *((r4 + 8)) = r3;
                                                             |         }
    0x00092b64 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00092b68 ldrb r3, [r0]                                 |         r3 = *(r0);
    0x00092b6c sub r2, r3, 9                                 |         r2 = r3 - 9;
    0x00092b70 cmp r3, 0x20                                  |         
    0x00092b74 cmpne r2, 4                                   |         __asm ("cmpne r2, 4");
                                                             |         if (r3 <= 0x20) {
    0x00092b78 bhi 0x92b90                                   |             
    0x00092b7c mov r3, 3                                     |             r3 = 3;
    0x00092b80 mov r2, 1                                     |             r2 = 1;
    0x00092b84 mov r1, 2                                     |             r1 = 2;
    0x00092b88 bl 0x90250                                    |             fcn_00090250 (r0, r1);
    0x00092b8c str r0, [r4, 8]                               |             *((r4 + 8)) = r0;
                                                             |         }
    0x00092b90 ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x00092b94 sub r3, r3, 1                                 |         r3--;
    0x00092b98 cmp r3, 0                                     |         
    0x00092b9c str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x00092ba0 bgt 0x92b10                                   |         
                                                             |     } while (r3 > 0);
    0x00092ba4 b 0x927a4                                     |     goto label_0;
    0x00092ba8 ldr sb, [pc, 0xb14]                           |     sb = "cCdDJoOpPrRxX<>~";
    0x00092bac add r8, r4, 0x1000                            |     r8 = r4 + 0x1000;
                                                             | label_7:
    0x00092bb0 bl 0x8ff5c                                    |     fcn_0008ff5c ();
    0x00092bb4 ldr r7, [r8, 0x5fc]                           |     r7 = *((r8 + 0x5fc));
    0x00092bb8 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00092bbc bne 0x92f4c                                   |         goto label_53;
                                                             |     }
    0x00092bc0 ldr r0, [pc, 0xb00]                           |     r0 = *(0x936c4);
    0x00092bc4 bl 0x9017c                                    |     fcn_0009017c ();
    0x00092bc8 b 0x927a4                                     |     goto label_0;
    0x00092bcc mov r7, 0x20                                  |     r7 = 0x20;
                                                             |     do {
    0x00092bd0 bl 0x909ec                                    |         fcn_000909ec ();
    0x00092bd4 ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x00092bd8 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00092bdc sub r3, r3, 1                                 |         r3--;
    0x00092be0 cmp r0, r3                                    |         
                                                             |         if (r0 <= r3) {
    0x00092be4 blo 0x9371c                                   |             goto label_54;
                                                             |         }
                                                             | label_24:
    0x00092be8 ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x00092bec sub r3, r3, 1                                 |         r3--;
    0x00092bf0 cmp r3, 0                                     |         
    0x00092bf4 str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x00092bf8 bgt 0x92bd0                                   |         
                                                             |     } while (r3 > 0);
    0x00092bfc b 0x92c14                                     |     goto label_5;
                                                             | label_51:
    0x00092c00 mov r3, 0                                     |     r3 = 0;
    0x00092c04 add r0, sp, 0x1c                              |     r0 += dest;
    0x00092c08 strb r5, [sp, 0x1c]                           |     dest = r5;
    0x00092c0c strb r3, [sp, 0x1d]                           |     var_1dh = r3;
    0x00092c10 bl 0x90080                                    |     r0 = fcn_00090080 (r0);
                                                             | label_5:
    0x00092c14 bl 0x8f920                                    |     fcn_0008f920 ();
    0x00092c18 b 0x927a4                                     |     goto label_0;
    0x00092c1c ldr r0, [r4, 0x30]                            |     r0 = *((r4 + 0x30));
    0x00092c20 mvn r1, 0                                     |     r1 = ~0;
                                                             | label_1:
    0x00092c24 sub r0, r0, 2                                 |     r0 -= 2;
    0x00092c28 b 0x92c3c                                     |     goto label_2;
    0x00092c2c ldr r0, [r4, 0x30]                            |     r0 = *((r4 + 0x30));
    0x00092c30 mov r1, 1                                     |     r1 = 1;
    0x00092c34 sub r0, r0, 2                                 |     r0 -= 2;
    0x00092c38 lsr r0, r0, r1                                |     r0 >>= r1;
                                                             |     do {
                                                             | label_2:
    0x00092c3c bl 0x90978                                    |         fcn_00090978 (r0, r1);
    0x00092c40 b 0x927a4                                     |         goto label_0;
    0x00092c44 mov r1, 1                                     |         r1 = 1;
                                                             | label_3:
    0x00092c48 mov r0, 1                                     |         r0 = 1;
    0x00092c4c b 0x92c3c                                     |         
                                                             |     } while (1);
    0x00092c50 ldr r0, [r4, 0x30]                            |     r0 = *((r4 + 0x30));
    0x00092c54 mov r1, 1                                     |     r1 = 1;
    0x00092c58 b 0x92c24                                     |     goto label_1;
    0x00092c5c mov r3, 0                                     |     r3 = 0;
    0x00092c60 str r3, [r4, 0x4c]                            |     *((r4 + 0x4c)) = r3;
    0x00092c64 b 0x927a4                                     |     goto label_0;
                                                             |     do {
    0x00092c68 bl 0x8ffa8                                    |         fcn_0008ffa8 ();
    0x00092c6c ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x00092c70 sub r3, r3, 1                                 |         r3--;
    0x00092c74 cmp r3, 0                                     |         
    0x00092c78 str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x00092c7c bgt 0x92c68                                   |         
                                                             |     } while (r3 > 0);
    0x00092c80 b 0x927a4                                     |     goto label_0;
                                                             |     do {
    0x00092c84 bl 0x9074c                                    |         fcn_0009074c ();
    0x00092c88 ldr r3, [r4, 0x44]                            |         r3 = *((r4 + 0x44));
    0x00092c8c ldr r1, [r4, 0x40]                            |         r1 = *((r4 + 0x40));
    0x00092c90 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00092c94 add r1, r1, r3                                |         r1 += r3;
    0x00092c98 bl 0x9053c                                    |         fcn_0009053c (r0, r1);
    0x00092c9c ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x00092ca0 sub r3, r3, 1                                 |         r3--;
    0x00092ca4 cmp r3, 0                                     |         
    0x00092ca8 str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x00092cac str r0, [r4, 8]                               |         *((r4 + 8)) = r0;
    0x00092cb0 bgt 0x92c84                                   |         
                                                             |     } while (r3 > 0);
    0x00092cb4 b 0x927a4                                     |     goto label_0;
    0x00092cb8 mov r0, 1                                     |     r0 = 1;
    0x00092cbc bl 0x91344                                    |     fcn_00091344 (r0);
    0x00092cc0 b 0x927a4                                     |     goto label_0;
                                                             |     do {
    0x00092cc4 bl 0x9074c                                    |         fcn_0009074c ();
    0x00092cc8 bl 0x8f8c8                                    |         fcn_0008f8c8 ();
    0x00092ccc ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x00092cd0 sub r3, r3, 1                                 |         r3--;
    0x00092cd4 cmp r3, 0                                     |         
    0x00092cd8 str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x00092cdc bgt 0x92cc4                                   |         
                                                             |     } while (r3 > 0);
    0x00092ce0 b 0x927a4                                     |     goto label_0;
    0x00092ce4 ldr r0, [r4, 0x30]                            |     r0 = *((r4 + 0x30));
    0x00092ce8 mvn r1, 0                                     |     r1 = ~0;
    0x00092cec sub r0, r0, 2                                 |     r0 -= 2;
    0x00092cf0 lsr r0, r0, 1                                 |     r0 >>= 1;
    0x00092cf4 b 0x92c3c                                     |     goto label_2;
    0x00092cf8 mvn r1, 0                                     |     r1 = ~0;
    0x00092cfc b 0x92c48                                     |     goto label_3;
    0x00092d00 ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
    0x00092d04 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00092d08 bne 0x92d10                                   |         
    0x00092d0c bl 0x9163c                                    |         fcn_0009163c ();
                                                             |     }
    0x00092d10 mov r7, 0                                     |     r7 = 0;
    0x00092d14 str r7, [r4, 0x1c]                            |     *((r4 + 0x1c)) = r7;
    0x00092d18 bl 0x8ff5c                                    |     fcn_0008ff5c ();
    0x00092d1c bl 0x8f920                                    |     fcn_0008f920 ();
    0x00092d20 str r7, [r4, 0x4c]                            |     *((r4 + 0x4c)) = r7;
    0x00092d24 b 0x927a4                                     |     goto label_0;
                                                             |     do {
    0x00092d28 bl 0x8ffe0                                    |         fcn_0008ffe0 ();
    0x00092d2c ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x00092d30 sub r3, r3, 1                                 |         r3--;
    0x00092d34 cmp r3, 0                                     |         
    0x00092d38 str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x00092d3c bgt 0x92d28                                   |         
                                                             |     } while (r3 > 0);
    0x00092d40 b 0x927a4                                     |     goto label_0;
    0x00092d44 bl 0x90bc4                                    |     r0 = fcn_00090bc4 ();
    0x00092d48 orr r0, r0, 0x20                              |     r0 |= 0x20;
    0x00092d4c sub r0, r0, 0x61                              |     r0 -= 0x61;
    0x00092d50 cmp r0, 0x19                                  |     
                                                             |     if (r0 <= 0x19) {
    0x00092d54 strls r0, [r4, 0x90]                          |         *((r4 + 0x90)) = r0;
                                                             |         goto label_55;
                                                             |     }
                                                             |     if (r0 < 0x19) {
                                                             | label_55:
    0x00092d58 bls 0x927a4                                   |         goto label_0;
                                                             |     }
                                                             | label_4:
    0x00092d5c bl 0x9163c                                    |     fcn_0009163c ();
    0x00092d60 b 0x927a4                                     |     goto label_0;
    0x00092d64 bl 0x90bc4                                    |     r0 = fcn_00090bc4 ();
    0x00092d68 orr r0, r0, 0x20                              |     r0 |= 0x20;
    0x00092d6c sub r3, r0, 0x61                              |     r3 = r0 - 0x61;
    0x00092d70 cmp r3, 0x19                                  |     
                                                             |     if (r3 > 0x19) {
    0x00092d74 bhi 0x92da8                                   |         goto label_56;
                                                             |     }
    0x00092d78 sub r0, r0, 0x1f                              |     r0 -= 0x1f;
    0x00092d7c ldr r3, [r4, r0, lsl 2]                       |     offset_1 = r0 << 2;
                                                             |     r3 = *((r4 + offset_1));
    0x00092d80 ldr r2, [r4]                                  |     r2 = *(r4);
    0x00092d84 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00092d88 cmp r3, r2                                    |     
                                                             |     if (r3 <= r2) {
    0x00092d8c blo 0x927a4                                   |         goto label_0;
                                                             |     }
    0x00092d90 ldr r2, [r4, 4]                               |     r2 = *((r4 + 4));
    0x00092d94 cmp r3, r2                                    |     
                                                             |     if (r3 < r2) {
    0x00092d98 strlo r3, [r4, 8]                             |         *((r4 + 8)) = r3;
                                                             |         goto label_57;
                                                             |     }
                                                             |     if (r3 >= r2) {
                                                             | label_57:
    0x00092d9c bhs 0x927a4                                   |         goto label_0;
                                                             |     }
                                                             | label_26:
    0x00092da0 bl 0x905bc                                    |     fcn_000905bc ();
    0x00092da4 b 0x92f44                                     |     goto label_22;
                                                             | label_56:
    0x00092da8 cmp r0, 0x27                                  |     
                                                             |     if (r0 != 0x27) {
    0x00092dac bne 0x92d5c                                   |         goto label_4;
                                                             |     }
    0x00092db0 ldr r5, [r4, 0x174]                           |     r5 = *((r4 + 0x174));
    0x00092db4 ldr r2, [r4]                                  |     r2 = *(r4);
    0x00092db8 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x00092dbc cmp r2, r5                                    |     
                                                             |     if (r2 <= r5) {
    0x00092dc0 bhi 0x92e08                                   |         
    0x00092dc4 ldr r2, [r4, 4]                               |         r2 = *((r4 + 4));
    0x00092dc8 sub r2, r2, 1                                 |         r2--;
    0x00092dcc cmp r5, r2                                    |         
                                                             |         if (r5 > r2) {
    0x00092dd0 bhi 0x92e08                                   |             goto label_58;
                                                             |         }
    0x00092dd4 str r3, [r4, 0x174]                           |         *((r4 + 0x174)) = r3;
    0x00092dd8 str r5, [r4, 0x170]                           |         *((r4 + 0x170)) = r5;
    0x00092ddc mov r0, r5                                    |         r0 = r5;
    0x00092de0 bl 0x904e4                                    |         r0 = fcn_000904e4 (r0);
    0x00092de4 bl 0x904e4                                    |         r0 = fcn_000904e4 (r0);
    0x00092de8 bl 0x904e4                                    |         fcn_000904e4 (r0);
    0x00092dec str r0, [r4, 0x178]                           |         *((r4 + 0x178)) = r0;
    0x00092df0 mov r0, r5                                    |         r0 = r5;
    0x00092df4 bl 0x90624                                    |         r0 = fcn_00090624 (r0);
    0x00092df8 bl 0x90624                                    |         r0 = fcn_00090624 (r0);
    0x00092dfc bl 0x90624                                    |         fcn_00090624 (r0);
    0x00092e00 mov r3, r5                                    |         r3 = r5;
    0x00092e04 str r0, [r4, 0x17c]                           |         *((r4 + 0x17c)) = r0;
                                                             |     }
                                                             | label_58:
    0x00092e08 str r3, [r4, 8]                               |     *((r4 + 8)) = r3;
    0x00092e0c bl 0x905bc                                    |     fcn_000905bc ();
    0x00092e10 mov r5, 0x27                                  |     r5 = 0x27;
    0x00092e14 bl 0x8f8c8                                    |     fcn_0008f8c8 ();
    0x00092e18 b 0x927a4                                     |     goto label_0;
    0x00092e1c bl 0x90bc4                                    |     r0 = fcn_00090bc4 ();
    0x00092e20 orr r0, r0, 0x20                              |     r0 |= 0x20;
    0x00092e24 sub r3, r0, 0x61                              |     r3 = r0 - 0x61;
    0x00092e28 cmp r3, 0x19                                  |     
                                                             |     if (r3 > 0x19) {
    0x00092e2c ldrls r3, [r4, 8]                             |         r3 = *((r4 + 8));
                                                             |     }
                                                             |     if (r3 > 0x19) {
    0x00092e30 subls r0, r0, 0x1f                            |         r0 -= 0x1f;
                                                             |     }
                                                             |     if (r3 <= 0x19) {
    0x00092e34 strls r3, [r4, r0, lsl 2]                     |         offset_2 = r0 << 2;
                                                             |         *((r4 + offset_2)) = r3;
                                                             |         goto label_59;
                                                             |     }
                                                             |     if (r3 < 0x19) {
                                                             | label_59:
    0x00092e38 bls 0x927a4                                   |         goto label_0;
                                                             |     }
    0x00092e3c b 0x92d5c                                     |     goto label_4;
    0x00092e40 ldr r3, [r4, 0x90]                            |     r3 = *((r4 + 0x90));
    0x00092e44 add r3, r3, 0x26                              |     r3 += 0x26;
    0x00092e48 ldr r0, [r4, r3, lsl 2]                       |     offset_3 = r3 << 2;
                                                             |     r0 = *((r4 + offset_3));
    0x00092e4c cmp r0, 0                                     |     
    0x00092e50 str r0, [sp, 0x14]                            |     var_14h = r0;
                                                             |     if (r0 == 0) {
    0x00092e54 bne 0x92e6c                                   |         
    0x00092e58 bl 0x8f940                                    |         r0 = fcn_0008f940 ();
    0x00092e5c mov r1, r0                                    |         r1 = r0;
    0x00092e60 ldr r0, [pc, 0x864]                           |         r0 = "Already at oldest change";
    0x00092e64 bl 0x90018                                    |         fcn_00090018 ();
    0x00092e68 b 0x927a4                                     |         goto label_0;
                                                             |     }
    0x00092e6c mov r1, 0xa                                   |     r1 = 0xa;
    0x00092e70 bl 0x1517c                                    |     r0 = strchr (r0, r1);
    0x00092e74 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00092e78 beq 0x92ec8                                   |         goto label_60;
                                                             |     }
    0x00092e7c cmp r5, 0x50                                  |     
                                                             |     if (r5 != 0x50) {
    0x00092e80 bne 0x92e9c                                   |         goto label_61;
                                                             |     }
    0x00092e84 bl 0x905bc                                    |     fcn_000905bc ();
                                                             |     do {
                                                             | label_6:
    0x00092e88 mov r2, 1                                     |         r2 = 1;
    0x00092e8c ldr r1, [sp, 0x14]                            |         r1 = var_14h;
    0x00092e90 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00092e94 bl 0x901bc                                    |         fcn_000901bc (r0, r1);
    0x00092e98 b 0x92c14                                     |         goto label_5;
                                                             | label_61:
    0x00092e9c cmp r5, 0x70                                  |         
    0x00092ea0 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00092ea4 bne 0x92e88                                   |         
                                                             |     } while (r5 != 0x70);
    0x00092ea8 bl 0x905e0                                    |     fcn_000905e0 (r0);
    0x00092eac ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x00092eb0 sub r2, r3, 1                                 |     r2 = r3 - 1;
    0x00092eb4 cmp r2, r0                                    |     
                                                             |     if (r2 == r0) {
    0x00092eb8 streq r3, [r4, 8]                             |         *((r4 + 8)) = r3;
                                                             |         goto label_62;
                                                             |     }
                                                             |     if (r2 == r0) {
                                                             | label_62:
    0x00092ebc beq 0x92e88                                   |         goto label_6;
                                                             |     }
    0x00092ec0 bl 0x9074c                                    |     fcn_0009074c ();
    0x00092ec4 b 0x92e88                                     |     goto label_6;
                                                             | label_60:
    0x00092ec8 cmp r5, 0x70                                  |     
                                                             |     if (r5 != 0x70) {
    0x00092ecc bne 0x92e88                                   |         goto label_6;
                                                             |     }
    0x00092ed0 bl 0x8ffe0                                    |     fcn_0008ffe0 ();
    0x00092ed4 b 0x92e88                                     |     goto label_6;
    0x00092ed8 ldr r3, [r4, 0x94]                            |     r3 = *((r4 + 0x94));
    0x00092edc add r3, r3, 0x26                              |     r3 += 0x26;
    0x00092ee0 ldr r3, [r4, r3, lsl 2]                       |     offset_4 = r3 << 2;
                                                             |     r3 = *((r4 + offset_4));
    0x00092ee4 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00092ee8 beq 0x927a4                                   |         goto label_0;
                                                             |     }
    0x00092eec ldr r8, [r4, 8]                               |     r8 = *((r4 + 8));
    0x00092ef0 mov r0, r8                                    |     r0 = r8;
    0x00092ef4 bl 0x904a4                                    |     r0 = fcn_000904a4 (r0);
    0x00092ef8 mov r7, r0                                    |     r7 = r0;
    0x00092efc str r0, [sp, 0x14]                            |     var_14h = r0;
    0x00092f00 mov r0, r8                                    |     r0 = r8;
    0x00092f04 bl 0x905e0                                    |     fcn_000905e0 (r0);
    0x00092f08 mov r2, 1                                     |     r2 = 1;
    0x00092f0c mov r1, r0                                    |     r1 = r0;
    0x00092f10 str r0, [sp, 0x18]                            |     var_18h = r0;
    0x00092f14 mov r0, r7                                    |     r0 = r7;
    0x00092f18 bl 0x8fdd0                                    |     fcn_0008fdd0 (r0, r1);
    0x00092f1c ldr r3, [r4, 0x94]                            |     r3 = *((r4 + 0x94));
    0x00092f20 mov r2, 2                                     |     r2 = 2;
    0x00092f24 add r3, r3, 0x26                              |     r3 += 0x26;
    0x00092f28 ldr r1, [r4, r3, lsl 2]                       |     offset_5 = r3 << 2;
                                                             |     r1 = *((r4 + offset_5));
    0x00092f2c str r0, [sp, 0x14]                            |     var_14h = r0;
    0x00092f30 bl 0x901bc                                    |     fcn_000901bc (r0, r1);
    0x00092f34 ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x00092f38 add r0, r3, r0                                |     r0 = r3 + r0;
    0x00092f3c str r0, [sp, 0x14]                            |     var_14h = r0;
                                                             | label_23:
    0x00092f40 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
                                                             | label_22:
    0x00092f44 bl 0x8f8c8                                    |     fcn_0008f8c8 ();
    0x00092f48 b 0x927a4                                     |     goto label_0;
                                                             | label_53:
    0x00092f4c ldrb r3, [r7, 0xc]                            |     r3 = *((r7 + 0xc));
    0x00092f50 cmp r3, 3                                     |     
                                                             |     if (r3 > 3) {
                                                             |         /* switch table (4 cases) at 0x92f5c */
    0x00092f54 ldrls pc, [pc, r3, lsl 2]                     |         offset_6 = r3 << 2;
                                                             |         pc = *((pc + offset_6));
                                                             |     }
    0x00092f58 b 0x92fb0                                     |     goto label_63;
    0x00092f6c ldr r3, [r7, 4]                               |     r3 = *((r7 + 4));
    0x00092f70 ldr sl, [r4]                                  |     sl = *(r4);
    0x00092f74 ldr r1, [r7, 8]                               |     r1 = *((r7 + 8));
    0x00092f78 add sl, sl, r3                                |     sl += r3;
    0x00092f7c mov r0, sl                                    |     r0 = sl;
    0x00092f80 bl 0x8fb74                                    |     fcn_0008fb74 (r0, r1);
    0x00092f84 ldr r2, [r7, 8]                               |     r2 = *((r7 + 8));
    0x00092f88 add r1, r7, 0xd                               |     r1 = r7 + 0xd;
    0x00092f8c mov r0, sl                                    |     r0 = sl;
    0x00092f90 bl 0x14624                                    |     memcpy (r0, r1, r2);
    0x00092f94 ldr r3, [r7, 4]                               |     r3 = *((r7 + 4));
    0x00092f98 ldr r2, [pc, 0x730]                           |     r2 = "Nothing in register %c";
    0x00092f9c str r3, [sp]                                  |     *(sp) = r3;
    0x00092fa0 ldr r3, [r7, 8]                               |     r3 = *((r7 + 8));
                                                             |     do {
    0x00092fa4 ldr r1, [r4, 0x20]                            |         r1 = *((r4 + 0x20));
    0x00092fa8 ldr r0, [pc, 0x724]                           |         r0 = "restored";
    0x00092fac bl 0x9017c                                    |         fcn_0009017c ();
                                                             | label_63:
    0x00092fb0 ldrb r3, [r7, 0xc]                            |         r3 = *((r7 + 0xc));
    0x00092fb4 cmp r3, 3                                     |         
                                                             |         if (r3 > 3) {
                                                             |             /* switch table (4 cases) at 0x92fc0 */
    0x00092fb8 ldrls pc, [pc, r3, lsl 2]                     |             offset_7 = r3 << 2;
                                                             |             pc = *((pc + offset_7));
                                                             |         }
    0x00092fbc b 0x9301c                                     |         goto label_64;
    0x00092fd0 ldr r3, [r7, 4]                               |         r3 = *((r7 + 4));
    0x00092fd4 ldr r0, [r4]                                  |         r0 = *(r4);
    0x00092fd8 ldr r1, [r7, 8]                               |         r1 = *((r7 + 8));
    0x00092fdc add r0, r0, r3                                |         r0 += r3;
    0x00092fe0 sub r1, r1, 1                                 |         r1--;
    0x00092fe4 mov r2, 0                                     |         r2 = 0;
    0x00092fe8 add r1, r0, r1                                |         r1 = r0 + r1;
    0x00092fec bl 0x8fdd0                                    |         fcn_0008fdd0 (r0, r1);
    0x00092ff0 ldr r3, [r7, 4]                               |         r3 = *((r7 + 4));
    0x00092ff4 mov r2, sb                                    |         r2 = sb;
    0x00092ff8 str r3, [sp]                                  |         *(sp) = r3;
    0x00092ffc ldr r3, [r7, 8]                               |         r3 = *((r7 + 8));
    0x00093000 b 0x92fa4                                     |         
                                                             |     } while (1);
    0x00093004 ldr r2, [r7, 4]                               |     r2 = *((r7 + 4));
    0x00093008 ldr r3, [r4]                                  |     r3 = *(r4);
    0x0009300c mov r0, 0                                     |     r0 = 0;
    0x00093010 add r3, r3, r2                                |     r3 += r2;
    0x00093014 str r3, [r4, 8]                               |     *((r4 + 8)) = r3;
    0x00093018 bl 0x90f60                                    |     fcn_00090f60 (r0);
                                                             | label_64:
    0x0009301c mov sl, 0                                     |     sl = 0;
                                                             | label_8:
    0x00093020 ldr r3, [r7]                                  |     r3 = *(r7);
    0x00093024 mov r0, r7                                    |     r0 = r7;
    0x00093028 str r3, [r8, 0x5fc]                           |     *((r8 + 0x5fc)) = r3;
    0x0009302c bl 0x152a8                                    |     free (r0);
    0x00093030 ldr r3, [r4, 0x20]                            |     r3 = *((r4 + 0x20));
    0x00093034 cmp sl, 0                                     |     
    0x00093038 sub r3, r3, 1                                 |     r3--;
    0x0009303c str r3, [r4, 0x20]                            |     *((r4 + 0x20)) = r3;
                                                             |     if (sl != 0) {
    0x00093040 bne 0x92bb0                                   |         goto label_7;
                                                             |     }
    0x00093044 b 0x927a4                                     |     goto label_0;
    0x00093048 mov sl, 1                                     |     sl = 1;
    0x0009304c b 0x93020                                     |     goto label_8;
                                                             | label_9:
    0x00093050 ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x00093054 bl 0x905e0                                    |     fcn_000905e0 (r0);
    0x00093058 ldr r3, [r4, 0x2c]                            |     r3 = *((r4 + 0x2c));
    0x0009305c sub r3, r3, 1                                 |     r3--;
    0x00093060 cmp r3, 0                                     |     
    0x00093064 str r3, [r4, 0x2c]                            |     *((r4 + 0x2c)) = r3;
    0x00093068 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
                                                             |     if (r3 <= 0) {
    0x0009306c ble 0x927a4                                   |         goto label_0;
                                                             |     }
    0x00093070 bl 0x9074c                                    |     fcn_0009074c ();
    0x00093074 b 0x93050                                     |     goto label_9;
    0x00093078 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x0009307c ldr sb, [r4, 4]                               |     sb = *((r4 + 4));
    0x00093080 ldr sl, [pc, 0x650]                           |     sl = "____";
    0x00093084 str r3, [sp, 0x18]                            |     var_18h = r3;
                                                             | label_10:
    0x00093088 ldr r7, [sp, 0x18]                            |     r7 = var_18h;
    0x0009308c cmp sb, r7                                    |     
    0x00093090 ldrb r8, [r7]                                 |     r8 = *(r7);
                                                             |     if (sb >= r7) {
    0x00093094 bls 0x930d4                                   |         
    0x00093098 cmp r8, 0xa                                   |         
                                                             |         if (r8 == 0xa) {
    0x0009309c beq 0x930d4                                   |             goto label_65;
                                                             |         }
    0x000930a0 mov r1, r8                                    |         r1 = r8;
    0x000930a4 mov r0, sl                                    |         r0 = sl;
    0x000930a8 bl 0x1517c                                    |         r0 = strchr (r0, r1);
    0x000930ac cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000930b0 beq 0x930e8                                   |             goto label_66;
                                                             |         }
    0x000930b4 mov r1, r8                                    |         r1 = r8;
    0x000930b8 mov r0, r7                                    |         r0 = r7;
    0x000930bc bl 0x8f9c8                                    |         r0 = fcn_0008f9c8 (r0, r1);
    0x000930c0 cmp r0, 0                                     |         
    0x000930c4 str r0, [sp, 0x14]                            |         var_14h = r0;
                                                             |         if (r0 == 0) {
    0x000930c8 strne r0, [r4, 8]                             |             *((r4 + 8)) = r0;
                                                             |         }
                                                             |         if (r0 != 0) {
    0x000930cc bne 0x930d4                                   |             goto label_65;
                                                             |         }
    0x000930d0 bl 0x9163c                                    |         fcn_0009163c ();
                                                             |     }
                                                             | label_65:
    0x000930d4 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x000930d8 ldrb r3, [r3]                                 |     r3 = *(r3);
    0x000930dc cmp r3, 0xa                                   |     
                                                             |     if (r3 != 0xa) {
    0x000930e0 bne 0x927a4                                   |         goto label_0;
                                                             |     }
    0x000930e4 b 0x92d5c                                     |     goto label_4;
                                                             | label_66:
    0x000930e8 add r7, r7, 1                                 |     r7++;
    0x000930ec str r7, [sp, 0x18]                            |     var_18h = r7;
    0x000930f0 b 0x93088                                     |     goto label_10;
    0x000930f4 bl 0x90bc4                                    |     fcn_00090bc4 ();
    0x000930f8 str r0, [r4, 0x64]                            |     *((r4 + 0x64)) = r0;
    0x000930fc ldr r1, [r4, 4]                               |     r1 = *((r4 + 4));
    0x00093100 ldr r2, [r4, 0x64]                            |     r2 = *((r4 + 0x64));
    0x00093104 sub r1, r1, 1                                 |     r1--;
                                                             | label_11:
    0x00093108 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x0009310c beq 0x927a4                                   |         goto label_0;
                                                             |     }
    0x00093110 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
                                                             |     do {
    0x00093114 add r3, r3, 1                                 |         r3++;
    0x00093118 str r3, [sp, 0x18]                            |         var_18h = r3;
    0x0009311c ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00093120 cmp r1, r3                                    |         
    0x00093124 ldrb r0, [r3]                                 |         r0 = *(r3);
                                                             |         if (r1 < r3) {
    0x00093128 bls 0x93144                                   |             goto label_67;
                                                             |         }
    0x0009312c cmp r0, 0xa                                   |         
                                                             |         if (r0 == 0xa) {
    0x00093130 beq 0x93144                                   |             goto label_67;
                                                             |         }
    0x00093134 cmp r2, r0                                    |         
    0x00093138 bne 0x93114                                   |         
                                                             |     } while (r2 != r0);
                                                             |     do {
    0x0009313c str r3, [r4, 8]                               |         *((r4 + 8)) = r3;
    0x00093140 b 0x9314c                                     |         goto label_68;
                                                             | label_67:
    0x00093144 cmp r2, r0                                    |         
    0x00093148 beq 0x9313c                                   |         
                                                             |     } while (r2 == r0);
                                                             | label_68:
    0x0009314c ldr r3, [r4, 0x2c]                            |     r3 = *((r4 + 0x2c));
    0x00093150 sub r3, r3, 1                                 |     r3--;
    0x00093154 cmp r3, 0                                     |     
    0x00093158 str r3, [r4, 0x2c]                            |     *((r4 + 0x2c)) = r3;
                                                             |     if (r3 > 0) {
    0x0009315c bgt 0x93108                                   |         goto label_11;
                                                             |     }
    0x00093160 b 0x927a4                                     |     goto label_0;
    0x00093164 ldr r2, [r4, 0x64]                            |     r2 = *((r4 + 0x64));
    0x00093168 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x0009316c beq 0x927a4                                   |         goto label_0;
                                                             |     }
    0x00093170 ldr r0, [r4]                                  |     r0 = *(r4);
                                                             | label_12:
    0x00093174 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
                                                             |     do {
    0x00093178 sub r3, r3, 1                                 |         r3--;
    0x0009317c str r3, [sp, 0x18]                            |         var_18h = r3;
    0x00093180 ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00093184 cmp r0, r3                                    |         
                                                             |         if (r0 > r3) {
    0x00093188 bhi 0x931b0                                   |             goto label_69;
                                                             |         }
    0x0009318c ldrb r1, [r3]                                 |         r1 = *(r3);
    0x00093190 cmp r1, 0xa                                   |         
                                                             |         if (r1 == 0xa) {
    0x00093194 beq 0x931a8                                   |             goto label_70;
                                                             |         }
    0x00093198 cmp r2, r1                                    |         
    0x0009319c bne 0x93178                                   |         
                                                             |     } while (r2 != r1);
                                                             |     do {
    0x000931a0 str r3, [r4, 8]                               |         *((r4 + 8)) = r3;
    0x000931a4 b 0x931b0                                     |         goto label_69;
                                                             | label_70:
    0x000931a8 cmp r2, 0xa                                   |         
    0x000931ac beq 0x931a0                                   |         
                                                             |     } while (r2 == 0xa);
                                                             | label_69:
    0x000931b0 ldr r3, [r4, 0x2c]                            |     r3 = *((r4 + 0x2c));
    0x000931b4 sub r3, r3, 1                                 |     r3--;
    0x000931b8 cmp r3, 0                                     |     
    0x000931bc str r3, [r4, 0x2c]                            |     *((r4 + 0x2c)) = r3;
                                                             |     if (r3 > 0) {
    0x000931c0 bgt 0x93174                                   |         goto label_12;
                                                             |     }
    0x000931c4 b 0x927a4                                     |     goto label_0;
                                                             |     do {
    0x000931c8 bl 0x90518                                    |         fcn_00090518 ();
    0x000931cc bl 0x8f8c8                                    |         fcn_0008f8c8 ();
    0x000931d0 ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x000931d4 sub r3, r3, 1                                 |         r3--;
    0x000931d8 cmp r3, 0                                     |         
    0x000931dc str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x000931e0 bgt 0x931c8                                   |         
                                                             |     } while (r3 > 0);
    0x000931e4 b 0x927a4                                     |     goto label_0;
    0x000931e8 ldr r3, [r4, 0x70]                            |     r3 = *((r4 + 0x70));
    0x000931ec cmp r3, 0                                     |     
                                                             |     if (r3 <= 0) {
    0x000931f0 ble 0x927a4                                   |         goto label_0;
                                                             |     }
    0x000931f4 add r3, r4, r3                                |     r3 = r4 + r3;
    0x000931f8 mov r2, 0                                     |     r2 = 0;
    0x000931fc strb r2, [r3, 0x3b0]                          |     *((r3 + 0x3b0)) = r2;
    0x00093200 add r0, r4, 0x3b0                             |     r0 = r4 + 0x3b0;
    0x00093204 bl 0x189d4                                    |     fcn_000189d4 (r0);
    0x00093208 str r0, [r4, 0x78]                            |     *((r4 + 0x78)) = r0;
    0x0009320c str r0, [r4, 0x74]                            |     *((r4 + 0x74)) = r0;
    0x00093210 b 0x927a4                                     |     goto label_0;
    0x00093214 mov r3, 0                                     |     r3 = 0;
    0x00093218 and r7, r5, 0xff                              |     r7 = r5 & 0xff;
    0x0009321c add r0, sp, 0x1c                              |     r0 += dest;
    0x00093220 strb r3, [sp, 0x1d]                           |     var_1dh = r3;
    0x00093224 strb r7, [sp, 0x1c]                           |     dest = r7;
    0x00093228 bl 0x9125c                                    |     fcn_0009125c (r0);
    0x0009322c str r0, [sp, 0x18]                            |     var_18h = r0;
    0x00093230 ldrb r3, [r0]                                 |     r3 = *(r0);
    0x00093234 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00093238 beq 0x927a4                                   |         goto label_0;
                                                             |     }
    0x0009323c ldrb r2, [r0, 1]                              |     r2 = *((r0 + 1));
    0x00093240 ldr r3, [r4, 0x80]                            |     r3 = *((r4 + 0x80));
    0x00093244 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00093248 bne 0x93284                                   |         goto label_71;
                                                             |     }
    0x0009324c ldrb r2, [r3]                                 |     r2 = *(r3);
    0x00093250 cmp r2, 0                                     |     
    0x00093254 strbne r7, [r3]                               |     *(r3) = r7;
                                                             |     while (1) {
                                                             | label_13:
    0x00093258 ldr r2, [r6]                                  |         r2 = *(r6);
    0x0009325c ldr r3, [r2, 8]                               |         r3 = *((r2 + 8));
    0x00093260 ldr r2, [r2, 0x80]                            |         r2 = *((r2 + 0x80));
    0x00093264 add r1, r3, 1                                 |         r1 = r3 + 1;
    0x00093268 str r1, [sp, 0x14]                            |         var_14h = r1;
    0x0009326c ldrb r2, [r2]                                 |         r2 = *(r2);
    0x00093270 cmp r2, 0x3f                                  |         
                                                             |         if (r2 != 0x3f) {
    0x00093274 bne 0x93364                                   |             goto label_72;
                                                             |         }
    0x00093278 sub r3, r3, 1                                 |         r3--;
    0x0009327c str r3, [sp, 0x14]                            |         var_14h = r3;
    0x00093280 b 0x932c0                                     |         goto label_73;
                                                             | label_71:
    0x00093284 mov r0, r3                                    |         r0 = r3;
    0x00093288 bl 0x152a8                                    |         free (r0);
    0x0009328c ldr r0, [sp, 0x18]                            |         r0 = var_18h;
    0x00093290 bl 0x189d4                                    |         fcn_000189d4 (r0);
    0x00093294 str r0, [r4, 0x80]                            |         *((r4 + 0x80)) = r0;
    0x00093298 b 0x93258                                     |         
                                                             |     }
    0x0009329c ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x000932a0 sub r2, r3, 1                                 |     r2 = r3 - 1;
    0x000932a4 str r2, [sp, 0x14]                            |     var_14h = r2;
    0x000932a8 ldr r2, [r4, 0x80]                            |     r2 = *((r4 + 0x80));
    0x000932ac ldrb r2, [r2]                                 |     r2 = *(r2);
    0x000932b0 cmp r2, 0x3f                                  |     
                                                             |     if (r2 != 0x3f) {
    0x000932b4 addeq r3, r3, 1                               |         r3++;
                                                             |     }
                                                             |     if (r2 != 0x3f) {
    0x000932b8 streq r3, [sp, 0x14]                          |         var_14h = r3;
                                                             |     }
                                                             |     if (r2 == 0x3f) {
    0x000932bc beq 0x93364                                   |         goto label_72;
                                                             |     }
                                                             | label_73:
    0x000932c0 mvn r7, 0                                     |     r7 = ~0;
                                                             | label_14:
    0x000932c4 ldr r4, [r6]                                  |     r4 = *(r6);
    0x000932c8 lsl sb, r7, 1                                 |     sb = r7 << 1;
    0x000932cc ldr r8, [r4, 0x80]                            |     r8 = *((r4 + 0x80));
    0x000932d0 orr sb, sb, 1                                 |     sb |= 1;
    0x000932d4 add r8, r8, 1                                 |     r8++;
    0x000932d8 mov r2, sb                                    |     r2 = sb;
    0x000932dc mov r1, r8                                    |     r1 = r8;
    0x000932e0 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x000932e4 bl 0x90684                                    |     r0 = fcn_00090684 (r0, r1);
    0x000932e8 cmp r0, 0                                     |     
    0x000932ec str r0, [sp, 0x18]                            |     var_18h = r0;
                                                             |     if (r0 == 0) {
    0x000932f0 strne r0, [r4, 8]                             |         *((r4 + 8)) = r0;
                                                             |     }
                                                             |     if (r0 == 0) {
    0x000932f4 bne 0x9334c                                   |         
    0x000932f8 ldr r3, [r4]                                  |         r3 = *(r4);
    0x000932fc cmn r7, 1                                     |         
    0x00093300 str r3, [sp, 0x14]                            |         var_14h = r3;
                                                             |         if (r7 != 1) {
    0x00093304 ldreq r3, [r4, 4]                             |             r3 = *((r4 + 4));
                                                             |         }
    0x00093308 mov r1, r8                                    |         r1 = r8;
                                                             |         if (r7 != 1) {
    0x0009330c subeq r3, r3, 1                               |             r3--;
                                                             |         }
                                                             |         if (r7 != 1) {
    0x00093310 streq r3, [sp, 0x14]                          |             var_14h = r3;
                                                             |         }
    0x00093314 mov r2, sb                                    |         r2 = sb;
    0x00093318 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x0009331c bl 0x90684                                    |         r0 = fcn_00090684 (r0, r1);
    0x00093320 cmp r0, 0                                     |         
    0x00093324 str r0, [sp, 0x18]                            |         var_18h = r0;
                                                             |         if (r0 != 0) {
    0x00093328 ldreq r1, [pc, 0x3ac]                         |             r1 = "Pattern not found";
                                                             |         }
                                                             |         if (r0 != 0) {
    0x0009332c beq 0x93344                                   |             
    0x00093330 ldr r3, [pc, 0x3a8]                           |             r3 = "Pattern not found";
    0x00093334 cmn r7, 1                                     |             
    0x00093338 ldr r1, [pc, 0x3a4]                           |             r1 = "search hit BOTTOM, continuing at TOP";
                                                             |             if (r7 == 1) {
    0x0009333c movne r1, r3                                  |                 r1 = r3;
                                                             |             }
    0x00093340 str r0, [r4, 8]                               |             *((r4 + 8)) = r0;
                                                             |         }
    0x00093344 ldr r0, [pc, 0x39c]                           |         r0 = "search hit TOP, continuing at BOTTOM";
    0x00093348 bl 0x90018                                    |         fcn_00090018 ();
                                                             |     }
    0x0009334c ldr r3, [r4, 0x2c]                            |     r3 = *((r4 + 0x2c));
    0x00093350 sub r3, r3, 1                                 |     r3--;
    0x00093354 cmp r3, 0                                     |     
    0x00093358 str r3, [r4, 0x2c]                            |     *((r4 + 0x2c)) = r3;
                                                             |     if (r3 > 0) {
    0x0009335c bgt 0x93258                                   |         goto label_13;
                                                             |     }
    0x00093360 b 0x927a4                                     |     goto label_0;
                                                             | label_72:
    0x00093364 mov r7, 1                                     |     r7 = 1;
    0x00093368 b 0x932c4                                     |     goto label_14;
    0x0009336c mvn r2, 0                                     |     r2 = ~0;
                                                             | label_16:
    0x00093370 ldr r1, [pc, 0x374]                           |     r1 = "_s";
    0x00093374 ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x00093378 bl 0x90684                                    |     r0 = fcn_00090684 (r0, "_s");
    0x0009337c cmp r0, 0                                     |     
    0x00093380 str r0, [sp, 0x18]                            |     var_18h = r0;
                                                             |     if (r0 == 0) {
    0x00093384 beq 0x927a4                                   |         goto label_0;
                                                             |     }
    0x00093388 bl 0x90624                                    |     fcn_00090624 (r0);
    0x0009338c b 0x928c8                                     |     goto label_15;
    0x00093390 mov r2, 3                                     |     r2 = 3;
    0x00093394 b 0x93370                                     |     goto label_16;
    0x00093398 cmp r5, 0x30                                  |     
    0x0009339c ldr r0, [r4, 0x2c]                            |     r0 = *((r4 + 0x2c));
                                                             |     if (r5 == 0x30) {
    0x000933a0 bne 0x933b4                                   |         
    0x000933a4 cmp r0, 0                                     |         
                                                             |         if (r0 > 0) {
    0x000933a8 bgt 0x933b4                                   |             goto label_74;
                                                             |         }
    0x000933ac bl 0x905bc                                    |         fcn_000905bc ();
    0x000933b0 b 0x927a4                                     |         goto label_0;
                                                             |     }
                                                             | label_74:
    0x000933b4 sub r2, r5, 0x30                              |     r2 = r5 - 0x30;
    0x000933b8 mov r1, 0xa                                   |     r1 = 0xa;
    0x000933bc mla r3, r1, r0, r2                            |     __asm ("mla r3, r1, r0, r2");
    0x000933c0 str r3, [r4, 0x2c]                            |     *((r4 + 0x2c)) = r3;
    0x000933c4 b 0x927a4                                     |     goto label_0;
    0x000933c8 ldr r0, [pc, 0x320]                           |     r0 = "_";
    0x000933cc bl 0x9125c                                    |     fcn_0009125c ("_");
    0x000933d0 str r0, [sp, 0x14]                            |     var_14h = r0;
    0x000933d4 bl 0x919ec                                    |     fcn_000919ec (r0);
    0x000933d8 b 0x927a4                                     |     goto label_0;
    0x000933dc ldr r1, [r4, 8]                               |     r1 = *((r4 + 8));
    0x000933e0 ldr r0, [r4]                                  |     r0 = *(r4);
    0x000933e4 bl 0x90770                                    |     r0 = fcn_00090770 (r0, r1);
    0x000933e8 mov sb, r0                                    |     sb = r0;
    0x000933ec bl 0x90bc4                                    |     fcn_00090bc4 ();
    0x000933f0 add r1, sp, 0x18                              |     r1 += var_18h;
    0x000933f4 and r2, r0, 0xff                              |     r2 = r0 & 0xff;
    0x000933f8 add r0, sp, 0x14                              |     r0 += var_14h;
    0x000933fc bl 0x93e64                                    |     fcn_00093e64 (r0, r1);
    0x00093400 mov r3, 0                                     |     r3 = 0;
    0x00093404 str r3, [sp]                                  |     *(sp) = r3;
    0x00093408 mov r2, 1                                     |     r2 = 1;
    0x0009340c ldr r1, [sp, 0x18]                            |     r1 = var_18h;
    0x00093410 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x00093414 bl 0x8febc                                    |     fcn_0008febc (r0, r1, r2);
    0x00093418 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x0009341c bl 0x904a4                                    |     r0 = fcn_000904a4 (r0);
    0x00093420 mov r7, r0                                    |     r7 = r0;
    0x00093424 str r0, [sp, 0x14]                            |     var_14h = r0;
    0x00093428 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x0009342c bl 0x905e0                                    |     r0 = fcn_000905e0 (r0);
    0x00093430 mov r1, r0                                    |     r1 = r0;
    0x00093434 str r0, [sp, 0x18]                            |     var_18h = r0;
    0x00093438 mov r0, r7                                    |     r0 = r7;
    0x0009343c bl 0x90770                                    |     r0 = fcn_00090770 (r0, r1);
    0x00093440 mov r7, r0                                    |     r7 = r0;
                                                             |     do {
    0x00093444 cmp r7, 0                                     |         
                                                             |         if (r7 <= 0) {
    0x00093448 bgt 0x93460                                   |             
    0x0009344c mov r0, sb                                    |             r0 = sb;
    0x00093450 bl 0x90658                                    |             fcn_00090658 (r0);
    0x00093454 str r0, [r4, 8]                               |             *((r4 + 8)) = r0;
    0x00093458 bl 0x8f8c8                                    |             fcn_0008f8c8 ();
    0x0009345c b 0x92c14                                     |             goto label_5;
                                                             |         }
    0x00093460 cmp r5, 0x3c                                  |         
    0x00093464 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
                                                             |         if (r5 != 0x3c) {
    0x00093468 bne 0x934d8                                   |             goto label_75;
                                                             |         }
    0x0009346c ldrb r3, [r0]                                 |         r3 = *(r0);
    0x00093470 cmp r3, 9                                     |         
                                                             |         if (r3 != 9) {
    0x00093474 bne 0x93498                                   |             goto label_76;
                                                             |         }
    0x00093478 mov r2, 0                                     |         r2 = 0;
    0x0009347c mov r1, r0                                    |         r1 = r0;
    0x00093480 bl 0x8fdd0                                    |         fcn_0008fdd0 (r0, r1);
                                                             | label_17:
    0x00093484 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x00093488 bl 0x90624                                    |         fcn_00090624 (r0);
    0x0009348c sub r7, r7, 1                                 |         r7--;
    0x00093490 str r0, [sp, 0x14]                            |         var_14h = r0;
    0x00093494 b 0x93444                                     |         
                                                             |     } while (1);
                                                             | label_76:
    0x00093498 cmp r3, 0x20                                  |     
                                                             |     if (r3 != 0x20) {
    0x0009349c bne 0x93484                                   |         goto label_17;
                                                             |     }
    0x000934a0 mov r8, 0                                     |     r8 = 0;
    0x000934a4 b 0x934b8                                     |     goto label_77;
                                                             | label_18:
    0x000934a8 mov r2, 0                                     |     r2 = 0;
    0x000934ac mov r0, r1                                    |     r0 = r1;
    0x000934b0 bl 0x8fdd0                                    |     fcn_0008fdd0 (r0, r1);
    0x000934b4 add r8, r8, 1                                 |     r8++;
                                                             | label_77:
    0x000934b8 ldr r1, [sp, 0x14]                            |     r1 = var_14h;
    0x000934bc ldrb r3, [r1]                                 |     r3 = *(r1);
    0x000934c0 cmp r3, 0x20                                  |     
                                                             |     if (r3 != 0x20) {
    0x000934c4 bne 0x93484                                   |         goto label_17;
                                                             |     }
    0x000934c8 ldr r3, [r4, 0x60]                            |     r3 = *((r4 + 0x60));
    0x000934cc cmp r3, r8                                    |     
                                                             |     if (r3 > r8) {
    0x000934d0 bgt 0x934a8                                   |         goto label_18;
                                                             |     }
    0x000934d4 b 0x93484                                     |     goto label_17;
                                                             | label_75:
    0x000934d8 cmp r5, 0x3e                                  |     
                                                             |     if (r5 != 0x3e) {
    0x000934dc bne 0x93484                                   |         goto label_17;
                                                             |     }
    0x000934e0 mov r2, 1                                     |     r2 = 1;
    0x000934e4 mov r1, 9                                     |     r1 = 9;
    0x000934e8 bl 0x916e4                                    |     fcn_000916e4 (r0, r1);
    0x000934ec b 0x93484                                     |     goto label_17;
    0x000934f0 bl 0x909ec                                    |     fcn_000909ec ();
    0x000934f4 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x000934f8 ldrb r2, [r3]                                 |     r2 = *(r3);
    0x000934fc cmp r2, 0xa                                   |     
                                                             |     if (r2 == 0xa) {
    0x00093500 addne r3, r3, 1                               |         r3++;
                                                             |     }
                                                             |     if (r2 == 0xa) {
    0x00093504 strne r3, [r4, 8]                             |         *((r4 + 8)) = r3;
                                                             |     }
                                                             | label_21:
    0x00093508 ldr r3, [r6]                                  |     r3 = *(r6);
    0x0009350c mov r2, 1                                     |     r2 = 1;
                                                             | label_28:
    0x00093510 str r2, [r3, 0x1c]                            |     *((r3 + 0x1c)) = r2;
    0x00093514 bl 0x8ff5c                                    |     fcn_0008ff5c ();
    0x00093518 b 0x927a4                                     |     goto label_0;
    0x0009351c cmp r5, 0x42                                  |     
                                                             |     if (r5 != 0x42) {
    0x00093520 mvneq r7, 0                                   |         r7 = ~0;
                                                             |     }
    0x00093524 movne r7, 1                                   |     r7 = 1;
                                                             |     while (r3 > 0) {
    0x00093528 cmp r5, 0x57                                  |         
    0x0009352c ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
                                                             |         if (r5 == 0x57) {
    0x00093530 beq 0x93578                                   |             goto label_78;
                                                             |         }
    0x00093534 ldrb r3, [r0, r7]                             |         r3 = *((r0 + r7));
    0x00093538 sub r2, r3, 9                                 |         r2 = r3 - 9;
    0x0009353c cmp r3, 0x20                                  |         
    0x00093540 cmpne r2, 4                                   |         __asm ("cmpne r2, 4");
                                                             |         if (r3 < 0x20) {
    0x00093544 bls 0x93578                                   |             goto label_78;
                                                             |         }
                                                             | label_19:
    0x00093548 mov r3, 1                                     |         r3 = 1;
    0x0009354c ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00093550 mov r2, r7                                    |         r2 = r7;
    0x00093554 mov r1, r3                                    |         r1 = r3;
    0x00093558 bl 0x90250                                    |         fcn_00090250 (r0, r1);
    0x0009355c str r0, [r4, 8]                               |         *((r4 + 8)) = r0;
                                                             | label_20:
    0x00093560 ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x00093564 sub r3, r3, 1                                 |         r3--;
    0x00093568 cmp r3, 0                                     |         
    0x0009356c str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x00093570 bgt 0x93528                                   |         
                                                             |     }
    0x00093574 b 0x927a4                                     |     goto label_0;
                                                             | label_78:
    0x00093578 mov r3, 2                                     |     r3 = 2;
    0x0009357c mov r2, r7                                    |     r2 = r7;
    0x00093580 mov r1, 1                                     |     r1 = 1;
    0x00093584 bl 0x90250                                    |     fcn_00090250 (r0, r1);
    0x00093588 mov r3, 3                                     |     r3 = 3;
    0x0009358c mov r2, r7                                    |     r2 = r7;
    0x00093590 mov r1, 2                                     |     r1 = 2;
    0x00093594 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
    0x00093598 bl 0x90250                                    |     fcn_00090250 (r0, r1);
    0x0009359c cmp r5, 0x57                                  |     
    0x000935a0 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
                                                             |     if (r5 != 0x57) {
    0x000935a4 bne 0x93548                                   |         goto label_19;
                                                             |     }
    0x000935a8 b 0x93560                                     |     goto label_20;
    0x000935ac ldr r8, [r4, 8]                               |     r8 = *((r4 + 8));
    0x000935b0 mov r0, r8                                    |     r0 = r8;
    0x000935b4 bl 0x905e0                                    |     r0 = fcn_000905e0 (r0);
    0x000935b8 ldrb r3, [r0]                                 |     r3 = *(r0);
    0x000935bc mov r7, r0                                    |     r7 = r0;
    0x000935c0 cmp r3, 0xa                                   |     
                                                             |     if (r3 == 0xa) {
    0x000935c4 bne 0x935d8                                   |         
    0x000935c8 bl 0x904a4                                    |         r0 = fcn_000904a4 (r0);
    0x000935cc sub r0, r7, r0                                |         r0 = r7 - r0;
    0x000935d0 cmp r0, 0                                     |         
                                                             |         if (r0 > 0) {
    0x000935d4 subgt r7, r7, 1                               |             r7--;
                                                             |             goto label_79;
                                                             |         }
                                                             |     }
                                                             | label_79:
    0x000935d8 mov r3, 1                                     |     r3 = 1;
    0x000935dc str r7, [r4, 8]                               |     *((r4 + 8)) = r7;
    0x000935e0 mov r2, 0                                     |     r2 = 0;
    0x000935e4 str r3, [sp]                                  |     *(sp) = r3;
    0x000935e8 mov r1, r7                                    |     r1 = r7;
    0x000935ec mov r0, r8                                    |     r0 = r8;
    0x000935f0 bl 0x8febc                                    |     fcn_0008febc (r0, r1, r2);
    0x000935f4 cmp r5, 0x43                                  |     
    0x000935f8 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
                                                             |     if (r5 == 0x43) {
    0x000935fc beq 0x93508                                   |         goto label_21;
                                                             |     }
    0x00093600 bl 0x8f920                                    |     fcn_0008f920 ();
    0x00093604 mov r5, 0x44                                  |     r5 = 0x44;
    0x00093608 b 0x927a4                                     |     goto label_0;
    0x0009360c bl 0x90bc4                                    |     r0 = fcn_00090bc4 ();
    0x00093610 cmp r0, 0x67                                  |     
                                                             |     if (r0 != 0x67) {
    0x00093614 beq 0x93640                                   |         
    0x00093618 cmp r0, 0                                     |         
                                                             |         if (r0 >= 0) {
    0x0009361c movlt r0, 0x2a                                |             r0 = 0x2a;
                                                             |         }
    0x00093620 mov r3, 0x67                                  |         r3 = 0x67;
    0x00093624 strb r3, [sp, 0x1c]                           |         dest = r3;
    0x00093628 strb r0, [sp, 0x1d]                           |         var_1dh = r0;
    0x0009362c mov r3, 0                                     |         r3 = 0;
    0x00093630 add r0, sp, 0x1c                              |         r0 += dest;
    0x00093634 strb r3, [sp, 0x1e]                           |         var_1eh = r3;
    0x00093638 bl 0x90080                                    |         fcn_00090080 (r0);
    0x0009363c b 0x927a4                                     |         goto label_0;
                                                             |     }
    0x00093640 ldr r3, [r4, 0x2c]                            |     r3 = *((r4 + 0x2c));
    0x00093644 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00093648 moveq r3, 1                                   |         r3 = 1;
                                                             |     }
                                                             |     if (r3 != 0) {
    0x0009364c streq r3, [r4, 0x2c]                          |         *((r4 + 0x2c)) = r3;
                                                             |     }
    0x00093650 ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x00093654 ldr r0, [r4, 0x2c]                            |     r0 = *((r4 + 0x2c));
    0x00093658 sub r3, r3, 1                                 |     r3--;
    0x0009365c cmp r0, 0                                     |     
    0x00093660 str r3, [r4, 8]                               |     *((r4 + 8)) = r3;
                                                             |     if (r0 <= 0) {
    0x00093664 ble 0x92f44                                   |         goto label_22;
                                                             |     }
    0x00093668 bl 0x90658                                    |     fcn_00090658 (r0);
    0x0009366c b 0x92f40                                     |     goto label_23;
    0x00093670 ldr r3, [r4, 0x54]                            |     r3 = *((r4 + 0x54));
    0x00093674 ldr r2, [r4, 0x2c]                            |     r2 = *((r4 + 0x2c));
    0x00093678 str r3, [r4, 8]                               |     *((r4 + 8)) = r3;
    0x0009367c ldr r3, [r4, 0x30]                            |     r3 = *((r4 + 0x30));
    0x00093680 sub r3, r3, 1                                 |     r3--;
    0x00093684 cmp r2, r3                                    |     
                                                             |     if (r2 <= r3) {
    0x00093688 strhi r3, [r4, 0x2c]                          |         *((r4 + 0x2c)) = r3;
                                                             |     }
    0x0009368c ldr r3, [r4, 0x2c]                            |     r3 = *((r4 + 0x2c));
    0x00093690 sub r3, r3, 1                                 |     r3--;
    0x00093694 cmp r3, 0                                     |     
    0x00093698 str r3, [r4, 0x2c]                            |     *((r4 + 0x2c)) = r3;
                                                             |     if (r3 <= 0) {
    0x0009369c ble 0x92f44                                   |         goto label_22;
                                                             |     }
    0x000936a0 mov r0, 0x2b                                  |     r0 = 0x2b;
    0x000936a4 bl 0x926e4                                    |     fcn_000926e4 (r0);
    0x000936a8 b 0x92f44                                     |     goto label_22;
    0x000936ac bl 0x905bc                                    |     fcn_000905bc ();
    0x000936b0 bl 0x8f8c8                                    |     fcn_0008f8c8 ();
    0x000936b4 b 0x93508                                     |     goto label_21;
                                                             | label_54:
    0x0009371c mov r2, 1                                     |     r2 = 1;
    0x00093720 mov r1, r2                                    |     r1 = r2;
    0x00093724 bl 0x8fc54                                    |     fcn_0008fc54 (r0, r1);
    0x00093728 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x0009372c mov r1, 1                                     |     r1 = 1;
    0x00093730 add r2, r3, 1                                 |     r2 = r3 + 1;
    0x00093734 str r2, [r4, 8]                               |     *((r4 + 8)) = r2;
    0x00093738 strb r7, [r3]                                 |     *(r3) = r7;
    0x0009373c ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x00093740 mov r2, 2                                     |     r2 = 2;
    0x00093744 sub r0, r0, 1                                 |     r0--;
    0x00093748 bl 0x8fc54                                    |     fcn_0008fc54 (r0, r1);
                                                             | label_25:
    0x0009374c ldr r1, [r4, 8]                               |     r1 = *((r4 + 8));
    0x00093750 ldrb r3, [r1]                                 |     r3 = *(r1);
    0x00093754 cmp r3, 9                                     |     
    0x00093758 cmpne r3, 0x20                                |     __asm ("cmpne r3, 0x20");
                                                             |     if (r3 != 9) {
    0x0009375c bne 0x92be8                                   |         goto label_24;
                                                             |     }
    0x00093760 mov r2, 2                                     |     r2 = 2;
    0x00093764 mov r0, r1                                    |     r0 = r1;
    0x00093768 bl 0x8fdd0                                    |     fcn_0008fdd0 (r0, r1);
    0x0009376c b 0x9374c                                     |     goto label_25;
    0x00093770 bl 0x9093c                                    |     fcn_0009093c ();
    0x00093774 ldr r3, [r4, 0x30]                            |     r3 = *((r4 + 0x30));
    0x00093778 ldr r2, [r4, 0x2c]                            |     r2 = *((r4 + 0x2c));
    0x0009377c sub r3, r3, 1                                 |     r3--;
    0x00093780 cmp r2, r3                                    |     
                                                             |     if (r2 <= r3) {
    0x00093784 strhi r3, [r4, 0x2c]                          |         *((r4 + 0x2c)) = r3;
                                                             |     }
    0x00093788 ldr r3, [r4, 0x2c]                            |     r3 = *((r4 + 0x2c));
    0x0009378c sub r3, r3, 1                                 |     r3--;
    0x00093790 cmp r3, 0                                     |     
    0x00093794 str r3, [r4, 0x2c]                            |     *((r4 + 0x2c)) = r3;
    0x00093798 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
                                                             |     if (r3 <= 0) {
    0x0009379c ble 0x92da0                                   |         goto label_26;
                                                             |     }
    0x000937a0 mov r0, 0x2d                                  |     r0 = 0x2d;
    0x000937a4 bl 0x926e4                                    |     fcn_000926e4 (r0);
    0x000937a8 b 0x92da0                                     |     goto label_26;
    0x000937ac ldr r7, [r4, 0x30]                            |     r7 = *((r4 + 0x30));
    0x000937b0 ldr r3, [r4, 0x54]                            |     r3 = *((r4 + 0x54));
    0x000937b4 sub r7, r7, 1                                 |     r7--;
    0x000937b8 lsr r7, r7, 1                                 |     r7 >>= 1;
    0x000937bc mov r8, 0                                     |     r8 = 0;
    0x000937c0 str r3, [r4, 8]                               |     *((r4 + 8)) = r3;
                                                             | label_27:
    0x000937c4 cmp r8, r7                                    |     
                                                             |     if (r8 == r7) {
    0x000937c8 beq 0x927a4                                   |         goto label_0;
                                                             |     }
    0x000937cc ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x000937d0 bl 0x90624                                    |     fcn_00090624 (r0);
    0x000937d4 add r8, r8, 1                                 |     r8++;
    0x000937d8 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
    0x000937dc b 0x937c4                                     |     goto label_27;
    0x000937e0 ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x000937e4 bl 0x904a4                                    |     fcn_000904a4 (r0);
    0x000937e8 str r0, [sp, 0x14]                            |     var_14h = r0;
    0x000937ec ldrb r3, [r0, -1]                             |     r3 = *((r0 - 1));
    0x000937f0 cmp r3, 0xa                                   |     
                                                             |     if (r3 == 0xa) {
    0x000937f4 bne 0x93818                                   |         
    0x000937f8 bl 0x90518                                    |         fcn_00090518 ();
    0x000937fc bl 0x909ec                                    |         fcn_000909ec ();
    0x00093800 mov r2, 1                                     |         r2 = 1;
    0x00093804 mov r1, 0xa                                   |         r1 = 0xa;
    0x00093808 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x0009380c bl 0x916e4                                    |         fcn_000916e4 (r0, r1);
    0x00093810 str r0, [r4, 8]                               |         *((r4 + 8)) = r0;
    0x00093814 b 0x93508                                     |         goto label_21;
                                                             |     }
    0x00093818 bl 0x905bc                                    |     fcn_000905bc ();
    0x0009381c mov r2, 1                                     |     r2 = 1;
    0x00093820 mov r1, 0xa                                   |     r1 = 0xa;
    0x00093824 ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x00093828 bl 0x916e4                                    |     fcn_000916e4 (r0, r1);
    0x0009382c str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
    0x00093830 bl 0x90518                                    |     fcn_00090518 ();
    0x00093834 b 0x93508                                     |     goto label_21;
                                                             | label_46:
    0x00093838 ldr r3, [r6]                                  |     r3 = *(r6);
    0x0009383c mov r2, 2                                     |     r2 = 2;
    0x00093840 b 0x93510                                     |     goto label_28;
    0x00093844 ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x00093848 ldr r1, [r4, 8]                               |     r1 = *((r4 + 8));
    0x0009384c sub r3, r3, 1                                 |     r3--;
    0x00093850 cmp r1, r3                                    |     
                                                             |     if (r1 >= r3) {
    0x00093854 bhs 0x927a4                                   |         goto label_0;
                                                             |     }
    0x00093858 mov r3, 1                                     |     r3 = 1;
    0x0009385c str r3, [sp]                                  |     *(sp) = r3;
    0x00093860 mov r2, r3                                    |     r2 = r3;
    0x00093864 mov r0, r1                                    |     r0 = r1;
    0x00093868 bl 0x8febc                                    |     fcn_0008febc (r0, r1, r2);
    0x0009386c b 0x928c8                                     |     goto label_15;
    0x00093870 cmp r5, 0x58                                  |     
                                                             |     if (r5 == 0x58) {
    0x00093874 movne r7, 0                                   |         r7 = 0;
                                                             |     }
                                                             |     if (r5 != 0x58) {
    0x00093878 mvneq r7, 0                                   |         r7 = ~0;
                                                             |     }
    0x0009387c mov r8, 1                                     |     r8 = 1;
                                                             |     do {
    0x00093880 ldr r3, [r4, 8]                               |         r3 = *((r4 + 8));
    0x00093884 ldrb r2, [r3, r7]                             |         r2 = *((r3 + r7));
    0x00093888 cmp r2, 0xa                                   |         
                                                             |         if (r2 != 0xa) {
    0x0009388c beq 0x938b8                                   |             
    0x00093890 cmp r5, 0x58                                  |             
                                                             |             if (r5 != 0x58) {
    0x00093894 subeq r3, r3, 1                               |                 r3--;
                                                             |             }
                                                             |             if (r5 != 0x58) {
    0x00093898 streq r3, [r4, 8]                             |                 *((r4 + 8)) = r3;
                                                             |             }
    0x0009389c ldr r1, [r4, 8]                               |             r1 = *((r4 + 8));
    0x000938a0 mov r3, 1                                     |             r3 = 1;
    0x000938a4 str r8, [sp]                                  |             *(sp) = r8;
    0x000938a8 mov r2, 0                                     |             r2 = 0;
    0x000938ac mov r0, r1                                    |             r0 = r1;
    0x000938b0 bl 0x8febc                                    |             fcn_0008febc (r0, r1, r2);
    0x000938b4 str r0, [r4, 8]                               |             *((r4 + 8)) = r0;
                                                             |         }
    0x000938b8 ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x000938bc sub r3, r3, 1                                 |         r3--;
    0x000938c0 cmp r3, 0                                     |         
    0x000938c4 str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x000938c8 bgt 0x93880                                   |         
                                                             |     } while (r3 > 0);
    0x000938cc bl 0x8f920                                    |     fcn_0008f920 ();
    0x000938d0 cmp r5, 0x73                                  |     
                                                             |     if (r5 == 0x73) {
    0x000938d4 beq 0x93508                                   |         goto label_21;
                                                             |     }
    0x000938d8 b 0x927a4                                     |     goto label_0;
    0x000938dc bl 0x90bc4                                    |     r0 = fcn_00090bc4 ();
    0x000938e0 cmp r0, 0x5a                                  |     
    0x000938e4 mov r7, r0                                    |     r7 = r0;
                                                             |     if (r0 != 0x5a) {
    0x000938e8 bne 0x92d5c                                   |         goto label_4;
                                                             |     }
    0x000938ec ldr r3, [r4, 0x20]                            |     r3 = *((r4 + 0x20));
    0x000938f0 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000938f4 streq r3, [r4, 0x18]                          |         *((r4 + 0x18)) = r3;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x000938f8 beq 0x93914                                   |         goto label_29;
                                                             |     }
    0x000938fc ldr r5, [r4, 0x14]                            |     r5 = *((r4 + 0x14));
    0x00093900 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00093904 beq 0x9391c                                   |         goto label_80;
                                                             |     }
    0x00093908 ldr r1, [r4, 0x50]                            |     r1 = *((r4 + 0x50));
    0x0009390c ldr r0, [pc, -0x220]                          |     r0 = "__s_is_read_only";
    0x00093910 bl 0x90018                                    |     fcn_00090018 ();
                                                             |     do {
                                                             | label_29:
    0x00093914 mov r5, r7                                    |         r5 = r7;
    0x00093918 b 0x927a4                                     |         goto label_0;
                                                             | label_80:
    0x0009391c ldr r2, [r4, 4]                               |         r2 = *((r4 + 4));
    0x00093920 ldr r1, [r4]                                  |         r1 = *(r4);
    0x00093924 sub r2, r2, 1                                 |         r2--;
    0x00093928 ldr r0, [r4, 0x50]                            |         r0 = *((r4 + 0x50));
    0x0009392c bl 0x90420                                    |         r0 = fcn_00090420 (r0, r1);
    0x00093930 cmp r0, 0                                     |         
                                                             |         if (r0 >= 0) {
    0x00093934 bge 0x9394c                                   |             goto label_81;
                                                             |         }
    0x00093938 cmn r0, 1                                     |         
    0x0009393c bne 0x93914                                   |         
                                                             |     } while (r0 != 1);
    0x00093940 ldr r0, [pc, -0x250]                          |     r0 = "Write error: %m";
    0x00093944 bl 0x90018                                    |     fcn_00090018 ();
    0x00093948 b 0x93914                                     |     goto label_29;
                                                             | label_81:
    0x0009394c ldm r4, {r2, r3}                              |     r2 = *(r4);
                                                             |     r3 = *((r4 + 4));
    0x00093950 sub r3, r3, r2                                |     r3 -= r2;
    0x00093954 cmp r3, r0                                    |     
                                                             |     if (r3 != r0) {
    0x00093958 streq r5, [r4, 0x18]                          |         *((r4 + 0x18)) = r5;
                                                             |     }
    0x0009395c b 0x93914                                     |     goto label_29;
    0x00093960 ldr r8, [r4, 4]                               |     r8 = *((r4 + 4));
    0x00093964 cmp r5, 0x62                                  |     
    0x00093968 ldr r3, [r4]                                  |     r3 = *(r4);
    0x0009396c ldr fp, [pc, -0x278]                          |     fp = "________._:_________";
                                                             |     if (r5 != 0x62) {
    0x00093970 mvneq r7, 0                                   |         r7 = ~0;
                                                             |     }
                                                             |     if (r5 == 0x62) {
    0x00093974 movne r7, 1                                   |         r7 = 1;
                                                             |     }
    0x00093978 cmp r5, 0x65                                  |     
                                                             |     if (r5 != 0x65) {
    0x0009397c moveq sl, 2                                   |         sl = 2;
                                                             |     }
                                                             |     if (r5 == 0x65) {
    0x00093980 movne sl, 1                                   |         sl = 1;
                                                             |     }
    0x00093984 sub r8, r8, 1                                 |     r8--;
    0x00093988 str r3, [sp, 0xc]                             |     var_ch = r3;
                                                             | label_30:
    0x0009398c ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x00093990 ldr r2, [sp, 0xc]                             |     r2 = var_ch;
    0x00093994 add r0, r3, r7                                |     r0 = r3 + r7;
    0x00093998 cmp r0, r2                                    |     
                                                             |     if (r0 <= r2) {
    0x0009399c blo 0x927a4                                   |         goto label_0;
                                                             |     }
    0x000939a0 cmp r0, r8                                    |     
                                                             |     if (r0 > r8) {
    0x000939a4 bhi 0x927a4                                   |         goto label_0;
                                                             |     }
    0x000939a8 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
    0x000939ac ldrb r3, [r3, r7]                             |     r3 = *((r3 + r7));
    0x000939b0 sub r2, r3, 9                                 |     r2 = r3 - 9;
    0x000939b4 cmp r3, 0x20                                  |     
    0x000939b8 cmpne r2, 4                                   |     __asm ("cmpne r2, 4");
                                                             |     if (r3 <= 0x20) {
    0x000939bc bhi 0x939d4                                   |         
    0x000939c0 mov r3, 3                                     |         r3 = 3;
    0x000939c4 mov r2, r7                                    |         r2 = r7;
    0x000939c8 mov r1, sl                                    |         r1 = sl;
    0x000939cc bl 0x90250                                    |         fcn_00090250 (r0, r1);
    0x000939d0 str r0, [r4, 8]                               |         *((r4 + 8)) = r0;
                                                             |     }
    0x000939d4 ldr sb, [r4, 8]                               |     sb = *((r4 + 8));
    0x000939d8 ldrb r1, [sb]                                 |     r1 = *(sb);
    0x000939dc sub r3, r1, 0x30                              |     r3 = r1 - 0x30;
    0x000939e0 cmp r3, 9                                     |     
                                                             |     if (r3 >= 9) {
    0x000939e4 bls 0x939fc                                   |         
    0x000939e8 orr r3, r1, 0x20                              |         r3 = r1 | 0x20;
    0x000939ec sub r3, r3, 0x61                              |         r3 -= 0x61;
    0x000939f0 cmp r1, 0x5f                                  |         
    0x000939f4 cmpne r3, 0x19                                |         __asm ("cmpne r3, 0x19");
                                                             |         if (r1 > 0x5f) {
    0x000939f8 bhi 0x93a2c                                   |             goto label_82;
                                                             |         }
                                                             |     }
    0x000939fc mov r3, 5                                     |     r3 = 5;
                                                             | label_32:
    0x00093a00 mov r2, r7                                    |     r2 = r7;
    0x00093a04 mov r1, 1                                     |     r1 = 1;
    0x00093a08 mov r0, sb                                    |     r0 = sb;
    0x00093a0c bl 0x90250                                    |     fcn_00090250 (r0, r1);
    0x00093a10 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
                                                             | label_31:
    0x00093a14 ldr r3, [r4, 0x2c]                            |     r3 = *((r4 + 0x2c));
    0x00093a18 sub r3, r3, 1                                 |     r3--;
    0x00093a1c cmp r3, 0                                     |     
    0x00093a20 str r3, [r4, 0x2c]                            |     *((r4 + 0x2c)) = r3;
                                                             |     if (r3 > 0) {
    0x00093a24 bgt 0x9398c                                   |         goto label_30;
                                                             |     }
    0x00093a28 b 0x927a4                                     |     goto label_0;
                                                             | label_82:
    0x00093a2c mov r0, fp                                    |     r0 = fp;
    0x00093a30 bl 0x151e8                                    |     r0 = strchrnul ();
    0x00093a34 ldrb r3, [r0]                                 |     r3 = *(r0);
    0x00093a38 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00093a3c beq 0x93a14                                   |         goto label_31;
                                                             |     }
    0x00093a40 mov r3, 4                                     |     r3 = 4;
    0x00093a44 b 0x93a00                                     |     goto label_32;
    0x00093a48 bic sl, r5, 0x20                              |     sl = BIT_MASK (r5, 0x20);
    0x00093a4c subs sl, sl, 0x59                             |     sl -= 0x59;
                                                             |     if (sl == sl) {
    0x00093a50 movne sl, 1                                   |         sl = 1;
                                                             |     }
    0x00093a54 cmp r5, 0x59                                  |     
                                                             |     if (r5 != 0x59) {
    0x00093a58 moveq r8, 0x79                                |         r8 = 0x79;
                                                             |     }
                                                             |     if (r5 != 0x59) {
    0x00093a5c beq 0x93a68                                   |         
    0x00093a60 bl 0x90bc4                                    |         r0 = fcn_00090bc4 ();
    0x00093a64 mov r8, r0                                    |         r8 = r0;
                                                             |     }
    0x00093a68 and r2, r8, 0xff                              |     r2 = r8 & 0xff;
    0x00093a6c add r1, sp, 0x18                              |     r1 += var_18h;
    0x00093a70 add r0, sp, 0x14                              |     r0 += var_14h;
    0x00093a74 bl 0x93e64                                    |     fcn_00093e64 (r0, r1);
    0x00093a78 mov r1, 0                                     |     r1 = 0;
    0x00093a7c mov sb, r0                                    |     sb = r0;
    0x00093a80 mov r0, r1                                    |     r0 = r1;
    0x00093a84 bl 0x90a84                                    |     fcn_00090a84 (r0, r1);
    0x00093a88 cmp r8, 0x1b                                  |     
                                                             |     if (r8 == 0x1b) {
    0x00093a8c beq 0x93bcc                                   |         goto label_83;
                                                             |     }
    0x00093a90 mov r1, r8                                    |     r1 = r8;
    0x00093a94 ldr r0, [pc, -0x39c]                          |     r0 = "________._:_________";
    0x00093a98 bl 0x1517c                                    |     r0 = strchr ("________._:_________", r1);
    0x00093a9c subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 == r0) {
    0x00093aa0 beq 0x93b0c                                   |         goto label_84;
                                                             |     }
    0x00093aa4 cmp r5, 0x63                                  |     
                                                             |     if (r5 == 0x63) {
    0x00093aa8 beq 0x93af4                                   |         goto label_85;
                                                             |     }
                                                             |     do {
                                                             | label_33:
    0x00093aac mov r3, 1                                     |         r3 = 1;
    0x00093ab0 str r3, [sp]                                  |         *(sp) = r3;
    0x00093ab4 mov r2, sb                                    |         r2 = sb;
    0x00093ab8 mov r3, sl                                    |         r3 = sl;
    0x00093abc ldr r1, [sp, 0x18]                            |         r1 = var_18h;
    0x00093ac0 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x00093ac4 bl 0x8febc                                    |         fcn_0008febc (r0, r1, r2);
    0x00093ac8 str r0, [r4, 8]                               |         *((r4 + 8)) = r0;
                                                             | label_36:
    0x00093acc mov r0, 0                                     |         r0 = 0;
    0x00093ad0 b 0x93b58                                     |         goto label_35;
                                                             | label_34:
    0x00093ad4 ldr r2, [r4]                                  |         r2 = *(r4);
    0x00093ad8 cmp r2, r3                                    |         
    0x00093adc bhs 0x93aac                                   |         
                                                             |     } while (r2 >= r3);
    0x00093ae0 ldrb r2, [r3, -1]                             |     r2 = *((r3 - 1));
    0x00093ae4 cmp r2, 0xa                                   |     
                                                             |     if (r2 == 0xa) {
    0x00093ae8 beq 0x93aac                                   |         goto label_33;
                                                             |     }
    0x00093aec sub r3, r3, 1                                 |     r3--;
    0x00093af0 str r3, [sp, 0x18]                            |     var_18h = r3;
                                                             | label_85:
    0x00093af4 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x00093af8 ldrb r2, [r3]                                 |     r2 = *(r3);
    0x00093afc cmp r2, 9                                     |     
    0x00093b00 cmpne r2, 0x20                                |     __asm ("cmpne r2, 0x20");
                                                             |     if (r2 == 9) {
    0x00093b04 beq 0x93ad4                                   |         goto label_34;
                                                             |     }
    0x00093b08 b 0x93aac                                     |     goto label_33;
                                                             | label_84:
    0x00093b0c mov r1, r8                                    |     r1 = r8;
    0x00093b10 ldr r0, [pc, -0x414]                          |     r0 = "^0bBeEft%$ lh\b";
    0x00093b14 bl 0x1517c                                    |     r0 = strchr ("^0bBeEft%$ lh\b", r1);
    0x00093b18 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00093b1c bne 0x93aac                                   |         goto label_33;
                                                             |     }
    0x00093b20 mov r1, r8                                    |     r1 = r8;
    0x00093b24 ldr r0, [pc, -0x424]                          |     r0 = "cdykjHL+-{}\r\n";
    0x00093b28 bl 0x1517c                                    |     r0 = strchr ("cdykjHL+-{}\r\n", r1);
    0x00093b2c subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 == r0) {
    0x00093b30 beq 0x93bb4                                   |         goto label_86;
                                                             |     }
    0x00093b34 mov r7, 1                                     |     r7 = 1;
    0x00093b38 str r7, [sp]                                  |     *(sp) = r7;
    0x00093b3c mov r3, sl                                    |     r3 = sl;
    0x00093b40 mov r2, sb                                    |     r2 = sb;
    0x00093b44 ldr r1, [sp, 0x18]                            |     r1 = var_18h;
    0x00093b48 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x00093b4c bl 0x8febc                                    |     fcn_0008febc (r0, r1, r2);
    0x00093b50 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
    0x00093b54 mov r0, r7                                    |     r0 = r7;
                                                             | label_35:
    0x00093b58 cmp sb, 0                                     |     
                                                             |     if (sb != 0) {
    0x00093b5c moveq r0, 0                                   |         r0 = 0;
                                                             |     }
    0x00093b60 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00093b64 beq 0x93bfc                                   |         goto label_87;
                                                             |     }
    0x00093b68 cmp r5, 0x63                                  |     
                                                             |     if (r5 != 0x63) {
    0x00093b6c bne 0x93bd4                                   |         goto label_88;
                                                             |     }
    0x00093b70 mov r2, 2                                     |     r2 = 2;
    0x00093b74 mov r1, 0xa                                   |     r1 = 0xa;
    0x00093b78 ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x00093b7c bl 0x916e4                                    |     fcn_000916e4 (r0, r1);
    0x00093b80 ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x00093b84 sub r3, r3, 1                                 |     r3--;
    0x00093b88 cmp r0, r3                                    |     
    0x00093b8c str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
                                                             |     if (r0 != r3) {
    0x00093b90 beq 0x93b98                                   |         
    0x00093b94 bl 0x90518                                    |         fcn_00090518 ();
                                                             |     }
    0x00093b98 cmp r8, 0x1b                                  |     
                                                             |     if (r8 == 0x1b) {
    0x00093b9c beq 0x927a4                                   |         goto label_0;
                                                             |     }
                                                             | label_37:
    0x00093ba0 ldr r1, [pc, -0x49c]                          |     r1 = "Change";
    0x00093ba4 add r0, sp, 0x1c                              |     r0 += dest;
    0x00093ba8 bl 0x142f4                                    |     strcpy (r0, "Change")
    0x00093bac mov r5, 0x63                                  |     r5 = 0x63;
    0x00093bb0 b 0x93508                                     |     goto label_21;
                                                             | label_86:
    0x00093bb4 mov r8, 0x1b                                  |     r8 = 0x1b;
    0x00093bb8 bl 0x9163c                                    |     fcn_0009163c ();
    0x00093bbc mov sb, r7                                    |     sb = r7;
    0x00093bc0 mov r0, r7                                    |     r0 = r7;
    0x00093bc4 mov r5, r8                                    |     r5 = r8;
    0x00093bc8 b 0x93b58                                     |     goto label_35;
                                                             | label_83:
    0x00093bcc mov r5, r8                                    |     r5 = r8;
    0x00093bd0 b 0x93acc                                     |     goto label_36;
                                                             | label_88:
    0x00093bd4 cmp r5, 0x64                                  |     
                                                             |     if (r5 != 0x64) {
    0x00093bd8 bne 0x93e58                                   |         goto label_89;
                                                             |     }
    0x00093bdc bl 0x905bc                                    |     fcn_000905bc ();
    0x00093be0 bl 0x8f8c8                                    |     fcn_0008f8c8 ();
    0x00093be4 cmp r8, 0x1b                                  |     
                                                             |     if (r8 == 0x1b) {
    0x00093be8 beq 0x927a4                                   |         goto label_0;
                                                             |     }
                                                             | label_38:
    0x00093bec ldr r1, [pc, -0x4e4]                          |     r1 = "Delete";
    0x00093bf0 add r0, sp, 0x1c                              |     r0 += dest;
    0x00093bf4 bl 0x142f4                                    |     strcpy (r0, "Delete")
    0x00093bf8 b 0x93c14                                     |     goto label_43;
                                                             | label_87:
    0x00093bfc cmp r8, 0x1b                                  |     
                                                             |     if (r8 == 0x1b) {
    0x00093c00 beq 0x927a4                                   |         goto label_0;
                                                             |     }
    0x00093c04 cmp r5, 0x63                                  |     
                                                             |     if (r5 == 0x63) {
    0x00093c08 beq 0x93ba0                                   |         goto label_37;
                                                             |     }
    0x00093c0c cmp r5, 0x64                                  |     
                                                             |     if (r5 == 0x64) {
    0x00093c10 beq 0x93bec                                   |         goto label_38;
                                                             |     }
                                                             | label_43:
    0x00093c14 bic r3, r5, 0x20                              |     r3 = BIT_MASK (r5, 0x20);
    0x00093c18 cmp r3, 0x59                                  |     
                                                             |     if (r3 == 0x59) {
    0x00093c1c bne 0x93c2c                                   |         
    0x00093c20 ldr r1, [pc, -0x514]                          |         r1 = "Yank";
    0x00093c24 add r0, sp, 0x1c                              |         r0 += dest;
    0x00093c28 bl 0x142f4                                    |         strcpy (r0, "Yank")
                                                             |     }
    0x00093c2c ldr r3, [r4, 0x90]                            |     r3 = *((r4 + 0x90));
    0x00093c30 mov r7, 0                                     |     r7 = 0;
    0x00093c34 add r3, r3, 0x26                              |     r3 += 0x26;
    0x00093c38 ldr r4, [r4, r3, lsl 2]                       |     offset_8 = r3 << 2;
                                                             |     r4 = *((r4 + offset_8));
    0x00093c3c mov r0, r4                                    |     r0 = r4;
    0x00093c40 str r4, [sp, 0x14]                            |     var_14h = r4;
    0x00093c44 bl 0x1514c                                    |     r0 = strlen (r0);
    0x00093c48 add r0, r4, r0                                |     r0 = r4 + r0;
    0x00093c4c str r0, [sp, 0x18]                            |     var_18h = r0;
                                                             |     do {
    0x00093c50 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x00093c54 cmp r0, r3                                    |         
                                                             |         if (r0 < r3) {
    0x00093c58 bhs 0x93c88                                   |             
    0x00093c5c mov r0, r4                                    |             r0 = r4;
    0x00093c60 bl 0x1514c                                    |             r0 = strlen (r0);
    0x00093c64 mov r2, r0                                    |             r2 = r0;
    0x00093c68 bl 0x8f940                                    |             fcn_0008f940 ();
    0x00093c6c add r1, sp, 0x1c                              |             r1 += dest;
    0x00093c70 str r0, [sp]                                  |             *(sp) = r0;
    0x00093c74 mov r3, r2                                    |             r3 = r2;
    0x00093c78 ldr r0, [pc, -0x568]                          |             r0 = "%s %d lines (%d chars) using [%c]";
    0x00093c7c mov r2, r7                                    |             r2 = r7;
    0x00093c80 bl 0x9017c                                    |             fcn_0009017c ();
    0x00093c84 b 0x92c14                                     |             goto label_5;
                                                             |         }
    0x00093c88 ldrb r2, [r3]                                 |         r2 = *(r3);
    0x00093c8c add r3, r3, 1                                 |         r3++;
    0x00093c90 cmp r2, 0xa                                   |         
                                                             |         if (r2 != 0xa) {
    0x00093c94 addeq r7, r7, 1                               |             r7++;
                                                             |         }
    0x00093c98 str r3, [sp, 0x14]                            |         var_14h = r3;
    0x00093c9c b 0x93c50                                     |         
                                                             |     } while (1);
                                                             |     do {
    0x00093ca0 bl 0x90518                                    |         fcn_00090518 ();
    0x00093ca4 ldr r3, [r4, 0x44]                            |         r3 = *((r4 + 0x44));
    0x00093ca8 ldr r1, [r4, 0x40]                            |         r1 = *((r4 + 0x40));
    0x00093cac ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00093cb0 add r1, r1, r3                                |         r1 += r3;
    0x00093cb4 bl 0x9053c                                    |         fcn_0009053c (r0, r1);
    0x00093cb8 ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x00093cbc sub r3, r3, 1                                 |         r3--;
    0x00093cc0 cmp r3, 0                                     |         
    0x00093cc4 str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x00093cc8 str r0, [r4, 8]                               |         *((r4 + 8)) = r0;
    0x00093ccc bgt 0x93ca0                                   |         
                                                             |     } while (r3 > 0);
    0x00093cd0 b 0x927a4                                     |     goto label_0;
    0x00093cd4 bl 0x90bc4                                    |     r0 = fcn_00090bc4 ();
    0x00093cd8 mov r7, r0                                    |     r7 = r0;
    0x00093cdc ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x00093ce0 ldrb r3, [r0]                                 |     r3 = *(r0);
    0x00093ce4 cmp r3, 0xa                                   |     
                                                             |     if (r3 == 0xa) {
    0x00093ce8 beq 0x92c14                                   |         goto label_5;
                                                             |     }
    0x00093cec mov r2, 1                                     |     r2 = 1;
    0x00093cf0 mov r1, r2                                    |     r1 = r2;
    0x00093cf4 bl 0x8fc54                                    |     fcn_0008fc54 (r0, r1);
    0x00093cf8 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x00093cfc mov r2, 2                                     |     r2 = 2;
    0x00093d00 strb r7, [r3]                                 |     *(r3) = r7;
    0x00093d04 mov r1, 1                                     |     r1 = 1;
    0x00093d08 ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x00093d0c bl 0x8fc54                                    |     fcn_0008fc54 (r0, r1);
    0x00093d10 b 0x92c14                                     |     goto label_5;
    0x00093d14 bl 0x90bc4                                    |     fcn_00090bc4 ();
    0x00093d18 str r0, [r4, 0x64]                            |     *((r4 + 0x64)) = r0;
    0x00093d1c mov r0, 0x3b                                  |     r0 = 0x3b;
    0x00093d20 bl 0x926e4                                    |     fcn_000926e4 (r0);
    0x00093d24 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x00093d28 ldrb r2, [r3]                                 |     r2 = *(r3);
    0x00093d2c ldr r3, [r4, 0x64]                            |     r3 = *((r4 + 0x64));
    0x00093d30 cmp r2, r3                                    |     
                                                             |     if (r2 == r3) {
    0x00093d34 bne 0x93d3c                                   |         
    0x00093d38 bl 0x8ffa8                                    |         fcn_0008ffa8 ();
                                                             |     }
    0x00093d3c mov r3, 0                                     |     r3 = 0;
    0x00093d40 str r3, [r4, 0x64]                            |     *((r4 + 0x64)) = r3;
    0x00093d44 b 0x927a4                                     |     goto label_0;
                                                             | label_52:
    0x00093d48 mov r0, r7                                    |     r0 = r7;
    0x00093d4c bl 0x151e8                                    |     r0 = strchrnul ();
    0x00093d50 ldrb r3, [r0]                                 |     r3 = *(r0);
    0x00093d54 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00093d58 beq 0x92b50                                   |         goto label_39;
                                                             |     }
    0x00093d5c mov r3, 4                                     |     r3 = 4;
    0x00093d60 b 0x92b3c                                     |     goto label_40;
    0x00093d64 bl 0x90bc4                                    |     r0 = fcn_00090bc4 ();
    0x00093d68 cmp r0, 0x2e                                  |     
                                                             |     if (r0 != 0x2e) {
    0x00093d6c ldreq r7, [r4, 0x30]                          |         r7 = *((r4 + 0x30));
                                                             |     }
                                                             |     if (r0 != 0x2e) {
    0x00093d70 subeq r7, r7, 2                               |         r7 -= 2;
                                                             |     }
                                                             |     if (r0 != 0x2e) {
    0x00093d74 lsreq r7, r7, 1                               |         r7 >>= 1;
                                                             |     }
                                                             |     if (r0 != 0x2e) {
    0x00093d78 beq 0x93d8c                                   |         
    0x00093d7c cmp r0, 0x2d                                  |         
                                                             |         if (r0 != 0x2d) {
    0x00093d80 ldreq r7, [r4, 0x30]                          |             r7 = *((r4 + 0x30));
                                                             |         }
                                                             |         if (r0 == 0x2d) {
    0x00093d84 movne r7, 0                                   |             r7 = 0;
                                                             |         }
                                                             |         if (r0 == 0x2d) {
    0x00093d88 subeq r7, r7, 2                               |             r7 -= 2;
                                                             |             goto label_90;
                                                             |         }
                                                             |     }
                                                             | label_90:
    0x00093d8c ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x00093d90 bl 0x904a4                                    |     fcn_000904a4 (r0);
    0x00093d94 mvn r1, 0                                     |     r1 = ~0;
    0x00093d98 str r0, [r4, 0x54]                            |     *((r4 + 0x54)) = r0;
    0x00093d9c mov r0, r7                                    |     r0 = r7;
    0x00093da0 b 0x92c3c                                     |     goto label_2;
    0x00093da4 ldr r1, [r4, 0x2c]                            |     r1 = *((r4 + 0x2c));
    0x00093da8 ldr r0, [r4, 8]                               |     r0 = *((r4 + 8));
    0x00093dac sub r1, r1, 1                                 |     r1--;
    0x00093db0 bl 0x9053c                                    |     fcn_0009053c (r0, r1);
    0x00093db4 b 0x928c8                                     |     goto label_15;
                                                             |     do {
    0x00093db8 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00093dbc ldrb r3, [r0]                                 |         r3 = *(r0);
    0x00093dc0 sub r2, r3, 0x61                              |         r2 = r3 - 0x61;
    0x00093dc4 cmp r2, 0x19                                  |         
                                                             |         if (r2 > 0x19) {
    0x00093dc8 bhi 0x93e20                                   |             goto label_91;
                                                             |         }
    0x00093dcc mov r2, 1                                     |         r2 = 1;
    0x00093dd0 mov r1, r2                                    |         r1 = r2;
    0x00093dd4 bl 0x8fc54                                    |         fcn_0008fc54 (r0, r1);
    0x00093dd8 ldr r2, [r4, 8]                               |         r2 = *((r4 + 8));
    0x00093ddc ldrb r3, [r2]                                 |         r3 = *(r2);
    0x00093de0 sub r1, r3, 0x61                              |         r1 = r3 - 0x61;
    0x00093de4 cmp r1, 0x19                                  |         
                                                             |         if (r1 > 0x19) {
    0x00093de8 subls r3, r3, 0x20                            |             r3 -= 0x20;
                                                             |         }
                                                             |         if (r1 < 0x19) {
    0x00093dec bls 0x93e50                                   |             goto label_92;
                                                             |         }
                                                             | label_42:
    0x00093df0 strb r3, [r2]                                 |         *(r2) = r3;
    0x00093df4 mov r1, 1                                     |         r1 = 1;
    0x00093df8 mov r2, 2                                     |         r2 = 2;
    0x00093dfc ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x00093e00 bl 0x8fc54                                    |         r0 = fcn_0008fc54 (r0, r1);
                                                             | label_41:
    0x00093e04 bl 0x8ffe0                                    |         fcn_0008ffe0 ();
    0x00093e08 ldr r3, [r4, 0x2c]                            |         r3 = *((r4 + 0x2c));
    0x00093e0c sub r3, r3, 1                                 |         r3--;
    0x00093e10 cmp r3, 0                                     |         
    0x00093e14 str r3, [r4, 0x2c]                            |         *((r4 + 0x2c)) = r3;
    0x00093e18 bgt 0x93db8                                   |         
                                                             |     } while (r3 > 0);
    0x00093e1c b 0x92c14                                     |     goto label_5;
                                                             | label_91:
    0x00093e20 sub r3, r3, 0x41                              |     r3 -= 0x41;
    0x00093e24 cmp r3, 0x19                                  |     
                                                             |     if (r3 > 0x19) {
    0x00093e28 bhi 0x93e04                                   |         goto label_41;
                                                             |     }
    0x00093e2c mov r2, 1                                     |     r2 = 1;
    0x00093e30 mov r1, r2                                    |     r1 = r2;
    0x00093e34 bl 0x8fc54                                    |     fcn_0008fc54 (r0, r1);
    0x00093e38 ldr r2, [r4, 8]                               |     r2 = *((r4 + 8));
    0x00093e3c ldrb r3, [r2]                                 |     r3 = *(r2);
    0x00093e40 sub r1, r3, 0x41                              |     r1 = r3 - 0x41;
    0x00093e44 cmp r1, 0x19                                  |     
                                                             |     if (r1 > 0x19) {
    0x00093e48 bhi 0x93df0                                   |         goto label_42;
                                                             |     }
    0x00093e4c add r3, r3, 0x20                              |     r3 += 0x20;
                                                             | label_92:
    0x00093e50 and r3, r3, 0xff                              |     r3 &= 0xff;
    0x00093e54 b 0x93df0                                     |     goto label_42;
                                                             | label_89:
    0x00093e58 cmp r8, 0x1b                                  |     
                                                             |     if (r8 != 0x1b) {
    0x00093e5c bne 0x93c14                                   |         goto label_43;
                                                             |     }
    0x00093e60 b 0x927a4                                     |     goto label_0;
                                                             | }
    ; 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 @ 0x974a4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.000974a4 ()              | void fcn_000974a4 () {
                                         |     int32_t var_0h;
                                         |     int16_t var_8h_2;
                                         |     int32_t var_8h;
                                         |     int16_t var_28h_2;
                                         |     int32_t var_28h;
                                         |     char * dest;
                                         |     int32_t var_4ch_2;
                                         |     int32_t var_4ch;
                                         |     int32_t var_154h_2;
                                         |     int32_t var_154h;
                                         |     int32_t var_180h_2;
                                         |     int32_t var_180h;
                                         |     int32_t var_82h;
                                         |     int32_t var_30ch;
    0x000974a4 str lr, [sp, -4]!         |     
    0x000974a8 sub sp, sp, 0x30c         |     
    0x000974ac mov r2, 0x180             |     r2 = 0x180;
    0x000974b0 mov r1, 0                 |     r1 = 0;
    0x000974b4 mov r0, sp                |     r0 = sp;
    0x000974b8 bl 0x14d98                |     memset (r0, r1, r2);
    0x000974bc mov r0, 0                 |     r0 = 0;
    0x000974c0 bl 0x14e40                |     time (r0);
    0x000974c4 ldr r1, [pc, 0x4c]        |     r1 = *(0x97514);
    0x000974c8 str r0, [sp, 0x154]       |     var_154h = r0;
    0x000974cc add r0, sp, 0x2c          |     r0 += dest;
    0x000974d0 bl 0x142f4                |     strcpy (r0, r1)
    0x000974d4 mov r3, 1                 |     r3 = 1;
    0x000974d8 strh r3, [sp]             |     *(sp) = r3;
    0x000974dc ldr r3, [pc, 0x38]        |     r3 = *(0x97518);
    0x000974e0 add r0, sp, 0x180         |     r0 += var_180h;
    0x000974e4 strh r3, [sp, 0x28]       |     var_28h = r3;
    0x000974e8 strh r3, [sp, 8]          |     var_8h = r3;
    0x000974ec bl 0x1493c                |     uname ();
    0x000974f0 add r3, sp, 0x180         |     r3 += var_180h;
    0x000974f4 add r1, r3, 0x82          |     r1 += var_82h;
    0x000974f8 mov r2, 0x100             |     r2 = 0x100;
    0x000974fc add r0, sp, 0x4c          |     r0 += var_4ch;
    0x00097500 bl 0xa40f4                |     fcn_000a40f4 (r0);
    0x00097504 mov r1, sp                |     r1 = sp;
    0x00097508 ldr r0, [pc, 0x10]        |     r0 = *(0x9751c);
    0x0009750c bl 0x145a0                |     updwtmpx ();
    0x00097510 add sp, sp, 0x30c         |     
    0x00097514 pop {pc}                  |     
                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x976f4 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.000976f4 ()                      | void fcn_000976f4 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x000976f4 push {r4, r5, r6, r7, r8, lr}     |     
    0x000976f8 ldr r5, [pc, 0xc0]                |     r5 = *(0x977bc);
    0x000976fc mov r8, r0                        |     r8 = r0;
    0x00097700 ldrb r3, [r5, 1]                  |     r3 = *((r5 + 1));
    0x00097704 ldrb r4, [r5]                     |     r4 = *(r5);
    0x00097708 mov r6, r1                        |     r6 = r1;
    0x0009770c orr r4, r4, r3, lsl 8             |     r4 |= (r3 << 8);
    0x00097710 ldrb r3, [r5, 2]                  |     r3 = *((r5 + 2));
    0x00097714 mov r7, r2                        |     r7 = r2;
    0x00097718 orr r4, r4, r3, lsl 16            |     r4 |= (r3 << 16);
    0x0009771c ldrb r3, [r5, 3]                  |     r3 = *((r5 + 3));
    0x00097720 orr r4, r4, r3, lsl 24            |     r4 |= (r3 << 24);
                                                 | label_0:
    0x00097724 cmp r4, 0                         |     
                                                 |     if (r4 == 0) {
    0x00097728 bne 0x97744                       |         
    0x0009772c mov r0, r6                        |         r0 = r6;
    0x00097730 bl 0x1514c                        |         r0 = strlen (r0);
    0x00097734 add r0, r0, 0x2c                  |         r0 += 0x2c;
    0x00097738 bl 0x189b8                        |         r0 = fcn_000189b8 (r0);
    0x0009773c mov r4, r0                        |         r4 = r0;
    0x00097740 b 0x97784                         |         goto label_1;
                                                 |     }
    0x00097744 mov r1, r6                        |     r1 = r6;
    0x00097748 add r0, r4, 0x29                  |     r0 = r4 + 0x29;
    0x0009774c bl 0x14ed0                        |     r0 = strcmp (r0, r1);
    0x00097750 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x00097754 bne 0x977b4                       |         goto label_2;
                                                 |     }
    0x00097758 mov r1, r7                        |     r1 = r7;
    0x0009775c add r0, r4, 9                     |     r0 = r4 + 9;
    0x00097760 bl 0x14ed0                        |     r0 = strcmp (r0, r1);
    0x00097764 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x00097768 bne 0x977b4                       |         goto label_2;
                                                 |     }
    0x0009776c ldr r3, [r4]                      |     r3 = *(r4);
    0x00097770 str r3, [r5]                      |     *(r5) = r3;
                                                 |     do {
    0x00097774 ldr r3, [r5]                      |         r3 = *(r5);
    0x00097778 cmp r3, 0                         |         
                                                 |         if (r3 == 0) {
    0x0009777c bne 0x977ac                       |             
    0x00097780 str r3, [r4]                      |             *(r4) = r3;
                                                 | label_1:
    0x00097784 str r4, [r5]                      |             *(r5) = r4;
    0x00097788 mov r1, r6                        |             r1 = r6;
    0x0009778c strb r8, [r4, 8]                  |             *((r4 + 8)) = r8;
    0x00097790 add r0, r4, 0x29                  |             r0 = r4 + 0x29;
    0x00097794 bl 0x142f4                        |             strcpy (r0, r1)
    0x00097798 mov r1, r7                        |             r1 = r7;
    0x0009779c add r0, r4, 9                     |             r0 = r4 + 9;
    0x000977a0 mov r2, 0x20                      |             r2 = 0x20;
    0x000977a4 pop {r4, r5, r6, r7, r8, lr}      |             
    0x000977a8 b 0xa40f4                         |             void (*0xa40f4)() ();
                                                 |         }
    0x000977ac mov r5, r3                        |         r5 = r3;
    0x000977b0 b 0x97774                         |         
                                                 |     } while (1);
                                                 | label_2:
    0x000977b4 mov r5, r4                        |     r5 = r4;
    0x000977b8 ldr r4, [r4]                      |     r4 = *(r4);
    0x000977bc b 0x97724                         |     goto label_0;
                                                 | }
    ; 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 @ 0x97bec */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00097bec ()                                      | void fcn_00097bec (int32_t arg1) {
                                                                 |     int32_t var_24h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_20h_2;
                                                                 |     int32_t var_20h;
                                                                 |     r0 = arg1;
    0x00097bec push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x00097bf0 add fp, sp, 0x20                                  |     
    0x00097bf4 sub sp, sp, 0xc                                   |     
    0x00097bf8 mov r7, r0                                        |     r7 = r0;
    0x00097bfc bl 0x1514c                                        |     strlen (r0);
    0x00097c00 ldrb sb, [r7]                                     |     sb = *(r7);
    0x00097c04 ldr r1, [pc, 0x100]                               |     r1 = *(0x97d08);
    0x00097c08 sub r4, sb, 0x2d                                  |     r4 = sb - 0x2d;
    0x00097c0c clz r4, r4                                        |     r4 &= r4;
    0x00097c10 lsr r4, r4, 5                                     |     r4 >>= 5;
    0x00097c14 add sl, r7, r4                                    |     sl = r7 + r4;
    0x00097c18 add r3, r0, 8                                     |     r3 = r0 + 8;
    0x00097c1c lsr r3, r3, 1                                     |     r3 >>= 1;
    0x00097c20 add r0, r0, 0xf                                   |     r0 += 0xf;
    0x00097c24 lsl r3, r3, 2                                     |     r3 <<= 2;
    0x00097c28 bic r0, r0, 7                                     |     r0 = BIT_MASK (r0, 7);
    0x00097c2c add r3, r3, 0xa                                   |     r3 += 0xa;
    0x00097c30 sub sp, sp, r0                                    |     
    0x00097c34 bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x00097c38 mov r8, sp                                        |     r8 = sp;
    0x00097c3c mov r0, sl                                        |     r0 = sl;
    0x00097c40 sub sp, sp, r3                                    |     
    0x00097c44 bl 0x15278                                        |     strpbrk (r0, r1);
    0x00097c48 mov r5, sp                                        |     r5 = sp;
    0x00097c4c subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 == r0) {
    0x00097c50 beq 0x97cc4                                       |         goto label_1;
                                                                 |     }
    0x00097c54 mov r2, sl                                        |     r2 = sl;
    0x00097c58 ldr r1, [pc, 0xb0]                                |     r1 = "~`!$^&*()=|\\{}[];\"'<>?";
    0x00097c5c mov r0, r8                                        |     r0 = r8;
    0x00097c60 bl 0x14f48                                        |     sprintf (r0, "~`!$^&*()=|\\{}[];\"'<>?", r2);
    0x00097c64 ldr r3, [pc, 0xa8]                                |     r3 = "exec__s";
    0x00097c68 cmp sb, 0x2d                                      |     
    0x00097c6c add r4, r3, 1                                     |     r4 = r3 + 1;
                                                                 |     if (sb == 0x2d) {
    0x00097c70 movne r3, r4                                      |         r3 = r4;
                                                                 |     }
    0x00097c74 str r3, [r5]                                      |     *(r5) = r3;
    0x00097c78 ldr r3, [pc, 0x98]                                |     r3 = "__bin_sh";
    0x00097c7c stmib r5, {r3, r8}                                |     __asm ("stmib r5, {r3, r8}");
    0x00097c80 mov r3, 0                                         |     r3 = 0;
    0x00097c84 str r3, [r5, 0xc]                                 |     *((r5 + 0xc)) = r3;
                                                                 |     do {
    0x00097c88 cmp sb, 0x2d                                      |         
                                                                 |         if (sb == 0x2d) {
    0x00097c8c bne 0x97ca0                                       |             
    0x00097c90 mov r2, 0                                         |             r2 = 0;
    0x00097c94 ldr r1, [pc, 0x80]                                |             r1 = "_c";
    0x00097c98 mov r0, r2                                        |             r0 = r2;
    0x00097c9c bl 0x14330                                        |             ioctl (r0, "_c");
                                                                 |         }
    0x00097ca0 mov r1, r5                                        |         r1 = r5;
    0x00097ca4 mov r0, r4                                        |         r0 = r4;
    0x00097ca8 bl 0x15194                                        |         execvp ();
    0x00097cac mov r2, r4                                        |         r2 = r4;
    0x00097cb0 ldr r1, [pc, 0x68]                                |         r1 = *(0x97d1c);
    0x00097cb4 mov r0, 3                                         |         r0 = 3;
    0x00097cb8 bl 0x978f4                                        |         fcn_000978f4 (r0);
    0x00097cbc sub sp, fp, 0x20                                  |         
    0x00097cc0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_1:
    0x00097cc4 mov r1, r7                                        |         r1 = r7;
    0x00097cc8 mov r0, r8                                        |         r0 = r8;
    0x00097ccc bl 0x142f4                                        |         strcpy (r0, r1)
    0x00097cd0 ldr r8, [pc, 0x4c]                                |         r8 = "cant_run__s:__m";
    0x00097cd4 sub r7, fp, 0x24                                  |         r7 -= var_24h;
    0x00097cd8 add r4, r0, r4                                    |         r4 = r0 + r4;
    0x00097cdc str r0, [r7, -4]!                                 |         *((r7 -= 4)) = r0;
                                                                 | label_0:
    0x00097ce0 mov r1, r8                                        |         r1 = r8;
    0x00097ce4 mov r0, r7                                        |         r0 = r7;
    0x00097ce8 bl 0x14fb4                                        |         r0 = strsep ();
    0x00097cec cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00097cf0 streq r0, [r5, r6, lsl 2]                         |             offset_0 = r6 << 2;
                                                                 |             *((r5 + offset_0)) = r0;
                                                                 |         }
    0x00097cf4 beq 0x97c88                                       |         
                                                                 |     } while (r0 == 0);
    0x00097cf8 ldrb r3, [r0]                                     |     r3 = *(r0);
    0x00097cfc cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00097d00 strne r0, [r5, r6, lsl 2]                         |         offset_1 = r6 << 2;
                                                                 |         *((r5 + offset_1)) = r0;
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x00097d04 addne r6, r6, 1                                   |         r6++;
                                                                 |     }
    0x00097d08 b 0x97ce0                                         |     goto label_0;
                                                                 | }
    ; 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 @ 0x9ae3c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0009ae3c ()                      | void fcn_0009ae3c () {
                                                 |     int32_t var_0h;
                                                 |     int32_t var_10h_2;
                                                 |     int32_t var_10h;
                                                 |     int32_t var_20h_2;
                                                 |     int32_t var_20h;
                                                 |     int32_t var_68h;
                                                 |     int32_t var_68h_2;
                                                 |     int32_t var_70h_2;
                                                 |     char * dest;
                                                 |     int32_t var_174h;
    0x0009ae3c str lr, [sp, -4]!                 |     
    0x0009ae40 sub sp, sp, 0x174                 |     
    0x0009ae44 mov r1, sp                        |     r1 = sp;
    0x0009ae48 bl 0x14420                        |     r0 = stat64 ();
    0x0009ae4c cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0009ae50 movne r0, 0                       |         r0 = 0;
                                                 |     }
                                                 |     if (r0 != 0) {
    0x0009ae54 bne 0x9ae84                       |         goto label_0;
                                                 |     }
    0x0009ae58 ldr r3, [sp, 0x10]                |     r3 = var_10h;
    0x0009ae5c and r3, r3, 0xf000                |     r3 &= 0xf000;
    0x0009ae60 cmp r3, 0x6000                    |     
                                                 |     if (r3 != 0x6000) {
    0x0009ae64 bne 0x9ae8c                       |         goto label_1;
                                                 |     }
    0x0009ae68 ldrd r2, r3, [sp, 0x20]           |     __asm ("ldrd r2, r3, [var_20h]");
                                                 |     do {
    0x0009ae6c ldr r1, [pc, 0x20]                |         r1 = *(0x9ae90);
    0x0009ae70 add r0, sp, 0x70                  |         r0 += dest;
    0x0009ae74 strd r2, r3, [sp, 0x68]           |         __asm ("strd r2, r3, [var_68h]");
    0x0009ae78 bl 0x142f4                        |         strcpy (r0, r1)
    0x0009ae7c mov r0, sp                        |         r0 = sp;
    0x0009ae80 bl 0x9ad38                        |         fcn_0009ad38 (r0);
                                                 | label_0:
    0x0009ae84 add sp, sp, 0x174                 |         
    0x0009ae88 pop {pc}                          |         
                                                 | label_1:
    0x0009ae8c ldrd r2, r3, [sp]                 |         __asm ("ldrd r2, r3, [sp]");
    0x0009ae90 b 0x9ae6c                         |         
                                                 |     } while (1);
                                                 | }
    ; 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 @ 0x9b260 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0009b260 ()                                      | void fcn_0009b260 (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_460h;
                                                                 |     int32_t var_45ch;
                                                                 |     int32_t var_458h;
                                                                 |     int32_t var_454h;
                                                                 |     int32_t var_450h;
                                                                 |     int32_t var_44ch;
                                                                 |     int32_t var_448h;
                                                                 |     int32_t var_440h;
                                                                 |     int32_t var_420h;
                                                                 |     int32_t var_0h;
                                                                 |     char * dest;
                                                                 |     int8_t var_0h_2;
                                                                 |     void * s;
                                                                 |     int32_t var_8h_3;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_18h_2;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_4h_2;
                                                                 |     int32_t var_20h_3;
                                                                 |     int32_t var_20h_2;
                                                                 |     int32_t var_20h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0009b260 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0009b264 add fp, sp, 0x20                                  |     
    0x0009b268 sub sb, fp, 0x440                                 |     sb = fp - 0x440;
    0x0009b26c sub sp, sp, 0x440                                 |     
    0x0009b270 sub sp, sp, 0xc                                   |     
    0x0009b274 sub sb, sb, 4                                     |     sb -= s;
    0x0009b278 mov r6, r1                                        |     r6 = r1;
    0x0009b27c mov r1, 0                                         |     r1 = 0;
    0x0009b280 str r0, [fp, -0x45c]                              |     var_45ch = r0;
    0x0009b284 mov r7, r2                                        |     r7 = r2;
    0x0009b288 mov r0, sb                                        |     r0 = sb;
    0x0009b28c mov r2, 0x420                                     |     r2 = 0x420;
    0x0009b290 mov r5, r3                                        |     r5 = r3;
    0x0009b294 bl 0x14d98                                        |     memset (r0, r1, r2);
    0x0009b298 mov r0, r6                                        |     r0 = r6;
    0x0009b29c bl 0x1514c                                        |     strlen (r0);
    0x0009b2a0 ldrb r3, [r6]                                     |     r3 = *(r6);
    0x0009b2a4 cmp r3, 0x5e                                      |     
                                                                 |     if (r3 != 0x5e) {
    0x0009b2a8 addeq r6, r6, 1                                   |         r6++;
                                                                 |     }
    0x0009b2ac ldrb r3, [r6]                                     |     r3 = *(r6);
                                                                 |     if (r3 == 0x5e) {
    0x0009b2b0 movne r4, 0                                       |         r4 = 0;
                                                                 |     }
    0x0009b2b4 str r3, [fp, -0x458]                              |     var_458h = r3;
                                                                 |     if (r3 != 0x5e) {
    0x0009b2b8 addeq r4, r6, r0                                  |         r4 = r6 + r0;
                                                                 |     }
    0x0009b2bc add r0, r0, 0xf                                   |     r0 += 0xf;
    0x0009b2c0 cmp r3, 0x21                                      |     
    0x0009b2c4 bic r0, r0, 7                                     |     r0 = BIT_MASK (r0, 7);
                                                                 |     if (r3 != 0x21) {
    0x0009b2c8 addeq r6, r6, 1                                   |         r6++;
                                                                 |     }
    0x0009b2cc sub sp, sp, r0                                    |     
    0x0009b2d0 mov r1, r6                                        |     r1 = r6;
    0x0009b2d4 add r0, sp, 8                                     |     r0 += dest;
    0x0009b2d8 bl 0x142f4                                        |     strcpy (r0, r1)
    0x0009b2dc mov r6, 0                                         |     r6 = 0;
    0x0009b2e0 ldrb r3, [r0]                                     |     r3 = *(r0);
    0x0009b2e4 str r0, [fp, -0x454]                              |     var_454h = r0;
    0x0009b2e8 sub r3, r3, 0x2b                                  |     r3 -= 0x2b;
    0x0009b2ec tst r3, 0xfd                                      |     
                                                                 |     if ((r3 & 0xfd) != 0) {
    0x0009b2f0 moveq r3, r0                                      |         r3 = r0;
                                                                 |     }
                                                                 |     if ((r3 & 0xfd) != 0) {
    0x0009b2f4 addeq r0, r3, 1                                   |         r0 = r3 + 1;
                                                                 |     }
                                                                 |     if ((r3 & 0xfd) == 0) {
    0x0009b2f8 ldrne r0, [fp, -0x454]                            |         r0 = var_454h;
                                                                 |     }
    0x0009b2fc sub r3, fp, 0x420                                 |     r3 -= var_420h;
    0x0009b300 sub r3, r3, 4                                     |     r3 -= var_4h_2;
    0x0009b304 str r3, [fp, -0x448]                              |     var_448h = r3;
    0x0009b308 mov r8, r3                                        |     r8 = r3;
    0x0009b30c mov r3, 1                                         |     r3 = 1;
                                                                 | label_0:
    0x0009b310 ldrb r2, [r0]                                     |     r2 = *(r0);
    0x0009b314 cmp r2, 0                                         |     
    0x0009b318 bne 0x9b338                                       |     
                                                                 |     while (r6 == 0x20) {
    0x0009b31c cmp r7, 0                                         |         
                                                                 |         if (r7 != 0) {
    0x0009b320 ldreq r3, [pc, 0x538]                             |             r3 = *((pc + 0x538));
                                                                 |         }
                                                                 |         if (r7 != 0) {
    0x0009b324 streq r3, [fp, -0x450]                            |             var_450h = r3;
                                                                 |         }
                                                                 |         if (r7 == 0) {
    0x0009b328 beq 0x9b428                                       |             goto label_1;
                                                                 |         }
    0x0009b32c mov sl, r7                                        |         sl = r7;
    0x0009b330 mov r8, 1                                         |         r8 = 1;
    0x0009b334 b 0x9b3d8                                         |         goto label_13;
    0x0009b338 cmp r6, 0x20                                      |         
    0x0009b33c beq 0x9b31c                                       |         
                                                                 |     }
    0x0009b340 strb r2, [r8, -0x20]                              |     s = r2;
    0x0009b344 lsl r2, r3, r6                                    |     r2 = r3 << r6;
    0x0009b348 str r2, [r8, -0x18]                               |     var_8h_2 = r2;
    0x0009b34c ldrb r2, [r0, 1]                                  |     r2 = *((r0 + 1));
    0x0009b350 add sl, r0, 1                                     |     sl = r0 + 1;
    0x0009b354 cmp r2, 0x3a                                      |     
                                                                 |     if (r2 != 0x3a) {
    0x0009b358 bne 0x9b3b4                                       |         goto label_14;
                                                                 |     }
    0x0009b35c ldr r1, [r5]                                      |     r1 = *(r5);
    0x0009b360 add r2, r5, 4                                     |     r2 = r5 + 4;
    0x0009b364 str r1, [r8, -8]                                  |     var_18h = r1;
    0x0009b368 ldrb r1, [r0, 2]                                  |     r1 = *((r0 + 2));
    0x0009b36c sub ip, r1, 0x2a                                  |     
    0x0009b370 cmp ip, 1                                         |     
                                                                 |     if (ip > 1) {
    0x0009b374 bhi 0x9b3a4                                       |         goto label_15;
                                                                 |     }
    0x0009b378 cmp r1, 0x2b                                      |     
                                                                 |     if (r1 == 0x2b) {
    0x0009b37c movne r1, 1                                       |         r1 = 1;
                                                                 |     }
                                                                 |     if (r1 != 0x2b) {
    0x0009b380 moveq r1, 2                                       |         r1 = 2;
                                                                 |     }
    0x0009b384 str r1, [r8, -0x1c]                               |     var_440h = r1;
    0x0009b388 add r1, r0, 3                                     |     r1 = r0 + 3;
    0x0009b38c add r0, r0, 2                                     |     r0 += 2;
    0x0009b390 str r3, [fp, -0x450]                              |     var_450h = r3;
    0x0009b394 str r2, [fp, -0x44c]                              |     var_44ch = r2;
    0x0009b398 bl 0xa410c                                        |     fcn_000a410c (r0, r1);
    0x0009b39c ldr r3, [fp, -0x450]                              |     r3 = var_450h;
    0x0009b3a0 ldr r2, [fp, -0x44c]                              |     r2 = var_44ch;
                                                                 |     do {
                                                                 | label_15:
    0x0009b3a4 ldrb r1, [sl, 1]!                                 |         r1 = *((sl += 1));
    0x0009b3a8 cmp r1, 0x3a                                      |         
    0x0009b3ac beq 0x9b3a4                                       |         
                                                                 |     } while (r1 == 0x3a);
    0x0009b3b0 mov r5, r2                                        |     r5 = r2;
                                                                 | label_14:
    0x0009b3b4 add r6, r6, 1                                     |     r6++;
    0x0009b3b8 add r8, r8, 0x20                                  |     r8 += var_20h_3;
    0x0009b3bc mov r0, sl                                        |     r0 = sl;
    0x0009b3c0 b 0x9b310                                         |     goto label_0;
                                                                 |     do {
    0x0009b3c4 mov r0, sl                                        |         r0 = sl;
    0x0009b3c8 bl 0x1514c                                        |         strlen (r0);
    0x0009b3cc add r8, r8, 1                                     |         r8++;
    0x0009b3d0 add r0, r0, 3                                     |         r0 += 3;
    0x0009b3d4 add sl, sl, r0                                    |         sl += r0;
                                                                 | label_13:
    0x0009b3d8 ldrb r1, [sl]                                     |         r1 = *(sl);
    0x0009b3dc cmp r1, 0                                         |         
    0x0009b3e0 bne 0x9b3c4                                       |         
                                                                 |     } while (r1 != 0);
    0x0009b3e4 lsl r2, r8, 4                                     |     r2 = r8 << 4;
    0x0009b3e8 add r3, r2, 8                                     |     r3 = r2 + 8;
    0x0009b3ec sub sp, sp, r3                                    |     
    0x0009b3f0 add r3, sp, 8                                     |     r3 += dest;
    0x0009b3f4 mov r0, r3                                        |     r0 = r3;
    0x0009b3f8 str r3, [fp, -0x450]                              |     var_450h = r3;
    0x0009b3fc bl 0x14d98                                        |     memset (r0, r1, r2);
    0x0009b400 ldr sl, [fp, -0x450]                              |     sl = var_450h;
                                                                 |     do {
    0x0009b404 subs r8, r8, 1                                    |         r8--;
    0x0009b408 add sl, sl, 0x10                                  |         sl += 0x10;
                                                                 |         if (r8 == r8) {
    0x0009b40c bne 0x9b458                                       |             
    0x0009b410 ldr r3, [fp, -0x450]                              |             r3 = var_450h;
    0x0009b414 mov r0, 1                                         |             r0 = 1;
    0x0009b418 add r3, r3, 0x10                                  |             r3 += 0x10;
                                                                 | label_3:
    0x0009b41c ldr r2, [r3, -0x10]                               |             r2 = *((r3 - 0x10));
    0x0009b420 cmp r2, 0                                         |             
                                                                 |             if (r2 != 0) {
    0x0009b424 bne 0x9b484                                       |                 goto label_16;
                                                                 |             }
                                                                 | label_1:
    0x0009b428 cmp r4, 0                                         |             
                                                                 |             if (r4 != 0) {
    0x0009b42c moveq r7, r4                                      |                 r7 = r4;
                                                                 |             }
    0x0009b430 mvn r8, 0                                         |             r8 = ~0;
                                                                 |             if (r4 != 0) {
    0x0009b434 streq r7, [fp, -0x44c]                            |                 var_44ch = r7;
                                                                 |             }
                                                                 |             if (r4 != 0) {
    0x0009b438 moveq r6, r7                                      |                 r6 = r7;
                                                                 |             }
                                                                 |             if (r4 == 0) {
    0x0009b43c beq 0x9b524                                       |                 goto label_17;
                                                                 |             }
    0x0009b440 mov r7, 0                                         |             r7 = 0;
    0x0009b444 sub sl, fp, 0x440                                 |             sl -= var_440h;
    0x0009b448 str r7, [fp, -0x44c]                              |             var_44ch = r7;
    0x0009b44c mov r6, r7                                        |             r6 = r7;
    0x0009b450 sub sl, sl, 4                                     |             sl -= s;
    0x0009b454 b 0x9b518                                         |             goto label_18;
                                                                 |         }
    0x0009b458 str r7, [sl, -0x10]                               |         *((sl - 0x10)) = r7;
    0x0009b45c mov r0, r7                                        |         r0 = r7;
    0x0009b460 bl 0x1514c                                        |         r0 = strlen (r0);
    0x0009b464 add r0, r0, 1                                     |         r0++;
    0x0009b468 add r3, r7, r0                                    |         r3 = r7 + r0;
    0x0009b46c ldrb r2, [r7, r0]                                 |         r2 = *((r7 + r0));
    0x0009b470 add r7, r3, 2                                     |         r7 = r3 + 2;
    0x0009b474 ldrb r3, [r3, 1]                                  |         r3 = *((r3 + 1));
    0x0009b478 str r2, [sl, -0xc]                                |         *((sl - 0xc)) = r2;
    0x0009b47c str r3, [sl, -4]                                  |         *((sl - 4)) = r3;
    0x0009b480 b 0x9b404                                         |         
                                                                 |     } while (1);
                                                                 | label_16:
    0x0009b484 ldr r2, [r3, -8]                                  |     r2 = *((r3 - 8));
    0x0009b488 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0009b48c bne 0x9b4e4                                       |         goto label_19;
                                                                 |     }
                                                                 | label_2:
    0x0009b490 ldrb r1, [sb, r2]                                 |     r1 = *((sb + r2));
    0x0009b494 add ip, sb, r2                                    |     
    0x0009b498 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x0009b49c bne 0x9b4d4                                       |         goto label_20;
                                                                 |     }
    0x0009b4a0 cmp r6, 0x1f                                      |     
                                                                 |     if (r6 > 0x1f) {
    0x0009b4a4 bgt 0x9b428                                       |         goto label_1;
                                                                 |     }
    0x0009b4a8 ldr r2, [r3, -4]                                  |     r2 = *((r3 - 4));
    0x0009b4ac strb r2, [ip]                                     |     *(ip) = r2;
    0x0009b4b0 lsl r2, r0, r6                                    |     r2 = r0 << r6;
    0x0009b4b4 str r2, [ip, 8]                                   |     var_8h_3 = r2;
    0x0009b4b8 ldr r2, [r3, -0xc]                                |     r2 = *((r3 - 0xc));
    0x0009b4bc add r6, r6, 1                                     |     r6++;
    0x0009b4c0 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0009b4c4 ldrne r2, [r5]                                    |         r2 = *(r5);
                                                                 |     }
                                                                 |     if (r2 == 0) {
    0x0009b4c8 addne r5, r5, 4                                   |         r5 += 4;
                                                                 |     }
                                                                 |     if (r2 == 0) {
    0x0009b4cc strne r2, [ip, 0x18]                              |         var_18h_2 = r2;
                                                                 |     }
    0x0009b4d0 b 0x9b4e4                                         |     goto label_19;
                                                                 | label_20:
    0x0009b4d4 ldr ip, [r3, -4]                                  |     ip = *((r3 - 4));
    0x0009b4d8 add r2, r2, 0x20                                  |     r2 += 0x20;
    0x0009b4dc cmp r1, ip                                        |     
                                                                 |     if (r1 != ip) {
    0x0009b4e0 bne 0x9b490                                       |         goto label_2;
                                                                 |     }
                                                                 | label_19:
    0x0009b4e4 add r3, r3, 0x10                                  |     r3 += 0x10;
    0x0009b4e8 b 0x9b41c                                         |     goto label_3;
                                                                 |     do {
    0x0009b4ec cmp r1, 0x3a                                      |         
    0x0009b4f0 ldrb r2, [r4, 1]                                  |         r2 = *((r4 + 1));
                                                                 |         if (r1 != 0x3a) {
    0x0009b4f4 beq 0x9b514                                       |             
    0x0009b4f8 cmp r1, 0x3f                                      |             
                                                                 |             if (r1 != 0x3f) {
    0x0009b4fc bne 0x9b5cc                                       |                 goto label_21;
                                                                 |             }
    0x0009b500 sub r2, r2, 0x30                                  |             r2 -= 0x30;
    0x0009b504 cmp r2, 9                                         |             
    0x0009b508 add r3, r4, 1                                     |             r3 = r4 + 1;
                                                                 |             if (r2 > 9) {
    0x0009b50c movls r8, r2                                      |                 r8 = r2;
                                                                 |             }
                                                                 |             if (r2 <= 9) {
                                                                 | label_4:
    0x0009b510 movls r4, r3                                      |                 r4 = r3;
                                                                 |                 goto label_5;
                                                                 |             }
                                                                 |         }
                                                                 | label_5:
    0x0009b514 add r4, r4, 1                                     |         r4++;
                                                                 | label_18:
    0x0009b518 ldrb r1, [r4]                                     |         r1 = *(r4);
    0x0009b51c cmp r1, 0                                         |         
    0x0009b520 bne 0x9b4ec                                       |         
                                                                 |     } while (r1 != 0);
                                                                 | label_17:
    0x0009b524 ldr r3, [pc, 0x338]                               |     r3 = *(0x9b860);
    0x0009b528 mov sb, 0                                         |     sb = 0;
    0x0009b52c str sb, [r3]                                      |     *(r3) = sb;
    0x0009b530 ldr r3, [fp, -0x45c]                              |     r3 = var_45ch;
    0x0009b534 sub r5, fp, 0x440                                 |     r5 -= var_440h;
    0x0009b538 add r0, r3, 4                                     |     r0 = r3 + 4;
    0x0009b53c bl 0x1750c                                        |     fcn_0001750c (r0);
    0x0009b540 sub r5, r5, 4                                     |     r5 -= s;
    0x0009b544 add r4, r0, 1                                     |     r4 = r0 + 1;
                                                                 | label_9:
    0x0009b548 str sb, [sp]                                      |     *(sp) = sb;
    0x0009b54c ldr r3, [fp, -0x450]                              |     r3 = var_450h;
    0x0009b550 ldr r2, [fp, -0x454]                              |     r2 = var_454h;
    0x0009b554 ldr r1, [fp, -0x45c]                              |     r1 = var_45ch;
    0x0009b558 mov r0, r4                                        |     r0 = r4;
    0x0009b55c bl 0x14444                                        |     r0 = getopt_long ();
    0x0009b560 cmn r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x0009b564 bne 0x9b75c                                       |         goto label_22;
                                                                 |     }
                                                                 | label_11:
    0x0009b568 ldr r3, [fp, -0x448]                              |     r3 = var_448h;
    0x0009b56c ldrb r3, [r3, -0x20]                              |     r3 = *((r3 - 0x20));
    0x0009b570 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0009b574 bne 0x9b820                                       |         goto label_23;
                                                                 |     }
    0x0009b578 ldr r3, [fp, -0x44c]                              |     r3 = var_44ch;
    0x0009b57c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0009b580 beq 0x9b58c                                       |         
    0x0009b584 tst r6, r3                                        |         
                                                                 |         if ((r6 & r3) == 0) {
    0x0009b588 beq 0x9b7ec                                       |             goto label_24;
                                                                 |         }
                                                                 |     }
    0x0009b58c ldr r3, [pc, 0x2d0]                               |     
    0x0009b590 ldr r3, [r3]                                      |     r3 = *(0x9b860);
    0x0009b594 sub r4, r4, r3                                    |     r4 -= r3;
    0x0009b598 cmp r7, r4                                        |     
                                                                 |     if (r7 > r4) {
    0x0009b59c bgt 0x9b7ec                                       |         goto label_24;
                                                                 |     }
    0x0009b5a0 cmp r8, r4                                        |     
    0x0009b5a4 mvn r3, r8                                        |     r3 = ~r8;
    0x0009b5a8 lsr r3, r3, 0x1f                                  |     r3 >>= 0x1f;
                                                                 |     if (r8 < r4) {
    0x0009b5ac movge r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0009b5b0 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0009b5b4 ldreq r3, [pc, 0x2ac]                             |         r3 = *(0x0009b868);
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x0009b5b8 streq r6, [r3]                                    |         *(r3) = r6;
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x0009b5bc bne 0x9b7ec                                       |         goto label_24;
                                                                 |     }
                                                                 | label_12:
    0x0009b5c0 mov r0, r6                                        |     r0 = r6;
    0x0009b5c4 sub sp, fp, 0x20                                  |     
    0x0009b5c8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |     
                                                                 | label_21:
    0x0009b5cc cmp r1, 0x2d                                      |     
                                                                 |     if (r1 == 0x2d) {
    0x0009b5d0 bne 0x9b5e8                                       |         
    0x0009b5d4 sub r2, r2, 0x30                                  |         r2 -= 0x30;
    0x0009b5d8 cmp r2, 9                                         |         
    0x0009b5dc add r3, r4, 1                                     |         r3 = r4 + 1;
                                                                 |         if (r2 > 9) {
    0x0009b5e0 movls r7, r2                                      |             r7 = r2;
                                                                 |         }
    0x0009b5e4 b 0x9b510                                         |         goto label_4;
                                                                 |     }
    0x0009b5e8 cmp r1, 0x3d                                      |     
                                                                 |     if (r1 != 0x3d) {
    0x0009b5ec subeq r7, r2, 0x30                                |         r7 = r2 - 0x30;
                                                                 |     }
                                                                 |     if (r1 != 0x3d) {
    0x0009b5f0 addeq r4, r4, 1                                   |         r4++;
                                                                 |     }
                                                                 |     if (r1 == 0x3d) {
    0x0009b5f4 moveq r8, r7                                      |         r8 = r7;
                                                                 |         goto label_25;
                                                                 |     }
                                                                 |     if (r1 == 0x3d) {
                                                                 | label_25:
    0x0009b5f8 beq 0x9b514                                       |         goto label_5;
                                                                 |     }
    0x0009b5fc mov r0, 0                                         |     r0 = 0;
    0x0009b600 b 0x9b610                                         |     
                                                                 |     while (ip != 0) {
    0x0009b604 cmp ip, r1                                        |         
    0x0009b608 add r0, r0, 0x20                                  |         r0 += 0x20;
                                                                 |         if (ip == r1) {
    0x0009b60c beq 0x9b628                                       |             goto label_26;
                                                                 |         }
    0x0009b610 ldrb ip, [r0, sl]                                 |         ip = *((r0 + sl));
    0x0009b614 add r3, r0, sl                                    |         r3 = r0 + sl;
    0x0009b618 cmp ip, 0                                         |         
    0x0009b61c bne 0x9b604                                       |         
                                                                 |     }
    0x0009b620 ldr r0, [pc, 0x244]                               |     r0 = *(0x9b868);
    0x0009b624 bl 0x18254                                        |     fcn_00018254 ();
                                                                 | label_26:
    0x0009b628 cmp r2, 0x3a                                      |     
    0x0009b62c add r1, r4, 1                                     |     r1 = r4 + 1;
                                                                 |     if (r2 != 0x3a) {
    0x0009b630 bne 0x9b668                                       |         goto label_27;
                                                                 |     }
    0x0009b634 ldrb r0, [r4, 2]                                  |     r0 = *((r4 + 2));
    0x0009b638 cmp r0, 0x3a                                      |     
                                                                 |     if (r0 != 0x3a) {
    0x0009b63c moveq r2, 1                                       |         r2 = 1;
                                                                 |     }
                                                                 |     if (r0 == 0x3a) {
    0x0009b640 streq r2, [r3, 4]                                 |         *((r3 + 4)) = r2;
                                                                 |         goto label_28;
                                                                 |     }
                                                                 |     if (r0 == 0x3a) {
                                                                 | label_28:
    0x0009b644 beq 0x9b514                                       |         goto label_5;
                                                                 |     }
                                                                 |     do {
                                                                 | label_6:
    0x0009b648 cmp r2, 0                                         |         
    0x0009b64c cmpne r2, 0x3a                                    |         __asm ("cmpne r2, 0x3a");
                                                                 |         if (r2 != 0) {
    0x0009b650 bne 0x9b690                                       |             goto label_29;
                                                                 |         }
    0x0009b654 ldr r2, [fp, -0x44c]                              |         r2 = var_44ch;
    0x0009b658 ldr r3, [r3, 8]                                   |         r3 = var_8h_2;
    0x0009b65c orr r3, r2, r3                                    |         r3 = r2 | r3;
    0x0009b660 str r3, [fp, -0x44c]                              |         var_44ch = r3;
    0x0009b664 b 0x9b514                                         |         goto label_5;
                                                                 | label_27:
    0x0009b668 cmp r2, 0x2b                                      |         
    0x0009b66c bne 0x9b648                                       |         
                                                                 |     } while (r2 != 0x2b);
    0x0009b670 ldrb r0, [r4, 2]                                  |     r0 = *((r4 + 2));
    0x0009b674 cmp r0, 0                                         |     
    0x0009b678 cmpne r0, 0x3a                                    |     __asm ("cmpne r0, 0x3a");
                                                                 |     if (r0 != 0) {
    0x0009b67c moveq r2, 2                                       |         r2 = 2;
                                                                 |     }
                                                                 |     if (r0 == 0) {
    0x0009b680 streq r2, [r3, 4]                                 |         *((r3 + 4)) = r2;
                                                                 |         goto label_30;
                                                                 |     }
                                                                 |     if (r0 != 0) {
                                                                 | label_30:
    0x0009b684 bne 0x9b648                                       |         goto label_6;
                                                                 |     }
                                                                 |     do {
    0x0009b688 mov r4, r1                                        |         r4 = r1;
    0x0009b68c b 0x9b514                                         |         goto label_5;
                                                                 | label_29:
    0x0009b690 cmp r2, 0x2d                                      |         
                                                                 |         if (r2 != 0x2d) {
    0x0009b694 bne 0x9b6c0                                       |             goto label_31;
                                                                 |         }
    0x0009b698 ldrb r2, [r4, 2]                                  |         r2 = *((r4 + 2));
    0x0009b69c cmp r2, 0                                         |         
    0x0009b6a0 cmpne r2, 0x3a                                    |         __asm ("cmpne r2, 0x3a");
                                                                 |         if (r2 != 0) {
    0x0009b6a4 bne 0x9b6d4                                       |             goto label_32;
                                                                 |         }
    0x0009b6a8 ldr r0, [r3, 8]                                   |         r0 = var_8h_2;
    0x0009b6ac ldr r2, [r3, 0x10]                                |         r2 = var_10h;
    0x0009b6b0 orr r6, r6, r0                                    |         r6 |= r0;
    0x0009b6b4 orr r2, r2, r0                                    |         r2 |= r0;
    0x0009b6b8 str r2, [r3, 0x10]                                |         var_10h = r2;
    0x0009b6bc b 0x9b688                                         |         
                                                                 |     } while (1);
                                                                 | label_31:
    0x0009b6c0 cmp ip, r2                                        |     
                                                                 |     if (ip != r2) {
    0x0009b6c4 ldreq r2, [r5]                                    |         r2 = *(r5);
                                                                 |     }
                                                                 |     if (ip != r2) {
    0x0009b6c8 moveq r4, r1                                      |         r4 = r1;
                                                                 |     }
                                                                 |     if (ip != r2) {
    0x0009b6cc addeq r5, r5, 4                                   |         r5 += 4;
                                                                 |     }
                                                                 |     if (ip != r2) {
    0x0009b6d0 streq r2, [r3, 0x1c]                              |         *((r3 + 0x1c)) = r2;
                                                                 |     }
                                                                 | label_32:
    0x0009b6d4 add r1, r3, 0x10                                  |     r1 += var_10h;
    0x0009b6d8 add r2, r3, 8                                     |     r2 += var_8h_2;
    0x0009b6dc add lr, r3, 0xc                                   |     lr += var_ch;
    0x0009b6e0 add ip, r4, 1                                     |     
    0x0009b6e4 add r3, r3, 0x14                                  |     r3 += var_14h;
    0x0009b6e8 str r1, [fp, -0x460]                              |     var_460h = r1;
                                                                 | label_7:
    0x0009b6ec mov r4, ip                                        |     r4 = ip;
    0x0009b6f0 ldrb r1, [ip], 1                                  |     r1 = *(ip);
                                                                 |     ip++;
    0x0009b6f4 cmp r1, 0                                         |     
    0x0009b6f8 cmpne r1, 0x3a                                    |     __asm ("cmpne r1, 0x3a");
                                                                 |     if (r1 == 0) {
    0x0009b6fc subeq r4, r4, 1                                   |         r4--;
                                                                 |         goto label_33;
                                                                 |     }
                                                                 |     if (r1 == 0) {
                                                                 | label_33:
    0x0009b700 beq 0x9b514                                       |         goto label_5;
                                                                 |     }
    0x0009b704 cmp r1, 0x3f                                      |     
                                                                 |     if (r1 == 0x3f) {
    0x0009b708 moveq r2, r3                                      |         r2 = r3;
                                                                 |         goto label_34;
                                                                 |     }
                                                                 |     if (r1 == 0x3f) {
                                                                 | label_34:
    0x0009b70c beq 0x9b6ec                                       |         goto label_7;
                                                                 |     }
    0x0009b710 cmp r1, 0x2d                                      |     
                                                                 |     if (r1 == 0x2d) {
    0x0009b714 bne 0x9b728                                       |         
    0x0009b718 cmp lr, r2                                        |         
    0x0009b71c ldr r2, [fp, -0x460]                              |         r2 = var_460h;
                                                                 |         if (lr == r2) {
    0x0009b720 movne r2, lr                                      |             r2 = lr;
                                                                 |         }
    0x0009b724 b 0x9b6ec                                         |         goto label_7;
                                                                 |     }
    0x0009b728 mov r0, 0                                         |     r0 = 0;
                                                                 | label_8:
    0x0009b72c ldrb r4, [r0, sl]                                 |     r4 = *((r0 + sl));
    0x0009b730 add sb, r0, sl                                    |     sb = r0 + sl;
    0x0009b734 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0009b738 beq 0x9b6ec                                       |         goto label_7;
                                                                 |     }
    0x0009b73c cmp r4, r1                                        |     
    0x0009b740 add r0, r0, 0x20                                  |     r0 += 0x20;
                                                                 |     if (r4 != r1) {
    0x0009b744 bne 0x9b72c                                       |         goto label_8;
                                                                 |     }
    0x0009b748 ldr r0, [r2]                                      |     r0 = *(r2);
    0x0009b74c ldr r1, [sb, 8]                                   |     r1 = var_8h_2;
    0x0009b750 orr r1, r0, r1                                    |     r1 = r0 | r1;
    0x0009b754 str r1, [r2]                                      |     *(r2) = r1;
    0x0009b758 b 0x9b6ec                                         |     goto label_7;
                                                                 | label_22:
    0x0009b75c and r0, r0, 0xff                                  |     r0 &= 0xff;
    0x0009b760 mov r2, 0                                         |     r2 = 0;
                                                                 | label_10:
    0x0009b764 ldrb r1, [r2, r5]                                 |     r1 = *((r2 + r5));
    0x0009b768 add r3, r5, r2                                    |     r3 = r5 + r2;
    0x0009b76c cmp r1, r0                                        |     
                                                                 |     if (r1 != r0) {
    0x0009b770 bne 0x9b7e0                                       |         goto label_35;
                                                                 |     }
    0x0009b774 ldr r2, [r3, 0x10]                                |     r2 = var_10h;
    0x0009b778 tst r6, r2                                        |     
                                                                 |     if ((r6 & r2) != 0) {
    0x0009b77c bne 0x9b7ec                                       |         goto label_24;
                                                                 |     }
    0x0009b780 ldr r1, [r3, 0xc]                                 |     r1 = var_ch;
    0x0009b784 ldr r2, [r3, 8]                                   |     r2 = var_8h_2;
    0x0009b788 bic r0, r1, r2                                    |     r0 = BIT_MASK (r1, r2);
    0x0009b78c bic r0, r6, r0                                    |     r0 = BIT_MASK (r6, r0);
    0x0009b790 bic r6, r2, r1                                    |     r6 = BIT_MASK (r2, r1);
    0x0009b794 orr r6, r6, r0                                    |     r6 |= r0;
    0x0009b798 and r2, r2, r1                                    |     r2 &= r1;
    0x0009b79c eor r6, r6, r2                                    |     r6 ^= r2;
    0x0009b7a0 ldr r2, [r3, 0x1c]                                |     r2 = var_1ch;
    0x0009b7a4 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0009b7a8 ldrne r1, [r2]                                    |         r1 = *(r2);
                                                                 |     }
                                                                 |     if (r2 == 0) {
    0x0009b7ac addne r1, r1, 1                                   |         r1++;
                                                                 |     }
                                                                 |     if (r2 == 0) {
    0x0009b7b0 strne r1, [r2]                                    |         *(r2) = r1;
                                                                 |     }
    0x0009b7b4 ldr r2, [pc, 0xb4]                                |     r2 = "NO OPT %c!";
    0x0009b7b8 ldr r1, [r2]                                      |     r1 = "NO OPT %c!";
    0x0009b7bc cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0009b7c0 beq 0x9b548                                       |         goto label_9;
                                                                 |     }
    0x0009b7c4 ldr r2, [r3, 4]                                   |     r2 = var_440h;
    0x0009b7c8 ldr sl, [r3, 0x18]                                |     sl = var_18h;
    0x0009b7cc cmp r2, 1                                         |     
                                                                 |     if (r2 != 1) {
    0x0009b7d0 bne 0x9b7fc                                       |         goto label_36;
                                                                 |     }
    0x0009b7d4 mov r0, sl                                        |     r0 = sl;
    0x0009b7d8 bl 0x9fe38                                        |     fcn_0009fe38 (r0, r1);
    0x0009b7dc b 0x9b548                                         |     goto label_9;
                                                                 | label_35:
    0x0009b7e0 cmp r1, 0                                         |     
    0x0009b7e4 add r2, r2, 0x20                                  |     r2 += 0x20;
                                                                 |     if (r1 != 0) {
    0x0009b7e8 bne 0x9b764                                       |         goto label_10;
                                                                 |     }
                                                                 |     do {
                                                                 | label_24:
    0x0009b7ec ldr r3, [fp, -0x458]                              |         r3 = var_458h;
    0x0009b7f0 cmp r3, 0x21                                      |         
                                                                 |         if (r3 == 0x21) {
    0x0009b7f4 beq 0x9b858                                       |             goto label_37;
                                                                 |         }
    0x0009b7f8 bl 0x175e8                                        |         fcn_000175e8 ();
                                                                 | label_36:
    0x0009b7fc cmp r2, 2                                         |         
                                                                 |         if (r2 == 2) {
    0x0009b800 bne 0x9b814                                       |             
    0x0009b804 mov r0, r1                                        |             r0 = r1;
    0x0009b808 bl 0xa5c1c                                        |             fcn_000a5c1c (r0);
    0x0009b80c str r0, [sl]                                      |             *(sl) = r0;
    0x0009b810 b 0x9b548                                         |             goto label_9;
                                                                 |         }
    0x0009b814 cmp sl, 0                                         |         
                                                                 |         if (sl == 0) {
    0x0009b818 strne r1, [sl]                                    |             *(sl) = r1;
                                                                 |         }
    0x0009b81c b 0x9b548                                         |         goto label_9;
                                                                 | label_23:
    0x0009b820 ldr r3, [fp, -0x448]                              |         r3 = var_448h;
    0x0009b824 ldr r3, [r3, -0xc]                                |         r3 = *((r3 - 0xc));
    0x0009b828 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0009b82c beq 0x9b848                                       |             goto label_38;
                                                                 |         }
    0x0009b830 ldr r2, [fp, -0x448]                              |         r2 = var_448h;
    0x0009b834 ldr r2, [r2, -0x18]                               |         r2 = *((r2 - 0x18));
    0x0009b838 tst r6, r2                                        |         
                                                                 |         if ((r6 & r2) == 0) {
    0x0009b83c beq 0x9b848                                       |             goto label_38;
                                                                 |         }
    0x0009b840 tst r3, r6                                        |         
    0x0009b844 beq 0x9b7ec                                       |         
                                                                 |     } while ((r3 & r6) == 0);
                                                                 | label_38:
    0x0009b848 ldr r3, [fp, -0x448]                              |     r3 = var_448h;
    0x0009b84c add r3, r3, 0x20                                  |     r3 += 0x20;
    0x0009b850 str r3, [fp, -0x448]                              |     var_448h = r3;
    0x0009b854 b 0x9b568                                         |     goto label_11;
                                                                 | label_37:
    0x0009b858 mvn r6, 0                                         |     r6 = ~0;
    0x0009b85c b 0x9b5c0                                         |     goto label_12;
                                                                 | }
    ; 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 @ 0x9b8c8 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0009b8c8 ()                  | void fcn_0009b8c8 (int32_t arg1) {
                                             |     r0 = arg1;
    0x0009b8c8 push {r4, r5, r6, lr}         |     
    0x0009b8cc mov r4, r0                    |     r4 = r0;
    0x0009b8d0 mov r6, 0x2d                  |     r6 = 0x2d;
                                             |     do {
                                             | label_0:
    0x0009b8d4 ldr r0, [r4, 4]!              |         r0 = *((r4 += 4));
    0x0009b8d8 cmp r0, 0                     |         
    0x0009b8dc popeq {r4, r5, r6, pc}        |         
    0x0009b8e0 ldrb r3, [r0]                 |         r3 = *(r0);
    0x0009b8e4 cmp r3, 0x2d                  |         
    0x0009b8e8 beq 0x9b8d4                   |         
                                             |     } while (r3 == 0x2d);
    0x0009b8ec bl 0x1514c                    |     r0 = strlen (r0);
    0x0009b8f0 add r0, r0, 2                 |     r0 += 2;
    0x0009b8f4 bl 0x18968                    |     fcn_00018968 (r0);
    0x0009b8f8 ldr r1, [r4]                  |     r1 = *(r4);
    0x0009b8fc mov r5, r0                    |     r5 = r0;
    0x0009b900 strb r6, [r0], 1              |     *(r0) = r6;
                                             |     r0++;
    0x0009b904 bl 0x142f4                    |     strcpy (r0, r1)
    0x0009b908 str r5, [r4]                  |     *(r4) = r5;
    0x0009b90c b 0x9b8d4                     |     goto label_0;
                                             | }
    ; 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 @ 0x9cfe0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0009cfe0 ()                          | void fcn_0009cfe0 (int32_t arg1, int32_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0009cfe0 ldrh ip, [r0]                         |     ip = *(r0);
    0x0009cfe4 push {r4, r5, r6, r7, r8, lr}         |     
    0x0009cfe8 cmp ip, 2                             |     
                                                     |     if (ip == 2) {
    0x0009cfec beq 0x9d00c                           |         goto label_4;
                                                     |     }
    0x0009cff0 ldr r3, [pc, 0xf0]                    |     
    0x0009cff4 mov r2, 0x61                          |     r2 = 0x61;
    0x0009cff8 ldr r3, [r3]                          |     r3 = *(0x9d0e4);
    0x0009cffc mov r6, 0                             |     r6 = 0;
    0x0009d000 str r2, [r3]                          |     *(r3) = r2;
                                                     |     do {
    0x0009d004 mov r0, r6                            |         r0 = r6;
    0x0009d008 pop {r4, r5, r6, r7, r8, pc}          |         
                                                     | label_4:
    0x0009d00c lsl ip, r1, 0x14                      |         
    0x0009d010 lsr ip, ip, 0x14                      |         
    0x0009d014 cmp ip, 0                             |         
    0x0009d018 mov r5, r0                            |         r5 = r0;
    0x0009d01c ldr r8, [r0, 4]                       |         r8 = *((r0 + 4));
                                                     |         if (ip != 0) {
    0x0009d020 beq 0x9d02c                           |             
    0x0009d024 pop {r4, r5, r6, r7, r8, lr}          |             
    0x0009d028 b 0xa6290                             |             void (*0xa6290)() ();
                                                     |         }
    0x0009d02c cmp r8, 0                             |         
                                                     |         if (r8 == 0) {
    0x0009d030 bne 0x9d048                           |             
    0x0009d034 tst r1, 0x8000                        |             
                                                     |             if ((r1 & 0x8000) == 0) {
    0x0009d038 ldrne r0, [pc, 0xac]                  |                 r0 = "default";
                                                     |             }
                                                     |             if ((r1 & 0x8000) != 0) {
    0x0009d03c ldreq r0, [pc, 0xac]                  |                 r0 = *(0x0009d0f0);
                                                     |             }
                                                     | label_0:
    0x0009d040 pop {r4, r5, r6, r7, r8, lr}          |             
    0x0009d044 b 0x189d4                             |             void (*0x189d4)() ();
                                                     |         }
    0x0009d048 ldr r7, [pc, 0xa4]                    |         r7 = *(0x9d0f0);
    0x0009d04c bics r3, r8, r2                       |         __asm ("bics r3, r8, r2");
    0x0009d050 ldr r0, [r7]                          |         r0 = *(0x9d0f0);
                                                     |         if ((r1 & 0x8000) != 0) {
    0x0009d054 lsreq r1, r1, 0xe                     |             r1 >>= 0xe;
                                                     |         }
                                                     |         if ((r1 & 0x8000) != 0) {
    0x0009d058 andeq r4, r1, 1                       |             r4 = r1 & 1;
                                                     |         }
                                                     |         if ((r1 & 0x8000) == 0) {
    0x0009d05c movne r4, 1                           |             r4 = 1;
                                                     |         }
                                                     | label_1:
    0x0009d060 cmp r0, 0                             |         
                                                     |         if (r0 != 0) {
    0x0009d064 bne 0x9d0b0                           |             goto label_5;
                                                     |         }
    0x0009d068 cmp r4, 0                             |         
                                                     |         if (r4 != 0) {
    0x0009d06c bne 0x9d0d4                           |             goto label_6;
                                                     |         }
                                                     | label_2:
    0x0009d070 mov r0, r5                            |         r0 = r5;
    0x0009d074 bl 0xa6290                            |         r0 = fcn_000a6290 (r0, r1, r2, r3, r4, r5, r6);
    0x0009d078 mov r6, r0                            |         r6 = r0;
                                                     | label_3:
    0x0009d07c mov r0, r6                            |         r0 = r6;
    0x0009d080 bl 0x1514c                            |         r0 = strlen (r0);
    0x0009d084 add r0, r0, 0x10                      |         r0 += 0x10;
    0x0009d088 bl 0x18968                            |         fcn_00018968 (r0);
    0x0009d08c ldr r3, [r7]                          |         r3 = *(r7);
    0x0009d090 mov r1, r6                            |         r1 = r6;
    0x0009d094 mov r5, r0                            |         r5 = r0;
    0x0009d098 stm r0, {r3, r8}                      |         *(r0) = r3;
                                                     |         *((r0 + 4)) = r8;
    0x0009d09c str r4, [r0, 8]                       |         *((r0 + 8)) = r4;
    0x0009d0a0 add r0, r0, 0xc                       |         r0 += 0xc;
    0x0009d0a4 bl 0x142f4                            |         strcpy (r0, r1)
    0x0009d0a8 str r5, [r7]                          |         *(r7) = r5;
    0x0009d0ac b 0x9d004                             |         
                                                     |     } while (1);
                                                     | label_5:
    0x0009d0b0 ldr r2, [r0, 4]                       |     r2 = *((r0 + 4));
    0x0009d0b4 cmp r2, r8                            |     
                                                     |     if (r2 != r8) {
    0x0009d0b8 bne 0x9d0cc                           |         goto label_7;
                                                     |     }
    0x0009d0bc ldr r2, [r0, 8]                       |     r2 = *((r0 + 8));
    0x0009d0c0 cmp r2, r4                            |     
                                                     |     if (r2 == r4) {
    0x0009d0c4 addeq r0, r0, 0xc                     |         r0 += 0xc;
                                                     |         goto label_8;
                                                     |     }
                                                     |     if (r2 == r4) {
                                                     | label_8:
    0x0009d0c8 beq 0x9d040                           |         goto label_0;
                                                     |     }
                                                     | label_7:
    0x0009d0cc ldr r0, [r0]                          |     r0 = *(r0);
    0x0009d0d0 b 0x9d060                             |     goto label_1;
                                                     | label_6:
    0x0009d0d4 mov r0, r5                            |     r0 = r5;
    0x0009d0d8 bl 0xa6280                            |     r0 = fcn_000a6280 (r0);
    0x0009d0dc subs r6, r0, 0                        |     r6 = r0 - 0;
                                                     |     if (r6 == r0) {
    0x0009d0e0 beq 0x9d070                           |         goto label_2;
                                                     |     }
    0x0009d0e4 b 0x9d07c                             |     goto label_3;
                                                     | }
    ; 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 @ 0x9d2b0 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0009d2b0 ()                      | void fcn_0009d2b0 (int32_t arg1, uint32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0009d2b0 push {r4, r5, r6, lr}             |     
    0x0009d2b4 ldr r5, [pc, 0x8c]                |     r5 = *(0x9d344);
    0x0009d2b8 cmp r1, 0                         |     
                                                 |     if (r1 == 0) {
    0x0009d2bc movne r5, r1                      |         r5 = r1;
                                                 |     }
    0x0009d2c0 mov r6, r0                        |     r6 = r0;
    0x0009d2c4 mov r0, r5                        |     r0 = r5;
    0x0009d2c8 bl 0x1514c                        |     r0 = strlen (r0);
    0x0009d2cc add r0, r0, 0x18                  |     r0 += 0x18;
    0x0009d2d0 bl 0x18968                        |     fcn_00018968 (r0);
    0x0009d2d4 ldrd r2, r3, [r6, 0x60]           |     __asm ("ldrd r2, r3, [r6, 0x60]");
    0x0009d2d8 mov r1, r5                        |     r1 = r5;
    0x0009d2dc ldr r5, [pc, 0x68]                |     r5 = *(0x9d348);
    0x0009d2e0 strd r2, r3, [r0]                 |     __asm ("strd r2, r3, [r0]");
    0x0009d2e4 ldrd r2, r3, [r6]                 |     __asm ("ldrd r2, r3, [r6]");
    0x0009d2e8 mov r4, r0                        |     r4 = r0;
    0x0009d2ec strd r2, r3, [r0, 8]              |     __asm ("strd r2, r3, [r0, 8]");
    0x0009d2f0 ldr r3, [r6, 0x10]                |     r3 = *((r6 + 0x10));
    0x0009d2f4 add r0, r0, 0x15                  |     r0 += 0x15;
    0x0009d2f8 and r3, r3, 0xf000                |     r3 &= 0xf000;
    0x0009d2fc sub r3, r3, 0x4000                |     r3 -= 0x4000;
    0x0009d300 clz r3, r3                        |     r3 &= r3;
    0x0009d304 lsr r3, r3, 5                     |     r3 >>= 5;
    0x0009d308 strb r3, [r0, -1]                 |     *((r0 - 1)) = r3;
    0x0009d30c bl 0x142f4                        |     strcpy (r0, r1)
    0x0009d310 ldr r3, [r5]                      |     r3 = *(0x9d348);
    0x0009d314 cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x0009d318 bne 0x9d328                       |         
    0x0009d31c ldr r0, [pc, 0x2c]                |         r0 = *(0x9d34c);
    0x0009d320 bl 0x189b8                        |         fcn_000189b8 (r0);
    0x0009d324 str r0, [r5]                      |         *(r5) = r0;
                                                 |     }
    0x0009d328 ldr r0, [r6, 0x60]                |     r0 = *((r6 + 0x60));
    0x0009d32c ldr r1, [pc, 0x20]                |     r1 = *(0x9d350);
    0x0009d330 bl 0xa667c                        |     fcn_000a667c (r0, r1);
    0x0009d334 ldr r3, [r5]                      |     r3 = *(r5);
    0x0009d338 ldr r2, [r3, r1, lsl 2]           |     offset_0 = r1 << 2;
                                                 |     r2 = *((r3 + offset_0));
    0x0009d33c str r2, [r4, 0x10]                |     *((r4 + 0x10)) = r2;
    0x0009d340 str r4, [r3, r1, lsl 2]           |     offset_1 = r1 << 2;
                                                 |     *((r3 + offset_1)) = r4;
    0x0009d344 pop {r4, r5, r6, pc}              |     
                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0x9e7e0 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0009e7e0 ()                                  | void fcn_0009e7e0 (int32_t arg1, int32_t arg2) {
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     void * ptr;
                                                             |     int32_t var_18h;
                                                             |     int32_t var_28h;
                                                             |     int32_t var_80h;
                                                             |     int32_t var_84h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x0009e7e0 ldr r3, [pc, 0x2dc]                           |     r3 = *(0x9eac0);
    0x0009e7e4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x0009e7e8 mov sl, r1                                    |     sl = r1;
    0x0009e7ec sub sp, sp, 0x84                              |     
    0x0009e7f0 mov r1, 0x2f                                  |     r1 = 0x2f;
    0x0009e7f4 mov r7, r0                                    |     r7 = r0;
    0x0009e7f8 str r3, [sp, 0x14]                            |     ptr = r3;
    0x0009e7fc bl 0x1496c                                    |     r0 = strrchr (r0, r1);
    0x0009e800 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0009e804 bne 0x9e968                                   |         goto label_6;
                                                             |     }
    0x0009e808 cmp sl, 0                                     |     
                                                             |     if (sl == 0) {
    0x0009e80c beq 0x9e898                                   |         goto label_7;
                                                             |     }
                                                             | label_0:
    0x0009e810 add r5, sp, 0x14                              |     r5 += ptr;
    0x0009e814 mov r4, 0                                     |     r4 = 0;
                                                             | label_3:
    0x0009e818 mov sb, 1                                     |     sb = 1;
                                                             | label_1:
    0x0009e81c mov r0, r7                                    |     r0 = r7;
    0x0009e820 bl 0x1514c                                    |     strlen (r0);
    0x0009e824 mov r8, r5                                    |     r8 = r5;
    0x0009e828 add r3, r5, sb, lsl 2                         |     r3 = r5 + (sb << 2);
    0x0009e82c str r3, [sp, 4]                               |     var_4h = r3;
    0x0009e830 str r0, [sp, 8]                               |     var_8h = r0;
                                                             |     do {
    0x0009e834 ldr r0, [r8], 4                               |         r0 = *(r8);
                                                             |         r8 += 4;
    0x0009e838 bl 0x14e4c                                    |         r0 = opendir ();
    0x0009e83c subs fp, r0, 0                                |         
                                                             |         if (fp != r0) {
    0x0009e840 beq 0x9e85c                                   |             
                                                             | label_4:
    0x0009e844 mov r0, fp                                    |             r0 = fp;
    0x0009e848 bl 0x14c48                                    |             r0 = readdir64 ();
    0x0009e84c cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x0009e850 bne 0x9e98c                                   |                 goto label_8;
                                                             |             }
    0x0009e854 mov r0, fp                                    |             r0 = fp;
    0x0009e858 bl 0x151c4                                    |             closedir ();
                                                             |         }
    0x0009e85c ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x0009e860 cmp r8, r3                                    |         
    0x0009e864 bne 0x9e834                                   |         
                                                             |     } while (r8 != r3);
    0x0009e868 add r3, sp, 0x14                              |     r3 += ptr;
    0x0009e86c cmp r5, r3                                    |     
                                                             |     if (r5 != r3) {
    0x0009e870 beq 0x9e884                                   |         
    0x0009e874 ldr r0, [r5]                                  |         r0 = *(r5);
    0x0009e878 bl 0x152a8                                    |         free (r0);
    0x0009e87c mov r0, r5                                    |         r0 = r5;
    0x0009e880 bl 0x152a8                                    |         free (r0);
                                                             |     }
    0x0009e884 mov r0, r4                                    |     r0 = r4;
    0x0009e888 bl 0x152a8                                    |     free (r0);
    0x0009e88c ldr r0, [sp, 8]                               |     r0 = var_8h;
    0x0009e890 add sp, sp, 0x84                              |     
    0x0009e894 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |     
                                                             | label_7:
    0x0009e898 ldr r3, [pc, 0x228]                           |     
    0x0009e89c ldr r3, [r3]                                  |     
    0x0009e8a0 ldr r3, [r3]                                  |     r3 = *(0x9eac4);
    0x0009e8a4 ldr r2, [r3]                                  |     r2 = *(0x9eac4);
    0x0009e8a8 tst r2, 0x10                                  |     
                                                             |     if ((r2 & 0x10) == 0) {
    0x0009e8ac ldrne r4, [r3, 8]                             |         r4 = *((r3 + 8));
                                                             |     }
                                                             |     if ((r2 & 0x10) == 0) {
    0x0009e8b0 bne 0x9e8c0                                   |         
    0x0009e8b4 ldr r0, [pc, 0x210]                           |         r0 = *(0x9eac8);
    0x0009e8b8 bl 0x144d4                                    |         r0 = getenv (r0);
    0x0009e8bc mov r4, r0                                    |         r4 = r0;
                                                             |     }
    0x0009e8c0 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x0009e8c4 beq 0x9e810                                   |         goto label_0;
                                                             |     }
    0x0009e8c8 ldrb r3, [r4]                                 |     r3 = *(r4);
    0x0009e8cc cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0009e8d0 beq 0x9e810                                   |         goto label_0;
                                                             |     }
    0x0009e8d4 cmp r3, 0x3a                                  |     
                                                             |     if (r3 != 0x3a) {
    0x0009e8d8 bne 0x9e8e8                                   |         goto label_9;
                                                             |     }
    0x0009e8dc ldrb r3, [r4, 1]                              |     r3 = *((r4 + 1));
    0x0009e8e0 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0009e8e4 beq 0x9e810                                   |         goto label_0;
                                                             |     }
                                                             | label_9:
    0x0009e8e8 mov r0, r4                                    |     r0 = r4;
    0x0009e8ec mov r5, 1                                     |     r5 = 1;
                                                             |     do {
    0x0009e8f0 mov r1, 0x3a                                  |         r1 = 0x3a;
    0x0009e8f4 bl 0x1517c                                    |         r0 = strchr (r0, r1);
    0x0009e8f8 subs r3, r0, 0                                |         r3 = r0 - 0;
                                                             |         if (r3 == r0) {
    0x0009e8fc beq 0x9e914                                   |             goto label_10;
                                                             |         }
    0x0009e900 add r0, r3, 1                                 |         r0 = r3 + 1;
    0x0009e904 ldrb r3, [r3, 1]                              |         r3 = *((r3 + 1));
    0x0009e908 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x0009e90c addne r5, r5, 1                               |             r5++;
                                                             |         }
    0x0009e910 bne 0x9e8f0                                   |         
                                                             |     } while (r3 != 0);
                                                             | label_10:
    0x0009e914 lsl r0, r5, 2                                 |     r0 = r5 << 2;
    0x0009e918 bl 0x18968                                    |     fcn_00018968 (r0);
    0x0009e91c mov r6, 1                                     |     r6 = 1;
    0x0009e920 mov r8, 0                                     |     r8 = 0;
    0x0009e924 mov r5, r0                                    |     r5 = r0;
    0x0009e928 mov r0, r4                                    |     r0 = r4;
    0x0009e92c bl 0x189d4                                    |     fcn_000189d4 (r0);
    0x0009e930 str r0, [r5]                                  |     *(r5) = r0;
                                                             | label_2:
    0x0009e934 mov r1, 0x3a                                  |     r1 = 0x3a;
    0x0009e938 bl 0x1517c                                    |     strchr (r0, r1);
    0x0009e93c mov sb, r6                                    |     sb = r6;
    0x0009e940 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 == r0) {
    0x0009e944 beq 0x9e81c                                   |         goto label_1;
                                                             |     }
    0x0009e948 add r0, r4, 1                                 |     r0 = r4 + 1;
    0x0009e94c strb r8, [r4]                                 |     *(r4) = r8;
    0x0009e950 ldrb r4, [r4, 1]                              |     r4 = *((r4 + 1));
    0x0009e954 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x0009e958 beq 0x9e81c                                   |         goto label_1;
                                                             |     }
    0x0009e95c str r0, [r5, r6, lsl 2]                       |     offset_0 = r6 << 2;
                                                             |     *((r5 + offset_0)) = r0;
    0x0009e960 add r6, r6, 1                                 |     r6++;
    0x0009e964 b 0x9e934                                     |     goto label_2;
                                                             | label_6:
    0x0009e968 add r6, r0, 1                                 |     r6 = r0 + 1;
    0x0009e96c sub r1, r6, r7                                |     r1 = r6 - r7;
    0x0009e970 mov r0, r7                                    |     r0 = r7;
    0x0009e974 bl 0x189f8                                    |     fcn_000189f8 (r0, r1);
    0x0009e978 add r5, sp, 0x80                              |     r5 += var_80h;
    0x0009e97c mov r7, r6                                    |     r7 = r6;
    0x0009e980 mov r4, r0                                    |     r4 = r0;
    0x0009e984 str r0, [r5, -0x6c]!                          |     *((r5 -= 0x6c)) = r0;
    0x0009e988 b 0x9e818                                     |     goto label_3;
                                                             | label_8:
    0x0009e98c ldrb r3, [r7]                                 |     r3 = *(r7);
    0x0009e990 add sb, r0, 0x13                              |     sb = r0 + 0x13;
    0x0009e994 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0009e998 bne 0x9e9c8                                   |         goto label_11;
                                                             |     }
    0x0009e99c ldrb r3, [r0, 0x13]                           |     r3 = *((r0 + 0x13));
    0x0009e9a0 cmp r3, 0x2e                                  |     
                                                             |     if (r3 != 0x2e) {
    0x0009e9a4 bne 0x9e9c8                                   |         goto label_11;
                                                             |     }
    0x0009e9a8 ldrb r3, [r0, 0x14]                           |     r3 = *((r0 + 0x14));
    0x0009e9ac cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0009e9b0 beq 0x9e844                                   |         goto label_4;
                                                             |     }
    0x0009e9b4 cmp r3, 0x2e                                  |     
                                                             |     if (r3 != 0x2e) {
    0x0009e9b8 bne 0x9e9c8                                   |         goto label_11;
                                                             |     }
    0x0009e9bc ldrb r3, [r0, 0x15]                           |     r3 = *((r0 + 0x15));
    0x0009e9c0 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0009e9c4 beq 0x9e844                                   |         goto label_4;
                                                             |     }
                                                             | label_11:
    0x0009e9c8 mov r1, r7                                    |     r1 = r7;
    0x0009e9cc mov r0, sb                                    |     r0 = sb;
    0x0009e9d0 bl 0x17c98                                    |     r0 = fcn_00017c98 (r0, r1);
    0x0009e9d4 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0009e9d8 beq 0x9e844                                   |         goto label_4;
                                                             |     }
    0x0009e9dc mov r1, sb                                    |     r1 = sb;
    0x0009e9e0 ldr r0, [r8, -4]                              |     r0 = ptr;
    0x0009e9e4 bl 0x17e30                                    |     fcn_00017e30 (r0, r1);
    0x0009e9e8 add r1, sp, 0x18                              |     r1 += var_18h;
    0x0009e9ec mov r6, r0                                    |     r6 = r0;
    0x0009e9f0 bl 0x14420                                    |     r0 = stat64 ();
    0x0009e9f4 cmp r0, 0                                     |     
    0x0009e9f8 bne 0x9ea40                                   |     
                                                             |     while (r0 == 0) {
    0x0009e9fc mov r0, sb                                    |         r0 = sb;
    0x0009ea00 bl 0x1514c                                    |         r0 = strlen (r0);
    0x0009ea04 add r1, r0, 2                                 |         r1 = r0 + 2;
    0x0009ea08 str r0, [sp, 0xc]                             |         var_ch = r0;
    0x0009ea0c mov r0, r6                                    |         r0 = r6;
    0x0009ea10 bl 0x18990                                    |         fcn_00018990 (r0, r1);
    0x0009ea14 mov r1, sb                                    |         r1 = sb;
    0x0009ea18 mov r6, r0                                    |         r6 = r0;
    0x0009ea1c bl 0x142f4                                    |         strcpy (r0, r1)
    0x0009ea20 ldr r3, [sp, 0x28]                            |         r3 = var_28h;
    0x0009ea24 ldr r2, [sp, 0xc]                             |         r2 = var_ch;
    0x0009ea28 and r3, r3, 0xf000                            |         r3 &= 0xf000;
    0x0009ea2c cmp r3, 0x4000                                |         
                                                             |         if (r3 == 0x4000) {
    0x0009ea30 beq 0x9ea60                                   |             goto label_12;
                                                             |         }
    0x0009ea34 cmp sl, 1                                     |         
                                                             |         if (sl == 1) {
    0x0009ea38 beq 0x9ea54                                   |             goto label_5;
                                                             |         }
    0x0009ea3c b 0x9ea74                                     |         goto label_13;
    0x0009ea40 add r1, sp, 0x18                              |         r1 += var_18h;
    0x0009ea44 mov r0, r6                                    |         r0 = r6;
    0x0009ea48 bl 0x14cc0                                    |         r0 = lstat64 ();
    0x0009ea4c cmp r0, 0                                     |         
    0x0009ea50 beq 0x9e9fc                                   |         
                                                             |     }
                                                             | label_5:
    0x0009ea54 mov r0, r6                                    |     r0 = r6;
    0x0009ea58 bl 0x152a8                                    |     free (r0);
    0x0009ea5c b 0x9e844                                     |     goto label_4;
                                                             | label_12:
    0x0009ea60 mov r3, r6                                    |     r3 = r6;
    0x0009ea64 mov r1, 0x2f                                  |     r1 = 0x2f;
    0x0009ea68 strb r1, [r3, r2]!                            |     *((r3 += r2)) = r1;
    0x0009ea6c mov r2, 0                                     |     r2 = 0;
    0x0009ea70 strb r2, [r3, 1]                              |     *((r3 + 1)) = r2;
                                                             | label_13:
    0x0009ea74 sub r2, r6, 1                                 |     r2 = r6 - 1;
                                                             |     do {
    0x0009ea78 ldrb r3, [r2, 1]!                             |         r3 = *((r2 += 1));
    0x0009ea7c cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x0009ea80 bne 0x9eab4                                   |             
    0x0009ea84 ldr r3, [pc, 0x3c]                            |             r3 = *(0x9eac4);
    0x0009ea88 ldr r1, [pc, 0x40]                            |             r1 = *(0x9eacc);
    0x0009ea8c ldr sb, [r3]                                  |             sb = *(0x9eac4);
    0x0009ea90 ldr r2, [sb, 0x38]                            |             r2 = *(0x9eafc);
    0x0009ea94 ldr r0, [sb, 0x34]                            |             r0 = *(0x9eaf8);
    0x0009ea98 bl 0xa6338                                    |             fcn_000a6338 (r0, r1);
    0x0009ea9c ldr r3, [sb, 0x38]                            |             r3 = *(0x9eafc);
    0x0009eaa0 str r0, [sb, 0x34]                            |             *((sb + 0x34)) = r0;
    0x0009eaa4 str r6, [r0, r3, lsl 2]                       |             offset_1 = r3 << 2;
                                                             |             *((r0 + offset_1)) = r6;
    0x0009eaa8 add r3, r3, 1                                 |             r3++;
    0x0009eaac str r3, [sb, 0x38]                            |             *((sb + 0x38)) = r3;
    0x0009eab0 b 0x9e844                                     |             goto label_4;
                                                             |         }
    0x0009eab4 sub r3, r3, 0x20                              |         r3 -= 0x20;
    0x0009eab8 cmp r3, 0x5e                                  |         
    0x0009eabc bls 0x9ea78                                   |         
                                                             |     } while (r3 < 0x5e);
    0x0009eac0 b 0x9ea54                                     |     goto label_5;
                                                             | }
    ; 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 @ 0x9eb14 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0009eb14 ()                                      | void fcn_0009eb14 (int32_t arg_1h, int32_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_14h;
                                                                 |     r0 = arg1;
    0x0009eb14 ldr r3, [pc, 0x3c4]                               |     r3 = *(0x9eedc);
    0x0009eb18 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0009eb1c ldr r4, [r3]                                      |     r4 = *(0x9eedc);
    0x0009eb20 sub sp, sp, 0x14                                  |     
    0x0009eb24 ldr r3, [r4]                                      |     
    0x0009eb28 ldr r3, [r3]                                      |     r3 = *(0x9eedc);
    0x0009eb2c tst r3, 2                                         |     
                                                                 |     if ((r3 & 2) == 0) {
    0x0009eb30 beq 0x9eed8                                       |         goto label_3;
                                                                 |     }
    0x0009eb34 ldr r3, [r0]                                      |     r3 = *(r0);
    0x0009eb38 mov r5, r0                                        |     r5 = r0;
    0x0009eb3c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0009eb40 beq 0x9ec68                                       |         goto label_4;
                                                                 |     }
    0x0009eb44 ldr r3, [r4, 0x38]                                |     r3 = *((r4 + 0x38));
    0x0009eb48 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0009eb4c beq 0x9eed8                                       |         goto label_3;
                                                                 |     }
    0x0009eb50 ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x0009eb54 mov r5, 0                                         |     r5 = 0;
    0x0009eb58 str r3, [sp, 4]                                   |     var_4h = r3;
    0x0009eb5c bl 0x9e54c                                        |     fcn_0009e54c ();
    0x0009eb60 ldr r7, [r4, 0x38]                                |     r7 = *((r4 + 0x38));
    0x0009eb64 mov r6, r5                                        |     r6 = r5;
                                                                 |     do {
    0x0009eb68 cmp r7, r6                                        |         
                                                                 |         if (r7 <= r6) {
    0x0009eb6c bgt 0x9ebd4                                       |             
    0x0009eb70 add r3, r5, 2                                     |             r3 = r5 + 2;
    0x0009eb74 mov r1, r3                                        |             r1 = r3;
    0x0009eb78 ldr r0, [r4, 4]                                   |             r0 = *((r4 + 4));
    0x0009eb7c str r3, [sp]                                      |             *(sp) = r3;
    0x0009eb80 bl 0xa65d4                                        |             r0 = fcn_000a65d4 (r0, r1);
    0x0009eb84 cmp r0, 1                                         |             
    0x0009eb88 mov r8, r0                                        |             r8 = r0;
                                                                 |             if (r0 > 1) {
    0x0009eb8c movle r5, r7                                      |                 r5 = r7;
                                                                 |             }
                                                                 |             if (r0 > 1) {
    0x0009eb90 movle r8, 1                                       |                 r8 = 1;
                                                                 |             }
                                                                 |             if (r0 > 1) {
    0x0009eb94 ble 0x9ebb0                                       |                 
    0x0009eb98 mov r1, r8                                        |                 r1 = r8;
    0x0009eb9c mov r0, r7                                        |                 r0 = r7;
    0x0009eba0 bl 0xa6778                                        |                 fcn_000a6778 (r0, r1);
    0x0009eba4 cmp r1, 0                                         |                 
    0x0009eba8 mov r5, r0                                        |                 r5 = r0;
                                                                 |                 if (r1 != 0) {
    0x0009ebac addne r5, r0, 1                                   |                     r5 = r0 + 1;
                                                                 |                     goto label_5;
                                                                 |                 }
                                                                 |             }
                                                                 | label_5:
    0x0009ebb0 lsl r3, r5, 2                                     |             r3 = r5 << 2;
    0x0009ebb4 mov r6, 0                                         |             r6 = 0;
    0x0009ebb8 str r3, [sp, 8]                                   |             var_8h = r3;
                                                                 | label_0:
    0x0009ebbc cmp r5, r6                                        |             
                                                                 |             if (r5 <= r6) {
    0x0009ebc0 ble 0x9ec48                                       |                 goto label_6;
                                                                 |             }
    0x0009ebc4 lsl fp, r6, 2                                     |             
    0x0009ebc8 mov sl, r6                                        |             sl = r6;
    0x0009ebcc mov sb, 1                                         |             sb = 1;
    0x0009ebd0 b 0x9ec14                                         |             goto label_7;
                                                                 |         }
    0x0009ebd4 ldr r3, [r4, 0x34]                                |         r3 = *((r4 + 0x34));
    0x0009ebd8 ldr r0, [r3, r6, lsl 2]                           |         offset_0 = r6 << 2;
                                                                 |         r0 = *((r3 + offset_0));
    0x0009ebdc bl 0x1514c                                        |         strlen (r0);
    0x0009ebe0 add r6, r6, 1                                     |         r6++;
    0x0009ebe4 cmp r5, r0                                        |         
                                                                 |         if (r5 >= r0) {
    0x0009ebe8 movlt r5, r0                                      |             r5 = r0;
                                                                 |         }
    0x0009ebec b 0x9eb68                                         |         
                                                                 |     } while (1);
                                                                 |     do {
    0x0009ebf0 str r1, [sp, 0xc]                                 |         var_ch = r1;
    0x0009ebf4 bl 0x1514c                                        |         strlen (r0);
    0x0009ebf8 ldr r2, [sp]                                      |         r2 = *(sp);
    0x0009ebfc ldr r3, [pc, 0x2e0]                               |         r3 = *(0x9eee0);
    0x0009ec00 ldr r1, [sp, 0xc]                                 |         r1 = var_ch;
    0x0009ec04 add sb, sb, 1                                     |         sb++;
    0x0009ec08 sub r2, r2, r0                                    |         r2 -= r0;
    0x0009ec0c ldr r0, [pc, 0x2d4]                               |         r0 = *(0x9eee4);
    0x0009ec10 bl 0x1436c                                        |         printf (r0, r1, r2, r3);
                                                                 | label_7:
    0x0009ec14 ldr r3, [r4, 0x34]                                |         r3 = *((r4 + 0x34));
    0x0009ec18 cmp sb, r8                                        |         
    0x0009ec1c ldr r1, [r3, fp]                                  |         r1 = *((r3 + fp));
    0x0009ec20 mov r0, r1                                        |         r0 = r1;
                                                                 |         if (sb == r8) {
    0x0009ec24 beq 0x9ec3c                                       |             goto label_8;
                                                                 |         }
    0x0009ec28 ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x0009ec2c add sl, sl, r5                                    |         sl += r5;
    0x0009ec30 cmp r7, sl                                        |         
    0x0009ec34 add fp, fp, r3                                    |         
    0x0009ec38 bgt 0x9ebf0                                       |         
                                                                 |     } while (r7 > sl);
                                                                 | label_8:
    0x0009ec3c bl 0x14660                                        |     puts (r0);
    0x0009ec40 add r6, r6, 1                                     |     r6++;
    0x0009ec44 b 0x9ebbc                                         |     goto label_0;
                                                                 | label_6:
    0x0009ec48 ldr r1, [r4, 0x18]                                |     r1 = *((r4 + 0x18));
    0x0009ec4c ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x0009ec50 mov r2, 1                                         |     r2 = 1;
    0x0009ec54 sub r1, r1, r3                                    |     r1 -= r3;
    0x0009ec58 mov r0, 0                                         |     r0 = 0;
    0x0009ec5c add sp, sp, 0x14                                  |     
    0x0009ec60 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}          |     
    0x0009ec64 b 0x9e584                                         |     void (*0x9e584)() ();
                                                                 | label_4:
    0x0009ec68 mov r3, 1                                         |     r3 = 1;
    0x0009ec6c str r3, [r0]                                      |     *(r0) = r3;
    0x0009ec70 mov r0, 0x800                                     |     r0 = 0x800;
    0x0009ec74 bl 0x18968                                        |     fcn_00018968 (r0);
    0x0009ec78 ldr r2, [r4, 0x14]                                |     r2 = *((r4 + 0x14));
    0x0009ec7c ldr r1, [r4, 0x20]                                |     r1 = *((r4 + 0x20));
    0x0009ec80 add r2, r2, 1                                     |     r2++;
    0x0009ec84 mov r7, r0                                        |     r7 = r0;
    0x0009ec88 bl 0xa40f4                                        |     fcn_000a40f4 (r0);
    0x0009ec8c mov r0, r7                                        |     r0 = r7;
    0x0009ec90 bl 0x9d540                                        |     r0 = fcn_0009d540 (r0);
    0x0009ec94 mov r6, r0                                        |     r6 = r0;
    0x0009ec98 bl 0x9d4b0                                        |     fcn_0009d4b0 ();
    0x0009ec9c ldr r3, [r4, 0x34]                                |     r3 = *((r4 + 0x34));
    0x0009eca0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0009eca4 bne 0x9ecb8                                       |         
    0x0009eca8 mov r1, r6                                        |         r1 = r6;
    0x0009ecac mov r0, r7                                        |         r0 = r7;
    0x0009ecb0 bl 0x9e7e0                                        |         r0 = fcn_0009e7e0 (r0, r1);
    0x0009ecb4 mov r8, r0                                        |         r8 = r0;
                                                                 |     }
    0x0009ecb8 mov r0, r7                                        |     r0 = r7;
    0x0009ecbc bl 0x1514c                                        |     strlen (r0);
    0x0009ecc0 ldr sl, [pc, 0x224]                               |     sl = " `\"#$%^&*()=+{}[]:;'|\\<>";
    0x0009ecc4 add sb, r7, r0                                    |     sb = r7 + r0;
    0x0009ecc8 sub r6, sb, r8                                    |     r6 = sb - r8;
                                                                 |     do {
    0x0009eccc cmp r6, sb                                        |         
                                                                 |         if (r6 > sb) {
    0x0009ecd0 blo 0x9ed64                                       |             
    0x0009ecd4 ldr r0, [r4, 0x34]                                |             r0 = *((r4 + 0x34));
    0x0009ecd8 ldr r1, [r4, 0x38]                                |             r1 = *((r4 + 0x38));
    0x0009ecdc cmp r0, 0                                         |             
                                                                 |             if (r0 != 0) {
    0x0009ece0 beq 0x9ed1c                                       |                 
    0x0009ece4 bl 0x98a10                                        |                 fcn_00098a10 ();
    0x0009ece8 mov fp, 0                                         |                 
    0x0009ecec mov r6, fp                                        |                 r6 = fp;
                                                                 | label_1:
    0x0009ecf0 ldr r1, [r4, 0x38]                                |                 r1 = *((r4 + 0x38));
    0x0009ecf4 ldr sb, [r4, 0x34]                                |                 sb = *((r4 + 0x34));
    0x0009ecf8 sub r1, r1, 1                                     |                 r1--;
    0x0009ecfc cmp r1, r6                                        |                 
    0x0009ed00 lsl r0, r6, 2                                     |                 r0 = r6 << 2;
    0x0009ed04 ldr sl, [sb, r6, lsl 2]                           |                 offset_1 = r6 << 2;
                                                                 |                 sl = *((sb + offset_1));
    0x0009ed08 lsl r2, fp, 2                                     |                 r2 = fp << 2;
    0x0009ed0c add r3, fp, 1                                     |                 r3 += arg_1h;
                                                                 |                 if (r1 > r6) {
    0x0009ed10 bhi 0x9ed7c                                       |                     goto label_9;
                                                                 |                 }
    0x0009ed14 str sl, [sb, r2]                                  |                 *((sb + r2)) = sl;
    0x0009ed18 str r3, [r4, 0x38]                                |                 *((r4 + 0x38)) = r3;
                                                                 |             }
    0x0009ed1c ldr r3, [r4, 0x38]                                |             r3 = *((r4 + 0x38));
    0x0009ed20 cmp r3, 1                                         |             
                                                                 |             if (r3 == 1) {
    0x0009ed24 beq 0x9ee98                                       |                 goto label_10;
                                                                 |             }
    0x0009ed28 bl 0x9d8c4                                        |             fcn_0009d8c4 ();
    0x0009ed2c ldr r5, [r4, 0x34]                                |             r5 = *((r4 + 0x34));
    0x0009ed30 cmp r5, 0                                         |             
                                                                 |             if (r5 == 0) {
    0x0009ed34 beq 0x9ee80                                       |                 goto label_11;
                                                                 |             }
    0x0009ed38 ldr r0, [r5]                                      |             r0 = *(r5);
    0x0009ed3c bl 0x189d4                                        |             r0 = fcn_000189d4 (r0);
    0x0009ed40 mov r5, r0                                        |             r5 = r0;
    0x0009ed44 mov r3, r0                                        |             r3 = r0;
                                                                 | label_2:
    0x0009ed48 ldrb r1, [r3]                                     |             r1 = *(r3);
    0x0009ed4c cmp r1, 0                                         |             
                                                                 |             if (r1 == 0) {
    0x0009ed50 beq 0x9eddc                                       |                 goto label_12;
                                                                 |             }
    0x0009ed54 ldr ip, [r4, 0x38]                                |             ip = *((r4 + 0x38));
    0x0009ed58 mov r2, 1                                         |             r2 = 1;
    0x0009ed5c sub r0, r3, r5                                    |             r0 = r3 - r5;
    0x0009ed60 b 0x9edcc                                         |             goto label_13;
                                                                 |         }
    0x0009ed64 ldrb r1, [r6], 1                                  |         r1 = *(r6);
                                                                 |         r6++;
    0x0009ed68 mov r0, sl                                        |         r0 = sl;
    0x0009ed6c bl 0x1517c                                        |         r0 = strchr (r0, r1);
    0x0009ed70 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0009ed74 addne r8, r8, 1                                   |             r8++;
                                                                 |         }
    0x0009ed78 b 0x9eccc                                         |         
                                                                 |     } while (1);
                                                                 | label_9:
    0x0009ed7c add r0, sb, r0                                    |     r0 = sb + r0;
    0x0009ed80 ldr r1, [r0, 4]                                   |     r1 = *((r0 + 4));
    0x0009ed84 mov r0, sl                                        |     r0 = sl;
    0x0009ed88 stm sp, {r2, r3}                                  |     *(sp) = r2;
                                                                 |     *((sp + 4)) = r3;
    0x0009ed8c bl 0x14ed0                                        |     strcmp (r0, r1);
    0x0009ed90 ldm sp, {r2, r3}                                  |     r2 = *(sp);
                                                                 |     r3 = *((sp + 4));
    0x0009ed94 add r6, r6, 1                                     |     r6++;
    0x0009ed98 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0009ed9c strne sl, [sb, r2]                                |         *((sb + r2)) = sl;
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x0009eda0 movne fp, r3                                      |         goto label_14;
                                                                 |     }
                                                                 |     if (r0 != 0) {
                                                                 | label_14:
    0x0009eda4 bne 0x9ecf0                                       |         goto label_1;
                                                                 |     }
    0x0009eda8 mov r0, sl                                        |     r0 = sl;
    0x0009edac bl 0x152a8                                        |     free (r0);
    0x0009edb0 b 0x9ecf0                                         |     goto label_1;
                                                                 |     do {
    0x0009edb4 ldr lr, [r4, 0x34]                                |         
    0x0009edb8 ldr lr, [lr, r2, lsl 2]                           |         
    0x0009edbc ldrb lr, [lr, r0]                                 |         
    0x0009edc0 cmp lr, r1                                        |         
                                                                 |         if (lr != r1) {
    0x0009edc4 bne 0x9eddc                                       |             goto label_12;
                                                                 |         }
    0x0009edc8 add r2, r2, 1                                     |         r2++;
                                                                 | label_13:
    0x0009edcc cmp ip, r2                                        |         
    0x0009edd0 bhi 0x9edb4                                       |         
                                                                 |     } while (ip > r2);
    0x0009edd4 add r3, r3, 1                                     |     r3++;
    0x0009edd8 b 0x9ed48                                         |     goto label_2;
                                                                 | label_12:
    0x0009eddc cmp r3, r5                                        |     
                                                                 |     if (r3 == r5) {
    0x0009ede0 beq 0x9ee80                                       |         goto label_11;
                                                                 |     }
    0x0009ede4 mov r2, 0                                         |     r2 = 0;
    0x0009ede8 strb r2, [r3]                                     |     *(r3) = r2;
    0x0009edec mov r0, r5                                        |     r0 = r5;
    0x0009edf0 bl 0x9e774                                        |     r0 = fcn_0009e774 (r0);
    0x0009edf4 mov sb, r0                                        |     sb = r0;
    0x0009edf8 mov r0, r5                                        |     r0 = r5;
    0x0009edfc bl 0x152a8                                        |     free (r0);
    0x0009ee00 mov r0, sb                                        |     r0 = sb;
    0x0009ee04 bl 0x1514c                                        |     strlen (r0);
    0x0009ee08 mov r5, sb                                        |     r5 = sb;
    0x0009ee0c mov r6, r0                                        |     r6 = r0;
                                                                 |     do {
    0x0009ee10 ldr r3, [r4, 0x18]                                |         r3 = *((r4 + 0x18));
    0x0009ee14 ldr r2, [r4, 0x1c]                                |         r2 = *((r4 + 0x1c));
    0x0009ee18 sub r3, r3, r8                                    |         r3 -= r8;
    0x0009ee1c add r3, r3, r6                                    |         r3 += r6;
    0x0009ee20 cmp r3, r2                                        |         
                                                                 |         if (r3 < r2) {
    0x0009ee24 bge 0x9ee80                                       |             
    0x0009ee28 ldr r3, [r4, 0x14]                                |             r3 = *((r4 + 0x14));
    0x0009ee2c ldr r1, [r4, 0x20]                                |             r1 = *((r4 + 0x20));
    0x0009ee30 mov r0, r7                                        |             r0 = r7;
    0x0009ee34 add r1, r1, r3                                    |             r1 += r3;
    0x0009ee38 bl 0x142f4                                        |             strcpy (r0, r1)
    0x0009ee3c ldr ip, [r4, 0x20]                                |             ip = *((r4 + 0x20));
    0x0009ee40 ldr r0, [r4, 0x14]                                |             r0 = *((r4 + 0x14));
    0x0009ee44 add r2, r5, r8                                    |             r2 = r5 + r8;
    0x0009ee48 mov r3, r7                                        |             r3 = r7;
    0x0009ee4c ldr r1, [pc, 0x9c]                                |             r1 = " `\"#$%^&*()=+{}[]:;'|\\<>";
    0x0009ee50 add r0, ip, r0                                    |             r0 = ip + r0;
    0x0009ee54 bl 0x14f48                                        |             sprintf (r0, " `\"#$%^&*()=+{}[]:;'|\\<>", r2);
    0x0009ee58 ldr r0, [r4, 0x20]                                |             r0 = *((r4 + 0x20));
    0x0009ee5c bl 0x1514c                                        |             strlen (r0);
    0x0009ee60 ldr r3, [r4, 0x14]                                |             r3 = *((r4 + 0x14));
    0x0009ee64 mov r2, 0                                         |             r2 = 0;
    0x0009ee68 sub r8, r3, r8                                    |             r8 = r3 - r8;
    0x0009ee6c add r6, r8, r6                                    |             r6 = r8 + r6;
    0x0009ee70 str r0, [r4, 0x18]                                |             *((r4 + 0x18)) = r0;
    0x0009ee74 sub r1, r0, r6                                    |             r1 = r0 - r6;
    0x0009ee78 ldr r0, [r4, 0xc]                                 |             r0 = *((r4 + 0xc));
    0x0009ee7c bl 0x9e584                                        |             fcn_0009e584 (r0, r1);
                                                                 |         }
                                                                 | label_11:
    0x0009ee80 mov r0, r5                                        |         r0 = r5;
    0x0009ee84 bl 0x152a8                                        |         free (r0);
    0x0009ee88 mov r0, r7                                        |         r0 = r7;
    0x0009ee8c add sp, sp, 0x14                                  |         
    0x0009ee90 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}          |         
    0x0009ee94 b 0x152a8                                         |         void (*0x152a8)() ();
                                                                 | label_10:
    0x0009ee98 ldr r3, [r4, 0x34]                                |         r3 = *((r4 + 0x34));
    0x0009ee9c mov sb, 0                                         |         sb = 0;
    0x0009eea0 ldr r0, [r3]                                      |         r0 = *(r3);
    0x0009eea4 str sb, [r5]                                      |         *(r5) = sb;
    0x0009eea8 bl 0x9e774                                        |         r0 = fcn_0009e774 (r0);
    0x0009eeac mov r5, r0                                        |         r5 = r0;
    0x0009eeb0 bl 0x1514c                                        |         r0 = strlen (r0);
    0x0009eeb4 add r3, r5, r0                                    |         r3 = r5 + r0;
    0x0009eeb8 ldrb r3, [r3, -1]                                 |         r3 = *((r3 - 1));
    0x0009eebc mov r6, r0                                        |         r6 = r0;
    0x0009eec0 cmp r3, 0x2f                                      |         
                                                                 |         if (r3 == 0x2f) {
    0x0009eec4 movne r3, 0x20                                    |             r3 = 0x20;
                                                                 |         }
                                                                 |         if (r3 == 0x2f) {
    0x0009eec8 addne r6, r0, 1                                   |             r6 = r0 + 1;
                                                                 |         }
                                                                 |         if (r3 == 0x2f) {
    0x0009eecc strbne r3, [r5, r0]                               |             *((r5 + r0)) = r3;
                                                                 |         }
                                                                 |         if (r3 == 0x2f) {
    0x0009eed0 strbne sb, [r5, r6]                               |             *((r5 + r6)) = sb;
                                                                 |         }
    0x0009eed4 b 0x9ee10                                         |         
                                                                 |     } while (1);
                                                                 | label_3:
    0x0009eed8 add sp, sp, 0x14                                  |     
    0x0009eedc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |     
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/bin/busybox @ 0xa1774 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.000a1774 ()                              | void fcn_000a1774 (int32_t arg1, int32_t arg2) {
                                                         |     int32_t var_0h;
                                                         |     int32_t var_4h;
                                                         |     int32_t var_8h;
                                                         |     int32_t var_ch;
                                                         |     int32_t var_10h;
                                                         |     int32_t var_14h;
                                                         |     int32_t var_18h;
                                                         |     int32_t var_1ch;
                                                         |     int32_t var_20h;
                                                         |     int32_t var_2ch;
                                                         |     int32_t var_30h;
                                                         |     int32_t var_34h;
                                                         |     int32_t var_38h;
                                                         |     char * s;
                                                         |     int32_t var_1h;
                                                         |     char * var_70h;
                                                         |     int32_t var_1h_2;
                                                         |     char * var_0h_2;
                                                         |     int32_t var_88h;
                                                         |     int32_t var_8ch;
                                                         |     int32_t var_470h;
                                                         |     int32_t var_4h_2;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x000a1774 push {r4, r5, r6, r7, r8, sb, lr}         |     
    0x000a1778 subs r4, r0, 0                            |     r4 = r0 - 0;
    0x000a177c sub sp, sp, 0x470                         |     
    0x000a1780 sub sp, sp, 4                             |     
    0x000a1784 mov r5, r1                                |     r5 = r1;
                                                         |     if (r4 != r0) {
    0x000a1788 bne 0xa17c8                               |         goto label_2;
                                                         |     }
    0x000a178c bl 0x1457c                                |     r0 = getpagesize ();
    0x000a1790 mov r6, r0                                |     r6 = r0;
    0x000a1794 mov r0, 0x58                              |     r0 = 0x58;
    0x000a1798 bl 0x189b8                                |     r0 = fcn_000189b8 (r0);
    0x000a179c mov r4, r0                                |     r4 = r0;
    0x000a17a0 ldr r0, [pc, 0x2b8]                       |     r0 = *(0xa1a5c);
    0x000a17a4 bl 0x18f64                                |     fcn_00018f64 (r0);
    0x000a17a8 str r0, [r4]                              |     *(r4) = r0;
                                                         |     do {
    0x000a17ac lsrs r6, r6, 1                            |         r6 >>= 1;
    0x000a17b0 ldrb r3, [r4, 4]                          |         r3 = *((r4 + 4));
                                                         |         if (r6 == r6) {
    0x000a17b4 addne r3, r3, 1                           |             r3++;
                                                         |         }
                                                         |         if (r6 == r6) {
    0x000a17b8 strbne r3, [r4, 4]                        |             *((r4 + 4)) = r3;
                                                         |         }
    0x000a17bc bne 0xa17ac                               |         
                                                         |     } while (r6 != r6);
    0x000a17c0 sub r3, r3, 0xa                           |     r3 -= 0xa;
    0x000a17c4 strb r3, [r4, 5]                          |     *((r4 + 5)) = r3;
                                                         | label_2:
    0x000a17c8 ldr r8, [pc, 0x294]                       |     r8 = *(0xa1a60);
    0x000a17cc ldr sb, [pc, 0x294]                       |     sb = *(0x000a1a68);
    0x000a17d0 and r8, r8, r5                            |     r8 &= r5;
                                                         |     do {
                                                         | label_1:
    0x000a17d4 ldr r0, [r4]                              |         r0 = *(r4);
    0x000a17d8 bl 0x14c48                                |         r0 = readdir64 ();
    0x000a17dc subs r6, r0, 0                            |         r6 = r0 - 0;
                                                         |         if (r6 == r0) {
    0x000a17e0 bne 0xa1800                               |             
    0x000a17e4 mov r0, r4                                |             r0 = r4;
    0x000a17e8 bl 0xa1748                                |             fcn_000a1748 (r0);
    0x000a17ec mov r4, r6                                |             r4 = r6;
                                                         | label_0:
    0x000a17f0 mov r0, r4                                |             r0 = r4;
    0x000a17f4 add sp, sp, 0x470                         |             
    0x000a17f8 add sp, sp, 4                             |             
    0x000a17fc pop {r4, r5, r6, r7, r8, sb, pc}          |             
                                                         |         }
    0x000a1800 mov r1, 0                                 |         r1 = 0;
    0x000a1804 add r0, r6, 0x13                          |         r0 = r6 + 0x13;
    0x000a1808 mov r2, 0xa                               |         r2 = 0xa;
    0x000a180c bl 0x1a0ec                                |         fcn_0001a0ec (r0, r1);
    0x000a1810 ldr r3, [sb]                              |         r3 = *(sb);
    0x000a1814 ldr r1, [r3]                              |         r1 = *(r3);
    0x000a1818 cmp r1, 0                                 |         
    0x000a181c mov r6, r0                                |         r6 = r0;
    0x000a1820 bne 0xa17d4                               |         
                                                         |     } while (r1 != 0);
    0x000a1824 mov r2, 0x48                              |     r2 = 0x48;
    0x000a1828 add r0, r4, 0x10                          |     r0 = r4 + 0x10;
    0x000a182c bl 0x14d98                                |     memset (r0, r1, r2);
    0x000a1830 bics r3, r5, 1                            |     __asm ("bics r3, r5, 1");
    0x000a1834 str r6, [r4, 0x24]                        |     *((r4 + 0x24)) = r6;
                                                         |     if (r1 == 0) {
    0x000a1838 beq 0xa17f0                               |         goto label_0;
                                                         |     }
    0x000a183c mov r2, r6                                |     r2 = r6;
    0x000a1840 ldr r1, [pc, 0x224]                       |     r1 = *(0xa1a68);
    0x000a1844 add r0, sp, 0x3c                          |     r0 += s;
    0x000a1848 bl 0x14f48                                |     sprintf (r0, r1, r2);
    0x000a184c add r3, sp, 0x3c                          |     r3 += s;
    0x000a1850 tst r5, 0x10                              |     
    0x000a1854 add r6, r3, r0                            |     r6 = r3 + r0;
                                                         |     if ((r5 & 0x10) == 0) {
    0x000a1858 beq 0xa1880                               |         goto label_3;
                                                         |     }
    0x000a185c add r1, sp, 0x70                          |     r1 += var_70h;
    0x000a1860 mov r0, r3                                |     r0 = r3;
    0x000a1864 bl 0x14420                                |     r0 = stat64 ();
    0x000a1868 cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x000a186c bne 0xa17d4                               |         goto label_1;
                                                         |     }
    0x000a1870 ldr r3, [sp, 0x88]                        |     r3 = var_88h;
    0x000a1874 str r3, [r4, 0x34]                        |     *((r4 + 0x34)) = r3;
    0x000a1878 ldr r3, [sp, 0x8c]                        |     r3 = var_8ch;
    0x000a187c str r3, [r4, 0x38]                        |     *((r4 + 0x38)) = r3;
                                                         | label_3:
    0x000a1880 cmp r8, 0                                 |     
                                                         |     if (r8 == 0) {
    0x000a1884 beq 0xa19cc                               |         goto label_4;
                                                         |     }
    0x000a1888 ldr r1, [pc, 0x1e0]                       |     r1 = *(0xa1a6c);
    0x000a188c mov r0, r6                                |     r0 = r6;
    0x000a1890 bl 0x142f4                                |     strcpy (r0, r1)
    0x000a1894 add r1, sp, 0x70                          |     r1 += var_70h;
    0x000a1898 add r0, sp, 0x3c                          |     r0 += s;
    0x000a189c bl 0xa1690                                |     r0 = fcn_000a1690 (r0);
    0x000a18a0 cmp r0, 0                                 |     
                                                         |     if (r0 < 0) {
    0x000a18a4 blt 0xa17d4                               |         goto label_1;
                                                         |     }
    0x000a18a8 mov r1, 0x29                              |     r1 = 0x29;
    0x000a18ac add r0, sp, 0x70                          |     r0 += var_70h;
    0x000a18b0 bl 0x1496c                                |     strrchr (r0, r1);
    0x000a18b4 mov r3, 0                                 |     r3 = 0;
    0x000a18b8 mov r1, 0x28                              |     r1 = 0x28;
    0x000a18bc mov r7, r0                                |     r7 = r0;
    0x000a18c0 strb r3, [r7], 2                          |     *(r7) = r3;
                                                         |     r7 += 2;
    0x000a18c4 add r0, sp, 0x70                          |     r0 += var_70h;
    0x000a18c8 bl 0x1517c                                |     strchr (r0, r1);
    0x000a18cc mov r2, 0x10                              |     r2 = 0x10;
    0x000a18d0 add r1, r0, 1                             |     r1 += var_1h_2;
    0x000a18d4 add r0, r4, 0x48                          |     r0 = r4 + 0x48;
    0x000a18d8 bl 0xa40f4                                |     fcn_000a40f4 (r0);
    0x000a18dc add r3, sp, 0x38                          |     r3 += var_38h;
    0x000a18e0 str r3, [sp, 0x20]                        |     var_20h = r3;
    0x000a18e4 add r3, sp, 0x34                          |     r3 += var_34h;
    0x000a18e8 str r3, [sp, 0x1c]                        |     var_1ch = r3;
    0x000a18ec add r3, r4, 0x20                          |     r3 = r4 + 0x20;
    0x000a18f0 str r3, [sp, 0x18]                        |     var_18h = r3;
    0x000a18f4 add r2, sp, 0x2c                          |     r2 += var_2ch;
    0x000a18f8 add r3, sp, 0x30                          |     r3 += var_30h;
    0x000a18fc str r2, [sp, 0x14]                        |     var_14h = r2;
    0x000a1900 str r3, [sp, 8]                           |     var_8h = r3;
    0x000a1904 add r2, r4, 0x18                          |     r2 = r4 + 0x18;
    0x000a1908 add r3, r4, 0x30                          |     r3 = r4 + 0x30;
    0x000a190c str r2, [sp, 0x10]                        |     var_10h = r2;
    0x000a1910 str r3, [sp, 4]                           |     var_4h = r3;
    0x000a1914 add r2, r4, 0x1c                          |     r2 = r4 + 0x1c;
    0x000a1918 add r3, r4, 0x2c                          |     r3 = r4 + 0x2c;
    0x000a191c str r2, [sp, 0xc]                         |     var_ch = r2;
    0x000a1920 str r3, [sp]                              |     *(sp) = r3;
    0x000a1924 add r2, r4, 0x44                          |     r2 = r4 + 0x44;
    0x000a1928 add r3, r4, 0x28                          |     r3 = r4 + 0x28;
    0x000a192c ldr r1, [pc, 0x140]                       |     r1 = *(0xa1a70);
    0x000a1930 mov r0, r7                                |     r0 = r7;
    0x000a1934 bl 0x14c9c                                |     r0 = sscanf (r0, r1, r2);
    0x000a1938 cmp r0, 0xa                               |     
                                                         |     if (r0 <= 0xa) {
    0x000a193c ble 0xa17d4                               |         goto label_1;
                                                         |     }
    0x000a1940 ldrb r2, [r4, 5]                          |     r2 = *((r4 + 5));
    0x000a1944 ldr r3, [sp, 0x38]                        |     r3 = var_38h;
    0x000a1948 ldr r1, [sp, 0x34]                        |     r1 = var_34h;
    0x000a194c lsl r3, r3, r2                            |     r3 <<= r2;
    0x000a1950 ldr r2, [sp, 0x30]                        |     r2 = var_30h;
    0x000a1954 str r3, [r4, 0x14]                        |     *((r4 + 0x14)) = r3;
    0x000a1958 ldr r3, [pc, 0x118]                       |     r3 = "%c %u %u %u %d %*s %*s %*s %*s %*s %*s %lu %lu %*s %*s %*s %ld %*s %*s %lu %lu %lu ";
    0x000a195c lsr r1, r1, 0xa                           |     r1 >>= 0xa;
    0x000a1960 and r3, r3, r2, asr 8                     |     r3 &= (r2 >> 8);
    0x000a1964 str r3, [r4, 0x3c]                        |     *((r4 + 0x3c)) = r3;
    0x000a1968 ldr r3, [pc, 0x10c]                       |     r3 = *(0xa1a78);
    0x000a196c cmp r1, 0                                 |     
    0x000a1970 and r3, r3, r2, asr 12                    |     r3 &= (r2 >> 12);
    0x000a1974 and r2, r2, 0xff                          |     r2 &= 0xff;
    0x000a1978 orr r3, r3, r2                            |     r3 |= r2;
    0x000a197c str r3, [r4, 0x40]                        |     *((r4 + 0x40)) = r3;
    0x000a1980 mov r3, 0x20                              |     r3 = 0x20;
    0x000a1984 str r1, [r4, 0x10]                        |     *((r4 + 0x10)) = r1;
    0x000a1988 strb r3, [r4, 0x45]                       |     *((r4 + 0x45)) = r3;
    0x000a198c strb r3, [r4, 0x46]                       |     *((r4 + 0x46)) = r3;
                                                         |     if (r1 == 0) {
    0x000a1990 bne 0xa19ac                               |         
    0x000a1994 ldrb r3, [r4, 0x44]                       |         r3 = *((r4 + 0x44));
    0x000a1998 cmp r3, 0x5a                              |         
                                                         |         if (r3 == 0x5a) {
    0x000a199c movne r3, 0x57                            |             r3 = 0x57;
                                                         |         }
                                                         |         if (r3 == 0x5a) {
    0x000a19a0 strbne r3, [r4, 0x45]                     |             *((r4 + 0x45)) = r3;
                                                         |         }
                                                         |         if (r3 == 0x5a) {
    0x000a19a4 movne r3, 2                               |             r3 = 2;
                                                         |         }
                                                         |         if (r3 != 0x5a) {
    0x000a19a8 bne 0xa19b0                               |             goto label_5;
                                                         |         }
                                                         |     }
    0x000a19ac mov r3, 1                                 |     r3 = 1;
                                                         | label_5:
    0x000a19b0 ldr r2, [sp, 0x2c]                        |     r2 = var_2ch;
    0x000a19b4 cmp r2, 0                                 |     
                                                         |     if (r2 != 0) {
    0x000a19b8 beq 0xa19cc                               |         
    0x000a19bc add r3, r4, r3                            |         r3 = r4 + r3;
                                                         |         if (r2 >= 0) {
    0x000a19c0 movlt r2, 0x3c                            |             r2 = 0x3c;
                                                         |         }
                                                         |         if (r2 < 0) {
    0x000a19c4 movge r2, 0x4e                            |             r2 = 0x4e;
                                                         |         }
    0x000a19c8 strb r2, [r3, 0x44]                       |         *((r3 + 0x44)) = r2;
                                                         |     }
                                                         | label_4:
    0x000a19cc tst r5, 0x100                             |     
                                                         |     if ((r5 & 0x100) != 0) {
    0x000a19d0 beq 0xa19f4                               |         
    0x000a19d4 ldr r1, [pc, 0xa4]                        |         r1 = *(0xa1a7c);
    0x000a19d8 mov r0, r6                                |         r0 = r6;
    0x000a19dc bl 0x142f4                                |         strcpy (r0, r1)
    0x000a19e0 ldr r0, [r4, 0xc]                         |         r0 = *((r4 + 0xc));
    0x000a19e4 bl 0x152a8                                |         free (r0);
    0x000a19e8 add r0, sp, 0x3c                          |         r0 += s;
    0x000a19ec bl 0x19208                                |         fcn_00019208 (r0);
    0x000a19f0 str r0, [r4, 0xc]                         |         *((r4 + 0xc)) = r0;
                                                         |     }
    0x000a19f4 ldr r3, [pc, 0x88]                        |     r3 = "exe";
    0x000a19f8 tst r5, r3                                |     
                                                         |     if ((r5 & r3) == 0) {
    0x000a19fc beq 0xa17f0                               |         goto label_0;
                                                         |     }
    0x000a1a00 ldr r0, [r4, 8]                           |     r0 = *((r4 + 8));
    0x000a1a04 bl 0x152a8                                |     free (r0);
    0x000a1a08 mov r3, 0                                 |     r3 = 0;
    0x000a1a0c str r3, [r4, 8]                           |     *((r4 + 8)) = r3;
    0x000a1a10 ldr r1, [pc, 0x70]                        |     r1 = "_lib_ld_uClibc.so.0";
    0x000a1a14 mov r0, r6                                |     r0 = r6;
    0x000a1a18 bl 0x142f4                                |     strcpy (r0, "_lib_ld_uClibc.so.0")
    0x000a1a1c add r1, sp, 0x70                          |     r1 += var_70h;
    0x000a1a20 add r0, sp, 0x3c                          |     r0 += s;
    0x000a1a24 bl 0xa1690                                |     fcn_000a1690 (r0);
    0x000a1a28 subs r1, r0, 0                            |     r1 -= s;
                                                         |     if (r1 <= s) {
    0x000a1a2c ble 0xa17f0                               |         goto label_0;
                                                         |     }
    0x000a1a30 ands r5, r5, 0x10000                      |     r5 &= 0x10000;
                                                         |     if (r5 == r5) {
    0x000a1a34 beq 0xa1a50                               |         goto label_6;
                                                         |     }
    0x000a1a38 strh r1, [r4, 6]                          |     *((r4 + 6)) = r1;
    0x000a1a3c add r0, sp, 0x70                          |     r0 += var_70h;
    0x000a1a40 add r1, r1, 1                             |     r1 += var_1h;
    0x000a1a44 bl 0x18a48                                |     fcn_00018a48 (r0, r1);
                                                         |     do {
    0x000a1a48 str r0, [r4, 8]                           |         *((r4 + 8)) = r0;
    0x000a1a4c b 0xa17f0                                 |         goto label_0;
                                                         | label_6:
    0x000a1a50 strh r5, [r4, 6]                          |         *((r4 + 6)) = r5;
    0x000a1a54 add r0, sp, 0x70                          |         r0 += var_70h;
    0x000a1a58 bl 0x189d4                                |         fcn_000189d4 (r0);
    0x000a1a5c b 0xa1a48                                 |         
                                                         |     } while (1);
                                                         | }
    ; 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 @ 0xa2294 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000a2294 ()                                      | void fcn_000a2294 (int32_t arg1, char * s) {
                                                                 |     int32_t var_4h;
                                                                 |     void * ptr;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_14h;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int8_t var_220h_2;
                                                                 |     int32_t var_20h;
                                                                 |     int8_t var_220h_4;
                                                                 |     int8_t var_220h_5;
                                                                 |     int8_t var_220h;
                                                                 |     int32_t var_3eh;
                                                                 |     int8_t var_220h_3;
                                                                 |     int32_t var_5fh;
                                                                 |     void * s2;
                                                                 |     int32_t var_a0h;
                                                                 |     void * var_170h;
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_240h;
                                                                 |     int32_t var_244h;
                                                                 |     int32_t var_0h_3;
                                                                 |     int32_t var_0h_4;
                                                                 |     int32_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = s;
    0x000a2294 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x000a2298 mov r4, r0                                        |     r4 = r0;
    0x000a229c sub sp, sp, 0x244                                 |     
    0x000a22a0 mov r0, r1                                        |     r0 = r1;
    0x000a22a4 mov r8, r1                                        |     r8 = r1;
    0x000a22a8 bl 0x1514c                                        |     strlen (r0);
    0x000a22ac ldrb r2, [r8, 1]                                  |     r2 = *((r8 + 1));
    0x000a22b0 add r7, r8, 3                                     |     r7 = r8 + 3;
    0x000a22b4 cmp r2, 0x36                                      |     
                                                                 |     if (r2 != 0x36) {
    0x000a22b8 moveq r6, 0x40                                    |         r6 = 0x40;
                                                                 |     }
                                                                 |     if (r2 == 0x36) {
    0x000a22bc movne r6, 0x20                                    |         r6 = 0x20;
                                                                 |     }
    0x000a22c0 add fp, sp, 0x20                                  |     
                                                                 |     if (r2 != 0x36) {
    0x000a22c4 addeq r3, r0, 0x58                                |         r3 = r0 + 0x58;
                                                                 |     }
                                                                 |     if (r2 == 0x36) {
    0x000a22c8 addne r3, r0, 0x2d                                |         r3 = r0 + 0x2d;
                                                                 |     }
    0x000a22cc mov r0, r3                                        |     r0 = r3;
    0x000a22d0 bl 0x189b8                                        |     fcn_000189b8 (r0);
    0x000a22d4 ldrb r2, [r8, 1]                                  |     r2 = *((r8 + 1));
    0x000a22d8 mov r3, 0x24                                      |     r3 = 0x24;
    0x000a22dc ldr r1, [pc, 0x49c]                               |     r1 = *(0xa277c);
    0x000a22e0 strb r2, [r0, 1]                                  |     *((r0 + 1)) = r2;
    0x000a22e4 str r0, [sp, 0x14]                                |     var_14h = r0;
    0x000a22e8 strb r3, [r0]                                     |     *(r0) = r3;
    0x000a22ec strb r3, [r0, 2]                                  |     *((r0 + 2)) = r3;
    0x000a22f0 add r5, r0, 3                                     |     r5 = r0 + 3;
    0x000a22f4 mov r2, 7                                         |     r2 = 7;
    0x000a22f8 mov r0, r7                                        |     r0 = r7;
    0x000a22fc bl 0x14b94                                        |     r0 = strncmp (r0, r1, r2);
    0x000a2300 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000a2304 bne 0xa2654                                       |         goto label_7;
                                                                 |     }
    0x000a2308 mov r2, 0xa                                       |     r2 = 0xa;
    0x000a230c add r0, r8, r2                                    |     r0 = r8 + r2;
    0x000a2310 mov r1, fp                                        |     r1 = fp;
    0x000a2314 bl 0x1a0ec                                        |     fcn_0001a0ec (r0, r1);
    0x000a2318 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x000a231c ldrb r2, [r3]                                     |     r2 = *(r3);
    0x000a2320 cmp r2, 0x24                                      |     
                                                                 |     if (r2 != 0x24) {
    0x000a2324 bne 0xa2654                                       |         goto label_7;
                                                                 |     }
    0x000a2328 add r7, r3, 1                                     |     r7 = r3 + 1;
    0x000a232c ldr r3, [pc, 0x450]                               |     r3 = "rounds=%u$";
    0x000a2330 ldr r1, [pc, 0x448]                               |     r1 = *(0xa277c);
    0x000a2334 cmp r0, r3                                        |     
                                                                 |     if (r0 >= r3) {
    0x000a2338 movlo r3, r0                                      |         r3 = r0;
                                                                 |     }
    0x000a233c cmp r3, 0x3e8                                     |     
                                                                 |     if (r3 >= 0x3e8) {
    0x000a2340 movlo r3, 0x3e8                                   |         r3 = 0x3e8;
                                                                 |     }
    0x000a2344 mov r0, r5                                        |     r0 = r5;
    0x000a2348 mov r2, r3                                        |     r2 = r3;
    0x000a234c str r3, [sp, 4]                                   |     var_4h = r3;
    0x000a2350 bl 0x14f48                                        |     r0 = sprintf (r0, r1, r2);
    0x000a2354 add r5, r5, r0                                    |     r5 += r0;
                                                                 | label_0:
    0x000a2358 mov r1, 0x24                                      |     r1 = 0x24;
    0x000a235c mov r0, r7                                        |     r0 = r7;
    0x000a2360 bl 0x151e8                                        |     r0 = strchrnul ();
    0x000a2364 sub r0, r0, r7                                    |     r0 -= r7;
    0x000a2368 cmp r0, 0x10                                      |     
                                                                 |     if (r0 >= 0x10) {
    0x000a236c movlo r8, r0                                      |         r8 = r0;
                                                                 |     }
                                                                 |     if (r0 < 0x10) {
    0x000a2370 movhs r8, 0x10                                    |         r8 = 0x10;
                                                                 |     }
    0x000a2374 mov r1, r8                                        |     r1 = r8;
    0x000a2378 mov r0, r7                                        |     r0 = r7;
    0x000a237c bl 0x189f8                                        |     fcn_000189f8 (r0, r1);
    0x000a2380 add r7, sp, 0xa0                                  |     r7 += var_a0h;
    0x000a2384 mov r1, r0                                        |     r1 = r0;
    0x000a2388 str r0, [sp, 8]                                   |     ptr = r0;
    0x000a238c mov r0, r5                                        |     r0 = r5;
    0x000a2390 bl 0x142f4                                        |     strcpy (r0, r1)
    0x000a2394 add r3, r5, r8                                    |     r3 = r5 + r8;
    0x000a2398 add r3, r3, 1                                     |     r3++;
    0x000a239c str r3, [sp, 0x18]                                |     var_18h = r3;
    0x000a23a0 mov r3, 0x24                                      |     r3 = 0x24;
    0x000a23a4 strb r3, [r5, r8]                                 |     *((r5 + r8)) = r3;
    0x000a23a8 mov r0, r4                                        |     r0 = r4;
    0x000a23ac bl 0x1514c                                        |     strlen (r0);
    0x000a23b0 ldr r5, [pc, 0x3d0]                               |     r5 = *(0xa2784);
    0x000a23b4 mov sl, r0                                        |     sl = r0;
    0x000a23b8 mov r0, r4                                        |     r0 = r4;
    0x000a23bc bl 0x189d4                                        |     fcn_000189d4 (r0);
    0x000a23c0 ldr r2, [pc, 0x3c4]                               |     r2 = *(0xa2788);
    0x000a23c4 ldr r3, [pc, 0x3c4]                               |     r3 = *(0xa278c);
    0x000a23c8 cmp r6, 0x20                                      |     
                                                                 |     if (r6 == 0x20) {
    0x000a23cc movne r3, r2                                      |         r3 = r2;
                                                                 |     }
    0x000a23d0 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000a23d4 ldr r3, [pc, 0x3b8]                               |     r3 = *(0xa2790);
    0x000a23d8 ldr r2, [pc, 0x3b8]                               |     r2 = *(0xa2794);
                                                                 |     if (r6 != 0x20) {
    0x000a23dc moveq r5, r3                                      |         r5 = r3;
                                                                 |     }
    0x000a23e0 ldr r3, [pc, 0x3b4]                               |     r3 = *(0xa2798);
                                                                 |     if (r6 == 0x20) {
    0x000a23e4 movne r3, r2                                      |         r3 = r2;
                                                                 |     }
    0x000a23e8 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x000a23ec mov sb, r0                                        |     sb = r0;
    0x000a23f0 mov r0, r7                                        |     r0 = r7;
    0x000a23f4 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x000a23f8 mov r2, sl                                        |     r2 = sl;
    0x000a23fc mov r1, sb                                        |     r1 = sb;
    0x000a2400 mov r0, r7                                        |     r0 = r7;
    0x000a2404 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a2408 mov r2, r8                                        |     r2 = r8;
    0x000a240c ldr r1, [sp, 8]                                   |     r1 = ptr;
    0x000a2410 mov r0, r7                                        |     r0 = r7;
    0x000a2414 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a2418 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000a241c add r0, sp, 0x170                                 |     r0 += var_170h;
    0x000a2420 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000a2424 mov r2, sl                                        |     r2 = sl;
    0x000a2428 mov r1, sb                                        |     r1 = sb;
    0x000a242c add r0, sp, 0x170                                 |     r0 += var_170h;
    0x000a2430 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a2434 mov r2, r8                                        |     r2 = r8;
    0x000a2438 ldr r1, [sp, 8]                                   |     r1 = ptr;
    0x000a243c add r0, sp, 0x170                                 |     r0 += var_170h;
    0x000a2440 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a2444 mov r2, sl                                        |     r2 = sl;
    0x000a2448 mov r1, sb                                        |     r1 = sb;
    0x000a244c add r0, sp, 0x170                                 |     r0 += var_170h;
    0x000a2450 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a2454 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000a2458 mov r1, fp                                        |     r1 = fp;
    0x000a245c add r0, sp, 0x170                                 |     r0 += var_170h;
    0x000a2460 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x000a2464 mov r3, sl                                        |     r3 = sl;
                                                                 | label_1:
    0x000a2468 cmp r6, r3                                        |     
                                                                 |     if (r6 <= r3) {
    0x000a246c blo 0xa2660                                       |         goto label_8;
                                                                 |     }
    0x000a2470 mov r2, r3                                        |     r2 = r3;
    0x000a2474 mov r1, fp                                        |     r1 = fp;
    0x000a2478 mov r0, r7                                        |     r0 = r7;
    0x000a247c blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a2480 mov r4, sl                                        |     r4 = sl;
                                                                 | label_2:
    0x000a2484 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000a2488 bne 0xa2680                                       |         goto label_9;
                                                                 |     }
    0x000a248c add r1, sp, 0x20                                  |     r1 += var_20h;
    0x000a2490 mov r0, r7                                        |     r0 = r7;
    0x000a2494 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000a2498 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x000a249c add r7, sp, 0x170                                 |     r7 += var_170h;
    0x000a24a0 mov r0, r7                                        |     r0 = r7;
    0x000a24a4 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000a24a8 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000a24ac mov fp, r4                                        |     
                                                                 | label_3:
    0x000a24b0 cmp fp, sl                                        |     
                                                                 |     if (fp != sl) {
    0x000a24b4 bne 0xa26a4                                       |         goto label_10;
                                                                 |     }
    0x000a24b8 add r3, sp, 0x60                                  |     r3 += s2;
    0x000a24bc mov r1, r3                                        |     r1 = r3;
    0x000a24c0 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x000a24c4 mov r0, r7                                        |     r0 = r7;
    0x000a24c8 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000a24cc blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x000a24d0 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x000a24d4 mov r0, sb                                        |     r0 = sb;
    0x000a24d8 mov sl, fp                                        |     sl = fp;
    0x000a24dc mov r7, r3                                        |     r7 = r3;
                                                                 | label_4:
    0x000a24e0 cmp r6, sl                                        |     
                                                                 |     if (r6 < sl) {
    0x000a24e4 bls 0xa26bc                                       |         goto label_11;
                                                                 |     }
    0x000a24e8 mov r2, sl                                        |     r2 = sl;
    0x000a24ec mov r1, r7                                        |     r1 = r7;
    0x000a24f0 add r7, sp, 0x170                                 |     r7 += var_170h;
    0x000a24f4 bl 0x14624                                        |     memcpy (r0, r1, r2);
    0x000a24f8 mov r0, r7                                        |     r0 = r7;
    0x000a24fc ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000a2500 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000a2504 mov sl, 0                                         |     sl = 0;
                                                                 | label_5:
    0x000a2508 ldrb r3, [sp, 0x20]                               |     r3 = var_20h;
    0x000a250c add r3, r3, 0x10                                  |     r3 += 0x10;
    0x000a2510 cmp r3, sl                                        |     
                                                                 |     if (r3 > sl) {
    0x000a2514 bhi 0xa26d4                                       |         goto label_12;
                                                                 |     }
    0x000a2518 add r1, sp, 0x60                                  |     r1 += s2;
    0x000a251c mov r0, r7                                        |     r0 = r7;
    0x000a2520 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000a2524 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x000a2528 mov r2, r8                                        |     r2 = r8;
    0x000a252c add r1, sp, 0x60                                  |     r1 += s2;
    0x000a2530 ldr r0, [sp, 8]                                   |     r0 = ptr;
    0x000a2534 bl 0x14624                                        |     memcpy (r0, r1, r2);
    0x000a2538 mov r7, 0                                         |     r7 = 0;
                                                                 |     do {
    0x000a253c ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x000a2540 add r0, sp, 0xa0                                  |         r0 += var_a0h;
    0x000a2544 blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000a2548 ands sl, r7, 1                                    |         sl = r7 & 1;
                                                                 |         if (sl == r7) {
    0x000a254c movne r1, sb                                      |             r1 = sb;
                                                                 |         }
                                                                 |         if (sl != r7) {
    0x000a2550 addeq r1, sp, 0x20                                |             r1 += var_20h;
                                                                 |         }
                                                                 |         if (sl == r7) {
    0x000a2554 movne r2, fp                                      |             r2 = fp;
                                                                 |         }
                                                                 |         if (sl != r7) {
    0x000a2558 moveq r2, r6                                      |             r2 = r6;
                                                                 |         }
    0x000a255c add r0, sp, 0xa0                                  |         r0 += var_a0h;
    0x000a2560 blx r5                                            |         uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a2564 mov r1, 3                                         |         r1 = 3;
    0x000a2568 mov r0, r7                                        |         r0 = r7;
    0x000a256c bl 0xa667c                                        |         fcn_000a667c (r0, r1);
    0x000a2570 cmp r1, 0                                         |         
                                                                 |         if (r1 != 0) {
    0x000a2574 beq 0xa2588                                       |             
    0x000a2578 mov r2, r8                                        |             r2 = r8;
    0x000a257c ldr r1, [sp, 8]                                   |             r1 = ptr;
    0x000a2580 add r0, sp, 0xa0                                  |             r0 += var_a0h;
    0x000a2584 blx r5                                            |             uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                 |         }
    0x000a2588 mov r1, 7                                         |         r1 = 7;
    0x000a258c mov r0, r7                                        |         r0 = r7;
    0x000a2590 bl 0xa667c                                        |         fcn_000a667c (r0, r1);
    0x000a2594 cmp r1, 0                                         |         
                                                                 |         if (r1 != 0) {
    0x000a2598 beq 0xa25ac                                       |             
    0x000a259c mov r2, fp                                        |             r2 = fp;
    0x000a25a0 mov r1, sb                                        |             r1 = sb;
    0x000a25a4 add r0, sp, 0xa0                                  |             r0 += var_a0h;
    0x000a25a8 blx r5                                            |             uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
                                                                 |         }
    0x000a25ac cmp sl, 0                                         |         
                                                                 |         if (sl == 0) {
    0x000a25b0 addne r1, sp, 0x20                                |             r1 += var_20h;
                                                                 |         }
                                                                 |         if (sl != 0) {
    0x000a25b4 moveq r1, sb                                      |             r1 = sb;
                                                                 |         }
                                                                 |         if (sl == 0) {
    0x000a25b8 movne r2, r6                                      |             r2 = r6;
                                                                 |         }
                                                                 |         if (sl != 0) {
    0x000a25bc moveq r2, fp                                      |             r2 = fp;
                                                                 |         }
    0x000a25c0 add r0, sp, 0xa0                                  |         r0 += var_a0h;
    0x000a25c4 blx r5                                            |         uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a25c8 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x000a25cc add r1, sp, 0x20                                  |         r1 += var_20h;
    0x000a25d0 add r0, sp, 0xa0                                  |         r0 += var_a0h;
    0x000a25d4 blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x000a25d8 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x000a25dc add r7, r7, 1                                     |         r7++;
    0x000a25e0 cmp r3, r7                                        |         
    0x000a25e4 bhi 0xa253c                                       |         
                                                                 |     } while (r3 > r7);
    0x000a25e8 cmp r6, 0x20                                      |     
                                                                 |     if (r6 != 0x20) {
    0x000a25ec bne 0xa2714                                       |         goto label_13;
                                                                 |     }
                                                                 |     do {
    0x000a25f0 add r2, r4, 0xa                                   |         r2 = r4 + 0xa;
    0x000a25f4 cmp r2, 0x1d                                      |         
    0x000a25f8 add r5, r4, 0x14                                  |         r5 = r4 + 0x14;
                                                                 |         if (r2 <= 0x1d) {
    0x000a25fc subhi r2, r4, 0x14                                |             r2 = r4 - 0x14;
                                                                 |         }
    0x000a2600 add r3, sp, 0x240                                 |         r3 += var_240h;
    0x000a2604 cmp r5, 0x1d                                      |         
    0x000a2608 add r2, r3, r2                                    |         r2 = r3 + r2;
                                                                 |         if (r5 <= 0x1d) {
    0x000a260c subhi r5, r4, 0xa                                 |             r5 = r4 - 0xa;
                                                                 |         }
    0x000a2610 add r4, r3, r4                                    |         r4 = r3 + r4;
    0x000a2614 ldrb r3, [r2, -0x220]                             |         r3 = var_220h_4;
    0x000a2618 ldrb r1, [r4, -0x220]                             |         r1 = var_220h_2;
    0x000a261c add r2, sp, 0x240                                 |         r2 += var_240h;
    0x000a2620 add r2, r2, r5                                    |         r2 += r5;
    0x000a2624 lsl r3, r3, 8                                     |         r3 <<= 8;
    0x000a2628 orr r3, r3, r1, lsl 16                            |         r3 |= (r1 << 16);
    0x000a262c ldrb r1, [r2, -0x220]                             |         r1 = var_220h_5;
    0x000a2630 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x000a2634 mov r2, 4                                         |         r2 = 4;
    0x000a2638 orr r1, r3, r1                                    |         r1 = r3 | r1;
    0x000a263c bl 0xa1f8c                                        |         fcn_000a1f8c (r0, r1);
    0x000a2640 cmp r5, 0x1d                                      |         
    0x000a2644 str r0, [sp, 0x18]                                |         var_18h = r0;
                                                                 |         if (r5 == 0x1d) {
    0x000a2648 beq 0xa26ec                                       |             goto label_14;
                                                                 |         }
    0x000a264c add r4, r5, 1                                     |         r4 = r5 + 1;
    0x000a2650 b 0xa25f0                                         |         
                                                                 |     } while (1);
                                                                 | label_7:
    0x000a2654 ldr r3, [pc, 0x144]                               |     r3 = *(0xa279c);
    0x000a2658 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000a265c b 0xa2358                                         |     goto label_0;
                                                                 | label_8:
    0x000a2660 mov r2, r6                                        |     r2 = r6;
    0x000a2664 mov r1, fp                                        |     r1 = fp;
    0x000a2668 mov r0, r7                                        |     r0 = r7;
    0x000a266c str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x000a2670 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000a2674 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x000a2678 sub r3, r3, r6                                    |     r3 -= r6;
    0x000a267c b 0xa2468                                         |     goto label_1;
                                                                 | label_9:
    0x000a2680 tst r4, 1                                         |     
                                                                 |     if ((r4 & 1) == 0) {
    0x000a2684 movne r2, r6                                      |         r2 = r6;
                                                                 |     }
                                                                 |     if ((r4 & 1) == 0) {
    0x000a2688 movne r1, fp                                      |         r1 = fp;
                                                                 |     }
                                                                 |     if ((r4 & 1) != 0) {
    0x000a268c moveq r2, sl                                      |         r2 = sl;
                                                                 |     }
                                                                 |     if ((r4 & 1) != 0) {
    0x000a2690 moveq r1, sb                                      |         r1 = sb;
                                                                 |     }
    0x000a2694 mov r0, r7                                        |     r0 = r7;
    0x000a2698 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a269c lsr r4, r4, 1                                     |     r4 >>= 1;
    0x000a26a0 b 0xa2484                                         |     goto label_2;
                                                                 | label_10:
    0x000a26a4 mov r2, sl                                        |     r2 = sl;
    0x000a26a8 mov r1, sb                                        |     r1 = sb;
    0x000a26ac mov r0, r7                                        |     r0 = r7;
    0x000a26b0 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a26b4 add fp, fp, 1                                     |     
    0x000a26b8 b 0xa24b0                                         |     goto label_3;
                                                                 | label_11:
    0x000a26bc mov r2, r6                                        |     r2 = r6;
    0x000a26c0 mov r1, r7                                        |     r1 = r7;
    0x000a26c4 bl 0x14624                                        |     memcpy (r0, r1, r2);
    0x000a26c8 sub sl, sl, r6                                    |     sl -= r6;
    0x000a26cc add r0, r0, r6                                    |     r0 += r6;
    0x000a26d0 b 0xa24e0                                         |     goto label_4;
                                                                 | label_12:
    0x000a26d4 mov r2, r8                                        |     r2 = r8;
    0x000a26d8 ldr r1, [sp, 8]                                   |     r1 = ptr;
    0x000a26dc mov r0, r7                                        |     r0 = r7;
    0x000a26e0 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x000a26e4 add sl, sl, 1                                     |     sl++;
    0x000a26e8 b 0xa2508                                         |     goto label_5;
                                                                 | label_14:
    0x000a26ec ldrh r1, [sp, 0x3e]                               |     r1 = var_3eh;
    0x000a26f0 mov r2, 3                                         |     r2 = 3;
                                                                 | label_6:
    0x000a26f4 bl 0xa1f8c                                        |     fcn_000a1f8c (r0, r1);
    0x000a26f8 mov r0, sb                                        |     r0 = sb;
    0x000a26fc bl 0x152a8                                        |     free (r0);
    0x000a2700 ldr r0, [sp, 8]                                   |     r0 = ptr;
    0x000a2704 bl 0x152a8                                        |     free (r0);
    0x000a2708 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x000a270c add sp, sp, 0x244                                 |     
    0x000a2710 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |     
                                                                 |     do {
                                                                 | label_13:
    0x000a2714 add r5, r4, 0x15                                  |         r5 = r4 + 0x15;
    0x000a2718 add r2, r4, 0x2a                                  |         r2 = r4 + 0x2a;
    0x000a271c cmp r5, 0x3e                                      |         
                                                                 |         if (r5 <= 0x3e) {
    0x000a2720 subhi r5, r4, 0x2a                                |             r5 = r4 - 0x2a;
                                                                 |         }
    0x000a2724 add r3, sp, 0x240                                 |         r3 += var_240h;
    0x000a2728 cmp r2, 0x3e                                      |         
                                                                 |         if (r2 <= 0x3e) {
    0x000a272c subhi r2, r4, 0x15                                |             r2 = r4 - 0x15;
                                                                 |         }
    0x000a2730 add r4, r3, r4                                    |         r4 = r3 + r4;
    0x000a2734 add r3, r3, r5                                    |         r3 += r5;
    0x000a2738 ldrb r3, [r3, -0x220]                             |         r3 = var_220h;
    0x000a273c ldrb r1, [r4, -0x220]                             |         r1 = var_220h_2;
    0x000a2740 lsl r3, r3, 8                                     |         r3 <<= 8;
    0x000a2744 orr r3, r3, r1, lsl 16                            |         r3 |= (r1 << 16);
    0x000a2748 add r1, sp, 0x240                                 |         r1 += var_240h;
    0x000a274c add r2, r1, r2                                    |         r2 = r1 + r2;
    0x000a2750 ldrb r1, [r2, -0x220]                             |         r1 = var_220h_3;
    0x000a2754 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x000a2758 mov r2, 4                                         |         r2 = 4;
    0x000a275c orr r1, r3, r1                                    |         r1 = r3 | r1;
    0x000a2760 bl 0xa1f8c                                        |         fcn_000a1f8c (r0, r1);
    0x000a2764 cmp r5, 0x14                                      |         
    0x000a2768 str r0, [sp, 0x18]                                |         var_18h = r0;
                                                                 |         if (r5 == 0x14) {
    0x000a276c addne r4, r5, 1                                   |             r4 = r5 + 1;
                                                                 |         }
    0x000a2770 bne 0xa2714                                       |         
                                                                 |     } while (r5 != 0x14);
    0x000a2774 mov r2, 2                                         |     r2 = 2;
    0x000a2778 ldrb r1, [sp, 0x5f]                               |     r1 = var_5fh;
    0x000a277c b 0xa26f4                                         |     goto label_6;
                                                                 | }
    ; 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 @ 0xa3d28 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.000a3d28 ()                                          | void fcn_000a3d28 (int32_t arg1, int32_t arg2) {
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x000a3d28 push {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x000a3d2c mov r4, r0                                            |     r4 = r0;
    0x000a3d30 mov r0, r2                                            |     r0 = r2;
    0x000a3d34 mov r5, r1                                            |     r5 = r1;
    0x000a3d38 mov fp, r3                                            |     
    0x000a3d3c mov r8, r2                                            |     r8 = r2;
    0x000a3d40 bl 0x1514c                                            |     r0 = strlen (r0);
    0x000a3d44 mov sb, r0                                            |     sb = r0;
    0x000a3d48 mov r0, fp                                            |     r0 = fp;
    0x000a3d4c bl 0x1514c                                            |     r0 = strlen (r0);
    0x000a3d50 mov sl, r0                                            |     sl = r0;
    0x000a3d54 mov r0, r4                                            |     r0 = r4;
    0x000a3d58 bl 0x1514c                                            |     strlen (r0);
    0x000a3d5c sub r3, sl, sb                                        |     r3 = sl - sb;
    0x000a3d60 add r2, r0, 1                                         |     r2 = r0 + 1;
    0x000a3d64 mla r0, r5, r3, r2                                    |     __asm ("mla r0, r5, r3, r2");
    0x000a3d68 bl 0x18968                                            |     r0 = fcn_00018968 (r0);
    0x000a3d6c mov r6, r0                                            |     r6 = r0;
    0x000a3d70 mov r5, r0                                            |     r5 = r0;
                                                                     |     do {
    0x000a3d74 mov r1, r8                                            |         r1 = r8;
    0x000a3d78 mov r0, r4                                            |         r0 = r4;
    0x000a3d7c bl 0x14b10                                            |         r0 = strstr (r0, r1);
    0x000a3d80 subs r7, r0, 0                                        |         r7 = r0 - 0;
                                                                     |         if (r7 == r0) {
    0x000a3d84 bne 0xa3d9c                                           |             
    0x000a3d88 mov r1, r4                                            |             r1 = r4;
    0x000a3d8c mov r0, r5                                            |             r0 = r5;
    0x000a3d90 bl 0x142f4                                            |             strcpy (r0, r1)
    0x000a3d94 mov r0, r6                                            |             r0 = r6;
    0x000a3d98 pop {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}          |             
                                                                     |         }
    0x000a3d9c sub r2, r7, r4                                        |         r2 = r7 - r4;
    0x000a3da0 mov r1, r4                                            |         r1 = r4;
    0x000a3da4 mov r0, r5                                            |         r0 = r5;
    0x000a3da8 bl 0x147e0                                            |         mempcpy ();
    0x000a3dac mov r2, sl                                            |         r2 = sl;
    0x000a3db0 mov r1, fp                                            |         r1 = fp;
    0x000a3db4 bl 0x147e0                                            |         mempcpy ();
    0x000a3db8 add r4, r7, sb                                        |         r4 = r7 + sb;
    0x000a3dbc mov r5, r0                                            |         r5 = r0;
    0x000a3dc0 b 0xa3d74                                             |         
                                                                     |     } while (1);
                                                                     | }

[*] Function strcpy used 59 times busybox