[*] 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-50593792.squashfs_v4_le_extract/usr/bin/parhandclient @ 0x3070 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00003070 ()                              | void fcn_00003070 (int16_t arg1) {
                                                         |     int16_t var_0h_2;
                                                         |     int16_t var_4h_2;
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     r0 = arg1;
    0x00003070 push {r4, r5, r6, r7, lr}                 |     
    0x00003072 sub sp, 0xc                               |     
    0x00003074 ldr r4, [pc, 0x70]                        |     
    0x00003076 movs r7, 0                                |     r7 = 0;
    0x00003078 mov r6, r0                                |     r6 = r0;
    0x0000307a ldr r3, [pc, 0x70]                        |     r3 = *(0x30ee);
    0x0000307c add r4, pc                                |     r4 = 0x6168;
    0x0000307e ldr r2, [pc, 0x70]                        |     
    0x00003080 ldr r1, [pc, 0x70]                        |     
    0x00003082 ldr r3, [r4, r3]                          |     
    0x00003084 add r2, pc                                |     r2 = 0x617a;
    0x00003086 add r1, pc                                |     r1 = 0x617e;
    0x00003088 ldr r3, [r3]                              |     r3 = *(0x6168);
    0x0000308a str r3, [sp, 4]                           |     var_4h = r3;
    0x0000308c mov.w r3, 0                               |     r3 = 0;
    0x00003090 mov r3, sp                                |     r3 = sp;
    0x00003092 str r7, [sp]                              |     *(sp) = r7;
    0x00003094 blx 0x11c8                                |     cli_getParamOption ();
    0x00003098 ldr r5, [sp]                              |     r5 = *(sp);
    0x0000309a mov r4, r0                                |     r4 = r0;
                                                         |     if (r5 == 0) {
    0x0000309c cbz r5, 0x30ce                            |         goto label_3;
                                                         |     }
    0x0000309e ldr r1, [pc, 0x58]                        |     
    0x000030a0 mov r2, r5                                |     r2 = r5;
    0x000030a2 mov r3, r6                                |     r3 = r6;
    0x000030a4 movs r0, 3                                |     r0 = 3;
    0x000030a6 mov r5, r7                                |     r5 = r7;
    0x000030a8 add r1, pc                                |     r1 = 0x61a6;
    0x000030aa bl 0x2e64                                 |     fcn_00002e64 ();
                                                         |     do {
                                                         | label_0:
    0x000030ae mov r0, r4                                |         r0 = r4;
    0x000030b0 blx 0x12c8                                |         fcn_000012c8 ();
    0x000030b4 ldr r2, [pc, 0x44]                        |         
    0x000030b6 ldr r3, [pc, 0x34]                        |         r3 = *(0x30ee);
    0x000030b8 add r2, pc                                |         r2 = 0x61b8;
    0x000030ba ldr r3, [r2, r3]                          |         r3 = *(0x61b8);
    0x000030bc ldr r2, [r3]                              |         r2 = *(0x61b8);
    0x000030be ldr r3, [sp, 4]                           |         r3 = var_4h;
    0x000030c0 eors r2, r3                               |         r2 ^= r3;
    0x000030c2 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x000030c6 bne 0x30e4                                |             goto label_4;
                                                         |         }
    0x000030c8 mov r0, r5                                |         r0 = r5;
    0x000030ca add sp, 0xc                               |         
    0x000030cc pop {r4, r5, r6, r7, pc}                  |         
                                                         | label_3:
    0x000030ce cmp r0, 0                                 |         
    0x000030d0 beq 0x30ae                                |         
                                                         |     } while (r0 == 0);
    0x000030d2 ldr r2, [pc, 0x2c]                        |     
    0x000030d4 movs r1, 8                                |     r1 = 8;
    0x000030d6 add r2, pc                                |     r2 = 0x61dc;
    0x000030d8 blx 0x1304                                |     r0 = fcn_00001304 ();
    0x000030dc subs r5, r0, r7                           |     r5 = r0 - r7;
    0x000030de it ne                                     |     
                                                         |     if (r5 == r0) {
    0x000030e0 movne r5, 1                               |         r5 = 1;
                                                         |     }
    0x000030e2 b 0x30ae                                  |     goto label_0;
                                                         | label_4:
    0x000030e4 blx 0x141c                                |     fcn_0000141c ();
    0x000030e8 cmp r5, 0xf8                              |     
    0x000030ea movs r1, r0                               |     r1 = r0;
    0x000030ec lsls r4, r5, 5                            |     r4 = r5 << 5;
    0x000030ee movs r0, r0                               |     
    0x000030f0 adds r0, 0x78                             |     r0 += 0x78;
    0x000030f2 movs r1, r0                               |     r1 = r0;
    0x000030f4 asrs r2, r1, 0x1d                         |     r2 = r1 >> 0x1d;
    0x000030f6 movs r0, r0                               |     
    0x000030f8 asrs r4, r7, 0x1c                         |     r4 = r7 >> 0x1c;
    0x000030fa movs r0, r0                               |     
    0x000030fc cmp r5, 0xbc                              |     
    0x000030fe movs r1, r0                               |     r1 = r0;
    0x00003100 asrs r2, r0, 0x1c                         |     r2 = r0 >> 0x1c;
    0x00003102 movs r0, r0                               |     
    0x00003104 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00003108 mov r7, r1                                |     r7 = r1;
    0x0000310a mov r1, r2                                |     r1 = r2;
    0x0000310c ldr r2, [pc, 0xec]                        |     
    0x0000310e sub sp, 0xc                               |     
    0x00003110 mov sb, r0                                |     sb = r0;
    0x00003112 ldr r3, [pc, 0xec]                        |     r3 = *(0x3202);
    0x00003114 add r2, pc                                |     r2 = 0x6314;
    0x00003116 ldr r6, [pc, 0xec]                        |     
    0x00003118 ldr.w r8, [pc, 0xec]                      |     r8 = *(0x00003208);
    0x0000311c ldr r3, [r2, r3]                          |     
    0x0000311e add r6, pc                                |     r6 = 0x6328;
    0x00003120 mov r2, r6                                |     r2 = r6;
    0x00003122 add r8, pc                                |     r8 += pc;
    0x00003124 ldr r3, [r3]                              |     r3 = *(0x6314);
    0x00003126 str r3, [sp, 4]                           |     var_4h_2 = r3;
    0x00003128 mov.w r3, 0                               |     r3 = 0;
    0x0000312c mov r3, sp                                |     r3 = sp;
    0x0000312e str r7, [r6, 8]                           |     *((r6 + 8)) = r7;
    0x00003130 blx 0x1204                                |     cli_createDynamicGroup ();
    0x00003134 ldr r4, [sp]                              |     r4 = *(sp);
    0x00003136 mov r5, r0                                |     r5 = r0;
                                                         |     if (r4 != 0) {
    0x00003138 cbz r4, 0x3158                            |         
    0x0000313a adds r3, r4, 4                            |         r3 = r4 + 4;
                                                         |         if (r3 == r4) {
    0x0000313c beq 0x31c4                                |             goto label_5;
                                                         |         }
    0x0000313e adds r4, 8                                |         r4 += 8;
                                                         |         if (r4 == 8) {
    0x00003140 beq 0x3188                                |             goto label_6;
                                                         |         }
    0x00003142 ldr r3, [r6, 0x34]                        |         r3 = *((r6 + 0x34));
    0x00003144 cmp r3, 0                                 |         
                                                         |         if (r3 == 0) {
    0x00003146 beq 0x31b4                                |             goto label_7;
                                                         |         }
    0x00003148 ldr r1, [pc, 0xc0]                        |         
    0x0000314a mov r2, sb                                |         r2 = sb;
    0x0000314c movs r0, 1                                |         r0 = 1;
    0x0000314e movs r4, 2                                |         r4 = 2;
    0x00003150 add r1, pc                                |         r1 = 0x6360;
    0x00003152 blx 0x124c                                |         printf_chk ()
    0x00003156 b 0x3166                                  |         
                                                         |     } else {
    0x00003158 ldr r1, [pc, 0xb4]                        |         
    0x0000315a mov r3, r0                                |         r3 = r0;
    0x0000315c mov r2, sb                                |         r2 = sb;
    0x0000315e movs r0, 1                                |         r0 = 1;
    0x00003160 add r1, pc                                |         r1 = 0x6374;
    0x00003162 blx 0x124c                                |         printf_chk ()
                                                         |     }
                                                         |     do {
                                                         | label_1:
    0x00003166 mov r0, r5                                |         r0 = r5;
    0x00003168 blx 0x12c8                                |         fcn_000012c8 ();
    0x0000316c ldr r2, [pc, 0xa4]                        |         
    0x0000316e ldr r3, [pc, 0x90]                        |         r3 = *(0x3202);
    0x00003170 add r2, pc                                |         r2 = 0x6388;
    0x00003172 ldr r3, [r2, r3]                          |         r3 = *(0x6388);
    0x00003174 ldr r2, [r3]                              |         r2 = *(0x6388);
    0x00003176 ldr r3, [sp, 4]                           |         r3 = var_4h_2;
    0x00003178 eors r2, r3                               |         r2 ^= r3;
    0x0000317a mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x0000317e bne 0x31f8                                |             goto label_8;
                                                         |         }
    0x00003180 mov r0, r4                                |         r0 = r4;
    0x00003182 add sp, 0xc                               |         
    0x00003184 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_6:
    0x00003188 ldr r3, [pc, 0x8c]                        |         
    0x0000318a add r3, pc                                |         
    0x0000318c ldr r3, [r3]                              |         r3 = *(0x63a6);
                                                         |         if (r3 != 0) {
    0x0000318e cbnz r3, 0x31e8                           |             goto label_9;
                                                         |         }
                                                         | label_2:
    0x00003190 ldr r2, [pc, 0x88]                        |         
    0x00003192 ldr r3, [pc, 0x8c]                        |         r3 = *(0x3222);
    0x00003194 add r2, pc                                |         
    0x00003196 ldr r2, [r2, 0x30]                        |         r2 = *(0x63e4);
    0x00003198 ldr.w r3, [r8, r3]                        |         r3 = *((r8 + r3));
    0x0000319c ldr r4, [r3]                              |         r4 = *(0x3222);
                                                         |         if (r2 == 0) {
    0x0000319e cbz r2, 0x31d6                            |             goto label_10;
                                                         |         }
    0x000031a0 ldr r0, [pc, 0x80]                        |         
    0x000031a2 mov r3, r4                                |         r3 = r4;
    0x000031a4 mov.w r2, 0x13a                           |         r2 = 0x13a;
    0x000031a8 movs r1, 1                                |         r1 = 1;
    0x000031aa movs r4, 2                                |         r4 = 2;
    0x000031ac add r0, pc                                |         r0 = 0x63d4;
    0x000031ae blx 0x13bc                                |         fcn_000013bc ();
    0x000031b2 b 0x3166                                  |         
                                                         |     } while (1);
                                                         | label_7:
    0x000031b4 ldr r1, [pc, 0x70]                        |     
    0x000031b6 mov r2, sb                                |     r2 = sb;
    0x000031b8 movs r0, 3                                |     r0 = 3;
    0x000031ba movs r4, 2                                |     r4 = 2;
    0x000031bc add r1, pc                                |     r1 = 0x63e8;
    0x000031be bl 0x2e64                                 |     fcn_00002e64 ();
    0x000031c2 b 0x3166                                  |     goto label_1;
                                                         | label_5:
    0x000031c4 ldr r1, [pc, 0x64]                        |     
    0x000031c6 mov r3, r7                                |     r3 = r7;
    0x000031c8 mov r2, sb                                |     r2 = sb;
    0x000031ca movs r0, 3                                |     r0 = 3;
    0x000031cc movs r4, 2                                |     r4 = 2;
    0x000031ce add r1, pc                                |     r1 = 0x63fe;
    0x000031d0 bl 0x2e64                                 |     fcn_00002e64 ();
    0x000031d4 b 0x3166                                  |     goto label_1;
                                                         | label_10:
    0x000031d6 ldr r2, [pc, 0x58]                        |     
    0x000031d8 mov r0, r4                                |     r0 = r4;
    0x000031da mov r3, sb                                |     r3 = sb;
    0x000031dc movs r1, 1                                |     r1 = 1;
    0x000031de movs r4, 2                                |     r4 = 2;
    0x000031e0 add r2, pc                                |     r2 = 0x6416;
    0x000031e2 blx 0x1438                                |     drep_deleteHashValue ();
    0x000031e6 b 0x3166                                  |     goto label_1;
                                                         | label_9:
    0x000031e8 ldr r2, [pc, 0x48]                        |     
    0x000031ea mov r3, sb                                |     r3 = sb;
    0x000031ec movs r1, 1                                |     r1 = 1;
    0x000031ee movs r0, 3                                |     r0 = 3;
    0x000031f0 add r2, pc                                |     r2 = 0x6428;
    0x000031f2 blx 0x13a0                                |     fcn_000013a0 ();
    0x000031f6 b 0x3190                                  |     goto label_2;
                                                         | label_8:
    0x000031f8 blx 0x141c                                |     fcn_0000141c ();
    0x000031fc cmp r5, 0x60                              |     
    0x000031fe movs r1, r0                               |     r1 = r0;
    0x00003200 lsls r4, r5, 5                            |     r4 = r5 << 5;
    0x00003202 movs r0, r0                               |     
    0x00003204 cmp r7, 0xde                              |     
    0x00003206 movs r1, r0                               |     r1 = r0;
    0x00003208 cmp r5, 0x52                              |     
    0x0000320a movs r1, r0                               |     r1 = r0;
    0x0000320c asrs r4, r5, 0x1d                         |     r4 = r5 >> 0x1d;
    0x0000320e movs r0, r0                               |     
    0x00003210 asrs r4, r4, 0x1e                         |     r4 >>= 0x1e;
    0x00003212 movs r0, r0                               |     
    0x00003214 cmp r5, 4                                 |     
    0x00003216 movs r1, r0                               |     r1 = r0;
    0x00003218 cmp r6, 0x7a                              |     
    0x0000321a movs r1, r0                               |     r1 = r0;
    0x0000321c cmp r7, 0x68                              |     
    0x0000321e movs r1, r0                               |     r1 = r0;
    0x00003220 lsls r0, r7, 5                            |     r0 = r7 << 5;
    0x00003222 movs r0, r0                               |     
    0x00003224 movs r3, 0xdc                             |     r3 = 0xdc;
    0x00003226 movs r0, r0                               |     
    0x00003228 asrs r4, r4, 0x1c                         |     r4 >>= 0x1c;
    0x0000322a movs r0, r0                               |     
    0x0000322c asrs r2, r1, 0x19                         |     r2 = r1 >> 0x19;
    0x0000322e movs r0, r0                               |     
    0x00003230 asrs r0, r4, 0x1a                         |     r0 = r4 >> 0x1a;
    0x00003232 movs r0, r0                               |     
    0x00003234 asrs r4, r2, 0x19                         |     r4 = r2 >> 0x19;
    0x00003236 movs r0, r0                               |     
                                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/parhandclient @ 0x3a70 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00003a70 ()                                  | void fcn_00003a70 (char * arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_14h_3;
                                                             |     char * var_18h;
                                                             |     int16_t var_1ch_2;
                                                             |     char * var_4h;
                                                             |     int16_t var_8h_2;
                                                             |     char * s2;
                                                             |     char * var_14h;
                                                             |     char * s1;
                                                             |     int16_t var_1ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00003a70 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00003a74 mov r8, r2                                    |     r8 = r2;
    0x00003a76 ldr r2, [pc, 0x37c]                           |     
    0x00003a78 mov r7, r3                                    |     r7 = r3;
    0x00003a7a sub sp, 0x24                                  |     
    0x00003a7c mov r5, r1                                    |     r5 = r1;
    0x00003a7e ldr r3, [pc, 0x378]                           |     r3 = *(0x3dfa);
    0x00003a80 add r2, pc                                    |     r2 = 0x787a;
    0x00003a82 str r0, [sp, 4]                               |     var_4h = r0;
    0x00003a84 ldr r4, [r0]                                  |     r4 = *(r0);
    0x00003a86 mov r0, r8                                    |     r0 = r8;
    0x00003a88 ldr r3, [r2, r3]                              |     
    0x00003a8a ldr r3, [r3]                                  |     r3 = *(0x787a);
    0x00003a8c str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x00003a8e mov.w r3, 0                                   |     r3 = 0;
    0x00003a92 blx 0x1310                                    |     fcn_00001310 ();
    0x00003a96 mov r1, r8                                    |     r1 = r8;
    0x00003a98 mov r6, r0                                    |     r6 = r0;
    0x00003a9a mov r2, r0                                    |     r2 = r0;
    0x00003a9c mov r0, r4                                    |     r0 = r4;
    0x00003a9e blx 0x151c                                    |     r0 = realloc (r0, r1);
                                                             |     if (r0 == 0) {
    0x00003aa2 cbnz r0, 0x3ac0                               |         
    0x00003aa4 movs r3, 0x20                                 |         r3 = 0x20;
    0x00003aa6 mov r0, r8                                    |         r0 = r8;
    0x00003aa8 strb r3, [r4, r6]                             |         *((r4 + r6)) = r3;
    0x00003aaa blx 0x1310                                    |         fcn_00001310 ();
    0x00003aae movs r3, 0x7b                                 |         r3 = 0x7b;
    0x00003ab0 add r0, r4                                    |         r0 += r4;
    0x00003ab2 strb r3, [r0, -0x1]                           |         *((r0 - 0x1)) = r3;
    0x00003ab6 mov r0, r8                                    |         r0 = r8;
    0x00003ab8 blx 0x1310                                    |         fcn_00001310 ();
    0x00003abc subs r0, 1                                    |         r0--;
    0x00003abe add r4, r0                                    |         r4 += r0;
                                                             |     }
    0x00003ac0 ldr r1, [pc, 0x338]                           |     
    0x00003ac2 mov r0, r4                                    |     r0 = r4;
    0x00003ac4 add r1, pc                                    |     r1 = 0x78c4;
    0x00003ac6 blx 0x1498                                    |     r0 = strcat (r0, r1);
    0x00003aca mov r6, r0                                    |     r6 = r0;
    0x00003acc str r0, [sp, 0x14]                            |     var_14h = r0;
    0x00003ace cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003ad0 beq.w 0x3db8                                  |         goto label_8;
                                                             |     }
    0x00003ad4 ldr.w sl, [pc, 0x328]                         |     
    0x00003ad8 movs r0, 0                                    |     r0 = 0;
    0x00003ada add sl, pc                                    |     
    0x00003adc add.w sl, sl, 0x158                           |     sl = 0x7a36;
    0x00003ae0 mov r1, sl                                    |     r1 = sl;
    0x00003ae2 blx 0x1498                                    |     strcat (r0, r1);
    0x00003ae6 ldr r2, [sp, 0x14]                            |     r2 = var_14h;
    0x00003ae8 str r0, [sp, 0x18]                            |     s1 = r0;
    0x00003aea ldrb r3, [r2]                                 |     r3 = *(r2);
    0x00003aec cmp r3, 0x7b                                  |     
                                                             |     if (r3 != 0x7b) {
    0x00003aee bne 0x3bac                                    |         goto label_9;
                                                             |     }
    0x00003af0 ldrb.w sb, [r2, 1]                            |     sb = *((r2 + 1));
    0x00003af4 cmp.w sb, 0                                   |     
                                                             |     if (sb != 0) {
    0x00003af8 bne 0x3bac                                    |         goto label_9;
                                                             |     }
    0x00003afa blx 0x1510                                    |     r0 = strncmp (r0, r1, r2);
    0x00003afe mov r6, r0                                    |     r6 = r0;
    0x00003b00 blx 0x11d4                                    |     drep_initializeHash ();
    0x00003b04 ldr r1, [pc, 0x2fc]                           |     
    0x00003b06 ldr r0, [sp, 0x18]                            |     r0 = s1;
    0x00003b08 add r1, pc                                    |     r1 = 0x7910;
    0x00003b0a blx 0x1498                                    |     r0 = strcat (r0, r1);
    0x00003b0e mov r4, r0                                    |     r4 = r0;
    0x00003b10 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003b12 beq.w 0x3de2                                  |         goto label_10;
                                                             |     }
    0x00003b16 ldr.w fp, [pc, 0x2f0]                         |     
    0x00003b1a ldr r3, [pc, 0x2f0]                           |     
    0x00003b1c add fp, pc                                    |     fp = 0x792a;
    0x00003b1e add r3, pc                                    |     r3 = 0x7930;
    0x00003b20 str r3, [sp, 0xc]                             |     s2 = r3;
                                                             |     do {
                                                             | label_0:
    0x00003b22 mov r1, sl                                    |         r1 = sl;
    0x00003b24 movs r0, 0                                    |         r0 = 0;
    0x00003b26 blx 0x1498                                    |         strcat (r0, r1);
    0x00003b2a str r0, [sp, 0x14]                            |         var_14h = r0;
    0x00003b2c cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00003b2e beq.w 0x3c9e                                  |             goto label_11;
                                                             |         }
    0x00003b32 cmp r7, 0                                     |         
                                                             |         if (r7 == 0) {
    0x00003b34 beq 0x3c1a                                    |             goto label_12;
                                                             |         }
                                                             |         if (r5 != 0) {
                                                             | label_1:
    0x00003b36 cbz r5, 0x3b4a                                |             
    0x00003b38 mov r1, r4                                    |             r1 = r4;
    0x00003b3a mov r0, r5                                    |             r0 = r5;
    0x00003b3c blx 0x1394                                    |             r0 = fcn_00001394 ();
    0x00003b40 orrs.w r2, r0, r7                             |             r2 = r0 | r7;
    0x00003b44 mov sb, r0                                    |             sb = r0;
                                                             |             if (r2 == r0) {
    0x00003b46 beq.w 0x3d2e                                  |                 goto label_13;
                                                             |             }
                                                             |         }
                                                             | label_3:
    0x00003b4a mov r1, sb                                    |         r1 = sb;
    0x00003b4c adds r3, r7, 1                                |         r3 = r7 + 1;
    0x00003b4e mov r2, r8                                    |         r2 = r8;
    0x00003b50 add r0, sp, 0x14                              |         r0 += var_14h;
    0x00003b52 bl 0x3a70                                     |         r0 = fcn_00003a70 (r0, r1, r2, r3);
    0x00003b56 mov r1, r0                                    |         r1 = r0;
    0x00003b58 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00003b5a beq.w 0x3d00                                  |             goto label_14;
                                                             |         }
    0x00003b5e mov r2, r4                                    |         r2 = r4;
    0x00003b60 mov r0, r6                                    |         r0 = r6;
    0x00003b62 blx 0x1234                                    |         drep_setHashValue ();
    0x00003b66 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x00003b68 mov r1, fp                                    |         r1 = fp;
    0x00003b6a blx 0x1498                                    |         r0 = strcat (r0, r1);
    0x00003b6e mov r4, r0                                    |         r4 = r0;
    0x00003b70 str r0, [sp, 0x18]                            |         s1 = r0;
    0x00003b72 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00003b74 beq.w 0x3dd2                                  |             goto label_15;
                                                             |         }
    0x00003b78 movs r2, 4                                    |         r2 = 4;
    0x00003b7a mov r1, r8                                    |         r1 = r8;
    0x00003b7c blx 0x151c                                    |         r0 = realloc (r0, r1);
                                                             |         if (r0 == 0) {
    0x00003b80 cbnz r0, 0x3b8e                               |             
    0x00003b82 mov r0, r8                                    |             r0 = r8;
    0x00003b84 blx 0x1310                                    |             fcn_00001310 ();
    0x00003b88 adds r0, 1                                    |             r0++;
    0x00003b8a add r4, r0                                    |             r4 += r0;
    0x00003b8c str r4, [sp, 0x18]                            |             s1 = r4;
                                                             |         }
    0x00003b8e ldrb r3, [r4]                                 |         r3 = *(r4);
    0x00003b90 cmp r3, 0x7d                                  |         
    0x00003b92 bne 0x3b22                                    |         
                                                             |     } while (r3 != 0x7d);
    0x00003b94 ldrb r0, [r4, 1]                              |     r0 = *((r4 + 1));
    0x00003b96 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003b98 bne 0x3b22                                    |         goto label_0;
                                                             |     }
    0x00003b9a ldr r1, [pc, 0x274]                           |     
    0x00003b9c add r1, pc                                    |     
    0x00003b9e add.w r1, r1, 0x158                           |     r1 = 0x7b0a;
    0x00003ba2 blx 0x1498                                    |     strcat (r0, r1);
    0x00003ba6 ldr r3, [sp, 4]                               |     r3 = var_4h;
    0x00003ba8 str r0, [r3]                                  |     *(r3) = r0;
    0x00003baa b 0x3d52                                      |     goto label_5;
                                                             | label_9:
    0x00003bac cmp r3, 0x5b                                  |     
                                                             |     if (r3 != 0x5b) {
    0x00003bae bne 0x3ca2                                    |         goto label_16;
                                                             |     }
    0x00003bb0 ldrb r1, [r2, 1]                              |     r1 = *((r2 + 1));
    0x00003bb2 cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00003bb4 bne 0x3ca2                                    |         goto label_16;
                                                             |     }
    0x00003bb6 blx 0x1510                                    |     strncmp (r0, r1, r2);
    0x00003bba ldr r2, [pc, 0x258]                           |     
    0x00003bbc movs r1, 3                                    |     r1 = 3;
    0x00003bbe mov r6, r0                                    |     r6 = r0;
    0x00003bc0 add r2, pc                                    |     r2 = 0x79da;
    0x00003bc2 blx 0x1450                                    |     cli_setComplexParam ();
    0x00003bc6 ldr r7, [sp, 0x18]                            |     r7 = s1;
    0x00003bc8 ldrb r3, [r7]                                 |     r3 = *(r7);
    0x00003bca cmp r3, 0x22                                  |     
                                                             |     if (r3 != 0x22) {
    0x00003bcc bne.w 0x3d6e                                  |         goto label_17;
                                                             |     }
    0x00003bd0 ldrb r4, [r7, 1]                              |     r4 = *((r7 + 1));
    0x00003bd2 subs r4, 0x22                                 |     r4 -= 0x22;
                                                             |     if (r4 != 0x22) {
    0x00003bd4 bne.w 0x3d6e                                  |         goto label_17;
                                                             |     }
    0x00003bd8 movs r0, 1                                    |     r0 = 1;
    0x00003bda blx 0x1410                                    |     fcn_00001410 ();
    0x00003bde ldr r1, [pc, 0x238]                           |     
    0x00003be0 mov r8, r0                                    |     r8 = r0;
    0x00003be2 strb.w r4, [r8]                               |     *(r8) = r4;
    0x00003be6 adds r0, r7, 2                                |     r0 = r7 + 2;
    0x00003be8 add r1, pc                                    |     r1 = 0x7a06;
    0x00003bea blx 0x1498                                    |     strcat (r0, r1);
    0x00003bee ldr r1, [pc, 0x22c]                           |     
    0x00003bf0 mov r0, r4                                    |     r0 = r4;
    0x00003bf2 add r1, pc                                    |     
    0x00003bf4 add.w r1, r1, 0x158                           |     r1 = 0x7b6c;
    0x00003bf8 blx 0x1498                                    |     strcat (r0, r1);
    0x00003bfc mov r2, r4                                    |     r2 = r4;
    0x00003bfe mov r7, r0                                    |     r7 = r0;
    0x00003c00 mov r1, r8                                    |     r1 = r8;
    0x00003c02 mov r0, r6                                    |     r0 = r6;
    0x00003c04 blx 0x11bc                                    |     drep_assignStringToCustom ();
                                                             |     if (r5 != 0) {
    0x00003c08 cbz r5, 0x3c14                                |         
    0x00003c0a mov r2, r4                                    |         r2 = r4;
    0x00003c0c mov r1, r8                                    |         r1 = r8;
    0x00003c0e mov r0, r5                                    |         r0 = r5;
    0x00003c10 blx 0x11bc                                    |         drep_assignStringToCustom ();
                                                             |     }
                                                             | label_4:
    0x00003c14 ldr r3, [sp, 4]                               |     r3 = var_4h;
    0x00003c16 str r7, [r3]                                  |     *(r3) = r7;
    0x00003c18 b 0x3d52                                      |     goto label_5;
                                                             | label_12:
    0x00003c1a str r0, [sp, 8]                               |     var_8h_2 = r0;
    0x00003c1c blx 0x1310                                    |     fcn_00001310 ();
    0x00003c20 ldr r1, [sp, 8]                               |     r1 = var_8h_2;
    0x00003c22 mov r3, r7                                    |     r3 = r7;
    0x00003c24 ldrb r2, [r1]                                 |     r2 = *(r1);
                                                             |     if (r0 == 0) {
    0x00003c26 cbz r0, 0x3c46                                |         goto label_18;
                                                             |     }
    0x00003c28 add.w ip, r1, -1                              |     
                                                             |     do {
    0x00003c2c ldrb r2, [ip, 1]!                             |         r2 = *((ip += 1));
    0x00003c30 sub.w lr, r2, 9                               |         lr = r2 - 9;
    0x00003c34 cmp r2, 0x20                                  |         
    0x00003c36 it ne                                         |         
                                                             |         if (r2 != 0x20) {
    0x00003c38 cmpne lr, 1                                   |             __asm ("cmpne lr, 1");
                                                             |         }
                                                             |         if (r2 > 0x20) {
    0x00003c3c bhi 0x3c46                                    |             goto label_18;
                                                             |         }
    0x00003c3e adds r3, 1                                    |         r3++;
    0x00003c40 cmp r0, r3                                    |         
    0x00003c42 bne 0x3c2c                                    |         
                                                             |     } while (r0 != r3);
    0x00003c44 ldrb r2, [r1, r0]                             |     r2 = *((r1 + r0));
                                                             | label_18:
    0x00003c46 cmp r2, 0x7b                                  |     
                                                             |     if (r2 != 0x7b) {
    0x00003c48 bne.w 0x3b36                                  |         goto label_1;
                                                             |     }
    0x00003c4c adds r2, r3, 1                                |     r2 = r3 + 1;
    0x00003c4e cmp r0, r2                                    |     
    0x00003c50 ldrb.w ip, [r1, r2]                           |     ip = *((r1 + r2));
    0x00003c54 ittt gt                                       |     
                                                             |     if (r0 <= r2) {
    0x00003c56 addgt r2, r1, -1                              |         r2 = r1 + -1;
                                                             |     }
                                                             |     if (r0 <= r2) {
    0x00003c5a addgt r3, r3, r1                              |         r3 += r1;
                                                             |     }
                                                             |     if (r0 > r2) {
    0x00003c5c adds r0, r0, r2                               |         r0 += r2;
                                                             |     }
                                                             |     if (r0 <= r0) {
    0x00003c5e ble 0x3c86                                    |         goto label_19;
                                                             |     }
                                                             |     do {
    0x00003c60 mov r2, r3                                    |         r2 = r3;
    0x00003c62 ldrb ip, [r3, 1]!                             |         ip = *((r3 += 1));
    0x00003c66 sub.w lr, ip, 9                               |         lr = ip - 9;
    0x00003c6a cmp.w ip, 0x20                                |         
    0x00003c6e it ne                                         |         
                                                             |         if (ip != 0x20) {
    0x00003c70 cmpne lr, 1                                   |             __asm ("cmpne lr, 1");
                                                             |         }
                                                             |         if (ip > 0x20) {
    0x00003c74 bhi 0x3c86                                    |             goto label_19;
                                                             |         }
    0x00003c76 cmp r0, r3                                    |         
    0x00003c78 add.w r2, r2, 2                               |         r2 += 2;
    0x00003c7c sub.w r2, r2, r1                              |         r2 -= r1;
    0x00003c80 bne 0x3c60                                    |         
                                                             |     } while (r0 != r3);
    0x00003c82 ldrb.w ip, [r1, r2]                           |     ip = *((r1 + r2));
                                                             | label_19:
    0x00003c86 cmp.w ip, 0x7d                                |     
                                                             |     if (ip != 0x7d) {
    0x00003c8a bne.w 0x3b36                                  |         goto label_1;
                                                             |     }
    0x00003c8e cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00003c90 beq 0x3d52                                    |         goto label_5;
                                                             |     }
    0x00003c92 mov r1, r4                                    |     r1 = r4;
    0x00003c94 mov r0, r5                                    |     r0 = r5;
    0x00003c96 blx 0x1444                                    |     r0 = drep_initializeScalar ();
    0x00003c9a cmp r0, 0                                     |     
                                                             |     if (r0 >= 0) {
    0x00003c9c bge 0x3d52                                    |         goto label_5;
                                                             |     }
                                                             | label_11:
    0x00003c9e movs r6, 0                                    |     r6 = 0;
    0x00003ca0 b 0x3d52                                      |     goto label_5;
                                                             | label_16:
    0x00003ca2 cmp r3, 0x28                                  |     
                                                             |     if (r3 != 0x28) {
    0x00003ca4 bne 0x3d44                                    |         goto label_20;
                                                             |     }
    0x00003ca6 ldrb r1, [r2, 1]                              |     r1 = *((r2 + 1));
    0x00003ca8 cmp r1, 0                                     |     
                                                             |     if (r1 != 0) {
    0x00003caa bne 0x3d44                                    |         goto label_20;
                                                             |     }
    0x00003cac blx 0x1510                                    |     r0 = strncmp (r0, r1, r2);
    0x00003cb0 mov r6, r0                                    |     r6 = r0;
    0x00003cb2 blx 0x1334                                    |     fcn_00001334 ();
                                                             |     if (r5 == 0) {
    0x00003cb6 cbz r5, 0x3cd2                                |         goto label_21;
                                                             |     }
    0x00003cb8 ldr r3, [r5, 8]                               |     r3 = *((r5 + 8));
                                                             |     if (r3 == 0) {
    0x00003cba cbz r3, 0x3cd2                                |         goto label_21;
                                                             |     }
                                                             |     do {
    0x00003cbc mov r0, r5                                    |         r0 = r5;
    0x00003cbe blx 0x14b0                                    |         r0 = cli_cleanupGroupContext ();
    0x00003cc2 mov r1, r0                                    |         r1 = r0;
                                                             |         if (r0 == 0) {
    0x00003cc4 cbz r0, 0x3cd2                                |             goto label_21;
                                                             |         }
    0x00003cc6 mov r0, r5                                    |         r0 = r5;
    0x00003cc8 blx 0x1328                                    |         fcn_00001328 ();
    0x00003ccc ldr r3, [r5, 8]                               |         r3 = *((r5 + 8));
    0x00003cce cmp r3, 0                                     |         
    0x00003cd0 bne 0x3cbc                                    |         
                                                             |     } while (r3 != 0);
                                                             | label_21:
    0x00003cd2 adds r7, 1                                    |     r7++;
    0x00003cd4 add.w sb, sp, 0x18                            |     sb += s1;
                                                             |     do {
                                                             | label_2:
    0x00003cd8 mov r3, r7                                    |         r3 = r7;
    0x00003cda mov r2, r8                                    |         r2 = r8;
    0x00003cdc movs r1, 0                                    |         r1 = 0;
    0x00003cde mov r0, sb                                    |         r0 = sb;
    0x00003ce0 bl 0x3a70                                     |         r0 = fcn_00003a70 (r0, r1, r2, r3);
    0x00003ce4 mov r4, r0                                    |         r4 = r0;
    0x00003ce6 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00003ce8 beq 0x3db0                                    |             goto label_22;
                                                             |         }
    0x00003cea mov r1, r0                                    |         r1 = r0;
    0x00003cec mov r0, r6                                    |         r0 = r6;
    0x00003cee blx 0x11e0                                    |         drep_addToList ();
    0x00003cf2 cmp r5, 0                                     |         
    0x00003cf4 beq 0x3cd8                                    |         
                                                             |     } while (r5 == 0);
    0x00003cf6 mov r1, r4                                    |     r1 = r4;
    0x00003cf8 mov r0, r5                                    |     r0 = r5;
    0x00003cfa blx 0x11e0                                    |     drep_addToList ();
    0x00003cfe b 0x3cd8                                      |     goto label_2;
                                                             | label_14:
    0x00003d00 ldr r0, [sp, 0x14]                            |     r0 = var_14h;
    0x00003d02 ldr r1, [sp, 0xc]                             |     r1 = s2;
    0x00003d04 blx 0x1498                                    |     r0 = strcat (r0, r1);
    0x00003d08 mov r4, r0                                    |     r4 = r0;
    0x00003d0a str r0, [sp, 0x18]                            |     s1 = r0;
    0x00003d0c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003d0e beq 0x3dd8                                    |         goto label_23;
                                                             |     }
    0x00003d10 ldrb r3, [r0]                                 |     r3 = *(r0);
    0x00003d12 cmp r3, 0x7d                                  |     
                                                             |     if (r3 != 0x7d) {
    0x00003d14 bne.w 0x3b22                                  |         goto label_0;
                                                             |     }
    0x00003d16 add r7, sp, 0x14                              |     r7 = sp + 0x14;
    0x00003d18 ldrb r0, [r0, 1]                              |     r0 = *((r0 + 1));
    0x00003d1a cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00003d1c bne.w 0x3b22                                  |         goto label_0;
                                                             |     }
    0x00003d20 ldr r1, [pc, 0xfc]                            |     
    0x00003d22 add r1, pc                                    |     
    0x00003d24 add.w r1, r1, 0x158                           |     r1 = 0x7c9e;
    0x00003d28 blx 0x1498                                    |     strcat (r0, r1);
    0x00003d2c b 0x3dcc                                      |     goto label_24;
                                                             | label_13:
    0x00003d2e mov r1, r2                                    |     r1 = r2;
    0x00003d30 mov r0, r5                                    |     r0 = r5;
    0x00003d32 blx 0x12e0                                    |     fcn_000012e0 ();
    0x00003d36 mov r2, r4                                    |     r2 = r4;
    0x00003d38 mov sb, r0                                    |     sb = r0;
    0x00003d3a mov r1, r0                                    |     r1 = r0;
    0x00003d3c mov r0, r5                                    |     r0 = r5;
    0x00003d3e blx 0x1234                                    |     drep_setHashValue ();
    0x00003d42 b 0x3b4a                                      |     goto label_3;
                                                             | label_20:
    0x00003d44 cmp r3, 0x29                                  |     
                                                             |     if (r3 == 0x29) {
    0x00003d46 beq 0x3dc6                                    |         goto label_25;
                                                             |     }
                                                             | label_6:
    0x00003d48 ldr r0, [pc, 0xd8]                            |     
    0x00003d4a movs r6, 0                                    |     r6 = 0;
    0x00003d4c add r0, pc                                    |     r0 = 0x7b74;
    0x00003d4e blx 0x14d4                                    |     cli_getParamInGroup ();
                                                             | label_5:
    0x00003d52 ldr r2, [pc, 0xd4]                            |     
    0x00003d54 ldr r3, [pc, 0xa0]                            |     r3 = *(0x3df8);
    0x00003d56 add r2, pc                                    |     r2 = 0x7b84;
    0x00003d58 ldr r3, [r2, r3]                              |     r3 = *(0x7b84);
    0x00003d5a ldr r2, [r3]                                  |     r2 = *(0x7b84);
    0x00003d5c ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00003d5e eors r2, r3                                   |     r2 ^= r3;
    0x00003d60 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x00003d64 bne 0x3dee                                    |         goto label_26;
                                                             |     }
    0x00003d66 mov r0, r6                                    |     r0 = r6;
    0x00003d68 add sp, 0x24                                  |     
    0x00003d6a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             | label_17:
    0x00003d6e ldr r1, [pc, 0xbc]                            |     
    0x00003d70 adds r0, r7, 1                                |     r0 = r7 + 1;
    0x00003d72 add r1, pc                                    |     r1 = 0x7ba4;
    0x00003d74 blx 0x1498                                    |     strcat (r0, r1);
    0x00003d78 ldr r1, [pc, 0xb4]                            |     
    0x00003d7a mov r4, r0                                    |     r4 = r0;
    0x00003d7c movs r0, 0                                    |     r0 = 0;
    0x00003d7e add r1, pc                                    |     r1 = 0x7bb2;
    0x00003d80 blx 0x1498                                    |     strcat (r0, r1);
    0x00003d84 ldr r1, [pc, 0xac]                            |     
    0x00003d86 movs r0, 0                                    |     r0 = 0;
    0x00003d88 add r1, pc                                    |     
    0x00003d8a add.w r1, r1, 0x158                           |     r1 = 0x7d18;
    0x00003d8e blx 0x1498                                    |     strcat (r0, r1);
    0x00003d92 movs r2, 0                                    |     r2 = 0;
    0x00003d94 mov r7, r0                                    |     r7 = r0;
    0x00003d96 mov r1, r4                                    |     r1 = r4;
    0x00003d98 mov r0, r6                                    |     r0 = r6;
    0x00003d9a blx 0x11bc                                    |     drep_assignStringToCustom ();
    0x00003d9e cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00003da0 beq.w 0x3c14                                  |         goto label_4;
                                                             |     }
    0x00003da4 mov r1, r4                                    |     r1 = r4;
    0x00003da6 mov r0, r5                                    |     r0 = r5;
    0x00003da8 movs r2, 0                                    |     r2 = 0;
    0x00003daa blx 0x11bc                                    |     drep_assignStringToCustom ();
    0x00003dae b 0x3c14                                      |     goto label_4;
                                                             | label_22:
    0x00003db0 ldr r3, [sp, 0x18]                            |     r3 = s1;
    0x00003db2 ldr r2, [sp, 4]                               |     r2 = var_4h;
    0x00003db4 str r3, [r2]                                  |     *(r2) = r3;
    0x00003db6 b 0x3d52                                      |     goto label_5;
                                                             | label_8:
    0x00003db8 ldr r1, [pc, 0x7c]                            |     
    0x00003dba mov r2, r4                                    |     r2 = r4;
    0x00003dbc movs r0, 1                                    |     r0 = 1;
    0x00003dbe add r1, pc                                    |     r1 = 0x7bfa;
    0x00003dc0 blx 0x124c                                    |     printf_chk ()
    0x00003dc4 b 0x3d52                                      |     goto label_5;
                                                             | label_25:
    0x00003dc6 ldrb r6, [r2, 1]                              |     r6 = *((r2 + 1));
    0x00003dc8 cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x00003dca bne 0x3d48                                    |         goto label_6;
                                                             |     }
                                                             | label_24:
    0x00003dcc ldr r3, [sp, 4]                               |     r3 = var_4h;
    0x00003dce str r0, [r3]                                  |     *(r3) = r0;
    0x00003dd0 b 0x3d52                                      |     goto label_5;
                                                             | label_15:
    0x00003dd2 ldr r3, [sp, 4]                               |     r3 = var_4h;
    0x00003dd4 str r0, [r3]                                  |     *(r3) = r0;
    0x00003dd6 b 0x3d52                                      |     goto label_5;
                                                             | label_23:
    0x00003dd8 ldr r0, [pc, 0x60]                            |     
    0x00003dda add r0, pc                                    |     r0 = 0x7c1a;
    0x00003ddc blx 0x14d4                                    |     cli_getParamInGroup ();
    0x00003de0 b 0x3d52                                      |     goto label_5;
                                                             | label_10:
    0x00003de2 ldr r0, [pc, 0x5c]                            |     
    0x00003de4 mov r6, r4                                    |     r6 = r4;
    0x00003de6 add r0, pc                                    |     r0 = 0x7c2c;
    0x00003de8 blx 0x14d4                                    |     cli_getParamInGroup ();
    0x00003dec b 0x3d52                                      |     goto label_5;
                                                             | label_26:
    0x00003dee blx 0x141c                                    |     fcn_0000141c ();
    0x00003df2 nop                                           |     
    0x00003df4 movs r3, 0xf4                                 |     r3 = 0xf4;
    0x00003df6 movs r1, r0                                   |     r1 = r0;
    0x00003df8 lsls r4, r5, 5                                |     r4 = r5 << 5;
    0x00003dfa movs r0, r0                                   |     
    0x00003dfc lsrs r0, r7, 0x1e                             |     r0 = r7 >> 0x1e;
    0x00003dfe movs r0, r0                                   |     
    0x00003e00 subs r6, r5, r2                               |     r6 = r5 - r2;
    0x00003e02 movs r0, r0                                   |     
    0x00003e04 lsrs r0, r4, 0x1e                             |     r0 = r4 >> 0x1e;
    0x00003e06 movs r0, r0                                   |     
    0x00003e08 lsrs r0, r4, 0x1d                             |     r0 = r4 >> 0x1d;
    0x00003e0a movs r0, r0                                   |     
    0x00003e0c lsrs r6, r3, 0x1d                             |     r6 = r3 >> 0x1d;
    0x00003e0e movs r0, r0                                   |     
    0x00003e10 adds r4, r5, r7                               |     r4 = r5 + r7;
    0x00003e12 movs r0, r0                                   |     
    0x00003e14 lsrs r0, r6, 0x1b                             |     r0 = r6 >> 0x1b;
    0x00003e16 movs r0, r0                                   |     
    0x00003e18 lsrs r4, r0, 0x1b                             |     r4 = r0 >> 0x1b;
    0x00003e1a movs r0, r0                                   |     
    0x00003e1c adds r6, r2, r6                               |     r6 = r2 + r6;
    0x00003e1e movs r0, r0                                   |     
    0x00003e20 adds r6, r4, r1                               |     r6 = r4 + r1;
    0x00003e22 movs r0, r0                                   |     
    0x00003e24 lsrs r4, r1, 0x15                             |     r4 = r1 >> 0x15;
    0x00003e26 movs r0, r0                                   |     
    0x00003e28 movs r1, 0x1e                                 |     r1 = 0x1e;
    0x00003e2a movs r1, r0                                   |     r1 = r0;
    0x00003e2c lsrs r6, r0, 0x11                             |     r6 = r0 >> 0x11;
    0x00003e2e movs r0, r0                                   |     
    0x00003e30 lsrs r6, r7, 0x13                             |     r6 = r7 >> 0x13;
    0x00003e32 movs r0, r0                                   |     
    0x00003e34 adds r0, r0, r0                               |     r0 += r0;
    0x00003e36 movs r0, r0                                   |     
    0x00003e38 lsrs r6, r0, 0x13                             |     r6 = r0 >> 0x13;
    0x00003e3a movs r0, r0                                   |     
    0x00003e3c lsrs r2, r6, 0x13                             |     r2 = r6 >> 0x13;
    0x00003e3e movs r0, r0                                   |     
    0x00003e40 lsrs r2, r2, 0x13                             |     r2 >>= 0x13;
    0x00003e42 movs r0, r0                                   |     
    0x00003e44 push {r4, r5, r6, r7, lr}                     |     
    0x00003e46 sub sp, 0x24                                  |     
    0x00003e48 ldr r6, [pc, 0xe4]                            |     
    0x00003e4a mov r5, r1                                    |     r5 = r1;
    0x00003e4c mov r3, r0                                    |     r3 = r0;
    0x00003e4e movs r1, 1                                    |     r1 = 1;
    0x00003e50 ldr r4, [pc, 0xe0]                            |     r4 = *(0x3f34);
    0x00003e52 add r0, sp, 0x18                              |     r0 += var_18h;
    0x00003e54 str r2, [sp, 0xc]                             |     var_ch = r2;
    0x00003e56 add r6, pc                                    |     r6 = 0x7d8a;
    0x00003e58 ldr r2, [pc, 0xdc]                            |     
    0x00003e5a str r5, [sp]                                  |     *(sp) = r5;
    0x00003e5c ldr r4, [r6, r4]                              |     
    0x00003e5e add r2, pc                                    |     r2 = 0x7d9a;
    0x00003e60 ldr r4, [r4]                                  |     r4 = *(0x7d8a);
    0x00003e62 str r4, [sp, 0x1c]                            |     var_1ch_2 = r4;
    0x00003e64 mov.w r4, 0                                   |     r4 = 0;
    0x00003e68 blx 0x12f8                                    |     r0 = fcn_000012f8 ();
    0x00003e6c cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00003e6e blt 0x3ed6                                    |         goto label_27;
                                                             |     }
    0x00003e70 ldr r6, [pc, 0xc8]                            |     
    0x00003e72 add r7, sp, 0x14                              |     r7 += var_14h_3;
    0x00003e74 mov r2, r7                                    |     r2 = r7;
    0x00003e76 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x00003e78 add r6, pc                                    |     r6 = 0x7db8;
    0x00003e7a mov r1, r6                                    |     r1 = r6;
    0x00003e7c blx 0x148c                                    |     strtok (r0, r1);
    0x00003e80 ldr r2, [sp, 0x14]                            |     r2 = var_14h_3;
    0x00003e82 mov r4, r0                                    |     r4 = r0;
    0x00003e84 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00003e86 bne 0x3f04                                    |         goto label_28;
                                                             |     }
    0x00003e88 mov r3, r2                                    |     r3 = r2;
    0x00003e8a mov r1, r0                                    |     r1 = r0;
    0x00003e8c mov r2, r5                                    |     r2 = r5;
    0x00003e8e add r0, sp, 0xc                               |     r0 += var_ch;
    0x00003e90 bl 0x3a70                                     |     r0 = fcn_00003a70 (r0, r1, r2, r3);
    0x00003e94 mov r5, r0                                    |     r5 = r0;
                                                             |     if (r0 == 0) {
    0x00003e96 cbz r0, 0x3ee6                                |         goto label_29;
                                                             |     }
    0x00003e98 mov r2, r6                                    |     r2 = r6;
    0x00003e9a ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x00003e9c mov r3, r7                                    |     r3 = r7;
    0x00003e9e mov r1, r4                                    |     r1 = r4;
    0x00003ea0 blx 0x145c                                    |     ax_log_null ();
    0x00003ea4 ldr r6, [sp, 0x14]                            |     r6 = var_14h_3;
    0x00003ea6 cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x00003ea8 bne 0x3f1a                                    |         goto label_30;
                                                             |     }
    0x00003eaa mov r0, r4                                    |     r0 = r4;
    0x00003eac blx 0x12c8                                    |     fcn_000012c8 ();
    0x00003eb0 mov r0, r5                                    |     r0 = r5;
    0x00003eb2 blx 0x12c8                                    |     fcn_000012c8 ();
    0x00003eb6 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x00003eb8 blx 0x12c8                                    |     fcn_000012c8 ();
                                                             |     do {
                                                             | label_7:
    0x00003ebc ldr r2, [pc, 0x80]                            |         
    0x00003ebe ldr r3, [pc, 0x74]                            |         r3 = *(0x3f36);
    0x00003ec0 add r2, pc                                    |         r2 = 0x7e04;
    0x00003ec2 ldr r3, [r2, r3]                              |         r3 = *(0x7e04);
    0x00003ec4 ldr r2, [r3]                                  |         r2 = *(0x7e04);
    0x00003ec6 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch_2;
    0x00003ec8 eors r2, r3                                   |         r2 ^= r3;
    0x00003eca mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00003ece bne 0x3f16                                    |             goto label_31;
                                                             |         }
    0x00003ed0 mov r0, r6                                    |         r0 = r6;
    0x00003ed2 add sp, 0x24                                  |         
    0x00003ed4 pop {r4, r5, r6, r7, pc}                      |         
                                                             | label_27:
    0x00003ed6 ldr r1, [pc, 0x6c]                            |         
    0x00003ed8 movs r0, 3                                    |         r0 = 3;
    0x00003eda mov.w r6, -1                                  |         r6 = -1;
    0x00003ede add r1, pc                                    |         r1 = 0x7e28;
    0x00003ee0 bl 0x2e64                                     |         fcn_00002e64 ();
    0x00003ee4 b 0x3ebc                                      |         
                                                             |     } while (1);
                                                             | label_29:
    0x00003ee6 ldr r1, [pc, 0x60]                            |     
    0x00003ee8 movs r0, 3                                    |     r0 = 3;
    0x00003eea ldr r2, [sp, 0x18]                            |     r2 = var_18h;
    0x00003eec mov.w r6, -1                                  |     r6 = -1;
    0x00003ef0 add r1, pc                                    |     r1 = 0x7e3e;
    0x00003ef2 bl 0x2e64                                     |     fcn_00002e64 ();
    0x00003ef6 mov r0, r4                                    |     r0 = r4;
    0x00003ef8 blx 0x12c8                                    |     fcn_000012c8 ();
    0x00003efc ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x00003efe blx 0x12c8                                    |     fcn_000012c8 ();
    0x00003f02 b 0x3ebc                                      |     goto label_7;
                                                             | label_28:
    0x00003f04 ldr r1, [pc, 0x44]                            |     
    0x00003f06 movs r0, 3                                    |     r0 = 3;
    0x00003f08 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x00003f0a add r1, pc                                    |     r1 = 0x7e5a;
    0x00003f0c bl 0x2e64                                     |     fcn_00002e64 ();
    0x00003f10 movs r0, 1                                    |     r0 = 1;
    0x00003f12 blx 0x1564                                    |     errno_location ();
                                                             | label_31:
    0x00003f16 blx 0x141c                                    |     fcn_0000141c ();
                                                             | label_30:
    0x00003f1a ldr r1, [pc, 0x34]                            |     
    0x00003f1c movs r0, 3                                    |     r0 = 3;
    0x00003f1e ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x00003f20 mov r2, r6                                    |     r2 = r6;
    0x00003f22 add r1, pc                                    |     r1 = 0x7e78;
    0x00003f24 bl 0x2e64                                     |     fcn_00002e64 ();
    0x00003f28 movs r0, 1                                    |     r0 = 1;
    0x00003f2a blx 0x1564                                    |     errno_location ();
    0x00003f2e nop                                           |     
    0x00003f30 movs r0, 0x1e                                 |     r0 = 0x1e;
    0x00003f32 movs r1, r0                                   |     r1 = r0;
    0x00003f34 lsls r4, r5, 5                                |     r4 = r5 << 5;
    0x00003f36 movs r0, r0                                   |     
    0x00003f38 lsrs r2, r7, 0x11                             |     r2 = r7 >> 0x11;
    0x00003f3a movs r0, r0                                   |     
    0x00003f3c movs r2, 0x84                                 |     r2 = 0x84;
    0x00003f3e movs r1, r0                                   |     r1 = r0;
    0x00003f40 subs r4, r6, 6                                |     r4 = r6 - 6;
    0x00003f42 movs r1, r0                                   |     r1 = r0;
    0x00003f44 lsrs r6, r1, 9                                |     r6 = r1 >> 9;
    0x00003f46 movs r0, r0                                   |     
    0x00003f48 lsrs r0, r4, 0x10                             |     r0 = r4 >> 0x10;
    0x00003f4a movs r0, r0                                   |     
    0x00003f4c lsrs r2, r3, 0xf                              |     r2 = r3 >> 0xf;
    0x00003f4e movs r0, r0                                   |     
    0x00003f50 lsrs r6, r0, 0x10                             |     r6 = r0 >> 0x10;
    0x00003f52 movs r0, r0                                   |     
                                                             | }

[*] Function printf used 4 times parhandclient