[*] Binary protection state of libdbus-1.so.3.19.8

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


[*] Function strcat tear down of libdbus-1.so.3.19.8

    ; 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/lib/libdbus-1.so.3.19.8 @ 0xc97c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000c97c ()                                  | void fcn_0000c97c (int32_t arg1, int32_t arg2) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_10h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x0000c97c push {r0, r1, r2, r3, r4, r5, r6, lr}         |     
    0x0000c980 mov r4, sp                                    |     r4 = sp;
    0x0000c984 mov r5, r0                                    |     r5 = r0;
    0x0000c988 mov r0, r4                                    |     r0 = r4;
    0x0000c98c mov r6, r1                                    |     r6 = r1;
    0x0000c990 bl 0xa348                                     |     r0 = fcn_0000a348 ();
    0x0000c994 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000c998 beq 0xc9c0                                    |         goto label_1;
                                                             |     }
    0x0000c99c ldr r1, [pc, 0xd4]                            |     r1 = *(0xca74);
    0x0000c9a0 mov r0, r4                                    |     r0 = r4;
    0x0000c9a4 add r1, pc, r1                                |     r1 = pc + r1;
    0x0000c9a8 bl 0xa780                                     |     r0 = fcn_0000a780 ();
    0x0000c9ac cmp r0, 0                                     |     
    0x0000c9b0 bne 0xc9c8                                    |     
                                                             |     while (r0 == 0) {
                                                             | label_0:
    0x0000c9b4 mov r0, r4                                    |         r0 = r4;
    0x0000c9b8 bl 0xa564                                     |         fcn_0000a564 ();
    0x0000c9bc mov r0, 0                                     |         r0 = 0;
                                                             | label_1:
    0x0000c9c0 add sp, sp, 0x10                              |         
    0x0000c9c4 pop {r4, r5, r6, pc}                          |         
    0x0000c9c8 ldr r1, [r6]                                  |         r1 = *(r6);
    0x0000c9cc mov r0, r4                                    |         r0 = r4;
    0x0000c9d0 bl 0xa780                                     |         r0 = fcn_0000a780 ();
    0x0000c9d4 cmp r0, 0                                     |         
    0x0000c9d8 beq 0xc9b4                                    |         
                                                             |     }
    0x0000c9dc ldr r3, [r6, 0x14]                            |     r3 = *((r6 + 0x14));
    0x0000c9e0 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0000c9e4 beq 0xca18                                    |         goto label_2;
                                                             |     }
    0x0000c9e8 ldr r1, [pc, 0x8c]                            |     r1 = *(0xca78);
    0x0000c9ec mov r0, r4                                    |     r0 = r4;
    0x0000c9f0 add r1, pc, r1                                |     r1 = pc + r1;
    0x0000c9f4 bl 0xa780                                     |     r0 = fcn_0000a780 ();
    0x0000c9f8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000c9fc beq 0xc9b4                                    |         goto label_0;
                                                             |     }
    0x0000ca00 ldr r3, [r6, 0x14]                            |     r3 = *((r6 + 0x14));
    0x0000ca04 mov r1, r4                                    |     r1 = r4;
    0x0000ca08 mov r0, r5                                    |     r0 = r5;
    0x0000ca0c blx r3                                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000ca10 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000ca14 beq 0xc9b4                                    |         goto label_0;
                                                             |     }
                                                             | label_2:
    0x0000ca18 ldr r1, [pc, 0x60]                            |     r1 = *(0xca7c);
    0x0000ca1c mov r0, r4                                    |     r0 = r4;
    0x0000ca20 add r1, pc, r1                                |     r1 = pc + r1;
    0x0000ca24 bl 0xa780                                     |     r0 = fcn_0000a780 ();
    0x0000ca28 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000ca2c beq 0xc9b4                                    |         goto label_0;
                                                             |     }
    0x0000ca30 ldr r3, [r5, 0x1c]                            |     r3 = *((r5 + 0x1c));
    0x0000ca34 add r2, r5, 0x18                              |     r2 = r5 + 0x18;
    0x0000ca38 mov r1, 0                                     |     r1 = 0;
    0x0000ca3c mov r0, r4                                    |     r0 = r4;
    0x0000ca40 bl 0xb5b4                                     |     r0 = fcn_0000b5b4 ();
    0x0000ca44 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000ca48 beq 0xc9b4                                    |         goto label_0;
                                                             |     }
    0x0000ca4c mov r0, r4                                    |     r0 = r4;
    0x0000ca50 bl 0xa564                                     |     fcn_0000a564 ();
    0x0000ca54 mov r0, r5                                    |     r0 = r5;
    0x0000ca58 bl 0xc7d4                                     |     fcn_0000c7d4 (r0);
    0x0000ca5c ldr r3, [pc, 0x20]                            |     
    0x0000ca60 str r6, [r5, 0x2c]                            |     *((r5 + 0x2c)) = r6;
    0x0000ca64 add r3, pc, r3                                |     r3 = pc + r3;
    0x0000ca68 add r3, r3, 0xc0                              |     r3 = 0xcb40;
    0x0000ca6c str r3, [r5, 0x28]                            |     *((r5 + 0x28)) = r3;
    0x0000ca70 mov r0, 1                                     |     r0 = 1;
    0x0000ca74 b 0xc9c0                                      |     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/lib/libdbus-1.so.3.19.8 @ 0x21528 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00021528 ()                                  | void fcn_00021528 (int32_t arg_4h, int32_t arg_38h, int32_t arg1, int32_t arg2) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_14h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00021528 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x0002152c sub sp, sp, 0x14                              |     
    0x00021530 ldr r6, [sp, 0x38]                            |     r6 = *(arg_38h);
    0x00021534 mov sb, r2                                    |     sb = r2;
    0x00021538 mov r8, r3                                    |     r8 = r3;
    0x0002153c mov sl, r1                                    |     sl = r1;
    0x00021540 mov r4, r0                                    |     r4 = r0;
                                                             | label_2:
    0x00021544 ldr fp, [sl], 4                               |     fp = *(sl);
                                                             |     sl += 4;
    0x00021548 cmp fp, 0                                     |     
                                                             |     if (fp != 0) {
    0x0002154c bne 0x21568                                   |         goto label_4;
                                                             |     }
    0x00021550 cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x00021554 movne r3, 1                                   |         r3 = 1;
                                                             |     }
    0x00021558 strne r3, [r6]                                |     *(r6) = r3;
                                                             |     while (r0 != 0) {
                                                             | label_0:
    0x0002155c mov r0, r4                                    |         r0 = r4;
    0x00021560 add sp, sp, 0x14                              |         
    0x00021564 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_4:
    0x00021568 ldr r3, [r4, 0x18]                            |         r3 = *((r4 + 0x18));
    0x0002156c mov r7, 0                                     |         r7 = 0;
                                                             | label_1:
    0x00021570 cmp r3, r7                                    |         
                                                             |         if (r3 <= r7) {
    0x00021574 bgt 0x215dc                                   |             
    0x00021578 cmp sb, 0                                     |             
                                                             |             if (sb == 0) {
    0x0002157c beq 0x216d8                                   |                 goto label_5;
                                                             |             }
    0x00021580 mov r0, fp                                    |             r0 = fp;
    0x00021584 bl 0x214b4                                    |             r0 = fcn_000214b4 (r0);
    0x00021588 subs fp, r0, 0                                |             
                                                             |             if (fp == r0) {
    0x0002158c beq 0x21664                                   |                 goto label_3;
                                                             |             }
    0x00021590 ldr r3, [r4, 0x18]                            |             r3 = *((r4 + 0x18));
    0x00021594 ldr r5, [r4, 0x1c]                            |             r5 = *((r4 + 0x1c));
    0x00021598 add r3, r3, 1                                 |             r3++;
    0x0002159c cmp r5, r3                                    |             
                                                             |             if (r5 >= r3) {
    0x000215a0 bge 0x21680                                   |                 goto label_6;
                                                             |             }
    0x000215a4 cmp r5, 0                                     |             
                                                             |             if (r5 == 0) {
    0x000215a8 lslne r5, r5, 1                               |                 r5 <<= 1;
                                                             |             }
                                                             |             if (r5 != 0) {
    0x000215ac moveq r5, 1                                   |                 r5 = 1;
                                                             |             }
    0x000215b0 lsl r1, r5, 2                                 |             r1 = r5 << 2;
    0x000215b4 ldr r0, [r4, 0x14]                            |             r0 = *((r4 + 0x14));
    0x000215b8 str r3, [sp, 8]                               |             var_8h = r3;
    0x000215bc bl 0xa3e4                                     |             fcn_0000a3e4 ();
    0x000215c0 ldr r3, [sp, 8]                               |             r3 = var_8h;
    0x000215c4 subs r2, r0, 0                                |             r2 = r0 - 0;
                                                             |             if (r2 != r0) {
    0x000215c8 bne 0x21678                                   |                 goto label_7;
                                                             |             }
    0x000215cc mov r0, fp                                    |             r0 = fp;
    0x000215d0 str r2, [sp, 8]                               |             var_8h = r2;
    0x000215d4 bl 0x212b8                                    |             fcn_000212b8 (r0);
    0x000215d8 b 0x21664                                     |             goto label_3;
                                                             |         }
    0x000215dc add r5, r3, r7                                |         r5 = r3 + r7;
    0x000215e0 ldr r1, [r4, 0x14]                            |         r1 = *((r4 + 0x14));
    0x000215e4 add r5, r5, r5, lsr 31                        |         r5 += (r5 >> 31);
    0x000215e8 asr r5, r5, 1                                 |         r5 >>= 1;
    0x000215ec ldr r1, [r1, r5, lsl 2]                       |         offset_0 = r5 << 2;
                                                             |         r1 = *((r1 + offset_0));
    0x000215f0 lsl r2, r5, 2                                 |         r2 = r5 << 2;
    0x000215f4 add r1, r1, 0x21                              |         r1 += 0x21;
    0x000215f8 mov r0, fp                                    |         r0 = fp;
    0x000215fc str r3, [sp, 0xc]                             |         var_ch = r3;
    0x00021600 str r2, [sp, 8]                               |         var_8h = r2;
    0x00021604 bl 0xb1b8                                     |         strcmp (r0, r1);
    0x00021608 ldr r2, [sp, 8]                               |         r2 = var_8h;
    0x0002160c ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00021610 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00021614 bne 0x2166c                                   |             goto label_8;
                                                             |         }
    0x00021618 cmp r8, 0                                     |         
                                                             |         if (r8 == 0) {
    0x0002161c strne r5, [r8]                                |             *(r8) = r5;
                                                             |         }
    0x00021620 ldr r3, [r4, 0x14]                            |         r3 = *((r4 + 0x14));
    0x00021624 cmp r6, 0                                     |         
    0x00021628 ldr fp, [r3, r2]                              |         fp = *((r3 + r2));
                                                             |         if (r6 == 0) {
    0x0002162c beq 0x216d0                                   |             goto label_9;
                                                             |         }
    0x00021630 str r6, [sp]                                  |         *(sp) = r6;
    0x00021634 mov r3, r8                                    |         r3 = r8;
    0x00021638 mov r2, sb                                    |         r2 = sb;
    0x0002163c mov r1, sl                                    |         r1 = sl;
    0x00021640 mov r0, fp                                    |         r0 = fp;
    0x00021644 bl 0x21528                                    |         r0 = fcn_00021528 (r0, r1, r2, r3);
    0x00021648 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0002164c movne r4, r0                                  |             r4 = r0;
                                                             |         }
    0x00021650 bne 0x2155c                                   |         
                                                             |     }
    0x00021654 ldrb r3, [r4, 0x20]                           |     r3 = *((r4 + 0x20));
    0x00021658 tst r3, 1                                     |     
                                                             |     if ((r3 & 1) != 0) {
    0x0002165c strne r0, [r6]                                |         *(r6) = r0;
                                                             |         goto label_10;
                                                             |     }
                                                             |     if ((r3 & 1) != 0) {
                                                             | label_10:
    0x00021660 bne 0x2155c                                   |         goto label_0;
                                                             |     }
                                                             |     do {
                                                             | label_3:
    0x00021664 mov r4, 0                                     |         r4 = 0;
    0x00021668 b 0x2155c                                     |         goto label_0;
                                                             |         if ((r3 & 1) < 0) {
                                                             | label_8:
    0x0002166c addge r7, r5, 1                               |             r7 = r5 + 1;
                                                             |         }
                                                             |         if ((r3 & 1) >= 0) {
    0x00021670 movlt r3, r5                                  |             r3 = r5;
                                                             |         }
    0x00021674 b 0x21570                                     |         goto label_1;
                                                             | label_7:
    0x00021678 str r2, [r4, 0x14]                            |         *((r4 + 0x14)) = r2;
    0x0002167c str r5, [r4, 0x1c]                            |         *((r4 + 0x1c)) = r5;
                                                             | label_6:
    0x00021680 add r2, r7, 1                                 |         r2 = r7 + 1;
    0x00021684 cmp r2, r3                                    |         
    0x00021688 lsl r5, r7, 2                                 |         r5 = r7 << 2;
                                                             |         if (r2 < r3) {
    0x0002168c bge 0x216b8                                   |             
    0x00021690 ldr ip, [r4, 0x14]                            |             ip = *((r4 + 0x14));
    0x00021694 sub r2, r3, r7                                |             r2 = r3 - r7;
    0x00021698 sub r2, r2, 1                                 |             r2--;
    0x0002169c add r0, r5, 4                                 |             r0 = r5 + 4;
    0x000216a0 lsl r2, r2, 2                                 |             r2 <<= 2;
    0x000216a4 add r1, ip, r5                                |             r1 = ip + r5;
    0x000216a8 add r0, ip, r0                                |             r0 = ip + r0;
    0x000216ac str r3, [sp, 8]                               |             var_8h = r3;
    0x000216b0 bl 0xa498                                     |             memmove (r0, r1, r2);
    0x000216b4 ldr r3, [sp, 8]                               |             r3 = var_8h;
                                                             |         }
    0x000216b8 ldr r2, [r4, 0x14]                            |         r2 = *((r4 + 0x14));
    0x000216bc cmp r8, 0                                     |         
    0x000216c0 str fp, [r2, r5]                              |         *((r2 + r5)) = fp;
                                                             |         if (r8 == 0) {
    0x000216c4 strne r7, [r8]                                |             *(r8) = r7;
                                                             |         }
    0x000216c8 str r3, [r4, 0x18]                            |         *((r4 + 0x18)) = r3;
    0x000216cc str r4, [fp, 4]                               |         *(arg_4h) = r4;
                                                             | label_9:
    0x000216d0 mov r4, fp                                    |         r4 = fp;
    0x000216d4 b 0x21544                                     |         goto label_2;
                                                             | label_5:
    0x000216d8 cmp r6, 0                                     |         
    0x000216dc beq 0x21664                                   |         
                                                             |     } while (r6 == 0);
    0x000216e0 str sb, [r6]                                  |     *(r6) = sb;
    0x000216e4 ldrb r3, [r4, 0x20]                           |     r3 = *((r4 + 0x20));
    0x000216e8 tst r3, 1                                     |     
                                                             |     if ((r3 & 1) != 0) {
    0x000216ec bne 0x2155c                                   |         goto label_0;
                                                             |     }
    0x000216f0 b 0x21664                                     |     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/lib/libdbus-1.so.3.19.8 @ 0x2c6b0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0002c6b0 ()                          | void fcn_0002c6b0 (uint32_t arg1, uint32_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0002c6b0 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x0002c6b4 moveq ip, r0                          |         
                                                     |     }
    0x0002c6b8 push {r4, r5, r6, r7, r8, lr}         |     
                                                     |     if (r0 != 0) {
    0x0002c6bc moveq r4, ip                          |         r4 = ip;
                                                     |     }
                                                     |     if (r0 != 0) {
    0x0002c6c0 moveq r8, ip                          |         r8 = ip;
                                                     |     }
                                                     |     if (r0 == 0) {
    0x0002c6c4 beq 0x2c6f4                           |         goto label_1;
                                                     |     }
    0x0002c6c8 ldr lr, [r0]                          |     
    0x0002c6cc ldr r5, [r0, 0x14]                    |     r5 = *((r0 + 0x14));
    0x0002c6d0 ldr ip, [r0, 0xc]                     |     ip = *((r0 + 0xc));
    0x0002c6d4 mul r8, lr, r5                        |     r8 = lr * r5;
    0x0002c6d8 mov r4, 0                             |     r4 = 0;
                                                     |     do {
    0x0002c6dc cmp ip, 0                             |         
                                                     |         if (ip == 0) {
    0x0002c6e0 bne 0x2c710                           |             
    0x0002c6e4 ldr r6, [r0, 0x10]                    |             r6 = *((r0 + 0x10));
    0x0002c6e8 mov lr, r6                            |             lr = r6;
                                                     | label_0:
    0x0002c6ec cmp lr, 0                             |             
                                                     |             if (lr != 0) {
    0x0002c6f0 bne 0x2c71c                           |                 goto label_2;
                                                     |             }
                                                     | label_1:
    0x0002c6f4 cmp r1, 0                             |             
                                                     |             if (r1 == 0) {
    0x0002c6f8 strne r8, [r1]                        |                 *(r1) = r8;
                                                     |             }
    0x0002c6fc cmp r2, 0                             |             
                                                     |             if (r2 == 0) {
    0x0002c700 strne r4, [r2]                        |                 *(r2) = r4;
                                                     |             }
    0x0002c704 cmp r3, 0                             |             
                                                     |             if (r3 == 0) {
    0x0002c708 strne ip, [r3]                        |                 *(r3) = ip;
                                                     |             }
    0x0002c70c pop {r4, r5, r6, r7, r8, pc}          |             
                                                     |         }
    0x0002c710 add r4, r4, lr                        |         r4 += lr;
    0x0002c714 ldr ip, [ip]                          |         ip = *(ip);
    0x0002c718 b 0x2c6dc                             |         
                                                     |     } while (1);
                                                     | label_2:
    0x0002c71c cmp lr, r6                            |     
                                                     |     if (lr == r6) {
    0x0002c720 ldrne r7, [lr, 4]                     |         r7 = *((lr + 4));
                                                     |     }
                                                     |     if (lr != r6) {
    0x0002c724 ldreq r7, [r0, 4]                     |         r7 = *((r0 + 4));
                                                     |     }
    0x0002c728 ldr lr, [lr]                          |     
    0x0002c72c add ip, ip, r7                        |     
    0x0002c730 b 0x2c6ec                             |     goto label_0;
                                                     | }
    ; 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/lib/libdbus-1.so.3.19.8 @ 0x2e520 */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) fcn.0002e520 ()                      | void fcn_0002e520 (int32_t arg_4h, int32_t arg_8h, int32_t arg_ch, void * s2, int32_t arg_14h, int32_t arg1, int32_t arg2) {
                                                 |     int32_t var_40h;
                                                 |     int32_t var_3ch;
                                                 |     int32_t var_38h;
                                                 |     int32_t var_34h;
                                                 |     int32_t var_30h;
                                                 |     int32_t var_28h;
                                                 |     int32_t var_24h;
                                                 |     int32_t var_20h;
                                                 |     int32_t var_1ch;
                                                 |     int32_t var_14h_2;
                                                 |     int32_t var_14h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0002e520 push {r4, r5, r6, r7, fp, lr}     |     
    0x0002e524 add fp, sp, 0x14                  |     
    0x0002e528 sub sp, sp, 0x30                  |     
    0x0002e52c ldr r7, [fp, 4]                   |     r7 = *(arg_4h);
    0x0002e530 ldr r1, [r1]                      |     r1 = *(r1);
    0x0002e534 mov r6, r0                        |     r6 = r0;
    0x0002e538 mov r0, 0                         |     r0 = 0;
    0x0002e53c cmp r7, r0                        |     
    0x0002e540 add r2, r1, r2                    |     r2 = r1 + r2;
    0x0002e544 str r3, [fp, -0x3c]               |     var_3ch = r3;
    0x0002e548 str r2, [fp, -0x40]               |     var_40h = r2;
                                                 |     if (r7 == r0) {
    0x0002e54c ldrne r3, [r7]                    |         r3 = *(r7);
                                                 |     }
                                                 |     if (r7 == r0) {
    0x0002e550 ldrne r2, [fp, 8]                 |         r2 = *(arg_8h);
                                                 |     }
    0x0002e554 str r0, [fp, -0x38]               |     var_38h = r0;
                                                 |     if (r7 == r0) {
    0x0002e558 addne r3, r3, r2                  |         r3 += r2;
                                                 |     }
                                                 |     if (r7 == r0) {
    0x0002e55c strne r3, [fp, -0x38]             |         var_38h = r3;
                                                 |     }
                                                 |     if (r7 == r0) {
    0x0002e560 ldrne r3, [fp, 0xc]               |         r3 = *(arg_ch);
                                                 |     }
    0x0002e564 ldr r4, [fp, 0x14]                |     r4 = *(arg_14h);
    0x0002e568 sub r5, fp, 0x30                  |     r5 -= var_30h;
    0x0002e56c str r0, [fp, -0x34]               |     var_34h = r0;
    0x0002e570 mov r2, 0x1c                      |     r2 = 0x1c;
    0x0002e574 mov r1, 0                         |     r1 = 0;
    0x0002e578 mov r0, r5                        |     r0 = r5;
                                                 |     if (r7 == r0) {
    0x0002e57c strne r3, [fp, -0x34]             |         var_34h = r3;
                                                 |     }
    0x0002e580 bl 0xb020                         |     memset (r0, r1, r2);
    0x0002e584 sub r3, fp, 0x40                  |     r3 -= var_40h;
    0x0002e588 cmp r7, 0                         |     
    0x0002e58c str r3, [fp, -0x28]               |     var_28h = r3;
                                                 |     if (r7 == 0) {
    0x0002e590 movne r3, 2                       |         r3 = 2;
                                                 |     }
                                                 |     if (r7 != 0) {
    0x0002e594 moveq r3, 1                       |         r3 = 1;
                                                 |     }
    0x0002e598 cmp r4, 0                         |     
    0x0002e59c str r3, [fp, -0x24]               |     var_24h = r3;
                                                 |     if (r4 <= 0) {
    0x0002e5a0 ble 0x2e5fc                       |         goto label_0;
                                                 |     }
    0x0002e5a4 add r4, r4, 1                     |     r4++;
    0x0002e5a8 lsl r4, r4, 2                     |     r4 <<= 2;
    0x0002e5ac add r3, r4, 0x16                  |     r3 = r4 + 0x16;
    0x0002e5b0 bic r3, r3, 7                     |     r3 = BIT_MASK (r3, 7);
    0x0002e5b4 sub sp, sp, r3                    |     
    0x0002e5b8 add r7, r4, 8                     |     r7 = r4 + 8;
    0x0002e5bc mov r3, sp                        |     r3 = sp;
    0x0002e5c0 mov r2, r7                        |     r2 = r7;
    0x0002e5c4 mov r1, 0                         |     r1 = 0;
    0x0002e5c8 mov r0, r3                        |     r0 = r3;
    0x0002e5cc str r7, [fp, -0x1c]               |     var_1ch = r7;
    0x0002e5d0 str r3, [fp, -0x20]               |     var_20h = r3;
    0x0002e5d4 bl 0xb020                         |     memset (r0, r1, r2);
    0x0002e5d8 cmp r7, 0xb                       |     
                                                 |     if (r7 < 0xb) {
    0x0002e5dc bls 0x2e630                       |         goto label_1;
                                                 |     }
    0x0002e5e0 mov r2, 1                         |     r2 = 1;
    0x0002e5e4 str r2, [r0, 4]                   |     *((r0 + 4)) = r2;
    0x0002e5e8 str r2, [r0, 8]                   |     *((r0 + 8)) = r2;
    0x0002e5ec ldr r1, [fp, 0x10]                |     r1 = *(s2);
    0x0002e5f0 str r7, [r0], 0xc                 |     *(r0) = r7;
                                                 |     r0 += 0xc;
    0x0002e5f4 sub r2, r4, 4                     |     r2 = r4 - 4;
    0x0002e5f8 bl 0xa654                         |     memcpy (r0, r1, r2);
                                                 |     do {
                                                 | label_0:
    0x0002e5fc mov r2, 0x4000                    |         r2 = 0x4000;
    0x0002e600 mov r1, r5                        |         r1 = r5;
    0x0002e604 mov r0, r6                        |         r0 = r6;
    0x0002e608 bl 0xad20                         |         r0 = sendmsg ();
    0x0002e60c subs r4, r0, 0                    |         r4 = r0 - 0;
                                                 |         if (r4 >= r0) {
    0x0002e610 bge 0x2e624                       |             goto label_2;
                                                 |         }
    0x0002e614 bl 0xb548                         |         r0 = errno_location ();
    0x0002e618 ldr r3, [r0]                      |         r3 = *(r0);
    0x0002e61c cmp r3, 4                         |         
    0x0002e620 beq 0x2e5fc                       |         
                                                 |     } while (r3 == 4);
                                                 | label_2:
    0x0002e624 mov r0, r4                        |     r0 = r4;
    0x0002e628 sub sp, fp, 0x14                  |     
    0x0002e62c pop {r4, r5, r6, r7, fp, pc}      |     
                                                 | label_1:
    0x0002e630 mov r3, 0                         |     r3 = 0;
    0x0002e634 str r3, [r3, 4]                   |     *((r3 + 4)) = r3;
    0x0002e638 udf 0                             |     __asm ("udf 0");
                                                 | }
    ; 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/lib/libdbus-1.so.3.19.8 @ 0x26d54 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.dbus_timeout_set_data ()         | void dbus_timeout_set_data (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x00026d54 push {r4, r5, r6, lr}             |     
    0x00026d58 ldr r3, [r0, 0x18]                |     r3 = *((r0 + 0x18));
    0x00026d5c mov r4, r0                        |     r4 = r0;
    0x00026d60 cmp r3, 0                         |     
    0x00026d64 mov r6, r1                        |     r6 = r1;
    0x00026d68 mov r5, r2                        |     r5 = r2;
                                                 |     if (r3 != 0) {
    0x00026d6c beq 0x26d78                       |         
    0x00026d70 ldr r0, [r0, 0x14]                |         r0 = *((r0 + 0x14));
    0x00026d74 blx r3                            |         uint32_t (*r3)(uint32_t) (r0);
                                                 |     }
    0x00026d78 str r6, [r4, 0x14]                |     *((r4 + 0x14)) = r6;
    0x00026d7c str r5, [r4, 0x18]                |     *((r4 + 0x18)) = r5;
    0x00026d80 pop {r4, r5, r6, pc}              |     
                                                 | }

[*] Function strcat used 1 times libdbus-1.so.3.19.8