[*] 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