[*] Binary protection state of file_upload

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


[*] Function strcat tear down of file_upload

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/file_upload @ 0x172c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000172c ()                                      | void fcn_0000172c (int16_t arg_48h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_54h, size_t size, int16_t arg_90h, int16_t arg_ach, int16_t arg_94h, int16_t arg_ech, int16_t arg_494h, int16_t arg_4ech, int16_t arg_4f0h, int16_t arg_4f1h, int16_t arg_4fch, int16_t arg_4feh, int16_t arg_8ech, int16_t arg_918h, char * arg1, char * arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t fd;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     char * s2;
                                                                 |     char * var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     char * ptr;
                                                                 |     void * var_2ch;
                                                                 |     char * path;
                                                                 |     int16_t var_34h;
                                                                 |     char * src;
                                                                 |     int16_t var_3ch;
                                                                 |     char * dest;
                                                                 |     int16_t var_44h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0000172c ldr r2, [pc, 0x278]                               |     
    0x0000172e ldr r3, [pc, 0x27c]                               |     r3 = *(0x19ae);
    0x00001730 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00001734 subw sp, sp, 0x49c                                |     __asm ("subw sp, sp, 0x49c");
    0x00001738 add r2, pc                                        |     r2 = 0x30e4;
    0x0000173a str r0, [sp, 0xc]                                 |     path = r0;
    0x0000173c mov sl, r1                                        |     sl = r1;
    0x0000173e movs r1, 0                                        |     r1 = 0;
    0x00001740 ldr r3, [r2, r3]                                  |     
    0x00001742 ldr r3, [r3]                                      |     r3 = *(0x30e4);
    0x00001744 str.w r3, [sp, 0x494]                             |     __asm ("str.w r3, [arg_494h]");
    0x00001748 mov.w r3, 0                                       |     r3 = 0;
    0x0000174c blx 0xd9c                                         |     r0 = open (r0, r1, r2);
    0x00001750 subs r7, r0, 0                                    |     r7 = r0 - 0;
                                                                 |     if (r7 < r0) {
    0x00001752 blt.w 0x199c                                      |         goto label_27;
                                                                 |     }
    0x00001754 strh r3, [r4, 8]                                  |     *((r4 + 8)) = r3;
    0x00001756 add r4, sp, 0x14                                  |     r4 += src;
    0x00001758 mov r1, r4                                        |     r1 = r4;
    0x0000175a blx 0xe44                                         |     r0 = fstatfs ();
    0x0000175e cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00001760 blt.w 0x1990                                      |         goto label_28;
                                                                 |     }
    0x00001764 ldr r3, [pc, 0x248]                               |     
    0x00001766 add.w sb, sp, 0x94                                |     sb += arg_94h;
    0x0000176a movs r2, 1                                        |     r2 = 1;
    0x0000176c mov r0, sb                                        |     r0 = sb;
    0x0000176e str.w sl, [sp, 4]                                 |     __asm ("str.w sl, [ptr]");
    0x00001772 add r3, pc                                        |     r3 = 0x3126;
    0x00001774 str r3, [sp]                                      |     *(sp) = r3;
    0x00001776 mov.w r3, 0x400                                   |     r3 = 0x400;
    0x0000177a mov r1, r3                                        |     r1 = r3;
    0x0000177c blx 0xefc                                         |     fcn_00000efc ();
    0x00001780 movs r1, 0                                        |     r1 = 0;
    0x00001782 mov r0, sb                                        |     r0 = sb;
    0x00001784 blx 0xe6c                                         |     fcn_00000e6c ();
    0x00001788 adds r0, 1                                        |     r0++;
                                                                 |     if (r0 != 1) {
    0x0000178a beq 0x1792                                        |         
    0x0000178c mov r0, sb                                        |         r0 = sb;
    0x0000178e blx 0xd00                                         |         unlink (r0);
                                                                 |     }
    0x00001792 mov.w r2, 0x1a4                                   |     r2 = 0x1a4;
    0x00001796 movw r1, 0x241                                    |     r1 = 0x241;
    0x0000179a mov r0, sb                                        |     r0 = sb;
    0x0000179c blx 0xd9c                                         |     r0 = open (r0, r1, r2);
    0x000017a0 subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x000017a2 blt.w 0x1990                                      |         goto label_28;
                                                                 |     }
    0x000017a6 add r5, sp, 0x54                                  |     r5 += arg_54h;
    0x000017a8 mov r1, r5                                        |     r1 = r5;
    0x000017aa blx 0xe44                                         |     r0 = fstatfs ();
    0x000017ae cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000017b0 blt.w 0x198c                                      |         goto label_29;
                                                                 |     }
    0x000017b4 ldr r2, [sp, 0x58]                                |     r2 = *(size);
    0x000017b6 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x000017b8 cmp r2, r3                                        |     
    0x000017ba it lt                                             |     
                                                                 |     if (r2 >= r3) {
    0x000017bc movlt r2, r3                                      |         r2 = r3;
                                                                 |     }
    0x000017be mov r0, r2                                        |     r0 = r2;
    0x000017c0 mov r8, r2                                        |     r8 = r2;
    0x000017c2 blx 0xd60                                         |     r0 = malloc (r0);
    0x000017c6 mov r5, r0                                        |     r5 = r0;
    0x000017c8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000017ca beq.w 0x198c                                      |         goto label_29;
                                                                 |     }
                                                                 |     do {
                                                                 | label_0:
    0x000017ce mov r2, r8                                        |         r2 = r8;
    0x000017d0 mov r1, r5                                        |         r1 = r5;
    0x000017d2 mov r0, r7                                        |         r0 = r7;
    0x000017d4 bl 0x1584                                         |         r0 = fcn_00001584 (r0, r1, r2);
    0x000017d8 subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 <= r0) {
    0x000017da ble 0x1844                                        |             goto label_30;
                                                                 |         }
    0x000017dc mov.w fp, 0                                       |         
    0x000017e0 b 0x17ea                                          |         goto label_31;
                                                                 | label_1:
    0x000017e2 beq 0x17ce                                        |         
                                                                 |     } while (r4 == r0);
    0x000017e4 add fp, r0                                        |     
                                                                 | label_2:
    0x000017e6 cmp r4, fp                                        |     
                                                                 |     if (r4 < fp) {
    0x000017e8 bls 0x17ce                                        |         goto label_0;
                                                                 |     }
                                                                 | label_31:
    0x000017ea sub.w r2, r4, fp                                  |     r2 = r4 - fp;
    0x000017ee add.w r1, r5, fp                                  |     r1 = r5 + fp;
    0x000017f2 mov r0, r6                                        |     r0 = r6;
    0x000017f4 blx 0xe50                                         |     r0 = write (r0, r1, r2);
    0x000017f8 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x000017fa bge 0x17e2                                        |         goto label_1;
                                                                 |     }
    0x000017fc blx 0xe08                                         |     r0 = errno_location ();
    0x00001800 ldr r2, [r0]                                      |     r2 = *(r0);
    0x00001802 cmp r2, 4                                         |     
                                                                 |     if (r2 == 4) {
    0x00001804 beq 0x17e6                                        |         goto label_2;
                                                                 |     }
                                                                 | label_4:
    0x00001806 mov r0, r5                                        |     r0 = r5;
    0x00001808 mov.w r4, -1                                      |     r4 = -1;
    0x0000180c blx 0xcac                                         |     free (r0);
    0x00001810 mov r0, r7                                        |     r0 = r7;
    0x00001812 blx 0xed8                                         |     fcn_00000ed8 ();
    0x00001816 mov r0, r6                                        |     r0 = r6;
    0x00001818 blx 0xed8                                         |     fcn_00000ed8 ();
    0x0000181c mov r0, sb                                        |     r0 = sb;
    0x0000181e blx 0xd00                                         |     unlink (r0);
                                                                 |     do {
                                                                 | label_5:
    0x00001822 ldr r2, [pc, 0x190]                               |         
    0x00001824 ldr r3, [pc, 0x184]                               |         r3 = *(0x19ac);
    0x00001826 add r2, pc                                        |         r2 = 0x31e0;
    0x00001828 ldr r3, [r2, r3]                                  |         r3 = *(0x31e0);
    0x0000182a ldr r2, [r3]                                      |         r2 = *(0x31e0);
    0x0000182c ldr.w r3, [sp, 0x494]                             |         r3 = *(arg_494h);
    0x00001830 eors r2, r3                                       |         r2 ^= r3;
    0x00001832 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00001836 bne.w 0x19a2                                      |             goto label_32;
                                                                 |         }
    0x0000183a mov r0, r4                                        |         r0 = r4;
    0x0000183c addw sp, sp, 0x49c                                |         __asm ("addw sp, var_24h");
    0x00001840 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_30:
    0x00001844 mov r0, r6                                        |         r0 = r6;
    0x00001846 blx 0xc4c                                         |         r0 = fsync ();
    0x0000184a cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000184c bne 0x18f6                                        |             goto label_33;
                                                                 |         }
    0x0000184e mov r0, r6                                        |         r0 = r6;
    0x00001850 blx 0xed8                                         |         r0 = fcn_00000ed8 ();
    0x00001854 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00001856 bne 0x1914                                        |             goto label_34;
                                                                 |         }
    0x00001858 mov r1, sl                                        |         r1 = sl;
    0x0000185a mov r0, sb                                        |         r0 = sb;
    0x0000185c blx 0xda8                                         |         r0 = rename (r0, r1);
    0x00001860 mov r8, r0                                        |         r8 = r0;
    0x00001862 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00001864 bne 0x18d8                                        |             goto label_35;
                                                                 |         }
    0x00001866 mov r0, sb                                        |         r0 = sb;
    0x00001868 blx 0xd78                                         |         dirname ();
    0x0000186c mov r1, r8                                        |         r1 = r8;
    0x0000186e blx 0xd9c                                         |         r0 = open (r0, r1, r2);
    0x00001872 subs.w r8, r0, 0                                  |         r8 = r0 - 0;
                                                                 |         if (r8 < r0) {
    0x00001876 blt 0x1932                                        |             goto label_36;
                                                                 |         }
    0x00001878 blx 0xc4c                                         |         r0 = fsync ();
    0x0000187c cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000187e bne 0x1950                                        |             goto label_37;
                                                                 |         }
    0x00001880 mov r0, r8                                        |         r0 = r8;
    0x00001882 blx 0xed8                                         |         r0 = fcn_00000ed8 ();
    0x00001886 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00001888 bne 0x196e                                        |             goto label_38;
                                                                 |         }
                                                                 | label_3:
    0x0000188a mov r0, r5                                        |         r0 = r5;
    0x0000188c blx 0xcac                                         |         free (r0);
    0x00001890 movs r1, 1                                        |         r1 = 1;
    0x00001892 mov r0, r7                                        |         r0 = r7;
    0x00001894 blx 0xe20                                         |         fcntl ();
    0x00001898 adds r0, 1                                        |         r0++;
                                                                 |         if (r0 != 1) {
    0x0000189a beq 0x18a8                                        |             
    0x0000189c mov r0, r7                                        |             r0 = r7;
    0x0000189e blx 0xed8                                         |             fcn_00000ed8 ();
    0x000018a2 ldr r0, [sp, 0xc]                                 |             r0 = path;
    0x000018a4 blx 0xd00                                         |             unlink (r0);
                                                                 |         }
    0x000018a8 movs r1, 1                                        |         r1 = 1;
    0x000018aa mov r0, r6                                        |         r0 = r6;
    0x000018ac blx 0xe20                                         |         fcntl ();
    0x000018b0 adds r0, 1                                        |         r0++;
    0x000018b2 beq 0x1822                                        |         
                                                                 |     } while (r0 == 1);
    0x000018b4 mov r0, r6                                        |     r0 = r6;
    0x000018b6 blx 0xed8                                         |     fcn_00000ed8 ();
    0x000018ba ldr r2, [pc, 0xfc]                                |     
    0x000018bc mov.w r3, 0x400                                   |     r3 = 0x400;
    0x000018c0 mov r1, r3                                        |     r1 = r3;
    0x000018c2 mov r0, sb                                        |     r0 = sb;
    0x000018c4 add r2, pc                                        |     r2 = 0x3282;
    0x000018c6 strd r2, sl, [sp]                                 |     __asm ("strd r2, sl, [sp]");
    0x000018ca movs r2, 1                                        |     r2 = 1;
    0x000018cc blx 0xefc                                         |     fcn_00000efc ();
    0x000018d0 mov r0, sb                                        |     r0 = sb;
    0x000018d2 blx 0xd00                                         |     unlink (r0);
    0x000018d4 ands.w r7, r6, r4, asr 26                         |     r7 = r6 & (r4 >> 26);
                                                                 | label_35:
    0x000018d8 blx 0xe08                                         |     r0 = errno_location ();
    0x000018dc ldr r0, [r0]                                      |     r0 = *(r0);
    0x000018de mov.w r4, -1                                      |     r4 = -1;
    0x000018e2 blx 0xd6c                                         |     strerror (r0);
    0x000018e6 ldr r2, [pc, 0xd4]                                |     
    0x000018e8 mov r3, r0                                        |     r3 = r0;
    0x000018ea movs r1, 1                                        |     r1 = 1;
    0x000018ec movs r0, 3                                        |     r0 = 3;
    0x000018ee add r2, pc                                        |     r2 = 0x32b0;
    0x000018f0 blx 0xe78                                         |     fcn_00000e78 ();
    0x000018f4 b 0x188a                                          |     goto label_3;
                                                                 | label_33:
    0x000018f6 blx 0xe08                                         |     r0 = errno_location ();
    0x000018fa ldr r0, [r0]                                      |     r0 = *(r0);
    0x000018fc mov.w r4, -1                                      |     r4 = -1;
    0x00001900 blx 0xd6c                                         |     strerror (r0);
    0x00001904 ldr r2, [pc, 0xb8]                                |     
    0x00001906 mov r3, r0                                        |     r3 = r0;
    0x00001908 movs r1, 1                                        |     r1 = 1;
    0x0000190a movs r0, 3                                        |     r0 = 3;
    0x0000190c add r2, pc                                        |     r2 = 0x32d0;
    0x0000190e blx 0xe78                                         |     fcn_00000e78 ();
    0x00001912 b 0x188a                                          |     goto label_3;
                                                                 | label_34:
    0x00001914 blx 0xe08                                         |     r0 = errno_location ();
    0x00001918 ldr r0, [r0]                                      |     r0 = *(r0);
    0x0000191a mov.w r4, -1                                      |     r4 = -1;
    0x0000191e blx 0xd6c                                         |     strerror (r0);
    0x00001922 ldr r2, [pc, 0xa0]                                |     
    0x00001924 mov r3, r0                                        |     r3 = r0;
    0x00001926 movs r1, 1                                        |     r1 = 1;
    0x00001928 movs r0, 3                                        |     r0 = 3;
    0x0000192a add r2, pc                                        |     r2 = 0x32f4;
    0x0000192c blx 0xe78                                         |     fcn_00000e78 ();
    0x00001930 b 0x188a                                          |     goto label_3;
                                                                 | label_36:
    0x00001932 blx 0xe08                                         |     r0 = errno_location ();
    0x00001936 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00001938 mov.w r4, -1                                      |     r4 = -1;
    0x0000193a adds r4, 0xff                                     |     r4 += 0xff;
    0x0000193c blx 0xd6c                                         |     strerror (r0);
    0x00001940 ldr r2, [pc, 0x84]                                |     
    0x00001942 mov r3, r0                                        |     r3 = r0;
    0x00001944 movs r1, 1                                        |     r1 = 1;
    0x00001946 movs r0, 3                                        |     r0 = 3;
    0x00001948 add r2, pc                                        |     r2 = 0x3314;
    0x0000194a blx 0xe78                                         |     fcn_00000e78 ();
    0x0000194e b 0x188a                                          |     goto label_3;
                                                                 | label_37:
    0x00001950 blx 0xe08                                         |     r0 = errno_location ();
    0x00001954 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00001956 mov.w r4, -1                                      |     r4 = -1;
    0x0000195a blx 0xd6c                                         |     strerror (r0);
    0x0000195e ldr r2, [pc, 0x6c]                                |     
    0x00001960 mov r3, r0                                        |     r3 = r0;
    0x00001962 movs r1, 1                                        |     r1 = 1;
    0x00001964 movs r0, 3                                        |     r0 = 3;
    0x00001966 add r2, pc                                        |     r2 = 0x3338;
    0x00001968 blx 0xe78                                         |     fcn_00000e78 ();
    0x0000196c b 0x188a                                          |     goto label_3;
                                                                 | label_38:
    0x0000196e blx 0xe08                                         |     r0 = errno_location ();
    0x00001972 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00001974 mov.w r4, -1                                      |     r4 = -1;
    0x00001978 blx 0xd6c                                         |     strerror (r0);
    0x0000197c ldr r2, [pc, 0x50]                                |     
    0x0000197e mov r3, r0                                        |     r3 = r0;
    0x00001980 movs r1, 1                                        |     r1 = 1;
    0x00001982 movs r0, 3                                        |     r0 = 3;
    0x00001984 add r2, pc                                        |     r2 = 0x3358;
    0x00001986 blx 0xe78                                         |     fcn_00000e78 ();
    0x0000198a b 0x188a                                          |     goto label_3;
                                                                 | label_29:
    0x0000198c movs r5, 0                                        |     r5 = 0;
    0x0000198e b 0x1806                                          |     goto label_4;
                                                                 | label_28:
    0x00001990 mov r0, r7                                        |     r0 = r7;
    0x00001992 mov.w r4, -1                                      |     r4 = -1;
    0x00001996 blx 0xed8                                         |     fcn_00000ed8 ();
    0x0000199a b 0x1822                                          |     goto label_5;
                                                                 | label_27:
    0x0000199c mov.w r4, -1                                      |     r4 = -1;
    0x000019a0 b 0x1822                                          |     goto label_5;
                                                                 | label_32:
    0x000019a2 blx 0xcf4                                         |     stack_chk_fail ();
    0x000019a6 nop                                               |     
    0x000019a8 movs r7, 0xa4                                     |     r7 = 0xa4;
    0x000019aa movs r1, r0                                       |     r1 = r0;
    0x000019ac lsls r4, r0, 4                                    |     r4 = r0 << 4;
    0x000019ae movs r0, r0                                       |     
    0x000019b0 subs r6, r4, r1                                   |     r6 = r4 - r1;
    0x000019b2 movs r0, r0                                       |     
    0x000019b4 movs r6, 0xb6                                     |     r6 = 0xb6;
    0x000019b6 movs r1, r0                                       |     r1 = r0;
    0x000019b8 adds r4, r2, r4                                   |     r4 = r2 + r4;
    0x000019ba movs r0, r0                                       |     
    0x000019bc adds r2, r1, r4                                   |     r2 = r1 + r4;
    0x000019be movs r0, r0                                       |     
    0x000019c0 adds r4, r2, r3                                   |     r4 = r2 + r3;
    0x000019c2 movs r0, r0                                       |     
    0x000019c4 adds r2, r0, r3                                   |     r2 = r0 + r3;
    0x000019c6 movs r0, r0                                       |     
    0x000019c8 adds r4, r7, r2                                   |     r4 = r7 + r2;
    0x000019ca movs r0, r0                                       |     
    0x000019cc adds r2, r7, r1                                   |     r2 = r7 + r1;
    0x000019ce movs r0, r0                                       |     
    0x000019d0 adds r0, r5, r1                                   |     r0 = r5 + r1;
    0x000019d2 movs r0, r0                                       |     
    0x000019d4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000019d8 subw sp, sp, 0x8f4                                |     __asm ("subw sp, sp, 0x8f4");
    0x000019dc str r2, [sp, 0x44]                                |     var_44h = r2;
    0x000019de ldr.w r2, [pc, 0x87c]                             |     r2 = *(0x0000225c);
    0x000019e2 str r3, [sp, 0x4c]                                |     *(arg_4ch) = r3;
    0x000019e4 ldr.w r4, [sp, 0x918]                             |     r4 = *(arg_918h);
    0x000019e8 ldr.w r3, [pc, 0x874]                             |     
    0x000019ec add r2, pc                                        |     r2 += pc;
    0x000019ee str r0, [sp, 0x40]                                |     dest = r0;
    0x000019f0 mov.w r0, 0x1000                                  |     r0 = 0x1000;
    0x000019f4 str r4, [sp, 0x48]                                |     *(arg_48h) = r4;
    0x000019f6 str r1, [sp, 0x34]                                |     var_34h = r1;
    0x000019f8 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000019fa ldr r3, [r3]                                      |     r3 = *(0x2260);
    0x000019fc str.w r3, [sp, 0x8ec]                             |     __asm ("str.w r3, [arg_8ech]");
    0x00001a00 mov.w r3, 0                                       |     r3 = 0;
    0x00001a04 bl 0x15b8                                         |     fcn_000015b8 (r0);
    0x00001a08 ldr.w r2, [pc, 0x858]                             |     
    0x00001a0c cmp r0, 0                                         |     
    0x00001a0e add r2, pc                                        |     r2 = 0x3c76;
                                                                 |     if (r0 < 0) {
    0x00001a10 blt.w 0x21ba                                      |         goto label_39;
                                                                 |     }
    0x00001a14 ldr.w r4, [pc, 0x850]                             |     r4 = *(0x00002268);
    0x00001a18 movs r0, 0                                        |     r0 = 0;
    0x00001a1a add r4, pc                                        |     r4 += pc;
    0x00001a1c ldr r2, [r4, 0xc]                                 |     r2 = *((r4 + 0xc));
    0x00001a1e ldr r1, [r4]                                      |     r1 = *(r4);
    0x00001a20 bl 0x1584                                         |     fcn_00001584 (r0, r1, r2);
    0x00001a24 movs r3, 0                                        |     r3 = 0;
    0x00001a26 mov r5, r0                                        |     r5 = r0;
    0x00001a28 str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x00001a2a str r3, [r4, 4]                                   |     *((r4 + 4)) = r3;
    0x00001a2c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001a2e beq 0x1aa6                                        |         goto label_40;
                                                                 |     }
    0x00001a30 bl 0x1538                                         |     r0 = fcn_00001538 ();
    0x00001a34 mov r1, r0                                        |     r1 = r0;
    0x00001a36 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001a38 beq.w 0x21b6                                      |         goto label_41;
                                                                 |     }
    0x00001a3c ldrb r3, [r0]                                     |     r3 = *(r0);
    0x00001a3e cmp r3, 0x2d                                      |     
    0x00001a40 beq 0x1aba                                        |     
                                                                 |     while (r4 != r3) {
    0x00001a42 ldr.w r3, [pc, 0x828]                             |         
    0x00001a46 movs r0, 3                                        |         r0 = 3;
    0x00001a48 ldr.w r2, [pc, 0x824]                             |         
    0x00001a4c str r1, [sp]                                      |         *(sp) = r1;
    0x00001a4e movs r1, 1                                        |         r1 = 1;
    0x00001a50 add r3, pc                                        |         r3 = 0x3cc2;
    0x00001a52 add r2, pc                                        |         r2 = 0x3cc6;
    0x00001a54 blx 0xe78                                         |         fcn_00000e78 ();
    0x00001a58 mov.w r3, -1                                      |         r3 = -1;
    0x00001a5c str r3, [sp, 0x3c]                                |         var_3ch = r3;
    0x00001a5e addw r3, sp, 0x4ec                                |         __asm ("addw r3, arg_4ech");
    0x00001a62 str r3, [sp, 0x38]                                |         src = r3;
                                                                 | label_8:
    0x00001a64 ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x00001a66 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00001a68 beq.w 0x1f18                                      |             goto label_16;
                                                                 |         }
                                                                 | label_13:
    0x00001a6c ldr r4, [sp, 0x40]                                |         r4 = dest;
    0x00001a6e movw r2, 0x3ff                                    |         
    0x00001a72 ldr r1, [sp, 0x38]                                |         r1 = src;
    0x00001a74 mov r0, r4                                        |         r0 = r4;
    0x00001a76 blx 0xe2c                                         |         strncpy (r0, r1, r2);
    0x00001a7a movs r3, 0                                        |         r3 = 0;
    0x00001a7c ldr.w r2, [pc, 0x7f4]                             |         r2 = *(0x00002274);
    0x00001a80 strb.w r3, [r4, 0x3ff]                            |         *((r4 + 0x3ff)) = r3;
    0x00001a84 ldr.w r3, [pc, 0x7d8]                             |         r3 = *(0x2260);
    0x00001a88 add r2, pc                                        |         r2 = 0x1e8b;
    0x00001a8a ldr r3, [r2, r3]                                  |         r3 = *(0x1e8b);
    0x00001a8c ldr r2, [r3]                                      |         r2 = *(0x1e8b);
    0x00001a8e ldr.w r3, [sp, 0x8ec]                             |         r3 = *(arg_8ech);
    0x00001a92 eors r2, r3                                       |         r2 ^= r3;
    0x00001a94 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00001a98 bne.w 0x21fc                                      |             goto label_42;
                                                                 |         }
    0x00001a9c ldr r0, [sp, 0x3c]                                |         r0 = var_3ch;
    0x00001a9e addw sp, sp, 0x8f4                                |         __asm ("addw sp, sp, 0x8f4");
    0x00001aa2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_40:
    0x00001aa6 ldr.w r2, [pc, 0x7d0]                             |         
    0x00001aaa movs r0, 6                                        |         r0 = 6;
    0x00001aac movs r1, 1                                        |         r1 = 1;
    0x00001aae add r2, pc                                        |         r2 = 0x3d2c;
    0x00001ab0 blx 0xe78                                         |         fcn_00000e78 ();
    0x00001ab4 mov r0, r5                                        |         r0 = r5;
    0x00001ab6 blx 0xdc0                                         |         exit (r0);
    0x00001aba ldrb r3, [r0, 1]                                  |         r3 = *((r0 + 1));
    0x00001abc subs.w r4, r3, 0x2d                               |         r4 = r3 - 0x2d;
    0x00001ac0 str r4, [sp, 0x3c]                                |         var_3ch = r4;
    0x00001ac2 bne 0x1a42                                        |         
                                                                 |     }
    0x00001ac4 blx 0xce8                                         |     strdup (r0);
    0x00001ac8 add r2, sp, 0xec                                  |     r2 += arg_ech;
    0x00001aca ldr.w r3, [pc, 0x7b0]                             |     
    0x00001ace ldr.w fp, [pc, 0x7b0]                             |     fp = *(0x00002280);
    0x00001ad2 str r2, [sp, 0x14]                                |     var_14h = r2;
    0x00001ad4 ldr.w r2, [pc, 0x7ac]                             |     
    0x00001ad8 add r3, pc                                        |     r3 = 0x3d5a;
    0x00001ada add fp, pc                                        |     
    0x00001adc str r3, [sp, 0x1c]                                |     s2 = r3;
    0x00001ade adds r3, 0x18                                     |     r3 += 0x18;
    0x00001ae0 str r0, [sp, 0x30]                                |     path = r0;
    0x00001ae2 add r2, pc                                        |     r2 = 0x3d6a;
    0x00001ae4 strb.w r4, [sp, 0xec]                             |     *(arg_ech) = r4;
    0x00001ae8 str r2, [sp, 0x24]                                |     var_24h = r2;
    0x00001aea addw r2, sp, 0x4ec                                |     __asm ("addw r2, arg_4ech");
    0x00001aee strd r4, r4, [sp, 0x28]                           |     __asm ("strd r4, r4, [sp, 0x28]");
    0x00001af2 str r2, [sp, 0x38]                                |     src = r2;
    0x00001af4 str r3, [sp, 0x20]                                |     var_20h = r3;
                                                                 |     do {
                                                                 | label_7:
    0x00001af6 bl 0x1538                                         |         r0 = fcn_00001538 ();
    0x00001afa mov r6, r0                                        |         r6 = r0;
    0x00001afc cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00001afe beq.w 0x1c4c                                      |             goto label_43;
                                                                 |         }
                                                                 | label_6:
    0x00001b02 ldrb r3, [r6]                                     |         r3 = *(r6);
    0x00001b04 cmp r3, 0xd                                       |         
                                                                 |         if (r3 != 0xd) {
    0x00001b06 bne.w 0x1d70                                      |             goto label_44;
                                                                 |         }
    0x00001b0a ldrb r5, [r6, 1]                                  |         r5 = *((r6 + 1));
    0x00001b0c cmp r5, 0                                         |         
                                                                 |         if (r5 != 0) {
    0x00001b0e bne.w 0x1d70                                      |             goto label_44;
                                                                 |         }
    0x00001b12 cmp r4, 0                                         |         
    0x00001b14 beq 0x1af6                                        |         
                                                                 |     } while (r4 == 0);
    0x00001b16 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00001b18 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00001b1a beq.w 0x1e3c                                      |         goto label_45;
                                                                 |     }
    0x00001b1e mov r0, r5                                        |     r0 = r5;
    0x00001b20 blx 0xcd0                                         |     r0 = time (r0);
    0x00001b24 mov r7, r0                                        |     r7 = r0;
    0x00001b26 ldr.w r0, [pc, 0x760]                             |     
    0x00001b2a add r0, pc                                        |     r0 = 0x3db8;
    0x00001b2c blx 0xd48                                         |     r0 = opendir ();
    0x00001b30 mov r8, r0                                        |     r8 = r0;
    0x00001b32 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001b34 beq 0x1bb0                                        |         goto label_46;
                                                                 |     }
    0x00001b36 ldr.w sl, [pc, 0x754]                             |     
    0x00001b3a mov r6, r5                                        |     r6 = r5;
    0x00001b3c str.w fp, [sp, 8]                                 |     __asm ("str.w fp, [var_8h]");
    0x00001b3e add sp, 0x20                                      |     
    0x00001b40 addw sb, sp, 0x4fe                                |     __asm ("addw sb, arg_4feh");
    0x00001b44 ldr.w fp, [sp, 0x38]                              |     fp = src;
    0x00001b48 add sl, pc                                        |     sl = 0x3dda;
    0x00001b4a b 0x1b8c                                          |     
                                                                 |     while (r0 != 0) {
    0x00001b4c mov ip, sl                                        |         
    0x00001b4e mov r4, fp                                        |         r4 = fp;
    0x00001b50 ldm.w ip!, {r0, r1, r2, r3}                       |         r0 = *(ip!);
                                                                 |         r1 = *((ip! + 4));
                                                                 |         r2 = *((ip! + 8));
                                                                 |         r3 = *((ip! + 12));
    0x00001b54 stm r4!, {r0, r1, r2, r3}                         |         *(r4!) = r0;
                                                                 |         *((r4! + 4)) = r1;
                                                                 |         *((r4! + 8)) = r2;
                                                                 |         *((r4! + 12)) = r3;
    0x00001b56 add.w r1, lr, 0xb                                 |         r1 = lr + 0xb;
    0x00001b5a ldr.w r3, [ip]                                    |         r3 = *(ip);
    0x00001b5e movs r2, 0xee                                     |         r2 = 0xee;
    0x00001b60 mov r0, sb                                        |         r0 = sb;
    0x00001b62 strh r3, [r4]                                     |         *(r4) = r3;
    0x00001b64 add r4, sp, 0x50                                  |         r4 += arg_50h;
    0x00001b66 blx 0xd24                                         |         strcpy_chk ();
    0x00001b6a mov r1, r4                                        |         r1 = r4;
    0x00001b6c mov r0, fp                                        |         r0 = fp;
    0x00001b6e blx 0xd90                                         |         stat ();
    0x00001b72 ldr r4, [sp, 0x90]                                |         r4 = *(arg_90h);
    0x00001b74 cmp r4, r7                                        |         
                                                                 |         if (r4 < r7) {
    0x00001b76 bge 0x1b8a                                        |             
                                                                 |             if (r6 != 0) {
    0x00001b78 cbz r6, 0x1b80                                    |                 
    0x00001b7a mov r0, r6                                        |                 r0 = r6;
    0x00001b7c blx 0xcac                                         |                 free (r0);
                                                                 |             }
    0x00001b80 mov r0, fp                                        |             r0 = fp;
    0x00001b82 mov r7, r4                                        |             r7 = r4;
    0x00001b84 blx 0xce8                                         |             r0 = strdup (r0);
    0x00001b88 mov r6, r0                                        |             r6 = r0;
                                                                 |         }
    0x00001b8a adds r5, 1                                        |         r5++;
    0x00001b8c mov r0, r8                                        |         r0 = r8;
    0x00001b8e blx 0xe84                                         |         r0 = fcn_00000e84 ();
    0x00001b92 mov lr, r0                                        |         lr = r0;
    0x00001b94 cmp r0, 0                                         |         
    0x00001b96 bne 0x1b4c                                        |         
                                                                 |     }
    0x00001b98 cmp r5, 4                                         |     
    0x00001b9a ldr.w fp, [sp, 8]                                 |     fp = var_8h;
                                                                 |     if (r5 > 4) {
    0x00001b9e bgt.w 0x1e80                                      |         goto label_47;
                                                                 |     }
                                                                 |     if (r6 != 0) {
                                                                 | label_12:
    0x00001ba2 cbz r6, 0x1baa                                    |         
    0x00001ba4 mov r0, r6                                        |         r0 = r6;
    0x00001ba6 blx 0xcac                                         |         free (r0);
                                                                 |     }
    0x00001baa mov r0, r8                                        |     r0 = r8;
    0x00001bac blx 0xee4                                         |     fcn_00000ee4 ();
                                                                 | label_46:
    0x00001bb0 ldr.w r0, [pc, 0x6dc]                             |     r0 = *(0x00002290);
    0x00001bb4 add r0, pc                                        |     r0 += pc;
    0x00001bb6 blx 0xdf0                                         |     r0 = mkstemp (r0);
    0x00001bba subs r3, r0, 0                                    |     r3 = r0 - 0;
    0x00001bbc str r3, [sp, 0xc]                                 |     fd = r3;
                                                                 |     if (r3 < r0) {
    0x00001bbe blt.w 0x21d0                                      |         goto label_48;
                                                                 |     }
                                                                 | label_10:
    0x00001bc2 ldr r0, [sp, 0x30]                                |     r0 = path;
    0x00001bc4 blx 0xdd8                                         |     r0 = strlen (r0);
    0x00001bc8 mov r5, r0                                        |     r5 = r0;
    0x00001bca adds r0, 3                                        |     r0 += 3;
    0x00001bcc blx 0xd60                                         |     r0 = malloc (r0);
    0x00001bd0 mov sl, r0                                        |     sl = r0;
    0x00001bd2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001bd4 beq.w 0x21e8                                      |         goto label_49;
                                                                 |     }
    0x00001bd8 movw r3, 0xa0d                                    |     r3 = 0xa0d;
    0x00001bdc ldr r1, [sp, 0x30]                                |     r1 = path;
    0x00001bde strh r3, [r0]                                     |     *(r0) = r3;
    0x00001be0 movs r3, 0                                        |     r3 = 0;
    0x00001be2 adds r2, r5, 1                                    |     r2 = r5 + 1;
    0x00001be4 strb r3, [r0, 2]!                                 |     *((r0 += 2)) = r3;
    0x00001be8 add.w sb, sp, 0xac                                |     sb += arg_ach;
    0x00001bec adds r7, r5, 2                                    |     r7 = r5 + 2;
    0x00001bee blx 0xcc4                                         |     memcpy (r0, r1, r2);
    0x00001bf2 ldr r0, [sp, 0xc]                                 |     r0 = fd;
    0x00001bf4 mov r1, sb                                        |     r1 = sb;
    0x00001bf6 blx 0xe44                                         |     r0 = fstatfs ();
    0x00001bfa cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00001bfc blt.w 0x1e5e                                      |         goto label_50;
                                                                 |     }
    0x00001c00 ldr.w r0, [sb, 4]                                 |     r0 = *((sb + 4));
    0x00001c04 add r0, r7                                        |     r0 += r7;
    0x00001c06 bl 0x15b8                                         |     fcn_000015b8 (r0);
                                                                 | label_11:
    0x00001c0a ldr.w r4, [pc, 0x688]                             |     r4 = *(0x00002294);
    0x00001c0e mov r2, r7                                        |     r2 = r7;
    0x00001c10 mov r1, sl                                        |     r1 = sl;
    0x00001c12 add r4, pc                                        |     r4 += pc;
    0x00001c14 ldrd r3, r6, [r4]                                 |     __asm ("ldrd r3, r6, [r4]");
    0x00001c16 adds r6, 0                                        |     r6 += 0;
    0x00001c18 add.w r8, r3, r6                                  |     r8 = r3 + r6;
    0x00001c1c mov r0, r8                                        |     r0 = r8;
    0x00001c1e blx 0xcdc                                         |     r0 = memcmp (r0, r1, r2);
    0x00001c22 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001c24 bne.w 0x1fd0                                      |         goto label_51;
                                                                 |     }
    0x00001c28 mov r0, sl                                        |     r0 = sl;
    0x00001c2a add r6, r7                                        |     r6 += r7;
    0x00001c2c blx 0xcac                                         |     free (r0);
    0x00001c30 str r6, [r4, 4]                                   |     *((r4 + 4)) = r6;
                                                                 | label_21:
    0x00001c32 ldr r0, [sp, 0xc]                                 |     r0 = fd;
    0x00001c34 blx 0xed8                                         |     r0 = fcn_00000ed8 ();
    0x00001c38 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00001c3a blt.w 0x21ac                                      |         goto label_52;
                                                                 |     }
    0x00001c3e bl 0x1538                                         |     fcn_00001538 ();
    0x00001c42 movs r4, 0                                        |     r4 = 0;
    0x00001c44 mov r6, r0                                        |     r6 = r0;
    0x00001c46 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001c48 bne.w 0x1b02                                      |         goto label_6;
                                                                 |     }
                                                                 | label_43:
    0x00001c4c ldr r1, [sp, 0x44]                                |     r1 = var_44h;
    0x00001c4e ldr r0, [sp, 0x28]                                |     r0 = ptr;
    0x00001c50 bl 0x1664                                         |     r0 = fcn_00001664 (r0, r1);
    0x00001c54 cmp r0, 1                                         |     
    0x00001c56 mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 != 1) {
    0x00001c58 bne.w 0x2192                                      |         goto label_53;
                                                                 |     }
    0x00001c5c ldr r5, [sp, 0x2c]                                |     r5 = var_2ch;
    0x00001c5e ldr r1, [sp, 0x4c]                                |     r1 = *(arg_4ch);
    0x00001c60 mov r0, r5                                        |     r0 = r5;
    0x00001c62 bl 0x1664                                         |     r0 = fcn_00001664 (r0, r1);
    0x00001c66 cmp r0, 1                                         |     
                                                                 |     if (r0 != 1) {
    0x00001c68 beq 0x1c78                                        |         
    0x00001c6a cmp r5, 0                                         |         
                                                                 |         if (r5 != 0) {
    0x00001c6c bne.w 0x2214                                      |             goto label_54;
                                                                 |         }
    0x00001c70 ldr r3, [sp, 0x48]                                |         r3 = *(arg_48h);
    0x00001c72 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00001c74 beq.w 0x222a                                      |             goto label_55;
                                                                 |         }
                                                                 |     }
    0x00001c78 ldr r0, [sp, 0x30]                                |     r0 = path;
    0x00001c7a blx 0xcac                                         |     free (r0);
    0x00001c7e ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00001c80 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00001c82 bne.w 0x1e88                                      |         goto label_56;
                                                                 |     }
    0x00001c86 ldr r4, [sp, 0x28]                                |     r4 = ptr;
    0x00001c88 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00001c8a beq.w 0x1ec0                                      |         goto label_57;
                                                                 |     }
    0x00001c8e ldr.w r3, [pc, 0x608]                             |     
    0x00001c92 ldr r5, [sp, 0x38]                                |     r5 = src;
    0x00001c94 add r3, pc                                        |     
    0x00001c96 ldm r3, {r0, r1, r2, r3}                          |     r0 = *(r3);
                                                                 |     r1 = *((r3 + 4));
                                                                 |     r2 = *((r3 + 8));
                                                                 |     r3 = *((r3 + 12));
    0x00001c98 stm.w r5, {r0, r1, r2, r3}                        |     *(r5) = r0;
                                                                 |     *((r5 + 4)) = r1;
                                                                 |     *((r5 + 8)) = r2;
                                                                 |     *((r5 + 12)) = r3;
    0x00001c9c mov.w r2, 0x3f0                                   |     r2 = 0x3f0;
    0x00001ca0 mov r1, r4                                        |     r1 = r4;
    0x00001ca2 addw r0, sp, 0x4fc                                |     __asm ("addw r0, arg_4fch");
    0x00001ca6 blx 0xd18                                         |     stpcpy_chk ();
    0x00001caa ldr.w r1, [pc, 0x5f0]                             |     
    0x00001cae subs r3, r5, r0                                   |     r3 = r5 - r0;
    0x00001cb0 add.w r3, r3, 0x400                               |     r3 = 0x4332;
    0x00001cb4 movs r2, 2                                        |     r2 = 2;
    0x00001cb6 add r1, pc                                        |     r1 = 0x3f58;
    0x00001cb8 blx 0xd0c                                         |     memcpy_chk ();
    0x00001cbc ldr.w r1, [pc, 0x5e0]                             |     
    0x00001cc0 mov r0, r4                                        |     r0 = r4;
    0x00001cc2 add r1, pc                                        |     r1 = 0x3f66;
    0x00001cc4 blx 0xc64                                         |     r0 = strcmp (r0, r1);
    0x00001cc8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001cca beq.w 0x1fc4                                      |         goto label_58;
                                                                 |     }
    0x00001cce ldr.w r4, [pc, 0x5d4]                             |     
    0x00001cd2 ldr r0, [sp, 0x28]                                |     r0 = ptr;
    0x00001cd4 add r4, pc                                        |     r4 = 0x3f7e;
    0x00001cd6 mov r1, r4                                        |     r1 = r4;
    0x00001cd8 blx 0xc64                                         |     r0 = strcmp (r0, r1);
                                                                 |     if (r0 != 0) {
    0x00001cdc cbz r0, 0x1cf2                                    |         
    0x00001cde ldr.w r4, [pc, 0x5c8]                             |         
    0x00001ce2 ldr r0, [sp, 0x28]                                |         r0 = ptr;
    0x00001ce4 add r4, pc                                        |         r4 = 0x3f92;
    0x00001ce6 mov r1, r4                                        |         r1 = r4;
    0x00001ce8 blx 0xc64                                         |         r0 = strcmp (r0, r1);
    0x00001cec cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00001cee bne.w 0x1edc                                      |             goto label_14;
                                                                 |         }
                                                                 |     }
    0x00001cf2 mov r0, r4                                        |     r0 = r4;
    0x00001cf4 blx 0xef0                                         |     r0 = fcn_00000ef0 ();
    0x00001cf8 mov r6, r0                                        |     r6 = r0;
                                                                 | label_18:
    0x00001cfa ldr r4, [sp, 0x38]                                |     r4 = src;
    0x00001cfc mov.w r2, 0x400                                   |     r2 = 0x400;
    0x00001d00 ldr r1, [sp, 0x14]                                |     r1 = var_14h;
    0x00001d02 mov r0, r4                                        |     r0 = r4;
    0x00001d04 blx 0xe14                                         |     strcat_chk ()
    0x00001d08 ldr r0, [sp, 0x28]                                |     r0 = ptr;
    0x00001d0a blx 0xcac                                         |     free (r0);
    0x00001d0e ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x00001d10 blx 0xcac                                         |     free (r0);
    0x00001d14 ldr.w r0, [pc, 0x594]                             |     r0 = *(0x000022ac);
    0x00001d16 lsls r4, r2, 0x16                                 |     r4 = r2 << 0x16;
    0x00001d18 mov r1, r4                                        |     r1 = r4;
    0x00001d1a add r0, pc                                        |     r0 += pc;
    0x00001d1c adds r0, 0x24                                     |     r0 += 0x24;
    0x00001d1e blx 0xda8                                         |     r0 = rename (r0, r1);
    0x00001d22 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00001d24 blt.w 0x1f7c                                      |         goto label_59;
                                                                 |     }
                                                                 | label_15:
    0x00001d28 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00001d2a beq.w 0x1f06                                      |         goto label_60;
                                                                 |     }
    0x00001d2e ldr r0, [sp, 0x38]                                |     r0 = src;
    0x00001d30 mov.w r1, 0x1a0                                   |     r1 = 0x1a0;
    0x00001d34 blx 0xeb4                                         |     r0 = fcn_00000eb4 ();
    0x00001d38 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00001d3a blt.w 0x1fb2                                      |         goto label_61;
                                                                 |     }
                                                                 | label_17:
    0x00001d3e blx 0xc94                                         |     r0 = getuid ();
    0x00001d42 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001d44 bne.w 0x1f14                                      |         goto label_62;
                                                                 |     }
    0x00001d48 ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x00001d4a mov.w r1, -1                                      |     r1 = -1;
    0x00001d4e ldr r0, [sp, 0x38]                                |     r0 = src;
    0x00001d50 blx 0xdfc                                         |     r0 = chown ();
    0x00001d54 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00001d56 bge.w 0x1f14                                      |         goto label_62;
                                                                 |     }
    0x00001d5a ldr.w r3, [pc, 0x554]                             |     
    0x00001d5e movs r1, 1                                        |     r1 = 1;
    0x00001d60 ldr.w r2, [pc, 0x550]                             |     
    0x00001d64 movs r0, 3                                        |     r0 = 3;
    0x00001d66 add r3, pc                                        |     r3 = 0x401c;
    0x00001d68 add r2, pc                                        |     r2 = 0x4020;
    0x00001d6a blx 0xe78                                         |     fcn_00000e78 ();
    0x00001d6e b 0x1f14                                          |     goto label_62;
                                                                 | label_44:
    0x00001d70 ldr r1, [sp, 0x1c]                                |     r1 = s2;
    0x00001d72 mov r0, r6                                        |     r0 = r6;
    0x00001d74 blx 0xc34                                         |     r0 = strstr (r0, r1);
    0x00001d78 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001d7a beq.w 0x1af6                                      |         goto label_7;
                                                                 |     }
    0x00001d7e ldr r1, [sp, 0x20]                                |     r1 = var_20h;
    0x00001d80 mov r0, r6                                        |     r0 = r6;
    0x00001d82 blx 0xc34                                         |     r0 = strstr (r0, r1);
    0x00001d86 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001d88 beq 0x1dfa                                        |         goto label_9;
                                                                 |     }
    0x00001d8a movs r1, 0x22                                     |     r1 = 0x22;
    0x00001d8c blx 0xde4                                         |     r0 = strchr (r0, r1);
    0x00001d90 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001d92 beq.w 0x2186                                      |         goto label_63;
                                                                 |     }
    0x00001d96 ldrb r2, [r0, 1]                                  |     r2 = *((r0 + 1));
    0x00001d98 adds r3, r0, 1                                    |     r3 = r0 + 1;
    0x00001d9a cmp r2, 0x22                                      |     
    0x00001d9c it eq                                             |     
                                                                 |     if (r2 != 0x22) {
    0x00001d9e ldreq r1, [sp, 0x14]                              |         r1 = var_14h;
                                                                 |     }
                                                                 |     if (r2 == 0x22) {
    0x00001da0 beq 0x1dba                                        |         goto label_64;
                                                                 |     }
    0x00001da2 ldr r1, [sp, 0x14]                                |     r1 = var_14h;
    0x00001da4 add.w r0, r0, 0x400                               |     r0 += 0x400;
    0x00001da8 b 0x1dae                                          |     
                                                                 |     while (r2 != 0x22) {
    0x00001daa cmp r0, r3                                        |         
                                                                 |         if (r0 == r3) {
    0x00001dac beq 0x1e74                                        |             goto label_65;
                                                                 |         }
    0x00001dae strb r2, [r1], 1                                  |         *(r1) = r2;
                                                                 |         r1++;
    0x00001db2 ldrb r2, [r3, 1]!                                 |         r2 = *((r3 += 1));
    0x00001db6 cmp r2, 0x22                                      |         
    0x00001db8 bne 0x1daa                                        |         
                                                                 |     }
                                                                 | label_64:
    0x00001dba movs r3, 0                                        |     r3 = 0;
    0x00001dbc strb r3, [r1]                                     |     *(r1) = r3;
    0x00001dbe ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00001dc0 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00001dc2 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00001dc4 beq.w 0x1a64                                      |         goto label_8;
                                                                 |     }
    0x00001dc8 ldr r4, [sp, 0x14]                                |     r4 = var_14h;
    0x00001dca movs r1, 0x5c                                     |     r1 = 0x5c;
    0x00001dcc mov r0, r4                                        |     r0 = r4;
    0x00001dce blx 0xe90                                         |     r0 = fcn_00000e90 ();
                                                                 |     if (r0 != 0) {
    0x00001dd2 cbz r0, 0x1de0                                    |         
    0x00001dd4 adds r1, r0, 1                                    |         r1 = r0 + 1;
    0x00001dd6 mov.w r2, 0x400                                   |         r2 = 0x400;
    0x00001dda mov r0, r4                                        |         r0 = r4;
    0x00001ddc blx 0xd24                                         |         strcpy_chk ();
                                                                 |     }
    0x00001de0 ldr r4, [sp, 0x14]                                |     r4 = var_14h;
    0x00001de2 movs r1, 0x2f                                     |     r1 = 0x2f;
    0x00001de4 mov r0, r4                                        |     r0 = r4;
    0x00001de6 blx 0xe90                                         |     r0 = fcn_00000e90 ();
                                                                 |     if (r0 == 0) {
    0x00001dea cbz r0, 0x1e38                                    |         goto label_66;
                                                                 |     }
    0x00001dec adds r1, r0, 1                                    |     r1 = r0 + 1;
    0x00001dee mov r0, r4                                        |     r0 = r4;
    0x00001df0 movs r4, 1                                        |     r4 = 1;
    0x00001df2 mov.w r2, 0x400                                   |     r2 = 0x400;
    0x00001df6 blx 0xd24                                         |     strcpy_chk ();
                                                                 | label_9:
    0x00001dfa ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00001dfc mov r0, r6                                        |     r0 = r6;
    0x00001dfe add.w r1, r3, 0x24                                |     r1 = r3 + 0x24;
    0x00001e02 blx 0xc34                                         |     r0 = strstr (r0, r1);
                                                                 |     if (r0 != 0) {
    0x00001e06 cbz r0, 0x1e10                                    |         
    0x00001e08 bl 0x15fc                                         |         fcn_000015fc ();
    0x00001e0c str r0, [sp, 0x28]                                |         ptr = r0;
                                                                 |         if (r0 == 0) {
    0x00001e0e cbz r0, 0x1e30                                    |             goto label_22;
                                                                 |         }
                                                                 |     }
    0x00001e10 ldr.w r1, [pc, 0x4a4]                             |     
    0x00001e14 mov r0, r6                                        |     r0 = r6;
    0x00001e16 add r1, pc                                        |     r1 = 0x40d2;
    0x00001e18 adds r1, 0x34                                     |     r1 += 0x34;
    0x00001e1a blx 0xc34                                         |     r0 = strstr (r0, r1);
    0x00001e1e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001e20 beq.w 0x1af6                                      |         goto label_7;
                                                                 |     }
    0x00001e24 bl 0x15fc                                         |     fcn_000015fc ();
    0x00001e28 str r0, [sp, 0x2c]                                |     var_2ch = r0;
    0x00001e2a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001e2c bne.w 0x1af6                                      |         goto label_7;
                                                                 |     }
                                                                 | label_22:
    0x00001e30 mov.w r3, -1                                      |     r3 = -1;
    0x00001e34 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00001e36 b 0x1a64                                          |     goto label_8;
                                                                 | label_66:
    0x00001e38 movs r4, 1                                        |     r4 = 1;
    0x00001e3a b 0x1dfa                                          |     goto label_9;
                                                                 | label_45:
    0x00001e3c ldr.w r0, [pc, 0x47c]                             |     r0 = *(0x000022bc);
    0x00001e40 add r0, pc                                        |     r0 += pc;
    0x00001e42 adds r0, 0x24                                     |     r0 += 0x24;
    0x00001e44 blx 0xdf0                                         |     r0 = mkstemp (r0);
    0x00001e48 subs r3, r0, 0                                    |     r3 = r0 - 0;
    0x00001e4a str r3, [sp, 0xc]                                 |     fd = r3;
                                                                 |     if (r3 >= r0) {
    0x00001e4c bge.w 0x1bc2                                      |         goto label_10;
                                                                 |     }
    0x00001e50 ldr.w r3, [pc, 0x46c]                             |     
    0x00001e54 ldr.w r2, [pc, 0x46c]                             |     
    0x00001e58 add r3, pc                                        |     r3 = 0x411c;
    0x00001e5a add r2, pc                                        |     r2 = 0x4122;
    0x00001e5c b 0x1fa2                                          |     goto label_67;
                                                                 | label_50:
    0x00001e5e ldr.w r3, [pc, 0x468]                             |     
    0x00001e62 movs r1, 1                                        |     r1 = 1;
    0x00001e64 ldr.w r2, [pc, 0x464]                             |     
    0x00001e68 movs r0, 6                                        |     r0 = 6;
    0x00001e6a add r3, pc                                        |     r3 = 0x4138;
    0x00001e6c add r2, pc                                        |     r2 = 0x413c;
    0x00001e6e blx 0xe78                                         |     fcn_00000e78 ();
    0x00001e72 b 0x1c0a                                          |     goto label_11;
                                                                 | label_65:
    0x00001e74 movs r3, 0                                        |     r3 = 0;
    0x00001e76 strb r3, [r1]                                     |     *(r1) = r3;
    0x00001e78 mov.w r3, -1                                      |     r3 = -1;
    0x00001e7c str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00001e7e b 0x1a64                                          |     goto label_8;
                                                                 | label_47:
    0x00001e80 mov r0, r6                                        |     r0 = r6;
    0x00001e82 blx 0xea8                                         |     fcn_00000ea8 ();
    0x00001e86 b 0x1ba2                                          |     goto label_12;
                                                                 | label_56:
    0x00001e88 ldr r4, [sp, 0x38]                                |     r4 = src;
    0x00001e8a mov.w r2, 0x400                                   |     r2 = 0x400;
    0x00001e8e ldr.w r1, [pc, 0x440]                             |     r1 = *(0x000022d0);
    0x00001e92 mov r0, r4                                        |     r0 = r4;
    0x00001e94 add r1, pc                                        |     r1 += pc;
    0x00001e96 blx 0xd24                                         |     strcpy_chk ();
    0x00001e9a mov.w r1, 0x180                                   |     r1 = 0x180;
    0x00001e9e mov r0, r4                                        |     r0 = r4;
    0x00001ea0 blx 0xeb4                                         |     r0 = fcn_00000eb4 ();
    0x00001ea4 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00001ea6 bge.w 0x1a6c                                      |         goto label_13;
                                                                 |     }
                                                                 |     do {
    0x00001eaa ldr.w r3, [pc, 0x428]                             |         
    0x00001eae movs r1, 1                                        |         r1 = 1;
    0x00001eb0 ldr.w r2, [pc, 0x424]                             |         
    0x00001eb2 movs r4, 0x24                                     |         r4 = 0x24;
    0x00001eb4 movs r0, 3                                        |         r0 = 3;
    0x00001eb6 add r3, pc                                        |         r3 = 0x4190;
    0x00001eb8 add r2, pc                                        |         r2 = 0x4194;
    0x00001eba blx 0xe78                                         |         fcn_00000e78 ();
    0x00001ebe b 0x1a64                                          |         goto label_8;
                                                                 | label_57:
    0x00001ec0 ldr r5, [sp, 0x2c]                                |         r5 = var_2ch;
    0x00001ec2 ldr r4, [sp, 0x48]                                |         r4 = *(arg_48h);
    0x00001ec4 orrs.w r3, r5, r4                                 |         r3 = r5 | r4;
                                                                 |         if (r3 != r5) {
    0x00001ec8 bne 0x1f46                                        |             goto label_68;
                                                                 |         }
    0x00001eca ldr.w r3, [pc, 0x410]                             |         
    0x00001ece add r3, pc                                        |         r3 = 0x41b0;
    0x00001ed0 ldm.w r3, {r0, r1}                                |         r0 = *(r3);
                                                                 |         r1 = *((r3 + 4));
    0x00001ed4 ldr r3, [sp, 0x38]                                |         r3 = src;
    0x00001ed6 str r0, [r3]                                      |         *(r3) = r0;
    0x00001ed8 strh.w r1, [sp, 0x4f0]                            |         *(arg_4f0h) = r1;
                                                                 | label_14:
    0x00001edc ldr r4, [sp, 0x38]                                |         r4 = src;
    0x00001ede mov.w r2, 0x400                                   |         r2 = 0x400;
    0x00001ee2 ldr r1, [sp, 0x14]                                |         r1 = var_14h;
    0x00001ee4 mov r0, r4                                        |         r0 = r4;
    0x00001ee6 blx 0xe14                                         |         strcat_chk ()
    0x00001eea ldr r0, [sp, 0x28]                                |         r0 = ptr;
    0x00001eec blx 0xcac                                         |         free (r0);
    0x00001ef0 ldr r0, [sp, 0x2c]                                |         r0 = var_2ch;
    0x00001ef2 blx 0xcac                                         |         free (r0);
    0x00001ef6 ldr r0, [pc, 0x3e8]                               |         
    0x00001ef8 mov r1, r4                                        |         r1 = r4;
    0x00001efa add r0, pc                                        |         r0 = 0x41e0;
    0x00001efc adds r0, 0x24                                     |         r0 += 0x24;
    0x00001efe blx 0xda8                                         |         r0 = rename (r0, r1);
    0x00001f02 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00001f04 blt 0x1f7c                                        |             goto label_59;
                                                                 |         }
                                                                 | label_60:
    0x00001f06 ldr r0, [sp, 0x38]                                |         r0 = src;
    0x00001f08 mov.w r1, 0x1a4                                   |         r1 = 0x1a4;
    0x00001f0c blx 0xeb4                                         |         r0 = fcn_00000eb4 ();
    0x00001f10 cmp r0, 0                                         |         
    0x00001f12 blt 0x1eaa                                        |         
                                                                 |     } while (r0 < 0);
                                                                 | label_62:
    0x00001f14 movs r3, 0                                        |     r3 = 0;
    0x00001f16 str r3, [sp, 0x3c]                                |     var_3ch = r3;
                                                                 | label_16:
    0x00001f18 ldr r0, [pc, 0x3c8]                               |     
    0x00001f1a add r0, pc                                        |     r0 = 0x4202;
    0x00001f1c adds r0, 0x24                                     |     r0 += 0x24;
    0x00001f1e blx 0xd00                                         |     r0 = unlink (r0);
    0x00001f22 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00001f24 bge.w 0x1a6c                                      |         goto label_13;
                                                                 |     }
    0x00001f28 blx 0xe08                                         |     r0 = errno_location ();
    0x00001f2c ldr r3, [r0]                                      |     r3 = *(r0);
    0x00001f2e cmp r3, 2                                         |     
                                                                 |     if (r3 == 2) {
    0x00001f30 beq.w 0x1a6c                                      |         goto label_13;
                                                                 |     }
    0x00001f34 ldr r3, [pc, 0x3b0]                               |     
    0x00001f36 movs r1, 1                                        |     r1 = 1;
    0x00001f38 ldr r2, [pc, 0x3b0]                               |     
    0x00001f3a movs r0, 3                                        |     r0 = 3;
    0x00001f3c add r3, pc                                        |     r3 = 0x4228;
    0x00001f3e add r2, pc                                        |     r2 = 0x422e;
    0x00001f40 blx 0xe78                                         |     fcn_00000e78 ();
    0x00001f44 b 0x1a6c                                          |     goto label_13;
                                                                 | label_68:
    0x00001f46 ldr r3, [pc, 0x3a8]                               |     
    0x00001f48 movw r2, 0x3fb                                    |     r2 = 0x3fb;
    0x00001f4c ldr r7, [sp, 0x38]                                |     r7 = src;
    0x00001f4e add r3, pc                                        |     
    0x00001f50 ldm.w r3, {r0, r1}                                |     r0 = *(r3);
                                                                 |     r1 = *((r3 + 4));
    0x00001f54 str r0, [r7]                                      |     *(r7) = r0;
    0x00001f56 addw r0, sp, 0x4f1                                |     __asm ("addw r0, arg_4f1h");
    0x00001f5a strb.w r1, [sp, 0x4f0]                            |     *(arg_4f0h) = r1;
    0x00001f5e mov r1, r4                                        |     r1 = r4;
    0x00001f60 cmp r5, 0                                         |     
    0x00001f62 it ne                                             |     
                                                                 |     if (r5 == 0) {
    0x00001f64 movne r1, r5                                      |         r1 = r5;
                                                                 |     }
    0x00001f66 blx 0xd18                                         |     stpcpy_chk ();
    0x00001f6a ldr r1, [pc, 0x388]                               |     
    0x00001f6c subs r3, r7, r0                                   |     r3 = r7 - r0;
    0x00001f6e add.w r3, r3, 0x400                               |     r3 = 0x4644;
    0x00001f72 movs r2, 2                                        |     r2 = 2;
    0x00001f74 add r1, pc                                        |     r1 = 0x426e;
    0x00001f76 blx 0xd0c                                         |     memcpy_chk ();
    0x00001f7a b 0x1edc                                          |     goto label_14;
                                                                 | label_59:
    0x00001f7c blx 0xe08                                         |     r0 = errno_location ();
    0x00001f80 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00001f82 cmp r3, 0x12                                      |     
                                                                 |     if (r3 != 0x12) {
    0x00001f84 bne.w 0x2238                                      |         goto label_69;
                                                                 |     }
    0x00001f88 ldr r0, [pc, 0x36c]                               |     
    0x00001f8a ldr r1, [sp, 0x38]                                |     r1 = src;
    0x00001f8c add r0, pc                                        |     r0 = 0x4288;
    0x00001f8e adds r0, 0x24                                     |     r0 += 0x24;
    0x00001f90 bl 0x172c                                         |     r0 = fcn_0000172c (r0, r1, r2, r3, r4, r5, r6);
    0x00001f94 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001f96 beq.w 0x1d28                                      |         goto label_15;
                                                                 |     }
    0x00001f9a ldr r3, [pc, 0x360]                               |     
    0x00001f9c ldr r2, [pc, 0x360]                               |     
    0x00001f9e add r3, pc                                        |     r3 = 0x42a0;
    0x00001fa0 add r2, pc                                        |     r2 = 0x42a4;
                                                                 | label_67:
    0x00001fa2 movs r1, 1                                        |     r1 = 1;
    0x00001fa4 movs r0, 3                                        |     r0 = 3;
    0x00001fa6 blx 0xe78                                         |     fcn_00000e78 ();
    0x00001faa mov.w r3, -1                                      |     r3 = -1;
    0x00001fae str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00001fb0 b 0x1f18                                          |     goto label_16;
                                                                 | label_61:
    0x00001fb2 ldr r3, [pc, 0x350]                               |     
    0x00001fb4 movs r1, 1                                        |     r1 = 1;
    0x00001fb6 ldr r2, [pc, 0x350]                               |     
    0x00001fb8 movs r0, 3                                        |     r0 = 3;
    0x00001fba add r3, pc                                        |     r3 = 0x42c4;
    0x00001fbc add r2, pc                                        |     r2 = 0x42ca;
    0x00001fbe blx 0xe78                                         |     fcn_00000e78 ();
    0x00001fc2 b 0x1d3e                                          |     goto label_17;
                                                                 | label_58:
    0x00001fc4 ldr r0, [pc, 0x344]                               |     
    0x00001fc6 add r0, pc                                        |     r0 = 0x42d6;
    0x00001fc8 blx 0xef0                                         |     r0 = fcn_00000ef0 ();
    0x00001fcc mov r6, r0                                        |     r6 = r0;
    0x00001fce b 0x1cfa                                          |     goto label_18;
                                                                 | label_51:
    0x00001fd0 ldr r4, [r4, 8]                                   |     r4 = *((r4 + 8));
    0x00001fd2 mov r1, r8                                        |     r1 = r8;
    0x00001fd4 adds r2, r6, 1                                    |     r2 = r6 + 1;
    0x00001fd6 cmp r1, 0                                         |     
    0x00001fd8 it ne                                             |     
                                                                 |     if (r1 != 0) {
    0x00001fda cmpne r4, r2                                      |         __asm ("cmpne r4, r2");
                                                                 |     }
                                                                 |     if (r1 <= 0) {
    0x00001fdc ble.w 0x2154                                      |         goto label_70;
                                                                 |     }
                                                                 | label_23:
    0x00001fe0 ldrb r3, [r1], 1                                  |     r3 = *(r1);
                                                                 |     r1++;
    0x00001fe4 cmp r3, 0xd                                       |     
    0x00001fe6 it ne                                             |     
                                                                 |     if (r3 != 0xd) {
    0x00001fe8 cmpne r3, 0xa                                     |         __asm ("cmpne r3, 0xa");
                                                                 |     }
                                                                 |     if (r3 == 0xd) {
    0x00001fea beq.w 0x2146                                      |         goto label_71;
                                                                 |     }
    0x00001fee ldr.w r8, [pc, 0x320]                             |     r8 = *(0x00002310);
    0x00001ff2 mov r1, sb                                        |     r1 = sb;
    0x00001ff4 ldr r0, [sp, 0xc]                                 |     r0 = fd;
    0x00001ff6 add r8, pc                                        |     r8 += pc;
    0x00001ff8 str.w r6, [r8, 4]                                 |     __asm ("str.w r6, [r8, 4]");
    0x00001ffc blx 0xe44                                         |     r0 = fstatfs ();
    0x00002000 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00002002 blt.w 0x2160                                      |         goto label_72;
                                                                 |     }
    0x00002004 strh r5, [r5, 4]                                  |     *((r5 + 4)) = r5;
    0x00002006 ldr.w r0, [sb, 4]                                 |     r0 = *((sb + 4));
    0x0000200a add r0, r7                                        |     r0 += r7;
    0x0000200c bl 0x15b8                                         |     fcn_000015b8 (r0);
                                                                 | label_24:
    0x00002010 add.w r3, sl, r5                                  |     r3 = sl + r5;
    0x00002014 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00002016 ldr r3, [pc, 0x2fc]                               |     
    0x00002018 add r3, pc                                        |     r3 = 0x4332;
    0x0000201a str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 | label_19:
    0x0000201c ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0000201e subs r4, r4, r7                                   |     r4 -= r7;
    0x00002020 cmp r4, r6                                        |     
    0x00002022 it ge                                             |     
                                                                 |     if (r4 < r6) {
    0x00002024 strge r6, [sp, 8]                                 |         var_8h = r6;
                                                                 |     }
    0x00002026 ldrb r2, [r3, 1]                                  |     r2 = *((r3 + 1));
    0x00002028 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0000202a sub.w sb, r2, 0xd                                 |     sb = r2 - 0xd;
    0x0000202e clz sb, sb                                        |     sb &= sb;
    0x00002032 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00002034 lsr.w sb, sb, 5                                   |     sb >>= 5;
                                                                 |     if (r4 < r6) {
    0x00002038 blt 0x20b2                                        |         goto label_73;
                                                                 |     }
                                                                 | label_20:
    0x0000203a ldr r3, [pc, 0x2dc]                               |     
    0x0000203c sub.w sb, r7, sb                                  |     sb = r7 - sb;
    0x00002040 add r3, pc                                        |     r3 = 0x435e;
    0x00002042 ldr r5, [r3]                                      |     r5 = *(0x435e);
    0x00002044 mov r3, r4                                        |     r3 = r4;
    0x00002046 mov r8, r3                                        |     r8 = r3;
    0x00002048 mov r4, r6                                        |     r4 = r6;
    0x0000204a b 0x2056                                          |     
                                                                 |     while (r0 != 0) {
    0x0000204c adds r4, 1                                        |         r4++;
    0x0000204e cmp r4, r8                                        |         
    0x00002050 str.w r4, [fp, 4]                                 |         __asm ("str.w r4, [arg_4ch]");
                                                                 |         if (r4 > r8) {
    0x00002054 bgt 0x208c                                        |             goto label_74;
                                                                 |         }
    0x00002056 mov r2, sb                                        |         r2 = sb;
    0x00002058 mov r1, sl                                        |         r1 = sl;
    0x0000205a adds r0, r5, r4                                   |         r0 = r5 + r4;
    0x0000205c blx 0xcdc                                         |         r0 = memcmp (r0, r1, r2);
    0x00002060 cmp r0, 0                                         |         
    0x00002062 bne 0x204c                                        |         
                                                                 |     }
    0x00002064 cmp r4, r6                                        |     
    0x00002066 mov r8, r4                                        |     r8 = r4;
                                                                 |     if (r4 == r6) {
    0x00002068 beq 0x20de                                        |         goto label_75;
                                                                 |     }
    0x0000206a ldr r1, [sp, 8]                                   |     r1 = var_8h;
    0x0000206c sub.w r2, r8, r6                                  |     r2 = r8 - r6;
    0x00002070 cmp r2, 0                                         |     
    0x00002072 add r1, r5                                        |     r1 += r5;
                                                                 |     if (r2 <= 0) {
    0x00002074 ble.w 0x217e                                      |         goto label_76;
                                                                 |     }
                                                                 |     do {
    0x00002078 ldr r0, [sp, 0xc]                                 |         r0 = fd;
    0x0000207a blx 0xe50                                         |         write (r0, r1, r2);
    0x0000207c cdp p8, 0xe, c2, c10, c0, 0                       |         __asm ("cdp p8, 0xe, c2, c10, c0, 0");
                                                                 |         if (r2 < 0) {
    0x00002080 blt 0x212c                                        |             goto label_77;
                                                                 |         }
    0x00002082 ldr r3, [pc, 0x298]                               |         
    0x00002084 add r3, pc                                        |         r3 = 0x43a6;
    0x00002086 ldrd r6, r4, [r3, 4]                              |         __asm ("ldrd r6, r4, [r3, 4]");
    0x0000208a b 0x201c                                          |         goto label_19;
                                                                 | label_74:
    0x0000208c mov r3, r8                                        |         r3 = r8;
    0x0000208e mov r8, r4                                        |         r8 = r4;
    0x00002090 cmp r8, r6                                        |         
    0x00002092 mov r4, r3                                        |         r4 = r3;
                                                                 |         if (r8 == r6) {
    0x00002094 beq 0x20e4                                        |             goto label_78;
                                                                 |         }
    0x00002096 ldr r1, [sp, 8]                                   |         r1 = var_8h;
    0x00002098 subs r2, r4, r6                                   |         r2 = r4 - r6;
    0x0000209a cmp r2, 0                                         |         
    0x0000209c add r1, r5                                        |         r1 += r5;
    0x0000209e bgt 0x2078                                        |         
                                                                 |     } while (r2 > 0);
    0x000020a0 mov r0, sl                                        |     r0 = sl;
    0x000020a2 str r2, [sp, 8]                                   |     var_8h = r2;
    0x000020a4 blx 0xcac                                         |     free (r0);
    0x000020a8 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x000020aa cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x000020ac bne 0x211a                                        |         goto label_25;
                                                                 |     }
    0x000020ae mov r6, r8                                        |     r6 = r8;
    0x000020b0 b 0x20ea                                          |     goto label_79;
                                                                 | label_73:
    0x000020b2 adds r1, r3, r4                                   |     r1 = r3 + r4;
    0x000020b4 mov r2, r7                                        |     r2 = r7;
    0x000020b6 mov r0, r3                                        |     r0 = r3;
    0x000020b8 movs r6, 0                                        |     r6 = 0;
    0x000020ba blx 0xcc4                                         |     memcpy (r0, r1, r2);
    0x000020be ldr r5, [sp, 0x10]                                |     r5 = var_10h;
    0x000020c0 adds r1, r0, r7                                   |     r1 = r0 + r7;
    0x000020c2 movs r0, 0                                        |     r0 = 0;
    0x000020c4 ldr r2, [r5, 0xc]                                 |     r2 = *((r5 + 0xc));
    0x000020c6 subs r2, r2, r7                                   |     r2 -= r7;
    0x000020c8 bl 0x1584                                         |     r0 = fcn_00001584 (r0, r1, r2);
    0x000020cc cmp r0, r6                                        |     
    0x000020ce mov r4, r0                                        |     r4 = r0;
    0x000020d0 str r0, [r5, 8]                                   |     *((r5 + 8)) = r0;
    0x000020d2 str r6, [r5, 4]                                   |     *((r5 + 4)) = r6;
                                                                 |     if (r0 < r6) {
    0x000020d4 blt 0x217e                                        |         goto label_76;
                                                                 |     }
    0x000020d6 adds r3, r0, r7                                   |     r3 = r0 + r7;
    0x000020d8 str r6, [sp, 8]                                   |     var_8h = r6;
    0x000020da str r3, [r5, 8]                                   |     *((r5 + 8)) = r3;
    0x000020dc b 0x203a                                          |     goto label_20;
                                                                 | label_75:
    0x000020de ldr r3, [pc, 0x240]                               |     
    0x000020e0 add r3, pc                                        |     r3 = 0x4406;
    0x000020e2 ldr r6, [r3, 4]                                   |     r6 = *(0x440a);
                                                                 | label_78:
    0x000020e4 mov r0, sl                                        |     r0 = sl;
    0x000020e6 blx 0xcac                                         |     free (r0);
                                                                 | label_79:
    0x000020ea ldr r4, [pc, 0x238]                               |     
    0x000020ec adds r1, r5, r6                                   |     r1 = r5 + r6;
    0x000020ee mov r0, r5                                        |     r0 = r5;
    0x000020f0 add r4, pc                                        |     r4 = 0x441a;
    0x000020f2 ldr r3, [r4, 8]                                   |     r3 = *(0x4422);
    0x000020f4 subs r6, r3, r6                                   |     r6 = r3 - r6;
    0x000020f6 mov r2, r6                                        |     r2 = r6;
    0x000020f8 blx 0xca0                                         |     memmove (r0, r1, r2);
    0x000020fc ldr r2, [r4, 0xc]                                 |     r2 = *(0x4426);
    0x000020fe adds r1, r5, r6                                   |     r1 = r5 + r6;
    0x00002100 movs r0, 0                                        |     r0 = 0;
    0x00002102 subs r2, r2, r6                                   |     r2 -= r6;
    0x00002104 bl 0x1584                                         |     r0 = fcn_00001584 (r0, r1, r2);
    0x00002108 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000210a blt 0x2176                                        |         goto label_80;
                                                                 |     }
    0x0000210c add r6, r0                                        |     r6 += r0;
    0x0000210e movs r3, 0                                        |     r3 = 0;
    0x00002110 cmp r6, r3                                        |     
    0x00002112 str r6, [r4, 8]                                   |     *((r4 + 8)) = r6;
    0x00002114 str r3, [r4, 4]                                   |     *((r4 + 4)) = r3;
                                                                 |     if (r6 >= r3) {
    0x00002116 bge.w 0x1c32                                      |         goto label_21;
                                                                 |     }
                                                                 | label_25:
    0x0000211a ldr r3, [pc, 0x20c]                               |     
    0x0000211c ldr r2, [pc, 0x20c]                               |     
    0x0000211e add r3, pc                                        |     r3 = 0x444c;
    0x00002120 add r2, pc                                        |     r2 = 0x4450;
                                                                 | label_26:
    0x00002122 movs r1, 1                                        |     r1 = 1;
    0x00002124 movs r0, 3                                        |     r0 = 3;
    0x00002126 blx 0xe78                                         |     fcn_00000e78 ();
    0x0000212a b 0x1e30                                          |     goto label_22;
                                                                 | label_77:
    0x0000212c ldr r3, [pc, 0x200]                               |     
    0x0000212e movs r1, 1                                        |     r1 = 1;
    0x00002130 ldr r2, [pc, 0x200]                               |     
    0x00002132 movs r0, 3                                        |     r0 = 3;
    0x00002134 add r3, pc                                        |     r3 = 0x4468;
    0x00002136 add r2, pc                                        |     r2 = 0x446e;
    0x00002138 blx 0xe78                                         |     fcn_00000e78 ();
    0x0000213c ldr r3, [pc, 0x1f8]                               |     
    0x0000213e add r3, pc                                        |     r3 = 0x447a;
    0x00002140 ldrd r6, r4, [r3, 4]                              |     __asm ("ldrd r6, r4, [r3, 4]");
    0x00002142 str r1, [r0, 0x40]                                |     *((r0 + 0x40)) = r1;
    0x00002144 b 0x201c                                          |     goto label_19;
                                                                 | label_71:
    0x00002146 mov r6, r2                                        |     r6 = r2;
    0x00002148 adds r2, r6, 1                                    |     r2 = r6 + 1;
    0x0000214a cmp r1, 0                                         |     
    0x0000214c it ne                                             |     
                                                                 |     if (r1 == 0) {
    0x0000214e cmpne r4, r2                                      |         __asm ("cmpne r4, r2");
                                                                 |         goto label_81;
                                                                 |     }
                                                                 |     if (r1 > 0) {
                                                                 | label_81:
    0x00002150 bgt.w 0x1fe0                                      |         goto label_23;
                                                                 |     }
                                                                 | label_70:
    0x00002154 ldr r3, [pc, 0x1e4]                               |     
    0x00002156 add r3, pc                                        |     r3 = 0x4496;
    0x00002158 str r2, [r3, 4]                                   |     *((r3 + 4)) = r2;
    0x0000215a ldr r2, [pc, 0x1e4]                               |     
    0x0000215c add r2, pc                                        |     r2 = 0x44a2;
    0x0000215e b 0x21ec                                          |     goto label_82;
                                                                 | label_72:
    0x00002160 ldr r3, [pc, 0x1e0]                               |     
    0x00002162 movs r1, 1                                        |     r1 = 1;
    0x00002164 ldr r2, [pc, 0x1e0]                               |     
    0x00002166 movs r0, 6                                        |     r0 = 6;
    0x00002168 add r3, pc                                        |     r3 = 0x44b0;
    0x0000216a add r2, pc                                        |     r2 = 0x44b6;
    0x0000216c blx 0xe78                                         |     fcn_00000e78 ();
    0x00002170 ldrd r6, r4, [r8, 4]                              |     __asm ("ldrd r6, r4, [r8, 4]");
    0x00002174 b 0x2010                                          |     goto label_24;
                                                                 | label_80:
    0x00002176 movs r3, 0                                        |     r3 = 0;
    0x00002178 str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x0000217a str r3, [r4, 4]                                   |     *((r4 + 4)) = r3;
    0x0000217c b 0x211a                                          |     goto label_25;
                                                                 | label_76:
    0x0000217e mov r0, sl                                        |     r0 = sl;
    0x00002180 blx 0xcac                                         |     free (r0);
    0x00002184 b 0x211a                                          |     goto label_25;
                                                                 | label_63:
    0x00002186 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00002188 strb r0, [r3]                                     |     *(r3) = r0;
    0x0000218a mov.w r3, -1                                      |     r3 = -1;
    0x0000218e str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00002190 b 0x1a64                                          |     goto label_8;
                                                                 | label_53:
    0x00002192 ldr r3, [sp, 0x28]                                |     r3 = ptr;
    0x00002194 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00002196 beq 0x2200                                        |         
    0x00002198 ldr r2, [pc, 0x1b0]                               |         
    0x0000219a movs r1, 1                                        |         r1 = 1;
    0x0000219c movs r0, 4                                        |         r0 = 4;
    0x0000219e add r2, pc                                        |         r2 = 0x44ee;
    0x000021a0 blx 0xe78                                         |         fcn_00000e78 ();
    0x000021a4 mov.w r3, -1                                      |         r3 = -1;
    0x000021a8 str r3, [sp, 0x3c]                                |         var_3ch = r3;
    0x000021aa b 0x1a64                                          |         goto label_8;
                                                                 | label_52:
    0x000021ac ldr r3, [pc, 0x1a0]                               |         
    0x000021ae ldr r2, [pc, 0x1a4]                               |         
    0x000021b0 add r3, pc                                        |         r3 = 0x4504;
    0x000021b2 add r2, pc                                        |         r2 = 0x450c;
    0x000021b4 b 0x2122                                          |         goto label_26;
                                                                 | label_41:
    0x000021b6 ldr r2, [pc, 0x1a0]                               |         
    0x000021b8 add r2, pc                                        |         r2 = 0x4516;
                                                                 | label_39:
    0x000021ba movs r1, 1                                        |         r1 = 1;
    0x000021bc movs r0, 3                                        |         r0 = 3;
    0x000021be blx 0xe78                                         |         fcn_00000e78 ();
    0x000021c2 mov.w r3, -1                                      |         r3 = -1;
    0x000021c6 str r3, [sp, 0x3c]                                |         var_3ch = r3;
    0x000021c8 addw r3, sp, 0x4ec                                |         __asm ("addw r3, arg_4ech");
    0x000021cc str r3, [sp, 0x38]                                |         src = r3;
    0x000021ce b 0x1a64                                          |         goto label_8;
                                                                 | label_48:
    0x000021d0 ldr r3, [pc, 0x188]                               |         
    0x000021d2 movs r1, 1                                        |         r1 = 1;
    0x000021d4 ldr r2, [pc, 0x188]                               |         
    0x000021d6 movs r0, 3                                        |         r0 = 3;
    0x000021d8 add r3, pc                                        |         r3 = 0x4538;
    0x000021da add r2, pc                                        |         r2 = 0x453e;
    0x000021dc blx 0xe78                                         |         fcn_00000e78 ();
    0x000021e0 mov.w r3, -1                                      |         r3 = -1;
    0x000021e4 str r3, [sp, 0x3c]                                |         var_3ch = r3;
    0x000021e6 b 0x1a6c                                          |         goto label_13;
                                                                 | label_49:
    0x000021e8 ldr r2, [pc, 0x178]                               |         
    0x000021ea add r2, pc                                        |         r2 = 0x4552;
                                                                 | label_82:
    0x000021ec movs r1, 1                                        |         r1 = 1;
    0x000021ee movs r0, 3                                        |         r0 = 3;
    0x000021f0 blx 0xe78                                         |         fcn_00000e78 ();
    0x000021f4 mov.w r3, -1                                      |         r3 = -1;
    0x000021f8 str r3, [sp, 0x3c]                                |         var_3ch = r3;
    0x000021fa b 0x1a64                                          |         goto label_8;
                                                                 | label_42:
    0x000021fc blx 0xcf4                                         |         stack_chk_fail ();
                                                                 |     }
    0x00002200 ldr r2, [pc, 0x164]                               |     
    0x00002202 movs r1, 1                                        |     r1 = 1;
    0x00002204 movs r0, 4                                        |     r0 = 4;
    0x00002206 add r2, pc                                        |     r2 = 0x4572;
    0x00002208 blx 0xe78                                         |     fcn_00000e78 ();
    0x0000220c mov.w r3, -1                                      |     r3 = -1;
    0x00002210 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00002212 b 0x1a64                                          |     goto label_8;
                                                                 | label_54:
    0x00002214 ldr r2, [pc, 0x154]                               |     
    0x00002216 mov r1, r4                                        |     r1 = r4;
    0x00002218 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000221a movs r0, 4                                        |     r0 = 4;
    0x0000221c add r2, pc                                        |     r2 = 0x458c;
    0x0000221e blx 0xe78                                         |     fcn_00000e78 ();
    0x00002220 cdp p0, 2, c15, c12, c15, 2                       |     __asm ("cdp p0, 2, c15, c12, c15, 2");
    0x00002224 adds r3, 0xff                                     |     r3 += 0xff;
    0x00002226 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00002228 b 0x1a64                                          |     goto label_8;
                                                                 | label_55:
    0x0000222a ldr r2, [pc, 0x144]                               |     
    0x0000222c mov r1, r4                                        |     r1 = r4;
    0x0000222e movs r0, 4                                        |     r0 = 4;
    0x00002230 add r2, pc                                        |     r2 = 0x45a6;
    0x00002232 blx 0xe78                                         |     fcn_00000e78 ();
    0x00002236 b 0x1e30                                          |     goto label_22;
                                                                 | label_69:
    0x00002238 ldr r1, [pc, 0x138]                               |     
    0x0000223a ldr r0, [sp, 0x38]                                |     r0 = src;
    0x0000223c ldr r3, [pc, 0x138]                               |     
    0x0000223e ldr r2, [pc, 0x13c]                               |     
    0x00002240 add r1, pc                                        |     r1 = 0x45b8;
    0x00002242 adds r1, 0x24                                     |     r1 += 0x24;
    0x00002244 str r0, [sp, 4]                                   |     var_4h = r0;
    0x00002246 add r3, pc                                        |     r3 = 0x45c2;
    0x00002248 str r1, [sp]                                      |     *(sp) = r1;
    0x0000224a add r2, pc                                        |     r2 = 0x45cc;
    0x0000224c movs r1, 1                                        |     r1 = 1;
    0x0000224e movs r0, 3                                        |     r0 = 3;
    0x00002250 blx 0xe78                                         |     fcn_00000e78 ();
    0x00002254 mov.w r3, -1                                      |     r3 = -1;
    0x00002258 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x0000225a b 0x1f18                                          |     goto label_16;
                                                                 | }

[*] Function strcat used 3 times file_upload