[*] Binary protection state of firmwaremanagement.cgi
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function system tear down of firmwaremanagement.cgi
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/html/axis-cgi/firmwaremanagement.cgi @ 0x20ac */
| #include <stdint.h>
|
; (fcn) fcn.000020ac () | void fcn_000020ac (int16_t arg_10000h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_2;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_3ch;
| int16_t var_40h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000020ac mov r5, r2 | r5 = r2;
0x000020ae ldr r2, [pc, 0x248] |
0x000020b0 ldr r3, [pc, 0x248] | r3 = *(0x22fc);
0x000020b2 mov r6, r1 | r6 = r1;
0x000020b4 push {r7, lr} |
0x000020b6 sub.w sp, sp, 0x10000 |
0x000020ba add r2, pc | r2 = 0x43b8;
0x000020bc sub sp, 0x40 |
0x000020be add.w r1, sp, 0x10000 | r1 += arg_10000h;
0x000020c2 add r4, sp, 0x40 | r4 += var_40h;
0x000020c4 ldr r3, [r2, r3] |
0x000020c6 mov r7, r0 | r7 = r0;
0x000020c8 sub.w r0, r4, 0xc | r0 = r4 - 0xc;
0x000020cc adds r1, 0x3c | r1 += 0x3c;
0x000020ce ldr r3, [r3] | r3 = *(0x43b8);
0x000020d0 str r3, [r1] | *(r1) = r3;
0x000020d2 mov.w r3, 0 | r3 = 0;
0x000020d6 blx 0x1304 | r0 = pipe ();
0x000020da cmp r0, 0 |
| if (r0 < 0) {
0x000020dc blt 0x21a6 | goto label_6;
| }
0x000020de mov.w r8, 0 | r8 = 0;
0x000020e2 mov r0, r4 | r0 = r4;
0x000020e4 str r8, [r0, -0x1c]! | *((r0 -= 0x1c)) = r8;
0x000020e8 blx 0x1118 | r0 = sd_bus_open_system ()
0x000020ec cmp r0, r8 |
| if (r0 < r8) {
0x000020ee blt 0x219a | goto label_7;
| }
0x000020f0 ldr r3, [pc, 0x20c] |
0x000020f2 mov r1, r4 | r1 = r4;
0x000020f4 ldr r2, [pc, 0x20c] |
0x000020f6 add r3, pc | r3 = 0x43fa;
0x000020f8 str r3, [sp, 4] | var_4h = r3;
0x000020fa add r2, pc | r2 = 0x4402;
0x000020fc ldr r3, [pc, 0x208] |
0x000020fe str r2, [sp] | *(sp) = r2;
0x00002100 str r8, [r1, -0x18]! | *((r1 -= 0x18)) = r8;
0x00002104 ldr r0, [r4, -0x1c] | r0 = *((r4 - 0x1c));
0x00002108 add r3, pc | r3 = 0x4414;
0x0000210a blx 0x1160 | r0 = sd_bus_message_new_method_call ();
0x0000210e cmp r0, 0 |
| if (r0 < 0) {
0x00002110 blt 0x21d0 | goto label_8;
| }
0x00002112 ldr r3, [pc, 0x1f8] |
0x00002114 ldr r0, [r4, -0x18] | r0 = *((r4 - 0x18));
0x00002116 lsrs r0, r3, 0x10 | r0 = r3 >> 0x10;
0x00002118 ldr ip, [r4, -0xc] | ip = *((r4 - 0xc));
0x0000211c add r3, pc | r3 = 0x442e;
0x0000211e ldr r2, [r3, 0x10] | r2 = *(0x443e);
0x00002120 cmp r2, 0 |
| if (r2 == 0) {
0x00002122 beq 0x21ca | goto label_9;
| }
| label_1:
0x00002124 ldr r3, [pc, 0x1e8] |
0x00002126 add r3, pc | r3 = 0x443a;
0x00002128 ldr r1, [r3, 0x14] | r1 = *(0x444e);
0x0000212a cmp r1, 0 |
| if (r1 == 0) {
0x0000212c beq 0x21c4 | goto label_10;
| }
| label_0:
0x0000212e ldr r3, [pc, 0x1e4] |
0x00002130 add r3, pc |
0x00002132 ldr r3, [r3, 0x18] | r3 = *(0x4462);
0x00002134 cmp r3, 0 |
0x00002136 beq 0x21be |
| while (1) {
0x00002138 str r2, [sp, 8] | var_8h = r2;
0x0000213a ldr r2, [pc, 0x1dc] |
0x0000213c str r1, [sp, 0x10] | var_10h = r1;
0x0000213e ldr r1, [pc, 0x1dc] |
0x00002140 add r2, pc | r2 = 0x445e;
0x00002142 str r3, [sp, 0x18] | var_18h = r3;
0x00002144 str r2, [sp, 0x14] | var_14h = r2;
0x00002146 mov r3, ip | r3 = ip;
0x00002148 ldr r2, [pc, 0x1d4] |
0x0000214a add r1, pc | r1 = 0x446c;
0x0000214c add r2, pc | r2 = 0x4470;
0x0000214e str r2, [sp, 0xc] | var_ch = r2;
0x00002150 ldr r2, [pc, 0x1d0] |
0x00002152 add r2, pc | r2 = 0x447a;
0x00002154 str r2, [sp, 4] | var_4h = r2;
0x00002156 movs r2, 3 | r2 = 3;
0x00002158 str r2, [sp] | *(sp) = r2;
0x0000215a mov r2, r7 | r2 = r7;
0x0000215c blx 0x1058 | r0 = sd_bus_message_append ();
0x00002160 cmp r0, 0 |
| if (r0 >= 0) {
0x00002162 blt 0x21b2 |
0x00002164 adr r3, 0x188 | r3 = 0x188;
0x00002166 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x0000216a movs r1, 0 | r1 = 0;
0x0000216c str r1, [sp] | *(sp) = r1;
0x0000216e strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [sp, 8]");
0x00002172 ldr r3, [pc, 0x1b4] |
0x00002174 ldrd r0, r2, [r4, -0x1c] | __asm ("ldrd r0, r2, [r4, -0x1c]");
0x00002178 add r3, pc | r3 = 0x44a6;
0x0000217a blx 0x1004 | r0 = sd_bus_call_async ();
0x0000217e cmp r0, 0 |
| if (r0 >= 0) {
0x00002180 blt 0x218e |
0x00002182 ldr r0, [r4, -0x1c] | r0 = *((r4 - 0x1c));
0x00002186 blx 0x1028 | r0 = sd_bus_flush ();
0x0000218a cmp r0, 0 |
| if (r0 >= 0) {
0x0000218c bge 0x21dc | goto label_11;
| }
| }
0x0000218e ldr r1, [pc, 0x19c] |
0x00002190 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x00002194 add r1, pc | r1 = 0x44c6;
0x00002196 bl 0x2078 | fcn_00002078 (r0, r1);
| label_7:
0x0000219a ldr r1, [pc, 0x194] |
0x0000219c mov.w r0, 0x1f4 | r0 = 0x1f4;
0x000021a0 add r1, pc | r1 = 0x44d6;
0x000021a2 bl 0x2078 | fcn_00002078 (r0, r1);
0x000021a4 invalid |
| label_6:
0x000021a6 ldr r1, [pc, 0x18c] |
0x000021a8 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x000021ac add r1, pc | r1 = 0x44e6;
0x000021ae bl 0x2078 | fcn_00002078 (r0, r1);
| }
0x000021b2 ldr r1, [pc, 0x184] |
0x000021b4 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x000021b8 add r1, pc | r1 = 0x44f6;
0x000021ba bl 0x2078 | fcn_00002078 (r0, r1);
0x000021be ldr r3, [pc, 0x17c] |
0x000021c0 add r3, pc | r3 = 0x4502;
0x000021c2 b 0x2138 |
| }
| label_10:
0x000021c4 ldr r1, [pc, 0x178] |
0x000021c6 add r1, pc | r1 = 0x450a;
0x000021c8 b 0x212e | goto label_0;
| label_9:
0x000021ca ldr r2, [pc, 0x178] |
0x000021cc add r2, pc | r2 = 0x4516;
0x000021ce b 0x2124 | goto label_1;
| label_8:
0x000021d0 ldr r1, [pc, 0x174] |
0x000021d2 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x000021d6 add r1, pc | r1 = 0x4522;
0x000021d8 bl 0x2078 | fcn_00002078 (r0, r1);
| label_11:
0x000021dc ldr r0, [r4, -0xc] | r0 = *((r4 - 0xc));
0x000021e0 blx 0x1124 | close (r0);
0x000021e4 cmp r5, 0 |
| if (r5 != 0) {
0x000021e6 bne 0x22b4 | goto label_12;
| }
| label_5:
0x000021e8 add.w r8, sp, 0x3c | r8 += var_3ch;
| if (r7 == 0) {
| label_2:
0x000021ec cbz r7, 0x2252 | goto label_13;
| }
0x000021ee cmp.w r7, 0x10000 |
0x000021f2 mov r6, r7 | r6 = r7;
0x000021f4 it hs |
0x000021f6 movhs r6, 0x10000 | r6 = 0x10000;
| while (r3 == 4) {
0x000021fa mov r2, r6 | r2 = r6;
0x000021fc mov r1, r8 | r1 = r8;
0x000021fe movs r0, 0 | r0 = 0;
0x00002200 blx 0x1130 | r0 = read (r0, r1, r2);
0x00002204 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x00002206 bge 0x221e | goto label_14;
| }
0x00002208 blx 0x1274 | r0 = errno_location ();
0x0000220c ldr r3, [r0] | r3 = *(r0);
0x0000220e cmp r3, 4 |
0x00002210 beq 0x21fa |
| }
0x00002212 ldr r1, [pc, 0x138] |
0x00002214 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x00002216 strb r2, [r7, 3] | *((r7 + 3)) = r2;
0x00002218 add r1, pc | r1 = 0x456a;
0x0000221a bl 0x2078 | fcn_00002078 (r0, r1);
| if (r3 == 4) {
| label_14:
0x0000221e beq 0x22e0 | goto label_15;
| }
0x00002220 ldr r2, [pc, 0x12c] |
0x00002222 movs r6, 0 | r6 = 0;
0x00002224 add r2, pc | r2 = 0x4578;
0x00002226 ldr r3, [r2] | r3 = *(0x4578);
0x00002228 subs r3, r3, r5 | r3 -= r5;
0x0000222a str r3, [r2] | *(r2) = r3;
| do {
0x0000222c ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x00002230 subs r2, r5, r6 | r2 = r5 - r6;
0x00002232 add.w r1, r8, r6 | r1 = r8 + r6;
0x00002236 blx 0x1220 | r0 = write (r0, r1, r2);
0x0000223a cmp r0, 0 |
| if (r0 < 0) {
0x0000223c blt 0x2248 | goto label_16;
| }
0x0000223e add r6, r0 | r6 += r0;
| label_3:
0x00002240 cmp r5, r6 |
0x00002242 bgt 0x222c |
| } while (r5 > r6);
0x00002244 subs r7, r7, r5 | r7 -= r5;
0x00002246 b 0x21ec | goto label_2;
| label_16:
0x00002248 blx 0x1274 | r0 = errno_location ();
0x0000224c ldr r3, [r0] | r3 = *(r0);
0x0000224e cmp r3, 4 |
| if (r3 == 4) {
0x00002250 beq 0x2240 | goto label_3;
| }
| label_13:
0x00002252 ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x00002256 sub.w r6, r4, 0x14 | r6 = r4 - 0x14;
0x0000225a blx 0x1124 | close (r0);
0x0000225e mov r1, r6 | r1 = r6;
0x00002260 movs r0, 1 | r0 = 1;
0x00002262 blx 0x1184 | clock_gettime ();
0x00002266 ldr r5, [r4, -0x14] | r5 = *((r4 - 0x14));
0x0000226a movw r7, 0x4240 |
0x0000226c movs r7, 0x40 |
0x0000226e movt r7, 0xf | r7 = 0xf4240;
0x00002272 adds r5, 0x5a | r5 += 0x5a;
| do {
| label_4:
0x00002274 ldr r0, [r4, -0x1c] | r0 = *((r4 - 0x1c));
0x00002278 movs r1, 0 | r1 = 0;
0x0000227a blx 0x11e4 | r0 = sd_bus_process ();
0x0000227e cmp r0, 0 |
| if (r0 < 0) {
0x00002280 blt 0x22a8 | goto label_17;
| }
0x00002282 bne 0x2274 |
| } while (r0 != 0);
0x00002284 mov r1, r6 | r1 = r6;
0x00002286 movs r0, 1 | r0 = 1;
0x00002288 blx 0x1184 | clock_gettime ();
0x0000228c ldr r2, [r4, -0x14] | r2 = *((r4 - 0x14));
0x00002290 cmp r2, r5 |
| if (r2 >= r5) {
0x00002292 bge 0x22d4 | goto label_18;
| }
0x00002294 subs r2, r5, r2 | r2 = r5 - r2;
0x00002296 ldr r0, [r4, -0x1c] | r0 = *((r4 - 0x1c));
0x0000229a mul r2, r7, r2 | r2 = r7 * r2;
0x0000229e asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x000022a0 blx 0x104c | sd_bus_wait ();
0x000022a2 cdp p8, 0xd, c2, c4, c0, 0 | __asm ("cdp p8, 0xd, c2, c4, c0, 0");
| if (r2 >= r5) {
0x000022a6 bge 0x2274 | goto label_4;
| }
| label_17:
0x000022a8 ldr r1, [pc, 0xa8] |
0x000022aa mov.w r0, 0x1f4 | r0 = 0x1f4;
0x000022ae add r1, pc | r1 = 0x4606;
0x000022b0 bl 0x2078 | fcn_00002078 (r0, r1);
| label_12:
0x000022b4 ldr r0, [r4, -0x8] | r0 = *((r4 - 0x8));
0x000022b8 mov r2, r5 | r2 = r5;
0x000022ba mov r1, r6 | r1 = r6;
0x000022bc blx 0x1220 | r0 = write (r0, r1, r2);
0x000022c0 cmp r0, r5 |
| if (r0 != r5) {
0x000022c2 beq 0x22d0 |
0x000022c4 ldr r1, [pc, 0x90] |
0x000022c6 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x000022ca add r1, pc | r1 = 0x4626;
0x000022cc bl 0x2078 | fcn_00002078 (r0, r1);
| }
0x000022d0 subs r7, r7, r5 | r7 -= r5;
0x000022d2 b 0x21e8 | goto label_5;
| label_18:
0x000022d4 ldr r1, [pc, 0x84] |
0x000022d6 mov.w r0, 0x1f4 | r0 = 0x1f4;
0x000022da add r1, pc | r1 = 0x463a;
0x000022dc bl 0x2078 | fcn_00002078 (r0, r1);
| label_15:
0x000022e0 ldr r1, [pc, 0x7c] |
0x000022e2 mov.w r0, 0x190 | r0 = 0x190;
0x000022e6 add r1, pc | r1 = 0x464a;
0x000022e8 bl 0x2078 | fcn_00002078 (r0, r1);
0x000022ec nop.w |
| if (r7 < r7) {
0x000022f0 bhs 0x22f4 |
0x000022f2 ldr r1, [r1, 0x34] | r1 = *((r1 + 0x34));
| }
0x000022f4 movs r0, r0 |
0x000022f6 movs r0, r0 |
0x000022f8 subs r6, 2 | r6 -= 2;
0x000022fa movs r0, r0 |
0x000022fc lsls r4, r4, 4 | r4 <<= 4;
0x000022fe movs r0, r0 |
0x00002300 asrs r2, r3, 1 | r2 = r3 >> 1;
0x00002302 movs r0, r0 |
0x00002304 asrs r2, r7, 0x20 | r2 = r7 >> 0x20;
0x00002306 movs r0, r0 |
0x00002308 asrs r0, r2, 0x20 | r0 = r2 >> 0x20;
0x0000230a movs r0, r0 |
0x0000230c subs r6, 0xec | r6 -= 0xec;
0x0000230e movs r0, r0 |
0x00002310 subs r6, 0xe2 | r6 -= 0xe2;
0x00002312 movs r0, r0 |
0x00002314 subs r6, 0xd8 | r6 -= 0xd8;
0x00002316 movs r0, r0 |
0x00002318 asrs r0, r0, 1 | r0 >>= 1;
0x0000231a movs r0, r0 |
0x0000231c asrs r6, r5, 0x20 | r6 = r5 >> 0x20;
0x0000231e movs r0, r0 |
0x00002320 asrs r4, r0, 1 | r4 = r0 >> 1;
0x00002322 movs r0, r0 |
0x00002324 asrs r2, r1, 1 | r2 = r1 >> 1;
0x00002326 movs r0, r0 |
0x00002328 lsls r5, r3, 0xe | r5 = r3 << 0xe;
0x0000232a movs r0, r0 |
0x0000232c asrs r4, r0, 1 | r4 = r0 >> 1;
0x0000232e movs r0, r0 |
0x00002330 lsrs r0, r3, 0x1d | r0 = r3 >> 0x1d;
0x00002332 movs r0, r0 |
0x00002334 lsrs r0, r5, 0x1c | r0 = r5 >> 0x1c;
0x00002336 movs r0, r0 |
0x00002338 lsrs r0, r7, 0x1f | r0 = r7 >> 0x1f;
0x0000233a movs r0, r0 |
0x0000233c lsrs r4, r1, 0x1c | r4 = r1 >> 0x1c;
0x0000233e movs r0, r0 |
0x00002340 lsrs r6, r0, 0x1c | r6 = r0 >> 0x1c;
0x00002342 movs r0, r0 |
0x00002344 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
0x00002346 movs r0, r0 |
0x00002348 lsrs r2, r0, 0x1e | r2 = r0 >> 0x1e;
0x0000234a movs r0, r0 |
0x0000234c asrs r0, r0, 0x20 | r0 >>= 0x20;
0x0000234e movs r0, r0 |
0x00002350 subs r5, 0xe4 | r5 -= 0xe4;
0x00002352 movs r0, r0 |
0x00002354 lsrs r6, r5, 0x1e | r6 = r5 >> 0x1e;
0x00002356 movs r0, r0 |
0x00002358 lsrs r2, r5, 0x1c | r2 = r5 >> 0x1c;
0x0000235a movs r0, r0 |
0x0000235c lsrs r2, r3, 0x1e | r2 = r3 >> 0x1e;
0x0000235e movs r0, r0 |
0x00002360 lsrs r6, r2, 0x1d | r6 = r2 >> 0x1d;
0x00002362 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/html/axis-cgi/firmwaremanagement.cgi @ 0x258c */
| #include <stdint.h>
|
; (fcn) fcn.0000258c () | void fcn_0000258c (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_14h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h;
| int32_t var_18h_2;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000258c mov r5, r2 | r5 = r2;
0x0000258e ldr r2, [pc, 0x120] |
0x00002590 ldr r3, [pc, 0x120] | r3 = *(0x26b4);
0x00002592 push {r7, lr} |
0x00002594 sub sp, 0x28 |
0x00002596 add r2, pc | r2 = 0x4c4c;
0x00002598 ldr r3, [r2, r3] |
0x0000259a ldr r3, [r3] | r3 = *(0x4c4c);
0x0000259c str r3, [sp, 0x24] | var_24h = r3;
0x0000259e mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x000025a2 cbz r0, 0x25cc | goto label_0;
| }
0x000025a4 ldr r3, [pc, 0x110] |
0x000025a6 add r3, pc |
0x000025a8 ldr r3, [r3, 0x1c] | r3 = *(0x4c7e);
0x000025aa cmp r3, 0 |
| if (r3 != 0) {
0x000025ac bne 0x266c | goto label_1;
| }
0x000025ae mov r6, r1 | r6 = r1;
0x000025b0 mov r4, r0 | r4 = r0;
0x000025b2 blx 0x1208 | r0 = malloc (r0);
0x000025b6 mov r7, r0 | r7 = r0;
0x000025b8 cmp r5, 0 |
0x000025ba bne 0x2690 |
| while (1) {
0x000025bc subs r1, r4, r5 | r1 = r4 - r5;
0x000025be adds r0, r7, r5 | r0 = r7 + r5;
0x000025c0 bl 0x1f60 | fcn_00001f60 (r0, r1);
0x000025c4 ldr r3, [pc, 0xf4] |
0x000025c6 add r3, pc | r3 = 0x4c86;
0x000025c8 strd r4, r7, [r3, 0x1c] | __asm ("strd r4, r7, [r3, 0x1c]");
| label_0:
0x000025cc movs r4, 0 | r4 = 0;
0x000025ce add r0, sp, 8 | r0 += var_8h;
0x000025d0 str r4, [sp, 8] | var_8h = r4;
0x000025d2 blx 0x1118 | r0 = sd_bus_open_system ()
0x000025d6 cmp r0, r4 |
| if (r0 >= r4) {
0x000025d8 blt 0x2678 |
0x000025da ldr r2, [pc, 0xe4] |
0x000025dc ldr r1, [pc, 0xe4] |
0x000025de ldr r3, [pc, 0xe8] |
0x000025e0 add r2, pc | r2 = 0x4ca6;
0x000025e2 ldr r0, [sp, 8] | r0 = var_8h;
0x000025e4 add r1, pc | r1 = 0x4cac;
0x000025e6 str r4, [sp, 0xc] | var_ch = r4;
0x000025e8 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x000025ec add r3, pc | r3 = 0x4cba;
0x000025ee add r1, sp, 0xc | r1 += var_ch;
0x000025f0 blx 0x1160 | r0 = sd_bus_message_new_method_call ();
0x000025f4 cmp r0, 0 |
| if (r0 < 0) {
0x000025f6 blt 0x2684 | goto label_2;
| }
0x000025f8 ldr r2, [pc, 0xd0] |
0x000025fa movs r1, 0x79 | r1 = 0x79;
0x000025fc ldr r0, [sp, 0xc] | r0 = var_ch;
0x000025fe add r2, pc | r2 = 0x4cce;
0x00002600 ldrd r3, r2, [r2, 0x1c] | __asm ("ldrd r3, r2, [r2, 0x1c]");
0x00002604 blx 0x1190 | r0 = sd_bus_message_append_array ();
0x00002608 cmp r0, 0 |
| if (r0 < 0) {
0x0000260a blt 0x2684 | goto label_2;
| }
0x0000260c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00002610 add r5, sp, 0x10 | r5 += var_10h;
0x00002612 str r5, [sp, 4] | var_4h = r5;
0x00002614 add r5, sp, 0x18 | r5 += var_18h;
0x00002616 ldrd r0, r1, [sp, 8] | __asm ("ldrd r0, r1, [var_8h]");
0x0000261a movs r2, 0 | r2 = 0;
0x0000261c movs r3, 0 | r3 = 0;
0x0000261e str r5, [sp] | *(sp) = r5;
0x00002620 vstr d16, [sp, 0x18] | __asm ("vstr d16, [sp, 0x18]");
0x00002624 str r4, [sp, 0x20] | var_20h = r4;
0x00002626 str r4, [sp, 0x10] | var_10h = r4;
0x00002628 blx 0x122c | r0 = sd_bus_call ();
0x0000262c cmp r0, 0 |
| if (r0 < 0) {
0x0000262e blt 0x269a | goto label_3;
| }
0x00002630 ldr r1, [pc, 0x9c] |
0x00002632 add r2, sp, 0x14 | r2 += var_14h_2;
0x00002634 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00002636 add r1, pc | r1 = 0x4d0a;
0x00002638 blx 0x10c4 | r0 = sd_bus_message_read ();
0x0000263c cmp r0, 0 |
| if (r0 < 0) {
0x0000263e blt 0x26a2 | goto label_4;
| }
0x00002640 ldr r1, [pc, 0x90] |
0x00002642 ldr r0, [pc, 0x94] |
0x00002644 ldr r2, [sp, 0x14] | r2 = var_14h_2;
0x00002646 add r1, pc | r1 = 0x4d1e;
0x00002648 add r0, pc | r0 = 0x4d26;
0x0000264a blx 0x10d0 | r0 = json_pack ();
0x0000264e mov r4, r0 | r4 = r0;
0x00002650 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00002652 blx 0x1154 | sd_bus_message_unref ();
0x00002656 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00002658 blx 0x1154 | sd_bus_message_unref ();
0x0000265c ldr r0, [sp, 8] | r0 = var_8h;
0x0000265e blx 0x11cc | sd_bus_unref ();
0x00002662 ldr r0, [pc, 0x78] |
0x00002664 mov r1, r4 | r1 = r4;
0x00002666 add r0, pc | r0 = 0x4d48;
0x00002668 bl 0x1fb0 | fcn_00001fb0 (r0, r1);
| label_1:
0x0000266c ldr r1, [pc, 0x70] |
0x0000266e mov.w r0, 0x3e8 | r0 = 0x3e8;
0x00002672 add r1, pc | r1 = 0x4d56;
0x00002674 bl 0x2078 | fcn_00002078 (r0, r1);
| }
0x00002678 ldr r1, [pc, 0x68] |
0x0000267a movw r0, 0x3eb | r0 = 0x3eb;
0x0000267e add r1, pc | r1 = 0x4d66;
0x00002680 bl 0x2078 | fcn_00002078 (r0, r1);
| label_2:
0x00002684 ldr r1, [pc, 0x60] |
0x00002686 movw r0, 0x3eb | r0 = 0x3eb;
0x0000268a add r1, pc | r1 = 0x4d76;
0x0000268c bl 0x2078 | fcn_00002078 (r0, r1);
0x00002690 mov r1, r6 | r1 = r6;
0x00002692 mov r2, r5 | r2 = r5;
0x00002694 blx 0x11f0 | memcpy (r0, r1, r2);
0x00002698 b 0x25bc |
| }
| label_3:
0x0000269a ldrd r0, r1, [sp, 0x18] | __asm ("ldrd r0, r1, [var_18h]");
0x0000269e bl 0x2384 | fcn_00002384 (r0, r1);
| label_4:
0x000026a2 ldr r1, [pc, 0x48] |
0x000026a4 movw r0, 0x3eb | r0 = 0x3eb;
0x000026a8 add r1, pc | r1 = 0x4d9a;
0x000026aa bl 0x2078 | fcn_00002078 (r0, r1);
0x000026ac stc2l p15, c11, [r5], 0 | __asm ("stc2l p15, c11, [r5], 0");
0x000026b0 subs r1, 0x26 | r1 -= 0x26;
0x000026b2 movs r0, r0 |
0x000026b4 lsls r4, r4, 4 | r4 <<= 4;
0x000026b6 movs r0, r0 |
0x000026b8 subs r2, 0x62 | r2 -= 0x62;
0x000026ba movs r0, r0 |
0x000026bc subs r2, 0x42 | r2 -= 0x42;
0x000026be movs r0, r0 |
0x000026c0 asrs r4, r0, 1 | r4 = r0 >> 1;
0x000026c2 movs r0, r0 |
0x000026c4 asrs r0, r5, 1 | r0 = r5 >> 1;
0x000026c6 movs r0, r0 |
0x000026c8 asrs r0, r2, 0x20 | r0 = r2 >> 0x20;
0x000026ca movs r0, r0 |
0x000026cc subs r2, 0xa | r2 -= 0xa;
0x000026ce movs r0, r0 |
0x000026d0 asrs r2, r7, 0x1b | r2 = r7 >> 0x1b;
0x000026d2 movs r0, r0 |
0x000026d4 asrs r6, r7, 0x20 | r6 = r7 >> 0x20;
0x000026d6 movs r0, r0 |
0x000026d8 lsrs r4, r1, 8 | r4 = r1 >> 8;
0x000026da movs r0, r0 |
0x000026dc lsrs r6, r4, 0x1d | r6 = r4 >> 0x1d;
0x000026de movs r0, r0 |
0x000026e0 lsrs r2, r4, 0x1d | r2 = r4 >> 0x1d;
0x000026e2 movs r0, r0 |
0x000026e4 lsrs r2, r7, 9 | r2 = r7 >> 9;
0x000026e6 movs r0, r0 |
0x000026e8 asrs r2, r0, 0x20 | r2 = r0 >> 0x20;
0x000026ea movs r0, r0 |
0x000026ec lsrs r4, r5, 0x1e | r4 = r5 >> 0x1e;
0x000026ee movs r0, r0 |
| }
[*] Function system used 3 times firmwaremanagement.cgi