[*] Binary protection state of systemd
Full RELRO Canary found NX enabled PIE enabled RPATH No RUNPATH No Symbols
[*] Function system tear down of systemd
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/systemd/systemd @ 0x8217c */
| #include <stdint.h>
|
; (fcn) fcn.0008217c () | void fcn_0008217c (int16_t arg_90h, uint32_t arg1, uint32_t arg3, uint32_t arg4) {
| int16_t var_0h;
| int16_t var_1h;
| int16_t var_50h;
| int16_t var_68h;
| int16_t var_74h;
| r0 = arg1;
| r2 = arg3;
| r3 = arg4;
0x0008217c push.w {r4, r5, r6, r7, r8, lr} |
0x00082180 mov r5, r2 | r5 = r2;
0x00082182 ldr r2, [pc, 0x88] |
0x00082184 mov r7, r3 | r7 = r3;
0x00082186 sub sp, 0x78 |
0x00082188 mov r4, r0 | r4 = r0;
0x0008218a ldr r3, [pc, 0x84] | r3 = *(0x82212);
0x0008218c add r2, pc | r2 = 0x10439e;
0x0008218e ldrb.w r6, [sp, 0x90] | r6 = *(arg_90h);
0x00082192 ldr r3, [r2, r3] |
0x00082194 ldr r3, [r3] | r3 = imp.specifier_group_name;
0x00082196 str r3, [sp, 0x74] | var_74h = r3;
0x00082198 mov.w r3, 0 | r3 = 0;
| if (r0 == 0) {
0x0008219c cbz r0, 0x821b8 | void (*0x821b8)() ();
| }
0x0008219e ldr r1, [pc, 0x74] |
0x000821a0 add.w ip, sp, 0x68 |
0x000821a2 lsrs r0, r5, 0x11 | r0 = r5 >> 0x11;
0x000821a4 add r1, pc | r1 = 0x1043be;
0x000821a6 ldm r1, {r0, r1, r2} | r0 = *(r1);
| r1 = *((r1 + 4));
| r2 = *((r1 + 8));
0x000821a8 stm.w ip, {r0, r1, r2} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
0x000821ac mov r1, ip | r1 = ip;
0x000821ae mov r0, r4 | r0 = r4;
0x000821b0 blx 0x18e0c | r0 = base_filesystem_create ()
| if (r0 != 0) {
0x000821b4 cbz r0, 0x821d2 |
0x000821b6 movs r0, 0 | r0 = 0;
| }
0x000821d2 mov r8, sp | r8 = sp;
0x000821d4 mov r0, r4 | r0 = r4;
0x000821d6 mov r1, r8 | r1 = r8;
0x000821d8 blx 0x197ac | r0 = fcn_000197ac ();
0x000821dc cmp r0, 0 |
0x000821de it lt |
| if (r0 < 0) {
0x000821e0 movlt r0, 1 | r0 = 1;
| goto label_0;
| }
| if (r0 < 0) {
| label_0:
0x000821e2 blt 0x821b8 | void (*0x821b8)() ();
| }
| if (r6 != 0) {
0x000821e4 cbz r6, 0x821f4 |
0x000821e6 mov r0, r8 | r0 = r8;
0x000821e8 blx 0x1a3e0 | fcn_0001a3e0 ();
0x000821ec eor r0, r0, 1 | r0 ^= var_1h;
| }
0x000821f4 add r0, sp, 0x50 | r0 += var_50h;
0x000821f6 blx 0x1ae6c | r0 = fcn_0001ae6c ();
0x000821fa cmp r5, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/systemd/systemd @ 0xaf9ec */
| #include <stdint.h>
|
; (fcn) fcn.000af9ec () | void fcn_000af9ec (uint32_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_ch;
| int32_t var_ch_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int32_t var_40h_2;
| int16_t var_48h;
| int16_t var_58h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_b0h;
| int16_t var_bch;
| r0 = arg1;
| r1 = arg2;
0x000af9ec blmi 0xfee824cc | __asm ("blmi aav.0x000802b6");
0x000af9f0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000af9f4 sub sp, 0xc4 |
0x000af9f6 add r2, pc | r2 += pc;
0x000af9f8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000af9fa ldr r3, [r3] | r3 = *(r3);
0x000af9fc str r3, [sp, 0xbc] | var_bch = r3;
0x000af9fe mov.w r3, 0 | r3 = 0;
0x000afa02 cmp r0, 0 |
| if (r0 == 0) {
0x000afa04 beq.w 0xafc4c | goto label_10;
| }
0x000afa08 mov r4, r1 | r4 = r1;
0x000afa0a mov r5, r0 | r5 = r0;
0x000afa0c add r1, sp, 0x30 | r1 += var_30h;
0x000afa0e mov r0, r4 | r0 = r4;
0x000afa10 blx 0x1b6ac | r0 = fcn_0001b6ac ();
0x000afa14 cmp r0, 0 |
| if (r0 < 0) {
0x000afa16 blt 0xafb00 | goto label_11;
| }
0x000afa18 ldr r2, [sp, 0x30] | r2 = var_30h;
0x000afa1a movs r3, 1 | r3 = 1;
0x000afa1c mov r1, r4 | r1 = r4;
0x000afa1e mov r0, r5 | r0 = r5;
0x000afa20 bl 0xaecdc | r0 = fcn_000aecdc (r0, r1, r2, r3);
0x000afa24 cmp r0, 0 |
| if (r0 < 0) {
0x000afa26 blt 0xafb00 | goto label_11;
| }
0x000afa28 add r1, sp, 0x34 | r1 += var_34h;
0x000afa2a mov r0, r4 | r0 = r4;
0x000afa2c blx 0x18cb0 | r0 = open_serialization_fd ();
0x000afa30 cmp r0, 0 |
| if (r0 >= 0) {
0x000afa32 bge.w 0xafc08 | goto label_12;
| }
0x000afa36 add r1, sp, 0x40 | r1 += var_40h;
0x000afa38 mov r0, r4 | r0 = r4;
0x000afa3a blx 0x1a320 | r0 = fcn_0001a320 ();
0x000afa3e cmp r0, 0 |
| if (r0 >= 0) {
0x000afa40 bge.w 0xafb8a | goto label_6;
| }
| label_3:
0x000afa44 ldr r1, [pc, 0x288] |
0x000afa46 add r6, sp, 0x38 | r6 += var_38h;
0x000afa48 mov r2, r6 | r2 = r6;
0x000afa4a mov r0, r4 | r0 = r4;
0x000afa4c add r1, pc | r1 = 0x15f720;
0x000afa4e blx 0x18584 | r0 = sd_device_get_property_value ();
0x000afa52 cmp r0, 0 |
| if (r0 < 0) {
0x000afa54 blt 0xafb00 | goto label_11;
| }
0x000afa56 ldr r3, [pc, 0x27c] |
0x000afa58 add.w r8, sp, 0x3c | r8 += var_3ch;
0x000afa5c ldr r7, [pc, 0x278] |
0x000afa5e mov fp, r5 |
0x000afa60 ldr.w sb, [pc, 0x278] |
0x000afa64 add r3, pc | r3 = 0x15f73e;
0x000afa66 str r3, [sp, 0x24] | var_24h = r3;
0x000afa68 add r7, pc | r7 = 0x15f744;
0x000afa6a ldr r3, [pc, 0x274] |
0x000afa6c add sb, pc | sb = 0x15f74c;
0x000afa6e add.w sl, r7, 7 | sl = r7 + 7;
0x000afa72 add.w sb, sb, 7 | sb += 7;
0x000afa76 add r3, pc | r3 = 0x15f75c;
0x000afa78 str r3, [sp, 0x28] | var_28h = r3;
| do {
0x000afa7a movs r7, 0 | r7 = 0;
0x000afa7c movs r3, 0x20 | r3 = 0x20;
0x000afa7e mov r2, r7 | r2 = r7;
0x000afa80 mov r1, r8 | r1 = r8;
0x000afa82 mov r0, r6 | r0 = r6;
0x000afa84 str r7, [sp, 0x3c] | var_3ch = r7;
0x000afa86 blx 0x1abe0 | r0 = fcn_0001abe0 ();
0x000afa8a cmp r0, 0 |
| if (r0 == 0) {
0x000afa8c beq 0xafafa | goto label_8;
| }
0x000afa8e cmn.w r0, 0xc |
| if (r0 == 0xc) {
0x000afa92 beq 0xafae6 | goto label_13;
| }
0x000afa94 cmp r0, 0 |
| if (r0 < 0) {
0x000afa96 blt.w 0xafc68 | goto label_14;
| }
0x000afa9a ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x000afa9c cmp r5, 0 |
| if (r5 == 0) {
0x000afa9e beq.w 0xafc38 | goto label_15;
| }
0x000afaa2 ldrb r3, [r5] | r3 = *(r5);
0x000afaa4 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x000afaa6 beq 0xafb32 | goto label_16;
| }
0x000afaa8 str r7, [sp, 0x48] | var_48h = r7;
0x000afaaa cmp r4, 0 |
| if (r4 == 0) {
0x000afaac beq.w 0xafc32 | goto label_17;
| }
0x000afab0 blx 0x18d64 | r0 = af_to_ipv4_ipv6 ();
0x000afab4 cmp r0, 3 |
| if (r0 > 3) {
0x000afab6 bgt 0xafb1c | goto label_18;
| }
| label_1:
0x000afab8 mov r3, r7 | r3 = r7;
| label_0:
0x000afaba strd r3, r7, [sp, 4] | __asm ("strd r3, r7, [var_8h]");
0x000afabe movs r1, 0 | r1 = 0;
0x000afac0 ldr r3, [pc, 0x220] |
0x000afac2 mov r2, sb | r2 = sb;
0x000afac4 movs r0, 4 | r0 = 4;
0x000afac6 str r5, [sp, 0x18] | var_18h = r5;
0x000afac8 strd r1, r1, [sp, 0xc] | __asm ("strd r1, r1, [var_ch]");
0x000afacc add r3, pc | r3 = 0x15f7b4;
0x000aface str r3, [sp, 0x14] | var_14h = r3;
0x000afad0 ldr r3, [pc, 0x214] |
0x000afad2 add r3, pc | r3 = 0x15f7be;
0x000afad4 str r3, [sp] | *(sp) = r3;
0x000afad6 movw r3, 0x28f | r3 = 0x28f;
0x000afada blx 0x19c40 | socket_address_matches_fd ();
| label_2:
0x000afade ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x000afae0 blx 0x19658 | touch_file ();
0x000afae4 b 0xafa7a |
| } while (1);
| label_13:
0x000afae6 ldr r1, [pc, 0x204] |
0x000afae8 movw r2, 0x28a | r2 = 0x28a;
0x000afaec ldr r3, [pc, 0x200] |
0x000afaee movs r0, 3 | r0 = 3;
0x000afaf0 add r1, pc | r1 = 0x15f7e2;
0x000afaf2 add r3, pc | r3 = 0x15f7e6;
0x000afaf4 adds r1, 7 | r1 += 7;
0x000afaf6 blx 0x1b774 | fcn_0001b774 ();
| label_8:
0x000afafa ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x000afafc blx 0x19658 | touch_file ();
| label_11:
0x000afb00 ldr r2, [pc, 0x1f0] |
0x000afb02 ldr r3, [pc, 0x1c8] | r3 = *(0xafcce);
0x000afb04 add r2, pc | r2 = 0x15f7fc;
0x000afb06 ldr r3, [r2, r3] | r3 = imp.specifier_group_name;
0x000afb08 ldr r2, [r3] | r2 = imp.specifier_group_name;
0x000afb0a ldr r3, [sp, 0xbc] | r3 = var_bch;
0x000afb0c eors r2, r3 | r2 ^= r3;
0x000afb0e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000afb12 bne.w 0xafcc2 | goto label_19;
| }
0x000afb16 add sp, 0xc4 |
0x000afb18 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x000afb1c add r1, sp, 0x48 | r1 += var_48h;
0x000afb1e mov r0, r4 | r0 = r4;
0x000afb20 blx 0x19384 | fcn_00019384 ();
0x000afb24 ldr r7, [sp, 0x48] | r7 = var_48h;
0x000afb26 ldr r3, [pc, 0x1d0] |
0x000afb28 ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x000afb2a add r3, pc | r3 = 0x15f828;
0x000afb2c cmp r7, 0 |
| if (r7 != 0) {
0x000afb2e bne 0xafaba | goto label_0;
| }
0x000afb30 b 0xafab8 | goto label_1;
| label_16:
0x000afb32 mov r0, r5 | r0 = r5;
0x000afb34 blx 0x197d0 | r0 = fcn_000197d0 ();
0x000afb38 cmp r0, 0 |
| if (r0 != 0) {
0x000afb3a bne 0xafc24 | goto label_20;
| }
0x000afb3c str r0, [sp, 0x48] | var_48h = r0;
0x000afb3e str r0, [sp, 0x2c] | var_2ch = r0;
0x000afb40 cmp r4, 0 |
| if (r4 == 0) {
0x000afb42 beq.w 0xafc62 | goto label_21;
| }
0x000afb46 blx 0x18d64 | r0 = af_to_ipv4_ipv6 ();
0x000afb4a cmp r0, 3 |
0x000afb4c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000afb4e bgt 0xafb54 |
| while (r3 == 0) {
0x000afb50 mov r1, r3 | r1 = r3;
0x000afb52 b 0xafb68 | goto label_7;
0x000afb54 add r1, sp, 0x48 | r1 += var_48h;
0x000afb56 mov r0, r4 | r0 = r4;
0x000afb58 blx 0x19384 | fcn_00019384 ();
0x000afb5c ldr r3, [sp, 0x48] | r3 = var_48h;
0x000afb5e ldr r1, [pc, 0x19c] |
0x000afb60 ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x000afb62 add r1, pc | r1 = 0x15f864;
0x000afb64 cmp r3, 0 |
0x000afb66 beq 0xafb50 |
| }
| label_7:
0x000afb68 strd r1, r3, [sp, 4] | __asm ("strd r1, r3, [var_8h]");
0x000afb6c movs r1, 0 | r1 = 0;
0x000afb6e ldr r3, [sp, 0x24] | r3 = var_24h;
0x000afb70 mov r2, sl | r2 = sl;
0x000afb72 str r5, [sp, 0x18] | var_18h = r5;
0x000afb74 movs r0, 4 | r0 = 4;
0x000afb76 strd r1, r1, [sp, 0xc] | __asm ("strd r1, r1, [var_ch]");
0x000afb7a str r3, [sp, 0x14] | var_14h = r3;
0x000afb7c ldr r3, [sp, 0x28] | r3 = var_28h;
0x000afb7e str r3, [sp] | *(sp) = r3;
0x000afb80 movw r3, 0x291 | r3 = 0x291;
0x000afb84 blx 0x19c40 | socket_address_matches_fd ();
0x000afb88 b 0xafade | goto label_2;
| label_6:
0x000afb8a mov r0, r4 | r0 = r4;
0x000afb8c blx 0x19734 | r0 = fcn_00019734 ();
0x000afb90 mov r8, r0 | r8 = r0;
0x000afb92 cmp r0, 0 |
| if (r0 == 0) {
0x000afb94 beq.w 0xafa44 | goto label_3;
| }
0x000afb98 ldr r7, [pc, 0x164] |
0x000afb9a add r6, sp, 0xb0 | r6 += var_b0h;
0x000afb9c add.w sb, sp, 0x48 | sb += var_48h;
0x000afba0 mov sl, r5 | sl = r5;
0x000afba2 add r7, pc | r7 = 0x15f8a6;
0x000afba4 b 0xafbb0 |
| while (r0 != 0) {
| label_4:
0x000afba6 mov r0, r4 | r0 = r4;
0x000afba8 blx 0x1b810 | r0 = fcn_0001b810 ();
0x000afbac mov r8, r0 | r8 = r0;
| if (r0 == 0) {
0x000afbae cbz r0, 0xafc04 | goto label_22;
| }
| label_5:
0x000afbb0 ldm.w r7, {r0, r1, r2} | r0 = *(r7);
| r1 = *((r7 + 4));
| r2 = *((r7 + 8));
0x000afbb4 stm.w r6, {r0, r1, r2} | *(r6) = r0;
| *((r6 + 4)) = r1;
| *((r6 + 8)) = r2;
0x000afbb8 mov r1, r6 | r1 = r6;
0x000afbba mov r0, r8 | r0 = r8;
0x000afbbc blx 0x18e0c | r0 = base_filesystem_create ()
0x000afbc0 cmp r0, 0 |
0x000afbc2 bne 0xafba6 |
| }
0x000afbc4 mov r1, sb | r1 = sb;
0x000afbc6 mov r0, r8 | r0 = r8;
0x000afbc8 blx 0x197ac | r0 = fcn_000197ac ();
0x000afbcc cmp r0, 0 |
| if (r0 < 0) {
0x000afbce blt 0xafbec | goto label_23;
| }
0x000afbd0 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000afbd2 and r3, r3, 0xb000 | r3 &= 0xb000;
0x000afbd6 cmp.w r3, 0x2000 |
| if (r3 != 0x2000) {
0x000afbda bne 0xafba6 | goto label_4;
| }
0x000afbdc ldr r1, [sp, 0x6c] | r1 = var_6ch;
0x000afbde ldrd r5, r3, [sp, 0x40] | __asm ("ldrd r5, r3, [var_40h]");
0x000afbe2 ldr r2, [sp, 0x68] | r2 = var_68h;
0x000afbe4 cmp r1, r3 |
0x000afbe6 it eq |
| if (r1 != r3) {
0x000afbe8 cmpeq r2, r5 | __asm ("cmpeq r2, r5");
| goto label_24;
| }
| if (r1 != r3) {
| label_24:
0x000afbea bne 0xafba6 | goto label_4;
| }
| label_23:
0x000afbec mov r2, r8 | r2 = r8;
0x000afbee movs r3, 0 | r3 = 0;
0x000afbf0 mov r1, r4 | r1 = r4;
0x000afbf2 mov r0, sl | r0 = sl;
0x000afbf4 bl 0xaecdc | fcn_000aecdc (r0, r1, r2, r3);
0x000afbf8 mov r0, r4 | r0 = r4;
0x000afbfa blx 0x1b810 | r0 = fcn_0001b810 ();
0x000afbfe mov r8, r0 | r8 = r0;
0x000afc00 cmp r0, 0 |
| if (r0 != 0) {
0x000afc02 bne 0xafbb0 | goto label_5;
| }
| label_22:
0x000afc04 mov r5, sl | r5 = sl;
0x000afc06 b 0xafa44 | goto label_3;
| label_12:
0x000afc08 ldr r2, [sp, 0x34] | r2 = var_34h;
0x000afc0a movs r3, 0 | r3 = 0;
0x000afc0c mov r1, r4 | r1 = r4;
0x000afc0e mov r0, r5 | r0 = r5;
0x000afc10 bl 0xaecdc | fcn_000aecdc (r0, r1, r2, r3);
0x000afc14 add r1, sp, 0x40 | r1 += var_40h;
0x000afc16 mov r0, r4 | r0 = r4;
0x000afc18 blx 0x1a320 | r0 = fcn_0001a320 ();
0x000afc1c cmp r0, 0 |
| if (r0 < 0) {
0x000afc1e blt.w 0xafa44 | goto label_3;
| }
0x000afc22 b 0xafb8a | goto label_6;
| label_20:
0x000afc24 mov r3, r7 | r3 = r7;
0x000afc26 mov r2, r5 | r2 = r5;
0x000afc28 mov r1, r4 | r1 = r4;
0x000afc2a mov r0, fp | r0 = fp;
0x000afc2c bl 0xaecdc | fcn_000aecdc (r0, r1, r2, r3);
0x000afc30 b 0xafade | goto label_2;
| label_17:
0x000afc32 mov r7, r4 | r7 = r4;
0x000afc34 mov r3, r4 | r3 = r4;
0x000afc36 b 0xafaba | goto label_0;
| label_15:
0x000afc38 ldr r1, [pc, 0xc8] |
0x000afc3a movs r2, 0x33 | r2 = 0x33;
0x000afc3c ldr r3, [pc, 0xc8] |
0x000afc3e ldr r0, [pc, 0xcc] |
0x000afc40 add r1, pc | r1 = 0x15f948;
0x000afc42 add r3, pc | r3 = 0x15f94e;
0x000afc44 adds r1, 7 | r1 += 7;
0x000afc46 add r0, pc | r0 = 0x15f958;
0x000afc48 blx 0x19e60 | fcn_00019e60 ();
| label_10:
0x000afc4c ldr r1, [pc, 0xc0] |
0x000afc4e mov.w r2, 0x258 | r2 = 0x258;
0x000afc52 ldr r3, [pc, 0xc0] |
0x000afc54 ldr r0, [pc, 0xc0] |
0x000afc56 add r1, pc | r1 = 0x15f96a;
0x000afc58 add r3, pc | r3 = 0x15f972;
0x000afc5a adds r1, 7 | r1 += 7;
0x000afc5c add r0, pc | r0 = 0x15f978;
0x000afc5e blx 0x19e60 | fcn_00019e60 ();
| label_21:
0x000afc62 mov r3, r4 | r3 = r4;
0x000afc64 mov r1, r4 | r1 = r4;
0x000afc66 b 0xafb68 | goto label_7;
| label_14:
0x000afc68 mov r3, r0 | r3 = r0;
0x000afc6a str r7, [sp, 0x48] | var_48h = r7;
| if (r4 != 0) {
0x000afc6c cbz r4, 0xafc7e |
0x000afc6e str r0, [sp, 0x24] | var_24h = r0;
0x000afc70 blx 0x18d64 | r0 = af_to_ipv4_ipv6 ();
0x000afc74 cmp r0, 3 |
0x000afc76 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000afc78 it le |
| if (r0 > 3) {
0x000afc7a movle r4, r7 | r4 = r7;
| }
| if (r0 > 3) {
0x000afc7c bgt 0xafcaa | goto label_25;
| }
| }
0x000afc7e mov r0, r4 | r0 = r4;
| do {
| label_9:
0x000afc80 str r0, [sp, 8] | var_8h = r0;
0x000afc82 mov r1, r3 | r1 = r3;
0x000afc84 ldr r2, [pc, 0x94] |
0x000afc86 movs r3, 0 | r3 = 0;
0x000afc88 ldr r5, [pc, 0x94] |
0x000afc8a ldr r0, [pc, 0x98] |
0x000afc8c add r2, pc | r2 = 0x15f9ac;
0x000afc8e strd r3, r3, [sp, 0xc] | __asm ("strd r3, r3, [var_ch]");
0x000afc92 add r5, pc | r5 = 0x15f9b6;
0x000afc94 adds r2, 7 | r2 += 7;
0x000afc96 add r0, pc | r0 = 0x15f9c0;
0x000afc98 mov.w r3, 0x28c | r3 = 0x28c;
0x000afc9c str r0, [sp] | *(sp) = r0;
0x000afc9e movs r0, 4 | r0 = 4;
0x000afca0 str r4, [sp, 4] | var_4h = r4;
0x000afca2 str r5, [sp, 0x14] | var_14h = r5;
0x000afca4 blx 0x19c40 | socket_address_matches_fd ();
0x000afca8 b 0xafafa | goto label_8;
| label_25:
0x000afcaa mov r0, r4 | r0 = r4;
0x000afcac add r1, sp, 0x48 | r1 += var_48h;
0x000afcae blx 0x19384 | fcn_00019384 ();
0x000afcb2 ldr r0, [sp, 0x48] | r0 = var_48h;
0x000afcb4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000afcb6 mov r4, r0 | r4 = r0;
0x000afcb8 cmp r0, 0 |
0x000afcba beq 0xafc80 |
| } while (r0 == 0);
0x000afcbc ldr r4, [pc, 0x68] |
0x000afcbe add r4, pc | r4 = 0x15f9ea;
0x000afcc0 b 0xafc80 | goto label_9;
| label_19:
0x000afcc2 blx 0x1a700 | fcn_0001a700 ();
0x000afcc6 nop |
0x000afcc8 lsls r6, r6, 0xa | r6 <<= 0xa;
0x000afcca movs r0, r1 | r0 = r1;
0x000afccc asrs r0, r6, 9 | r0 = r6 >> 9;
0x000afcce movs r0, r0 |
0x000afcd0 ldrh r4, [r3, r4] | r4 = *((r3 + r4));
0x000afcd2 movs r4, r0 | r4 = r0;
0x000afcd4 ldrh r0, [r0, r6] | r0 = *((r0 + r6));
0x000afcd6 movs r4, r0 | r4 = r0;
0x000afcd8 strb r4, [r2, r6] | *((r2 + r6)) = r4;
0x000afcda movs r4, r0 | r4 = r0;
0x000afcdc strb r0, [r2, r6] | *((r2 + r6)) = r0;
0x000afcde movs r4, r0 | r4 = r0;
0x000afce0 str r6, [r3, 0x18] | *((r3 + 0x18)) = r6;
0x000afce2 movs r4, r0 | r4 = r0;
0x000afce4 ldrh r4, [r4, r3] | r4 = *((r4 + r3));
0x000afce6 movs r4, r0 | r4 = r0;
0x000afce8 str r2, [r0, 0x14] | *((r0 + 0x14)) = r2;
0x000afcea movs r4, r0 | r4 = r0;
0x000afcec strb r4, [r1, r4] | *((r1 + r4)) = r4;
0x000afcee movs r4, r0 | r4 = r0;
0x000afcf0 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x000afcf2 movs r4, r0 | r4 = r0;
0x000afcf4 lsls r0, r5, 6 | r0 = r5 << 6;
0x000afcf6 movs r0, r1 | r0 = r1;
0x000afcf8 ldrsb r2, [r7, r0] | r2 = *((r7 + r0));
0x000afcfa movs r4, r0 | r4 = r0;
0x000afcfc ldrsb r2, [r0, r0] | r2 = *((r0 + r0));
0x000afcfe movs r4, r0 | r4 = r0;
0x000afd00 asrs r6, r4, 0x1c | r6 = r4 >> 0x1c;
0x000afd02 movs r0, r1 | r0 = r1;
0x000afd04 movs r1, 0xdc | r1 = 0xdc;
0x000afd06 movs r1, r0 | r1 = r0;
0x000afd08 ldrsh r6, [r2, r0] | r6 = *((r2 + r0));
0x000afd0a movs r4, r0 | r4 = r0;
0x000afd0c strb r6, [r1, r3] | *((r1 + r3)) = r6;
0x000afd0e movs r1, r0 | r1 = r0;
0x000afd10 strh r6, [r4, r6] | *((r4 + r6)) = r6;
0x000afd12 movs r4, r0 | r4 = r0;
0x000afd14 ldrsh r4, [r2, r0] | r4 = *((r2 + r0));
0x000afd16 movs r4, r0 | r4 = r0;
0x000afd18 pop {r4, r5, pc} |
| }
[*] Function system used 6 times systemd