[*] Binary protection state of libsyslog-ng-3.31.so.0.0.0

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


[*] Function strcat tear down of libsyslog-ng-3.31.so.0.0.0

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x57ba0 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00057ba0 ()                                      | void fcn_00057ba0 (int16_t arg_188h, int16_t arg_208h, int16_t arg_240h, int16_t arg1) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_24h;
                                                                 |     int32_t var_24h_2;
                                                                 |     r0 = arg1;
                                                                 | label_3:
    0x0002109c bx pc                                             |     return void (*pc)() ();
    0x00057ba0 ldr r2, [pc, 0x14c]                               |     
    0x00057ba2 ldr r3, [pc, 0x150]                               |     r3 = *(0x57cf6);
    0x00057ba4 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00057ba8 mov r5, r0                                        |     r5 = r0;
    0x00057baa add r2, pc                                        |     r2 = 0xaf89e;
    0x00057bac sub sp, 0x28                                      |     
    0x00057bae mov.w sb, 0                                       |     sb = 0;
    0x00057bb2 add r7, sp, 8                                     |     r7 += var_8h;
    0x00057bb4 ldr r3, [r2, r3]                                  |     
    0x00057bb6 ldr r6, [pc, 0x140]                               |     
    0x00057bb8 ldr r3, [r3]                                      |     r3 = *(0xaf89e);
    0x00057bba str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00057bbc mov.w r3, 0                                       |     r3 = 0;
    0x00057bc0 bl 0x57a78                                        |     r0 = fcn_00057a78 (r0, r1);
    0x00057bc4 mov r8, r0                                        |     r8 = r0;
    0x00057bc6 mov r0, r5                                        |     r0 = r5;
    0x00057bc8 blx 0x219e0                                       |     fcn_000219e0 ();
    0x00057bcc ldr r1, [pc, 0x12c]                               |     
    0x00057bce add r6, pc                                        |     r6 = 0xaf8cc;
    0x00057bd0 mov r4, r0                                        |     r4 = r0;
    0x00057bd2 mov r0, r5                                        |     r0 = r5;
    0x00057bd4 add r5, sp, 0xc                                   |     r5 += var_ch;
    0x00057bd6 add r1, pc                                        |     r1 = 0xaf8d6;
    0x00057bd8 blx 0x21148                                       |     r0 = fcn_00021148 ();
    0x00057bdc mov sl, r0                                        |     sl = r0;
    0x00057bde adds r0, r6, 4                                    |     r0 = r6 + 4;
    0x00057be0 blx 0x23224                                       |     fcn_00023224 ();
    0x00057be4 blx 0x21b7c                                       |     fcn_00021b7c ();
    0x00057be8 ldr r1, [r6, 0x20]                                |     r1 = *(0xaf8ec);
    0x00057bea mov r0, r5                                        |     r0 = r5;
    0x00057bec add r6, sp, 4                                     |     r6 += var_4h;
    0x00057bee blx 0x20e0c                                       |     fcn_00020e0c ();
    0x00057bf2 b 0x57c00                                         |     
                                                                 |     while (r0 != 0) {
    0x00057bf4 ldr r1, [sp, 4]                                   |         r1 = var_4h;
    0x00057bf6 mov r0, r4                                        |         r0 = r4;
    0x00057bf8 blx 0x1f71c                                       |         r0 = fcn_0001f71c ();
    0x00057bfc cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00057bfe bne 0x57cb4                                       |             goto label_5;
                                                                 |         }
                                                                 | label_1:
    0x00057c00 mov r2, r7                                        |         r2 = r7;
    0x00057c02 mov r1, r6                                        |         r1 = r6;
    0x00057c04 mov r0, r5                                        |         r0 = r5;
    0x00057c06 blx 0x218e4                                       |         r0 = g_mutex_lock ();
    0x00057c0a cmp r0, 0                                         |         
    0x00057c0c bne 0x57bf4                                       |         
                                                                 |     }
                                                                 | label_2:
    0x00057c0e ldr r0, [pc, 0xf0]                                |     
    0x00057c10 add r0, pc                                        |     r0 = 0xaf916;
    0x00057c12 adds r0, 4                                        |     r0 += 4;
    0x00057c14 blx 0x23224                                       |     fcn_00023224 ();
    0x00057c16 add.w r7, r6, sl, lsl 31                          |     r7 = r6 + (sl << 31);
    0x00057c1a orns r6, r4, r0, asr 16                           |     __asm ("orns r6, r4, r0, asr 16");
    0x00057c1e blx 0x21d24                                       |     fcn_00021d24 ();
    0x00057c22 mov r0, sb                                        |     r0 = sb;
    0x00057c24 blx 0x1f2f8                                       |     r0 = fcn_0001f2f8 ();
    0x00057c28 mov sb, r0                                        |     sb = r0;
    0x00057c2a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00057c2c beq 0x57ce8                                       |         goto label_6;
                                                                 |     }
    0x00057c2e mov r6, r0                                        |     r6 = r0;
    0x00057c30 movs r7, 0                                        |     r7 = 0;
                                                                 | label_0:
    0x00057c32 ldr r5, [r6]                                      |     r5 = *(r6);
    0x00057c34 ldr r4, [r5]                                      |     r4 = *(r5);
                                                                 |     if (r4 == 0) {
    0x00057c36 cbz r4, 0x57c72                                   |         goto label_7;
                                                                 |     }
    0x00057c38 mov.w sl, 0                                       |     sl = 0;
                                                                 |     do {
    0x00057c3c ldr r0, [r4]                                      |         r0 = *(r4);
    0x00057c3e bl 0x57a78                                        |         r0 = fcn_00057a78 (r0, r1);
    0x00057c42 mov r1, r0                                        |         r1 = r0;
                                                                 |         if (r0 != 0) {
    0x00057c44 cbz r0, 0x57c4e                                   |             
    0x00057c46 mov r0, sl                                        |             r0 = sl;
    0x00057c48 blx 0x210a0                                       |             r0 = fcn_000210a0 ();
    0x00057c4c mov sl, r0                                        |             sl = r0;
                                                                 |         }
    0x00057c4e ldr r4, [r4, 4]                                   |         r4 = *((r4 + 4));
    0x00057c50 cmp r4, 0                                         |         
    0x00057c52 bne 0x57c3c                                       |         
                                                                 |     } while (r4 != 0);
    0x00057c54 cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x00057c58 beq 0x57c72                                       |         
    0x00057c5a ldr r3, [r5, 8]                                   |         r3 = *((r5 + 8));
    0x00057c5c adds r1, r5, 4                                    |         r1 = r5 + 4;
    0x00057c5e mov r0, sl                                        |         r0 = sl;
    0x00057c60 blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00057c62 mov r0, r7                                        |         r0 = r7;
    0x00057c64 ldr r1, [r5, 4]                                   |         r1 = *((r5 + 4));
    0x00057c66 blx 0x21c38                                       |         r0 = fcn_00021c38 ();
    0x00057c6a mov r7, r0                                        |         r7 = r0;
    0x00057c6c mov r0, sl                                        |         r0 = sl;
    0x00057c6e blx 0x2069c                                       |         g_hash_table_new_full ();
                                                                 |     }
                                                                 | label_7:
    0x00057c72 ldr r6, [r6, 4]                                   |     r6 = *((r6 + 4));
    0x00057c74 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00057c76 bne 0x57c32                                       |         goto label_0;
                                                                 |     }
                                                                 | label_4:
    0x00057c78 mov r0, r7                                        |     r0 = r7;
    0x00057c7a blx 0x1f2f8                                       |     r0 = fcn_0001f2f8 ();
    0x00057c7e mov r4, r0                                        |     r4 = r0;
    0x00057c80 mov r0, sb                                        |     r0 = sb;
    0x00057c82 blx 0x2069c                                       |     g_hash_table_new_full ();
    0x00057c86 cmp.w r8, 0                                       |     
    0x00057c8a it ne                                             |     
                                                                 |     if (r8 != 0) {
    0x00057c8c cmpne r4, 0                                       |         __asm ("cmpne r4, 0");
                                                                 |     }
                                                                 |     if (r8 != 0) {
    0x00057c8e bne 0x57cc6                                       |         goto label_8;
                                                                 |     }
    0x00057c90 ldr r2, [pc, 0x70]                                |     
    0x00057c92 cmp.w r8, 0                                       |     
    0x00057c96 it eq                                             |     
                                                                 |     if (r8 != 0) {
    0x00057c98 moveq r8, r4                                      |         r8 = r4;
                                                                 |     }
    0x00057c9a ldr r3, [pc, 0x58]                                |     r3 = *(0x57cf6);
    0x00057c9c add r2, pc                                        |     r2 = 0xaf9a4;
    0x00057c9e ldr r3, [r2, r3]                                  |     r3 = *(0xaf9a4);
    0x00057ca0 ldr r2, [r3]                                      |     r2 = *(0xaf9a4);
    0x00057ca2 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00057ca4 eors r2, r3                                       |     r2 ^= r3;
    0x00057ca6 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00057caa bne 0x57cec                                       |         goto label_9;
                                                                 |     }
    0x00057cac mov r0, r8                                        |     r0 = r8;
    0x00057cae add sp, 0x28                                      |     
    0x00057cb0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | label_5:
    0x00057cb4 mov r0, sb                                        |     r0 = sb;
    0x00057cb6 ldr r1, [sp, 8]                                   |     r1 = var_8h;
    0x00057cb8 blx 0x21c38                                       |     r0 = fcn_00021c38 ();
    0x00057cbc mov sb, r0                                        |     sb = r0;
    0x00057cbe cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x00057cc2 bne 0x57c00                                       |         goto label_1;
                                                                 |     }
    0x00057cc4 b 0x57c0e                                         |     goto label_2;
                                                                 | label_8:
    0x00057cc6 ldr r2, [pc, 0x40]                                |     
    0x00057cc8 ldr r3, [pc, 0x28]                                |     r3 = *(0x57cf4);
    0x00057cca add r2, pc                                        |     r2 = 0xaf9d8;
    0x00057ccc ldr r3, [r2, r3]                                  |     r3 = *(0xaf9d8);
    0x00057cce ldr r2, [r3]                                      |     r2 = *(0xaf9d8);
    0x00057cd0 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00057cd2 eors r2, r3                                       |     r2 ^= r3;
    0x00057cd4 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x00057cd8 bne 0x57cec                                       |         
    0x00057cda mov r1, r4                                        |         r1 = r4;
    0x00057cdc mov r0, r8                                        |         r0 = r8;
    0x00057cde add sp, 0x28                                      |         
    0x00057ce0 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |         
    0x00057ce4 b.w 0x2109c                                       |         goto label_3;
                                                                 | label_6:
    0x00057ce8 mov r7, r0                                        |         r7 = r0;
    0x00057cea b 0x57c78                                         |         goto label_4;
                                                                 |     }
                                                                 | label_9:
    0x00057cec blx 0x21bd4                                       |     fcn_00021bd4 ();
    0x00057cf0 ldr r0, [sp, 0x208]                               |     r0 = *(arg_208h);
    0x00057cf2 movs r4, r0                                       |     r4 = r0;
    0x00057cf4 adds r4, r1, r3                                   |     r4 = r1 + r3;
    0x00057cf6 movs r0, r0                                       |     
    0x00057cf8 cdp2 p0, 0xd, c0, c14, c4, 0                      |     __asm ("cdp2 p0, 0xd, c0, c14, c4, 0");
    0x00057cfc ldr r6, [r6, 0x24]                                |     r6 = var_24h_2;
    0x00057cfe movs r2, r0                                       |     r2 = r0;
    0x00057d00 cdp2 p0, 9, c0, c12, c4, 0                        |     __asm ("cdp2 p0, 9, c0, c12, c4, 0");
    0x00057d04 str r7, [sp, 0x240]                               |     *(arg_240h) = r7;
    0x00057d06 movs r4, r0                                       |     r4 = r0;
    0x00057d08 str r7, [sp, 0x188]                               |     *(arg_188h) = r7;
    0x00057d0a movs r4, r0                                       |     r4 = r0;
    0x00057d0c push {r3, r4, r5, lr}                             |     
    0x00057d0e mov r5, r0                                        |     r5 = r0;
    0x00057d10 mov r4, r1                                        |     r4 = r1;
    0x00057d12 blx 0x23634                                       |     r0 = fcn_00023634 ();
                                                                 |     if (r0 == 0) {
    0x00057d16 cbnz r0, 0x57d1a                                  |         
    0x00057d18 pop {r3, r4, r5, pc}                              |         
                                                                 |     }
    0x00057d1a ldr r3, [r5, 0x18]                                |     r3 = *((r5 + 0x18));
    0x00057d1c adds.w r1, r3, r4, lsl 4                          |     r1 = r3 + (r4 << 4);
    0x00057d20 ldr r3, [pc, 0x18]                                |     
    0x00057d22 it ne                                             |     
                                                                 |     if (r1 == r3) {
    0x00057d24 ldrne r1, [r1, 4]                                 |         r1 = *((r1 + 4));
                                                                 |     }
    0x00057d26 add r3, pc                                        |     r3 = 0xafa66;
    0x00057d28 ldr r0, [r3]                                      |     r0 = *(0xafa66);
    0x00057d2a blx 0x22924                                       |     fcn_00022924 ();
    0x00057d2e ldrh r3, [r5, 0x2c]                               |     r3 = *((r5 + 0x2c));
    0x00057d30 movs r2, 1                                        |     r2 = 1;
    0x00057d32 lsls r2, r4                                       |     r2 <<= r4;
    0x00057d34 bic.w r3, r3, r2                                  |     r3 = BIT_MASK (r3, r2);
    0x00057d38 strh r3, [r5, 0x2c]                               |     *((r5 + 0x2c)) = r3;
    0x00057d3a pop {r3, r4, r5, pc}                              |     
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x588d4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.control_connection_start_as_thread ()        | void control_connection_start_as_thread (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x000588d4 mvnsmi lr, sp, lsr 18                         |     __asm ("mvnsmi lr, sp, lsr 18");
    0x000588d8 mov r7, r0                                    |     r7 = r0;
    0x000588da movs r0, 0x48                                 |     r0 = 0x48;
    0x000588dc mov r5, r1                                    |     r5 = r1;
    0x000588de mov r8, r2                                    |     r8 = r2;
    0x000588e0 mov r6, r3                                    |     r6 = r3;
    0x000588e2 blx 0x23320                                   |     r0 = fcn_00023320 ();
    0x000588e6 mov r4, r0                                    |     r4 = r0;
    0x000588e8 ldr.w r0, [r8]                                |     r0 = *(r8);
    0x000588ec str r7, [r4]                                  |     *(r4) = r7;
    0x000588ee blx 0x1fd50                                   |     fcn_0001fd50 ();
    0x000588f2 strd r0, r6, [r4, 4]                          |     __asm ("strd r0, r6, [r4, 4]");
    0x000588f6 blx 0x221cc                                   |     fcn_000221cc ();
    0x000588fa str r0, [r4, 0x10]                            |     *((r4 + 0x10)) = r0;
    0x000588fc blx 0x20f98                                   |     fcn_00020f98 ();
    0x00058900 str r0, [r4, 0x14]                            |     *((r4 + 0x14)) = r0;
    0x00058902 blx 0x221cc                                   |     fcn_000221cc ();
    0x00058906 ldr r3, [pc, 0xbc]                            |     
    0x00058908 movs r2, 0                                    |     r2 = 0;
    0x0005890a strd r2, r2, [r4, 0x18]                       |     __asm ("strd r2, r2, [r4, 0x18]");
    0x0005890e str r0, [r4, 0x20]                            |     *((r4 + 0x20)) = r0;
    0x00058910 add r3, pc                                    |     r3 = 0xb12da;
    0x00058912 str r5, [r4, 0x2c]                            |     *((r4 + 0x2c)) = r5;
    0x00058914 strd r4, r3, [r4, 0x34]                       |     __asm ("strd r4, r3, [r4, 0x34]");
    0x00058918 blx 0x23054                                   |     fcn_00023054 ();
    0x0005891c blx 0x20230                                   |     r0 = fcn_00020230 ();
                                                             |     if (r0 == 0) {
    0x00058920 cbz r0, 0x5896c                               |         goto label_0;
                                                             |     }
    0x00058922 add.w r0, r4, 0x34                            |     r0 = r4 + 0x34;
    0x00058926 blx 0x1f3fc                                   |     fcn_0001f3fc ();
    0x0005892a ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x0005892c mov r2, r4                                    |     r2 = r4;
    0x0005892e ldr r1, [pc, 0x98]                            |     
    0x00058930 ldr r0, [r3]                                  |     r0 = *(r3);
    0x00058932 add r1, pc                                    |     r1 = 0xb1300;
    0x00058934 blx 0x20248                                   |     r0 = fcn_00020248 ();
    0x00058938 mov r3, r0                                    |     r3 = r0;
    0x0005893a ldr r0, [r4, 0x10]                            |     r0 = *((r4 + 0x10));
    0x0005893c str r3, [r4, 0xc]                             |     *((r4 + 0xc)) = r3;
    0x0005893e blx 0x21b7c                                   |     fcn_00021b7c ();
    0x00058942 ldr r3, [r4, 0x18]                            |     r3 = *((r4 + 0x18));
                                                             |     if (r3 != 0) {
    0x00058944 cbnz r3, 0x58954                              |         goto label_1;
                                                             |     }
                                                             |     do {
    0x00058946 ldrd r1, r0, [r4, 0x10]                       |         __asm ("ldrd r1, r0, [r4, 0x10]");
    0x0005894a blx 0x23d9c                                   |         fcn_00023d9c ();
    0x0005894e ldr r3, [r4, 0x18]                            |         r3 = *((r4 + 0x18));
    0x00058950 cmp r3, 0                                     |         
    0x00058952 beq 0x58946                                   |         
                                                             |     } while (r3 == 0);
                                                             | label_1:
    0x00058954 ldr r0, [r4, 0x10]                            |     r0 = *((r4 + 0x10));
    0x00058956 blx 0x22104                                   |     fcn_00022104 ();
    0x0005895a ldr r3, [r4]                                  |     r3 = *(r4);
    0x0005895c mov r1, r4                                    |     r1 = r4;
    0x0005895e ldr r4, [r3, 0x10]                            |     r4 = *((r3 + 0x10));
    0x00058960 ldr r0, [r4]                                  |     r0 = *(r4);
    0x00058962 blx 0x201e0                                   |     strerror (r0);
    0x00058966 str r0, [r4]                                  |     *(r4) = r0;
    0x00058968 pop.w {r4, r5, r6, r7, r8, pc}                |     
                                                             | label_0:
    0x0005896c ldr r3, [r4, 4]                               |     r3 = *((r4 + 4));
    0x0005896e mov r6, r0                                    |     r6 = r0;
    0x00058970 ldr r0, [pc, 0x58]                            |     
    0x00058972 ldr r1, [r3]                                  |     r1 = *(r3);
    0x00058974 add r0, pc                                    |     r0 = 0xb1344;
    0x00058976 blx 0x21ea4                                   |     fcn_00021ea4 ();
    0x0005897a ldr r1, [pc, 0x54]                            |     
    0x0005897c mov r3, r6                                    |     r3 = r6;
    0x0005897e mov r2, r0                                    |     r2 = r0;
    0x00058980 movs r0, 4                                    |     r0 = 4;
    0x00058982 add r1, pc                                    |     r1 = 0xb1358;
    0x00058984 blx 0x1f2b0                                   |     fcn_0001f2b0 ();
    0x00058988 blx 0x23348                                   |     g_string_append ();
    0x0005898c ldr r6, [r4]                                  |     r6 = *(r4);
    0x0005898e ldrd r1, r2, [r4, 4]                          |     __asm ("ldrd r1, r2, [r4, 4]");
    0x00058992 mov r0, r6                                    |     r0 = r6;
    0x00058994 blx r5                                        |     r0 = uint32_t (*r5)(uint32_t, uint32_t) (r0, r1);
    0x00058996 mov r1, r0                                    |     r1 = r0;
    0x00058998 mov r0, r6                                    |     r0 = r6;
    0x0005899a blx 0x211f8                                   |     fcn_000211f8 ();
    0x0005899e ldr r0, [r4, 0x10]                            |     r0 = *((r4 + 0x10));
    0x000589a0 blx 0x2402c                                   |     fcn_0002402c ();
    0x000589a4 ldr r0, [r4, 0x14]                            |     r0 = *((r4 + 0x14));
    0x000589a6 blx 0x23a78                                   |     fcn_00023a78 ();
    0x000589aa ldr r0, [r4, 0x20]                            |     r0 = *((r4 + 0x20));
    0x000589ac blx 0x2402c                                   |     fcn_0002402c ();
    0x000589b0 ldr r0, [r4, 4]                               |     r0 = *((r4 + 4));
    0x000589b2 movs r1, 1                                    |     r1 = 1;
    0x000589b4 blx 0x229a8                                   |     fcn_000229a8 ();
    0x000589b8 mov r0, r4                                    |     r0 = r4;
    0x000589ba pop.w {r4, r5, r6, r7, r8, lr}                |     
    0x000589be b.w 0x21ecc                                   |     return void (*0x21ecc)() ();
                                                             | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x67620).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsyslog-ng-3.31.so.0.0.0 @ 0x4eb04 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.log_parser_process_message ()            | void log_parser_process_message (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                         |     int16_t var_0h_2;
                                                         |     int16_t var_4h;
                                                         |     int16_t var_8h;
                                                         |     int16_t var_14h;
                                                         |     int16_t var_0h;
                                                         |     int16_t var_8h_2;
                                                         |     int16_t var_ch;
                                                         |     int32_t var_4h_2;
                                                         |     int32_t var_4h_3;
                                                         |     int32_t var_ch_2;
                                                         |     int16_t var_1ch;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
    0x0004eb04 mvnsmi lr, 0xb4000                        |     __asm ("mvnsmi lr, case.0x5984c.0");
    0x0004eb08 mov r6, r2                                |     r6 = r2;
    0x0004eb0a ldr r2, [pc, 0x168]                       |     
    0x0004eb0c sub sp, 0x24                              |     
    0x0004eb0e mov r4, r0                                |     r4 = r0;
    0x0004eb10 mov r5, r1                                |     r5 = r1;
    0x0004eb12 ldr r3, [pc, 0x164]                       |     r3 = *(0x4ec7a);
    0x0004eb14 add r2, pc                                |     r2 = 0x9d78e;
    0x0004eb16 ldr.w r8, [pc, 0x164]                     |     
    0x0004eb1a ldr.w sb, [r1]                            |     sb = *(r1);
    0x0004eb1e ldr r3, [r2, r3]                          |     
    0x0004eb20 add r8, pc                                |     r8 = 0x9d7a2;
    0x0004eb22 ldr r3, [r3]                              |     r3 = *(0x9d78e);
    0x0004eb24 str r3, [sp, 0x1c]                        |     var_1ch = r3;
    0x0004eb26 mov.w r3, 0                               |     r3 = 0;
    0x0004eb2a ldr r3, [r0, 0x54]                        |     r3 = *((r0 + 0x54));
                                                         |     if (r3 == 0) {
    0x0004eb2c cbz r3, 0x4eb8c                           |         goto label_5;
                                                         |     }
    0x0004eb2e mov.w r0, 0x100                           |     r0 = case.0x5984c.0;
    0x0004eb32 movs r7, 0                                |     r7 = 0;
    0x0004eb34 blx 0x21b30                               |     isatty (r0);
    0x0004eb38 add r2, sp, 0xc                           |     r2 += var_ch;
    0x0004eb3a mov r8, r0                                |     r8 = r0;
    0x0004eb3c str r7, [sp, 0xc]                         |     var_ch = r7;
    0x0004eb3e mov r1, sb                                |     r1 = sb;
    0x0004eb40 ldr r0, [r4, 0x54]                        |     r0 = *((r4 + 0x54));
    0x0004eb42 mov r3, r8                                |     r3 = r8;
    0x0004eb44 strd r7, r7, [r2, 4]                      |     __asm ("strd r7, r7, [var_4h_2]");
    0x0004eb48 str r7, [r2, 0xc]                         |     var_ch_2 = r7;
    0x0004eb4a blx 0x217b4                               |     fcn_000217b4 ();
    0x0004eb4e ldr.w r0, [r8, 4]                         |     r0 = *((r8 + 4));
    0x0004eb52 mov r1, r5                                |     r1 = r5;
    0x0004eb54 ldr.w r3, [r8]                            |     r3 = *(r8);
    0x0004eb58 mov r2, r6                                |     r2 = r6;
    0x0004eb5a str r0, [sp]                              |     *(sp) = r0;
    0x0004eb5c mov r0, r4                                |     r0 = r4;
    0x0004eb5e ldr r5, [r4, 0x58]                        |     r5 = *((r4 + 0x58));
    0x0004eb60 blx r5                                    |     r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0004eb62 mov r5, r0                                |     r5 = r0;
    0x0004eb64 movs r1, 1                                |     r1 = 1;
    0x0004eb66 mov r0, r8                                |     r0 = r8;
    0x0004eb68 blx 0x229a8                               |     fcn_000229a8 ();
    0x0004eb6c cmp r5, 0                                 |     
                                                         |     if (r5 == 0) {
    0x0004eb6e beq 0x4ec04                               |         goto label_6;
                                                         |     }
                                                         |     do {
                                                         | label_0:
    0x0004eb70 ldr r2, [pc, 0x10c]                       |         
    0x0004eb72 ldr r3, [pc, 0x104]                       |         r3 = *(0x4ec7a);
    0x0004eb74 add r2, pc                                |         r2 = 0x9d7f8;
    0x0004eb76 ldr r3, [r2, r3]                          |         r3 = *(0x9d7f8);
    0x0004eb78 ldr r2, [r3]                              |         r2 = *(0x9d7f8);
    0x0004eb7a ldr r3, [sp, 0x1c]                        |         r3 = var_1ch;
    0x0004eb7c eors r2, r3                               |         r2 ^= r3;
    0x0004eb7e mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x0004eb82 bne 0x4ec70                               |             goto label_7;
                                                         |         }
    0x0004eb84 mov r0, r5                                |         r0 = r5;
    0x0004eb86 add sp, 0x24                              |         
    0x0004eb88 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_5:
    0x0004eb8c ldr.w r0, [sb, 0x58]                      |         r0 = *((sb + 0x58));
    0x0004eb90 blx 0x20e80                               |         fcn_00020e80 ();
    0x0004eb94 ldr r3, [pc, 0xec]                        |         
    0x0004eb96 mov r7, r0                                |         r7 = r0;
    0x0004eb98 ldr.w r3, [r8, r3]                        |         r3 = *((r8 + r3));
    0x0004eb9c ldr r3, [r3]                              |         
    0x0004eb9e ldr r3, [r3, 4]                           |         
    0x0004eba0 ldr r3, [r3]                              |         r3 = *(0x4ec88);
    0x0004eba2 ldrh r1, [r3, 0x14]                       |         r1 = *((r3 + 0x14));
    0x0004eba4 ands r3, r1, 4                            |         r3 = r1 & 4;
                                                         |         if (r3 == r1) {
    0x0004eba8 bne 0x4ebde                               |             
    0x0004ebaa ldr.w sb, [sb, 0x58]                      |             sb = *((sb + 0x58));
    0x0004ebae ldrb.w r2, [sb, 0xa]                      |             r2 = *((sb + 0xa));
    0x0004ebb2 cmp r2, 2                                 |             
                                                         |             if (r2 > 2) {
    0x0004ebb4 bhi 0x4ec26                               |                 goto label_8;
                                                         |             }
    0x0004ebb6 movs r1, 3                                |             r1 = 3;
    0x0004ebb8 add r3, sp, 0xc                           |             r3 += var_ch;
    0x0004ebba add r2, sp, 8                             |             r2 += var_8h_2;
    0x0004ebbc mov r0, sb                                |             r0 = sb;
    0x0004ebbe blx 0x22660                               |             r0 = fcn_00022660 ();
    0x0004ebc2 mov r1, r0                                |             r1 = r0;
    0x0004ebc4 cmp r0, 0                                 |             
                                                         |             if (r0 == 0) {
    0x0004ebc6 beq 0x4ec2e                               |                 goto label_9;
                                                         |             }
                                                         | label_2:
    0x0004ebc8 ldrb r3, [r1]                             |             r3 = *(r1);
    0x0004ebca lsls r2, r3, 0x1d                         |             r2 = r3 << 0x1d;
                                                         |             if (r2 < r3) {
    0x0004ebcc bmi 0x4ec2e                               |                 goto label_9;
                                                         |             }
    0x0004ebce lsls r3, r3, 0x1f                         |             r3 <<= 0x1f;
                                                         |             if (r3 < r3) {
    0x0004ebd0 bmi 0x4ec46                               |                 goto label_10;
                                                         |             }
    0x0004ebd2 ldr r2, [r1, 8]                           |             r2 = *((r1 + 8));
    0x0004ebd4 str r2, [sp, 0xc]                         |             var_ch = r2;
    0x0004ebd6 ldrb r3, [r1, 1]                          |             r3 = *((r1 + 1));
    0x0004ebd8 add r3, r1                                |             r3 += r1;
    0x0004ebda adds r3, 0xd                              |             r3 += 0xd;
    0x0004ebdc b 0x4ebec                                 |             
                                                         |         } else {
    0x0004ebde add r2, sp, 0xc                           |             r2 += var_ch;
    0x0004ebe0 lsrs r1, r1, 8                            |             r1 >>= 8;
    0x0004ebe2 mov r0, sb                                |             r0 = sb;
    0x0004ebe4 blx 0x21064                               |             fcn_00021064 ();
    0x0004ebe8 ldr r2, [sp, 0xc]                         |             r2 = var_ch;
    0x0004ebea mov r3, r0                                |             r3 = r0;
                                                         |         }
                                                         | label_1:
    0x0004ebec str r2, [sp]                              |         *(sp) = r2;
    0x0004ebee mov r1, r5                                |         r1 = r5;
    0x0004ebf0 mov r2, r6                                |         r2 = r6;
    0x0004ebf2 ldr r5, [r4, 0x58]                        |         r5 = *((r4 + 0x58));
    0x0004ebf4 mov r0, r4                                |         r0 = r4;
    0x0004ebf6 blx r5                                    |         r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0004ebf8 mov r5, r0                                |         r5 = r0;
    0x0004ebfa mov r0, r7                                |         r0 = r7;
    0x0004ebfc blx 0x20fd8                               |         fcn_00020fd8 ();
    0x0004ec00 cmp r5, 0                                 |         
    0x0004ec02 bne 0x4eb70                               |         
                                                         |     } while (r5 != 0);
                                                         | label_6:
    0x0004ec04 ldr r3, [r4, 0x18]                        |     r3 = *((r4 + 0x18));
    0x0004ec06 cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x0004ec08 beq 0x4eb70                               |         goto label_0;
                                                         |     }
    0x0004ec0a ldr r2, [r3, 0xc]                         |     r2 = *((r3 + 0xc));
                                                         |     if (r2 != 0) {
    0x0004ec0c cbnz r2, 0x4ec58                          |         goto label_11;
                                                         |     }
    0x0004ec0e dmb ish                                   |     __asm ("dmb ish");
                                                         |     do {
    0x0004ec12 ldrex r1, [r3]                            |         __asm ("ldrex r1, [r3]");
    0x0004ec16 adds r1, 1                                |         r1++;
    0x0004ec18 strex r2, r1, [r3]                        |         __asm ("strex r2, r1, [r3]");
    0x0004ec1c cmp r2, 0                                 |         
    0x0004ec1e bne 0x4ec12                               |         
                                                         |     } while (r2 != 0);
    0x0004ec20 dmb ish                                   |     __asm ("dmb ish");
    0x0004ec24 b 0x4eb70                                 |     goto label_0;
                                                         | label_8:
    0x0004ec26 ldr.w r1, [sb, 0x14]                      |     r1 = *((sb + 0x14));
    0x0004ec2a str r3, [sp, 0xc]                         |     var_ch = r3;
                                                         |     if (r1 == 0) {
    0x0004ec2c cbnz r1, 0x4ec3c                          |         
                                                         | label_9:
    0x0004ec2e movs r2, 0                                |         r2 = 0;
    0x0004ec30 str r2, [sp, 0xc]                         |         var_ch = r2;
                                                         | label_3:
    0x0004ec32 ldr r3, [pc, 0x54]                        |         
    0x0004ec34 ldr.w r3, [r8, r3]                        |         r3 = *((r8 + r3));
    0x0004ec38 ldr r3, [r3]                              |         r3 = *(0x4ec8a);
    0x0004ec3a b 0x4ebec                                 |         goto label_1;
                                                         |     }
    0x0004ec3c ldr.w r3, [sb]                            |     r3 = *(sb);
    0x0004ec40 subs r1, r3, r1                           |     r1 = r3 - r1;
    0x0004ec42 add r1, sb                                |     r1 += sb;
    0x0004ec44 b 0x4ebc8                                 |     goto label_2;
                                                         | label_10:
    0x0004ec46 add r2, sp, 0xc                           |     r2 += var_ch;
    0x0004ec48 mov r0, sb                                |     r0 = sb;
    0x0004ec4a blx 0x210b8                               |     fcn_000210b8 ();
    0x0004ec4e ldr r2, [sp, 0xc]                         |     r2 = var_ch;
    0x0004ec50 mov r3, r0                                |     r3 = r0;
    0x0004ec52 cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x0004ec54 bne 0x4ebec                               |         goto label_1;
                                                         |     }
    0x0004ec56 b 0x4ec32                                 |     goto label_3;
                                                         | label_11:
    0x0004ec58 ldr r3, [pc, 0x30]                        |     
    0x0004ec5a movs r2, 0x4a                             |     r2 = 0x4a;
    0x0004ec5c ldr r4, [pc, 0x30]                        |     
    0x0004ec5e mov r0, r5                                |     r0 = r5;
    0x0004ec60 ldr r1, [pc, 0x30]                        |     
    0x0004ec62 add r3, pc                                |     r3 = 0x9d8f2;
    0x0004ec64 add r4, pc                                |     r4 = 0x9d8f8;
    0x0004ec66 adds r3, 0x10                             |     r3 += 0x10;
    0x0004ec68 add r1, pc                                |     r1 = 0x9d900;
    0x0004ec6a str r4, [sp]                              |     *(sp) = r4;
    0x0004ec6c blx 0x2368c                               |     fcn_0002368c ();
                                                         | label_7:
    0x0004ec70 blx 0x21bd4                               |     fcn_00021bd4 ();
    0x0004ec74 cmp r1, 0x18                              |     
    0x0004ec76 movs r5, r0                               |     r5 = r0;
    0x0004ec78 adds r4, r1, r3                           |     r4 = r1 + r3;
    0x0004ec7a movs r0, r0                               |     
    0x0004ec7c cmp r1, 0xc                               |     
    0x0004ec7e movs r5, r0                               |     r5 = r0;
    0x0004ec80 cmp r0, 0xb8                              |     
    0x0004ec82 movs r5, r0                               |     r5 = r0;
    0x0004ec84 adds r0, r7, r4                           |     r0 = r7 + r4;
    0x0004ec86 movs r0, r0                               |     
    0x0004ec88 adds r0, r5, r3                           |     r0 = r5 + r3;
    0x0004ec8a movs r0, r0                               |     
    0x0004ec8c ldr r3, [pc, 0x158]                       |     r3 = *(0x4ede8);
    0x0004ec8e movs r3, r0                               |     r3 = r0;
    0x0004ec90 ldm r2, {r2, r3, r5, r7}                  |     r2 = *(r2);
                                                         |     r3 = *((r2 + 4));
                                                         |     r5 = *((r2 + 8));
                                                         |     r7 = *((r2 + 12));
    0x0004ec92 movs r1, r0                               |     r1 = r0;
    0x0004ec94 ldm r2!, {r3, r4, r5, r6}                 |     r3 = *(r2!);
                                                         |     r4 = *((r2! + 4));
                                                         |     r5 = *((r2! + 8));
                                                         |     r6 = *((r2! + 12));
    0x0004ec96 movs r1, r0                               |     r1 = r0;
    0x0004ec98 ldr r3, [pc, 0xe8]                        |     
    0x0004ec9a ldr.w ip, [pc, 0xec]                      |     ip = *(0x4ed8a);
    0x0004ec9e push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0004eca2 sub sp, 0x18                              |     
    0x0004eca4 add r3, pc                                |     r3 = 0x9da2c;
    0x0004eca6 str r1, [sp, 0x14]                        |     var_14h = r1;
    0x0004eca8 mov r4, r0                                |     r4 = r0;
    0x0004ecaa mov r5, r2                                |     r5 = r2;
    0x0004ecac ldr.w r6, [r3, ip]                        |     r6 = *(0x9da2c);
    0x0004ecb0 ldr r3, [r6]                              |     r3 = *(0x9da2c);
                                                         |     if (r3 != 0) {
    0x0004ecb2 cbz r3, 0x4ecee                           |         
    0x0004ecb4 ldr r1, [r0, 0x5c]                        |         r1 = *((r0 + 0x5c));
    0x0004ecb6 ldr r0, [pc, 0xd4]                        |         
    0x0004ecb8 add r0, pc                                |         r0 = 0x9da4a;
    0x0004ecba blx 0x21ea4                               |         r0 = fcn_00021ea4 ();
    0x0004ecbe mov r7, r0                                |         r7 = r0;
    0x0004ecc0 mov r0, r4                                |         r0 = r4;
    0x0004ecc2 blx 0x22434                               |         fcn_00022434 ();
    0x0004ecc6 ldr r1, [pc, 0xc8]                        |         
    0x0004ecc8 mov r8, r0                                |         r8 = r0;
    0x0004ecca ldr r0, [pc, 0xc8]                        |         
    0x0004eccc ldr r2, [sp, 0x14]                        |         r2 = var_14h;
    0x0004ecce add r1, pc                                |         r1 = 0x9da64;
    0x0004ecd0 add r0, pc                                |         r0 = 0x9da6a;
    0x0004ecd2 blx 0x21984                               |         fcn_00021984 ();
    0x0004ecd6 movs r1, 0                                |         r1 = 0;
    0x0004ecd8 mov r3, r8                                |         r3 = r8;
    0x0004ecda str r1, [sp, 4]                           |         var_4h = r1;
    0x0004ecdc mov r2, r7                                |         r2 = r7;
    0x0004ecde ldr r1, [pc, 0xb8]                        |         
    0x0004ece0 str r0, [sp]                              |         *(sp) = r0;
    0x0004ece2 movs r0, 7                                |         r0 = 7;
    0x0004ece4 add r1, pc                                |         r1 = 0x9da82;
    0x0004ece6 blx 0x1f2b0                               |         fcn_0001f2b0 ();
    0x0004ecea blx 0x23348                               |         g_string_append ();
                                                         |     }
    0x0004ecee mov r2, r5                                |     r2 = r5;
    0x0004ecf0 add r1, sp, 0x14                          |     r1 += var_14h;
    0x0004ecf2 mov r0, r4                                |     r0 = r4;
    0x0004ecf4 blx 0x21900                               |     r0 = fcn_00021900 ();
                                                         |     if (r0 != 0) {
    0x0004ecf8 cbnz r0, 0x4ed5e                          |         goto label_12;
                                                         |     }
    0x0004ecfa ldr r3, [r5, 8]                           |     r3 = *((r5 + 8));
                                                         |     if (r3 != 0) {
    0x0004ecfc cbz r3, 0x4ed00                           |         
    0x0004ecfe str r0, [r3]                              |         *(r3) = r0;
                                                         |     }
    0x0004ed00 mov r1, r5                                |     r1 = r5;
    0x0004ed02 ldr r0, [sp, 0x14]                        |     r0 = var_14h;
    0x0004ed04 movs r2, 1                                |     r2 = 1;
    0x0004ed06 blx 0x1fbb0                               |     g_ascii_toupper ();
    0x0004ed0a ldr r1, [pc, 0x90]                        |     
    0x0004ed0c add r1, pc                                |     r1 = 0x9daae;
                                                         |     do {
                                                         | label_4:
    0x0004ed0e ldr r3, [r6]                              |         r3 = *(r6);
                                                         |         if (r3 != 0) {
    0x0004ed10 cbz r3, 0x4ed58                           |             
    0x0004ed12 ldr r0, [pc, 0x8c]                        |             
    0x0004ed14 add r0, pc                                |             r0 = 0x9daba;
    0x0004ed16 blx 0x21ea4                               |             r0 = fcn_00021ea4 ();
    0x0004ed1a mov r5, r0                                |             r5 = r0;
    0x0004ed1c ldr r0, [pc, 0x84]                        |             
    0x0004ed1e ldr r1, [r4, 0x5c]                        |             r1 = *((r4 + 0x5c));
    0x0004ed20 add r0, pc                                |             r0 = 0x9dac8;
    0x0004ed22 blx 0x21ea4                               |             r0 = fcn_00021ea4 ();
    0x0004ed26 mov r6, r0                                |             r6 = r0;
    0x0004ed28 mov r0, r4                                |             r0 = r4;
    0x0004ed2a blx 0x22434                               |             fcn_00022434 ();
    0x0004ed2e ldr r1, [pc, 0x78]                        |             
    0x0004ed30 mov r4, r0                                |             r4 = r0;
    0x0004ed32 ldr r0, [pc, 0x78]                        |             
    0x0004ed34 ldr r2, [sp, 0x14]                        |             r2 = var_14h;
    0x0004ed36 add r1, pc                                |             r1 = 0x9dae4;
    0x0004ed38 add r0, pc                                |             r0 = 0x9daea;
    0x0004ed3a blx 0x21984                               |             fcn_00021984 ();
    0x0004ed3e movs r1, 0                                |             r1 = 0;
    0x0004ed40 mov r3, r6                                |             r3 = r6;
    0x0004ed42 str r1, [sp, 8]                           |             var_8h = r1;
    0x0004ed44 mov r2, r5                                |             r2 = r5;
    0x0004ed46 ldr r1, [pc, 0x68]                        |             
    0x0004ed48 strd r4, r0, [sp]                         |             __asm ("strd r4, r0, [sp]");
    0x0004ed4c movs r0, 7                                |             r0 = 7;
    0x0004ed4e add r1, pc                                |             r1 = 0x9db04;
    0x0004ed50 blx 0x1f2b0                               |             fcn_0001f2b0 ();
    0x0004ed54 blx 0x23348                               |             g_string_append ();
                                                         |         }
    0x0004ed58 add sp, 0x18                              |         
    0x0004ed5a pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_12:
    0x0004ed5e ldr r0, [r4, 0x14]                        |         r0 = *((r4 + 0x14));
    0x0004ed60 ldr r3, [sp, 0x14]                        |         r3 = var_14h;
                                                         |         if (r0 == 0) {
    0x0004ed62 cbz r0, 0x4ed72                           |             goto label_13;
                                                         |         }
    0x0004ed64 mov r1, r3                                |         r1 = r3;
    0x0004ed66 mov r2, r5                                |         r2 = r5;
    0x0004ed68 bl 0x4e9b0                                |         fcn_0004e9b0 (r0, r1, r2);
    0x0004ed6c ldr r1, [pc, 0x44]                        |         
    0x0004ed6e add r1, pc                                |         r1 = 0x9db26;
    0x0004ed70 b 0x4ed0e                                 |         
                                                         |     } while (1);
                                                         | label_13:
    0x0004ed72 mov r1, r5                                |     r1 = r5;
    0x0004ed74 movs r2, 1                                |     r2 = 1;
    0x0004ed76 mov r0, r3                                |     r0 = r3;
    0x0004ed78 blx 0x1fbb0                               |     g_ascii_toupper ();
    0x0004ed7c ldr r1, [pc, 0x38]                        |     
    0x0004ed7e add r1, pc                                |     r1 = 0x9db3a;
    0x0004ed80 b 0x4ed0e                                 |     goto label_4;
                                                         | }

[*] Function strcat used 1 times libsyslog-ng-3.31.so.0.0.0