[*] Binary protection state of conf-migrate

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function strcpy tear down of conf-migrate

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/libexec/conf-migrate @ 0x2354 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00002354 ()                                      | void fcn_00002354 (int16_t arg1, int16_t arg2) {
                                                                 |     char * * endptr;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00002354 ldr r2, [pc, 0x15c]                               |     
    0x00002356 ldr r3, [pc, 0x160]                               |     r3 = *(0x24ba);
    0x00002358 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000235c mov r8, r0                                        |     r8 = r0;
    0x0000235e add r2, pc                                        |     r2 = 0x4816;
    0x00002360 sub sp, 0x24                                      |     
    0x00002362 movs r4, 0                                        |     r4 = 0;
    0x00002364 mov r0, r1                                        |     r0 = r1;
    0x00002366 ldr r3, [r2, r3]                                  |     
    0x00002368 mov r7, r1                                        |     r7 = r1;
    0x0000236a ldr r3, [r3]                                      |     r3 = *(0x4816);
    0x0000236c str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x0000236e mov.w r3, 0                                       |     r3 = 0;
    0x00002372 str.w r4, [r8]                                    |     __asm ("str.w r4, [r8]");
    0x00002374 ands r0, r0                                       |     r0 &= r0;
    0x00002376 bl 0x2240                                         |     r0 = fcn_00002240 (r0);
    0x0000237a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000237c beq.w 0x2484                                      |         goto label_0;
                                                                 |     }
    0x00002380 ldr r1, [pc, 0x138]                               |     
    0x00002382 mov r6, r0                                        |     r6 = r0;
    0x00002384 str r4, [sp, 0x14]                                |     var_14h = r4;
    0x00002386 add r1, pc                                        |     r1 = 0x4846;
    0x00002388 blx 0xe0c                                         |     r0 = strtok (r0, r1);
    0x0000238c mov fp, r0                                        |     
    0x0000238e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002390 beq 0x2462                                        |         goto label_1;
                                                                 |     }
    0x00002392 add.w sl, sp, 0x14                                |     sl += var_14h;
    0x00002396 add r3, sp, 0x18                                  |     r3 += var_18h;
    0x00002398 str r3, [sp, 4]                                   |     endptr = r3;
    0x0000239a str.w r8, [sp, 0xc]                               |     __asm ("str.w r8, [var_ch]");
                                                                 |     do {
    0x0000239e movs r1, 0x3a                                     |         r1 = 0x3a;
    0x000023a0 mov r0, fp                                        |         r0 = fp;
    0x000023a2 blx 0xd94                                         |         r0 = strchr (r0, r1);
    0x000023a6 mov r5, r0                                        |         r5 = r0;
    0x000023a8 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000023aa beq 0x2470                                        |             goto label_2;
                                                                 |         }
    0x000023ac movs r1, 0x3a                                     |         r1 = 0x3a;
    0x000023ae adds r0, 1                                        |         r0++;
    0x000023b0 blx 0xd94                                         |         r0 = strchr (r0, r1);
    0x000023b2 ldcl p8, c2, [r0], 0                              |         __asm ("ldcl p8, c2, [r0], 0");
                                                                 |         if (r0 == 1) {
    0x000023b6 beq 0x2470                                        |             goto label_2;
                                                                 |         }
    0x000023b8 adds r4, r0, 1                                    |         r4 = r0 + 1;
    0x000023ba movs r1, 0x3a                                     |         r1 = 0x3a;
    0x000023bc mov r0, r4                                        |         r0 = r4;
    0x000023be blx 0xd94                                         |         r0 = strchr (r0, r1);
    0x000023c2 mov r8, r0                                        |         r8 = r0;
    0x000023c4 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000023c6 beq 0x2470                                        |             goto label_2;
                                                                 |         }
    0x000023c8 add.w sb, r0, 1                                   |         sb = r0 + 1;
    0x000023cc mov r0, sb                                        |         r0 = sb;
    0x000023ce blx 0xd88                                         |         r0 = strlen (r0);
    0x000023d2 cmp.w r0, 0x1000                                  |         
    0x000023d6 sub.w r2, r5, fp                                  |         r2 = r5 - fp;
    0x000023d8 lsls r3, r1, 8                                    |         r3 = r1 << 8;
    0x000023da ite ls                                            |         
                                                                 |         if (r3 > r1) {
    0x000023dc movls r0, 0                                       |             r0 = 0;
                                                                 |         }
                                                                 |         if (r3 <= r1) {
    0x000023de movhi r0, 1                                       |             r0 = 1;
                                                                 |         }
    0x000023e0 cmp r2, 0x20                                      |         
    0x000023e2 it gt                                             |         
                                                                 |         if (r2 <= 0x20) {
    0x000023e4 orrgt r0, r0, 1                                   |             r0 |= 1;
                                                                 |         }
    0x000023e8 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000023ea bne 0x2470                                        |             goto label_2;
                                                                 |         }
    0x000023ec ldr r1, [sp, 4]                                   |         r1 = endptr;
    0x000023ee mov r0, r4                                        |         r0 = r4;
    0x000023f0 movs r2, 0xa                                      |         r2 = 0xa;
    0x000023f2 sub.w r4, r4, r8                                  |         r4 -= r8;
    0x000023f6 blx 0xd7c                                         |         strtoul (r0, r1, r2);
    0x000023fa clz r4, r4                                        |         r4 &= r4;
    0x000023fe ldr r1, [sp, 0x18]                                |         r1 = var_18h;
    0x00002400 lsrs r4, r4, 5                                    |         r4 >>= 5;
    0x00002402 str r0, [sp, 8]                                   |         var_8h = r0;
    0x00002404 cmp r1, r8                                        |         
    0x00002406 it ne                                             |         
                                                                 |         if (r1 == r8) {
    0x00002408 orrne r4, r4, 1                                   |             r4 |= 1;
                                                                 |         }
                                                                 |         if (r4 != 0) {
    0x0000240c cbnz r4, 0x2470                                   |             goto label_2;
                                                                 |         }
    0x0000240e movw r0, 0x1030                                   |         r0 = 0x1030;
    0x00002412 blx 0xd28                                         |         malloc (r0);
    0x00002416 ldr r2, [sp, 8]                                   |         r2 = var_8h;
    0x00002418 mov r8, r0                                        |         r8 = r0;
    0x0000241a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000241c beq 0x24a4                                        |             goto label_3;
                                                                 |         }
    0x0000241e mov r1, fp                                        |         r1 = fp;
    0x00002420 strb r4, [r5]                                     |         *(r5) = r4;
    0x00002422 adds r0, 9                                        |         r0 += 9;
    0x00002424 str r2, [r0, -0x5]                                |         *((r0 - 0x5)) = r2;
    0x00002428 strb r4, [r0, -0x1]                               |         *((r0 - 0x1)) = r4;
    0x0000242c movs r2, 0x21                                     |         r2 = 0x21;
    0x0000242e blx 0xcf8                                         |         strcpy_chk ()
    0x00002432 mov r1, sb                                        |         r1 = sb;
    0x00002434 movw r2, 0x1006                                   |         r2 = 0x1006;
    0x00002438 add.w r0, r8, 0x2a                                |         r0 = r8 + 0x2a;
    0x0000243c blx 0xcf8                                         |         strcpy_chk ()
    0x0000243e mrrc p9, 1, r4, ip, c15                           |         __asm ("mrrc p9, 1, r4, ip, c15");
    0x00002442 mov r0, r4                                        |         r0 = r4;
    0x00002444 str.w r4, [r8]                                    |         __asm ("str.w r4, [r8]");
    0x00002448 str.w r8, [sl]                                    |         __asm ("str.w r8, [sl]");
    0x0000244c mov sl, r8                                        |         sl = r8;
    0x0000244e add r1, pc                                        |         r1 += pc;
    0x00002450 blx 0xe0c                                         |         r0 = strtok (r0, r1);
    0x00002454 mov fp, r0                                        |         
    0x00002456 cmp r0, 0                                         |         
    0x00002458 bne 0x239e                                        |         
                                                                 |     } while (r0 != 0);
    0x0000245a ldr.w r8, [sp, 0xc]                               |     r8 = var_ch;
    0x0000245e ldr.w fp, [sp, 0x14]                              |     fp = var_14h;
                                                                 | label_1:
    0x00002462 mov r0, r6                                        |     r0 = r6;
    0x00002464 blx 0xc5c                                         |     free (r0);
    0x00002468 movs r0, 1                                        |     r0 = 1;
    0x0000246a str.w fp, [r8]                                    |     __asm ("str.w fp, [r8]");
    0x0000246e b 0x2486                                          |     goto label_4;
                                                                 | label_2:
    0x00002470 ldr r1, [pc, 0x50]                                |     
    0x00002472 movs r0, 3                                        |     r0 = 3;
    0x00002474 mov r3, r7                                        |     r3 = r7;
    0x00002476 mov r2, fp                                        |     r2 = fp;
    0x00002478 add r1, pc                                        |     r1 = 0x4940;
    0x0000247a bl 0x2b28                                         |     fcn_00002b28 (r0);
    0x0000247e mov r0, r6                                        |     r0 = r6;
    0x00002480 blx 0xc5c                                         |     free (r0);
    0x00002482 invalid                                           |     
                                                                 | label_0:
    0x00002484 movs r0, 0                                        |     r0 = 0;
                                                                 | label_4:
    0x00002486 ldr r2, [pc, 0x40]                                |     
    0x00002488 ldr r3, [pc, 0x2c]                                |     r3 = *(0x24b8);
    0x0000248a add r2, pc                                        |     r2 = 0x4958;
    0x0000248c ldr r3, [r2, r3]                                  |     r3 = *(0x4958);
    0x0000248e ldr r2, [r3]                                      |     r2 = *(0x4958);
    0x00002490 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00002492 eors r2, r3                                       |     r2 ^= r3;
    0x00002494 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x00002498 bne 0x24a0                                        |         
    0x0000249a add sp, 0x24                                      |         
    0x0000249c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x000024a0 blx 0xc98                                         |     stack_chk_fail ();
                                                                 | label_3:
    0x000024a4 ldr r1, [pc, 0x24]                                |     
    0x000024a6 movs r0, 3                                        |     r0 = 3;
    0x000024a8 add r1, pc                                        |     r1 = 0x4978;
    0x000024aa bl 0x2b28                                         |     fcn_00002b28 (r0);
    0x000024ae movs r0, 1                                        |     r0 = 1;
    0x000024b0 blx 0xd70                                         |     exit (r0);
    0x000024b4 cmp r3, 0x8e                                      |     
    0x000024b6 movs r0, r0                                       |     
    0x000024b8 lsls r4, r7, 3                                    |     r4 = r7 << 3;
    0x000024ba movs r0, r0                                       |     
    0x000024bc asrs r6, r0, 0x10                                 |     r6 = r0 >> 0x10;
    0x000024be movs r0, r0                                       |     
    0x000024c0 asrs r6, r7, 0xc                                  |     r6 = r7 >> 0xc;
    0x000024c2 movs r0, r0                                       |     
    0x000024c4 asrs r0, r3, 0xc                                  |     r0 = r3 >> 0xc;
    0x000024c6 movs r0, r0                                       |     
    0x000024c8 cmp r2, 0x62                                      |     
    0x000024ca movs r0, r0                                       |     
    0x000024cc asrs r0, r0, 0xb                                  |     r0 >>= 0xb;
    0x000024ce movs r0, r0                                       |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/libexec/conf-migrate @ 0x2580 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00002580 ()                                      | void fcn_00002580 (int16_t arg_0h, int16_t arg_1h, int16_t arg_4h, int16_t arg_8h, int16_t arg_9h, int16_t arg1) {
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t fildes;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_94h;
                                                                 |     char * ptr;
                                                                 |     int16_t var_1h;
                                                                 |     int8_t var_0h_5;
                                                                 |     int16_t var_194h;
                                                                 |     int16_t var_0h;
                                                                 |     int32_t var_0h_6;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_0h_3;
                                                                 |     int32_t var_0h_7;
                                                                 |     char * * endptr;
                                                                 |     int16_t var_4h_3;
                                                                 |     int16_t var_10h;
                                                                 |     char * s;
                                                                 |     int32_t var_0h_4;
                                                                 |     int32_t var_4h_2;
                                                                 |     char * s1;
                                                                 |     r0 = arg1;
    0x00002580 teqhs sl, sb, ror 20                              |     __asm ("teqhs sl, sb, ror 20");
    0x00002584 ldr r3, [pc, 0x1a4]                               |     
    0x00002586 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0000258a sub.w sp, sp, 0x1000                              |     
    0x0000258e add r2, pc                                        |     r2 += pc;
    0x00002590 sub sp, 0x10                                      |     
    0x00002592 mov r4, r0                                        |     r4 = r0;
    0x00002594 add.w r0, sp, 0x1000                              |     r0 += s;
    0x00002598 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0000259a add.w r6, r4, 0x2a                                |     r6 = r4 + 0x2a;
    0x0000259e adds r0, 0xc                                      |     r0 += 0xc;
    0x000025a0 ldr r3, [r3]                                      |     r3 = *(0x272c);
    0x000025a2 str r3, [r0]                                      |     *(r0) = r3;
    0x000025a4 mov.w r3, 0                                       |     r3 = 0;
    0x000025a8 mov r0, r6                                        |     r0 = r6;
    0x000025aa blx 0xd94                                         |     r0 = strchr (r0, r1);
                                                                 |     if (r0 == 0) {
    0x000025ae cbz r0, 0x25cc                                    |         goto label_20;
                                                                 |     }
    0x000025b0 add.w r8, sp, 0x10                                |     r8 += var_10h;
    0x000025b4 mov r5, r0                                        |     r5 = r0;
    0x000025b6 movs r2, 0xa                                      |     r2 = 0xa;
    0x000025b8 sub.w r1, r8, 8                                   |     r1 -= endptr;
    0x000025bc mov r0, r6                                        |     r0 = r6;
    0x000025be blx 0xd7c                                         |     strtoul (r0, r1, r2);
    0x000025c2 ldr sb, [r8, -0x8]                                |     sb = *((r8 - 0x8));
    0x000025c6 mov r7, r0                                        |     r7 = r0;
    0x000025c8 cmp sb, r5                                        |     
    0x000025ca beq 0x2602                                        |     
                                                                 |     while (r3 != 0x3a) {
                                                                 | label_20:
    0x000025cc ldr r1, [pc, 0x160]                               |         
    0x000025ce add.w r2, r4, 9                                   |         r2 = r4 + 9;
    0x000025d2 movs r0, 3                                        |         r0 = 3;
    0x000025d4 add r1, pc                                        |         r1 = 0x4d08;
    0x000025d6 bl 0x2b28                                         |         fcn_00002b28 (r0);
                                                                 | label_2:
    0x000025da movs r0, 0                                        |         r0 = 0;
                                                                 | label_0:
    0x000025dc ldr r2, [pc, 0x154]                               |         
    0x000025de add.w r1, sp, 0x1000                              |         r1 += s;
    0x000025e2 ldr r3, [pc, 0x148]                               |         r3 = *(0x272e);
    0x000025e4 adds r1, 0xc                                      |         r1 += 0xc;
    0x000025e6 add r2, pc                                        |         r2 = 0x4d1e;
    0x000025e8 ldr r3, [r2, r3]                                  |         r3 = *(0x4d1e);
    0x000025ea ldr r2, [r3]                                      |         r2 = *(0x4d1e);
    0x000025ec ldr r3, [r1]                                      |         r3 = *(r1);
    0x000025ee eors r2, r3                                       |         r2 ^= r3;
    0x000025f0 mov.w r3, 0                                       |         r3 = 0;
    0x000025f2 lsls r0, r0, 0xc                                  |         r0 <<= 0xc;
                                                                 |         if (r0 != r0) {
    0x000025f4 bne.w 0x2724                                      |             goto label_21;
                                                                 |         }
    0x000025f8 add.w sp, sp, 0x1000                              |         
    0x000025fc add sp, 0x10                                      |         
    0x000025fe pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
    0x00002602 ldrb.w r3, [sb]                                   |         r3 = *(sb);
    0x00002606 cmp r3, 0x3a                                      |         
    0x00002608 bne 0x25cc                                        |         
                                                                 |     }
    0x0000260a ldr r0, [pc, 0x12c]                               |     
    0x0000260c mov r1, r7                                        |     r1 = r7;
    0x0000260e add r0, pc                                        |     r0 = 0x4d4c;
    0x00002610 bl 0x2528                                         |     r0 = fcn_00002528 (r0, r1);
    0x00002614 subs.w sl, r0, 0                                  |     sl = r0 - 0;
    0x00002616 lsrs r0, r0, 8                                    |     r0 >>= 8;
                                                                 |     if (r0 < r0) {
    0x00002618 blt 0x26f2                                        |         goto label_22;
                                                                 |     }
    0x0000261a cmp sl, r7                                        |     
                                                                 |     if (sl != r7) {
    0x0000261c beq 0x2656                                        |         
    0x0000261e ldr r1, [pc, 0x11c]                               |         
    0x00002620 mov r3, r7                                        |         r3 = r7;
    0x00002622 sub.w r5, r8, 4                                   |         r5 -= var_4h_3;
    0x00002626 add.w r2, r4, 9                                   |         r2 = r4 + 9;
    0x0000262a movs r0, 7                                        |         r0 = 7;
    0x0000262c str.w sl, [sp]                                    |         __asm ("str.w sl, [sp]");
    0x00002630 add r1, pc                                        |         r1 = 0x4d72;
    0x00002632 bl 0x2b28                                         |         fcn_00002b28 (r0);
    0x00002636 mov r1, sb                                        |         r1 = sb;
    0x00002638 mov.w r2, 0x1000                                  |         r2 = 0x1000;
    0x0000263c mov r0, r5                                        |         r0 = r5;
    0x0000263e blx 0xcf8                                         |         strcpy_chk ()
    0x00002642 ldr r3, [pc, 0xfc]                                |         
    0x00002644 mov r0, r6                                        |         r0 = r6;
    0x00002646 mov.w r2, -1                                      |         r2 = -1;
    0x0000264a movs r1, 1                                        |         r1 = 1;
    0x0000264c strd sl, r5, [sp]                                 |         __asm ("strd sl, r5, [sp]");
    0x00002650 add r3, pc                                        |         r3 = 0x4d96;
    0x00002652 blx 0xdc4                                         |         sprintf_chk ();
                                                                 |     }
    0x00002656 ldr r3, [pc, 0xec]                                |     
    0x00002658 add r3, pc                                        |     r3 = 0x4da2;
    0x0000265a ldr r7, [r3, 0xc]                                 |     r7 = *(0x4dae);
                                                                 |     if (r7 == 0) {
    0x0000265c cbz r7, 0x267a                                    |         goto label_23;
                                                                 |     }
    0x0000265e ldr.w r8, [pc, 0xe8]                              |     
    0x00002662 add.w sb, r4, 9                                   |     sb = r4 + 9;
    0x00002666 add r8, pc                                        |     r8 = 0x4db4;
                                                                 |     do {
    0x00002668 mov r1, sb                                        |         r1 = sb;
    0x0000266a add.w r0, r7, 0x2a                                |         r0 = r7 + 0x2a;
    0x0000266e bl 0x217c                                         |         r0 = fcn_0000217c (r0, r1);
                                                                 |         if (r0 != 0) {
    0x00002672 cbnz r0, 0x267e                                   |             goto label_24;
                                                                 |         }
                                                                 | label_1:
    0x00002674 ldr r7, [r7]                                      |         r7 = *(r7);
    0x00002676 cmp r7, 0                                         |         
    0x00002678 bne 0x2668                                        |         
                                                                 |     } while (r7 != 0);
                                                                 | label_23:
    0x0000267a movs r0, 1                                        |     r0 = 1;
    0x0000267c b 0x25dc                                          |     goto label_0;
                                                                 | label_24:
    0x0000267e ldr.w r4, [r8, 0x10]                              |     r4 = *((r8 + 0x10));
    0x00002682 add.w r6, r7, 9                                   |     r6 = r7 + 9;
                                                                 |     if (r4 != 0) {
    0x00002686 cbnz r4, 0x268e                                   |         goto label_25;
                                                                 |     }
    0x00002688 b 0x26e4                                          |     goto label_26;
                                                                 |     do {
    0x0000268a ldr r4, [r4]                                      |         r4 = *(r4);
                                                                 |         if (r4 == 0) {
    0x0000268c cbz r4, 0x26e4                                    |             goto label_26;
                                                                 |         }
                                                                 | label_25:
    0x0000268e add.w r5, r4, 9                                   |         r5 = r4 + 9;
    0x00002692 mov r1, r6                                        |         r1 = r6;
    0x00002694 mov r0, r5                                        |         r0 = r5;
    0x00002696 blx 0xc20                                         |         r0 = strcmp (r0, r1);
    0x0000269a cmp r0, 0                                         |         
    0x0000269c bne 0x268a                                        |         
                                                                 |     } while (r0 != 0);
    0x0000269e adds r4, 0x2a                                     |     r4 += 0x2a;
    0x000026a0 mov r1, sb                                        |     r1 = sb;
    0x000026a2 mov r0, r4                                        |     r0 = r4;
    0x000026a4 bl 0x217c                                         |     r0 = fcn_0000217c (r0, r1);
                                                                 |     if (r0 == 0) {
    0x000026a8 cbnz r0, 0x2704                                   |         
    0x000026aa mov r0, r4                                        |         r0 = r4;
    0x000026ac blx 0xd88                                         |         r0 = strlen (r0);
    0x000026b0 mov r6, r0                                        |         r6 = r0;
    0x000026b2 mov r0, sb                                        |         r0 = sb;
    0x000026b4 blx 0xd88                                         |         strlen (r0);
    0x000026b8 add r0, r6                                        |         r0 += r6;
    0x000026ba cmp.w r0, 0x1000                                  |         
                                                                 |         if (r0 > 0x1000) {
    0x000026be bhi 0x2714                                        |             goto label_27;
                                                                 |         }
    0x000026c0 ldr r3, [pc, 0x88]                                |         
    0x000026c2 adds r0, r4, r6                                   |         r0 = r4 + r6;
    0x000026c4 movs r1, 1                                        |         r1 = 1;
    0x000026c6 mov.w r2, -1                                      |         r2 = -1;
    0x000026ca str.w sb, [sp]                                    |         __asm ("str.w sb, [sp]");
    0x000026ce add r3, pc                                        |         r3 = 0x4e1e;
    0x000026d0 blx 0xdc4                                         |         sprintf_chk ();
    0x000026d4 ldr r1, [pc, 0x78]                                |         
    0x000026d6 mov r3, r5                                        |         r3 = r5;
    0x000026d8 mov r2, sb                                        |         r2 = sb;
    0x000026da movs r0, 7                                        |         r0 = 7;
    0x000026dc add r1, pc                                        |         r1 = 0x4e30;
    0x000026de bl 0x2b28                                         |         fcn_00002b28 (r0);
    0x000026e2 b 0x2674                                          |         goto label_1;
                                                                 | label_26:
    0x000026e4 ldr r1, [pc, 0x6c]                                |         
    0x000026e6 mov r2, r6                                        |         r2 = r6;
    0x000026e8 movs r0, 2                                        |         r0 = 2;
    0x000026ea add r1, pc                                        |         r1 = 0x4e42;
    0x000026ec bl 0x2b28                                         |         fcn_00002b28 (r0);
    0x000026f0 b 0x25da                                          |         goto label_2;
                                                                 | label_22:
    0x000026f2 ldr r1, [pc, 0x64]                                |         
    0x000026f4 add.w r3, r4, 9                                   |         r3 = r4 + 9;
    0x000026f8 mov r2, r7                                        |         r2 = r7;
    0x000026fa movs r0, 3                                        |         r0 = 3;
    0x000026fc add r1, pc                                        |         r1 = 0x4e5a;
    0x000026fe bl 0x2b28                                         |         fcn_00002b28 (r0);
    0x00002702 b 0x25da                                          |         goto label_2;
                                                                 |     }
    0x00002704 ldr r1, [pc, 0x54]                                |     
    0x00002706 mov r3, r5                                        |     r3 = r5;
    0x00002708 mov r2, sb                                        |     r2 = sb;
    0x0000270a movs r0, 7                                        |     r0 = 7;
    0x0000270c add r1, pc                                        |     r1 = 0x4e6c;
    0x0000270e bl 0x2b28                                         |     fcn_00002b28 (r0);
    0x00002712 b 0x2674                                          |     goto label_1;
                                                                 | label_27:
    0x00002714 ldr r1, [pc, 0x48]                                |     
    0x00002716 mov r3, sb                                        |     r3 = sb;
    0x00002718 mov r2, r5                                        |     r2 = r5;
    0x0000271a movs r0, 3                                        |     r0 = 3;
    0x0000271c add r1, pc                                        |     r1 = 0x4e80;
    0x0000271e bl 0x2b28                                         |     fcn_00002b28 (r0);
    0x00002722 b 0x25da                                          |     goto label_2;
                                                                 | label_21:
    0x00002724 blx 0xc98                                         |     stack_chk_fail ();
    0x00002728 cmp r1, 0x5e                                      |     
    0x0000272a movs r0, r0                                       |     
    0x0000272c lsls r4, r7, 3                                    |     r4 = r7 << 3;
    0x0000272e movs r0, r0                                       |     
    0x00002730 asrs r4, r3, 7                                    |     r4 = r3 >> 7;
    0x00002732 movs r0, r0                                       |     
    0x00002734 cmp r1, 6                                         |     
    0x00002736 movs r0, r0                                       |     
    0x00002738 asrs r6, r7, 6                                    |     r6 = r7 >> 6;
    0x0000273a movs r0, r0                                       |     
    0x0000273c asrs r4, r1, 7                                    |     r4 = r1 >> 7;
    0x0000273e movs r0, r0                                       |     
    0x00002740 asrs r4, r3, 7                                    |     r4 = r3 >> 7;
    0x00002742 movs r0, r0                                       |     
    0x00002744 cmp r1, 0xb0                                      |     
    0x00002746 movs r0, r0                                       |     
    0x00002748 cmp r1, 0xa2                                      |     
    0x0000274a movs r0, r0                                       |     
    0x0000274c asrs r6, r5, 7                                    |     r6 = r5 >> 7;
    0x0000274e movs r0, r0                                       |     
    0x00002750 asrs r4, r4, 7                                    |     r4 >>= 7;
    0x00002752 movs r0, r0                                       |     
    0x00002754 asrs r2, r1, 5                                    |     r2 = r1 >> 5;
    0x00002756 movs r0, r0                                       |     
    0x00002758 asrs r4, r2, 3                                    |     r4 = r2 >> 3;
    0x0000275a movs r0, r0                                       |     
    0x0000275c asrs r4, r2, 5                                    |     r4 = r2 >> 5;
    0x0000275e movs r0, r0                                       |     
    0x00002760 asrs r4, r5, 5                                    |     r4 = r5 >> 5;
    0x00002762 movs r0, r0                                       |     
    0x00002764 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00002768 sub sp, 0x14                                      |     
    0x0000276a mov sb, r2                                        |     sb = r2;
    0x0000276c mov r5, r1                                        |     r5 = r1;
    0x0000276e str r0, [sp, 8]                                   |     var_8h = r0;
    0x00002770 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00002772 beq.w 0x28a4                                      |         goto label_28;
                                                                 |     }
    0x00002776 mov r3, r1                                        |     r3 = r1;
                                                                 |     do {
    0x00002778 mov r8, r3                                        |         r8 = r3;
    0x0000277a ldr r3, [r3]                                      |         r3 = *(r3);
    0x0000277c cmp r3, 0                                         |         
    0x0000277e bne 0x2778                                        |         
                                                                 |     } while (r3 != 0);
                                                                 | label_15:
    0x00002780 ldr r3, [sp, 8]                                   |     r3 = var_8h;
                                                                 |     if (r3 == 0) {
    0x00002782 cbz r3, 0x27b2                                    |         goto label_11;
                                                                 |     }
    0x00002784 ldr r3, [pc, 0x130]                               |     
    0x00002786 mov.w sl, 1                                       |     sl = 1;
    0x0000278a ldr r6, [sp, 8]                                   |     r6 = var_8h;
    0x0000278c add r3, pc                                        |     r3 = 0x5048;
    0x0000278e str r3, [sp, 0xc]                                 |     var_ch = r3;
                                                                 |     if (r5 == 0) {
                                                                 | label_10:
    0x00002790 cbz r5, 0x27ba                                    |         goto label_29;
                                                                 |     }
                                                                 | label_3:
    0x00002792 add.w r4, r6, 9                                   |     r4 = r6 + 9;
    0x00002796 mov r7, r5                                        |     r7 = r5;
    0x00002798 b 0x279e                                          |     
                                                                 |     while (r0 != 0) {
    0x0000279a ldr r7, [r7]                                      |         r7 = *(r7);
                                                                 |         if (r7 == 0) {
    0x0000279c cbz r7, 0x27ba                                    |             goto label_29;
                                                                 |         }
    0x0000279e mov r1, r4                                        |         r1 = r4;
    0x000027a0 add.w r0, r7, 9                                   |         r0 += s1;
    0x000027a4 blx 0xc20                                         |         r0 = strcmp (r0, r1);
    0x000027a8 cmp r0, 0                                         |         
    0x000027aa bne 0x279a                                        |         
                                                                 |     }
    0x000027ac ldr r6, [r6]                                      |     r6 = *(r6);
    0x000027ae cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x000027b0 bne 0x2792                                        |         goto label_3;
                                                                 |     }
                                                                 | label_11:
    0x000027b2 movs r0, 1                                        |     r0 = 1;
                                                                 | label_5:
    0x000027b4 add sp, 0x14                                      |     
    0x000027b6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_29:
    0x000027ba ldr.w ip, [r6, 4]                                 |     ip = *((r6 + 4));
    0x000027be cmp.w ip, 0x10000                                 |     
                                                                 |     if (ip >= 0x10000) {
    0x000027c2 bhs 0x27e4                                        |         goto label_6;
                                                                 |     }
    0x000027c4 mov r4, ip                                        |     r4 = ip;
                                                                 |     if (r5 == 0) {
    0x000027c6 cbz r5, 0x2804                                    |         goto label_7;
                                                                 |     }
                                                                 | label_4:
    0x000027c8 mov r3, r5                                        |     r3 = r5;
    0x000027ca b 0x27d0                                          |     
                                                                 |     while (r4 != r2) {
    0x000027cc ldr r3, [r3]                                      |         r3 = *(r3);
                                                                 |         if (r3 == 0) {
    0x000027ce cbz r3, 0x2804                                    |             goto label_7;
                                                                 |         }
    0x000027d0 ldr r2, [r3, 4]                                   |         r2 = var_4h_2;
    0x000027d2 cmp r4, r2                                        |         
    0x000027d4 bne 0x27cc                                        |         
                                                                 |     }
    0x000027d6 cmp ip, r4                                        |     
                                                                 |     if (ip != r4) {
    0x000027d8 bne 0x2886                                        |         goto label_30;
                                                                 |     }
    0x000027da add.w r4, ip, 1                                   |     r4 = ip + 1;
    0x000027de cmp.w r4, 0x10000                                 |     
                                                                 |     if (r4 != 0x10000) {
    0x000027e2 bne 0x27c8                                        |         goto label_4;
                                                                 |     }
                                                                 | label_6:
    0x000027e4 cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x000027e8 bne 0x289e                                        |         goto label_31;
                                                                 |     }
    0x000027ea ldr r2, [pc, 0xd0]                                |     
    0x000027ec add r2, pc                                        |     r2 = 0x50ae;
                                                                 | label_14:
    0x000027ee ldr r1, [pc, 0xd0]                                |     
    0x000027f0 add.w r3, r6, 9                                   |     r3 = r6 + 9;
    0x000027f4 movs r0, 3                                        |     r0 = 3;
    0x000027f6 str.w ip, [sp]                                    |     __asm ("str.w ip, [sp]");
    0x000027fa add r1, pc                                        |     r1 = 0x50c0;
    0x000027fc bl 0x2b28                                         |     fcn_00002b28 (r0);
                                                                 | label_9:
    0x00002800 movs r0, 0                                        |     r0 = 0;
    0x00002802 b 0x27b4                                          |     goto label_5;
                                                                 | label_7:
    0x00002804 cmp ip, r4                                        |     
                                                                 |     if (ip == r4) {
    0x00002806 beq 0x282a                                        |         goto label_32;
                                                                 |     }
    0x00002808 movs r1, 1                                        |     r1 = 1;
                                                                 | label_12:
    0x0000280a ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x0000280c b 0x2812                                          |     
                                                                 |     while (r2 != r4) {
    0x0000280e ldr r3, [r3]                                      |         r3 = *(r3);
                                                                 |         if (r3 == 0) {
    0x00002810 cbz r3, 0x2826                                    |             goto label_33;
                                                                 |         }
    0x00002812 ldr r2, [r3, 4]                                   |         r2 = *((r3 + 4));
    0x00002814 cmp r2, r4                                        |         
    0x00002816 bne 0x280e                                        |         
                                                                 |     }
                                                                 | label_8:
    0x00002818 adds r4, 1                                        |     r4++;
    0x0000281a cmp.w r4, 0x10000                                 |     
                                                                 |     if (r4 == 0x10000) {
    0x0000281e beq 0x27e4                                        |         goto label_6;
                                                                 |     }
    0x00002820 cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x00002822 bne 0x27c8                                        |         goto label_4;
                                                                 |     }
    0x00002824 b 0x2804                                          |     goto label_7;
                                                                 | label_33:
    0x00002826 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00002828 beq 0x2818                                        |         goto label_8;
                                                                 |     }
                                                                 | label_32:
    0x0000282a movw r0, 0x1030                                   |     r0 = 0x1030;
    0x0000282e blx 0xd28                                         |     r0 = malloc (r0);
    0x00002832 mov fp, r0                                        |     
    0x00002834 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002836 beq 0x28a8                                        |         goto label_34;
                                                                 |     }
    0x00002838 movw r2, 0x1030                                   |     r2 = 0x1030;
    0x0000283c mov r1, r6                                        |     r1 = r6;
    0x0000283e blx 0xc74                                         |     memcpy (r0, r1, r2);
    0x00002842 movs r2, 0                                        |     r2 = 0;
    0x00002844 str.w r4, [fp, 4]                                 |     __asm ("str.w r4, [arg_4h]");
    0x00002848 strb.w sl, [fp, 8]                                |     *(arg_8h) = sl;
    0x0000284c add.w r3, fp, 9                                   |     r3 += arg_9h;
    0x00002850 str.w r2, [fp]                                    |     __asm ("str.w r2, [fp]");
    0x00002854 str.w fp, [r8]                                    |     __asm ("str.w fp, [r8]");
    0x00002858 mov r8, fp                                        |     r8 = fp;
    0x0000285a cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0000285e beq 0x288a                                        |         goto label_35;
                                                                 |     }
    0x00002860 ldr r2, [r6, 4]                                   |     r2 = *((r6 + 4));
    0x00002862 movs r0, 7                                        |     r0 = 7;
    0x00002864 ldr r1, [pc, 0x5c]                                |     
    0x00002866 strd r4, r2, [sp]                                 |     __asm ("strd r4, r2, [sp]");
    0x0000286a ldr r2, [pc, 0x5c]                                |     
    0x0000286c add r1, pc                                        |     r1 = 0x5134;
    0x0000286e add r2, pc                                        |     r2 = 0x513c;
    0x00002870 bl 0x2b28                                         |     fcn_00002b28 (r0);
    0x00002874 mov r0, fp                                        |     r0 = fp;
    0x00002876 bl 0x2580                                         |     r0 = fcn_00002580 (r0, r1, r2, r3, r4, r5);
    0x0000287a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000287c beq 0x2800                                        |         goto label_9;
                                                                 |     }
                                                                 | label_13:
    0x0000287e ldr r6, [r6]                                      |     r6 = *(r6);
    0x00002880 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00002882 bne 0x2790                                        |         goto label_10;
                                                                 |     }
    0x00002884 b 0x27b2                                          |     goto label_11;
                                                                 | label_30:
    0x00002886 movs r1, 0                                        |     r1 = 0;
    0x00002888 b 0x280a                                          |     goto label_12;
                                                                 | label_35:
    0x0000288a ldr r0, [r6, 4]                                   |     r0 = *((r6 + 4));
    0x0000288c ldr r1, [pc, 0x3c]                                |     
    0x0000288e ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x00002890 strd r4, r0, [sp]                                 |     __asm ("strd r4, r0, [sp]");
    0x00002894 movs r0, 7                                        |     r0 = 7;
    0x00002896 add r1, pc                                        |     r1 = 0x5166;
    0x00002898 bl 0x2b28                                         |     fcn_00002b28 (r0);
    0x0000289c b 0x287e                                          |     goto label_13;
                                                                 | label_31:
    0x0000289e ldr r2, [pc, 0x30]                                |     
    0x000028a0 add r2, pc                                        |     r2 = 0x5176;
    0x000028a2 b 0x27ee                                          |     goto label_14;
                                                                 | label_28:
    0x000028a4 mov r8, r1                                        |     r8 = r1;
    0x000028a6 b 0x2780                                          |     goto label_15;
                                                                 | label_34:
    0x000028a8 ldr r1, [pc, 0x28]                                |     
    0x000028aa movs r0, 3                                        |     r0 = 3;
    0x000028ac add r1, pc                                        |     r1 = 0x5184;
    0x000028ae bl 0x2b28                                         |     fcn_00002b28 (r0);
    0x000028b2 movs r0, 1                                        |     r0 = 1;
    0x000028b4 blx 0xd70                                         |     exit (r0);
    0x000028b8 asrs r4, r4, 5                                    |     r4 >>= 5;
    0x000028ba movs r0, r0                                       |     
    0x000028bc asrs r4, r0, 4                                    |     r4 = r0 >> 4;
    0x000028be movs r0, r0                                       |     
    0x000028c0 asrs r6, r7, 3                                    |     r6 = r7 >> 3;
    0x000028c2 movs r0, r0                                       |     
    0x000028c4 asrs r4, r0, 3                                    |     r4 = r0 >> 3;
    0x000028c6 movs r0, r0                                       |     
    0x000028c8 asrs r2, r7, 1                                    |     r2 = r7 >> 1;
    0x000028ca movs r0, r0                                       |     
    0x000028cc asrs r2, r3, 2                                    |     r2 = r3 >> 2;
    0x000028ce movs r0, r0                                       |     
    0x000028d0 asrs r0, r1, 1                                    |     r0 = r1 >> 1;
    0x000028d2 movs r0, r0                                       |     
    0x000028d4 lsrs r4, r7, 0x1a                                 |     r4 = r7 >> 0x1a;
    0x000028d6 movs r0, r0                                       |     
    0x000028d8 ldr r2, [pc, 0x20c]                               |     
    0x000028da ldr r3, [pc, 0x210]                               |     r3 = *(0x2aee);
    0x000028dc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000028e0 mov sb, r0                                        |     sb = r0;
    0x000028e2 ldr r6, [pc, 0x20c]                               |     
    0x000028e4 add r2, pc                                        |     r2 = 0x53d0;
    0x000028e6 sub sp, 0x19c                                     |     
    0x000028e8 ldr r5, [pc, 0x208]                               |     
    0x000028ea ldr r3, [r2, r3]                                  |     
    0x000028ec add r6, pc                                        |     r6 = 0x53e2;
    0x000028ee mov r1, r6                                        |     r1 = r6;
    0x000028f0 add r5, pc                                        |     r5 = 0x53e8;
    0x000028f2 add.w r0, r5, 8                                   |     r0 = r5 + 8;
    0x000028f6 ldr r3, [r3]                                      |     r3 = *(0x53d0);
    0x000028f8 str r3, [sp, 0x194]                               |     var_194h = r3;
    0x000028fa mov.w r3, 0                                       |     r3 = 0;
    0x000028fe bl 0x2354                                         |     r0 = fcn_00002354 (r0, r1);
    0x00002902 cbnz r0, 0x2924                                   |     
                                                                 |     while (r0 == 0) {
                                                                 | label_16:
    0x00002904 movs r4, 0                                        |         r4 = 0;
                                                                 | label_17:
    0x00002906 ldr r2, [pc, 0x1f0]                               |         
    0x00002908 ldr r3, [pc, 0x1e0]                               |         r3 = *(0x2aec);
    0x0000290a add r2, pc                                        |         r2 = 0x5408;
    0x0000290c ldr r3, [r2, r3]                                  |         r3 = *(0x5408);
    0x0000290e ldr r2, [r3]                                      |         r2 = *(0x5408);
    0x00002910 ldr r3, [sp, 0x194]                               |         r3 = var_194h;
    0x00002912 eors r2, r3                                       |         r2 ^= r3;
    0x00002914 mov.w r3, 0                                       |         r3 = 0;
    0x00002916 lsls r0, r0, 0xc                                  |         r0 <<= 0xc;
                                                                 |         if (r0 != r0) {
    0x00002918 bne.w 0x2ab6                                      |             goto label_36;
                                                                 |         }
    0x0000291c mov r0, r4                                        |         r0 = r4;
    0x0000291e add sp, 0x19c                                     |         
    0x00002920 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x00002924 ldr.w r8, [pc, 0x1d4]                             |         
    0x00002928 add.w r0, r5, 0x10                                |         r0 = r5 + 0x10;
    0x0000292c add r8, pc                                        |         r8 = 0x542c;
    0x0000292e mov r1, r8                                        |         r1 = r8;
    0x00002930 bl 0x2354                                         |         r0 = fcn_00002354 (r0, r1);
    0x00002934 mov r4, r0                                        |         r4 = r0;
    0x00002936 cmp r0, 0                                         |         
    0x00002938 beq 0x2904                                        |         
                                                                 |     }
    0x0000293a cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0000293e beq.w 0x2a7e                                      |         goto label_37;
                                                                 |     }
    0x00002942 ldr r3, [pc, 0x1bc]                               |     
    0x00002944 add r7, sp, 0x14                                  |     r7 += var_14h;
    0x00002946 movs r2, 1                                        |     r2 = 1;
    0x00002948 mov r0, r7                                        |     r0 = r7;
    0x0000294a str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h]");
    0x0000294e add.w sl, sp, 0x94                                |     sl += var_94h;
    0x00002952 add r3, pc                                        |     r3 = 0x5458;
    0x00002954 str r3, [sp]                                      |     *(sp) = r3;
    0x00002956 movs r3, 0x80                                     |     r3 = 0x80;
    0x00002958 mov r1, r3                                        |     r1 = r3;
    0x0000295a blx 0xeb4                                         |     snprintf_chk ();
    0x0000295e ldr r3, [pc, 0x1a4]                               |     
    0x00002960 movs r2, 1                                        |     r2 = 1;
    0x00002962 mov r0, sl                                        |     r0 = sl;
    0x00002964 str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h]");
    0x00002968 add r3, pc                                        |     r3 = 0x5472;
    0x0000296a str r3, [sp]                                      |     *(sp) = r3;
    0x0000296c movs r3, 0x80                                     |     r3 = 0x80;
    0x0000296e mov r1, r3                                        |     r1 = r3;
    0x00002970 blx 0xeb4                                         |     snprintf_chk ();
    0x00002974 mov r1, r7                                        |     r1 = r7;
    0x00002976 adds r0, r5, 4                                    |     r0 = r5 + 4;
    0x00002978 bl 0x2354                                         |     r0 = fcn_00002354 (r0, r1);
    0x0000297c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000297e beq 0x2904                                        |         goto label_16;
                                                                 |     }
    0x00002980 mov r1, sl                                        |     r1 = sl;
    0x00002982 add.w r0, r5, 0xc                                 |     r0 = r5 + 0xc;
    0x00002986 bl 0x2354                                         |     r0 = fcn_00002354 (r0, r1);
    0x0000298a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000298c beq 0x2904                                        |         goto label_16;
                                                                 |     }
    0x0000298e ldr r3, [pc, 0x178]                               |     
    0x00002990 add r7, sp, 0x114                                 |     r7 += ptr;
    0x00002992 movs r2, 1                                        |     r2 = 1;
    0x00002994 mov r0, r7                                        |     r0 = r7;
    0x00002996 str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h]");
    0x0000299a add r3, pc                                        |     r3 = 0x54a8;
    0x0000299c str r3, [sp]                                      |     *(sp) = r3;
    0x0000299e movs r3, 0x80                                     |     r3 = 0x80;
    0x000029a0 mov r1, r3                                        |     r1 = r3;
    0x000029a2 blx 0xeb4                                         |     snprintf_chk ();
    0x000029a6 ldrd r0, r1, [r5, 0xc]                            |     __asm ("ldrd r0, r1, [r5, 0xc]");
    0x000029aa movs r2, 0                                        |     r2 = 0;
    0x000029ac bl 0x2764                                         |     r0 = void (*0x2764)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5);
    0x000029b0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000029b2 beq 0x2904                                        |         goto label_16;
                                                                 |     }
    0x000029b4 ldrd r0, r1, [r5, 4]                              |     __asm ("ldrd r0, r1, [r5, 4]");
    0x000029b8 movs r2, 1                                        |     r2 = 1;
    0x000029ba bl 0x2764                                         |     r0 = void (*0x2764)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5);
    0x000029be cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000029c0 beq 0x2904                                        |         goto label_16;
                                                                 |     }
    0x000029c2 ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x000029c4 mov r1, r8                                        |     r1 = r8;
    0x000029c6 bl 0x21c0                                         |     r0 = fcn_000021c0 (r0, r1);
    0x000029ca cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000029cc beq 0x2904                                        |         goto label_16;
                                                                 |     }
    0x000029ce ldr r0, [r5, 8]                                   |     r0 = *((r5 + 8));
    0x000029d0 mov r1, r6                                        |     r1 = r6;
    0x000029d2 bl 0x21c0                                         |     r0 = fcn_000021c0 (r0, r1);
    0x000029d6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000029d8 beq 0x2904                                        |         goto label_16;
                                                                 |     }
    0x000029da mov r0, r7                                        |     r0 = r7;
    0x000029dc bl 0x2240                                         |     r0 = fcn_00002240 (r0);
    0x000029e0 mov r8, r0                                        |     r8 = r0;
    0x000029e2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000029e4 beq 0x2904                                        |         goto label_16;
                                                                 |     }
    0x000029e6 ldr r5, [pc, 0x124]                               |     
    0x000029e8 add r5, pc                                        |     r5 = 0x54fa;
    0x000029ea mov r0, r5                                        |     r0 = r5;
    0x000029ec bl 0x2240                                         |     r0 = fcn_00002240 (r0);
    0x000029f0 mov sb, r0                                        |     sb = r0;
    0x000029f2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000029f4 beq 0x2a76                                        |         goto label_38;
                                                                 |     }
    0x000029f6 mov.w r2, 0x180                                   |     r2 = 0x180;
    0x000029fa movw r1, 0x241                                    |     r1 = 0x241;
    0x000029fe mov r0, r5                                        |     r0 = r5;
    0x00002a00 blx 0xd4c                                         |     r0 = open (r0, r1, r2);
    0x00002a04 subs r3, r0, 0                                    |     r3 = r0 - 0;
    0x00002a06 str r3, [sp, 0xc]                                 |     fildes = r3;
                                                                 |     if (r3 < r0) {
    0x00002a08 blt 0x2aba                                        |         goto label_39;
                                                                 |     }
    0x00002a0a ldr r3, [pc, 0x104]                               |     
    0x00002a0c add r3, pc                                        |     r3 = 0x5522;
    0x00002a0e ldr.w sl, [r3, 8]                                 |     sl = *(0x552a);
    0x00002a12 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x00002a16 beq 0x2aa2                                        |         goto label_40;
                                                                 |     }
                                                                 | label_18:
    0x00002a18 add.w r7, sl, 9                                   |     r7 = sl + 9;
    0x00002a1c mov r5, r8                                        |     r5 = r8;
    0x00002a1e mov r0, r7                                        |     r0 = r7;
    0x00002a20 blx 0xd88                                         |     strlen (r0);
    0x00002a24 ldrb.w r3, [sl, 8]                                |     r3 = *((sl + 8));
    0x00002a28 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r3 != 0) {
    0x00002a2a cbnz r3, 0x2a50                                   |         goto label_41;
                                                                 |     }
    0x00002a2c ldr.w r3, [sl, 4]                                 |     r3 = *((sl + 4));
    0x00002a30 cmp r3, 0                                         |     
    0x00002a32 ite ne                                            |     
                                                                 |     if (r3 == 0) {
    0x00002a34 movne r5, sb                                      |         r5 = sb;
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x00002a36 moveq r5, r8                                      |         r5 = r8;
                                                                 |     }
    0x00002a38 b 0x2a50                                          |     
                                                                 |     while (r0 != 0) {
    0x00002a3a mov r2, r6                                        |         r2 = r6;
    0x00002a3c mov r1, r7                                        |         r1 = r7;
    0x00002a3e mov r0, r5                                        |         r0 = r5;
    0x00002a40 blx 0xe84                                         |         r0 = strncmp (r0, r1, r2);
                                                                 |         if (r0 == 0) {
    0x00002a44 cbnz r0, 0x2a4c                                   |             
    0x00002a46 ldrb r2, [r5, r6]                                 |             r2 = *((r5 + r6));
    0x00002a48 cmp r2, 0x3a                                      |             
                                                                 |             if (r2 == 0x3a) {
    0x00002a4a beq 0x2a84                                        |                 goto label_42;
                                                                 |             }
                                                                 |         }
    0x00002a4c add.w r5, fp, 1                                   |         r5 += arg_1h;
                                                                 | label_41:
    0x00002a50 movs r1, 0xa                                      |         r1 = 0xa;
    0x00002a52 mov r0, r5                                        |         r0 = r5;
    0x00002a54 blx 0xd94                                         |         r0 = strchr (r0, r1);
    0x00002a58 mov fp, r0                                        |         
    0x00002a5a cmp r0, 0                                         |         
    0x00002a5c bne 0x2a3a                                        |         
                                                                 |     }
    0x00002a5e ldr r1, [pc, 0xb4]                                |     
    0x00002a60 mov r2, r7                                        |     r2 = r7;
    0x00002a62 movs r0, 3                                        |     r0 = 3;
    0x00002a64 add r1, pc                                        |     r1 = 0x557e;
    0x00002a66 bl 0x2b28                                         |     fcn_00002b28 (r0);
                                                                 | label_19:
    0x00002a6a ldr r0, [sp, 0xc]                                 |     r0 = fildes;
    0x00002a6c blx 0xe9c                                         |     close (r0);
    0x00002a70 mov r0, sb                                        |     r0 = sb;
    0x00002a72 blx 0xc5c                                         |     free (r0);
                                                                 | label_38:
    0x00002a76 mov r0, r8                                        |     r0 = r8;
    0x00002a78 blx 0xc5c                                         |     free (r0);
    0x00002a7c b 0x2904                                          |     goto label_16;
                                                                 | label_37:
    0x00002a7e movs r3, 1                                        |     r3 = 1;
    0x00002a80 strb r3, [r5]                                     |     *(r5) = r3;
    0x00002a82 b 0x2906                                          |     goto label_17;
                                                                 | label_42:
    0x00002a84 sub.w r3, fp, r5                                  |     r3 = fp - r5;
    0x00002a88 mov r1, r5                                        |     r1 = r5;
    0x00002a8a adds r5, r3, 1                                    |     r5 = r3 + 1;
    0x00002a8c ldr r0, [sp, 0xc]                                 |     r0 = fildes;
    0x00002a8e mov r2, r5                                        |     r2 = r5;
    0x00002a90 blx 0xde8                                         |     r0 = write (r0, r1, r2);
    0x00002a94 cmp r5, r0                                        |     
                                                                 |     if (r5 != r0) {
    0x00002a96 bne 0x2ac8                                        |         goto label_43;
                                                                 |     }
    0x00002a98 ldr.w sl, [sl]                                    |     sl = *(sl);
    0x00002a9c cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x00002aa0 bne 0x2a18                                        |         goto label_18;
                                                                 |     }
                                                                 | label_40:
    0x00002aa2 ldr r0, [sp, 0xc]                                 |     r0 = fildes;
    0x00002aa4 blx 0xe9c                                         |     close (r0);
    0x00002aa8 mov r0, sb                                        |     r0 = sb;
    0x00002aaa blx 0xc5c                                         |     free (r0);
    0x00002aae mov r0, r8                                        |     r0 = r8;
    0x00002ab0 blx 0xc5c                                         |     free (r0);
    0x00002ab4 b 0x2906                                          |     goto label_17;
                                                                 | label_36:
    0x00002ab6 blx 0xc98                                         |     stack_chk_fail ();
                                                                 | label_39:
    0x00002aba ldr r1, [pc, 0x5c]                                |     
    0x00002abc mov r2, r5                                        |     r2 = r5;
    0x00002abe movs r0, 2                                        |     r0 = 2;
    0x00002ac0 add r1, pc                                        |     r1 = 0x55de;
    0x00002ac2 bl 0x2b28                                         |     fcn_00002b28 (r0);
    0x00002ac6 b 0x2a6a                                          |     goto label_19;
                                                                 | label_43:
    0x00002ac8 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00002aca blt 0x2ad8                                        |         
    0x00002acc ldr r1, [pc, 0x4c]                                |         
    0x00002ace movs r0, 2                                        |         r0 = 2;
    0x00002ad0 add r1, pc                                        |         r1 = 0x55f0;
    0x00002ad2 bl 0x2b28                                         |         fcn_00002b28 (r0);
    0x00002ad6 b 0x2a6a                                          |         goto label_19;
                                                                 |     }
    0x00002ad8 ldr r2, [pc, 0x44]                                |     
    0x00002ada movs r0, 2                                        |     r0 = 2;
    0x00002adc ldr r1, [pc, 0x44]                                |     
    0x00002ade add r2, pc                                        |     r2 = 0x5602;
    0x00002ae0 add r1, pc                                        |     r1 = 0x5608;
    0x00002ae2 bl 0x2b28                                         |     fcn_00002b28 (r0);
    0x00002ae6 b 0x2a6a                                          |     goto label_19;
                                                                 | }

[*] Function strcpy used 4 times conf-migrate