[*] Binary protection state of dbus-run-session

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


[*] Function fprintf tear down of dbus-run-session

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/bin/dbus-run-session @ 0x10804 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) main ()                                          | int32_t main (int32_t argc, char ** argv) {
                                                             |     int32_t var_0h;
                                                             |     int32_t var_ch;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_14h;
                                                             |     pid_t fildes;
                                                             |     int32_t var_1ch;
                                                             |     char * var_20h;
                                                             |     int8_t var_0h_2;
                                                             |     void * errnum;
                                                             |     int32_t var_260h;
                                                             |     int32_t var_264h;
                                                             |     r0 = argc;
                                                             |     r1 = argv;
                                                             |     /* [12] -r-x section size 2116 named .text */
    0x00010804 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}     |     
    0x00010808 sub sp, sp, 0x264                             |     
    0x0001080c mov r4, 0                                     |     r4 = 0;
    0x00010810 add r7, sp, 0x60                              |     r7 += errnum;
    0x00010814 mov sb, r0                                    |     sb = r0;
    0x00010818 mov fp, r1                                    |     
    0x0001081c mov r2, 0x200                                 |     r2 = 0x200;
    0x00010820 mov r1, r4                                    |     r1 = r4;
    0x00010824 mov r0, r7                                    |     r0 = r7;
    0x00010828 str r4, [sp, 0x18]                            |     fildes = r4;
    0x0001082c str r4, [sp, 0x1c]                            |     var_1ch = r4;
    0x00010830 str r4, [sp, 0x10]                            |     var_10h = r4;
    0x00010834 str r4, [sp, 0x14]                            |     var_14h = r4;
    0x00010838 bl 0x10738                                    |     memset (r0, r1, r2);
    0x0001083c mov sl, 1                                     |     sl = 1;
    0x00010840 mov r8, r4                                    |     r8 = r4;
                                                             | label_0:
    0x00010844 cmp sl, sb                                    |     
    0x00010848 mov r6, sl                                    |     r6 = sl;
                                                             |     if (sl >= sb) {
    0x0001084c blt 0x1087c                                   |         
    0x00010850 mov r6, 0                                     |         r6 = 0;
                                                             | label_3:
    0x00010854 cmp r6, sb                                    |         
                                                             |         if (r6 >= sb) {
    0x00010858 movlt sb, 0                                   |             sb = 0;
                                                             |         }
                                                             |         if (r6 < sb) {
    0x0001085c movge sb, 1                                   |             sb = 1;
                                                             |         }
    0x00010860 cmp r6, 0                                     |         
                                                             |         if (r6 > 0) {
    0x00010864 orrle sb, sb, 1                               |             sb |= 1;
                                                             |         }
    0x00010868 cmp sb, 0                                     |         
                                                             |         if (sb == 0) {
    0x0001086c beq 0x10a84                                   |             goto label_17;
                                                             |         }
    0x00010870 ldr r2, [pc, 0x604]                           |         r2 = *(0x10e78);
    0x00010874 ldr r1, [pc, 0x604]                           |         r1 = "dbus_run_session";
    0x00010878 b 0x109c0                                     |         goto label_6;
                                                             |     }
    0x0001087c cmp r4, 0                                     |     
    0x00010880 ldr r5, [fp, sl, lsl 2]                       |     offset_0 = sl << 2;
                                                             |     r5 = *((fp + offset_0));
                                                             |     if (r4 == 0) {
    0x00010884 beq 0x10910                                   |         goto label_18;
                                                             |     }
    0x00010888 ldr r1, [pc, 0x5f4]                           |     r1 = "%s: a non-option argument is required\n";
    0x0001088c mov r0, r8                                    |     r0 = r8;
    0x00010890 bl 0x1072c                                    |     r0 = strcmp (r0, "%s: a non-option argument is required\n");
    0x00010894 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00010898 beq 0x108f4                                   |         goto label_19;
                                                             |     }
    0x0001089c ldr r1, [pc, 0x5e4]                           |     r1 = "--config-file";
    0x000108a0 mov r0, r8                                    |     r0 = r8;
    0x000108a4 bl 0x1072c                                    |     r0 = strcmp (r0, "--config-file");
    0x000108a8 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000108ac bne 0x108d0                                   |         goto label_20;
                                                             |     }
    0x000108b0 add r3, sp, 0x260                             |     r3 += var_260h;
    0x000108b4 ldr r4, [r3, -0x24c]!                         |     r4 = var_14h;
                                                             |     do {
    0x000108b8 cmp r4, 0                                     |         
                                                             |         if (r4 == 0) {
    0x000108bc beq 0x10900                                   |             goto label_21;
                                                             |         }
    0x000108c0 mov r3, r8                                    |         r3 = r8;
    0x000108c4 ldr r2, [pc, 0x5b0]                           |         r2 = *(0x10e78);
    0x000108c8 ldr r1, [pc, 0x5bc]                           |         r1 = "--dbus-daemon";
    0x000108cc b 0x108dc                                     |         goto label_4;
                                                             | label_20:
    0x000108d0 ldr r2, [pc, 0x5a4]                           |         r2 = *(0x10e78);
    0x000108d4 ldr r1, [pc, 0x5b4]                           |         r1 = "%s: %s given twice\n";
    0x000108d8 mov r3, r8                                    |         r3 = r8;
                                                             | label_4:
    0x000108dc ldr r0, [pc, 0x5b0]                           |         
    0x000108e0 ldr r0, [r0]                                  |         r0 = "%s: internal error: %s not fully implemented\n";
                                                             | label_5:
    0x000108e4 bl 0x107a4                                    |         fprintf ("%s: internal error: %s not fully implemented\n", "%s: %s given twice\n", r2, r3)
                                                             | label_1:
    0x000108e8 mov r0, 0x7f                                  |         r0 = 0x7f;
                                                             | label_15:
    0x000108ec add sp, sp, 0x264                             |         
    0x000108f0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}      |         
                                                             | label_19:
    0x000108f4 add r3, sp, 0x260                             |         r3 += var_260h;
    0x000108f8 ldr r4, [r3, -0x250]!                         |         r4 = var_10h;
    0x000108fc b 0x108b8                                     |         
                                                             |     } while (1);
                                                             | label_21:
    0x00010900 str r5, [r3]                                  |     *(r3) = r5;
                                                             | label_2:
    0x00010904 add sl, sl, 1                                 |     sl++;
    0x00010908 mov r8, r5                                    |     r8 = r5;
    0x0001090c b 0x10844                                     |     goto label_0;
                                                             | label_18:
    0x00010910 ldr r1, [pc, 0x580]                           |     r1 = stderr;
    0x00010914 mov r0, r5                                    |     r0 = r5;
    0x00010918 bl 0x1072c                                    |     r0 = strcmp (r0, r1);
    0x0001091c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00010920 beq 0x1094c                                   |         
    0x00010924 ldr r1, [pc, 0x570]                           |         r1 = "--help";
    0x00010928 mov r0, r5                                    |         r0 = r5;
    0x0001092c bl 0x1072c                                    |         r0 = strcmp (r0, "--help");
    0x00010930 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00010934 beq 0x1094c                                   |             goto label_22;
                                                             |         }
    0x00010938 ldr r1, [pc, 0x560]                           |         r1 = "_h";
    0x0001093c mov r0, r5                                    |         r0 = r5;
    0x00010940 bl 0x1072c                                    |         r0 = strcmp (r0, "_h");
    0x00010944 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00010948 bne 0x10970                                   |             goto label_23;
                                                             |         }
                                                             |     }
                                                             | label_22:
    0x0001094c ldr r3, [pc, 0x528]                           |     r3 = *(0x10e78);
    0x00010950 ldr r0, [pc, 0x53c]                           |     
    0x00010954 str r3, [sp]                                  |     *(sp) = r3;
    0x00010958 mov r2, r3                                    |     r2 = r3;
    0x0001095c ldr r1, [pc, 0x540]                           |     r1 = *(0x10ea0);
    0x00010960 ldr r0, [r0]                                  |     r0 = "%s: internal error: %s not fully implemented\n";
    0x00010964 bl 0x107a4                                    |     fprintf ("%s: internal error: %s not fully implemented\n", r1, r2, r3)
                                                             |     do {
    0x00010968 mov r0, 0                                     |         r0 = 0;
                                                             | label_10:
    0x0001096c bl 0x10798                                    |         exit (r0);
                                                             | label_23:
    0x00010970 ldr r1, [pc, 0x530]                           |         r1 = "_s__OPTIONS_______PROGRAM__ARGUMENTS__s___version_s___helpOptions:__dbus_daemonBINARY_______run_BINARY_instead_of_dbus_daemon__config_fileFILENAME_____pass_to_dbus_daemon_instead_of___session";
    0x00010974 mov r0, r5                                    |         r0 = r5;
    0x00010978 bl 0x1072c                                    |         r0 = strcmp (r0, "_s__OPTIONS_______PROGRAM__ARGUMENTS__s___version_s___helpOptions:__dbus_daemonBINARY_______run_BINARY_instead_of_dbus_daemon__config_fileFILENAME_____pass_to_dbus_daemon_instead_of___session");
    0x0001097c cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00010980 bne 0x10998                                   |             goto label_24;
                                                             |         }
    0x00010984 ldr r2, [pc, 0x520]                           |         r2 = "__version";
    0x00010988 ldr r1, [pc, 0x4ec]                           |         r1 = *(0x10e78);
    0x0001098c ldr r0, [pc, 0x51c]                           |         r0 = "_.12.10";
    0x00010990 bl 0x10774                                    |         printf ("_.12.10", r1, "__version");
    0x00010994 b 0x10968                                     |         
                                                             |     } while (1);
                                                             | label_24:
    0x00010998 ldr r1, [pc, 0x514]                           |     r1 = "%s %s\nCopyright (C) 2003-2006 Red Hat, Inc.\nCopyright (C) 2006 Thiago Macieira\nCopyright \xc2\xa9 2011-2012 Nokia Corporation\n\nThis is free software; see the source for copying conditions.\nThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n";
    0x0001099c mov r0, r5                                    |     r0 = r5;
    0x000109a0 bl 0x10750                                    |     r0 = strstr (r0, "%s %s\nCopyright (C) 2003-2006 Red Hat, Inc.\nCopyright (C) 2006 Thiago Macieira\nCopyright \xc2\xa9 2011-2012 Nokia Corporation\n\nThis is free software; see the source for copying conditions.\nThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n");
    0x000109a4 cmp r5, r0                                    |     
                                                             |     if (r5 != r0) {
    0x000109a8 bne 0x109e4                                   |         goto label_25;
                                                             |     }
    0x000109ac ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x000109b0 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000109b4 beq 0x109d0                                   |         goto label_26;
                                                             |     }
    0x000109b8 ldr r2, [pc, 0x4bc]                           |     r2 = *(0x10e78);
    0x000109bc ldr r1, [pc, 0x4f4]                           |     r1 = "__config_file";
                                                             |     do {
                                                             | label_6:
    0x000109c0 ldr r3, [pc, 0x4cc]                           |         r3 = "%s: internal error: %s not fully implemented\n";
    0x000109c4 ldr r0, [r3]                                  |         r0 = "%s: internal error: %s not fully implemented\n";
    0x000109c8 bl 0x107a4                                    |         fprintf ("%s: internal error: %s not fully implemented\n", "__config_file", r2, "%s: internal error: %s not fully implemented\n")
    0x000109cc b 0x108e8                                     |         goto label_1;
                                                             | label_26:
    0x000109d0 mov r1, 0x3d                                  |         r1 = 0x3d;
    0x000109d4 bl 0x10768                                    |         r0 = strchr (r0, r1);
    0x000109d8 add r0, r0, 1                                 |         r0++;
    0x000109dc str r0, [sp, 0x10]                            |         var_10h = r0;
    0x000109e0 b 0x10904                                     |         goto label_2;
                                                             | label_25:
    0x000109e4 ldr r1, [pc, 0x4d0]                           |         r1 = "%s: --config-file given twice\n";
    0x000109e8 mov r0, r5                                    |         r0 = r5;
    0x000109ec bl 0x10750                                    |         r0 = strstr (r0, "%s: --config-file given twice\n");
    0x000109f0 cmp r5, r0                                    |         
                                                             |         if (r5 != r0) {
    0x000109f4 bne 0x10a20                                   |             goto label_27;
                                                             |         }
    0x000109f8 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x000109fc cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00010a00 ldrne r2, [pc, 0x474]                         |             r2 = "dbus_run_session";
                                                             |         }
                                                             |         if (r3 == 0) {
    0x00010a04 ldrne r1, [pc, 0x4b4]                         |             r1 = "%s: --dbus-daemon given twice\n";
                                                             |         }
    0x00010a08 bne 0x109c0                                   |         
                                                             |     } while (r3 != 0);
    0x00010a0c mov r1, 0x3d                                  |     r1 = 0x3d;
    0x00010a10 bl 0x10768                                    |     r0 = strchr (r0, r1);
    0x00010a14 add r0, r0, 1                                 |     r0++;
    0x00010a18 str r0, [sp, 0x14]                            |     var_14h = r0;
    0x00010a1c b 0x10904                                     |     goto label_2;
                                                             | label_27:
    0x00010a20 ldr r1, [pc, 0x45c]                           |     r1 = "%s: a non-option argument is required\n";
    0x00010a24 mov r0, r5                                    |     r0 = r5;
    0x00010a28 bl 0x1072c                                    |     r0 = strcmp (r0, "%s: a non-option argument is required\n");
    0x00010a2c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00010a30 beq 0x10a7c                                   |         goto label_28;
                                                             |     }
    0x00010a34 ldr r1, [pc, 0x44c]                           |     r1 = "--config-file";
    0x00010a38 mov r0, r5                                    |     r0 = r5;
    0x00010a3c bl 0x1072c                                    |     r0 = strcmp (r0, "--config-file");
    0x00010a40 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00010a44 beq 0x10a7c                                   |         goto label_28;
                                                             |     }
    0x00010a48 ldrb r3, [r5]                                 |     r3 = *(r5);
    0x00010a4c cmp r3, 0x2d                                  |     
                                                             |     if (r3 != 0x2d) {
    0x00010a50 bne 0x10854                                   |         goto label_3;
                                                             |     }
    0x00010a54 ldr r1, [pc, 0x468]                           |     r1 = "%s: --dbus-daemon given twice\n";
    0x00010a58 mov r0, r5                                    |     r0 = r5;
    0x00010a5c bl 0x1072c                                    |     r0 = strcmp (r0, "%s: --dbus-daemon given twice\n");
    0x00010a60 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 == r0) {
    0x00010a64 addeq r6, sl, 1                               |         r6 = sl + 1;
                                                             |         goto label_29;
                                                             |     }
                                                             |     if (r4 == r0) {
                                                             | label_29:
    0x00010a68 beq 0x10854                                   |         goto label_3;
                                                             |     }
    0x00010a6c mov r3, r5                                    |     r3 = r5;
    0x00010a70 ldr r2, [pc, 0x404]                           |     r2 = *(0x10e78);
    0x00010a74 ldr r1, [pc, 0x44c]                           |     r1 = "__";
    0x00010a78 b 0x108dc                                     |     goto label_4;
                                                             | label_28:
    0x00010a7c mov r4, 1                                     |     r4 = 1;
    0x00010a80 b 0x10904                                     |     goto label_2;
                                                             | label_17:
    0x00010a84 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00010a88 movne r3, r8                                  |         r3 = r8;
                                                             |     }
                                                             |     if (r4 == 0) {
    0x00010a8c ldrne r2, [pc, 0x3e8]                         |         r2 = "dbus_run_session";
                                                             |     }
                                                             |     if (r4 != 0) {
    0x00010a90 ldrne r1, [pc, 0x434]                         |         r1 = "%s: option '%s' requires an argument\n";
                                                             |         goto label_30;
                                                             |     }
                                                             |     if (r4 != 0) {
                                                             | label_30:
    0x00010a94 bne 0x108dc                                   |         goto label_4;
                                                             |     }
    0x00010a98 ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x00010a9c add r0, sp, 0x18                              |     r0 += fildes;
    0x00010aa0 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00010aa4 ldreq r3, [pc, 0x424]                         |         r3 = *((pc + 0x424));
                                                             |     }
                                                             |     if (r3 != 0) {
    0x00010aa8 streq r3, [sp, 0x14]                          |         var_14h = r3;
                                                             |     }
    0x00010aac bl 0x10714                                    |     r0 = pipe ();
    0x00010ab0 cmp r0, 0                                     |     
                                                             |     if (r0 >= 0) {
    0x00010ab4 bge 0x10ae0                                   |         goto label_31;
                                                             |     }
    0x00010ab8 ldr r3, [pc, 0x3d4]                           |     r3 = "%s: internal error: %s not fully implemented\n";
    0x00010abc ldr r4, [r3]                                  |     r4 = "%s: internal error: %s not fully implemented\n";
    0x00010ac0 bl 0x107e0                                    |     r0 = errno_location ();
    0x00010ac4 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00010ac8 bl 0x107ec                                    |     strerror (r0);
    0x00010acc ldr r2, [pc, 0x3a8]                           |     r2 = *(0x10e78);
    0x00010ad0 ldr r1, [pc, 0x3fc]                           |     r1 = *(0x10ed0);
    0x00010ad4 mov r3, r0                                    |     r3 = r0;
                                                             |     do {
                                                             | label_9:
    0x00010ad8 mov r0, r4                                    |         r0 = r4;
    0x00010adc b 0x108e4                                     |         goto label_5;
                                                             | label_31:
    0x00010ae0 bl 0x10744                                    |         fork ();
    0x00010ae4 subs r4, r0, 0                                |         r4 -= fildes;
                                                             |         if (r4 >= fildes) {
    0x00010ae8 bge 0x10b10                                   |             goto label_32;
                                                             |         }
                                                             | label_12:
    0x00010aec ldr r3, [pc, 0x3a0]                           |         r3 = "%s: internal error: %s not fully implemented\n";
    0x00010af0 ldr r4, [r3]                                  |         r4 = "%s: internal error: %s not fully implemented\n";
    0x00010af4 bl 0x107e0                                    |         r0 = errno_location ();
    0x00010af8 ldr r0, [r0]                                  |         r0 = *(r0);
    0x00010afc bl 0x107ec                                    |         strerror (r0);
    0x00010b00 ldr r2, [pc, 0x374]                           |         r2 = *(0x10e78);
    0x00010b04 ldr r1, [pc, 0x3cc]                           |         r1 = "_s:_failed_to_create_pipe:__s";
    0x00010b08 mov r3, r0                                    |         r3 = r0;
    0x00010b0c b 0x10ad8                                     |         
                                                             |     } while (1);
                                                             |     if (r4 == fildes) {
                                                             | label_32:
    0x00010b10 bne 0x10b98                                   |         
    0x00010b14 add r6, sp, 0x20                              |         r6 += var_20h;
    0x00010b18 ldr r0, [sp, 0x18]                            |         r0 = fildes;
    0x00010b1c ldr r5, [sp, 0x14]                            |         r5 = var_14h;
    0x00010b20 ldr r7, [sp, 0x10]                            |         r7 = var_10h;
    0x00010b24 bl 0x107bc                                    |         close (r0);
    0x00010b28 ldr r2, [sp, 0x1c]                            |         r2 = var_1ch;
    0x00010b2c ldr r1, [pc, 0x3a8]                           |         r1 = "%s: failed to fork: %s\n";
    0x00010b30 mov r0, r6                                    |         r0 = r6;
    0x00010b34 bl 0x107f8                                    |         sprintf (r0, "%s: failed to fork: %s\n", r2);
    0x00010b38 ldr r2, [pc, 0x344]                           |         r2 = "%s: a non-option argument is required\n";
    0x00010b3c ldr r3, [pc, 0x39c]                           |         r3 = *(0x10edc);
    0x00010b40 cmp r7, 0                                     |         
                                                             |         if (r7 == 0) {
    0x00010b44 movne r3, r2                                  |             r3 = r2;
                                                             |         }
    0x00010b48 mov r1, r5                                    |         r1 = r5;
    0x00010b4c ldr r2, [pc, 0x390]                           |         r2 = "--session";
    0x00010b50 str r4, [sp, 0xc]                             |         var_ch = r4;
    0x00010b54 stmib sp, {r3, r7}                            |         __asm ("stmib sp, {r3, r7}");
    0x00010b58 ldr r3, [pc, 0x388]                           |         r3 = "__nofork";
    0x00010b5c str r6, [sp]                                  |         *(sp) = r6;
    0x00010b60 mov r0, r5                                    |         r0 = r5;
    0x00010b64 bl 0x107b0                                    |         execlp ();
    0x00010b68 ldr r3, [pc, 0x324]                           |         r3 = "%s: internal error: %s not fully implemented\n";
    0x00010b6c ldr r4, [r3]                                  |         r4 = "%s: internal error: %s not fully implemented\n";
    0x00010b70 bl 0x107e0                                    |         r0 = errno_location ();
    0x00010b74 ldr r0, [r0]                                  |         r0 = *(r0);
    0x00010b78 bl 0x107ec                                    |         strerror (r0);
    0x00010b7c mov r3, r5                                    |         r3 = r5;
    0x00010b80 ldr r2, [pc, 0x2f4]                           |         r2 = *(0x10e78);
    0x00010b84 ldr r1, [pc, 0x360]                           |         r1 = "__print_address";
    0x00010b88 str r0, [sp]                                  |         *(sp) = r0;
    0x00010b8c mov r0, r4                                    |         r0 = r4;
    0x00010b90 bl 0x107a4                                    |         fprintf (r0, "__print_address", r2, r3)
    0x00010b94 b 0x108e8                                     |         goto label_1;
                                                             |     }
    0x00010b98 ldr r0, [sp, 0x1c]                            |     r0 = var_1ch;
    0x00010b9c bl 0x107bc                                    |     close (r0);
    0x00010ba0 mov r2, 0x200                                 |     r2 = 0x200;
    0x00010ba4 mov r1, 0                                     |     r1 = 0;
    0x00010ba8 mov r0, r7                                    |     r0 = r7;
    0x00010bac ldr sb, [sp, 0x18]                            |     sb = fildes;
    0x00010bb0 bl 0x10738                                    |     memset (r0, r1, r2);
    0x00010bb4 ldr r8, [pc, 0x334]                           |     r8 = "%s: failed to execute message bus daemon '%s': %s\n";
    0x00010bb8 mov r5, 0                                     |     r5 = 0;
                                                             |     do {
                                                             | label_7:
    0x00010bbc subs r2, r8, r5                               |         r2 = r8 - r5;
                                                             |         if (r2 == r8) {
    0x00010bc0 beq 0x10bec                                   |             goto label_8;
                                                             |         }
    0x00010bc4 add r1, r7, r5                                |         r1 = r7 + r5;
    0x00010bc8 mov r0, sb                                    |         r0 = sb;
    0x00010bcc bl 0x107c8                                    |         r0 = read (r0, r1, r2);
    0x00010bd0 cmp r0, 0                                     |         
                                                             |         if (r0 >= 0) {
    0x00010bd4 bge 0x10c4c                                   |             goto label_33;
                                                             |         }
    0x00010bd8 bl 0x107e0                                    |         r0 = errno_location ();
    0x00010bdc ldr r3, [r0]                                  |         r3 = *(r0);
    0x00010be0 cmp r3, 4                                     |         
    0x00010be4 beq 0x10bbc                                   |         
                                                             |     } while (r3 == 4);
    0x00010be8 mov r2, 1                                     |     r2 = 1;
                                                             | label_8:
    0x00010bec adds r3, r5, 0                                |     r3 = r5 + 0;
                                                             |     if (r3 == r5) {
    0x00010bf0 movne r3, 1                                   |         r3 = 1;
                                                             |     }
    0x00010bf4 cmp r2, 2                                     |     
                                                             |     if (r2 == 2) {
    0x00010bf8 movne r1, 0                                   |         r1 = 0;
                                                             |     }
                                                             |     if (r2 != 2) {
    0x00010bfc andeq r1, r3, 1                               |         r1 = r3 & 1;
                                                             |     }
    0x00010c00 cmp r1, 0                                     |     
                                                             |     if (r1 == 0) {
    0x00010c04 movne r2, 0                                   |         r2 = 0;
                                                             |     }
    0x00010c08 cmp r2, 1                                     |     
                                                             |     if (r2 != 1) {
    0x00010c0c moveq r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r2 == 1) {
    0x00010c10 andne r3, r3, 1                               |         r3 &= 1;
                                                             |     }
    0x00010c14 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00010c18 beq 0x10c30                                   |         
    0x00010c1c sub r5, r5, 1                                 |         r5--;
    0x00010c20 ldrb r3, [r7, r5]                             |         r3 = *((r7 + r5));
    0x00010c24 cmp r3, 0xa                                   |         
                                                             |         if (r3 != 0xa) {
    0x00010c28 moveq r3, 0                                   |             r3 = 0;
                                                             |         }
                                                             |         if (r3 == 0xa) {
    0x00010c2c strbeq r3, [r7, r5]                           |             *((r7 + r5)) = r3;
                                                             |             goto label_34;
                                                             |         }
                                                             |     }
                                                             | label_34:
    0x00010c30 cmp r2, 1                                     |     
                                                             |     if (r2 == 1) {
    0x00010c34 beq 0x10c5c                                   |         goto label_35;
                                                             |     }
    0x00010c38 cmp r2, 2                                     |     
                                                             |     if (r2 != 2) {
    0x00010c3c bne 0x10c80                                   |         goto label_36;
                                                             |     }
    0x00010c40 ldr r2, [pc, 0x234]                           |     r2 = *(0x10e78);
    0x00010c44 ldr r1, [pc, 0x2a8]                           |     r1 = *(0x10ef0);
    0x00010c48 b 0x109c0                                     |     goto label_6;
                                                             |     if (r2 != 2) {
                                                             | label_33:
    0x00010c4c addne r5, r5, r0                              |         r5 += r0;
                                                             |         goto label_37;
                                                             |     }
                                                             |     if (r2 != 2) {
                                                             | label_37:
    0x00010c50 bne 0x10bbc                                   |         goto label_7;
                                                             |     }
    0x00010c54 mov r2, 2                                     |     r2 = 2;
    0x00010c58 b 0x10bec                                     |     goto label_8;
                                                             | label_35:
    0x00010c5c ldr r3, [pc, 0x230]                           |     r3 = "%s: internal error: %s not fully implemented\n";
    0x00010c60 ldr r4, [r3]                                  |     r4 = "%s: internal error: %s not fully implemented\n";
    0x00010c64 bl 0x107e0                                    |     r0 = errno_location ();
    0x00010c68 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00010c6c bl 0x107ec                                    |     strerror (r0);
    0x00010c70 ldr r2, [pc, 0x204]                           |     r2 = *(0x10e78);
    0x00010c74 ldr r1, [pc, 0x27c]                           |     r1 = "_s:_EOF_reading_address_from_bus_daemon";
    0x00010c78 mov r3, r0                                    |     r3 = r0;
    0x00010c7c b 0x10ad8                                     |     goto label_9;
                                                             | label_36:
    0x00010c80 ldr r0, [sp, 0x18]                            |     r0 = fildes;
    0x00010c84 bl 0x107bc                                    |     close (r0);
    0x00010c88 mov r1, r7                                    |     r1 = r7;
    0x00010c8c ldr r0, [pc, 0x268]                           |     r0 = "%s: error reading address from bus daemon: %s\n";
    0x00010c90 bl 0x107d4                                    |     r0 = dbus_setenv ();
    0x00010c94 cmp r0, 0                                     |     
    0x00010c98 bne 0x10cb8                                   |     
                                                             |     while (r0 == 0) {
                                                             | label_11:
    0x00010c9c ldr r3, [pc, 0x1f0]                           |         r3 = "%s: internal error: %s not fully implemented\n";
    0x00010ca0 ldr r2, [pc, 0x1d4]                           |         r2 = *(0x10e78);
    0x00010ca4 ldr r1, [pc, 0x254]                           |         r1 = "DBUS_SESSION_BUS_ADDRESS";
    0x00010ca8 ldr r0, [r3]                                  |         r0 = "%s: internal error: %s not fully implemented\n";
    0x00010cac bl 0x107a4                                    |         fprintf ("%s: internal error: %s not fully implemented\n", "DBUS_SESSION_BUS_ADDRESS", r2, "%s: internal error: %s not fully implemented\n")
                                                             | label_13:
    0x00010cb0 mov r0, 1                                     |         r0 = 1;
    0x00010cb4 b 0x1096c                                     |         goto label_10;
    0x00010cb8 mov r1, 0                                     |         r1 = 0;
    0x00010cbc ldr r0, [pc, 0x240]                           |         r0 = "%s: out of memory\n";
    0x00010cc0 bl 0x107d4                                    |         r0 = dbus_setenv ();
    0x00010cc4 cmp r0, 0                                     |         
    0x00010cc8 beq 0x10c9c                                   |         
                                                             |     }
    0x00010ccc mov r1, 0                                     |     r1 = 0;
    0x00010cd0 ldr r0, [pc, 0x230]                           |     r0 = "DBUS_SESSION_BUS_PID";
    0x00010cd4 bl 0x107d4                                    |     r0 = dbus_setenv ();
    0x00010cd8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00010cdc beq 0x10c9c                                   |         goto label_11;
                                                             |     }
    0x00010ce0 mov r1, 0                                     |     r1 = 0;
    0x00010ce4 ldr r0, [pc, 0x220]                           |     r0 = "DBUS_SESSION_BUS_WINDOWID";
    0x00010ce8 bl 0x107d4                                    |     r0 = dbus_setenv ();
    0x00010cec cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00010cf0 beq 0x10c9c                                   |         goto label_11;
                                                             |     }
    0x00010cf4 mov r1, 0                                     |     r1 = 0;
    0x00010cf8 ldr r0, [pc, 0x210]                           |     r0 = "DBUS_STARTER_ADDRESS";
    0x00010cfc bl 0x107d4                                    |     r0 = dbus_setenv ();
    0x00010d00 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00010d04 beq 0x10c9c                                   |         goto label_11;
                                                             |     }
    0x00010d08 bl 0x10744                                    |     r0 = fork ();
    0x00010d0c subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 < r0) {
    0x00010d10 blt 0x10aec                                   |         goto label_12;
                                                             |     }
                                                             |     if (r7 == r0) {
    0x00010d14 beq 0x10d6c                                   |         goto label_38;
                                                             |     }
    0x00010d18 ldr r6, [pc, 0x174]                           |     r6 = "%s: internal error: %s not fully implemented\n";
    0x00010d1c ldr r5, [pc, 0x158]                           |     r5 = *(0x10e78);
    0x00010d20 ldr r8, [pc, 0x1ec]                           |     r8 = "DBUS_STARTER_BUS_TYPE";
                                                             |     do {
                                                             | label_14:
    0x00010d24 mov r2, 0                                     |         r2 = 0;
    0x00010d28 add r1, sp, 0x20                              |         r1 += var_20h;
    0x00010d2c mvn r0, 0                                     |         r0 = ~0;
    0x00010d30 bl 0x10780                                    |         r0 = waitpid ();
    0x00010d34 cmn r0, 1                                     |         
    0x00010d38 mov r3, r0                                    |         r3 = r0;
                                                             |         if (r0 != 1) {
    0x00010d3c bne 0x10dac                                   |             goto label_39;
                                                             |         }
    0x00010d40 bl 0x107e0                                    |         r0 = errno_location ();
    0x00010d44 ldr r0, [r0]                                  |         r0 = *(r0);
    0x00010d48 cmp r0, 4                                     |         
    0x00010d4c beq 0x10d24                                   |         
                                                             |     } while (r0 == 4);
    0x00010d50 ldr r3, [pc, 0x13c]                           |     r3 = "%s: internal error: %s not fully implemented\n";
    0x00010d54 ldr r4, [r3]                                  |     r4 = "%s: internal error: %s not fully implemented\n";
    0x00010d58 bl 0x107ec                                    |     strerror (r0);
    0x00010d5c ldr r2, [pc, 0x118]                           |     r2 = *(0x10e78);
    0x00010d60 ldr r1, [pc, 0x1b0]                           |     r1 = "%s: ignoring unknown child process %ld\n";
    0x00010d64 mov r3, r0                                    |     r3 = r0;
    0x00010d68 b 0x10ad8                                     |     goto label_9;
                                                             | label_38:
    0x00010d6c add r1, fp, r6, lsl 2                         |     r1 = fp + (r6 << 2);
    0x00010d70 ldr r0, [fp, r6, lsl 2]                       |     offset_1 = r6 << 2;
                                                             |     r0 = *((fp + offset_1));
    0x00010d74 bl 0x106f0                                    |     execvp ();
    0x00010d78 ldr r3, [pc, 0x114]                           |     r3 = "%s: internal error: %s not fully implemented\n";
    0x00010d7c ldr r5, [fp, r6, lsl 2]                       |     offset_2 = r6 << 2;
                                                             |     r5 = *((fp + offset_2));
    0x00010d80 ldr r4, [r3]                                  |     r4 = "%s: internal error: %s not fully implemented\n";
    0x00010d84 bl 0x107e0                                    |     r0 = errno_location ();
    0x00010d88 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00010d8c bl 0x107ec                                    |     strerror (r0);
    0x00010d90 mov r3, r5                                    |     r3 = r5;
    0x00010d94 ldr r2, [pc, 0xe0]                            |     r2 = *(0x10e78);
    0x00010d98 ldr r1, [pc, 0x17c]                           |     r1 = "%s: waitpid() failed: %s\n";
    0x00010d9c str r0, [sp]                                  |     *(sp) = r0;
    0x00010da0 mov r0, r4                                    |     r0 = r4;
    0x00010da4 bl 0x107a4                                    |     fprintf (r0, "%s: waitpid() failed: %s\n", r2, r3)
    0x00010da8 b 0x10cb0                                     |     goto label_13;
                                                             | label_39:
    0x00010dac cmp r4, r0                                    |     
                                                             |     if (r4 != r0) {
    0x00010db0 bne 0x10e18                                   |         goto label_40;
                                                             |     }
    0x00010db4 ldr r3, [sp, 0x20]                            |     r3 = var_20h;
    0x00010db8 ldr r0, [r6]                                  |     r0 = *(r6);
    0x00010dbc ands r4, r3, 0x7f                             |     r4 = r3 & 0x7f;
                                                             |     if (r4 == r3) {
    0x00010dc0 bne 0x10ddc                                   |         
    0x00010dc4 ldr r1, [pc, 0x154]                           |         r1 = "_s:_failed_to_exec__s:__s";
    0x00010dc8 asr r3, r3, 8                                 |         r3 >>= 8;
    0x00010dcc and r3, r3, 0xff                              |         r3 &= 0xff;
    0x00010dd0 mov r2, r5                                    |         r2 = r5;
                                                             | label_16:
    0x00010dd4 bl 0x107a4                                    |         fprintf (r0, "_s:_failed_to_exec__s:__s", r2, r3)
    0x00010dd8 b 0x10d24                                     |         goto label_14;
                                                             |     }
    0x00010ddc lsl r3, r3, 0x10                              |     r3 <<= 0x10;
    0x00010de0 lsr r3, r3, 0x10                              |     r3 >>= 0x10;
    0x00010de4 sub r3, r3, 1                                 |     r3--;
    0x00010de8 cmp r3, 0xfe                                  |     
                                                             |     if (r3 > 0xfe) {
    0x00010dec bhi 0x10e08                                   |         goto label_41;
                                                             |     }
    0x00010df0 mov r3, r4                                    |     r3 = r4;
    0x00010df4 mov r2, r5                                    |     r2 = r5;
    0x00010df8 ldr r1, [pc, 0x124]                           |     r1 = "%s: dbus-daemon exited with code %d\n";
    0x00010dfc bl 0x107a4                                    |     fprintf (r0, "%s: dbus-daemon exited with code %d\n", r2, r3)
                                                             |     do {
    0x00010e00 mov r4, 0                                     |         r4 = 0;
    0x00010e04 b 0x10d24                                     |         goto label_14;
                                                             | label_41:
    0x00010e08 mov r2, r5                                    |         r2 = r5;
    0x00010e0c ldr r1, [pc, 0x114]                           |         r1 = "_s:_dbus_daemon_terminated_by_signal__d";
    0x00010e10 bl 0x107a4                                    |         fprintf (r0, "_s:_dbus_daemon_terminated_by_signal__d", r2)
    0x00010e14 b 0x10e00                                     |         
                                                             |     } while (1);
                                                             | label_40:
    0x00010e18 cmp r7, r0                                    |     
                                                             |     if (r7 != r0) {
    0x00010e1c bne 0x10e6c                                   |         goto label_42;
                                                             |     }
    0x00010e20 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00010e24 beq 0x10e34                                   |         
    0x00010e28 mov r1, 0xf                                   |         r1 = 0xf;
    0x00010e2c mov r0, r4                                    |         r0 = r4;
    0x00010e30 bl 0x1075c                                    |         kill (r0, r1);
                                                             |     }
    0x00010e34 ldr r3, [sp, 0x20]                            |     r3 = var_20h;
    0x00010e38 ands r0, r3, 0x7f                             |     r0 = r3 & 0x7f;
    0x00010e3c asreq r0, r3, 8                               |     __asm ("asreq r0, r3, 8");
                                                             |     if (r0 == r3) {
    0x00010e40 andeq r0, r0, 0xff                            |         r0 &= 0xff;
                                                             |         goto label_43;
                                                             |     }
                                                             |     if (r0 == r3) {
                                                             | label_43:
    0x00010e44 beq 0x108ec                                   |         goto label_15;
                                                             |     }
    0x00010e48 lsl r3, r3, 0x10                              |     r3 <<= 0x10;
    0x00010e4c lsr r3, r3, 0x10                              |     r3 >>= 0x10;
    0x00010e50 sub r3, r3, 1                                 |     r3--;
    0x00010e54 cmp r3, 0xfe                                  |     
                                                             |     if (r3 <= 0xfe) {
    0x00010e58 addls r0, r0, 0x80                            |         r0 += 0x80;
                                                             |         goto label_44;
                                                             |     }
                                                             |     if (r3 < 0xfe) {
                                                             | label_44:
    0x00010e5c bls 0x108ec                                   |         goto label_15;
                                                             |     }
    0x00010e60 ldr r2, [pc, 0x14]                            |     r2 = *(0x10e78);
    0x00010e64 ldr r1, [pc, 0xc0]                            |     r1 = "%s: dbus-daemon died or something\n";
    0x00010e68 b 0x109c0                                     |     goto label_6;
                                                             | label_42:
    0x00010e6c mov r2, r5                                    |     r2 = r5;
    0x00010e70 mov r1, r8                                    |     r1 = r8;
    0x00010e74 ldr r0, [r6]                                  |     r0 = *(r6);
    0x00010e78 b 0x10dd4                                     |     goto label_16;
                                                             | }

[*] Function fprintf used 10 times dbus-run-session