[*] 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-80367616.squashfs_v4_le_extract/usr/bin/parhandclient @ 0x3b74 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00003b74 ()                                      | void fcn_00003b74 (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch_2;
                                                                 |     char * s2;
                                                                 |     int16_t var_8h;
                                                                 |     char * var_ch_2;
                                                                 |     char * s1;
                                                                 |     int16_t var_18h_2;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00003b74 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00003b78 mov r8, r2                                        |     r8 = r2;
    0x00003b7a ldr r2, [pc, 0x394]                               |     
    0x00003b7c mov r6, r3                                        |     r6 = r3;
    0x00003b7e sub sp, 0x24                                      |     
    0x00003b80 mov fp, r0                                        |     
    0x00003b82 ldr r3, [pc, 0x390]                               |     r3 = *(0x3f16);
    0x00003b84 mov r5, r1                                        |     r5 = r1;
    0x00003b86 add r2, pc                                        |     r2 = 0x7a9c;
    0x00003b88 ldr r7, [r0]                                      |     r7 = *(r0);
    0x00003b8a mov r0, r8                                        |     r0 = r8;
    0x00003b8c ldr r3, [r2, r3]                                  |     
    0x00003b8e ldr r3, [r3]                                      |     r3 = *(0x7a9c);
    0x00003b90 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00003b92 mov.w r3, 0                                       |     r3 = 0;
    0x00003b96 blx 0x1398                                        |     fcn_00001398 ();
    0x00003b9a mov r1, r8                                        |     r1 = r8;
    0x00003b9c mov r4, r0                                        |     r4 = r0;
    0x00003b9e mov r2, r0                                        |     r2 = r0;
    0x00003ba0 mov r0, r7                                        |     r0 = r7;
    0x00003ba2 blx 0x15a4                                        |     r0 = realloc (r0, r1);
                                                                 |     if (r0 == 0) {
    0x00003ba6 cbnz r0, 0x3bc4                                   |         
    0x00003ba8 movs r3, 0x20                                     |         r3 = 0x20;
    0x00003baa mov r0, r8                                        |         r0 = r8;
    0x00003bac strb r3, [r7, r4]                                 |         *((r7 + r4)) = r3;
    0x00003bae blx 0x1398                                        |         fcn_00001398 ();
    0x00003bb2 movs r3, 0x7b                                     |         r3 = 0x7b;
    0x00003bb4 add r0, r7                                        |         r0 += r7;
    0x00003bb6 strb r3, [r0, -0x1]                               |         *((r0 - 0x1)) = r3;
    0x00003bba mov r0, r8                                        |         r0 = r8;
    0x00003bbc blx 0x1398                                        |         fcn_00001398 ();
    0x00003bc0 subs r0, 1                                        |         r0--;
    0x00003bc2 add r7, r0                                        |         r7 += r0;
                                                                 |     }
    0x00003bc4 ldr r1, [pc, 0x350]                               |     
    0x00003bc6 mov r0, r7                                        |     r0 = r7;
    0x00003bc8 add r1, pc                                        |     r1 = 0x7ae4;
    0x00003bca blx 0x1520                                        |     r0 = strcat (r0, r1)
    0x00003bce mov r4, r0                                        |     r4 = r0;
    0x00003bd0 str r0, [sp, 0x14]                                |     s1 = r0;
    0x00003bd2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003bd4 beq.w 0x3ec8                                      |         goto label_10;
                                                                 |     }
    0x00003bd6 strh r0, [r7, 0xa]                                |     *((r7 + 0xa)) = r0;
    0x00003bd8 ldr.w sl, [pc, 0x340]                             |     
    0x00003bdc movs r0, 0                                        |     r0 = 0;
    0x00003bde add sl, pc                                        |     
    0x00003be0 add.w sl, sl, 0x158                               |     sl = 0x7c56;
    0x00003be4 mov r1, sl                                        |     r1 = sl;
    0x00003be6 blx 0x1520                                        |     strcat (r0, r1)
    0x00003bea ldrb r2, [r4]                                     |     r2 = *(r4);
    0x00003bec mov r7, r0                                        |     r7 = r0;
    0x00003bee str r0, [sp, 0x18]                                |     var_18h_2 = r0;
    0x00003bf0 cmp r2, 0x7b                                      |     
                                                                 |     if (r2 != 0x7b) {
    0x00003bf2 bne 0x3cb2                                        |         goto label_11;
                                                                 |     }
    0x00003bf4 ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
    0x00003bf6 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003bf8 bne 0x3cb2                                        |         goto label_11;
                                                                 |     }
    0x00003bfa str r3, [sp, 4]                                   |     s2 = r3;
    0x00003bfc blx 0x1598                                        |     r0 = strncmp (r0, r1, r2);
    0x00003c00 mov sb, r0                                        |     sb = r0;
    0x00003c02 blx 0x125c                                        |     drep_initializeHash ();
    0x00003c06 ldr r1, [pc, 0x318]                               |     
    0x00003c08 mov r0, r7                                        |     r0 = r7;
    0x00003c0a add r1, pc                                        |     r1 = 0x7b30;
    0x00003c0c blx 0x1520                                        |     r0 = strcat (r0, r1)
    0x00003c10 mov r4, r0                                        |     r4 = r0;
    0x00003c12 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003c14 beq.w 0x3f00                                      |         goto label_12;
                                                                 |     }
    0x00003c16 strh r4, [r6, 0xa]                                |     *((r6 + 0xa)) = r4;
    0x00003c18 ldr r3, [sp, 4]                                   |     r3 = s2;
    0x00003c1a mov r7, r3                                        |     r7 = r3;
    0x00003c1c ldr r3, [pc, 0x304]                               |     
    0x00003c1e add r3, pc                                        |     r3 = 0x7b46;
    0x00003c20 str r3, [sp, 0xc]                                 |     var_ch_2 = r3;
    0x00003c22 ldr r3, [pc, 0x304]                               |     
    0x00003c24 add r3, pc                                        |     r3 = 0x7b52;
    0x00003c26 str r3, [sp, 4]                                   |     s2 = r3;
                                                                 |     do {
                                                                 | label_0:
    0x00003c28 mov r1, sl                                        |         r1 = sl;
    0x00003c2a movs r0, 0                                        |         r0 = 0;
    0x00003c2c blx 0x1520                                        |         strcat (r0, r1)
    0x00003c30 str r0, [sp, 0x14]                                |         s1 = r0;
    0x00003c32 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003c34 beq.w 0x3ed4                                      |             goto label_9;
                                                                 |         }
    0x00003c38 cmp r6, 0                                         |         
                                                                 |         if (r6 == 0) {
    0x00003c3a beq 0x3d3a                                        |             goto label_13;
                                                                 |         }
                                                                 |         if (r5 != 0) {
                                                                 | label_1:
    0x00003c3c cbz r5, 0x3c50                                    |             
    0x00003c3e mov r1, r4                                        |             r1 = r4;
    0x00003c40 mov r0, r5                                        |             r0 = r5;
    0x00003c42 blx 0x141c                                        |             r0 = fcn_0000141c ();
    0x00003c46 orrs.w r2, r0, r6                                 |             r2 = r0 | r6;
    0x00003c4a mov r7, r0                                        |             r7 = r0;
                                                                 |             if (r2 == r0) {
    0x00003c4c beq.w 0x3e2a                                      |                 goto label_14;
                                                                 |             }
                                                                 |         }
                                                                 | label_4:
    0x00003c50 mov r1, r7                                        |         r1 = r7;
    0x00003c52 adds r3, r6, 1                                    |         r3 = r6 + 1;
    0x00003c54 mov r2, r8                                        |         r2 = r8;
    0x00003c56 add r0, sp, 0x14                                  |         r0 += s1;
    0x00003c58 bl 0x3b74                                         |         r0 = fcn_00003b74 (r0, r1, r2, r3, r4);
    0x00003c5c mov r1, r0                                        |         r1 = r0;
    0x00003c5e cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003c60 beq.w 0x3df8                                      |             goto label_15;
                                                                 |         }
    0x00003c64 mov r2, r4                                        |         r2 = r4;
    0x00003c66 mov r0, sb                                        |         r0 = sb;
    0x00003c68 blx 0x12bc                                        |         drep_setHashValue ();
    0x00003c6c ldr r1, [sp, 4]                                   |         r1 = s2;
    0x00003c6e ldr r0, [sp, 0x14]                                |         r0 = s1;
    0x00003c70 blx 0x1520                                        |         r0 = strcat (r0, r1)
    0x00003c74 mov r4, r0                                        |         r4 = r0;
    0x00003c76 str r0, [sp, 0x18]                                |         var_18h_2 = r0;
    0x00003c78 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003c7a beq.w 0x3eda                                      |             goto label_16;
                                                                 |         }
    0x00003c7e movs r2, 4                                        |         r2 = 4;
    0x00003c80 mov r1, r8                                        |         r1 = r8;
    0x00003c82 blx 0x15a4                                        |         r0 = realloc (r0, r1);
                                                                 |         if (r0 == 0) {
    0x00003c86 cbnz r0, 0x3c94                                   |             
    0x00003c88 mov r0, r8                                        |             r0 = r8;
    0x00003c8a blx 0x1398                                        |             fcn_00001398 ();
    0x00003c8e adds r0, 1                                        |             r0++;
    0x00003c90 add r4, r0                                        |             r4 += r0;
    0x00003c92 str r4, [sp, 0x18]                                |             var_18h_2 = r4;
                                                                 |         }
    0x00003c94 ldrb r3, [r4]                                     |         r3 = *(r4);
    0x00003c96 cmp r3, 0x7d                                      |         
    0x00003c98 bne 0x3c28                                        |         
                                                                 |     } while (r3 != 0x7d);
    0x00003c9a ldrb r0, [r4, 1]                                  |     r0 = *((r4 + 1));
    0x00003c9c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003c9e bne 0x3c28                                        |         goto label_0;
                                                                 |     }
    0x00003ca0 ldr r1, [pc, 0x288]                               |     
    0x00003ca2 add r1, pc                                        |     
    0x00003ca4 add.w r1, r1, 0x158                               |     r1 = 0x7d2a;
    0x00003ca8 blx 0x1520                                        |     strcat (r0, r1)
    0x00003cac str.w r0, [fp]                                    |     __asm ("str.w r0, [fp]");
    0x00003cb0 b 0x3d1c                                          |     goto label_2;
                                                                 | label_11:
    0x00003cb2 cmp r2, 0x5b                                      |     
                                                                 |     if (r2 != 0x5b) {
    0x00003cb4 bne 0x3d98                                        |         goto label_17;
                                                                 |     }
    0x00003cb6 ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
    0x00003cb8 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003cba bne 0x3d98                                        |         goto label_17;
                                                                 |     }
    0x00003cbc blx 0x1598                                        |     strncmp (r0, r1, r2);
    0x00003cc0 ldr r2, [pc, 0x26c]                               |     
    0x00003cc2 movs r1, 3                                        |     r1 = 3;
    0x00003cc4 mov sb, r0                                        |     sb = r0;
    0x00003cc6 add r2, pc                                        |     r2 = 0x7bfa;
    0x00003cc8 blx 0x14d8                                        |     cli_setComplexParam ();
    0x00003cca invalid                                           |     
    0x00003cce cmp r3, 0x22                                      |     
                                                                 |     if (r3 != 0x22) {
    0x00003cd0 bne.w 0x3e70                                      |         goto label_18;
                                                                 |     }
    0x00003cd4 ldrb r4, [r7, 1]                                  |     r4 = *((r7 + 1));
    0x00003cd6 subs r4, 0x22                                     |     r4 -= 0x22;
                                                                 |     if (r4 != 0x22) {
    0x00003cd8 bne.w 0x3e70                                      |         goto label_18;
                                                                 |     }
    0x00003cdc movs r0, 1                                        |     r0 = 1;
    0x00003cde blx 0x1498                                        |     fcn_00001498 ();
    0x00003ce2 ldr r1, [pc, 0x250]                               |     
    0x00003ce4 mov r8, r0                                        |     r8 = r0;
    0x00003ce6 strb.w r4, [r8]                                   |     *(r8) = r4;
    0x00003cea adds r0, r7, 2                                    |     r0 = r7 + 2;
    0x00003cec add r1, pc                                        |     r1 = 0x7c26;
    0x00003cee blx 0x1520                                        |     strcat (r0, r1)
    0x00003cf2 ldr r1, [pc, 0x244]                               |     
    0x00003cf4 mov r0, r4                                        |     r0 = r4;
    0x00003cf6 add r1, pc                                        |     
    0x00003cf8 add.w r1, r1, 0x158                               |     r1 = 0x7d8c;
    0x00003cfc blx 0x1520                                        |     strcat (r0, r1)
    0x00003d00 mov r2, r4                                        |     r2 = r4;
    0x00003d02 mov r6, r0                                        |     r6 = r0;
    0x00003d04 mov r1, r8                                        |     r1 = r8;
    0x00003d06 mov r0, sb                                        |     r0 = sb;
    0x00003d08 blx 0x1244                                        |     drep_assignStringToCustom ();
                                                                 |     if (r5 != 0) {
    0x00003d0c cbz r5, 0x3d18                                    |         
    0x00003d0e mov r2, r4                                        |         r2 = r4;
    0x00003d10 mov r1, r8                                        |         r1 = r8;
    0x00003d12 mov r0, r5                                        |         r0 = r5;
    0x00003d14 blx 0x1244                                        |         drep_assignStringToCustom ();
    0x00003d16 invalid                                           |         
                                                                 |     }
                                                                 | label_8:
    0x00003d18 str.w r6, [fp]                                    |     __asm ("str.w r6, [fp]");
                                                                 | label_2:
    0x00003d1c ldr r2, [pc, 0x21c]                               |     
    0x00003d1e ldr r3, [pc, 0x1f4]                               |     r3 = *(0x3f16);
    0x00003d20 add r2, pc                                        |     r2 = 0x7c60;
    0x00003d22 ldr r3, [r2, r3]                                  |     r3 = *(0x7c60);
    0x00003d24 ldr r2, [r3]                                      |     r2 = *(0x7c60);
    0x00003d26 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00003d28 eors r2, r3                                       |     r2 ^= r3;
    0x00003d2a mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00003d2e bne.w 0x3f0a                                      |         goto label_19;
                                                                 |     }
    0x00003d32 mov r0, sb                                        |     r0 = sb;
    0x00003d34 add sp, 0x24                                      |     
    0x00003d36 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_13:
    0x00003d3a str r0, [sp, 8]                                   |     var_8h = r0;
    0x00003d3c blx 0x1398                                        |     fcn_00001398 ();
    0x00003d40 ldr r1, [sp, 8]                                   |     r1 = var_8h;
    0x00003d42 ldrb r3, [r1]                                     |     r3 = *(r1);
    0x00003d44 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003d46 beq.w 0x3eea                                      |         goto label_20;
                                                                 |     }
    0x00003d4a add.w lr, r1, -1                                  |     lr = r1 + -1;
    0x00003d4e mov r2, r6                                        |     r2 = r6;
    0x00003d50 mov ip, lr                                        |     
    0x00003d52 str.w lr, [sp, 8]                                 |     __asm ("str.w lr, [var_8h]");
    0x00003d56 b 0x3d5a                                          |     
                                                                 |     while (r0 != r3) {
    0x00003d58 mov r2, r3                                        |         r2 = r3;
    0x00003d5a ldrb r3, [ip, 1]!                                 |         r3 = *((ip += 1));
    0x00003d5e sub.w lr, r3, 9                                   |         lr = r3 - 9;
    0x00003d62 cmp r3, 0x20                                      |         
    0x00003d64 it ne                                             |         
                                                                 |         if (r3 != 0x20) {
    0x00003d66 cmpne lr, 1                                       |             __asm ("cmpne lr, 1");
                                                                 |         }
                                                                 |         if (r3 > 0x20) {
    0x00003d6a bhi 0x3e40                                        |             goto label_21;
                                                                 |         }
    0x00003d6c adds r3, r2, 1                                    |         r3 = r2 + 1;
    0x00003d6e cmp r0, r3                                        |         
    0x00003d70 bne 0x3d58                                        |         
                                                                 |     }
    0x00003d72 ldrb r3, [r1, r0]                                 |     r3 = *((r1 + r0));
    0x00003d74 cmp r3, 0x7b                                      |     
    0x00003d76 it eq                                             |     
                                                                 |     if (r3 == 0x7b) {
    0x00003d78 addeq r3, r2, 2                                   |         r3 = r2 + 2;
                                                                 |         goto label_22;
                                                                 |     }
                                                                 |     if (r3 != 0x7b) {
                                                                 | label_22:
    0x00003d7a bne.w 0x3c3c                                      |         goto label_1;
                                                                 |     }
                                                                 | label_5:
    0x00003d7e ldrb r3, [r1, r3]                                 |     r3 = *((r1 + r3));
                                                                 | label_6:
    0x00003d80 cmp r3, 0x7d                                      |     
                                                                 |     if (r3 != 0x7d) {
    0x00003d82 bne.w 0x3c3c                                      |         goto label_1;
                                                                 |     }
    0x00003d86 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00003d88 beq 0x3d1c                                        |         goto label_2;
                                                                 |     }
    0x00003d8a mov r1, r4                                        |     r1 = r4;
    0x00003d8c mov r0, r5                                        |     r0 = r5;
    0x00003d8e blx 0x14cc                                        |     r0 = drep_initializeScalar ();
    0x00003d92 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00003d94 bge 0x3d1c                                        |         goto label_2;
                                                                 |     }
    0x00003d96 b 0x3ed4                                          |     goto label_9;
                                                                 | label_17:
    0x00003d98 cmp r2, 0x28                                      |     
                                                                 |     if (r2 != 0x28) {
    0x00003d9a bne.w 0x3eb2                                      |         goto label_23;
                                                                 |     }
    0x00003d9e ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
    0x00003da0 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003da2 bne.w 0x3eb2                                      |         goto label_23;
                                                                 |     }
    0x00003da6 blx 0x1598                                        |     r0 = strncmp (r0, r1, r2);
    0x00003daa mov sb, r0                                        |     sb = r0;
    0x00003dac blx 0x13bc                                        |     fcn_000013bc ();
                                                                 |     if (r5 == 0) {
    0x00003db0 cbz r5, 0x3dcc                                    |         goto label_24;
                                                                 |     }
    0x00003db2 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
                                                                 |     if (r3 == 0) {
    0x00003db4 cbz r3, 0x3dcc                                    |         goto label_24;
                                                                 |     }
                                                                 |     do {
    0x00003db6 mov r0, r5                                        |         r0 = r5;
    0x00003db8 blx 0x1538                                        |         r0 = cli_cleanupGroupContext ();
    0x00003dbc mov r1, r0                                        |         r1 = r0;
                                                                 |         if (r0 == 0) {
    0x00003dbe cbz r0, 0x3dcc                                    |             goto label_24;
                                                                 |         }
    0x00003dc0 mov r0, r5                                        |         r0 = r5;
    0x00003dc2 blx 0x13b0                                        |         fcn_000013b0 ();
    0x00003dc6 ldr r3, [r5, 8]                                   |         r3 = *((r5 + 8));
    0x00003dc8 cmp r3, 0                                         |         
    0x00003dca bne 0x3db6                                        |         
                                                                 |     } while (r3 != 0);
                                                                 | label_24:
    0x00003dcc adds r6, 1                                        |     r6++;
    0x00003dce add r7, sp, 0x18                                  |     r7 += var_18h_2;
                                                                 |     do {
                                                                 | label_3:
    0x00003dd0 mov r3, r6                                        |         r3 = r6;
    0x00003dd2 mov r2, r8                                        |         r2 = r8;
    0x00003dd4 movs r1, 0                                        |         r1 = 0;
    0x00003dd6 mov r0, r7                                        |         r0 = r7;
    0x00003dd8 bl 0x3b74                                         |         r0 = fcn_00003b74 (r0, r1, r2, r3, r4);
    0x00003ddc mov r4, r0                                        |         r4 = r0;
    0x00003dde cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003de0 beq 0x3ec0                                        |             goto label_25;
                                                                 |         }
    0x00003de2 mov r1, r0                                        |         r1 = r0;
    0x00003de4 mov r0, sb                                        |         r0 = sb;
    0x00003de6 blx 0x1268                                        |         drep_addToList ();
    0x00003dea cmp r5, 0                                         |         
    0x00003dec beq 0x3dd0                                        |         
                                                                 |     } while (r5 == 0);
    0x00003dee mov r1, r4                                        |     r1 = r4;
    0x00003df0 mov r0, r5                                        |     r0 = r5;
    0x00003df2 blx 0x1268                                        |     drep_addToList ();
    0x00003df6 b 0x3dd0                                          |     goto label_3;
                                                                 | label_15:
    0x00003df8 ldr r0, [sp, 0x14]                                |     r0 = s1;
    0x00003dfa ldr r1, [sp, 0xc]                                 |     r1 = var_ch_2;
    0x00003dfc blx 0x1520                                        |     r0 = strcat (r0, r1)
    0x00003e00 mov r4, r0                                        |     r4 = r0;
    0x00003e02 str r0, [sp, 0x18]                                |     var_18h_2 = r0;
    0x00003e04 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003e06 beq 0x3ef6                                        |         goto label_26;
                                                                 |     }
    0x00003e08 ldrb r3, [r0]                                     |     r3 = *(r0);
    0x00003e0a cmp r3, 0x7d                                      |     
                                                                 |     if (r3 != 0x7d) {
    0x00003e0c bne.w 0x3c28                                      |         goto label_0;
                                                                 |     }
    0x00003e10 ldrb r0, [r0, 1]                                  |     r0 = *((r0 + 1));
    0x00003e12 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003e14 bne.w 0x3c28                                      |         goto label_0;
                                                                 |     }
    0x00003e16 add r7, sp, 0x20                                  |     r7 = sp + 0x20;
    0x00003e18 ldr r1, [pc, 0x124]                               |     
    0x00003e1a add r1, pc                                        |     
    0x00003e1c add.w r1, r1, 0x158                               |     r1 = 0x7eb6;
    0x00003e20 blx 0x1520                                        |     strcat (r0, r1)
    0x00003e24 str.w r0, [fp]                                    |     __asm ("str.w r0, [fp]");
    0x00003e28 b 0x3d1c                                          |     goto label_2;
                                                                 | label_14:
    0x00003e2a mov r1, r2                                        |     r1 = r2;
    0x00003e2c mov r0, r5                                        |     r0 = r5;
    0x00003e2e blx 0x1368                                        |     fcn_00001368 ();
    0x00003e32 mov r2, r4                                        |     r2 = r4;
    0x00003e34 mov r7, r0                                        |     r7 = r0;
    0x00003e36 mov r1, r0                                        |     r1 = r0;
    0x00003e38 mov r0, r5                                        |     r0 = r5;
    0x00003e3a blx 0x12bc                                        |     drep_setHashValue ();
    0x00003e3e b 0x3c50                                          |     goto label_4;
                                                                 | label_21:
    0x00003e40 cmp r3, 0x7b                                      |     
    0x00003e42 ldr.w lr, [sp, 8]                                 |     lr = var_8h;
                                                                 |     if (r3 != 0x7b) {
    0x00003e46 bne.w 0x3c3c                                      |         goto label_1;
                                                                 |     }
    0x00003e4a adds r3, r2, 1                                    |     r3 = r2 + 1;
    0x00003e4c cmp r0, r3                                        |     
    0x00003e4e itt gt                                            |     
                                                                 |     if (r0 <= r3) {
    0x00003e50 addgt r2, r2, r1                                  |         r2 += r1;
                                                                 |     }
                                                                 |     if (r0 > r3) {
    0x00003e52 addgt lr, r0                                      |         lr += r0;
                                                                 |         goto label_27;
                                                                 |     }
                                                                 |     if (r0 <= r3) {
                                                                 | label_27:
    0x00003e54 ble 0x3d7e                                        |         goto label_5;
                                                                 |     }
                                                                 | label_7:
    0x00003e56 mov r0, r2                                        |     r0 = r2;
    0x00003e58 ldrb r3, [r2, 1]!                                 |     r3 = *((r2 += 1));
    0x00003e5c sub.w r1, r3, 9                                   |     r1 = r3 - 9;
    0x00003e60 cmp r3, 0x20                                      |     
    0x00003e62 it ne                                             |     
                                                                 |     if (r3 == 0x20) {
    0x00003e64 cmpne r1, 1                                       |         __asm ("cmpne r1, 1");
                                                                 |         goto label_28;
                                                                 |     }
                                                                 |     if (r3 > 0x20) {
                                                                 | label_28:
    0x00003e66 bhi 0x3d80                                        |         goto label_6;
                                                                 |     }
    0x00003e68 cmp lr, r2                                        |     
                                                                 |     if (lr != r2) {
    0x00003e6a bne 0x3e56                                        |         goto label_7;
                                                                 |     }
    0x00003e6c ldrb r3, [r0, 2]                                  |     r3 = *((r0 + 2));
    0x00003e6e b 0x3d80                                          |     goto label_6;
                                                                 | label_18:
    0x00003e70 ldr r1, [pc, 0xd0]                                |     
    0x00003e72 adds r0, r7, 1                                    |     r0 = r7 + 1;
    0x00003e74 add r1, pc                                        |     r1 = 0x7dbc;
    0x00003e76 blx 0x1520                                        |     strcat (r0, r1)
    0x00003e7a ldr r1, [pc, 0xcc]                                |     
    0x00003e7c mov r4, r0                                        |     r4 = r0;
    0x00003e7e movs r0, 0                                        |     r0 = 0;
    0x00003e80 add r1, pc                                        |     r1 = 0x7dce;
    0x00003e82 blx 0x1520                                        |     strcat (r0, r1)
    0x00003e86 ldr r1, [pc, 0xc4]                                |     
    0x00003e88 movs r0, 0                                        |     r0 = 0;
    0x00003e8a add r1, pc                                        |     
    0x00003e8c add.w r1, r1, 0x158                               |     r1 = 0x7f34;
    0x00003e90 blx 0x1520                                        |     strcat (r0, r1)
    0x00003e94 movs r2, 0                                        |     r2 = 0;
    0x00003e96 mov r6, r0                                        |     r6 = r0;
    0x00003e98 mov r1, r4                                        |     r1 = r4;
    0x00003e9a mov r0, sb                                        |     r0 = sb;
    0x00003e9c blx 0x1244                                        |     drep_assignStringToCustom ();
    0x00003e9e ldrd r2, sp, [r2]                                 |     __asm ("ldrd r2, sp, [r2]");
                                                                 |     if (r2 == 0) {
    0x00003ea2 beq.w 0x3d18                                      |         goto label_8;
                                                                 |     }
    0x00003ea6 mov r1, r4                                        |     r1 = r4;
    0x00003ea8 mov r0, r5                                        |     r0 = r5;
    0x00003eaa movs r2, 0                                        |     r2 = 0;
    0x00003eac blx 0x1244                                        |     drep_assignStringToCustom ();
    0x00003eae strd lr, r7, [sl, 0xc8]                           |     __asm ("strd lr, r7, [sl, 0xc8]");
                                                                 | label_23:
    0x00003eb2 cmp r2, 0x29                                      |     
                                                                 |     if (r2 != 0x29) {
    0x00003eb4 bne 0x3ee0                                        |         goto label_29;
                                                                 |     }
    0x00003eb6 ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
                                                                 |     if (r3 != 0) {
    0x00003eb8 cbnz r3, 0x3ee0                                   |         goto label_29;
                                                                 |     }
    0x00003eba str.w r7, [fp]                                    |     __asm ("str.w r7, [fp]");
    0x00003ebe b 0x3ed4                                          |     goto label_9;
                                                                 | label_25:
    0x00003ec0 ldr r3, [sp, 0x18]                                |     r3 = var_18h_2;
    0x00003ec2 str.w r3, [fp]                                    |     __asm ("str.w r3, [fp]");
    0x00003ec6 b 0x3d1c                                          |     goto label_2;
                                                                 | label_10:
    0x00003ec8 ldr r1, [pc, 0x84]                                |     
    0x00003eca mov r2, r7                                        |     r2 = r7;
    0x00003ecc movs r0, 1                                        |     r0 = 1;
    0x00003ece add r1, pc                                        |     r1 = 0x7e22;
    0x00003ed0 blx 0x12d4                                        |     printf_chk ();
                                                                 |     do {
                                                                 | label_9:
    0x00003ed4 mov.w sb, 0                                       |         sb = 0;
    0x00003ed8 b 0x3d1c                                          |         goto label_2;
                                                                 | label_16:
    0x00003eda str.w r0, [fp]                                    |         __asm ("str.w r0, [fp]");
    0x00003ede b 0x3d1c                                          |         goto label_2;
                                                                 | label_29:
    0x00003ee0 ldr r0, [pc, 0x70]                                |         
    0x00003ee2 add r0, pc                                        |         r0 = 0x7e3a;
    0x00003ee4 blx 0x155c                                        |         cli_getParamInGroup ();
    0x00003ee8 b 0x3ed4                                          |         
                                                                 |     } while (1);
                                                                 | label_20:
    0x00003eea cmp r3, 0x7b                                      |     
    0x00003eec it eq                                             |     
                                                                 |     if (r3 == 0x7b) {
    0x00003eee ldrbeq r3, [r1, 1]                                |         r3 = *((r1 + 1));
                                                                 |         goto label_30;
                                                                 |     }
                                                                 |     if (r3 != 0x7b) {
                                                                 | label_30:
    0x00003ef0 bne.w 0x3c3c                                      |         goto label_1;
                                                                 |     }
    0x00003ef4 b 0x3d80                                          |     goto label_6;
                                                                 | label_26:
    0x00003ef6 ldr r0, [pc, 0x60]                                |     
    0x00003ef8 add r0, pc                                        |     r0 = 0x7e56;
    0x00003efa blx 0x155c                                        |     cli_getParamInGroup ();
    0x00003efe b 0x3d1c                                          |     goto label_2;
                                                                 | label_12:
    0x00003f00 ldr r0, [pc, 0x58]                                |     
    0x00003f02 add r0, pc                                        |     r0 = 0x7e62;
    0x00003f04 blx 0x155c                                        |     cli_getParamInGroup ();
    0x00003f08 b 0x3ed4                                          |     goto label_9;
                                                                 | label_19:
    0x00003f0a blx 0x14a4                                        |     fcn_000014a4 ();
    0x00003f0e nop                                               |     
    0x00003f10 adds r2, 0xee                                     |     r2 += 0xee;
    0x00003f12 movs r0, r0                                       |     
    0x00003f14 lsls r4, r5, 5                                    |     r4 = r5 << 5;
    0x00003f16 movs r0, r0                                       |     
    0x00003f18 lsrs r4, r7, 0x1e                                 |     r4 = r7 >> 0x1e;
    0x00003f1a movs r0, r0                                       |     
    0x00003f1c subs r6, r6, r2                                   |     r6 -= r2;
    0x00003f1e movs r0, r0                                       |     
    0x00003f20 lsrs r6, r4, 0x1e                                 |     r6 = r4 >> 0x1e;
    0x00003f22 movs r0, r0                                       |     
    0x00003f24 lsrs r6, r4, 0x1d                                 |     r6 = r4 >> 0x1d;
    0x00003f26 movs r0, r0                                       |     
    0x00003f28 lsrs r0, r4, 0x1d                                 |     r0 = r4 >> 0x1d;
    0x00003f2a movs r0, r0                                       |     
    0x00003f2c adds r2, r6, r7                                   |     r2 = r6 + r7;
    0x00003f2e movs r0, r0                                       |     
    0x00003f30 lsrs r2, r6, 0x1b                                 |     r2 = r6 >> 0x1b;
    0x00003f32 movs r0, r0                                       |     
    0x00003f34 lsrs r0, r1, 0x1b                                 |     r0 = r1 >> 0x1b;
    0x00003f36 movs r0, r0                                       |     
    0x00003f38 adds r6, r3, r6                                   |     r6 = r3 + r6;
    0x00003f3a movs r0, r0                                       |     
    0x00003f3c adds r1, 0x54                                     |     r1 += 0x54;
    0x00003f3e movs r0, r0                                       |     
    0x00003f40 adds r2, r7, r1                                   |     r2 = r7 + r1;
    0x00003f42 movs r0, r0                                       |     
    0x00003f44 lsrs r4, r1, 0x11                                 |     r4 = r1 >> 0x11;
    0x00003f46 movs r0, r0                                       |     
    0x00003f48 lsrs r4, r0, 0x14                                 |     r4 = r0 >> 0x14;
    0x00003f4a movs r0, r0                                       |     
    0x00003f4c adds r2, r1, r0                                   |     r2 = r1 + r0;
    0x00003f4e movs r0, r0                                       |     
    0x00003f50 lsrs r6, r7, 0x12                                 |     r6 = r7 >> 0x12;
    0x00003f52 movs r0, r0                                       |     
    0x00003f54 lsrs r6, r7, 0x12                                 |     r6 = r7 >> 0x12;
    0x00003f56 movs r0, r0                                       |     
    0x00003f58 lsrs r4, r3, 0x13                                 |     r4 = r3 >> 0x13;
    0x00003f5a movs r0, r0                                       |     
    0x00003f5c lsrs r6, r7, 0x12                                 |     r6 = r7 >> 0x12;
    0x00003f5e movs r0, r0                                       |     
                                                                 | }

[*] Function strcat used 14 times parhandclient