[*] Binary protection state of conf-migrate

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


[*] Function sprintf tear down of conf-migrate

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/libexec/conf-migrate @ 0x24c8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000024c8 ()                                      | void fcn_000024c8 (int16_t arg_0h, 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 fd;
                                                                 |     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_ch;
                                                                 |     int16_t var_0h_3;
                                                                 |     int32_t var_0h_7;
                                                                 |     int16_t var_ch_3;
                                                                 |     char * * endptr;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_18h;
                                                                 |     char * s;
                                                                 |     int32_t var_0h_4;
                                                                 |     r0 = arg1;
    0x000024c8 ldr r2, [pc, 0x1c4]                               |     
    0x000024ca movs r1, 0x3a                                     |     r1 = 0x3a;
    0x000024cc ldr r3, [pc, 0x1c4]                               |     r3 = *(0x2694);
    0x000024ce push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000024d2 sub.w sp, sp, 0x1000                              |     
    0x000024d6 add r2, pc                                        |     r2 = 0x4b6a;
    0x000024d8 sub sp, 0x1c                                      |     
    0x000024da mov r6, r0                                        |     r6 = r0;
    0x000024dc add.w r0, sp, 0x1000                              |     r0 += s;
    0x000024e0 ldr r3, [r2, r3]                                  |     
    0x000024e2 add.w r7, r6, 0x2a                                |     r7 = r6 + 0x2a;
    0x000024e6 adds r0, 0x14                                     |     r0 += 0x14;
    0x000024e8 ldr r3, [r3]                                      |     r3 = *(0x4b6a);
    0x000024ea str r3, [r0]                                      |     *(r0) = r3;
    0x000024ec mov.w r3, 0                                       |     r3 = 0;
    0x000024f0 mov r0, r7                                        |     r0 = r7;
    0x000024f2 blx 0xd0c                                         |     r0 = strchr (r0, r1);
                                                                 |     if (r0 == 0) {
    0x000024f6 cbz r0, 0x2514                                    |         goto label_16;
                                                                 |     }
    0x000024f8 add.w r8, sp, 0x18                                |     r8 += var_18h;
    0x000024fc mov r4, r0                                        |     r4 = r0;
    0x000024fe movs r2, 0xa                                      |     r2 = 0xa;
    0x00002500 sub.w r1, r8, 8                                   |     r1 -= endptr;
    0x00002504 mov r0, r7                                        |     r0 = r7;
    0x00002506 blx 0xcf4                                         |     strtoul (r0, r1, r2);
    0x0000250a ldr sb, [r8, -0x8]                                |     sb = *((r8 - 0x8));
    0x0000250e mov r5, r0                                        |     r5 = r0;
    0x00002510 cmp sb, r4                                        |     
    0x00002512 beq 0x254e                                        |     
                                                                 |     while (r3 != 0x3a) {
                                                                 | label_16:
    0x00002514 ldr r1, [pc, 0x180]                               |         
    0x00002516 add.w r2, r6, 9                                   |         r2 = r6 + 9;
    0x0000251a movs r0, 3                                        |         r0 = 3;
    0x0000251c mov.w fp, 0                                       |         
    0x00002520 add r1, pc                                        |         r1 = 0x4bbc;
    0x00002522 bl 0x2a88                                         |         fcn_00002a88 (r0);
                                                                 | label_1:
    0x00002526 ldr r2, [pc, 0x174]                               |         
    0x00002528 add.w r1, sp, 0x1000                              |         r1 += s;
    0x0000252c ldr r3, [pc, 0x164]                               |         r3 = *(0x2694);
    0x0000252e adds r1, 0x14                                     |         r1 += 0x14;
    0x00002530 add r2, pc                                        |         r2 = 0x4bd2;
    0x00002532 ldr r3, [r2, r3]                                  |         r3 = *(0x4bd2);
    0x00002534 ldr r2, [r3]                                      |         r2 = *(0x4bd2);
    0x00002536 ldr r3, [r1]                                      |         r3 = *(r1);
    0x00002538 eors r2, r3                                       |         r2 ^= r3;
    0x0000253a mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000253e bne.w 0x268a                                      |             goto label_17;
                                                                 |         }
    0x00002542 mov r0, fp                                        |         r0 = fp;
    0x00002544 add.w sp, sp, 0x1000                              |         
    0x00002548 add sp, 0x1c                                      |         
    0x0000254a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0000254e ldrb.w r3, [sb]                                   |         r3 = *(sb);
    0x00002552 cmp r3, 0x3a                                      |         
    0x00002554 bne 0x2514                                        |         
                                                                 |     }
    0x00002556 ldr r0, [pc, 0x148]                               |     
    0x00002558 mov r1, r5                                        |     r1 = r5;
    0x0000255a add r0, pc                                        |     r0 = 0x4c00;
    0x0000255c bl 0x2470                                         |     r0 = fcn_00002470 (r0, r1);
    0x00002560 subs.w sl, r0, 0                                  |     sl = r0 - 0;
                                                                 |     if (sl < r0) {
    0x00002564 blt.w 0x2674                                      |         goto label_18;
                                                                 |     }
    0x00002568 cmp sl, r5                                        |     
                                                                 |     if (sl != r5) {
    0x0000256a beq 0x25a4                                        |         
    0x0000256c ldr r1, [pc, 0x134]                               |         
    0x0000256e mov r3, r5                                        |         r3 = r5;
    0x00002570 sub.w r4, r8, 4                                   |         r4 -= var_4h_2;
    0x00002574 add.w r2, r6, 9                                   |         r2 = r6 + 9;
    0x00002578 movs r0, 7                                        |         r0 = 7;
    0x0000257a str.w sl, [sp]                                    |         __asm ("str.w sl, [sp]");
    0x0000257e add r1, pc                                        |         r1 = 0x4c26;
    0x00002580 bl 0x2a88                                         |         fcn_00002a88 (r0);
    0x00002584 mov r1, sb                                        |         r1 = sb;
    0x00002586 mov.w r2, 0x1000                                  |         r2 = 0x1000;
    0x0000258a mov r0, r4                                        |         r0 = r4;
    0x0000258c blx 0xc70                                         |         strcpy_chk ();
    0x00002590 ldr r3, [pc, 0x114]                               |         
    0x00002592 mov r0, r7                                        |         r0 = r7;
    0x00002594 mov.w r2, -1                                      |         r2 = -1;
    0x00002598 movs r1, 1                                        |         r1 = 1;
    0x0000259a strd sl, r4, [sp]                                 |         __asm ("strd sl, r4, [sp]");
    0x0000259e add r3, pc                                        |         r3 = 0x4c4a;
    0x000025a0 blx 0xd3c                                         |         sprintf_chk ()
                                                                 |     }
    0x000025a4 ldr r3, [pc, 0x104]                               |     
    0x000025a6 add r3, pc                                        |     r3 = 0x4c56;
    0x000025a8 ldr r7, [r3, 0xc]                                 |     r7 = *(0x4c62);
    0x000025aa cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x000025ac beq 0x264c                                        |         goto label_19;
                                                                 |     }
    0x000025ae ldr r3, [pc, 0x100]                               |     
    0x000025b0 adds r6, 9                                        |     r6 += 9;
    0x000025b2 ldr.w sl, [pc, 0x100]                             |     
    0x000025b6 ldr.w sb, [pc, 0x100]                             |     
    0x000025ba add r3, pc                                        |     r3 = 0x4c70;
    0x000025bc add sl, pc                                        |     sl = 0x4c76;
    0x000025be str r3, [sp, 0xc]                                 |     var_ch_3 = r3;
    0x000025c0 add sb, pc                                        |     sb = 0x4c7e;
    0x000025c2 b 0x25ca                                          |     
                                                                 |     while (r0 == 0) {
                                                                 | label_0:
    0x000025c4 ldr r7, [r7]                                      |         r7 = *(r7);
    0x000025c6 cmp r7, 0                                         |         
                                                                 |         if (r7 == 0) {
    0x000025c8 beq 0x264c                                        |             goto label_19;
                                                                 |         }
    0x000025ca mov r1, r6                                        |         r1 = r6;
    0x000025cc add.w r0, r7, 0x2a                                |         r0 = r7 + 0x2a;
    0x000025d0 bl 0x20b4                                         |         r0 = fcn_000020b4 (r0, r1);
    0x000025d4 cmp r0, 0                                         |         
    0x000025d6 beq 0x25c4                                        |         
                                                                 |     }
    0x000025d8 ldr r3, [sp, 0xc]                                 |     r3 = var_ch_3;
    0x000025da add.w fp, r7, 9                                   |     
    0x000025de ldr r4, [r3, 0x10]                                |     r4 = *((r3 + 0x10));
                                                                 |     if (r4 != 0) {
    0x000025e0 cbnz r4, 0x25e8                                   |         goto label_20;
                                                                 |     }
    0x000025e2 b 0x2652                                          |     goto label_21;
                                                                 |     do {
    0x000025e4 ldr r4, [r4]                                      |         r4 = *(r4);
                                                                 |         if (r4 == 0) {
    0x000025e6 cbz r4, 0x2652                                    |             goto label_21;
                                                                 |         }
                                                                 | label_20:
    0x000025e8 add.w r5, r4, 9                                   |         r5 = r4 + 9;
    0x000025ec mov r1, fp                                        |         r1 = fp;
    0x000025ee mov r0, r5                                        |         r0 = r5;
    0x000025f0 blx 0xb98                                         |         r0 = strcmp (r0, r1);
    0x000025f4 cmp r0, 0                                         |         
    0x000025f6 bne 0x25e4                                        |         
                                                                 |     } while (r0 != 0);
    0x000025f8 adds r4, 0x2a                                     |     r4 += 0x2a;
    0x000025fa mov r1, r6                                        |     r1 = r6;
    0x000025fc mov r0, r4                                        |     r0 = r4;
    0x000025fe bl 0x20b4                                         |     r0 = fcn_000020b4 (r0, r1);
    0x00002602 mov fp, r0                                        |     
                                                                 |     if (r0 == 0) {
    0x00002604 cbnz r0, 0x263c                                   |         
    0x00002606 mov r0, r4                                        |         r0 = r4;
    0x00002608 blx 0xd00                                         |         r0 = strlen (r0);
    0x0000260c mov r8, r0                                        |         r8 = r0;
    0x0000260e mov r0, r6                                        |         r0 = r6;
    0x00002610 blx 0xd00                                         |         strlen (r0);
    0x00002614 add r0, r8                                        |         r0 += r8;
    0x00002616 cmp.w r0, 0x1000                                  |         
                                                                 |         if (r0 > 0x1000) {
    0x0000261a bhi 0x2664                                        |             goto label_22;
                                                                 |         }
    0x0000261c mov r3, sl                                        |         r3 = sl;
    0x0000261e add.w r0, r4, r8                                  |         r0 = r4 + r8;
    0x00002622 mov.w r2, -1                                      |         r2 = -1;
    0x00002626 movs r1, 1                                        |         r1 = 1;
    0x00002628 str r6, [sp]                                      |         *(sp) = r6;
    0x0000262a blx 0xd3c                                         |         sprintf_chk ()
    0x0000262e mov r3, r5                                        |         r3 = r5;
    0x00002630 mov r2, r6                                        |         r2 = r6;
    0x00002632 mov r1, sb                                        |         r1 = sb;
    0x00002634 movs r0, 7                                        |         r0 = 7;
    0x00002636 bl 0x2a88                                         |         fcn_00002a88 (r0);
    0x0000263a b 0x25c4                                          |         goto label_0;
                                                                 |     }
    0x0000263c ldr r1, [pc, 0x7c]                                |     
    0x0000263e mov r3, r5                                        |     r3 = r5;
    0x00002640 mov r2, r6                                        |     r2 = r6;
    0x00002642 movs r0, 7                                        |     r0 = 7;
    0x00002644 add r1, pc                                        |     r1 = 0x4d04;
    0x00002646 bl 0x2a88                                         |     fcn_00002a88 (r0);
    0x0000264a b 0x25c4                                          |     goto label_0;
                                                                 | label_19:
    0x0000264c mov.w fp, 1                                       |     
    0x00002650 b 0x2526                                          |     goto label_1;
                                                                 | label_21:
    0x00002652 ldr r1, [pc, 0x6c]                                |     
    0x00002654 mov r2, fp                                        |     r2 = fp;
    0x00002656 movs r0, 2                                        |     r0 = 2;
    0x00002658 mov.w fp, 0                                       |     
    0x0000265c add r1, pc                                        |     r1 = 0x4d22;
    0x0000265e bl 0x2a88                                         |     fcn_00002a88 (r0);
    0x00002662 b 0x2526                                          |     goto label_1;
                                                                 | label_22:
    0x00002664 ldr r1, [pc, 0x5c]                                |     
    0x00002666 mov r3, r6                                        |     r3 = r6;
    0x00002668 mov r2, r5                                        |     r2 = r5;
    0x0000266a movs r0, 3                                        |     r0 = 3;
    0x0000266c add r1, pc                                        |     r1 = 0x4d34;
    0x0000266e bl 0x2a88                                         |     fcn_00002a88 (r0);
    0x00002672 b 0x2526                                          |     goto label_1;
                                                                 | label_18:
    0x00002674 ldr r1, [pc, 0x50]                                |     
    0x00002676 add.w r3, r6, 9                                   |     r3 = r6 + 9;
    0x0000267a mov r2, r5                                        |     r2 = r5;
    0x0000267c movs r0, 3                                        |     r0 = 3;
    0x0000267e mov.w fp, 0                                       |     
    0x00002682 add r1, pc                                        |     r1 = 0x4d4e;
    0x00002684 bl 0x2a88                                         |     fcn_00002a88 (r0);
    0x00002688 b 0x2526                                          |     goto label_1;
                                                                 | label_17:
    0x0000268a blx 0xc10                                         |     stack_chk_fail ();
    0x0000268e nop                                               |     
    0x00002690 subs r6, r2, r0                                   |     r6 = r2 - r0;
    0x00002692 movs r1, r0                                       |     r1 = r0;
    0x00002694 lsls r4, r7, 3                                    |     r4 = r7 << 3;
    0x00002696 movs r0, r0                                       |     
    0x00002698 asrs r0, r6, 7                                    |     r0 = r6 >> 7;
    0x0000269a movs r0, r0                                       |     
    0x0000269c adds r4, r7, r6                                   |     r4 = r7 + r6;
    0x0000269e movs r1, r0                                       |     r1 = r0;
    0x000026a0 asrs r2, r2, 7                                    |     r2 >>= 7;
    0x000026a2 movs r0, r0                                       |     
    0x000026a4 asrs r6, r3, 7                                    |     r6 = r3 >> 7;
    0x000026a6 movs r0, r0                                       |     
    0x000026a8 asrs r6, r5, 7                                    |     r6 = r5 >> 7;
    0x000026aa movs r0, r0                                       |     
    0x000026ac subs r2, r4, r1                                   |     r2 = r4 - r1;
    0x000026ae movs r1, r0                                       |     r1 = r0;
    0x000026b0 subs r6, r1, r1                                   |     r6 = r1 - r1;
    0x000026b2 movs r1, r0                                       |     r1 = r0;
    0x000026b4 asrs r4, r6, 8                                    |     r4 = r6 >> 8;
    0x000026b6 movs r0, r0                                       |     
    0x000026b8 asrs r4, r6, 8                                    |     r4 = r6 >> 8;
    0x000026ba movs r0, r0                                       |     
    0x000026bc asrs r0, r2, 5                                    |     r0 = r2 >> 5;
    0x000026be movs r0, r0                                       |     
    0x000026c0 asrs r0, r0, 7                                    |     r0 >>= 7;
    0x000026c2 movs r0, r0                                       |     
    0x000026c4 asrs r0, r2, 5                                    |     r0 = r2 >> 5;
    0x000026c6 movs r0, r0                                       |     
    0x000026c8 asrs r6, r5, 2                                    |     r6 = r5 >> 2;
    0x000026ca movs r0, r0                                       |     
    0x000026cc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000026d0 mov r7, r0                                        |     r7 = r0;
    0x000026d2 sub sp, 0x14                                      |     
    0x000026d4 mov sb, r2                                        |     sb = r2;
    0x000026d6 mov r5, r1                                        |     r5 = r1;
    0x000026d8 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000026da beq.w 0x2806                                      |         goto label_23;
                                                                 |     }
    0x000026de mov r3, r1                                        |     r3 = r1;
                                                                 |     do {
    0x000026e0 mov r8, r3                                        |         r8 = r3;
    0x000026e2 ldr r3, [r3]                                      |         r3 = *(r3);
    0x000026e4 cmp r3, 0                                         |         
    0x000026e6 bne 0x26e0                                        |         
                                                                 |     } while (r3 != 0);
                                                                 |     if (r7 == 0) {
                                                                 | label_10:
    0x000026e8 cbz r7, 0x2718                                    |         goto label_7;
                                                                 |     }
    0x000026ea ldr r3, [pc, 0x130]                               |     
    0x000026ec mov r6, r7                                        |     r6 = r7;
    0x000026ee mov.w sl, 1                                       |     sl = 1;
    0x000026f2 add r3, pc                                        |     r3 = 0x4f14;
    0x000026f4 str r3, [sp, 0xc]                                 |     var_ch = r3;
                                                                 | label_2:
    0x000026f6 add.w fp, r6, 9                                   |     
    0x000026fa mov r4, r5                                        |     r4 = r5;
                                                                 |     if (r5 != 0) {
    0x000026fc cbnz r5, 0x2704                                   |         goto label_24;
                                                                 |     }
    0x000026fe b 0x2720                                          |     goto label_25;
                                                                 |     do {
    0x00002700 ldr r4, [r4]                                      |         r4 = *(r4);
                                                                 |         if (r4 == 0) {
    0x00002702 cbz r4, 0x2720                                    |             goto label_25;
                                                                 |         }
                                                                 | label_24:
    0x00002704 mov r1, fp                                        |         r1 = fp;
    0x00002706 add.w r0, r4, 9                                   |         r0 = r4 + 9;
    0x0000270a blx 0xb98                                         |         r0 = strcmp (r0, r1);
    0x0000270e cmp r0, 0                                         |         
    0x00002710 bne 0x2700                                        |         
                                                                 |     } while (r0 != 0);
    0x00002712 ldr r6, [r6]                                      |     r6 = *(r6);
    0x00002714 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00002716 bne 0x26f6                                        |         goto label_2;
                                                                 |     }
                                                                 | label_7:
    0x00002718 movs r0, 1                                        |     r0 = 1;
                                                                 | label_6:
    0x0000271a add sp, 0x14                                      |     
    0x0000271c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_25:
    0x00002720 ldr.w ip, [r6, 4]                                 |     ip = *((r6 + 4));
    0x00002724 cmp.w ip, 0x10000                                 |     
                                                                 |     if (ip >= 0x10000) {
    0x00002728 bhs 0x2748                                        |         goto label_26;
                                                                 |     }
    0x0000272a mov r4, ip                                        |     r4 = ip;
                                                                 | label_3:
    0x0000272c mov r3, r5                                        |     r3 = r5;
                                                                 |     if (r5 != 0) {
    0x0000272e cbnz r5, 0x2736                                   |         goto label_27;
                                                                 |     }
    0x00002730 b 0x276c                                          |     goto label_28;
                                                                 |     do {
    0x00002732 ldr r3, [r3]                                      |         r3 = *(r3);
                                                                 |         if (r3 == 0) {
    0x00002734 cbz r3, 0x276c                                    |             goto label_28;
                                                                 |         }
                                                                 | label_27:
    0x00002736 ldr r2, [r3, 4]                                   |         r2 = *((r3 + 4));
    0x00002738 cmp r4, r2                                        |         
    0x0000273a bne 0x2732                                        |         
                                                                 |     } while (r4 != r2);
    0x0000273c cmp ip, r4                                        |     
                                                                 |     if (ip != r4) {
    0x0000273e bne 0x27e0                                        |         goto label_29;
                                                                 |     }
                                                                 | label_4:
    0x00002740 adds r4, 1                                        |     r4++;
    0x00002742 cmp.w r4, 0x10000                                 |     
                                                                 |     if (r4 != 0x10000) {
    0x00002746 bne 0x272c                                        |         goto label_3;
                                                                 |     }
                                                                 | label_26:
    0x00002748 cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x0000274c bne 0x2800                                        |         goto label_30;
                                                                 |     }
    0x0000274e ldr r2, [pc, 0xd0]                                |     
    0x00002750 add r2, pc                                        |     r2 = 0x4f76;
                                                                 | label_9:
    0x00002752 ldr r1, [pc, 0xd0]                                |     
    0x00002754 add.w r3, r6, 9                                   |     r3 = r6 + 9;
    0x00002758 movs r0, 3                                        |     r0 = 3;
    0x0000275a str.w ip, [sp]                                    |     __asm ("str.w ip, [sp]");
    0x0000275e add r1, pc                                        |     r1 = 0x4f88;
    0x00002760 bl 0x2a88                                         |     fcn_00002a88 (r0);
    0x00002764 movs r0, 0                                        |     r0 = 0;
    0x00002766 add sp, 0x14                                      |     
    0x00002768 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_28:
    0x0000276c cmp ip, r4                                        |     
                                                                 |     if (ip == r4) {
    0x0000276e beq 0x2784                                        |         goto label_31;
                                                                 |     }
    0x00002770 movs r1, 1                                        |     r1 = 1;
                                                                 | label_8:
    0x00002772 mov r3, r7                                        |     r3 = r7;
                                                                 | label_5:
    0x00002774 ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
    0x00002776 cmp r4, r2                                        |     
                                                                 |     if (r4 == r2) {
    0x00002778 beq 0x2740                                        |         goto label_4;
                                                                 |     }
    0x0000277a ldr r3, [r3]                                      |     r3 = *(r3);
    0x0000277c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000277e bne 0x2774                                        |         goto label_5;
                                                                 |     }
    0x00002780 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00002782 beq 0x2740                                        |         goto label_4;
                                                                 |     }
                                                                 | label_31:
    0x00002784 movw r0, 0x1030                                   |     r0 = 0x1030;
    0x00002788 blx 0xca0                                         |     r0 = malloc (r0);
    0x0000278c mov fp, r0                                        |     
    0x0000278e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002790 beq 0x280a                                        |         goto label_32;
                                                                 |     }
    0x00002792 movw r2, 0x1030                                   |     r2 = 0x1030;
    0x00002796 mov r1, r6                                        |     r1 = r6;
    0x00002798 blx 0xbec                                         |     memcpy (r0, r1, r2);
    0x0000279c movs r2, 0                                        |     r2 = 0;
    0x0000279e str.w r4, [fp, 4]                                 |     __asm ("str.w r4, [arg_4h]");
    0x000027a2 strb.w sl, [fp, 8]                                |     *(arg_8h) = sl;
    0x000027a6 add.w r3, fp, 9                                   |     r3 += arg_9h;
    0x000027aa str.w r2, [fp]                                    |     __asm ("str.w r2, [fp]");
    0x000027ae str.w fp, [r8]                                    |     __asm ("str.w fp, [r8]");
    0x000027b2 mov r8, fp                                        |     r8 = fp;
    0x000027b4 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x000027b8 beq 0x27e4                                        |         goto label_33;
                                                                 |     }
    0x000027ba ldr r2, [r6, 4]                                   |     r2 = *((r6 + 4));
    0x000027bc movs r0, 7                                        |     r0 = 7;
    0x000027be ldr r1, [pc, 0x68]                                |     
    0x000027c0 strd r4, r2, [sp]                                 |     __asm ("strd r4, r2, [sp]");
    0x000027c4 ldr r2, [pc, 0x64]                                |     
    0x000027c6 add r1, pc                                        |     r1 = 0x4ff4;
    0x000027c8 add r2, pc                                        |     r2 = 0x4ff8;
    0x000027ca bl 0x2a88                                         |     fcn_00002a88 (r0);
    0x000027ce mov r0, fp                                        |     r0 = fp;
    0x000027d0 bl 0x24c8                                         |     r0 = fcn_000024c8 (r0, r1, r2, r3, r4);
    0x000027d4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000027d6 beq 0x271a                                        |         goto label_6;
                                                                 |     }
    0x000027d8 ldr r6, [r6]                                      |     r6 = *(r6);
    0x000027da cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x000027dc bne 0x26f6                                        |         goto label_2;
                                                                 |     }
    0x000027de b 0x2718                                          |     goto label_7;
                                                                 | label_29:
    0x000027e0 movs r1, 0                                        |     r1 = 0;
    0x000027e2 b 0x2772                                          |     goto label_8;
                                                                 | label_33:
    0x000027e4 ldr r0, [r6, 4]                                   |     r0 = *((r6 + 4));
    0x000027e6 ldr r1, [pc, 0x48]                                |     
    0x000027e8 ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x000027ea strd r4, r0, [sp]                                 |     __asm ("strd r4, r0, [sp]");
    0x000027ee movs r0, 7                                        |     r0 = 7;
    0x000027f0 add r1, pc                                        |     r1 = 0x5026;
    0x000027f2 bl 0x2a88                                         |     fcn_00002a88 (r0);
    0x000027f6 ldr r6, [r6]                                      |     r6 = *(r6);
    0x000027f8 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x000027fa bne.w 0x26f6                                      |         goto label_2;
                                                                 |     }
    0x000027fe b 0x2718                                          |     goto label_7;
                                                                 | label_30:
    0x00002800 ldr r2, [pc, 0x30]                                |     
    0x00002802 add r2, pc                                        |     r2 = 0x503a;
    0x00002804 b 0x2752                                          |     goto label_9;
                                                                 | label_23:
    0x00002806 mov r8, r1                                        |     r8 = r1;
    0x00002808 b 0x26e8                                          |     goto label_10;
                                                                 | label_32:
    0x0000280a ldr r1, [pc, 0x2c]                                |     
    0x0000280c movs r0, 3                                        |     r0 = 3;
    0x0000280e add r1, pc                                        |     r1 = 0x504c;
    0x00002810 bl 0x2a88                                         |     fcn_00002a88 (r0);
    0x00002814 movs r0, 1                                        |     r0 = 1;
    0x00002816 blx 0xce8                                         |     exit (r0);
    0x0000281a nop                                               |     
    0x0000281c asrs r6, r3, 5                                    |     r6 = r3 >> 5;
    0x0000281e movs r0, r0                                       |     
    0x00002820 asrs r0, r0, 4                                    |     r0 >>= 4;
    0x00002822 movs r0, r0                                       |     
    0x00002824 asrs r2, r7, 3                                    |     r2 = r7 >> 3;
    0x00002826 movs r0, r0                                       |     
    0x00002828 asrs r2, r1, 3                                    |     r2 = r1 >> 3;
    0x0000282a movs r0, r0                                       |     
    0x0000282c asrs r0, r0, 2                                    |     r0 >>= 2;
    0x0000282e movs r0, r0                                       |     
    0x00002830 asrs r0, r4, 2                                    |     r0 = r4 >> 2;
    0x00002832 movs r0, r0                                       |     
    0x00002834 asrs r6, r0, 1                                    |     r6 = r0 >> 1;
    0x00002836 movs r0, r0                                       |     
    0x00002838 lsrs r2, r7, 0x1a                                 |     r2 = r7 >> 0x1a;
    0x0000283a movs r0, r0                                       |     
    0x0000283c ldr r2, [pc, 0x208]                               |     
    0x0000283e ldr r3, [pc, 0x20c]                               |     r3 = *(0x2a4e);
    0x00002840 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00002844 mov r7, r0                                        |     r7 = r0;
    0x00002846 ldr r6, [pc, 0x208]                               |     
    0x00002848 add r2, pc                                        |     r2 = 0x5294;
    0x0000284a sub sp, 0x19c                                     |     
    0x0000284c ldr r5, [pc, 0x204]                               |     
    0x0000284e ldr r3, [r2, r3]                                  |     
    0x00002850 add r6, pc                                        |     r6 = 0x52a6;
    0x00002852 mov r1, r6                                        |     r1 = r6;
    0x00002854 add r5, pc                                        |     r5 = 0x52ac;
    0x00002856 add.w r0, r5, 8                                   |     r0 = r5 + 8;
    0x0000285a ldr r3, [r3]                                      |     r3 = *(0x5294);
    0x0000285c str r3, [sp, 0x194]                               |     var_194h = r3;
    0x0000285e mov.w r3, 0                                       |     r3 = 0;
    0x00002862 bl 0x229c                                         |     r0 = fcn_0000229c (r0, r1);
    0x00002866 cbnz r0, 0x2888                                   |     
                                                                 |     while (r0 == 0) {
                                                                 | label_11:
    0x00002868 movs r4, 0                                        |         r4 = 0;
                                                                 | label_12:
    0x0000286a ldr r2, [pc, 0x1ec]                               |         
    0x0000286c ldr r3, [pc, 0x1dc]                               |         r3 = *(0x2a4c);
    0x0000286e add r2, pc                                        |         r2 = 0x52cc;
    0x00002870 ldr r3, [r2, r3]                                  |         r3 = *(0x52cc);
    0x00002872 ldr r2, [r3]                                      |         r2 = *(0x52cc);
    0x00002874 ldr r3, [sp, 0x194]                               |         r3 = var_194h;
    0x00002876 eors r2, r3                                       |         r2 ^= r3;
    0x00002878 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000287c bne.w 0x2a14                                      |             goto label_34;
                                                                 |         }
    0x00002880 mov r0, r4                                        |         r0 = r4;
    0x00002882 add sp, 0x19c                                     |         
    0x00002884 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x00002888 ldr.w r8, [pc, 0x1d0]                             |         
    0x0000288c add.w r0, r5, 0x10                                |         r0 = r5 + 0x10;
    0x00002890 add r8, pc                                        |         r8 = 0x52f0;
    0x00002892 mov r1, r8                                        |         r1 = r8;
    0x00002894 bl 0x229c                                         |         r0 = fcn_0000229c (r0, r1);
    0x00002898 mov r4, r0                                        |         r4 = r0;
    0x0000289a cmp r0, 0                                         |         
    0x0000289c beq 0x2868                                        |         
                                                                 |     }
    0x0000289e cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x000028a0 beq.w 0x29e2                                      |         goto label_35;
                                                                 |     }
    0x000028a4 ldr r3, [pc, 0x1b8]                               |     
    0x000028a6 add r4, sp, 0x14                                  |     r4 += var_14h;
    0x000028a8 movs r2, 1                                        |     r2 = 1;
    0x000028aa mov r0, r4                                        |     r0 = r4;
    0x000028ac str r7, [sp, 4]                                   |     var_4h = r7;
    0x000028ae add.w sb, sp, 0x94                                |     sb += var_94h;
    0x000028b2 add r3, pc                                        |     r3 = 0x5316;
    0x000028b4 str r3, [sp]                                      |     *(sp) = r3;
    0x000028b6 movs r3, 0x80                                     |     r3 = 0x80;
    0x000028b8 mov r1, r3                                        |     r1 = r3;
    0x000028ba blx 0xe2c                                         |     snprintf_chk ();
    0x000028be ldr r3, [pc, 0x1a4]                               |     
    0x000028c0 movs r2, 1                                        |     r2 = 1;
    0x000028c2 mov r0, sb                                        |     r0 = sb;
    0x000028c4 str r7, [sp, 4]                                   |     var_4h = r7;
    0x000028c6 add r3, pc                                        |     r3 = 0x5330;
    0x000028c8 str r3, [sp]                                      |     *(sp) = r3;
    0x000028ca movs r3, 0x80                                     |     r3 = 0x80;
    0x000028cc mov r1, r3                                        |     r1 = r3;
    0x000028ce blx 0xe2c                                         |     snprintf_chk ();
    0x000028d2 mov r1, r4                                        |     r1 = r4;
    0x000028d4 adds r0, r5, 4                                    |     r0 = r5 + 4;
    0x000028d6 bl 0x229c                                         |     r0 = fcn_0000229c (r0, r1);
    0x000028da cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000028dc beq 0x2868                                        |         goto label_11;
                                                                 |     }
    0x000028de mov r1, sb                                        |     r1 = sb;
    0x000028e0 add.w r0, r5, 0xc                                 |     r0 = r5 + 0xc;
    0x000028e4 bl 0x229c                                         |     r0 = fcn_0000229c (r0, r1);
    0x000028e8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000028ea beq 0x2868                                        |         goto label_11;
                                                                 |     }
    0x000028ec ldr r3, [pc, 0x178]                               |     
    0x000028ee add.w sb, sp, 0x114                               |     sb += ptr;
    0x000028f2 movs r2, 1                                        |     r2 = 1;
    0x000028f4 mov r0, sb                                        |     r0 = sb;
    0x000028f6 str r7, [sp, 4]                                   |     var_4h = r7;
    0x000028f8 add r3, pc                                        |     r3 = 0x5364;
    0x000028fa str r3, [sp]                                      |     *(sp) = r3;
    0x000028fc movs r3, 0x80                                     |     r3 = 0x80;
    0x000028fe mov r1, r3                                        |     r1 = r3;
    0x00002900 blx 0xe2c                                         |     snprintf_chk ();
    0x00002904 ldrd r0, r1, [r5, 0xc]                            |     __asm ("ldrd r0, r1, [r5, 0xc]");
    0x00002908 movs r2, 0                                        |     r2 = 0;
    0x0000290a bl 0x26cc                                         |     r0 = void (*0x26cc)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4);
    0x0000290e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002910 beq 0x2868                                        |         goto label_11;
                                                                 |     }
    0x00002912 ldrd r0, r1, [r5, 4]                              |     __asm ("ldrd r0, r1, [r5, 4]");
    0x00002916 movs r2, 1                                        |     r2 = 1;
    0x00002918 bl 0x26cc                                         |     r0 = void (*0x26cc)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4);
    0x0000291c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000291e beq 0x2868                                        |         goto label_11;
                                                                 |     }
    0x00002920 ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x00002922 mov r1, r8                                        |     r1 = r8;
    0x00002924 bl 0x20f8                                         |     r0 = fcn_000020f8 (r0, r1);
    0x00002928 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000292a beq 0x2868                                        |         goto label_11;
                                                                 |     }
    0x0000292c ldr r0, [r5, 8]                                   |     r0 = *((r5 + 8));
    0x0000292e mov r1, r6                                        |     r1 = r6;
    0x00002930 bl 0x20f8                                         |     r0 = fcn_000020f8 (r0, r1);
    0x00002934 mov r4, r0                                        |     r4 = r0;
    0x00002936 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002938 beq 0x2868                                        |         goto label_11;
                                                                 |     }
    0x0000293a mov r0, sb                                        |     r0 = sb;
    0x0000293c bl 0x2180                                         |     r0 = fcn_00002180 (r0);
    0x00002940 mov r7, r0                                        |     r7 = r0;
    0x00002942 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002944 beq 0x2868                                        |         goto label_11;
                                                                 |     }
    0x00002946 ldr r5, [pc, 0x124]                               |     
    0x00002948 add r5, pc                                        |     r5 = 0x53ba;
    0x0000294a mov r0, r5                                        |     r0 = r5;
    0x0000294c bl 0x2180                                         |     r0 = fcn_00002180 (r0);
    0x00002950 mov r8, r0                                        |     r8 = r0;
    0x00002952 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002954 beq 0x2a0a                                        |         goto label_36;
                                                                 |     }
    0x00002956 mov.w r2, 0x180                                   |     r2 = 0x180;
    0x0000295a movw r1, 0x241                                    |     r1 = 0x241;
    0x0000295e mov r0, r5                                        |     r0 = r5;
    0x00002960 blx 0xcc4                                         |     r0 = open (r0, r1, r2);
    0x00002964 subs r3, r0, 0                                    |     r3 = r0 - 0;
    0x00002966 str r3, [sp, 0xc]                                 |     fd = r3;
                                                                 |     if (r3 < r0) {
    0x00002968 blt 0x2a18                                        |         goto label_37;
                                                                 |     }
    0x0000296a ldr r3, [pc, 0x104]                               |     
    0x0000296c add r3, pc                                        |     r3 = 0x53e2;
    0x0000296e ldr.w sb, [r3, 8]                                 |     sb = *(0x53ea);
    0x00002972 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00002976 beq 0x2a06                                        |         goto label_38;
                                                                 |     }
                                                                 | label_13:
    0x00002978 add.w fp, sb, 9                                   |     
    0x0000297c mov sl, r7                                        |     sl = r7;
    0x0000297e mov r0, fp                                        |     r0 = fp;
    0x00002980 blx 0xd00                                         |     strlen (r0);
    0x00002984 ldrb.w r3, [sb, 8]                                |     r3 = *((sb + 8));
    0x00002988 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r3 != 0) {
    0x0000298a cbnz r3, 0x29b2                                   |         goto label_39;
                                                                 |     }
    0x0000298c ldr.w r2, [sb, 4]                                 |     r2 = *((sb + 4));
    0x00002990 cmp r2, 0                                         |     
    0x00002992 ite eq                                            |     
                                                                 |     if (r2 != 0) {
    0x00002994 moveq sl, r7                                      |         sl = r7;
                                                                 |     }
                                                                 |     if (r2 == 0) {
    0x00002996 movne sl, r8                                      |         sl = r8;
                                                                 |     }
    0x00002998 b 0x29b2                                          |     
                                                                 |     while (r0 != 0) {
    0x0000299a mov r2, r6                                        |         r2 = r6;
    0x0000299c mov r1, fp                                        |         r1 = fp;
    0x0000299e mov r0, sl                                        |         r0 = sl;
    0x000029a0 blx 0xdfc                                         |         r0 = strncmp (r0, r1, r2);
                                                                 |         if (r0 == 0) {
    0x000029a4 cbnz r0, 0x29ae                                   |             
    0x000029a6 ldrb.w r2, [sl, r6]                               |             r2 = *((sl + r6));
    0x000029aa cmp r2, 0x3a                                      |             
                                                                 |             if (r2 == 0x3a) {
    0x000029ac beq 0x29e8                                        |                 goto label_40;
                                                                 |             }
                                                                 |         }
    0x000029ae add.w sl, r5, 1                                   |         sl += var_1h;
                                                                 | label_39:
    0x000029b2 movs r1, 0xa                                      |         r1 = 0xa;
    0x000029b4 mov r0, sl                                        |         r0 = sl;
    0x000029b6 blx 0xd0c                                         |         r0 = strchr (r0, r1);
    0x000029ba mov r5, r0                                        |         r5 = r0;
    0x000029bc cmp r0, 0                                         |         
    0x000029be bne 0x299a                                        |         
                                                                 |     }
    0x000029c0 ldr r1, [pc, 0xb0]                                |     
    0x000029c2 mov r2, fp                                        |     r2 = fp;
    0x000029c4 movs r0, 3                                        |     r0 = 3;
    0x000029c6 add r1, pc                                        |     r1 = 0x543e;
    0x000029c8 bl 0x2a88                                         |     fcn_00002a88 (r0);
                                                                 | label_15:
    0x000029cc ldr r0, [sp, 0xc]                                 |     r0 = fd;
    0x000029ce movs r4, 0                                        |     r4 = 0;
                                                                 | label_14:
    0x000029d0 blx 0xe14                                         |     close (r0);
    0x000029d4 mov r0, r8                                        |     r0 = r8;
    0x000029d6 blx 0xbd4                                         |     free (r0);
    0x000029da mov r0, r7                                        |     r0 = r7;
    0x000029dc blx 0xbd4                                         |     free (r0);
    0x000029e0 b 0x286a                                          |     goto label_12;
                                                                 | label_35:
    0x000029e2 movs r3, 1                                        |     r3 = 1;
    0x000029e4 strb r3, [r5]                                     |     *(r5) = r3;
    0x000029e6 b 0x286a                                          |     goto label_12;
                                                                 | label_40:
    0x000029e8 sub.w r5, r5, sl                                  |     r5 -= sl;
    0x000029ec ldr r0, [sp, 0xc]                                 |     r0 = fd;
    0x000029ee adds r5, 1                                        |     r5++;
    0x000029f0 mov r1, sl                                        |     r1 = sl;
    0x000029f2 mov r2, r5                                        |     r2 = r5;
    0x000029f4 blx 0xd60                                         |     r0 = write (r0, r1, r2);
    0x000029f8 cmp r5, r0                                        |     
                                                                 |     if (r5 != r0) {
    0x000029fa bne 0x2a26                                        |         goto label_41;
                                                                 |     }
    0x000029fc ldr.w sb, [sb]                                    |     sb = *(sb);
    0x00002a00 cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x00002a04 bne 0x2978                                        |         goto label_13;
                                                                 |     }
                                                                 | label_38:
    0x00002a06 ldr r0, [sp, 0xc]                                 |     r0 = fd;
    0x00002a08 b 0x29d0                                          |     goto label_14;
                                                                 | label_36:
    0x00002a0a mov r0, r7                                        |     r0 = r7;
    0x00002a0c mov r4, r8                                        |     r4 = r8;
    0x00002a0e blx 0xbd4                                         |     free (r0);
    0x00002a12 b 0x286a                                          |     goto label_12;
                                                                 | label_34:
    0x00002a14 blx 0xc10                                         |     stack_chk_fail ();
                                                                 | label_37:
    0x00002a18 ldr r1, [pc, 0x5c]                                |     
    0x00002a1a mov r2, r5                                        |     r2 = r5;
    0x00002a1c movs r0, 2                                        |     r0 = 2;
    0x00002a1e add r1, pc                                        |     r1 = 0x549a;
    0x00002a20 bl 0x2a88                                         |     fcn_00002a88 (r0);
    0x00002a24 b 0x29cc                                          |     goto label_15;
                                                                 | label_41:
    0x00002a26 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00002a28 blt 0x2a36                                        |         
    0x00002a2a ldr r1, [pc, 0x50]                                |         
    0x00002a2c movs r0, 2                                        |         r0 = 2;
    0x00002a2e add r1, pc                                        |         r1 = 0x54b0;
    0x00002a30 bl 0x2a88                                         |         fcn_00002a88 (r0);
    0x00002a34 b 0x29cc                                          |         goto label_15;
                                                                 |     }
    0x00002a36 ldr r2, [pc, 0x48]                                |     
    0x00002a38 movs r0, 2                                        |     r0 = 2;
    0x00002a3a ldr r1, [pc, 0x48]                                |     
    0x00002a3c add r2, pc                                        |     r2 = 0x54c2;
    0x00002a3e add r1, pc                                        |     r1 = 0x54c8;
    0x00002a40 bl 0x2a88                                         |     fcn_00002a88 (r0);
    0x00002a44 b 0x29cc                                          |     goto label_15;
                                                                 | }

[*] Function sprintf used 3 times conf-migrate