[*] Binary protection state of wpa_supplicant

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


[*] Function strcat tear down of wpa_supplicant

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/wpa_supplicant @ 0x46cc4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00046cc4 ()                                      | void fcn_00046cc4 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00046cc4 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x00046cc8 mov r4, r0                                        |     r4 = r0;
    0x00046cca ldr.w sb, [r0]                                    |     sb = *(r0);
    0x00046cce sub sp, 0xc                                       |     
    0x00046cd0 mov r8, r1                                        |     r8 = r1;
    0x00046cd2 mov r7, r2                                        |     r7 = r2;
    0x00046cd4 ldr r6, [pc, 0x398]                               |     
    0x00046cd6 ldr.w r5, [sb]                                    |     r5 = *(sb);
    0x00046cda add r6, pc                                        |     r6 = 0x8dd4e;
                                                                 |     if (r5 == 0) {
    0x00046cdc cbz r5, 0x46d04                                   |         goto label_1;
                                                                 |     }
    0x00046cde ldr.w fp, [pc, 0x394]                             |     
    0x00046ce2 add.w sl, r0, 0x50                                |     sl = r0 + 0x50;
    0x00046ce6 add fp, pc                                        |     fp = 0x8dd60;
                                                                 |     do {
                                                                 | label_0:
    0x00046ce8 ldr r3, [r5, 0x14]                                |         r3 = *((r5 + 0x14));
    0x00046cea cmp r3, r4                                        |         
    0x00046cec itt eq                                            |         
                                                                 |         if (r3 != r4) {
    0x00046cee ldreq r3, [r5, 0x10]                              |             r3 = *((r5 + 0x10));
                                                                 |         }
                                                                 |         if (r3 != r4) {
    0x00046cf0 streq r3, [r5, 0x14]                              |             *((r5 + 0x14)) = r3;
                                                                 |         }
    0x00046cf2 cmp r4, r5                                        |         
                                                                 |         if (r4 != r5) {
    0x00046cf4 beq 0x46cfe                                       |             
    0x00046cf6 ldr r3, [r5, 0x10]                                |             r3 = *((r5 + 0x10));
    0x00046cf8 cmp r3, r4                                        |             
                                                                 |             if (r3 == r4) {
    0x00046cfa beq.w 0x46ff8                                     |                 goto label_6;
                                                                 |             }
                                                                 |         }
    0x00046cfe ldr r5, [r5, 0x18]                                |         r5 = *((r5 + 0x18));
    0x00046d00 cmp r5, 0                                         |         
    0x00046d02 bne 0x46ce8                                       |         
                                                                 |     } while (r5 != 0);
                                                                 | label_1:
    0x00046d04 ldr.w r0, [r4, 0x128]                             |     r0 = *((r4 + 0x128));
    0x00046d08 movs r3, 1                                        |     r3 = 1;
    0x00046d0a str.w r3, [r4, 0xf0]                              |     __asm ("str.w r3, [r4, 0xf0]");
                                                                 |     if (r0 != 0) {
    0x00046d0e cbz r0, 0x46d42                                   |         
    0x00046d10 ldr.w r3, [r4, 0x1a8]                             |         r3 = *((r4 + 0x1a8));
    0x00046d14 ldr.w r3, [r3, 0x170]                             |         r3 = *((r3 + 0x170));
                                                                 |         if (r3 != 0) {
    0x00046d18 cbz r3, 0x46d22                                   |             
    0x00046d1a blx r3                                            |             r0 = uint32_t (*r3)(uint32_t) (r0);
    0x00046d1c cmp r0, 0                                         |             
                                                                 |             if (r0 != 0) {
    0x00046d1e bne.w 0x47034                                     |                 goto label_7;
                                                                 |             }
                                                                 |         }
                                                                 | label_3:
    0x00046d22 mov r0, r4                                        |         r0 = r4;
    0x00046d24 movs r1, 3                                        |         r1 = 3;
    0x00046d26 bl 0x463e0                                        |         fcn_000463e0 (r0, r1, r2);
    0x00046d2a ldr.w r3, [r4, 0x1a8]                             |         r3 = *((r4 + 0x1a8));
    0x00046d2e ldr.w r0, [r4, 0x128]                             |         r0 = *((r4 + 0x128));
    0x00046d32 ldr r3, [r3, 0x20]                                |         r3 = *((r3 + 0x20));
                                                                 |         if (r3 != 0) {
    0x00046d34 cbz r3, 0x46d3a                                   |             
    0x00046d36 movs r1, 0                                        |             r1 = 0;
    0x00046d38 blx r3                                            |             uint32_t (*r3)(uint32_t) (r1);
                                                                 |         }
    0x00046d3a movs r1, 0                                        |         r1 = 0;
    0x00046d3c mov r0, r4                                        |         r0 = r4;
    0x00046d3e bl 0x44ac0                                        |         fcn_00044ac0 (r0, r1, r2, r3);
                                                                 |     }
                                                                 | label_4:
    0x00046d42 movs r5, 0                                        |     r5 = 0;
    0x00046d44 ldr.w r0, [r4, 0x1b0]                             |     r0 = *((r4 + 0x1b0));
    0x00046d48 mov r1, r5                                        |     r1 = r5;
    0x00046d4a str.w r5, [r4, 0x1f4]                             |     __asm ("str.w r5, [r4, 0x1f4]");
    0x00046d4e bl 0x19fc8                                        |     fcn_00019fc8 (r0, r1);
    0x00046d52 ldr.w r0, [r4, 0x1b8]                             |     r0 = *((r4 + 0x1b8));
    0x00046d56 mov r1, r5                                        |     r1 = r5;
    0x00046d58 bl 0x2a804                                        |     fcn_0002a804 (r0, r1);
    0x00046d5c ldr r0, [r4, 0x1c]                                |     r0 = *((r4 + 0x1c));
    0x00046d5e bl 0x5769c                                        |     fcn_0005769c (r0);
    0x00046d62 ldr r0, [r4, 0x20]                                |     r0 = *((r4 + 0x20));
    0x00046d64 str r5, [r4, 0x1c]                                |     *((r4 + 0x1c)) = r5;
                                                                 |     if (r0 != 0) {
    0x00046d66 cbz r0, 0x46d6e                                   |         
    0x00046d68 bl 0x5769c                                        |         fcn_0005769c (r0);
    0x00046d6c str r5, [r4, 0x20]                                |         *((r4 + 0x20)) = r5;
                                                                 |     }
    0x00046d6e ldr.w r3, [r4, 0xcc]                              |     r3 = *((r4 + 0xcc));
                                                                 |     if (r3 == 0) {
    0x00046d72 cbz r3, 0x46d86                                   |         goto label_8;
                                                                 |     }
    0x00046d74 ldr r5, [r3]                                      |     r5 = *(r3);
                                                                 |     if (r5 == 0) {
    0x00046d76 cbz r5, 0x46d86                                   |         goto label_8;
                                                                 |     }
                                                                 |     do {
    0x00046d78 mov r1, r5                                        |         r1 = r5;
    0x00046d7a mov r0, r4                                        |         r0 = r4;
    0x00046d7c bl 0xbb64                                         |         fcn_0000bb64 (r0, r1);
    0x00046d80 ldr r5, [r5]                                      |         r5 = *(r5);
    0x00046d82 cmp r5, 0                                         |         
    0x00046d84 bne 0x46d78                                       |         
                                                                 |     } while (r5 != 0);
                                                                 | label_8:
    0x00046d86 movs r5, 0                                        |     r5 = 0;
    0x00046d88 ldr.w r0, [r4, 0xc4]                              |     r0 = *((r4 + 0xc4));
    0x00046d8c blx 0x632c                                        |     fcn_0000632c ();
    0x00046d90 ldr.w r0, [r4, 0xc8]                              |     r0 = *((r4 + 0xc8));
    0x00046d94 str.w r5, [r4, 0xc4]                              |     __asm ("str.w r5, [r4, 0xc4]");
    0x00046d98 blx 0x632c                                        |     fcn_0000632c ();
    0x00046d9c ldr.w r0, [r4, 0x108]                             |     r0 = *((r4 + 0x108));
    0x00046da0 str.w r5, [r4, 0xc8]                              |     __asm ("str.w r5, [r4, 0xc8]");
    0x00046da4 blx 0x632c                                        |     fcn_0000632c ();
    0x00046da8 mov r1, r5                                        |     r1 = r5;
    0x00046daa ldr.w r0, [r4, 0x1b0]                             |     r0 = *((r4 + 0x1b0));
    0x00046dae strd r5, r5, [r4, 0x108]                          |     __asm ("strd r5, r5, [r4, 0x108]");
    0x00046db2 bl 0x1a0a4                                        |     fcn_0001a0a4 (r0, r1);
    0x00046db6 ldr.w r0, [r4, 0x1b8]                             |     r0 = *((r4 + 0x1b8));
    0x00046dba bl 0x2a9c4                                        |     fcn_0002a9c4 (r0);
    0x00046dbe ldr.w r0, [r4, 0x1b0]                             |     r0 = *((r4 + 0x1b0));
    0x00046dc2 str.w r5, [r4, 0x1b8]                             |     __asm ("str.w r5, [r4, 0x1b8]");
    0x00046dc6 bl 0x1cac4                                        |     fcn_0001cac4 (r0);
    0x00046dca mov r0, r4                                        |     r0 = r4;
    0x00046dcc bl 0x14288                                        |     fcn_00014288 (r0);
    0x00046dd0 ldr.w r0, [r4, 0x1b0]                             |     r0 = *((r4 + 0x1b0));
    0x00046dd4 bl 0x1c884                                        |     fcn_0001c884 (r0);
    0x00046dd8 ldr.w r0, [r4, 0x1b0]                             |     r0 = *((r4 + 0x1b0));
    0x00046ddc str.w r5, [r4, 0x1b4]                             |     __asm ("str.w r5, [r4, 0x1b4]");
    0x00046de0 bl 0x1a754                                        |     fcn_0001a754 (r0);
    0x00046de4 mov r0, r4                                        |     r0 = r4;
    0x00046de6 str.w r5, [r4, 0x1b0]                             |     __asm ("str.w r5, [r4, 0x1b0]");
    0x00046dea bl 0x50078                                        |     fcn_00050078 (r0);
    0x00046dee mov r0, r4                                        |     r0 = r4;
    0x00046df0 bl 0xc478                                         |     fcn_0000c478 (r0);
    0x00046df4 mov r0, r4                                        |     r0 = r4;
    0x00046df6 bl 0x51c1c                                        |     fcn_00051c1c (r0);
    0x00046dfa mov r0, r4                                        |     r0 = r4;
    0x00046dfc bl 0x51bf4                                        |     fcn_00051bf4 (r0);
    0x00046e00 mov r0, r4                                        |     r0 = r4;
    0x00046e02 bl 0x447d0                                        |     fcn_000447d0 (r0);
    0x00046e06 ldr r3, [pc, 0x270]                               |     r3 = *(0x4707a);
    0x00046e08 mov r2, r5                                        |     r2 = r5;
    0x00046e0a mov r1, r4                                        |     r1 = r4;
    0x00046e0c ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00046e0e mov r0, r3                                        |     r0 = r3;
    0x00046e10 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00046e12 bl 0x14f4c                                        |     fcn_00014f4c (r0, r1, r2);
    0x00046e16 ldr r3, [pc, 0x264]                               |     r3 = *(0x4707e);
    0x00046e18 mov r2, r5                                        |     r2 = r5;
    0x00046e1a mov r1, r4                                        |     r1 = r4;
    0x00046e1c ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00046e1e mov r0, r3                                        |     r0 = r3;
    0x00046e20 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00046e22 bl 0x14f4c                                        |     fcn_00014f4c (r0, r1, r2);
    0x00046e26 ldr r3, [pc, 0x258]                               |     r3 = *(0x47082);
    0x00046e28 mov r2, r5                                        |     r2 = r5;
    0x00046e2a mov r1, r4                                        |     r1 = r4;
    0x00046e2c ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00046e2e mov r0, r3                                        |     r0 = r3;
    0x00046e30 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00046e32 bl 0x14f4c                                        |     fcn_00014f4c (r0, r1, r2);
    0x00046e36 ldr.w r0, [r4, 0x354]                             |     r0 = *((r4 + 0x354));
    0x00046e3a bl 0xefd8                                         |     fcn_0000efd8 (r0);
    0x00046e3e mov r0, r4                                        |     r0 = r4;
    0x00046e40 str.w r5, [r4, 0x354]                             |     __asm ("str.w r5, [r4, 0x354]");
    0x00046e44 bl 0x51c4c                                        |     fcn_00051c4c (r0);
    0x00046e48 ldr.w r0, [r4, 0x24c]                             |     r0 = *((r4 + 0x24c));
    0x00046e4c blx 0x632c                                        |     fcn_0000632c ();
    0x00046e50 ldr.w r0, [r4, 0x254]                             |     r0 = *((r4 + 0x254));
    0x00046e54 str.w r5, [r4, 0x24c]                             |     __asm ("str.w r5, [r4, 0x24c]");
    0x00046e58 blx 0x632c                                        |     fcn_0000632c ();
    0x00046e5c ldr.w r0, [r4, 0x250]                             |     r0 = *((r4 + 0x250));
    0x00046e60 str.w r5, [r4, 0x254]                             |     __asm ("str.w r5, [r4, 0x254]");
    0x00046e64 blx 0x632c                                        |     fcn_0000632c ();
    0x00046e68 ldr.w r0, [r4, 0x258]                             |     r0 = *((r4 + 0x258));
    0x00046e6c str.w r5, [r4, 0x250]                             |     __asm ("str.w r5, [r4, 0x250]");
    0x00046e70 blx 0x632c                                        |     fcn_0000632c ();
    0x00046e74 movs r1, 7                                        |     r1 = 7;
    0x00046e76 mov r0, r4                                        |     r0 = r4;
    0x00046e78 str.w r5, [r4, 0x258]                             |     __asm ("str.w r5, [r4, 0x258]");
    0x00046e7c bl 0x5429c                                        |     fcn_0005429c (r0, r1);
    0x00046e80 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
                                                                 |     if (r3 != 0) {
    0x00046e82 cbz r3, 0x46e90                                   |         
    0x00046e84 ldr r1, [pc, 0x1fc]                               |         
    0x00046e86 mov r2, r5                                        |         r2 = r5;
    0x00046e88 mov r0, r4                                        |         r0 = r4;
    0x00046e8a add r1, pc                                        |         r1 = 0x8df12;
    0x00046e8c bl 0x45e90                                        |         fcn_00045e90 (r0, r1, r2, r3);
                                                                 |     }
    0x00046e90 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00046e94 addw r3, r4, 0x41c                                |     __asm ("addw r3, r4, 0x41c");
    0x00046e98 mov r0, r4                                        |     r0 = r4;
    0x00046e9a movs r6, 0                                        |     r6 = 0;
    0x00046e9c add.w r5, r4, 0x480                               |     r5 = r4 + 0x480;
    0x00046ea0 addw sb, r4, 0x4bc                                |     __asm ("addw sb, r4, 0x4bc");
    0x00046ea4 vst1.32 {d16}, [r3]                               |     __asm ("vst1.32 {d16}, [r3]");
    0x00046ea8 bl 0x449ec                                        |     fcn_000449ec (r0);
    0x00046eac mov r0, r4                                        |     r0 = r4;
    0x00046eae bl 0x23668                                        |     fcn_00023668 (r0);
    0x00046eb2 ldr.w r0, [r4, 0x130]                             |     r0 = *((r4 + 0x130));
    0x00046eb6 blx 0x632c                                        |     fcn_0000632c ();
    0x00046eba ldr.w r0, [r4, 0x138]                             |     r0 = *((r4 + 0x138));
    0x00046ebe str.w r6, [r4, 0x130]                             |     __asm ("str.w r6, [r4, 0x130]");
    0x00046ec2 blx 0x632c                                        |     fcn_0000632c ();
    0x00046ec6 ldr.w r0, [r4, 0x140]                             |     r0 = *((r4 + 0x140));
    0x00046eca str.w r6, [r4, 0x138]                             |     __asm ("str.w r6, [r4, 0x138]");
    0x00046ece blx 0x632c                                        |     fcn_0000632c ();
    0x00046ed2 mov r0, r4                                        |     r0 = r4;
    0x00046ed4 str.w r6, [r4, 0x140]                             |     __asm ("str.w r6, [r4, 0x140]");
    0x00046ed8 bl 0x4d724                                        |     fcn_0004d724 ();
    0x00046edc ldr.w r0, [r4, 0x44c]                             |     r0 = *((r4 + 0x44c));
    0x00046ee0 str.w r6, [r4, 0x448]                             |     __asm ("str.w r6, [r4, 0x448]");
    0x00046ee2 str r0, [r1, 0x44]                                |     *((r1 + 0x44)) = r0;
    0x00046ee4 bl 0xefd8                                         |     fcn_0000efd8 (r0);
    0x00046ee8 ldr.w r0, [r4, 0x450]                             |     r0 = *((r4 + 0x450));
    0x00046eec str.w r6, [r4, 0x44c]                             |     __asm ("str.w r6, [r4, 0x44c]");
    0x00046ef0 bl 0xefd8                                         |     fcn_0000efd8 (r0);
    0x00046ef4 ldr.w r0, [r4, 0x194]                             |     r0 = *((r4 + 0x194));
    0x00046ef8 str.w r6, [r4, 0x450]                             |     __asm ("str.w r6, [r4, 0x450]");
    0x00046efa str r0, [r2, 0x44]                                |     *((r2 + 0x44)) = r0;
    0x00046efc blx 0x632c                                        |     fcn_0000632c ();
    0x00046f00 str.w r6, [r4, 0x194]                             |     __asm ("str.w r6, [r4, 0x194]");
                                                                 |     do {
    0x00046f04 ldr r0, [r5, 4]!                                  |         r0 = *((r5 += 4));
    0x00046f08 bl 0xefd8                                         |         fcn_0000efd8 (r0);
    0x00046f0c cmp sb, r5                                        |         
    0x00046f0e str r6, [r5]                                      |         *(r5) = r6;
    0x00046f10 bne 0x46f04                                       |         
                                                                 |     } while (sb != r5);
    0x00046f12 mov r0, r4                                        |     r0 = r4;
    0x00046f14 bl 0x137a8                                        |     fcn_000137a8 (r0);
    0x00046f16 mcrr2 p8, 0xd, pc, r8, c4                         |     __asm ("mcrr2 p8, 0xd, pc, r8, c4");
    0x00046f1a lsls r0, r5, 5                                    |     r0 = r5 << 5;
    0x00046f1c str.w r6, [r4, 0x16c]                             |     __asm ("str.w r6, [r4, 0x16c]");
    0x00046f20 blx 0x632c                                        |     fcn_0000632c ();
    0x00046f24 mov r0, r4                                        |     r0 = r4;
    0x00046f26 str.w r6, [r4, 0x168]                             |     __asm ("str.w r6, [r4, 0x168]");
    0x00046f2a bl 0x44a34                                        |     fcn_00044a34 (r0);
    0x00046f2e ldr.w r0, [r4, 0x630]                             |     r0 = *((r4 + 0x630));
    0x00046f32 bl 0xefd8                                         |     fcn_0000efd8 (r0);
    0x00046f36 mov r0, r4                                        |     r0 = r4;
    0x00046f38 str.w r6, [r4, 0x630]                             |     __asm ("str.w r6, [r4, 0x630]");
    0x00046f3c bl 0x10a70                                        |     fcn_00010a70 (r0);
    0x00046f3e ldc2 p6, c4, [r8, 0x80]                           |     __asm ("ldc2 p6, c4, [r8, 0x80]");
    0x00046f42 bl 0x44a78                                        |     fcn_00044a78 (r0, r1);
    0x00046f46 ldr.w r0, [r4, 0x65c]                             |     r0 = *((r4 + 0x65c));
    0x00046f4a bl 0xefd8                                         |     fcn_0000efd8 (r0);
    0x00046f4e mov r0, r4                                        |     r0 = r4;
    0x00046f50 str.w r6, [r4, 0x65c]                             |     __asm ("str.w r6, [r4, 0x65c]");
    0x00046f54 bl 0x12a78                                        |     fcn_00012a78 (r0);
    0x00046f58 mov r0, r4                                        |     r0 = r4;
    0x00046f5a bl 0x12acc                                        |     fcn_00012acc (r0);
    0x00046f5e mov r0, r4                                        |     r0 = r4;
    0x00046f60 bl 0x3b294                                        |     fcn_0003b294 (r0);
    0x00046f64 ldr r5, [r4, 4]                                   |     r5 = *((r4 + 4));
                                                                 |     if (r5 != 0) {
    0x00046f66 cbz r5, 0x46faa                                   |         
    0x00046f68 ldr r1, [pc, 0x11c]                               |         
    0x00046f6a mov r3, r5                                        |         r3 = r5;
    0x00046f6c add.w r2, r4, 0x50                                |         r2 = r4 + 0x50;
    0x00046f6e lsls r0, r2, 9                                    |         r0 = r2 << 9;
    0x00046f70 movs r0, 2                                        |         r0 = 2;
    0x00046f72 add r1, pc                                        |         r1 = 0x8dffe;
    0x00046f74 bl 0xe3e0                                         |         fcn_0000e3e0 (r0);
    0x00046f78 ldrd r2, r3, [r4, 8]                              |         __asm ("ldrd r2, r3, [r4, 8]");
    0x00046f7c mov r0, r4                                        |         r0 = r4;
    0x00046f7e vmov.i32 d16, 0                                   |         __asm ("vmov.i32 d16, 0");
    0x00046f82 str r3, [r2, 4]                                   |         *((r2 + 4)) = r3;
    0x00046f84 str r2, [r3]                                      |         *(r3) = r2;
    0x00046f86 movs r2, 0                                        |         r2 = 0;
    0x00046f88 mov r1, r2                                        |         r1 = r2;
    0x00046f8a vstr d16, [r4, 8]                                 |         __asm ("vstr d16, [r4, 8]");
    0x00046f8e bl 0x45e90                                        |         fcn_00045e90 (r0, r1, r2, r3);
    0x00046f92 ldr r3, [r5, 0x10]                                |         r3 = *((r5 + 0x10));
    0x00046f94 ldr r2, [r5, 0x18]                                |         r2 = *((r5 + 0x18));
    0x00046f96 cmp r4, r3                                        |         
    0x00046f98 add.w r3, r5, 0x18                                |         r3 = r5 + 0x18;
    0x00046f9c it eq                                             |         
                                                                 |         if (r4 != r3) {
    0x00046f9e streq r6, [r5, 0x10]                              |             *((r5 + 0x10)) = r6;
                                                                 |         }
    0x00046fa0 cmp r2, r3                                        |         
    0x00046fa2 mov.w r6, 0                                       |         r6 = 0;
    0x00046fa6 str r6, [r4, 4]                                   |         *((r4 + 4)) = r6;
                                                                 |         if (r2 == r3) {
    0x00046fa8 beq 0x47050                                       |             goto label_9;
                                                                 |         }
                                                                 |     }
                                                                 | label_5:
    0x00046faa ldr.w r0, [r4, 0x128]                             |     r0 = *((r4 + 0x128));
                                                                 |     if (r0 != 0) {
    0x00046fae cbz r0, 0x46fba                                   |         
    0x00046fb0 ldr.w r3, [r4, 0x1a8]                             |         r3 = *((r4 + 0x1a8));
    0x00046fb4 ldr r3, [r3, 0x18]                                |         r3 = *((r3 + 0x18));
                                                                 |         if (r3 == 0) {
    0x00046fb6 cbz r3, 0x46fba                                   |             goto label_10;
                                                                 |         }
    0x00046fb8 blx r3                                            |         uint32_t (*r3)(uint32_t) (r0);
                                                                 |     }
                                                                 | label_10:
    0x00046fba cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00046fbe bne 0x4701c                                       |         goto label_11;
                                                                 |     }
                                                                 |     if (r7 != 0) {
    0x00046fc0 cbnz r7, 0x47026                                  |         goto label_12;
                                                                 |     }
                                                                 | label_2:
    0x00046fc2 mov r0, r4                                        |     r0 = r4;
    0x00046fc4 ldr.w r1, [r4, 0x1bc]                             |     r1 = *((r4 + 0x1bc));
    0x00046fc6 asrs r4, r7, 6                                    |     r4 = r7 >> 6;
    0x00046fc8 bl 0x3f098                                        |     fcn_0003f098 (r0, r1);
    0x00046fcc ldr.w r0, [r4, 0xcc]                              |     r0 = *((r4 + 0xcc));
    0x00046fd0 movs r3, 0                                        |     r3 = 0;
    0x00046fd2 str.w r3, [r4, 0x1bc]                             |     __asm ("str.w r3, [r4, 0x1bc]");
                                                                 |     if (r0 != 0) {
    0x00046fd6 cbz r0, 0x46fdc                                   |         
    0x00046fd8 bl 0xb548                                         |         fcn_0000b548 (r0);
                                                                 |     }
    0x00046fdc ldr.w r0, [r4, 0x2c4]                             |     r0 = *((r4 + 0x2c4));
    0x00046fe0 blx 0x632c                                        |     fcn_0000632c ();
    0x00046fe4 ldr.w r0, [r4, 0x2cc]                             |     r0 = *((r4 + 0x2cc));
    0x00046fe8 blx 0x632c                                        |     fcn_0000632c ();
    0x00046fec mov r0, r4                                        |     r0 = r4;
    0x00046fee add sp, 0xc                                       |     
    0x00046ff0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x00046ff4 b.w 0x6328                                        |     void (*0x6328)() ();
                                                                 |     if (r0 != 0) {
    0x00046ff6 cbnz r0, 0x47020                                  |         void (*0x47020)() ();
                                                                 |     }
                                                                 | label_6:
    0x00046ff8 add.w r2, r5, 0x50                                |     r2 = r5 + 0x50;
    0x00046ffc mov r3, sl                                        |     r3 = sl;
    0x00046ffe mov r1, fp                                        |     r1 = fp;
    0x00047000 movs r0, 2                                        |     r0 = 2;
    0x00047002 bl 0xe3e0                                         |     fcn_0000e3e0 (r0);
    0x00047006 ldr r3, [r5, 0x18]                                |     r3 = *((r5 + 0x18));
    0x00047008 mov r1, r5                                        |     r1 = r5;
    0x0004700a mov r2, r7                                        |     r2 = r7;
    0x0004700c mov r0, sb                                        |     r0 = sb;
    0x0004700e mov r5, r3                                        |     r5 = r3;
    0x00047010 bl 0x46c60                                        |     fcn_00046c60 (r0, r1, r2);
    0x00047014 cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x00047016 bne.w 0x46ce8                                     |         goto label_0;
                                                                 |     }
    0x0004701a b 0x46d04                                         |     goto label_1;
                                                                 | label_11:
    0x0004701c mov r0, r4                                        |     r0 = r4;
    0x0004701e bl 0xbad4                                         |     fcn_0000bad4 ();
    0x00047022 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00047024 beq 0x46fc2                                       |         goto label_2;
                                                                 |     }
                                                                 | label_12:
    0x00047026 ldr r2, [pc, 0x64]                                |     
    0x00047028 movs r1, 3                                        |     r1 = 3;
    0x0004702a mov r0, r4                                        |     r0 = r4;
    0x0004702c add r2, pc                                        |     r2 = 0x8e0be;
    0x0004702e bl 0xe858                                         |     fcn_0000e858 (r0, r1);
    0x00047032 b 0x46fc2                                         |     goto label_2;
                                                                 | label_7:
    0x00047034 ldr.w r3, [r4, 0xcc]                              |     r3 = *((r4 + 0xcc));
    0x00047038 ldr.w r3, [r3, 0x350]                             |     r3 = *((r3 + 0x350));
    0x0004703c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0004703e bne.w 0x46d22                                     |         goto label_3;
                                                                 |     }
    0x00047042 ldr r2, [pc, 0x4c]                                |     
    0x00047044 movs r1, 3                                        |     r1 = 3;
    0x00047046 mov r0, r4                                        |     r0 = r4;
    0x00047048 add r2, pc                                        |     r2 = 0x8e0de;
    0x0004704a bl 0xe858                                         |     fcn_0000e858 (r0, r1);
    0x0004704e b 0x46d42                                         |     goto label_4;
                                                                 | label_9:
    0x00047050 ldr r1, [pc, 0x40]                                |     
    0x00047052 mov r2, r5                                        |     r2 = r5;
    0x00047054 movs r0, 2                                        |     r0 = 2;
    0x00047056 add r1, pc                                        |     r1 = 0x8e0ee;
    0x00047058 bl 0xe3e0                                         |     fcn_0000e3e0 (r0);
    0x0004705c ldr r0, [pc, 0x38]                                |     
    0x0004705e mov r2, r6                                        |     r2 = r6;
    0x00047060 mov r1, r5                                        |     r1 = r5;
    0x00047062 add r0, pc                                        |     r0 = 0x8e0fe;
    0x00047064 bl 0x14f4c                                        |     fcn_00014f4c (r0, r1, r2);
    0x00047068 mov r0, r5                                        |     r0 = r5;
    0x0004706a blx 0x632c                                        |     fcn_0000632c ();
    0x0004706e b 0x46faa                                         |     goto label_5;
                                                                 | }

[*] Function strcat used 1 times wpa_supplicant