[*] Binary protection state of dbus-send

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


[*] Function printf tear down of dbus-send

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-send @ 0x22cc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000022cc ()                                      | void fcn_000022cc (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     void * s2;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     void * s;
                                                                 |     int16_t var_96h;
                                                                 |     int16_t var_97h;
                                                                 |     int16_t var_98h;
                                                                 |     int16_t var_9ch;
                                                                 |     int16_t var_114h;
                                                                 |     int16_t var_116h;
                                                                 |     int16_t var_118h;
                                                                 |     int16_t var_11ch;
                                                                 |     int16_t var_194h;
                                                                 |     int16_t var_1c4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x000022cc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000022d0 mov sl, r2                                        |     sl = r2;
    0x000022d2 ldr.w r2, [pc, 0x9a8]                             |     r2 = "int16";
    0x000022d4 cmp r1, 0xa8                                      |     
    0x000022d6 sub sp, 0x1cc                                     |     
    0x000022d8 mov fp, r0                                        |     
    0x000022da mov sb, r1                                        |     sb = r1;
    0x000022dc ldr.w r3, [pc, 0x9a0]                             |     
    0x000022e0 add r2, pc                                        |     r2 += pc;
    0x000022e2 ldr.w r4, [pc, 0x9a0]                             |     
    0x000022e6 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000022e8 add r4, pc                                        |     r4 = 0x4f72;
    0x000022ea ldr r3, [r3]                                      |     r3 = *(0x2c80);
    0x000022ec str r3, [sp, 0x1c4]                               |     var_1c4h = r3;
    0x000022ee mov.w r3, 0                                       |     r3 = 0;
                                                                 | label_0:
    0x000022f2 mov r0, fp                                        |     r0 = fp;
    0x000022f4 blx 0x1718                                        |     r0 = dbus_message_iter_get_arg_type ();
    0x000022f8 mov r7, r0                                        |     r7 = r0;
    0x000022fa cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000022fc beq 0x2370                                        |         goto label_15;
                                                                 |     }
    0x000022fe cmp.w sl, 0                                       |     
    0x00002302 add.w r5, sl, -1                                  |     r5 = sl + -1;
    0x00002306 it gt                                             |     
                                                                 |     if (sl <= 0) {
    0x00002308 movgt r6, r5                                      |         r6 = r5;
                                                                 |     }
                                                                 |     if (sl <= 0) {
    0x0000230a ble 0x231a                                        |         goto label_16;
                                                                 |     }
                                                                 |     do {
    0x0000230c mov r1, r4                                        |         r1 = r4;
    0x0000230e movs r0, 1                                        |         r0 = 1;
    0x00002310 subs r6, 1                                        |         r6--;
    0x00002312 blx 0x14f0                                        |         printf_chk ()
    0x00002316 adds r2, r6, 1                                    |         r2 = r6 + 1;
    0x00002318 bne 0x230c                                        |         
                                                                 |     } while (r2 != r6);
                                                                 | label_16:
    0x0000231a sub.w r3, r7, 0x61                                |     r3 = r7 - 0x61;
    0x0000231e cmp r3, 0x18                                      |     
                                                                 |     if (r3 <= 0x18) {
    0x00002320 bhi 0x2358                                        |         
                                                                 |         /* switch table (26 cases) at 0x2326 */
    0x00002322 tbh [pc, r3, lsl 1]                               |         __asm ("tbh [pc, r3, lsl 1]");
                                                                 |     }
    0x00002358 ldr.w r1, [pc, 0x92c]                             |     r1 = s;
    0x0000235c mov r2, r7                                        |     r2 = r7;
    0x0000235e movs r0, 1                                        |     r0 = 1;
    0x00002360 add r1, pc                                        |     r1 += pc;
    0x00002362 blx 0x14f0                                        |     printf_chk ()
                                                                 | label_1:
    0x00002366 mov r0, fp                                        |     r0 = fp;
    0x00002368 blx 0x15ec                                        |     r0 = dbus_message_iter_next ();
    0x0000236c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000236e bne 0x22f2                                        |         goto label_0;
                                                                 |     }
                                                                 | label_15:
    0x00002370 ldr.w r2, [pc, 0x918]                             |     
    0x00002374 ldr.w r3, [pc, 0x908]                             |     r3 = *(0x2c80);
    0x00002378 add r2, pc                                        |     r2 = 0x5008;
    0x0000237a ldr r3, [r2, r3]                                  |     r3 = *(0x5008);
    0x0000237c ldr r2, [r3]                                      |     r2 = *(0x5008);
    0x0000237e ldr r3, [sp, 0x1c4]                               |     r3 = var_1c4h;
    0x00002380 eors r2, r3                                       |     r2 ^= r3;
    0x00002382 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00002386 bne.w 0x2c50                                      |         goto label_17;
                                                                 |     }
    0x0000238a add sp, 0x1cc                                     |     
    0x0000238c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
    0x00002390 add r5, sp, 0x28                                  |     r5 += var_28h;
    0x00002392 mov r0, fp                                        |     r0 = fp;
    0x00002394 mov r1, r5                                        |     r1 = r5;
    0x00002396 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x0000239a ldr.w r1, [pc, 0x8f4]                             |     
    0x0000239e movs r0, 1                                        |     r0 = 1;
    0x000023a0 ldrb.w r2, [sp, 0x28]                             |     r2 = var_28h;
    0x000023a4 add r1, pc                                        |     r1 = 0x503a;
    0x000023a6 blx 0x14f0                                        |     printf_chk ()
    0x000023aa b 0x2366                                          |     goto label_1;
    0x000023ac add r1, sp, 0x28                                  |     r1 += var_28h;
    0x000023ae mov r0, fp                                        |     r0 = fp;
    0x000023b0 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x000023b4 ldr.w r1, [pc, 0x8dc]                             |     r1 = *(0x00002c94);
    0x000023b8 movs r0, 1                                        |     r0 = 1;
    0x000023ba ldrd r2, r3, [sp, 0x28]                           |     __asm ("ldrd r2, r3, [var_28h]");
    0x000023be add r1, pc                                        |     r1 += pc;
    0x000023c0 blx 0x14f0                                        |     printf_chk ()
    0x000023c4 b 0x2366                                          |     goto label_1;
    0x000023c6 add r5, sp, 0x28                                  |     r5 += var_28h;
    0x000023c8 mov r0, fp                                        |     r0 = fp;
    0x000023ca mov r1, r5                                        |     r1 = r5;
    0x000023cc blx 0x14b4                                        |     dbus_message_iter_recurse ();
    0x000023d0 ldr.w r1, [pc, 0x8c4]                             |     r1 = *(0x00002c98);
    0x000023d4 movs r0, 1                                        |     r0 = 1;
    0x000023d6 add r1, pc                                        |     r1 += pc;
    0x000023d8 blx 0x14f0                                        |     printf_chk ()
    0x000023dc mov r0, r5                                        |     r0 = r5;
    0x000023de add.w r2, sl, 1                                   |     r2 = sl + 1;
    0x000023e2 mov r1, sb                                        |     r1 = sb;
    0x000023e4 bl 0x22cc                                         |     fcn_000022cc (r0, r1, r2);
    0x000023e8 b 0x2366                                          |     goto label_1;
    0x000023ea add r5, sp, 0x28                                  |     r5 += var_28h;
    0x000023ec mov r0, fp                                        |     r0 = fp;
    0x000023ee mov r1, r5                                        |     r1 = r5;
    0x000023f0 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x000023f4 ldr.w r1, [pc, 0x8a4]                             |     
    0x000023f8 movs r0, 1                                        |     r0 = 1;
    0x000023fa ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x000023fc add r1, pc                                        |     r1 = 0x509c;
    0x000023fe blx 0x14f0                                        |     printf_chk ()
    0x00002400 ldrd lr, r7, [r8], -0x2c0                         |     __asm ("ldrd lr, r7, [r8], -0x2c0");
    0x00002404 add r1, sp, 0x28                                  |     r1 += var_28h;
    0x00002406 mov r0, fp                                        |     r0 = fp;
    0x00002408 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x0000240c ldr.w r1, [pc, 0x890]                             |     r1 = *(0x00002ca0);
    0x00002410 movs r0, 1                                        |     r0 = 1;
    0x00002412 ldrd r2, r3, [sp, 0x28]                           |     __asm ("ldrd r2, r3, [var_28h]");
    0x00002414 movs r3, 0xa                                      |     r3 = 0xa;
    0x00002416 add r1, pc                                        |     r1 += pc;
    0x00002418 blx 0x14f0                                        |     printf_chk ()
    0x0000241c b 0x2366                                          |     goto label_1;
    0x0000241e add r5, sp, 0x28                                  |     r5 += var_28h;
    0x00002420 mov r0, fp                                        |     r0 = fp;
    0x00002422 mov r1, r5                                        |     r1 = r5;
    0x00002424 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x00002428 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0000242c beq.w 0x2816                                      |         goto label_18;
                                                                 |     }
    0x00002430 ldr.w r1, [pc, 0x870]                             |     r1 = s;
    0x00002434 movs r0, 1                                        |     r0 = 1;
    0x00002436 ldr r2, [r5]                                      |     r2 = *(r5);
    0x00002438 add r1, pc                                        |     r1 += pc;
    0x0000243a blx 0x14f0                                        |     printf_chk ()
    0x0000243e b 0x2366                                          |     goto label_1;
    0x00002440 add r6, sp, 0x28                                  |     r6 += var_28h;
    0x00002442 mov r0, fp                                        |     r0 = fp;
    0x00002444 mov r1, r6                                        |     r1 = r6;
    0x00002446 add.w r7, sl, 1                                   |     r7 = sl + 1;
    0x0000244a blx 0x14b4                                        |     dbus_message_iter_recurse ();
    0x0000244e ldr.w r0, [pc, 0x858]                             |     r0 = *(0x00002ca8);
    0x00002452 add r0, pc                                        |     r0 += pc;
    0x00002454 blx 0x1730                                        |     puts (r0);
                                                                 |     do {
    0x00002458 mov r0, r6                                        |         r0 = r6;
    0x0000245a blx 0x1718                                        |         r0 = dbus_message_iter_get_arg_type ();
                                                                 |         if (r0 == 0) {
    0x0000245e cbz r0, 0x248a                                    |             goto label_19;
                                                                 |         }
                                                                 | label_2:
    0x00002460 mov r2, r7                                        |         r2 = r7;
    0x00002462 mov r1, sb                                        |         r1 = sb;
    0x00002464 mov r0, r6                                        |         r0 = r6;
    0x00002466 bl 0x22cc                                         |         fcn_000022cc (r0, r1, r2);
    0x0000246a mov r0, r6                                        |         r0 = r6;
    0x0000246c blx 0x15ec                                        |         dbus_message_iter_next ();
    0x00002470 mov r0, r6                                        |         r0 = r6;
    0x00002472 blx 0x1718                                        |         r0 = dbus_message_iter_get_arg_type ();
    0x00002476 cmp r0, 0                                         |         
    0x00002478 beq 0x2458                                        |         
                                                                 |     } while (r0 == 0);
    0x0000247a movs r0, 0x2c                                     |     r0 = 0x2c;
    0x0000247c blx 0x1514                                        |     putchar (r0);
    0x00002480 mov r0, r6                                        |     r0 = r6;
    0x00002482 blx 0x1718                                        |     r0 = dbus_message_iter_get_arg_type ();
    0x00002486 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00002488 bne 0x2460                                        |         goto label_2;
                                                                 |     }
                                                                 | label_19:
    0x0000248a cmp.w sl, 0                                       |     
                                                                 |     if (sl <= 0) {
    0x0000248e ble 0x24a4                                        |         goto label_20;
                                                                 |     }
    0x00002490 ldr.w r6, [pc, 0x818]                             |     
    0x00002494 add r6, pc                                        |     r6 = 0x5144;
                                                                 |     do {
    0x00002496 mov r1, r6                                        |         r1 = r6;
    0x00002498 movs r0, 1                                        |         r0 = 1;
    0x0000249a subs r5, 1                                        |         r5--;
    0x0000249c blx 0x14f0                                        |         printf_chk ()
    0x000024a0 adds r7, r5, 1                                    |         r7 = r5 + 1;
    0x000024a2 bne 0x2496                                        |         
                                                                 |     } while (r7 != r5);
                                                                 | label_20:
    0x000024a4 ldr.w r0, [pc, 0x808]                             |     
    0x000024a8 add r0, pc                                        |     r0 = 0x515c;
    0x000024aa blx 0x1730                                        |     puts (r0);
    0x000024ae b 0x2366                                          |     goto label_1;
    0x000024b0 add r5, sp, 0x28                                  |     r5 += var_28h;
    0x000024b2 mov r0, fp                                        |     r0 = fp;
    0x000024b4 mov r1, r5                                        |     r1 = r5;
    0x000024b6 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x000024ba ldr.w r1, [pc, 0x7f8]                             |     
    0x000024be movs r0, 1                                        |     r0 = 1;
    0x000024c0 ldrh.w r2, [sp, 0x28]                             |     r2 = var_28h;
    0x000024c4 add r1, pc                                        |     r1 = 0x517e;
    0x000024c6 blx 0x14f0                                        |     printf_chk ()
    0x000024ca b 0x2366                                          |     goto label_1;
    0x000024cc add r5, sp, 0x28                                  |     r5 += var_28h;
    0x000024ce mov r0, fp                                        |     r0 = fp;
    0x000024d0 mov r1, r5                                        |     r1 = r5;
    0x000024d2 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x000024d6 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x000024da beq.w 0x2862                                      |         goto label_21;
                                                                 |     }
    0x000024de ldr.w r1, [pc, 0x7d8]                             |     r1 = *(0x00002cb8);
    0x000024e2 movs r0, 1                                        |     r0 = 1;
    0x000024e4 ldr r2, [r5]                                      |     r2 = *(r5);
    0x000024e6 add r1, pc                                        |     r1 += pc;
    0x000024e8 blx 0x14f0                                        |     printf_chk ()
    0x000024ec b 0x2366                                          |     goto label_1;
    0x000024ee add r5, sp, 0x28                                  |     r5 += var_28h;
    0x000024f0 mov r0, fp                                        |     r0 = fp;
    0x000024f2 mov r1, r5                                        |     r1 = r5;
    0x000024f4 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x000024f8 ldr.w r1, [pc, 0x7c0]                             |     r1 = *(0x00002cbc);
    0x000024fc movs r0, 1                                        |     r0 = 1;
    0x000024fe ldrsh.w r2, [sp, 0x28]                            |     r2 = var_28h;
    0x00002502 add r1, pc                                        |     r1 += pc;
    0x00002504 blx 0x14f0                                        |     printf_chk ()
    0x00002508 b 0x2366                                          |     goto label_1;
    0x0000250a add r5, sp, 0x28                                  |     r5 += var_28h;
    0x0000250c mov r0, fp                                        |     r0 = fp;
    0x0000250e mov r1, r5                                        |     r1 = r5;
    0x00002510 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x00002514 ldr.w r1, [pc, 0x7a8]                             |     
    0x00002518 movs r0, 1                                        |     r0 = 1;
    0x0000251a ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x0000251c add r1, pc                                        |     r1 = 0x51e0;
    0x0000251e blx 0x14f0                                        |     printf_chk ()
    0x00002522 b 0x2366                                          |     goto label_1;
    0x00002524 add r3, sp, 0x1c                                  |     r3 += var_1ch;
    0x00002526 mov r0, fp                                        |     r0 = fp;
    0x00002528 mov r5, r3                                        |     r5 = r3;
    0x0000252a mov r1, r3                                        |     r1 = r3;
    0x0000252c str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x0000252e add r6, sp, 0x28                                  |     r6 += var_28h;
    0x00002530 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x00002534 ldr r5, [r5]                                      |     r5 = *(r5);
    0x00002536 movs r2, 0x68                                     |     r2 = 0x68;
    0x00002538 movs r1, 0                                        |     r1 = 0;
    0x0000253a mov r0, r6                                        |     r0 = r6;
    0x0000253c add r7, sp, 0x20                                  |     r7 += s2;
    0x0000253e str r5, [sp, 0x14]                                |     var_14h = r5;
    0x00002540 blx 0x1538                                        |     memset (r0, r1, r2);
    0x00002544 ldr.w r0, [pc, 0x77c]                             |     
    0x00002548 movs r3, 0x80                                     |     r3 = 0x80;
    0x0000254a add r2, sp, 0x24                                  |     r2 += var_24h;
    0x0000254c str r3, [r7]                                      |     *(r7) = r3;
    0x0000254e str r2, [sp, 8]                                   |     var_8h = r2;
    0x00002550 add r0, pc                                        |     r0 = 0x5218;
    0x00002552 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00002554 blx 0x1730                                        |     puts (r0);
    0x00002558 adds r0, r5, 1                                    |     r0 = r5 + 1;
                                                                 |     if (r0 == r5) {
    0x0000255a beq 0x262e                                        |         goto label_6;
                                                                 |     }
    0x0000255c mov r1, r6                                        |     r1 = r6;
    0x0000255e mov r0, r5                                        |     r0 = r5;
    0x00002560 blx 0x164c                                        |     fstat64 ();
    0x00002564 adds r0, 1                                        |     r0++;
                                                                 |     if (r0 == 1) {
    0x00002566 beq 0x262e                                        |         goto label_6;
                                                                 |     }
    0x00002568 add.w r3, sl, 2                                   |     r3 = sl + 2;
    0x0000256c add.w r2, sl, 1                                   |     r2 = sl + 1;
    0x00002570 cmp r3, 0                                         |     
    0x00002572 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00002574 str r2, [sp, 4]                                   |     var_4h = r2;
                                                                 |     if (r3 <= 0) {
    0x00002576 ble.w 0x2bbe                                      |         goto label_22;
                                                                 |     }
    0x0000257a ldr.w r5, [pc, 0x74c]                             |     
    0x0000257e mov r8, r2                                        |     r8 = r2;
    0x00002580 add r5, pc                                        |     r5 = 0x524e;
                                                                 |     do {
    0x00002582 add.w r8, r8, -1                                  |         r8 += -1;
    0x00002586 mov r1, r5                                        |         r1 = r5;
    0x00002588 movs r0, 1                                        |         r0 = 1;
    0x0000258a blx 0x14f0                                        |         printf_chk ()
    0x0000258e cmp.w r8, -1                                      |         
    0x00002592 bne 0x2582                                        |         
                                                                 |     } while (r8 != -1);
    0x00002594 ldr.w r1, [pc, 0x734]                             |     
    0x00002598 movs r0, 1                                        |     r0 = 1;
    0x0000259a ldr r2, [r6, 0x60]                                |     r2 = *((r6 + 0x60));
    0x0000259c ldr.w r8, [sp, 4]                                 |     r8 = var_4h;
    0x000025a0 add r1, pc                                        |     r1 = 0x5270;
    0x000025a2 blx 0x14f0                                        |     printf_chk ()
                                                                 |     do {
    0x000025a6 add.w r8, r8, -1                                  |         r8 += -1;
    0x000025aa mov r1, r5                                        |         r1 = r5;
    0x000025ac movs r0, 1                                        |         r0 = 1;
    0x000025ae blx 0x14f0                                        |         printf_chk ()
    0x000025b2 cmp.w r8, -1                                      |         
    0x000025b6 bne 0x25a6                                        |         
                                                                 |     } while (r8 != -1);
                                                                 | label_14:
    0x000025b8 ldr.w r1, [pc, 0x714]                             |     r1 = *(0x00002cd0);
    0x000025bc movs r0, 1                                        |     r0 = 1;
    0x000025be add r1, pc                                        |     r1 += pc;
    0x000025c0 blx 0x14f0                                        |     printf_chk ()
    0x000025c4 ldr r3, [r6, 0x10]                                |     r3 = *((r6 + 0x10));
    0x000025c6 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x000025ca cmp.w r3, 0x8000                                  |     
                                                                 |     if (r3 == 0x8000) {
    0x000025ce beq.w 0x2bae                                      |         goto label_23;
                                                                 |     }
                                                                 | label_13:
    0x000025d2 cmp.w r3, 0x4000                                  |     
                                                                 |     if (r3 == 0x4000) {
    0x000025d6 beq.w 0x2b9e                                      |         goto label_24;
                                                                 |     }
                                                                 | label_12:
    0x000025da cmp.w r3, 0x2000                                  |     
                                                                 |     if (r3 == 0x2000) {
    0x000025de beq.w 0x2b8e                                      |         goto label_25;
                                                                 |     }
                                                                 | label_11:
    0x000025e2 cmp.w r3, 0x6000                                  |     
                                                                 |     if (r3 == loc.__data_start) {
    0x000025e6 beq.w 0x2b7e                                      |         goto label_26;
                                                                 |     }
                                                                 | label_10:
    0x000025ea cmp.w r3, 0x1000                                  |     
                                                                 |     if (r3 == 0x1000) {
    0x000025ee beq.w 0x2b6e                                      |         goto label_27;
                                                                 |     }
                                                                 | label_9:
    0x000025f2 cmp.w r3, 0xa000                                  |     
                                                                 |     if (r3 == 0xa000) {
    0x000025f6 beq.w 0x2b5e                                      |         goto label_28;
                                                                 |     }
                                                                 | label_8:
    0x000025fa cmp.w r3, 0xc000                                  |     
                                                                 |     if (r3 == 0xc000) {
    0x000025fe beq.w 0x2b54                                      |         goto label_29;
                                                                 |     }
                                                                 | label_7:
    0x00002602 add r6, sp, 0x94                                  |     r6 += s;
    0x00002604 movs r2, 0x80                                     |     r2 = 0x80;
    0x00002606 movs r1, 0                                        |     r1 = 0;
    0x00002608 mov r0, r6                                        |     r0 = r6;
    0x0000260a add r5, sp, 0x114                                 |     r5 += var_114h;
    0x0000260c blx 0x1538                                        |     memset (r0, r1, r2);
    0x00002610 movs r2, 0x80                                     |     r2 = 0x80;
    0x00002612 movs r1, 0                                        |     r1 = 0;
    0x00002614 mov r0, r5                                        |     r0 = r5;
    0x00002616 blx 0x1538                                        |     memset (r0, r1, r2);
    0x0000261a ldr.w r8, [sp, 0x14]                              |     r8 = var_14h;
    0x0000261e mov r2, r7                                        |     r2 = r7;
    0x00002620 mov r1, r6                                        |     r1 = r6;
    0x00002622 mov r0, r8                                        |     r0 = r8;
    0x00002624 blx 0x1484                                        |     r0 = getsockname (r0, r1, r2);
    0x00002628 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000262a beq.w 0x2956                                      |         goto label_30;
                                                                 |     }
                                                                 | label_6:
    0x0000262e ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00002630 ldr r0, [r3]                                      |     r0 = *(r3);
    0x00002632 blx 0x16a0                                        |     close (r0);
    0x00002636 b 0x2366                                          |     goto label_1;
    0x00002638 add r5, sp, 0x28                                  |     r5 += var_28h;
    0x0000263a mov r0, fp                                        |     r0 = fp;
    0x0000263c mov r1, r5                                        |     r1 = r5;
    0x0000263e blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x00002642 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00002646 beq.w 0x283c                                      |         goto label_31;
                                                                 |     }
    0x0000264a ldr.w r1, [pc, 0x688]                             |     r1 = *(0x00002cd4);
    0x0000264e movs r0, 1                                        |     r0 = 1;
    0x00002650 ldr r2, [r5]                                      |     r2 = *(r5);
    0x00002652 add r1, pc                                        |     r1 += pc;
    0x00002654 blx 0x14f0                                        |     printf_chk ()
    0x00002658 b 0x2366                                          |     goto label_1;
    0x0000265a add r6, sp, 0x28                                  |     r6 += var_28h;
    0x0000265c mov r0, fp                                        |     r0 = fp;
    0x0000265e mov r1, r6                                        |     r1 = r6;
    0x00002660 add.w r7, sl, 1                                   |     r7 = sl + 1;
    0x00002664 blx 0x14b4                                        |     dbus_message_iter_recurse ();
    0x00002668 ldr.w r0, [pc, 0x66c]                             |     
    0x0000266c add r0, pc                                        |     r0 = 0x5348;
    0x0000266e blx 0x1730                                        |     puts (r0);
    0x00002672 mov r2, r7                                        |     r2 = r7;
    0x00002674 mov r1, sb                                        |     r1 = sb;
    0x00002676 mov r0, r6                                        |     r0 = r6;
    0x00002678 bl 0x22cc                                         |     fcn_000022cc (r0, r1, r2);
    0x0000267c mov r0, r6                                        |     r0 = r6;
    0x0000267e blx 0x15ec                                        |     dbus_message_iter_next ();
    0x00002682 mov r2, r7                                        |     r2 = r7;
    0x00002684 mov r1, sb                                        |     r1 = sb;
    0x00002686 mov r0, r6                                        |     r0 = r6;
    0x00002688 bl 0x22cc                                         |     fcn_000022cc (r0, r1, r2);
    0x0000268c cmp.w sl, 0                                       |     
                                                                 |     if (sl <= 0) {
    0x00002690 ble 0x26a6                                        |         goto label_32;
                                                                 |     }
    0x00002692 ldr.w r6, [pc, 0x648]                             |     r6 = *(0x00002cdc);
    0x00002696 add r6, pc                                        |     r6 += pc;
                                                                 |     do {
    0x00002698 mov r1, r6                                        |         r1 = r6;
    0x0000269a movs r0, 1                                        |         r0 = 1;
    0x0000269c subs r5, 1                                        |         r5--;
    0x0000269e blx 0x14f0                                        |         printf_chk ()
    0x000026a2 adds r3, r5, 1                                    |         r3 = r5 + 1;
    0x000026a4 bne 0x2698                                        |         
                                                                 |     } while (r3 != r5);
                                                                 | label_32:
    0x000026a6 ldr.w r0, [pc, 0x638]                             |     r0 = *(0x00002ce0);
    0x000026aa add r0, pc                                        |     r0 += pc;
    0x000026ac blx 0x1730                                        |     puts (r0);
    0x000026b0 b 0x2366                                          |     goto label_1;
    0x000026b2 add r5, sp, 0x28                                  |     r5 += var_28h;
    0x000026b4 mov r0, fp                                        |     r0 = fp;
    0x000026b6 mov r1, r5                                        |     r1 = r5;
    0x000026b8 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x000026bc ldr.w r1, [pc, 0x624]                             |     r1 = *(0x00002ce4);
    0x000026c0 movs r0, 1                                        |     r0 = 1;
    0x000026c2 ldrd r2, r3, [sp, 0x28]                           |     __asm ("ldrd r2, r3, [var_28h]");
    0x000026c6 add r1, pc                                        |     r1 += pc;
    0x000026c8 blx 0x14f0                                        |     printf_chk ()
    0x000026cc b 0x2366                                          |     goto label_1;
    0x000026ce add r5, sp, 0x28                                  |     r5 += var_28h;
    0x000026d0 mov r0, fp                                        |     r0 = fp;
    0x000026d2 mov r1, r5                                        |     r1 = r5;
    0x000026d4 blx 0x15c8                                        |     dbus_message_iter_get_basic ();
    0x000026d8 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000026da cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000026dc bne.w 0x280e                                      |         goto label_33;
                                                                 |     }
    0x000026e0 ldr.w r2, [pc, 0x604]                             |     
    0x000026e4 add r2, pc                                        |     r2 = 0x53d0;
                                                                 | label_5:
    0x000026e6 ldr.w r1, [pc, 0x604]                             |     
    0x000026ea movs r0, 1                                        |     r0 = 1;
    0x000026ec add r1, pc                                        |     r1 = 0x53de;
    0x000026ee blx 0x14f0                                        |     printf_chk ()
    0x000026f2 b 0x2366                                          |     goto label_1;
    0x000026f4 add r6, sp, 0x28                                  |     r6 += var_28h;
    0x000026f6 mov r0, fp                                        |     r0 = fp;
    0x000026f8 mov r1, r6                                        |     r1 = r6;
    0x000026fa blx 0x14b4                                        |     dbus_message_iter_recurse ();
    0x000026fe mov r0, r6                                        |     r0 = r6;
    0x00002700 blx 0x1718                                        |     r0 = dbus_message_iter_get_arg_type ();
    0x00002704 cmp r0, 0x79                                      |     
    0x00002706 mov r7, r0                                        |     r7 = r0;
                                                                 |     if (r0 != 0x79) {
    0x00002708 bne.w 0x2888                                      |         goto label_34;
                                                                 |     }
    0x0000270c add r3, sp, 0x24                                  |     r3 += var_24h;
    0x0000270e add r7, sp, 0x20                                  |     r7 += s2;
    0x00002710 mov r0, r6                                        |     r0 = r6;
    0x00002712 mov r2, r3                                        |     r2 = r3;
    0x00002714 mov r6, r3                                        |     r6 = r3;
    0x00002716 mov r1, r7                                        |     r1 = r7;
    0x00002718 str r3, [sp, 8]                                   |     var_8h = r3;
    0x0000271a blx 0x14a8                                        |     dbus_message_iter_get_fixed_array ();
    0x0000271e ldr.w r8, [r6]                                    |     r8 = *(r6);
    0x00002722 cmp.w r8, 0                                       |     
                                                                 |     if (r8 <= 0) {
    0x00002726 ble.w 0x2922                                      |         goto label_35;
                                                                 |     }
    0x0000272a ldr r2, [r7]                                      |     r2 = *(r7);
    0x0000272c movs r3, 0                                        |     r3 = 0;
    0x0000272e add.w lr, r8, -1                                  |     lr = r8 + -1;
    0x00002732 subs r6, r2, 1                                    |     r6 = r2 - 1;
    0x00002734 mov r0, r6                                        |     r0 = r6;
    0x00002736 b 0x2740                                          |     
                                                                 |     while (ip < 0x5e) {
                                                                 | label_3:
    0x00002738 adds r3, 1                                        |         r3++;
    0x0000273a cmp r3, r8                                        |         
                                                                 |         if (r3 == r8) {
    0x0000273c beq.w 0x2916                                      |             goto label_36;
                                                                 |         }
    0x00002740 ldrb r1, [r0, 1]!                                 |         r1 = *((r0 += 1));
    0x00002744 sub.w ip, r1, 0x20                                |         
    0x00002748 cmp.w ip, 0x5e                                    |         
    0x0000274c bls 0x2738                                        |         
                                                                 |     }
    0x0000274e cmp lr, r3                                        |     
    0x00002750 it le                                             |     
                                                                 |     if (lr > r3) {
    0x00002752 cmple r1, 0                                       |         __asm ("cmple r1, 0");
                                                                 |         goto label_37;
                                                                 |     }
                                                                 |     if (lr == r3) {
                                                                 | label_37:
    0x00002754 beq 0x2738                                        |         goto label_3;
                                                                 |     }
    0x00002756 ldr.w r0, [pc, 0x598]                             |     
    0x0000275a str r2, [sp, 4]                                   |     var_4h = r2;
    0x0000275c add r0, pc                                        |     r0 = 0x5452;
    0x0000275e blx 0x1730                                        |     puts (r0);
    0x00002762 add.w r3, sl, 1                                   |     r3 = sl + 1;
    0x00002766 ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x00002768 cmp r3, 0                                         |     
    0x0000276a str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 |     if (r3 <= 0) {
    0x0000276c ble 0x2792                                        |         goto label_38;
                                                                 |     }
    0x0000276e ldr.w r3, [pc, 0x584]                             |     r3 = *(0x00002cf4);
    0x00002772 mov r7, r4                                        |     r7 = r4;
    0x00002774 strd r2, r5, [sp, 4]                              |     __asm ("strd r2, r5, [var_8h]");
    0x00002778 mov r5, sl                                        |     r5 = sl;
    0x0000277a add r3, pc                                        |     r3 += pc;
    0x0000277c mov r4, r3                                        |     r4 = r3;
                                                                 |     do {
    0x0000277e subs r5, 1                                        |         r5--;
    0x00002780 mov r1, r4                                        |         r1 = r4;
    0x00002782 movs r0, 1                                        |         r0 = 1;
    0x00002784 blx 0x14f0                                        |         printf_chk ()
    0x00002788 adds r3, r5, 1                                    |         r3 = r5 + 1;
    0x0000278a bne 0x277e                                        |         
                                                                 |     } while (r3 != r5);
    0x0000278c ldrd r2, r5, [sp, 4]                              |     __asm ("ldrd r2, r5, [var_8h]");
    0x00002790 mov r4, r7                                        |     r4 = r7;
                                                                 | label_38:
    0x00002792 add.w r3, r2, r8                                  |     r3 = r2 + r8;
    0x00002796 rsb.w r8, r2, 1                                   |     r8 = 1 - r2;
    0x0000279a subs r3, 1                                        |     r3--;
    0x0000279c movw r2, 0x5556                                   |     
    0x000027a0 str r3, [sp, 4]                                   |     var_4h = r3;
                                                                 |     /* if there is a right shift of 0, then it's a division by 1/3 */
    0x000027a2 movt r2, 0x5555                                   |     r2 = 0x55555556;
    0x000027a6 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000027a8 ldr.w r7, [pc, 0x54c]                             |     r7 = *(0x00002cf8);
    0x000027ac str r4, [sp, 0x14]                                |     var_14h = r4;
    0x000027ae sub.w r3, r3, r3, lsl 2                           |     r3 -= (r3 << 2);
    0x000027b2 add r7, pc                                        |     r7 += pc;
    0x000027b4 adds r3, 0x50                                     |     r3 += 0x50;
    0x000027b6 smull r1, r2, r2, r3                              |     r1:r2 = r2 * r3;
    0x000027ba sub.w r3, r2, r3, asr 31                          |     r3 = r2 - (r3 >> 31);
    0x000027be cmp r3, 8                                         |     
    0x000027c0 it lo                                             |     
                                                                 |     if (r3 >= 8) {
    0x000027c2 movlo r3, 8                                       |         r3 = 8;
                                                                 |     }
    0x000027c4 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x000027c6 ldr.w r3, [pc, 0x534]                             |     r3 = *(0x00002cfc);
    0x000027ca add r3, pc                                        |     r3 += pc;
    0x000027cc str r3, [sp, 8]                                   |     var_8h = r3;
                                                                 |     do {
                                                                 | label_4:
    0x000027ce ldrb r2, [r6, 1]!                                 |         r2 = *((r6 += 1));
    0x000027d2 movs r0, 1                                        |         r0 = 1;
    0x000027d4 ldr r1, [sp, 8]                                   |         r1 = var_8h;
    0x000027d6 blx 0x14f0                                        |         printf_chk ()
    0x000027da ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x000027dc add.w r0, r8, r6                                  |         r0 = r8 + r6;
    0x000027e0 cmp r6, r3                                        |         
                                                                 |         if (r6 == r3) {
    0x000027e2 beq.w 0x28e8                                      |             goto label_39;
                                                                 |         }
    0x000027e6 ldr r1, [sp, 0xc]                                 |         r1 = var_ch;
    0x000027e8 bl 0x3674                                         |         fcn_00003674 (r0);
    0x000027ec cmp r1, 0                                         |         
                                                                 |         if (r1 != 0) {
    0x000027ee bne 0x28e0                                        |             goto label_40;
                                                                 |         }
    0x000027f0 movs r0, 0xa                                      |         r0 = 0xa;
    0x000027f2 blx 0x1514                                        |         putchar (r0);
    0x000027f6 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x000027f8 cmp r3, 0                                         |         
    0x000027fa ble 0x27ce                                        |         
                                                                 |     } while (r3 <= 0);
    0x000027fc mov r4, sl                                        |     r4 = sl;
                                                                 |     do {
    0x000027fe subs r4, 1                                        |         r4--;
    0x00002800 mov r1, r7                                        |         r1 = r7;
    0x00002802 movs r0, 1                                        |         r0 = 1;
    0x00002804 blx 0x14f0                                        |         printf_chk ()
    0x00002808 adds r0, r4, 1                                    |         r0 = r4 + 1;
    0x0000280a bne 0x27fe                                        |         
                                                                 |     } while (r0 != r4);
    0x0000280c b 0x27ce                                          |     goto label_4;
                                                                 | label_33:
    0x0000280e ldr.w r2, [pc, 0x4f0]                             |     r2 = *(0x00002d00);
    0x00002812 add r2, pc                                        |     r2 += pc;
    0x00002814 b 0x26e6                                          |     goto label_5;
                                                                 | label_18:
    0x00002816 ldr.w r1, [pc, 0x4ec]                             |     
    0x0000281a movs r0, 1                                        |     r0 = 1;
    0x0000281c add r1, pc                                        |     
    0x0000281e blx 0x14f0                                        |     printf_chk ()
    0x00002822 ldr.w r1, [pc, 0x4e4]                             |     r1 = *(0x00002d08);
    0x00002826 movs r0, 1                                        |     r0 = 1;
    0x00002828 ldr r2, [r5]                                      |     r2 = *(r5);
    0x0000282a add r1, pc                                        |     r1 = 0x7d54;
    0x0000282c blx 0x14f0                                        |     printf_chk ()
    0x00002830 ldr.w r0, [pc, 0x4d8]                             |     
    0x00002834 add r0, pc                                        |     r0 = 0x5544;
    0x00002836 blx 0x1730                                        |     puts (r0);
    0x0000283a b 0x2366                                          |     goto label_1;
                                                                 | label_31:
    0x0000283c ldr.w r1, [pc, 0x4d0]                             |     r1 = *(0x00002d10);
    0x00002840 movs r0, 1                                        |     r0 = 1;
    0x00002842 add r1, pc                                        |     r1 += pc;
    0x00002844 blx 0x14f0                                        |     printf_chk ()
    0x00002848 ldr.w r1, [pc, 0x4c8]                             |     
    0x0000284c movs r0, 1                                        |     r0 = 1;
    0x0000284e ldr r2, [r5]                                      |     r2 = *(r5);
    0x00002850 add r1, pc                                        |     r1 = 0x5568;
    0x00002852 blx 0x14f0                                        |     printf_chk ()
    0x00002856 ldr.w r0, [pc, 0x4c0]                             |     r0 = *(0x00002d18);
    0x0000285a add r0, pc                                        |     r0 += pc;
    0x0000285c blx 0x1730                                        |     puts (r0);
    0x00002860 b 0x2366                                          |     goto label_1;
                                                                 | label_21:
    0x00002862 ldr.w r1, [pc, 0x4b8]                             |     
    0x00002866 movs r0, 1                                        |     r0 = 1;
    0x00002868 add r1, pc                                        |     
    0x0000286a blx 0x14f0                                        |     printf_chk ()
    0x0000286e ldr.w r1, [pc, 0x4b0]                             |     r1 = *(0x00002d20);
    0x00002872 movs r0, 1                                        |     r0 = 1;
    0x00002874 ldr r2, [r5]                                      |     r2 = *(r5);
    0x00002876 add r1, pc                                        |     r1 = 0x7e04;
    0x00002878 blx 0x14f0                                        |     printf_chk ()
    0x0000287c ldr.w r0, [pc, 0x4a4]                             |     
    0x00002880 add r0, pc                                        |     r0 = 0x55a8;
    0x00002882 blx 0x1730                                        |     puts (r0);
    0x00002886 b 0x2366                                          |     goto label_1;
                                                                 | label_34:
    0x00002888 ldr.w r0, [pc, 0x49c]                             |     
    0x0000288c add r0, pc                                        |     r0 = 0x55b8;
    0x0000288e blx 0x1730                                        |     puts (r0);
                                                                 |     if (r7 == 0) {
    0x00002892 cbz r7, 0x28ba                                    |         goto label_41;
                                                                 |     }
    0x00002894 add.w r7, sl, 1                                   |     r7 = sl + 1;
    0x00002898 b 0x28a0                                          |     
                                                                 |     while (r0 != 0) {
    0x0000289a movs r0, 0x2c                                     |         r0 = 0x2c;
    0x0000289c blx 0x1514                                        |         putchar (r0);
    0x000028a0 mov r2, r7                                        |         r2 = r7;
    0x000028a2 mov r1, sb                                        |         r1 = sb;
    0x000028a4 mov r0, r6                                        |         r0 = r6;
    0x000028a6 bl 0x22cc                                         |         fcn_000022cc (r0, r1, r2);
    0x000028aa mov r0, r6                                        |         r0 = r6;
    0x000028ac blx 0x15ec                                        |         dbus_message_iter_next ();
    0x000028b0 mov r0, r6                                        |         r0 = r6;
    0x000028b2 blx 0x1718                                        |         r0 = dbus_message_iter_get_arg_type ();
    0x000028b6 cmp r0, 0                                         |         
    0x000028b8 bne 0x289a                                        |         
                                                                 |     }
                                                                 | label_41:
    0x000028ba cmp.w sl, 0                                       |     
                                                                 |     if (sl <= 0) {
    0x000028be ble 0x28d4                                        |         goto label_42;
                                                                 |     }
    0x000028c0 ldr.w r6, [pc, 0x468]                             |     
    0x000028c4 add r6, pc                                        |     r6 = 0x55f4;
                                                                 |     do {
    0x000028c6 subs r5, 1                                        |         r5--;
    0x000028c8 mov r1, r6                                        |         r1 = r6;
    0x000028ca movs r0, 1                                        |         r0 = 1;
    0x000028cc blx 0x14f0                                        |         printf_chk ()
    0x000028d0 adds r2, r5, 1                                    |         r2 = r5 + 1;
    0x000028d2 bne 0x28c6                                        |         
                                                                 |     } while (r2 != r5);
                                                                 | label_42:
    0x000028d4 ldr.w r0, [pc, 0x458]                             |     
    0x000028d8 add r0, pc                                        |     r0 = 0x560c;
    0x000028da blx 0x1730                                        |     puts (r0);
    0x000028de b 0x2366                                          |     goto label_1;
                                                                 | label_40:
    0x000028e0 movs r0, 0x20                                     |     r0 = 0x20;
    0x000028e2 blx 0x1514                                        |     putchar (r0);
    0x000028e6 b 0x27ce                                          |     goto label_4;
                                                                 | label_39:
    0x000028e8 movs r0, 0xa                                      |     r0 = 0xa;
    0x000028ea ldr r4, [sp, 0x14]                                |     r4 = var_14h;
    0x000028ec blx 0x1514                                        |     putchar (r0);
    0x000028f0 cmp.w sl, 0                                       |     
                                                                 |     if (sl <= 0) {
    0x000028f4 ble 0x290a                                        |         goto label_43;
                                                                 |     }
    0x000028f6 ldr.w r6, [pc, 0x43c]                             |     r6 = *(0x00002d34);
    0x000028fa add r6, pc                                        |     r6 += pc;
                                                                 |     do {
    0x000028fc mov r1, r6                                        |         r1 = r6;
    0x000028fe subs r5, 1                                        |         r5--;
    0x00002900 movs r0, 1                                        |         r0 = 1;
    0x00002902 blx 0x14f0                                        |         printf_chk ()
    0x00002906 adds r1, r5, 1                                    |         r1 = r5 + 1;
    0x00002908 bne 0x28fc                                        |         
                                                                 |     } while (r1 != r5);
                                                                 | label_43:
    0x0000290a ldr.w r0, [pc, 0x42c]                             |     r0 = *(0x00002d38);
    0x0000290e add r0, pc                                        |     r0 += pc;
    0x00002910 blx 0x1730                                        |     puts (r0);
    0x00002914 b 0x2366                                          |     goto label_1;
                                                                 | label_36:
    0x00002916 add r3, r2                                        |     r3 += r2;
    0x00002918 ldrb r3, [r3, -0x1]                               |     r3 = *((r3 - 0x1));
    0x0000291c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000291e beq.w 0x2b48                                      |         goto label_44;
                                                                 |     }
                                                                 | label_35:
    0x00002922 add.w r0, r8, 1                                   |     r0 = r8 + 1;
    0x00002926 blx 0x1634                                        |     r0 = dbus_malloc ();
    0x0000292a mov r5, r0                                        |     r5 = r0;
    0x0000292c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000292e beq.w 0x2c48                                      |         goto label_45;
                                                                 |     }
    0x00002932 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00002934 ldr r1, [r7]                                      |     r1 = *(r7);
    0x00002936 ldr r6, [r3]                                      |     r6 = *(r3);
    0x00002938 mov r2, r6                                        |     r2 = r6;
    0x0000293a blx 0x1628                                        |     memcpy (r0, r1, r2);
    0x0000293e ldr r1, [pc, 0x3fc]                               |     
    0x00002940 movs r3, 0                                        |     r3 = 0;
    0x00002942 mov r2, r5                                        |     r2 = r5;
    0x00002944 strb r3, [r5, r6]                                 |     *((r5 + r6)) = r3;
    0x00002946 movs r0, 1                                        |     r0 = 1;
    0x00002948 add r1, pc                                        |     r1 = 0x568a;
    0x0000294a blx 0x14f0                                        |     printf_chk ()
    0x0000294e mov r0, r5                                        |     r0 = r5;
    0x00002950 blx 0x1490                                        |     dbus_free ();
    0x00002954 b 0x2366                                          |     goto label_1;
                                                                 | label_30:
    0x00002956 mov r0, r8                                        |     r0 = r8;
    0x00002958 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x0000295a mov r1, r5                                        |     r1 = r5;
    0x0000295c blx 0x17c0                                        |     getpeername ();
    0x00002960 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00002962 mov r8, r0                                        |     r8 = r0;
    0x00002964 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00002966 ble 0x2982                                        |         goto label_46;
                                                                 |     }
    0x00002968 ldr r3, [pc, 0x3d4]                               |     
    0x0000296a ldr r5, [sp, 4]                                   |     r5 = var_4h;
    0x0000296c str r4, [sp, 8]                                   |     var_8h = r4;
    0x0000296e add r3, pc                                        |     r3 = 0x56b2;
    0x00002970 mov r4, r3                                        |     r4 = r3;
                                                                 |     do {
    0x00002972 mov r1, r4                                        |         r1 = r4;
    0x00002974 subs r5, 1                                        |         r5--;
    0x00002976 movs r0, 1                                        |         r0 = 1;
    0x00002978 blx 0x14f0                                        |         printf_chk ()
    0x0000297c adds r1, r5, 1                                    |         r1 = r5 + 1;
    0x0000297e bne 0x2972                                        |         
                                                                 |     } while (r1 != r5);
    0x00002980 ldr r4, [sp, 8]                                   |     r4 = var_8h;
                                                                 | label_46:
    0x00002982 ldr r1, [pc, 0x3c0]                               |     
    0x00002984 movs r0, 1                                        |     r0 = 1;
    0x00002986 add r1, pc                                        |     r1 = 0x56d0;
    0x00002988 blx 0x14f0                                        |     printf_chk ()
    0x0000298c ldrh r2, [r6]                                     |     r2 = *(r6);
    0x0000298e subs r3, r2, 1                                    |     r3 = r2 - 1;
    0x00002990 cmp r3, 0x1e                                      |     
                                                                 |     if (r3 <= 0x1e) {
    0x00002992 bhi 0x29b8                                        |         
                                                                 |         /* switch table (31 cases) at 0x2998 */
    0x00002994 tbb [pc, r3]                                      |         __asm ("tbb [0x0000299c]");
                                                                 |     }
    0x000029b8 ldr r1, [pc, 0x38c]                               |     
    0x000029ba movs r0, 1                                        |     r0 = 1;
    0x000029bc add r1, pc                                        |     r1 = 0x5708;
    0x000029be blx 0x14f0                                        |     printf_chk ()
    0x000029c2 b 0x262e                                          |     goto label_6;
    0x000029c4 ldr r0, [pc, 0x384]                               |     
    0x000029c6 add r0, pc                                        |     r0 = 0x5716;
    0x000029c8 blx 0x1730                                        |     puts (r0);
    0x000029cc b 0x262e                                          |     goto label_6;
    0x000029ce ldr r0, [pc, 0x380]                               |     
    0x000029d0 add r5, sp, 0x194                                 |     r5 += var_194h;
    0x000029d2 add r0, pc                                        |     r0 = 0x5728;
    0x000029d4 blx 0x1730                                        |     puts (r0);
    0x000029d8 movs r3, 0x2e                                     |     r3 = 0x2e;
    0x000029da mov r2, r5                                        |     r2 = r5;
    0x000029dc add r1, sp, 0x9c                                  |     r1 += var_9ch;
    0x000029de movs r0, 0xa                                      |     r0 = 0xa;
    0x000029e0 blx 0x146c                                        |     r0 = inet_ntop ();
                                                                 |     if (r0 == 0) {
    0x000029e4 cbz r0, 0x2a18                                    |         goto label_47;
                                                                 |     }
    0x000029e6 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000029e8 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x000029ea ble 0x2a06                                        |         goto label_48;
                                                                 |     }
    0x000029ec ldr r1, [pc, 0x364]                               |     
    0x000029ee ldr r7, [sp, 4]                                   |     r7 = var_4h;
    0x000029f0 str r4, [sp, 8]                                   |     var_8h = r4;
    0x000029f2 add r1, pc                                        |     r1 = 0x574a;
    0x000029f4 mov r4, r1                                        |     r4 = r1;
                                                                 |     do {
    0x000029f6 subs r7, 1                                        |         r7--;
    0x000029f8 mov r1, r4                                        |         r1 = r4;
    0x000029fa movs r0, 1                                        |         r0 = 1;
    0x000029fc blx 0x14f0                                        |         printf_chk ()
    0x00002a00 adds r2, r7, 1                                    |         r2 = r7 + 1;
    0x00002a02 bne 0x29f6                                        |         
                                                                 |     } while (r2 != r7);
    0x00002a04 ldr r4, [sp, 8]                                   |     r4 = var_8h;
                                                                 | label_48:
    0x00002a06 ldrh r3, [r6, 2]                                  |     r3 = *((r6 + 2));
    0x00002a08 mov r2, r5                                        |     r2 = r5;
    0x00002a0a ldr r1, [pc, 0x34c]                               |     
    0x00002a0c movs r0, 1                                        |     r0 = 1;
    0x00002a0e rev16 r3, r3                                      |     __asm ("rev16 r3, r3");
    0x00002a10 uxth r3, r3                                       |     r3 = (int16_t) r3;
    0x00002a12 add r1, pc                                        |     r1 = 0x5770;
    0x00002a14 blx 0x14f0                                        |     printf_chk ()
                                                                 | label_47:
    0x00002a18 cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00002a1c bne.w 0x262e                                      |         goto label_6;
                                                                 |     }
    0x00002a20 movs r3, 0x2e                                     |     r3 = 0x2e;
    0x00002a22 mov r2, r5                                        |     r2 = r5;
    0x00002a24 add r1, sp, 0x11c                                 |     r1 += var_11ch;
    0x00002a26 movs r0, 0xa                                      |     r0 = 0xa;
    0x00002a28 blx 0x146c                                        |     r0 = inet_ntop ();
    0x00002a2c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002a2e beq.w 0x262e                                      |         goto label_6;
                                                                 |     }
    0x00002a32 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00002a34 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00002a36 ble 0x2a4c                                        |         goto label_49;
                                                                 |     }
    0x00002a38 ldr r6, [pc, 0x320]                               |     
    0x00002a3a ldr r7, [sp, 4]                                   |     r7 = var_4h;
    0x00002a3c add r6, pc                                        |     r6 = 0x579c;
                                                                 |     do {
    0x00002a3e subs r7, 1                                        |         r7--;
    0x00002a40 mov r1, r6                                        |         r1 = r6;
    0x00002a42 movs r0, 1                                        |         r0 = 1;
    0x00002a44 blx 0x14f0                                        |         printf_chk ()
    0x00002a48 adds r3, r7, 1                                    |         r3 = r7 + 1;
    0x00002a4a bne 0x2a3e                                        |         
                                                                 |     } while (r3 != r7);
                                                                 | label_49:
    0x00002a4c ldrh.w r3, [sp, 0x116]                            |     r3 = var_116h;
    0x00002a50 mov r2, r5                                        |     r2 = r5;
    0x00002a52 ldr r1, [pc, 0x30c]                               |     
    0x00002a54 movs r0, 1                                        |     r0 = 1;
    0x00002a56 rev16 r3, r3                                      |     __asm ("rev16 r3, r3");
    0x00002a58 uxth r3, r3                                       |     r3 = (int16_t) r3;
    0x00002a5a add r1, pc                                        |     r1 = 0x57c0;
    0x00002a5c blx 0x14f0                                        |     printf_chk ()
    0x00002a60 b 0x262e                                          |     goto label_6;
    0x00002a62 ldr r0, [pc, 0x300]                               |     
    0x00002a64 add r5, sp, 0x194                                 |     r5 += var_194h;
    0x00002a66 add r0, pc                                        |     r0 = 0x57d0;
    0x00002a68 blx 0x1730                                        |     puts (r0);
    0x00002a6c movs r3, 0x2e                                     |     r3 = 0x2e;
    0x00002a6e mov r2, r5                                        |     r2 = r5;
    0x00002a70 add r1, sp, 0x98                                  |     r1 += var_98h;
    0x00002a72 movs r0, 2                                        |     r0 = 2;
    0x00002a74 blx 0x146c                                        |     r0 = inet_ntop ();
                                                                 |     if (r0 == 0) {
    0x00002a78 cbz r0, 0x2aac                                    |         goto label_50;
                                                                 |     }
    0x00002a7a ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00002a7c cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00002a7e ble 0x2a9a                                        |         goto label_51;
                                                                 |     }
    0x00002a80 ldr r1, [pc, 0x2e4]                               |     
    0x00002a82 ldr r7, [sp, 4]                                   |     r7 = var_4h;
    0x00002a84 str r4, [sp, 8]                                   |     var_8h = r4;
    0x00002a86 add r1, pc                                        |     r1 = 0x57f2;
    0x00002a88 mov r4, r1                                        |     r4 = r1;
                                                                 |     do {
    0x00002a8a subs r7, 1                                        |         r7--;
    0x00002a8c mov r1, r4                                        |         r1 = r4;
    0x00002a8e movs r0, 1                                        |         r0 = 1;
    0x00002a90 blx 0x14f0                                        |         printf_chk ()
    0x00002a94 adds r0, r7, 1                                    |         r0 = r7 + 1;
    0x00002a96 bne 0x2a8a                                        |         
                                                                 |     } while (r0 != r7);
    0x00002a98 ldr r4, [sp, 8]                                   |     r4 = var_8h;
                                                                 | label_51:
    0x00002a9a ldrh r3, [r6, 2]                                  |     r3 = *((r6 + 2));
    0x00002a9c mov r2, r5                                        |     r2 = r5;
    0x00002a9e ldr r1, [pc, 0x2cc]                               |     
    0x00002aa0 movs r0, 1                                        |     r0 = 1;
    0x00002aa2 rev16 r3, r3                                      |     __asm ("rev16 r3, r3");
    0x00002aa4 uxth r3, r3                                       |     r3 = (int16_t) r3;
    0x00002aa6 add r1, pc                                        |     r1 = 0x5818;
    0x00002aa8 blx 0x14f0                                        |     printf_chk ()
                                                                 | label_50:
    0x00002aac cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00002ab0 bne.w 0x262e                                      |         goto label_6;
                                                                 |     }
    0x00002ab4 movs r3, 0x2e                                     |     r3 = 0x2e;
    0x00002ab6 mov r2, r5                                        |     r2 = r5;
    0x00002ab8 add r1, sp, 0x118                                 |     r1 += var_118h;
    0x00002aba movs r0, 2                                        |     r0 = 2;
    0x00002abc blx 0x146c                                        |     r0 = inet_ntop ();
    0x00002ac0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002ac2 beq.w 0x262e                                      |         goto label_6;
                                                                 |     }
    0x00002ac6 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00002ac8 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00002aca ble 0x2ae0                                        |         goto label_52;
                                                                 |     }
    0x00002acc ldr r6, [pc, 0x2a0]                               |     
    0x00002ace ldr r7, [sp, 4]                                   |     r7 = var_4h;
    0x00002ad0 add r6, pc                                        |     r6 = 0x5844;
                                                                 |     do {
    0x00002ad2 mov r1, r6                                        |         r1 = r6;
    0x00002ad4 subs r7, 1                                        |         r7--;
    0x00002ad6 movs r0, 1                                        |         r0 = 1;
    0x00002ad8 blx 0x14f0                                        |         printf_chk ()
    0x00002adc adds r1, r7, 1                                    |         r1 = r7 + 1;
    0x00002ade bne 0x2ad2                                        |         
                                                                 |     } while (r1 != r7);
                                                                 | label_52:
    0x00002ae0 ldrh.w r3, [sp, 0x116]                            |     r3 = var_116h;
    0x00002ae4 mov r2, r5                                        |     r2 = r5;
    0x00002ae6 ldr r1, [pc, 0x28c]                               |     
    0x00002ae8 movs r0, 1                                        |     r0 = 1;
    0x00002aea rev16 r3, r3                                      |     __asm ("rev16 r3, r3");
    0x00002aec uxth r3, r3                                       |     r3 = (int16_t) r3;
    0x00002aee add r1, pc                                        |     r1 = 0x5868;
    0x00002af0 blx 0x14f0                                        |     printf_chk ()
    0x00002af4 b 0x262e                                          |     goto label_6;
    0x00002af6 ldr r0, [pc, 0x280]                               |     
    0x00002af8 add r0, pc                                        |     r0 = 0x5876;
    0x00002afa blx 0x1730                                        |     puts (r0);
    0x00002afe ldrb r3, [r6, 2]                                  |     r3 = *((r6 + 2));
    0x00002b00 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00002b02 beq 0x2bcc                                        |         goto label_53;
                                                                 |     }
    0x00002b04 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00002b06 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00002b08 ble.w 0x2c54                                      |         goto label_54;
                                                                 |     }
    0x00002b0c ldr r5, [pc, 0x26c]                               |     
    0x00002b0e ldr r6, [sp, 4]                                   |     r6 = var_4h;
    0x00002b10 add r5, pc                                        |     r5 = 0x5890;
                                                                 |     do {
    0x00002b12 subs r6, 1                                        |         r6--;
    0x00002b14 mov r1, r5                                        |         r1 = r5;
    0x00002b16 movs r0, 1                                        |         r0 = 1;
    0x00002b18 blx 0x14f0                                        |         printf_chk ()
    0x00002b1c adds r3, r6, 1                                    |         r3 = r6 + 1;
    0x00002b1e bne 0x2b12                                        |         
                                                                 |     } while (r3 != r6);
    0x00002b20 ldr r1, [pc, 0x25c]                               |     
    0x00002b22 add.w r2, sp, 0x96                                |     r2 += var_96h;
    0x00002b26 movs r0, 1                                        |     r0 = 1;
    0x00002b28 add r1, pc                                        |     r1 = 0x58ac;
    0x00002b2a blx 0x14f0                                        |     printf_chk ()
    0x00002b2e cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00002b32 bne.w 0x262e                                      |         goto label_6;
                                                                 |     }
    0x00002b36 ldr r6, [sp, 4]                                   |     r6 = var_4h;
                                                                 |     do {
    0x00002b38 subs r6, 1                                        |         r6--;
    0x00002b3a mov r1, r5                                        |         r1 = r5;
    0x00002b3c movs r0, 1                                        |         r0 = 1;
    0x00002b3e blx 0x14f0                                        |         printf_chk ()
    0x00002b42 adds r7, r6, 1                                    |         r7 = r6 + 1;
    0x00002b44 bne 0x2b38                                        |         
                                                                 |     } while (r7 != r6);
    0x00002b46 b 0x2c6a                                          |     goto label_55;
                                                                 | label_44:
    0x00002b48 ldr r1, [pc, 0x238]                               |     
    0x00002b4a movs r0, 1                                        |     r0 = 1;
    0x00002b4c add r1, pc                                        |     r1 = 0x58d4;
    0x00002b4e blx 0x14f0                                        |     printf_chk ()
    0x00002b52 b 0x2366                                          |     goto label_1;
                                                                 | label_29:
    0x00002b54 ldr r0, [pc, 0x230]                               |     
    0x00002b56 add r0, pc                                        |     r0 = 0x58e2;
    0x00002b58 blx 0x1730                                        |     puts (r0);
    0x00002b5c b 0x2602                                          |     goto label_7;
                                                                 | label_28:
    0x00002b5e ldr r0, [pc, 0x22c]                               |     
    0x00002b60 add r0, pc                                        |     r0 = 0x58f2;
    0x00002b62 blx 0x1730                                        |     puts (r0);
    0x00002b66 ldr r3, [r6, 0x10]                                |     r3 = *((r6 + 0x10));
    0x00002b68 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00002b6c b 0x25fa                                          |     goto label_8;
                                                                 | label_27:
    0x00002b6e ldr r0, [pc, 0x220]                               |     
    0x00002b70 add r0, pc                                        |     r0 = 0x5906;
    0x00002b72 blx 0x1730                                        |     puts (r0);
    0x00002b76 ldr r3, [r6, 0x10]                                |     r3 = *((r6 + 0x10));
    0x00002b78 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00002b7c b 0x25f2                                          |     goto label_9;
                                                                 | label_26:
    0x00002b7e ldr r0, [pc, 0x214]                               |     
    0x00002b80 add r0, pc                                        |     r0 = 0x591a;
    0x00002b82 blx 0x1730                                        |     puts (r0);
    0x00002b86 ldr r3, [r6, 0x10]                                |     r3 = *((r6 + 0x10));
    0x00002b88 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00002b8c b 0x25ea                                          |     goto label_10;
                                                                 | label_25:
    0x00002b8e ldr r0, [pc, 0x208]                               |     
    0x00002b90 add r0, pc                                        |     r0 = 0x592e;
    0x00002b92 blx 0x1730                                        |     puts (r0);
    0x00002b96 ldr r3, [r6, 0x10]                                |     r3 = *((r6 + 0x10));
    0x00002b98 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00002b9c b 0x25e2                                          |     goto label_11;
                                                                 | label_24:
    0x00002b9e ldr r0, [pc, 0x1fc]                               |     
    0x00002ba0 add r0, pc                                        |     r0 = 0x5942;
    0x00002ba2 blx 0x1730                                        |     puts (r0);
    0x00002ba6 ldr r3, [r6, 0x10]                                |     r3 = *((r6 + 0x10));
    0x00002ba8 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00002bac b 0x25da                                          |     goto label_12;
                                                                 | label_23:
    0x00002bae ldr r0, [pc, 0x1f0]                               |     
    0x00002bb0 add r0, pc                                        |     r0 = 0x5956;
    0x00002bb2 blx 0x1730                                        |     puts (r0);
    0x00002bb6 ldr r3, [r6, 0x10]                                |     r3 = *((r6 + 0x10));
    0x00002bb8 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00002bbc b 0x25d2                                          |     goto label_13;
                                                                 | label_22:
    0x00002bbe ldr r1, [pc, 0x1e4]                               |     
    0x00002bc0 movs r0, 1                                        |     r0 = 1;
    0x00002bc2 ldr r2, [r6, 0x60]                                |     r2 = *((r6 + 0x60));
    0x00002bc4 add r1, pc                                        |     r1 = 0x596e;
    0x00002bc6 blx 0x14f0                                        |     printf_chk ()
    0x00002bca b 0x25b8                                          |     goto label_14;
                                                                 | label_53:
    0x00002bcc ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00002bce cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00002bd0 ble 0x2c1a                                        |         goto label_56;
                                                                 |     }
    0x00002bd2 ldr r6, [pc, 0x1d4]                               |     
    0x00002bd4 ldr r5, [sp, 4]                                   |     r5 = var_4h;
    0x00002bd6 add r6, pc                                        |     r6 = 0x5984;
                                                                 |     do {
    0x00002bd8 subs r5, 1                                        |         r5--;
    0x00002bda mov r1, r6                                        |         r1 = r6;
    0x00002bdc movs r0, 1                                        |         r0 = 1;
    0x00002bde blx 0x14f0                                        |         printf_chk ()
    0x00002be2 adds r2, r5, 1                                    |         r2 = r5 + 1;
    0x00002be4 bne 0x2bd8                                        |         
                                                                 |     } while (r2 != r5);
    0x00002be6 ldr r2, [r7]                                      |     r2 = *(r7);
    0x00002be8 add.w r5, sp, 0x97                                |     r5 += var_97h;
    0x00002bec ldr r1, [pc, 0x1bc]                               |     
    0x00002bee mov r3, r5                                        |     r3 = r5;
    0x00002bf0 movs r0, 1                                        |     r0 = 1;
    0x00002bf2 subs r2, 3                                        |     r2 -= 3;
    0x00002bf4 add r1, pc                                        |     r1 = 0x59a4;
    0x00002bf6 blx 0x14f0                                        |     printf_chk ()
    0x00002bfa cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00002bfe bne.w 0x262e                                      |         goto label_6;
                                                                 |     }
    0x00002c02 ldr.w r8, [sp, 4]                                 |     r8 = var_4h;
                                                                 |     do {
    0x00002c06 add.w r8, r8, -1                                  |         r8 += -1;
    0x00002c0a mov r1, r6                                        |         r1 = r6;
    0x00002c0c movs r0, 1                                        |         r0 = 1;
    0x00002c0e blx 0x14f0                                        |         printf_chk ()
    0x00002c12 cmp.w r8, -1                                      |         
    0x00002c16 bne 0x2c06                                        |         
                                                                 |     } while (r8 != -1);
    0x00002c18 b 0x2c36                                          |     goto label_57;
                                                                 | label_56:
    0x00002c1a ldr r2, [r7]                                      |     r2 = *(r7);
    0x00002c1c add.w r5, sp, 0x97                                |     r5 += var_97h;
    0x00002c20 ldr r1, [pc, 0x18c]                               |     
    0x00002c22 mov r3, r5                                        |     r3 = r5;
    0x00002c24 movs r0, 1                                        |     r0 = 1;
    0x00002c26 subs r2, 3                                        |     r2 -= 3;
    0x00002c28 add r1, pc                                        |     r1 = 0x59dc;
    0x00002c2a blx 0x14f0                                        |     printf_chk ()
    0x00002c2e cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00002c32 bne.w 0x262e                                      |         goto label_6;
                                                                 |     }
                                                                 | label_57:
    0x00002c36 ldr r2, [r7]                                      |     r2 = *(r7);
    0x00002c38 mov r3, r5                                        |     r3 = r5;
    0x00002c3a ldr r1, [pc, 0x178]                               |     
    0x00002c3c movs r0, 1                                        |     r0 = 1;
    0x00002c3e subs r2, 3                                        |     r2 -= 3;
    0x00002c40 add r1, pc                                        |     r1 = 0x59fa;
    0x00002c42 blx 0x14f0                                        |     printf_chk ()
    0x00002c46 b 0x262e                                          |     goto label_6;
                                                                 | label_45:
    0x00002c48 ldr r0, [pc, 0x16c]                               |     
    0x00002c4a add r0, pc                                        |     r0 = 0x5a06;
    0x00002c4c bl 0x336c                                         |     tool_oom ();
                                                                 | label_17:
    0x00002c50 blx 0x16dc                                        |     stack_chk_fail ();
                                                                 | label_54:
    0x00002c54 ldr r1, [pc, 0x164]                               |     
    0x00002c56 add.w r2, sp, 0x96                                |     r2 += var_96h;
    0x00002c5a movs r0, 1                                        |     r0 = 1;
    0x00002c5c add r1, pc                                        |     r1 = 0x5a1c;
    0x00002c5e blx 0x14f0                                        |     printf_chk ()
    0x00002c62 cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00002c66 bne.w 0x262e                                      |         goto label_6;
                                                                 |     }
                                                                 | label_55:
    0x00002c6a ldr r1, [pc, 0x154]                               |     
    0x00002c6c add.w r2, sp, 0x116                               |     r2 += var_116h;
    0x00002c70 movs r0, 1                                        |     r0 = 1;
    0x00002c72 add r1, pc                                        |     r1 = 0x5a38;
    0x00002c74 blx 0x14f0                                        |     printf_chk ()
    0x00002c78 b 0x262e                                          |     goto label_6;
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/dbus-send @ 0x2dc4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.print_message ()                             | void print_message (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int32_t var_4h;
                                                             |     int32_t var_4h_2;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_4ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00002dc4 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00002dc8 mov r8, r2                                    |     r8 = r2;
    0x00002dca ldr r2, [pc, 0x1c8]                           |     
    0x00002dcc mov sl, r3                                    |     sl = r3;
    0x00002dce sub sp, 0x50                                  |     
    0x00002dd0 mov r4, r0                                    |     r4 = r0;
    0x00002dd2 ldr r3, [pc, 0x1c4]                           |     r3 = *(0x2f9a);
    0x00002dd4 mov r6, r1                                    |     r6 = r1;
    0x00002dd6 add r2, pc                                    |     r2 = 0x5d70;
    0x00002dd8 ldr.w sb, [pc, 0x1c0]                         |     sb = *(0x00002f9c);
    0x00002ddc ldr r3, [r2, r3]                              |     
    0x00002dde add sb, pc                                    |     sb += pc;
    0x00002de0 ldr r3, [r3]                                  |     r3 = *(0x5d70);
    0x00002de2 str r3, [sp, 0x4c]                            |     var_4ch = r3;
    0x00002de4 mov.w r3, 0                                   |     r3 = 0;
    0x00002de8 blx 0x1784                                    |     r0 = dbus_message_get_type ();
    0x00002dec mov r5, r0                                    |     r5 = r0;
    0x00002dee mov r0, r4                                    |     r0 = r4;
    0x00002df0 blx 0x14cc                                    |     r0 = dbus_message_get_sender ();
    0x00002df4 mov r7, r0                                    |     r7 = r0;
    0x00002df6 mov r0, r4                                    |     r0 = r4;
    0x00002df8 blx 0x17a8                                    |     dbus_message_get_destination ();
                                                             |     if (r6 == 0) {
    0x00002dfc cbnz r6, 0x2e46                               |         
    0x00002dfe orrs.w r3, r8, sl                             |         r3 = r8 | sl;
    0x00002e02 add.w r5, r5, -1                              |         r5 += -1;
                                                             |         if (r3 == r8) {
    0x00002e06 beq 0x2e80                                    |             goto label_8;
                                                             |         }
    0x00002e08 cmp r5, 3                                     |         
                                                             |         if (r5 > 3) {
    0x00002e0a bhi.w 0x2f8a                                  |             goto label_9;
                                                             |         }
                                                             |         /* switch table (4 cases) at 0x2e12 */
    0x00002e0e tbb [pc, r5]                                  |         __asm ("tbb [0x00002e14]");
                                                             |     }
                                                             | label_7:
    0x00002e46 mov r0, r4                                    |     r0 = r4;
    0x00002e48 add r4, sp, 0x14                              |     r4 += var_14h;
    0x00002e4a mov r1, r4                                    |     r1 = r4;
    0x00002e4c blx 0x152c                                    |     dbus_message_iter_init ();
    0x00002e50 movs r2, 1                                    |     r2 = 1;
    0x00002e52 mov r0, r4                                    |     r0 = r4;
    0x00002e54 mov r1, r6                                    |     r1 = r6;
    0x00002e56 bl 0x22cc                                     |     fcn_000022cc (r0, r1, r2);
    0x00002e5a ldr r3, [pc, 0x148]                           |     r3 = *(0x2fa6);
    0x00002e5c ldr.w r3, [sb, r3]                            |     r3 = *((sb + r3));
    0x00002e60 ldr r0, [r3]                                  |     r0 = *(0x2fa6);
    0x00002e62 blx 0x15e0                                    |     fflush (r0);
    0x00002e66 ldr r2, [pc, 0x140]                           |     
    0x00002e68 ldr r3, [pc, 0x12c]                           |     r3 = *(0x2f98);
    0x00002e6a add r2, pc                                    |     r2 = 0x5e18;
    0x00002e6c ldr r3, [r2, r3]                              |     r3 = *(0x5e18);
    0x00002e6e ldr r2, [r3]                                  |     r2 = *(0x5e18);
    0x00002e70 ldr r3, [sp, 0x4c]                            |     r3 = var_4ch;
    0x00002e72 eors r2, r3                                   |     r2 ^= r3;
    0x00002e74 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x00002e78 bne 0x2f74                                    |         goto label_10;
                                                             |     }
    0x00002e7a add sp, 0x50                                  |     
    0x00002e7c pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |     
                                                             | label_8:
    0x00002e80 cmp r5, 3                                     |     
                                                             |     if (r5 > 3) {
    0x00002e82 bhi 0x2f80                                    |         goto label_11;
                                                             |     }
                                                             |     /* switch table (4 cases) at 0x2e88 */
    0x00002e84 tbb [pc, r5]                                  |     __asm ("tbb [0x00002e8c]");
    0x00002e8c ldr r2, [pc, 0x11c]                           |     
    0x00002e8e add r2, pc                                    |     r2 = 0x5e3e;
    0x00002e90 cmp r7, 0                                     |     
    0x00002e92 beq 0x2f08                                    |     
                                                             |     while (1) {
                                                             | label_0:
    0x00002e94 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00002e96 beq 0x2f6e                                    |             goto label_12;
                                                             |         }
                                                             | label_6:
    0x00002e98 ldr r1, [pc, 0x114]                           |         
    0x00002e9a mov r3, r8                                    |         r3 = r8;
    0x00002e9c strd r7, r0, [sp, 4]                          |         __asm ("strd r7, r0, [var_4h]");
    0x00002ea0 movs r0, 1                                    |         r0 = 1;
    0x00002ea2 str.w sl, [sp]                                |         __asm ("str.w sl, [sp]");
    0x00002ea6 add r1, pc                                    |         r1 = 0x5e5a;
    0x00002ea8 blx 0x14f0                                    |         printf_chk ()
                                                             | label_2:
    0x00002eac cmp r5, 3                                     |         
                                                             |         if (r5 > 3) {
    0x00002eae bhi 0x2f78                                    |             goto label_13;
                                                             |         }
    0x00002eb0 adr r3, 8                                     |         r3 = 8;
    0x00002eb2 ldr.w r5, [r3, r5, lsl 2]                     |         offset_0 = r5 << 2;
                                                             |         r5 = *((r3 + offset_0));
    0x00002eb6 add r3, r5                                    |         r3 += r5;
                                                             |         /* switch table (4 cases) at 0x2ebc */
    0x00002eb8 bx r3                                         |         return uint32_t (*r3)() ();
                                                             | label_1:
    0x00002f08 ldr r7, [pc, 0xb0]                            |         
    0x00002f0a add r7, pc                                    |         r7 = 0x5eca;
    0x00002f0c b 0x2e94                                      |         
                                                             |     }
    0x00002f0e ldr r2, [pc, 0xb0]                            |     
    0x00002f10 add r2, pc                                    |     r2 = 0x5ed6;
    0x00002f12 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00002f14 bne 0x2e94                                    |         goto label_0;
                                                             |     }
    0x00002f16 b 0x2f08                                      |     goto label_1;
    0x00002f18 ldr r2, [pc, 0xa8]                            |     
    0x00002f1a add r2, pc                                    |     r2 = 0x5ee2;
    0x00002f1c cbz r7, 0x2f30                                |     
                                                             |     while (1) {
                                                             |         if (r0 == 0) {
                                                             | label_3:
    0x00002f1e cbz r0, 0x2f68                                |             goto label_14;
                                                             |         }
                                                             | label_5:
    0x00002f20 ldr r1, [pc, 0xa4]                            |         
    0x00002f22 mov r3, r7                                    |         r3 = r7;
    0x00002f24 str r0, [sp]                                  |         *(sp) = r0;
    0x00002f26 movs r0, 1                                    |         r0 = 1;
    0x00002f28 add r1, pc                                    |         r1 = "__";
    0x00002f2a blx 0x14f0                                    |         printf_chk ()
    0x00002f2e b 0x2eac                                      |         goto label_2;
                                                             | label_4:
    0x00002f30 ldr r7, [pc, 0x98]                            |         
    0x00002f32 add r7, pc                                    |         r7 = 0x5f02;
    0x00002f34 b 0x2f1e                                      |         
                                                             |     }
    0x00002f36 ldr r2, [pc, 0x98]                            |     
    0x00002f38 add r2, pc                                    |     r2 = 0x5f0e;
    0x00002f3a cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00002f3c bne 0x2f1e                                    |         goto label_3;
                                                             |     }
    0x00002f3e b 0x2f30                                      |     goto label_4;
    0x00002f40 ldr r2, [pc, 0x90]                            |     
    0x00002f42 add r2, pc                                    |     r2 = 0x5f1a;
    0x00002f44 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00002f46 bne 0x2f1e                                    |         goto label_3;
                                                             |     }
    0x00002f48 b 0x2f30                                      |     goto label_4;
    0x00002f4a ldr r2, [pc, 0x8c]                            |     
    0x00002f4c add r2, pc                                    |     r2 = 0x5f2a;
    0x00002f4e cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00002f50 bne 0x2f1e                                    |         goto label_3;
                                                             |     }
    0x00002f52 b 0x2f30                                      |     goto label_4;
    0x00002f54 ldr r2, [pc, 0x84]                            |     
    0x00002f56 add r2, pc                                    |     r2 = 0x5f36;
    0x00002f58 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00002f5a bne 0x2e94                                    |         goto label_0;
                                                             |     }
    0x00002f5c b 0x2f08                                      |     goto label_1;
    0x00002f5e ldr r2, [pc, 0x80]                            |     
    0x00002f60 add r2, pc                                    |     r2 = 0x5f46;
    0x00002f62 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00002f64 bne 0x2e94                                    |         goto label_0;
                                                             |     }
    0x00002f66 b 0x2f08                                      |     goto label_1;
                                                             | label_14:
    0x00002f68 ldr r0, [pc, 0x78]                            |     
    0x00002f6a add r0, pc                                    |     r0 = 0x5f52;
    0x00002f6c b 0x2f20                                      |     goto label_5;
                                                             | label_12:
    0x00002f6e ldr r0, [pc, 0x78]                            |     
    0x00002f70 add r0, pc                                    |     r0 = 0x5f5e;
    0x00002f72 b 0x2e98                                      |     goto label_6;
                                                             | label_10:
    0x00002f74 blx 0x16dc                                    |     stack_chk_fail ();
                                                             | label_13:
    0x00002f78 movs r0, 0xa                                  |     r0 = 0xa;
    0x00002f7a blx 0x1514                                    |     putchar (r0);
    0x00002f7e b 0x2e46                                      |     goto label_7;
                                                             | label_11:
    0x00002f80 ldr r2, [pc, 0x68]                            |     
    0x00002f82 add r2, pc                                    |     r2 = 0x5f72;
    0x00002f84 cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00002f86 bne 0x2f1e                                    |         goto label_3;
                                                             |     }
    0x00002f88 b 0x2f30                                      |     goto label_4;
                                                             | label_9:
    0x00002f8a ldr r2, [pc, 0x64]                            |     
    0x00002f8c add r2, pc                                    |     r2 = 0x5f82;
    0x00002f8e cmp r7, 0                                     |     
                                                             |     if (r7 != 0) {
    0x00002f90 bne 0x2e94                                    |         goto label_0;
                                                             |     }
    0x00002f92 b 0x2f08                                      |     goto label_1;
                                                             | }

[*] Function printf used 59 times dbus-send