[*] Binary protection state of connmand

  
  	Partial RELRO  No Canary found   NX disabled  No PIE       No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of connmand

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/connmand @ 0x24598 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00024598 ()              | void fcn_00024598 (int32_t arg_11ch, int32_t arg_120h, int32_t arg1) {
                                         |     int32_t var_ch_2;
                                         |     int32_t var_ch;
                                         |     char * s;
                                         |     int32_t var_114h;
                                         |     int32_t var_11ch;
                                         |     r0 = arg1;
    0x00024598 str r3, [sp, -4]!         |     *((sp -= 4)) = r3;
    0x0002459c ldr r3, [r0, 0x1f0]       |     r3 = *(arg_11chx1f0);
    0x000245a0 push {r4, lr}             |     
    0x000245a4 cmp r3, 0                 |     
    0x000245a8 sub sp, sp, 0x114         |     
                                         |     if (r3 != 0) {
    0x000245ac beq 0x2460c               |         
    0x000245b0 mov r4, r0                |         r4 = r0;
    0x000245b4 add r3, sp, 0x120         |         r3 += arg_120h;
    0x000245b8 str r3, [sp, 0xc]         |         var_ch = r3;
    0x000245bc stm sp, {r2, r4}          |         *(sp) = r2;
                                         |         *((sp + 4)) = r4;
    0x000245c0 ldr r3, [pc, 0x54]        |         r3 = *(0x24618);
    0x000245c4 ldr r2, [pc, 0x54]        |         r2 = "gweb_gresolv.c";
    0x000245c8 mov r1, 0x100             |         r1 = 0x100;
    0x000245cc add r0, sp, 0x10          |         r0 += var_ch;
    0x000245d0 bl 0x1c074                |         r0 = snprintf (r0, r1, "gweb_gresolv.c", r3)
    0x000245d4 cmp r0, 0                 |         
                                         |         if (r0 <= 0) {
    0x000245d8 ble 0x2460c               |             goto label_0;
                                         |         }
    0x000245dc add ip, sp, 0x10          |         
    0x000245e0 rsb r1, r0, 0x100         |         r1 = 0x100 - r0;
    0x000245e4 ldr r3, [sp, 0xc]         |         r3 = var_ch;
    0x000245e8 ldr r2, [sp, 0x11c]       |         r2 = *(arg_11ch);
    0x000245ec add r0, ip, r0            |         r0 = ip + r0;
    0x000245f0 bl 0x1bf9c                |         r0 = vsnprintf (r0, r1, r2, r3)
    0x000245f4 cmp r0, 0                 |         
                                         |         if (r0 <= 0) {
    0x000245f8 ble 0x2460c               |             goto label_0;
                                         |         }
    0x000245fc ldr r3, [r4, 0x1f0]       |         r3 = *((r4 + 0x1f0));
    0x00024600 ldr r1, [r4, 0x1f4]       |         r1 = *((r4 + 0x1f4));
    0x00024604 add r0, sp, 0x10          |         r0 += var_ch;
    0x00024608 blx r3                    |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                         |     }
                                         | label_0:
    0x0002460c add sp, sp, 0x114         |     
    0x00024610 pop {r4, lr}              |     
    0x00024614 add sp, sp, 4             |     
    0x00024618 bx lr                     |     return;
                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/connmand @ 0x2c050 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0002c050 ()                      | void fcn_0002c050 (int32_t arg1, int32_t arg2) {
                                                 |     int32_t var_0h;
                                                 |     int32_t var_4h;
                                                 |     int32_t var_8h;
                                                 |     int32_t var_ch;
                                                 |     int32_t var_10h;
                                                 |     int32_t var_14h;
                                                 |     void * s;
                                                 |     int32_t var_28h;
                                                 |     int32_t var_2ah;
                                                 |     int32_t var_2bh;
                                                 |     int32_t var_2ch;
                                                 |     int32_t var_2dh;
                                                 |     int32_t var_2eh;
                                                 |     int32_t var_2fh;
                                                 |     int32_t var_3ch;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0002c050 push {r4, r5, r6, r7, lr}         |     
    0x0002c054 subs r6, r0, 0                    |     r6 = r0 - 0;
    0x0002c058 sub sp, sp, 0x3c                  |     
    0x0002c05c bge 0x2c070                       |     
                                                 |     while (r5 < r0) {
                                                 | label_0:
    0x0002c060 mov r6, 0                         |         r6 = 0;
                                                 | label_1:
    0x0002c064 mov r0, r6                        |         r0 = r6;
    0x0002c068 add sp, sp, 0x3c                  |         
    0x0002c06c pop {r4, r5, r6, r7, pc}          |         
    0x0002c070 mov r4, r1                        |         r4 = r1;
    0x0002c074 mov r2, 0                         |         r2 = 0;
    0x0002c078 ldr r1, [pc, 0xd0]                |         r1 = *(0x2c14c);
    0x0002c07c mov r0, 2                         |         r0 = 2;
    0x0002c080 bl 0x1c1e8                        |         r0 = socket (r0, r1, r2);
    0x0002c084 subs r5, r0, 0                    |         r5 = r0 - 0;
    0x0002c088 blt 0x2c060                       |         
                                                 |     }
    0x0002c08c mov r2, 0x20                      |     r2 = 0x20;
    0x0002c090 mov r1, 0                         |     r1 = 0;
    0x0002c094 add r0, sp, 0x18                  |     r0 += s;
    0x0002c098 bl 0x1bb4c                        |     memset (r0, r1, r2);
    0x0002c09c add r2, sp, 0x18                  |     r2 += s;
    0x0002c0a0 ldr r1, [pc, 0xac]                |     r1 = "___add__s";
    0x0002c0a4 mov r0, r5                        |     r0 = r5;
    0x0002c0a8 str r6, [sp, 0x28]                |     var_28h = r6;
    0x0002c0ac bl 0x1c35c                        |     r0 = ioctl (r0, r1);
    0x0002c0b0 subs r6, r0, 0                    |     r6 = r0 - 0;
                                                 |     if (r6 == r0) {
    0x0002c0b4 bne 0x2c0cc                       |         
    0x0002c0b8 add r2, sp, 0x18                  |         r2 += s;
    0x0002c0bc ldr r1, [pc, 0x94]                |         r1 = *(0x2c154);
    0x0002c0c0 mov r0, r5                        |         r0 = r5;
    0x0002c0c4 bl 0x1c35c                        |         r0 = ioctl (r0, r1);
    0x0002c0c8 mov r6, r0                        |         r6 = r0;
                                                 |     }
    0x0002c0cc mov r0, r5                        |     r0 = r5;
    0x0002c0d0 bl 0x1b66c                        |     close (r0);
    0x0002c0d4 cmp r6, 0                         |     
                                                 |     if (r6 < 0) {
    0x0002c0d8 blt 0x2c060                       |         goto label_0;
                                                 |     }
    0x0002c0dc cmp r4, 0                         |     
                                                 |     if (r4 != 0) {
    0x0002c0e0 moveq r5, 0x12                    |         r5 = 0x12;
                                                 |     }
                                                 |     if (r4 != 0) {
    0x0002c0e4 beq 0x2c0f4                       |         
    0x0002c0e8 mov r0, r4                        |         r0 = r4;
    0x0002c0ec bl 0x1c5d8                        |         r0 = strlen (r0);
    0x0002c0f0 add r5, r0, 0x12                  |         r5 = r0 + 0x12;
                                                 |     }
    0x0002c0f4 mov r0, r5                        |     r0 = r5;
    0x0002c0f8 bl 0x1b57c                        |     r0 = g_malloc ();
    0x0002c0fc subs r6, r0, 0                    |     r6 = r0 - 0;
                                                 |     if (r6 == r0) {
    0x0002c100 beq 0x2c060                       |         goto label_0;
                                                 |     }
    0x0002c104 ldrb r3, [sp, 0x2a]               |     r3 = var_2ah;
    0x0002c108 ldrb r2, [sp, 0x2b]               |     r2 = var_2bh;
    0x0002c10c ldrb r1, [sp, 0x2c]               |     r1 = var_2ch;
    0x0002c110 ldrb ip, [sp, 0x2d]               |     ip = var_2dh;
    0x0002c114 ldrb lr, [sp, 0x2e]               |     lr = var_2eh;
    0x0002c118 ldrb r7, [sp, 0x2f]               |     r7 = var_2fh;
    0x0002c11c cmp r4, 0                         |     
    0x0002c120 str r1, [sp, 8]                   |     var_8h = r1;
    0x0002c124 str r2, [sp, 4]                   |     var_4h = r2;
    0x0002c128 str r3, [sp]                      |     *(sp) = r3;
    0x0002c12c str r7, [sp, 0x14]                |     var_14h = r7;
    0x0002c130 ldr r3, [pc, 0x24]                |     r3 = *(0x2c158);
    0x0002c134 str lr, [sp, 0x10]                |     var_10h = lr;
    0x0002c138 str ip, [sp, 0xc]                 |     var_ch = ip;
                                                 |     if (r4 == 0) {
    0x0002c13c movne r3, r4                      |         r3 = r4;
                                                 |     }
    0x0002c140 ldr r2, [pc, 0x18]                |     r2 = *(0x2c15c);
    0x0002c144 mov r1, r5                        |     r1 = r5;
    0x0002c148 bl 0x1c074                        |     snprintf (r0, r1, r2, r3)
    0x0002c14c b 0x2c064                         |     goto label_1;
                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/connmand @ 0x3cd74 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0003cd74 ()                                      | void fcn_0003cd74 (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_18h;
                                                                 |     char * dest;
                                                                 |     int8_t var_12h;
                                                                 |     char * src;
                                                                 |     int32_t var_1040h;
                                                                 |     int32_t var_34h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0003cd74 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0003cd78 subs r7, r2, 0                                    |     r7 = r2 - 0;
    0x0003cd7c sub sp, sp, 0x1040                                |     
    0x0003cd80 sub sp, sp, 0x34                                  |     
    0x0003cd84 mov r8, r0                                        |     r8 = r0;
    0x0003cd88 mov sb, r1                                        |     sb = r1;
                                                                 |     if (r7 != r2) {
    0x0003cd8c bne 0x3ce9c                                       |         goto label_4;
                                                                 |     }
    0x0003cd90 ldr r2, [pc, 0x1c0]                               |     r2 = *(0x3cf54);
    0x0003cd94 ldr r1, [pc, 0x1c0]                               |     r1 = *(0x3cf58);
    0x0003cd98 add r0, sp, 0x70                                  |     r0 += dest;
    0x0003cd9c bl 0x1c2c0                                        |     strncpy (r0, r1, r2);
                                                                 | label_1:
    0x0003cda0 add r0, sp, 0x70                                  |     r0 += dest;
    0x0003cda4 bl 0x1bf48                                        |     opendir ();
    0x0003cda8 subs r6, r0, 0                                    |     r6 -= dest;
                                                                 |     if (r6 != dest) {
    0x0003cdac moveq r5, r6                                      |         r5 = r6;
                                                                 |     }
                                                                 |     if (r6 == dest) {
    0x0003cdb0 beq 0x3cf0c                                       |         goto label_5;
                                                                 |     }
    0x0003cdb4 ldr sl, [pc, 0x1a4]                               |     sl = "_usr_share_zoneinfo";
    0x0003cdb8 ldr fp, [pc, 0x1a4]                               |     fp = "posix";
                                                                 |     do {
                                                                 | label_0:
    0x0003cdbc mov r0, r6                                        |         r0 = r6;
    0x0003cdc0 bl 0x1c674                                        |         readdir64 ();
    0x0003cdc4 subs r5, r0, 0                                    |         r5 -= dest;
                                                                 |         if (r5 == dest) {
    0x0003cdc8 beq 0x3cf04                                       |             goto label_6;
                                                                 |         }
    0x0003cdcc add r4, r5, 0x13                                  |         r4 += src;
    0x0003cdd0 ldr r1, [pc, 0x190]                               |         r1 = "posix";
    0x0003cdd4 mov r0, r4                                        |         r0 = r4;
    0x0003cdd8 bl 0x1c7b8                                        |         r0 = strcmp (r0, "posix");
    0x0003cddc cmp r0, 0                                         |         
    0x0003cde0 beq 0x3cdbc                                       |         
                                                                 |     } while (r0 == 0);
    0x0003cde4 mov r1, sl                                        |     r1 = sl;
    0x0003cde8 mov r0, r4                                        |     r0 = r4;
    0x0003cdec bl 0x1c7b8                                        |     r0 = strcmp (r0, r1);
    0x0003cdf0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003cdf4 beq 0x3cdbc                                       |         goto label_0;
                                                                 |     }
    0x0003cdf8 mov r1, fp                                        |     r1 = fp;
    0x0003cdfc mov r0, r4                                        |     r0 = r4;
    0x0003ce00 bl 0x1c7b8                                        |     r0 = strcmp (r0, r1);
    0x0003ce04 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003ce08 beq 0x3cdbc                                       |         goto label_0;
                                                                 |     }
    0x0003ce0c ldr r1, [pc, 0x158]                               |     r1 = *(0x3cf68);
    0x0003ce10 mov r0, r4                                        |     r0 = r4;
    0x0003ce14 bl 0x1c7b8                                        |     r0 = strcmp (r0, r1);
    0x0003ce18 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0003ce1c beq 0x3cdbc                                       |         goto label_0;
                                                                 |     }
    0x0003ce20 ldrb r5, [r5, 0x12]                               |     r5 = var_12h;
    0x0003ce24 cmp r5, 4                                         |     
                                                                 |     if (r5 == 4) {
    0x0003ce28 beq 0x3ce68                                       |         goto label_7;
                                                                 |     }
    0x0003ce2c cmp r5, 8                                         |     
                                                                 |     if (r5 == 8) {
    0x0003ce30 beq 0x3ceb8                                       |         goto label_8;
                                                                 |     }
    0x0003ce34 cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x0003ce38 bne 0x3cdbc                                       |         goto label_0;
                                                                 |     }
    0x0003ce3c mov r0, r6                                        |     r0 = r6;
    0x0003ce40 bl 0x1c518                                        |     dirfd ();
    0x0003ce44 mov r3, r5                                        |     r3 = r5;
    0x0003ce48 add r2, sp, 8                                     |     r2 += var_8h;
    0x0003ce4c mov r1, r4                                        |     r1 = r4;
    0x0003ce50 bl 0x1be64                                        |     r0 = fstatat64 ();
    0x0003ce54 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0003ce58 blt 0x3cdbc                                       |         goto label_0;
                                                                 |     }
    0x0003ce5c ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0003ce60 tst r3, 0x4000                                    |     
                                                                 |     if ((r3 & 0x4000) == 0) {
    0x0003ce64 beq 0x3cdbc                                       |         goto label_0;
                                                                 |     }
                                                                 | label_7:
    0x0003ce68 cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x0003ce6c bne 0x3cf3c                                       |         goto label_9;
                                                                 |     }
    0x0003ce70 mov r2, 0x1000                                    |     r2 = 0x1000;
    0x0003ce74 mov r1, r4                                        |     r1 = r4;
    0x0003ce78 add r0, sp, 0x70                                  |     r0 += dest;
    0x0003ce7c bl 0x1c2c0                                        |     strncpy (r0, r1, r2);
                                                                 | label_3:
    0x0003ce80 add r2, sp, 0x70                                  |     r2 += dest;
    0x0003ce84 mov r1, sb                                        |     r1 = sb;
    0x0003ce88 mov r0, r8                                        |     r0 = r8;
    0x0003ce8c bl 0x3cd74                                        |     r0 = fcn_0003cd74 (r0, r1);
    0x0003ce90 subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 == r0) {
    0x0003ce94 beq 0x3cdbc                                       |         goto label_0;
                                                                 |     }
    0x0003ce98 b 0x3cf04                                         |     goto label_6;
                                                                 | label_4:
    0x0003ce9c str r7, [sp]                                      |     *(sp) = r7;
    0x0003cea0 ldr r3, [pc, 0xb4]                                |     r3 = *(0x3cf58);
    0x0003cea4 ldr r2, [pc, 0xc4]                                |     r2 = "right";
    0x0003cea8 mov r1, 0x1000                                    |     r1 = 0x1000;
    0x0003ceac add r0, sp, 0x70                                  |     r0 += dest;
    0x0003ceb0 bl 0x1c074                                        |     snprintf (r0, r1, "right", r3)
    0x0003ceb4 b 0x3cda0                                         |     goto label_1;
                                                                 | label_8:
    0x0003ceb8 cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x0003cebc bne 0x3cf1c                                       |         goto label_10;
                                                                 |     }
    0x0003cec0 str r4, [sp]                                      |     *(sp) = r4;
    0x0003cec4 ldr r3, [pc, 0x90]                                |     r3 = *(0x3cf58);
    0x0003cec8 ldr r2, [pc, 0xa0]                                |     r2 = "right";
    0x0003cecc mov r1, 0x1000                                    |     r1 = 0x1000;
    0x0003ced0 add r0, sp, 0x70                                  |     r0 += dest;
    0x0003ced4 bl 0x1c074                                        |     snprintf (r0, r1, "right", r3)
                                                                 | label_2:
    0x0003ced8 add r2, sp, 0x70                                  |     r2 += dest;
    0x0003cedc add r1, sb, 0x30                                  |     r1 = sb + 0x30;
    0x0003cee0 mov r0, r8                                        |     r0 = r8;
    0x0003cee4 bl 0x3cb70                                        |     r0 = fcn_0003cb70 (r0, r1);
    0x0003cee8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0003ceec bne 0x3cdbc                                       |         goto label_0;
                                                                 |     }
    0x0003cef0 mov r2, r4                                        |     r2 = r4;
    0x0003cef4 mov r1, r7                                        |     r1 = r7;
    0x0003cef8 ldr r0, [pc, 0x70]                                |     r0 = "right";
    0x0003cefc bl 0x1bc78                                        |     r0 = g_strdup_printf ()
    0x0003cf00 mov r5, r0                                        |     r5 = r0;
                                                                 | label_6:
    0x0003cf04 mov r0, r6                                        |     r0 = r6;
    0x0003cf08 bl 0x1bac8                                        |     closedir ();
                                                                 | label_5:
    0x0003cf0c mov r0, r5                                        |     r0 = r5;
    0x0003cf10 add sp, sp, 0x1040                                |     
    0x0003cf14 add sp, sp, 0x34                                  |     
    0x0003cf18 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |     
                                                                 | label_10:
    0x0003cf1c str r4, [sp, 4]                                   |     var_4h = r4;
    0x0003cf20 str r7, [sp]                                      |     *(sp) = r7;
    0x0003cf24 ldr r3, [pc, 0x30]                                |     r3 = *(0x3cf58);
    0x0003cf28 ldr r2, [pc, 0x44]                                |     r2 = *(0x3cf70);
    0x0003cf2c mov r1, 0x1000                                    |     r1 = 0x1000;
    0x0003cf30 add r0, sp, 0x70                                  |     r0 += dest;
    0x0003cf34 bl 0x1c074                                        |     snprintf (r0, r1, r2, r3)
    0x0003cf38 b 0x3ced8                                         |     goto label_2;
                                                                 | label_9:
    0x0003cf3c str r4, [sp]                                      |     *(sp) = r4;
    0x0003cf40 mov r3, r7                                        |     r3 = r7;
    0x0003cf44 ldr r2, [pc, 0x24]                                |     r2 = "right";
    0x0003cf48 mov r1, 0x1000                                    |     r1 = 0x1000;
    0x0003cf4c add r0, sp, 0x70                                  |     r0 += dest;
    0x0003cf50 bl 0x1c074                                        |     snprintf (r0, r1, "right", r3)
    0x0003cf54 b 0x3ce80                                         |     goto label_3;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/connmand @ 0x3cf78 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0003cf78 ()                                      | void fcn_0003cf78 () {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_20h;
                                                                 |     size_t var_40h;
                                                                 |     char * s;
                                                                 |     size_t length;
                                                                 |     int32_t var_a8h_2;
                                                                 |     int32_t var_1040h;
                                                                 |     int32_t var_3ch;
    0x0003cf78 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x0003cf7c ldr r0, [pc, 0x2d8]                               |     r0 = *(0x3d258);
    0x0003cf80 sub sp, sp, 0x1040                                |     
    0x0003cf84 sub sp, sp, 0x3c                                  |     
    0x0003cf88 mov r1, 0x80000                                   |     r1 = 0x80000;
    0x0003cf8c bl 0x1ba2c                                        |     r0 = open64 ();
    0x0003cf90 subs sl, r0, 0                                    |     sl = r0 - 0;
                                                                 |     if (sl < r0) {
    0x0003cf94 blt 0x3cfb0                                       |         goto label_5;
                                                                 |     }
    0x0003cf98 add r1, sp, 0x78                                  |     r1 += s;
    0x0003cf9c bl 0x1b918                                        |     r0 = fstat64 ();
    0x0003cfa0 cmp r0, 0                                         |     
    0x0003cfa4 bge 0x3cfb8                                       |     
                                                                 |     while (r3 > 3) {
    0x0003cfa8 mov r0, sl                                        |         r0 = sl;
    0x0003cfac bl 0x1b66c                                        |         close (r0);
                                                                 | label_5:
    0x0003cfb0 mov r4, 0                                         |         r4 = 0;
    0x0003cfb4 b 0x3d028                                         |         goto label_6;
    0x0003cfb8 mov r2, 0                                         |         r2 = 0;
    0x0003cfbc mov r3, 0                                         |         r3 = 0;
    0x0003cfc0 strd r2, r3, [sp, 8]                              |         __asm ("strd r2, r3, [var_8h]");
    0x0003cfc4 ldr r1, [sp, 0xa8]                                |         r1 = length;
    0x0003cfc8 mov r3, 1                                         |         r3 = 1;
    0x0003cfcc mov r2, r3                                        |         r2 = r3;
    0x0003cfd0 str sl, [sp]                                      |         *(sp) = sl;
    0x0003cfd4 mov r0, 0                                         |         r0 = 0;
    0x0003cfd8 bl 0x1c08c                                        |         r0 = mmap64 ();
    0x0003cfdc sub r3, r0, 1                                     |         r3 = r0 - 1;
    0x0003cfe0 cmn r3, 3                                         |         
    0x0003cfe4 mov r5, r0                                        |         r5 = r0;
    0x0003cfe8 bhi 0x3cfa8                                       |         
                                                                 |     }
    0x0003cfec ldrd r6, r7, [sp, 0xa8]                           |     __asm ("ldrd r6, r7, [length]");
    0x0003cff0 ldr fp, [pc, 0x268]                               |     fp = "ZONE";
    0x0003cff4 mov r8, r6                                        |     r8 = r6;
    0x0003cff8 mov sb, r7                                        |     sb = r7;
    0x0003cffc mov r4, r0                                        |     r4 = r0;
                                                                 | label_2:
    0x0003d000 cmp r8, 6                                         |     
    0x0003d004 sbcs r3, sb, 0                                    |     __asm ("sbcs r3, sb, 0");
                                                                 |     if (r8 >= 6) {
    0x0003d008 bge 0x3d080                                       |         goto label_7;
                                                                 |     }
    0x0003d00c cmp r4, 0                                         |     
    0x0003d010 bne 0x3d0a4                                       |     
                                                                 |     while (r4 == r0) {
                                                                 | label_0:
    0x0003d014 ldr r1, [sp, 0xa8]                                |         r1 = length;
    0x0003d018 mov r0, r5                                        |         r0 = r5;
    0x0003d01c bl 0x1b4b0                                        |         munmap (r0, r1);
    0x0003d020 mov r0, sl                                        |         r0 = sl;
    0x0003d024 bl 0x1b66c                                        |         close (r0);
                                                                 | label_6:
    0x0003d028 ldr r3, [pc, 0x234]                               |         r3 = "ZONE";
    0x0003d02c ldr r2, [r3, 0x28]                                |         r2 = *(0x3d288);
    0x0003d030 mov r6, r3                                        |         r6 = r3;
    0x0003d034 tst r2, 1                                         |         
                                                                 |         if ((r2 & 1) != 0) {
    0x0003d038 beq 0x3d050                                       |             
    0x0003d03c mov r3, r4                                        |             r3 = r4;
    0x0003d040 ldr r2, [pc, 0x220]                               |             r2 = *(0x3d264);
    0x0003d044 ldr r1, [pc, 0x220]                               |             r1 = "__connman_timezone_lookup";
    0x0003d048 ldr r0, [pc, 0x220]                               |             r0 = "src_timezone.c";
    0x0003d04c bl 0x2acc4                                        |             connman_debug ();
                                                                 |         }
    0x0003d050 mov r1, 0x80000                                   |         r1 = 0x80000;
    0x0003d054 ldr r0, [pc, 0x218]                               |         r0 = "%s:%s() sysconfig zone %s";
    0x0003d058 bl 0x1ba2c                                        |         r0 = open64 ();
    0x0003d05c subs r7, r0, 0                                    |         r7 = r0 - 0;
                                                                 |         if (r7 >= r0) {
    0x0003d060 bge 0x3d16c                                       |             goto label_8;
                                                                 |         }
    0x0003d064 mov r0, r4                                        |         r0 = r4;
    0x0003d068 bl 0x1b60c                                        |         g_free ();
    0x0003d06c mov r4, 0                                         |         r4 = 0;
                                                                 | label_4:
    0x0003d070 mov r0, r4                                        |         r0 = r4;
    0x0003d074 add sp, sp, 0x1040                                |         
    0x0003d078 add sp, sp, 0x3c                                  |         
    0x0003d07c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_7:
    0x0003d080 mov r2, 4                                         |         r2 = 4;
    0x0003d084 mov r1, fp                                        |         r1 = fp;
    0x0003d088 mov r0, r4                                        |         r0 = r4;
    0x0003d08c bl 0x1b6e4                                        |         r0 = strncmp (r0, r1, r2);
    0x0003d090 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0003d094 bne 0x3d138                                       |             goto label_9;
                                                                 |         }
    0x0003d098 cmp r5, r4                                        |         
                                                                 |         if (r5 != r4) {
    0x0003d09c bne 0x3d120                                       |             goto label_10;
                                                                 |         }
    0x0003d0a0 mov r4, r5                                        |         r4 = r5;
                                                                 | label_1:
    0x0003d0a4 sub r3, r4, r5                                    |         r3 = r4 - r5;
    0x0003d0a8 subs r0, r6, r3                                   |         r0 = r6 - r3;
    0x0003d0ac mov r6, r0                                        |         r6 = r0;
    0x0003d0b0 mov r2, r0                                        |         r2 = r0;
    0x0003d0b4 mov r1, 0xa                                       |         r1 = 0xa;
    0x0003d0b8 mov r0, r4                                        |         r0 = r4;
    0x0003d0bc bl 0x1c14c                                        |         memchr (r0, r1, r2);
    0x0003d0c0 mov r1, 0x22                                      |         r1 = 0x22;
    0x0003d0c4 subs sb, r0, 0                                    |         sb = r0 - 0;
                                                                 |         if (sb == r0) {
    0x0003d0c8 subne r6, sb, r4                                  |             r6 = sb - r4;
                                                                 |         }
                                                                 |         if (sb == r0) {
    0x0003d0cc movne r2, r6                                      |             r2 = r6;
                                                                 |         }
                                                                 |         if (sb == r0) {
    0x0003d0d0 movne r6, r2                                      |             r6 = r2;
                                                                 |         }
    0x0003d0d4 mov r2, r6                                        |         r2 = r6;
    0x0003d0d8 mov r0, r4                                        |         r0 = r4;
    0x0003d0dc bl 0x1c14c                                        |         r0 = memchr (r0, r1, r2);
    0x0003d0e0 subs r8, r0, 0                                    |         r8 = r0 - 0;
                                                                 |         if (r8 == r0) {
    0x0003d0e4 beq 0x3d160                                       |             goto label_11;
                                                                 |         }
    0x0003d0e8 add r6, r8, 1                                     |         r6 = r8 + 1;
    0x0003d0ec sub r2, sb, r8                                    |         r2 = sb - r8;
    0x0003d0f0 mov r1, 0x22                                      |         r1 = 0x22;
    0x0003d0f4 sub r2, r2, 1                                     |         r2--;
    0x0003d0f8 mov r0, r6                                        |         r0 = r6;
    0x0003d0fc bl 0x1c14c                                        |         r0 = memchr (r0, r1, r2);
    0x0003d100 subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 == r0) {
    0x0003d104 subne r1, r4, r8                                  |             r1 = r4 - r8;
                                                                 |         }
                                                                 |         if (r4 == r0) {
    0x0003d108 subne r1, r1, 1                                   |             r1--;
                                                                 |         }
                                                                 |         if (r4 == r0) {
    0x0003d10c movne r0, r6                                      |             r0 = r6;
                                                                 |         }
    0x0003d110 beq 0x3d014                                       |         
                                                                 |     }
                                                                 | label_3:
    0x0003d114 bl 0x1c6a4                                        |     r0 = g_strndup ();
    0x0003d118 mov r4, r0                                        |     r4 = r0;
    0x0003d11c b 0x3d014                                         |     goto label_0;
                                                                 | label_10:
    0x0003d120 ldrb r3, [r4, -1]                                 |     r3 = *((r4 - 1));
    0x0003d124 cmp r3, 0xa                                       |     
                                                                 |     if (r3 != 0xa) {
    0x0003d128 bne 0x3d138                                       |         goto label_9;
                                                                 |     }
    0x0003d12c ldrb r3, [r4, 4]                                  |     r3 = *((r4 + 4));
    0x0003d130 cmp r3, 0x3d                                      |     
                                                                 |     if (r3 == 0x3d) {
    0x0003d134 beq 0x3d0a4                                       |         goto label_1;
                                                                 |     }
                                                                 | label_9:
    0x0003d138 add r0, r4, 1                                     |     r0 = r4 + 1;
    0x0003d13c sub r2, r8, 1                                     |     r2 = r8 - 1;
    0x0003d140 mov r1, 0x5a                                      |     r1 = 0x5a;
    0x0003d144 bl 0x1c14c                                        |     r0 = memchr (r0, r1, r2);
    0x0003d148 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 == r0) {
    0x0003d14c beq 0x3d014                                       |         goto label_0;
                                                                 |     }
    0x0003d150 sub r3, r4, r5                                    |     r3 = r4 - r5;
    0x0003d154 subs r8, r6, r3                                   |     r8 = r6 - r3;
    0x0003d158 sbc sb, r7, r3, asr 31                            |     __asm ("sbc sb, r7, r3, asr 31");
    0x0003d15c b 0x3d000                                         |     goto label_2;
                                                                 | label_11:
    0x0003d160 sub r1, r6, 5                                     |     r1 = r6 - 5;
    0x0003d164 add r0, r4, 5                                     |     r0 = r4 + 5;
    0x0003d168 b 0x3d114                                         |     goto label_3;
                                                                 | label_8:
    0x0003d16c add r1, sp, 0x10                                  |     r1 += var_10h;
    0x0003d170 bl 0x1b918                                        |     r0 = fstat64 ();
    0x0003d174 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x0003d178 blt 0x3d230                                       |         
    0x0003d17c ldr r3, [sp, 0x20]                                |         r3 = var_20h;
    0x0003d180 and r3, r3, 0xf000                                |         r3 &= 0xf000;
    0x0003d184 cmp r3, 0x8000                                    |         
                                                                 |         if (r3 == 0x8000) {
    0x0003d188 bne 0x3d1c0                                       |             
    0x0003d18c mov r2, 0                                         |             r2 = 0;
    0x0003d190 mov r3, 0                                         |             r3 = 0;
    0x0003d194 strd r2, r3, [sp, 8]                              |             __asm ("strd r2, r3, [var_8h]");
    0x0003d198 ldr r1, [sp, 0x40]                                |             r1 = var_40h;
    0x0003d19c mov r3, 1                                         |             r3 = 1;
    0x0003d1a0 mov r2, r3                                        |             r2 = r3;
    0x0003d1a4 str r7, [sp]                                      |             *(sp) = r7;
    0x0003d1a8 mov r0, 0                                         |             r0 = 0;
    0x0003d1ac bl 0x1c08c                                        |             r0 = mmap64 ();
    0x0003d1b0 sub r3, r0, 1                                     |             r3 = r0 - 1;
    0x0003d1b4 cmn r3, 3                                         |             
    0x0003d1b8 mov r5, r0                                        |             r5 = r0;
                                                                 |             if (r3 < 3) {
    0x0003d1bc bls 0x3d1d0                                       |                 goto label_12;
                                                                 |             }
                                                                 |         }
    0x0003d1c0 mov r0, r4                                        |         r0 = r4;
    0x0003d1c4 bl 0x1b60c                                        |         g_free ();
    0x0003d1c8 mov r4, 0                                         |         r4 = 0;
    0x0003d1cc b 0x3d230                                         |         goto label_13;
                                                                 | label_12:
    0x0003d1d0 cmp r4, 0                                         |         
                                                                 |         if (r4 != 0) {
    0x0003d1d4 beq 0x3d210                                       |             
    0x0003d1d8 ldr r3, [pc, 0x98]                                |             r3 = "/etc/localtime";
    0x0003d1dc ldr r2, [pc, 0x98]                                |             r2 = "_usr_share_zoneinfo";
    0x0003d1e0 mov r1, 0x1000                                    |             r1 = 0x1000;
    0x0003d1e4 str r4, [sp]                                      |             *(sp) = r4;
    0x0003d1e8 add r0, sp, 0x78                                  |             r0 += s;
    0x0003d1ec bl 0x1c074                                        |             snprintf (r0, r1, "_usr_share_zoneinfo", r3)
    0x0003d1f0 add r2, sp, 0x78                                  |             r2 += s;
    0x0003d1f4 add r1, sp, 0x40                                  |             r1 += var_40h;
    0x0003d1f8 mov r0, r5                                        |             r0 = r5;
    0x0003d1fc bl 0x3cb70                                        |             r0 = fcn_0003cb70 (r0, r1);
    0x0003d200 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x0003d204 beq 0x3d224                                       |                 goto label_14;
                                                                 |             }
    0x0003d208 mov r0, r4                                        |             r0 = r4;
    0x0003d20c bl 0x1b60c                                        |             g_free ();
                                                                 |         }
    0x0003d210 mov r2, 0                                         |         r2 = 0;
    0x0003d214 add r1, sp, 0x10                                  |         r1 += var_10h;
    0x0003d218 mov r0, r5                                        |         r0 = r5;
    0x0003d21c bl 0x3cd74                                        |         r0 = fcn_0003cd74 (r0, r1);
    0x0003d220 mov r4, r0                                        |         r4 = r0;
                                                                 | label_14:
    0x0003d224 ldr r1, [sp, 0x40]                                |         r1 = var_40h;
    0x0003d228 mov r0, r5                                        |         r0 = r5;
    0x0003d22c bl 0x1b4b0                                        |         munmap (r0, r1);
                                                                 |     }
                                                                 | label_13:
    0x0003d230 mov r0, r7                                        |     r0 = r7;
    0x0003d234 bl 0x1b66c                                        |     close (r0);
    0x0003d238 ldr r3, [r6, 0x38]                                |     r3 = *((r6 + 0x38));
    0x0003d23c tst r3, 1                                         |     
                                                                 |     if ((r3 & 1) == 0) {
    0x0003d240 beq 0x3d070                                       |         goto label_4;
                                                                 |     }
    0x0003d244 mov r3, r4                                        |     r3 = r4;
    0x0003d248 ldr r2, [pc, 0x18]                                |     r2 = *(0x3d264);
    0x0003d24c ldr r1, [pc, 0x18]                                |     r1 = "__connman_timezone_lookup";
    0x0003d250 ldr r0, [pc, 0x28]                                |     r0 = *(0x3d27c);
    0x0003d254 bl 0x2acc4                                        |     connman_debug ();
    0x0003d258 b 0x3d070                                         |     goto label_4;
                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/connmand @ 0x3d284 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0003d284 ()                      | void fcn_0003d284 (int32_t arg1) {
                                                 |     int32_t var_0h;
                                                 |     int32_t var_8h;
                                                 |     int32_t var_8h_2;
                                                 |     int32_t var_10h;
                                                 |     size_t length;
                                                 |     int32_t var_78h;
                                                 |     int32_t var_88h;
                                                 |     char * fildes;
                                                 |     int32_t var_10c0h;
                                                 |     int32_t var_24h;
                                                 |     r0 = arg1;
    0x0003d284 ldr r3, [pc, 0x168]               |     r3 = *(0x3d3f0);
    0x0003d288 push {r4, r5, r6, r7, lr}         |     
    0x0003d28c ldr r2, [r3, 0x48]                |     r2 = *(0x3d438);
    0x0003d290 sub sp, sp, 0x10c0                |     
    0x0003d294 tst r2, 1                         |     
    0x0003d298 sub sp, sp, 0x24                  |     
    0x0003d29c mov r5, r0                        |     r5 = r0;
    0x0003d2a0 mov r4, r3                        |     r4 = r3;
                                                 |     if ((r2 & 1) != 0) {
    0x0003d2a4 beq 0x3d2bc                       |         
    0x0003d2a8 mov r3, r0                        |         r3 = r0;
    0x0003d2ac ldr r2, [pc, 0x144]               |         r2 = *(0x3d3f4);
    0x0003d2b0 ldr r1, [pc, 0x144]               |         r1 = "__connman_timezone_change";
    0x0003d2b4 ldr r0, [pc, 0x144]               |         r0 = "src_timezone.c";
    0x0003d2b8 bl 0x2acc4                        |         connman_debug ();
                                                 |     }
    0x0003d2bc str r5, [sp]                      |     *(sp) = r5;
    0x0003d2c0 ldr r3, [pc, 0x13c]               |     r3 = "_s:_s___zone__s";
    0x0003d2c4 ldr r2, [pc, 0x13c]               |     r2 = "_usr_share_zoneinfo";
    0x0003d2c8 mov r1, 0x1000                    |     r1 = 0x1000;
    0x0003d2cc add r0, sp, 0xe0                  |     r0 += fildes;
    0x0003d2d0 bl 0x1c074                        |     snprintf (r0, r1, "_usr_share_zoneinfo", "_s:_s___zone__s")
    0x0003d2d4 mov r1, 0x80000                   |     r1 = 0x80000;
    0x0003d2d8 add r0, sp, 0xe0                  |     r0 += fildes;
    0x0003d2dc bl 0x1ba2c                        |     open64 ();
    0x0003d2e0 subs r5, r0, 0                    |     r5 -= fildes;
                                                 |     if (r5 >= fildes) {
    0x0003d2e4 mvnlt r4, 0x15                    |         r4 = ~0x15;
                                                 |     }
                                                 |     if (r5 < fildes) {
    0x0003d2e8 blt 0x3d308                       |         goto label_0;
                                                 |     }
    0x0003d2ec add r1, sp, 0x10                  |     r1 += var_10h;
    0x0003d2f0 bl 0x1b918                        |     r0 = fstat64 ();
    0x0003d2f4 cmp r0, 0                         |     
    0x0003d2f8 bge 0x3d318                       |     
                                                 |     while (r3 > 3) {
    0x0003d2fc mov r0, r5                        |         r0 = r5;
    0x0003d300 bl 0x1b66c                        |         close (r0);
    0x0003d304 mvn r4, 4                         |         r4 = ~4;
                                                 | label_0:
    0x0003d308 mov r0, r4                        |         r0 = r4;
    0x0003d30c add sp, sp, 0x10c0                |         
    0x0003d310 add sp, sp, 0x24                  |         
    0x0003d314 pop {r4, r5, r6, r7, pc}          |         
    0x0003d318 mov r2, 0                         |         r2 = 0;
    0x0003d31c mov r3, 0                         |         r3 = 0;
    0x0003d320 strd r2, r3, [sp, 8]              |         __asm ("strd r2, r3, [var_8h]");
    0x0003d324 ldr r1, [sp, 0x40]                |         r1 = length;
    0x0003d328 mov r3, 1                         |         r3 = 1;
    0x0003d32c mov r2, r3                        |         r2 = r3;
    0x0003d330 str r5, [sp]                      |         *(sp) = r5;
    0x0003d334 mov r0, 0                         |         r0 = 0;
    0x0003d338 bl 0x1c08c                        |         r0 = mmap64 ();
    0x0003d33c sub r3, r0, 1                     |         r3 = r0 - 1;
    0x0003d340 cmn r3, 3                         |         
    0x0003d344 mov r6, r0                        |         r6 = r0;
    0x0003d348 bhi 0x3d2fc                       |         
                                                 |     }
    0x0003d34c ldr r3, [r4, 0x58]                |     r3 = *((r4 + 0x58));
    0x0003d350 tst r3, 1                         |     
                                                 |     if ((r3 & 1) != 0) {
    0x0003d354 beq 0x3d36c                       |         
    0x0003d358 ldr r3, [pc, 0xac]                |         r3 = *(0x3d408);
    0x0003d35c ldr r2, [pc, 0xac]                |         r2 = "/etc/localtime";
    0x0003d360 ldr r1, [pc, 0x94]                |         r1 = "__connman_timezone_change";
    0x0003d364 ldr r0, [pc, 0xa8]                |         r0 = "write_file";
    0x0003d368 bl 0x2acc4                        |         connman_debug ();
                                                 |     }
    0x0003d36c add r1, sp, 0x78                  |     r1 += var_78h;
    0x0003d370 ldr r0, [pc, 0x94]                |     r0 = *(0x3d408);
    0x0003d374 bl 0x1be40                        |     r0 = lstat64 ();
    0x0003d378 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0003d37c bne 0x3d398                       |         
    0x0003d380 ldr r3, [sp, 0x88]                |         r3 = var_88h;
    0x0003d384 and r3, r3, 0xf000                |         r3 &= 0xf000;
    0x0003d388 cmp r3, 0xa000                    |         
                                                 |         if (r3 != 0xa000) {
    0x0003d38c bne 0x3d398                       |             goto label_2;
                                                 |         }
    0x0003d390 ldr r0, [pc, 0x74]                |         r0 = *(0x3d408);
    0x0003d394 bl 0x1b834                        |         unlink (r0);
                                                 |     }
                                                 | label_2:
    0x0003d398 mov r2, 0x1a4                     |     r2 = 0x1a4;
    0x0003d39c ldr r1, [pc, 0x74]                |     r1 = "_s:_s___pathname__s";
    0x0003d3a0 ldr r0, [pc, 0x64]                |     r0 = *(0x3d408);
    0x0003d3a4 bl 0x1ba2c                        |     r0 = open64 ();
    0x0003d3a8 subs r7, r0, 0                    |     r7 = r0 - 0;
    0x0003d3ac bge 0x3d3cc                       |     
                                                 |     while (r4 < 0) {
    0x0003d3b0 mvn r4, 4                         |         r4 = ~4;
                                                 | label_1:
    0x0003d3b4 ldr r1, [sp, 0x40]                |         r1 = length;
    0x0003d3b8 mov r0, r6                        |         r0 = r6;
    0x0003d3bc bl 0x1b4b0                        |         munmap (r0, r1);
    0x0003d3c0 mov r0, r5                        |         r0 = r5;
    0x0003d3c4 bl 0x1b66c                        |         close (r0);
    0x0003d3c8 b 0x3d308                         |         goto label_0;
    0x0003d3cc ldr r2, [sp, 0x40]                |         r2 = length;
    0x0003d3d0 mov r1, r6                        |         r1 = r6;
    0x0003d3d4 bl 0x1c170                        |         r0 = write (r0, r1, r2);
    0x0003d3d8 mov r4, r0                        |         r4 = r0;
    0x0003d3dc mov r0, r7                        |         r0 = r7;
    0x0003d3e0 bl 0x1b66c                        |         close (r0);
    0x0003d3e4 cmp r4, 0                         |         
    0x0003d3e8 blt 0x3d3b0                       |         
                                                 |     }
    0x0003d3ec mov r4, 0                         |     r4 = 0;
    0x0003d3f0 b 0x3d3b4                         |     goto label_1;
                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/connmand @ 0x6cfac */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0006cfac ()                  | void fcn_0006cfac (int32_t arg1, char * dest) {
                                             |     r0 = arg1;
                                             |     r1 = dest;
    0x0006cfac push {r4, r5, r6, lr}         |     
    0x0006cfb0 mov r5, r1                    |     r5 = r1;
    0x0006cfb4 ldr r1, [pc, 0xd0]            |     r1 = *(0x6d088);
    0x0006cfb8 mov r6, r0                    |     r6 = r0;
    0x0006cfbc add r1, pc, r1                |     r1 = pc + r1;
    0x0006cfc0 mov r0, r5                    |     r0 = r5;
    0x0006cfc4 bl 0x1bd5c                    |     strcpy (r0, r1);
    0x0006cfc8 ldr r3, [r6, 8]               |     r3 = *((r6 + 8));
    0x0006cfcc cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x0006cfd0 bne 0x6cfe4                   |         
    0x0006cfd4 ldr r3, [r6, 0xc]             |         r3 = *((r6 + 0xc));
    0x0006cfd8 cmp r3, 0                     |         
                                             |         if (r3 != 0) {
    0x0006cfdc moveq r4, 0xd                 |             r4 = 0xd;
                                             |         }
                                             |         if (r3 == 0) {
    0x0006cfe0 beq 0x6cffc                   |             goto label_0;
                                             |         }
                                             |     }
    0x0006cfe4 ldr r2, [pc, 0xa4]            |     r2 = *(0x6d08c);
    0x0006cfe8 ldr r1, [pc, 0xa4]            |     r1 = *(0x6d090);
    0x0006cfec add r2, pc, r2                |     r2 = pc + r2;
    0x0006cff0 add r0, r5, 0xd               |     r0 = r5 + 0xd;
    0x0006cff4 bl 0x1c074                    |     r0 = snprintf (r0, r1, r2, r3)
    0x0006cff8 add r4, r0, 0xd               |     r4 = r0 + 0xd;
                                             | label_0:
    0x0006cffc ldr r3, [r6, 0x10]            |     r3 = *((r6 + 0x10));
    0x0006d000 cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x0006d004 beq 0x6d020                   |         
    0x0006d008 ldr r2, [pc, 0x88]            |         r2 = *(0x6d094);
    0x0006d00c rsb r1, r4, 0x400             |         r1 = 0x400 - r4;
    0x0006d010 add r0, r5, r4                |         r0 = r5 + r4;
    0x0006d014 add r2, pc, r2                |         r2 = pc + r2;
    0x0006d018 bl 0x1c074                    |         r0 = snprintf (r0, r1, r2, r3)
    0x0006d01c add r4, r4, r0                |         r4 += r0;
                                             |     }
    0x0006d020 ldr r3, [r6, 0x14]            |     r3 = *((r6 + 0x14));
    0x0006d024 cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x0006d028 beq 0x6d044                   |         
    0x0006d02c ldr r2, [pc, 0x68]            |         r2 = *(0x6d098);
    0x0006d030 rsb r1, r4, 0x400             |         r1 = 0x400 - r4;
    0x0006d034 add r0, r5, r4                |         r0 = r5 + r4;
    0x0006d038 add r2, pc, r2                |         r2 = pc + r2;
    0x0006d03c bl 0x1c074                    |         r0 = snprintf (r0, r1, r2, r3)
    0x0006d040 add r4, r4, r0                |         r4 += r0;
                                             |     }
    0x0006d044 ldr r3, [r6, 0x18]            |     r3 = *((r6 + 0x18));
    0x0006d048 cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x0006d04c beq 0x6d068                   |         
    0x0006d050 ldr r2, [pc, 0x48]            |         r2 = "_";
    0x0006d054 rsb r1, r4, 0x400             |         r1 = 0x400 - r4;
    0x0006d058 add r0, r5, r4                |         r0 = r5 + r4;
    0x0006d05c add r2, pc, r2                |         r2 = pc + r2;
    0x0006d060 bl 0x1c074                    |         r0 = snprintf (r0, r1, "_", r3)
    0x0006d064 add r4, r4, r0                |         r4 += r0;
                                             |     }
    0x0006d068 ldr r3, [r6, 0x1c]            |     r3 = *((r6 + 0x1c));
    0x0006d06c cmp r3, 0                     |     
    0x0006d070 popeq {r4, r5, r6, pc}        |     
    0x0006d074 ldr r2, [pc, 0x28]            |     r2 = *(0x6d0a0);
    0x0006d078 rsb r1, r4, 0x400             |     r1 = 0x400 - r4;
    0x0006d07c add r0, r5, r4                |     r0 = r5 + r4;
    0x0006d080 add r2, pc, r2                |     r2 = pc + r2;
    0x0006d084 pop {r4, r5, r6, lr}          |     
    0x0006d088 b 0x1c074                     |     return void (*0x1c074)() ();
                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/sbin/connmand @ 0x2d710 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.connman_device_create_from_index ()          | void connman_device_create_from_index (int32_t arg1) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     void * s;
                                                             |     int32_t var_28h;
                                                             |     int32_t var_2ah;
                                                             |     int32_t var_2bh;
                                                             |     int32_t var_2ch;
                                                             |     int32_t var_2dh;
                                                             |     int32_t var_2eh;
                                                             |     int32_t var_2fh;
                                                             |     int32_t var_3ch;
                                                             |     r0 = arg1;
    0x0002d710 push {r4, r5, r6, r7, r8, sb, lr}             |     
    0x0002d714 subs r8, r0, 0                                |     r8 = r0 - 0;
    0x0002d718 sub sp, sp, 0x3c                              |     
    0x0002d71c bge 0x2d730                                   |     
                                                             |     while (r7 == r0) {
                                                             | label_0:
    0x0002d720 mov r5, 0                                     |         r5 = 0;
                                                             | label_3:
    0x0002d724 mov r0, r5                                    |         r0 = r5;
    0x0002d728 add sp, sp, 0x3c                              |         
    0x0002d72c pop {r4, r5, r6, r7, r8, sb, pc}              |         
    0x0002d730 bl 0x467b8                                    |         r0 = connman_inet_ifname ();
    0x0002d734 subs r7, r0, 0                                |         r7 = r0 - 0;
    0x0002d738 beq 0x2d720                                   |         
                                                             |     }
    0x0002d73c bl 0x2d560                                    |     r0 = fcn_0002d560 (r0);
    0x0002d740 subs r6, r0, 0                                |     r6 = r0 - 0;
                                                             |     if (r6 != r0) {
    0x0002d744 beq 0x2d760                                   |         
    0x0002d748 ldr r0, [pc, 0x1e0]                           |         r0 = *(0x2d92c);
    0x0002d74c mov r1, r7                                    |         r1 = r7;
                                                             | label_1:
    0x0002d750 bl 0x2ac18                                    |         connman_info ();
    0x0002d754 mov r0, r7                                    |         r0 = r7;
    0x0002d758 bl 0x1b60c                                    |         g_free ();
    0x0002d75c b 0x2d720                                     |         goto label_0;
                                                             |     }
    0x0002d760 mov r0, r8                                    |     r0 = r8;
    0x0002d764 bl 0x510bc                                    |     r0 = fcn_000510bc (r0);
    0x0002d768 cmp r0, 5                                     |     
    0x0002d76c mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 > 5) {
    0x0002d770 bhi 0x2d7b4                                   |         goto label_4;
                                                             |     }
    0x0002d774 cmp r0, 3                                     |     
                                                             |     if (r0 >= 3) {
    0x0002d778 bhs 0x2d8b0                                   |         goto label_5;
                                                             |     }
    0x0002d77c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0002d780 beq 0x2d7d0                                   |         goto label_6;
                                                             |     }
                                                             |     do {
    0x0002d784 ldr r1, [pc, 0x1a8]                           |         r1 = "Ignoring_interface__s__filtered_";
    0x0002d788 mov r0, r8                                    |         r0 = r8;
    0x0002d78c bl 0x2c050                                    |         fcn_0002c050 (r0, "Ignoring_interface__s__filtered_");
    0x0002d790 mov r2, 0                                     |         r2 = 0;
    0x0002d794 ldr r1, [pc, 0x19c]                           |         r1 = *(0x2d934);
    0x0002d798 mov r6, r0                                    |         r6 = r0;
    0x0002d79c mov r0, 2                                     |         r0 = 2;
    0x0002d7a0 bl 0x1c1e8                                    |         r0 = socket (r0, r1, r2);
    0x0002d7a4 subs r5, r0, 0                                |         r5 = r0 - 0;
                                                             |         if (r5 >= r0) {
    0x0002d7a8 bge 0x2d7dc                                   |             goto label_7;
                                                             |         }
                                                             | label_2:
    0x0002d7ac mov sb, 0                                     |         sb = 0;
    0x0002d7b0 b 0x2d874                                     |         goto label_8;
                                                             | label_4:
    0x0002d7b4 cmp r0, 6                                     |         
    0x0002d7b8 beq 0x2d784                                   |         
                                                             |     } while (r0 == 6);
    0x0002d7bc ldr r3, [pc, 0x178]                           |     r3 = "___add__s";
    0x0002d7c0 cmp r0, r3                                    |     
                                                             |     if (r0 == r3) {
    0x0002d7c4 beq 0x2d8b0                                   |         goto label_5;
                                                             |     }
    0x0002d7c8 mov sb, r6                                    |     sb = r6;
    0x0002d7cc b 0x2d874                                     |     goto label_8;
                                                             | label_6:
    0x0002d7d0 mov r1, r7                                    |     r1 = r7;
    0x0002d7d4 ldr r0, [pc, 0x164]                           |     r0 = *(0x2d93c);
    0x0002d7d8 b 0x2d750                                     |     goto label_1;
                                                             | label_7:
    0x0002d7dc mov r2, 0x20                                  |     r2 = 0x20;
    0x0002d7e0 mov r1, 0                                     |     r1 = 0;
    0x0002d7e4 add r0, sp, 0x18                              |     r0 += s;
    0x0002d7e8 bl 0x1bb4c                                    |     memset (r0, r1, r2);
    0x0002d7ec add r2, sp, 0x18                              |     r2 += s;
    0x0002d7f0 ldr r1, [pc, 0x14c]                           |     r1 = "Ignoring interface %s (type unknown)";
    0x0002d7f4 mov r0, r5                                    |     r0 = r5;
    0x0002d7f8 str r8, [sp, 0x28]                            |     var_28h = r8;
    0x0002d7fc bl 0x1c35c                                    |     r0 = ioctl (r0, r1);
    0x0002d800 subs sb, r0, 0                                |     sb = r0 - 0;
                                                             |     if (sb == r0) {
    0x0002d804 bne 0x2d81c                                   |         
    0x0002d808 add r2, sp, 0x18                              |         r2 += s;
    0x0002d80c ldr r1, [pc, 0x134]                           |         r1 = *(0x2d944);
    0x0002d810 mov r0, r5                                    |         r0 = r5;
    0x0002d814 bl 0x1c35c                                    |         r0 = ioctl (r0, r1);
    0x0002d818 mov sb, r0                                    |         sb = r0;
                                                             |     }
    0x0002d81c mov r0, r5                                    |     r0 = r5;
    0x0002d820 bl 0x1b66c                                    |     close (r0);
    0x0002d824 cmp sb, 0                                     |     
                                                             |     if (sb < 0) {
    0x0002d828 blt 0x2d7ac                                   |         goto label_2;
                                                             |     }
    0x0002d82c mov r0, 0x12                                  |     r0 = 0x12;
    0x0002d830 bl 0x1b57c                                    |     r0 = g_malloc ();
    0x0002d834 subs sb, r0, 0                                |     sb = r0 - 0;
                                                             |     if (sb != r0) {
    0x0002d838 beq 0x2d874                                   |         
    0x0002d83c ldrb r2, [sp, 0x2f]                           |         r2 = var_2fh;
    0x0002d840 ldrb r3, [sp, 0x2a]                           |         r3 = var_2ah;
    0x0002d844 str r2, [sp, 0x10]                            |         var_10h = r2;
    0x0002d848 ldrb r2, [sp, 0x2e]                           |         r2 = var_2eh;
    0x0002d84c mov r1, 0x12                                  |         r1 = 0x12;
    0x0002d850 str r2, [sp, 0xc]                             |         var_ch = r2;
    0x0002d854 ldrb r2, [sp, 0x2d]                           |         r2 = var_2dh;
    0x0002d858 str r2, [sp, 8]                               |         var_8h = r2;
    0x0002d85c ldrb r2, [sp, 0x2c]                           |         r2 = var_2ch;
    0x0002d860 str r2, [sp, 4]                               |         var_4h = r2;
    0x0002d864 ldrb r2, [sp, 0x2b]                           |         r2 = var_2bh;
    0x0002d868 str r2, [sp]                                  |         *(sp) = r2;
    0x0002d86c ldr r2, [pc, 0xd8]                            |         r2 = *(0x2d948);
    0x0002d870 bl 0x1c074                                    |         snprintf (r0, r1, r2, r3)
                                                             |     }
                                                             | label_8:
    0x0002d874 mov r1, r4                                    |     r1 = r4;
    0x0002d878 mov r0, r6                                    |     r0 = r6;
    0x0002d87c bl 0x2c308                                    |     r0 = connman_device_create ();
    0x0002d880 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 == r0) {
    0x0002d884 beq 0x2d90c                                   |         goto label_9;
                                                             |     }
    0x0002d888 sub r4, r4, 1                                 |     r4--;
    0x0002d88c cmp r4, 5                                     |     
                                                             |     if (r4 > 5) {
                                                             |         /* switch table (6 cases) at 0x2d898 */
    0x0002d890 ldrls pc, [pc, r4, lsl 2]                     |         offset_0 = r4 << 2;
                                                             |         pc = *((pc + offset_0));
                                                             |     }
    0x0002d894 b 0x2d928                                     |     goto label_10;
                                                             | label_5:
    0x0002d8b0 mov r0, r7                                    |     r0 = r7;
    0x0002d8b4 bl 0x1c470                                    |     r0 = g_strdup ();
    0x0002d8b8 mov r6, r0                                    |     r6 = r0;
    0x0002d8bc b 0x2d7ac                                     |     goto label_2;
    0x0002d8c0 mov r1, 0                                     |     r1 = 0;
    0x0002d8c4 mov r0, r8                                    |     r0 = r8;
    0x0002d8c8 bl 0x2c050                                    |     r0 = fcn_0002c050 (r0, r1);
    0x0002d8cc mov r4, r0                                    |     r4 = r0;
                                                             |     do {
    0x0002d8d0 str r8, [r5, 0x30]                            |         *((r5 + 0x30)) = r8;
    0x0002d8d4 mov r1, r7                                    |         r1 = r7;
    0x0002d8d8 mov r0, r5                                    |         r0 = r5;
    0x0002d8dc bl 0x2c5dc                                    |         connman_device_set_interface ();
    0x0002d8e0 cmp r4, 0                                     |         
                                                             |         if (r4 != 0) {
    0x0002d8e4 beq 0x2d8fc                                   |             
    0x0002d8e8 mov r0, r5                                    |             r0 = r5;
    0x0002d8ec mov r1, r4                                    |             r1 = r4;
    0x0002d8f0 bl 0x2c64c                                    |             connman_device_set_ident ();
    0x0002d8f4 mov r0, r4                                    |             r0 = r4;
    0x0002d8f8 bl 0x1b60c                                    |             g_free ();
                                                             |         }
    0x0002d8fc mov r2, sb                                    |         r2 = sb;
    0x0002d900 ldr r1, [pc, 0x48]                            |         r1 = "_02X:_02X:_02X:_02X:_02X:_02X";
    0x0002d904 mov r0, r5                                    |         r0 = r5;
    0x0002d908 bl 0x2ccf8                                    |         connman_device_set_string ();
                                                             | label_9:
    0x0002d90c mov r0, r7                                    |         r0 = r7;
    0x0002d910 bl 0x1b60c                                    |         g_free ();
    0x0002d914 mov r0, r6                                    |         r0 = r6;
    0x0002d918 bl 0x1b60c                                    |         g_free ();
    0x0002d91c mov r0, sb                                    |         r0 = sb;
    0x0002d920 bl 0x1b60c                                    |         g_free ();
    0x0002d924 b 0x2d724                                     |         goto label_3;
                                                             | label_10:
    0x0002d928 mov r4, 0                                     |         r4 = 0;
    0x0002d92c b 0x2d8d0                                     |         
                                                             |     } while (1);
                                                             | }

[*] Function printf used 16 times connmand