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