[*] Binary protection state of ssid

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


[*] Function strcat tear down of ssid

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/ssid @ 0x3774 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00003774 ()                                      | void fcn_00003774 (int16_t arg_14h, char * arg_1f8h, int16_t arg_1fch, int16_t arg_200h, int16_t arg_204h, int16_t arg_208h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     char * var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_58h;
                                                                 |     int16_t var_5ch;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_68h;
                                                                 |     int16_t var_6ch;
                                                                 |     int16_t var_70h;
                                                                 |     int16_t var_74h;
                                                                 |     int16_t var_78h;
                                                                 |     int32_t var_78h_2;
                                                                 |     int32_t var_80h;
                                                                 |     int32_t var_80h_2;
                                                                 |     void * s;
                                                                 |     int16_t var_8dh;
                                                                 |     char * dest;
                                                                 |     int8_t var_1h;
                                                                 |     void * var_d0h;
                                                                 |     int8_t var_7fh;
                                                                 |     int16_t var_1cch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00003774 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00003778 mov r4, r2                                        |     r4 = r2;
    0x0000377a sub sp, 0x1d4                                     |     
    0x0000377c ldr.w r2, [pc, 0x6c4]                             |     r2 = *(0x00003e44);
    0x00003780 ldr r5, [sp, 0x1f8]                               |     r5 = *(arg_1f8h);
    0x00003782 str r3, [sp, 0x60]                                |     var_60h = r3;
    0x00003784 add r2, pc                                        |     r2 += pc;
    0x00003786 ldr.w r3, [pc, 0x6c0]                             |     
    0x0000378a str r5, [sp, 0x28]                                |     var_28h = r5;
    0x0000378c str r0, [sp, 0x3c]                                |     var_3ch = r0;
    0x0000378e str r1, [sp, 0x54]                                |     var_54h = r1;
    0x00003790 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00003792 ldr.w r0, [pc, 0x6b8]                             |     
    0x00003796 ldr r1, [sp, 0x208]                               |     r1 = *(arg_208h);
    0x00003798 ldr r3, [r3]                                      |     r3 = *(0x3e4a);
    0x0000379a str r3, [sp, 0x1cc]                               |     var_1cch = r3;
    0x0000379c mov.w r3, 0                                       |     r3 = 0;
    0x000037a0 add r3, sp, 0x70                                  |     r3 += var_70h;
    0x000037a2 mov r2, r3                                        |     r2 = r3;
    0x000037a4 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x000037a6 movs r3, 0                                        |     r3 = 0;
    0x000037a8 add r0, pc                                        |     r0 = 0x75fa;
    0x000037aa str r3, [r2]                                      |     *(r2) = r3;
    0x000037ac ldr r3, [sp, 0x204]                               |     r3 = *(arg_204h);
    0x000037ae str r1, [sp, 0x58]                                |     var_58h = r1;
    0x000037b0 str r3, [sp, 0x50]                                |     var_50h = r3;
    0x000037b2 bl 0x4784                                         |     fcn_00004784 (r0, r1);
    0x000037b6 ldr r1, [r5, 0xc]                                 |     r1 = *((r5 + 0xc));
    0x000037b8 ldr r2, [r5, 0x18]                                |     r2 = *((r5 + 0x18));
    0x000037ba ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x000037bc str r0, [sp, 0x40]                                |     var_40h = r0;
    0x000037be ldr r0, [r5]                                      |     r0 = *(r5);
    0x000037c0 add r5, sp, 0x78                                  |     r5 += var_78h;
    0x000037c2 str r5, [sp, 0x2c]                                |     var_2ch = r5;
    0x000037c4 strd r2, r3, [sp, 0x80]                           |     __asm ("strd r2, r3, [var_80h]");
    0x000037c8 strd r0, r1, [sp, 0x78]                           |     __asm ("strd r0, r1, [var_78h]");
    0x000037cc cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000037ce beq.w 0x3c1e                                      |         goto label_20;
                                                                 |     }
    0x000037d2 ldr.w r3, [pc, 0x67c]                             |     
    0x000037d6 ldr.w r2, [pc, 0x67c]                             |     
    0x000037da add r3, pc                                        |     r3 = 0x7630;
    0x000037dc add r2, pc                                        |     r2 = 0x7636;
    0x000037de str r3, [sp, 0x6c]                                |     var_6ch = r3;
    0x000037e0 adds r3, 0x70                                     |     r3 += 0x70;
    0x000037e2 str r2, [sp, 0x68]                                |     var_68h = r2;
    0x000037e4 str r3, [sp, 0x64]                                |     var_64h = r3;
                                                                 |     do {
    0x000037e6 movs r1, 0x2c                                     |         r1 = 0x2c;
    0x000037e8 mov r0, r4                                        |         r0 = r4;
    0x000037ea blx 0x18ac                                        |         r0 = strchr (r0, r1);
    0x000037ee mov r2, r0                                        |         r2 = r0;
    0x000037f0 str r0, [sp, 0x30]                                |         var_30h = r0;
                                                                 |         if (r0 != 0) {
    0x000037f2 cbz r0, 0x37fc                                    |             
    0x000037f4 movs r3, 0                                        |             r3 = 0;
    0x000037f6 strb r3, [r2], 1                                  |             *(r2) = r3;
                                                                 |             r2++;
    0x000037fa str r2, [sp, 0x30]                                |             var_30h = r2;
                                                                 |         }
    0x000037fc ldr r5, [sp, 0x1c]                                |         r5 = var_1ch;
    0x000037fe mov r0, r4                                        |         r0 = r4;
    0x00003800 ldr.w r1, [pc, 0x654]                             |         r1 = *(0x00003e58);
    0x00003804 mov r2, r5                                        |         r2 = r5;
    0x00003806 add r1, pc                                        |         r1 += pc;
    0x00003808 blx 0x1ae8                                        |         fcn_00001ae8 ();
    0x0000380c ldr r3, [r5]                                      |         r3 = *(r5);
    0x0000380e mov r6, r0                                        |         r6 = r0;
    0x00003810 adds r2, r3, 2                                    |         r2 = r3 + 2;
                                                                 |         if (r2 == r3) {
    0x00003812 beq.w 0x3c60                                      |             goto label_21;
                                                                 |         }
                                                                 | label_12:
    0x00003816 ldr r2, [sp, 0x60]                                |         r2 = var_60h;
    0x00003818 orrs r3, r2                                       |         r3 |= r2;
                                                                 |         if (r3 == r2) {
    0x0000381a beq.w 0x3be4                                      |             goto label_22;
                                                                 |         }
    0x0000381e mov r0, r6                                        |         r0 = r6;
    0x00003820 ldr.w r5, [pc, 0x638]                             |         r5 = *(0x00003e5c);
    0x00003824 blx 0x197c                                        |         fcn_0000197c ();
    0x00003828 ldr r6, [sp, 0x1c]                                |         r6 = var_1ch;
    0x0000382a mov r0, r4                                        |         r0 = r4;
    0x0000382c add r5, pc                                        |         r5 += pc;
    0x0000382e mov r1, r5                                        |         r1 = r5;
    0x00003830 mov r2, r6                                        |         r2 = r6;
    0x00003832 blx 0x1870                                        |         cli_getParamsInGroup ();
    0x00003836 ldr r3, [r6]                                      |         r3 = *(r6);
    0x00003838 mov fp, r0                                        |         
                                                                 |         if (r3 == 0) {
    0x0000383a cbnz r3, 0x3856                                   |             
    0x0000383c mov r0, r4                                        |             r0 = r4;
    0x0000383e blx 0x1a00                                        |             fcn_00001a00 ();
    0x00003842 mov r1, r5                                        |             r1 = r5;
    0x00003844 ldr r5, [sp, 0x1c]                                |             r5 = var_1ch;
    0x00003846 mov r4, r0                                        |             r4 = r0;
    0x00003848 mov r0, fp                                        |             r0 = fp;
    0x0000384a mov r2, r5                                        |             r2 = r5;
    0x0000384c blx 0x1c14                                        |             fcn_00001c14 ();
    0x00003850 ldr r1, [r5]                                      |             r1 = *(r5);
                                                                 |             if (r1 == 0) {
    0x00003852 cbz r1, 0x3866                                    |                 goto label_23;
                                                                 |             }
                                                                 | label_1:
    0x00003854 mov r0, fp                                        |             r0 = fp;
                                                                 |         }
    0x00003856 blx 0x1bd8                                        |         fcn_00001bd8 ();
    0x0000385a ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x0000385c cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0000385e beq.w 0x3c1e                                      |             goto label_20;
                                                                 |         }
                                                                 | label_10:
    0x00003862 ldr r4, [sp, 0x30]                                |         r4 = var_30h;
    0x00003864 b 0x37e6                                          |         
                                                                 |     } while (1);
                                                                 | label_23:
    0x00003866 adds r3, r4, 1                                    |     r3 = r4 + 1;
    0x00003868 movs r2, 0x41                                     |     r2 = 0x41;
    0x0000386a str r3, [sp, 0x34]                                |     var_34h = r3;
    0x0000386c ldr.w r3, [pc, 0x5f0]                             |     r3 = *(0x00003e60);
    0x00003870 str r1, [sp, 0x48]                                |     var_48h = r1;
    0x00003872 add r3, pc                                        |     r3 += pc;
    0x00003874 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00003876 add r3, sp, 0x88                                  |     r3 += s;
    0x00003878 mov r0, r3                                        |     r0 = r3;
    0x0000387a str r3, [sp, 0x38]                                |     var_38h = r3;
    0x0000387c blx 0x1900                                        |     memset (r0, r1, r2);
                                                                 | label_0:
    0x00003880 ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x00003884 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00003886 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003888 beq.w 0x3b00                                      |         goto label_24;
                                                                 |     }
    0x0000388c ldr r3, [sp, 0x200]                               |     r3 = *(arg_200h);
    0x0000388e clz r7, r3                                        |     r7 &= r3;
    0x00003892 ldr r3, [sp, 0x1fc]                               |     r3 = *(arg_1fch);
    0x00003894 lsrs r7, r7, 5                                    |     r7 >>= 5;
    0x00003896 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003898 bne.w 0x3a00                                      |         goto label_25;
                                                                 |     }
    0x0000389c ldr r5, [sp, 0x1fc]                               |     r5 = *(arg_1fch);
    0x0000389e movs r3, 1                                        |     r3 = 1;
                                                                 | label_5:
    0x000038a0 ldr r2, [sp, 0x200]                               |     r2 = *(arg_200h);
    0x000038a2 cmp r2, 0                                         |     
    0x000038a4 ite eq                                            |     
                                                                 |     if (r2 != 0) {
    0x000038a6 moveq r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r2 == 0) {
    0x000038a8 andne r3, r3, 1                                   |         r3 &= 1;
                                                                 |     }
    0x000038ac cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000038ae bne.w 0x39da                                      |         goto label_26;
                                                                 |     }
                                                                 | label_4:
    0x000038b2 ldr r3, [sp, 0x200]                               |     r3 = *(arg_200h);
    0x000038b4 cmp r5, r3                                        |     
    0x000038b6 it le                                             |     
                                                                 |     if (r5 > r3) {
    0x000038b8 orrle r7, r7, 1                                   |         r7 |= 1;
                                                                 |     }
    0x000038ba lsls r1, r0, 0x1c                                 |     r1 = r0 << 0x1c;
                                                                 |     if (r7 != 0) {
    0x000038bc cbnz r7, 0x3916                                   |         goto label_27;
                                                                 |     }
    0x000038be ldr.w r1, [pc, 0x5a4]                             |     r1 = *(0x00003e64);
    0x000038c2 mov r0, fp                                        |     r0 = fp;
    0x000038c4 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x000038c6 add r1, pc                                        |     r1 += pc;
    0x000038c8 blx 0x1c14                                        |     fcn_00001c14 ();
                                                                 | label_3:
    0x000038cc ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000038ce movs r5, 0                                        |     r5 = 0;
    0x000038d0 ldr r6, [sp, 0x2c]                                |     r6 = var_2ch;
    0x000038d2 adds r7, r3, 4                                    |     r7 = r3 + 4;
                                                                 |     do {
    0x000038d4 ldr r4, [r6]                                      |         r4 = *(r6);
    0x000038d6 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x000038d8 mov r0, r4                                        |         r0 = r4;
    0x000038da ldr.w r8, [r3, r5, lsl 2]                         |         offset_0 = r5 << 2;
                                                                 |         r8 = *((r3 + offset_0));
    0x000038de blx 0x1a00                                        |         fcn_00001a00 ();
    0x000038e2 ldr.w r3, [r7, r5, lsl 2]                         |         offset_1 = r5 << 2;
                                                                 |         r3 = *((r7 + offset_1));
    0x000038e6 adds r0, 1                                        |         r0++;
    0x000038e8 add r0, r4                                        |         r0 += r4;
    0x000038ea adds r5, 3                                        |         r5 += 3;
    0x000038ec cmp r3, r0                                        |         
    0x000038ee it eq                                             |         
                                                                 |         if (r3 != r0) {
    0x000038f0 moveq r0, r8                                      |             r0 = r8;
                                                                 |         }
    0x000038f2 cmp r5, 0xc                                       |         
    0x000038f4 str r0, [r6], 4                                   |         *(r6) = r0;
                                                                 |         r6 += 4;
    0x000038f8 bne 0x38d4                                        |         
                                                                 |     } while (r5 != 0xc);
    0x000038fa movs r3, 0                                        |     r3 = 0;
    0x000038fc str r3, [sp, 0x48]                                |     var_48h = r3;
                                                                 | label_2:
    0x000038fe ldr.w r3, [fp, 0x14]                              |     r3 = *(arg_14h);
    0x00003902 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003904 beq 0x3880                                        |         goto label_0;
                                                                 |     }
    0x00003906 ldr r2, [sp, 0x48]                                |     r2 = var_48h;
    0x00003908 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0000390a beq 0x3854                                        |         goto label_1;
                                                                 |     }
    0x0000390c ldr r1, [sp, 0x3c]                                |     r1 = var_3ch;
    0x0000390e ldr r3, [r1, 8]                                   |     r3 = *((r1 + 8));
    0x00003910 subs r3, r3, r2                                   |     r3 -= r2;
    0x00003912 str r3, [r1, 8]                                   |     *((r1 + 8)) = r3;
    0x00003914 b 0x3854                                          |     goto label_1;
                                                                 | label_27:
    0x00003916 ldr r1, [sp, 0x40]                                |     r1 = var_40h;
                                                                 |     if (r1 == 0) {
    0x00003918 cbz r1, 0x3962                                    |         goto label_28;
                                                                 |     }
    0x0000391a add r3, sp, 0xcc                                  |     r3 += dest;
    0x0000391c movs r2, 0x7f                                     |     r2 = 0x7f;
    0x0000391e mov r0, r3                                        |     r0 = r3;
    0x00003920 ldr.w r4, [fp, 4]                                 |     r4 = *(arg_1fch);
    0x00003924 blx 0x187c                                        |     strncpy (r0, r1, r2);
    0x00003928 ldr.w r1, [pc, 0x53c]                             |     
    0x0000392c movs r2, 0                                        |     r2 = 0;
    0x0000392e strb.w r2, [r0, 0x7f]                             |     var_7fh = r2;
    0x00003932 add r1, pc                                        |     r1 = 0x779e;
    0x00003934 blx 0x1b9c                                        |     r0 = fcn_00001b9c ();
    0x00003938 mov r1, r0                                        |     r1 = r0;
    0x0000393a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000393c beq.w 0x3b0e                                      |         goto label_29;
                                                                 |     }
    0x00003940 ldr.w r5, [pc, 0x528]                             |     
    0x00003944 add r5, pc                                        |     r5 = 0x77b4;
    0x00003946 b 0x3958                                          |     
                                                                 |     while (r0 != 0) {
    0x00003948 mov r1, r5                                        |         r1 = r5;
    0x0000394a movs r0, 0                                        |         r0 = 0;
    0x0000394c blx 0x1b9c                                        |         r0 = fcn_00001b9c ();
    0x00003950 mov r1, r0                                        |         r1 = r0;
    0x00003952 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003954 beq.w 0x3b0e                                      |             goto label_29;
                                                                 |         }
    0x00003958 mov r0, r4                                        |         r0 = r4;
    0x0000395a blx 0x1cbc                                        |         r0 = fcn_00001cbc ();
    0x0000395e cmp r0, 0                                         |         
    0x00003960 bne 0x3948                                        |         
                                                                 |     }
                                                                 | label_28:
    0x00003962 ldr r4, [sp, 0x1c]                                |     r4 = var_1ch;
    0x00003964 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x00003968 ldr r1, [sp, 0x44]                                |     r1 = var_44h;
    0x0000396a mov r2, r4                                        |     r2 = r4;
    0x0000396c blx 0x1ae8                                        |     fcn_00001ae8 ();
    0x00003970 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00003972 mov sb, r0                                        |     sb = r0;
    0x00003974 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003976 bne.w 0x3b1c                                      |         goto label_30;
                                                                 |     }
    0x0000397a ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000397c ldr r2, [sp, 0x64]                                |     r2 = var_64h;
    0x0000397e ldr r1, [sp, 0x50]                                |     r1 = var_50h;
    0x00003980 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00003982 cmp r1, 0                                         |     
    0x00003984 sub.w r2, r3, r2                                  |     r2 = r3 - r2;
    0x00003988 clz r2, r2                                        |     r2 &= r2;
    0x0000398c lsr.w r2, r2, 5                                   |     r2 >>= 5;
    0x00003990 it eq                                             |     
                                                                 |     if (r1 != 0) {
    0x00003992 moveq r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x00003994 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00003996 bne.w 0x3c78                                      |         goto label_31;
                                                                 |     }
                                                                 | label_13:
    0x0000399a ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x0000399c str r3, [sp]                                      |     *(sp) = r3;
    0x0000399e ldr r3, [sp, 0x58]                                |     r3 = var_58h;
    0x000039a0 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x000039a2 ldr r0, [sp, 0x3c]                                |     r0 = var_3ch;
    0x000039a4 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x000039a6 ldr r3, [r1, 0xc]                                 |     r3 = *((r1 + 0xc));
    0x000039a8 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x000039aa ldr r3, [r1, 8]                                   |     r3 = *((r1 + 8));
    0x000039ac str r3, [sp, 8]                                   |     var_8h = r3;
    0x000039ae ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x000039b0 ldr r1, [sp, 0x54]                                |     r1 = var_54h;
    0x000039b2 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000039b4 movs r3, 0                                        |     r3 = 0;
    0x000039b6 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000039b8 mov r3, sb                                        |     r3 = sb;
    0x000039ba bl 0x34c4                                         |     r0 = fcn_000034c4 (r0, r1, r2, r3, r4, r5, r6);
    0x000039be mov r4, r0                                        |     r4 = r0;
                                                                 | label_9:
    0x000039c0 mov r0, sb                                        |     r0 = sb;
    0x000039c2 blx 0x197c                                        |     fcn_0000197c ();
    0x000039c6 ldr.w r1, [pc, 0x4a8]                             |     r1 = *(0x00003e70);
    0x000039ca mov r0, fp                                        |     r0 = fp;
    0x000039cc ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x000039ce add r1, pc                                        |     r1 += pc;
    0x000039d0 blx 0x1c14                                        |     fcn_00001c14 ();
    0x000039d4 cmp r4, 1                                         |     
                                                                 |     if (r4 != 1) {
    0x000039d6 bne 0x38fe                                        |         goto label_2;
                                                                 |     }
    0x000039d8 b 0x38cc                                          |     goto label_3;
                                                                 | label_26:
    0x000039da ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x000039dc movs r1, 0x2e                                     |     r1 = 0x2e;
    0x000039de ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x000039e2 movs r5, 1                                        |     r5 = 1;
    0x000039e4 add r0, r3                                        |     r0 += r3;
    0x000039e6 blx 0x18ac                                        |     r0 = strchr (r0, r1);
    0x000039ea cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000039ec beq.w 0x38b2                                      |         goto label_4;
                                                                 |     }
                                                                 |     do {
    0x000039f0 adds r0, 1                                        |         r0++;
    0x000039f2 movs r1, 0x2e                                     |         r1 = 0x2e;
    0x000039f4 adds r5, 1                                        |         r5++;
    0x000039f6 blx 0x18ac                                        |         r0 = strchr (r0, r1);
    0x000039fa cmp r0, 0                                         |         
    0x000039fc bne 0x39f0                                        |         
                                                                 |     } while (r0 != 0);
    0x000039fe b 0x38b2                                          |     goto label_4;
                                                                 | label_25:
    0x00003a00 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00003a02 movs r1, 0x2e                                     |     r1 = 0x2e;
    0x00003a04 ldr r5, [sp, 0x34]                                |     r5 = var_34h;
    0x00003a06 add.w sl, r3, r5                                  |     sl = r3 + r5;
    0x00003a0a mov r0, sl                                        |     r0 = sl;
    0x00003a0c blx 0x18ac                                        |     strchr (r0, r1);
    0x00003a10 ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00003a12 mov r4, r0                                        |     r4 = r0;
    0x00003a14 movs r1, 0x2e                                     |     r1 = 0x2e;
    0x00003a16 add r3, r5                                        |     r3 += r5;
    0x00003a18 mov r0, r3                                        |     r0 = r3;
    0x00003a1a mov r8, r3                                        |     r8 = r3;
    0x00003a1c blx 0x18ac                                        |     strchr (r0, r1);
    0x00003a1e vmax.s8 d20, d6, d6                               |     __asm ("vmax.s8 d20, d6, d6");
    0x00003a22 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00003a24 beq.w 0x3dae                                      |         goto label_32;
                                                                 |     }
    0x00003a28 ldr.w r2, [pc, 0x448]                             |     
    0x00003a2c movs r5, 0                                        |     r5 = 0;
    0x00003a2e str.w fp, [sp, 0x24]                              |     __asm ("str.w fp, [var_24h]");
    0x00003a32 mov fp, r8                                        |     
    0x00003a34 add r2, pc                                        |     r2 = 0x78ac;
    0x00003a36 str r2, [sp, 0x5c]                                |     var_5ch = r2;
                                                                 |     do {
                                                                 | label_7:
    0x00003a38 add.w sb, r4, 1                                   |         sb = r4 + 1;
    0x00003a3c movs r1, 0x2e                                     |         r1 = 0x2e;
    0x00003a3e mov r0, sb                                        |         r0 = sb;
    0x00003a40 sub.w r8, r4, sl                                  |         r8 = r4 - sl;
    0x00003a44 blx 0x18ac                                        |         strchr (r0, r1);
    0x00003a48 adds r5, 1                                        |         r5++;
    0x00003a4a mov r4, r0                                        |         r4 = r0;
                                                                 |         if (r6 == 0) {
    0x00003a4c cbz r6, 0x3a78                                    |             goto label_33;
                                                                 |         }
    0x00003a4e sub.w r3, r6, fp                                  |         r3 = r6 - fp;
    0x00003a52 cmp r8, r3                                        |         
                                                                 |         if (r8 != r3) {
    0x00003a54 bne 0x3a78                                        |             goto label_33;
                                                                 |         }
    0x00003a56 mov r2, r8                                        |         r2 = r8;
    0x00003a58 mov r1, fp                                        |         r1 = fp;
    0x00003a5a mov r0, sl                                        |         r0 = sl;
    0x00003a5c blx 0x1c50                                        |         r0 = fcn_00001c50 ();
                                                                 |         if (r0 != 0) {
    0x00003a60 cbnz r0, 0x3a7a                                   |             goto label_34;
                                                                 |         }
                                                                 | label_6:
    0x00003a62 adds r0, r6, 1                                    |         r0 = r6 + 1;
    0x00003a64 movs r1, 0x2e                                     |         r1 = 0x2e;
    0x00003a66 blx 0x18ac                                        |         r0 = strchr (r0, r1);
    0x00003a6a mov r6, r0                                        |         r6 = r0;
    0x00003a6c cmp r4, 0                                         |         
    0x00003a6e bne 0x3a38                                        |         
                                                                 |     } while (r4 != 0);
                                                                 | label_8:
    0x00003a70 ldr.w fp, [sp, 0x24]                              |     fp = var_24h;
    0x00003a74 mov r3, r4                                        |     r3 = r4;
    0x00003a76 b 0x38a0                                          |     goto label_5;
                                                                 | label_33:
    0x00003a78 cbz r4, 0x3a8e                                    |     
                                                                 |     while (r0 != 0) {
                                                                 | label_34:
    0x00003a7a ldr r3, [sp, 0x200]                               |         r3 = *(arg_200h);
    0x00003a7c cmp r5, r3                                        |         
    0x00003a7e ite gt                                            |         
                                                                 |         if (r5 <= r3) {
    0x00003a80 movgt r3, r7                                      |             r3 = r7;
                                                                 |         }
                                                                 |         if (r5 > r3) {
    0x00003a82 orrle r3, r7, 1                                   |             r3 = r7 | 1;
                                                                 |         }
                                                                 |         if (r3 != 0) {
    0x00003a86 cbnz r3, 0x3aa4                                   |             goto label_35;
                                                                 |         }
    0x00003a88 ldr.w fp, [sp, 0x24]                              |         fp = var_24h;
    0x00003a8c b 0x38a0                                          |         goto label_5;
    0x00003a8e mov r2, r8                                        |         r2 = r8;
    0x00003a90 mov r1, fp                                        |         r1 = fp;
    0x00003a92 mov r0, sl                                        |         r0 = sl;
    0x00003a94 blx 0x1c50                                        |         r0 = fcn_00001c50 ();
    0x00003a98 cmp r0, 0                                         |         
    0x00003a9a bne 0x3a7a                                        |         
                                                                 |     }
    0x00003a9c ldr.w fp, [sp, 0x24]                              |     fp = var_24h;
    0x00003aa0 mov r3, r4                                        |     r3 = r4;
    0x00003aa2 b 0x38a0                                          |     goto label_5;
                                                                 | label_35:
    0x00003aa4 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00003aa6 ldr r1, [sp, 0x20]                                |     r1 = var_20h;
    0x00003aa8 ldr r0, [sp, 0x38]                                |     r0 = var_38h;
    0x00003aaa add.w r2, r3, r8                                  |     r2 = r3 + r8;
    0x00003aae movs r3, 0x41                                     |     r3 = 0x41;
    0x00003ab0 str r2, [sp, 0x4c]                                |     var_4ch = r2;
    0x00003ab2 add.w r8, sp, 0xcc                                |     r8 += dest;
    0x00003ab6 blx 0x1930                                        |     strncpy_chk ();
    0x00003ab8 invalid                                           |     
    0x00003abc movs r3, 0                                        |     r3 = 0;
    0x00003abe ldr r2, [sp, 0x4c]                                |     r2 = var_4ch;
    0x00003ac0 mov r0, r8                                        |     r0 = r8;
    0x00003ac2 strb r3, [r1, r2]                                 |     *((r1 + r2)) = r3;
    0x00003ac4 movs r3, 0x41                                     |     r3 = 0x41;
    0x00003ac6 add.w r1, sp, 0x8d                                |     r1 += var_8dh;
    0x00003aca blx 0x1930                                        |     strncpy_chk ();
    0x00003ace ldrb.w r3, [r8]                                   |     r3 = *(r8);
    0x00003ad2 mov r2, r8                                        |     r2 = r8;
                                                                 |     if (r3 == 0) {
    0x00003ad4 cbz r3, 0x3ae6                                    |         goto label_36;
                                                                 |     }
                                                                 |     do {
    0x00003ad6 cmp r3, 0x2e                                      |         
    0x00003ad8 itt eq                                            |         
                                                                 |         if (r3 != 0x2e) {
    0x00003ada moveq r3, 0x20                                    |             r3 = 0x20;
                                                                 |         }
                                                                 |         if (r3 != 0x2e) {
    0x00003adc strbeq r3, [r2]                                   |             *(r2) = r3;
                                                                 |         }
    0x00003ade ldrb r3, [r2, 1]!                                 |         r3 = var_1h;
    0x00003ae2 cmp r3, 0                                         |         
    0x00003ae4 bne 0x3ad6                                        |         
                                                                 |     } while (r3 != 0);
                                                                 | label_36:
    0x00003ae6 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00003ae8 beq.w 0x3c3a                                      |         goto label_37;
                                                                 |     }
                                                                 | label_11:
    0x00003aec mov r0, sb                                        |     r0 = sb;
    0x00003aee movs r1, 0x2e                                     |     r1 = 0x2e;
    0x00003af0 blx 0x18ac                                        |     r0 = strchr (r0, r1);
    0x00003af4 mov r4, r0                                        |     r4 = r0;
    0x00003af6 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00003af8 bne 0x3a62                                        |         goto label_6;
                                                                 |     }
    0x00003afa cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x00003afc bne 0x3a38                                        |         goto label_7;
                                                                 |     }
    0x00003afe b 0x3a70                                          |     goto label_8;
                                                                 | label_24:
    0x00003b00 ldr r1, [pc, 0x374]                               |     
    0x00003b02 mov r0, fp                                        |     r0 = fp;
    0x00003b04 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00003b06 add r1, pc                                        |     r1 = 0x7982;
    0x00003b08 blx 0x1c14                                        |     fcn_00001c14 ();
    0x00003b0c b 0x38cc                                          |     goto label_3;
                                                                 | label_29:
    0x00003b0e ldr r1, [pc, 0x36c]                               |     
    0x00003b10 mov r0, fp                                        |     r0 = fp;
    0x00003b12 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00003b14 add r1, pc                                        |     r1 = 0x7996;
    0x00003b16 blx 0x1c14                                        |     fcn_00001c14 ();
    0x00003b1a b 0x38cc                                          |     goto label_3;
                                                                 | label_30:
    0x00003b1c movs r1, 1                                        |     r1 = 1;
    0x00003b1e mov.w r0, 0x2000                                  |     r0 = 0x2000;
    0x00003b22 blx 0x18e8                                        |     r0 = calloc (r0, r1);
    0x00003b26 mov sl, r0                                        |     sl = r0;
    0x00003b28 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003b2a beq.w 0x3e28                                      |         goto label_38;
                                                                 |     }
    0x00003b2c strh r5, [r7, 0xa]                                |     *((r7 + 0xa)) = r5;
    0x00003b2e movs r4, 0                                        |     r4 = 0;
    0x00003b30 add r5, sp, 0xcc                                  |     r5 += dest;
    0x00003b32 ldr.w r6, [fp]                                    |     r6 = *(fp);
    0x00003b34 str r0, [r0]                                      |     *(r0) = r0;
    0x00003b36 mov r1, r4                                        |     r1 = r4;
    0x00003b38 movs r2, 0xfc                                     |     r2 = 0xfc;
    0x00003b3a add r0, sp, 0xd0                                  |     r0 += var_d0h;
    0x00003b3c str r4, [r5]                                      |     *(r5) = r4;
    0x00003b3e blx 0x1900                                        |     memset (r0, r1, r2);
    0x00003b42 ldr r1, [pc, 0x33c]                               |     
    0x00003b44 mov r0, r6                                        |     r0 = r6;
    0x00003b46 add r1, pc                                        |     r1 = 0x79cc;
    0x00003b48 blx 0x1b9c                                        |     r0 = fcn_00001b9c ();
    0x00003b4c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003b4e beq.w 0x3db4                                      |         goto label_39;
                                                                 |     }
    0x00003b50 strh r1, [r6, 8]                                  |     *((r6 + 8)) = r1;
    0x00003b52 str.w fp, [sp, 0x24]                              |     __asm ("str.w fp, [var_24h]");
    0x00003b56 add r7, sp, 0x74                                  |     r7 += var_74h;
    0x00003b58 ldr.w r8, [sp, 0x44]                              |     r8 = var_44h;
    0x00003b5c movs r6, 0xa                                      |     r6 = 0xa;
    0x00003b5e ldr.w fp, [sp, 0x68]                              |     fp = var_68h;
    0x00003b62 str.w sb, [sp, 0x4c]                              |     __asm ("str.w sb, [var_4ch]");
    0x00003b64 str r0, [sp, 0x130]                               |     *((sp + 0x130)) = r0;
    0x00003b66 mov sb, r0                                        |     sb = r0;
    0x00003b68 str r4, [r7]                                      |     *(r7) = r4;
                                                                 |     do {
    0x00003b6a mov r1, sb                                        |         r1 = sb;
    0x00003b6c mov.w r2, 0x100                                   |         r2 = 0x100;
    0x00003b70 mov r0, r5                                        |         r0 = r5;
    0x00003b72 blx 0x1864                                        |         strcat_chk ()
    0x00003b74 mrc p6, 3, r4, c8, c10, 1                         |         __asm ("mrc p6, 3, r4, c8, c10, 1");
    0x00003b76 mov r2, r7                                        |         r2 = r7;
    0x00003b78 mov r1, r8                                        |         r1 = r8;
    0x00003b7a mov r0, r5                                        |         r0 = r5;
    0x00003b7c blx 0x1b90                                        |         fcn_00001b90 ();
    0x00003b7e invalid                                           |         
    0x00003b82 mov r4, r0                                        |         r4 = r0;
    0x00003b84 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00003b86 beq.w 0x3ce8                                      |             goto label_40;
                                                                 |         }
    0x00003b8a mov r1, fp                                        |         r1 = fp;
    0x00003b8c movs r0, 0                                        |         r0 = 0;
    0x00003b8e blx 0x1b9c                                        |         r0 = fcn_00001b9c ();
    0x00003b92 mov sb, r0                                        |         sb = r0;
    0x00003b94 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003b96 beq.w 0x3d36                                      |             goto label_41;
                                                                 |         }
    0x00003b9a mov.w r2, 0x100                                   |         r2 = 0x100;
    0x00003b9e mov r1, fp                                        |         r1 = fp;
    0x00003ba0 mov r0, r5                                        |         r0 = r5;
    0x00003ba2 blx 0x1864                                        |         strcat_chk ()
    0x00003ba6 mov r0, r4                                        |         r0 = r4;
    0x00003ba8 blx 0x1bfc                                        |         fcn_00001bfc ();
    0x00003bac subs r6, 1                                        |         r6--;
    0x00003bae bne 0x3b6a                                        |         
                                                                 |     } while (r6 != 1);
    0x00003bb0 ldr.w fp, [sp, 0x24]                              |     fp = var_24h;
    0x00003bb4 ldr.w sb, [sp, 0x4c]                              |     sb = var_4ch;
                                                                 | label_15:
    0x00003bb8 ldr r3, [r7]                                      |     r3 = *(r7);
    0x00003bba cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003bbc bne 0x3c86                                        |         goto label_42;
                                                                 |     }
                                                                 | label_14:
    0x00003bbe ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00003bc0 movs r4, 1                                        |     r4 = 1;
    0x00003bc2 str.w sl, [sp, 4]                                 |     __asm ("str.w sl, [var_4h]");
    0x00003bc6 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00003bc8 ldr r2, [r1, 8]                                   |     r2 = *((r1 + 8));
    0x00003bca ldr r0, [sp, 0x3c]                                |     r0 = var_3ch;
    0x00003bcc str r2, [sp, 8]                                   |     var_8h = r2;
    0x00003bce ldr r2, [r1, 4]                                   |     r2 = *((r1 + 4));
    0x00003bd0 str r2, [sp]                                      |     *(sp) = r2;
    0x00003bd2 ldr r2, [r1]                                      |     r2 = *(r1);
    0x00003bd4 ldr r1, [pc, 0x2ac]                               |     
    0x00003bd6 add r1, pc                                        |     r1 = 0x7a5e;
    0x00003bd8 bl 0x204c                                         |     fcn_0000204c (r0);
                                                                 | label_16:
    0x00003bdc mov r0, sl                                        |     r0 = sl;
    0x00003bde blx 0x197c                                        |     fcn_0000197c ();
    0x00003be2 b 0x39c0                                          |     goto label_9;
                                                                 | label_22:
    0x00003be4 ldr r3, [sp, 0x58]                                |     r3 = var_58h;
    0x00003be6 mov r2, r4                                        |     r2 = r4;
    0x00003be8 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00003bea ldr r0, [sp, 0x3c]                                |     r0 = var_3ch;
    0x00003bec str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00003bee ldr r3, [sp, 0x50]                                |     r3 = var_50h;
    0x00003bf0 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00003bf2 ldr r4, [r1]                                      |     r4 = *(r1);
    0x00003bf4 str r4, [sp]                                      |     *(sp) = r4;
    0x00003bf6 ldr r3, [r1, 0xc]                                 |     r3 = *((r1 + 0xc));
    0x00003bf8 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00003bfa ldr r3, [r1, 8]                                   |     r3 = *((r1 + 8));
    0x00003bfc str r3, [sp, 8]                                   |     var_8h = r3;
    0x00003bfe ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00003c00 ldr r1, [sp, 0x54]                                |     r1 = var_54h;
    0x00003c02 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00003c04 mov r3, r6                                        |     r3 = r6;
    0x00003c06 bl 0x34c4                                         |     r0 = fcn_000034c4 (r0, r1, r2, r3, r4, r5, r6);
    0x00003c0a cmp r0, 1                                         |     
                                                                 |     if (r0 == 1) {
    0x00003c0c beq.w 0x3d7e                                      |         goto label_43;
                                                                 |     }
                                                                 | label_17:
    0x00003c10 mov r0, r6                                        |     r0 = r6;
    0x00003c12 blx 0x197c                                        |     fcn_0000197c ();
    0x00003c16 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00003c18 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003c1a bne.w 0x3862                                      |         goto label_10;
                                                                 |     }
                                                                 | label_20:
    0x00003c1e ldr r2, [pc, 0x268]                               |     
    0x00003c20 ldr r3, [pc, 0x224]                               |     r3 = *(0x3e48);
    0x00003c22 add r2, pc                                        |     r2 = 0x7ab0;
    0x00003c24 ldr r3, [r2, r3]                                  |     r3 = *(0x7ab0);
    0x00003c26 ldr r2, [r3]                                      |     r2 = *(0x7ab0);
    0x00003c28 ldr r3, [sp, 0x1cc]                               |     r3 = var_1cch;
    0x00003c2a eors r2, r3                                       |     r2 ^= r3;
    0x00003c2c mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00003c30 bne.w 0x3dfc                                      |         goto label_44;
                                                                 |     }
    0x00003c34 add sp, 0x1d4                                     |     
    0x00003c36 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_37:
    0x00003c3a ldr r2, [sp, 0x48]                                |     r2 = var_48h;
                                                                 |     if (r2 != 0) {
    0x00003c3c cbz r2, 0x3c46                                    |         
    0x00003c3e ldr r1, [sp, 0x3c]                                |         r1 = var_3ch;
    0x00003c40 ldr r3, [r1, 8]                                   |         r3 = *((r1 + 8));
    0x00003c42 subs r3, r3, r2                                   |         r3 -= r2;
    0x00003c44 str r3, [r1, 8]                                   |         *((r1 + 8)) = r3;
                                                                 |     }
    0x00003c46 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00003c48 mov r3, r8                                        |     r3 = r8;
    0x00003c4a ldr r0, [sp, 0x3c]                                |     r0 = var_3ch;
    0x00003c4c ldr r2, [r1, 8]                                   |     r2 = *((r1 + 8));
    0x00003c4e str r2, [sp, 4]                                   |     var_4h = r2;
    0x00003c50 ldr r2, [r1, 4]                                   |     r2 = *((r1 + 4));
    0x00003c52 str r2, [sp]                                      |     *(sp) = r2;
    0x00003c54 ldr r2, [r1]                                      |     r2 = *(r1);
    0x00003c56 ldr r1, [sp, 0x5c]                                |     r1 = var_5ch;
    0x00003c58 bl 0x204c                                         |     fcn_0000204c (r0);
    0x00003c5c str r0, [sp, 0x48]                                |     var_48h = r0;
    0x00003c5e b 0x3aec                                          |     goto label_11;
                                                                 | label_21:
    0x00003c60 movs r0, 1                                        |     r0 = 1;
    0x00003c62 blx 0x1b54                                        |     r0 = fcn_00001b54 ();
    0x00003c66 mov r6, r0                                        |     r6 = r0;
    0x00003c68 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003c6a beq.w 0x3e00                                      |         goto label_45;
                                                                 |     }
    0x00003c6e ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00003c70 movs r3, 0                                        |     r3 = 0;
    0x00003c72 strb r3, [r0]                                     |     *(r0) = r3;
    0x00003c74 str r3, [r2]                                      |     *(r2) = r3;
    0x00003c76 b 0x3816                                          |     goto label_12;
                                                                 | label_31:
    0x00003c78 blx 0x1cbc                                        |     r0 = fcn_00001cbc ();
    0x00003c7c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003c7e bne 0x3d32                                        |         goto label_46;
                                                                 |     }
    0x00003c80 ldr r3, [sp, 0x6c]                                |     r3 = var_6ch;
    0x00003c82 adds r3, 0x5c                                     |     r3 += 0x5c;
    0x00003c84 b 0x399a                                          |     goto label_13;
                                                                 | label_42:
    0x00003c86 ldr r7, [pc, 0x204]                               |     
    0x00003c88 mov r0, sl                                        |     r0 = sl;
    0x00003c8a blx 0x1a00                                        |     r0 = fcn_00001a00 ();
    0x00003c8e add.w lr, sl, r0                                  |     lr = sl + r0;
    0x00003c92 add r7, pc                                        |     r7 = 0x7b24;
    0x00003c94 mov r6, lr                                        |     r6 = lr;
    0x00003c96 add.w ip, r7, 0x20                                |     
                                                                 |     do {
    0x00003c9a mov r4, r7                                        |         r4 = r7;
    0x00003c9c adds r6, 0x10                                     |         r6 += 0x10;
    0x00003c9e ldm r4!, {r0, r1, r2, r3}                         |         r0 = *(r4!);
                                                                 |         r1 = *((r4! + 4));
                                                                 |         r2 = *((r4! + 8));
                                                                 |         r3 = *((r4! + 12));
    0x00003ca0 adds r7, 0x10                                     |         r7 += 0x10;
    0x00003ca2 cmp r4, ip                                        |         
    0x00003ca4 str r0, [r6, -0x10]                               |         *((r6 - 0x10)) = r0;
    0x00003ca8 str r1, [r6, -0xc]                                |         *((r6 - 0xc)) = r1;
    0x00003cac str r2, [r6, -0x8]                                |         *((r6 - 0x8)) = r2;
    0x00003cb0 str r3, [r6, -0x4]                                |         *((r6 - 0x4)) = r3;
    0x00003cb4 bne 0x3c9a                                        |         
                                                                 |     } while (r4 != ip);
    0x00003cb6 ldm r7!, {r0, r1}                                 |     r0 = *(r7!);
                                                                 |     r1 = *((r7! + 4));
    0x00003cb8 add.w lr, lr, 0x29                                |     lr += 0x29;
    0x00003cbc sub.w r2, sl, lr                                  |     r2 = sl - lr;
    0x00003cc0 add.w r2, r2, 0x2000                              |     r2 += 0x2000;
    0x00003cc4 str r1, [r6, 4]                                   |     *((r6 + 4)) = r1;
    0x00003cc6 ldrh r1, [r7]                                     |     r1 = *(r7);
    0x00003cc8 str r0, [r6]                                      |     *(r6) = r0;
    0x00003cca mov r0, lr                                        |     r0 = lr;
    0x00003ccc strh r1, [r6, 8]                                  |     *((r6 + 8)) = r1;
    0x00003cce mov r1, r5                                        |     r1 = r5;
    0x00003cd0 blx 0x1af4                                        |     fcn_00001af4 ();
    0x00003cd4 ldr r1, [pc, 0x1b8]                               |     
    0x00003cd6 sub.w r3, sl, r0                                  |     r3 = sl - r0;
    0x00003cda add.w r3, r3, 0x2000                              |     r3 += 0x2000;
    0x00003cde movs r2, 2                                        |     r2 = 2;
    0x00003ce0 add r1, pc                                        |     r1 = 0x7b74;
    0x00003ce2 blx 0x19d0                                        |     fcn_000019d0 ();
    0x00003ce6 b 0x3bbe                                          |     goto label_14;
                                                                 | label_40:
    0x00003ce8 mov r0, sl                                        |     r0 = sl;
    0x00003cea ldr.w fp, [sp, 0x24]                              |     fp = var_24h;
    0x00003cee blx 0x1a00                                        |     fcn_00001a00 ();
    0x00003cf2 mov r1, r5                                        |     r1 = r5;
    0x00003cf4 add r0, sl                                        |     r0 += sl;
    0x00003cf6 mov.w r2, 0x2000                                  |     r2 = 0x2000;
    0x00003cfa ldr.w sb, [sp, 0x4c]                              |     sb = var_4ch;
    0x00003cfe blx 0x1af4                                        |     fcn_00001af4 ();
    0x00003d02 ldr r1, [pc, 0x190]                               |     
    0x00003d04 sub.w r3, sl, r0                                  |     r3 = sl - r0;
    0x00003d08 add.w r3, r3, 0x2000                              |     r3 += 0x2000;
    0x00003d0c movs r2, 2                                        |     r2 = 2;
    0x00003d0e add r1, pc                                        |     r1 = 0x7ba8;
    0x00003d10 blx 0x19d0                                        |     fcn_000019d0 ();
    0x00003d14 mov r1, r4                                        |     r1 = r4;
    0x00003d16 mov r0, sl                                        |     r0 = sl;
    0x00003d18 bl 0x2120                                         |     fcn_00002120 (r0, r1);
    0x00003d1c ldr r1, [pc, 0x178]                               |     
    0x00003d1e mov.w r2, 0x2000                                  |     r2 = 0x2000;
    0x00003d22 mov r0, sl                                        |     r0 = sl;
    0x00003d24 add r1, pc                                        |     r1 = 0x7bc0;
    0x00003d26 blx 0x1864                                        |     strcat_chk ()
    0x00003d2a mov r0, r4                                        |     r0 = r4;
    0x00003d2c blx 0x1bfc                                        |     fcn_00001bfc ();
    0x00003d30 b 0x3bb8                                          |     goto label_15;
                                                                 | label_46:
    0x00003d32 ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x00003d34 b 0x399a                                          |     goto label_13;
                                                                 | label_41:
    0x00003d36 ldr r1, [pc, 0x164]                               |     
    0x00003d38 mov.w r2, 0x2000                                  |     r2 = 0x2000;
    0x00003d3c mov r0, sl                                        |     r0 = sl;
    0x00003d3e ldr.w fp, [sp, 0x24]                              |     fp = var_24h;
    0x00003d42 ldr.w sb, [sp, 0x4c]                              |     sb = var_4ch;
    0x00003d46 add r1, pc                                        |     r1 = 0x7be8;
    0x00003d48 blx 0x1864                                        |     strcat_chk ()
    0x00003d4c mov r0, r4                                        |     r0 = r4;
    0x00003d4e blx 0x1bfc                                        |     fcn_00001bfc ();
                                                                 | label_19:
    0x00003d52 ldr r3, [sp, 0x58]                                |     r3 = var_58h;
    0x00003d54 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00003d56 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x00003d58 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00003d5a ldr r3, [sp, 0x50]                                |     r3 = var_50h;
    0x00003d5c ldr r0, [sp, 0x3c]                                |     r0 = var_3ch;
    0x00003d5e str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00003d60 ldr r3, [r1, 0xc]                                 |     r3 = *((r1 + 0xc));
    0x00003d62 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00003d64 ldr r3, [r1, 8]                                   |     r3 = *((r1 + 8));
    0x00003d66 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00003d68 ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00003d6a str r3, [sp, 4]                                   |     var_4h = r3;
    0x00003d6c ldr r3, [r1]                                      |     r3 = *(r1);
    0x00003d6e ldr r1, [sp, 0x54]                                |     r1 = var_54h;
    0x00003d70 str r3, [sp]                                      |     *(sp) = r3;
    0x00003d72 ldr r3, [pc, 0x12c]                               |     
    0x00003d74 add r3, pc                                        |     r3 = 0x7c1a;
    0x00003d76 bl 0x34c4                                         |     fcn_000034c4 (r0, r1, r2, r3, r4, r5, r6);
    0x00003d78 umull r4, r6, r5, r4                              |     r4:r6 = r5 * r4;
    0x00003d7c b 0x3bdc                                          |     goto label_16;
                                                                 | label_43:
    0x00003d7e ldrd r3, r7, [sp, 0x28]                           |     __asm ("ldrd r3, r7, [var_28h]");
    0x00003d82 add r5, sp, 0x88                                  |     r5 += s;
    0x00003d84 add.w r8, r3, 4                                   |     r8 = r3 + 4;
                                                                 | label_18:
    0x00003d88 mov r0, r4                                        |     r0 = r4;
    0x00003d8a blx 0x1a00                                        |     fcn_00001a00 ();
    0x00003d8e ldr r2, [r8, -0x4]                                |     r2 = *((r8 - 0x4));
    0x00003d92 adds r3, r0, 1                                    |     r3 = r0 + 1;
    0x00003d94 ldr r1, [r8], 0xc                                 |     r1 = *(r8);
                                                                 |     r8 += 0xc;
    0x00003d98 add r3, r4                                        |     r3 += r4;
    0x00003d9a cmp r1, r3                                        |     
    0x00003d9c it eq                                             |     
                                                                 |     if (r1 != r3) {
    0x00003d9e moveq r3, r2                                      |         r3 = r2;
                                                                 |     }
    0x00003da0 str r3, [r7], 4                                   |     *(r7) = r3;
                                                                 |     r7 += 4;
    0x00003da4 cmp r5, r7                                        |     
                                                                 |     if (r5 == r7) {
    0x00003da6 beq.w 0x3c10                                      |         goto label_17;
                                                                 |     }
    0x00003daa ldr r4, [r7]                                      |     r4 = *(r7);
    0x00003dac b 0x3d88                                          |     goto label_18;
                                                                 | label_32:
    0x00003dae mov r5, r4                                        |     r5 = r4;
    0x00003db0 movs r3, 1                                        |     r3 = 1;
    0x00003db2 b 0x38a0                                          |     goto label_5;
                                                                 | label_39:
    0x00003db4 ldr r4, [pc, 0xec]                                |     
    0x00003db6 mov r0, sl                                        |     r0 = sl;
    0x00003db8 blx 0x1a00                                        |     r0 = fcn_00001a00 ();
    0x00003dbc add.w r5, sl, r0                                  |     r5 = sl + r0;
    0x00003dc0 mov r7, r0                                        |     r7 = r0;
    0x00003dc2 add r4, pc                                        |     r4 = 0x7c6a;
    0x00003dc4 add.w ip, r5, 0x13                                |     
    0x00003dc8 ldm r4!, {r0, r1, r2, r3}                         |     r0 = *(r4!);
                                                                 |     r1 = *((r4! + 4));
                                                                 |     r2 = *((r4! + 8));
                                                                 |     r3 = *((r4! + 12));
    0x00003dca sub.w lr, sl, ip                                  |     lr = sl - ip;
    0x00003dce str.w r0, [sl, r7]                                |     __asm ("str.w r0, [sl, r7]");
    0x00003dd2 ldr r0, [r4]                                      |     r0 = *(0x7c6a);
    0x00003dd4 str r1, [r5, 4]                                   |     *((r5 + 4)) = r1;
    0x00003dd6 mov r1, r6                                        |     r1 = r6;
    0x00003dd8 str r2, [r5, 8]                                   |     *((r5 + 8)) = r2;
    0x00003dda add.w r2, lr, 0x2000                              |     r2 = lr + 0x2000;
    0x00003dde str r3, [r5, 0xc]                                 |     *((r5 + 0xc)) = r3;
    0x00003de0 str r0, [r5, 0x10]                                |     *((r5 + 0x10)) = r0;
    0x00003de2 mov r0, ip                                        |     r0 = ip;
    0x00003de4 blx 0x1af4                                        |     fcn_00001af4 ();
    0x00003de8 ldr r1, [pc, 0xbc]                                |     
    0x00003dea sub.w r3, sl, r0                                  |     r3 = sl - r0;
    0x00003dee add.w r3, r3, 0x2000                              |     r3 += 0x2000;
    0x00003df2 movs r2, 2                                        |     r2 = 2;
    0x00003df4 add r1, pc                                        |     r1 = 0x7ca0;
    0x00003df6 blx 0x19d0                                        |     fcn_000019d0 ();
    0x00003dfa b 0x3d52                                          |     goto label_19;
                                                                 | label_44:
    0x00003dfc blx 0x1b60                                        |     fcn_00001b60 ();
                                                                 | label_45:
    0x00003e00 ldr r2, [pc, 0xa8]                                |     
    0x00003e02 movs r0, 2                                        |     r0 = 2;
    0x00003e04 movs r1, 1                                        |     r1 = 1;
    0x00003e06 mov.w r4, 0x608                                   |     r4 = 0x608;
    0x00003e08 str r1, [r0, 0x4c]                                |     *((r0 + 0x4c)) = r1;
    0x00003e0a add r2, pc                                        |     r2 = 0x7cba;
    0x00003e0c blx 0x1a9c                                        |     fcn_00001a9c ();
    0x00003e10 ldr r3, [pc, 0x9c]                                |     
    0x00003e12 movs r0, 2                                        |     r0 = 2;
    0x00003e14 ldr r2, [pc, 0x9c]                                |     
    0x00003e16 add r3, pc                                        |     r3 = 0x7cca;
    0x00003e18 add r2, pc                                        |     r2 = 0x7cd0;
                                                                 |     do {
    0x00003e1a movs r1, 1                                        |         r1 = 1;
    0x00003e1c str r4, [sp]                                      |         *(sp) = r4;
    0x00003e1e blx 0x1a9c                                        |         fcn_00001a9c ();
    0x00003e22 movs r0, 1                                        |         r0 = 1;
    0x00003e24 blx 0x1cd4                                        |         fcn_00001cd4 ();
                                                                 | label_38:
    0x00003e28 ldr r2, [pc, 0x8c]                                |         
    0x00003e2a movs r0, 2                                        |         r0 = 2;
    0x00003e2c movs r1, 1                                        |         r1 = 1;
    0x00003e2e movw r4, 0x6af                                    |         r4 = 0x6af;
    0x00003e32 add r2, pc                                        |         r2 = 0x7cee;
    0x00003e34 blx 0x1a9c                                        |         fcn_00001a9c ();
    0x00003e38 ldr r3, [pc, 0x80]                                |         
    0x00003e3a movs r0, 2                                        |         r0 = 2;
    0x00003e3c ldr r2, [pc, 0x80]                                |         
    0x00003e3e add r3, pc                                        |         r3 = 0x7cfe;
    0x00003e40 add r2, pc                                        |         r2 = 0x7d04;
    0x00003e42 b 0x3e1a                                          |         
                                                                 |     } while (1);
                                                                 | }

[*] Function strcat used 5 times ssid