[*] Binary protection state of custfwcerts.cgi

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


[*] Function system tear down of custfwcerts.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/secure_boot/custfwcerts.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/secure_boot/custfwcerts.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 custfwcerts.cgi