[*] Binary protection state of wpa_supplicant

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


[*] Function popen tear down of wpa_supplicant

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/wpa_supplicant @ 0x289b4 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.000289b4 ()                  | void fcn_000289b4 (int16_t arg1) {
                                             |     int16_t var_0h;
                                             |     int16_t var_4h;
                                             |     int16_t var_ch;
                                             |     int16_t var_10h;
                                             |     int16_t var_14h;
                                             |     int16_t var_18h;
                                             |     int16_t var_1ch;
                                             |     r0 = arg1;
    0x000289b4 blmi 0x1c3b378                |     __asm ("blmi aav.0x0005ff60");
    0x000289b8 push {r4, r5, r6, lr}         |     
    0x000289ba mov r4, r0                    |     r4 = r0;
    0x000289bc add r2, pc                    |     r2 += pc;
    0x000289be ldr r1, [pc, 0x1bc]           |     
    0x000289c0 movs r5, 1                    |     r5 = 1;
    0x000289c2 sub sp, 0x20                  |     
    0x000289c4 strb.w r5, [r4, 0x54]         |     *((r4 + 0x54)) = r5;
    0x000289c8 movs r0, 2                    |     r0 = 2;
    0x000289ca ldr r3, [r2, r3]              |     r3 = *((r2 + r3));
    0x000289cc add r1, pc                    |     r1 = 0x5154e;
    0x000289ce ldr r3, [r3]                  |     r3 = *(r3);
    0x000289d0 str r3, [sp, 0x1c]            |     var_1ch = r3;
    0x000289d2 mov.w r3, 0                   |     r3 = 0;
    0x000289d6 bl 0xe4b4                     |     fcn_0000e4b4 (r0, r1);
    0x000289da ldr r3, [r4, 0x50]            |     r3 = *((r4 + 0x50));
    0x000289dc movs r2, 5                    |     r2 = 5;
    0x000289de str r2, [r4]                  |     *(r4) = r2;
    0x000289e0 cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x000289e2 beq.w 0x28b46                 |         goto label_3;
                                             |     }
    0x000289e6 ldrd r0, r3, [r4, 0x58]       |     __asm ("ldrd r0, r3, [r4, 0x58]");
    0x000289ea ldr r3, [r3, 0x14]            |     r3 = *((r3 + 0x14));
    0x000289ec blx r3                        |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000289ee ldr r3, [r4, 0x50]            |     r3 = *((r4 + 0x50));
    0x000289f0 mov r6, r0                    |     r6 = r0;
    0x000289f2 mov r1, r5                    |     r1 = r5;
    0x000289f4 ldr r2, [r3]                  |     r2 = *(r3);
                                             |     if (r2 == 0) {
    0x000289f6 cbnz r2, 0x28a00              |         
    0x000289f8 ldr r1, [r3, 4]               |         r1 = *((r3 + 4));
    0x000289fa subs r1, 0x11                 |         r1 -= 0x11;
    0x000289fc it ne                         |         
                                             |         if (r1 != 0x11) {
    0x000289fe movne r1, 1                   |             r1 = 1;
                                             |             goto label_4;
                                             |         }
                                             |     }
                                             | label_4:
    0x00028a00 mov r0, r6                    |     r0 = r6;
    0x00028a02 bl 0x407a4                    |     r0 = fcn_000407a4 (r0, r1);
                                             |     if (r0 == 0) {
    0x00028a06 cbnz r0, 0x28a22              |         
                                             | label_0:
    0x00028a08 ldr r2, [pc, 0x174]           |         
    0x00028a0a ldr r3, [pc, 0x16c]           |         r3 = *(0x28b7a);
    0x00028a0c add r2, pc                    |         r2 = 0x51590;
    0x00028a0e ldr r3, [r2, r3]              |         r3 = *(0x51590);
    0x00028a10 ldr r2, [r3]                  |         r2 = *(0x51590);
    0x00028a12 ldr r3, [sp, 0x1c]            |         r3 = var_1ch;
    0x00028a14 eors r2, r3                   |         r2 ^= r3;
    0x00028a16 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00028a1a bne.w 0x28b6a                 |             goto label_5;
                                             |         }
    0x00028a1e add sp, 0x20                  |         
    0x00028a20 pop {r4, r5, r6, pc}          |         
                                             |     }
    0x00028a22 ldr r3, [r4, 0x14]            |     r3 = *((r4 + 0x14));
    0x00028a24 movs r5, 0                    |     r5 = 0;
    0x00028a26 ldrb.w r2, [r4, 0x2c]         |     r2 = *((r4 + 0x2c));
    0x00028a2a ldr r1, [r4, 8]               |     r1 = *((r4 + 8));
    0x00028a2c strd r3, r5, [sp, 0x14]       |     __asm ("strd r3, r5, [var_14h]");
    0x00028a30 ldrb.w r3, [r4, 0x34]         |     r3 = *((r4 + 0x34));
    0x00028a32 adds r0, 0x34                 |     r0 += 0x34;
    0x00028a34 ldr r0, [r4, 0x38]            |     r0 = *((r4 + 0x38));
    0x00028a36 strd r5, r1, [sp, 0xc]        |     __asm ("strd r5, r1, [var_ch]");
    0x00028a3a strb.w r3, [sp, 0x18]         |     var_18h = r3;
    0x00028a3e strb.w r2, [sp, 0xc]          |     var_ch = r2;
    0x00028a42 bl 0xf0a8                     |     fcn_0000f0a8 (r0);
    0x00028a46 ldr r1, [r4, 0x50]            |     r1 = *((r4 + 0x50));
    0x00028a48 mov r3, r6                    |     r3 = r6;
    0x00028a4a str r5, [r4, 0x38]            |     *((r4 + 0x38)) = r5;
    0x00028a4c add r2, sp, 0xc               |     r2 += var_ch;
    0x00028a4e mov r0, r4                    |     r0 = r4;
    0x00028a50 ldr r5, [r1, 0x14]            |     r5 = *((r1 + 0x14));
    0x00028a52 ldr r1, [r4, 0x60]            |     r1 = *((r4 + 0x60));
    0x00028a54 blx r5                        |     uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00028a56 ldrb.w r3, [sp, 0xc]          |     r3 = var_ch;
    0x00028a5a str r0, [r4, 0x38]            |     *((r4 + 0x38)) = r0;
                                             |     if (r3 != 0) {
    0x00028a5c cbnz r3, 0x28a74              |         goto label_6;
                                             |     }
    0x00028a5e ldr r2, [pc, 0x124]           |     
    0x00028a60 add r2, pc                    |     r2 = 0x515ea;
                                             |     do {
    0x00028a62 ldr r3, [sp, 0x10]            |         r3 = var_10h;
    0x00028a64 cmp r3, 4                     |         
                                             |         if (r3 > 4) {
    0x00028a66 bhi.w 0x28b6e                 |             goto label_7;
                                             |         }
                                             |         /* switch table (5 cases) at 0x28a6e */
    0x00028a6a tbb [pc, r3]                  |         __asm ("tbb [0x00028a70]");
                                             | label_6:
    0x00028a74 ldr r2, [pc, 0x110]           |         
    0x00028a76 add r2, pc                    |         r2 = 0x51602;
    0x00028a78 b 0x28a62                     |         
                                             |     } while (1);
    0x00028a7a ldr r3, [pc, 0x110]           |     
    0x00028a7c add r3, pc                    |     r3 = 0x5160e;
                                             | label_1:
    0x00028a7e ldr r1, [sp, 0x14]            |     r1 = var_14h;
    0x00028a80 cmp r1, 1                     |     
                                             |     if (r1 == 1) {
    0x00028a82 beq 0x28b40                   |         goto label_8;
                                             |     }
    0x00028a84 cmp r1, 2                     |     
                                             |     if (r1 == 2) {
    0x00028a86 beq 0x28b3a                   |         goto label_9;
                                             |     }
    0x00028a88 cmp r1, 0                     |     
                                             |     if (r1 == 0) {
    0x00028a8a beq 0x28b34                   |         goto label_10;
                                             |     }
    0x00028a8c ldr r5, [pc, 0x100]           |     
    0x00028a8e add r5, pc                    |     r5 = 0x51622;
                                             | label_2:
    0x00028a90 ldr r1, [pc, 0x100]           |     
    0x00028a92 str r0, [sp, 4]               |     var_4h = r0;
    0x00028a94 movs r0, 2                    |     r0 = 2;
    0x00028a96 str r5, [sp]                  |     *(sp) = r5;
    0x00028a98 add r1, pc                    |     r1 = 0x51630;
    0x00028a9a bl 0xe4b4                     |     fcn_0000e4b4 (r0, r1);
    0x00028a9e ldrb.w r5, [sp, 0xc]          |     r5 = var_ch;
    0x00028aa2 strb.w r5, [r4, 0x2c]         |     *((r4 + 0x2c)) = r5;
    0x00028aa6 cmp r5, 0                     |     
                                             |     if (r5 != 0) {
    0x00028aa8 bne 0x28a08                   |         goto label_0;
                                             |     }
    0x00028aaa ldrd r1, r2, [sp, 0x10]       |     __asm ("ldrd r1, r2, [var_14h]");
    0x00028aae ldr r3, [r4, 0x50]            |     r3 = *((r4 + 0x50));
    0x00028ab0 str r2, [r4, 0x14]            |     *((r4 + 0x14)) = r2;
    0x00028ab2 ldr r2, [r3, 0x18]            |     r2 = *((r3 + 0x18));
    0x00028ab4 str r1, [r4, 8]               |     *((r4 + 8)) = r1;
    0x00028ab6 ldrb.w r1, [sp, 0x18]         |     r1 = var_18h;
    0x00028aba strb.w r1, [r4, 0x34]         |     *((r4 + 0x34)) = r1;
    0x00028abe cmp r2, 0                     |     
                                             |     if (r2 == 0) {
    0x00028ac0 beq 0x28a08                   |         goto label_0;
                                             |     }
    0x00028ac2 ldr r3, [r3, 0x1c]            |     r3 = *((r3 + 0x1c));
    0x00028ac4 cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x00028ac6 beq 0x28a08                   |         goto label_0;
                                             |     }
    0x00028ac8 ldr r1, [r4, 0x60]            |     r1 = *((r4 + 0x60));
    0x00028aca mov r0, r4                    |     r0 = r4;
    0x00028acc blx r2                        |     r0 = uint32_t (*r2)(uint32_t, uint32_t) (r0, r1);
    0x00028ace cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x00028ad0 beq 0x28a08                   |         goto label_0;
                                             |     }
    0x00028ad2 ldr r0, [r4, 0x40]            |     r0 = *((r4 + 0x40));
                                             |     if (r0 != 0) {
    0x00028ad4 cbz r0, 0x28ade               |         
    0x00028ad6 ldr r1, [r4, 0x44]            |         r1 = *((r4 + 0x44));
    0x00028ad8 bl 0xe22c                     |         fcn_0000e22c (r0);
    0x00028adc str r5, [r4, 0x40]            |         *((r4 + 0x40)) = r5;
                                             |     }
    0x00028ade ldr r3, [r4, 0x50]            |     r3 = *((r4 + 0x50));
    0x00028ae0 add.w r2, r4, 0x44            |     r2 = r4 + 0x44;
    0x00028ae4 ldr r1, [r4, 0x60]            |     r1 = *((r4 + 0x60));
    0x00028ae6 mov r0, r4                    |     r0 = r4;
    0x00028ae8 ldr r3, [r3, 0x1c]            |     r3 = *((r3 + 0x1c));
    0x00028aea blx r3                        |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00028aec str r0, [r4, 0x40]            |     *((r4 + 0x40)) = r0;
    0x00028aee ldr r0, [r4, 0x48]            |     r0 = *((r4 + 0x48));
    0x00028af0 blx 0x62c8                    |     fcn_000062c8 ();
    0x00028af4 ldr r3, [r4, 0x50]            |     r3 = *((r4 + 0x50));
    0x00028af6 movs r2, 0                    |     r2 = 0;
    0x00028af8 str r2, [r4, 0x48]            |     *((r4 + 0x48)) = r2;
    0x00028afa ldr r3, [r3, 0x48]            |     r3 = *((r3 + 0x48));
    0x00028afc cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x00028afe beq 0x28a08                   |         goto label_0;
                                             |     }
    0x00028b00 ldr r1, [r4, 0x60]            |     r1 = *((r4 + 0x60));
    0x00028b02 add.w r2, r4, 0x4c            |     r2 = r4 + 0x4c;
    0x00028b04 lsls r4, r1, 9                |     r4 = r1 << 9;
    0x00028b06 mov r0, r4                    |     r0 = r4;
    0x00028b08 blx r3                        |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x00028b0a ldr r1, [pc, 0x8c]            |     
    0x00028b0c mov r2, r0                    |     r2 = r0;
    0x00028b0e str r0, [r4, 0x48]            |     *((r4 + 0x48)) = r0;
    0x00028b10 movs r0, 2                    |     r0 = 2;
    0x00028b12 ldr r3, [r4, 0x4c]            |     r3 = *((r4 + 0x4c));
    0x00028b14 add r1, pc                    |     r1 = 0x516b2;
    0x00028b16 bl 0xe848                     |     fcn_0000e848 (r0, r1, r2, r3);
    0x00028b1a b 0x28a08                     |     goto label_0;
    0x00028b1c ldr r3, [pc, 0x7c]            |     
    0x00028b1e add r3, pc                    |     r3 = 0x516be;
    0x00028b20 b 0x28a7e                     |     goto label_1;
    0x00028b22 ldr r3, [pc, 0x7c]            |     
    0x00028b24 add r3, pc                    |     r3 = 0x516ca;
    0x00028b26 b 0x28a7e                     |     goto label_1;
    0x00028b28 ldr r3, [pc, 0x78]            |     
    0x00028b2a add r3, pc                    |     r3 = 0x516d2;
    0x00028b2c b 0x28a7e                     |     goto label_1;
    0x00028b2e ldr r3, [pc, 0x78]            |     
    0x00028b30 add r3, pc                    |     r3 = 0x516de;
    0x00028b32 b 0x28a7e                     |     goto label_1;
                                             | label_10:
    0x00028b34 ldr r5, [pc, 0x74]            |     
    0x00028b36 add r5, pc                    |     r5 = 0x516e6;
    0x00028b38 b 0x28a90                     |     goto label_2;
                                             | label_9:
    0x00028b3a ldr r5, [pc, 0x74]            |     
    0x00028b3c add r5, pc                    |     r5 = 0x516f2;
    0x00028b3e b 0x28a90                     |     goto label_2;
                                             | label_8:
    0x00028b40 ldr r5, [pc, 0x70]            |     
    0x00028b42 add r5, pc                    |     r5 = 0x516fa;
    0x00028b44 b 0x28a90                     |     goto label_2;
                                             | label_3:
    0x00028b46 ldr r2, [pc, 0x70]            |     
    0x00028b48 ldr r3, [pc, 0x2c]            |     r3 = *(0x28b78);
    0x00028b4a add r2, pc                    |     r2 = 0x51708;
    0x00028b4c ldr r3, [r2, r3]              |     r3 = *(0x51708);
    0x00028b4e ldr r2, [r3]                  |     r2 = *(0x51708);
    0x00028b50 ldr r3, [sp, 0x1c]            |     r3 = var_1ch;
    0x00028b52 eors r2, r3                   |     r2 ^= r3;
    0x00028b54 mov.w r3, 0                   |     r3 = 0;
                                             |     if (r2 == r3) {
    0x00028b58 bne 0x28b6a                   |         
    0x00028b5a ldr r1, [pc, 0x60]            |         
    0x00028b5c movs r0, 4                    |         r0 = 4;
    0x00028b5e add r1, pc                    |         r1 = 0x51720;
    0x00028b60 add sp, 0x20                  |         
    0x00028b62 pop.w {r4, r5, r6, lr}        |         
    0x00028b66 b.w 0xe4b4                    |         void (*0xe4b4)() ();
                                             |     }
                                             | label_5:
    0x00028b6a blx 0x6b24                    |     fcn_00006b24 ();
                                             | label_7:
    0x00028b6e ldr r3, [pc, 0x50]            |     
    0x00028b70 add r3, pc                    |     r3 = 0x51736;
    0x00028b72 b 0x28a7e                     |     goto label_1;
                                             | }

[*] Function popen used 1 times wpa_supplicant