[*] Binary protection state of parhandclient

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


[*] Function printf 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 @ 0x3234 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00003234 ()                              | void fcn_00003234 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                         |     int16_t var_4h_2;
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
    0x00003234 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00003238 mov r7, r1                                |     r7 = r1;
    0x0000323a mov r1, r2                                |     r1 = r2;
    0x0000323c ldr r2, [pc, 0xe4]                        |     
    0x0000323e sub sp, 0xc                               |     
    0x00003240 mov sb, r0                                |     sb = r0;
    0x00003242 ldr r3, [pc, 0xe4]                        |     r3 = *(0x332a);
    0x00003244 add r2, pc                                |     r2 = 0x656c;
    0x00003246 ldr r6, [pc, 0xe4]                        |     
    0x00003248 ldr.w r8, [pc, 0xe4]                      |     
    0x0000324c ldr r3, [r2, r3]                          |     
    0x0000324e add r6, pc                                |     r6 = 0x6580;
    0x00003250 mov r2, r6                                |     r2 = r6;
    0x00003252 add r8, pc                                |     r8 = 0x6586;
    0x00003254 ldr r3, [r3]                              |     r3 = *(0x656c);
    0x00003256 str r3, [sp, 4]                           |     var_4h = r3;
    0x00003258 mov.w r3, 0                               |     r3 = 0;
    0x0000325c mov r3, sp                                |     r3 = sp;
    0x0000325e str r7, [r6, 8]                           |     *((r6 + 8)) = r7;
    0x00003260 blx 0x128c                                |     cli_createDynamicGroup ();
    0x00003264 ldr r4, [sp]                              |     r4 = *(sp);
    0x00003266 mov r5, r0                                |     r5 = r0;
                                                         |     if (r4 != 0) {
    0x00003268 cbz r4, 0x3286                            |         
    0x0000326a adds r3, r4, 4                            |         r3 = r4 + 4;
                                                         |         if (r3 == r4) {
    0x0000326c beq 0x32f0                                |             goto label_2;
                                                         |         }
    0x0000326e adds r4, 8                                |         r4 += 8;
                                                         |         if (r4 == 8) {
    0x00003270 beq 0x32b6                                |             goto label_3;
                                                         |         }
    0x00003272 ldr r3, [r6, 0x34]                        |         r3 = *((r6 + 0x34));
    0x00003274 cmp r3, 0                                 |         
                                                         |         if (r3 == 0) {
    0x00003276 beq 0x32e2                                |             goto label_4;
                                                         |         }
    0x00003278 ldr r1, [pc, 0xb8]                        |         
    0x0000327a mov r2, sb                                |         r2 = sb;
    0x0000327c movs r0, 1                                |         r0 = 1;
    0x0000327e add r1, pc                                |         r1 = 0x65b6;
    0x00003280 blx 0x12d4                                |         printf_chk ()
    0x00003284 b 0x32de                                  |         goto label_0;
                                                         |     }
    0x00003286 ldr r1, [pc, 0xb0]                        |     
    0x00003288 mov r3, r0                                |     r3 = r0;
    0x0000328a mov r2, sb                                |     r2 = sb;
    0x0000328c movs r0, 1                                |     r0 = 1;
    0x0000328e add r1, pc                                |     r1 = 0x65cc;
    0x00003290 blx 0x12d4                                |     printf_chk ()
                                                         |     do {
    0x00003294 mov r0, r5                                |         r0 = r5;
    0x00003296 blx 0x1350                                |         fcn_00001350 ();
    0x0000329a ldr r2, [pc, 0xa0]                        |         
    0x0000329c ldr r3, [pc, 0x88]                        |         r3 = *(0x3328);
    0x0000329e add r2, pc                                |         r2 = 0x65e0;
    0x000032a0 ldr r3, [r2, r3]                          |         r3 = *(0x65e0);
    0x000032a2 ldr r2, [r3]                              |         r2 = *(0x65e0);
    0x000032a4 ldr r3, [sp, 4]                           |         r3 = var_4h;
    0x000032a6 eors r2, r3                               |         r2 ^= r3;
    0x000032a8 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x000032ac bne 0x3320                                |             goto label_5;
                                                         |         }
    0x000032ae mov r0, r4                                |         r0 = r4;
    0x000032b0 add sp, 0xc                               |         
    0x000032b2 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_3:
    0x000032b6 ldr r3, [pc, 0x88]                        |         
    0x000032b8 add r3, pc                                |         
    0x000032ba ldr r3, [r3]                              |         r3 = *(0x65fe);
                                                         |         if (r3 != 0) {
    0x000032bc cbnz r3, 0x3310                           |             goto label_6;
                                                         |         }
                                                         | label_1:
    0x000032be ldr r2, [pc, 0x84]                        |         
    0x000032c0 ldr r3, [pc, 0x84]                        |         r3 = *(0x3348);
    0x000032c2 add r2, pc                                |         
    0x000032c4 ldr r2, [r2, 0x30]                        |         r2 = *(0x663c);
    0x000032c6 ldr.w r3, [r8, r3]                        |         r3 = *((r8 + r3));
    0x000032ca ldr r4, [r3]                              |         r4 = *(0x3348);
                                                         |         if (r2 == 0) {
    0x000032cc cbz r2, 0x3300                            |             goto label_7;
                                                         |         }
    0x000032ce ldr r0, [pc, 0x7c]                        |         
    0x000032d0 mov r3, r4                                |         r3 = r4;
    0x000032d2 mov.w r2, 0x13a                           |         r2 = 0x13a;
    0x000032d6 movs r1, 1                                |         r1 = 1;
    0x000032d8 add r0, pc                                |         r0 = 0x662a;
    0x000032da blx 0x1444                                |         fcn_00001444 ();
                                                         | label_0:
    0x000032de movs r4, 2                                |         r4 = 2;
    0x000032e0 b 0x3294                                  |         
                                                         |     } while (1);
                                                         | label_4:
    0x000032e2 ldr r1, [pc, 0x6c]                        |     
    0x000032e4 mov r2, sb                                |     r2 = sb;
    0x000032e6 movs r0, 3                                |     r0 = 3;
    0x000032e8 add r1, pc                                |     r1 = 0x663e;
    0x000032ea bl 0x2fac                                 |     fcn_00002fac ();
    0x000032ee b 0x32de                                  |     goto label_0;
                                                         | label_2:
    0x000032f0 ldr r1, [pc, 0x60]                        |     
    0x000032f2 mov r3, r7                                |     r3 = r7;
    0x000032f4 mov r2, sb                                |     r2 = sb;
    0x000032f6 movs r0, 3                                |     r0 = 3;
    0x000032f8 add r1, pc                                |     r1 = 0x6650;
    0x000032fa bl 0x2fac                                 |     fcn_00002fac ();
    0x000032fe b 0x32de                                  |     goto label_0;
                                                         | label_7:
    0x00003300 ldr r2, [pc, 0x54]                        |     
    0x00003302 mov r3, sb                                |     r3 = sb;
    0x00003304 movs r1, 1                                |     r1 = 1;
    0x00003306 mov r0, r4                                |     r0 = r4;
    0x00003308 add r2, pc                                |     r2 = 0x6664;
    0x0000330a blx 0x14c0                                |     drep_deleteHashValue ();
    0x0000330e b 0x32de                                  |     goto label_0;
                                                         | label_6:
    0x00003310 ldr r2, [pc, 0x48]                        |     
    0x00003312 mov r3, sb                                |     r3 = sb;
    0x00003314 movs r1, 1                                |     r1 = 1;
    0x00003316 movs r0, 3                                |     r0 = 3;
    0x00003318 add r2, pc                                |     r2 = 0x6678;
    0x0000331a blx 0x1428                                |     fcn_00001428 ();
    0x0000331e b 0x32be                                  |     goto label_1;
                                                         | label_5:
    0x00003320 blx 0x14a4                                |     fcn_000014a4 ();
    0x00003324 subs r4, 0x30                             |     r4 -= 0x30;
    0x00003326 movs r0, r0                               |     
    0x00003328 lsls r4, r5, 5                            |     r4 = r5 << 5;
    0x0000332a movs r0, r0                               |     
    0x0000332c subs r6, 0xae                             |     r6 -= 0xae;
    0x0000332e movs r0, r0                               |     
    0x00003330 subs r4, 0x22                             |     r4 -= 0x22;
    0x00003332 movs r0, r0                               |     
    0x00003334 asrs r6, r0, 0x1d                         |     r6 = r0 >> 0x1d;
    0x00003336 movs r0, r0                               |     
    0x00003338 asrs r6, r7, 0x1d                         |     r6 = r7 >> 0x1d;
    0x0000333a movs r0, r0                               |     
    0x0000333c subs r3, 0xd6                             |     r3 -= 0xd6;
    0x0000333e movs r0, r0                               |     
    0x00003340 subs r5, 0x4c                             |     r5 -= 0x4c;
    0x00003342 movs r0, r0                               |     
    0x00003344 subs r6, 0x3a                             |     r6 -= 0x3a;
    0x00003346 movs r0, r0                               |     
    0x00003348 lsls r0, r7, 5                            |     r0 = r7 << 5;
    0x0000334a movs r0, r0                               |     
    0x0000334c movs r3, 0xbc                             |     r3 = 0xbc;
    0x0000334e movs r0, r0                               |     
    0x00003350 asrs r0, r0, 0x1c                         |     r0 >>= 0x1c;
    0x00003352 movs r0, r0                               |     
    0x00003354 asrs r0, r5, 0x18                         |     r0 = r5 >> 0x18;
    0x00003356 movs r0, r0                               |     
    0x00003358 asrs r0, r0, 0x1a                         |     r0 >>= 0x1a;
    0x0000335a movs r0, r0                               |     
    0x0000335c asrs r4, r6, 0x18                         |     r4 = r6 >> 0x18;
    0x0000335e movs r0, r0                               |     
                                                         | }
    ; 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 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    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 printf used 4 times parhandclient