[*] Binary protection state of ubinize

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


[*] Function strcpy tear down of ubinize

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/ubinize @ 0x3638 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00003638 ()                                      | void fcn_00003638 (int16_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     size_t var_18h;
                                                                 |     int16_t c;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_1h_4;
                                                                 |     int16_t var_1h;
                                                                 |     char * src;
                                                                 |     int16_t var_438h;
                                                                 |     size_t n;
                                                                 |     int16_t var_850h;
                                                                 |     char * s;
                                                                 |     int16_t var_1040h;
                                                                 |     int16_t var_0h_3;
                                                                 |     int8_t var_1h_2;
                                                                 |     int8_t var_2h;
                                                                 |     int16_t var_1440h;
                                                                 |     int8_t var_1h_3;
                                                                 |     char * dest;
                                                                 |     int16_t var_1840h;
                                                                 |     int32_t var_0h_2;
                                                                 |     r0 = arg1;
    0x00003638 ldr r2, [pc, 0x384]                               |     
    0x0000363a ldr r3, [pc, 0x388]                               |     r3 = *(0x39c6);
    0x0000363c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00003640 sub.w sp, sp, 0x1840                              |     
    0x00003644 sub sp, 0x14                                      |     
    0x00003646 add r2, pc                                        |     r2 = 0x700a;
    0x00003648 add.w r4, sp, 0x1840                              |     r4 += var_1840h;
    0x0000364c ldr r1, [pc, 0x378]                               |     
    0x0000364e adds r4, 0xc                                      |     r4 += 0xc;
    0x00003650 str r0, [sp, 0x24]                                |     var_24h = r0;
    0x00003652 ldr r3, [r2, r3]                                  |     
    0x00003654 add r1, pc                                        |     r1 = 0x7020;
    0x00003656 ldr r3, [r3]                                      |     r3 = *(0x700a);
    0x00003658 str r3, [r4]                                      |     *(r4) = r3;
    0x0000365a mov.w r3, 0                                       |     r3 = 0;
    0x0000365e blx 0xd2c                                         |     fcn_00000d2c ();
    0x00003662 ldr r3, [pc, 0x368]                               |     
    0x00003664 str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x00003666 add r3, pc                                        |     r3 = 0x7038;
    0x00003668 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x0000366a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000366c beq.w 0x39a8                                      |         goto label_8;
                                                                 |     }
    0x00003670 movs r0, 0                                        |     r0 = 0;
    0x00003672 bl 0x3a3c                                         |     fcn_00003a3c (r0);
    0x00003676 str r0, [sp, 0x14]                                |     var_14h = r0;
    0x00003678 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000367a beq.w 0x390a                                      |         goto label_6;
                                                                 |     }
    0x0000367e add r5, sp, 0x34                                  |     r5 += src;
    0x00003680 mov.w r2, 0x400                                   |     r2 = 0x400;
    0x00003684 movs r1, 0                                        |     r1 = 0;
    0x00003686 mov r0, r5                                        |     r0 = r5;
    0x00003688 blx 0xcb0                                         |     putchar (r0);
    0x0000368a adds.w r5, r2, sp, lsl 28                         |     r5 = r2 + (sp << 28);
    0x0000368e str r5, [r0, 0x30]                                |     *((r0 + 0x30)) = r5;
    0x00003690 add.w r0, sp, 0x438                               |     r0 += var_438h;
    0x00003692 str r7, [r0, 8]                                   |     *((r0 + 8)) = r7;
    0x00003694 mov r4, r3                                        |     r4 = r3;
    0x00003696 mov.w r2, 0x400                                   |     r2 = 0x400;
    0x0000369a movs r1, 0                                        |     r1 = 0;
    0x0000369c sub.w r8, r4, 0x14                                |     r8 -= n;
    0x000036a0 add.w r6, sp, 0x1040                              |     r6 += var_1040h;
    0x000036a4 movs r4, 0                                        |     r4 = 0;
    0x000036a6 str r3, [sp, 8]                                   |     var_8h = r3;
    0x000036a8 adds r6, 4                                        |     r6 += 4;
    0x000036aa str r0, [sp, 0x18]                                |     var_18h = r0;
    0x000036ac mov r7, r4                                        |     r7 = r4;
    0x000036ae blx 0xcb0                                         |     putchar (r0);
    0x000036b2 mov.w r2, 0x400                                   |     r2 = 0x400;
    0x000036b6 movs r1, 0                                        |     r1 = 0;
    0x000036b8 mov r0, r8                                        |     r0 = r8;
    0x000036ba mov sl, r4                                        |     sl = r4;
    0x000036bc blx 0xcb0                                         |     putchar (r0);
    0x000036c0 mov.w r2, 0x400                                   |     r2 = 0x400;
    0x000036c4 mov r1, r4                                        |     r1 = r4;
    0x000036c6 mov r0, r6                                        |     r0 = r6;
    0x000036c8 str r4, [sp, 0x10]                                |     var_10h = r4;
    0x000036ca blx 0xcb0                                         |     putchar (r0);
    0x000036ce ldr r3, [pc, 0x300]                               |     
    0x000036d0 add r3, pc                                        |     r3 = 0x70a6;
    0x000036d2 str r3, [sp, 0x1c]                                |     c = r3;
    0x000036d4 ldr r3, [pc, 0x2fc]                               |     
    0x000036d6 add r3, pc                                        |     r3 = 0x70ae;
    0x000036d8 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x000036da ldr r3, [pc, 0x2fc]                               |     
    0x000036dc add r3, pc                                        |     r3 = 0x70ba;
    0x000036de str r3, [sp, 0x2c]                                |     var_2ch = r3;
                                                                 | label_1:
    0x000036e0 ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x000036e2 rsb.w r1, sl, 0x400                               |     r1 = 0x400 - sl;
    0x000036e6 add.w r0, r5, sl                                  |     r0 = r5 + sl;
    0x000036ea blx 0xb74                                         |     r0 = fcn_00000b74 ();
    0x000036ee cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000036f0 beq.w 0x3904                                      |         goto label_9;
                                                                 |     }
    0x000036f4 mov r0, r5                                        |     r0 = r5;
    0x000036f6 adds r7, 1                                        |     r7++;
    0x000036f8 blx 0xc68                                         |     strchr (r0, r1);
    0x000036fc ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x000036fe add.w sl, r0, -1                                  |     sl += var_1h;
    0x00003702 subw r2, r3, 0x81c                                |     __asm ("subw r2, r3, 0x81c");
    0x00003706 ldrb.w r1, [r2, sl]                               |     r1 = *((r2 + sl));
    0x0000370a cmp r1, 0xa                                       |     
                                                                 |     if (r1 != 0xa) {
    0x0000370c bne.w 0x3936                                      |         goto label_10;
                                                                 |     }
    0x00003710 cmp.w sl, -1                                      |     
                                                                 |     if (sl == -1) {
    0x00003714 beq.w 0x3846                                      |         goto label_11;
                                                                 |     }
    0x00003716 strh r7, [r2, 4]                                  |     *((r2 + 4)) = r7;
    0x00003718 add.w sb, r5, sl                                  |     sb = r5 + sl;
    0x0000371c movs r4, 0                                        |     r4 = 0;
                                                                 |     do {
                                                                 | label_0:
    0x0000371e add.w sl, sl, -1                                  |         sl += var_1h_4;
    0x00003722 strb.w r4, [sb]                                   |         *(sb) = r4;
    0x00003726 cmp.w sl, -1                                      |         
                                                                 |         if (sl == -1) {
    0x0000372a beq.w 0x3840                                      |             goto label_12;
                                                                 |         }
    0x0000372e ldrb fp, [sb, -0x1]!                              |         fp = *((sb -= 0x1));
    0x00003732 cmp.w fp, 0xa                                     |         
    0x00003736 beq 0x371e                                        |         
                                                                 |     } while (fp == 0xa);
    0x00003738 blx 0xc38                                         |     r0 = getpid ();
    0x0000373c ldr r3, [r0]                                      |     r3 = *(r0);
    0x0000373e ldrh.w r3, [r3, fp, lsl 1]                        |     offset_0 = fp << 1;
                                                                 |     r3 = *((r3 + offset_0));
    0x00003742 lsls r3, r3, 0x12                                 |     r3 <<= 0x12;
                                                                 |     if (r3 < r3) {
    0x00003744 bmi 0x371e                                        |         goto label_0;
                                                                 |     }
                                                                 | label_2:
    0x00003746 cmp.w fp, 0x5c                                    |     
                                                                 |     if (fp == 0x5c) {
    0x0000374a beq 0x36e0                                        |         goto label_1;
                                                                 |     }
    0x0000374c add.w r4, sp, 0x1440                              |     r4 += var_1440h;
    0x00003750 mov r0, r5                                        |     r0 = r5;
    0x00003752 adds r4, 8                                        |     r4 += 8;
    0x00003754 bl 0x313c                                         |     fcn_0000313c (r0);
    0x00003758 movw r2, 0x401                                    |     r2 = 0x401;
    0x0000375c mov r1, r0                                        |     r1 = r0;
    0x0000375e mov r0, r4                                        |     r0 = r4;
    0x00003760 blx 0xbc0                                         |     r0 = strcpy (r0, r1)
    0x00003764 subs r0, r0, r4                                   |     r0 -= r4;
                                                                 |     if (r0 == r0) {
    0x00003766 beq.w 0x389e                                      |         goto label_13;
                                                                 |     }
    0x0000376a ldrb r3, [r4]                                     |     r3 = *(r4);
    0x0000376c cmp r3, 0x23                                      |     
                                                                 |     if (r3 == 0x23) {
    0x0000376e beq.w 0x389e                                      |         goto label_13;
                                                                 |     }
    0x00003772 cmp r3, 0x5b                                      |     
                                                                 |     if (r3 == 0x5b) {
    0x00003774 bne 0x3782                                        |         
    0x00003776 add r0, r4                                        |         r0 += r4;
    0x00003778 ldrb r3, [r0, -0x1]                               |         r3 = *((r0 - 0x1));
    0x0000377c cmp r3, 0x5d                                      |         
                                                                 |         if (r3 == 0x5d) {
    0x0000377e beq.w 0x38c4                                      |             goto label_14;
                                                                 |         }
                                                                 |     }
    0x00003782 ldr r1, [sp, 0x1c]                                |     r1 = c;
    0x00003784 mov r3, r6                                        |     r3 = r6;
    0x00003786 mov r2, r8                                        |     r2 = r8;
    0x00003788 mov r0, r4                                        |     r0 = r4;
    0x0000378a blx 0xca4                                         |     r0 = memset (r0, r1, r2);
    0x0000378e cmp r0, 2                                         |     
                                                                 |     if (r0 != 2) {
    0x00003790 beq 0x37b4                                        |         
    0x00003792 ldr r1, [sp, 0x2c]                                |         r1 = var_2ch;
    0x00003794 mov r3, r6                                        |         r3 = r6;
    0x00003796 mov r2, r8                                        |         r2 = r8;
    0x00003798 mov r0, r4                                        |         r0 = r4;
    0x0000379a blx 0xca4                                         |         r0 = memset (r0, r1, r2);
    0x0000379e cmp r0, 2                                         |         
                                                                 |         if (r0 == 2) {
    0x000037a0 beq 0x37b4                                        |             goto label_15;
                                                                 |         }
    0x000037a2 ldr r1, [pc, 0x238]                               |         
    0x000037a4 mov r3, r6                                        |         r3 = r6;
    0x000037a6 mov r2, r8                                        |         r2 = r8;
    0x000037a8 mov r0, r4                                        |         r0 = r4;
    0x000037aa add r1, pc                                        |         r1 = 0x718c;
    0x000037ac blx 0xca4                                         |         r0 = memset (r0, r1, r2);
    0x000037b0 cmp r0, 2                                         |         
                                                                 |         if (r0 != 2) {
    0x000037b2 bne 0x384c                                        |             goto label_16;
                                                                 |         }
                                                                 |     }
                                                                 | label_15:
    0x000037b4 mov r0, r8                                        |     r0 = r8;
    0x000037b6 bl 0x313c                                         |     fcn_0000313c (r0);
    0x000037ba movw r2, 0x401                                    |     r2 = 0x401;
    0x000037be mov r1, r0                                        |     r1 = r0;
    0x000037c0 mov r0, r8                                        |     r0 = r8;
    0x000037c2 blx 0xbe4                                         |     open64 ();
    0x000037c6 mov r0, r8                                        |     r0 = r8;
    0x000037c8 bl 0x30e8                                         |     fcn_000030e8 (r0);
    0x000037cc movw r2, 0x401                                    |     r2 = 0x401;
    0x000037d0 mov r1, r0                                        |     r1 = r0;
    0x000037d2 mov r0, r8                                        |     r0 = r8;
    0x000037d4 blx 0xbe4                                         |     open64 ();
    0x000037d8 mov r0, r6                                        |     r0 = r6;
    0x000037da bl 0x313c                                         |     fcn_0000313c (r0);
    0x000037dc stc2 p2, c15, [pc], 0x100                         |     __asm ("stc2 p2, c15, [pc], 0x100");
    0x000037e0 tst r1, r0                                        |     
    0x000037e2 mov r1, r0                                        |     r1 = r0;
    0x000037e4 mov r0, r6                                        |     r0 = r6;
    0x000037e6 blx 0xbe4                                         |     open64 ();
    0x000037ea ldrb r3, [r6]                                     |     r3 = *(r6);
    0x000037ec cmp r3, 0x22                                      |     
                                                                 |     if (r3 != 0x22) {
    0x000037ee bne 0x38b0                                        |         goto label_17;
                                                                 |     }
    0x000037f0 ldrb r3, [r6, 1]                                  |     r3 = var_1h_2;
    0x000037f2 cmp r3, 0x22                                      |     
                                                                 |     if (r3 != 0x22) {
    0x000037f4 bne 0x38b0                                        |         goto label_17;
                                                                 |     }
    0x000037f6 ldrb r3, [r6, 2]                                  |     r3 = var_2h;
    0x000037f8 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000037fa bne 0x38b0                                        |         goto label_17;
                                                                 |     }
                                                                 | label_4:
    0x000037fc movs r3, 0                                        |     r3 = 0;
    0x000037fe strb r3, [r6]                                     |     *(r6) = r3;
                                                                 |     do {
                                                                 | label_3:
    0x00003800 ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x00003802 add.w r4, sp, 0xc40                               |         r4 += s;
    0x00003806 movw r2, 0x401                                    |         r2 = 0x401;
    0x0000380a movs r1, 1                                        |         r1 = 1;
    0x0000380c mov r0, r4                                        |         r0 = r4;
    0x0000380e str.w r8, [sp, 4]                                 |         __asm ("str.w r8, [var_4h]");
    0x00003812 str r3, [sp]                                      |         *(sp) = r3;
    0x00003814 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x00003816 blx 0xc98                                         |         isoc99_sscanf ();
    0x0000381a ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x0000381c mov r2, r6                                        |         r2 = r6;
    0x0000381e mov r1, r4                                        |         r1 = r4;
    0x00003820 bl 0x3b54                                         |         fcn_00003b54 (r0, r1, r2, r3);
    0x00003824 str r0, [sp, 0x10]                                |         var_10h = r0;
                                                                 | label_5:
    0x00003826 mov.w r2, 0x400                                   |         r2 = 0x400;
    0x0000382a movs r1, 0                                        |         r1 = 0;
    0x0000382c mov r0, r5                                        |         r0 = r5;
    0x0000382e blx 0xcb0                                         |         putchar (r0);
    0x00003832 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x00003834 cmp r3, 0                                         |         
                                                                 |         if (r3 < 0) {
    0x00003836 blt.w 0x395e                                      |             goto label_18;
                                                                 |         }
    0x0000383a mov.w sl, 0                                       |         sl = 0;
    0x0000383e b 0x36e0                                          |         goto label_1;
                                                                 | label_12:
    0x00003840 ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x00003842 subw r2, r3, 0x81c                                |         __asm ("subw r2, r3, 0x81c");
                                                                 | label_11:
    0x00003846 ldrb fp, [r2, -0x1]                               |         fp = *((r2 - 0x1));
    0x0000384a b 0x3746                                          |         goto label_2;
                                                                 | label_16:
    0x0000384c ldr r1, [pc, 0x190]                               |         
    0x0000384e mov r3, r6                                        |         r3 = r6;
    0x00003850 mov r2, r8                                        |         r2 = r8;
    0x00003852 mov r0, r4                                        |         r0 = r4;
    0x00003854 add r1, pc                                        |         r1 = 0x7238;
    0x00003856 blx 0xca4                                         |         r0 = memset (r0, r1, r2);
    0x0000385a cmp r0, 2                                         |         
                                                                 |         if (r0 == 2) {
    0x0000385c beq.w 0x397e                                      |             goto label_19;
                                                                 |         }
    0x00003860 ldr r1, [pc, 0x180]                               |         
    0x00003862 mov r0, r4                                        |         r0 = r4;
    0x00003864 mov r3, r6                                        |         r3 = r6;
    0x00003866 mov r2, r8                                        |         r2 = r8;
    0x00003868 add r1, pc                                        |         r1 = 0x7250;
    0x0000386a blx 0xca4                                         |         r0 = memset (r0, r1, r2);
    0x0000386e cmp r0, 2                                         |         
                                                                 |         if (r0 == 2) {
    0x00003870 beq.w 0x397e                                      |             goto label_19;
                                                                 |         }
    0x00003874 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x00003876 movs r1, 1                                        |         r1 = 1;
    0x00003878 ldr r2, [sp, 0x20]                                |         r2 = var_20h;
    0x0000387a adds r3, 1                                        |         r3++;
    0x0000387c str r3, [sp, 0x10]                                |         var_10h = r3;
    0x0000387e ldr r3, [pc, 0x168]                               |         r3 = *(0x39ea);
    0x00003880 ldr r4, [r2, r3]                                  |         r4 = *((r2 + r3));
    0x00003882 ldr r2, [pc, 0x168]                               |         
    0x00003884 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x00003886 str r7, [sp]                                      |         *(sp) = r7;
    0x00003888 add r2, pc                                        |         r2 = 0x727a;
    0x0000388a ldr r0, [r4]                                      |         r0 = *(r4);
    0x0000388c blx 0xcf0                                         |         fcn_00000cf0 ();
    0x00003890 ldr r2, [pc, 0x15c]                               |         
    0x00003892 mov r3, r5                                        |         r3 = r5;
    0x00003894 ldr r0, [r4]                                      |         r0 = *(r4);
    0x00003896 movs r1, 1                                        |         r1 = 1;
    0x00003898 add r2, pc                                        |         r2 = 0x728c;
    0x0000389a blx 0xcf0                                         |         fcn_00000cf0 ();
                                                                 | label_13:
    0x0000389e mov.w r2, 0x400                                   |         r2 = 0x400;
    0x000038a2 movs r1, 0                                        |         r1 = 0;
    0x000038a4 mov r0, r5                                        |         r0 = r5;
    0x000038a6 mov.w sl, 0                                       |         sl = 0;
    0x000038aa blx 0xcb0                                         |         putchar (r0);
    0x000038ae b 0x36e0                                          |         goto label_1;
                                                                 | label_17:
    0x000038b0 ldrb r3, [r6]                                     |         r3 = *(r6);
    0x000038b2 cmp r3, 0x27                                      |         
    0x000038b4 bne 0x3800                                        |         
                                                                 |     } while (r3 != 0x27);
    0x000038b6 ldrb r3, [r6, 1]                                  |     r3 = var_1h_2;
    0x000038b8 cmp r3, 0x27                                      |     
                                                                 |     if (r3 != 0x27) {
    0x000038ba bne 0x3800                                        |         goto label_3;
                                                                 |     }
    0x000038bc ldrb r3, [r6, 2]                                  |     r3 = var_2h;
    0x000038be cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000038c0 beq 0x37fc                                        |         goto label_4;
                                                                 |     }
    0x000038c2 b 0x3800                                          |     goto label_3;
                                                                 | label_14:
    0x000038c4 mov r0, r4                                        |     r0 = r4;
    0x000038c6 ldr r1, [pc, 0x12c]                               |     
    0x000038c8 ldr r4, [sp, 0x18]                                |     r4 = var_18h;
    0x000038ca add r1, pc                                        |     r1 = 0x72c4;
    0x000038cc mov r2, r4                                        |     r2 = r4;
    0x000038ce blx 0xca4                                         |     memset (r0, r1, r2);
    0x000038d2 mov r0, r4                                        |     r0 = r4;
    0x000038d4 bl 0x313c                                         |     fcn_0000313c (r0);
    0x000038d8 movw r2, 0x401                                    |     r2 = 0x401;
    0x000038dc mov r1, r0                                        |     r1 = r0;
    0x000038de mov r0, r4                                        |     r0 = r4;
    0x000038e0 blx 0xbe4                                         |     open64 ();
    0x000038e4 mov r0, r4                                        |     r0 = r4;
    0x000038e6 bl 0x30e8                                         |     fcn_000030e8 (r0);
    0x000038ea movw r2, 0x401                                    |     r2 = 0x401;
    0x000038ee mov r1, r0                                        |     r1 = r0;
    0x000038f0 mov r0, r4                                        |     r0 = r4;
    0x000038f2 blx 0xbe4                                         |     open64 ();
    0x000038f6 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x000038f8 movs r2, 0                                        |     r2 = 0;
    0x000038fa mov r1, r4                                        |     r1 = r4;
    0x000038fc bl 0x3b54                                         |     fcn_00003b54 (r0, r1, r2, r3);
    0x00003900 str r0, [sp, 0x10]                                |     var_10h = r0;
    0x00003902 b 0x3826                                          |     goto label_5;
                                                                 | label_9:
    0x00003904 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00003906 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003908 bne 0x3972                                        |         goto label_20;
                                                                 |     }
                                                                 | label_6:
    0x0000390a ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x0000390c blx 0xd08                                         |     fcn_00000d08 ();
                                                                 |     do {
                                                                 | label_7:
    0x00003910 ldr r2, [pc, 0xe4]                                |         
    0x00003912 add.w r1, sp, 0x1840                              |         r1 += var_1840h;
    0x00003916 ldr r3, [pc, 0xac]                                |         r3 = *(0x39c6);
    0x00003918 adds r1, 0xc                                      |         r1 += 0xc;
    0x0000391a add r2, pc                                        |         r2 = 0x7316;
    0x0000391c ldr r3, [r2, r3]                                  |         r3 = *(0x7316);
    0x0000391e ldr r2, [r3]                                      |         r2 = *(0x7316);
    0x00003920 ldr r3, [r1]                                      |         r3 = *(r1);
    0x00003922 eors r2, r3                                       |         r2 ^= r3;
    0x00003924 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00003928 bne 0x39a4                                        |             goto label_21;
                                                                 |         }
    0x0000392a ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x0000392c add.w sp, sp, 0x1840                              |         
    0x00003930 add sp, 0x14                                      |         
    0x00003932 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_10:
    0x00003936 ldr r1, [sp, 0x20]                                |         r1 = var_20h;
    0x00003938 ldr r2, [pc, 0xac]                                |         r2 = *(0x39e8);
    0x0000393a ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x0000393c ldr r1, [r1, r2]                                  |         r1 = *((r1 + r2));
    0x0000393e ldr r2, [pc, 0xbc]                                |         
    0x00003940 str r7, [sp]                                      |         *(sp) = r7;
    0x00003942 ldr r0, [r1]                                      |         r0 = *(r1);
    0x00003944 movs r1, 1                                        |         r1 = 1;
    0x00003946 add r2, pc                                        |         r2 = 0x7348;
    0x00003948 blx 0xcf0                                         |         fcn_00000cf0 ();
    0x0000394c ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x0000394e bl 0x3a80                                         |         fcn_00003a80 (r0);
    0x00003952 movs r3, 0                                        |         r3 = 0;
    0x00003954 ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
    0x00003956 str r3, [sp, 0x14]                                |         var_14h = r3;
    0x00003958 blx 0xd08                                         |         fcn_00000d08 ();
    0x0000395c b 0x3910                                          |         
                                                                 |     } while (1);
                                                                 | label_18:
    0x0000395e ldr r1, [sp, 0x20]                                |     r1 = var_20h;
    0x00003960 movs r2, 0x25                                     |     r2 = 0x25;
    0x00003962 ldr r3, [pc, 0x84]                                |     
    0x00003964 ldr r0, [pc, 0x98]                                |     
    0x00003966 ldr r3, [r1, r3]                                  |     r3 = *((r1 + r3));
    0x00003968 movs r1, 1                                        |     r1 = 1;
    0x0000396a add r0, pc                                        |     r0 = 0x736e;
    0x0000396c ldr r3, [r3]                                      |     r3 = *(0x39ea);
    0x0000396e blx 0xba8                                         |     lseek64 ();
                                                                 | label_20:
    0x00003972 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00003974 movs r3, 0                                        |     r3 = 0;
    0x00003976 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00003978 bl 0x3a80                                         |     fcn_00003a80 (r0);
    0x0000397c b 0x390a                                          |     goto label_6;
                                                                 | label_19:
    0x0000397e mov r0, r8                                        |     r0 = r8;
    0x00003980 bl 0x313c                                         |     fcn_0000313c (r0);
    0x00003984 movw r2, 0x401                                    |     r2 = 0x401;
    0x00003988 mov r1, r0                                        |     r1 = r0;
    0x0000398a mov r0, r8                                        |     r0 = r8;
    0x0000398c blx 0xbe4                                         |     open64 ();
    0x00003990 mov r0, r8                                        |     r0 = r8;
    0x00003992 bl 0x30e8                                         |     fcn_000030e8 (r0);
    0x00003996 movw r2, 0x401                                    |     r2 = 0x401;
    0x0000399a mov r1, r0                                        |     r1 = r0;
    0x0000399c mov r0, r8                                        |     r0 = r8;
    0x0000399e blx 0xbe4                                         |     open64 ();
    0x000039a2 b 0x37fc                                          |     goto label_4;
                                                                 | label_21:
    0x000039a4 blx 0xb8c                                         |     fcn_00000b8c ();
                                                                 | label_8:
    0x000039a8 str r0, [sp, 0x14]                                |     var_14h = r0;
    0x000039aa ldr r1, [pc, 0x3c]                                |     r1 = *(0x39ea);
    0x000039ac ldr r0, [sp, 0x20]                                |     r0 = var_20h;
    0x000039ae ldr r2, [pc, 0x54]                                |     
    0x000039b0 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x000039b2 ldr r1, [r0, r1]                                  |     r1 = *((r0 + r1));
    0x000039b4 add r2, pc                                        |     r2 = 0x73be;
    0x000039b6 ldr r0, [r1]                                      |     r0 = *(0x39ea);
    0x000039b8 movs r1, 1                                        |     r1 = 1;
    0x000039ba blx 0xcf0                                         |     fcn_00000cf0 ();
    0x000039be b 0x3910                                          |     goto label_7;
                                                                 | }

[*] Function strcpy used 2 times ubinize