[*] Binary protection state of parhandclient

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


[*] Function strcat tear down of parhandclient

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/parhandclient @ 0x3a70 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00003a70 ()                                      | void fcn_00003a70 (char * arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_14h_3;
                                                                 |     char * var_18h;
                                                                 |     int16_t var_1ch_2;
                                                                 |     char * var_4h;
                                                                 |     int16_t var_8h_2;
                                                                 |     char * s2;
                                                                 |     char * var_14h;
                                                                 |     char * s1;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00003a70 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00003a74 mov r8, r2                                        |     r8 = r2;
    0x00003a76 ldr r2, [pc, 0x37c]                               |     
    0x00003a78 mov r7, r3                                        |     r7 = r3;
    0x00003a7a sub sp, 0x24                                      |     
    0x00003a7c mov r5, r1                                        |     r5 = r1;
    0x00003a7e ldr r3, [pc, 0x378]                               |     r3 = *(0x3dfa);
    0x00003a80 add r2, pc                                        |     r2 = 0x787a;
    0x00003a82 str r0, [sp, 4]                                   |     var_4h = r0;
    0x00003a84 ldr r4, [r0]                                      |     r4 = *(r0);
    0x00003a86 mov r0, r8                                        |     r0 = r8;
    0x00003a88 ldr r3, [r2, r3]                                  |     
    0x00003a8a ldr r3, [r3]                                      |     r3 = *(0x787a);
    0x00003a8c str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00003a8e mov.w r3, 0                                       |     r3 = 0;
    0x00003a92 blx 0x1310                                        |     fcn_00001310 ();
    0x00003a96 mov r1, r8                                        |     r1 = r8;
    0x00003a98 mov r6, r0                                        |     r6 = r0;
    0x00003a9a mov r2, r0                                        |     r2 = r0;
    0x00003a9c mov r0, r4                                        |     r0 = r4;
    0x00003a9e blx 0x151c                                        |     r0 = realloc (r0, r1);
                                                                 |     if (r0 == 0) {
    0x00003aa2 cbnz r0, 0x3ac0                                   |         
    0x00003aa4 movs r3, 0x20                                     |         r3 = 0x20;
    0x00003aa6 mov r0, r8                                        |         r0 = r8;
    0x00003aa8 strb r3, [r4, r6]                                 |         *((r4 + r6)) = r3;
    0x00003aaa blx 0x1310                                        |         fcn_00001310 ();
    0x00003aae movs r3, 0x7b                                     |         r3 = 0x7b;
    0x00003ab0 add r0, r4                                        |         r0 += r4;
    0x00003ab2 strb r3, [r0, -0x1]                               |         *((r0 - 0x1)) = r3;
    0x00003ab6 mov r0, r8                                        |         r0 = r8;
    0x00003ab8 blx 0x1310                                        |         fcn_00001310 ();
    0x00003abc subs r0, 1                                        |         r0--;
    0x00003abe add r4, r0                                        |         r4 += r0;
                                                                 |     }
    0x00003ac0 ldr r1, [pc, 0x338]                               |     
    0x00003ac2 mov r0, r4                                        |     r0 = r4;
    0x00003ac4 add r1, pc                                        |     r1 = 0x78c4;
    0x00003ac6 blx 0x1498                                        |     r0 = strcat (r0, r1)
    0x00003aca mov r6, r0                                        |     r6 = r0;
    0x00003acc str r0, [sp, 0x14]                                |     var_14h = r0;
    0x00003ace cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003ad0 beq.w 0x3db8                                      |         goto label_8;
                                                                 |     }
    0x00003ad4 ldr.w sl, [pc, 0x328]                             |     
    0x00003ad8 movs r0, 0                                        |     r0 = 0;
    0x00003ada add sl, pc                                        |     
    0x00003adc add.w sl, sl, 0x158                               |     sl = 0x7a36;
    0x00003ae0 mov r1, sl                                        |     r1 = sl;
    0x00003ae2 blx 0x1498                                        |     strcat (r0, r1)
    0x00003ae6 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x00003ae8 str r0, [sp, 0x18]                                |     s1 = r0;
    0x00003aea ldrb r3, [r2]                                     |     r3 = *(r2);
    0x00003aec cmp r3, 0x7b                                      |     
                                                                 |     if (r3 != 0x7b) {
    0x00003aee bne 0x3bac                                        |         goto label_9;
                                                                 |     }
    0x00003af0 ldrb.w sb, [r2, 1]                                |     sb = *((r2 + 1));
    0x00003af4 cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x00003af8 bne 0x3bac                                        |         goto label_9;
                                                                 |     }
    0x00003afa blx 0x1510                                        |     r0 = strncmp (r0, r1, r2);
    0x00003afe mov r6, r0                                        |     r6 = r0;
    0x00003b00 blx 0x11d4                                        |     drep_initializeHash ();
    0x00003b04 ldr r1, [pc, 0x2fc]                               |     
    0x00003b06 ldr r0, [sp, 0x18]                                |     r0 = s1;
    0x00003b08 add r1, pc                                        |     r1 = 0x7910;
    0x00003b0a blx 0x1498                                        |     r0 = strcat (r0, r1)
    0x00003b0e mov r4, r0                                        |     r4 = r0;
    0x00003b10 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003b12 beq.w 0x3de2                                      |         goto label_10;
                                                                 |     }
    0x00003b16 ldr.w fp, [pc, 0x2f0]                             |     
    0x00003b1a ldr r3, [pc, 0x2f0]                               |     
    0x00003b1c add fp, pc                                        |     fp = 0x792a;
    0x00003b1e add r3, pc                                        |     r3 = 0x7930;
    0x00003b20 str r3, [sp, 0xc]                                 |     s2 = r3;
                                                                 |     do {
                                                                 | label_0:
    0x00003b22 mov r1, sl                                        |         r1 = sl;
    0x00003b24 movs r0, 0                                        |         r0 = 0;
    0x00003b26 blx 0x1498                                        |         strcat (r0, r1)
    0x00003b2a str r0, [sp, 0x14]                                |         var_14h = r0;
    0x00003b2c cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003b2e beq.w 0x3c9e                                      |             goto label_11;
                                                                 |         }
    0x00003b32 cmp r7, 0                                         |         
                                                                 |         if (r7 == 0) {
    0x00003b34 beq 0x3c1a                                        |             goto label_12;
                                                                 |         }
                                                                 |         if (r5 != 0) {
                                                                 | label_1:
    0x00003b36 cbz r5, 0x3b4a                                    |             
    0x00003b38 mov r1, r4                                        |             r1 = r4;
    0x00003b3a mov r0, r5                                        |             r0 = r5;
    0x00003b3c blx 0x1394                                        |             r0 = fcn_00001394 ();
    0x00003b40 orrs.w r2, r0, r7                                 |             r2 = r0 | r7;
    0x00003b44 mov sb, r0                                        |             sb = r0;
                                                                 |             if (r2 == r0) {
    0x00003b46 beq.w 0x3d2e                                      |                 goto label_13;
                                                                 |             }
                                                                 |         }
                                                                 | label_3:
    0x00003b4a mov r1, sb                                        |         r1 = sb;
    0x00003b4c adds r3, r7, 1                                    |         r3 = r7 + 1;
    0x00003b4e mov r2, r8                                        |         r2 = r8;
    0x00003b50 add r0, sp, 0x14                                  |         r0 += var_14h;
    0x00003b52 bl 0x3a70                                         |         r0 = fcn_00003a70 (r0, r1, r2, r3);
    0x00003b56 mov r1, r0                                        |         r1 = r0;
    0x00003b58 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003b5a beq.w 0x3d00                                      |             goto label_14;
                                                                 |         }
    0x00003b5e mov r2, r4                                        |         r2 = r4;
    0x00003b60 mov r0, r6                                        |         r0 = r6;
    0x00003b62 blx 0x1234                                        |         drep_setHashValue ();
    0x00003b66 ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x00003b68 mov r1, fp                                        |         r1 = fp;
    0x00003b6a blx 0x1498                                        |         r0 = strcat (r0, r1)
    0x00003b6e mov r4, r0                                        |         r4 = r0;
    0x00003b70 str r0, [sp, 0x18]                                |         s1 = r0;
    0x00003b72 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003b74 beq.w 0x3dd2                                      |             goto label_15;
                                                                 |         }
    0x00003b78 movs r2, 4                                        |         r2 = 4;
    0x00003b7a mov r1, r8                                        |         r1 = r8;
    0x00003b7c blx 0x151c                                        |         r0 = realloc (r0, r1);
                                                                 |         if (r0 == 0) {
    0x00003b80 cbnz r0, 0x3b8e                                   |             
    0x00003b82 mov r0, r8                                        |             r0 = r8;
    0x00003b84 blx 0x1310                                        |             fcn_00001310 ();
    0x00003b88 adds r0, 1                                        |             r0++;
    0x00003b8a add r4, r0                                        |             r4 += r0;
    0x00003b8c str r4, [sp, 0x18]                                |             s1 = r4;
                                                                 |         }
    0x00003b8e ldrb r3, [r4]                                     |         r3 = *(r4);
    0x00003b90 cmp r3, 0x7d                                      |         
    0x00003b92 bne 0x3b22                                        |         
                                                                 |     } while (r3 != 0x7d);
    0x00003b94 ldrb r0, [r4, 1]                                  |     r0 = *((r4 + 1));
    0x00003b96 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003b98 bne 0x3b22                                        |         goto label_0;
                                                                 |     }
    0x00003b9a ldr r1, [pc, 0x274]                               |     
    0x00003b9c add r1, pc                                        |     
    0x00003b9e add.w r1, r1, 0x158                               |     r1 = 0x7b0a;
    0x00003ba2 blx 0x1498                                        |     strcat (r0, r1)
    0x00003ba6 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00003ba8 str r0, [r3]                                      |     *(r3) = r0;
    0x00003baa b 0x3d52                                          |     goto label_5;
                                                                 | label_9:
    0x00003bac cmp r3, 0x5b                                      |     
                                                                 |     if (r3 != 0x5b) {
    0x00003bae bne 0x3ca2                                        |         goto label_16;
                                                                 |     }
    0x00003bb0 ldrb r1, [r2, 1]                                  |     r1 = *((r2 + 1));
    0x00003bb2 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00003bb4 bne 0x3ca2                                        |         goto label_16;
                                                                 |     }
    0x00003bb6 blx 0x1510                                        |     strncmp (r0, r1, r2);
    0x00003bba ldr r2, [pc, 0x258]                               |     
    0x00003bbc movs r1, 3                                        |     r1 = 3;
    0x00003bbe mov r6, r0                                        |     r6 = r0;
    0x00003bc0 add r2, pc                                        |     r2 = 0x79da;
    0x00003bc2 blx 0x1450                                        |     cli_setComplexParam ();
    0x00003bc6 ldr r7, [sp, 0x18]                                |     r7 = s1;
    0x00003bc8 ldrb r3, [r7]                                     |     r3 = *(r7);
    0x00003bca cmp r3, 0x22                                      |     
                                                                 |     if (r3 != 0x22) {
    0x00003bcc bne.w 0x3d6e                                      |         goto label_17;
                                                                 |     }
    0x00003bd0 ldrb r4, [r7, 1]                                  |     r4 = *((r7 + 1));
    0x00003bd2 subs r4, 0x22                                     |     r4 -= 0x22;
                                                                 |     if (r4 != 0x22) {
    0x00003bd4 bne.w 0x3d6e                                      |         goto label_17;
                                                                 |     }
    0x00003bd8 movs r0, 1                                        |     r0 = 1;
    0x00003bda blx 0x1410                                        |     fcn_00001410 ();
    0x00003bde ldr r1, [pc, 0x238]                               |     
    0x00003be0 mov r8, r0                                        |     r8 = r0;
    0x00003be2 strb.w r4, [r8]                                   |     *(r8) = r4;
    0x00003be6 adds r0, r7, 2                                    |     r0 = r7 + 2;
    0x00003be8 add r1, pc                                        |     r1 = 0x7a06;
    0x00003bea blx 0x1498                                        |     strcat (r0, r1)
    0x00003bee ldr r1, [pc, 0x22c]                               |     
    0x00003bf0 mov r0, r4                                        |     r0 = r4;
    0x00003bf2 add r1, pc                                        |     
    0x00003bf4 add.w r1, r1, 0x158                               |     r1 = 0x7b6c;
    0x00003bf8 blx 0x1498                                        |     strcat (r0, r1)
    0x00003bfc mov r2, r4                                        |     r2 = r4;
    0x00003bfe mov r7, r0                                        |     r7 = r0;
    0x00003c00 mov r1, r8                                        |     r1 = r8;
    0x00003c02 mov r0, r6                                        |     r0 = r6;
    0x00003c04 blx 0x11bc                                        |     drep_assignStringToCustom ();
                                                                 |     if (r5 != 0) {
    0x00003c08 cbz r5, 0x3c14                                    |         
    0x00003c0a mov r2, r4                                        |         r2 = r4;
    0x00003c0c mov r1, r8                                        |         r1 = r8;
    0x00003c0e mov r0, r5                                        |         r0 = r5;
    0x00003c10 blx 0x11bc                                        |         drep_assignStringToCustom ();
                                                                 |     }
                                                                 | label_4:
    0x00003c14 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00003c16 str r7, [r3]                                      |     *(r3) = r7;
    0x00003c18 b 0x3d52                                          |     goto label_5;
                                                                 | label_12:
    0x00003c1a str r0, [sp, 8]                                   |     var_8h_2 = r0;
    0x00003c1c blx 0x1310                                        |     fcn_00001310 ();
    0x00003c20 ldr r1, [sp, 8]                                   |     r1 = var_8h_2;
    0x00003c22 mov r3, r7                                        |     r3 = r7;
    0x00003c24 ldrb r2, [r1]                                     |     r2 = *(r1);
                                                                 |     if (r0 == 0) {
    0x00003c26 cbz r0, 0x3c46                                    |         goto label_18;
                                                                 |     }
    0x00003c28 add.w ip, r1, -1                                  |     
                                                                 |     do {
    0x00003c2c ldrb r2, [ip, 1]!                                 |         r2 = *((ip += 1));
    0x00003c30 sub.w lr, r2, 9                                   |         lr = r2 - 9;
    0x00003c34 cmp r2, 0x20                                      |         
    0x00003c36 it ne                                             |         
                                                                 |         if (r2 != 0x20) {
    0x00003c38 cmpne lr, 1                                       |             __asm ("cmpne lr, 1");
                                                                 |         }
                                                                 |         if (r2 > 0x20) {
    0x00003c3c bhi 0x3c46                                        |             goto label_18;
                                                                 |         }
    0x00003c3e adds r3, 1                                        |         r3++;
    0x00003c40 cmp r0, r3                                        |         
    0x00003c42 bne 0x3c2c                                        |         
                                                                 |     } while (r0 != r3);
    0x00003c44 ldrb r2, [r1, r0]                                 |     r2 = *((r1 + r0));
                                                                 | label_18:
    0x00003c46 cmp r2, 0x7b                                      |     
                                                                 |     if (r2 != 0x7b) {
    0x00003c48 bne.w 0x3b36                                      |         goto label_1;
                                                                 |     }
    0x00003c4c adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00003c4e cmp r0, r2                                        |     
    0x00003c50 ldrb.w ip, [r1, r2]                               |     ip = *((r1 + r2));
    0x00003c54 ittt gt                                           |     
                                                                 |     if (r0 <= r2) {
    0x00003c56 addgt r2, r1, -1                                  |         r2 = r1 + -1;
                                                                 |     }
                                                                 |     if (r0 <= r2) {
    0x00003c5a addgt r3, r3, r1                                  |         r3 += r1;
                                                                 |     }
                                                                 |     if (r0 > r2) {
    0x00003c5c adds r0, r0, r2                                   |         r0 += r2;
                                                                 |     }
                                                                 |     if (r0 <= r0) {
    0x00003c5e ble 0x3c86                                        |         goto label_19;
                                                                 |     }
                                                                 |     do {
    0x00003c60 mov r2, r3                                        |         r2 = r3;
    0x00003c62 ldrb ip, [r3, 1]!                                 |         ip = *((r3 += 1));
    0x00003c66 sub.w lr, ip, 9                                   |         lr = ip - 9;
    0x00003c6a cmp.w ip, 0x20                                    |         
    0x00003c6e it ne                                             |         
                                                                 |         if (ip != 0x20) {
    0x00003c70 cmpne lr, 1                                       |             __asm ("cmpne lr, 1");
                                                                 |         }
                                                                 |         if (ip > 0x20) {
    0x00003c74 bhi 0x3c86                                        |             goto label_19;
                                                                 |         }
    0x00003c76 cmp r0, r3                                        |         
    0x00003c78 add.w r2, r2, 2                                   |         r2 += 2;
    0x00003c7c sub.w r2, r2, r1                                  |         r2 -= r1;
    0x00003c80 bne 0x3c60                                        |         
                                                                 |     } while (r0 != r3);
    0x00003c82 ldrb.w ip, [r1, r2]                               |     ip = *((r1 + r2));
                                                                 | label_19:
    0x00003c86 cmp.w ip, 0x7d                                    |     
                                                                 |     if (ip != 0x7d) {
    0x00003c8a bne.w 0x3b36                                      |         goto label_1;
                                                                 |     }
    0x00003c8e cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00003c90 beq 0x3d52                                        |         goto label_5;
                                                                 |     }
    0x00003c92 mov r1, r4                                        |     r1 = r4;
    0x00003c94 mov r0, r5                                        |     r0 = r5;
    0x00003c96 blx 0x1444                                        |     r0 = drep_initializeScalar ();
    0x00003c9a cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00003c9c bge 0x3d52                                        |         goto label_5;
                                                                 |     }
                                                                 | label_11:
    0x00003c9e movs r6, 0                                        |     r6 = 0;
    0x00003ca0 b 0x3d52                                          |     goto label_5;
                                                                 | label_16:
    0x00003ca2 cmp r3, 0x28                                      |     
                                                                 |     if (r3 != 0x28) {
    0x00003ca4 bne 0x3d44                                        |         goto label_20;
                                                                 |     }
    0x00003ca6 ldrb r1, [r2, 1]                                  |     r1 = *((r2 + 1));
    0x00003ca8 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00003caa bne 0x3d44                                        |         goto label_20;
                                                                 |     }
    0x00003cac blx 0x1510                                        |     r0 = strncmp (r0, r1, r2);
    0x00003cb0 mov r6, r0                                        |     r6 = r0;
    0x00003cb2 blx 0x1334                                        |     fcn_00001334 ();
                                                                 |     if (r5 == 0) {
    0x00003cb6 cbz r5, 0x3cd2                                    |         goto label_21;
                                                                 |     }
    0x00003cb8 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
                                                                 |     if (r3 == 0) {
    0x00003cba cbz r3, 0x3cd2                                    |         goto label_21;
                                                                 |     }
                                                                 |     do {
    0x00003cbc mov r0, r5                                        |         r0 = r5;
    0x00003cbe blx 0x14b0                                        |         r0 = cli_cleanupGroupContext ();
    0x00003cc2 mov r1, r0                                        |         r1 = r0;
                                                                 |         if (r0 == 0) {
    0x00003cc4 cbz r0, 0x3cd2                                    |             goto label_21;
                                                                 |         }
    0x00003cc6 mov r0, r5                                        |         r0 = r5;
    0x00003cc8 blx 0x1328                                        |         fcn_00001328 ();
    0x00003ccc ldr r3, [r5, 8]                                   |         r3 = *((r5 + 8));
    0x00003cce cmp r3, 0                                         |         
    0x00003cd0 bne 0x3cbc                                        |         
                                                                 |     } while (r3 != 0);
                                                                 | label_21:
    0x00003cd2 adds r7, 1                                        |     r7++;
    0x00003cd4 add.w sb, sp, 0x18                                |     sb += s1;
                                                                 |     do {
                                                                 | label_2:
    0x00003cd8 mov r3, r7                                        |         r3 = r7;
    0x00003cda mov r2, r8                                        |         r2 = r8;
    0x00003cdc movs r1, 0                                        |         r1 = 0;
    0x00003cde mov r0, sb                                        |         r0 = sb;
    0x00003ce0 bl 0x3a70                                         |         r0 = fcn_00003a70 (r0, r1, r2, r3);
    0x00003ce4 mov r4, r0                                        |         r4 = r0;
    0x00003ce6 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003ce8 beq 0x3db0                                        |             goto label_22;
                                                                 |         }
    0x00003cea mov r1, r0                                        |         r1 = r0;
    0x00003cec mov r0, r6                                        |         r0 = r6;
    0x00003cee blx 0x11e0                                        |         drep_addToList ();
    0x00003cf2 cmp r5, 0                                         |         
    0x00003cf4 beq 0x3cd8                                        |         
                                                                 |     } while (r5 == 0);
    0x00003cf6 mov r1, r4                                        |     r1 = r4;
    0x00003cf8 mov r0, r5                                        |     r0 = r5;
    0x00003cfa blx 0x11e0                                        |     drep_addToList ();
    0x00003cfe b 0x3cd8                                          |     goto label_2;
                                                                 | label_14:
    0x00003d00 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00003d02 ldr r1, [sp, 0xc]                                 |     r1 = s2;
    0x00003d04 blx 0x1498                                        |     r0 = strcat (r0, r1)
    0x00003d08 mov r4, r0                                        |     r4 = r0;
    0x00003d0a str r0, [sp, 0x18]                                |     s1 = r0;
    0x00003d0c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003d0e beq 0x3dd8                                        |         goto label_23;
                                                                 |     }
    0x00003d10 ldrb r3, [r0]                                     |     r3 = *(r0);
    0x00003d12 cmp r3, 0x7d                                      |     
                                                                 |     if (r3 != 0x7d) {
    0x00003d14 bne.w 0x3b22                                      |         goto label_0;
                                                                 |     }
    0x00003d16 add r7, sp, 0x14                                  |     r7 = sp + 0x14;
    0x00003d18 ldrb r0, [r0, 1]                                  |     r0 = *((r0 + 1));
    0x00003d1a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003d1c bne.w 0x3b22                                      |         goto label_0;
                                                                 |     }
    0x00003d20 ldr r1, [pc, 0xfc]                                |     
    0x00003d22 add r1, pc                                        |     
    0x00003d24 add.w r1, r1, 0x158                               |     r1 = 0x7c9e;
    0x00003d28 blx 0x1498                                        |     strcat (r0, r1)
    0x00003d2c b 0x3dcc                                          |     goto label_24;
                                                                 | label_13:
    0x00003d2e mov r1, r2                                        |     r1 = r2;
    0x00003d30 mov r0, r5                                        |     r0 = r5;
    0x00003d32 blx 0x12e0                                        |     fcn_000012e0 ();
    0x00003d36 mov r2, r4                                        |     r2 = r4;
    0x00003d38 mov sb, r0                                        |     sb = r0;
    0x00003d3a mov r1, r0                                        |     r1 = r0;
    0x00003d3c mov r0, r5                                        |     r0 = r5;
    0x00003d3e blx 0x1234                                        |     drep_setHashValue ();
    0x00003d42 b 0x3b4a                                          |     goto label_3;
                                                                 | label_20:
    0x00003d44 cmp r3, 0x29                                      |     
                                                                 |     if (r3 == 0x29) {
    0x00003d46 beq 0x3dc6                                        |         goto label_25;
                                                                 |     }
                                                                 | label_6:
    0x00003d48 ldr r0, [pc, 0xd8]                                |     
    0x00003d4a movs r6, 0                                        |     r6 = 0;
    0x00003d4c add r0, pc                                        |     r0 = 0x7b74;
    0x00003d4e blx 0x14d4                                        |     cli_getParamInGroup ();
                                                                 | label_5:
    0x00003d52 ldr r2, [pc, 0xd4]                                |     
    0x00003d54 ldr r3, [pc, 0xa0]                                |     r3 = *(0x3df8);
    0x00003d56 add r2, pc                                        |     r2 = 0x7b84;
    0x00003d58 ldr r3, [r2, r3]                                  |     r3 = *(0x7b84);
    0x00003d5a ldr r2, [r3]                                      |     r2 = *(0x7b84);
    0x00003d5c ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00003d5e eors r2, r3                                       |     r2 ^= r3;
    0x00003d60 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00003d64 bne 0x3dee                                        |         goto label_26;
                                                                 |     }
    0x00003d66 mov r0, r6                                        |     r0 = r6;
    0x00003d68 add sp, 0x24                                      |     
    0x00003d6a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_17:
    0x00003d6e ldr r1, [pc, 0xbc]                                |     
    0x00003d70 adds r0, r7, 1                                    |     r0 = r7 + 1;
    0x00003d72 add r1, pc                                        |     r1 = 0x7ba4;
    0x00003d74 blx 0x1498                                        |     strcat (r0, r1)
    0x00003d78 ldr r1, [pc, 0xb4]                                |     
    0x00003d7a mov r4, r0                                        |     r4 = r0;
    0x00003d7c movs r0, 0                                        |     r0 = 0;
    0x00003d7e add r1, pc                                        |     r1 = 0x7bb2;
    0x00003d80 blx 0x1498                                        |     strcat (r0, r1)
    0x00003d84 ldr r1, [pc, 0xac]                                |     
    0x00003d86 movs r0, 0                                        |     r0 = 0;
    0x00003d88 add r1, pc                                        |     
    0x00003d8a add.w r1, r1, 0x158                               |     r1 = 0x7d18;
    0x00003d8e blx 0x1498                                        |     strcat (r0, r1)
    0x00003d92 movs r2, 0                                        |     r2 = 0;
    0x00003d94 mov r7, r0                                        |     r7 = r0;
    0x00003d96 mov r1, r4                                        |     r1 = r4;
    0x00003d98 mov r0, r6                                        |     r0 = r6;
    0x00003d9a blx 0x11bc                                        |     drep_assignStringToCustom ();
    0x00003d9e cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00003da0 beq.w 0x3c14                                      |         goto label_4;
                                                                 |     }
    0x00003da4 mov r1, r4                                        |     r1 = r4;
    0x00003da6 mov r0, r5                                        |     r0 = r5;
    0x00003da8 movs r2, 0                                        |     r2 = 0;
    0x00003daa blx 0x11bc                                        |     drep_assignStringToCustom ();
    0x00003dae b 0x3c14                                          |     goto label_4;
                                                                 | label_22:
    0x00003db0 ldr r3, [sp, 0x18]                                |     r3 = s1;
    0x00003db2 ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x00003db4 str r3, [r2]                                      |     *(r2) = r3;
    0x00003db6 b 0x3d52                                          |     goto label_5;
                                                                 | label_8:
    0x00003db8 ldr r1, [pc, 0x7c]                                |     
    0x00003dba mov r2, r4                                        |     r2 = r4;
    0x00003dbc movs r0, 1                                        |     r0 = 1;
    0x00003dbe add r1, pc                                        |     r1 = 0x7bfa;
    0x00003dc0 blx 0x124c                                        |     printf_chk ();
    0x00003dc4 b 0x3d52                                          |     goto label_5;
                                                                 | label_25:
    0x00003dc6 ldrb r6, [r2, 1]                                  |     r6 = *((r2 + 1));
    0x00003dc8 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00003dca bne 0x3d48                                        |         goto label_6;
                                                                 |     }
                                                                 | label_24:
    0x00003dcc ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00003dce str r0, [r3]                                      |     *(r3) = r0;
    0x00003dd0 b 0x3d52                                          |     goto label_5;
                                                                 | label_15:
    0x00003dd2 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00003dd4 str r0, [r3]                                      |     *(r3) = r0;
    0x00003dd6 b 0x3d52                                          |     goto label_5;
                                                                 | label_23:
    0x00003dd8 ldr r0, [pc, 0x60]                                |     
    0x00003dda add r0, pc                                        |     r0 = 0x7c1a;
    0x00003ddc blx 0x14d4                                        |     cli_getParamInGroup ();
    0x00003de0 b 0x3d52                                          |     goto label_5;
                                                                 | label_10:
    0x00003de2 ldr r0, [pc, 0x5c]                                |     
    0x00003de4 mov r6, r4                                        |     r6 = r4;
    0x00003de6 add r0, pc                                        |     r0 = 0x7c2c;
    0x00003de8 blx 0x14d4                                        |     cli_getParamInGroup ();
    0x00003dec b 0x3d52                                          |     goto label_5;
                                                                 | label_26:
    0x00003dee blx 0x141c                                        |     fcn_0000141c ();
    0x00003df2 nop                                               |     
    0x00003df4 movs r3, 0xf4                                     |     r3 = 0xf4;
    0x00003df6 movs r1, r0                                       |     r1 = r0;
    0x00003df8 lsls r4, r5, 5                                    |     r4 = r5 << 5;
    0x00003dfa movs r0, r0                                       |     
    0x00003dfc lsrs r0, r7, 0x1e                                 |     r0 = r7 >> 0x1e;
    0x00003dfe movs r0, r0                                       |     
    0x00003e00 subs r6, r5, r2                                   |     r6 = r5 - r2;
    0x00003e02 movs r0, r0                                       |     
    0x00003e04 lsrs r0, r4, 0x1e                                 |     r0 = r4 >> 0x1e;
    0x00003e06 movs r0, r0                                       |     
    0x00003e08 lsrs r0, r4, 0x1d                                 |     r0 = r4 >> 0x1d;
    0x00003e0a movs r0, r0                                       |     
    0x00003e0c lsrs r6, r3, 0x1d                                 |     r6 = r3 >> 0x1d;
    0x00003e0e movs r0, r0                                       |     
    0x00003e10 adds r4, r5, r7                                   |     r4 = r5 + r7;
    0x00003e12 movs r0, r0                                       |     
    0x00003e14 lsrs r0, r6, 0x1b                                 |     r0 = r6 >> 0x1b;
    0x00003e16 movs r0, r0                                       |     
    0x00003e18 lsrs r4, r0, 0x1b                                 |     r4 = r0 >> 0x1b;
    0x00003e1a movs r0, r0                                       |     
    0x00003e1c adds r6, r2, r6                                   |     r6 = r2 + r6;
    0x00003e1e movs r0, r0                                       |     
    0x00003e20 adds r6, r4, r1                                   |     r6 = r4 + r1;
    0x00003e22 movs r0, r0                                       |     
    0x00003e24 lsrs r4, r1, 0x15                                 |     r4 = r1 >> 0x15;
    0x00003e26 movs r0, r0                                       |     
    0x00003e28 movs r1, 0x1e                                     |     r1 = 0x1e;
    0x00003e2a movs r1, r0                                       |     r1 = r0;
    0x00003e2c lsrs r6, r0, 0x11                                 |     r6 = r0 >> 0x11;
    0x00003e2e movs r0, r0                                       |     
    0x00003e30 lsrs r6, r7, 0x13                                 |     r6 = r7 >> 0x13;
    0x00003e32 movs r0, r0                                       |     
    0x00003e34 adds r0, r0, r0                                   |     r0 += r0;
    0x00003e36 movs r0, r0                                       |     
    0x00003e38 lsrs r6, r0, 0x13                                 |     r6 = r0 >> 0x13;
    0x00003e3a movs r0, r0                                       |     
    0x00003e3c lsrs r2, r6, 0x13                                 |     r2 = r6 >> 0x13;
    0x00003e3e movs r0, r0                                       |     
    0x00003e40 lsrs r2, r2, 0x13                                 |     r2 >>= 0x13;
    0x00003e42 movs r0, r0                                       |     
    0x00003e44 push {r4, r5, r6, r7, lr}                         |     
    0x00003e46 sub sp, 0x24                                      |     
    0x00003e48 ldr r6, [pc, 0xe4]                                |     
    0x00003e4a mov r5, r1                                        |     r5 = r1;
    0x00003e4c mov r3, r0                                        |     r3 = r0;
    0x00003e4e movs r1, 1                                        |     r1 = 1;
    0x00003e50 ldr r4, [pc, 0xe0]                                |     r4 = *(0x3f34);
    0x00003e52 add r0, sp, 0x18                                  |     r0 += var_18h;
    0x00003e54 str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x00003e56 add r6, pc                                        |     r6 = 0x7d8a;
    0x00003e58 ldr r2, [pc, 0xdc]                                |     
    0x00003e5a str r5, [sp]                                      |     *(sp) = r5;
    0x00003e5c ldr r4, [r6, r4]                                  |     
    0x00003e5e add r2, pc                                        |     r2 = 0x7d9a;
    0x00003e60 ldr r4, [r4]                                      |     r4 = *(0x7d8a);
    0x00003e62 str r4, [sp, 0x1c]                                |     var_1ch_2 = r4;
    0x00003e64 mov.w r4, 0                                       |     r4 = 0;
    0x00003e68 blx 0x12f8                                        |     r0 = fcn_000012f8 ();
    0x00003e6c cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00003e6e blt 0x3ed6                                        |         goto label_27;
                                                                 |     }
    0x00003e70 ldr r6, [pc, 0xc8]                                |     
    0x00003e72 add r7, sp, 0x14                                  |     r7 += var_14h_3;
    0x00003e74 mov r2, r7                                        |     r2 = r7;
    0x00003e76 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00003e78 add r6, pc                                        |     r6 = 0x7db8;
    0x00003e7a mov r1, r6                                        |     r1 = r6;
    0x00003e7c blx 0x148c                                        |     strtok (r0, r1);
    0x00003e80 ldr r2, [sp, 0x14]                                |     r2 = var_14h_3;
    0x00003e82 mov r4, r0                                        |     r4 = r0;
    0x00003e84 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00003e86 bne 0x3f04                                        |         goto label_28;
                                                                 |     }
    0x00003e88 mov r3, r2                                        |     r3 = r2;
    0x00003e8a mov r1, r0                                        |     r1 = r0;
    0x00003e8c mov r2, r5                                        |     r2 = r5;
    0x00003e8e add r0, sp, 0xc                                   |     r0 += var_ch;
    0x00003e90 bl 0x3a70                                         |     r0 = fcn_00003a70 (r0, r1, r2, r3);
    0x00003e94 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x00003e96 cbz r0, 0x3ee6                                    |         goto label_29;
                                                                 |     }
    0x00003e98 mov r2, r6                                        |     r2 = r6;
    0x00003e9a ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00003e9c mov r3, r7                                        |     r3 = r7;
    0x00003e9e mov r1, r4                                        |     r1 = r4;
    0x00003ea0 blx 0x145c                                        |     ax_log_null ();
    0x00003ea4 ldr r6, [sp, 0x14]                                |     r6 = var_14h_3;
    0x00003ea6 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00003ea8 bne 0x3f1a                                        |         goto label_30;
                                                                 |     }
    0x00003eaa mov r0, r4                                        |     r0 = r4;
    0x00003eac blx 0x12c8                                        |     fcn_000012c8 ();
    0x00003eb0 mov r0, r5                                        |     r0 = r5;
    0x00003eb2 blx 0x12c8                                        |     fcn_000012c8 ();
    0x00003eb6 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00003eb8 blx 0x12c8                                        |     fcn_000012c8 ();
                                                                 |     do {
                                                                 | label_7:
    0x00003ebc ldr r2, [pc, 0x80]                                |         
    0x00003ebe ldr r3, [pc, 0x74]                                |         r3 = *(0x3f36);
    0x00003ec0 add r2, pc                                        |         r2 = 0x7e04;
    0x00003ec2 ldr r3, [r2, r3]                                  |         r3 = *(0x7e04);
    0x00003ec4 ldr r2, [r3]                                      |         r2 = *(0x7e04);
    0x00003ec6 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch_2;
    0x00003ec8 eors r2, r3                                       |         r2 ^= r3;
    0x00003eca mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00003ece bne 0x3f16                                        |             goto label_31;
                                                                 |         }
    0x00003ed0 mov r0, r6                                        |         r0 = r6;
    0x00003ed2 add sp, 0x24                                      |         
    0x00003ed4 pop {r4, r5, r6, r7, pc}                          |         
                                                                 | label_27:
    0x00003ed6 ldr r1, [pc, 0x6c]                                |         
    0x00003ed8 movs r0, 3                                        |         r0 = 3;
    0x00003eda mov.w r6, -1                                      |         r6 = -1;
    0x00003ede add r1, pc                                        |         r1 = 0x7e28;
    0x00003ee0 bl 0x2e64                                         |         fcn_00002e64 ();
    0x00003ee4 b 0x3ebc                                          |         
                                                                 |     } while (1);
                                                                 | label_29:
    0x00003ee6 ldr r1, [pc, 0x60]                                |     
    0x00003ee8 movs r0, 3                                        |     r0 = 3;
    0x00003eea ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x00003eec mov.w r6, -1                                      |     r6 = -1;
    0x00003ef0 add r1, pc                                        |     r1 = 0x7e3e;
    0x00003ef2 bl 0x2e64                                         |     fcn_00002e64 ();
    0x00003ef6 mov r0, r4                                        |     r0 = r4;
    0x00003ef8 blx 0x12c8                                        |     fcn_000012c8 ();
    0x00003efc ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00003efe blx 0x12c8                                        |     fcn_000012c8 ();
    0x00003f02 b 0x3ebc                                          |     goto label_7;
                                                                 | label_28:
    0x00003f04 ldr r1, [pc, 0x44]                                |     
    0x00003f06 movs r0, 3                                        |     r0 = 3;
    0x00003f08 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00003f0a add r1, pc                                        |     r1 = 0x7e5a;
    0x00003f0c bl 0x2e64                                         |     fcn_00002e64 ();
    0x00003f10 movs r0, 1                                        |     r0 = 1;
    0x00003f12 blx 0x1564                                        |     errno_location ();
                                                                 | label_31:
    0x00003f16 blx 0x141c                                        |     fcn_0000141c ();
                                                                 | label_30:
    0x00003f1a ldr r1, [pc, 0x34]                                |     
    0x00003f1c movs r0, 3                                        |     r0 = 3;
    0x00003f1e ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00003f20 mov r2, r6                                        |     r2 = r6;
    0x00003f22 add r1, pc                                        |     r1 = 0x7e78;
    0x00003f24 bl 0x2e64                                         |     fcn_00002e64 ();
    0x00003f28 movs r0, 1                                        |     r0 = 1;
    0x00003f2a blx 0x1564                                        |     errno_location ();
    0x00003f2e nop                                               |     
    0x00003f30 movs r0, 0x1e                                     |     r0 = 0x1e;
    0x00003f32 movs r1, r0                                       |     r1 = r0;
    0x00003f34 lsls r4, r5, 5                                    |     r4 = r5 << 5;
    0x00003f36 movs r0, r0                                       |     
    0x00003f38 lsrs r2, r7, 0x11                                 |     r2 = r7 >> 0x11;
    0x00003f3a movs r0, r0                                       |     
    0x00003f3c movs r2, 0x84                                     |     r2 = 0x84;
    0x00003f3e movs r1, r0                                       |     r1 = r0;
    0x00003f40 subs r4, r6, 6                                    |     r4 = r6 - 6;
    0x00003f42 movs r1, r0                                       |     r1 = r0;
    0x00003f44 lsrs r6, r1, 9                                    |     r6 = r1 >> 9;
    0x00003f46 movs r0, r0                                       |     
    0x00003f48 lsrs r0, r4, 0x10                                 |     r0 = r4 >> 0x10;
    0x00003f4a movs r0, r0                                       |     
    0x00003f4c lsrs r2, r3, 0xf                                  |     r2 = r3 >> 0xf;
    0x00003f4e movs r0, r0                                       |     
    0x00003f50 lsrs r6, r0, 0x10                                 |     r6 = r0 >> 0x10;
    0x00003f52 movs r0, r0                                       |     
                                                                 | }

[*] Function strcat used 14 times parhandclient